bways-report 0.1.9 → 0.2.0
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/README.md +463 -316
- package/esm2022/lib/core/config/bways-report-config.mjs +29 -32
- package/esm2022/lib/core/models/report-datasource.model.mjs +1 -1
- package/esm2022/lib/core/services/report-api-execution.service.mjs +33 -11
- package/esm2022/lib/core/services/report-session-context.service.mjs +72 -3
- package/esm2022/lib/core/tokens/designer-config.token.mjs +4 -0
- package/esm2022/lib/core/tokens/reporting-config.token.mjs +1 -1
- package/esm2022/lib/core/utils/report-endpoint.util.mjs +22 -0
- package/esm2022/lib/core/utils/report-request-scope.mjs +48 -0
- package/esm2022/lib/data-access/adapters/endpoint-datasource.adapter.mjs +8 -1
- package/esm2022/lib/data-access/adapters/endpoint-lookup.adapter.mjs +5 -2
- package/esm2022/lib/data-access/adapters/endpoint-masterdata.adapter.mjs +5 -2
- package/esm2022/lib/data-access/adapters/endpoint-persistence.adapter.mjs +30 -14
- package/esm2022/lib/data-access/adapters/endpoint-schema-discovery.adapter.mjs +32 -28
- package/esm2022/lib/data-access/adapters/endpoint-tokens.mjs +1 -1
- package/esm2022/lib/data-access/adapters/http-datasource.adapter.mjs +4 -37
- package/esm2022/lib/data-access/adapters/http-lookup.adapter.mjs +4 -50
- package/esm2022/lib/data-access/adapters/http-persistence.adapter.mjs +43 -194
- package/esm2022/lib/data-access/adapters/http-schema-discovery.adapter.mjs +17 -65
- package/esm2022/lib/data-access/adapters/index.mjs +1 -1
- package/esm2022/lib/data-access/adapters/local-storage-persistence.adapter.mjs +13 -4
- package/esm2022/lib/data-access/adapters/report-id-availability.mjs +20 -0
- package/esm2022/lib/data-access/adapters/session-headers.mjs +11 -0
- package/esm2022/lib/data-access/contracts/index.mjs +1 -1
- package/esm2022/lib/data-access/contracts/report-persistence.contract.mjs +13 -1
- package/esm2022/lib/features/designer/components/design-canvas/design-canvas.component.mjs +50 -40
- package/esm2022/lib/features/designer/components/dialogs/report-saved-dialog.component.mjs +546 -119
- package/esm2022/lib/features/designer/components/property-editor/property-editor-datasource.component.mjs +12 -6
- package/esm2022/lib/features/designer/components/property-editor/property-editor-grid.component.mjs +9 -8
- package/esm2022/lib/features/designer/components/property-editor/property-editor.component.mjs +9 -4
- package/esm2022/lib/features/designer/components/toolbar/designer-toolbar.component.mjs +54 -32
- package/esm2022/lib/features/designer/designer.component.mjs +100 -67
- package/esm2022/lib/features/designer/rpt-report-designer.component.mjs +10 -4
- package/esm2022/lib/features/designer/services/designer-config.service.mjs +56 -0
- package/esm2022/lib/features/designer/services/designer-endpoints.service.mjs +155 -0
- package/esm2022/lib/features/designer/services/designer-state.service.mjs +3 -2
- package/esm2022/lib/features/embed/bways-report-builder.component.mjs +3 -3
- package/esm2022/lib/features/export/services/report-export.service.mjs +11 -6
- package/esm2022/lib/features/persistence/services/report-store.service.mjs +78 -23
- package/esm2022/lib/features/persistence/services/schema-validator.service.mjs +59 -3
- package/esm2022/lib/features/routing/components/routed-report-designer.component.mjs +12 -17
- package/esm2022/lib/features/routing/components/routed-report-runtime.component.mjs +5 -3
- package/esm2022/lib/features/routing/report-routes.mjs +6 -6
- package/esm2022/lib/features/routing/resolvers/report-route-identifier.mjs +5 -0
- package/esm2022/lib/features/routing/resolvers/report.resolver.mjs +3 -2
- package/esm2022/lib/features/runtime/report-execution.service.mjs +18 -5
- package/esm2022/lib/features/runtime/report-grid-bridge.component.mjs +4 -2
- package/esm2022/lib/features/runtime/report-runtime.component.mjs +94 -71
- package/esm2022/lib/features/runtime/rpt-report.component.mjs +49 -41
- package/esm2022/lib/primitives/components/chart-bridge/report-chart-bridge.component.mjs +7 -2
- package/esm2022/lib/primitives/components/icon/rpt-icon.component.mjs +13 -1
- package/esm2022/lib/provide-reporting.mjs +9 -29
- package/fesm2022/bways-report.mjs +1789 -1041
- package/fesm2022/bways-report.mjs.map +1 -1
- package/lib/core/config/bways-report-config.d.ts +14 -5
- package/lib/core/models/report-datasource.model.d.ts +5 -0
- package/lib/core/services/report-session-context.service.d.ts +9 -0
- package/lib/core/tokens/designer-config.token.d.ts +4 -0
- package/lib/core/tokens/reporting-config.token.d.ts +4 -0
- package/lib/core/utils/report-endpoint.util.d.ts +12 -0
- package/lib/core/utils/report-request-scope.d.ts +14 -0
- package/lib/data-access/adapters/endpoint-persistence.adapter.d.ts +6 -2
- package/lib/data-access/adapters/endpoint-schema-discovery.adapter.d.ts +4 -2
- package/lib/data-access/adapters/endpoint-tokens.d.ts +4 -0
- package/lib/data-access/adapters/http-datasource.adapter.d.ts +1 -3
- package/lib/data-access/adapters/http-lookup.adapter.d.ts +1 -3
- package/lib/data-access/adapters/http-persistence.adapter.d.ts +11 -16
- package/lib/data-access/adapters/http-schema-discovery.adapter.d.ts +3 -5
- package/lib/data-access/adapters/index.d.ts +1 -1
- package/lib/data-access/adapters/local-storage-persistence.adapter.d.ts +2 -2
- package/lib/data-access/adapters/report-id-availability.d.ts +6 -0
- package/lib/data-access/adapters/session-headers.d.ts +3 -0
- package/lib/data-access/contracts/index.d.ts +1 -0
- package/lib/data-access/contracts/report-persistence.contract.d.ts +16 -1
- package/lib/features/designer/components/design-canvas/design-canvas.component.d.ts +2 -0
- package/lib/features/designer/components/dialogs/report-saved-dialog.component.d.ts +37 -5
- package/lib/features/designer/components/property-editor/property-editor-datasource.component.d.ts +4 -3
- package/lib/features/designer/components/property-editor/property-editor-grid.component.d.ts +1 -0
- package/lib/features/designer/components/property-editor/property-editor.component.d.ts +1 -0
- package/lib/features/designer/components/toolbar/designer-toolbar.component.d.ts +7 -1
- package/lib/features/designer/designer.component.d.ts +15 -2
- package/lib/features/designer/rpt-report-designer.component.d.ts +5 -1
- package/lib/features/designer/services/designer-config.service.d.ts +13 -0
- package/lib/features/designer/services/designer-endpoints.service.d.ts +25 -0
- package/lib/features/persistence/services/report-store.service.d.ts +15 -1
- package/lib/features/persistence/services/schema-validator.service.d.ts +2 -0
- package/lib/features/routing/resolvers/report-route-identifier.d.ts +2 -0
- package/lib/features/runtime/report-execution.service.d.ts +3 -0
- package/lib/features/runtime/report-grid-bridge.component.d.ts +1 -0
- package/lib/features/runtime/report-runtime.component.d.ts +1 -0
- package/lib/features/runtime/rpt-report.component.d.ts +5 -0
- package/lib/primitives/components/chart-bridge/report-chart-bridge.component.d.ts +3 -1
- package/package.json +2 -1
|
@@ -466,6 +466,18 @@ const ICON_REGISTRY = {
|
|
|
466
466
|
{ x1: 6, y1: 6, x2: 18, y2: 18 }
|
|
467
467
|
]
|
|
468
468
|
},
|
|
469
|
+
'x': {
|
|
470
|
+
lines: [
|
|
471
|
+
{ x1: 18, y1: 6, x2: 6, y2: 18 },
|
|
472
|
+
{ x1: 6, y1: 6, x2: 18, y2: 18 }
|
|
473
|
+
]
|
|
474
|
+
},
|
|
475
|
+
'cross': {
|
|
476
|
+
lines: [
|
|
477
|
+
{ x1: 18, y1: 6, x2: 6, y2: 18 },
|
|
478
|
+
{ x1: 6, y1: 6, x2: 18, y2: 18 }
|
|
479
|
+
]
|
|
480
|
+
},
|
|
469
481
|
'plus': {
|
|
470
482
|
lines: [
|
|
471
483
|
{ x1: 12, y1: 5, x2: 12, y2: 19 },
|
|
@@ -549,4 +561,4 @@ const ICON_REGISTRY = {
|
|
|
549
561
|
]
|
|
550
562
|
}
|
|
551
563
|
};
|
|
552
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnB0LWljb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvcHJpbWl0aXZlcy9jb21wb25lbnRzL2ljb24vcnB0LWljb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixLQUFLLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUUvQzs7O0dBR0c7QUFnRUgsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixnRkFBZ0Y7SUFDdkUsSUFBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztJQUV6QyxnREFBZ0Q7SUFDdkMsSUFBSSxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztJQUVsQyxxREFBcUQ7SUFDNUMsS0FBSyxHQUFHLEtBQUssQ0FBUyxjQUFjLENBQUMsQ0FBQztJQUUvQyx3REFBd0Q7SUFDL0MsV0FBVyxHQUFHLEtBQUssQ0FBUyxDQUFDLENBQUMsQ0FBQztJQUUvQixPQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDeEMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUV0QixRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUN4QyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDO1FBQ3JELE9BQU8sYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLGFBQWEsQ0FB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LGFBQWEsRUFBRTtRQUNiLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDckQsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7S0FDM0M7SUFDRCxlQUFlLEVBQUU7UUFDZixLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3JELEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0tBQzNDO0lBRUQsa0JBQWtCO0lBQ2xCLE1BQU0sRUFBRTtRQUNOLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDckQsS0FBSyxFQUFFO1lBQ0wsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ2hDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtZQUM5QixFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7U0FDbEM7S0FDRjtJQUNELFVBQVUsRUFBRTtRQUNWLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDckQsS0FBSyxFQUFFO1lBQ0wsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ2hDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtZQUM5QixFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7U0FDbEM7S0FDRjtJQUNELGdCQUFnQixFQUFFO1FBQ2hCLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDckQsS0FBSyxFQUFFO1lBQ0wsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ2hDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtZQUM5QixFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7U0FDbEM7S0FDRjtJQUVELE1BQU07SUFDTixLQUFLLEVBQUU7UUFDTCxLQUFLLEVBQUU7WUFDTCxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7WUFDakMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO1NBQ2xDO0tBQ0Y7SUFFRCxnQkFBZ0I7SUFDaEIsUUFBUSxFQUFFO1FBQ1IsS0FBSyxFQUFFO1lBQ0wsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQy9CLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtZQUNqQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7WUFDaEMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO1NBQ2xDO0tBQ0Y7SUFFRCxXQUFXO0lBQ1gsVUFBVSxFQUFFO1FBQ1YsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNyRCxTQUFTLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztLQUNoQztJQUVELFFBQVE7SUFDUixPQUFPLEVBQUU7UUFDUCxPQUFPLEVBQUU7WUFDUCxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ3hCLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7U0FDekI7S0FDRjtJQUNELHNCQUFzQixFQUFFO1FBQ3RCLE9BQU8sRUFBRTtZQUNQLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDeEIsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtTQUN6QjtLQUNGO0lBRUQsU0FBUztJQUNULFFBQVEsRUFBRTtRQUNSLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDckQsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7S0FDM0M7SUFFRCxlQUFlO0lBQ2YsS0FBSyxFQUFFO1FBQ0wsS0FBSyxFQUFFLENBQUMsMkJBQTJCLENBQUM7S0FDckM7SUFDRCxZQUFZLEVBQUU7UUFDWixLQUFLLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztLQUNyQztJQUNELFVBQVUsRUFBRTtRQUNWLFNBQVMsRUFBRSxDQUFDLDhCQUE4QixFQUFFLGlCQUFpQixDQUFDO0tBQy9EO0lBQ0QsWUFBWSxFQUFFO1FBQ1osU0FBUyxFQUFFLENBQUMsNkJBQTZCLEVBQUUsbUJBQW1CLENBQUM7S0FDaEU7SUFFRCxTQUFTO0lBQ1QsT0FBTyxFQUFFO1FBQ1AsS0FBSyxFQUFFO1lBQ0wsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO1lBQ2xDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtZQUNqQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7U0FDakM7S0FDRjtJQUNELFdBQVcsRUFBRTtRQUNYLEtBQUssRUFBRTtZQUNMLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtZQUNsQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDakMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO1NBQ2pDO0tBQ0Y7SUFDRCxXQUFXLEVBQUU7UUFDWCxLQUFLLEVBQUU7WUFDTCxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7WUFDbEMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ2pDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtTQUNqQztLQUNGO0lBQ0QsWUFBWSxFQUFFO1FBQ1osU0FBUyxFQUFFLENBQUMsaUNBQWlDLENBQUM7S0FDL0M7SUFDRCxhQUFhLEVBQUU7UUFDYixPQUFPLEVBQUU7WUFDUCxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQ3pCLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7U0FDekI7S0FDRjtJQUVELHdCQUF3QjtJQUN4QixNQUFNLEVBQUU7UUFDTixLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3JELEtBQUssRUFBRTtZQUNMLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtZQUMvQixFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7WUFDakMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO1lBQy9CLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtTQUNsQztLQUNGO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsS0FBSyxFQUFFO1lBQ0wsMkVBQTJFO1lBQzNFLHNDQUFzQztTQUN2QztLQUNGO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNyRCxLQUFLLEVBQUU7WUFDTCxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDL0IsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO1NBQ2hDO0tBQ0Y7SUFDRCxRQUFRLEVBQUU7UUFDUixLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3JELEtBQUssRUFBRTtZQUNMLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtZQUMvQixFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7U0FDaEM7S0FDRjtJQUNELE1BQU0sRUFBRTtRQUNOLEtBQUssRUFBRTtZQUNMLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtZQUMvQixFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFF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RUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUNwQyxLQUFLLEVBQUU7WUFDTCxVQUFVO1lBQ1YsNEZBQTRGO1NBQzdGO0tBQ0Y7SUFDRCxLQUFLLEVBQUU7UUFDTCxLQUFLLEVBQUU7WUFDTCw2REFBNkQ7WUFDN0QsOERBQThEO1NBQy9EO1FBQ0QsS0FBSyxFQUFFO1lBQ0wsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO1lBQ2hDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtTQUNuQztLQUNGO0lBQ0QsZUFBZSxFQUFFO1FBQ2YsT0FBTyxFQUFFO1lBQ1AsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRTtZQUN4QixFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFO1lBQ3pCLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUU7WUFDekIsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRTtZQUN6QixFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFO1lBQzFCLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUU7U0FDM0I7S0FDRjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgaW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLyoqXG4gKiBFbnRlcnByaXNlIFNWRyBJY29uIGNvbXBvbmVudCBmb3IgQldheXMtUmVwb3J0LlxuICogUHJvdmlkZXMgY3Jpc3AsIHNjYWxhYmxlIHZlY3RvciBpY29ucyB3aXRob3V0IGV4dGVybmFsIGZvbnQgZGVwZW5kZW5jaWVzLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdycHQtaWNvbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICA8c3ZnXG4gICAgICBjbGFzcz1cInJwdC1zdmctaWNvblwiXG4gICAgICBbYXR0ci53aWR0aF09XCJzaXplKClcIlxuICAgICAgW2F0dHIuaGVpZ2h0XT1cInNpemUoKVwiXG4gICAgICBbYXR0ci52aWV3Qm94XT1cInZpZXdCb3goKVwiXG4gICAgICBbYXR0ci5zdHJva2VdPVwic3Ryb2tlKClcIlxuICAgICAgW2F0dHIuZmlsbF09XCJmaWxsKClcIlxuICAgICAgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInN0cm9rZVdpZHRoKClcIlxuICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICBbc3R5bGUuY29sb3JdPVwiY29sb3IoKVwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIEBmb3IgKGQgb2YgcGF0aHMoKTsgdHJhY2sgZCkge1xuICAgICAgICA8cGF0aCBbYXR0ci5kXT1cImRcIiAvPlxuICAgICAgfVxuICAgICAgQGZvciAoYyBvZiBjaXJjbGVzKCk7IHRyYWNrIGMuY3ggKyAnLScgKyBjLmN5KSB7XG4gICAgICAgIDxjaXJjbGUgW2F0dHIuY3hdPVwiYy5jeFwiIFthdHRyLmN5XT1cImMuY3lcIiBbYXR0ci5yXT1cImMuclwiIC8+XG4gICAgICB9XG4gICAgICBAZm9yIChyIG9mIHJlY3RzKCk7IHRyYWNrIHIueCArICctJyArIHIueSkge1xuICAgICAgICA8cmVjdFxuICAgICAgICAgIFthdHRyLnhdPVwici54XCJcbiAgICAgICAgICBbYXR0ci55XT1cInIueVwiXG4gICAgICAgICAgW2F0dHIud2lkdGhdPVwici53aWR0aFwiXG4gICAgICAgICAgW2F0dHIuaGVpZ2h0XT1cInIuaGVpZ2h0XCJcbiAgICAgICAgICBbYXR0ci5yeF09XCJyLnJ4IHx8IDBcIlxuICAgICAgICAvPlxuICAgICAgfVxuICAgICAgQGZvciAobCBvZiBsaW5lcygpOyB0cmFjayBsLngxICsgJy0nICsgbC55MSkge1xuICAgICAgICA8bGluZVxuICAgICAgICAgIFthdHRyLngxXT1cImwueDFcIlxuICAgICAgICAgIFthdHRyLnkxXT1cImwueTFcIlxuICAgICAgICAgIFthdHRyLngyXT1cImwueDJcIlxuICAgICAgICAgIFthdHRyLnkyXT1cImwueTJcIlxuICAgICAgICAvPlxuICAgICAgfVxuICAgICAgQGZvciAocCBvZiBwb2x5bGluZXMoKTsgdHJhY2sgcCkge1xuICAgICAgICA8cG9seWxpbmUgW2F0dHIucG9pbnRzXT1cInBcIiAvPlxuICAgICAgfVxuICAgIDwvc3ZnPlxuICBgLFxuICBzdHlsZXM6IFtgXG4gICAgOmhvc3Qge1xuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgfVxuXG4gICAgLnJwdC1zdmctaWNvbiB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBmbGV4LXNocmluazogMDtcbiAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIH1cbiAgYF1cbn0pXG5leHBvcnQgY2xhc3MgUnB0SWNvbkNvbXBvbmVudCB7XG4gIC8qKiBJY29uIG5hbWUgKGUuZy4gJ3NlYXJjaCcsICdlZGl0JywgJ3NhdmUnLCAna3BpJywgJ2NoYXJ0LWJhcicsICd0cmVuZC11cCcpICovXG4gIHJlYWRvbmx5IG5hbWUgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG5cbiAgLyoqIEljb24gZGltZW5zaW9uIGluIHBpeGVscy4gRGVmYXVsdHMgdG8gMTYuICovXG4gIHJlYWRvbmx5IHNpemUgPSBpbnB1dDxudW1iZXI+KDE2KTtcblxuICAvKiogU3Ryb2tlL2ZpbGwgY29sb3IuIERlZmF1bHRzIHRvICdjdXJyZW50Q29sb3InLiAqL1xuICByZWFkb25seSBjb2xvciA9IGlucHV0PHN0cmluZz4oJ2N1cnJlbnRDb2xvcicpO1xuXG4gIC8qKiBTdHJva2Ugd2lkdGggZm9yIGxpbmUtYmFzZWQgaWNvbnMuIERlZmF1bHRzIHRvIDIuICovXG4gIHJlYWRvbmx5IHN0cm9rZVdpZHRoID0gaW5wdXQ8bnVtYmVyPigyKTtcblxuICByZWFkb25seSB2aWV3Qm94ID0gY29tcHV0ZWQoKCkgPT4gJzAgMCAyNCAyNCcpO1xuICByZWFkb25seSBzdHJva2UgPSBjb21wdXRlZCgoKSA9PiAnY3VycmVudENvbG9yJyk7XG4gIHJlYWRvbmx5IGZpbGwgPSBjb21wdXRlZCgoKSA9PiAnbm9uZScpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaWNvbkRhdGEgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbiA9IHRoaXMubmFtZSgpPy50b0xvd2VyQ2FzZSgpLnRyaW0oKSB8fCAnYm94JztcbiAgICByZXR1cm4gSUNPTl9SRUdJU1RSWVtuXSB8fCBJQ09OX1JFR0lTVFJZWydib3gnXSB8fCB7IHBhdGhzOiBbXSB9O1xuICB9KTtcblxuICByZWFkb25seSBwYXRocyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaWNvbkRhdGEoKS5wYXRocyB8fCBbXSk7XG4gIHJlYWRvbmx5IGNpcmNsZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmljb25EYXRhKCkuY2lyY2xlcyB8fCBbXSk7XG4gIHJlYWRvbmx5IHJlY3RzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pY29uRGF0YSgpLnJlY3RzIHx8IFtdKTtcbiAgcmVhZG9ubHkgbGluZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmljb25EYXRhKCkubGluZXMgfHwgW10pO1xuICByZWFkb25seSBwb2x5bGluZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmljb25EYXRhKCkucG9seWxpbmVzIHx8IFtdKTtcbn1cblxuaW50ZXJmYWNlIEljb25EZWZpbml0aW9uIHtcbiAgcGF0aHM/OiBzdHJpbmdbXTtcbiAgY2lyY2xlcz86IHsgY3g6IG51bWJlcjsgY3k6IG51bWJlcjsgcjogbnVtYmVyIH1bXTtcbiAgcmVjdHM/OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlcjsgcng/OiBudW1iZXIgfVtdO1xuICBsaW5lcz86IHsgeDE6IG51bWJlcjsgeTE6IG51bWJlcjsgeDI6IG51bWJlcjsgeTI6IG51bWJlciB9W107XG4gIHBvbHlsaW5lcz86IHN0cmluZ1tdO1xufVxuXG5jb25zdCBJQ09OX1JFR0lTVFJZOiBSZWNvcmQ8c3RyaW5nLCBJY29uRGVmaW5pdGlvbj4gPSB7XG4gIC8vIElucHV0IC8gVGV4dFxuICAnaW5wdXQnOiB7XG4gICAgcGF0aHM6IFsnTTE3IDNhMi44MjggMi44MjggMCAxIDEgNCA0TDcuNSAyMC41IDIgMjJsMS41LTUuNUwxNyAzeiddXG4gIH0sXG4gICd0ZXh0LWZpZWxkcyc6IHtcbiAgICBsaW5lczogW1xuICAgICAgeyB4MTogNCwgeTE6IDcsIHgyOiA0LCB5MjogNCB9LFxuICAgICAgeyB4MTogNCwgeTE6IDQsIHgyOiAyMCwgeTI6IDQgfSxcbiAgICAgIHsgeDE6IDIwLCB5MTogNCwgeDI6IDIwLCB5MjogNyB9LFxuICAgICAgeyB4MTogMTIsIHkxOiA0LCB4MjogMTIsIHkyOiAyMCB9LFxuICAgICAgeyB4MTogOSwgeTE6IDIwLCB4MjogMTUsIHkyOiAyMCB9XG4gICAgXVxuICB9LFxuICAnZWRpdCc6IHtcbiAgICBwYXRoczogW1xuICAgICAgJ00xMSA0SDRhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YTIgMiAwIDAgMCAyLTJ2LTcnLFxuICAgICAgJ00xOC41IDIuNWEyLjEyMSAyLjEyMSAwIDAgMSAzIDNMMTIgMTVsLTQgMSAxLTQgOS41LTkuNXonXG4gICAgXVxuICB9LFxuICAnZGVzaWduJzoge1xuICAgIHJlY3RzOiBbeyB4OiAzLCB5OiAzLCB3aWR0aDogMTgsIGhlaWdodDogMTgsIHJ4OiAyIH1dLFxuICAgIGxpbmVzOiBbXG4gICAgICB7IHgxOiAzLCB5MTogOSwgeDI6IDIxLCB5MjogOSB9LFxuICAgICAgeyB4MTogOSwgeTE6IDIxLCB4MjogOSwgeTI6IDkgfVxuICAgIF1cbiAgfSxcblxuICAvLyBEcm9wZG93biAvIFNlbGVjdFxuICAnZHJvcGRvd24nOiB7XG4gICAgcmVjdHM6IFt7IHg6IDMsIHk6IDMsIHdpZHRoOiAxOCwgaGVpZ2h0OiAxOCwgcng6IDQgfV0sXG4gICAgcG9seWxpbmVzOiBbJzggMTAgMTIgMTQgMTYgMTAnXVxuICB9LFxuICAnY2hldnJvbi1kb3duJzoge1xuICAgIHBvbHlsaW5lczogWyc2IDkgMTIgMTUgMTggOSddXG4gIH0sXG4gICdjaGV2cm9uLXVwJzoge1xuICAgIHBvbHlsaW5lczogWycxOCAxNSAxMiA5IDYgMTUnXVxuICB9LFxuICAnY2hldnJvbi1sZWZ0Jzoge1xuICAgIHBvbHlsaW5lczogWycxNSAxOCA5IDEyIDE1IDYnXVxuICB9LFxuICAnY2hldnJvbi1yaWdodCc6IHtcbiAgICBwb2x5bGluZXM6IFsnOSAxOCAxNSAxMiA5IDYnXVxuICB9LFxuICAncGFuZWwtbGVmdCc6IHtcbiAgICByZWN0czogW3sgeDogMywgeTogMywgd2lkdGg6IDE4LCBoZWlnaHQ6IDE4LCByeDogMyB9XSxcbiAgICBsaW5lczogW3sgeDE6IDksIHkxOiAzLCB4MjogOSwgeTI6IDIxIH1dXG4gIH0sXG4gICdzaWRlYmFyLWxlZnQnOiB7XG4gICAgcmVjdHM6IFt7IHg6IDMsIHk6IDMsIHdpZHRoOiAxOCwgaGVpZ2h0OiAxOCwgcng6IDMgfV0sXG4gICAgbGluZXM6IFt7IHgxOiA5LCB5MTogMywgeDI6IDksIHkyOiAyMSB9XVxuICB9LFxuICAncGFuZWwtcmlnaHQnOiB7XG4gICAgcmVjdHM6IFt7IHg6IDMsIHk6IDMsIHdpZHRoOiAxOCwgaGVpZ2h0OiAxOCwgcng6IDMgfV0sXG4gICAgbGluZXM6IFt7IHgxOiAxNSwgeTE6IDMsIHgyOiAxNSwgeTI6IDIxIH1dXG4gIH0sXG4gICdzaWRlYmFyLXJpZ2h0Jzoge1xuICAgIHJlY3RzOiBbeyB4OiAzLCB5OiAzLCB3aWR0aDogMTgsIGhlaWdodDogMTgsIHJ4OiAzIH1dLFxuICAgIGxpbmVzOiBbeyB4MTogMTUsIHkxOiAzLCB4MjogMTUsIHkyOiAyMSB9XVxuICB9LFxuXG4gIC8vIERhdGUgLyBDYWxlbmRhclxuICAnZGF0ZSc6IHtcbiAgICByZWN0czogW3sgeDogMywgeTogNCwgd2lkdGg6IDE4LCBoZWlnaHQ6IDE4LCByeDogMyB9XSxcbiAgICBsaW5lczogW1xuICAgICAgeyB4MTogMTYsIHkxOiAyLCB4MjogMTYsIHkyOiA2IH0sXG4gICAgICB7IHgxOiA4LCB5MTogMiwgeDI6IDgsIHkyOiA2IH0sXG4gICAgICB7IHgxOiAzLCB5MTogMTAsIHgyOiAyMSwgeTI6IDEwIH1cbiAgICBdXG4gIH0sXG4gICdjYWxlbmRhcic6IHtcbiAgICByZWN0czogW3sgeDogMywgeTogNCwgd2lkdGg6IDE4LCBoZWlnaHQ6IDE4LCByeDogMyB9XSxcbiAgICBsaW5lczogW1xuICAgICAgeyB4MTogMTYsIHkxOiAyLCB4MjogMTYsIHkyOiA2IH0sXG4gICAgICB7IHgxOiA4LCB5MTogMiwgeDI6IDgsIHkyOiA2IH0sXG4gICAgICB7IHgxOiAzLCB5MTogMTAsIHgyOiAyMSwgeTI6IDEwIH1cbiAgICBdXG4gIH0sXG4gICdjYWxlbmRhci10b2RheSc6IHtcbiAgICByZWN0czogW3sgeDogMywgeTogNCwgd2lkdGg6IDE4LCBoZWlnaHQ6IDE4LCByeDogMyB9XSxcbiAgICBsaW5lczogW1xuICAgICAgeyB4MTogMTYsIHkxOiAyLCB4MjogMTYsIHkyOiA2IH0sXG4gICAgICB7IHgxOiA4LCB5MTogMiwgeDI6IDgsIHkyOiA2IH0sXG4gICAgICB7IHgxOiAzLCB5MTogMTAsIHgyOiAyMSwgeTI6IDEwIH1cbiAgICBdXG4gIH0sXG5cbiAgLy8gQWRkXG4gICdhZGQnOiB7XG4gICAgbGluZXM6IFtcbiAgICAgIHsgeDE6IDEyLCB5MTogNSwgeDI6IDEyLCB5MjogMTkgfSxcbiAgICAgIHsgeDE6IDUsIHkxOiAxMiwgeDI6IDE5LCB5MjogMTIgfVxuICAgIF1cbiAgfSxcblxuICAvLyBOdW1iZXIgLyBIYXNoXG4gICdudW1iZXInOiB7XG4gICAgbGluZXM6IFtcbiAgICAgIHsgeDE6IDQsIHkxOiA5LCB4MjogMjAsIHkyOiA5IH0sXG4gICAgICB7IHgxOiA0LCB5MTogMTUsIHgyOiAyMCwgeTI6IDE1IH0sXG4gICAgICB7IHgxOiAxMCwgeTE6IDMsIHgyOiA4LCB5MjogMjEgfSxcbiAgICAgIHsgeDE6IDE2LCB5MTogMywgeDI6IDE0LCB5MjogMjEgfVxuICAgIF1cbiAgfSxcblxuICAvLyBDaGVja2JveFxuICAnY2hlY2tib3gnOiB7XG4gICAgcmVjdHM6IFt7IHg6IDMsIHk6IDMsIHdpZHRoOiAxOCwgaGVpZ2h0OiAxOCwgcng6IDQgfV0sXG4gICAgcG9seWxpbmVzOiBbJzkgMTIgMTEgMTQgMTUgMTAnXVxuICB9LFxuXG4gIC8vIFJhZGlvXG4gICdyYWRpbyc6IHtcbiAgICBjaXJjbGVzOiBbXG4gICAgICB7IGN4OiAxMiwgY3k6IDEyLCByOiA5IH0sXG4gICAgICB7IGN4OiAxMiwgY3k6IDEyLCByOiA0IH1cbiAgICBdXG4gIH0sXG4gICdyYWRpb19idXR0b25fY2hlY2tlZCc6IHtcbiAgICBjaXJjbGVzOiBbXG4gICAgICB7IGN4OiAxMiwgY3k6IDEyLCByOiA5IH0sXG4gICAgICB7IGN4OiAxMiwgY3k6IDEyLCByOiA0IH1cbiAgICBdXG4gIH0sXG5cbiAgLy8gQnV0dG9uXG4gICdidXR0b24nOiB7XG4gICAgcmVjdHM6IFt7IHg6IDMsIHk6IDcsIHdpZHRoOiAxOCwgaGVpZ2h0OiAxMCwgcng6IDQgfV0sXG4gICAgbGluZXM6IFt7IHgxOiA4LCB5MTogMTIsIHgyOiAxNiwgeTI6IDEyIH1dXG4gIH0sXG5cbiAgLy8gS1BJICYgVHJlbmRzXG4gICdrcGknOiB7XG4gICAgcGF0aHM6IFsnTTIyIDEyaC00bC0zIDlMOSAzbC0zIDlIMiddXG4gIH0sXG4gICdtb25pdG9yaW5nJzoge1xuICAgIHBhdGhzOiBbJ00yMiAxMmgtNGwtMyA5TDkgM2wtMyA5SDInXVxuICB9LFxuICAndHJlbmQtdXAnOiB7XG4gICAgcG9seWxpbmVzOiBbJzIzIDYgMTMuNSAxNS41IDguNSAxMC41IDEgMTgnLCAnMTcgNiAyMyA2IDIzIDEyJ11cbiAgfSxcbiAgJ3RyZW5kLWRvd24nOiB7XG4gICAgcG9seWxpbmVzOiBbJzIzIDE4IDEzLjUgOC41IDguNSAxMy41IDEgNicsICcxNyAxOCAyMyAxOCAyMyAxMiddXG4gIH0sXG5cbiAgLy8gQ2hhcnRzXG4gICdjaGFydCc6IHtcbiAgICBsaW5lczogW1xuICAgICAgeyB4MTogMTgsIHkxOiAyMCwgeDI6IDE4LCB5MjogMTAgfSxcbiAgICAgIHsgeDE6IDEyLCB5MTogMjAsIHgyOiAxMiwgeTI6IDQgfSxcbiAgICAgIHsgeDE6IDYsIHkxOiAyMCwgeDI6IDYsIHkyOiAxNCB9XG4gICAgXVxuICB9LFxuICAnY2hhcnQtYmFyJzoge1xuICAgIGxpbmVzOiBbXG4gICAgICB7IHgxOiAxOCwgeTE6IDIwLCB4MjogMTgsIHkyOiAxMCB9LFxuICAgICAgeyB4MTogMTIsIHkxOiAyMCwgeDI6IDEyLCB5MjogNCB9LFxuICAgICAgeyB4MTogNiwgeTE6IDIwLCB4MjogNiwgeTI6IDE0IH1cbiAgICBdXG4gIH0sXG4gICdiYXItY2hhcnQnOiB7XG4gICAgbGluZXM6IFtcbiAgICAgIHsgeDE6IDE4LCB5MTogMjAsIHgyOiAxOCwgeTI6IDEwIH0sXG4gICAgICB7IHgxOiAxMiwgeTE6IDIwLCB4MjogMTIsIHkyOiA0IH0sXG4gICAgICB7IHgxOiA2LCB5MTogMjAsIHgyOiA2LCB5MjogMTQgfVxuICAgIF1cbiAgfSxcbiAgJ2NoYXJ0LWxpbmUnOiB7XG4gICAgcG9seWxpbmVzOiBbJzIyIDEyIDE4IDEyIDE1IDIxIDkgMyA2IDEyIDIgMTInXVxuICB9LFxuICAnY2hhcnQtZG9udXQnOiB7XG4gICAgY2lyY2xlczogW1xuICAgICAgeyBjeDogMTIsIGN5OiAxMiwgcjogMTAgfSxcbiAgICAgIHsgY3g6IDEyLCBjeTogMTIsIHI6IDQgfVxuICAgIF1cbiAgfSxcblxuICAvLyBHcmlkIC8gVGFibGUgLyBMYXlvdXRcbiAgJ2dyaWQnOiB7XG4gICAgcmVjdHM6IFt7IHg6IDMsIHk6IDMsIHdpZHRoOiAxOCwgaGVpZ2h0OiAxOCwgcng6IDMgfV0sXG4gICAgbGluZXM6IFtcbiAgICAgIHsgeDE6IDMsIHkxOiA5LCB4MjogMjEsIHkyOiA5IH0sXG4gICAgICB7IHgxOiAzLCB5MTogMTUsIHgyOiAyMSwgeTI6IDE1IH0sXG4gICAgICB7IHgxOiA5LCB5MTogMywgeDI6IDksIHkyOiAyMSB9LFxuICAgICAgeyB4MTogMTUsIHkxOiAzLCB4MjogMTUsIHkyOiAyMSB9XG4gICAgXVxuICB9LFxuICAnZGF0YWJhc2UnOiB7XG4gICAgcGF0aHM6IFtcbiAgICAgICdNMyA1YzAtMS42NTcgNC4wMy0zIDktM3M5IDEuMzQzIDkgM3YxNGMwIDEuNjU3LTQuMDMgMy05IDNzLTktMS4zNDMtOS0zVjV6JyxcbiAgICAgICdNMyAxMmMwIDEuNjU3IDQuMDMgMyA5IDNzOS0xLjM0MyA5LTMnXG4gICAgXVxuICB9LFxuICAndGFibGUnOiB7XG4gICAgcmVjdHM6IFt7IHg6IDMsIHk6IDMsIHdpZHRoOiAxOCwgaGVpZ2h0OiAxOCwgcng6IDMgfV0sXG4gICAgbGluZXM6IFtcbiAgICAgIHsgeDE6IDMsIHkxOiA5LCB4MjogMjEsIHkyOiA5IH0sXG4gICAgICB7IHgxOiA5LCB5MTogOSwgeDI6IDksIHkyOiAyMSB9XG4gICAgXVxuICB9LFxuICAnbGF5b3V0Jzoge1xuICAgIHJlY3RzOiBbeyB4OiAzLCB5OiAzLCB3aWR0aDogMTgsIGhlaWdodDogMTgsIHJ4OiAzIH1dLFxuICAgIGxpbmVzOiBbXG4gICAgICB7IHgxOiAzLCB5MTogOSwgeDI6IDIxLCB5MjogOSB9LFxuICAgICAgeyB4MTogOSwgeTE6IDIxLCB4MjogOSwgeTI6IDkgfVxuICAgIF1cbiAgfSxcbiAgJ2xpc3QnOiB7XG4gICAgbGluZXM6IFtcbiAgICAgIHsgeDE6IDgsIHkxOiA2LCB4MjogMjEsIHkyOiA2IH0sXG4gICAgICB7IHgxOiA4LCB5MTogMTIsIHgyOiAyMSwgeTI6IDEyIH0sXG4gICAgICB7IHgxOiA4LCB5MTogMTgsIHgyOiAyMSwgeTI6IDE4IH0sXG4gICAgICB7IHgxOiAzLCB5MTogNiwgeDI6IDQsIHkyOiA2IH0sXG4gICAgICB7IHgxOiAzLCB5MTogMTIsIHgyOiA0LCB5MjogMTIgfSxcbiAgICAgIHsgeDE6IDMsIHkxOiAxOCwgeDI6IDQsIHkyOiAxOCB9XG4gICAgXVxuICB9LFxuXG4gIC8vIFNlbGVjdGlvbiAvIEN1cnNvclxuICAnY3Vyc29yJzoge1xuICAgIHBhdGhzOiBbJ00zIDNsNy4wNyAxNi45NyAyLjUxLTcuMzkgNy4zOS0yLjUxTDMgM3onXSxcbiAgICBsaW5lczogW3sgeDE6IDEzLCB5MTogMTMsIHgyOiAxOSwgeTI6IDE5IH1dXG4gIH0sXG4gICdtb3VzZS1wb2ludGVyJzoge1xuICAgIHBhdGhzOiBbJ00zIDNsNy4wNyAxNi45NyAyLjUxLTcuMzkgNy4zOS0yLjUxTDMgM3onXSxcbiAgICBsaW5lczogW3sgeDE6IDEzLCB5MTogMTMsIHgyOiAxOSwgeTI6IDE5IH1dXG4gIH0sXG5cbiAgLy8gQWxlcnQgLyBXYXJuaW5nXG4gICd3YXJuaW5nJzoge1xuICAgIHBhdGhzOiBbJ00xMC4yOSAzLjg2TDEuODIgMThhMiAyIDAgMCAwIDEuNzEgM2gxNi45NGEyIDIgMCAwIDAgMS43MS0zTDEzLjcxIDMuODZhMiAyIDAgMCAwLTMuNDIgMHonXSxcbiAgICBsaW5lczogW3sgeDE6IDEyLCB5MTogOSwgeDI6IDEyLCB5MjogMTMgfSwgeyB4MTogMTIsIHkxOiAxNywgeDI6IDEyLjAxLCB5MjogMTcgfV1cbiAgfSxcbiAgJ2FsZXJ0LXRyaWFuZ2xlJzoge1xuICAgIHBhdGhzOiBbJ00xMC4yOSAzLjg2TDEuODIgMThhMiAyIDAgMCAwIDEuNzEgM2gxNi45NGEyIDIgMCAwIDAgMS43MS0zTDEzLjcxIDMuODZhMiAyIDAgMCAwLTMuNDIgMHonXSxcbiAgICBsaW5lczogW3sgeDE6IDEyLCB5MTogOSwgeDI6IDEyLCB5MjogMTMgfSwgeyB4MTogMTIsIHkxOiAxNywgeDI6IDEyLjAxLCB5MjogMTcgfV1cbiAgfSxcblxuICAvLyBBY3Rpb25zXG4gICd1bmRvJzoge1xuICAgIHBhdGhzOiBbJ00zIDd2Nmg2JywgJ00yMSAxN2E5IDkgMCAwIDAtOS05IDkgOSAwIDAgMC02IDIuM0wzIDEzJ11cbiAgfSxcbiAgJ3JlZG8nOiB7XG4gICAgcGF0aHM6IFsnTTIxIDd2NmgtNicsICdNMyAxN2E5IDkgMCAwIDEgOS05IDkgOSAwIDAgMSA2IDIuM0wyMSAxMyddXG4gIH0sXG4gICdyZWZyZXNoJzoge1xuICAgIHBhdGhzOiBbXG4gICAgICAnTTIzIDR2NmgtNicsXG4gICAgICAnTTEgMjB2LTZoNicsXG4gICAgICAnTTMuNTEgOWE5IDkgMCAwIDEgMTQuODUtMy4zNkwyMyAxME0xIDE0bDQuNjQgNC4zNkE5IDkgMCAwIDAgMjAuNDkgMTUnXG4gICAgXVxuICB9LFxuICAnc2F2ZSc6IHtcbiAgICBwYXRoczogW1xuICAgICAgJ00xOSAyMUg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDExbDUgNXYxMWEyIDIgMCAwIDEtMiAyeicsXG4gICAgICAnTTE3IDIxdi04SDd2OCcsXG4gICAgICAnTTcgM3Y1aDgnXG4gICAgXVxuICB9LFxuICAnZG93bmxvYWQnOiB7XG4gICAgcGF0aHM6IFtcbiAgICAgICdNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNCcsXG4gICAgICAnTTcgMTBsNSA1IDUtNScsXG4gICAgICAnTTEyIDE1VjMnXG4gICAgXVxuICB9LFxuICAnZXhwb3J0Jzoge1xuICAgIHBhdGhzOiBbXG4gICAgICAnTTIxIDE1djRhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJ2LTQnLFxuICAgICAgJ003IDEwbDUgNSA1LTUnLFxuICAgICAgJ00xMiAxNVYzJ1xuICAgIF1cbiAgfSxcbiAgJ3NlYXJjaCc6IHtcbiAgICBjaXJjbGVzOiBbeyBjeDogMTEsIGN5OiAxMSwgcjogOCB9XSxcbiAgICBsaW5lczogW3sgeDE6IDIxLCB5MTogMjEsIHgyOiAxNi42NSwgeTI6IDE2LjY1IH1dXG4gIH0sXG4gICdmaWx0ZXInOiB7XG4gICAgcG9seWxpbmVzOiBbJzIyIDMgMiAzIDEwIDEyLjQ2IDEwIDE5IDE0IDIxIDE0IDEyLjQ2IDIyIDMnXVxuICB9LFxuICAnY29weSc6IHtcbiAgICByZWN0czogW3sgeDogOSwgeTogOSwgd2lkdGg6IDEzLCBoZWlnaHQ6IDEzLCByeDogMiB9XSxcbiAgICBwYXRoczogWydNNSAxNUg0YTIgMiAwIDAgMS0yLTJWNGEyIDIgMCAwIDEgMi0yaDlhMiAyIDAgMCAxIDIgMnYxJ11cbiAgfSxcbiAgJ2R1cGxpY2F0ZSc6IHtcbiAgICByZWN0czogW3sgeDogOSwgeTogOSwgd2lkdGg6IDEzLCBoZWlnaHQ6IDEzLCByeDogMiB9XSxcbiAgICBwYXRoczogWydNNSAxNUg0YTIgMiAwIDAgMS0yLTJWNGEyIDIgMCAwIDEgMi0yaDlhMiAyIDAgMCAxIDIgMnYxJ11cbiAgfSxcbiAgJ3RyYXNoJzoge1xuICAgIHBhdGhzOiBbXG4gICAgICAnTTMgNmgxOCcsXG4gICAgICAnTTE5IDZ2MTRhMiAyIDAgMCAxLTIgMkg3YTIgMiAwIDAgMS0yLTJWNm0zIDBWNGEyIDIgMCAwIDEgMi0yaDRhMiAyIDAgMCAxIDIgMnYyJyxcbiAgICAgICdNMTAgMTF2NicsXG4gICAgICAnTTE0IDExdjYnXG4gICAgXVxuICB9LFxuICAnZGVsZXRlJzoge1xuICAgIHBhdGhzOiBbXG4gICAgICAnTTMgNmgxOCcsXG4gICAgICAnTTE5IDZ2MTRhMiAyIDAgMCAxLTIgMkg3YTIgMiAwIDAgMS0yLTJWNm0zIDBWNGEyIDIgMCAwIDEgMi0yaDRhMiAyIDAgMCAxIDIgMnYyJ1xuICAgIF1cbiAgfSxcbiAgJ3NldHRpbmdzJzoge1xuICAgIGNpcmNsZXM6IFt7IGN4OiAxMiwgY3k6IDEyLCByOiAzIH1dLFxuICAgIHBhdGhzOiBbXG4gICAgICAnTTE5LjQgMTVhMS42NSAxLjY1IDAgMCAwIC4zMyAxLjgybC4wNi4wNmEyIDIgMCAwIDEgMCAyLjgzIDIgMiAwIDAgMS0yLjgzIDBsLS4wNi0uMDZhMS42NSAxLjY1IDAgMCAwLTEuODItLjMzIDEuNjUgMS42NSAwIDAgMC0xIDEuNTFWMjFhMiAyIDAgMCAxLTIgMiAyIDIgMCAwIDEtMi0ydi0uMDlBMS42NSAxLjY1IDAgMCAwIDkgMTkuNGExLjY1IDEuNjUgMCAwIDAtMS44Mi4zM2wtLjA2LjA2YTIgMiAwIDAgMS0yLjgzIDAgMiAyIDAgMCAxIDAtMi44M2wuMDYtLjA2YTEuNjUgMS42NSAwIDAgMCAuMzMtMS44MiAxLjY1IDEuNjUgMCAwIDAtMS41MS0xSDNhMiAyIDAgMCAxLTItMiAyIDIgMCAwIDEgMi0yaC4wOUExLjY1IDEuNjUgMCAwIDAgNC42IDlhMS42NSAxLjY1IDAgMCAwLS4zMy0xLjgybC0uMDYtLjA2YTIgMiAwIDAgMSAwLTIuODMgMiAyIDAgMCAxIDIuODMgMGwuMDYuMDZhMS42NSAxLjY1IDAgMCAwIDEuODIuMzNIOWExLjY1IDEuNjUgMCAwIDAgMS0xLjUxVjNhMiAyIDAgMCAxIDItMiAyIDIgMCAwIDEgMiAydi4wOWExLjY1IDEuNjUgMCAwIDAgMSAxLjUxIDEuNjUgMS42NSAwIDAgMCAxLjgyLS4zM2wuMDYtLjA2YTIgMiAwIDAgMSAyLjgzIDAgMiAyIDAgMCAxIDAgMi44M2wtLjA2LjA2YTEuNjUgMS42NSAwIDAgMC0uMzMgMS44MlY5YTEuNjUgMS42NSAwIDAgMCAxLjUxIDFIMjFhMiAyIDAgMCAxIDIgMiAyIDIgMCAwIDEtMiAyaC0uMDlhMS42NSAxLjY1IDAgMCAwLTEuNTEgMXonXG4gICAgXVxuICB9LFxuICAnZ2Vhcic6IHtcbiAgICBjaXJjbGVzOiBbeyBjeDogMTIsIGN5OiAxMiwgcjogMyB9XSxcbiAgICBwYXRoczogW1xuICAgICAgJ00xOS40IDE1YTEuNjUgMS42NSAwIDAgMCAuMzMgMS44MmwuMDYuMDZhMiAyIDAgMCAxIDAgMi44MyAyIDIgMCAwIDEtMi44MyAwbC0uMDYtLjA2YTEuNjUgMS42NSAwIDAgMC0xLjgyLS4zMyAxLjY1IDEuNjUgMCAwIDAtMSAxLjUxVjIxYTIgMiAwIDAgMS0yIDIgMiAyIDAgMCAxLTItMnYtLjA5QTEuNjUgMS42NSAwIDAgMCA5IDE5LjRhMS42NSAxLjY1IDAgMCAwLTEuODIuMzNsLS4wNi4wNmEyIDIgMCAwIDEtMi44MyAwIDIgMiAwIDAgMSAwLTIuODNsLjA2LS4wNmExLjY1IDEuNjUgMCAwIDAgLjMzLTEuODIgMS42NSAxLjY1IDAgMCAwLTEuNTEtMUgzYTIgMiAwIDAgMS0yLTIgMiAyIDAgMCAxIDItMmguMDlBMS42NSAxLjY1IDAgMCAwIDQuNiA5YTEuNjUgMS42NSAwIDAgMC0uMzMtMS44MmwtLjA2LS4wNmEyIDIgMCAwIDEgMC0yLjgzIDIgMiAwIDAgMSAyLjgzIDBsLjA2LjA2YTEuNjUgMS42NSAwIDAgMCAxLjgyLjMzSDlhMS42NSAxLjY1IDAgMCAwIDEtMS41MVYzYTIgMiAwIDAgMSAyLTIgMiAyIDAgMCAxIDIgMnYuMDlhMS42NSAxLjY1IDAgMCAwIDEgMS41MSAxLjY1IDEuNjUgMCAwIDAgMS44Mi0uMzNsLjA2LS4wNmEyIDIgMCAwIDEgMi44MyAwIDIgMiAwIDAgMSAwIDIuODNsLS4wNi4wNmExLjY1IDEuNjUgMCAwIDAtLjMzIDEuODJWOWExLjY1IDEuNjUgMCAwIDAgMS41MSAxSDIxYTIgMiAwIDAgMSAyIDIgMiAyIDAgMCAxLTIgMmgtLjA5YTEuNjUgMS42NSAwIDAgMC0xLjUxIDF6J1xuICAgIF1cbiAgfSxcbiAgJ2V5ZSc6IHtcbiAgICBwYXRoczogWydNMSAxMnM0LTggMTEtOCAxMSA4IDExIDgtNCA4LTExIDgtMTEtOC0xMS04eiddLFxuICAgIGNpcmNsZXM6IFt7IGN4OiAxMiwgY3k6IDEyLCByOiAzIH1dXG4gIH0sXG4gICdwcmV2aWV3Jzoge1xuICAgIHBhdGhzOiBbJ00xIDEyczQtOCAxMS04IDExIDggMTEgOC00IDgtMTEgOC0xMS04LTExLTh6J10sXG4gICAgY2lyY2xlczogW3sgY3g6IDEyLCBjeTogMTIsIHI6IDMgfV1cbiAgfSxcbiAgJ2NvZGUnOiB7XG4gICAgcG9seWxpbmVzOiBbJzE2IDE4IDIyIDEyIDE2IDYnLCAnOCA2IDIgMTIgOCAxOCddXG4gIH0sXG4gICdqc29uJzoge1xuICAgIHBvbHlsaW5lczogWycxNiAxOCAyMiAxMiAxNiA2JywgJzggNiAyIDEyIDggMTgnXVxuICB9LFxuXG4gIC8vIE5hdmlnYXRpb24gJiBEaXJlY3Rpb25cbiAgJ2Fycm93LWxlZnQnOiB7XG4gICAgbGluZXM6IFt7IHgxOiAxOSwgeTE6IDEyLCB4MjogNSwgeTI6IDEyIH1dLFxuICAgIHBvbHlsaW5lczogWycxMiAxOSA1IDEyIDEyIDUnXVxuICB9LFxuICAnYXJyb3ctcmlnaHQnOiB7XG4gICAgbGluZXM6IFt7IHgxOiA1LCB5MTogMTIsIHgyOiAxOSwgeTI6IDEyIH1dLFxuICAgIHBvbHlsaW5lczogWycxMiA1IDE5IDEyIDEyIDE5J11cbiAgfSxcbiAgJ2Fycm93LXVwJzoge1xuICAgIGxpbmVzOiBbeyB4MTogMTIsIHkxOiAxOSwgeDI6IDEyLCB5MjogNSB9XSxcbiAgICBwb2x5bGluZXM6IFsnNSAxMiAxMiA1IDE5IDEyJ11cbiAgfSxcbiAgJ2Fycm93LWRvd24nOiB7XG4gICAgbGluZXM6IFt7IHgxOiAxMiwgeTE6IDUsIHgyOiAxMiwgeTI6IDE5IH1dLFxuICAgIHBvbHlsaW5lczogWycxOSAxMiAxMiAxOSA1IDEyJ11cbiAgfSxcbiAgJ2Nvcm5lci1kb3duLXJpZ2h0Jzoge1xuICAgIHBvbHlsaW5lczogWycxNSAxMCAyMCAxNSAxNSAyMCddLFxuICAgIHBhdGhzOiBbJ000IDR2N2E0IDQgMCAwIDAgNCA0aDEyJ11cbiAgfSxcbiAgJ25ldy1yb3cnOiB7XG4gICAgcG9seWxpbmVzOiBbJzE1IDEwIDIwIDE1IDE1IDIwJ10sXG4gICAgcGF0aHM6IFsnTTQgNHY3YTQgNCAwIDAgMCA0IDRoMTInXVxuICB9LFxuXG4gIC8vIEdlbmVyYWwgU3RhdHVzICYgQ29tbW9uXG4gICdjaGVjayc6IHtcbiAgICBwb2x5bGluZXM6IFsnMjAgNiA5IDE3IDQgMTInXVxuICB9LFxuICAnY2xvc2UnOiB7XG4gICAgbGluZXM6IFtcbiAgICAgIHsgeDE6IDE4LCB5MTogNiwgeDI6IDYsIHkyOiAxOCB9LFxuICAgICAgeyB4MTogNiwgeTE6IDYsIHgyOiAxOCwgeTI6IDE4IH1cbiAgICBdXG4gIH0sXG4gICdwbHVzJzoge1xuICAgIGxpbmVzOiBbXG4gICAgICB7IHgxOiAxMiwgeTE6IDUsIHgyOiAxMiwgeTI6IDE5IH0sXG4gICAgICB7IHgxOiA1LCB5MTogMTIsIHgyOiAxOSwgeTI6IDEyIH1cbiAgICBdXG4gIH0sXG4gICdtaW51cyc6IHtcbiAgICBsaW5lczogW3sgeDE6IDUsIHkxOiAxMiwgeDI6IDE5LCB5MjogMTIgfV1cbiAgfSxcbiAgJ2RvbGxhcic6IHtcbiAgICBsaW5lczogW3sgeDE6IDEyLCB5MTogMSwgeDI6IDEyLCB5MjogMjMgfV0sXG4gICAgcGF0aHM6IFsnTTE3IDVIOS41YTMuNSAzLjUgMCAwIDAgMCA3aDVhMy41IDMuNSAwIDAgMSAwIDdINiddXG4gIH0sXG4gICdjbG9jayc6IHtcbiAgICBjaXJjbGVzOiBbeyBjeDogMTIsIGN5OiAxMiwgcjogMTAgfV0sXG4gICAgcG9seWxpbmVzOiBbJzEyIDYgMTIgMTIgMTYgMTQnXVxuICB9LFxuICAnYm94Jzoge1xuICAgIHBhdGhzOiBbXG4gICAgICAnTTIxIDE2VjhhMiAyIDAgMCAwLTEtMS43M2wtNy00YTIgMiAwIDAgMC0yIDBsLTcgNEEyIDIgMCAwIDAgMyA4djhhMiAyIDAgMCAwIDEgMS43M2w3IDRhMiAyIDAgMCAwIDIgMGw3LTRBMiAyIDAgMCAwIDIxIDE2eicsXG4gICAgICAnTTMuMjcgNi45NkwxMiAxMi4wMWw4LjczLTUuMDUnLFxuICAgICAgJ00xMiAyMi4wOFYxMidcbiAgICBdXG4gIH0sXG4gICdsaWdodG5pbmcnOiB7XG4gICAgcG9seWxpbmVzOiBbJzEzIDIgMyAxNCAxMiAxNCAxMSAyMiAyMSAxMCAxMiAxMCAxMyAyJ11cbiAgfSxcbiAgJ2xpbmsnOiB7XG4gICAgcGF0aHM6IFtcbiAgICAgICdNMTAgMTNhNSA1IDAgMCAwIDcuNTQuNTRsMy0zYTUgNSAwIDAgMC03LjA3LTcuMDdsLTEuNzIgMS43MScsXG4gICAgICAnTTE0IDExYTUgNSAwIDAgMC03LjU0LS41NGwtMyAzYTUgNSAwIDAgMCA3LjA3IDcuMDdsMS43MS0xLjcxJ1xuICAgIF1cbiAgfSxcbiAgJ3VzZXInOiB7XG4gICAgcGF0aHM6IFsnTTIwIDIxdi0yYTQgNCAwIDAgMC00LTRIOGE0IDQgMCAwIDAtNCA0djInXSxcbiAgICBjaXJjbGVzOiBbeyBjeDogMTIsIGN5OiA3LCByOiA0IH1dXG4gIH0sXG4gICdzbGlkZXJzJzoge1xuICAgIGxpbmVzOiBbXG4gICAgICB7IHgxOiA0LCB5MTogMjEsIHgyOiA0LCB5MjogMTQgfSxcbiAgICAgIHsgeDE6IDQsIHkxOiAxMCwgeDI6IDQsIHkyOiAzIH0sXG4gICAgICB7IHgxOiAxMiwgeTE6IDIxLCB4MjogMTIsIHkyOiAxMiB9LFxuICAgICAgeyB4MTogMTIsIHkxOiA4LCB4MjogMTIsIHkyOiAzIH0sXG4gICAgICB7IHgxOiAyMCwgeTE6IDIxLCB4MjogMjAsIHkyOiAxNiB9LFxuICAgICAgeyB4MTogMjAsIHkxOiAxMiwgeDI6IDIwLCB5MjogMyB9LFxuICAgICAgeyB4MTogMSwgeTE6IDE0LCB4MjogNywgeTI6IDE0IH0sXG4gICAgICB7IHgxOiA5LCB5MTogOCwgeDI6IDE1LCB5MjogOCB9LFxuICAgICAgeyB4MTogMTcsIHkxOiAxNiwgeDI6IDIzLCB5MjogMTYgfVxuICAgIF1cbiAgfSxcbiAgJ3NwYXJrbGVzJzoge1xuICAgIHBhdGhzOiBbXG4gICAgICAnTTEyIDN2M20wIDEydjNNMyAxMmgzbTEyIDBoM001LjYgNS42bDIuMSAyLjFtOC42IDguNmwyLjEgMi4xTTUuNiAxOC40bDIuMS0yLjFtOC42LTguNmwyLjEtMi4xJ1xuICAgIF1cbiAgfSxcbiAgJ2dsb2JlJzoge1xuICAgIGNpcmNsZXM6IFt7IGN4OiAxMiwgY3k6IDEyLCByOiAxMCB9XSxcbiAgICBwYXRoczogW1xuICAgICAgJ00yIDEyaDIwJyxcbiAgICAgICdNMTIgMmExNS4zIDE1LjMgMCAwIDEgNCAxMCAxNS4zIDE1LjMgMCAwIDEtNCAxMCAxNS4zIDE1LjMgMCAwIDEtNC0xMCAxNS4zIDE1LjMgMCAwIDEgNC0xMHonXG4gICAgXVxuICB9LFxuICAnYXBpJzoge1xuICAgIHBhdGhzOiBbXG4gICAgICAnTTEwIDEzYTUgNSAwIDAgMCA3LjU0LjU0bDMtM2E1IDUgMCAwIDAtNy4wNy03LjA3bC0xLjcyIDEuNzEnLFxuICAgICAgJ00xNCAxMWE1IDUgMCAwIDAtNy41NC0uNTRsLTMgM2E1IDUgMCAwIDAgNy4wNyA3LjA3bDEuNzEtMS43MSdcbiAgICBdLFxuICAgIGxpbmVzOiBbXG4gICAgICB7IHgxOiAyLCB5MTogMTIsIHgyOiA2LCB5MjogMTIgfSxcbiAgICAgIHsgeDE6IDE4LCB5MTogMTIsIHgyOiAyMiwgeTI6IDEyIH1cbiAgICBdXG4gIH0sXG4gICdncmlwLXZlcnRpY2FsJzoge1xuICAgIGNpcmNsZXM6IFtcbiAgICAgIHsgY3g6IDksIGN5OiA2LCByOiAxLjUgfSxcbiAgICAgIHsgY3g6IDksIGN5OiAxMiwgcjogMS41IH0sXG4gICAgICB7IGN4OiA5LCBjeTogMTgsIHI6IDEuNSB9LFxuICAgICAgeyBjeDogMTUsIGN5OiA2LCByOiAxLjUgfSxcbiAgICAgIHsgY3g6IDE1LCBjeTogMTIsIHI6IDEuNSB9LFxuICAgICAgeyBjeDogMTUsIGN5OiAxOCwgcjogMS41IH1cbiAgICBdXG4gIH1cbn07XG4iXX0=
|
|
564
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnB0LWljb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvcHJpbWl0aXZlcy9jb21wb25lbnRzL2ljb24vcnB0LWljb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixLQUFLLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUUvQzs7O0dBR0c7QUFnRUgsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixnRkFBZ0Y7SUFDdkUsSUFBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztJQUV6QyxnREFBZ0Q7SUFDdkMsSUFBSSxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztJQUVsQyxxREFBcUQ7SUFDNUMsS0FBSyxHQUFHLEtBQUssQ0FBUyxjQUFjLENBQUMsQ0FBQztJQUUvQyx3REFBd0Q7SUFDL0MsV0FBVyxHQUFHLEtBQUssQ0FBUyxDQUFDLENBQUMsQ0FBQztJQUUvQixPQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDeEMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUV0QixRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUN4QyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDO1FBQ3JELE9BQU8sYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLGFBQWEsQ0FB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LGFBQWEsRUFBRTtRQUNiLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDckQsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7S0FDM0M7SUFDRCxlQUFlLEVBQUU7UUFDZixLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3JELEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0tBQzNDO0lBRUQsa0JBQWtCO0lBQ2xCLE1BQU0sRUFBRTtRQUNOLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDckQsS0FBSyxFQUFFO1lBQ0wsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ2hDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtZQUM5QixFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7U0FDbEM7S0FDRjtJQUNELFVBQVUsRUFBRTtRQUNWLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDckQsS0FBSyxFQUFFO1lBQ0wsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ2hDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtZQUM5QixFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7U0FDbEM7S0FDRjtJQUNELGdCQUFnQixFQUFFO1FBQ2hCLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDckQsS0FBSyxFQUFFO1lBQ0wsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ2hDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtZQUM5QixFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFB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S0FDaEU7SUFFRCxTQUFTO0lBQ1QsT0FBTyxFQUFFO1FBQ1AsS0FBSyxFQUFFO1lBQ0wsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO1lBQ2xDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtZQUNqQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7U0FDakM7S0FDRjtJQUNELFdBQVcsRUFBRTtRQUNYLEtBQUssRUFBRTtZQUNMLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtZQUNsQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDakMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO1NBQ2pDO0tBQ0Y7SUFDRCxXQUFXLEVBQUU7UUFDWCxLQUFLLEVBQUU7WUFDTCxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7WUFDbEMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ2pDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtTQUNqQztLQUNGO0lBQ0QsWUFBWSxFQUFFO1FBQ1osU0FBUyxFQUFFLENBQUMsaUNBQWlDLENBQUM7S0FDL0M7SUFDRCxhQUFhLEVBQUU7UUFDYixPQUFPLEVBQUU7WUFDUCxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQ3pCLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7U0FDekI7S0FDRjtJQUVELHdCQUF3QjtJQUN4QixNQUFNLEVBQUU7UUFDTixLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3JELEtBQUssRUFBRTtZQUNMLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtZQUMvQixFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7WUFDakMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO1lBQy9CLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtTQUNsQztLQUNGO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsS0FBSyxFQUFFO1lBQ0wsMkVBQTJFO1lBQzNFLHNDQUFzQztTQUN2QztLQUNGO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNyRCxLQUFLLEVBQUU7WUFDTCxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDL0IsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO1NBQ2hDO0tBQ0Y7SUFDRCxRQUFRLEVBQUU7UUFDUixLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3JELEtBQUssRUFBRTtZQUNMLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtZQUMvQixFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7U0FDaEM7S0FDRjtJQUNELE1BQU0sRUFBRTtRQUNOLEtBQUssRUFBRTtZQUNMLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtZQUMvQixFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFF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QUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtTQUNqQztLQUNGO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsS0FBSyxFQUFFO1lBQ0wsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO1lBQ2hDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtTQUNqQztLQUNGO0lBQ0QsTUFBTSxFQUFFO1FBQ04sS0FBSyxFQUFFO1lBQ0wsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO1lBQ2pDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtTQUNsQztLQUNGO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7S0FDM0M7SUFDRCxRQUFRLEVBQUU7UUFDUixLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUMxQyxLQUFLLEVBQUUsQ0FBQyxtREFBbUQsQ0FBQztLQUM3RDtJQUNELE9BQU8sRUFBRTtRQUNQLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUNwQyxTQUFTLEVBQUUs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QixFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFO1lBQ3pCLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUU7WUFDekIsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRTtZQUN6QixFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFO1lBQzFCLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUU7U0FDM0I7S0FDRjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgaW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLyoqXG4gKiBFbnRlcnByaXNlIFNWRyBJY29uIGNvbXBvbmVudCBmb3IgQldheXMtUmVwb3J0LlxuICogUHJvdmlkZXMgY3Jpc3AsIHNjYWxhYmxlIHZlY3RvciBpY29ucyB3aXRob3V0IGV4dGVybmFsIGZvbnQgZGVwZW5kZW5jaWVzLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdycHQtaWNvbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICA8c3ZnXG4gICAgICBjbGFzcz1cInJwdC1zdmctaWNvblwiXG4gICAgICBbYXR0ci53aWR0aF09XCJzaXplKClcIlxuICAgICAgW2F0dHIuaGVpZ2h0XT1cInNpemUoKVwiXG4gICAgICBbYXR0ci52aWV3Qm94XT1cInZpZXdCb3goKVwiXG4gICAgICBbYXR0ci5zdHJva2VdPVwic3Ryb2tlKClcIlxuICAgICAgW2F0dHIuZmlsbF09XCJmaWxsKClcIlxuICAgICAgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInN0cm9rZVdpZHRoKClcIlxuICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICBbc3R5bGUuY29sb3JdPVwiY29sb3IoKVwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIEBmb3IgKGQgb2YgcGF0aHMoKTsgdHJhY2sgZCkge1xuICAgICAgICA8cGF0aCBbYXR0ci5kXT1cImRcIiAvPlxuICAgICAgfVxuICAgICAgQGZvciAoYyBvZiBjaXJjbGVzKCk7IHRyYWNrIGMuY3ggKyAnLScgKyBjLmN5KSB7XG4gICAgICAgIDxjaXJjbGUgW2F0dHIuY3hdPVwiYy5jeFwiIFthdHRyLmN5XT1cImMuY3lcIiBbYXR0ci5yXT1cImMuclwiIC8+XG4gICAgICB9XG4gICAgICBAZm9yIChyIG9mIHJlY3RzKCk7IHRyYWNrIHIueCArICctJyArIHIueSkge1xuICAgICAgICA8cmVjdFxuICAgICAgICAgIFthdHRyLnhdPVwici54XCJcbiAgICAgICAgICBbYXR0ci55XT1cInIueVwiXG4gICAgICAgICAgW2F0dHIud2lkdGhdPVwici53aWR0aFwiXG4gICAgICAgICAgW2F0dHIuaGVpZ2h0XT1cInIuaGVpZ2h0XCJcbiAgICAgICAgICBbYXR0ci5yeF09XCJyLnJ4IHx8IDBcIlxuICAgICAgICAvPlxuICAgICAgfVxuICAgICAgQGZvciAobCBvZiBsaW5lcygpOyB0cmFjayBsLngxICsgJy0nICsgbC55MSkge1xuICAgICAgICA8bGluZVxuICAgICAgICAgIFthdHRyLngxXT1cImwueDFcIlxuICAgICAgICAgIFthdHRyLnkxXT1cImwueTFcIlxuICAgICAgICAgIFthdHRyLngyXT1cImwueDJcIlxuICAgICAgICAgIFthdHRyLnkyXT1cImwueTJcIlxuICAgICAgICAvPlxuICAgICAgfVxuICAgICAgQGZvciAocCBvZiBwb2x5bGluZXMoKTsgdHJhY2sgcCkge1xuICAgICAgICA8cG9seWxpbmUgW2F0dHIucG9pbnRzXT1cInBcIiAvPlxuICAgICAgfVxuICAgIDwvc3ZnPlxuICBgLFxuICBzdHlsZXM6IFtgXG4gICAgOmhvc3Qge1xuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgfVxuXG4gICAgLnJwdC1zdmctaWNvbiB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBmbGV4LXNocmluazogMDtcbiAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIH1cbiAgYF1cbn0pXG5leHBvcnQgY2xhc3MgUnB0SWNvbkNvbXBvbmVudCB7XG4gIC8qKiBJY29uIG5hbWUgKGUuZy4gJ3NlYXJjaCcsICdlZGl0JywgJ3NhdmUnLCAna3BpJywgJ2NoYXJ0LWJhcicsICd0cmVuZC11cCcpICovXG4gIHJlYWRvbmx5IG5hbWUgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG5cbiAgLyoqIEljb24gZGltZW5zaW9uIGluIHBpeGVscy4gRGVmYXVsdHMgdG8gMTYuICovXG4gIHJlYWRvbmx5IHNpemUgPSBpbnB1dDxudW1iZXI+KDE2KTtcblxuICAvKiogU3Ryb2tlL2ZpbGwgY29sb3IuIERlZmF1bHRzIHRvICdjdXJyZW50Q29sb3InLiAqL1xuICByZWFkb25seSBjb2xvciA9IGlucHV0PHN0cmluZz4oJ2N1cnJlbnRDb2xvcicpO1xuXG4gIC8qKiBTdHJva2Ugd2lkdGggZm9yIGxpbmUtYmFzZWQgaWNvbnMuIERlZmF1bHRzIHRvIDIuICovXG4gIHJlYWRvbmx5IHN0cm9rZVdpZHRoID0gaW5wdXQ8bnVtYmVyPigyKTtcblxuICByZWFkb25seSB2aWV3Qm94ID0gY29tcHV0ZWQoKCkgPT4gJzAgMCAyNCAyNCcpO1xuICByZWFkb25seSBzdHJva2UgPSBjb21wdXRlZCgoKSA9PiAnY3VycmVudENvbG9yJyk7XG4gIHJlYWRvbmx5IGZpbGwgPSBjb21wdXRlZCgoKSA9PiAnbm9uZScpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaWNvbkRhdGEgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbiA9IHRoaXMubmFtZSgpPy50b0xvd2VyQ2FzZSgpLnRyaW0oKSB8fCAnYm94JztcbiAgICByZXR1cm4gSUNPTl9SRUdJU1RSWVtuXSB8fCBJQ09OX1JFR0lTVFJZWydib3gnXSB8fCB7IHBhdGhzOiBbXSB9O1xuICB9KTtcblxuICByZWFkb25seSBwYXRocyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaWNvbkRhdGEoKS5wYXRocyB8fCBbXSk7XG4gIHJlYWRvbmx5IGNpcmNsZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmljb25EYXRhKCkuY2lyY2xlcyB8fCBbXSk7XG4gIHJlYWRvbmx5IHJlY3RzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pY29uRGF0YSgpLnJlY3RzIHx8IFtdKTtcbiAgcmVhZG9ubHkgbGluZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmljb25EYXRhKCkubGluZXMgfHwgW10pO1xuICByZWFkb25seSBwb2x5bGluZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmljb25EYXRhKCkucG9seWxpbmVzIHx8IFtdKTtcbn1cblxuaW50ZXJmYWNlIEljb25EZWZpbml0aW9uIHtcbiAgcGF0aHM/OiBzdHJpbmdbXTtcbiAgY2lyY2xlcz86IHsgY3g6IG51bWJlcjsgY3k6IG51bWJlcjsgcjogbnVtYmVyIH1bXTtcbiAgcmVjdHM/OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlcjsgcng/OiBudW1iZXIgfVtdO1xuICBsaW5lcz86IHsgeDE6IG51bWJlcjsgeTE6IG51bWJlcjsgeDI6IG51bWJlcjsgeTI6IG51bWJlciB9W107XG4gIHBvbHlsaW5lcz86IHN0cmluZ1tdO1xufVxuXG5jb25zdCBJQ09OX1JFR0lTVFJZOiBSZWNvcmQ8c3RyaW5nLCBJY29uRGVmaW5pdGlvbj4gPSB7XG4gIC8vIElucHV0IC8gVGV4dFxuICAnaW5wdXQnOiB7XG4gICAgcGF0aHM6IFsnTTE3IDNhMi44MjggMi44MjggMCAxIDEgNCA0TDcuNSAyMC41IDIgMjJsMS41LTUuNUwxNyAzeiddXG4gIH0sXG4gICd0ZXh0LWZpZWxkcyc6IHtcbiAgICBsaW5lczogW1xuICAgICAgeyB4MTogNCwgeTE6IDcsIHgyOiA0LCB5MjogNCB9LFxuICAgICAgeyB4MTogNCwgeTE6IDQsIHgyOiAyMCwgeTI6IDQgfSxcbiAgICAgIHsgeDE6IDIwLCB5MTogNCwgeDI6IDIwLCB5MjogNyB9LFxuICAgICAgeyB4MTogMTIsIHkxOiA0LCB4MjogMTIsIHkyOiAyMCB9LFxuICAgICAgeyB4MTogOSwgeTE6IDIwLCB4MjogMTUsIHkyOiAyMCB9XG4gICAgXVxuICB9LFxuICAnZWRpdCc6IHtcbiAgICBwYXRoczogW1xuICAgICAgJ00xMSA0SDRhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YTIgMiAwIDAgMCAyLTJ2LTcnLFxuICAgICAgJ00xOC41IDIuNWEyLjEyMSAyLjEyMSAwIDAgMSAzIDNMMTIgMTVsLTQgMSAxLTQgOS41LTkuNXonXG4gICAgXVxuICB9LFxuICAnZGVzaWduJzoge1xuICAgIHJlY3RzOiBbeyB4OiAzLCB5OiAzLCB3aWR0aDogMTgsIGhlaWdodDogMTgsIHJ4OiAyIH1dLFxuICAgIGxpbmVzOiBbXG4gICAgICB7IHgxOiAzLCB5MTogOSwgeDI6IDIxLCB5MjogOSB9LFxuICAgICAgeyB4MTogOSwgeTE6IDIxLCB4MjogOSwgeTI6IDkgfVxuICAgIF1cbiAgfSxcblxuICAvLyBEcm9wZG93biAvIFNlbGVjdFxuICAnZHJvcGRvd24nOiB7XG4gICAgcmVjdHM6IFt7IHg6IDMsIHk6IDMsIHdpZHRoOiAxOCwgaGVpZ2h0OiAxOCwgcng6IDQgfV0sXG4gICAgcG9seWxpbmVzOiBbJzggMTAgMTIgMTQgMTYgMTAnXVxuICB9LFxuICAnY2hldnJvbi1kb3duJzoge1xuICAgIHBvbHlsaW5lczogWyc2IDkgMTIgMTUgMTggOSddXG4gIH0sXG4gICdjaGV2cm9uLXVwJzoge1xuICAgIHBvbHlsaW5lczogWycxOCAxNSAxMiA5IDYgMTUnXVxuICB9LFxuICAnY2hldnJvbi1sZWZ0Jzoge1xuICAgIHBvbHlsaW5lczogWycxNSAxOCA5IDEyIDE1IDYnXVxuICB9LFxuICAnY2hldnJvbi1yaWdodCc6IHtcbiAgICBwb2x5bGluZXM6IFsnOSAxOCAxNSAxMiA5IDYnXVxuICB9LFxuICAncGFuZWwtbGVmdCc6IHtcbiAgICByZWN0czogW3sgeDogMywgeTogMywgd2lkdGg6IDE4LCBoZWlnaHQ6IDE4LCByeDogMyB9XSxcbiAgICBsaW5lczogW3sgeDE6IDksIHkxOiAzLCB4MjogOSwgeTI6IDIxIH1dXG4gIH0sXG4gICdzaWRlYmFyLWxlZnQnOiB7XG4gICAgcmVjdHM6IFt7IHg6IDMsIHk6IDMsIHdpZHRoOiAxOCwgaGVpZ2h0OiAxOCwgcng6IDMgfV0sXG4gICAgbGluZXM6IFt7IHgxOiA5LCB5MTogMywgeDI6IDksIHkyOiAyMSB9XVxuICB9LFxuICAncGFuZWwtcmlnaHQnOiB7XG4gICAgcmVjdHM6IFt7IHg6IDMsIHk6IDMsIHdpZHRoOiAxOCwgaGVpZ2h0OiAxOCwgcng6IDMgfV0sXG4gICAgbGluZXM6IFt7IHgxOiAxNSwgeTE6IDMsIHgyOiAxNSwgeTI6IDIxIH1dXG4gIH0sXG4gICdzaWRlYmFyLXJpZ2h0Jzoge1xuICAgIHJlY3RzOiBbeyB4OiAzLCB5OiAzLCB3aWR0aDogMTgsIGhlaWdodDogMTgsIHJ4OiAzIH1dLFxuICAgIGxpbmVzOiBbeyB4MTogMTUsIHkxOiAzLCB4MjogMTUsIHkyOiAyMSB9XVxuICB9LFxuXG4gIC8vIERhdGUgLyBDYWxlbmRhclxuICAnZGF0ZSc6IHtcbiAgICByZWN0czogW3sgeDogMywgeTogNCwgd2lkdGg6IDE4LCBoZWlnaHQ6IDE4LCByeDogMyB9XSxcbiAgICBsaW5lczogW1xuICAgICAgeyB4MTogMTYsIHkxOiAyLCB4MjogMTYsIHkyOiA2IH0sXG4gICAgICB7IHgxOiA4LCB5MTogMiwgeDI6IDgsIHkyOiA2IH0sXG4gICAgICB7IHgxOiAzLCB5MTogMTAsIHgyOiAyMSwgeTI6IDEwIH1cbiAgICBdXG4gIH0sXG4gICdjYWxlbmRhcic6IHtcbiAgICByZWN0czogW3sgeDogMywgeTogNCwgd2lkdGg6IDE4LCBoZWlnaHQ6IDE4LCByeDogMyB9XSxcbiAgICBsaW5lczogW1xuICAgICAgeyB4MTogMTYsIHkxOiAyLCB4MjogMTYsIHkyOiA2IH0sXG4gICAgICB7IHgxOiA4LCB5MTogMiwgeDI6IDgsIHkyOiA2IH0sXG4gICAgICB7IHgxOiAzLCB5MTogMTAsIHgyOiAyMSwgeTI6IDEwIH1cbiAgICBdXG4gIH0sXG4gICdjYWxlbmRhci10b2RheSc6IHtcbiAgICByZWN0czogW3sgeDogMywgeTogNCwgd2lkdGg6IDE4LCBoZWlnaHQ6IDE4LCByeDogMyB9XSxcbiAgICBsaW5lczogW1xuICAgICAgeyB4MTogMTYsIHkxOiAyLCB4MjogMTYsIHkyOiA2IH0sXG4gICAgICB7IHgxOiA4LCB5MTogMiwgeDI6IDgsIHkyOiA2IH0sXG4gICAgICB7IHgxOiAzLCB5MTogMTAsIHgyOiAyMSwgeTI6IDEwIH1cbiAgICBdXG4gIH0sXG5cbiAgLy8gQWRkXG4gICdhZGQnOiB7XG4gICAgbGluZXM6IFtcbiAgICAgIHsgeDE6IDEyLCB5MTogNSwgeDI6IDEyLCB5MjogMTkgfSxcbiAgICAgIHsgeDE6IDUsIHkxOiAxMiwgeDI6IDE5LCB5MjogMTIgfVxuICAgIF1cbiAgfSxcblxuICAvLyBOdW1iZXIgLyBIYXNoXG4gICdudW1iZXInOiB7XG4gICAgbGluZXM6IFtcbiAgICAgIHsgeDE6IDQsIHkxOiA5LCB4MjogMjAsIHkyOiA5IH0sXG4gICAgICB7IHgxOiA0LCB5MTogMTUsIHgyOiAyMCwgeTI6IDE1IH0sXG4gICAgICB7IHgxOiAxMCwgeTE6IDMsIHgyOiA4LCB5MjogMjEgfSxcbiAgICAgIHsgeDE6IDE2LCB5MTogMywgeDI6IDE0LCB5MjogMjEgfVxuICAgIF1cbiAgfSxcblxuICAvLyBDaGVja2JveFxuICAnY2hlY2tib3gnOiB7XG4gICAgcmVjdHM6IFt7IHg6IDMsIHk6IDMsIHdpZHRoOiAxOCwgaGVpZ2h0OiAxOCwgcng6IDQgfV0sXG4gICAgcG9seWxpbmVzOiBbJzkgMTIgMTEgMTQgMTUgMTAnXVxuICB9LFxuXG4gIC8vIFJhZGlvXG4gICdyYWRpbyc6IHtcbiAgICBjaXJjbGVzOiBbXG4gICAgICB7IGN4OiAxMiwgY3k6IDEyLCByOiA5IH0sXG4gICAgICB7IGN4OiAxMiwgY3k6IDEyLCByOiA0IH1cbiAgICBdXG4gIH0sXG4gICdyYWRpb19idXR0b25fY2hlY2tlZCc6IHtcbiAgICBjaXJjbGVzOiBbXG4gICAgICB7IGN4OiAxMiwgY3k6IDEyLCByOiA5IH0sXG4gICAgICB7IGN4OiAxMiwgY3k6IDEyLCByOiA0IH1cbiAgICBdXG4gIH0sXG5cbiAgLy8gQnV0dG9uXG4gICdidXR0b24nOiB7XG4gICAgcmVjdHM6IFt7IHg6IDMsIHk6IDcsIHdpZHRoOiAxOCwgaGVpZ2h0OiAxMCwgcng6IDQgfV0sXG4gICAgbGluZXM6IFt7IHgxOiA4LCB5MTogMTIsIHgyOiAxNiwgeTI6IDEyIH1dXG4gIH0sXG5cbiAgLy8gS1BJICYgVHJlbmRzXG4gICdrcGknOiB7XG4gICAgcGF0aHM6IFsnTTIyIDEyaC00bC0zIDlMOSAzbC0zIDlIMiddXG4gIH0sXG4gICdtb25pdG9yaW5nJzoge1xuICAgIHBhdGhzOiBbJ00yMiAxMmgtNGwtMyA5TDkgM2wtMyA5SDInXVxuICB9LFxuICAndHJlbmQtdXAnOiB7XG4gICAgcG9seWxpbmVzOiBbJzIzIDYgMTMuNSAxNS41IDguNSAxMC41IDEgMTgnLCAnMTcgNiAyMyA2IDIzIDEyJ11cbiAgfSxcbiAgJ3RyZW5kLWRvd24nOiB7XG4gICAgcG9seWxpbmVzOiBbJzIzIDE4IDEzLjUgOC41IDguNSAxMy41IDEgNicsICcxNyAxOCAyMyAxOCAyMyAxMiddXG4gIH0sXG5cbiAgLy8gQ2hhcnRzXG4gICdjaGFydCc6IHtcbiAgICBsaW5lczogW1xuICAgICAgeyB4MTogMTgsIHkxOiAyMCwgeDI6IDE4LCB5MjogMTAgfSxcbiAgICAgIHsgeDE6IDEyLCB5MTogMjAsIHgyOiAxMiwgeTI6IDQgfSxcbiAgICAgIHsgeDE6IDYsIHkxOiAyMCwgeDI6IDYsIHkyOiAxNCB9XG4gICAgXVxuICB9LFxuICAnY2hhcnQtYmFyJzoge1xuICAgIGxpbmVzOiBbXG4gICAgICB7IHgxOiAxOCwgeTE6IDIwLCB4MjogMTgsIHkyOiAxMCB9LFxuICAgICAgeyB4MTogMTIsIHkxOiAyMCwgeDI6IDEyLCB5MjogNCB9LFxuICAgICAgeyB4MTogNiwgeTE6IDIwLCB4MjogNiwgeTI6IDE0IH1cbiAgICBdXG4gIH0sXG4gICdiYXItY2hhcnQnOiB7XG4gICAgbGluZXM6IFtcbiAgICAgIHsgeDE6IDE4LCB5MTogMjAsIHgyOiAxOCwgeTI6IDEwIH0sXG4gICAgICB7IHgxOiAxMiwgeTE6IDIwLCB4MjogMTIsIHkyOiA0IH0sXG4gICAgICB7IHgxOiA2LCB5MTogMjAsIHgyOiA2LCB5MjogMTQgfVxuICAgIF1cbiAgfSxcbiAgJ2NoYXJ0LWxpbmUnOiB7XG4gICAgcG9seWxpbmVzOiBbJzIyIDEyIDE4IDEyIDE1IDIxIDkgMyA2IDEyIDIgMTInXVxuICB9LFxuICAnY2hhcnQtZG9udXQnOiB7XG4gICAgY2lyY2xlczogW1xuICAgICAgeyBjeDogMTIsIGN5OiAxMiwgcjogMTAgfSxcbiAgICAgIHsgY3g6IDEyLCBjeTogMTIsIHI6IDQgfVxuICAgIF1cbiAgfSxcblxuICAvLyBHcmlkIC8gVGFibGUgLyBMYXlvdXRcbiAgJ2dyaWQnOiB7XG4gICAgcmVjdHM6IFt7IHg6IDMsIHk6IDMsIHdpZHRoOiAxOCwgaGVpZ2h0OiAxOCwgcng6IDMgfV0sXG4gICAgbGluZXM6IFtcbiAgICAgIHsgeDE6IDMsIHkxOiA5LCB4MjogMjEsIHkyOiA5IH0sXG4gICAgICB7IHgxOiAzLCB5MTogMTUsIHgyOiAyMSwgeTI6IDE1IH0sXG4gICAgICB7IHgxOiA5LCB5MTogMywgeDI6IDksIHkyOiAyMSB9LFxuICAgICAgeyB4MTogMTUsIHkxOiAzLCB4MjogMTUsIHkyOiAyMSB9XG4gICAgXVxuICB9LFxuICAnZGF0YWJhc2UnOiB7XG4gICAgcGF0aHM6IFtcbiAgICAgICdNMyA1YzAtMS42NTcgNC4wMy0zIDktM3M5IDEuMzQzIDkgM3YxNGMwIDEuNjU3LTQuMDMgMy05IDNzLTktMS4zNDMtOS0zVjV6JyxcbiAgICAgICdNMyAxMmMwIDEuNjU3IDQuMDMgMyA5IDNzOS0xLjM0MyA5LTMnXG4gICAgXVxuICB9LFxuICAndGFibGUnOiB7XG4gICAgcmVjdHM6IFt7IHg6IDMsIHk6IDMsIHdpZHRoOiAxOCwgaGVpZ2h0OiAxOCwgcng6IDMgfV0sXG4gICAgbGluZXM6IFtcbiAgICAgIHsgeDE6IDMsIHkxOiA5LCB4MjogMjEsIHkyOiA5IH0sXG4gICAgICB7IHgxOiA5LCB5MTogOSwgeDI6IDksIHkyOiAyMSB9XG4gICAgXVxuICB9LFxuICAnbGF5b3V0Jzoge1xuICAgIHJlY3RzOiBbeyB4OiAzLCB5OiAzLCB3aWR0aDogMTgsIGhlaWdodDogMTgsIHJ4OiAzIH1dLFxuICAgIGxpbmVzOiBbXG4gICAgICB7IHgxOiAzLCB5MTogOSwgeDI6IDIxLCB5MjogOSB9LFxuICAgICAgeyB4MTogOSwgeTE6IDIxLCB4MjogOSwgeTI6IDkgfVxuICAgIF1cbiAgfSxcbiAgJ2xpc3QnOiB7XG4gICAgbGluZXM6IFtcbiAgICAgIHsgeDE6IDgsIHkxOiA2LCB4MjogMjEsIHkyOiA2IH0sXG4gICAgICB7IHgxOiA4LCB5MTogMTIsIHgyOiAyMSwgeTI6IDEyIH0sXG4gICAgICB7IHgxOiA4LCB5MTogMTgsIHgyOiAyMSwgeTI6IDE4IH0sXG4gICAgICB7IHgxOiAzLCB5MTogNiwgeDI6IDQsIHkyOiA2IH0sXG4gICAgICB7IHgxOiAzLCB5MTogMTIsIHgyOiA0LCB5MjogMTIgfSxcbiAgICAgIHsgeDE6IDMsIHkxOiAxOCwgeDI6IDQsIHkyOiAxOCB9XG4gICAgXVxuICB9LFxuXG4gIC8vIFNlbGVjdGlvbiAvIEN1cnNvclxuICAnY3Vyc29yJzoge1xuICAgIHBhdGhzOiBbJ00zIDNsNy4wNyAxNi45NyAyLjUxLTcuMzkgNy4zOS0yLjUxTDMgM3onXSxcbiAgICBsaW5lczogW3sgeDE6IDEzLCB5MTogMTMsIHgyOiAxOSwgeTI6IDE5IH1dXG4gIH0sXG4gICdtb3VzZS1wb2ludGVyJzoge1xuICAgIHBhdGhzOiBbJ00zIDNsNy4wNyAxNi45NyAyLjUxLTcuMzkgNy4zOS0yLjUxTDMgM3onXSxcbiAgICBsaW5lczogW3sgeDE6IDEzLCB5MTogMTMsIHgyOiAxOSwgeTI6IDE5IH1dXG4gIH0sXG5cbiAgLy8gQWxlcnQgLyBXYXJuaW5nXG4gICd3YXJuaW5nJzoge1xuICAgIHBhdGhzOiBbJ00xMC4yOSAzLjg2TDEuODIgMThhMiAyIDAgMCAwIDEuNzEgM2gxNi45NGEyIDIgMCAwIDAgMS43MS0zTDEzLjcxIDMuODZhMiAyIDAgMCAwLTMuNDIgMHonXSxcbiAgICBsaW5lczogW3sgeDE6IDEyLCB5MTogOSwgeDI6IDEyLCB5MjogMTMgfSwgeyB4MTogMTIsIHkxOiAxNywgeDI6IDEyLjAxLCB5MjogMTcgfV1cbiAgfSxcbiAgJ2FsZXJ0LXRyaWFuZ2xlJzoge1xuICAgIHBhdGhzOiBbJ00xMC4yOSAzLjg2TDEuODIgMThhMiAyIDAgMCAwIDEuNzEgM2gxNi45NGEyIDIgMCAwIDAgMS43MS0zTDEzLjcxIDMuODZhMiAyIDAgMCAwLTMuNDIgMHonXSxcbiAgICBsaW5lczogW3sgeDE6IDEyLCB5MTogOSwgeDI6IDEyLCB5MjogMTMgfSwgeyB4MTogMTIsIHkxOiAxNywgeDI6IDEyLjAxLCB5MjogMTcgfV1cbiAgfSxcblxuICAvLyBBY3Rpb25zXG4gICd1bmRvJzoge1xuICAgIHBhdGhzOiBbJ00zIDd2Nmg2JywgJ00yMSAxN2E5IDkgMCAwIDAtOS05IDkgOSAwIDAgMC02IDIuM0wzIDEzJ11cbiAgfSxcbiAgJ3JlZG8nOiB7XG4gICAgcGF0aHM6IFsnTTIxIDd2NmgtNicsICdNMyAxN2E5IDkgMCAwIDEgOS05IDkgOSAwIDAgMSA2IDIuM0wyMSAxMyddXG4gIH0sXG4gICdyZWZyZXNoJzoge1xuICAgIHBhdGhzOiBbXG4gICAgICAnTTIzIDR2NmgtNicsXG4gICAgICAnTTEgMjB2LTZoNicsXG4gICAgICAnTTMuNTEgOWE5IDkgMCAwIDEgMTQuODUtMy4zNkwyMyAxME0xIDE0bDQuNjQgNC4zNkE5IDkgMCAwIDAgMjAuNDkgMTUnXG4gICAgXVxuICB9LFxuICAnc2F2ZSc6IHtcbiAgICBwYXRoczogW1xuICAgICAgJ00xOSAyMUg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDExbDUgNXYxMWEyIDIgMCAwIDEtMiAyeicsXG4gICAgICAnTTE3IDIxdi04SDd2OCcsXG4gICAgICAnTTcgM3Y1aDgnXG4gICAgXVxuICB9LFxuICAnZG93bmxvYWQnOiB7XG4gICAgcGF0aHM6IFtcbiAgICAgICdNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNCcsXG4gICAgICAnTTcgMTBsNSA1IDUtNScsXG4gICAgICAnTTEyIDE1VjMnXG4gICAgXVxuICB9LFxuICAnZXhwb3J0Jzoge1xuICAgIHBhdGhzOiBbXG4gICAgICAnTTIxIDE1djRhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJ2LTQnLFxuICAgICAgJ003IDEwbDUgNSA1LTUnLFxuICAgICAgJ00xMiAxNVYzJ1xuICAgIF1cbiAgfSxcbiAgJ3NlYXJjaCc6IHtcbiAgICBjaXJjbGVzOiBbeyBjeDogMTEsIGN5OiAxMSwgcjogOCB9XSxcbiAgICBsaW5lczogW3sgeDE6IDIxLCB5MTogMjEsIHgyOiAxNi42NSwgeTI6IDE2LjY1IH1dXG4gIH0sXG4gICdmaWx0ZXInOiB7XG4gICAgcG9seWxpbmVzOiBbJzIyIDMgMiAzIDEwIDEyLjQ2IDEwIDE5IDE0IDIxIDE0IDEyLjQ2IDIyIDMnXVxuICB9LFxuICAnY29weSc6IHtcbiAgICByZWN0czogW3sgeDogOSwgeTogOSwgd2lkdGg6IDEzLCBoZWlnaHQ6IDEzLCByeDogMiB9XSxcbiAgICBwYXRoczogWydNNSAxNUg0YTIgMiAwIDAgMS0yLTJWNGEyIDIgMCAwIDEgMi0yaDlhMiAyIDAgMCAxIDIgMnYxJ11cbiAgfSxcbiAgJ2R1cGxpY2F0ZSc6IHtcbiAgICByZWN0czogW3sgeDogOSwgeTogOSwgd2lkdGg6IDEzLCBoZWlnaHQ6IDEzLCByeDogMiB9XSxcbiAgICBwYXRoczogWydNNSAxNUg0YTIgMiAwIDAgMS0yLTJWNGEyIDIgMCAwIDEgMi0yaDlhMiAyIDAgMCAxIDIgMnYxJ11cbiAgfSxcbiAgJ3RyYXNoJzoge1xuICAgIHBhdGhzOiBbXG4gICAgICAnTTMgNmgxOCcsXG4gICAgICAnTTE5IDZ2MTRhMiAyIDAgMCAxLTIgMkg3YTIgMiAwIDAgMS0yLTJWNm0zIDBWNGEyIDIgMCAwIDEgMi0yaDRhMiAyIDAgMCAxIDIgMnYyJyxcbiAgICAgICdNMTAgMTF2NicsXG4gICAgICAnTTE0IDExdjYnXG4gICAgXVxuICB9LFxuICAnZGVsZXRlJzoge1xuICAgIHBhdGhzOiBbXG4gICAgICAnTTMgNmgxOCcsXG4gICAgICAnTTE5IDZ2MTRhMiAyIDAgMCAxLTIgMkg3YTIgMiAwIDAgMS0yLTJWNm0zIDBWNGEyIDIgMCAwIDEgMi0yaDRhMiAyIDAgMCAxIDIgMnYyJ1xuICAgIF1cbiAgfSxcbiAgJ3NldHRpbmdzJzoge1xuICAgIGNpcmNsZXM6IFt7IGN4OiAxMiwgY3k6IDEyLCByOiAzIH1dLFxuICAgIHBhdGhzOiBbXG4gICAgICAnTTE5LjQgMTVhMS42NSAxLjY1IDAgMCAwIC4zMyAxLjgybC4wNi4wNmEyIDIgMCAwIDEgMCAyLjgzIDIgMiAwIDAgMS0yLjgzIDBsLS4wNi0uMDZhMS42NSAxLjY1IDAgMCAwLTEuODItLjMzIDEuNjUgMS42NSAwIDAgMC0xIDEuNTFWMjFhMiAyIDAgMCAxLTIgMiAyIDIgMCAwIDEtMi0ydi0uMDlBMS42NSAxLjY1IDAgMCAwIDkgMTkuNGExLjY1IDEuNjUgMCAwIDAtMS44Mi4zM2wtLjA2LjA2YTIgMiAwIDAgMS0yLjgzIDAgMiAyIDAgMCAxIDAtMi44M2wuMDYtLjA2YTEuNjUgMS42NSAwIDAgMCAuMzMtMS44MiAxLjY1IDEuNjUgMCAwIDAtMS41MS0xSDNhMiAyIDAgMCAxLTItMiAyIDIgMCAwIDEgMi0yaC4wOUExLjY1IDEuNjUgMCAwIDAgNC42IDlhMS42NSAxLjY1IDAgMCAwLS4zMy0xLjgybC0uMDYtLjA2YTIgMiAwIDAgMSAwLTIuODMgMiAyIDAgMCAxIDIuODMgMGwuMDYuMDZhMS42NSAxLjY1IDAgMCAwIDEuODIuMzNIOWExLjY1IDEuNjUgMCAwIDAgMS0xLjUxVjNhMiAyIDAgMCAxIDItMiAyIDIgMCAwIDEgMiAydi4wOWExLjY1IDEuNjUgMCAwIDAgMSAxLjUxIDEuNjUgMS42NSAwIDAgMCAxLjgyLS4zM2wuMDYtLjA2YTIgMiAwIDAgMSAyLjgzIDAgMiAyIDAgMCAxIDAgMi44M2wtLjA2LjA2YTEuNjUgMS42NSAwIDAgMC0uMzMgMS44MlY5YTEuNjUgMS42NSAwIDAgMCAxLjUxIDFIMjFhMiAyIDAgMCAxIDIgMiAyIDIgMCAwIDEtMiAyaC0uMDlhMS42NSAxLjY1IDAgMCAwLTEuNTEgMXonXG4gICAgXVxuICB9LFxuICAnZ2Vhcic6IHtcbiAgICBjaXJjbGVzOiBbeyBjeDogMTIsIGN5OiAxMiwgcjogMyB9XSxcbiAgICBwYXRoczogW1xuICAgICAgJ00xOS40IDE1YTEuNjUgMS42NSAwIDAgMCAuMzMgMS44MmwuMDYuMDZhMiAyIDAgMCAxIDAgMi44MyAyIDIgMCAwIDEtMi44MyAwbC0uMDYtLjA2YTEuNjUgMS42NSAwIDAgMC0xLjgyLS4zMyAxLjY1IDEuNjUgMCAwIDAtMSAxLjUxVjIxYTIgMiAwIDAgMS0yIDIgMiAyIDAgMCAxLTItMnYtLjA5QTEuNjUgMS42NSAwIDAgMCA5IDE5LjRhMS42NSAxLjY1IDAgMCAwLTEuODIuMzNsLS4wNi4wNmEyIDIgMCAwIDEtMi44MyAwIDIgMiAwIDAgMSAwLTIuODNsLjA2LS4wNmExLjY1IDEuNjUgMCAwIDAgLjMzLTEuODIgMS42NSAxLjY1IDAgMCAwLTEuNTEtMUgzYTIgMiAwIDAgMS0yLTIgMiAyIDAgMCAxIDItMmguMDlBMS42NSAxLjY1IDAgMCAwIDQuNiA5YTEuNjUgMS42NSAwIDAgMC0uMzMtMS44MmwtLjA2LS4wNmEyIDIgMCAwIDEgMC0yLjgzIDIgMiAwIDAgMSAyLjgzIDBsLjA2LjA2YTEuNjUgMS42NSAwIDAgMCAxLjgyLjMzSDlhMS42NSAxLjY1IDAgMCAwIDEtMS41MVYzYTIgMiAwIDAgMSAyLTIgMiAyIDAgMCAxIDIgMnYuMDlhMS42NSAxLjY1IDAgMCAwIDEgMS41MSAxLjY1IDEuNjUgMCAwIDAgMS44Mi0uMzNsLjA2LS4wNmEyIDIgMCAwIDEgMi44MyAwIDIgMiAwIDAgMSAwIDIuODNsLS4wNi4wNmExLjY1IDEuNjUgMCAwIDAtLjMzIDEuODJWOWExLjY1IDEuNjUgMCAwIDAgMS41MSAxSDIxYTIgMiAwIDAgMSAyIDIgMiAyIDAgMCAxLTIgMmgtLjA5YTEuNjUgMS42NSAwIDAgMC0xLjUxIDF6J1xuICAgIF1cbiAgfSxcbiAgJ2V5ZSc6IHtcbiAgICBwYXRoczogWydNMSAxMnM0LTggMTEtOCAxMSA4IDExIDgtNCA4LTExIDgtMTEtOC0xMS04eiddLFxuICAgIGNpcmNsZXM6IFt7IGN4OiAxMiwgY3k6IDEyLCByOiAzIH1dXG4gIH0sXG4gICdwcmV2aWV3Jzoge1xuICAgIHBhdGhzOiBbJ00xIDEyczQtOCAxMS04IDExIDggMTEgOC00IDgtMTEgOC0xMS04LTExLTh6J10sXG4gICAgY2lyY2xlczogW3sgY3g6IDEyLCBjeTogMTIsIHI6IDMgfV1cbiAgfSxcbiAgJ2NvZGUnOiB7XG4gICAgcG9seWxpbmVzOiBbJzE2IDE4IDIyIDEyIDE2IDYnLCAnOCA2IDIgMTIgOCAxOCddXG4gIH0sXG4gICdqc29uJzoge1xuICAgIHBvbHlsaW5lczogWycxNiAxOCAyMiAxMiAxNiA2JywgJzggNiAyIDEyIDggMTgnXVxuICB9LFxuXG4gIC8vIE5hdmlnYXRpb24gJiBEaXJlY3Rpb25cbiAgJ2Fycm93LWxlZnQnOiB7XG4gICAgbGluZXM6IFt7IHgxOiAxOSwgeTE6IDEyLCB4MjogNSwgeTI6IDEyIH1dLFxuICAgIHBvbHlsaW5lczogWycxMiAxOSA1IDEyIDEyIDUnXVxuICB9LFxuICAnYXJyb3ctcmlnaHQnOiB7XG4gICAgbGluZXM6IFt7IHgxOiA1LCB5MTogMTIsIHgyOiAxOSwgeTI6IDEyIH1dLFxuICAgIHBvbHlsaW5lczogWycxMiA1IDE5IDEyIDEyIDE5J11cbiAgfSxcbiAgJ2Fycm93LXVwJzoge1xuICAgIGxpbmVzOiBbeyB4MTogMTIsIHkxOiAxOSwgeDI6IDEyLCB5MjogNSB9XSxcbiAgICBwb2x5bGluZXM6IFsnNSAxMiAxMiA1IDE5IDEyJ11cbiAgfSxcbiAgJ2Fycm93LWRvd24nOiB7XG4gICAgbGluZXM6IFt7IHgxOiAxMiwgeTE6IDUsIHgyOiAxMiwgeTI6IDE5IH1dLFxuICAgIHBvbHlsaW5lczogWycxOSAxMiAxMiAxOSA1IDEyJ11cbiAgfSxcbiAgJ2Nvcm5lci1kb3duLXJpZ2h0Jzoge1xuICAgIHBvbHlsaW5lczogWycxNSAxMCAyMCAxNSAxNSAyMCddLFxuICAgIHBhdGhzOiBbJ000IDR2N2E0IDQgMCAwIDAgNCA0aDEyJ11cbiAgfSxcbiAgJ25ldy1yb3cnOiB7XG4gICAgcG9seWxpbmVzOiBbJzE1IDEwIDIwIDE1IDE1IDIwJ10sXG4gICAgcGF0aHM6IFsnTTQgNHY3YTQgNCAwIDAgMCA0IDRoMTInXVxuICB9LFxuXG4gIC8vIEdlbmVyYWwgU3RhdHVzICYgQ29tbW9uXG4gICdjaGVjayc6IHtcbiAgICBwb2x5bGluZXM6IFsnMjAgNiA5IDE3IDQgMTInXVxuICB9LFxuICAnY2xvc2UnOiB7XG4gICAgbGluZXM6IFtcbiAgICAgIHsgeDE6IDE4LCB5MTogNiwgeDI6IDYsIHkyOiAxOCB9LFxuICAgICAgeyB4MTogNiwgeTE6IDYsIHgyOiAxOCwgeTI6IDE4IH1cbiAgICBdXG4gIH0sXG4gICd4Jzoge1xuICAgIGxpbmVzOiBbXG4gICAgICB7IHgxOiAxOCwgeTE6IDYsIHgyOiA2LCB5MjogMTggfSxcbiAgICAgIHsgeDE6IDYsIHkxOiA2LCB4MjogMTgsIHkyOiAxOCB9XG4gICAgXVxuICB9LFxuICAnY3Jvc3MnOiB7XG4gICAgbGluZXM6IFtcbiAgICAgIHsgeDE6IDE4LCB5MTogNiwgeDI6IDYsIHkyOiAxOCB9LFxuICAgICAgeyB4MTogNiwgeTE6IDYsIHgyOiAxOCwgeTI6IDE4IH1cbiAgICBdXG4gIH0sXG4gICdwbHVzJzoge1xuICAgIGxpbmVzOiBbXG4gICAgICB7IHgxOiAxMiwgeTE6IDUsIHgyOiAxMiwgeTI6IDE5IH0sXG4gICAgICB7IHgxOiA1LCB5MTogMTIsIHgyOiAxOSwgeTI6IDEyIH1cbiAgICBdXG4gIH0sXG4gICdtaW51cyc6IHtcbiAgICBsaW5lczogW3sgeDE6IDUsIHkxOiAxMiwgeDI6IDE5LCB5MjogMTIgfV1cbiAgfSxcbiAgJ2RvbGxhcic6IHtcbiAgICBsaW5lczogW3sgeDE6IDEyLCB5MTogMSwgeDI6IDEyLCB5MjogMjMgfV0sXG4gICAgcGF0aHM6IFsnTTE3IDVIOS41YTMuNSAzLjUgMCAwIDAgMCA3aDVhMy41IDMuNSAwIDAgMSAwIDdINiddXG4gIH0sXG4gICdjbG9jayc6IHtcbiAgICBjaXJjbGVzOiBbeyBjeDogMTIsIGN5OiAxMiwgcjogMTAgfV0sXG4gICAgcG9seWxpbmVzOiBbJzEyIDYgMTIgMTIgMTYgMTQnXVxuICB9LFxuICAnYm94Jzoge1xuICAgIHBhdGhzOiBbXG4gICAgICAnTTIxIDE2VjhhMiAyIDAgMCAwLTEtMS43M2wtNy00YTIgMiAwIDAgMC0yIDBsLTcgNEEyIDIgMCAwIDAgMyA4djhhMiAyIDAgMCAwIDEgMS43M2w3IDRhMiAyIDAgMCAwIDIgMGw3LTRBMiAyIDAgMCAwIDIxIDE2eicsXG4gICAgICAnTTMuMjcgNi45NkwxMiAxMi4wMWw4LjczLTUuMDUnLFxuICAgICAgJ00xMiAyMi4wOFYxMidcbiAgICBdXG4gIH0sXG4gICdsaWdodG5pbmcnOiB7XG4gICAgcG9seWxpbmVzOiBbJzEzIDIgMyAxNCAxMiAxNCAxMSAyMiAyMSAxMCAxMiAxMCAxMyAyJ11cbiAgfSxcbiAgJ2xpbmsnOiB7XG4gICAgcGF0aHM6IFtcbiAgICAgICdNMTAgMTNhNSA1IDAgMCAwIDcuNTQuNTRsMy0zYTUgNSAwIDAgMC03LjA3LTcuMDdsLTEuNzIgMS43MScsXG4gICAgICAnTTE0IDExYTUgNSAwIDAgMC03LjU0LS41NGwtMyAzYTUgNSAwIDAgMCA3LjA3IDcuMDdsMS43MS0xLjcxJ1xuICAgIF1cbiAgfSxcbiAgJ3VzZXInOiB7XG4gICAgcGF0aHM6IFsnTTIwIDIxdi0yYTQgNCAwIDAgMC00LTRIOGE0IDQgMCAwIDAtNCA0djInXSxcbiAgICBjaXJjbGVzOiBbeyBjeDogMTIsIGN5OiA3LCByOiA0IH1dXG4gIH0sXG4gICdzbGlkZXJzJzoge1xuICAgIGxpbmVzOiBbXG4gICAgICB7IHgxOiA0LCB5MTogMjEsIHgyOiA0LCB5MjogMTQgfSxcbiAgICAgIHsgeDE6IDQsIHkxOiAxMCwgeDI6IDQsIHkyOiAzIH0sXG4gICAgICB7IHgxOiAxMiwgeTE6IDIxLCB4MjogMTIsIHkyOiAxMiB9LFxuICAgICAgeyB4MTogMTIsIHkxOiA4LCB4MjogMTIsIHkyOiAzIH0sXG4gICAgICB7IHgxOiAyMCwgeTE6IDIxLCB4MjogMjAsIHkyOiAxNiB9LFxuICAgICAgeyB4MTogMjAsIHkxOiAxMiwgeDI6IDIwLCB5MjogMyB9LFxuICAgICAgeyB4MTogMSwgeTE6IDE0LCB4MjogNywgeTI6IDE0IH0sXG4gICAgICB7IHgxOiA5LCB5MTogOCwgeDI6IDE1LCB5MjogOCB9LFxuICAgICAgeyB4MTogMTcsIHkxOiAxNiwgeDI6IDIzLCB5MjogMTYgfVxuICAgIF1cbiAgfSxcbiAgJ3NwYXJrbGVzJzoge1xuICAgIHBhdGhzOiBbXG4gICAgICAnTTEyIDN2M20wIDEydjNNMyAxMmgzbTEyIDBoM001LjYgNS42bDIuMSAyLjFtOC42IDguNmwyLjEgMi4xTTUuNiAxOC40bDIuMS0yLjFtOC42LTguNmwyLjEtMi4xJ1xuICAgIF1cbiAgfSxcbiAgJ2dsb2JlJzoge1xuICAgIGNpcmNsZXM6IFt7IGN4OiAxMiwgY3k6IDEyLCByOiAxMCB9XSxcbiAgICBwYXRoczogW1xuICAgICAgJ00yIDEyaDIwJyxcbiAgICAgICdNMTIgMmExNS4zIDE1LjMgMCAwIDEgNCAxMCAxNS4zIDE1LjMgMCAwIDEtNCAxMCAxNS4zIDE1LjMgMCAwIDEtNC0xMCAxNS4zIDE1LjMgMCAwIDEgNC0xMHonXG4gICAgXVxuICB9LFxuICAnYXBpJzoge1xuICAgIHBhdGhzOiBbXG4gICAgICAnTTEwIDEzYTUgNSAwIDAgMCA3LjU0LjU0bDMtM2E1IDUgMCAwIDAtNy4wNy03LjA3bC0xLjcyIDEuNzEnLFxuICAgICAgJ00xNCAxMWE1IDUgMCAwIDAtNy41NC0uNTRsLTMgM2E1IDUgMCAwIDAgNy4wNyA3LjA3bDEuNzEtMS43MSdcbiAgICBdLFxuICAgIGxpbmVzOiBbXG4gICAgICB7IHgxOiAyLCB5MTogMTIsIHgyOiA2LCB5MjogMTIgfSxcbiAgICAgIHsgeDE6IDE4LCB5MTogMTIsIHgyOiAyMiwgeTI6IDEyIH1cbiAgICBdXG4gIH0sXG4gICdncmlwLXZlcnRpY2FsJzoge1xuICAgIGNpcmNsZXM6IFtcbiAgICAgIHsgY3g6IDksIGN5OiA2LCByOiAxLjUgfSxcbiAgICAgIHsgY3g6IDksIGN5OiAxMiwgcjogMS41IH0sXG4gICAgICB7IGN4OiA5LCBjeTogMTgsIHI6IDEuNSB9LFxuICAgICAgeyBjeDogMTUsIGN5OiA2LCByOiAxLjUgfSxcbiAgICAgIHsgY3g6IDE1LCBjeTogMTIsIHI6IDEuNSB9LFxuICAgICAgeyBjeDogMTUsIGN5OiAxOCwgcjogMS41IH1cbiAgICBdXG4gIH1cbn07XG4iXX0=
|
|
@@ -17,6 +17,7 @@ import { registerBuiltinComponents } from './primitives/register-builtins';
|
|
|
17
17
|
import { normalizeBwaysConfig, } from './core/config/bways-report-config';
|
|
18
18
|
/** Default configuration values. */
|
|
19
19
|
const DEFAULT_CONFIG = {
|
|
20
|
+
apiBaseUrl: '/api/reporting',
|
|
20
21
|
defaultPageSize: 25,
|
|
21
22
|
dateFormat: 'dd/MM/yyyy',
|
|
22
23
|
enableDesigner: false,
|
|
@@ -120,9 +121,7 @@ export const withMockAdapters = withLocalStorage;
|
|
|
120
121
|
function isBwaysReportConfig(arg) {
|
|
121
122
|
return (typeof arg === 'object' &&
|
|
122
123
|
arg !== null &&
|
|
123
|
-
'spEndpoint' in arg
|
|
124
|
-
'tablesEndpoint' in arg &&
|
|
125
|
-
'executeEndpoint' in arg);
|
|
124
|
+
['spEndpoint', 'tablesEndpoint', 'executeEndpoint', 'lookupEndpoint', 'reportsEndpoint', 'apisEndpoint', 'apiEndpoints', 'components', 'grid', 'chart', 'sessionProvider'].some(key => key in arg));
|
|
126
125
|
}
|
|
127
126
|
/**
|
|
128
127
|
* Provides the BWays-Report library to the Angular application.
|
|
@@ -169,6 +168,8 @@ function provideBwaysReportFromSimpleConfig(config) {
|
|
|
169
168
|
defaultPageSize: normalized.defaultPageSize,
|
|
170
169
|
dateFormat: normalized.dateFormat,
|
|
171
170
|
lookupTimeoutMs: normalized.lookupTimeoutMs,
|
|
171
|
+
executionTimeoutMs: normalized.executionTimeoutMs,
|
|
172
|
+
trustedApiOrigins: normalized.trustedApiOrigins,
|
|
172
173
|
enableDesigner: true,
|
|
173
174
|
allowedCategories: normalized.allowedCategories,
|
|
174
175
|
autoParameter: normalized.autoParameter,
|
|
@@ -212,12 +213,10 @@ function provideBwaysReportFromSimpleConfig(config) {
|
|
|
212
213
|
{ provide: ReportDataSourceAdapter, useClass: EndpointDataSourceAdapter },
|
|
213
214
|
{ provide: ReportLookupAdapter, useClass: EndpointLookupAdapter },
|
|
214
215
|
{ provide: MasterDataProvider, useClass: EndpointMasterDataAdapter },
|
|
215
|
-
//
|
|
216
|
+
// Database persistence is the default, using the reporting service reports route.
|
|
216
217
|
{
|
|
217
218
|
provide: ReportPersistenceAdapter,
|
|
218
|
-
useClass:
|
|
219
|
-
? EndpointPersistenceAdapter
|
|
220
|
-
: LocalStorageReportPersistenceAdapter,
|
|
219
|
+
useClass: EndpointPersistenceAdapter,
|
|
221
220
|
},
|
|
222
221
|
];
|
|
223
222
|
// Grid / Chart overrides
|
|
@@ -286,29 +285,10 @@ function provideBwaysReportFromOptions(options, features) {
|
|
|
286
285
|
}
|
|
287
286
|
// Unified merged configuration
|
|
288
287
|
providers.push({ provide: REPORTING_CONFIG, useValue: config });
|
|
289
|
-
//
|
|
290
|
-
if (!hasHttpFeature && !hasLocalFeature
|
|
288
|
+
// Offline adapters require an explicit feature; normal saves always reach the backend.
|
|
289
|
+
if (!hasHttpFeature && !hasLocalFeature) {
|
|
291
290
|
providers.push({ provide: ReportDataSourceAdapter, useClass: options.dataSourceAdapter ?? HttpReportDataSourceAdapter }, { provide: ReportPersistenceAdapter, useClass: options.persistenceAdapter ?? HttpReportPersistenceAdapter }, { provide: MasterDataProvider, useClass: options.masterDataProvider ?? HttpMasterDataAdapter }, { provide: ReportSchemaDiscoveryAdapter, useClass: options.schemaDiscoveryAdapter ?? HttpReportSchemaDiscoveryAdapter }, { provide: ReportLookupAdapter, useClass: options.lookupAdapter ?? HttpReportLookupAdapter });
|
|
292
291
|
}
|
|
293
|
-
else if (!hasHttpFeature && !hasLocalFeature) {
|
|
294
|
-
// If no backend apiBaseUrl and no feature passed, fallback to zero-backend sandbox mode
|
|
295
|
-
providers.push({
|
|
296
|
-
provide: ReportPersistenceAdapter,
|
|
297
|
-
useClass: options.persistenceAdapter ?? LocalStorageReportPersistenceAdapter,
|
|
298
|
-
}, {
|
|
299
|
-
provide: ReportDataSourceAdapter,
|
|
300
|
-
useClass: options.dataSourceAdapter ?? MockReportDataSourceAdapter,
|
|
301
|
-
}, {
|
|
302
|
-
provide: ReportSchemaDiscoveryAdapter,
|
|
303
|
-
useClass: options.schemaDiscoveryAdapter ?? HttpReportSchemaDiscoveryAdapter,
|
|
304
|
-
}, {
|
|
305
|
-
provide: ReportLookupAdapter,
|
|
306
|
-
useClass: options.lookupAdapter ?? HttpReportLookupAdapter,
|
|
307
|
-
}, {
|
|
308
|
-
provide: MasterDataProvider,
|
|
309
|
-
useClass: options.masterDataProvider ?? HttpMasterDataAdapter,
|
|
310
|
-
});
|
|
311
|
-
}
|
|
312
292
|
// Component overrides
|
|
313
293
|
if (options.gridComponent) {
|
|
314
294
|
providers.push({ provide: GRID_COMPONENT, useValue: options.gridComponent });
|
|
@@ -357,4 +337,4 @@ export const provideBwaysReporting = provideBwaysReport;
|
|
|
357
337
|
export const provideReporting = provideBwaysReport;
|
|
358
338
|
/** Semantic alias for BWays report providers */
|
|
359
339
|
export const bwaysReportProviders = provideBwaysReport;
|
|
360
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1yZXBvcnRpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9wcm92aWRlLXJlcG9ydGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixNQUFNLEVBQ04sd0JBQXdCLEdBR3pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxlQUFlLEVBQ2YsY0FBYyxFQUNkLGdCQUFnQixHQUVqQixNQUFNLHNDQUFzQyxDQUFDO0FBQzlDLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsdUJBQXVCLEdBR3hCLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdkYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDbEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDL0YsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDakcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDOUUsT0FBTyxFQUNMLDJCQUEyQixFQUMzQiw0QkFBNEIsRUFDNUIsdUJBQXVCLEVBQ3ZCLGdDQUFnQyxFQUNoQyxxQkFBcUIsRUFDckIsb0NBQW9DLEVBQ3BDLDJCQUEyQixFQUMzQiw4QkFBOEIsRUFDOUIseUJBQXlCLEVBQ3pCLHFCQUFxQixFQUNyQiwwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLHNCQUFzQixHQUN2QixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNFLE9BQU8sRUFFTCxvQkFB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Q3hGLENBQUM7SUFFRCxPQUFPLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFFRCxtQ0FBbUM7QUFDbkMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsa0JBQWtCLENBQUM7QUFFeEQsdURBQXVEO0FBQ3ZELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLGtCQUFrQixDQUFDO0FBRW5ELGdEQUFnRDtBQUNoRCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVwb3J0aW5nIGxpYnJhcnkgcm9vdCBwcm92aWRlciBmdW5jdGlvbiBhbmQgZmVhdHVyZSBmdW5jdGlvbnMuXG4gKlxuICogQ29uZmlndXJlcyB0aGUgbGlicmFyeSwgaXRzIHRva2VucywgYW5kIHJlZ2lzdGVycyBidWlsdC1pbiBwcmltaXRpdmVzLlxuICovXG5cbmltcG9ydCB7XG4gIEVOVklST05NRU5UX0lOSVRJQUxJWkVSLFxuICBFbnZpcm9ubWVudFByb3ZpZGVycyxcbiAgaW5qZWN0LFxuICBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMsXG4gIFByb3ZpZGVyLFxuICBUeXBlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENIQVJUX0NPTVBPTkVOVCxcbiAgR1JJRF9DT01QT05FTlQsXG4gIFJFUE9SVElOR19DT05GSUcsXG4gIFJlcG9ydGluZ0NvbmZpZyxcbn0gZnJvbSAnLi9jb3JlL3Rva2Vucy9yZXBvcnRpbmctY29uZmlnLnRva2VuJztcbmltcG9ydCB7XG4gIFJFUE9SVF9TRVNTSU9OX0NPTlRFWFQsXG4gIFJFUE9SVF9TRVNTSU9OX1BST1ZJREVSLFxuICBTZXNzaW9uQ29udGV4dFByb3ZpZGVyLFxuICBTZXNzaW9uQ29udGV4dFNvdXJjZSxcbn0gZnJvbSAnLi9jb3JlL3Rva2Vucy9zZXNzaW9uLWNvbnRleHQudG9rZW4nO1xuaW1wb3J0IHsgUmVwb3J0RGF0YVNvdXJjZUFkYXB0ZXIgfSBmcm9tICcuL2RhdGEtYWNjZXNzL2NvbnRyYWN0cy9kYXRhLXNvdXJjZS5jb250cmFjdCc7XG5pbXBvcnQgeyBNYXN0ZXJEYXRhUHJvdmlkZXIgfSBmcm9tICcuL2RhdGEtYWNjZXNzL2NvbnRyYWN0cy9tYXN0ZXItZGF0YS5wcm92aWRlcic7XG5pbXBvcnQgeyBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIgfSBmcm9tICcuL2RhdGEtYWNjZXNzL2NvbnRyYWN0cy9yZXBvcnQtcGVyc2lzdGVuY2UuY29udHJhY3QnO1xuaW1wb3J0IHsgUmVwb3J0U2NoZW1hRGlzY292ZXJ5QWRhcHRlciB9IGZyb20gJy4vZGF0YS1hY2Nlc3MvY29udHJhY3RzL3NjaGVtYS1kaXNjb3ZlcnkuY29udHJhY3QnO1xuaW1wb3J0IHsgUmVwb3J0TG9va3VwQWRhcHRlciB9IGZyb20gJy4vZGF0YS1hY2Nlc3MvY29udHJhY3RzL2xvb2t1cC5jb250cmFjdCc7XG5pbXBvcnQge1xuICBIdHRwUmVwb3J0RGF0YVNvdXJjZUFkYXB0ZXIsXG4gIEh0dHBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIsXG4gIEh0dHBSZXBvcnRMb29rdXBBZGFwdGVyLFxuICBIdHRwUmVwb3J0U2NoZW1hRGlzY292ZXJ5QWRhcHRlcixcbiAgSHR0cE1hc3RlckRhdGFBZGFwdGVyLFxuICBMb2NhbFN0b3JhZ2VSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIsXG4gIE1vY2tSZXBvcnREYXRhU291cmNlQWRhcHRlcixcbiAgRW5kcG9pbnRTY2hlbWFEaXNjb3ZlcnlBZGFwdGVyLFxuICBFbmRwb2ludERhdGFTb3VyY2VBZGFwdGVyLFxuICBFbmRwb2ludExvb2t1cEFkYXB0ZXIsXG4gIEVuZHBvaW50UGVyc2lzdGVuY2VBZGFwdGVyLFxuICBFbmRwb2ludE1hc3RlckRhdGFBZGFwdGVyLFxuICBCV0FZU19SRVBPUlRfRU5EUE9JTlRTLFxufSBmcm9tICcuL2RhdGEtYWNjZXNzL2FkYXB0ZXJzJztcbmltcG9ydCB7IENvbXBvbmVudFJlZ2lzdHJ5IH0gZnJvbSAnLi9jb3JlL3JlZ2lzdHJ5L2NvbXBvbmVudC1yZWdpc3RyeSc7XG5pbXBvcnQgeyByZWdpc3RlckJ1aWx0aW5Db21wb25lbnRzIH0gZnJvbSAnLi9wcmltaXRpdmVzL3JlZ2lzdGVyLWJ1aWx0aW5zJztcbmltcG9ydCB7XG4gIEJ3YXlzUmVwb3J0Q29uZmlnLFxuICBub3JtYWxpemVCd2F5c0NvbmZpZyxcbn0gZnJvbSAnLi9jb3JlL2NvbmZpZy9id2F5cy1yZXBvcnQtY29uZmlnJztcblxuLyoqIERlZmF1bHQgY29uZmlndXJhdGlvbiB2YWx1ZXMuICovXG5jb25zdCBERUZBVUxUX0NPTkZJRzogUmVwb3J0aW5nQ29uZmlnID0ge1xuICBkZWZhdWx0UGFnZVNpemU6IDI1LFxuICBkYXRlRm9ybWF0OiAnZGQvTU0veXl5eScsXG4gIGVuYWJsZURlc2lnbmVyOiBmYWxzZSxcbiAgc2NoZW1hVmVyc2lvbjogMSxcbiAgbG9va3VwVGltZW91dE1zOiAzMDAwMDAsXG59O1xuXG4vKipcbiAqIEtpbmRzIG9mIHJlcG9ydGluZyBmZWF0dXJlcyBhdmFpbGFibGUgaW4gYHByb3ZpZGVCd2F5c1JlcG9ydGAuXG4gKi9cbmV4cG9ydCBlbnVtIFJlcG9ydGluZ0ZlYXR1cmVLaW5kIHtcbiAgSHR0cEFkYXB0ZXJzID0gMCxcbiAgTG9jYWxTdG9yYWdlID0gMSxcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgZmVhdHVyZSB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gYHByb3ZpZGVCd2F5c1JlcG9ydCguLi4pYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRpbmdGZWF0dXJlPEtpbmRUIGV4dGVuZHMgUmVwb3J0aW5nRmVhdHVyZUtpbmQgPSBSZXBvcnRpbmdGZWF0dXJlS2luZD4ge1xuICDJtWtpbmQ6IEtpbmRUO1xuICDJtWNvbmZpZz86IFBhcnRpYWw8UmVwb3J0aW5nQ29uZmlnPjtcbiAgybVwcm92aWRlcnM6IFByb3ZpZGVyW107XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY29uZmlndXJpbmcgYnVpbHQtaW4gSFRUUCBhZGFwdGVycyB2aWEgYHdpdGhIdHRwQWRhcHRlcnMoLi4uKWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cEFkYXB0ZXJzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgYmFzZSBVUkwgZm9yIHRoZSBiYWNrZW5kIHJlcG9ydGluZyBSRVNUIEFQSSBlbmRwb2ludHMuXG4gICAqIEBleGFtcGxlICdodHRwOi8vbG9jYWxob3N0OjMwMDAvYXBpL3JlcG9ydGluZydcbiAgICovXG4gIGFwaUJhc2VVcmw6IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgY3VzdG9tIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciBkYXRhYmFzZSBsb29rdXAgcXVlcmllcy5cbiAgICogRGVmYXVsdHMgdG8gMzAwMDAwbXMgKDUgbWludXRlcykuXG4gICAqL1xuICBsb29rdXBUaW1lb3V0TXM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQ29uZmlndXJlcyB0aGUgYnVpbHQtaW4gSFRUUCBhZGFwdGVycyBmb3IgYmFja2VuZCBleGVjdXRpb24sIHBlcnNpc3RlbmNlLFxuICogc2NoZW1hIGRpc2NvdmVyeSwgbG9va3VwLCBhbmQgbWFzdGVyIGRhdGEgcXVlcmllcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogcHJvdmlkZVJlcG9ydGluZyhcbiAqICAgeyBkZWZhdWx0UGFnZVNpemU6IDUwIH0sXG4gKiAgIHdpdGhIdHRwQWRhcHRlcnMoeyBhcGlCYXNlVXJsOiAnaHR0cDovL2xvY2FsaG9zdDozMDAwL2FwaS9yZXBvcnRpbmcnIH0pXG4gKiApXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhIdHRwQWRhcHRlcnMoXG4gIG9wdGlvbnM6IEh0dHBBZGFwdGVyc09wdGlvbnNcbik6IFJlcG9ydGluZ0ZlYXR1cmU8UmVwb3J0aW5nRmVhdHVyZUtpbmQuSHR0cEFkYXB0ZXJzPiB7XG4gIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy5hcGlCYXNlVXJsIHx8IHR5cGVvZiBvcHRpb25zLmFwaUJhc2VVcmwgIT09ICdzdHJpbmcnIHx8IG9wdGlvbnMuYXBpQmFzZVVybC50cmltKCkgPT09ICcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFtid2F5cy1yZXBvcnRdIFwiYXBpQmFzZVVybFwiIGlzIHJlcXVpcmVkIHdoZW4gY29uZmlndXJpbmcgd2l0aEh0dHBBZGFwdGVycygpLiBgICtcbiAgICAgIGBQbGVhc2UgcHJvdmlkZSBhIHZhbGlkIGJhY2tlbmQgVVJMLCBlLmcuIHdpdGhIdHRwQWRhcHRlcnMoeyBhcGlCYXNlVXJsOiAnaHR0cDovL2xvY2FsaG9zdDozMDAwL2FwaS9yZXBvcnRpbmcnIH0pYFxuICAgICk7XG4gIH1cblxuICBjb25zdCBjbGVhblVybCA9IG9wdGlvbnMuYXBpQmFzZVVybC5yZXBsYWNlKC9cXC8rJC8sICcnKTtcblxuICByZXR1cm4ge1xuICAgIMm1a2luZDogUmVwb3J0aW5nRmVhdHVyZUtpbmQuSHR0cEFkYXB0ZXJzLFxuICAgIMm1Y29uZmlnOiB7XG4gICAgICBhcGlCYXNlVXJsOiBjbGVhblVybCxcbiAgICAgIC4uLihvcHRpb25zLmxvb2t1cFRpbWVvdXRNcyA/IHsgbG9va3VwVGltZW91dE1zOiBvcHRpb25zLmxvb2t1cFRpbWVvdXRNcyB9IDoge30pLFxuICAgIH0sXG4gICAgybVwcm92aWRlcnM6IFtcbiAgICAgIHtcbiAgICAgICAgcHJvdmlkZTogUkVQT1JUSU5HX0NPTkZJRyxcbiAgICAgICAgdXNlVmFsdWU6IHtcbiAgICAgICAgICBhcGlCYXNlVXJsOiBjbGVhblVybCxcbiAgICAgICAgICAuLi4ob3B0aW9ucy5sb29rdXBUaW1lb3V0TXMgPyB7IGxvb2t1cFRpbWVvdXRNczogb3B0aW9ucy5sb29rdXBUaW1lb3V0TXMgfSA6IHt9KSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHByb3ZpZGU6IFJlcG9ydERhdGFTb3VyY2VBZGFwdGVyLFxuICAgICAgICB1c2VDbGFzczogSHR0cFJlcG9ydERhdGFTb3VyY2VBZGFwdGVyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcHJvdmlkZTogUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyLFxuICAgICAgICB1c2VDbGFzczogSHR0cFJlcG9ydFBlcnNpc3RlbmNlQWRhcHRlcixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHByb3ZpZGU6IE1hc3RlckRhdGFQcm92aWRlcixcbiAgICAgICAgdXNlQ2xhc3M6IEh0dHBNYXN0ZXJEYXRhQWRhcHRlcixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHByb3ZpZGU6IFJlcG9ydFNjaGVtYURpc2NvdmVyeUFkYXB0ZXIsXG4gICAgICAgIHVzZUNsYXNzOiBIdHRwUmVwb3J0U2NoZW1hRGlzY292ZXJ5QWRhcHRlcixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHByb3ZpZGU6IFJlcG9ydExvb2t1cEFkYXB0ZXIsXG4gICAgICAgIHVzZUNsYXNzOiBIdHRwUmVwb3J0TG9va3VwQWRhcHRlcixcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcbn1cblxuLyoqXG4gKiBaZXJvLWJhY2tlbmQgc2FuZGJveCBtb2RlIHVzaW5nIGJyb3dzZXIgTG9jYWxTdG9yYWdlIGZvciByZXBvcnQgZGVmaW5pdGlvbnNcbiAqIGFuZCBtb2NrIHJlYWxpc3RpYyBkYXRhc2V0cyBmb3IgcXVlcnkgZXhlY3V0aW9uLlxuICpcbiAqIElkZWFsIGZvciBsb2NhbCBkZXZlbG9wbWVudCwgcHJvdG90eXBpbmcsIGFuZCBvZmZsaW5lIHRlc3Rpbmcgd2l0aG91dCBzcGlubmluZyB1cCBiYWNrZW5kcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogcHJvdmlkZVJlcG9ydGluZyh3aXRoTG9jYWxTdG9yYWdlKCkpXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhMb2NhbFN0b3JhZ2UoKTogUmVwb3J0aW5nRmVhdHVyZTxSZXBvcnRpbmdGZWF0dXJlS2luZC5Mb2NhbFN0b3JhZ2U+IHtcbiAgcmV0dXJuIHtcbiAgICDJtWtpbmQ6IFJlcG9ydGluZ0ZlYXR1cmVLaW5kLkxvY2FsU3RvcmFnZSxcbiAgICDJtXByb3ZpZGVyczogW1xuICAgICAge1xuICAgICAgICBwcm92aWRlOiBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIsXG4gICAgICAgIHVzZUNsYXNzOiBMb2NhbFN0b3JhZ2VSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwcm92aWRlOiBSZXBvcnREYXRhU291cmNlQWRhcHRlcixcbiAgICAgICAgdXNlQ2xhc3M6IE1vY2tSZXBvcnREYXRhU291cmNlQWRhcHRlcixcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcbn1cblxuLyoqIEFsaWFzIGZvciB3aXRoTG9jYWxTdG9yYWdlICovXG5leHBvcnQgY29uc3Qgd2l0aE1vY2tBZGFwdGVycyA9IHdpdGhMb2NhbFN0b3JhZ2U7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBgcHJvdmlkZUJ3YXlzUmVwb3J0KClgIChhbmQgYHByb3ZpZGVSZXBvcnRpbmcoKWApLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb3ZpZGVCd2F5c1JlcG9ydE9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPFJlcG9ydGluZ0NvbmZpZz4ge1xuICAvKipcbiAgICogVGhlIEFuZ3VsYXIgY29tcG9uZW50IHRvIHVzZSBmb3IgcmVuZGVyaW5nIHJlcG9ydCByZXN1bHQgZ3JpZHMuXG4gICAqIEJXYXlzLWdyaWQgaXMgdGhlIHJlY29tbWVuZGVkIGRlZmF1bHQuIEhvc3QgY2FuIHByb3ZpZGUgYW55IGdyaWQgY29tcG9uZW50LlxuICAgKi9cbiAgZ3JpZENvbXBvbmVudD86IFR5cGU8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFRoZSBBbmd1bGFyIGNvbXBvbmVudCB0byB1c2UgZm9yIHJlbmRlcmluZyByZXBvcnQgdmlzdWFsIGNoYXJ0cy5cbiAgICogSG9zdCBjYW4gcHJvdmlkZSB0aGVpciBwcmVmZXJyZWQgY2hhcnQgY29tcG9uZW50LCBvciB1c2UgdGhlIGJ1aWx0LWluIFNWRyBjaGFydHMuXG4gICAqL1xuICBjaGFydENvbXBvbmVudD86IFR5cGU8dW5rbm93bj47XG5cbiAgLyoqIEhvc3QncyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZGF0YSBzb3VyY2UgYWRhcHRlci4gKi9cbiAgZGF0YVNvdXJjZUFkYXB0ZXI/OiBUeXBlPFJlcG9ydERhdGFTb3VyY2VBZGFwdGVyPjtcblxuICAvKiogSG9zdCdzIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtYXN0ZXIgZGF0YSBwcm92aWRlci4gKi9cbiAgbWFzdGVyRGF0YVByb3ZpZGVyPzogVHlwZTxNYXN0ZXJEYXRhUHJvdmlkZXI+O1xuXG4gIC8qKiBIb3N0J3MgaW1wbGVtZW50YXRpb24gb2YgdGhlIHBlcnNpc3RlbmNlIGFkYXB0ZXIuICovXG4gIHBlcnNpc3RlbmNlQWRhcHRlcj86IFR5cGU8UmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyPjtcblxuICAvKiogSG9zdCdzIGltcGxlbWVudGF0aW9uIG9mIHRoZSBzY2hlbWEgZGlzY292ZXJ5IGFkYXB0ZXIuICovXG4gIHNjaGVtYURpc2NvdmVyeUFkYXB0ZXI/OiBUeXBlPFJlcG9ydFNjaGVtYURpc2NvdmVyeUFkYXB0ZXI+O1xuXG4gIC8qKiBIb3N0J3MgaW1wbGVtZW50YXRpb24gb2YgdGhlIGxvb2t1cCBhZGFwdGVyLiAqL1xuICBsb29rdXBBZGFwdGVyPzogVHlwZTxSZXBvcnRMb29rdXBBZGFwdGVyPjtcblxuICAvKipcbiAgICogSW5saW5lIHNlc3Npb24gY29udGV4dCBwYXJhbWV0ZXJzIG9yIGZhY3RvcnkgZnVuY3Rpb246XG4gICAqIGUuZy4gYHNlc3Npb246ICgpID0+ICh7IGJyYW5jaElkOiBhdXRoLmJyYW5jaElkKCksIHVzZXI6IGF1dGgudXNlcigpIH0pYFxuICAgKi9cbiAgc2Vzc2lvbj86IFNlc3Npb25Db250ZXh0U291cmNlIHwgKCgpID0+IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcblxuICAvKipcbiAgICogSG9zdCBhcHBsaWNhdGlvbidzIHNlc3Npb24gY29udGV4dCBwYXJhbWV0ZXJzIChlLmcuIHsgYnJhbmNoSWQ6IDEsIGNvbXBhbnlJZDogMTAsIHVzZXJJZDogJ3Vzci0xJyB9KS5cbiAgICovXG4gIHNlc3Npb25Db250ZXh0PzogU2Vzc2lvbkNvbnRleHRTb3VyY2U7XG5cbiAgLyoqXG4gICAqIEhvc3QgYXBwbGljYXRpb24gc2VydmljZSBjbGFzcyBpbXBsZW1lbnRpbmcgYFNlc3Npb25Db250ZXh0UHJvdmlkZXJgLlxuICAgKi9cbiAgc2Vzc2lvbkNvbnRleHRQcm92aWRlcj86IFR5cGU8U2Vzc2lvbkNvbnRleHRQcm92aWRlcj47XG5cbiAgLyoqXG4gICAqIEZhY3RvcnkgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgU2Vzc2lvbkNvbnRleHRTb3VyY2Ugd2l0aCBkZXBlbmRlbmN5IGluamVjdGlvbiBjb250ZXh0LlxuICAgKi9cbiAgc2Vzc2lvbkNvbnRleHRGYWN0b3J5PzogKCkgPT4gU2Vzc2lvbkNvbnRleHRTb3VyY2U7XG59XG5cbi8qKiBCYWNrd2FyZCBjb21wYXRpYmlsaXR5IGFuZCBhbHRlcm5hdGl2ZSBuYW1pbmcgYWxpYXNlcyAqL1xuZXhwb3J0IHR5cGUgUHJvdmlkZVJlcG9ydGluZ09wdGlvbnMgPSBQcm92aWRlQndheXNSZXBvcnRPcHRpb25zO1xuZXhwb3J0IHR5cGUgUHJvdmlkZUJ3YXlzUmVwb3J0aW5nT3B0aW9ucyA9IFByb3ZpZGVCd2F5c1JlcG9ydE9wdGlvbnM7XG5cbi8qKlxuICogVHlwZSBndWFyZCB0byBkZXRlY3QgdGhlIHNpbXBsaWZpZWQgYEJ3YXlzUmVwb3J0Q29uZmlnYCBzaGFwZS5cbiAqL1xuZnVuY3Rpb24gaXNCd2F5c1JlcG9ydENvbmZpZyhcbiAgYXJnOiBCd2F5c1JlcG9ydENvbmZpZyB8IFByb3ZpZGVCd2F5c1JlcG9ydE9wdGlvbnNcbik6IGFyZyBpcyBCd2F5c1JlcG9ydENvbmZpZyB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcgJiZcbiAgICBhcmcgIT09IG51bGwgJiZcbiAgICAnc3BFbmRwb2ludCcgaW4gYXJnICYmXG4gICAgJ3RhYmxlc0VuZHBvaW50JyBpbiBhcmcgJiZcbiAgICAnZXhlY3V0ZUVuZHBvaW50JyBpbiBhcmdcbiAgKTtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyB0aGUgQldheXMtUmVwb3J0IGxpYnJhcnkgdG8gdGhlIEFuZ3VsYXIgYXBwbGljYXRpb24uXG4gKlxuICogKipTaW1wbGUgY29uZmlnIChyZWNvbW1lbmRlZCBmb3IgbW9zdCBwcm9qZWN0cyk6KipcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHByb3ZpZGVCd2F5c1JlcG9ydCh7XG4gKiAgIHNwRW5kcG9pbnQ6ICAgICAgJy9hcGkvcmVwb3J0aW5nL3Byb2NlZHVyZXMnLFxuICogICB0YWJsZXNFbmRwb2ludDogICcvYXBpL3JlcG9ydGluZy90YWJsZXMnLFxuICogICBleGVjdXRlRW5kcG9pbnQ6ICcvYXBpL3JlcG9ydGluZy9leGVjdXRlJyxcbiAqICAgcmVwb3J0c0VuZHBvaW50OiAnL2FwaS9yZXBvcnRpbmcvcmVwb3J0cycsXG4gKiAgIGNvbXBvbmVudHM6IFsnZm9ybUlucHV0cycsICdhY3Rpb25CdXR0b25zJ10sXG4gKiAgIHNlc3Npb246ICgpID0+IGluamVjdChBdXRoU2VydmljZSkuc2Vzc2lvbigpLFxuICogfSlcbiAqIGBgYFxuICpcbiAqICoqQWR2YW5jZWQgY29uZmlnIChleGlzdGluZyBhZGFwdGVyIHBhdHRlcm4pOioqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBwcm92aWRlQndheXNSZXBvcnQoXG4gKiAgIHsgYXBpQmFzZVVybDogJy9hcGkvcmVwb3J0aW5nJyB9LFxuICogICB3aXRoSHR0cEFkYXB0ZXJzKHsgYXBpQmFzZVVybDogJy9hcGkvcmVwb3J0aW5nJyB9KVxuICogKVxuICogYGBgXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBFaXRoZXIgYSBgQndheXNSZXBvcnRDb25maWdgIChzaW1wbGUpIG9yIGBQcm92aWRlQndheXNSZXBvcnRPcHRpb25zYCAoYWR2YW5jZWQpLlxuICogQHBhcmFtIGZlYXR1cmVzIC0gT3B0aW9uYWwgZmVhdHVyZXMgbGlrZSBgd2l0aEh0dHBBZGFwdGVycyguLi4pYCBvciBgd2l0aExvY2FsU3RvcmFnZSgpYC5cbiAqIEByZXR1cm5zIEVudmlyb25tZW50IHByb3ZpZGVycyBmb3IgdGhlIHJlcG9ydGluZyBsaWJyYXJ5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUJ3YXlzUmVwb3J0KFxuICBvcHRpb25zOiBCd2F5c1JlcG9ydENvbmZpZyB8IFByb3ZpZGVCd2F5c1JlcG9ydE9wdGlvbnMgPSB7fSBhcyBQcm92aWRlQndheXNSZXBvcnRPcHRpb25zLFxuICAuLi5mZWF0dXJlczogUmVwb3J0aW5nRmVhdHVyZVtdXG4pOiBFbnZpcm9ubWVudFByb3ZpZGVycyB7XG4gIC8vIOKUgOKUgOKUgCBTaW1wbGUgY29uZmlnIHBhdGgg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gIGlmIChpc0J3YXlzUmVwb3J0Q29uZmlnKG9wdGlvbnMpKSB7XG4gICAgcmV0dXJuIHByb3ZpZGVCd2F5c1JlcG9ydEZyb21TaW1wbGVDb25maWcob3B0aW9ucyk7XG4gIH1cblxuICAvLyDilIDilIDilIAgQWR2YW5jZWQgLyBsZWdhY3kgY29uZmlnIHBhdGgg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gIHJldHVybiBwcm92aWRlQndheXNSZXBvcnRGcm9tT3B0aW9ucyhvcHRpb25zLCBmZWF0dXJlcyk7XG59XG5cbi8qKlxuICogV2lyZXMgdXAgZW5kcG9pbnQtYmFzZWQgYWRhcHRlcnMgZnJvbSB0aGUgc2ltcGxpZmllZCBgQndheXNSZXBvcnRDb25maWdgLlxuICovXG5mdW5jdGlvbiBwcm92aWRlQndheXNSZXBvcnRGcm9tU2ltcGxlQ29uZmlnKGNvbmZpZzogQndheXNSZXBvcnRDb25maWcpOiBFbnZpcm9ubWVudFByb3ZpZGVycyB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemVCd2F5c0NvbmZpZyhjb25maWcpO1xuXG4gIGNvbnN0IHJlcG9ydGluZ0NvbmZpZzogUmVwb3J0aW5nQ29uZmlnID0ge1xuICAgIC4uLkRFRkFVTFRfQ09ORklHLFxuICAgIGRlZmF1bHRQYWdlU2l6ZTogbm9ybWFsaXplZC5kZWZhdWx0UGFnZVNpemUsXG4gICAgZGF0ZUZvcm1hdDogbm9ybWFsaXplZC5kYXRlRm9ybWF0LFxuICAgIGxvb2t1cFRpbWVvdXRNczogbm9ybWFsaXplZC5sb29rdXBUaW1lb3V0TXMsXG4gICAgZW5hYmxlRGVzaWduZXI6IHRydWUsXG4gICAgYWxsb3dlZENhdGVnb3JpZXM6IG5vcm1hbGl6ZWQuYWxsb3dlZENhdGVnb3JpZXMsXG4gICAgYXV0b1BhcmFtZXRlcjogbm9ybWFsaXplZC5hdXRvUGFyYW1ldGVyLFxuICAgIHJvdXRlQmFzZTogbm9ybWFsaXplZC5yb3V0ZUJhc2UsXG4gIH07XG5cbiAgY29uc3QgcHJvdmlkZXJzOiBQcm92aWRlcltdID0gW1xuICAgIC8vIEJ1aWx0aW4gY29tcG9uZW50IHJlZ2lzdHJhdGlvblxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEVOVklST05NRU5UX0lOSVRJQUxJWkVSLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VWYWx1ZTogKCkgPT4ge1xuICAgICAgICBjb25zdCByZWdpc3RyeSA9IGluamVjdChDb21wb25lbnRSZWdpc3RyeSk7XG4gICAgICAgIHJlZ2lzdGVyQnVpbHRpbkNvbXBvbmVudHMocmVnaXN0cnkpO1xuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgICAgJ3doZWVsJyxcbiAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgYWN0aXZlRWwgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgICAgICAgICAgICBpZiAoYWN0aXZlRWwgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50ICYmIGFjdGl2ZUVsLnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgYWN0aXZlRWwuYmx1cigpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBwYXNzaXZlOiB0cnVlIH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0sXG5cbiAgICAvLyBDb3JlIGNvbmZpZ3VyYXRpb25cbiAgICB7IHByb3ZpZGU6IFJFUE9SVElOR19DT05GSUcsIHVzZVZhbHVlOiByZXBvcnRpbmdDb25maWcgfSxcblxuICAgIC8vIEVuZHBvaW50IFVSTHMgZm9yIHRoZSBhZGFwdGVyc1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEJXQVlTX1JFUE9SVF9FTkRQT0lOVFMsXG4gICAgICB1c2VWYWx1ZToge1xuICAgICAgICBzcEVuZHBvaW50OiBub3JtYWxpemVkLnNwRW5kcG9pbnQsXG4gICAgICAgIHRhYmxlc0VuZHBvaW50OiBub3JtYWxpemVkLnRhYmxlc0VuZHBvaW50LFxuICAgICAgICBleGVjdXRlRW5kcG9pbnQ6IG5vcm1hbGl6ZWQuZXhlY3V0ZUVuZHBvaW50LFxuICAgICAgICBsb29rdXBFbmRwb2ludDogbm9ybWFsaXplZC5sb29rdXBFbmRwb2ludCxcbiAgICAgICAgcmVwb3J0c0VuZHBvaW50OiBub3JtYWxpemVkLnJlcG9ydHNFbmRwb2ludCxcbiAgICAgICAgYXBpc0VuZHBvaW50OiBub3JtYWxpemVkLmFwaXNFbmRwb2ludCxcbiAgICAgICAgYXBpRW5kcG9pbnRzOiBub3JtYWxpemVkLmFwaUVuZHBvaW50cyxcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIC8vIEVuZHBvaW50LWJhc2VkIGFkYXB0ZXJzXG4gICAgeyBwcm92aWRlOiBSZXBvcnRTY2hlbWFEaXNjb3ZlcnlBZGFwdGVyLCB1c2VDbGFzczogRW5kcG9pbnRTY2hlbWFEaXNjb3ZlcnlBZGFwdGVyIH0sXG4gICAgeyBwcm92aWRlOiBSZXBvcnREYXRhU291cmNlQWRhcHRlciwgdXNlQ2xhc3M6IEVuZHBvaW50RGF0YVNvdXJjZUFkYXB0ZXIgfSxcbiAgICB7IHByb3ZpZGU6IFJlcG9ydExvb2t1cEFkYXB0ZXIsIHVzZUNsYXNzOiBFbmRwb2ludExvb2t1cEFkYXB0ZXIgfSxcbiAgICB7IHByb3ZpZGU6IE1hc3RlckRhdGFQcm92aWRlciwgdXNlQ2xhc3M6IEVuZHBvaW50TWFzdGVyRGF0YUFkYXB0ZXIgfSxcblxuICAgIC8vIFBlcnNpc3RlbmNlOiB1c2UgZW5kcG9pbnQgYWRhcHRlciBpZiByZXBvcnRzRW5kcG9pbnQgaXMgc2V0LCBvdGhlcndpc2UgbG9jYWxTdG9yYWdlXG4gICAge1xuICAgICAgcHJvdmlkZTogUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyLFxuICAgICAgdXNlQ2xhc3M6IG5vcm1hbGl6ZWQucmVwb3J0c0VuZHBvaW50XG4gICAgICAgID8gRW5kcG9pbnRQZXJzaXN0ZW5jZUFkYXB0ZXJcbiAgICAgICAgOiBMb2NhbFN0b3JhZ2VSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIsXG4gICAgfSxcbiAgXTtcblxuICAvLyBHcmlkIC8gQ2hhcnQgb3ZlcnJpZGVzXG4gIGlmIChub3JtYWxpemVkLmdyaWRDb21wb25lbnQpIHtcbiAgICBwcm92aWRlcnMucHVzaCh7IHByb3ZpZGU6IEdSSURfQ09NUE9ORU5ULCB1c2VWYWx1ZTogbm9ybWFsaXplZC5ncmlkQ29tcG9uZW50IH0pO1xuICB9XG4gIGlmIChub3JtYWxpemVkLmNoYXJ0Q29tcG9uZW50KSB7XG4gICAgcHJvdmlkZXJzLnB1c2goeyBwcm92aWRlOiBDSEFSVF9DT01QT05FTlQsIHVzZVZhbHVlOiBub3JtYWxpemVkLmNoYXJ0Q29tcG9uZW50IH0pO1xuICB9XG5cbiAgLy8gU2Vzc2lvbiBjb250ZXh0IC8gcHJvdmlkZXJcbiAgY29uc3Qgc2Vzc2lvblRhcmdldCA9IG5vcm1hbGl6ZWQuc2Vzc2lvblByb3ZpZGVyID8/IG5vcm1hbGl6ZWQuc2Vzc2lvbjtcbiAgaWYgKHNlc3Npb25UYXJnZXQpIHtcbiAgICBpZiAodHlwZW9mIHNlc3Npb25UYXJnZXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnN0IGlzQ2xhc3MgPSAvXmNsYXNzXFxzLy50ZXN0KEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHNlc3Npb25UYXJnZXQpKTtcbiAgICAgIGlmIChpc0NsYXNzKSB7XG4gICAgICAgIHByb3ZpZGVycy5wdXNoKHNlc3Npb25UYXJnZXQgYXMgVHlwZTxhbnk+KTtcbiAgICAgICAgcHJvdmlkZXJzLnB1c2goeyBwcm92aWRlOiBSRVBPUlRfU0VTU0lPTl9QUk9WSURFUiwgdXNlRXhpc3Rpbmc6IHNlc3Npb25UYXJnZXQgYXMgVHlwZTxhbnk+IH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvdmlkZXJzLnB1c2goeyBwcm92aWRlOiBSRVBPUlRfU0VTU0lPTl9DT05URVhULCB1c2VGYWN0b3J5OiBzZXNzaW9uVGFyZ2V0IGFzICgpID0+IGFueSB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcHJvdmlkZXJzLnB1c2goeyBwcm92aWRlOiBSRVBPUlRfU0VTU0lPTl9DT05URVhULCB1c2VWYWx1ZTogc2Vzc2lvblRhcmdldCB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKHByb3ZpZGVycyk7XG59XG5cbi8qKlxuICogT3JpZ2luYWwgYWR2YW5jZWQgY29uZmlnIHBhdGgg4oCUIHVuY2hhbmdlZCBiZWhhdmlvci5cbiAqL1xuZnVuY3Rpb24gcHJvdmlkZUJ3YXlzUmVwb3J0RnJvbU9wdGlvbnMoXG4gIG9wdGlvbnM6IFByb3ZpZGVCd2F5c1JlcG9ydE9wdGlvbnMsXG4gIGZlYXR1cmVzOiBSZXBvcnRpbmdGZWF0dXJlW11cbik6IEVudmlyb25tZW50UHJvdmlkZXJzIHtcbiAgY29uc3QgY29uZmlnOiBSZXBvcnRpbmdDb25maWcgPSB7IC4uLkRFRkFVTFRfQ09ORklHLCAuLi5vcHRpb25zIH07XG4gIGZvciAoY29uc3QgZmVhdHVyZSBvZiBmZWF0dXJlcykge1xuICAgIGlmIChmZWF0dXJlLsm1Y29uZmlnKSB7XG4gICAgICBPYmplY3QuYXNzaWduKGNvbmZpZywgZmVhdHVyZS7JtWNvbmZpZyk7XG4gICAgfVxuICB9XG4gIGlmIChjb25maWcuYXBpQmFzZVVybCkge1xuICAgIGNvbmZpZy5hcGlCYXNlVXJsID0gY29uZmlnLmFwaUJhc2VVcmwucmVwbGFjZSgvXFwvKyQvLCAnJyk7XG4gIH1cblxuICBjb25zdCBwcm92aWRlcnM6IFByb3ZpZGVyW10gPSBbXG4gICAge1xuICAgICAgcHJvdmlkZTogRU5WSVJPTk1FTlRfSU5JVElBTElaRVIsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZVZhbHVlOiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlZ2lzdHJ5ID0gaW5qZWN0KENvbXBvbmVudFJlZ2lzdHJ5KTtcbiAgICAgICAgcmVnaXN0ZXJCdWlsdGluQ29tcG9uZW50cyhyZWdpc3RyeSk7XG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgICAnd2hlZWwnLFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBhY3RpdmVFbCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICAgIGlmIChhY3RpdmVFbCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgJiYgYWN0aXZlRWwudHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICBhY3RpdmVFbC5ibHVyKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IHBhc3NpdmU6IHRydWUgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSxcbiAgXTtcblxuICBjb25zdCBoYXNIdHRwRmVhdHVyZSA9IGZlYXR1cmVzLnNvbWUoKGYpID0+IGYuybVraW5kID09PSBSZXBvcnRpbmdGZWF0dXJlS2luZC5IdHRwQWRhcHRlcnMpO1xuICBjb25zdCBoYXNMb2NhbEZlYXR1cmUgPSBmZWF0dXJlcy5zb21lKChmKSA9PiBmLsm1a2luZCA9PT0gUmVwb3J0aW5nRmVhdHVyZUtpbmQuTG9jYWxTdG9yYWdlKTtcblxuICAvLyBBcHBlbmQgZmVhdHVyZSBwcm92aWRlcnMgKGV4Y2x1ZGluZyBzdGFuZGFsb25lIFJFUE9SVElOR19DT05GSUcgc28gbWVyZ2VkIGNvbmZpZyB3aW5zKVxuICBmb3IgKGNvbnN0IGZlYXR1cmUgb2YgZmVhdHVyZXMpIHtcbiAgICBjb25zdCBub25Db25maWdQcm92aWRlcnMgPSBmZWF0dXJlLsm1cHJvdmlkZXJzLmZpbHRlcihcbiAgICAgIChwKSA9PiAhKHR5cGVvZiBwID09PSAnb2JqZWN0JyAmJiBwICE9PSBudWxsICYmICdwcm92aWRlJyBpbiBwICYmIHAucHJvdmlkZSA9PT0gUkVQT1JUSU5HX0NPTkZJRylcbiAgICApO1xuICAgIHByb3ZpZGVycy5wdXNoKC4uLm5vbkNvbmZpZ1Byb3ZpZGVycyk7XG4gIH1cblxuICAvLyBVbmlmaWVkIG1lcmdlZCBjb25maWd1cmF0aW9uXG4gIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogUkVQT1JUSU5HX0NPTkZJRywgdXNlVmFsdWU6IGNvbmZpZyB9KTtcblxuICAvLyBBdXRvLXByb3Zpc2lvbiBIVFRQIGFkYXB0ZXJzIGlmIGFwaUJhc2VVcmwgd2FzIHN1cHBsaWVkIGFzIGEgMS1saW5lIG9wdGlvblxuICBpZiAoIWhhc0h0dHBGZWF0dXJlICYmICFoYXNMb2NhbEZlYXR1cmUgJiYgb3B0aW9ucy5hcGlCYXNlVXJsKSB7XG4gICAgcHJvdmlkZXJzLnB1c2goXG4gICAgICB7IHByb3ZpZGU6IFJlcG9ydERhdGFTb3VyY2VBZGFwdGVyLCB1c2VDbGFzczogb3B0aW9ucy5kYXRhU291cmNlQWRhcHRlciA/PyBIdHRwUmVwb3J0RGF0YVNvdXJjZUFkYXB0ZXIgfSxcbiAgICAgIHsgcHJvdmlkZTogUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyLCB1c2VDbGFzczogb3B0aW9ucy5wZXJzaXN0ZW5jZUFkYXB0ZXIgPz8gSHR0cFJlcG9ydFBlcnNpc3RlbmNlQWRhcHRlciB9LFxuICAgICAgeyBwcm92aWRlOiBNYXN0ZXJEYXRhUHJvdmlkZXIsIHVzZUNsYXNzOiBvcHRpb25zLm1hc3RlckRhdGFQcm92aWRlciA/PyBIdHRwTWFzdGVyRGF0YUFkYXB0ZXIgfSxcbiAgICAgIHsgcHJvdmlkZTogUmVwb3J0U2NoZW1hRGlzY292ZXJ5QWRhcHRlciwgdXNlQ2xhc3M6IG9wdGlvbnMuc2NoZW1hRGlzY292ZXJ5QWRhcHRlciA/PyBIdHRwUmVwb3J0U2NoZW1hRGlzY292ZXJ5QWRhcHRlciB9LFxuICAgICAgeyBwcm92aWRlOiBSZXBvcnRMb29rdXBBZGFwdGVyLCB1c2VDbGFzczogb3B0aW9ucy5sb29rdXBBZGFwdGVyID8/IEh0dHBSZXBvcnRMb29rdXBBZGFwdGVyIH1cbiAgICApO1xuICB9IGVsc2UgaWYgKCFoYXNIdHRwRmVhdHVyZSAmJiAhaGFzTG9jYWxGZWF0dXJlKSB7XG4gICAgLy8gSWYgbm8gYmFja2VuZCBhcGlCYXNlVXJsIGFuZCBubyBmZWF0dXJlIHBhc3NlZCwgZmFsbGJhY2sgdG8gemVyby1iYWNrZW5kIHNhbmRib3ggbW9kZVxuICAgIHByb3ZpZGVycy5wdXNoKFxuICAgICAge1xuICAgICAgICBwcm92aWRlOiBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIsXG4gICAgICAgIHVzZUNsYXNzOiBvcHRpb25zLnBlcnNpc3RlbmNlQWRhcHRlciA/PyBMb2NhbFN0b3JhZ2VSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwcm92aWRlOiBSZXBvcnREYXRhU291cmNlQWRhcHRlcixcbiAgICAgICAgdXNlQ2xhc3M6IG9wdGlvbnMuZGF0YVNvdXJjZUFkYXB0ZXIgPz8gTW9ja1JlcG9ydERhdGFTb3VyY2VBZGFwdGVyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcHJvdmlkZTogUmVwb3J0U2NoZW1hRGlzY292ZXJ5QWRhcHRlcixcbiAgICAgICAgdXNlQ2xhc3M6IG9wdGlvbnMuc2NoZW1hRGlzY292ZXJ5QWRhcHRlciA/PyBIdHRwUmVwb3J0U2NoZW1hRGlzY292ZXJ5QWRhcHRlcixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHByb3ZpZGU6IFJlcG9ydExvb2t1cEFkYXB0ZXIsXG4gICAgICAgIHVzZUNsYXNzOiBvcHRpb25zLmxvb2t1cEFkYXB0ZXIgPz8gSHR0cFJlcG9ydExvb2t1cEFkYXB0ZXIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwcm92aWRlOiBNYXN0ZXJEYXRhUHJvdmlkZXIsXG4gICAgICAgIHVzZUNsYXNzOiBvcHRpb25zLm1hc3RlckRhdGFQcm92aWRlciA/PyBIdHRwTWFzdGVyRGF0YUFkYXB0ZXIsXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8vIENvbXBvbmVudCBvdmVycmlkZXNcbiAgaWYgKG9wdGlvbnMuZ3JpZENvbXBvbmVudCkge1xuICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogR1JJRF9DT01QT05FTlQsIHVzZVZhbHVlOiBvcHRpb25zLmdyaWRDb21wb25lbnQgfSk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5jaGFydENvbXBvbmVudCkge1xuICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogQ0hBUlRfQ09NUE9ORU5ULCB1c2VWYWx1ZTogb3B0aW9ucy5jaGFydENvbXBvbmVudCB9KTtcbiAgfVxuXG4gIC8vIEV4cGxpY2l0IGFkYXB0ZXIgb3ZlcnJpZGVzIGFsd2F5cyB3aW5cbiAgaWYgKG9wdGlvbnMuZGF0YVNvdXJjZUFkYXB0ZXIpIHtcbiAgICBwcm92aWRlcnMucHVzaCh7IHByb3ZpZGU6IFJlcG9ydERhdGFTb3VyY2VBZGFwdGVyLCB1c2VDbGFzczogb3B0aW9ucy5kYXRhU291cmNlQWRhcHRlciB9KTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLm1hc3RlckRhdGFQcm92aWRlcikge1xuICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogTWFzdGVyRGF0YVByb3ZpZGVyLCB1c2VDbGFzczogb3B0aW9ucy5tYXN0ZXJEYXRhUHJvdmlkZXIgfSk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5wZXJzaXN0ZW5jZUFkYXB0ZXIpIHtcbiAgICBwcm92aWRlcnMucHVzaCh7IHByb3ZpZGU6IFJlcG9ydFBlcnNpc3RlbmNlQWRhcHRlciwgdXNlQ2xhc3M6IG9wdGlvbnMucGVyc2lzdGVuY2VBZGFwdGVyIH0pO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMuc2NoZW1hRGlzY292ZXJ5QWRhcHRlcikge1xuICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogUmVwb3J0U2NoZW1hRGlzY292ZXJ5QWRhcHRlciwgdXNlQ2xhc3M6IG9wdGlvbnMuc2NoZW1hRGlzY292ZXJ5QWRhcHRlciB9KTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmxvb2t1cEFkYXB0ZXIpIHtcbiAgICBwcm92aWRlcnMucHVzaCh7IHByb3ZpZGU6IFJlcG9ydExvb2t1cEFkYXB0ZXIsIHVzZUNsYXNzOiBvcHRpb25zLmxvb2t1cEFkYXB0ZXIgfSk7XG4gIH1cblxuICAvLyBEeW5hbWljIFNlc3Npb24gQ29udGV4dCBQcm92aWRlcnNcbiAgaWYgKG9wdGlvbnMuc2Vzc2lvbkNvbnRleHRQcm92aWRlcikge1xuICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogUkVQT1JUX1NFU1NJT05fUFJPVklERVIsIHVzZUNsYXNzOiBvcHRpb25zLnNlc3Npb25Db250ZXh0UHJvdmlkZXIgfSk7XG4gIH1cblxuICAvLyBGbGV4aWJsZSBpbmxpbmUgc2Vzc2lvbiBzeW50YXg6IHNlc3Npb246ICgpID0+ICh7IC4uLiB9KVxuICBpZiAodHlwZW9mIG9wdGlvbnMuc2Vzc2lvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogUkVQT1JUX1NFU1NJT05fQ09OVEVYVCwgdXNlRmFjdG9yeTogb3B0aW9ucy5zZXNzaW9uIGFzICgpID0+IGFueSB9KTtcbiAgfSBlbHNlIGlmIChvcHRpb25zLnNlc3Npb24gIT09IHVuZGVmaW5lZCkge1xuICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogUkVQT1JUX1NFU1NJT05fQ09OVEVYVCwgdXNlVmFsdWU6IG9wdGlvbnMuc2Vzc2lvbiB9KTtcbiAgfSBlbHNlIGlmIChvcHRpb25zLnNlc3Npb25Db250ZXh0RmFjdG9yeSkge1xuICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogUkVQT1JUX1NFU1NJT05fQ09OVEVYVCwgdXNlRmFjdG9yeTogb3B0aW9ucy5zZXNzaW9uQ29udGV4dEZhY3RvcnkgfSk7XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5zZXNzaW9uQ29udGV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcHJvdmlkZXJzLnB1c2goeyBwcm92aWRlOiBSRVBPUlRfU0VTU0lPTl9DT05URVhULCB1c2VWYWx1ZTogb3B0aW9ucy5zZXNzaW9uQ29udGV4dCB9KTtcbiAgfVxuXG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMocHJvdmlkZXJzKTtcbn1cblxuLyoqIEFsaWFzIGZvciBwcm92aWRlQndheXNSZXBvcnQgKi9cbmV4cG9ydCBjb25zdCBwcm92aWRlQndheXNSZXBvcnRpbmcgPSBwcm92aWRlQndheXNSZXBvcnQ7XG5cbi8qKiBCYWNrd2FyZC1jb21wYXRpYmxlIGFsaWFzIGZvciBwcm92aWRlQndheXNSZXBvcnQgKi9cbmV4cG9ydCBjb25zdCBwcm92aWRlUmVwb3J0aW5nID0gcHJvdmlkZUJ3YXlzUmVwb3J0O1xuXG4vKiogU2VtYW50aWMgYWxpYXMgZm9yIEJXYXlzIHJlcG9ydCBwcm92aWRlcnMgKi9cbmV4cG9ydCBjb25zdCBid2F5c1JlcG9ydFByb3ZpZGVycyA9IHByb3ZpZGVCd2F5c1JlcG9ydDtcbiJdfQ==
|
|
340
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1yZXBvcnRpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9wcm92aWRlLXJlcG9ydGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixNQUFNLEVBQ04sd0JBQXdCLEdBR3pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxlQUFlLEVBQ2YsY0FBYyxFQUNkLGdCQUFnQixHQUVqQixNQUFNLHNDQUFzQyxDQUFDO0FBQzlDLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsdUJBQXVCLEdBR3hCLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdkYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDbEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDL0YsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDakcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDOUUsT0FBTyxFQUNMLDJCQUEyQixFQUMzQiw0QkFBNEIsRUFDNUIsdUJBQXVCLEVBQ3ZCLGdDQUFnQyxFQUNoQyxxQkFBcUIsRUFDckIsb0NBQW9DLEVBQ3BDLDJCQUEyQixFQUMzQiw4QkFBOEIsRUFDOUIseUJBQXlCLEVBQ3pCLHFCQUFxQixFQUNyQiwwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLHNCQUFzQixHQUN2QixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNFLE9BQU8sRUFFTCxvQkFB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VSxFQUFFLENBQUM7UUFDMUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLE9BQW9CLEVBQUUsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7U0FBTSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDekMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDakYsQ0FBQztTQUFNLElBQUksT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDekMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQztJQUNqRyxDQUFDO1NBQU0sSUFBSSxPQUFPLENBQUMsY0FBYyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ2hELFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7SUFFRCxPQUFPLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFFRCxtQ0FBbUM7QUFDbkMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsa0JBQWtCLENBQUM7QUFFeEQsdURBQXVEO0FBQ3ZELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLGtCQUFrQixDQUFDO0FBRW5ELGdEQUFnRDtBQUNoRCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVwb3J0aW5nIGxpYnJhcnkgcm9vdCBwcm92aWRlciBmdW5jdGlvbiBhbmQgZmVhdHVyZSBmdW5jdGlvbnMuXG4gKlxuICogQ29uZmlndXJlcyB0aGUgbGlicmFyeSwgaXRzIHRva2VucywgYW5kIHJlZ2lzdGVycyBidWlsdC1pbiBwcmltaXRpdmVzLlxuICovXG5cbmltcG9ydCB7XG4gIEVOVklST05NRU5UX0lOSVRJQUxJWkVSLFxuICBFbnZpcm9ubWVudFByb3ZpZGVycyxcbiAgaW5qZWN0LFxuICBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMsXG4gIFByb3ZpZGVyLFxuICBUeXBlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENIQVJUX0NPTVBPTkVOVCxcbiAgR1JJRF9DT01QT05FTlQsXG4gIFJFUE9SVElOR19DT05GSUcsXG4gIFJlcG9ydGluZ0NvbmZpZyxcbn0gZnJvbSAnLi9jb3JlL3Rva2Vucy9yZXBvcnRpbmctY29uZmlnLnRva2VuJztcbmltcG9ydCB7XG4gIFJFUE9SVF9TRVNTSU9OX0NPTlRFWFQsXG4gIFJFUE9SVF9TRVNTSU9OX1BST1ZJREVSLFxuICBTZXNzaW9uQ29udGV4dFByb3ZpZGVyLFxuICBTZXNzaW9uQ29udGV4dFNvdXJjZSxcbn0gZnJvbSAnLi9jb3JlL3Rva2Vucy9zZXNzaW9uLWNvbnRleHQudG9rZW4nO1xuaW1wb3J0IHsgUmVwb3J0RGF0YVNvdXJjZUFkYXB0ZXIgfSBmcm9tICcuL2RhdGEtYWNjZXNzL2NvbnRyYWN0cy9kYXRhLXNvdXJjZS5jb250cmFjdCc7XG5pbXBvcnQgeyBNYXN0ZXJEYXRhUHJvdmlkZXIgfSBmcm9tICcuL2RhdGEtYWNjZXNzL2NvbnRyYWN0cy9tYXN0ZXItZGF0YS5wcm92aWRlcic7XG5pbXBvcnQgeyBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIgfSBmcm9tICcuL2RhdGEtYWNjZXNzL2NvbnRyYWN0cy9yZXBvcnQtcGVyc2lzdGVuY2UuY29udHJhY3QnO1xuaW1wb3J0IHsgUmVwb3J0U2NoZW1hRGlzY292ZXJ5QWRhcHRlciB9IGZyb20gJy4vZGF0YS1hY2Nlc3MvY29udHJhY3RzL3NjaGVtYS1kaXNjb3ZlcnkuY29udHJhY3QnO1xuaW1wb3J0IHsgUmVwb3J0TG9va3VwQWRhcHRlciB9IGZyb20gJy4vZGF0YS1hY2Nlc3MvY29udHJhY3RzL2xvb2t1cC5jb250cmFjdCc7XG5pbXBvcnQge1xuICBIdHRwUmVwb3J0RGF0YVNvdXJjZUFkYXB0ZXIsXG4gIEh0dHBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIsXG4gIEh0dHBSZXBvcnRMb29rdXBBZGFwdGVyLFxuICBIdHRwUmVwb3J0U2NoZW1hRGlzY292ZXJ5QWRhcHRlcixcbiAgSHR0cE1hc3RlckRhdGFBZGFwdGVyLFxuICBMb2NhbFN0b3JhZ2VSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIsXG4gIE1vY2tSZXBvcnREYXRhU291cmNlQWRhcHRlcixcbiAgRW5kcG9pbnRTY2hlbWFEaXNjb3ZlcnlBZGFwdGVyLFxuICBFbmRwb2ludERhdGFTb3VyY2VBZGFwdGVyLFxuICBFbmRwb2ludExvb2t1cEFkYXB0ZXIsXG4gIEVuZHBvaW50UGVyc2lzdGVuY2VBZGFwdGVyLFxuICBFbmRwb2ludE1hc3RlckRhdGFBZGFwdGVyLFxuICBCV0FZU19SRVBPUlRfRU5EUE9JTlRTLFxufSBmcm9tICcuL2RhdGEtYWNjZXNzL2FkYXB0ZXJzJztcbmltcG9ydCB7IENvbXBvbmVudFJlZ2lzdHJ5IH0gZnJvbSAnLi9jb3JlL3JlZ2lzdHJ5L2NvbXBvbmVudC1yZWdpc3RyeSc7XG5pbXBvcnQgeyByZWdpc3RlckJ1aWx0aW5Db21wb25lbnRzIH0gZnJvbSAnLi9wcmltaXRpdmVzL3JlZ2lzdGVyLWJ1aWx0aW5zJztcbmltcG9ydCB7XG4gIEJ3YXlzUmVwb3J0Q29uZmlnLFxuICBub3JtYWxpemVCd2F5c0NvbmZpZyxcbn0gZnJvbSAnLi9jb3JlL2NvbmZpZy9id2F5cy1yZXBvcnQtY29uZmlnJztcblxuLyoqIERlZmF1bHQgY29uZmlndXJhdGlvbiB2YWx1ZXMuICovXG5jb25zdCBERUZBVUxUX0NPTkZJRzogUmVwb3J0aW5nQ29uZmlnID0ge1xuICBhcGlCYXNlVXJsOiAnL2FwaS9yZXBvcnRpbmcnLFxuICBkZWZhdWx0UGFnZVNpemU6IDI1LFxuICBkYXRlRm9ybWF0OiAnZGQvTU0veXl5eScsXG4gIGVuYWJsZURlc2lnbmVyOiBmYWxzZSxcbiAgc2NoZW1hVmVyc2lvbjogMSxcbiAgbG9va3VwVGltZW91dE1zOiAzMDAwMDAsXG59O1xuXG4vKipcbiAqIEtpbmRzIG9mIHJlcG9ydGluZyBmZWF0dXJlcyBhdmFpbGFibGUgaW4gYHByb3ZpZGVCd2F5c1JlcG9ydGAuXG4gKi9cbmV4cG9ydCBlbnVtIFJlcG9ydGluZ0ZlYXR1cmVLaW5kIHtcbiAgSHR0cEFkYXB0ZXJzID0gMCxcbiAgTG9jYWxTdG9yYWdlID0gMSxcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgZmVhdHVyZSB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gYHByb3ZpZGVCd2F5c1JlcG9ydCguLi4pYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRpbmdGZWF0dXJlPEtpbmRUIGV4dGVuZHMgUmVwb3J0aW5nRmVhdHVyZUtpbmQgPSBSZXBvcnRpbmdGZWF0dXJlS2luZD4ge1xuICDJtWtpbmQ6IEtpbmRUO1xuICDJtWNvbmZpZz86IFBhcnRpYWw8UmVwb3J0aW5nQ29uZmlnPjtcbiAgybVwcm92aWRlcnM6IFByb3ZpZGVyW107XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY29uZmlndXJpbmcgYnVpbHQtaW4gSFRUUCBhZGFwdGVycyB2aWEgYHdpdGhIdHRwQWRhcHRlcnMoLi4uKWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cEFkYXB0ZXJzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgYmFzZSBVUkwgZm9yIHRoZSBiYWNrZW5kIHJlcG9ydGluZyBSRVNUIEFQSSBlbmRwb2ludHMuXG4gICAqIEBleGFtcGxlICdodHRwOi8vbG9jYWxob3N0OjMwMDAvYXBpL3JlcG9ydGluZydcbiAgICovXG4gIGFwaUJhc2VVcmw6IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgY3VzdG9tIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciBkYXRhYmFzZSBsb29rdXAgcXVlcmllcy5cbiAgICogRGVmYXVsdHMgdG8gMzAwMDAwbXMgKDUgbWludXRlcykuXG4gICAqL1xuICBsb29rdXBUaW1lb3V0TXM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQ29uZmlndXJlcyB0aGUgYnVpbHQtaW4gSFRUUCBhZGFwdGVycyBmb3IgYmFja2VuZCBleGVjdXRpb24sIHBlcnNpc3RlbmNlLFxuICogc2NoZW1hIGRpc2NvdmVyeSwgbG9va3VwLCBhbmQgbWFzdGVyIGRhdGEgcXVlcmllcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogcHJvdmlkZVJlcG9ydGluZyhcbiAqICAgeyBkZWZhdWx0UGFnZVNpemU6IDUwIH0sXG4gKiAgIHdpdGhIdHRwQWRhcHRlcnMoeyBhcGlCYXNlVXJsOiAnaHR0cDovL2xvY2FsaG9zdDozMDAwL2FwaS9yZXBvcnRpbmcnIH0pXG4gKiApXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhIdHRwQWRhcHRlcnMoXG4gIG9wdGlvbnM6IEh0dHBBZGFwdGVyc09wdGlvbnNcbik6IFJlcG9ydGluZ0ZlYXR1cmU8UmVwb3J0aW5nRmVhdHVyZUtpbmQuSHR0cEFkYXB0ZXJzPiB7XG4gIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy5hcGlCYXNlVXJsIHx8IHR5cGVvZiBvcHRpb25zLmFwaUJhc2VVcmwgIT09ICdzdHJpbmcnIHx8IG9wdGlvbnMuYXBpQmFzZVVybC50cmltKCkgPT09ICcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFtid2F5cy1yZXBvcnRdIFwiYXBpQmFzZVVybFwiIGlzIHJlcXVpcmVkIHdoZW4gY29uZmlndXJpbmcgd2l0aEh0dHBBZGFwdGVycygpLiBgICtcbiAgICAgIGBQbGVhc2UgcHJvdmlkZSBhIHZhbGlkIGJhY2tlbmQgVVJMLCBlLmcuIHdpdGhIdHRwQWRhcHRlcnMoeyBhcGlCYXNlVXJsOiAnaHR0cDovL2xvY2FsaG9zdDozMDAwL2FwaS9yZXBvcnRpbmcnIH0pYFxuICAgICk7XG4gIH1cblxuICBjb25zdCBjbGVhblVybCA9IG9wdGlvbnMuYXBpQmFzZVVybC5yZXBsYWNlKC9cXC8rJC8sICcnKTtcblxuICByZXR1cm4ge1xuICAgIMm1a2luZDogUmVwb3J0aW5nRmVhdHVyZUtpbmQuSHR0cEFkYXB0ZXJzLFxuICAgIMm1Y29uZmlnOiB7XG4gICAgICBhcGlCYXNlVXJsOiBjbGVhblVybCxcbiAgICAgIC4uLihvcHRpb25zLmxvb2t1cFRpbWVvdXRNcyA/IHsgbG9va3VwVGltZW91dE1zOiBvcHRpb25zLmxvb2t1cFRpbWVvdXRNcyB9IDoge30pLFxuICAgIH0sXG4gICAgybVwcm92aWRlcnM6IFtcbiAgICAgIHtcbiAgICAgICAgcHJvdmlkZTogUkVQT1JUSU5HX0NPTkZJRyxcbiAgICAgICAgdXNlVmFsdWU6IHtcbiAgICAgICAgICBhcGlCYXNlVXJsOiBjbGVhblVybCxcbiAgICAgICAgICAuLi4ob3B0aW9ucy5sb29rdXBUaW1lb3V0TXMgPyB7IGxvb2t1cFRpbWVvdXRNczogb3B0aW9ucy5sb29rdXBUaW1lb3V0TXMgfSA6IHt9KSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHByb3ZpZGU6IFJlcG9ydERhdGFTb3VyY2VBZGFwdGVyLFxuICAgICAgICB1c2VDbGFzczogSHR0cFJlcG9ydERhdGFTb3VyY2VBZGFwdGVyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcHJvdmlkZTogUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyLFxuICAgICAgICB1c2VDbGFzczogSHR0cFJlcG9ydFBlcnNpc3RlbmNlQWRhcHRlcixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHByb3ZpZGU6IE1hc3RlckRhdGFQcm92aWRlcixcbiAgICAgICAgdXNlQ2xhc3M6IEh0dHBNYXN0ZXJEYXRhQWRhcHRlcixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHByb3ZpZGU6IFJlcG9ydFNjaGVtYURpc2NvdmVyeUFkYXB0ZXIsXG4gICAgICAgIHVzZUNsYXNzOiBIdHRwUmVwb3J0U2NoZW1hRGlzY292ZXJ5QWRhcHRlcixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHByb3ZpZGU6IFJlcG9ydExvb2t1cEFkYXB0ZXIsXG4gICAgICAgIHVzZUNsYXNzOiBIdHRwUmVwb3J0TG9va3VwQWRhcHRlcixcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcbn1cblxuLyoqXG4gKiBaZXJvLWJhY2tlbmQgc2FuZGJveCBtb2RlIHVzaW5nIGJyb3dzZXIgTG9jYWxTdG9yYWdlIGZvciByZXBvcnQgZGVmaW5pdGlvbnNcbiAqIGFuZCBtb2NrIHJlYWxpc3RpYyBkYXRhc2V0cyBmb3IgcXVlcnkgZXhlY3V0aW9uLlxuICpcbiAqIElkZWFsIGZvciBsb2NhbCBkZXZlbG9wbWVudCwgcHJvdG90eXBpbmcsIGFuZCBvZmZsaW5lIHRlc3Rpbmcgd2l0aG91dCBzcGlubmluZyB1cCBiYWNrZW5kcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogcHJvdmlkZVJlcG9ydGluZyh3aXRoTG9jYWxTdG9yYWdlKCkpXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhMb2NhbFN0b3JhZ2UoKTogUmVwb3J0aW5nRmVhdHVyZTxSZXBvcnRpbmdGZWF0dXJlS2luZC5Mb2NhbFN0b3JhZ2U+IHtcbiAgcmV0dXJuIHtcbiAgICDJtWtpbmQ6IFJlcG9ydGluZ0ZlYXR1cmVLaW5kLkxvY2FsU3RvcmFnZSxcbiAgICDJtXByb3ZpZGVyczogW1xuICAgICAge1xuICAgICAgICBwcm92aWRlOiBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIsXG4gICAgICAgIHVzZUNsYXNzOiBMb2NhbFN0b3JhZ2VSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwcm92aWRlOiBSZXBvcnREYXRhU291cmNlQWRhcHRlcixcbiAgICAgICAgdXNlQ2xhc3M6IE1vY2tSZXBvcnREYXRhU291cmNlQWRhcHRlcixcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcbn1cblxuLyoqIEFsaWFzIGZvciB3aXRoTG9jYWxTdG9yYWdlICovXG5leHBvcnQgY29uc3Qgd2l0aE1vY2tBZGFwdGVycyA9IHdpdGhMb2NhbFN0b3JhZ2U7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBgcHJvdmlkZUJ3YXlzUmVwb3J0KClgIChhbmQgYHByb3ZpZGVSZXBvcnRpbmcoKWApLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb3ZpZGVCd2F5c1JlcG9ydE9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPFJlcG9ydGluZ0NvbmZpZz4ge1xuICAvKipcbiAgICogVGhlIEFuZ3VsYXIgY29tcG9uZW50IHRvIHVzZSBmb3IgcmVuZGVyaW5nIHJlcG9ydCByZXN1bHQgZ3JpZHMuXG4gICAqIEJXYXlzLWdyaWQgaXMgdGhlIHJlY29tbWVuZGVkIGRlZmF1bHQuIEhvc3QgY2FuIHByb3ZpZGUgYW55IGdyaWQgY29tcG9uZW50LlxuICAgKi9cbiAgZ3JpZENvbXBvbmVudD86IFR5cGU8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFRoZSBBbmd1bGFyIGNvbXBvbmVudCB0byB1c2UgZm9yIHJlbmRlcmluZyByZXBvcnQgdmlzdWFsIGNoYXJ0cy5cbiAgICogSG9zdCBjYW4gcHJvdmlkZSB0aGVpciBwcmVmZXJyZWQgY2hhcnQgY29tcG9uZW50LCBvciB1c2UgdGhlIGJ1aWx0LWluIFNWRyBjaGFydHMuXG4gICAqL1xuICBjaGFydENvbXBvbmVudD86IFR5cGU8dW5rbm93bj47XG5cbiAgLyoqIEhvc3QncyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZGF0YSBzb3VyY2UgYWRhcHRlci4gKi9cbiAgZGF0YVNvdXJjZUFkYXB0ZXI/OiBUeXBlPFJlcG9ydERhdGFTb3VyY2VBZGFwdGVyPjtcblxuICAvKiogSG9zdCdzIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtYXN0ZXIgZGF0YSBwcm92aWRlci4gKi9cbiAgbWFzdGVyRGF0YVByb3ZpZGVyPzogVHlwZTxNYXN0ZXJEYXRhUHJvdmlkZXI+O1xuXG4gIC8qKiBIb3N0J3MgaW1wbGVtZW50YXRpb24gb2YgdGhlIHBlcnNpc3RlbmNlIGFkYXB0ZXIuICovXG4gIHBlcnNpc3RlbmNlQWRhcHRlcj86IFR5cGU8UmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyPjtcblxuICAvKiogSG9zdCdzIGltcGxlbWVudGF0aW9uIG9mIHRoZSBzY2hlbWEgZGlzY292ZXJ5IGFkYXB0ZXIuICovXG4gIHNjaGVtYURpc2NvdmVyeUFkYXB0ZXI/OiBUeXBlPFJlcG9ydFNjaGVtYURpc2NvdmVyeUFkYXB0ZXI+O1xuXG4gIC8qKiBIb3N0J3MgaW1wbGVtZW50YXRpb24gb2YgdGhlIGxvb2t1cCBhZGFwdGVyLiAqL1xuICBsb29rdXBBZGFwdGVyPzogVHlwZTxSZXBvcnRMb29rdXBBZGFwdGVyPjtcblxuICAvKipcbiAgICogSW5saW5lIHNlc3Npb24gY29udGV4dCBwYXJhbWV0ZXJzIG9yIGZhY3RvcnkgZnVuY3Rpb246XG4gICAqIGUuZy4gYHNlc3Npb246ICgpID0+ICh7IGJyYW5jaElkOiBhdXRoLmJyYW5jaElkKCksIHVzZXI6IGF1dGgudXNlcigpIH0pYFxuICAgKi9cbiAgc2Vzc2lvbj86IFNlc3Npb25Db250ZXh0U291cmNlIHwgKCgpID0+IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcblxuICAvKipcbiAgICogSG9zdCBhcHBsaWNhdGlvbidzIHNlc3Npb24gY29udGV4dCBwYXJhbWV0ZXJzIChlLmcuIHsgYnJhbmNoSWQ6IDEsIGNvbXBhbnlJZDogMTAsIHVzZXJJZDogJ3Vzci0xJyB9KS5cbiAgICovXG4gIHNlc3Npb25Db250ZXh0PzogU2Vzc2lvbkNvbnRleHRTb3VyY2U7XG5cbiAgLyoqXG4gICAqIEhvc3QgYXBwbGljYXRpb24gc2VydmljZSBjbGFzcyBpbXBsZW1lbnRpbmcgYFNlc3Npb25Db250ZXh0UHJvdmlkZXJgLlxuICAgKi9cbiAgc2Vzc2lvbkNvbnRleHRQcm92aWRlcj86IFR5cGU8U2Vzc2lvbkNvbnRleHRQcm92aWRlcj47XG5cbiAgLyoqXG4gICAqIEZhY3RvcnkgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgU2Vzc2lvbkNvbnRleHRTb3VyY2Ugd2l0aCBkZXBlbmRlbmN5IGluamVjdGlvbiBjb250ZXh0LlxuICAgKi9cbiAgc2Vzc2lvbkNvbnRleHRGYWN0b3J5PzogKCkgPT4gU2Vzc2lvbkNvbnRleHRTb3VyY2U7XG59XG5cbi8qKiBCYWNrd2FyZCBjb21wYXRpYmlsaXR5IGFuZCBhbHRlcm5hdGl2ZSBuYW1pbmcgYWxpYXNlcyAqL1xuZXhwb3J0IHR5cGUgUHJvdmlkZVJlcG9ydGluZ09wdGlvbnMgPSBQcm92aWRlQndheXNSZXBvcnRPcHRpb25zO1xuZXhwb3J0IHR5cGUgUHJvdmlkZUJ3YXlzUmVwb3J0aW5nT3B0aW9ucyA9IFByb3ZpZGVCd2F5c1JlcG9ydE9wdGlvbnM7XG5cbi8qKlxuICogVHlwZSBndWFyZCB0byBkZXRlY3QgdGhlIHNpbXBsaWZpZWQgYEJ3YXlzUmVwb3J0Q29uZmlnYCBzaGFwZS5cbiAqL1xuZnVuY3Rpb24gaXNCd2F5c1JlcG9ydENvbmZpZyhcbiAgYXJnOiBCd2F5c1JlcG9ydENvbmZpZyB8IFByb3ZpZGVCd2F5c1JlcG9ydE9wdGlvbnNcbik6IGFyZyBpcyBCd2F5c1JlcG9ydENvbmZpZyB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcgJiZcbiAgICBhcmcgIT09IG51bGwgJiZcbiAgICBbJ3NwRW5kcG9pbnQnLCAndGFibGVzRW5kcG9pbnQnLCAnZXhlY3V0ZUVuZHBvaW50JywgJ2xvb2t1cEVuZHBvaW50JywgJ3JlcG9ydHNFbmRwb2ludCcsICdhcGlzRW5kcG9pbnQnLCAnYXBpRW5kcG9pbnRzJywgJ2NvbXBvbmVudHMnLCAnZ3JpZCcsICdjaGFydCcsICdzZXNzaW9uUHJvdmlkZXInXS5zb21lKGtleSA9PiBrZXkgaW4gYXJnKVxuICApO1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIHRoZSBCV2F5cy1SZXBvcnQgbGlicmFyeSB0byB0aGUgQW5ndWxhciBhcHBsaWNhdGlvbi5cbiAqXG4gKiAqKlNpbXBsZSBjb25maWcgKHJlY29tbWVuZGVkIGZvciBtb3N0IHByb2plY3RzKToqKlxuICogYGBgdHlwZXNjcmlwdFxuICogcHJvdmlkZUJ3YXlzUmVwb3J0KHtcbiAqICAgc3BFbmRwb2ludDogICAgICAnL2FwaS9yZXBvcnRpbmcvcHJvY2VkdXJlcycsXG4gKiAgIHRhYmxlc0VuZHBvaW50OiAgJy9hcGkvcmVwb3J0aW5nL3RhYmxlcycsXG4gKiAgIGV4ZWN1dGVFbmRwb2ludDogJy9hcGkvcmVwb3J0aW5nL2V4ZWN1dGUnLFxuICogICByZXBvcnRzRW5kcG9pbnQ6ICcvYXBpL3JlcG9ydGluZy9yZXBvcnRzJyxcbiAqICAgY29tcG9uZW50czogWydmb3JtSW5wdXRzJywgJ2FjdGlvbkJ1dHRvbnMnXSxcbiAqICAgc2Vzc2lvbjogKCkgPT4gaW5qZWN0KEF1dGhTZXJ2aWNlKS5zZXNzaW9uKCksXG4gKiB9KVxuICogYGBgXG4gKlxuICogKipBZHZhbmNlZCBjb25maWcgKGV4aXN0aW5nIGFkYXB0ZXIgcGF0dGVybik6KipcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHByb3ZpZGVCd2F5c1JlcG9ydChcbiAqICAgeyBhcGlCYXNlVXJsOiAnL2FwaS9yZXBvcnRpbmcnIH0sXG4gKiAgIHdpdGhIdHRwQWRhcHRlcnMoeyBhcGlCYXNlVXJsOiAnL2FwaS9yZXBvcnRpbmcnIH0pXG4gKiApXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEVpdGhlciBhIGBCd2F5c1JlcG9ydENvbmZpZ2AgKHNpbXBsZSkgb3IgYFByb3ZpZGVCd2F5c1JlcG9ydE9wdGlvbnNgIChhZHZhbmNlZCkuXG4gKiBAcGFyYW0gZmVhdHVyZXMgLSBPcHRpb25hbCBmZWF0dXJlcyBsaWtlIGB3aXRoSHR0cEFkYXB0ZXJzKC4uLilgIG9yIGB3aXRoTG9jYWxTdG9yYWdlKClgLlxuICogQHJldHVybnMgRW52aXJvbm1lbnQgcHJvdmlkZXJzIGZvciB0aGUgcmVwb3J0aW5nIGxpYnJhcnkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQndheXNSZXBvcnQoXG4gIG9wdGlvbnM6IEJ3YXlzUmVwb3J0Q29uZmlnIHwgUHJvdmlkZUJ3YXlzUmVwb3J0T3B0aW9ucyA9IHt9IGFzIFByb3ZpZGVCd2F5c1JlcG9ydE9wdGlvbnMsXG4gIC4uLmZlYXR1cmVzOiBSZXBvcnRpbmdGZWF0dXJlW11cbik6IEVudmlyb25tZW50UHJvdmlkZXJzIHtcbiAgLy8g4pSA4pSA4pSAIFNpbXBsZSBjb25maWcgcGF0aCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgaWYgKGlzQndheXNSZXBvcnRDb25maWcob3B0aW9ucykpIHtcbiAgICByZXR1cm4gcHJvdmlkZUJ3YXlzUmVwb3J0RnJvbVNpbXBsZUNvbmZpZyhvcHRpb25zKTtcbiAgfVxuXG4gIC8vIOKUgOKUgOKUgCBBZHZhbmNlZCAvIGxlZ2FjeSBjb25maWcgcGF0aCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgcmV0dXJuIHByb3ZpZGVCd2F5c1JlcG9ydEZyb21PcHRpb25zKG9wdGlvbnMsIGZlYXR1cmVzKTtcbn1cblxuLyoqXG4gKiBXaXJlcyB1cCBlbmRwb2ludC1iYXNlZCBhZGFwdGVycyBmcm9tIHRoZSBzaW1wbGlmaWVkIGBCd2F5c1JlcG9ydENvbmZpZ2AuXG4gKi9cbmZ1bmN0aW9uIHByb3ZpZGVCd2F5c1JlcG9ydEZyb21TaW1wbGVDb25maWcoY29uZmlnOiBCd2F5c1JlcG9ydENvbmZpZyk6IEVudmlyb25tZW50UHJvdmlkZXJzIHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZUJ3YXlzQ29uZmlnKGNvbmZpZyk7XG5cbiAgY29uc3QgcmVwb3J0aW5nQ29uZmlnOiBSZXBvcnRpbmdDb25maWcgPSB7XG4gICAgLi4uREVGQVVMVF9DT05GSUcsXG4gICAgZGVmYXVsdFBhZ2VTaXplOiBub3JtYWxpemVkLmRlZmF1bHRQYWdlU2l6ZSxcbiAgICBkYXRlRm9ybWF0OiBub3JtYWxpemVkLmRhdGVGb3JtYXQsXG4gICAgbG9va3VwVGltZW91dE1zOiBub3JtYWxpemVkLmxvb2t1cFRpbWVvdXRNcyxcbiAgICBleGVjdXRpb25UaW1lb3V0TXM6IG5vcm1hbGl6ZWQuZXhlY3V0aW9uVGltZW91dE1zLFxuICAgIHRydXN0ZWRBcGlPcmlnaW5zOiBub3JtYWxpemVkLnRydXN0ZWRBcGlPcmlnaW5zLFxuICAgIGVuYWJsZURlc2lnbmVyOiB0cnVlLFxuICAgIGFsbG93ZWRDYXRlZ29yaWVzOiBub3JtYWxpemVkLmFsbG93ZWRDYXRlZ29yaWVzLFxuICAgIGF1dG9QYXJhbWV0ZXI6IG5vcm1hbGl6ZWQuYXV0b1BhcmFtZXRlcixcbiAgICByb3V0ZUJhc2U6IG5vcm1hbGl6ZWQucm91dGVCYXNlLFxuICB9O1xuXG4gIGNvbnN0IHByb3ZpZGVyczogUHJvdmlkZXJbXSA9IFtcbiAgICAvLyBCdWlsdGluIGNvbXBvbmVudCByZWdpc3RyYXRpb25cbiAgICB7XG4gICAgICBwcm92aWRlOiBFTlZJUk9OTUVOVF9JTklUSUFMSVpFUixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlVmFsdWU6ICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVnaXN0cnkgPSBpbmplY3QoQ29tcG9uZW50UmVnaXN0cnkpO1xuICAgICAgICByZWdpc3RlckJ1aWx0aW5Db21wb25lbnRzKHJlZ2lzdHJ5KTtcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAgICd3aGVlbCcsXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZUVsID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICAgICAgICAgICAgaWYgKGFjdGl2ZUVsIGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCAmJiBhY3RpdmVFbC50eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIGFjdGl2ZUVsLmJsdXIoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgcGFzc2l2ZTogdHJ1ZSB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9LFxuXG4gICAgLy8gQ29yZSBjb25maWd1cmF0aW9uXG4gICAgeyBwcm92aWRlOiBSRVBPUlRJTkdfQ09ORklHLCB1c2VWYWx1ZTogcmVwb3J0aW5nQ29uZmlnIH0sXG5cbiAgICAvLyBFbmRwb2ludCBVUkxzIGZvciB0aGUgYWRhcHRlcnNcbiAgICB7XG4gICAgICBwcm92aWRlOiBCV0FZU19SRVBPUlRfRU5EUE9JTlRTLFxuICAgICAgdXNlVmFsdWU6IHtcbiAgICAgICAgc3BFbmRwb2ludDogbm9ybWFsaXplZC5zcEVuZHBvaW50LFxuICAgICAgICB0YWJsZXNFbmRwb2ludDogbm9ybWFsaXplZC50YWJsZXNFbmRwb2ludCxcbiAgICAgICAgZXhlY3V0ZUVuZHBvaW50OiBub3JtYWxpemVkLmV4ZWN1dGVFbmRwb2ludCxcbiAgICAgICAgbG9va3VwRW5kcG9pbnQ6IG5vcm1hbGl6ZWQubG9va3VwRW5kcG9pbnQsXG4gICAgICAgIHJlcG9ydHNFbmRwb2ludDogbm9ybWFsaXplZC5yZXBvcnRzRW5kcG9pbnQsXG4gICAgICAgIGFwaXNFbmRwb2ludDogbm9ybWFsaXplZC5hcGlzRW5kcG9pbnQsXG4gICAgICAgIGFwaUVuZHBvaW50czogbm9ybWFsaXplZC5hcGlFbmRwb2ludHMsXG4gICAgICB9LFxuICAgIH0sXG5cbiAgICAvLyBFbmRwb2ludC1iYXNlZCBhZGFwdGVyc1xuICAgIHsgcHJvdmlkZTogUmVwb3J0U2NoZW1hRGlzY292ZXJ5QWRhcHRlciwgdXNlQ2xhc3M6IEVuZHBvaW50U2NoZW1hRGlzY292ZXJ5QWRhcHRlciB9LFxuICAgIHsgcHJvdmlkZTogUmVwb3J0RGF0YVNvdXJjZUFkYXB0ZXIsIHVzZUNsYXNzOiBFbmRwb2ludERhdGFTb3VyY2VBZGFwdGVyIH0sXG4gICAgeyBwcm92aWRlOiBSZXBvcnRMb29rdXBBZGFwdGVyLCB1c2VDbGFzczogRW5kcG9pbnRMb29rdXBBZGFwdGVyIH0sXG4gICAgeyBwcm92aWRlOiBNYXN0ZXJEYXRhUHJvdmlkZXIsIHVzZUNsYXNzOiBFbmRwb2ludE1hc3RlckRhdGFBZGFwdGVyIH0sXG5cbiAgICAvLyBEYXRhYmFzZSBwZXJzaXN0ZW5jZSBpcyB0aGUgZGVmYXVsdCwgdXNpbmcgdGhlIHJlcG9ydGluZyBzZXJ2aWNlIHJlcG9ydHMgcm91dGUuXG4gICAge1xuICAgICAgcHJvdmlkZTogUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyLFxuICAgICAgdXNlQ2xhc3M6IEVuZHBvaW50UGVyc2lzdGVuY2VBZGFwdGVyLFxuICAgIH0sXG4gIF07XG5cbiAgLy8gR3JpZCAvIENoYXJ0IG92ZXJyaWRlc1xuICBpZiAobm9ybWFsaXplZC5ncmlkQ29tcG9uZW50KSB7XG4gICAgcHJvdmlkZXJzLnB1c2goeyBwcm92aWRlOiBHUklEX0NPTVBPTkVOVCwgdXNlVmFsdWU6IG5vcm1hbGl6ZWQuZ3JpZENvbXBvbmVudCB9KTtcbiAgfVxuICBpZiAobm9ybWFsaXplZC5jaGFydENvbXBvbmVudCkge1xuICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogQ0hBUlRfQ09NUE9ORU5ULCB1c2VWYWx1ZTogbm9ybWFsaXplZC5jaGFydENvbXBvbmVudCB9KTtcbiAgfVxuXG4gIC8vIFNlc3Npb24gY29udGV4dCAvIHByb3ZpZGVyXG4gIGNvbnN0IHNlc3Npb25UYXJnZXQgPSBub3JtYWxpemVkLnNlc3Npb25Qcm92aWRlciA/PyBub3JtYWxpemVkLnNlc3Npb247XG4gIGlmIChzZXNzaW9uVGFyZ2V0KSB7XG4gICAgaWYgKHR5cGVvZiBzZXNzaW9uVGFyZ2V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb25zdCBpc0NsYXNzID0gL15jbGFzc1xccy8udGVzdChGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChzZXNzaW9uVGFyZ2V0KSk7XG4gICAgICBpZiAoaXNDbGFzcykge1xuICAgICAgICBwcm92aWRlcnMucHVzaChzZXNzaW9uVGFyZ2V0IGFzIFR5cGU8YW55Pik7XG4gICAgICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogUkVQT1JUX1NFU1NJT05fUFJPVklERVIsIHVzZUV4aXN0aW5nOiBzZXNzaW9uVGFyZ2V0IGFzIFR5cGU8YW55PiB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogUkVQT1JUX1NFU1NJT05fQ09OVEVYVCwgdXNlRmFjdG9yeTogc2Vzc2lvblRhcmdldCBhcyAoKSA9PiBhbnkgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogUkVQT1JUX1NFU1NJT05fQ09OVEVYVCwgdXNlVmFsdWU6IHNlc3Npb25UYXJnZXQgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhwcm92aWRlcnMpO1xufVxuXG4vKipcbiAqIE9yaWdpbmFsIGFkdmFuY2VkIGNvbmZpZyBwYXRoIOKAlCB1bmNoYW5nZWQgYmVoYXZpb3IuXG4gKi9cbmZ1bmN0aW9uIHByb3ZpZGVCd2F5c1JlcG9ydEZyb21PcHRpb25zKFxuICBvcHRpb25zOiBQcm92aWRlQndheXNSZXBvcnRPcHRpb25zLFxuICBmZWF0dXJlczogUmVwb3J0aW5nRmVhdHVyZVtdXG4pOiBFbnZpcm9ubWVudFByb3ZpZGVycyB7XG4gIGNvbnN0IGNvbmZpZzogUmVwb3J0aW5nQ29uZmlnID0geyAuLi5ERUZBVUxUX0NPTkZJRywgLi4ub3B0aW9ucyB9O1xuICBmb3IgKGNvbnN0IGZlYXR1cmUgb2YgZmVhdHVyZXMpIHtcbiAgICBpZiAoZmVhdHVyZS7JtWNvbmZpZykge1xuICAgICAgT2JqZWN0LmFzc2lnbihjb25maWcsIGZlYXR1cmUuybVjb25maWcpO1xuICAgIH1cbiAgfVxuICBpZiAoY29uZmlnLmFwaUJhc2VVcmwpIHtcbiAgICBjb25maWcuYXBpQmFzZVVybCA9IGNvbmZpZy5hcGlCYXNlVXJsLnJlcGxhY2UoL1xcLyskLywgJycpO1xuICB9XG5cbiAgY29uc3QgcHJvdmlkZXJzOiBQcm92aWRlcltdID0gW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEVOVklST05NRU5UX0lOSVRJQUxJWkVSLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VWYWx1ZTogKCkgPT4ge1xuICAgICAgICBjb25zdCByZWdpc3RyeSA9IGluamVjdChDb21wb25lbnRSZWdpc3RyeSk7XG4gICAgICAgIHJlZ2lzdGVyQnVpbHRpbkNvbXBvbmVudHMocmVnaXN0cnkpO1xuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgICAgJ3doZWVsJyxcbiAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgYWN0aXZlRWwgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgICAgICAgICAgICBpZiAoYWN0aXZlRWwgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50ICYmIGFjdGl2ZUVsLnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgYWN0aXZlRWwuYmx1cigpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBwYXNzaXZlOiB0cnVlIH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0sXG4gIF07XG5cbiAgY29uc3QgaGFzSHR0cEZlYXR1cmUgPSBmZWF0dXJlcy5zb21lKChmKSA9PiBmLsm1a2luZCA9PT0gUmVwb3J0aW5nRmVhdHVyZUtpbmQuSHR0cEFkYXB0ZXJzKTtcbiAgY29uc3QgaGFzTG9jYWxGZWF0dXJlID0gZmVhdHVyZXMuc29tZSgoZikgPT4gZi7JtWtpbmQgPT09IFJlcG9ydGluZ0ZlYXR1cmVLaW5kLkxvY2FsU3RvcmFnZSk7XG5cbiAgLy8gQXBwZW5kIGZlYXR1cmUgcHJvdmlkZXJzIChleGNsdWRpbmcgc3RhbmRhbG9uZSBSRVBPUlRJTkdfQ09ORklHIHNvIG1lcmdlZCBjb25maWcgd2lucylcbiAgZm9yIChjb25zdCBmZWF0dXJlIG9mIGZlYXR1cmVzKSB7XG4gICAgY29uc3Qgbm9uQ29uZmlnUHJvdmlkZXJzID0gZmVhdHVyZS7JtXByb3ZpZGVycy5maWx0ZXIoXG4gICAgICAocCkgPT4gISh0eXBlb2YgcCA9PT0gJ29iamVjdCcgJiYgcCAhPT0gbnVsbCAmJiAncHJvdmlkZScgaW4gcCAmJiBwLnByb3ZpZGUgPT09IFJFUE9SVElOR19DT05GSUcpXG4gICAgKTtcbiAgICBwcm92aWRlcnMucHVzaCguLi5ub25Db25maWdQcm92aWRlcnMpO1xuICB9XG5cbiAgLy8gVW5pZmllZCBtZXJnZWQgY29uZmlndXJhdGlvblxuICBwcm92aWRlcnMucHVzaCh7IHByb3ZpZGU6IFJFUE9SVElOR19DT05GSUcsIHVzZVZhbHVlOiBjb25maWcgfSk7XG5cbiAgLy8gT2ZmbGluZSBhZGFwdGVycyByZXF1aXJlIGFuIGV4cGxpY2l0IGZlYXR1cmU7IG5vcm1hbCBzYXZlcyBhbHdheXMgcmVhY2ggdGhlIGJhY2tlbmQuXG4gIGlmICghaGFzSHR0cEZlYXR1cmUgJiYgIWhhc0xvY2FsRmVhdHVyZSkge1xuICAgIHByb3ZpZGVycy5wdXNoKFxuICAgICAgeyBwcm92aWRlOiBSZXBvcnREYXRhU291cmNlQWRhcHRlciwgdXNlQ2xhc3M6IG9wdGlvbnMuZGF0YVNvdXJjZUFkYXB0ZXIgPz8gSHR0cFJlcG9ydERhdGFTb3VyY2VBZGFwdGVyIH0sXG4gICAgICB7IHByb3ZpZGU6IFJlcG9ydFBlcnNpc3RlbmNlQWRhcHRlciwgdXNlQ2xhc3M6IG9wdGlvbnMucGVyc2lzdGVuY2VBZGFwdGVyID8/IEh0dHBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIgfSxcbiAgICAgIHsgcHJvdmlkZTogTWFzdGVyRGF0YVByb3ZpZGVyLCB1c2VDbGFzczogb3B0aW9ucy5tYXN0ZXJEYXRhUHJvdmlkZXIgPz8gSHR0cE1hc3RlckRhdGFBZGFwdGVyIH0sXG4gICAgICB7IHByb3ZpZGU6IFJlcG9ydFNjaGVtYURpc2NvdmVyeUFkYXB0ZXIsIHVzZUNsYXNzOiBvcHRpb25zLnNjaGVtYURpc2NvdmVyeUFkYXB0ZXIgPz8gSHR0cFJlcG9ydFNjaGVtYURpc2NvdmVyeUFkYXB0ZXIgfSxcbiAgICAgIHsgcHJvdmlkZTogUmVwb3J0TG9va3VwQWRhcHRlciwgdXNlQ2xhc3M6IG9wdGlvbnMubG9va3VwQWRhcHRlciA/PyBIdHRwUmVwb3J0TG9va3VwQWRhcHRlciB9XG4gICAgKTtcbiAgfVxuXG4gIC8vIENvbXBvbmVudCBvdmVycmlkZXNcbiAgaWYgKG9wdGlvbnMuZ3JpZENvbXBvbmVudCkge1xuICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogR1JJRF9DT01QT05FTlQsIHVzZVZhbHVlOiBvcHRpb25zLmdyaWRDb21wb25lbnQgfSk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5jaGFydENvbXBvbmVudCkge1xuICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogQ0hBUlRfQ09NUE9ORU5ULCB1c2VWYWx1ZTogb3B0aW9ucy5jaGFydENvbXBvbmVudCB9KTtcbiAgfVxuXG4gIC8vIEV4cGxpY2l0IGFkYXB0ZXIgb3ZlcnJpZGVzIGFsd2F5cyB3aW5cbiAgaWYgKG9wdGlvbnMuZGF0YVNvdXJjZUFkYXB0ZXIpIHtcbiAgICBwcm92aWRlcnMucHVzaCh7IHByb3ZpZGU6IFJlcG9ydERhdGFTb3VyY2VBZGFwdGVyLCB1c2VDbGFzczogb3B0aW9ucy5kYXRhU291cmNlQWRhcHRlciB9KTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLm1hc3RlckRhdGFQcm92aWRlcikge1xuICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogTWFzdGVyRGF0YVByb3ZpZGVyLCB1c2VDbGFzczogb3B0aW9ucy5tYXN0ZXJEYXRhUHJvdmlkZXIgfSk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5wZXJzaXN0ZW5jZUFkYXB0ZXIpIHtcbiAgICBwcm92aWRlcnMucHVzaCh7IHByb3ZpZGU6IFJlcG9ydFBlcnNpc3RlbmNlQWRhcHRlciwgdXNlQ2xhc3M6IG9wdGlvbnMucGVyc2lzdGVuY2VBZGFwdGVyIH0pO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMuc2NoZW1hRGlzY292ZXJ5QWRhcHRlcikge1xuICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogUmVwb3J0U2NoZW1hRGlzY292ZXJ5QWRhcHRlciwgdXNlQ2xhc3M6IG9wdGlvbnMuc2NoZW1hRGlzY292ZXJ5QWRhcHRlciB9KTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmxvb2t1cEFkYXB0ZXIpIHtcbiAgICBwcm92aWRlcnMucHVzaCh7IHByb3ZpZGU6IFJlcG9ydExvb2t1cEFkYXB0ZXIsIHVzZUNsYXNzOiBvcHRpb25zLmxvb2t1cEFkYXB0ZXIgfSk7XG4gIH1cblxuICAvLyBEeW5hbWljIFNlc3Npb24gQ29udGV4dCBQcm92aWRlcnNcbiAgaWYgKG9wdGlvbnMuc2Vzc2lvbkNvbnRleHRQcm92aWRlcikge1xuICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogUkVQT1JUX1NFU1NJT05fUFJPVklERVIsIHVzZUNsYXNzOiBvcHRpb25zLnNlc3Npb25Db250ZXh0UHJvdmlkZXIgfSk7XG4gIH1cblxuICAvLyBGbGV4aWJsZSBpbmxpbmUgc2Vzc2lvbiBzeW50YXg6IHNlc3Npb246ICgpID0+ICh7IC4uLiB9KVxuICBpZiAodHlwZW9mIG9wdGlvbnMuc2Vzc2lvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogUkVQT1JUX1NFU1NJT05fQ09OVEVYVCwgdXNlRmFjdG9yeTogb3B0aW9ucy5zZXNzaW9uIGFzICgpID0+IGFueSB9KTtcbiAgfSBlbHNlIGlmIChvcHRpb25zLnNlc3Npb24gIT09IHVuZGVmaW5lZCkge1xuICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogUkVQT1JUX1NFU1NJT05fQ09OVEVYVCwgdXNlVmFsdWU6IG9wdGlvbnMuc2Vzc2lvbiB9KTtcbiAgfSBlbHNlIGlmIChvcHRpb25zLnNlc3Npb25Db250ZXh0RmFjdG9yeSkge1xuICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogUkVQT1JUX1NFU1NJT05fQ09OVEVYVCwgdXNlRmFjdG9yeTogb3B0aW9ucy5zZXNzaW9uQ29udGV4dEZhY3RvcnkgfSk7XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5zZXNzaW9uQ29udGV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcHJvdmlkZXJzLnB1c2goeyBwcm92aWRlOiBSRVBPUlRfU0VTU0lPTl9DT05URVhULCB1c2VWYWx1ZTogb3B0aW9ucy5zZXNzaW9uQ29udGV4dCB9KTtcbiAgfVxuXG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMocHJvdmlkZXJzKTtcbn1cblxuLyoqIEFsaWFzIGZvciBwcm92aWRlQndheXNSZXBvcnQgKi9cbmV4cG9ydCBjb25zdCBwcm92aWRlQndheXNSZXBvcnRpbmcgPSBwcm92aWRlQndheXNSZXBvcnQ7XG5cbi8qKiBCYWNrd2FyZC1jb21wYXRpYmxlIGFsaWFzIGZvciBwcm92aWRlQndheXNSZXBvcnQgKi9cbmV4cG9ydCBjb25zdCBwcm92aWRlUmVwb3J0aW5nID0gcHJvdmlkZUJ3YXlzUmVwb3J0O1xuXG4vKiogU2VtYW50aWMgYWxpYXMgZm9yIEJXYXlzIHJlcG9ydCBwcm92aWRlcnMgKi9cbmV4cG9ydCBjb25zdCBid2F5c1JlcG9ydFByb3ZpZGVycyA9IHByb3ZpZGVCd2F5c1JlcG9ydDtcbiJdfQ==
|