@unovis/angular 1.6.6-stellar.1 → 1.6.7-stellar-beta.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/dist/lib/bundles/unovis-angular.umd.js +40 -18
- package/dist/lib/bundles/unovis-angular.umd.js.map +1 -1
- package/dist/lib/components/axis/axis.component.d.ts +11 -8
- package/dist/lib/components/brush/brush.component.d.ts +4 -1
- package/dist/lib/components/crosshair/crosshair.component.d.ts +9 -1
- package/dist/lib/components/graph/graph.component.d.ts +7 -1
- package/dist/lib/components/sankey/sankey.component.d.ts +3 -1
- package/dist/lib/components/timeline/timeline.component.d.ts +11 -5
- package/dist/lib/esm2015/components/axis/axis.component.js +6 -4
- package/dist/lib/esm2015/components/brush/brush.component.js +6 -4
- package/dist/lib/esm2015/components/crosshair/crosshair.component.js +8 -4
- package/dist/lib/esm2015/components/graph/graph.component.js +10 -4
- package/dist/lib/esm2015/components/sankey/sankey.component.js +6 -4
- package/dist/lib/esm2015/components/timeline/timeline.component.js +10 -4
- package/dist/lib/fesm2015/unovis-angular.js +40 -18
- package/dist/lib/fesm2015/unovis-angular.js.map +1 -1
- package/dist/lib/package.json +5 -5
- package/package.json +12 -8
|
@@ -21,8 +21,8 @@ export class VisGraphComponent {
|
|
|
21
21
|
(_c = this.componentContainer) === null || _c === void 0 ? void 0 : _c.render();
|
|
22
22
|
}
|
|
23
23
|
getConfig() {
|
|
24
|
-
const { duration, events, attributes, zoomScaleExtent, disableZoom, zoomEventFilter, disableDrag, disableBrush, zoomThrottledUpdateNodeThreshold, fitViewPadding, fitViewAlign, layoutType, layoutAutofit, layoutAutofitTolerance, layoutNonConnectedAside, layoutNodeGroup, layoutGroupOrder, layoutParallelNodesPerColumn, layoutParallelNodeSubGroup, layoutParallelSubGroupsPerRow, layoutParallelNodeSpacing, layoutParallelSubGroupSpacing, layoutParallelGroupSpacing, layoutParallelSortConnectionsByGroup, forceLayoutSettings, dagreLayoutSettings, layoutElkSettings, layoutElkNodeGroups, layoutElkGetNodeShape, linkWidth, linkStyle, linkBandWidth, linkArrow, linkStroke, linkDisabled, linkFlow, linkFlowAnimDuration, linkFlowParticleSize, linkFlowParticleSpeed, linkLabel, linkLabelShiftFromCenter, linkNeighborSpacing, linkCurvature, linkHighlightOnHover, linkSourcePointOffset, linkTargetPointOffset, selectedLinkId, nodeSize, nodeStrokeWidth, nodeShape, nodeGaugeValue, nodeGaugeFill, nodeGaugeAnimDuration, nodeIcon, nodeIconSize, nodeLabel, nodeLabelTrim, nodeLabelTrimMode, nodeLabelTrimLength, nodeSubLabel, nodeSubLabelTrim, nodeSubLabelTrimMode, nodeSubLabelTrimLength, nodeSideLabels, nodeBottomIcon, nodeDisabled, nodeFill, nodeStroke, nodeSort, nodeEnterPosition, nodeEnterScale, nodeExitPosition, nodeExitScale, nodeEnterCustomRenderFunction, nodeUpdateCustomRenderFunction, nodePartialUpdateCustomRenderFunction, nodeExitCustomRenderFunction, nodeOnZoomCustomRenderFunction, nodeSelectionHighlightMode, selectedNodeId, selectedNodeIds, panels, onNodeDragStart, onNodeDrag, onNodeDragEnd, onZoom, onZoomStart, onZoomEnd, onLayoutCalculated, onNodeSelectionBrush, onNodeSelectionDrag, onRenderComplete, shouldDataUpdate } = this;
|
|
25
|
-
const config = { duration, events, attributes, zoomScaleExtent, disableZoom, zoomEventFilter, disableDrag, disableBrush, zoomThrottledUpdateNodeThreshold, fitViewPadding, fitViewAlign, layoutType, layoutAutofit, layoutAutofitTolerance, layoutNonConnectedAside, layoutNodeGroup, layoutGroupOrder, layoutParallelNodesPerColumn, layoutParallelNodeSubGroup, layoutParallelSubGroupsPerRow, layoutParallelNodeSpacing, layoutParallelSubGroupSpacing, layoutParallelGroupSpacing, layoutParallelSortConnectionsByGroup, forceLayoutSettings, dagreLayoutSettings, layoutElkSettings, layoutElkNodeGroups, layoutElkGetNodeShape, linkWidth, linkStyle, linkBandWidth, linkArrow, linkStroke, linkDisabled, linkFlow, linkFlowAnimDuration, linkFlowParticleSize, linkFlowParticleSpeed, linkLabel, linkLabelShiftFromCenter, linkNeighborSpacing, linkCurvature, linkHighlightOnHover, linkSourcePointOffset, linkTargetPointOffset, selectedLinkId, nodeSize, nodeStrokeWidth, nodeShape, nodeGaugeValue, nodeGaugeFill, nodeGaugeAnimDuration, nodeIcon, nodeIconSize, nodeLabel, nodeLabelTrim, nodeLabelTrimMode, nodeLabelTrimLength, nodeSubLabel, nodeSubLabelTrim, nodeSubLabelTrimMode, nodeSubLabelTrimLength, nodeSideLabels, nodeBottomIcon, nodeDisabled, nodeFill, nodeStroke, nodeSort, nodeEnterPosition, nodeEnterScale, nodeExitPosition, nodeExitScale, nodeEnterCustomRenderFunction, nodeUpdateCustomRenderFunction, nodePartialUpdateCustomRenderFunction, nodeExitCustomRenderFunction, nodeOnZoomCustomRenderFunction, nodeSelectionHighlightMode, selectedNodeId, selectedNodeIds, panels, onNodeDragStart, onNodeDrag, onNodeDragEnd, onZoom, onZoomStart, onZoomEnd, onLayoutCalculated, onNodeSelectionBrush, onNodeSelectionDrag, onRenderComplete, shouldDataUpdate };
|
|
24
|
+
const { duration, events, attributes, zoomScaleExtent, disableZoom, zoomEventFilter, disableDrag, disableBrush, zoomThrottledUpdateNodeThreshold, fitViewPadding, fitViewAlign, layoutType, layoutAutofit, layoutAutofitTolerance, layoutNonConnectedAside, layoutNodeGroup, layoutGroupOrder, layoutParallelNodesPerColumn, layoutParallelNodeSubGroup, layoutParallelSubGroupsPerRow, layoutParallelNodeSpacing, layoutParallelSubGroupSpacing, layoutParallelGroupSpacing, layoutParallelSortConnectionsByGroup, forceLayoutSettings, dagreLayoutSettings, layoutElkSettings, layoutElkNodeGroups, layoutElkGetNodeShape, linkWidth, linkStyle, linkBandWidth, linkArrow, linkStroke, linkDisabled, linkFlow, linkFlowAnimDuration, linkFlowParticleSize, linkFlowParticleSpeed, linkLabel, linkLabelShiftFromCenter, linkNeighborSpacing, linkCurvature, linkHighlightOnHover, linkSourcePointOffset, linkTargetPointOffset, selectedLinkId, nodeSize, nodeStrokeWidth, nodeShape, nodeGaugeValue, nodeGaugeFill, nodeGaugeAnimDuration, nodeIcon, nodeIconSize, nodeLabel, nodeLabelTrim, nodeLabelTrimMode, nodeLabelTrimLength, nodeSubLabel, nodeSubLabelTrim, nodeSubLabelTrimMode, nodeSubLabelTrimLength, nodeSideLabels, nodeBottomIcon, nodeDisabled, nodeFill, nodeStroke, nodeSort, nodeEnterPosition, nodeEnterScale, nodeExitPosition, nodeExitScale, nodeEnterCustomRenderFunction, nodeUpdateCustomRenderFunction, nodePartialUpdateCustomRenderFunction, nodeExitCustomRenderFunction, nodeOnZoomCustomRenderFunction, nodeSelectionHighlightMode, selectedNodeId, selectedNodeIds, nodeExpandable, nodeChildren, onNodeExpand, panels, onNodeDragStart, onNodeDrag, onNodeDragEnd, onZoom, onZoomStart, onZoomEnd, onLayoutCalculated, onNodeSelectionBrush, onNodeSelectionDrag, onRenderComplete, shouldDataUpdate } = this;
|
|
25
|
+
const config = { duration, events, attributes, zoomScaleExtent, disableZoom, zoomEventFilter, disableDrag, disableBrush, zoomThrottledUpdateNodeThreshold, fitViewPadding, fitViewAlign, layoutType, layoutAutofit, layoutAutofitTolerance, layoutNonConnectedAside, layoutNodeGroup, layoutGroupOrder, layoutParallelNodesPerColumn, layoutParallelNodeSubGroup, layoutParallelSubGroupsPerRow, layoutParallelNodeSpacing, layoutParallelSubGroupSpacing, layoutParallelGroupSpacing, layoutParallelSortConnectionsByGroup, forceLayoutSettings, dagreLayoutSettings, layoutElkSettings, layoutElkNodeGroups, layoutElkGetNodeShape, linkWidth, linkStyle, linkBandWidth, linkArrow, linkStroke, linkDisabled, linkFlow, linkFlowAnimDuration, linkFlowParticleSize, linkFlowParticleSpeed, linkLabel, linkLabelShiftFromCenter, linkNeighborSpacing, linkCurvature, linkHighlightOnHover, linkSourcePointOffset, linkTargetPointOffset, selectedLinkId, nodeSize, nodeStrokeWidth, nodeShape, nodeGaugeValue, nodeGaugeFill, nodeGaugeAnimDuration, nodeIcon, nodeIconSize, nodeLabel, nodeLabelTrim, nodeLabelTrimMode, nodeLabelTrimLength, nodeSubLabel, nodeSubLabelTrim, nodeSubLabelTrimMode, nodeSubLabelTrimLength, nodeSideLabels, nodeBottomIcon, nodeDisabled, nodeFill, nodeStroke, nodeSort, nodeEnterPosition, nodeEnterScale, nodeExitPosition, nodeExitScale, nodeEnterCustomRenderFunction, nodeUpdateCustomRenderFunction, nodePartialUpdateCustomRenderFunction, nodeExitCustomRenderFunction, nodeOnZoomCustomRenderFunction, nodeSelectionHighlightMode, selectedNodeId, selectedNodeIds, nodeExpandable, nodeChildren, onNodeExpand, panels, onNodeDragStart, onNodeDrag, onNodeDragEnd, onZoom, onZoomStart, onZoomEnd, onLayoutCalculated, onNodeSelectionBrush, onNodeSelectionDrag, onRenderComplete, shouldDataUpdate };
|
|
26
26
|
const keys = Object.keys(config);
|
|
27
27
|
keys.forEach(key => { if (config[key] === undefined)
|
|
28
28
|
delete config[key]; });
|
|
@@ -30,7 +30,7 @@ export class VisGraphComponent {
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
VisGraphComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: VisGraphComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
33
|
-
VisGraphComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: VisGraphComponent, selector: "vis-graph", inputs: { duration: "duration", events: "events", attributes: "attributes", zoomScaleExtent: "zoomScaleExtent", disableZoom: "disableZoom", zoomEventFilter: "zoomEventFilter", disableDrag: "disableDrag", disableBrush: "disableBrush", zoomThrottledUpdateNodeThreshold: "zoomThrottledUpdateNodeThreshold", fitViewPadding: "fitViewPadding", fitViewAlign: "fitViewAlign", layoutType: "layoutType", layoutAutofit: "layoutAutofit", layoutAutofitTolerance: "layoutAutofitTolerance", layoutNonConnectedAside: "layoutNonConnectedAside", layoutNodeGroup: "layoutNodeGroup", layoutGroupOrder: "layoutGroupOrder", layoutParallelNodesPerColumn: "layoutParallelNodesPerColumn", layoutParallelNodeSubGroup: "layoutParallelNodeSubGroup", layoutParallelSubGroupsPerRow: "layoutParallelSubGroupsPerRow", layoutParallelNodeSpacing: "layoutParallelNodeSpacing", layoutParallelSubGroupSpacing: "layoutParallelSubGroupSpacing", layoutParallelGroupSpacing: "layoutParallelGroupSpacing", layoutParallelSortConnectionsByGroup: "layoutParallelSortConnectionsByGroup", forceLayoutSettings: "forceLayoutSettings", dagreLayoutSettings: "dagreLayoutSettings", layoutElkSettings: "layoutElkSettings", layoutElkNodeGroups: "layoutElkNodeGroups", layoutElkGetNodeShape: "layoutElkGetNodeShape", linkWidth: "linkWidth", linkStyle: "linkStyle", linkBandWidth: "linkBandWidth", linkArrow: "linkArrow", linkStroke: "linkStroke", linkDisabled: "linkDisabled", linkFlow: "linkFlow", linkFlowAnimDuration: "linkFlowAnimDuration", linkFlowParticleSize: "linkFlowParticleSize", linkFlowParticleSpeed: "linkFlowParticleSpeed", linkLabel: "linkLabel", linkLabelShiftFromCenter: "linkLabelShiftFromCenter", linkNeighborSpacing: "linkNeighborSpacing", linkCurvature: "linkCurvature", linkHighlightOnHover: "linkHighlightOnHover", linkSourcePointOffset: "linkSourcePointOffset", linkTargetPointOffset: "linkTargetPointOffset", selectedLinkId: "selectedLinkId", nodeSize: "nodeSize", nodeStrokeWidth: "nodeStrokeWidth", nodeShape: "nodeShape", nodeGaugeValue: "nodeGaugeValue", nodeGaugeFill: "nodeGaugeFill", nodeGaugeAnimDuration: "nodeGaugeAnimDuration", nodeIcon: "nodeIcon", nodeIconSize: "nodeIconSize", nodeLabel: "nodeLabel", nodeLabelTrim: "nodeLabelTrim", nodeLabelTrimMode: "nodeLabelTrimMode", nodeLabelTrimLength: "nodeLabelTrimLength", nodeSubLabel: "nodeSubLabel", nodeSubLabelTrim: "nodeSubLabelTrim", nodeSubLabelTrimMode: "nodeSubLabelTrimMode", nodeSubLabelTrimLength: "nodeSubLabelTrimLength", nodeSideLabels: "nodeSideLabels", nodeBottomIcon: "nodeBottomIcon", nodeDisabled: "nodeDisabled", nodeFill: "nodeFill", nodeStroke: "nodeStroke", nodeSort: "nodeSort", nodeEnterPosition: "nodeEnterPosition", nodeEnterScale: "nodeEnterScale", nodeExitPosition: "nodeExitPosition", nodeExitScale: "nodeExitScale", nodeEnterCustomRenderFunction: "nodeEnterCustomRenderFunction", nodeUpdateCustomRenderFunction: "nodeUpdateCustomRenderFunction", nodePartialUpdateCustomRenderFunction: "nodePartialUpdateCustomRenderFunction", nodeExitCustomRenderFunction: "nodeExitCustomRenderFunction", nodeOnZoomCustomRenderFunction: "nodeOnZoomCustomRenderFunction", nodeSelectionHighlightMode: "nodeSelectionHighlightMode", selectedNodeId: "selectedNodeId", selectedNodeIds: "selectedNodeIds", panels: "panels", onNodeDragStart: "onNodeDragStart", onNodeDrag: "onNodeDrag", onNodeDragEnd: "onNodeDragEnd", onZoom: "onZoom", onZoomStart: "onZoomStart", onZoomEnd: "onZoomEnd", onLayoutCalculated: "onLayoutCalculated", onNodeSelectionBrush: "onNodeSelectionBrush", onNodeSelectionDrag: "onNodeSelectionDrag", onRenderComplete: "onRenderComplete", shouldDataUpdate: "shouldDataUpdate", data: "data" }, providers: [{ provide: VisCoreComponent, useExisting: VisGraphComponent }], usesOnChanges: true, ngImport: i0, template: '', isInline: true });
|
|
33
|
+
VisGraphComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: VisGraphComponent, selector: "vis-graph", inputs: { duration: "duration", events: "events", attributes: "attributes", zoomScaleExtent: "zoomScaleExtent", disableZoom: "disableZoom", zoomEventFilter: "zoomEventFilter", disableDrag: "disableDrag", disableBrush: "disableBrush", zoomThrottledUpdateNodeThreshold: "zoomThrottledUpdateNodeThreshold", fitViewPadding: "fitViewPadding", fitViewAlign: "fitViewAlign", layoutType: "layoutType", layoutAutofit: "layoutAutofit", layoutAutofitTolerance: "layoutAutofitTolerance", layoutNonConnectedAside: "layoutNonConnectedAside", layoutNodeGroup: "layoutNodeGroup", layoutGroupOrder: "layoutGroupOrder", layoutParallelNodesPerColumn: "layoutParallelNodesPerColumn", layoutParallelNodeSubGroup: "layoutParallelNodeSubGroup", layoutParallelSubGroupsPerRow: "layoutParallelSubGroupsPerRow", layoutParallelNodeSpacing: "layoutParallelNodeSpacing", layoutParallelSubGroupSpacing: "layoutParallelSubGroupSpacing", layoutParallelGroupSpacing: "layoutParallelGroupSpacing", layoutParallelSortConnectionsByGroup: "layoutParallelSortConnectionsByGroup", forceLayoutSettings: "forceLayoutSettings", dagreLayoutSettings: "dagreLayoutSettings", layoutElkSettings: "layoutElkSettings", layoutElkNodeGroups: "layoutElkNodeGroups", layoutElkGetNodeShape: "layoutElkGetNodeShape", linkWidth: "linkWidth", linkStyle: "linkStyle", linkBandWidth: "linkBandWidth", linkArrow: "linkArrow", linkStroke: "linkStroke", linkDisabled: "linkDisabled", linkFlow: "linkFlow", linkFlowAnimDuration: "linkFlowAnimDuration", linkFlowParticleSize: "linkFlowParticleSize", linkFlowParticleSpeed: "linkFlowParticleSpeed", linkLabel: "linkLabel", linkLabelShiftFromCenter: "linkLabelShiftFromCenter", linkNeighborSpacing: "linkNeighborSpacing", linkCurvature: "linkCurvature", linkHighlightOnHover: "linkHighlightOnHover", linkSourcePointOffset: "linkSourcePointOffset", linkTargetPointOffset: "linkTargetPointOffset", selectedLinkId: "selectedLinkId", nodeSize: "nodeSize", nodeStrokeWidth: "nodeStrokeWidth", nodeShape: "nodeShape", nodeGaugeValue: "nodeGaugeValue", nodeGaugeFill: "nodeGaugeFill", nodeGaugeAnimDuration: "nodeGaugeAnimDuration", nodeIcon: "nodeIcon", nodeIconSize: "nodeIconSize", nodeLabel: "nodeLabel", nodeLabelTrim: "nodeLabelTrim", nodeLabelTrimMode: "nodeLabelTrimMode", nodeLabelTrimLength: "nodeLabelTrimLength", nodeSubLabel: "nodeSubLabel", nodeSubLabelTrim: "nodeSubLabelTrim", nodeSubLabelTrimMode: "nodeSubLabelTrimMode", nodeSubLabelTrimLength: "nodeSubLabelTrimLength", nodeSideLabels: "nodeSideLabels", nodeBottomIcon: "nodeBottomIcon", nodeDisabled: "nodeDisabled", nodeFill: "nodeFill", nodeStroke: "nodeStroke", nodeSort: "nodeSort", nodeEnterPosition: "nodeEnterPosition", nodeEnterScale: "nodeEnterScale", nodeExitPosition: "nodeExitPosition", nodeExitScale: "nodeExitScale", nodeEnterCustomRenderFunction: "nodeEnterCustomRenderFunction", nodeUpdateCustomRenderFunction: "nodeUpdateCustomRenderFunction", nodePartialUpdateCustomRenderFunction: "nodePartialUpdateCustomRenderFunction", nodeExitCustomRenderFunction: "nodeExitCustomRenderFunction", nodeOnZoomCustomRenderFunction: "nodeOnZoomCustomRenderFunction", nodeSelectionHighlightMode: "nodeSelectionHighlightMode", selectedNodeId: "selectedNodeId", selectedNodeIds: "selectedNodeIds", nodeExpandable: "nodeExpandable", nodeChildren: "nodeChildren", onNodeExpand: "onNodeExpand", panels: "panels", onNodeDragStart: "onNodeDragStart", onNodeDrag: "onNodeDrag", onNodeDragEnd: "onNodeDragEnd", onZoom: "onZoom", onZoomStart: "onZoomStart", onZoomEnd: "onZoomEnd", onLayoutCalculated: "onLayoutCalculated", onNodeSelectionBrush: "onNodeSelectionBrush", onNodeSelectionDrag: "onNodeSelectionDrag", onRenderComplete: "onRenderComplete", shouldDataUpdate: "shouldDataUpdate", data: "data" }, providers: [{ provide: VisCoreComponent, useExisting: VisGraphComponent }], usesOnChanges: true, ngImport: i0, template: '', isInline: true });
|
|
34
34
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: VisGraphComponent, decorators: [{
|
|
35
35
|
type: Component,
|
|
36
36
|
args: [{
|
|
@@ -201,6 +201,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
201
201
|
type: Input
|
|
202
202
|
}], selectedNodeIds: [{
|
|
203
203
|
type: Input
|
|
204
|
+
}], nodeExpandable: [{
|
|
205
|
+
type: Input
|
|
206
|
+
}], nodeChildren: [{
|
|
207
|
+
type: Input
|
|
208
|
+
}], onNodeExpand: [{
|
|
209
|
+
type: Input
|
|
204
210
|
}], panels: [{
|
|
205
211
|
type: Input
|
|
206
212
|
}], onNodeDragStart: [{
|
|
@@ -228,4 +234,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
228
234
|
}], data: [{
|
|
229
235
|
type: Input
|
|
230
236
|
}] } });
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvZ3JhcGgvZ3JhcGguY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFpQixLQUFLLEVBQWlCLE1BQU0sZUFBZSxDQUFBO0FBQzlFLE9BQU8sRUFDTCxLQUFLLEdBNkJOLE1BQU0sWUFBWSxDQUFBO0FBTW5CLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQTs7QUFRN0MsTUFBTSxPQUFPLGlCQUFpQjtJQXFYNUIsZUFBZTs7UUFDYixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksS0FBSyxDQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFBO1FBRWxELElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNqQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7U0FDbEM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFFLE9BQXNCOztRQUNqQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFBRSxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7U0FBRTtRQUN4RCxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQTtRQUMzQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7SUFDbkMsQ0FBQztJQUVPLFNBQVM7UUFDZixNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVB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S0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0csTUFBTTtzQkFBZCxLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBR0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUdHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFHRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBT0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vICEhISBUaGlzIGNvZGUgd2FzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkLiBZb3Ugc2hvdWxkIG5vdCBjaGFuZ2UgaXQgISEhXG5pbXBvcnQgeyBDb21wb25lbnQsIEFmdGVyVmlld0luaXQsIElucHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIEdyYXBoLFxuICBHcmFwaENvbmZpZ0ludGVyZmFjZSxcbiAgQ29udGFpbmVyQ29yZSxcbiAgR3JhcGhJbnB1dE5vZGUsXG4gIEdyYXBoSW5wdXRMaW5rLFxuICBWaXNFdmVudFR5cGUsXG4gIFZpc0V2ZW50Q2FsbGJhY2ssXG4gIFNwYWNpbmcsXG4gIEdyYXBoRml0Vmlld0FsaWdubWVudCxcbiAgR3JhcGhMYXlvdXRUeXBlLFxuICBTdHJpbmdBY2Nlc3NvcixcbiAgR3JhcGhGb3JjZUxheW91dFNldHRpbmdzLFxuICBHcmFwaERhZ3JlTGF5b3V0U2V0dGluZyxcbiAgR2VuZXJpY0FjY2Vzc29yLFxuICBHcmFwaEVsa0xheW91dFNldHRpbmdzLFxuICBHcmFwaE5vZGUsXG4gIE51bWVyaWNBY2Nlc3NvcixcbiAgR3JhcGhMaW5rU3R5bGUsXG4gIEdyYXBoTGlua0Fycm93U3R5bGUsXG4gIENvbG9yQWNjZXNzb3IsXG4gIEJvb2xlYW5BY2Nlc3NvcixcbiAgR3JhcGhDaXJjbGVMYWJlbCxcbiAgR3JhcGhMaW5rLFxuICBHcmFwaE5vZGVTaGFwZSxcbiAgVHJpbU1vZGUsXG4gIEdyYXBoTm9kZVNlbGVjdGlvbkhpZ2hsaWdodE1vZGUsXG4gIEdyYXBoUGFuZWxDb25maWcsXG4gIEdyYXBoSW5wdXREYXRhLFxuICBHcmFwaERhdGFNb2RlbCxcbn0gZnJvbSAnQHVub3Zpcy90cydcbmltcG9ydCB7IEVsa1NoYXBlIH0gZnJvbSAnZWxranMnXG5pbXBvcnQgeyBTZWxlY3Rpb24gfSBmcm9tICdkMy1zZWxlY3Rpb24nXG5pbXBvcnQgeyBEM0RyYWdFdmVudCB9IGZyb20gJ2QzLWRyYWcnXG5pbXBvcnQgeyBEM1pvb21FdmVudCwgWm9vbVRyYW5zZm9ybSB9IGZyb20gJ2QzLXpvb20nXG5pbXBvcnQgeyBEM0JydXNoRXZlbnQgfSBmcm9tICdkMy1icnVzaCdcbmltcG9ydCB7IFZpc0NvcmVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2aXMtZ3JhcGgnLFxuICB0ZW1wbGF0ZTogJycsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFZpc0NvcmVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBWaXNHcmFwaENvbXBvbmVudCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgVmlzR3JhcGhDb21wb25lbnQ8TiBleHRlbmRzIEdyYXBoSW5wdXROb2RlLCBMIGV4dGVuZHMgR3JhcGhJbnB1dExpbms+IGltcGxlbWVudHMgR3JhcGhDb25maWdJbnRlcmZhY2U8TiwgTD4sIEFmdGVyVmlld0luaXQge1xuICAvKiogQW5pbWF0aW9uIGR1cmF0aW9uIG9mIHRoZSBkYXRhIHVwZGF0ZSB0cmFuc2l0aW9ucyBpbiBtaWxsaXNlY29uZHMuIERlZmF1bHQ6IGA2MDBgICovXG4gIEBJbnB1dCgpIGR1cmF0aW9uPzogbnVtYmVyXG5cbiAgLyoqIEV2ZW50cyBjb25maWd1cmF0aW9uLiBBbiBvYmplY3QgY29udGFpbmluZyBwcm9wZXJ0aWVzIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0OlxuICAgKlxuICAgKiBgYGBcbiAgICoge1xuICAgKiBcXFtzZWxlY3RvclN0cmluZ106IHtcbiAgICogICAgIFxcW2V2ZW50VHlwZV06IGNhbGxiYWNrRnVuY3Rpb25cbiAgICogIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICogZS5nLjpcbiAgICogYGBgXG4gICAqIHtcbiAgICogXFxbQXJlYS5zZWxlY3RvcnMuYXJlYV06IHtcbiAgICogICAgY2xpY2s6IChkKSA9PiBjb25zb2xlLmxvZyhcIkNsaWNrZWQgQXJlYVwiLCBkKVxuICAgKiAgfVxuICAgKiB9XG4gICAqIGBgYCAqL1xuICBASW5wdXQoKSBldmVudHM/OiB7XG4gICAgW3NlbGVjdG9yOiBzdHJpbmddOiB7XG4gICAgICBbZXZlbnRUeXBlIGluIFZpc0V2ZW50VHlwZV0/OiBWaXNFdmVudENhbGxiYWNrXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBZb3UgY2FuIHNldCBldmVyeSBTVkcgYW5kIEhUTUwgdmlzdWFsaXphdGlvbiBvYmplY3QgdG8gaGF2ZSBhIGN1c3RvbSBET00gYXR0cmlidXRlcywgd2hpY2ggaXMgdXNlZnVsXG4gICAqIHdoZW4geW91IHdhbnQgdG8gZG8gdW5pdCBvciBlbmQtdG8tZW5kIHRlc3RpbmcuIEF0dHJpYnV0ZXMgY29uZmlndXJhdGlvbiBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOlxuICAgKlxuICAgKiBgYGBcbiAgICoge1xuICAgKiBcXFtzZWxlY3RvclN0cmluZ106IHtcbiAgICogICAgIFxcW2F0dHJpYnV0ZU5hbWVdOiBhdHRyaWJ1dGUgY29uc3RhbnQgdmFsdWUgb3IgYWNjZXNzb3IgZnVuY3Rpb25cbiAgICogIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICogZS5nLjpcbiAgICogYGBgXG4gICAqIHtcbiAgICogXFxbQXJlYS5zZWxlY3RvcnMuYXJlYV06IHtcbiAgICogICAgXCJ0ZXN0LXZhbHVlXCI6IGQgPT4gZC52YWx1ZVxuICAgKiAgfVxuICAgKiB9XG4gICAqIGBgYCAqL1xuICBASW5wdXQoKSBhdHRyaWJ1dGVzPzoge1xuICAgIFtzZWxlY3Rvcjogc3RyaW5nXToge1xuICAgICAgW2F0dHI6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCAoKGRhdHVtOiBhbnkpID0+IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4pO1xuICAgIH07XG4gIH1cblxuICAvKiogWm9vbSBsZXZlbCBjb25zdHJhaW50cy4gRGVmYXVsdDogWzAuMzUsIDEuMjVdICovXG4gIEBJbnB1dCgpIHpvb21TY2FsZUV4dGVudD86IFtudW1iZXIsIG51bWJlcl1cblxuICAvKiogRGlzYWJsZSB6b29taW5nLiBEZWZhdWx0OiBgZmFsc2VgICovXG4gIEBJbnB1dCgpIGRpc2FibGVab29tPzogYm9vbGVhblxuXG4gIC8qKiBDdXN0b20gWm9vbSBldmVudCBmaWx0ZXIgdG8gYmV0dGVyIGNvbnRyb2wgd2hpY2ggYWN0aW9ucyBzaG91bGQgdHJpZ2dlciB6b29taW5nLlxuICAgKiBMZWFybiBtb3JlOiBodHRwczovL2QzanMub3JnL2QzLXpvb20jem9vbV9maWx0ZXIuXG4gICAqIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHpvb21FdmVudEZpbHRlcj86IChldmVudDogUG9pbnRlckV2ZW50KSA9PiBib29sZWFuXG5cbiAgLyoqIERpc2FibGUgbm9kZSBkcmFnZ2luZy4gRGVmYXVsdDogYGZhbHNlYCAqL1xuICBASW5wdXQoKSBkaXNhYmxlRHJhZz86IGJvb2xlYW5cblxuICAvKiogRGlzYWJsZSBicnVzaCBmb3IgbXVsdGlwbGUgbm9kZSBzZWxlY3Rpb24uIERlZmF1bHQ6IGBmYWxzZWAgKi9cbiAgQElucHV0KCkgZGlzYWJsZUJydXNoPzogYm9vbGVhblxuXG4gIC8qKiBJbnRlcnZhbCB0byByZS1yZW5kZXIgdGhlIGdyYXBoIHdoZW4gem9vbWluZy4gRGVmYXVsdDogYDEwMGAgKi9cbiAgQElucHV0KCkgem9vbVRocm90dGxlZFVwZGF0ZU5vZGVUaHJlc2hvbGQ/OiBudW1iZXJcblxuICAvKiogUGFkZGluZyBmb3IgdGhlIGdyYXBoIHdoZW4gZml0dGluZyB0byBjb250YWluZXIuIERlZmF1bHQ6IGA1MGAgKi9cbiAgQElucHV0KCkgZml0Vmlld1BhZGRpbmc/OiBTcGFjaW5nIHwgbnVtYmVyXG5cbiAgLyoqIERlZmF1bHQgYWxpZ25tZW50IHdoZW4gZml0dGluZyB0aGUgZ3JhcGggdmlldy4gRGVmYXVsdDogYEdyYXBoRml0Vmlld0FsaWdubWVudC5DZW50ZXJgICovXG4gIEBJbnB1dCgpIGZpdFZpZXdBbGlnbj86IEdyYXBoRml0Vmlld0FsaWdubWVudFxuXG4gIC8qKiBUeXBlIG9mIHRoZSBncmFwaCBsYXlvdXQuIERlZmF1bHQ6IGBHcmFwaExheW91dFR5cGUuRm9yY2VgICovXG4gIEBJbnB1dCgpIGxheW91dFR5cGU/OiBHcmFwaExheW91dFR5cGUgfCBzdHJpbmdcblxuICAvKiogRml0IHRoZSBncmFwaCB0byBjb250YWluZXIgb24gZGF0YSBvciBjb25maWcgdXBkYXRlcywgb3Igb24gY29udGFpbmVyIHJlc2l6ZS4gRGVmYXVsdDogYHRydWVgICovXG4gIEBJbnB1dCgpIGxheW91dEF1dG9maXQ/OiBib29sZWFuXG5cbiAgLyoqIFRvbGVyYW5jZSBjb25zdGFudCBkZWZpbmluZyB3aGV0aGVyIHRoZSBncmFwaCBzaG91bGQgYmUgZml0dGVkIHRvIGNvbnRhaW5lclxuICAgKiAob24gZGF0YSBvciBjb25maWcgdXBkYXRlLCBvciBjb250YWluZXIgcmVzaXplKSBhZnRlciBhIHpvb20gLyBwYW4gaW50ZXJhY3Rpb24gb3Igbm90LlxuICAgKiBgMGAg4oCUIFN0b3AgZml0dGluZyBhZnRlciBhbnkgcGFuIG9yIHpvb21cbiAgICogYE51bWJlci5QT1NJVElWRV9JTkZJTklUWWAg4oCUIEFsd2F5cyBmaXRcbiAgICogRGVmYXVsdDogYDguMGAgKi9cbiAgQElucHV0KCkgbGF5b3V0QXV0b2ZpdFRvbGVyYW5jZT86IG51bWJlclxuXG4gIC8qKiBQbGFjZSBub24tY29ubmVjdGVkIG5vZGVzIGF0IHRoZSBib3R0b20gb2YgdGhlIGdyYXBoLiBEZWZhdWx0OiBgZmFsc2VgICovXG4gIEBJbnB1dCgpIGxheW91dE5vbkNvbm5lY3RlZEFzaWRlPzogYm9vbGVhblxuXG4gIC8qKiBOb2RlIGdyb3VwIGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgKiBPbmx5IGZvciBgR3JhcGhMYXlvdXRUeXBlLlBhcmFsbGVsYCwgYEdyYXBoTGF5b3V0VHlwZS5QYXJhbGxlbEhvcml6b250YWxgIGFuZCBgR3JhcGhMYXlvdXRUeXBlLkNvbmNlbnRyaWNgIGxheW91dHMuXG4gICAqIERlZmF1bHQ6IGBub2RlID0+IG5vZGUuZ3JvdXBgICovXG4gIEBJbnB1dCgpIGxheW91dE5vZGVHcm91cD86IFN0cmluZ0FjY2Vzc29yPE4+XG5cbiAgLyoqIE9yZGVyIG9mIHRoZSBsYXlvdXQgZ3JvdXBzLlxuICAgKiBPbmx5IGZvciBgR3JhcGhMYXlvdXRUeXBlLlBhcmFsbGVsYCwgYEdyYXBoTGF5b3V0VHlwZS5QYXJhbGxlbEhvcml6b250YWxgIGFuZCBgR3JhcGhMYXlvdXRUeXBlLkNvbmNlbnRyaWNgIGxheW91dHMuXG4gICAqIERlZmF1bHQ6IGBbXWAgKi9cbiAgQElucHV0KCkgbGF5b3V0R3JvdXBPcmRlcj86IHN0cmluZ1tdXG5cbiAgLyoqIFNldHMgdGhlIG51bWJlciBvZiBub2RlcyBpbiBhIHN1Yi1ncm91cCBhZnRlciB3aGljaCB0aGV5J2xsIGNvbnRpbnVlIG9uIHRoZSBuZXh0IGNvbHVtbiAob3Igcm93IGlmIGBsYXlvdXRUeXBlYCBpc1xuICAgKiBgR3JhcGhMYXlvdXRUeXBlLlBhcmFsbGVsSG9yaXpvbnRhbGApLlxuICAgKiBPbmx5IGZvciBgR3JhcGhMYXlvdXRUeXBlLlBhcmFsbGVsYCBhbmQgYEdyYXBoTGF5b3V0VHlwZS5QYXJhbGxlbEhvcml6b250YWxgIGxheW91dHMuXG4gICAqIERlZmF1bHQ6IGA2YCAqL1xuICBASW5wdXQoKSBsYXlvdXRQYXJhbGxlbE5vZGVzUGVyQ29sdW1uPzogbnVtYmVyXG5cbiAgLyoqIE5vZGUgc3ViLWdyb3VwIGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgKiBPbmx5IGZvciBgR3JhcGhMYXlvdXRUeXBlLlBhcmFsbGVsYCBhbmQgYEdyYXBoTGF5b3V0VHlwZS5QYXJhbGxlbEhvcml6b250YWxgIGxheW91dHMuXG4gICAqIERlZmF1bHQ6IGBub2RlID0+IG5vZGUuc3ViZ3JvdXBgICovXG4gIEBJbnB1dCgpIGxheW91dFBhcmFsbGVsTm9kZVN1Ykdyb3VwPzogU3RyaW5nQWNjZXNzb3I8Tj5cblxuICAvKiogTnVtYmVyIG9mIHN1Yi1ncm91cHMgcGVyIHJvdyAob3IgY29sdW1uIGlmIGBsYXlvdXRUeXBlYCBpcyBgR3JhcGhMYXlvdXRUeXBlLlBhcmFsbGVsSG9yaXpvbnRhbGApIGluIGEgZ3JvdXAuXG4gICAqIE9ubHkgZm9yIGBHcmFwaExheW91dFR5cGUuUGFyYWxsZWxgIGFuZCBgR3JhcGhMYXlvdXRUeXBlLlBhcmFsbGVsSG9yaXpvbnRhbGAgbGF5b3V0cy5cbiAgICogRGVmYXVsdDogYDFgICovXG4gIEBJbnB1dCgpIGxheW91dFBhcmFsbGVsU3ViR3JvdXBzUGVyUm93PzogbnVtYmVyXG5cbiAgLyoqIFNwYWNpbmcgYmV0d2VlbiBub2RlcywgZHluYW1pYyBieSBkZWZhdWx0LlxuICAgKiBPbmx5IGZvciBgR3JhcGhMYXlvdXRUeXBlLlBhcmFsbGVsYCBhbmQgYEdyYXBoTGF5b3V0VHlwZS5QYXJhbGxlbEhvcml6b250YWxgIGxheW91dHMuXG4gICAqIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIGxheW91dFBhcmFsbGVsTm9kZVNwYWNpbmc/OiBudW1iZXIgfCBbbnVtYmVyLCBudW1iZXJdXG5cbiAgLyoqIFNwYWNpbmcgYmV0d2VlbiBzdWItZ3JvdXBzLlxuICAgKiBPbmx5IGZvciBgR3JhcGhMYXlvdXRUeXBlLlBhcmFsbGVsYCBhbmQgYEdyYXBoTGF5b3V0VHlwZS5QYXJhbGxlbEhvcml6b250YWxgIGxheW91dHMuXG4gICAqIERlZmF1bHQ6IGA0MGAgKi9cbiAgQElucHV0KCkgbGF5b3V0UGFyYWxsZWxTdWJHcm91cFNwYWNpbmc/OiBudW1iZXJcblxuICAvKiogU3BhY2luZyBiZXR3ZWVuIGdyb3Vwcy5cbiAgICogT25seSBmb3IgYEdyYXBoTGF5b3V0VHlwZS5QYXJhbGxlbGAgYW5kIGBHcmFwaExheW91dFR5cGUuUGFyYWxsZWxIb3Jpem9udGFsYCBsYXlvdXRzLlxuICAgKiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBsYXlvdXRQYXJhbGxlbEdyb3VwU3BhY2luZz86IG51bWJlclxuXG4gIC8qKiBTZXQgYSBncm91cCBieSBuYW1lIHRvIGhhdmUgcHJpb3JpdHkgaW4gc29ydGluZyB0aGUgZ3JhcGggbGlua3MuXG4gICAqIE9ubHkgZm9yIGBHcmFwaExheW91dFR5cGUuUGFyYWxsZWxgIGFuZCBgR3JhcGhMYXlvdXRUeXBlLlBhcmFsbGVsSG9yaXpvbnRhbGAgbGF5b3V0cy5cbiAgICogRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgbGF5b3V0UGFyYWxsZWxTb3J0Q29ubmVjdGlvbnNCeUdyb3VwPzogc3RyaW5nXG5cbiAgLyoqIEZvcmNlIExheW91dCBzZXR0aW5ncywgc2VlIHRoZSBgZDMtZm9yY2VgIHBhY2thZ2UgZm9yIG1vcmUgZGV0YWlscyAqL1xuICBASW5wdXQoKSBmb3JjZUxheW91dFNldHRpbmdzPzogR3JhcGhGb3JjZUxheW91dFNldHRpbmdzPE4sIEw+XG5cbiAgLyoqIERhcmdlIExheW91dCBzZXR0aW5ncywgc2VlIHRoZSBgZGFncmVqc2AgcGFja2FnZVxuICAgKiBmb3IgbW9yZSBkZXRhaWxzOiBodHRwczovL2dpdGh1Yi5jb20vZGFncmVqcy9kYWdyZS93aWtpI2NvbmZpZ3VyaW5nLXRoZS1sYXlvdXQgKi9cbiAgQElucHV0KCkgZGFncmVMYXlvdXRTZXR0aW5ncz86IEdyYXBoRGFncmVMYXlvdXRTZXR0aW5nXG5cbiAgLyoqIEVMSyBsYXlvdXQgb3B0aW9ucywgc2VlIHRoZSBgZWxranNgIHBhY2thZ2UgZm9yIG1vcmUgZGV0YWlsczogaHR0cHM6Ly9naXRodWIuY29tL2tpZWxlci9lbGtqcy5cbiAgICogSWYgeW91IHdhbnQgdG8gc3BlY2lmeSBjdXN0b20gbGF5b3V0IG9wdGlvbiBmb3IgZWFjaCBub2RlIGdyb3VwLCB5b3UgY2FuIHByb3ZpZGUgYW4gYWNjZXNzb3IgZnVuY3Rpb24gdGhhdFxuICAgKiByZWNlaXZlcyBncm91cCBuYW1lICgncm9vdCcgZm9yIHRoZSB0b3AtbGV2ZWwgY29uZmlndXJhdGlvbikgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IGFuZCByZXR1cm5zIGFuIG9iamVjdCBjb250YWluaW5nXG4gICAqIGxheW91dCBvcHRpb25zLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBsYXlvdXRFbGtTZXR0aW5ncz86IEdlbmVyaWNBY2Nlc3NvcjxHcmFwaEVsa0xheW91dFNldHRpbmdzLCBzdHJpbmc+IHwgdW5kZWZpbmVkXG5cbiAgLyoqIEFycmF5IG9mIGFjY2Vzc29yIGZ1bmN0aW9ucyB0byBkZWZpbmUgbmVzdGVkIG5vZGUgZ3JvdXBzIGZvciB0aGUgRUxLIExheWVyZWQgbGF5b3V0LlxuICAgKiBFLmcuOiBgW24gPT4gbi5ncm91cCwgbiA9PiBuLnN1Ykdyb3VwXWAuXG4gICAqIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIGxheW91dEVsa05vZGVHcm91cHM/OiBTdHJpbmdBY2Nlc3NvcjxOPltdXG5cbiAgLyoqIEEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHBlciBncmFwaCBub2RlIHRvIGdldCB0aGUgRUxLIHNoYXBlIG9iamVjdC5cbiAgICogVGhpcyBlbmFibGVzIHlvdSB0byBwcm92aWRlIGN1c3RvbSBub2RlIGRpbWVuc2lvbnMgKHRocm91Z2ggdGhlIGB3aWR0aGAgYW5kIGBoZWlnaHRgIHByb3BlcnRpZXMpXG4gICAqIGFuZCBjb29yZGluYXRlcyAodGhyb3VnaCB0aGUgYHhgIGFuZCBgeWAgcHJvcGVydGllcykgaWYgbmVlZGVkLlxuICAgKiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBsYXlvdXRFbGtHZXROb2RlU2hhcGU/OiAoZDogR3JhcGhOb2RlPE4sIEw+LCBpOiBudW1iZXIpID0+IEVsa1NoYXBlXG5cbiAgLyoqIExpbmsgd2lkdGggYWNjZXNzb3IgZnVuY3Rpb24gb3QgY29uc3RhbnQgdmFsdWUuIERlZmF1bHQ6IGAxYCAqL1xuICBASW5wdXQoKSBsaW5rV2lkdGg/OiBOdW1lcmljQWNjZXNzb3I8TD5cblxuICAvKiogTGluayBzdHlsZSBhY2Nlc3NvciBmdW5jdGlvbiBvciBjb25zdGFudCB2YWx1ZS4gRGVmYXVsdDogYEdyYXBoTGlua1N0eWxlLlNvbGlkYCAqL1xuICBASW5wdXQoKSBsaW5rU3R5bGU/OiBHZW5lcmljQWNjZXNzb3I8R3JhcGhMaW5rU3R5bGUsIEw+XG5cbiAgLyoqIExpbmsgYmFuZCB3aWR0aCBhY2Nlc3NvciBmdW5jdGlvbiBvciBjb25zdGFudCB2YWx1ZS4gRGVmYXVsdDogYDBgICovXG4gIEBJbnB1dCgpIGxpbmtCYW5kV2lkdGg/OiBOdW1lcmljQWNjZXNzb3I8TD5cblxuICAvKiogTGluayBhcnJvdyBhY2Nlc3NvciBmdW5jdGlvbiBvciBjb25zdGFudCB2YWx1ZS4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgbGlua0Fycm93PzogR2VuZXJpY0FjY2Vzc29yPEdyYXBoTGlua0Fycm93U3R5bGUgfCBzdHJpbmcgfCBib29sZWFuLCBMPiB8IHVuZGVmaW5lZFxuXG4gIC8qKiBMaW5rIHN0cm9rZSBjb2xvciBhY2Nlc3NvciBmdW5jdGlvbiBvciBjb25zdGFudCB2YWx1ZS4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgbGlua1N0cm9rZT86IENvbG9yQWNjZXNzb3I8TD5cblxuICAvKiogTGluayBkaXNhYmxlZCBzdGF0ZSBhY2Nlc3NvciBmdW5jdGlvbiBvciBjb25zdGFudCB2YWx1ZS4gRGVmYXVsdDogYGZhbHNlYCAqL1xuICBASW5wdXQoKSBsaW5rRGlzYWJsZWQ/OiBCb29sZWFuQWNjZXNzb3I8TD5cblxuICAvKiogTGluayBmbG93IGFuaW1hdGlvbiBhY2Nlc3NvciBmdW5jdGlvbiBvciBjb25zdGFudCB2YWx1ZS4gRGVmYXVsdDogYGZhbHNlYCAqL1xuICBASW5wdXQoKSBsaW5rRmxvdz86IEJvb2xlYW5BY2Nlc3NvcjxMPlxuXG4gIC8qKiBBbmltYXRpb24gZHVyYXRpb24gb2YgdGhlIGZsb3cgKHRyYWZmaWMpIGNpcmNsZXMgaW4gbWlsbGlzZWNvbmRzLiBJZiBgbGlua0Zsb3dQYXJ0aWNsZVNwZWVkYCBpcyBwcm92aWRlZCxcbiAgICogdGhpcyBkdXJhdGlvbiB3aWxsIGJlIGNhbGN1bGF0ZWQgYmFzZWQgb24gdGhlIGxpbmsgbGVuZ3RoIGFuZCBwYXJ0aWNsZSBzcGVlZC4gRGVmYXVsdDogYDIwMDAwYCAqL1xuICBASW5wdXQoKSBsaW5rRmxvd0FuaW1EdXJhdGlvbj86IE51bWVyaWNBY2Nlc3NvcjxMPlxuXG4gIC8qKiBTaXplIG9mIHRoZSBtb3ZpbmcgcGFydGljbGVzIHRoYXQgcmVwcmVzZW50IHRyYWZmaWMgZmxvdy4gRGVmYXVsdDogYDJgICovXG4gIEBJbnB1dCgpIGxpbmtGbG93UGFydGljbGVTaXplPzogTnVtZXJpY0FjY2Vzc29yPEw+XG5cbiAgLyoqIFNwZWVkIG9mIHRoZSBtb3ZpbmcgcGFydGljbGVzIGluIHBpeGVscyBwZXIgc2Vjb25kLiBUaGlzIHByb3BlcnR5IHRha2VzIHByZWNlZGVuY2Ugb3ZlciBgbGlua0Zsb3dBbmltRHVyYXRpb25gLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBsaW5rRmxvd1BhcnRpY2xlU3BlZWQ/OiBOdW1lcmljQWNjZXNzb3I8TD5cblxuICAvKiogTGluayBsYWJlbCBhY2Nlc3NvciBmdW5jdGlvbiBvciBjb25zdGFudCB2YWx1ZS4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgbGlua0xhYmVsPzogR2VuZXJpY0FjY2Vzc29yPEdyYXBoQ2lyY2xlTGFiZWwgfCBHcmFwaENpcmNsZUxhYmVsW10sIEw+IHwgdW5kZWZpbmVkXG5cbiAgLyoqIFNoaWZ0IGxhYmVsIGFsb25nIHRoZSBsaW5rIGNlbnRlciBhIGxpdHRsZSBiaXQgdG8gYXZvaWQgb3ZlcmxhcCB3aXRoIHRoZSBsaW5rIGFycm93LiBEZWZhdWx0OiBgdHJ1ZWAgKi9cbiAgQElucHV0KCkgbGlua0xhYmVsU2hpZnRGcm9tQ2VudGVyPzogQm9vbGVhbkFjY2Vzc29yPEw+XG5cbiAgLyoqIFNwYWNpbmcgYmV0d2VlbiBuZWlnaGJvcmluZyBsaW5rcy4gRGVmYXVsdDogYDhgICovXG4gIEBJbnB1dCgpIGxpbmtOZWlnaGJvclNwYWNpbmc/OiBudW1iZXJcblxuICAvKiogQ3VydmF0dXJlIG9mIHRoZSBsaW5rLiBSZWNvbW1lbmRlZCB2YWx1ZSByYW5nZTogWzA6MS41XS5cbiAgICogYDBgIC0gc3RyYWlnaHQgbGluZSxcbiAgICogYDFgIC0gbmljZSBjdXJ2YXR1cmUsXG4gICAqIGAxLjVgIC0gdmVyeSBjdXJ2ZS5cbiAgICogRGVmYXVsdDogYDBgICovXG4gIEBJbnB1dCgpIGxpbmtDdXJ2YXR1cmU/OiBOdW1lcmljQWNjZXNzb3I8TD5cblxuICAvKiogSGlnaGxpZ2h0IGxpbmtzIG9uIGhvdmVyLiBEZWZhdWx0OiBgdHJ1ZWAgKi9cbiAgQElucHV0KCkgbGlua0hpZ2hsaWdodE9uSG92ZXI/OiBib29sZWFuXG5cbiAgLyoqIE9mZnNldCBbeCx5XSBpbiBwaXhlbHMgZnJvbSB0aGUgc291cmNlIG5vZGUncyBjZW50ZXIgcG9pbnQgd2hlcmUgdGhlIGxpbmsgc2hvdWxkIHN0YXJ0LiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBsaW5rU291cmNlUG9pbnRPZmZzZXQ/OiBHZW5lcmljQWNjZXNzb3I8W251bWJlciwgbnVtYmVyXSwgR3JhcGhMaW5rPE4sIEw+PlxuXG4gIC8qKiBPZmZzZXQgW3gseV0gaW4gcGl4ZWxzIGZyb20gdGhlIHRhcmdldCBub2RlJ3MgY2VudGVyIHBvaW50IHdoZXJlIHRoZSBsaW5rIHNob3VsZCBlbmQuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIGxpbmtUYXJnZXRQb2ludE9mZnNldD86IEdlbmVyaWNBY2Nlc3NvcjxbbnVtYmVyLCBudW1iZXJdLCBHcmFwaExpbms8TiwgTD4+XG5cbiAgLyoqIFNldCBzZWxlY3RlZCBsaW5rIGJ5IGl0cyB1bmlxdWUgaWQuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHNlbGVjdGVkTGlua0lkPzogbnVtYmVyIHwgc3RyaW5nXG5cbiAgLyoqIE5vZGUgc2l6ZSBhY2Nlc3NvciBmdW5jdGlvbiBvciBjb25zdGFudCB2YWx1ZS4gRGVmYXVsdDogYDMwYCAqL1xuICBASW5wdXQoKSBub2RlU2l6ZT86IE51bWVyaWNBY2Nlc3NvcjxOPlxuXG4gIC8qKiBOb2RlIHN0cm9rZSB3aWR0aCBhY2Nlc3NvciBmdW5jdGlvbiBvciBjb25zdGFudCB2YWx1ZS4gRGVmYXVsdDogYDNgICovXG4gIEBJbnB1dCgpIG5vZGVTdHJva2VXaWR0aD86IE51bWVyaWNBY2Nlc3NvcjxOPlxuXG4gIC8qKiBOb2RlIHNoYXBlIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIGNvbnN0YW50IHZhbHVlLiBEZWZhdWx0OiBgR3JhcGhOb2RlU2hhcGUuQ2lyY2xlYCAqL1xuICBASW5wdXQoKSBub2RlU2hhcGU/OiBHZW5lcmljQWNjZXNzb3I8R3JhcGhOb2RlU2hhcGUgfCBzdHJpbmcsIE4+XG5cbiAgLyoqIE5vZGUgZ2F1Z2Ugb3V0bGluZSBhY2Nlc3NvciBmdW5jdGlvbiBvciBjb25zdGFudCB2YWx1ZSBpbiB0aGUgcmFuZ2UgWzAsMTAwXS4gRGVmYXVsdDogYDBgICovXG4gIEBJbnB1dCgpIG5vZGVHYXVnZVZhbHVlPzogTnVtZXJpY0FjY2Vzc29yPE4+XG5cbiAgLyoqIE5vZGUgZ2F1Z2Ugb3V0bGluZSBmaWxsIGNvbG9yIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIGNvbnN0YW50IHZhbHVlLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBub2RlR2F1Z2VGaWxsPzogQ29sb3JBY2Nlc3NvcjxOPlxuXG4gIC8qKiBBbmltYXRpb24gZHVyYXRpb24gb2YgdGhlIG5vZGUgZ2F1Z2Ugb3V0bGluZS4gRGVmYXVsdDogYDE1MDBgICovXG4gIEBJbnB1dCgpIG5vZGVHYXVnZUFuaW1EdXJhdGlvbj86IG51bWJlclxuXG4gIC8qKiBOb2RlIGNlbnRyYWwgaWNvbiBhY2Nlc3NvciBmdW5jdGlvbiBvciBjb25zdGFudCB2YWx1ZS4gRGVmYXVsdDogYG5vZGUgPT4gbm9kZS5pY29uYCAqL1xuICBASW5wdXQoKSBub2RlSWNvbj86IFN0cmluZ0FjY2Vzc29yPE4+XG5cbiAgLyoqIE5vZGUgY2VudHJhbCBpY29uIHNpemUgYWNjZXNzb3IgZnVuY3Rpb24gb3IgY29uc3RhbnQgdmFsdWUuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIG5vZGVJY29uU2l6ZT86IE51bWVyaWNBY2Nlc3NvcjxOPlxuXG4gIC8qKiBOb2RlIGxhYmVsIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIGNvbnN0YW50IHZhbHVlLiBEZWZhdWx0OiBgbm9kZSA9PiBub2RlLmxhYmVsYCAqL1xuICBASW5wdXQoKSBub2RlTGFiZWw/OiBTdHJpbmdBY2Nlc3NvcjxOPlxuXG4gIC8qKiBEZWZpbmVzIHdoZXRoZXIgdG8gdHJpbSB0aGUgbm9kZSBsYWJlbHMgb3Igbm90LiBEZWZhdWx0OiBgdHJ1ZWAgKi9cbiAgQElucHV0KCkgbm9kZUxhYmVsVHJpbT86IEJvb2xlYW5BY2Nlc3NvcjxOPlxuXG4gIC8qKiBOb2RlIGxhYmVsIHRyaW1taW5nIG1vZGUuIERlZmF1bHQ6IGBUcmltTW9kZS5NaWRkbGVgICovXG4gIEBJbnB1dCgpIG5vZGVMYWJlbFRyaW1Nb2RlPzogR2VuZXJpY0FjY2Vzc29yPFRyaW1Nb2RlIHwgc3RyaW5nLCBOPlxuXG4gIC8qKiBOb2RlIGxhYmVsIG1heGltdW0gYWxsb3dlZCB0ZXh0IGxlbmd0aCBhYm92ZSB3aGljaCB0aGUgbGFiZWwgd2lsbCBiZSB0cmltbWVkLiBEZWZhdWx0OiBgMTVgICovXG4gIEBJbnB1dCgpIG5vZGVMYWJlbFRyaW1MZW5ndGg/OiBOdW1lcmljQWNjZXNzb3I8Tj5cblxuICAvKiogTm9kZSBzdWItbGFiZWwgYWNjZXNzb3IgZnVuY3Rpb24gb3IgY29uc3RhbnQgdmFsdWU6IERlZmF1bHQ6IGAnJ2AgKi9cbiAgQElucHV0KCkgbm9kZVN1YkxhYmVsPzogU3RyaW5nQWNjZXNzb3I8Tj5cblxuICAvKiogRGVmaW5lcyB3aGV0aGVyIHRvIHRyaW0gdGhlIG5vZGUgc3ViLWxhYmVscyBvciBub3QuIERlZmF1bHQ6IGB0cnVlYCAqL1xuICBASW5wdXQoKSBub2RlU3ViTGFiZWxUcmltPzogQm9vbGVhbkFjY2Vzc29yPE4+XG5cbiAgLyoqIE5vZGUgc3ViLWxhYmVsIHRyaW1taW5nIG1vZGUuIERlZmF1bHQ6IGBUcmltTW9kZS5NaWRkbGVgICovXG4gIEBJbnB1dCgpIG5vZGVTdWJMYWJlbFRyaW1Nb2RlPzogR2VuZXJpY0FjY2Vzc29yPFRyaW1Nb2RlIHwgc3RyaW5nLCBOPlxuXG4gIC8qKiBOb2RlIHN1Yi1sYWJlbCBtYXhpbXVtIGFsbG93ZWQgdGV4dCBsZW5ndGggYWJvdmUgd2hpY2ggdGhlIGxhYmVsIHdpbGwgYmUgdHJpbW1lZC4gRGVmYXVsdDogYDE1YCAqL1xuICBASW5wdXQoKSBub2RlU3ViTGFiZWxUcmltTGVuZ3RoPzogTnVtZXJpY0FjY2Vzc29yPE4+XG5cbiAgLyoqIE5vZGUgY2lyY3VsYXIgc2lkZSBsYWJlbHMgYWNjZXNzb3IgZnVuY3Rpb24uIFRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGFuIGFycmF5IG9mIEdyYXBoQ2lyY2xlTGFiZWwgb2JqZWN0cy4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgbm9kZVNpZGVMYWJlbHM/OiBHZW5lcmljQWNjZXNzb3I8R3JhcGhDaXJjbGVMYWJlbFtdLCBOPlxuXG4gIC8qKiBOb2RlIGJvdHRvbSBpY29uIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBub2RlQm90dG9tSWNvbj86IFN0cmluZ0FjY2Vzc29yPE4+XG5cbiAgLyoqIE5vZGUgZGlzYWJsZWQgc3RhdGUgYWNjZXNzb3IgZnVuY3Rpb24gb3IgY29uc3RhbnQgdmFsdWUuIERlZmF1bHQ6IGBmYWxzZWAgKi9cbiAgQElucHV0KCkgbm9kZURpc2FibGVkPzogQm9vbGVhbkFjY2Vzc29yPE4+XG5cbiAgLyoqIE5vZGUgZmlsbCBjb2xvciBhY2Nlc3NvciBmdW5jdGlvbiBvciBjb25zdGFudCB2YWx1ZS4gRGVmYXVsdDogYG5vZGUgPT4gbm9kZS5maWxsYCAqL1xuICBASW5wdXQoKSBub2RlRmlsbD86IENvbG9yQWNjZXNzb3I8Tj5cblxuICAvKiogTm9kZSBzdHJva2UgY29sb3IgYWNjZXNzb3IgZnVuY3Rpb24gb3IgY29uc3RhbnQgdmFsdWUuIERlZmF1bHQ6IGBub2RlID0+IG5vZGUuc3Ryb2tlYCAqL1xuICBASW5wdXQoKSBub2RlU3Ryb2tlPzogQ29sb3JBY2Nlc3NvcjxOPlxuXG4gIC8qKiBTb3J0aW5nIGZ1bmN0aW9uIHRvIGRldGVybWluZSBub2RlIHBsYWNlbWVudC4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgbm9kZVNvcnQ/OiAoKGE6IE4sIGI6IE4pID0+IG51bWJlcilcblxuICAvKiogU3BlY2lmeSB0aGUgaW5pdGlhbCBwb3NpdGlvbiBmb3IgZW50ZXJpbmcgbm9kZXMgYXMgW3gsIHldLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBub2RlRW50ZXJQb3NpdGlvbj86IEdlbmVyaWNBY2Nlc3NvcjxbbnVtYmVyLCBudW1iZXJdLCBOPiB8IHVuZGVmaW5lZFxuXG4gIC8qKiBTcGVjaWZ5IHRoZSBpbml0aWFsIHNjYWxlIGZvciBlbnRlcmluZyBub2RlcyBpbiB0aGUgcmFuZ2UgWzAsMV0uIERlZmF1bHQ6IGAwLjc1YCAqL1xuICBASW5wdXQoKSBub2RlRW50ZXJTY2FsZT86IE51bWVyaWNBY2Nlc3NvcjxOPiB8IHVuZGVmaW5lZFxuXG4gIC8qKiBTcGVjaWZ5IHRoZSBkZXN0aW5hdGlvbiBwb3NpdGlvbiBmb3IgZXhpdGluZyBub2RlcyBhcyBbeCwgeV0uIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIG5vZGVFeGl0UG9zaXRpb24/OiBHZW5lcmljQWNjZXNzb3I8W251bWJlciwgbnVtYmVyXSwgTj4gfCB1bmRlZmluZWRcblxuICAvKiogU3BlY2lmeSB0aGUgZGVzdGluYXRpb24gc2NhbGUgZm9yIGV4aXRpbmcgbm9kZXMgaW4gdGhlIHJhbmdlIFswLDFdLiBEZWZhdWx0OiBgMC43NWAgKi9cbiAgQElucHV0KCkgbm9kZUV4aXRTY2FsZT86IE51bWVyaWNBY2Nlc3NvcjxOPiB8IHVuZGVmaW5lZFxuXG4gIC8qKiBDdXN0b20gXCJlbnRlclwiIGZ1bmN0aW9uIGZvciBub2RlIHJlbmRlcmluZy4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgbm9kZUVudGVyQ3VzdG9tUmVuZGVyRnVuY3Rpb24/OiAoZGF0dW06IEdyYXBoTm9kZTxOLCBMPiwgbm9kZUdyb3VwRWxlbWVudFNlbGVjdGlvbjogU2VsZWN0aW9uPFNWR0dFbGVtZW50LCBHcmFwaE5vZGU8TiwgTD4sIG51bGwsIHVua25vd24+LCBjb25maWc6IEdyYXBoQ29uZmlnSW50ZXJmYWNlPE4sIEw+LCBkdXJhdGlvbjogbnVtYmVyLCB6b29tTGV2ZWw6IG51bWJlcikgPT4gdm9pZFxuXG4gIC8qKiBDdXN0b20gXCJ1cGRhdGVcIiBmdW5jdGlvbiBmb3Igbm9kZSByZW5kZXJpbmcuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIG5vZGVVcGRhdGVDdXN0b21SZW5kZXJGdW5jdGlvbj86IChkYXR1bTogR3JhcGhOb2RlPE4sIEw+LCBub2RlR3JvdXBFbGVtZW50U2VsZWN0aW9uOiBTZWxlY3Rpb248U1ZHR0VsZW1lbnQsIEdyYXBoTm9kZTxOLCBMPiwgbnVsbCwgdW5rbm93bj4sIGNvbmZpZzogR3JhcGhDb25maWdJbnRlcmZhY2U8TiwgTD4sIGR1cmF0aW9uOiBudW1iZXIsIHpvb21MZXZlbDogbnVtYmVyKSA9PiB2b2lkXG5cbiAgLyoqIEN1c3RvbSBwYXJ0aWFsIFwidXBkYXRlXCIgZnVuY3Rpb24gZm9yIG5vZGUgcmVuZGVyaW5nIHdoaWNoIHdpbGwgYmUgdHJpZ2dlcmVkIGFmdGVyIHRoZSBmb2xsb3dpbmcgZXZlbnRzOlxuICAgKiAtIEZ1bGwgbm9kZSB1cGRhdGUgKGBub2RlVXBkYXRlQ3VzdG9tUmVuZGVyRnVuY3Rpb25gKTtcbiAgICogLSBCYWNrZ3JvdW5kIGNsaWNrO1xuICAgKiAtIE5vZGUgYW5kIExpbmsgbW91c2VvdmVyIGFuZCBtb3VzZW91dDtcbiAgICogLSBOb2RlIGJydXNoaW5nLFxuICAgKiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBub2RlUGFydGlhbFVwZGF0ZUN1c3RvbVJlbmRlckZ1bmN0aW9uPzogKGRhdHVtOiBHcmFwaE5vZGU8TiwgTD4sIG5vZGVHcm91cEVsZW1lbnRTZWxlY3Rpb246IFNlbGVjdGlvbjxTVkdHRWxlbWVudCwgR3JhcGhOb2RlPE4sIEw+LCBudWxsLCB1bmtub3duPiwgY29uZmlnOiBHcmFwaENvbmZpZ0ludGVyZmFjZTxOLCBMPiwgZHVyYXRpb246IG51bWJlciwgem9vbUxldmVsOiBudW1iZXIpID0+IHZvaWRcblxuICAvKiogQ3VzdG9tIFwiZXhpdFwiIGZ1bmN0aW9uIGZvciBub2RlIHJlbmRlcmluZy4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgbm9kZUV4aXRDdXN0b21SZW5kZXJGdW5jdGlvbj86IChkYXR1bTogR3JhcGhOb2RlPE4sIEw+LCBub2RlR3JvdXBFbGVtZW50U2VsZWN0aW9uOiBTZWxlY3Rpb248U1ZHR0VsZW1lbnQsIEdyYXBoTm9kZTxOLCBMPiwgbnVsbCwgdW5rbm93bj4sIGNvbmZpZzogR3JhcGhDb25maWdJbnRlcmZhY2U8TiwgTD4sIGR1cmF0aW9uOiBudW1iZXIsIHpvb21MZXZlbDogbnVtYmVyKSA9PiB2b2lkXG5cbiAgLyoqIEN1c3RvbSByZW5kZXIgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCB3aGlsZSB6b29taW5nIC8gcGFubmluZyB0aGUgZ3JhcGguIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIG5vZGVPblpvb21DdXN0b21SZW5kZXJGdW5jdGlvbj86IChkYXR1bTogR3JhcGhOb2RlPE4sIEw+LCBub2RlR3JvdXBFbGVtZW50U2VsZWN0aW9uOiBTZWxlY3Rpb248U1ZHR0VsZW1lbnQsIEdyYXBoTm9kZTxOLCBMPiwgbnVsbCwgdW5rbm93bj4sIGNvbmZpZzogR3JhcGhDb25maWdJbnRlcmZhY2U8TiwgTD4sIHpvb21MZXZlbDogbnVtYmVyKSA9PiB2b2lkXG5cbiAgLyoqIERlZmluZSB0aGUgbW9kZSBmb3IgaGlnaGxpZ2h0aW5nIHNlbGVjdGVkIG5vZGVzIGluIHRoZSBncmFwaC4gRGVmYXVsdDogYEdyYXBoTm9kZVNlbGVjdGlvbkhpZ2hsaWdodE1vZGUuR3JleW91dE5vbkNvbm5lY3RlZGAgKi9cbiAgQElucHV0KCkgbm9kZVNlbGVjdGlvbkhpZ2hsaWdodE1vZGU/OiBHcmFwaE5vZGVTZWxlY3Rpb25IaWdobGlnaHRNb2RlXG5cbiAgLyoqIFNldCBzZWxlY3RlZCBub2RlIGJ5IHVuaXF1ZSBpZC4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgc2VsZWN0ZWROb2RlSWQ/OiBudW1iZXIgfCBzdHJpbmdcblxuICAvKiogU2V0IHNlbGVjdGVkIG5vZGVzIGJ5IHVuaXF1ZSBpZC4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgc2VsZWN0ZWROb2RlSWRzPzogbnVtYmVyW10gfCBzdHJpbmdbXVxuXG4gIC8qKiBQYW5lbHMgY29uZmlndXJhdGlvbi4gQW4gYXJyYXkgb2YgYEdyYXBoUGFuZWxDb25maWdgIG9iamVjdHMuIERlZmF1bHQ6IGBbXWAgKi9cbiAgQElucHV0KCkgcGFuZWxzPzogR3JhcGhQYW5lbENvbmZpZ1tdIHwgdW5kZWZpbmVkXG5cbiAgLyoqIEdyYXBoIG5vZGUgZHJhZyBzdGFydCBjYWxsYmFjayBmdW5jdGlvbi4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgb25Ob2RlRHJhZ1N0YXJ0PzogKG46IEdyYXBoTm9kZTxOLCBMPiwgZXZlbnQ6IEQzRHJhZ0V2ZW50PFNWR0dFbGVtZW50LCBHcmFwaE5vZGU8TiwgTD4sIHVua25vd24+KSA9PiB2b2lkIHwgdW5kZWZpbmVkXG5cbiAgLyoqIEdyYXBoIG5vZGUgZHJhZyBjYWxsYmFjayBmdW5jdGlvbi4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgb25Ob2RlRHJhZz86IChuOiBHcmFwaE5vZGU8TiwgTD4sIGV2ZW50OiBEM0RyYWdFdmVudDxTVkdHRWxlbWVudCwgR3JhcGhOb2RlPE4sIEw+LCB1bmtub3duPikgPT4gdm9pZCB8IHVuZGVmaW5lZFxuXG4gIC8qKiBHcmFwaCBub2RlIGRyYWcgZW5kIGNhbGxiYWNrIGZ1bmN0aW9uLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBvbk5vZGVEcmFnRW5kPzogKG46IEdyYXBoTm9kZTxOLCBMPiwgZXZlbnQ6IEQzRHJhZ0V2ZW50PFNWR0dFbGVtZW50LCBHcmFwaE5vZGU8TiwgTD4sIHVua25vd24+KSA9PiB2b2lkIHwgdW5kZWZpbmVkXG5cbiAgLyoqIFpvb20gZXZlbnQgY2FsbGJhY2suIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIG9uWm9vbT86ICh6b29tU2NhbGU6IG51bWJlciwgem9vbVNjYWxlRXh0ZW50OiBbbnVtYmVyLCBudW1iZXJdLCBldmVudDogRDNab29tRXZlbnQ8U1ZHR0VsZW1lbnQsIHVua25vd24+IHwgdW5kZWZpbmVkLCB0cmFuc2Zvcm06IFpvb21UcmFuc2Zvcm0pID0+IHZvaWRcblxuICAvKiogWm9vbSBzdGFydCBldmVudCBjYWxsYmFjay4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgb25ab29tU3RhcnQ/OiAoem9vbVNjYWxlOiBudW1iZXIsIHpvb21TY2FsZUV4dGVudDogW251bWJlciwgbnVtYmVyXSwgZXZlbnQ6IEQzWm9vbUV2ZW50PFNWR0dFbGVtZW50LCB1bmtub3duPiB8IHVuZGVmaW5lZCwgdHJhbnNmb3JtOiBab29tVHJhbnNmb3JtKSA9PiB2b2lkXG5cbiAgLyoqIFpvb20gZW5kIGV2ZW50IGNhbGxiYWNrLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBvblpvb21FbmQ/OiAoem9vbVNjYWxlOiBudW1iZXIsIHpvb21TY2FsZUV4dGVudDogW251bWJlciwgbnVtYmVyXSwgZXZlbnQ6IEQzWm9vbUV2ZW50PFNWR0dFbGVtZW50LCB1bmtub3duPiB8IHVuZGVmaW5lZCwgdHJhbnNmb3JtOiBab29tVHJhbnNmb3JtKSA9PiB2b2lkXG5cbiAgLyoqIENhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBncmFwaCBsYXlvdXQgaXMgY2FsY3VsYXRlZC4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgb25MYXlvdXRDYWxjdWxhdGVkPzogKG5vZGVzOiBHcmFwaE5vZGU8TiwgTD5bXSwgbGlua3M6IEdyYXBoTGluazxOLCBMPltdKSA9PiB2b2lkXG5cbiAgLyoqIEdyYXBoIG5vZGUgc2VsZWN0aW9uIGJydXNoIGNhbGxiYWNrIGZ1bmN0aW9uLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBvbk5vZGVTZWxlY3Rpb25CcnVzaD86IChzZWxlY3RlZE5vZGVzOiBHcmFwaE5vZGU8TiwgTD5bXSwgZXZlbnQ6IEQzQnJ1c2hFdmVudDxTVkdHRWxlbWVudD4gfCB1bmRlZmluZWQpID0+IHZvaWRcblxuICAvKiogR3JhcGggbXVsdGlwbGUgbm9kZSBkcmFnIGNhbGxiYWNrIGZ1bmN0aW9uLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBvbk5vZGVTZWxlY3Rpb25EcmFnPzogKHNlbGVjdGVkTm9kZXM6IEdyYXBoTm9kZTxOLCBMPltdLCBldmVudDogRDNEcmFnRXZlbnQ8U1ZHR0VsZW1lbnQsIEdyYXBoTm9kZTxOLCBMPiwgdW5rbm93bj4pID0+IHZvaWRcblxuICAvKiogQ2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGdyYXBoIHJlbmRlcmluZyBpcyBjb21wbGV0ZS4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgb25SZW5kZXJDb21wbGV0ZT86IChnOiBTZWxlY3Rpb248U1ZHR0VsZW1lbnQsIHVua25vd24sIG51bGwsIHVuZGVmaW5lZD4sIG5vZGVzOiBHcmFwaE5vZGU8TiwgTD5bXSwgbGlua3M6IEdyYXBoTGluazxOLCBMPltdLCBjb25maWc6IEdyYXBoQ29uZmlnSW50ZXJmYWNlPE4sIEw+LCBkdXJhdGlvbjogbnVtYmVyLCB6b29tTGV2ZWw6IG51bWJlciwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpID0+IHZvaWRcblxuICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZSB3aGVuIG5ldyBkYXRhIGlzIHByb3ZpZGVkLlxuICAgKiBUaGlzIGZ1bmN0aW9uIHRha2VzIHRoZSBwcmV2aW91cyBhbmQgbmV3IGRhdGEgYXMgcGFyYW1ldGVycyBhbmQgcmV0dXJucyBhIGJvb2xlYW5cbiAgICogaW5kaWNhdGluZyB3aGV0aGVyIHRoZSB1cGRhdGUgc2hvdWxkIHByb2NlZWQuIFVzZWZ1bCBmb3IgZmluZS1ncmFpbmVkIGNvbnRyb2wgb3ZlclxuICAgKiB1cGRhdGUgYmVoYXZpb3Igd2hlbiB5b3VyIGRhdGEgaGFzIGEgY29tcGxleCBuZXN0ZWQgc3RydWN0dXJlLlxuICAgKiBCeSBkZWZhdWx0IHRoZSBgaXNFcXVhbGAgZnVuY3Rpb24gZnJvbSBVbm92aXMgd2lsbCBiZSB1c2VkIHRvIGRvIHRoZSBjb21wYXJpc29uLiAqL1xuICBASW5wdXQoKSBzaG91bGREYXRhVXBkYXRlPzogKHByZXZEYXRhOiBHcmFwaElucHV0RGF0YTxOLCBMPiwgbmV4dERhdGE6IEdyYXBoSW5wdXREYXRhPE4sIEw+LCBkYXRhbW9kZWw6IEdyYXBoRGF0YU1vZGVsPE4sIEwsIEdyYXBoTm9kZTxOLCBMPiwgR3JhcGhMaW5rPE4sIEw+PikgPT4gYm9vbGVhblxuICBASW5wdXQoKSBkYXRhOiB7IG5vZGVzOiBOW107IGxpbmtzPzogTFtdIH1cblxuICBjb21wb25lbnQ6IEdyYXBoPE4sIEw+IHwgdW5kZWZpbmVkXG4gIHB1YmxpYyBjb21wb25lbnRDb250YWluZXI6IENvbnRhaW5lckNvcmUgfCB1bmRlZmluZWRcblxuICBuZ0FmdGVyVmlld0luaXQgKCk6IHZvaWQge1xuICAgIHRoaXMuY29tcG9uZW50ID0gbmV3IEdyYXBoPE4sIEw+KHRoaXMuZ2V0Q29uZmlnKCkpXG5cbiAgICBpZiAodGhpcy5kYXRhKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudC5zZXREYXRhKHRoaXMuZGF0YSlcbiAgICAgIHRoaXMuY29tcG9uZW50Q29udGFpbmVyPy5yZW5kZXIoKVxuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzIChjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuZGF0YSkgeyB0aGlzLmNvbXBvbmVudD8uc2V0RGF0YSh0aGlzLmRhdGEpIH1cbiAgICB0aGlzLmNvbXBvbmVudD8uc2V0Q29uZmlnKHRoaXMuZ2V0Q29uZmlnKCkpXG4gICAgdGhpcy5jb21wb25lbnRDb250YWluZXI/LnJlbmRlcigpXG4gIH1cblxuICBwcml2YXRlIGdldENvbmZpZyAoKTogR3JhcGhDb25maWdJbnRlcmZhY2U8TiwgTD4ge1xuICAgIGNvbnN0IHsgZHVyYXRpb24sIGV2ZW50cywgYXR0cmlidXRlcywgem9vbVNjYWxlRXh0ZW50LCBkaXNhYmxlWm9vbSwgem9vbUV2ZW50RmlsdGVyLCBkaXNhYmxlRHJhZywgZGlzYWJsZUJydXNoLCB6b29tVGhyb3R0bGVkVXBkYXRlTm9kZVRocmVzaG9sZCwgZml0Vmlld1BhZGRpbmcsIGZpdFZpZXdBbGlnbiwgbGF5b3V0VHlwZSwgbGF5b3V0QXV0b2ZpdCwgbGF5b3V0QXV0b2ZpdFRvbGVyYW5jZSwgbGF5b3V0Tm9uQ29ubmVjdGVkQXNpZGUsIGxheW91dE5vZGVHcm91cCwgbGF5b3V0R3JvdXBPcmRlciwgbGF5b3V0UGFyYWxsZWxOb2Rlc1BlckNvbHVtbiwgbGF5b3V0UGFyYWxsZWxOb2RlU3ViR3JvdXAsIGxheW91dFBhcmFsbGVsU3ViR3JvdXBzUGVyUm93LCBsYXlvdXRQYXJhbGxlbE5vZGVTcGFjaW5nLCBsYXlvdXRQYXJhbGxlbFN1Ykdyb3VwU3BhY2luZywgbGF5b3V0UGFyYWxsZWxHcm91cFNwYWNpbmcsIGxheW91dFBhcmFsbGVsU29ydENvbm5lY3Rpb25zQnlHcm91cCwgZm9yY2VMYXlvdXRTZXR0aW5ncywgZGFncmVMYXlvdXRTZXR0aW5ncywgbGF5b3V0RWxrU2V0dGluZ3MsIGxheW91dEVsa05vZGVHcm91cHMsIGxheW91dEVsa0dldE5vZGVTaGFwZSwgbGlua1dpZHRoLCBsaW5rU3R5bGUsIGxpbmtCYW5kV2lkdGgsIGxpbmtBcnJvdywgbGlua1N0cm9rZSwgbGlua0Rpc2FibGVkLCBsaW5rRmxvdywgbGlua0Zsb3dBbmltRHVyYXRpb24sIGxpbmtGbG93UGFydGljbGVTaXplLCBsaW5rRmxvd1BhcnRpY2xlU3BlZWQsIGxpbmtMYWJlbCwgbGlua0xhYmVsU2hpZnRGcm9tQ2VudGVyLCBsaW5rTmVpZ2hib3JTcGFjaW5nLCBsaW5rQ3VydmF0dXJlLCBsaW5rSGlnaGxpZ2h0T25Ib3ZlciwgbGlua1NvdXJjZVBvaW50T2Zmc2V0LCBsaW5rVGFyZ2V0UG9pbnRPZmZzZXQsIHNlbGVjdGVkTGlua0lkLCBub2RlU2l6ZSwgbm9kZVN0cm9rZVdpZHRoLCBub2RlU2hhcGUsIG5vZGVHYXVnZVZhbHVlLCBub2RlR2F1Z2VGaWxsLCBub2RlR2F1Z2VBbmltRHVyYXRpb24sIG5vZGVJY29uLCBub2RlSWNvblNpemUsIG5vZGVMYWJlbCwgbm9kZUxhYmVsVHJpbSwgbm9kZUxhYmVsVHJpbU1vZGUsIG5vZGVMYWJlbFRyaW1MZW5ndGgsIG5vZGVTdWJMYWJlbCwgbm9kZVN1YkxhYmVsVHJpbSwgbm9kZVN1YkxhYmVsVHJpbU1vZGUsIG5vZGVTdWJMYWJlbFRyaW1MZW5ndGgsIG5vZGVTaWRlTGFiZWxzLCBub2RlQm90dG9tSWNvbiwgbm9kZURpc2FibGVkLCBub2RlRmlsbCwgbm9kZVN0cm9rZSwgbm9kZVNvcnQsIG5vZGVFbnRlclBvc2l0aW9uLCBub2RlRW50ZXJTY2FsZSwgbm9kZUV4aXRQb3NpdGlvbiwgbm9kZUV4aXRTY2FsZSwgbm9kZUVudGVyQ3VzdG9tUmVuZGVyRnVuY3Rpb24sIG5vZGVVcGRhdGVDdXN0b21SZW5kZXJGdW5jdGlvbiwgbm9kZVBhcnRpYWxVcGRhdGVDdXN0b21SZW5kZXJGdW5jdGlvbiwgbm9kZUV4aXRDdXN0b21SZW5kZXJGdW5jdGlvbiwgbm9kZU9uWm9vbUN1c3RvbVJlbmRlckZ1bmN0aW9uLCBub2RlU2VsZWN0aW9uSGlnaGxpZ2h0TW9kZSwgc2VsZWN0ZWROb2RlSWQsIHNlbGVjdGVkTm9kZUlkcywgcGFuZWxzLCBvbk5vZGVEcmFnU3RhcnQsIG9uTm9kZURyYWcsIG9uTm9kZURyYWdFbmQsIG9uWm9vbSwgb25ab29tU3RhcnQsIG9uWm9vbUVuZCwgb25MYXlvdXRDYWxjdWxhdGVkLCBvbk5vZGVTZWxlY3Rpb25CcnVzaCwgb25Ob2RlU2VsZWN0aW9uRHJhZywgb25SZW5kZXJDb21wbGV0ZSwgc2hvdWxkRGF0YVVwZGF0ZSB9ID0gdGhpc1xuICAgIGNvbnN0IGNvbmZpZyA9IHsgZHVyYXRpb24sIGV2ZW50cywgYXR0cmlidXRlcywgem9vbVNjYWxlRXh0ZW50LCBkaXNhYmxlWm9vbSwgem9vbUV2ZW50RmlsdGVyLCBkaXNhYmxlRHJhZywgZGlzYWJsZUJydXNoLCB6b29tVGhyb3R0bGVkVXBkYXRlTm9kZVRocmVzaG9sZCwgZml0Vmlld1BhZGRpbmcsIGZpdFZpZXdBbGlnbiwgbGF5b3V0VHlwZSwgbGF5b3V0QXV0b2ZpdCwgbGF5b3V0QXV0b2ZpdFRvbGVyYW5jZSwgbGF5b3V0Tm9uQ29ubmVjdGVkQXNpZGUsIGxheW91dE5vZGVHcm91cCwgbGF5b3V0R3JvdXBPcmRlciwgbGF5b3V0UGFyYWxsZWxOb2Rlc1BlckNvbHVtbiwgbGF5b3V0UGFyYWxsZWxOb2RlU3ViR3JvdXAsIGxheW91dFBhcmFsbGVsU3ViR3JvdXBzUGVyUm93LCBsYXlvdXRQYXJhbGxlbE5vZGVTcGFjaW5nLCBsYXlvdXRQYXJhbGxlbFN1Ykdyb3VwU3BhY2luZywgbGF5b3V0UGFyYWxsZWxHcm91cFNwYWNpbmcsIGxheW91dFBhcmFsbGVsU29ydENvbm5lY3Rpb25zQnlHcm91cCwgZm9yY2VMYXlvdXRTZXR0aW5ncywgZGFncmVMYXlvdXRTZXR0aW5ncywgbGF5b3V0RWxrU2V0dGluZ3MsIGxheW91dEVsa05vZGVHcm91cHMsIGxheW91dEVsa0dldE5vZGVTaGFwZSwgbGlua1dpZHRoLCBsaW5rU3R5bGUsIGxpbmtCYW5kV2lkdGgsIGxpbmtBcnJvdywgbGlua1N0cm9rZSwgbGlua0Rpc2FibGVkLCBsaW5rRmxvdywgbGlua0Zsb3dBbmltRHVyYXRpb24sIGxpbmtGbG93UGFydGljbGVTaXplLCBsaW5rRmxvd1BhcnRpY2xlU3BlZWQsIGxpbmtMYWJlbCwgbGlua0xhYmVsU2hpZnRGcm9tQ2VudGVyLCBsaW5rTmVpZ2hib3JTcGFjaW5nLCBsaW5rQ3VydmF0dXJlLCBsaW5rSGlnaGxpZ2h0T25Ib3ZlciwgbGlua1NvdXJjZVBvaW50T2Zmc2V0LCBsaW5rVGFyZ2V0UG9pbnRPZmZzZXQsIHNlbGVjdGVkTGlua0lkLCBub2RlU2l6ZSwgbm9kZVN0cm9rZVdpZHRoLCBub2RlU2hhcGUsIG5vZGVHYXVnZVZhbHVlLCBub2RlR2F1Z2VGaWxsLCBub2RlR2F1Z2VBbmltRHVyYXRpb24sIG5vZGVJY29uLCBub2RlSWNvblNpemUsIG5vZGVMYWJlbCwgbm9kZUxhYmVsVHJpbSwgbm9kZUxhYmVsVHJpbU1vZGUsIG5vZGVMYWJlbFRyaW1MZW5ndGgsIG5vZGVTdWJMYWJlbCwgbm9kZVN1YkxhYmVsVHJpbSwgbm9kZVN1YkxhYmVsVHJpbU1vZGUsIG5vZGVTdWJMYWJlbFRyaW1MZW5ndGgsIG5vZGVTaWRlTGFiZWxzLCBub2RlQm90dG9tSWNvbiwgbm9kZURpc2FibGVkLCBub2RlRmlsbCwgbm9kZVN0cm9rZSwgbm9kZVNvcnQsIG5vZGVFbnRlclBvc2l0aW9uLCBub2RlRW50ZXJTY2FsZSwgbm9kZUV4aXRQb3NpdGlvbiwgbm9kZUV4aXRTY2FsZSwgbm9kZUVudGVyQ3VzdG9tUmVuZGVyRnVuY3Rpb24sIG5vZGVVcGRhdGVDdXN0b21SZW5kZXJGdW5jdGlvbiwgbm9kZVBhcnRpYWxVcGRhdGVDdXN0b21SZW5kZXJGdW5jdGlvbiwgbm9kZUV4aXRDdXN0b21SZW5kZXJGdW5jdGlvbiwgbm9kZU9uWm9vbUN1c3RvbVJlbmRlckZ1bmN0aW9uLCBub2RlU2VsZWN0aW9uSGlnaGxpZ2h0TW9kZSwgc2VsZWN0ZWROb2RlSWQsIHNlbGVjdGVkTm9kZUlkcywgcGFuZWxzLCBvbk5vZGVEcmFnU3RhcnQsIG9uTm9kZURyYWcsIG9uTm9kZURyYWdFbmQsIG9uWm9vbSwgb25ab29tU3RhcnQsIG9uWm9vbUVuZCwgb25MYXlvdXRDYWxjdWxhdGVkLCBvbk5vZGVTZWxlY3Rpb25CcnVzaCwgb25Ob2RlU2VsZWN0aW9uRHJhZywgb25SZW5kZXJDb21wbGV0ZSwgc2hvdWxkRGF0YVVwZGF0ZSB9XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGNvbmZpZykgYXMgKGtleW9mIEdyYXBoQ29uZmlnSW50ZXJmYWNlPE4sIEw+KVtdXG4gICAga2V5cy5mb3JFYWNoKGtleSA9PiB7IGlmIChjb25maWdba2V5XSA9PT0gdW5kZWZpbmVkKSBkZWxldGUgY29uZmlnW2tleV0gfSlcblxuICAgIHJldHVybiBjb25maWdcbiAgfVxufVxuIl19
|
|
237
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvZ3JhcGgvZ3JhcGguY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFpQixLQUFLLEVBQWlCLE1BQU0sZUFBZSxDQUFBO0FBQzlFLE9BQU8sRUFDTCxLQUFLLEdBNkJOLE1BQU0sWUFBWSxDQUFBO0FBTW5CLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQTs7QUFRN0MsTUFBTSxPQUFPLGlCQUFpQjtJQThYNUIsZUFBZTs7UUFDYixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksS0FBSyxDQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFBO1FBRWxELElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNqQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7U0FDbEM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFFLE9BQXNCOztRQUNqQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFBRSxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7U0FBRTtRQUN4RCxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQTtRQUMzQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7SUFDbkMsQ0FBQztJQUVPLFNBQVM7UUFDZixNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVB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R0csZUFBZTtzQkFBdkIsS0FBSztnQkFHRyxjQUFjO3NCQUF0QixLQUFLO2dCQUdHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR0csWUFBWTtzQkFBcEIsS0FBSztnQkFHRyxNQUFNO3NCQUFkLEtBQUs7Z0JBR0csZUFBZTtzQkFBdkIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0csTUFBTTtzQkFBZCxLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBR0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUdHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFHRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBT0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vICEhISBUaGlzIGNvZGUgd2FzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkLiBZb3Ugc2hvdWxkIG5vdCBjaGFuZ2UgaXQgISEhXG5pbXBvcnQgeyBDb21wb25lbnQsIEFmdGVyVmlld0luaXQsIElucHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIEdyYXBoLFxuICBHcmFwaENvbmZpZ0ludGVyZmFjZSxcbiAgQ29udGFpbmVyQ29yZSxcbiAgR3JhcGhJbnB1dE5vZGUsXG4gIEdyYXBoSW5wdXRMaW5rLFxuICBWaXNFdmVudFR5cGUsXG4gIFZpc0V2ZW50Q2FsbGJhY2ssXG4gIFNwYWNpbmcsXG4gIEdyYXBoRml0Vmlld0FsaWdubWVudCxcbiAgR3JhcGhMYXlvdXRUeXBlLFxuICBTdHJpbmdBY2Nlc3NvcixcbiAgR3JhcGhGb3JjZUxheW91dFNldHRpbmdzLFxuICBHcmFwaERhZ3JlTGF5b3V0U2V0dGluZyxcbiAgR2VuZXJpY0FjY2Vzc29yLFxuICBHcmFwaEVsa0xheW91dFNldHRpbmdzLFxuICBHcmFwaE5vZGUsXG4gIE51bWVyaWNBY2Nlc3NvcixcbiAgR3JhcGhMaW5rU3R5bGUsXG4gIEdyYXBoTGlua0Fycm93U3R5bGUsXG4gIENvbG9yQWNjZXNzb3IsXG4gIEJvb2xlYW5BY2Nlc3NvcixcbiAgR3JhcGhDaXJjbGVMYWJlbCxcbiAgR3JhcGhMaW5rLFxuICBHcmFwaE5vZGVTaGFwZSxcbiAgVHJpbU1vZGUsXG4gIEdyYXBoTm9kZVNlbGVjdGlvbkhpZ2hsaWdodE1vZGUsXG4gIEdyYXBoUGFuZWxDb25maWcsXG4gIEdyYXBoSW5wdXREYXRhLFxuICBHcmFwaERhdGFNb2RlbCxcbn0gZnJvbSAnQHVub3Zpcy90cydcbmltcG9ydCB7IEVsa1NoYXBlIH0gZnJvbSAnZWxranMnXG5pbXBvcnQgeyBTZWxlY3Rpb24gfSBmcm9tICdkMy1zZWxlY3Rpb24nXG5pbXBvcnQgeyBEM0RyYWdFdmVudCB9IGZyb20gJ2QzLWRyYWcnXG5pbXBvcnQgeyBEM1pvb21FdmVudCwgWm9vbVRyYW5zZm9ybSB9IGZyb20gJ2QzLXpvb20nXG5pbXBvcnQgeyBEM0JydXNoRXZlbnQgfSBmcm9tICdkMy1icnVzaCdcbmltcG9ydCB7IFZpc0NvcmVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2aXMtZ3JhcGgnLFxuICB0ZW1wbGF0ZTogJycsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFZpc0NvcmVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBWaXNHcmFwaENvbXBvbmVudCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgVmlzR3JhcGhDb21wb25lbnQ8TiBleHRlbmRzIEdyYXBoSW5wdXROb2RlLCBMIGV4dGVuZHMgR3JhcGhJbnB1dExpbms+IGltcGxlbWVudHMgR3JhcGhDb25maWdJbnRlcmZhY2U8TiwgTD4sIEFmdGVyVmlld0luaXQge1xuICAvKiogQW5pbWF0aW9uIGR1cmF0aW9uIG9mIHRoZSBkYXRhIHVwZGF0ZSB0cmFuc2l0aW9ucyBpbiBtaWxsaXNlY29uZHMuIERlZmF1bHQ6IGA2MDBgICovXG4gIEBJbnB1dCgpIGR1cmF0aW9uPzogbnVtYmVyXG5cbiAgLyoqIEV2ZW50cyBjb25maWd1cmF0aW9uLiBBbiBvYmplY3QgY29udGFpbmluZyBwcm9wZXJ0aWVzIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0OlxuICAgKlxuICAgKiBgYGBcbiAgICoge1xuICAgKiBcXFtzZWxlY3RvclN0cmluZ106IHtcbiAgICogICAgIFxcW2V2ZW50VHlwZV06IGNhbGxiYWNrRnVuY3Rpb25cbiAgICogIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICogZS5nLjpcbiAgICogYGBgXG4gICAqIHtcbiAgICogXFxbQXJlYS5zZWxlY3RvcnMuYXJlYV06IHtcbiAgICogICAgY2xpY2s6IChkKSA9PiBjb25zb2xlLmxvZyhcIkNsaWNrZWQgQXJlYVwiLCBkKVxuICAgKiAgfVxuICAgKiB9XG4gICAqIGBgYCAqL1xuICBASW5wdXQoKSBldmVudHM/OiB7XG4gICAgW3NlbGVjdG9yOiBzdHJpbmddOiB7XG4gICAgICBbZXZlbnRUeXBlIGluIFZpc0V2ZW50VHlwZV0/OiBWaXNFdmVudENhbGxiYWNrXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBZb3UgY2FuIHNldCBldmVyeSBTVkcgYW5kIEhUTUwgdmlzdWFsaXphdGlvbiBvYmplY3QgdG8gaGF2ZSBhIGN1c3RvbSBET00gYXR0cmlidXRlcywgd2hpY2ggaXMgdXNlZnVsXG4gICAqIHdoZW4geW91IHdhbnQgdG8gZG8gdW5pdCBvciBlbmQtdG8tZW5kIHRlc3RpbmcuIEF0dHJpYnV0ZXMgY29uZmlndXJhdGlvbiBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOlxuICAgKlxuICAgKiBgYGBcbiAgICoge1xuICAgKiBcXFtzZWxlY3RvclN0cmluZ106IHtcbiAgICogICAgIFxcW2F0dHJpYnV0ZU5hbWVdOiBhdHRyaWJ1dGUgY29uc3RhbnQgdmFsdWUgb3IgYWNjZXNzb3IgZnVuY3Rpb25cbiAgICogIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICogZS5nLjpcbiAgICogYGBgXG4gICAqIHtcbiAgICogXFxbQXJlYS5zZWxlY3RvcnMuYXJlYV06IHtcbiAgICogICAgXCJ0ZXN0LXZhbHVlXCI6IGQgPT4gZC52YWx1ZVxuICAgKiAgfVxuICAgKiB9XG4gICAqIGBgYCAqL1xuICBASW5wdXQoKSBhdHRyaWJ1dGVzPzoge1xuICAgIFtzZWxlY3Rvcjogc3RyaW5nXToge1xuICAgICAgW2F0dHI6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCAoKGRhdHVtOiBhbnkpID0+IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4pO1xuICAgIH07XG4gIH1cblxuICAvKiogWm9vbSBsZXZlbCBjb25zdHJhaW50cy4gRGVmYXVsdDogWzAuMzUsIDEuMjVdICovXG4gIEBJbnB1dCgpIHpvb21TY2FsZUV4dGVudD86IFtudW1iZXIsIG51bWJlcl1cblxuICAvKiogRGlzYWJsZSB6b29taW5nLiBEZWZhdWx0OiBgZmFsc2VgICovXG4gIEBJbnB1dCgpIGRpc2FibGVab29tPzogYm9vbGVhblxuXG4gIC8qKiBDdXN0b20gWm9vbSBldmVudCBmaWx0ZXIgdG8gYmV0dGVyIGNvbnRyb2wgd2hpY2ggYWN0aW9ucyBzaG91bGQgdHJpZ2dlciB6b29taW5nLlxuICAgKiBMZWFybiBtb3JlOiBodHRwczovL2QzanMub3JnL2QzLXpvb20jem9vbV9maWx0ZXIuXG4gICAqIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHpvb21FdmVudEZpbHRlcj86IChldmVudDogUG9pbnRlckV2ZW50KSA9PiBib29sZWFuXG5cbiAgLyoqIERpc2FibGUgbm9kZSBkcmFnZ2luZy4gRGVmYXVsdDogYGZhbHNlYCAqL1xuICBASW5wdXQoKSBkaXNhYmxlRHJhZz86IGJvb2xlYW5cblxuICAvKiogRGlzYWJsZSBicnVzaCBmb3IgbXVsdGlwbGUgbm9kZSBzZWxlY3Rpb24uIERlZmF1bHQ6IGBmYWxzZWAgKi9cbiAgQElucHV0KCkgZGlzYWJsZUJydXNoPzogYm9vbGVhblxuXG4gIC8qKiBJbnRlcnZhbCB0byByZS1yZW5kZXIgdGhlIGdyYXBoIHdoZW4gem9vbWluZy4gRGVmYXVsdDogYDEwMGAgKi9cbiAgQElucHV0KCkgem9vbVRocm90dGxlZFVwZGF0ZU5vZGVUaHJlc2hvbGQ/OiBudW1iZXJcblxuICAvKiogUGFkZGluZyBmb3IgdGhlIGdyYXBoIHdoZW4gZml0dGluZyB0byBjb250YWluZXIuIERlZmF1bHQ6IGA1MGAgKi9cbiAgQElucHV0KCkgZml0Vmlld1BhZGRpbmc/OiBTcGFjaW5nIHwgbnVtYmVyXG5cbiAgLyoqIERlZmF1bHQgYWxpZ25tZW50IHdoZW4gZml0dGluZyB0aGUgZ3JhcGggdmlldy4gRGVmYXVsdDogYEdyYXBoRml0Vmlld0FsaWdubWVudC5DZW50ZXJgICovXG4gIEBJbnB1dCgpIGZpdFZpZXdBbGlnbj86IEdyYXBoRml0Vmlld0FsaWdubWVudFxuXG4gIC8qKiBUeXBlIG9mIHRoZSBncmFwaCBsYXlvdXQuIERlZmF1bHQ6IGBHcmFwaExheW91dFR5cGUuRm9yY2VgICovXG4gIEBJbnB1dCgpIGxheW91dFR5cGU/OiBHcmFwaExheW91dFR5cGUgfCBzdHJpbmdcblxuICAvKiogRml0IHRoZSBncmFwaCB0byBjb250YWluZXIgb24gZGF0YSBvciBjb25maWcgdXBkYXRlcywgb3Igb24gY29udGFpbmVyIHJlc2l6ZS4gRGVmYXVsdDogYHRydWVgICovXG4gIEBJbnB1dCgpIGxheW91dEF1dG9maXQ/OiBib29sZWFuXG5cbiAgLyoqIFRvbGVyYW5jZSBjb25zdGFudCBkZWZpbmluZyB3aGV0aGVyIHRoZSBncmFwaCBzaG91bGQgYmUgZml0dGVkIHRvIGNvbnRhaW5lclxuICAgKiAob24gZGF0YSBvciBjb25maWcgdXBkYXRlLCBvciBjb250YWluZXIgcmVzaXplKSBhZnRlciBhIHpvb20gLyBwYW4gaW50ZXJhY3Rpb24gb3Igbm90LlxuICAgKiBgMGAg4oCUIFN0b3AgZml0dGluZyBhZnRlciBhbnkgcGFuIG9yIHpvb21cbiAgICogYE51bWJlci5QT1NJVElWRV9JTkZJTklUWWAg4oCUIEFsd2F5cyBmaXRcbiAgICogRGVmYXVsdDogYDguMGAgKi9cbiAgQElucHV0KCkgbGF5b3V0QXV0b2ZpdFRvbGVyYW5jZT86IG51bWJlclxuXG4gIC8qKiBQbGFjZSBub24tY29ubmVjdGVkIG5vZGVzIGF0IHRoZSBib3R0b20gb2YgdGhlIGdyYXBoLiBEZWZhdWx0OiBgZmFsc2VgICovXG4gIEBJbnB1dCgpIGxheW91dE5vbkNvbm5lY3RlZEFzaWRlPzogYm9vbGVhblxuXG4gIC8qKiBOb2RlIGdyb3VwIGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgKiBPbmx5IGZvciBgR3JhcGhMYXlvdXRUeXBlLlBhcmFsbGVsYCwgYEdyYXBoTGF5b3V0VHlwZS5QYXJhbGxlbEhvcml6b250YWxgIGFuZCBgR3JhcGhMYXlvdXRUeXBlLkNvbmNlbnRyaWNgIGxheW91dHMuXG4gICAqIERlZmF1bHQ6IGBub2RlID0+IG5vZGUuZ3JvdXBgICovXG4gIEBJbnB1dCgpIGxheW91dE5vZGVHcm91cD86IFN0cmluZ0FjY2Vzc29yPE4+XG5cbiAgLyoqIE9yZGVyIG9mIHRoZSBsYXlvdXQgZ3JvdXBzLlxuICAgKiBPbmx5IGZvciBgR3JhcGhMYXlvdXRUeXBlLlBhcmFsbGVsYCwgYEdyYXBoTGF5b3V0VHlwZS5QYXJhbGxlbEhvcml6b250YWxgIGFuZCBgR3JhcGhMYXlvdXRUeXBlLkNvbmNlbnRyaWNgIGxheW91dHMuXG4gICAqIERlZmF1bHQ6IGBbXWAgKi9cbiAgQElucHV0KCkgbGF5b3V0R3JvdXBPcmRlcj86IHN0cmluZ1tdXG5cbiAgLyoqIFNldHMgdGhlIG51bWJlciBvZiBub2RlcyBpbiBhIHN1Yi1ncm91cCBhZnRlciB3aGljaCB0aGV5J2xsIGNvbnRpbnVlIG9uIHRoZSBuZXh0IGNvbHVtbiAob3Igcm93IGlmIGBsYXlvdXRUeXBlYCBpc1xuICAgKiBgR3JhcGhMYXlvdXRUeXBlLlBhcmFsbGVsSG9yaXpvbnRhbGApLlxuICAgKiBPbmx5IGZvciBgR3JhcGhMYXlvdXRUeXBlLlBhcmFsbGVsYCBhbmQgYEdyYXBoTGF5b3V0VHlwZS5QYXJhbGxlbEhvcml6b250YWxgIGxheW91dHMuXG4gICAqIERlZmF1bHQ6IGA2YCAqL1xuICBASW5wdXQoKSBsYXlvdXRQYXJhbGxlbE5vZGVzUGVyQ29sdW1uPzogbnVtYmVyXG5cbiAgLyoqIE5vZGUgc3ViLWdyb3VwIGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgKiBPbmx5IGZvciBgR3JhcGhMYXlvdXRUeXBlLlBhcmFsbGVsYCBhbmQgYEdyYXBoTGF5b3V0VHlwZS5QYXJhbGxlbEhvcml6b250YWxgIGxheW91dHMuXG4gICAqIERlZmF1bHQ6IGBub2RlID0+IG5vZGUuc3ViZ3JvdXBgICovXG4gIEBJbnB1dCgpIGxheW91dFBhcmFsbGVsTm9kZVN1Ykdyb3VwPzogU3RyaW5nQWNjZXNzb3I8Tj5cblxuICAvKiogTnVtYmVyIG9mIHN1Yi1ncm91cHMgcGVyIHJvdyAob3IgY29sdW1uIGlmIGBsYXlvdXRUeXBlYCBpcyBgR3JhcGhMYXlvdXRUeXBlLlBhcmFsbGVsSG9yaXpvbnRhbGApIGluIGEgZ3JvdXAuXG4gICAqIE9ubHkgZm9yIGBHcmFwaExheW91dFR5cGUuUGFyYWxsZWxgIGFuZCBgR3JhcGhMYXlvdXRUeXBlLlBhcmFsbGVsSG9yaXpvbnRhbGAgbGF5b3V0cy5cbiAgICogRGVmYXVsdDogYDFgICovXG4gIEBJbnB1dCgpIGxheW91dFBhcmFsbGVsU3ViR3JvdXBzUGVyUm93PzogbnVtYmVyXG5cbiAgLyoqIFNwYWNpbmcgYmV0d2VlbiBub2RlcywgZHluYW1pYyBieSBkZWZhdWx0LlxuICAgKiBPbmx5IGZvciBgR3JhcGhMYXlvdXRUeXBlLlBhcmFsbGVsYCBhbmQgYEdyYXBoTGF5b3V0VHlwZS5QYXJhbGxlbEhvcml6b250YWxgIGxheW91dHMuXG4gICAqIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIGxheW91dFBhcmFsbGVsTm9kZVNwYWNpbmc/OiBudW1iZXIgfCBbbnVtYmVyLCBudW1iZXJdXG5cbiAgLyoqIFNwYWNpbmcgYmV0d2VlbiBzdWItZ3JvdXBzLlxuICAgKiBPbmx5IGZvciBgR3JhcGhMYXlvdXRUeXBlLlBhcmFsbGVsYCBhbmQgYEdyYXBoTGF5b3V0VHlwZS5QYXJhbGxlbEhvcml6b250YWxgIGxheW91dHMuXG4gICAqIERlZmF1bHQ6IGA0MGAgKi9cbiAgQElucHV0KCkgbGF5b3V0UGFyYWxsZWxTdWJHcm91cFNwYWNpbmc/OiBudW1iZXJcblxuICAvKiogU3BhY2luZyBiZXR3ZWVuIGdyb3Vwcy5cbiAgICogT25seSBmb3IgYEdyYXBoTGF5b3V0VHlwZS5QYXJhbGxlbGAgYW5kIGBHcmFwaExheW91dFR5cGUuUGFyYWxsZWxIb3Jpem9udGFsYCBsYXlvdXRzLlxuICAgKiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBsYXlvdXRQYXJhbGxlbEdyb3VwU3BhY2luZz86IG51bWJlclxuXG4gIC8qKiBTZXQgYSBncm91cCBieSBuYW1lIHRvIGhhdmUgcHJpb3JpdHkgaW4gc29ydGluZyB0aGUgZ3JhcGggbGlua3MuXG4gICAqIE9ubHkgZm9yIGBHcmFwaExheW91dFR5cGUuUGFyYWxsZWxgIGFuZCBgR3JhcGhMYXlvdXRUeXBlLlBhcmFsbGVsSG9yaXpvbnRhbGAgbGF5b3V0cy5cbiAgICogRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgbGF5b3V0UGFyYWxsZWxTb3J0Q29ubmVjdGlvbnNCeUdyb3VwPzogc3RyaW5nXG5cbiAgLyoqIEZvcmNlIExheW91dCBzZXR0aW5ncywgc2VlIHRoZSBgZDMtZm9yY2VgIHBhY2thZ2UgZm9yIG1vcmUgZGV0YWlscyAqL1xuICBASW5wdXQoKSBmb3JjZUxheW91dFNldHRpbmdzPzogR3JhcGhGb3JjZUxheW91dFNldHRpbmdzPE4sIEw+XG5cbiAgLyoqIERhcmdlIExheW91dCBzZXR0aW5ncywgc2VlIHRoZSBgZGFncmVqc2AgcGFja2FnZVxuICAgKiBmb3IgbW9yZSBkZXRhaWxzOiBodHRwczovL2dpdGh1Yi5jb20vZGFncmVqcy9kYWdyZS93aWtpI2NvbmZpZ3VyaW5nLXRoZS1sYXlvdXQgKi9cbiAgQElucHV0KCkgZGFncmVMYXlvdXRTZXR0aW5ncz86IEdyYXBoRGFncmVMYXlvdXRTZXR0aW5nXG5cbiAgLyoqIEVMSyBsYXlvdXQgb3B0aW9ucywgc2VlIHRoZSBgZWxranNgIHBhY2thZ2UgZm9yIG1vcmUgZGV0YWlsczogaHR0cHM6Ly9naXRodWIuY29tL2tpZWxlci9lbGtqcy5cbiAgICogSWYgeW91IHdhbnQgdG8gc3BlY2lmeSBjdXN0b20gbGF5b3V0IG9wdGlvbiBmb3IgZWFjaCBub2RlIGdyb3VwLCB5b3UgY2FuIHByb3ZpZGUgYW4gYWNjZXNzb3IgZnVuY3Rpb24gdGhhdFxuICAgKiByZWNlaXZlcyBncm91cCBuYW1lICgncm9vdCcgZm9yIHRoZSB0b3AtbGV2ZWwgY29uZmlndXJhdGlvbikgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IGFuZCByZXR1cm5zIGFuIG9iamVjdCBjb250YWluaW5nXG4gICAqIGxheW91dCBvcHRpb25zLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBsYXlvdXRFbGtTZXR0aW5ncz86IEdlbmVyaWNBY2Nlc3NvcjxHcmFwaEVsa0xheW91dFNldHRpbmdzLCBzdHJpbmc+IHwgdW5kZWZpbmVkXG5cbiAgLyoqIEFycmF5IG9mIGFjY2Vzc29yIGZ1bmN0aW9ucyB0byBkZWZpbmUgbmVzdGVkIG5vZGUgZ3JvdXBzIGZvciB0aGUgRUxLIExheWVyZWQgbGF5b3V0LlxuICAgKiBFLmcuOiBgW24gPT4gbi5ncm91cCwgbiA9PiBuLnN1Ykdyb3VwXWAuXG4gICAqIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIGxheW91dEVsa05vZGVHcm91cHM/OiBTdHJpbmdBY2Nlc3NvcjxOPltdXG5cbiAgLyoqIEEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHBlciBncmFwaCBub2RlIHRvIGdldCB0aGUgRUxLIHNoYXBlIG9iamVjdC5cbiAgICogVGhpcyBlbmFibGVzIHlvdSB0byBwcm92aWRlIGN1c3RvbSBub2RlIGRpbWVuc2lvbnMgKHRocm91Z2ggdGhlIGB3aWR0aGAgYW5kIGBoZWlnaHRgIHByb3BlcnRpZXMpXG4gICAqIGFuZCBjb29yZGluYXRlcyAodGhyb3VnaCB0aGUgYHhgIGFuZCBgeWAgcHJvcGVydGllcykgaWYgbmVlZGVkLlxuICAgKiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBsYXlvdXRFbGtHZXROb2RlU2hhcGU/OiAoZDogR3JhcGhOb2RlPE4sIEw+LCBpOiBudW1iZXIpID0+IEVsa1NoYXBlXG5cbiAgLyoqIExpbmsgd2lkdGggYWNjZXNzb3IgZnVuY3Rpb24gb3QgY29uc3RhbnQgdmFsdWUuIERlZmF1bHQ6IGAxYCAqL1xuICBASW5wdXQoKSBsaW5rV2lkdGg/OiBOdW1lcmljQWNjZXNzb3I8TD5cblxuICAvKiogTGluayBzdHlsZSBhY2Nlc3NvciBmdW5jdGlvbiBvciBjb25zdGFudCB2YWx1ZS4gRGVmYXVsdDogYEdyYXBoTGlua1N0eWxlLlNvbGlkYCAqL1xuICBASW5wdXQoKSBsaW5rU3R5bGU/OiBHZW5lcmljQWNjZXNzb3I8R3JhcGhMaW5rU3R5bGUsIEw+XG5cbiAgLyoqIExpbmsgYmFuZCB3aWR0aCBhY2Nlc3NvciBmdW5jdGlvbiBvciBjb25zdGFudCB2YWx1ZS4gRGVmYXVsdDogYDBgICovXG4gIEBJbnB1dCgpIGxpbmtCYW5kV2lkdGg/OiBOdW1lcmljQWNjZXNzb3I8TD5cblxuICAvKiogTGluayBhcnJvdyBhY2Nlc3NvciBmdW5jdGlvbiBvciBjb25zdGFudCB2YWx1ZS4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgbGlua0Fycm93PzogR2VuZXJpY0FjY2Vzc29yPEdyYXBoTGlua0Fycm93U3R5bGUgfCBzdHJpbmcgfCBib29sZWFuLCBMPiB8IHVuZGVmaW5lZFxuXG4gIC8qKiBMaW5rIHN0cm9rZSBjb2xvciBhY2Nlc3NvciBmdW5jdGlvbiBvciBjb25zdGFudCB2YWx1ZS4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgbGlua1N0cm9rZT86IENvbG9yQWNjZXNzb3I8TD5cblxuICAvKiogTGluayBkaXNhYmxlZCBzdGF0ZSBhY2Nlc3NvciBmdW5jdGlvbiBvciBjb25zdGFudCB2YWx1ZS4gRGVmYXVsdDogYGZhbHNlYCAqL1xuICBASW5wdXQoKSBsaW5rRGlzYWJsZWQ/OiBCb29sZWFuQWNjZXNzb3I8TD5cblxuICAvKiogTGluayBmbG93IGFuaW1hdGlvbiBhY2Nlc3NvciBmdW5jdGlvbiBvciBjb25zdGFudCB2YWx1ZS4gRGVmYXVsdDogYGZhbHNlYCAqL1xuICBASW5wdXQoKSBsaW5rRmxvdz86IEJvb2xlYW5BY2Nlc3NvcjxMPlxuXG4gIC8qKiBBbmltYXRpb24gZHVyYXRpb24gb2YgdGhlIGZsb3cgKHRyYWZmaWMpIGNpcmNsZXMgaW4gbWlsbGlzZWNvbmRzLiBJZiBgbGlua0Zsb3dQYXJ0aWNsZVNwZWVkYCBpcyBwcm92aWRlZCxcbiAgICogdGhpcyBkdXJhdGlvbiB3aWxsIGJlIGNhbGN1bGF0ZWQgYmFzZWQgb24gdGhlIGxpbmsgbGVuZ3RoIGFuZCBwYXJ0aWNsZSBzcGVlZC4gRGVmYXVsdDogYDIwMDAwYCAqL1xuICBASW5wdXQoKSBsaW5rRmxvd0FuaW1EdXJhdGlvbj86IE51bWVyaWNBY2Nlc3NvcjxMPlxuXG4gIC8qKiBTaXplIG9mIHRoZSBtb3ZpbmcgcGFydGljbGVzIHRoYXQgcmVwcmVzZW50IHRyYWZmaWMgZmxvdy4gRGVmYXVsdDogYDJgICovXG4gIEBJbnB1dCgpIGxpbmtGbG93UGFydGljbGVTaXplPzogTnVtZXJpY0FjY2Vzc29yPEw+XG5cbiAgLyoqIFNwZWVkIG9mIHRoZSBtb3ZpbmcgcGFydGljbGVzIGluIHBpeGVscyBwZXIgc2Vjb25kLiBUaGlzIHByb3BlcnR5IHRha2VzIHByZWNlZGVuY2Ugb3ZlciBgbGlua0Zsb3dBbmltRHVyYXRpb25gLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBsaW5rRmxvd1BhcnRpY2xlU3BlZWQ/OiBOdW1lcmljQWNjZXNzb3I8TD5cblxuICAvKiogTGluayBsYWJlbCBhY2Nlc3NvciBmdW5jdGlvbiBvciBjb25zdGFudCB2YWx1ZS4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgbGlua0xhYmVsPzogR2VuZXJpY0FjY2Vzc29yPEdyYXBoQ2lyY2xlTGFiZWwgfCBHcmFwaENpcmNsZUxhYmVsW10sIEw+IHwgdW5kZWZpbmVkXG5cbiAgLyoqIFNoaWZ0IGxhYmVsIGFsb25nIHRoZSBsaW5rIGNlbnRlciBhIGxpdHRsZSBiaXQgdG8gYXZvaWQgb3ZlcmxhcCB3aXRoIHRoZSBsaW5rIGFycm93LiBEZWZhdWx0OiBgdHJ1ZWAgKi9cbiAgQElucHV0KCkgbGlua0xhYmVsU2hpZnRGcm9tQ2VudGVyPzogQm9vbGVhbkFjY2Vzc29yPEw+XG5cbiAgLyoqIFNwYWNpbmcgYmV0d2VlbiBuZWlnaGJvcmluZyBsaW5rcy4gRGVmYXVsdDogYDhgICovXG4gIEBJbnB1dCgpIGxpbmtOZWlnaGJvclNwYWNpbmc/OiBudW1iZXJcblxuICAvKiogQ3VydmF0dXJlIG9mIHRoZSBsaW5rLiBSZWNvbW1lbmRlZCB2YWx1ZSByYW5nZTogWzA6MS41XS5cbiAgICogYDBgIC0gc3RyYWlnaHQgbGluZSxcbiAgICogYDFgIC0gbmljZSBjdXJ2YXR1cmUsXG4gICAqIGAxLjVgIC0gdmVyeSBjdXJ2ZS5cbiAgICogRGVmYXVsdDogYDBgICovXG4gIEBJbnB1dCgpIGxpbmtDdXJ2YXR1cmU/OiBOdW1lcmljQWNjZXNzb3I8TD5cblxuICAvKiogSGlnaGxpZ2h0IGxpbmtzIG9uIGhvdmVyLiBEZWZhdWx0OiBgdHJ1ZWAgKi9cbiAgQElucHV0KCkgbGlua0hpZ2hsaWdodE9uSG92ZXI/OiBib29sZWFuXG5cbiAgLyoqIE9mZnNldCBbeCx5XSBpbiBwaXhlbHMgZnJvbSB0aGUgc291cmNlIG5vZGUncyBjZW50ZXIgcG9pbnQgd2hlcmUgdGhlIGxpbmsgc2hvdWxkIHN0YXJ0LiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBsaW5rU291cmNlUG9pbnRPZmZzZXQ/OiBHZW5lcmljQWNjZXNzb3I8W251bWJlciwgbnVtYmVyXSwgR3JhcGhMaW5rPE4sIEw+PlxuXG4gIC8qKiBPZmZzZXQgW3gseV0gaW4gcGl4ZWxzIGZyb20gdGhlIHRhcmdldCBub2RlJ3MgY2VudGVyIHBvaW50IHdoZXJlIHRoZSBsaW5rIHNob3VsZCBlbmQuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIGxpbmtUYXJnZXRQb2ludE9mZnNldD86IEdlbmVyaWNBY2Nlc3NvcjxbbnVtYmVyLCBudW1iZXJdLCBHcmFwaExpbms8TiwgTD4+XG5cbiAgLyoqIFNldCBzZWxlY3RlZCBsaW5rIGJ5IGl0cyB1bmlxdWUgaWQuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHNlbGVjdGVkTGlua0lkPzogbnVtYmVyIHwgc3RyaW5nXG5cbiAgLyoqIE5vZGUgc2l6ZSBhY2Nlc3NvciBmdW5jdGlvbiBvciBjb25zdGFudCB2YWx1ZS4gRGVmYXVsdDogYDMwYCAqL1xuICBASW5wdXQoKSBub2RlU2l6ZT86IE51bWVyaWNBY2Nlc3NvcjxOPlxuXG4gIC8qKiBOb2RlIHN0cm9rZSB3aWR0aCBhY2Nlc3NvciBmdW5jdGlvbiBvciBjb25zdGFudCB2YWx1ZS4gRGVmYXVsdDogYDNgICovXG4gIEBJbnB1dCgpIG5vZGVTdHJva2VXaWR0aD86IE51bWVyaWNBY2Nlc3NvcjxOPlxuXG4gIC8qKiBOb2RlIHNoYXBlIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIGNvbnN0YW50IHZhbHVlLiBEZWZhdWx0OiBgR3JhcGhOb2RlU2hhcGUuQ2lyY2xlYCAqL1xuICBASW5wdXQoKSBub2RlU2hhcGU/OiBHZW5lcmljQWNjZXNzb3I8R3JhcGhOb2RlU2hhcGUgfCBzdHJpbmcsIE4+XG5cbiAgLyoqIE5vZGUgZ2F1Z2Ugb3V0bGluZSBhY2Nlc3NvciBmdW5jdGlvbiBvciBjb25zdGFudCB2YWx1ZSBpbiB0aGUgcmFuZ2UgWzAsMTAwXS4gRGVmYXVsdDogYDBgICovXG4gIEBJbnB1dCgpIG5vZGVHYXVnZVZhbHVlPzogTnVtZXJpY0FjY2Vzc29yPE4+XG5cbiAgLyoqIE5vZGUgZ2F1Z2Ugb3V0bGluZSBmaWxsIGNvbG9yIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIGNvbnN0YW50IHZhbHVlLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBub2RlR2F1Z2VGaWxsPzogQ29sb3JBY2Nlc3NvcjxOPlxuXG4gIC8qKiBBbmltYXRpb24gZHVyYXRpb24gb2YgdGhlIG5vZGUgZ2F1Z2Ugb3V0bGluZS4gRGVmYXVsdDogYDE1MDBgICovXG4gIEBJbnB1dCgpIG5vZGVHYXVnZUFuaW1EdXJhdGlvbj86IG51bWJlclxuXG4gIC8qKiBOb2RlIGNlbnRyYWwgaWNvbiBhY2Nlc3NvciBmdW5jdGlvbiBvciBjb25zdGFudCB2YWx1ZS4gRGVmYXVsdDogYG5vZGUgPT4gbm9kZS5pY29uYCAqL1xuICBASW5wdXQoKSBub2RlSWNvbj86IFN0cmluZ0FjY2Vzc29yPE4+XG5cbiAgLyoqIE5vZGUgY2VudHJhbCBpY29uIHNpemUgYWNjZXNzb3IgZnVuY3Rpb24gb3IgY29uc3RhbnQgdmFsdWUuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIG5vZGVJY29uU2l6ZT86IE51bWVyaWNBY2Nlc3NvcjxOPlxuXG4gIC8qKiBOb2RlIGxhYmVsIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIGNvbnN0YW50IHZhbHVlLiBEZWZhdWx0OiBgbm9kZSA9PiBub2RlLmxhYmVsYCAqL1xuICBASW5wdXQoKSBub2RlTGFiZWw/OiBTdHJpbmdBY2Nlc3NvcjxOPlxuXG4gIC8qKiBEZWZpbmVzIHdoZXRoZXIgdG8gdHJpbSB0aGUgbm9kZSBsYWJlbHMgb3Igbm90LiBEZWZhdWx0OiBgdHJ1ZWAgKi9cbiAgQElucHV0KCkgbm9kZUxhYmVsVHJpbT86IEJvb2xlYW5BY2Nlc3NvcjxOPlxuXG4gIC8qKiBOb2RlIGxhYmVsIHRyaW1taW5nIG1vZGUuIERlZmF1bHQ6IGBUcmltTW9kZS5NaWRkbGVgICovXG4gIEBJbnB1dCgpIG5vZGVMYWJlbFRyaW1Nb2RlPzogR2VuZXJpY0FjY2Vzc29yPFRyaW1Nb2RlIHwgc3RyaW5nLCBOPlxuXG4gIC8qKiBOb2RlIGxhYmVsIG1heGltdW0gYWxsb3dlZCB0ZXh0IGxlbmd0aCBhYm92ZSB3aGljaCB0aGUgbGFiZWwgd2lsbCBiZSB0cmltbWVkLiBEZWZhdWx0OiBgMTVgICovXG4gIEBJbnB1dCgpIG5vZGVMYWJlbFRyaW1MZW5ndGg/OiBOdW1lcmljQWNjZXNzb3I8Tj5cblxuICAvKiogTm9kZSBzdWItbGFiZWwgYWNjZXNzb3IgZnVuY3Rpb24gb3IgY29uc3RhbnQgdmFsdWU6IERlZmF1bHQ6IGAnJ2AgKi9cbiAgQElucHV0KCkgbm9kZVN1YkxhYmVsPzogU3RyaW5nQWNjZXNzb3I8Tj5cblxuICAvKiogRGVmaW5lcyB3aGV0aGVyIHRvIHRyaW0gdGhlIG5vZGUgc3ViLWxhYmVscyBvciBub3QuIERlZmF1bHQ6IGB0cnVlYCAqL1xuICBASW5wdXQoKSBub2RlU3ViTGFiZWxUcmltPzogQm9vbGVhbkFjY2Vzc29yPE4+XG5cbiAgLyoqIE5vZGUgc3ViLWxhYmVsIHRyaW1taW5nIG1vZGUuIERlZmF1bHQ6IGBUcmltTW9kZS5NaWRkbGVgICovXG4gIEBJbnB1dCgpIG5vZGVTdWJMYWJlbFRyaW1Nb2RlPzogR2VuZXJpY0FjY2Vzc29yPFRyaW1Nb2RlIHwgc3RyaW5nLCBOPlxuXG4gIC8qKiBOb2RlIHN1Yi1sYWJlbCBtYXhpbXVtIGFsbG93ZWQgdGV4dCBsZW5ndGggYWJvdmUgd2hpY2ggdGhlIGxhYmVsIHdpbGwgYmUgdHJpbW1lZC4gRGVmYXVsdDogYDE1YCAqL1xuICBASW5wdXQoKSBub2RlU3ViTGFiZWxUcmltTGVuZ3RoPzogTnVtZXJpY0FjY2Vzc29yPE4+XG5cbiAgLyoqIE5vZGUgY2lyY3VsYXIgc2lkZSBsYWJlbHMgYWNjZXNzb3IgZnVuY3Rpb24uIFRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGFuIGFycmF5IG9mIEdyYXBoQ2lyY2xlTGFiZWwgb2JqZWN0cy4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgbm9kZVNpZGVMYWJlbHM/OiBHZW5lcmljQWNjZXNzb3I8R3JhcGhDaXJjbGVMYWJlbFtdLCBOPlxuXG4gIC8qKiBOb2RlIGJvdHRvbSBpY29uIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBub2RlQm90dG9tSWNvbj86IFN0cmluZ0FjY2Vzc29yPE4+XG5cbiAgLyoqIE5vZGUgZGlzYWJsZWQgc3RhdGUgYWNjZXNzb3IgZnVuY3Rpb24gb3IgY29uc3RhbnQgdmFsdWUuIERlZmF1bHQ6IGBmYWxzZWAgKi9cbiAgQElucHV0KCkgbm9kZURpc2FibGVkPzogQm9vbGVhbkFjY2Vzc29yPE4+XG5cbiAgLyoqIE5vZGUgZmlsbCBjb2xvciBhY2Nlc3NvciBmdW5jdGlvbiBvciBjb25zdGFudCB2YWx1ZS4gRGVmYXVsdDogYG5vZGUgPT4gbm9kZS5maWxsYCAqL1xuICBASW5wdXQoKSBub2RlRmlsbD86IENvbG9yQWNjZXNzb3I8Tj5cblxuICAvKiogTm9kZSBzdHJva2UgY29sb3IgYWNjZXNzb3IgZnVuY3Rpb24gb3IgY29uc3RhbnQgdmFsdWUuIERlZmF1bHQ6IGBub2RlID0+IG5vZGUuc3Ryb2tlYCAqL1xuICBASW5wdXQoKSBub2RlU3Ryb2tlPzogQ29sb3JBY2Nlc3NvcjxOPlxuXG4gIC8qKiBTb3J0aW5nIGZ1bmN0aW9uIHRvIGRldGVybWluZSBub2RlIHBsYWNlbWVudC4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgbm9kZVNvcnQ/OiAoKGE6IE4sIGI6IE4pID0+IG51bWJlcilcblxuICAvKiogU3BlY2lmeSB0aGUgaW5pdGlhbCBwb3NpdGlvbiBmb3IgZW50ZXJpbmcgbm9kZXMgYXMgW3gsIHldLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBub2RlRW50ZXJQb3NpdGlvbj86IEdlbmVyaWNBY2Nlc3NvcjxbbnVtYmVyLCBudW1iZXJdLCBOPiB8IHVuZGVmaW5lZFxuXG4gIC8qKiBTcGVjaWZ5IHRoZSBpbml0aWFsIHNjYWxlIGZvciBlbnRlcmluZyBub2RlcyBpbiB0aGUgcmFuZ2UgWzAsMV0uIERlZmF1bHQ6IGAwLjc1YCAqL1xuICBASW5wdXQoKSBub2RlRW50ZXJTY2FsZT86IE51bWVyaWNBY2Nlc3NvcjxOPiB8IHVuZGVmaW5lZFxuXG4gIC8qKiBTcGVjaWZ5IHRoZSBkZXN0aW5hdGlvbiBwb3NpdGlvbiBmb3IgZXhpdGluZyBub2RlcyBhcyBbeCwgeV0uIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIG5vZGVFeGl0UG9zaXRpb24/OiBHZW5lcmljQWNjZXNzb3I8W251bWJlciwgbnVtYmVyXSwgTj4gfCB1bmRlZmluZWRcblxuICAvKiogU3BlY2lmeSB0aGUgZGVzdGluYXRpb24gc2NhbGUgZm9yIGV4aXRpbmcgbm9kZXMgaW4gdGhlIHJhbmdlIFswLDFdLiBEZWZhdWx0OiBgMC43NWAgKi9cbiAgQElucHV0KCkgbm9kZUV4aXRTY2FsZT86IE51bWVyaWNBY2Nlc3NvcjxOPiB8IHVuZGVmaW5lZFxuXG4gIC8qKiBDdXN0b20gXCJlbnRlclwiIGZ1bmN0aW9uIGZvciBub2RlIHJlbmRlcmluZy4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgbm9kZUVudGVyQ3VzdG9tUmVuZGVyRnVuY3Rpb24/OiAoZGF0dW06IEdyYXBoTm9kZTxOLCBMPiwgbm9kZUdyb3VwRWxlbWVudFNlbGVjdGlvbjogU2VsZWN0aW9uPFNWR0dFbGVtZW50LCBHcmFwaE5vZGU8TiwgTD4sIG51bGwsIHVua25vd24+LCBjb25maWc6IEdyYXBoQ29uZmlnSW50ZXJmYWNlPE4sIEw+LCBkdXJhdGlvbjogbnVtYmVyLCB6b29tTGV2ZWw6IG51bWJlcikgPT4gdm9pZFxuXG4gIC8qKiBDdXN0b20gXCJ1cGRhdGVcIiBmdW5jdGlvbiBmb3Igbm9kZSByZW5kZXJpbmcuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIG5vZGVVcGRhdGVDdXN0b21SZW5kZXJGdW5jdGlvbj86IChkYXR1bTogR3JhcGhOb2RlPE4sIEw+LCBub2RlR3JvdXBFbGVtZW50U2VsZWN0aW9uOiBTZWxlY3Rpb248U1ZHR0VsZW1lbnQsIEdyYXBoTm9kZTxOLCBMPiwgbnVsbCwgdW5rbm93bj4sIGNvbmZpZzogR3JhcGhDb25maWdJbnRlcmZhY2U8TiwgTD4sIGR1cmF0aW9uOiBudW1iZXIsIHpvb21MZXZlbDogbnVtYmVyKSA9PiB2b2lkXG5cbiAgLyoqIEN1c3RvbSBwYXJ0aWFsIFwidXBkYXRlXCIgZnVuY3Rpb24gZm9yIG5vZGUgcmVuZGVyaW5nIHdoaWNoIHdpbGwgYmUgdHJpZ2dlcmVkIGFmdGVyIHRoZSBmb2xsb3dpbmcgZXZlbnRzOlxuICAgKiAtIEZ1bGwgbm9kZSB1cGRhdGUgKGBub2RlVXBkYXRlQ3VzdG9tUmVuZGVyRnVuY3Rpb25gKTtcbiAgICogLSBCYWNrZ3JvdW5kIGNsaWNrO1xuICAgKiAtIE5vZGUgYW5kIExpbmsgbW91c2VvdmVyIGFuZCBtb3VzZW91dDtcbiAgICogLSBOb2RlIGJydXNoaW5nLFxuICAgKiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBub2RlUGFydGlhbFVwZGF0ZUN1c3RvbVJlbmRlckZ1bmN0aW9uPzogKGRhdHVtOiBHcmFwaE5vZGU8TiwgTD4sIG5vZGVHcm91cEVsZW1lbnRTZWxlY3Rpb246IFNlbGVjdGlvbjxTVkdHRWxlbWVudCwgR3JhcGhOb2RlPE4sIEw+LCBudWxsLCB1bmtub3duPiwgY29uZmlnOiBHcmFwaENvbmZpZ0ludGVyZmFjZTxOLCBMPiwgZHVyYXRpb246IG51bWJlciwgem9vbUxldmVsOiBudW1iZXIpID0+IHZvaWRcblxuICAvKiogQ3VzdG9tIFwiZXhpdFwiIGZ1bmN0aW9uIGZvciBub2RlIHJlbmRlcmluZy4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgbm9kZUV4aXRDdXN0b21SZW5kZXJGdW5jdGlvbj86IChkYXR1bTogR3JhcGhOb2RlPE4sIEw+LCBub2RlR3JvdXBFbGVtZW50U2VsZWN0aW9uOiBTZWxlY3Rpb248U1ZHR0VsZW1lbnQsIEdyYXBoTm9kZTxOLCBMPiwgbnVsbCwgdW5rbm93bj4sIGNvbmZpZzogR3JhcGhDb25maWdJbnRlcmZhY2U8TiwgTD4sIGR1cmF0aW9uOiBudW1iZXIsIHpvb21MZXZlbDogbnVtYmVyKSA9PiB2b2lkXG5cbiAgLyoqIEN1c3RvbSByZW5kZXIgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCB3aGlsZSB6b29taW5nIC8gcGFubmluZyB0aGUgZ3JhcGguIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIG5vZGVPblpvb21DdXN0b21SZW5kZXJGdW5jdGlvbj86IChkYXR1bTogR3JhcGhOb2RlPE4sIEw+LCBub2RlR3JvdXBFbGVtZW50U2VsZWN0aW9uOiBTZWxlY3Rpb248U1ZHR0VsZW1lbnQsIEdyYXBoTm9kZTxOLCBMPiwgbnVsbCwgdW5rbm93bj4sIGNvbmZpZzogR3JhcGhDb25maWdJbnRlcmZhY2U8TiwgTD4sIHpvb21MZXZlbDogbnVtYmVyKSA9PiB2b2lkXG5cbiAgLyoqIERlZmluZSB0aGUgbW9kZSBmb3IgaGlnaGxpZ2h0aW5nIHNlbGVjdGVkIG5vZGVzIGluIHRoZSBncmFwaC4gRGVmYXVsdDogYEdyYXBoTm9kZVNlbGVjdGlvbkhpZ2hsaWdodE1vZGUuR3JleW91dE5vbkNvbm5lY3RlZGAgKi9cbiAgQElucHV0KCkgbm9kZVNlbGVjdGlvbkhpZ2hsaWdodE1vZGU/OiBHcmFwaE5vZGVTZWxlY3Rpb25IaWdobGlnaHRNb2RlXG5cbiAgLyoqIFNldCBzZWxlY3RlZCBub2RlIGJ5IHVuaXF1ZSBpZC4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgc2VsZWN0ZWROb2RlSWQ/OiBudW1iZXIgfCBzdHJpbmdcblxuICAvKiogU2V0IHNlbGVjdGVkIG5vZGVzIGJ5IHVuaXF1ZSBpZC4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgc2VsZWN0ZWROb2RlSWRzPzogbnVtYmVyW10gfCBzdHJpbmdbXVxuXG4gIC8qKiBOb2RlIGV4cGFuZGFibGUgYWNjZXNzb3IgZnVuY3Rpb24gb3IgY29uc3RhbnQgdmFsdWUuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIG5vZGVFeHBhbmRhYmxlPzogQm9vbGVhbkFjY2Vzc29yPE4+XG5cbiAgLyoqIERpcmVjdCBjaGlsZCBub2RlIGlkcyBmb3IgYW4gZXhwYW5kYWJsZSBub2RlLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBub2RlQ2hpbGRyZW4/OiBHZW5lcmljQWNjZXNzb3I8KG51bWJlciB8IHN0cmluZylbXSwgTj5cblxuICAvKiogQ2FsbGJhY2sgZmlyZWQgb24gbm9kZSBleHBhbmQgb3IgY29sbGFwc2UuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIG9uTm9kZUV4cGFuZD86IChub2RlOiBHcmFwaE5vZGU8TiwgTD4sIGV4cGFuZGVkOiBib29sZWFuKSA9PiB2b2lkXG5cbiAgLyoqIFBhbmVscyBjb25maWd1cmF0aW9uLiBBbiBhcnJheSBvZiBgR3JhcGhQYW5lbENvbmZpZ2Agb2JqZWN0cy4gRGVmYXVsdDogYFtdYCAqL1xuICBASW5wdXQoKSBwYW5lbHM/OiBHcmFwaFBhbmVsQ29uZmlnW10gfCB1bmRlZmluZWRcblxuICAvKiogR3JhcGggbm9kZSBkcmFnIHN0YXJ0IGNhbGxiYWNrIGZ1bmN0aW9uLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBvbk5vZGVEcmFnU3RhcnQ/OiAobjogR3JhcGhOb2RlPE4sIEw+LCBldmVudDogRDNEcmFnRXZlbnQ8U1ZHR0VsZW1lbnQsIEdyYXBoTm9kZTxOLCBMPiwgdW5rbm93bj4pID0+IHZvaWQgfCB1bmRlZmluZWRcblxuICAvKiogR3JhcGggbm9kZSBkcmFnIGNhbGxiYWNrIGZ1bmN0aW9uLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBvbk5vZGVEcmFnPzogKG46IEdyYXBoTm9kZTxOLCBMPiwgZXZlbnQ6IEQzRHJhZ0V2ZW50PFNWR0dFbGVtZW50LCBHcmFwaE5vZGU8TiwgTD4sIHVua25vd24+KSA9PiB2b2lkIHwgdW5kZWZpbmVkXG5cbiAgLyoqIEdyYXBoIG5vZGUgZHJhZyBlbmQgY2FsbGJhY2sgZnVuY3Rpb24uIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIG9uTm9kZURyYWdFbmQ/OiAobjogR3JhcGhOb2RlPE4sIEw+LCBldmVudDogRDNEcmFnRXZlbnQ8U1ZHR0VsZW1lbnQsIEdyYXBoTm9kZTxOLCBMPiwgdW5rbm93bj4pID0+IHZvaWQgfCB1bmRlZmluZWRcblxuICAvKiogWm9vbSBldmVudCBjYWxsYmFjay4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgb25ab29tPzogKHpvb21TY2FsZTogbnVtYmVyLCB6b29tU2NhbGVFeHRlbnQ6IFtudW1iZXIsIG51bWJlcl0sIGV2ZW50OiBEM1pvb21FdmVudDxTVkdHRWxlbWVudCwgdW5rbm93bj4gfCB1bmRlZmluZWQsIHRyYW5zZm9ybTogWm9vbVRyYW5zZm9ybSkgPT4gdm9pZFxuXG4gIC8qKiBab29tIHN0YXJ0IGV2ZW50IGNhbGxiYWNrLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBvblpvb21TdGFydD86ICh6b29tU2NhbGU6IG51bWJlciwgem9vbVNjYWxlRXh0ZW50OiBbbnVtYmVyLCBudW1iZXJdLCBldmVudDogRDNab29tRXZlbnQ8U1ZHR0VsZW1lbnQsIHVua25vd24+IHwgdW5kZWZpbmVkLCB0cmFuc2Zvcm06IFpvb21UcmFuc2Zvcm0pID0+IHZvaWRcblxuICAvKiogWm9vbSBlbmQgZXZlbnQgY2FsbGJhY2suIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIG9uWm9vbUVuZD86ICh6b29tU2NhbGU6IG51bWJlciwgem9vbVNjYWxlRXh0ZW50OiBbbnVtYmVyLCBudW1iZXJdLCBldmVudDogRDNab29tRXZlbnQ8U1ZHR0VsZW1lbnQsIHVua25vd24+IHwgdW5kZWZpbmVkLCB0cmFuc2Zvcm06IFpvb21UcmFuc2Zvcm0pID0+IHZvaWRcblxuICAvKiogQ2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGdyYXBoIGxheW91dCBpcyBjYWxjdWxhdGVkLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBvbkxheW91dENhbGN1bGF0ZWQ/OiAobm9kZXM6IEdyYXBoTm9kZTxOLCBMPltdLCBsaW5rczogR3JhcGhMaW5rPE4sIEw+W10pID0+IHZvaWRcblxuICAvKiogR3JhcGggbm9kZSBzZWxlY3Rpb24gYnJ1c2ggY2FsbGJhY2sgZnVuY3Rpb24uIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIG9uTm9kZVNlbGVjdGlvbkJydXNoPzogKHNlbGVjdGVkTm9kZXM6IEdyYXBoTm9kZTxOLCBMPltdLCBldmVudDogRDNCcnVzaEV2ZW50PFNWR0dFbGVtZW50PiB8IHVuZGVmaW5lZCkgPT4gdm9pZFxuXG4gIC8qKiBHcmFwaCBtdWx0aXBsZSBub2RlIGRyYWcgY2FsbGJhY2sgZnVuY3Rpb24uIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIG9uTm9kZVNlbGVjdGlvbkRyYWc/OiAoc2VsZWN0ZWROb2RlczogR3JhcGhOb2RlPE4sIEw+W10sIGV2ZW50OiBEM0RyYWdFdmVudDxTVkdHRWxlbWVudCwgR3JhcGhOb2RlPE4sIEw+LCB1bmtub3duPikgPT4gdm9pZFxuXG4gIC8qKiBDYWxsYmFjayBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgZ3JhcGggcmVuZGVyaW5nIGlzIGNvbXBsZXRlLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBvblJlbmRlckNvbXBsZXRlPzogKGc6IFNlbGVjdGlvbjxTVkdHRWxlbWVudCwgdW5rbm93biwgbnVsbCwgdW5kZWZpbmVkPiwgbm9kZXM6IEdyYXBoTm9kZTxOLCBMPltdLCBsaW5rczogR3JhcGhMaW5rPE4sIEw+W10sIGNvbmZpZzogR3JhcGhDb25maWdJbnRlcmZhY2U8TiwgTD4sIGR1cmF0aW9uOiBudW1iZXIsIHpvb21MZXZlbDogbnVtYmVyLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcikgPT4gdm9pZFxuXG4gIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGNvbXBvbmVudCBzaG91bGQgdXBkYXRlIHdoZW4gbmV3IGRhdGEgaXMgcHJvdmlkZWQuXG4gICAqIFRoaXMgZnVuY3Rpb24gdGFrZXMgdGhlIHByZXZpb3VzIGFuZCBuZXcgZGF0YSBhcyBwYXJhbWV0ZXJzIGFuZCByZXR1cm5zIGEgYm9vbGVhblxuICAgKiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHVwZGF0ZSBzaG91bGQgcHJvY2VlZC4gVXNlZnVsIGZvciBmaW5lLWdyYWluZWQgY29udHJvbCBvdmVyXG4gICAqIHVwZGF0ZSBiZWhhdmlvciB3aGVuIHlvdXIgZGF0YSBoYXMgYSBjb21wbGV4IG5lc3RlZCBzdHJ1Y3R1cmUuXG4gICAqIEJ5IGRlZmF1bHQgdGhlIGBpc0VxdWFsYCBmdW5jdGlvbiBmcm9tIFVub3ZpcyB3aWxsIGJlIHVzZWQgdG8gZG8gdGhlIGNvbXBhcmlzb24uICovXG4gIEBJbnB1dCgpIHNob3VsZERhdGFVcGRhdGU/OiAocHJldkRhdGE6IEdyYXBoSW5wdXREYXRhPE4sIEw+LCBuZXh0RGF0YTogR3JhcGhJbnB1dERhdGE8TiwgTD4sIGRhdGFtb2RlbDogR3JhcGhEYXRhTW9kZWw8TiwgTCwgR3JhcGhOb2RlPE4sIEw+LCBHcmFwaExpbms8TiwgTD4+KSA9PiBib29sZWFuXG4gIEBJbnB1dCgpIGRhdGE6IHsgbm9kZXM6IE5bXTsgbGlua3M/OiBMW10gfVxuXG4gIGNvbXBvbmVudDogR3JhcGg8TiwgTD4gfCB1bmRlZmluZWRcbiAgcHVibGljIGNvbXBvbmVudENvbnRhaW5lcjogQ29udGFpbmVyQ29yZSB8IHVuZGVmaW5lZFxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCAoKTogdm9pZCB7XG4gICAgdGhpcy5jb21wb25lbnQgPSBuZXcgR3JhcGg8TiwgTD4odGhpcy5nZXRDb25maWcoKSlcblxuICAgIGlmICh0aGlzLmRhdGEpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50LnNldERhdGEodGhpcy5kYXRhKVxuICAgICAgdGhpcy5jb21wb25lbnRDb250YWluZXI/LnJlbmRlcigpXG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMgKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5kYXRhKSB7IHRoaXMuY29tcG9uZW50Py5zZXREYXRhKHRoaXMuZGF0YSkgfVxuICAgIHRoaXMuY29tcG9uZW50Py5zZXRDb25maWcodGhpcy5nZXRDb25maWcoKSlcbiAgICB0aGlzLmNvbXBvbmVudENvbnRhaW5lcj8ucmVuZGVyKClcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29uZmlnICgpOiBHcmFwaENvbmZpZ0ludGVyZmFjZTxOLCBMPiB7XG4gICAgY29uc3QgeyBkdXJhdGlvbiwgZXZlbnRzLCBhdHRyaWJ1dGVzLCB6b29tU2NhbGVFeHRlbnQsIGRpc2FibGVab29tLCB6b29tRXZlbnRGaWx0ZXIsIGRpc2FibGVEcmFnLCBkaXNhYmxlQnJ1c2gsIHpvb21UaHJvdHRsZWRVcGRhdGVOb2RlVGhyZXNob2xkLCBmaXRWaWV3UGFkZGluZywgZml0Vmlld0FsaWduLCBsYXlvdXRUeXBlLCBsYXlvdXRBdXRvZml0LCBsYXlvdXRBdXRvZml0VG9sZXJhbmNlLCBsYXlvdXROb25Db25uZWN0ZWRBc2lkZSwgbGF5b3V0Tm9kZUdyb3VwLCBsYXlvdXRHcm91cE9yZGVyLCBsYXlvdXRQYXJhbGxlbE5vZGVzUGVyQ29sdW1uLCBsYXlvdXRQYXJhbGxlbE5vZGVTdWJHcm91cCwgbGF5b3V0UGFyYWxsZWxTdWJHcm91cHNQZXJSb3csIGxheW91dFBhcmFsbGVsTm9kZVNwYWNpbmcsIGxheW91dFBhcmFsbGVsU3ViR3JvdXBTcGFjaW5nLCBsYXlvdXRQYXJhbGxlbEdyb3VwU3BhY2luZywgbGF5b3V0UGFyYWxsZWxTb3J0Q29ubmVjdGlvbnNCeUdyb3VwLCBmb3JjZUxheW91dFNldHRpbmdzLCBkYWdyZUxheW91dFNldHRpbmdzLCBsYXlvdXRFbGtTZXR0aW5ncywgbGF5b3V0RWxrTm9kZUdyb3VwcywgbGF5b3V0RWxrR2V0Tm9kZVNoYXBlLCBsaW5rV2lkdGgsIGxpbmtTdHlsZSwgbGlua0JhbmRXaWR0aCwgbGlua0Fycm93LCBsaW5rU3Ryb2tlLCBsaW5rRGlzYWJsZWQsIGxpbmtGbG93LCBsaW5rRmxvd0FuaW1EdXJhdGlvbiwgbGlua0Zsb3dQYXJ0aWNsZVNpemUsIGxpbmtGbG93UGFydGljbGVTcGVlZCwgbGlua0xhYmVsLCBsaW5rTGFiZWxTaGlmdEZyb21DZW50ZXIsIGxpbmtOZWlnaGJvclNwYWNpbmcsIGxpbmtDdXJ2YXR1cmUsIGxpbmtIaWdobGlnaHRPbkhvdmVyLCBsaW5rU291cmNlUG9pbnRPZmZzZXQsIGxpbmtUYXJnZXRQb2ludE9mZnNldCwgc2VsZWN0ZWRMaW5rSWQsIG5vZGVTaXplLCBub2RlU3Ryb2tlV2lkdGgsIG5vZGVTaGFwZSwgbm9kZUdhdWdlVmFsdWUsIG5vZGVHYXVnZUZpbGwsIG5vZGVHYXVnZUFuaW1EdXJhdGlvbiwgbm9kZUljb24sIG5vZGVJY29uU2l6ZSwgbm9kZUxhYmVsLCBub2RlTGFiZWxUcmltLCBub2RlTGFiZWxUcmltTW9kZSwgbm9kZUxhYmVsVHJpbUxlbmd0aCwgbm9kZVN1YkxhYmVsLCBub2RlU3ViTGFiZWxUcmltLCBub2RlU3ViTGFiZWxUcmltTW9kZSwgbm9kZVN1YkxhYmVsVHJpbUxlbmd0aCwgbm9kZVNpZGVMYWJlbHMsIG5vZGVCb3R0b21JY29uLCBub2RlRGlzYWJsZWQsIG5vZGVGaWxsLCBub2RlU3Ryb2tlLCBub2RlU29ydCwgbm9kZUVudGVyUG9zaXRpb24sIG5vZGVFbnRlclNjYWxlLCBub2RlRXhpdFBvc2l0aW9uLCBub2RlRXhpdFNjYWxlLCBub2RlRW50ZXJDdXN0b21SZW5kZXJGdW5jdGlvbiwgbm9kZVVwZGF0ZUN1c3RvbVJlbmRlckZ1bmN0aW9uLCBub2RlUGFydGlhbFVwZGF0ZUN1c3RvbVJlbmRlckZ1bmN0aW9uLCBub2RlRXhpdEN1c3RvbVJlbmRlckZ1bmN0aW9uLCBub2RlT25ab29tQ3VzdG9tUmVuZGVyRnVuY3Rpb24sIG5vZGVTZWxlY3Rpb25IaWdobGlnaHRNb2RlLCBzZWxlY3RlZE5vZGVJZCwgc2VsZWN0ZWROb2RlSWRzLCBub2RlRXhwYW5kYWJsZSwgbm9kZUNoaWxkcmVuLCBvbk5vZGVFeHBhbmQsIHBhbmVscywgb25Ob2RlRHJhZ1N0YXJ0LCBvbk5vZGVEcmFnLCBvbk5vZGVEcmFnRW5kLCBvblpvb20sIG9uWm9vbVN0YXJ0LCBvblpvb21FbmQsIG9uTGF5b3V0Q2FsY3VsYXRlZCwgb25Ob2RlU2VsZWN0aW9uQnJ1c2gsIG9uTm9kZVNlbGVjdGlvbkRyYWcsIG9uUmVuZGVyQ29tcGxldGUsIHNob3VsZERhdGFVcGRhdGUgfSA9IHRoaXNcbiAgICBjb25zdCBjb25maWcgPSB7IGR1cmF0aW9uLCBldmVudHMsIGF0dHJpYnV0ZXMsIHpvb21TY2FsZUV4dGVudCwgZGlzYWJsZVpvb20sIHpvb21FdmVudEZpbHRlciwgZGlzYWJsZURyYWcsIGRpc2FibGVCcnVzaCwgem9vbVRocm90dGxlZFVwZGF0ZU5vZGVUaHJlc2hvbGQsIGZpdFZpZXdQYWRkaW5nLCBmaXRWaWV3QWxpZ24sIGxheW91dFR5cGUsIGxheW91dEF1dG9maXQsIGxheW91dEF1dG9maXRUb2xlcmFuY2UsIGxheW91dE5vbkNvbm5lY3RlZEFzaWRlLCBsYXlvdXROb2RlR3JvdXAsIGxheW91dEdyb3VwT3JkZXIsIGxheW91dFBhcmFsbGVsTm9kZXNQZXJDb2x1bW4sIGxheW91dFBhcmFsbGVsTm9kZVN1Ykdyb3VwLCBsYXlvdXRQYXJhbGxlbFN1Ykdyb3Vwc1BlclJvdywgbGF5b3V0UGFyYWxsZWxOb2RlU3BhY2luZywgbGF5b3V0UGFyYWxsZWxTdWJHcm91cFNwYWNpbmcsIGxheW91dFBhcmFsbGVsR3JvdXBTcGFjaW5nLCBsYXlvdXRQYXJhbGxlbFNvcnRDb25uZWN0aW9uc0J5R3JvdXAsIGZvcmNlTGF5b3V0U2V0dGluZ3MsIGRhZ3JlTGF5b3V0U2V0dGluZ3MsIGxheW91dEVsa1NldHRpbmdzLCBsYXlvdXRFbGtOb2RlR3JvdXBzLCBsYXlvdXRFbGtHZXROb2RlU2hhcGUsIGxpbmtXaWR0aCwgbGlua1N0eWxlLCBsaW5rQmFuZFdpZHRoLCBsaW5rQXJyb3csIGxpbmtTdHJva2UsIGxpbmtEaXNhYmxlZCwgbGlua0Zsb3csIGxpbmtGbG93QW5pbUR1cmF0aW9uLCBsaW5rRmxvd1BhcnRpY2xlU2l6ZSwgbGlua0Zsb3dQYXJ0aWNsZVNwZWVkLCBsaW5rTGFiZWwsIGxpbmtMYWJlbFNoaWZ0RnJvbUNlbnRlciwgbGlua05laWdoYm9yU3BhY2luZywgbGlua0N1cnZhdHVyZSwgbGlua0hpZ2hsaWdodE9uSG92ZXIsIGxpbmtTb3VyY2VQb2ludE9mZnNldCwgbGlua1RhcmdldFBvaW50T2Zmc2V0LCBzZWxlY3RlZExpbmtJZCwgbm9kZVNpemUsIG5vZGVTdHJva2VXaWR0aCwgbm9kZVNoYXBlLCBub2RlR2F1Z2VWYWx1ZSwgbm9kZUdhdWdlRmlsbCwgbm9kZUdhdWdlQW5pbUR1cmF0aW9uLCBub2RlSWNvbiwgbm9kZUljb25TaXplLCBub2RlTGFiZWwsIG5vZGVMYWJlbFRyaW0sIG5vZGVMYWJlbFRyaW1Nb2RlLCBub2RlTGFiZWxUcmltTGVuZ3RoLCBub2RlU3ViTGFiZWwsIG5vZGVTdWJMYWJlbFRyaW0sIG5vZGVTdWJMYWJlbFRyaW1Nb2RlLCBub2RlU3ViTGFiZWxUcmltTGVuZ3RoLCBub2RlU2lkZUxhYmVscywgbm9kZUJvdHRvbUljb24sIG5vZGVEaXNhYmxlZCwgbm9kZUZpbGwsIG5vZGVTdHJva2UsIG5vZGVTb3J0LCBub2RlRW50ZXJQb3NpdGlvbiwgbm9kZUVudGVyU2NhbGUsIG5vZGVFeGl0UG9zaXRpb24sIG5vZGVFeGl0U2NhbGUsIG5vZGVFbnRlckN1c3RvbVJlbmRlckZ1bmN0aW9uLCBub2RlVXBkYXRlQ3VzdG9tUmVuZGVyRnVuY3Rpb24sIG5vZGVQYXJ0aWFsVXBkYXRlQ3VzdG9tUmVuZGVyRnVuY3Rpb24sIG5vZGVFeGl0Q3VzdG9tUmVuZGVyRnVuY3Rpb24sIG5vZGVPblpvb21DdXN0b21SZW5kZXJGdW5jdGlvbiwgbm9kZVNlbGVjdGlvbkhpZ2hsaWdodE1vZGUsIHNlbGVjdGVkTm9kZUlkLCBzZWxlY3RlZE5vZGVJZHMsIG5vZGVFeHBhbmRhYmxlLCBub2RlQ2hpbGRyZW4sIG9uTm9kZUV4cGFuZCwgcGFuZWxzLCBvbk5vZGVEcmFnU3RhcnQsIG9uTm9kZURyYWcsIG9uTm9kZURyYWdFbmQsIG9uWm9vbSwgb25ab29tU3RhcnQsIG9uWm9vbUVuZCwgb25MYXlvdXRDYWxjdWxhdGVkLCBvbk5vZGVTZWxlY3Rpb25CcnVzaCwgb25Ob2RlU2VsZWN0aW9uRHJhZywgb25SZW5kZXJDb21wbGV0ZSwgc2hvdWxkRGF0YVVwZGF0ZSB9XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGNvbmZpZykgYXMgKGtleW9mIEdyYXBoQ29uZmlnSW50ZXJmYWNlPE4sIEw+KVtdXG4gICAga2V5cy5mb3JFYWNoKGtleSA9PiB7IGlmIChjb25maWdba2V5XSA9PT0gdW5kZWZpbmVkKSBkZWxldGUgY29uZmlnW2tleV0gfSlcblxuICAgIHJldHVybiBjb25maWdcbiAgfVxufVxuIl19
|
|
@@ -21,8 +21,8 @@ export class VisSankeyComponent {
|
|
|
21
21
|
(_c = this.componentContainer) === null || _c === void 0 ? void 0 : _c.render();
|
|
22
22
|
}
|
|
23
23
|
getConfig() {
|
|
24
|
-
const { duration, events, attributes, id, heightNormalizationCoeff, zoomScale, zoomPan, enableZoom, zoomExtent, zoomMode, exitTransitionType, enterTransitionType, highlightSubtreeOnHover, highlightDuration, highlightDelay, iterations, nodeSort, linkSort, nodeWidth, nodeAlign, nodeHorizontalSpacing, nodeMinHeight, nodeMaxHeight, nodePadding, showSingleNode, nodeCursor, nodeIcon, nodeColor, nodeFixedValue, nodeIconColor, linkColor, linkValue, linkCursor, label, subLabel, labelPosition, labelVerticalAlign, labelBackground, labelFit, labelMaxWidth, labelMaxWidthTakeAvailableSpace, labelMaxWidthTakeAvailableSpaceTolerance, labelExpandTrimmedOnHover, labelTrimMode, labelFontSize, labelTextSeparator, labelTextDecoration, labelForceWordBreak, labelColor, labelCursor, labelVisibility, subLabelFontSize, subLabelColor, subLabelPlacement, subLabelTextDecoration, subLabelToLabelInlineWidthRatio, onZoom, onLayoutCalculated, selectedNodeIds } = this;
|
|
25
|
-
const config = { duration, events, attributes, id, heightNormalizationCoeff, zoomScale, zoomPan, enableZoom, zoomExtent, zoomMode, exitTransitionType, enterTransitionType, highlightSubtreeOnHover, highlightDuration, highlightDelay, iterations, nodeSort, linkSort, nodeWidth, nodeAlign, nodeHorizontalSpacing, nodeMinHeight, nodeMaxHeight, nodePadding, showSingleNode, nodeCursor, nodeIcon, nodeColor, nodeFixedValue, nodeIconColor, linkColor, linkValue, linkCursor, label, subLabel, labelPosition, labelVerticalAlign, labelBackground, labelFit, labelMaxWidth, labelMaxWidthTakeAvailableSpace, labelMaxWidthTakeAvailableSpaceTolerance, labelExpandTrimmedOnHover, labelTrimMode, labelFontSize, labelTextSeparator, labelTextDecoration, labelForceWordBreak, labelColor, labelCursor, labelVisibility, subLabelFontSize, subLabelColor, subLabelPlacement, subLabelTextDecoration, subLabelToLabelInlineWidthRatio, onZoom, onLayoutCalculated, selectedNodeIds };
|
|
24
|
+
const { duration, events, attributes, id, heightNormalizationCoeff, zoomScale, zoomPan, enableZoom, zoomExtent, zoomMode, disableZoomModifierKeys, exitTransitionType, enterTransitionType, highlightSubtreeOnHover, highlightDuration, highlightDelay, iterations, nodeSort, linkSort, nodeWidth, nodeAlign, nodeHorizontalSpacing, nodeMinHeight, nodeMaxHeight, nodePadding, showSingleNode, nodeCursor, nodeIcon, nodeColor, nodeFixedValue, nodeIconColor, linkColor, linkValue, linkCursor, label, subLabel, labelPosition, labelVerticalAlign, labelBackground, labelFit, labelMaxWidth, labelMaxWidthTakeAvailableSpace, labelMaxWidthTakeAvailableSpaceTolerance, labelExpandTrimmedOnHover, labelTrimMode, labelFontSize, labelTextSeparator, labelTextDecoration, labelForceWordBreak, labelColor, labelCursor, labelVisibility, subLabelFontSize, subLabelColor, subLabelPlacement, subLabelTextDecoration, subLabelToLabelInlineWidthRatio, onZoom, onLayoutCalculated, selectedNodeIds } = this;
|
|
25
|
+
const config = { duration, events, attributes, id, heightNormalizationCoeff, zoomScale, zoomPan, enableZoom, zoomExtent, zoomMode, disableZoomModifierKeys, exitTransitionType, enterTransitionType, highlightSubtreeOnHover, highlightDuration, highlightDelay, iterations, nodeSort, linkSort, nodeWidth, nodeAlign, nodeHorizontalSpacing, nodeMinHeight, nodeMaxHeight, nodePadding, showSingleNode, nodeCursor, nodeIcon, nodeColor, nodeFixedValue, nodeIconColor, linkColor, linkValue, linkCursor, label, subLabel, labelPosition, labelVerticalAlign, labelBackground, labelFit, labelMaxWidth, labelMaxWidthTakeAvailableSpace, labelMaxWidthTakeAvailableSpaceTolerance, labelExpandTrimmedOnHover, labelTrimMode, labelFontSize, labelTextSeparator, labelTextDecoration, labelForceWordBreak, labelColor, labelCursor, labelVisibility, subLabelFontSize, subLabelColor, subLabelPlacement, subLabelTextDecoration, subLabelToLabelInlineWidthRatio, onZoom, onLayoutCalculated, selectedNodeIds };
|
|
26
26
|
const keys = Object.keys(config);
|
|
27
27
|
keys.forEach(key => { if (config[key] === undefined)
|
|
28
28
|
delete config[key]; });
|
|
@@ -30,7 +30,7 @@ export class VisSankeyComponent {
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
VisSankeyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: VisSankeyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
33
|
-
VisSankeyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: VisSankeyComponent, selector: "vis-sankey", inputs: { duration: "duration", events: "events", attributes: "attributes", id: "id", heightNormalizationCoeff: "heightNormalizationCoeff", zoomScale: "zoomScale", zoomPan: "zoomPan", enableZoom: "enableZoom", zoomExtent: "zoomExtent", zoomMode: "zoomMode", exitTransitionType: "exitTransitionType", enterTransitionType: "enterTransitionType", highlightSubtreeOnHover: "highlightSubtreeOnHover", highlightDuration: "highlightDuration", highlightDelay: "highlightDelay", iterations: "iterations", nodeSort: "nodeSort", linkSort: "linkSort", nodeWidth: "nodeWidth", nodeAlign: "nodeAlign", nodeHorizontalSpacing: "nodeHorizontalSpacing", nodeMinHeight: "nodeMinHeight", nodeMaxHeight: "nodeMaxHeight", nodePadding: "nodePadding", showSingleNode: "showSingleNode", nodeCursor: "nodeCursor", nodeIcon: "nodeIcon", nodeColor: "nodeColor", nodeFixedValue: "nodeFixedValue", nodeIconColor: "nodeIconColor", linkColor: "linkColor", linkValue: "linkValue", linkCursor: "linkCursor", label: "label", subLabel: "subLabel", labelPosition: "labelPosition", labelVerticalAlign: "labelVerticalAlign", labelBackground: "labelBackground", labelFit: "labelFit", labelMaxWidth: "labelMaxWidth", labelMaxWidthTakeAvailableSpace: "labelMaxWidthTakeAvailableSpace", labelMaxWidthTakeAvailableSpaceTolerance: "labelMaxWidthTakeAvailableSpaceTolerance", labelExpandTrimmedOnHover: "labelExpandTrimmedOnHover", labelTrimMode: "labelTrimMode", labelFontSize: "labelFontSize", labelTextSeparator: "labelTextSeparator", labelTextDecoration: "labelTextDecoration", labelForceWordBreak: "labelForceWordBreak", labelColor: "labelColor", labelCursor: "labelCursor", labelVisibility: "labelVisibility", subLabelFontSize: "subLabelFontSize", subLabelColor: "subLabelColor", subLabelPlacement: "subLabelPlacement", subLabelTextDecoration: "subLabelTextDecoration", subLabelToLabelInlineWidthRatio: "subLabelToLabelInlineWidthRatio", onZoom: "onZoom", onLayoutCalculated: "onLayoutCalculated", selectedNodeIds: "selectedNodeIds", data: "data" }, providers: [{ provide: VisCoreComponent, useExisting: VisSankeyComponent }], usesOnChanges: true, ngImport: i0, template: '', isInline: true });
|
|
33
|
+
VisSankeyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: VisSankeyComponent, selector: "vis-sankey", inputs: { duration: "duration", events: "events", attributes: "attributes", id: "id", heightNormalizationCoeff: "heightNormalizationCoeff", zoomScale: "zoomScale", zoomPan: "zoomPan", enableZoom: "enableZoom", zoomExtent: "zoomExtent", zoomMode: "zoomMode", disableZoomModifierKeys: "disableZoomModifierKeys", exitTransitionType: "exitTransitionType", enterTransitionType: "enterTransitionType", highlightSubtreeOnHover: "highlightSubtreeOnHover", highlightDuration: "highlightDuration", highlightDelay: "highlightDelay", iterations: "iterations", nodeSort: "nodeSort", linkSort: "linkSort", nodeWidth: "nodeWidth", nodeAlign: "nodeAlign", nodeHorizontalSpacing: "nodeHorizontalSpacing", nodeMinHeight: "nodeMinHeight", nodeMaxHeight: "nodeMaxHeight", nodePadding: "nodePadding", showSingleNode: "showSingleNode", nodeCursor: "nodeCursor", nodeIcon: "nodeIcon", nodeColor: "nodeColor", nodeFixedValue: "nodeFixedValue", nodeIconColor: "nodeIconColor", linkColor: "linkColor", linkValue: "linkValue", linkCursor: "linkCursor", label: "label", subLabel: "subLabel", labelPosition: "labelPosition", labelVerticalAlign: "labelVerticalAlign", labelBackground: "labelBackground", labelFit: "labelFit", labelMaxWidth: "labelMaxWidth", labelMaxWidthTakeAvailableSpace: "labelMaxWidthTakeAvailableSpace", labelMaxWidthTakeAvailableSpaceTolerance: "labelMaxWidthTakeAvailableSpaceTolerance", labelExpandTrimmedOnHover: "labelExpandTrimmedOnHover", labelTrimMode: "labelTrimMode", labelFontSize: "labelFontSize", labelTextSeparator: "labelTextSeparator", labelTextDecoration: "labelTextDecoration", labelForceWordBreak: "labelForceWordBreak", labelColor: "labelColor", labelCursor: "labelCursor", labelVisibility: "labelVisibility", subLabelFontSize: "subLabelFontSize", subLabelColor: "subLabelColor", subLabelPlacement: "subLabelPlacement", subLabelTextDecoration: "subLabelTextDecoration", subLabelToLabelInlineWidthRatio: "subLabelToLabelInlineWidthRatio", onZoom: "onZoom", onLayoutCalculated: "onLayoutCalculated", selectedNodeIds: "selectedNodeIds", data: "data" }, providers: [{ provide: VisCoreComponent, useExisting: VisSankeyComponent }], usesOnChanges: true, ngImport: i0, template: '', isInline: true });
|
|
34
34
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: VisSankeyComponent, decorators: [{
|
|
35
35
|
type: Component,
|
|
36
36
|
args: [{
|
|
@@ -59,6 +59,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
59
59
|
type: Input
|
|
60
60
|
}], zoomMode: [{
|
|
61
61
|
type: Input
|
|
62
|
+
}], disableZoomModifierKeys: [{
|
|
63
|
+
type: Input
|
|
62
64
|
}], exitTransitionType: [{
|
|
63
65
|
type: Input
|
|
64
66
|
}], enterTransitionType: [{
|
|
@@ -160,4 +162,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
160
162
|
}], data: [{
|
|
161
163
|
type: Input
|
|
162
164
|
}] } });
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Fua2V5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NhbmtleS9zYW5rZXkuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFpQixLQUFLLEVBQWlCLE1BQU0sZUFBZSxDQUFBO0FBQzlFLE9BQU8sRUFDTCxNQUFNLEdBdUJQLE1BQU0sWUFBWSxDQUFBO0FBRW5CLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQTs7QUFRN0MsTUFBTSxPQUFPLGtCQUFrQjtJQStPN0IsZUFBZTs7UUFDYixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksTUFBTSxDQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFBO1FBRW5ELElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNqQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7U0FDbEM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFFLE9BQXNCOztRQUNqQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFBRSxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7U0FBRTtRQUN4RCxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQTtRQUMzQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7SUFDbkMsQ0FBQztJQUVPLFNBQVM7UUFDZixNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLHdCQUF3QixFQUFFLFNB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Z0JBR0csd0NBQXdDO3NCQUFoRCxLQUFLO2dCQUdHLHlCQUF5QjtzQkFBakMsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUdHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFHRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUdHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBUUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUdHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFJRywrQkFBK0I7c0JBQXZDLEtBQUs7Z0JBR0csTUFBTTtzQkFBZCxLQUFLO2dCQUdHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFHRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vICEhISBUaGlzIGNvZGUgd2FzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkLiBZb3Ugc2hvdWxkIG5vdCBjaGFuZ2UgaXQgISEhXG5pbXBvcnQgeyBDb21wb25lbnQsIEFmdGVyVmlld0luaXQsIElucHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIFNhbmtleSxcbiAgU2Fua2V5Q29uZmlnSW50ZXJmYWNlLFxuICBDb250YWluZXJDb3JlLFxuICBTYW5rZXlJbnB1dE5vZGUsXG4gIFNhbmtleUlucHV0TGluayxcbiAgVmlzRXZlbnRUeXBlLFxuICBWaXNFdmVudENhbGxiYWNrLFxuICBTYW5rZXlab29tTW9kZSxcbiAgU2Fua2V5RXhpdFRyYW5zaXRpb25UeXBlLFxuICBTYW5rZXlFbnRlclRyYW5zaXRpb25UeXBlLFxuICBTYW5rZXlOb2RlLFxuICBTYW5rZXlMaW5rLFxuICBTYW5rZXlOb2RlQWxpZ24sXG4gIFN0cmluZ0FjY2Vzc29yLFxuICBDb2xvckFjY2Vzc29yLFxuICBOdW1lcmljQWNjZXNzb3IsXG4gIEdlbmVyaWNBY2Nlc3NvcixcbiAgUG9zaXRpb24sXG4gIFZlcnRpY2FsQWxpZ24sXG4gIEZpdE1vZGUsXG4gIFRyaW1Nb2RlLFxuICBTYW5rZXlTdWJMYWJlbFBsYWNlbWVudCxcbiAgU3BhY2luZyxcbn0gZnJvbSAnQHVub3Zpcy90cydcbmltcG9ydCB7IEQzWm9vbUV2ZW50IH0gZnJvbSAnZDMtem9vbSdcbmltcG9ydCB7IFZpc0NvcmVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2aXMtc2Fua2V5JyxcbiAgdGVtcGxhdGU6ICcnLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBWaXNDb3JlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogVmlzU2Fua2V5Q29tcG9uZW50IH1dLFxufSlcbmV4cG9ydCBjbGFzcyBWaXNTYW5rZXlDb21wb25lbnQ8TiBleHRlbmRzIFNhbmtleUlucHV0Tm9kZSwgTCBleHRlbmRzIFNhbmtleUlucHV0TGluaz4gaW1wbGVtZW50cyBTYW5rZXlDb25maWdJbnRlcmZhY2U8TiwgTD4sIEFmdGVyVmlld0luaXQge1xuICAvKiogQW5pbWF0aW9uIGR1cmF0aW9uIG9mIHRoZSBkYXRhIHVwZGF0ZSB0cmFuc2l0aW9ucyBpbiBtaWxsaXNlY29uZHMuIERlZmF1bHQ6IGA2MDBgICovXG4gIEBJbnB1dCgpIGR1cmF0aW9uPzogbnVtYmVyXG5cbiAgLyoqIEV2ZW50cyBjb25maWd1cmF0aW9uLiBBbiBvYmplY3QgY29udGFpbmluZyBwcm9wZXJ0aWVzIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0OlxuICAgKlxuICAgKiBgYGBcbiAgICoge1xuICAgKiBcXFtzZWxlY3RvclN0cmluZ106IHtcbiAgICogICAgIFxcW2V2ZW50VHlwZV06IGNhbGxiYWNrRnVuY3Rpb25cbiAgICogIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICogZS5nLjpcbiAgICogYGBgXG4gICAqIHtcbiAgICogXFxbQXJlYS5zZWxlY3RvcnMuYXJlYV06IHtcbiAgICogICAgY2xpY2s6IChkKSA9PiBjb25zb2xlLmxvZyhcIkNsaWNrZWQgQXJlYVwiLCBkKVxuICAgKiAgfVxuICAgKiB9XG4gICAqIGBgYCAqL1xuICBASW5wdXQoKSBldmVudHM/OiB7XG4gICAgW3NlbGVjdG9yOiBzdHJpbmddOiB7XG4gICAgICBbZXZlbnRUeXBlIGluIFZpc0V2ZW50VHlwZV0/OiBWaXNFdmVudENhbGxiYWNrXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBZb3UgY2FuIHNldCBldmVyeSBTVkcgYW5kIEhUTUwgdmlzdWFsaXphdGlvbiBvYmplY3QgdG8gaGF2ZSBhIGN1c3RvbSBET00gYXR0cmlidXRlcywgd2hpY2ggaXMgdXNlZnVsXG4gICAqIHdoZW4geW91IHdhbnQgdG8gZG8gdW5pdCBvciBlbmQtdG8tZW5kIHRlc3RpbmcuIEF0dHJpYnV0ZXMgY29uZmlndXJhdGlvbiBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOlxuICAgKlxuICAgKiBgYGBcbiAgICoge1xuICAgKiBcXFtzZWxlY3RvclN0cmluZ106IHtcbiAgICogICAgIFxcW2F0dHJpYnV0ZU5hbWVdOiBhdHRyaWJ1dGUgY29uc3RhbnQgdmFsdWUgb3IgYWNjZXNzb3IgZnVuY3Rpb25cbiAgICogIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICogZS5nLjpcbiAgICogYGBgXG4gICAqIHtcbiAgICogXFxbQXJlYS5zZWxlY3RvcnMuYXJlYV06IHtcbiAgICogICAgXCJ0ZXN0LXZhbHVlXCI6IGQgPT4gZC52YWx1ZVxuICAgKiAgfVxuICAgKiB9XG4gICAqIGBgYCAqL1xuICBASW5wdXQoKSBhdHRyaWJ1dGVzPzoge1xuICAgIFtzZWxlY3Rvcjogc3RyaW5nXToge1xuICAgICAgW2F0dHI6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCAoKGRhdHVtOiBhbnkpID0+IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4pO1xuICAgIH07XG4gIH1cblxuICAvKiogTm9kZSAvIExpbmsgaWQgYWNjZXNzb3IgZnVuY3Rpb24uIFVzZWQgZm9yIG1hcHBpbmcgb2YgZGF0YSB1cGRhdGVzIHRvIGNvcnJlc3BvbmRpbmcgU1ZHIG9iamVjdHMuIERlZmF1bHQ6IGAoZCwgaSkgPT4gZC5pZCA/PyBpLnRvU3RyaW5nKClgICovXG4gIEBJbnB1dCgpIGlkPzogKGQ6IFNhbmtleUlucHV0Tm9kZSB8IFNhbmtleUlucHV0TGluaywgaTogbnVtYmVyLCAuLi5yZXN0KSA9PiBzdHJpbmdcblxuICAvKiogQ29lZmZpY2llbnQgdG8gc2NhbGUgdGhlIGhlaWdodCBvZiB0aGUgZGlhZ3JhbSB3aGVuIHRoZSBhbW91bnQgb2YgbGlua3MgaXMgbG93OiBgQyAqIGxpbmtzLmxlbmd0aGAsIGNsYW1wZWQgdG8gYFtoZWlnaHQgLyAyLCBoZWlnaHRdYC4gRGVmYXVsdDogYDEvMTZgICovXG4gIEBJbnB1dCgpIGhlaWdodE5vcm1hbGl6YXRpb25Db2VmZj86IG51bWJlclxuXG4gIC8qKiBIb3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBzY2FsZSBmYWN0b3IgYXBwbGllZCB0byB0aGUgY29tcHV0ZWQgbGF5b3V0IChjb2x1bW4gc3BhY2luZykuIEtlZXBzIG5vZGUgd2lkdGggaW50YWN0LiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSB6b29tU2NhbGU/OiBbbnVtYmVyLCBudW1iZXJdXG5cbiAgLyoqIFBhbiBvZmZzZXQgaW4gcGl4ZWxzLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSB6b29tUGFuPzogW251bWJlciwgbnVtYmVyXVxuXG4gIC8qKiBFbmFibGUgaW50ZXJhY3RpdmUgem9vbS9wYW4gYmVoYXZpb3IuIERlZmF1bHQ6IGB0cnVlYCAqL1xuICBASW5wdXQoKSBlbmFibGVab29tPzogYm9vbGVhblxuXG4gIC8qKiBBbGxvd2VkIGludGVyYWN0aXZlIHpvb20gc2NhbGUgZXh0ZW50LiBEZWZhdWx0OiBgWzEsIDVdYCAqL1xuICBASW5wdXQoKSB6b29tRXh0ZW50PzogW251bWJlciwgbnVtYmVyXVxuXG4gIC8qKiBab29tIGludGVyYWN0aW9uIG1vZGUuIERlZmF1bHQ6IGBTYW5rZXlab29tTW9kZS5YWWAgKi9cbiAgQElucHV0KCkgem9vbU1vZGU/OiBTYW5rZXlab29tTW9kZSB8IHN0cmluZ1xuXG4gIC8qKiBUeXBlIG9mIGFuaW1hdGlvbiBvbiByZW1vdmluZyBub2Rlcy4gRGVmYXVsdDogYEV4aXRUcmFuc2l0aW9uVHlwZS5EZWZhdWx0YCAqL1xuICBASW5wdXQoKSBleGl0VHJhbnNpdGlvblR5cGU/OiBTYW5rZXlFeGl0VHJhbnNpdGlvblR5cGVcblxuICAvKiogVHlwZSBvZiBhbmltYXRpb24gb24gY3JlYXRpbmcgbm9kZXMuIERlZmF1bHQ6IGBFbnRlclRyYW5zaXRpb25UeXBlLkRlZmF1bHRgICovXG4gIEBJbnB1dCgpIGVudGVyVHJhbnNpdGlvblR5cGU/OiBTYW5rZXlFbnRlclRyYW5zaXRpb25UeXBlXG5cbiAgLyoqIEhpZ2hsaWdodCB0aGUgY29ycmVzcG9uZGluZyBzdWJ0cmVlIG9uIG5vZGUgLyBsaW5rIGhvdmVyLiBEZWZhdWx0OiBgZmFsc2VgICovXG4gIEBJbnB1dCgpIGhpZ2hsaWdodFN1YnRyZWVPbkhvdmVyPzogYm9vbGVhblxuXG4gIC8qKiBIaWdobGlnaHQgYW5pbWF0aW9uIGR1cmF0aW9uLCBtcy4gRGVmYXVsdDogYDQwMGAgKi9cbiAgQElucHV0KCkgaGlnaGxpZ2h0RHVyYXRpb24/OiBudW1iZXJcblxuICAvKiogSGlnaGxpZ2h0IGRlbGF5LCBtcy4gRGVmYXVsdDogYDEwMDBgICovXG4gIEBJbnB1dCgpIGhpZ2hsaWdodERlbGF5PzogbnVtYmVyXG5cbiAgLyoqIFNhbmtleSBhbGdvcml0aG0gaXRlcmF0aW9ucy4gRGVmYXVsdDogYDMyYCAqL1xuICBASW5wdXQoKSBpdGVyYXRpb25zPzogbnVtYmVyXG5cbiAgLyoqIFNhbmtleSBub2RlIHNvcnRpbmcgZnVuY3Rpb24uIERlZmF1bHQ6IGB1bmRlZmluZWRgLlxuICAgKiBOb2RlIHNvcnRpbmcgaXMgYXBwbGllZCB0byBub2RlcyBpbiBvbmUgbGF5ZXIgKGNvbHVtbikuIExheWVyIGJ5IGxheWVyLlxuICAgKiBPcHRpb25zOiBgdW5kZWZpbmVkYCAtIHRoZSBvcmRlciBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBsYXlvdXQ7XG4gICAqICAgICAgICAgIGBudWxsYCAtIHRoZSBvcmRlciBpcyBmaXhlZCBieSB0aGUgaW5wdXQ7XG4gICAqICAgICAgICAgIHNvcnQgZnVuY3Rpb24gLSB0aGUgb3JkZXIgaXMgZGV0ZXJtaW5lZCBieSB0aGUgZnVuY3Rpb24uICovXG4gIEBJbnB1dCgpIG5vZGVTb3J0PzogKChub2RlMTogU2Fua2V5Tm9kZTxOLCBMPiwgbm9kZTI6IFNhbmtleU5vZGU8TiwgTD4pID0+IG51bWJlcikgfCBudWxsIHwgdW5kZWZpbmVkXG5cbiAgLyoqIFNhbmtleSBsaW5rIHNvcnRpbmcgZnVuY3Rpb24uIERlZmF1bHQ6IGAobGluazIsIGxpbmsxKSA9PiBsaW5rMS52YWx1ZSAtIGxpbmsyLnZhbHVlYC5cbiAgICogTGluayBzb3J0aW5nIGlzIGFwcGxpZWQgdG8gdGhlIHNvdXJjZSAoZXhpdGluZykgbGlua3Mgd2l0aGluIG9uZSBub2RlLlxuICAgKiBPcHRpb25zOiBgdW5kZWZpbmVkYCAtIHRoZSBvcmRlciBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBsYXlvdXQ7XG4gICAqICAgICAgICAgIGBudWxsYCAtIHRoZSBvcmRlciBpcyBmaXhlZCBieSB0aGUgaW5wdXQ7XG4gICAqICAgICAgICAgIHNvcnQgZnVuY3Rpb24gLSB0aGUgb3JkZXIgaXMgZGV0ZXJtaW5lZCBieSB0aGUgZnVuY3Rpb24uICovXG4gIEBJbnB1dCgpIGxpbmtTb3J0PzogKChsaW5rMTogU2Fua2V5TGluazxOLCBMPiwgbGluazI6IFNhbmtleUxpbms8TiwgTD4pID0+IG51bWJlcikgfCBudWxsIHwgdW5kZWZpbmVkXG5cbiAgLyoqIFNhbmtleSBub2RlIHdpZHRoIGluIHBpeGVscyAqL1xuICBASW5wdXQoKSBub2RlV2lkdGg/OiBudW1iZXJcblxuICAvKiogU2Fua2V5IG5vZGUgYWxpZ25tZW50IG1ldGhvZCAqL1xuICBASW5wdXQoKSBub2RlQWxpZ24/OiBTYW5rZXlOb2RlQWxpZ25cblxuICAvKiogSG9yaXpvbnRhbCBzcGFjZSBiZXR3ZWVuIHRoZSBub2Rlcy4gRXh0ZW5kZWQgU2l6aW5nIHByb3BlcnR5IG9ubHkuIERlZmF1bHQ6IGAxNTBgICovXG4gIEBJbnB1dCgpIG5vZGVIb3Jpem9udGFsU3BhY2luZz86IG51bWJlclxuXG4gIC8qKiBNaW5pbXVtIG5vZGUgaGVpZ2h0LiBFeHRlbmRlZCBTaXppbmcgcHJvcGVydHkgb25seS4gRGVmYXVsdDogYDIwYCAqL1xuICBASW5wdXQoKSBub2RlTWluSGVpZ2h0PzogbnVtYmVyXG5cbiAgLyoqIE1heGltdW0gbm9kZSBoZWlnaHQuIEV4dGVuZGVkIFNpemluZyBwcm9wZXJ0eSBvbmx5LiBEZWZhdWx0OiBgMTAwYCAqL1xuICBASW5wdXQoKSBub2RlTWF4SGVpZ2h0PzogbnVtYmVyXG5cbiAgLyoqIFNhbmtleSB2ZXJ0aWNhbCBzZXBhcmF0aW9uIGJldHdlZW4gbm9kZXMgaW4gcGl4ZWxzLiBEZWZhdWx0OiBgMmAgKi9cbiAgQElucHV0KCkgbm9kZVBhZGRpbmc/OiBudW1iZXJcblxuICAvKiogRGlzcGxheSB0aGUgZ3JhcGggd2hlbiBkYXRhIGhhcyBqdXN0IG9uZSBlbGVtZW50ICovXG4gIEBJbnB1dCgpIHNob3dTaW5nbGVOb2RlPzogYm9vbGVhblxuXG4gIC8qKiBOb2RlIGN1cnNvciBvbiBob3Zlci4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgbm9kZUN1cnNvcj86IFN0cmluZ0FjY2Vzc29yPFNhbmtleU5vZGU8TiwgTD4+XG5cbiAgLyoqIE5vZGUgaWNvbiBhY2Nlc3NvciBmdW5jdGlvbiBvciB2YWx1ZS4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgbm9kZUljb24/OiBTdHJpbmdBY2Nlc3NvcjxTYW5rZXlOb2RlPE4sIEw+PlxuXG4gIC8qKiBOb2RlIGNvbG9yIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIHZhbHVlLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBub2RlQ29sb3I/OiBDb2xvckFjY2Vzc29yPFNhbmtleU5vZGU8TiwgTD4+XG5cbiAgLyoqIE5vZGUgYGZpeGVkVmFsdWVgIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIGNvbnN0YW50LiBJdCBkZWZpbmVzIHRoZSBub2RlIHZhbHVlIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGNhbGN1bGF0ZVxuICAgKiB0aGUgaGVpZ2h0IG9mIHRoZSBub2RlcyBieSBkMy1zYW5rZXkgKGJ5IGRlZmF1bHQgdGhlIGhlaWdodCB3aWxsIGJlIGJhc2VkIG9uIGFnZ3JlZ2F0ZWQgYGxpbmtWYWx1ZWApLlxuICAgKiBEZWZhdWx0OiBgbiA9PiBuLmZpeGVkVmFsdWVgICovXG4gIEBJbnB1dCgpIG5vZGVGaXhlZFZhbHVlPzogTnVtZXJpY0FjY2Vzc29yPE4+XG5cbiAgLyoqIEljb24gY29sb3IgYWNjZXNzb3IgZnVuY3Rpb24gb3IgdmFsdWUuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIG5vZGVJY29uQ29sb3I/OiBDb2xvckFjY2Vzc29yPFNhbmtleU5vZGU8TiwgTD4+XG5cbiAgLyoqIExpbmsgY29sb3IgYWNjZXNzb3IgZnVuY3Rpb24gb3IgdmFsdWUuIERlZmF1bHQ6IGBsID0+IGwuY29sb3JgICovXG4gIEBJbnB1dCgpIGxpbmtDb2xvcj86IFN0cmluZ0FjY2Vzc29yPFNhbmtleUxpbms8TiwgTD4+XG5cbiAgLyoqIExpbmsgZmxvdyBhY2Nlc3NvciBmdW5jdGlvbiBvciB2YWx1ZS4gRGVmYXVsdDogYGwgPT4gbC52YWx1ZWAgKi9cbiAgQElucHV0KCkgbGlua1ZhbHVlPzogTnVtZXJpY0FjY2Vzc29yPEw+XG5cbiAgLyoqIExpbmsgY3Vyc29yIG9uIGhvdmVyLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBsaW5rQ3Vyc29yPzogU3RyaW5nQWNjZXNzb3I8U2Fua2V5TGluazxOLCBMPj5cblxuICAvKiogTm9kZSBsYWJlbCBhY2Nlc3NvciBmdW5jdGlvbiBvciB2YWx1ZS4gRGVmYXVsdDogYG4gPT4gbi5sYWJlbGAgKi9cbiAgQElucHV0KCkgbGFiZWw/OiBTdHJpbmdBY2Nlc3NvcjxTYW5rZXlOb2RlPE4sIEw+PlxuXG4gIC8qKiBOb2RlIHN1Yi1sYWJlbCBhY2Nlc3NvciBmdW5jdGlvbiBvciB2YWx1ZS4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgc3ViTGFiZWw/OiBTdHJpbmdBY2Nlc3NvcjxTYW5rZXlOb2RlPE4sIEw+PlxuXG4gIC8qKiBMYWJlbCBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgTm9kZS4gRGVmYXVsdDogYFBvc2l0aW9uLkFVVE9gICovXG4gIEBJbnB1dCgpIGxhYmVsUG9zaXRpb24/OiBHZW5lcmljQWNjZXNzb3I8UG9zaXRpb24uQXV0byB8IFBvc2l0aW9uLkxlZnQgfCBQb3NpdGlvbi5SaWdodCB8IHN0cmluZywgU2Fua2V5Tm9kZTxOLCBMPj5cblxuICAvKiogTGFiZWwgdmVydGljYWwgYWxpZ25tZW50ICovXG4gIEBJbnB1dCgpIGxhYmVsVmVydGljYWxBbGlnbj86IFZlcnRpY2FsQWxpZ24gfCBzdHJpbmdcblxuICAvKiogTGFiZWwgYmFja2dyb3VuZCAqL1xuICBASW5wdXQoKSBsYWJlbEJhY2tncm91bmQ/OiBib29sZWFuXG5cbiAgLyoqIExhYmVsIGZpdCBtb2RlICh3cmFwIG9yIHRyaW0pLiBEZWZhdWx0OiBgRml0TW9kZS5UcmltYCAqICovXG4gIEBJbnB1dCgpIGxhYmVsRml0PzogRml0TW9kZVxuXG4gIC8qKiBNYXhpbXVtIGxhYmVsIHdpdGggaW4gcGl4ZWxzLiBEZWZhdWx0OiBgNzBgICovXG4gIEBJbnB1dCgpIGxhYmVsTWF4V2lkdGg/OiBudW1iZXJcblxuICAvKiogV2hldGhlciB0byB0YWtlIHRoZSBhdmFpbGFibGUgc3BhY2UgZm9yIHRoZSBsYWJlbC4gVGhpcyBwcm9wZXJ0eSBpcyB1c2VkIG9ubHkgaWYgYGxhYmVsTWF4V2lkdGhgIGlzIG5vdCBwcm92aWRlZC4gRGVmYXVsdDogYGZhbHNlYCAqL1xuICBASW5wdXQoKSBsYWJlbE1heFdpZHRoVGFrZUF2YWlsYWJsZVNwYWNlPzogYm9vbGVhblxuXG4gIC8qKiBUb2xlcmFuY2UgZm9yIHRoZSBhdmFpbGFibGUgc3BhY2UgZm9yIHRoZSBsYWJlbC4gVGhpcyBwcm9wZXJ0eSBpcyB1c2VkIG9ubHkgaWYgYGxhYmVsTWF4V2lkdGhUYWtlQXZhaWxhYmxlU3BhY2VgIGlzIGB0cnVlYC4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKHVzZSBsYWJlbCBhbmQgc3ViLWxhYmVsIGZvbnQgc2l6ZXMpICovXG4gIEBJbnB1dCgpIGxhYmVsTWF4V2lkdGhUYWtlQXZhaWxhYmxlU3BhY2VUb2xlcmFuY2U/OiBudW1iZXJcblxuICAvKiogRXhwYW5kIHRyaW1tZWQgbGFiZWwgb24gaG92ZXIuIERlZmF1bHQ6IGB0cnVlYCAqL1xuICBASW5wdXQoKSBsYWJlbEV4cGFuZFRyaW1tZWRPbkhvdmVyPzogYm9vbGVhblxuXG4gIC8qKiBMYWJlbCB0cmltbWluZyBtb2RlLiBEZWZhdWx0OiBgVHJpbU1vZGUuTWlkZGxlYCAqL1xuICBASW5wdXQoKSBsYWJlbFRyaW1Nb2RlPzogVHJpbU1vZGVcblxuICAvKiogTGFiZWwgZm9udCBzaXplIGluIHBpeGVscy4gSWYgbm90IHByb3ZpZGVkLCB0aGUgdmFsdWUgb2YgQ1NTIHZhcmlhYmxlIGAtLXZpcy1zYW5rZXktbm9kZS1sYWJlbC1mb250LXNpemVgIHdpbGwgYmUgdXNlZC4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgbGFiZWxGb250U2l6ZT86IG51bWJlclxuXG4gIC8qKiBMYWJlbCB0ZXh0IHNlcGFyYXRvcnMgZm9yIHdyYXBwaW5nLiBEZWZhdWx0OiBgWycgJywgJy0nXWAgKi9cbiAgQElucHV0KCkgbGFiZWxUZXh0U2VwYXJhdG9yPzogc3RyaW5nW11cblxuICAvKiogTGFiZWwgdGV4dCBkZWNvcmF0aW9uLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBsYWJlbFRleHREZWNvcmF0aW9uPzogU3RyaW5nQWNjZXNzb3I8U2Fua2V5Tm9kZTxOLCBMPj5cblxuICAvKiogRm9yY2UgYnJlYWsgd29yZHMgdG8gZml0IGxvbmcgbGFiZWxzLiBEZWZhdWx0OiBgdHJ1ZWAgKi9cbiAgQElucHV0KCkgbGFiZWxGb3JjZVdvcmRCcmVhaz86IGJvb2xlYW5cblxuICAvKiogTGFiZWwgY29sb3IuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIGxhYmVsQ29sb3I/OiBDb2xvckFjY2Vzc29yPFNhbmtleU5vZGU8TiwgTD4+XG5cbiAgLyoqIExhYmVsIGN1cnNvciBvbiBob3Zlci4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgbGFiZWxDdXJzb3I/OiBTdHJpbmdBY2Nlc3NvcjxTYW5rZXlOb2RlPE4sIEw+PlxuXG4gIC8qKiBDdXN0b20gZnVuY3Rpb24gdG8gc2V0IHRoZSBsYWJlbCB2aXNpYmlsaXR5LiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBsYWJlbFZpc2liaWxpdHk/OiAoKGQ6IFNhbmtleU5vZGU8TiwgTD4sIGJib3g6IHtcbiAgICB4OiBudW1iZXI7XG4gICAgeTogbnVtYmVyO1xuICAgIHdpZHRoOiBudW1iZXI7XG4gICAgaGVpZ2h0OiBudW1iZXI7XG4gIH0sIGhvdmVyZWQ6IGJvb2xlYW4pID0+IGJvb2xlYW4pIHwgdW5kZWZpbmVkXG5cbiAgLyoqIFN1Yi1sYWJlbCBmb250IHNpemUgaW4gcGl4ZWxzLiBJZiBub3QgcHJvdmlkZWQsIHRoZSB2YWx1ZSBvZiBDU1MgdmFyaWFibGUgYC0tdmlzLXNhbmtleS1ub2RlLXN1YmxhYmVsLWZvbnQtc2l6ZWAgd2lsbCBiZSB1c2VkLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBzdWJMYWJlbEZvbnRTaXplPzogbnVtYmVyXG5cbiAgLyoqIFN1Yi1sYWJlbCBjb2xvci4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgc3ViTGFiZWxDb2xvcj86IENvbG9yQWNjZXNzb3I8U2Fua2V5Tm9kZTxOLCBMPj5cblxuICAvKiogU3ViLWxhYmVsIHBvc2l0aW9uLiBEZWZhdWx0OiBgU2Fua2V5U3ViTGFiZWxQbGFjZW1lbnQuQmVsb3dgICovXG4gIEBJbnB1dCgpIHN1YkxhYmVsUGxhY2VtZW50PzogU2Fua2V5U3ViTGFiZWxQbGFjZW1lbnQgfCBzdHJpbmdcblxuICAvKiogU3ViLWxhYmVsIHRleHQgZGVjb3JhdGlvbi4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgc3ViTGFiZWxUZXh0RGVjb3JhdGlvbj86IFN0cmluZ0FjY2Vzc29yPFNhbmtleU5vZGU8TiwgTD4+XG5cbiAgLyoqIFN1Yi1sYWJlbCB0byBsYWJlbCB3aWR0aCByYXRpbyB3aGVuIGBzdWJMYWJlbFBsYWNlbWVudGAgaXMgc2V0IHRvIGBTYW5rZXlTdWJMYWJlbFBsYWNlbWVudC5JbmxpbmVgXG4gICAqIERlZmF1bHQ6IGAwLjRgLCB3aGljaCBtZWFucyB0aGF0IDQwJSBvZiBgbGFiZWxNYXhXaWR0aGAgd2lsbCBiZSBnaXZlbiB0byBzdWItbGFiZWwsIGFuZCA2MCUgdG8gdGhlIG1haW4gbGFiZWwuICovXG4gIEBJbnB1dCgpIHN1YkxhYmVsVG9MYWJlbElubGluZVdpZHRoUmF0aW8/OiBudW1iZXJcblxuICAvKiogWm9vbSBldmVudCBjYWxsYmFjay4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgb25ab29tPzogKGhvcml6b250YWxTY2FsZTogbnVtYmVyLCB2ZXJ0aWNhbFNjYWxlOiBudW1iZXIsIHBhblg6IG51bWJlciwgcGFuWTogbnVtYmVyLCB6b29tRXh0ZW50OiBbbnVtYmVyLCBudW1iZXJdLCBldmVudDogRDNab29tRXZlbnQ8U1ZHR0VsZW1lbnQsIHVua25vd24+IHwgdW5kZWZpbmVkKSA9PiB2b2lkXG5cbiAgLyoqIENhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBncmFwaCBsYXlvdXQgaXMgY2FsY3VsYXRlZC4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgb25MYXlvdXRDYWxjdWxhdGVkPzogKG5vZGVzOiBTYW5rZXlOb2RlPE4sIEw+W10sIGxpbmtzOiBTYW5rZXlMaW5rPE4sIEw+W10sIGRlcHRoOiBudW1iZXIsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBibGVlZDogU3BhY2luZykgPT4gdm9pZFxuXG4gIC8qKiBTZXQgc2VsZWN0ZWQgbm9kZXMgYnkgdW5pcXVlIGlkLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBzZWxlY3RlZE5vZGVJZHM/OiBzdHJpbmdbXVxuICBASW5wdXQoKSBkYXRhOiB7IG5vZGVzOiBOW107IGxpbmtzPzogTFtdIH1cblxuICBjb21wb25lbnQ6IFNhbmtleTxOLCBMPiB8IHVuZGVmaW5lZFxuICBwdWJsaWMgY29tcG9uZW50Q29udGFpbmVyOiBDb250YWluZXJDb3JlIHwgdW5kZWZpbmVkXG5cbiAgbmdBZnRlclZpZXdJbml0ICgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBvbmVudCA9IG5ldyBTYW5rZXk8TiwgTD4odGhpcy5nZXRDb25maWcoKSlcblxuICAgIGlmICh0aGlzLmRhdGEpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50LnNldERhdGEodGhpcy5kYXRhKVxuICAgICAgdGhpcy5jb21wb25lbnRDb250YWluZXI/LnJlbmRlcigpXG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMgKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5kYXRhKSB7IHRoaXMuY29tcG9uZW50Py5zZXREYXRhKHRoaXMuZGF0YSkgfVxuICAgIHRoaXMuY29tcG9uZW50Py5zZXRDb25maWcodGhpcy5nZXRDb25maWcoKSlcbiAgICB0aGlzLmNvbXBvbmVudENvbnRhaW5lcj8ucmVuZGVyKClcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29uZmlnICgpOiBTYW5rZXlDb25maWdJbnRlcmZhY2U8TiwgTD4ge1xuICAgIGNvbnN0IHsgZHVyYXRpb24sIGV2ZW50cywgYXR0cmlidXRlcywgaWQsIGhlaWdodE5vcm1hbGl6YXRpb25Db2VmZiwgem9vbVNjYWxlLCB6b29tUGFuLCBlbmFibGVab29tLCB6b29tRXh0ZW50LCB6b29tTW9kZSwgZXhpdFRyYW5zaXRpb25UeXBlLCBlbnRlclRyYW5zaXRpb25UeXBlLCBoaWdobGlnaHRTdWJ0cmVlT25Ib3ZlciwgaGlnaGxpZ2h0RHVyYXRpb24sIGhpZ2hsaWdodERlbGF5LCBpdGVyYXRpb25zLCBub2RlU29ydCwgbGlua1NvcnQsIG5vZGVXaWR0aCwgbm9kZUFsaWduLCBub2RlSG9yaXpvbnRhbFNwYWNpbmcsIG5vZGVNaW5IZWlnaHQsIG5vZGVNYXhIZWlnaHQsIG5vZGVQYWRkaW5nLCBzaG93U2luZ2xlTm9kZSwgbm9kZUN1cnNvciwgbm9kZUljb24sIG5vZGVDb2xvciwgbm9kZUZpeGVkVmFsdWUsIG5vZGVJY29uQ29sb3IsIGxpbmtDb2xvciwgbGlua1ZhbHVlLCBsaW5rQ3Vyc29yLCBsYWJlbCwgc3ViTGFiZWwsIGxhYmVsUG9zaXRpb24sIGxhYmVsVmVydGljYWxBbGlnbiwgbGFiZWxCYWNrZ3JvdW5kLCBsYWJlbEZpdCwgbGFiZWxNYXhXaWR0aCwgbGFiZWxNYXhXaWR0aFRha2VBdmFpbGFibGVTcGFjZSwgbGFiZWxNYXhXaWR0aFRha2VBdmFpbGFibGVTcGFjZVRvbGVyYW5jZSwgbGFiZWxFeHBhbmRUcmltbWVkT25Ib3ZlciwgbGFiZWxUcmltTW9kZSwgbGFiZWxGb250U2l6ZSwgbGFiZWxUZXh0U2VwYXJhdG9yLCBsYWJlbFRleHREZWNvcmF0aW9uLCBsYWJlbEZvcmNlV29yZEJyZWFrLCBsYWJlbENvbG9yLCBsYWJlbEN1cnNvciwgbGFiZWxWaXNpYmlsaXR5LCBzdWJMYWJlbEZvbnRTaXplLCBzdWJMYWJlbENvbG9yLCBzdWJMYWJlbFBsYWNlbWVudCwgc3ViTGFiZWxUZXh0RGVjb3JhdGlvbiwgc3ViTGFiZWxUb0xhYmVsSW5saW5lV2lkdGhSYXRpbywgb25ab29tLCBvbkxheW91dENhbGN1bGF0ZWQsIHNlbGVjdGVkTm9kZUlkcyB9ID0gdGhpc1xuICAgIGNvbnN0IGNvbmZpZyA9IHsgZHVyYXRpb24sIGV2ZW50cywgYXR0cmlidXRlcywgaWQsIGhlaWdodE5vcm1hbGl6YXRpb25Db2VmZiwgem9vbVNjYWxlLCB6b29tUGFuLCBlbmFibGVab29tLCB6b29tRXh0ZW50LCB6b29tTW9kZSwgZXhpdFRyYW5zaXRpb25UeXBlLCBlbnRlclRyYW5zaXRpb25UeXBlLCBoaWdobGlnaHRTdWJ0cmVlT25Ib3ZlciwgaGlnaGxpZ2h0RHVyYXRpb24sIGhpZ2hsaWdodERlbGF5LCBpdGVyYXRpb25zLCBub2RlU29ydCwgbGlua1NvcnQsIG5vZGVXaWR0aCwgbm9kZUFsaWduLCBub2RlSG9yaXpvbnRhbFNwYWNpbmcsIG5vZGVNaW5IZWlnaHQsIG5vZGVNYXhIZWlnaHQsIG5vZGVQYWRkaW5nLCBzaG93U2luZ2xlTm9kZSwgbm9kZUN1cnNvciwgbm9kZUljb24sIG5vZGVDb2xvciwgbm9kZUZpeGVkVmFsdWUsIG5vZGVJY29uQ29sb3IsIGxpbmtDb2xvciwgbGlua1ZhbHVlLCBsaW5rQ3Vyc29yLCBsYWJlbCwgc3ViTGFiZWwsIGxhYmVsUG9zaXRpb24sIGxhYmVsVmVydGljYWxBbGlnbiwgbGFiZWxCYWNrZ3JvdW5kLCBsYWJlbEZpdCwgbGFiZWxNYXhXaWR0aCwgbGFiZWxNYXhXaWR0aFRha2VBdmFpbGFibGVTcGFjZSwgbGFiZWxNYXhXaWR0aFRha2VBdmFpbGFibGVTcGFjZVRvbGVyYW5jZSwgbGFiZWxFeHBhbmRUcmltbWVkT25Ib3ZlciwgbGFiZWxUcmltTW9kZSwgbGFiZWxGb250U2l6ZSwgbGFiZWxUZXh0U2VwYXJhdG9yLCBsYWJlbFRleHREZWNvcmF0aW9uLCBsYWJlbEZvcmNlV29yZEJyZWFrLCBsYWJlbENvbG9yLCBsYWJlbEN1cnNvciwgbGFiZWxWaXNpYmlsaXR5LCBzdWJMYWJlbEZvbnRTaXplLCBzdWJMYWJlbENvbG9yLCBzdWJMYWJlbFBsYWNlbWVudCwgc3ViTGFiZWxUZXh0RGVjb3JhdGlvbiwgc3ViTGFiZWxUb0xhYmVsSW5saW5lV2lkdGhSYXRpbywgb25ab29tLCBvbkxheW91dENhbGN1bGF0ZWQsIHNlbGVjdGVkTm9kZUlkcyB9XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGNvbmZpZykgYXMgKGtleW9mIFNhbmtleUNvbmZpZ0ludGVyZmFjZTxOLCBMPilbXVxuICAgIGtleXMuZm9yRWFjaChrZXkgPT4geyBpZiAoY29uZmlnW2tleV0gPT09IHVuZGVmaW5lZCkgZGVsZXRlIGNvbmZpZ1trZXldIH0pXG5cbiAgICByZXR1cm4gY29uZmlnXG4gIH1cbn1cbiJdfQ==
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Fua2V5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NhbmtleS9zYW5rZXkuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFpQixLQUFLLEVBQWlCLE1BQU0sZUFBZSxDQUFBO0FBQzlFLE9BQU8sRUFDTCxNQUFNLEdBdUJQLE1BQU0sWUFBWSxDQUFBO0FBRW5CLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQTs7QUFRN0MsTUFBTSxPQUFPLGtCQUFrQjtJQWtQN0IsZUFBZTs7UUFDYixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksTUFBTSxDQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFBO1FBRW5ELElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNqQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7U0FDbEM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFFLE9BQXNCOztRQUNqQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFBRSxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7U0FBRTtRQUN4RCxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQTtRQUMzQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7SUFDbkMsQ0FBQztJQUVPLFNBQVM7UUFDZixNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLHdCQUF3QixFQUFFLFNB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O2dCQUdHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0csK0JBQStCO3NCQUF2QyxLQUFLO2dCQUdHLHdDQUF3QztzQkFBaEQsS0FBSztnQkFHRyx5QkFBeUI7c0JBQWpDLEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFHRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBR0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSztnQkFHRyxlQUFlO3NCQUF2QixLQUFLO2dCQVFHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFHRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBSUcsK0JBQStCO3NCQUF2QyxLQUFLO2dCQUdHLE1BQU07c0JBQWQsS0FBSztnQkFHRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBR0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAhISEgVGhpcyBjb2RlIHdhcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZC4gWW91IHNob3VsZCBub3QgY2hhbmdlIGl0ICEhIVxuaW1wb3J0IHsgQ29tcG9uZW50LCBBZnRlclZpZXdJbml0LCBJbnB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBTYW5rZXksXG4gIFNhbmtleUNvbmZpZ0ludGVyZmFjZSxcbiAgQ29udGFpbmVyQ29yZSxcbiAgU2Fua2V5SW5wdXROb2RlLFxuICBTYW5rZXlJbnB1dExpbmssXG4gIFZpc0V2ZW50VHlwZSxcbiAgVmlzRXZlbnRDYWxsYmFjayxcbiAgU2Fua2V5Wm9vbU1vZGUsXG4gIFNhbmtleUV4aXRUcmFuc2l0aW9uVHlwZSxcbiAgU2Fua2V5RW50ZXJUcmFuc2l0aW9uVHlwZSxcbiAgU2Fua2V5Tm9kZSxcbiAgU2Fua2V5TGluayxcbiAgU2Fua2V5Tm9kZUFsaWduLFxuICBTdHJpbmdBY2Nlc3NvcixcbiAgQ29sb3JBY2Nlc3NvcixcbiAgTnVtZXJpY0FjY2Vzc29yLFxuICBHZW5lcmljQWNjZXNzb3IsXG4gIFBvc2l0aW9uLFxuICBWZXJ0aWNhbEFsaWduLFxuICBGaXRNb2RlLFxuICBUcmltTW9kZSxcbiAgU2Fua2V5U3ViTGFiZWxQbGFjZW1lbnQsXG4gIFNwYWNpbmcsXG59IGZyb20gJ0B1bm92aXMvdHMnXG5pbXBvcnQgeyBEM1pvb21FdmVudCB9IGZyb20gJ2QzLXpvb20nXG5pbXBvcnQgeyBWaXNDb3JlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZSdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmlzLXNhbmtleScsXG4gIHRlbXBsYXRlOiAnJyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogVmlzQ29yZUNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IFZpc1NhbmtleUNvbXBvbmVudCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgVmlzU2Fua2V5Q29tcG9uZW50PE4gZXh0ZW5kcyBTYW5rZXlJbnB1dE5vZGUsIEwgZXh0ZW5kcyBTYW5rZXlJbnB1dExpbms+IGltcGxlbWVudHMgU2Fua2V5Q29uZmlnSW50ZXJmYWNlPE4sIEw+LCBBZnRlclZpZXdJbml0IHtcbiAgLyoqIEFuaW1hdGlvbiBkdXJhdGlvbiBvZiB0aGUgZGF0YSB1cGRhdGUgdHJhbnNpdGlvbnMgaW4gbWlsbGlzZWNvbmRzLiBEZWZhdWx0OiBgNjAwYCAqL1xuICBASW5wdXQoKSBkdXJhdGlvbj86IG51bWJlclxuXG4gIC8qKiBFdmVudHMgY29uZmlndXJhdGlvbi4gQW4gb2JqZWN0IGNvbnRhaW5pbmcgcHJvcGVydGllcyBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDpcbiAgICpcbiAgICogYGBgXG4gICAqIHtcbiAgICogXFxbc2VsZWN0b3JTdHJpbmddOiB7XG4gICAqICAgICBcXFtldmVudFR5cGVdOiBjYWxsYmFja0Z1bmN0aW9uXG4gICAqICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqIGUuZy46XG4gICAqIGBgYFxuICAgKiB7XG4gICAqIFxcW0FyZWEuc2VsZWN0b3JzLmFyZWFdOiB7XG4gICAqICAgIGNsaWNrOiAoZCkgPT4gY29uc29sZS5sb2coXCJDbGlja2VkIEFyZWFcIiwgZClcbiAgICogIH1cbiAgICogfVxuICAgKiBgYGAgKi9cbiAgQElucHV0KCkgZXZlbnRzPzoge1xuICAgIFtzZWxlY3Rvcjogc3RyaW5nXToge1xuICAgICAgW2V2ZW50VHlwZSBpbiBWaXNFdmVudFR5cGVdPzogVmlzRXZlbnRDYWxsYmFja1xuICAgIH07XG4gIH1cblxuICAvKiogWW91IGNhbiBzZXQgZXZlcnkgU1ZHIGFuZCBIVE1MIHZpc3VhbGl6YXRpb24gb2JqZWN0IHRvIGhhdmUgYSBjdXN0b20gRE9NIGF0dHJpYnV0ZXMsIHdoaWNoIGlzIHVzZWZ1bFxuICAgKiB3aGVuIHlvdSB3YW50IHRvIGRvIHVuaXQgb3IgZW5kLXRvLWVuZCB0ZXN0aW5nLiBBdHRyaWJ1dGVzIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGhhcyB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTpcbiAgICpcbiAgICogYGBgXG4gICAqIHtcbiAgICogXFxbc2VsZWN0b3JTdHJpbmddOiB7XG4gICAqICAgICBcXFthdHRyaWJ1dGVOYW1lXTogYXR0cmlidXRlIGNvbnN0YW50IHZhbHVlIG9yIGFjY2Vzc29yIGZ1bmN0aW9uXG4gICAqICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqIGUuZy46XG4gICAqIGBgYFxuICAgKiB7XG4gICAqIFxcW0FyZWEuc2VsZWN0b3JzLmFyZWFdOiB7XG4gICAqICAgIFwidGVzdC12YWx1ZVwiOiBkID0+IGQudmFsdWVcbiAgICogIH1cbiAgICogfVxuICAgKiBgYGAgKi9cbiAgQElucHV0KCkgYXR0cmlidXRlcz86IHtcbiAgICBbc2VsZWN0b3I6IHN0cmluZ106IHtcbiAgICAgIFthdHRyOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgKChkYXR1bTogYW55KSA9PiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqIE5vZGUgLyBMaW5rIGlkIGFjY2Vzc29yIGZ1bmN0aW9uLiBVc2VkIGZvciBtYXBwaW5nIG9mIGRhdGEgdXBkYXRlcyB0byBjb3JyZXNwb25kaW5nIFNWRyBvYmplY3RzLiBEZWZhdWx0OiBgKGQsIGkpID0+IGQuaWQgPz8gaS50b1N0cmluZygpYCAqL1xuICBASW5wdXQoKSBpZD86IChkOiBTYW5rZXlJbnB1dE5vZGUgfCBTYW5rZXlJbnB1dExpbmssIGk6IG51bWJlciwgLi4ucmVzdCkgPT4gc3RyaW5nXG5cbiAgLyoqIENvZWZmaWNpZW50IHRvIHNjYWxlIHRoZSBoZWlnaHQgb2YgdGhlIGRpYWdyYW0gd2hlbiB0aGUgYW1vdW50IG9mIGxpbmtzIGlzIGxvdzogYEMgKiBsaW5rcy5sZW5ndGhgLCBjbGFtcGVkIHRvIGBbaGVpZ2h0IC8gMiwgaGVpZ2h0XWAuIERlZmF1bHQ6IGAxLzE2YCAqL1xuICBASW5wdXQoKSBoZWlnaHROb3JtYWxpemF0aW9uQ29lZmY/OiBudW1iZXJcblxuICAvKiogSG9yaXpvbnRhbCBhbmQgdmVydGljYWwgc2NhbGUgZmFjdG9yIGFwcGxpZWQgdG8gdGhlIGNvbXB1dGVkIGxheW91dCAoY29sdW1uIHNwYWNpbmcpLiBLZWVwcyBub2RlIHdpZHRoIGludGFjdC4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgem9vbVNjYWxlPzogW251bWJlciwgbnVtYmVyXVxuXG4gIC8qKiBQYW4gb2Zmc2V0IGluIHBpeGVscy4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgem9vbVBhbj86IFtudW1iZXIsIG51bWJlcl1cblxuICAvKiogRW5hYmxlIGludGVyYWN0aXZlIHpvb20vcGFuIGJlaGF2aW9yLiBEZWZhdWx0OiBgdHJ1ZWAgKi9cbiAgQElucHV0KCkgZW5hYmxlWm9vbT86IGJvb2xlYW5cblxuICAvKiogQWxsb3dlZCBpbnRlcmFjdGl2ZSB6b29tIHNjYWxlIGV4dGVudC4gRGVmYXVsdDogYFsxLCA1XWAgKi9cbiAgQElucHV0KCkgem9vbUV4dGVudD86IFtudW1iZXIsIG51bWJlcl1cblxuICAvKiogWm9vbSBpbnRlcmFjdGlvbiBtb2RlLiBEZWZhdWx0OiBgU2Fua2V5Wm9vbU1vZGUuWFlgICovXG4gIEBJbnB1dCgpIHpvb21Nb2RlPzogU2Fua2V5Wm9vbU1vZGUgfCBzdHJpbmdcblxuICAvKiogRGlzYWJsZSBtb2RpZmllciBrZXlzLiBIYXMgZWZmZWN0IG9ubHkgZm9yIGBTYW5rZXlab29tTW9kZS5YWWAgem9vbSBtb2RlLiBXaGVuIGB0cnVlYCwgem9vbSBtb2RlIGlzIG5vdCBhbHRlcmVkIGJ5IG1vZGlmaWVyIGtleXMuIERlZmF1bHQ6IGBmYWxzZWAgKi9cbiAgQElucHV0KCkgZGlzYWJsZVpvb21Nb2RpZmllcktleXM/OiBib29sZWFuXG5cbiAgLyoqIFR5cGUgb2YgYW5pbWF0aW9uIG9uIHJlbW92aW5nIG5vZGVzLiBEZWZhdWx0OiBgRXhpdFRyYW5zaXRpb25UeXBlLkRlZmF1bHRgICovXG4gIEBJbnB1dCgpIGV4aXRUcmFuc2l0aW9uVHlwZT86IFNhbmtleUV4aXRUcmFuc2l0aW9uVHlwZVxuXG4gIC8qKiBUeXBlIG9mIGFuaW1hdGlvbiBvbiBjcmVhdGluZyBub2Rlcy4gRGVmYXVsdDogYEVudGVyVHJhbnNpdGlvblR5cGUuRGVmYXVsdGAgKi9cbiAgQElucHV0KCkgZW50ZXJUcmFuc2l0aW9uVHlwZT86IFNhbmtleUVudGVyVHJhbnNpdGlvblR5cGVcblxuICAvKiogSGlnaGxpZ2h0IHRoZSBjb3JyZXNwb25kaW5nIHN1YnRyZWUgb24gbm9kZSAvIGxpbmsgaG92ZXIuIERlZmF1bHQ6IGBmYWxzZWAgKi9cbiAgQElucHV0KCkgaGlnaGxpZ2h0U3VidHJlZU9uSG92ZXI/OiBib29sZWFuXG5cbiAgLyoqIEhpZ2hsaWdodCBhbmltYXRpb24gZHVyYXRpb24sIG1zLiBEZWZhdWx0OiBgNDAwYCAqL1xuICBASW5wdXQoKSBoaWdobGlnaHREdXJhdGlvbj86IG51bWJlclxuXG4gIC8qKiBIaWdobGlnaHQgZGVsYXksIG1zLiBEZWZhdWx0OiBgMTAwMGAgKi9cbiAgQElucHV0KCkgaGlnaGxpZ2h0RGVsYXk/OiBudW1iZXJcblxuICAvKiogU2Fua2V5IGFsZ29yaXRobSBpdGVyYXRpb25zLiBEZWZhdWx0OiBgMzJgICovXG4gIEBJbnB1dCgpIGl0ZXJhdGlvbnM/OiBudW1iZXJcblxuICAvKiogU2Fua2V5IG5vZGUgc29ydGluZyBmdW5jdGlvbi4gRGVmYXVsdDogYHVuZGVmaW5lZGAuXG4gICAqIE5vZGUgc29ydGluZyBpcyBhcHBsaWVkIHRvIG5vZGVzIGluIG9uZSBsYXllciAoY29sdW1uKS4gTGF5ZXIgYnkgbGF5ZXIuXG4gICAqIE9wdGlvbnM6IGB1bmRlZmluZWRgIC0gdGhlIG9yZGVyIGlzIGRldGVybWluZWQgYnkgdGhlIGxheW91dDtcbiAgICogICAgICAgICAgYG51bGxgIC0gdGhlIG9yZGVyIGlzIGZpeGVkIGJ5IHRoZSBpbnB1dDtcbiAgICogICAgICAgICAgc29ydCBmdW5jdGlvbiAtIHRoZSBvcmRlciBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBmdW5jdGlvbi4gKi9cbiAgQElucHV0KCkgbm9kZVNvcnQ/OiAoKG5vZGUxOiBTYW5rZXlOb2RlPE4sIEw+LCBub2RlMjogU2Fua2V5Tm9kZTxOLCBMPikgPT4gbnVtYmVyKSB8IG51bGwgfCB1bmRlZmluZWRcblxuICAvKiogU2Fua2V5IGxpbmsgc29ydGluZyBmdW5jdGlvbi4gRGVmYXVsdDogYChsaW5rMiwgbGluazEpID0+IGxpbmsxLnZhbHVlIC0gbGluazIudmFsdWVgLlxuICAgKiBMaW5rIHNvcnRpbmcgaXMgYXBwbGllZCB0byB0aGUgc291cmNlIChleGl0aW5nKSBsaW5rcyB3aXRoaW4gb25lIG5vZGUuXG4gICAqIE9wdGlvbnM6IGB1bmRlZmluZWRgIC0gdGhlIG9yZGVyIGlzIGRldGVybWluZWQgYnkgdGhlIGxheW91dDtcbiAgICogICAgICAgICAgYG51bGxgIC0gdGhlIG9yZGVyIGlzIGZpeGVkIGJ5IHRoZSBpbnB1dDtcbiAgICogICAgICAgICAgc29ydCBmdW5jdGlvbiAtIHRoZSBvcmRlciBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBmdW5jdGlvbi4gKi9cbiAgQElucHV0KCkgbGlua1NvcnQ/OiAoKGxpbmsxOiBTYW5rZXlMaW5rPE4sIEw+LCBsaW5rMjogU2Fua2V5TGluazxOLCBMPikgPT4gbnVtYmVyKSB8IG51bGwgfCB1bmRlZmluZWRcblxuICAvKiogU2Fua2V5IG5vZGUgd2lkdGggaW4gcGl4ZWxzICovXG4gIEBJbnB1dCgpIG5vZGVXaWR0aD86IG51bWJlclxuXG4gIC8qKiBTYW5rZXkgbm9kZSBhbGlnbm1lbnQgbWV0aG9kICovXG4gIEBJbnB1dCgpIG5vZGVBbGlnbj86IFNhbmtleU5vZGVBbGlnblxuXG4gIC8qKiBIb3Jpem9udGFsIHNwYWNlIGJldHdlZW4gdGhlIG5vZGVzLiBFeHRlbmRlZCBTaXppbmcgcHJvcGVydHkgb25seS4gRGVmYXVsdDogYDE1MGAgKi9cbiAgQElucHV0KCkgbm9kZUhvcml6b250YWxTcGFjaW5nPzogbnVtYmVyXG5cbiAgLyoqIE1pbmltdW0gbm9kZSBoZWlnaHQuIEV4dGVuZGVkIFNpemluZyBwcm9wZXJ0eSBvbmx5LiBEZWZhdWx0OiBgMjBgICovXG4gIEBJbnB1dCgpIG5vZGVNaW5IZWlnaHQ/OiBudW1iZXJcblxuICAvKiogTWF4aW11bSBub2RlIGhlaWdodC4gRXh0ZW5kZWQgU2l6aW5nIHByb3BlcnR5IG9ubHkuIERlZmF1bHQ6IGAxMDBgICovXG4gIEBJbnB1dCgpIG5vZGVNYXhIZWlnaHQ/OiBudW1iZXJcblxuICAvKiogU2Fua2V5IHZlcnRpY2FsIHNlcGFyYXRpb24gYmV0d2VlbiBub2RlcyBpbiBwaXhlbHMuIERlZmF1bHQ6IGAyYCAqL1xuICBASW5wdXQoKSBub2RlUGFkZGluZz86IG51bWJlclxuXG4gIC8qKiBEaXNwbGF5IHRoZSBncmFwaCB3aGVuIGRhdGEgaGFzIGp1c3Qgb25lIGVsZW1lbnQgKi9cbiAgQElucHV0KCkgc2hvd1NpbmdsZU5vZGU/OiBib29sZWFuXG5cbiAgLyoqIE5vZGUgY3Vyc29yIG9uIGhvdmVyLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBub2RlQ3Vyc29yPzogU3RyaW5nQWNjZXNzb3I8U2Fua2V5Tm9kZTxOLCBMPj5cblxuICAvKiogTm9kZSBpY29uIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIHZhbHVlLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBub2RlSWNvbj86IFN0cmluZ0FjY2Vzc29yPFNhbmtleU5vZGU8TiwgTD4+XG5cbiAgLyoqIE5vZGUgY29sb3IgYWNjZXNzb3IgZnVuY3Rpb24gb3IgdmFsdWUuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIG5vZGVDb2xvcj86IENvbG9yQWNjZXNzb3I8U2Fua2V5Tm9kZTxOLCBMPj5cblxuICAvKiogTm9kZSBgZml4ZWRWYWx1ZWAgYWNjZXNzb3IgZnVuY3Rpb24gb3IgY29uc3RhbnQuIEl0IGRlZmluZXMgdGhlIG5vZGUgdmFsdWUgdGhhdCB3aWxsIGJlIHVzZWQgdG8gY2FsY3VsYXRlXG4gICAqIHRoZSBoZWlnaHQgb2YgdGhlIG5vZGVzIGJ5IGQzLXNhbmtleSAoYnkgZGVmYXVsdCB0aGUgaGVpZ2h0IHdpbGwgYmUgYmFzZWQgb24gYWdncmVnYXRlZCBgbGlua1ZhbHVlYCkuXG4gICAqIERlZmF1bHQ6IGBuID0+IG4uZml4ZWRWYWx1ZWAgKi9cbiAgQElucHV0KCkgbm9kZUZpeGVkVmFsdWU/OiBOdW1lcmljQWNjZXNzb3I8Tj5cblxuICAvKiogSWNvbiBjb2xvciBhY2Nlc3NvciBmdW5jdGlvbiBvciB2YWx1ZS4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgbm9kZUljb25Db2xvcj86IENvbG9yQWNjZXNzb3I8U2Fua2V5Tm9kZTxOLCBMPj5cblxuICAvKiogTGluayBjb2xvciBhY2Nlc3NvciBmdW5jdGlvbiBvciB2YWx1ZS4gRGVmYXVsdDogYGwgPT4gbC5jb2xvcmAgKi9cbiAgQElucHV0KCkgbGlua0NvbG9yPzogU3RyaW5nQWNjZXNzb3I8U2Fua2V5TGluazxOLCBMPj5cblxuICAvKiogTGluayBmbG93IGFjY2Vzc29yIGZ1bmN0aW9uIG9yIHZhbHVlLiBEZWZhdWx0OiBgbCA9PiBsLnZhbHVlYCAqL1xuICBASW5wdXQoKSBsaW5rVmFsdWU/OiBOdW1lcmljQWNjZXNzb3I8TD5cblxuICAvKiogTGluayBjdXJzb3Igb24gaG92ZXIuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIGxpbmtDdXJzb3I/OiBTdHJpbmdBY2Nlc3NvcjxTYW5rZXlMaW5rPE4sIEw+PlxuXG4gIC8qKiBOb2RlIGxhYmVsIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIHZhbHVlLiBEZWZhdWx0OiBgbiA9PiBuLmxhYmVsYCAqL1xuICBASW5wdXQoKSBsYWJlbD86IFN0cmluZ0FjY2Vzc29yPFNhbmtleU5vZGU8TiwgTD4+XG5cbiAgLyoqIE5vZGUgc3ViLWxhYmVsIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIHZhbHVlLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBzdWJMYWJlbD86IFN0cmluZ0FjY2Vzc29yPFNhbmtleU5vZGU8TiwgTD4+XG5cbiAgLyoqIExhYmVsIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBOb2RlLiBEZWZhdWx0OiBgUG9zaXRpb24uQVVUT2AgKi9cbiAgQElucHV0KCkgbGFiZWxQb3NpdGlvbj86IEdlbmVyaWNBY2Nlc3NvcjxQb3NpdGlvbi5BdXRvIHwgUG9zaXRpb24uTGVmdCB8IFBvc2l0aW9uLlJpZ2h0IHwgc3RyaW5nLCBTYW5rZXlOb2RlPE4sIEw+PlxuXG4gIC8qKiBMYWJlbCB2ZXJ0aWNhbCBhbGlnbm1lbnQgKi9cbiAgQElucHV0KCkgbGFiZWxWZXJ0aWNhbEFsaWduPzogVmVydGljYWxBbGlnbiB8IHN0cmluZ1xuXG4gIC8qKiBMYWJlbCBiYWNrZ3JvdW5kICovXG4gIEBJbnB1dCgpIGxhYmVsQmFja2dyb3VuZD86IGJvb2xlYW5cblxuICAvKiogTGFiZWwgZml0IG1vZGUgKHdyYXAgb3IgdHJpbSkuIERlZmF1bHQ6IGBGaXRNb2RlLlRyaW1gICogKi9cbiAgQElucHV0KCkgbGFiZWxGaXQ/OiBGaXRNb2RlXG5cbiAgLyoqIE1heGltdW0gbGFiZWwgd2l0aCBpbiBwaXhlbHMuIERlZmF1bHQ6IGA3MGAgKi9cbiAgQElucHV0KCkgbGFiZWxNYXhXaWR0aD86IG51bWJlclxuXG4gIC8qKiBXaGV0aGVyIHRvIHRha2UgdGhlIGF2YWlsYWJsZSBzcGFjZSBmb3IgdGhlIGxhYmVsLiBUaGlzIHByb3BlcnR5IGlzIHVzZWQgb25seSBpZiBgbGFiZWxNYXhXaWR0aGAgaXMgbm90IHByb3ZpZGVkLiBEZWZhdWx0OiBgZmFsc2VgICovXG4gIEBJbnB1dCgpIGxhYmVsTWF4V2lkdGhUYWtlQXZhaWxhYmxlU3BhY2U/OiBib29sZWFuXG5cbiAgLyoqIFRvbGVyYW5jZSBmb3IgdGhlIGF2YWlsYWJsZSBzcGFjZSBmb3IgdGhlIGxhYmVsLiBUaGlzIHByb3BlcnR5IGlzIHVzZWQgb25seSBpZiBgbGFiZWxNYXhXaWR0aFRha2VBdmFpbGFibGVTcGFjZWAgaXMgYHRydWVgLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAodXNlIGxhYmVsIGFuZCBzdWItbGFiZWwgZm9udCBzaXplcykgKi9cbiAgQElucHV0KCkgbGFiZWxNYXhXaWR0aFRha2VBdmFpbGFibGVTcGFjZVRvbGVyYW5jZT86IG51bWJlclxuXG4gIC8qKiBFeHBhbmQgdHJpbW1lZCBsYWJlbCBvbiBob3Zlci4gRGVmYXVsdDogYHRydWVgICovXG4gIEBJbnB1dCgpIGxhYmVsRXhwYW5kVHJpbW1lZE9uSG92ZXI/OiBib29sZWFuXG5cbiAgLyoqIExhYmVsIHRyaW1taW5nIG1vZGUuIERlZmF1bHQ6IGBUcmltTW9kZS5NaWRkbGVgICovXG4gIEBJbnB1dCgpIGxhYmVsVHJpbU1vZGU/OiBUcmltTW9kZVxuXG4gIC8qKiBMYWJlbCBmb250IHNpemUgaW4gcGl4ZWxzLiBJZiBub3QgcHJvdmlkZWQsIHRoZSB2YWx1ZSBvZiBDU1MgdmFyaWFibGUgYC0tdmlzLXNhbmtleS1ub2RlLWxhYmVsLWZvbnQtc2l6ZWAgd2lsbCBiZSB1c2VkLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBsYWJlbEZvbnRTaXplPzogbnVtYmVyXG5cbiAgLyoqIExhYmVsIHRleHQgc2VwYXJhdG9ycyBmb3Igd3JhcHBpbmcuIERlZmF1bHQ6IGBbJyAnLCAnLSddYCAqL1xuICBASW5wdXQoKSBsYWJlbFRleHRTZXBhcmF0b3I/OiBzdHJpbmdbXVxuXG4gIC8qKiBMYWJlbCB0ZXh0IGRlY29yYXRpb24uIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIGxhYmVsVGV4dERlY29yYXRpb24/OiBTdHJpbmdBY2Nlc3NvcjxTYW5rZXlOb2RlPE4sIEw+PlxuXG4gIC8qKiBGb3JjZSBicmVhayB3b3JkcyB0byBmaXQgbG9uZyBsYWJlbHMuIERlZmF1bHQ6IGB0cnVlYCAqL1xuICBASW5wdXQoKSBsYWJlbEZvcmNlV29yZEJyZWFrPzogYm9vbGVhblxuXG4gIC8qKiBMYWJlbCBjb2xvci4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgbGFiZWxDb2xvcj86IENvbG9yQWNjZXNzb3I8U2Fua2V5Tm9kZTxOLCBMPj5cblxuICAvKiogTGFiZWwgY3Vyc29yIG9uIGhvdmVyLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBsYWJlbEN1cnNvcj86IFN0cmluZ0FjY2Vzc29yPFNhbmtleU5vZGU8TiwgTD4+XG5cbiAgLyoqIEN1c3RvbSBmdW5jdGlvbiB0byBzZXQgdGhlIGxhYmVsIHZpc2liaWxpdHkuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIGxhYmVsVmlzaWJpbGl0eT86ICgoZDogU2Fua2V5Tm9kZTxOLCBMPiwgYmJveDoge1xuICAgIHg6IG51bWJlcjtcbiAgICB5OiBudW1iZXI7XG4gICAgd2lkdGg6IG51bWJlcjtcbiAgICBoZWlnaHQ6IG51bWJlcjtcbiAgfSwgaG92ZXJlZDogYm9vbGVhbikgPT4gYm9vbGVhbikgfCB1bmRlZmluZWRcblxuICAvKiogU3ViLWxhYmVsIGZvbnQgc2l6ZSBpbiBwaXhlbHMuIElmIG5vdCBwcm92aWRlZCwgdGhlIHZhbHVlIG9mIENTUyB2YXJpYWJsZSBgLS12aXMtc2Fua2V5LW5vZGUtc3VibGFiZWwtZm9udC1zaXplYCB3aWxsIGJlIHVzZWQuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHN1YkxhYmVsRm9udFNpemU/OiBudW1iZXJcblxuICAvKiogU3ViLWxhYmVsIGNvbG9yLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBzdWJMYWJlbENvbG9yPzogQ29sb3JBY2Nlc3NvcjxTYW5rZXlOb2RlPE4sIEw+PlxuXG4gIC8qKiBTdWItbGFiZWwgcG9zaXRpb24uIERlZmF1bHQ6IGBTYW5rZXlTdWJMYWJlbFBsYWNlbWVudC5CZWxvd2AgKi9cbiAgQElucHV0KCkgc3ViTGFiZWxQbGFjZW1lbnQ/OiBTYW5rZXlTdWJMYWJlbFBsYWNlbWVudCB8IHN0cmluZ1xuXG4gIC8qKiBTdWItbGFiZWwgdGV4dCBkZWNvcmF0aW9uLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBzdWJMYWJlbFRleHREZWNvcmF0aW9uPzogU3RyaW5nQWNjZXNzb3I8U2Fua2V5Tm9kZTxOLCBMPj5cblxuICAvKiogU3ViLWxhYmVsIHRvIGxhYmVsIHdpZHRoIHJhdGlvIHdoZW4gYHN1YkxhYmVsUGxhY2VtZW50YCBpcyBzZXQgdG8gYFNhbmtleVN1YkxhYmVsUGxhY2VtZW50LklubGluZWBcbiAgICogRGVmYXVsdDogYDAuNGAsIHdoaWNoIG1lYW5zIHRoYXQgNDAlIG9mIGBsYWJlbE1heFdpZHRoYCB3aWxsIGJlIGdpdmVuIHRvIHN1Yi1sYWJlbCwgYW5kIDYwJSB0byB0aGUgbWFpbiBsYWJlbC4gKi9cbiAgQElucHV0KCkgc3ViTGFiZWxUb0xhYmVsSW5saW5lV2lkdGhSYXRpbz86IG51bWJlclxuXG4gIC8qKiBab29tIGV2ZW50IGNhbGxiYWNrLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBvblpvb20/OiAoaG9yaXpvbnRhbFNjYWxlOiBudW1iZXIsIHZlcnRpY2FsU2NhbGU6IG51bWJlciwgcGFuWDogbnVtYmVyLCBwYW5ZOiBudW1iZXIsIHpvb21FeHRlbnQ6IFtudW1iZXIsIG51bWJlcl0sIGV2ZW50OiBEM1pvb21FdmVudDxTVkdHRWxlbWVudCwgdW5rbm93bj4gfCB1bmRlZmluZWQpID0+IHZvaWRcblxuICAvKiogQ2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGdyYXBoIGxheW91dCBpcyBjYWxjdWxhdGVkLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBvbkxheW91dENhbGN1bGF0ZWQ/OiAobm9kZXM6IFNhbmtleU5vZGU8TiwgTD5bXSwgbGlua3M6IFNhbmtleUxpbms8TiwgTD5bXSwgZGVwdGg6IG51bWJlciwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsIGJsZWVkOiBTcGFjaW5nKSA9PiB2b2lkXG5cbiAgLyoqIFNldCBzZWxlY3RlZCBub2RlcyBieSB1bmlxdWUgaWQuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHNlbGVjdGVkTm9kZUlkcz86IHN0cmluZ1tdXG4gIEBJbnB1dCgpIGRhdGE6IHsgbm9kZXM6IE5bXTsgbGlua3M/OiBMW10gfVxuXG4gIGNvbXBvbmVudDogU2Fua2V5PE4sIEw+IHwgdW5kZWZpbmVkXG4gIHB1YmxpYyBjb21wb25lbnRDb250YWluZXI6IENvbnRhaW5lckNvcmUgfCB1bmRlZmluZWRcblxuICBuZ0FmdGVyVmlld0luaXQgKCk6IHZvaWQge1xuICAgIHRoaXMuY29tcG9uZW50ID0gbmV3IFNhbmtleTxOLCBMPih0aGlzLmdldENvbmZpZygpKVxuXG4gICAgaWYgKHRoaXMuZGF0YSkge1xuICAgICAgdGhpcy5jb21wb25lbnQuc2V0RGF0YSh0aGlzLmRhdGEpXG4gICAgICB0aGlzLmNvbXBvbmVudENvbnRhaW5lcj8ucmVuZGVyKClcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyAoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmRhdGEpIHsgdGhpcy5jb21wb25lbnQ/LnNldERhdGEodGhpcy5kYXRhKSB9XG4gICAgdGhpcy5jb21wb25lbnQ/LnNldENvbmZpZyh0aGlzLmdldENvbmZpZygpKVxuICAgIHRoaXMuY29tcG9uZW50Q29udGFpbmVyPy5yZW5kZXIoKVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb25maWcgKCk6IFNhbmtleUNvbmZpZ0ludGVyZmFjZTxOLCBMPiB7XG4gICAgY29uc3QgeyBkdXJhdGlvbiwgZXZlbnRzLCBhdHRyaWJ1dGVzLCBpZCwgaGVpZ2h0Tm9ybWFsaXphdGlvbkNvZWZmLCB6b29tU2NhbGUsIHpvb21QYW4sIGVuYWJsZVpvb20sIHpvb21FeHRlbnQsIHpvb21Nb2RlLCBkaXNhYmxlWm9vbU1vZGlmaWVyS2V5cywgZXhpdFRyYW5zaXRpb25UeXBlLCBlbnRlclRyYW5zaXRpb25UeXBlLCBoaWdobGlnaHRTdWJ0cmVlT25Ib3ZlciwgaGlnaGxpZ2h0RHVyYXRpb24sIGhpZ2hsaWdodERlbGF5LCBpdGVyYXRpb25zLCBub2RlU29ydCwgbGlua1NvcnQsIG5vZGVXaWR0aCwgbm9kZUFsaWduLCBub2RlSG9yaXpvbnRhbFNwYWNpbmcsIG5vZGVNaW5IZWlnaHQsIG5vZGVNYXhIZWlnaHQsIG5vZGVQYWRkaW5nLCBzaG93U2luZ2xlTm9kZSwgbm9kZUN1cnNvciwgbm9kZUljb24sIG5vZGVDb2xvciwgbm9kZUZpeGVkVmFsdWUsIG5vZGVJY29uQ29sb3IsIGxpbmtDb2xvciwgbGlua1ZhbHVlLCBsaW5rQ3Vyc29yLCBsYWJlbCwgc3ViTGFiZWwsIGxhYmVsUG9zaXRpb24sIGxhYmVsVmVydGljYWxBbGlnbiwgbGFiZWxCYWNrZ3JvdW5kLCBsYWJlbEZpdCwgbGFiZWxNYXhXaWR0aCwgbGFiZWxNYXhXaWR0aFRha2VBdmFpbGFibGVTcGFjZSwgbGFiZWxNYXhXaWR0aFRha2VBdmFpbGFibGVTcGFjZVRvbGVyYW5jZSwgbGFiZWxFeHBhbmRUcmltbWVkT25Ib3ZlciwgbGFiZWxUcmltTW9kZSwgbGFiZWxGb250U2l6ZSwgbGFiZWxUZXh0U2VwYXJhdG9yLCBsYWJlbFRleHREZWNvcmF0aW9uLCBsYWJlbEZvcmNlV29yZEJyZWFrLCBsYWJlbENvbG9yLCBsYWJlbEN1cnNvciwgbGFiZWxWaXNpYmlsaXR5LCBzdWJMYWJlbEZvbnRTaXplLCBzdWJMYWJlbENvbG9yLCBzdWJMYWJlbFBsYWNlbWVudCwgc3ViTGFiZWxUZXh0RGVjb3JhdGlvbiwgc3ViTGFiZWxUb0xhYmVsSW5saW5lV2lkdGhSYXRpbywgb25ab29tLCBvbkxheW91dENhbGN1bGF0ZWQsIHNlbGVjdGVkTm9kZUlkcyB9ID0gdGhpc1xuICAgIGNvbnN0IGNvbmZpZyA9IHsgZHVyYXRpb24sIGV2ZW50cywgYXR0cmlidXRlcywgaWQsIGhlaWdodE5vcm1hbGl6YXRpb25Db2VmZiwgem9vbVNjYWxlLCB6b29tUGFuLCBlbmFibGVab29tLCB6b29tRXh0ZW50LCB6b29tTW9kZSwgZGlzYWJsZVpvb21Nb2RpZmllcktleXMsIGV4aXRUcmFuc2l0aW9uVHlwZSwgZW50ZXJUcmFuc2l0aW9uVHlwZSwgaGlnaGxpZ2h0U3VidHJlZU9uSG92ZXIsIGhpZ2hsaWdodER1cmF0aW9uLCBoaWdobGlnaHREZWxheSwgaXRlcmF0aW9ucywgbm9kZVNvcnQsIGxpbmtTb3J0LCBub2RlV2lkdGgsIG5vZGVBbGlnbiwgbm9kZUhvcml6b250YWxTcGFjaW5nLCBub2RlTWluSGVpZ2h0LCBub2RlTWF4SGVpZ2h0LCBub2RlUGFkZGluZywgc2hvd1NpbmdsZU5vZGUsIG5vZGVDdXJzb3IsIG5vZGVJY29uLCBub2RlQ29sb3IsIG5vZGVGaXhlZFZhbHVlLCBub2RlSWNvbkNvbG9yLCBsaW5rQ29sb3IsIGxpbmtWYWx1ZSwgbGlua0N1cnNvciwgbGFiZWwsIHN1YkxhYmVsLCBsYWJlbFBvc2l0aW9uLCBsYWJlbFZlcnRpY2FsQWxpZ24sIGxhYmVsQmFja2dyb3VuZCwgbGFiZWxGaXQsIGxhYmVsTWF4V2lkdGgsIGxhYmVsTWF4V2lkdGhUYWtlQXZhaWxhYmxlU3BhY2UsIGxhYmVsTWF4V2lkdGhUYWtlQXZhaWxhYmxlU3BhY2VUb2xlcmFuY2UsIGxhYmVsRXhwYW5kVHJpbW1lZE9uSG92ZXIsIGxhYmVsVHJpbU1vZGUsIGxhYmVsRm9udFNpemUsIGxhYmVsVGV4dFNlcGFyYXRvciwgbGFiZWxUZXh0RGVjb3JhdGlvbiwgbGFiZWxGb3JjZVdvcmRCcmVhaywgbGFiZWxDb2xvciwgbGFiZWxDdXJzb3IsIGxhYmVsVmlzaWJpbGl0eSwgc3ViTGFiZWxGb250U2l6ZSwgc3ViTGFiZWxDb2xvciwgc3ViTGFiZWxQbGFjZW1lbnQsIHN1YkxhYmVsVGV4dERlY29yYXRpb24sIHN1YkxhYmVsVG9MYWJlbElubGluZVdpZHRoUmF0aW8sIG9uWm9vbSwgb25MYXlvdXRDYWxjdWxhdGVkLCBzZWxlY3RlZE5vZGVJZHMgfVxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhjb25maWcpIGFzIChrZXlvZiBTYW5rZXlDb25maWdJbnRlcmZhY2U8TiwgTD4pW11cbiAgICBrZXlzLmZvckVhY2goa2V5ID0+IHsgaWYgKGNvbmZpZ1trZXldID09PSB1bmRlZmluZWQpIGRlbGV0ZSBjb25maWdba2V5XSB9KVxuXG4gICAgcmV0dXJuIGNvbmZpZ1xuICB9XG59XG4iXX0=
|
|
@@ -21,8 +21,8 @@ export class VisTimelineComponent {
|
|
|
21
21
|
(_c = this.componentContainer) === null || _c === void 0 ? void 0 : _c.render();
|
|
22
22
|
}
|
|
23
23
|
getConfig() {
|
|
24
|
-
const { duration, events, attributes, x, id, color, xScale, yScale, excludeFromDomainCalculation, type, length, cursor, lineRow, lineDuration, lineWidth, lineCap, lineStartIcon, lineStartIconColor, lineStartIconSize, lineStartIconArrangement, lineEndIcon, lineEndIconColor, lineEndIconSize, lineEndIconArrangement, lineCursor, showEmptySegments, showEmptySegmentsCorrectPosition, rowHeight, alternatingRowColors, showLabels, labelWidth, maxLabelWidth, showRowLabels, rowLabelStyle, rowLabelFormatter, rowIcon, rowLabelWidth, rowMaxLabelWidth, rowLabelTextAlign, arrows, animationLineEnterPosition, animationLineExitPosition, onScroll } = this;
|
|
25
|
-
const config = { duration, events, attributes, x, id, color, xScale, yScale, excludeFromDomainCalculation, type, length, cursor, lineRow, lineDuration, lineWidth, lineCap, lineStartIcon, lineStartIconColor, lineStartIconSize, lineStartIconArrangement, lineEndIcon, lineEndIconColor, lineEndIconSize, lineEndIconArrangement, lineCursor, showEmptySegments, showEmptySegmentsCorrectPosition, rowHeight, alternatingRowColors, showLabels, labelWidth, maxLabelWidth, showRowLabels, rowLabelStyle, rowLabelFormatter, rowIcon, rowLabelWidth, rowMaxLabelWidth, rowLabelTextAlign, arrows, animationLineEnterPosition, animationLineExitPosition, onScroll };
|
|
24
|
+
const { duration, events, attributes, x, id, color, xScale, yScale, excludeFromDomainCalculation, type, length, cursor, lineRow, lineDuration, lineWidth, lineCap, lineStartIcon, lineStartIconColor, lineStartIconSize, lineStartIconArrangement, lineEndIcon, lineEndIconColor, lineEndIconSize, lineEndIconArrangement, lineCursor, showEmptySegments, showEmptySegmentsCorrectPosition, rowHeight, alternatingRowColors, showLabels, labelWidth, maxLabelWidth, showRowLabels, rowLabelStyle, rowLabelFormatter, rowIcon, rowLabelWidth, rowMaxLabelWidth, rowLabelTextAlign, rowLabelTrimMode, rowLabelMargin, rowFillEmptySpace, arrows, animationLineEnterPosition, animationLineExitPosition, onScroll } = this;
|
|
25
|
+
const config = { duration, events, attributes, x, id, color, xScale, yScale, excludeFromDomainCalculation, type, length, cursor, lineRow, lineDuration, lineWidth, lineCap, lineStartIcon, lineStartIconColor, lineStartIconSize, lineStartIconArrangement, lineEndIcon, lineEndIconColor, lineEndIconSize, lineEndIconArrangement, lineCursor, showEmptySegments, showEmptySegmentsCorrectPosition, rowHeight, alternatingRowColors, showLabels, labelWidth, maxLabelWidth, showRowLabels, rowLabelStyle, rowLabelFormatter, rowIcon, rowLabelWidth, rowMaxLabelWidth, rowLabelTextAlign, rowLabelTrimMode, rowLabelMargin, rowFillEmptySpace, arrows, animationLineEnterPosition, animationLineExitPosition, onScroll };
|
|
26
26
|
const keys = Object.keys(config);
|
|
27
27
|
keys.forEach(key => { if (config[key] === undefined)
|
|
28
28
|
delete config[key]; });
|
|
@@ -30,7 +30,7 @@ export class VisTimelineComponent {
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
VisTimelineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: VisTimelineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
33
|
-
VisTimelineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: VisTimelineComponent, selector: "vis-timeline", inputs: { duration: "duration", events: "events", attributes: "attributes", x: "x", id: "id", color: "color", xScale: "xScale", yScale: "yScale", excludeFromDomainCalculation: "excludeFromDomainCalculation", type: "type", length: "length", cursor: "cursor", lineRow: "lineRow", lineDuration: "lineDuration", lineWidth: "lineWidth", lineCap: "lineCap", lineStartIcon: "lineStartIcon", lineStartIconColor: "lineStartIconColor", lineStartIconSize: "lineStartIconSize", lineStartIconArrangement: "lineStartIconArrangement", lineEndIcon: "lineEndIcon", lineEndIconColor: "lineEndIconColor", lineEndIconSize: "lineEndIconSize", lineEndIconArrangement: "lineEndIconArrangement", lineCursor: "lineCursor", showEmptySegments: "showEmptySegments", showEmptySegmentsCorrectPosition: "showEmptySegmentsCorrectPosition", rowHeight: "rowHeight", alternatingRowColors: "alternatingRowColors", showLabels: "showLabels", labelWidth: "labelWidth", maxLabelWidth: "maxLabelWidth", showRowLabels: "showRowLabels", rowLabelStyle: "rowLabelStyle", rowLabelFormatter: "rowLabelFormatter", rowIcon: "rowIcon", rowLabelWidth: "rowLabelWidth", rowMaxLabelWidth: "rowMaxLabelWidth", rowLabelTextAlign: "rowLabelTextAlign", arrows: "arrows", animationLineEnterPosition: "animationLineEnterPosition", animationLineExitPosition: "animationLineExitPosition", onScroll: "onScroll", data: "data" }, providers: [{ provide: VisXYComponent, useExisting: VisTimelineComponent }], usesOnChanges: true, ngImport: i0, template: '', isInline: true });
|
|
33
|
+
VisTimelineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: VisTimelineComponent, selector: "vis-timeline", inputs: { duration: "duration", events: "events", attributes: "attributes", x: "x", id: "id", color: "color", xScale: "xScale", yScale: "yScale", excludeFromDomainCalculation: "excludeFromDomainCalculation", type: "type", length: "length", cursor: "cursor", lineRow: "lineRow", lineDuration: "lineDuration", lineWidth: "lineWidth", lineCap: "lineCap", lineStartIcon: "lineStartIcon", lineStartIconColor: "lineStartIconColor", lineStartIconSize: "lineStartIconSize", lineStartIconArrangement: "lineStartIconArrangement", lineEndIcon: "lineEndIcon", lineEndIconColor: "lineEndIconColor", lineEndIconSize: "lineEndIconSize", lineEndIconArrangement: "lineEndIconArrangement", lineCursor: "lineCursor", showEmptySegments: "showEmptySegments", showEmptySegmentsCorrectPosition: "showEmptySegmentsCorrectPosition", rowHeight: "rowHeight", alternatingRowColors: "alternatingRowColors", showLabels: "showLabels", labelWidth: "labelWidth", maxLabelWidth: "maxLabelWidth", showRowLabels: "showRowLabels", rowLabelStyle: "rowLabelStyle", rowLabelFormatter: "rowLabelFormatter", rowIcon: "rowIcon", rowLabelWidth: "rowLabelWidth", rowMaxLabelWidth: "rowMaxLabelWidth", rowLabelTextAlign: "rowLabelTextAlign", rowLabelTrimMode: "rowLabelTrimMode", rowLabelMargin: "rowLabelMargin", rowFillEmptySpace: "rowFillEmptySpace", arrows: "arrows", animationLineEnterPosition: "animationLineEnterPosition", animationLineExitPosition: "animationLineExitPosition", onScroll: "onScroll", data: "data" }, providers: [{ provide: VisXYComponent, useExisting: VisTimelineComponent }], usesOnChanges: true, ngImport: i0, template: '', isInline: true });
|
|
34
34
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: VisTimelineComponent, decorators: [{
|
|
35
35
|
type: Component,
|
|
36
36
|
args: [{
|
|
@@ -117,6 +117,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
117
117
|
type: Input
|
|
118
118
|
}], rowLabelTextAlign: [{
|
|
119
119
|
type: Input
|
|
120
|
+
}], rowLabelTrimMode: [{
|
|
121
|
+
type: Input
|
|
122
|
+
}], rowLabelMargin: [{
|
|
123
|
+
type: Input
|
|
124
|
+
}], rowFillEmptySpace: [{
|
|
125
|
+
type: Input
|
|
120
126
|
}], arrows: [{
|
|
121
127
|
type: Input
|
|
122
128
|
}], animationLineEnterPosition: [{
|
|
@@ -128,4 +134,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
128
134
|
}], data: [{
|
|
129
135
|
type: Input
|
|
130
136
|
}] } });
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdGltZWxpbmUvdGltZWxpbmUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFpQixLQUFLLEVBQWlCLE1BQU0sZUFBZSxDQUFBO0FBQzlFLE9BQU8sRUFDTCxRQUFRLEdBZ0JULE1BQU0sWUFBWSxDQUFBO0FBQ25CLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUE7O0FBUTNDLE1BQU0sT0FBTyxvQkFBb0I7SUE2TC9CLGVBQWU7O1FBQ2IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLFFBQVEsQ0FBUSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQTtRQUV0RCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDakMsTUFBQSxJQUFJLENBQUMsa0JBQWtCLDBDQUFFLE1BQU0sRUFBRSxDQUFBO1NBQ2xDO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBRSxPQUFzQjs7UUFDakMsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFO1lBQUUsTUFBQSxJQUFJLENBQUMsU0FBUywwQ0FBRSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1NBQUU7UUFDeEQsTUFBQSxJQUFJLENBQUMsU0FBUywwQ0FBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUE7UUFDM0MsTUFBQSxJQUFJLENBQUMsa0JBQWtCLDBDQUFFLE1BQU0sRUFBRSxDQUFBO0lBQ25DLENBQUM7SUFFTyxTQUFTO1FBQ2YsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUs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QWtCO3NCQUExQixLQUFLO2dCQUdHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFLRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSztnQkFHRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBR0csZUFBZTtzQkFBdkIsS0FBSztnQkFLRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFLRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBSUcsZ0NBQWdDO3NCQUF4QyxLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSztnQkFHRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBR0csT0FBTztzQkFBZixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUdHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFHRyxNQUFNO3NCQUFkLEtBQUs7Z0JBR0csMEJBQTBCO3NCQUFsQyxLQUFLO2dCQUdHLHlCQUF5QjtzQkFBakMsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vICEhISBUaGlzIGNvZGUgd2FzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkLiBZb3Ugc2hvdWxkIG5vdCBjaGFuZ2UgaXQgISEhXG5pbXBvcnQgeyBDb21wb25lbnQsIEFmdGVyVmlld0luaXQsIElucHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIFRpbWVsaW5lLFxuICBUaW1lbGluZUNvbmZpZ0ludGVyZmFjZSxcbiAgQ29udGFpbmVyQ29yZSxcbiAgVmlzRXZlbnRUeXBlLFxuICBWaXNFdmVudENhbGxiYWNrLFxuICBOdW1lcmljQWNjZXNzb3IsXG4gIENvbG9yQWNjZXNzb3IsXG4gIENvbnRpbnVvdXNTY2FsZSxcbiAgU3RyaW5nQWNjZXNzb3IsXG4gIEdlbmVyaWNBY2Nlc3NvcixcbiAgQXJyYW5nZW1lbnQsXG4gIFRpbWVsaW5lUm93TGFiZWwsXG4gIFRpbWVsaW5lUm93SWNvbixcbiAgVGV4dEFsaWduLFxuICBUaW1lbGluZUFycm93LFxuICBUaW1lbGluZUxpbmVSZW5kZXJTdGF0ZSxcbn0gZnJvbSAnQHVub3Zpcy90cydcbmltcG9ydCB7IFZpc1hZQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZSdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmlzLXRpbWVsaW5lJyxcbiAgdGVtcGxhdGU6ICcnLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBWaXNYWUNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IFZpc1RpbWVsaW5lQ29tcG9uZW50IH1dLFxufSlcbmV4cG9ydCBjbGFzcyBWaXNUaW1lbGluZUNvbXBvbmVudDxEYXR1bT4gaW1wbGVtZW50cyBUaW1lbGluZUNvbmZpZ0ludGVyZmFjZTxEYXR1bT4sIEFmdGVyVmlld0luaXQge1xuICAvKiogQW5pbWF0aW9uIGR1cmF0aW9uIG9mIHRoZSBkYXRhIHVwZGF0ZSB0cmFuc2l0aW9ucyBpbiBtaWxsaXNlY29uZHMuIERlZmF1bHQ6IGA2MDBgICovXG4gIEBJbnB1dCgpIGR1cmF0aW9uPzogbnVtYmVyXG5cbiAgLyoqIEV2ZW50cyBjb25maWd1cmF0aW9uLiBBbiBvYmplY3QgY29udGFpbmluZyBwcm9wZXJ0aWVzIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0OlxuICAgKlxuICAgKiBgYGBcbiAgICoge1xuICAgKiBcXFtzZWxlY3RvclN0cmluZ106IHtcbiAgICogICAgIFxcW2V2ZW50VHlwZV06IGNhbGxiYWNrRnVuY3Rpb25cbiAgICogIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICogZS5nLjpcbiAgICogYGBgXG4gICAqIHtcbiAgICogXFxbQXJlYS5zZWxlY3RvcnMuYXJlYV06IHtcbiAgICogICAgY2xpY2s6IChkKSA9PiBjb25zb2xlLmxvZyhcIkNsaWNrZWQgQXJlYVwiLCBkKVxuICAgKiAgfVxuICAgKiB9XG4gICAqIGBgYCAqL1xuICBASW5wdXQoKSBldmVudHM/OiB7XG4gICAgW3NlbGVjdG9yOiBzdHJpbmddOiB7XG4gICAgICBbZXZlbnRUeXBlIGluIFZpc0V2ZW50VHlwZV0/OiBWaXNFdmVudENhbGxiYWNrXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBZb3UgY2FuIHNldCBldmVyeSBTVkcgYW5kIEhUTUwgdmlzdWFsaXphdGlvbiBvYmplY3QgdG8gaGF2ZSBhIGN1c3RvbSBET00gYXR0cmlidXRlcywgd2hpY2ggaXMgdXNlZnVsXG4gICAqIHdoZW4geW91IHdhbnQgdG8gZG8gdW5pdCBvciBlbmQtdG8tZW5kIHRlc3RpbmcuIEF0dHJpYnV0ZXMgY29uZmlndXJhdGlvbiBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOlxuICAgKlxuICAgKiBgYGBcbiAgICoge1xuICAgKiBcXFtzZWxlY3RvclN0cmluZ106IHtcbiAgICogICAgIFxcW2F0dHJpYnV0ZU5hbWVdOiBhdHRyaWJ1dGUgY29uc3RhbnQgdmFsdWUgb3IgYWNjZXNzb3IgZnVuY3Rpb25cbiAgICogIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICogZS5nLjpcbiAgICogYGBgXG4gICAqIHtcbiAgICogXFxbQXJlYS5zZWxlY3RvcnMuYXJlYV06IHtcbiAgICogICAgXCJ0ZXN0LXZhbHVlXCI6IGQgPT4gZC52YWx1ZVxuICAgKiAgfVxuICAgKiB9XG4gICAqIGBgYCAqL1xuICBASW5wdXQoKSBhdHRyaWJ1dGVzPzoge1xuICAgIFtzZWxlY3Rvcjogc3RyaW5nXToge1xuICAgICAgW2F0dHI6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCAoKGRhdHVtOiBhbnkpID0+IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4pO1xuICAgIH07XG4gIH1cblxuICAvKiogQWNjZXNzb3IgZnVuY3Rpb24gZm9yIGdldHRpbmcgdGhlIHZhbHVlcyBhbG9uZyB0aGUgWCBheGlzLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSB4OiBOdW1lcmljQWNjZXNzb3I8RGF0dW0+XG5cbiAgLyoqIEFjY2Vzc29yIGZ1bmN0aW9uIGZvciBnZXR0aW5nIHRoZSB1bmlxdWUgZGF0YSByZWNvcmQgaWQuIFVzZWQgZm9yIG1vcmUgcGVyc2lzdGVudCBkYXRhIHVwZGF0ZXMuIERlZmF1bHQ6IGAoZCwgaSkgPT4gZC5pZCA/PyBpYCAqL1xuICBASW5wdXQoKSBpZD86ICgoZDogRGF0dW0sIGk6IG51bWJlciwgLi4ucmVzdCkgPT4gc3RyaW5nKVxuXG4gIC8qKiBUaW1lbGluZSBpdGVtIGNvbG9yIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgZCA9PiBkLmNvbG9yYCAqL1xuICBASW5wdXQoKSBjb2xvcj86IENvbG9yQWNjZXNzb3I8RGF0dW0+XG5cbiAgLyoqIFNjYWxlIGZvciBYIGRpbWVuc2lvbiwgZS5nLiBTY2FsZS5zY2FsZUxpbmVhcigpLiBJZiB5b3Ugc2V0IHhTY2FsZSB5b3UnbGwgYmUgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgaXQncyBgZG9tYWluYCBhbmQgYHJhbmdlYCBhcyB3ZWxsLlxuICAgKiBPbmx5IGNvbnRpbnVvdXMgc2NhbGVzIGFyZSBzdXBwb3J0ZWQuXG4gICAqIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHhTY2FsZT86IENvbnRpbnVvdXNTY2FsZVxuXG4gIC8qKiBTY2FsZSBmb3IgWSBkaW1lbnNpb24sIGUuZy4gU2NhbGUuc2NhbGVMaW5lYXIoKS4gSWYgeW91IHNldCB5U2NhbGUgeW91J2xsIGJlIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIGl0J3MgYGRvbWFpbmAgYW5kIGByYW5nZWAgYXMgd2VsbC5cbiAgICogT25seSBjb250aW51b3VzIHNjYWxlcyBhcmUgc3VwcG9ydGVkLlxuICAgKiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSB5U2NhbGU/OiBDb250aW51b3VzU2NhbGVcblxuICAvKiogSWRlbnRpZmllcyB3aGV0aGVyIHRoZSBjb21wb25lbnQgc2hvdWxkIGJlIGV4Y2x1ZGVkIGZyb20gb3ZlcmFsbCBYIGFuZCBZIGRvbWFpbiBjYWxjdWxhdGlvbnMgb3Igbm90LlxuICAgKiBUaGlzIHByb3BlcnR5IGNhbiBiZSB1c2VmdWwgd2hlbiB5b3Ugd2FudCBwYXNzIGluZGl2aWR1YWwgZGF0YSB0byBhIGNvbXBvbmVudCBhbmQgeW91IGRvbid0IHdhbnQgaXQgdG8gYWZmZWN0XG4gICAqIHRoZSBzY2FsZXMgb2YgdGhlIGNoYXJ0LlxuICAgKiBEZWZhdWx0OiBgZmFsc2VgICovXG4gIEBJbnB1dCgpIGV4Y2x1ZGVGcm9tRG9tYWluQ2FsY3VsYXRpb24/OiBib29sZWFuXG5cbiAgLyoqICAqL1xuICBASW5wdXQoKSB0eXBlPzogU3RyaW5nQWNjZXNzb3I8RGF0dW0+XG5cbiAgLyoqICAqL1xuICBASW5wdXQoKSBsZW5ndGg/OiBOdW1lcmljQWNjZXNzb3I8RGF0dW0+XG5cbiAgLyoqICAqL1xuICBASW5wdXQoKSBjdXJzb3I/OiBTdHJpbmdBY2Nlc3NvcjxEYXR1bT5cblxuICAvKiogVGltZWxpbmUgaXRlbSByb3cgYWNjZXNzb3IgZnVuY3Rpb24uIFJlY29yZHMgd2l0aCB0aGUgYGxpbmVSb3dgIHdpbGwgYmUgcGxvdHRlZCBpbiBvbmUgcm93LiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBsaW5lUm93PzogU3RyaW5nQWNjZXNzb3I8RGF0dW0+XG5cbiAgLyoqIFRpbWVsaW5lIGl0ZW0gZHVyYXRpb24gYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGB1bmRlZmluZWRgLiBGYWxscyBiYWNrIHRvIHRoZSBkZXByZWNhdGVkIGBsZW5ndGhgIHByb3BlcnR5ICovXG4gIEBJbnB1dCgpIGxpbmVEdXJhdGlvbj86IE51bWVyaWNBY2Nlc3NvcjxEYXR1bT5cblxuICAvKiogV2lkdGggb2YgdGhlIHRpbWVsaW5lIGl0ZW1zLiBEZWZhdWx0OiBgOGAgKi9cbiAgQElucHV0KCkgbGluZVdpZHRoPzogTnVtZXJpY0FjY2Vzc29yPERhdHVtPlxuXG4gIC8qKiBEaXNwbGF5IHJvdW5kZWQgZW5kcyBmb3IgdGltZWxpbmUgaXRlbXMuIERlZmF1bHQ6IGB0cnVlYCAqL1xuICBASW5wdXQoKSBsaW5lQ2FwPzogYm9vbGVhblxuXG4gIC8qKiBQcm92aWRlIGEgaHJlZiB0byBhbiBTVkcgZGVmaW5lZCBpbiBjb250YWluZXIncyBgc3ZnRGVmc2AgdG8gZGlzcGxheSBhbiBpY29uIGF0IHRoZSBzdGFydCBvZiB0aGUgbGluZS4gRGVmYXVsdDogdW5kZWZpbmVkICovXG4gIEBJbnB1dCgpIGxpbmVTdGFydEljb24/OiBTdHJpbmdBY2Nlc3NvcjxEYXR1bT5cblxuICAvKiogTGluZSBzdGFydCBpY29uIGNvbG9yIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBsaW5lU3RhcnRJY29uQ29sb3I/OiBTdHJpbmdBY2Nlc3NvcjxEYXR1bT5cblxuICAvKiogTGluZSBzdGFydCBpY29uIHNpemUgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIGxpbmVTdGFydEljb25TaXplPzogTnVtZXJpY0FjY2Vzc29yPERhdHVtPlxuXG4gIC8qKiBMaW5lIHN0YXJ0IGljb24gYXJyYW5nZW1lbnQgY29uZmlndXJhdGlvbi4gQ29udHJvbHMgaG93IHRoZSBpY29uIGlzIHBvc2l0aW9uZWQgcmVsYXRpdmUgdG8gdGhlIGxpbmUuXG4gICAqIEFjY2VwdHMgdmFsdWVzIGZyb20gdGhlIEFycmFuZ2VtZW50IGVudW06IGBBcnJhbmdlbWVudC5TdGFydGAsIGBBcnJhbmdlbWVudC5NaWRkbGVgLCBgQXJyYW5nZW1lbnQuRW5kYCBvciBhIHN0cmluZyBlcXVpdmFsZW50LlxuICAgKiBEZWZhdWx0OiBgQXJyYW5nZW1lbnQuSW5zaWRlYCAqL1xuICBASW5wdXQoKSBsaW5lU3RhcnRJY29uQXJyYW5nZW1lbnQ/OiBHZW5lcmljQWNjZXNzb3I8QXJyYW5nZW1lbnQgfCBhbnksIERhdHVtPlxuXG4gIC8qKiBQcm92aWRlIGEgaHJlZiB0byBhbiBTVkcgZGVmaW5lZCBpbiBjb250YWluZXIncyBgc3ZnRGVmc2AgdG8gZGlzcGxheSBhbiBpY29uIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmUuIERlZmF1bHQ6IHVuZGVmaW5lZCAqL1xuICBASW5wdXQoKSBsaW5lRW5kSWNvbj86IFN0cmluZ0FjY2Vzc29yPERhdHVtPlxuXG4gIC8qKiBMaW5lIGVuZCBpY29uIGNvbG9yIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBsaW5lRW5kSWNvbkNvbG9yPzogU3RyaW5nQWNjZXNzb3I8RGF0dW0+XG5cbiAgLyoqIExpbmUgZW5kIGljb24gc2l6ZSBhY2Nlc3NvciBmdW5jdGlvbi4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgbGluZUVuZEljb25TaXplPzogTnVtZXJpY0FjY2Vzc29yPERhdHVtPlxuXG4gIC8qKiBMaW5lIGVuZCBpY29uIGFycmFuZ2VtZW50IGNvbmZpZ3VyYXRpb24uIENvbnRyb2xzIGhvdyB0aGUgaWNvbiBpcyBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIHRoZSBsaW5lLlxuICAgKiBBY2NlcHRzIHZhbHVlcyBmcm9tIHRoZSBBcnJhbmdlbWVudCBlbnVtOiBgQXJyYW5nZW1lbnQuU3RhcnRgLCBgQXJyYW5nZW1lbnQuTWlkZGxlYCwgYEFycmFuZ2VtZW50LkVuZGAgb3IgYSBzdHJpbmcgZXF1aXZhbGVudC5cbiAgICogRGVmYXVsdDogYEFycmFuZ2VtZW50Lkluc2lkZWAgKi9cbiAgQElucHV0KCkgbGluZUVuZEljb25BcnJhbmdlbWVudD86IEdlbmVyaWNBY2Nlc3NvcjxBcnJhbmdlbWVudCB8IGFueSwgRGF0dW0+XG5cbiAgLyoqIENvbmZpZ3VyYWJsZSBUaW1lbGluZSBpdGVtIGN1cnNvciB3aGVuIGhvdmVyaW5nIG92ZXIuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIGxpbmVDdXJzb3I/OiBTdHJpbmdBY2Nlc3NvcjxEYXR1bT5cblxuICAvKiogU2V0cyB0aGUgbWluaW11bSBsaW5lIGxlbmd0aCB0byAxIHBpeGVsIGZvciBiZXR0ZXIgdmlzaWJpbGl0eSBvZiBzbWFsbCB2YWx1ZXMuXG4gICAqIFdoZW4gYGxpbmVDYXBgIGlzIHNldCB0byBgdHJ1ZWAsIHRoZSBzZWdtZW50IHdpbGwgYmUgcmVuZGVyZWQgYXMgYSBjaXJjbGUuXG4gICAqIERlZmF1bHQ6IGBmYWxzZWAgKi9cbiAgQElucHV0KCkgc2hvd0VtcHR5U2VnbWVudHM/OiBib29sZWFuXG5cbiAgLyoqIENlbnRlciBzbWFsbCBzZWdtZW50cyB3aGVuIGBzaG93RW1wdHlTZWdtZW50c2AgYW5kIGBsaW5lQ2FwYCBhcmUgc2V0IHRvIGB0cnVlYC5cbiAgICogRGVmYXVsdDogYHRydWVgICovXG4gIEBJbnB1dCgpIHNob3dFbXB0eVNlZ21lbnRzQ29ycmVjdFBvc2l0aW9uPzogYm9vbGVhblxuXG4gIC8qKiBUaW1lbGluZSByb3cgaGVpZ2h0LiBEZWZhdWx0OiBgMjJgICovXG4gIEBJbnB1dCgpIHJvd0hlaWdodD86IG51bWJlclxuXG4gIC8qKiBBbHRlcm5hdGluZyByb3cgY29sb3JzLiBEZWZhdWx0OiBgdHJ1ZWAgKi9cbiAgQElucHV0KCkgYWx0ZXJuYXRpbmdSb3dDb2xvcnM/OiBib29sZWFuXG5cbiAgLyoqICAqL1xuICBASW5wdXQoKSBzaG93TGFiZWxzPzogYm9vbGVhblxuXG4gIC8qKiAgKi9cbiAgQElucHV0KCkgbGFiZWxXaWR0aD86IG51bWJlclxuXG4gIC8qKiAgKi9cbiAgQElucHV0KCkgbWF4TGFiZWxXaWR0aD86IG51bWJlclxuXG4gIC8qKiBTaG93IHJvdyBsYWJlbHMgd2hlbiBzZXQgdG8gYHRydWVgLiBEZWZhdWx0OiBgZmFsc2VgLiBGYWxscyBiYWNrIHRvIGRlcHJlY2F0ZWQgYHNob3dMYWJlbHNgICovXG4gIEBJbnB1dCgpIHNob3dSb3dMYWJlbHM/OiBib29sZWFuXG5cbiAgLyoqIFJvdyBsYWJlbCBzdHlsZSBhcyBhbiBvYmplY3Qgd2l0aCB0aGUgYHsgW3Byb3BlcnR5LW5hbWVdOiB2YWx1ZSB9YCBmb3JtYXQuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHJvd0xhYmVsU3R5bGU/OiBHZW5lcmljQWNjZXNzb3I8UmVjb3JkPHN0cmluZywgc3RyaW5nPiwgVGltZWxpbmVSb3dMYWJlbDxEYXR1bT4+XG5cbiAgLyoqIFJvdyBsYWJlbCBmb3JtYXR0ZXIgZnVuY3Rpb24uIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHJvd0xhYmVsRm9ybWF0dGVyPzogKGtleTogc3RyaW5nLCBpdGVtczogRGF0dW1bXSwgaTogbnVtYmVyKSA9PiBzdHJpbmdcblxuICAvKiogUHJvdmlkZSBhbiBpY29uIGhyZWYgdG8gYmUgZGlzcGxheWVkIGJlZm9yZSB0aGUgcm93IGxhYmVsLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSByb3dJY29uPzogKGtleTogc3RyaW5nLCBpdGVtczogRGF0dW1bXSwgaTogbnVtYmVyKSA9PiBUaW1lbGluZVJvd0ljb24gfCB1bmRlZmluZWRcblxuICAvKiogRml4ZWQgbGFiZWwgd2lkdGggaW4gcGl4ZWxzLiBMYWJlbHMgbG9uZ2VyIHRoYW4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aWxsIGJlIHRyaW1tZWQuIERlZmF1bHQ6IGB1bmRlZmluZWRgLiBGYWxscyBiYWNrIHRvIGRlcHJlY2F0ZWQgYGxhYmVsV2lkdGhgLiAqL1xuICBASW5wdXQoKSByb3dMYWJlbFdpZHRoPzogbnVtYmVyXG5cbiAgLyoqIE1heGltdW0gbGFiZWwgd2lkdGggaW4gcGl4ZWxzLiBMYWJlbHMgbG9uZ2VyIHRoYW4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aWxsIGJlIHRyaW1tZWQuIERlZmF1bHQ6IGB1bmRlZmluZWRgLiBGYWxscyBiYWNrIHRvIGRlcHJlY2F0ZWQgYG1heExhYmVsV2lkdGhgLiAqL1xuICBASW5wdXQoKSByb3dNYXhMYWJlbFdpZHRoPzogbnVtYmVyXG5cbiAgLyoqIFRleHQgYWxpZ25tZW50IGZvciBsYWJlbHM6IGBUZXh0QWxpZ24uTGVmdGAsIGBUZXh0QWxpZ24uQ2VudGVyYCBvciBgVGV4dEFsaWduLlJpZ2h0YC4gRGVmYXVsdDogYFRleHRBbGlnbi5SaWdodGAgKi9cbiAgQElucHV0KCkgcm93TGFiZWxUZXh0QWxpZ24/OiBUZXh0QWxpZ24gfCBhbnlcblxuXG4gIEBJbnB1dCgpIGFycm93cz86IFRpbWVsaW5lQXJyb3dbXVxuXG4gIC8qKiBDb250cm9sIHRoZSBhbmltYXRpb24gYnkgc3BlY2lmeSB0aGUgaW5pdGlhbCBwb3NpdGlvbiBmb3IgbmV3IGxpbmVzIGFzIFt4LCB5XS4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgYW5pbWF0aW9uTGluZUVudGVyUG9zaXRpb24/OiBbbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbCwgbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbF0gfCAoKGQ6IERhdHVtICYgVGltZWxpbmVMaW5lUmVuZGVyU3RhdGUsIGk6IG51bWJlciwgZGF0YTogKERhdHVtICYgVGltZWxpbmVMaW5lUmVuZGVyU3RhdGUpW10pID0+IFtudW1iZXIgfCB1bmRlZmluZWQsIG51bWJlciB8IHVuZGVmaW5lZF0pIHwgdW5kZWZpbmVkXG5cbiAgLyoqIENvbnRyb2wgdGhlIGFuaW1hdGlvbiBieSBzcGVjaWZ5IHRoZSBkZXN0aW5hdGlvbiBwb3NpdGlvbiBmb3IgZXhpdGluZyBsaW5lcyBhcyBbeCwgeV0uIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIGFuaW1hdGlvbkxpbmVFeGl0UG9zaXRpb24/OiBbbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbCwgbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbF0gfCAoKGQ6IERhdHVtICYgVGltZWxpbmVMaW5lUmVuZGVyU3RhdGUsIGk6IG51bWJlciwgZGF0YTogKERhdHVtICYgVGltZWxpbmVMaW5lUmVuZGVyU3RhdGUpW10pID0+IFtudW1iZXIgfCB1bmRlZmluZWQsIG51bWJlciB8IHVuZGVmaW5lZF0pIHwgdW5kZWZpbmVkXG5cbiAgLyoqIFNjcm9sbGluZyBjYWxsYmFjayBmdW5jdGlvbjogYChzY3JvbGxUb3A6IG51bWJlcikgPT4gdm9pZGAuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIG9uU2Nyb2xsPzogKHNjcm9sbFRvcDogbnVtYmVyKSA9PiB2b2lkXG4gIEBJbnB1dCgpIGRhdGE6IERhdHVtW11cblxuICBjb21wb25lbnQ6IFRpbWVsaW5lPERhdHVtPiB8IHVuZGVmaW5lZFxuICBwdWJsaWMgY29tcG9uZW50Q29udGFpbmVyOiBDb250YWluZXJDb3JlIHwgdW5kZWZpbmVkXG5cbiAgbmdBZnRlclZpZXdJbml0ICgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBvbmVudCA9IG5ldyBUaW1lbGluZTxEYXR1bT4odGhpcy5nZXRDb25maWcoKSlcblxuICAgIGlmICh0aGlzLmRhdGEpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50LnNldERhdGEodGhpcy5kYXRhKVxuICAgICAgdGhpcy5jb21wb25lbnRDb250YWluZXI/LnJlbmRlcigpXG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMgKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5kYXRhKSB7IHRoaXMuY29tcG9uZW50Py5zZXREYXRhKHRoaXMuZGF0YSkgfVxuICAgIHRoaXMuY29tcG9uZW50Py5zZXRDb25maWcodGhpcy5nZXRDb25maWcoKSlcbiAgICB0aGlzLmNvbXBvbmVudENvbnRhaW5lcj8ucmVuZGVyKClcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29uZmlnICgpOiBUaW1lbGluZUNvbmZpZ0ludGVyZmFjZTxEYXR1bT4ge1xuICAgIGNvbnN0IHsgZHVyYXRpb24sIGV2ZW50cywgYXR0cmlidXRlcywgeCwgaWQsIGNvbG9yLCB4U2NhbGUsIHlTY2FsZSwgZXhjbHVkZUZyb21Eb21haW5DYWxjdWxhdGlvbiwgdHlwZSwgbGVuZ3RoLCBjdXJzb3IsIGxpbmVSb3csIGxpbmVEdXJhdGlvbiwgbGluZVdpZHRoLCBsaW5lQ2FwLCBsaW5lU3RhcnRJY29uLCBsaW5lU3RhcnRJY29uQ29sb3IsIGxpbmVTdGFydEljb25TaXplLCBsaW5lU3RhcnRJY29uQXJyYW5nZW1lbnQsIGxpbmVFbmRJY29uLCBsaW5lRW5kSWNvbkNvbG9yLCBsaW5lRW5kSWNvblNpemUsIGxpbmVFbmRJY29uQXJyYW5nZW1lbnQsIGxpbmVDdXJzb3IsIHNob3dFbXB0eVNlZ21lbnRzLCBzaG93RW1wdHlTZWdtZW50c0NvcnJlY3RQb3NpdGlvbiwgcm93SGVpZ2h0LCBhbHRlcm5hdGluZ1Jvd0NvbG9ycywgc2hvd0xhYmVscywgbGFiZWxXaWR0aCwgbWF4TGFiZWxXaWR0aCwgc2hvd1Jvd0xhYmVscywgcm93TGFiZWxTdHlsZSwgcm93TGFiZWxGb3JtYXR0ZXIsIHJvd0ljb24sIHJvd0xhYmVsV2lkdGgsIHJvd01heExhYmVsV2lkdGgsIHJvd0xhYmVsVGV4dEFsaWduLCBhcnJvd3MsIGFuaW1hdGlvbkxpbmVFbnRlclBvc2l0aW9uLCBhbmltYXRpb25MaW5lRXhpdFBvc2l0aW9uLCBvblNjcm9sbCB9ID0gdGhpc1xuICAgIGNvbnN0IGNvbmZpZyA9IHsgZHVyYXRpb24sIGV2ZW50cywgYXR0cmlidXRlcywgeCwgaWQsIGNvbG9yLCB4U2NhbGUsIHlTY2FsZSwgZXhjbHVkZUZyb21Eb21haW5DYWxjdWxhdGlvbiwgdHlwZSwgbGVuZ3RoLCBjdXJzb3IsIGxpbmVSb3csIGxpbmVEdXJhdGlvbiwgbGluZVdpZHRoLCBsaW5lQ2FwLCBsaW5lU3RhcnRJY29uLCBsaW5lU3RhcnRJY29uQ29sb3IsIGxpbmVTdGFydEljb25TaXplLCBsaW5lU3RhcnRJY29uQXJyYW5nZW1lbnQsIGxpbmVFbmRJY29uLCBsaW5lRW5kSWNvbkNvbG9yLCBsaW5lRW5kSWNvblNpemUsIGxpbmVFbmRJY29uQXJyYW5nZW1lbnQsIGxpbmVDdXJzb3IsIHNob3dFbXB0eVNlZ21lbnRzLCBzaG93RW1wdHlTZWdtZW50c0NvcnJlY3RQb3NpdGlvbiwgcm93SGVpZ2h0LCBhbHRlcm5hdGluZ1Jvd0NvbG9ycywgc2hvd0xhYmVscywgbGFiZWxXaWR0aCwgbWF4TGFiZWxXaWR0aCwgc2hvd1Jvd0xhYmVscywgcm93TGFiZWxTdHlsZSwgcm93TGFiZWxGb3JtYXR0ZXIsIHJvd0ljb24sIHJvd0xhYmVsV2lkdGgsIHJvd01heExhYmVsV2lkdGgsIHJvd0xhYmVsVGV4dEFsaWduLCBhcnJvd3MsIGFuaW1hdGlvbkxpbmVFbnRlclBvc2l0aW9uLCBhbmltYXRpb25MaW5lRXhpdFBvc2l0aW9uLCBvblNjcm9sbCB9XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGNvbmZpZykgYXMgKGtleW9mIFRpbWVsaW5lQ29uZmlnSW50ZXJmYWNlPERhdHVtPilbXVxuICAgIGtleXMuZm9yRWFjaChrZXkgPT4geyBpZiAoY29uZmlnW2tleV0gPT09IHVuZGVmaW5lZCkgZGVsZXRlIGNvbmZpZ1trZXldIH0pXG5cbiAgICByZXR1cm4gY29uZmlnXG4gIH1cbn1cbiJdfQ==
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdGltZWxpbmUvdGltZWxpbmUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFpQixLQUFLLEVBQWlCLE1BQU0sZUFBZSxDQUFBO0FBQzlFLE9BQU8sRUFDTCxRQUFRLEdBaUJULE1BQU0sWUFBWSxDQUFBO0FBQ25CLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUE7O0FBUTNDLE1BQU0sT0FBTyxvQkFBb0I7SUFzTS9CLGVBQWU7O1FBQ2IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLFFBQVEsQ0FBUSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQTtRQUV0RCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDakMsTUFBQSxJQUFJLENBQUMsa0JBQWtCLDBDQUFFLE1BQU0sRUFBRSxDQUFBO1NBQ2xDO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBRSxPQUFzQjs7UUFDakMsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFO1lBQUUsTUFBQSxJQUFJLENBQUMsU0FBUywwQ0FBRSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1NBQUU7UUFDeEQsTUFBQSxJQUFJLENBQUMsU0FBUywwQ0FBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUE7UUFDM0MsTUFBQSxJQUFJLENBQUMsa0JBQWtCLDBDQUFFLE1BQU0sRUFBRSxDQUFBO0lBQ25DLENBQUM7SUFFTyxTQUFTO1FBQ2YsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUs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UztzQkFBakIsS0FBSztnQkFHRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSztnQkFHRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBR0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUtHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUdHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFHRyxlQUFlO3NCQUF2QixLQUFLO2dCQUtHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUtHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFJRyxnQ0FBZ0M7c0JBQXhDLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFHRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSztnQkFHRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBR0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUdHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFHRyxjQUFjO3NCQUF0QixLQUFLO2dCQUdHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFHRyxNQUFNO3NCQUFkLEtBQUs7Z0JBR0csMEJBQTBCO3NCQUFsQyxLQUFLO2dCQUdHLHlCQUF5QjtzQkFBakMsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vICEhISBUaGlzIGNvZGUgd2FzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkLiBZb3Ugc2hvdWxkIG5vdCBjaGFuZ2UgaXQgISEhXG5pbXBvcnQgeyBDb21wb25lbnQsIEFmdGVyVmlld0luaXQsIElucHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIFRpbWVsaW5lLFxuICBUaW1lbGluZUNvbmZpZ0ludGVyZmFjZSxcbiAgQ29udGFpbmVyQ29yZSxcbiAgVmlzRXZlbnRUeXBlLFxuICBWaXNFdmVudENhbGxiYWNrLFxuICBOdW1lcmljQWNjZXNzb3IsXG4gIENvbG9yQWNjZXNzb3IsXG4gIENvbnRpbnVvdXNTY2FsZSxcbiAgU3RyaW5nQWNjZXNzb3IsXG4gIEdlbmVyaWNBY2Nlc3NvcixcbiAgQXJyYW5nZW1lbnQsXG4gIFRpbWVsaW5lUm93TGFiZWwsXG4gIFRpbWVsaW5lUm93SWNvbixcbiAgVGV4dEFsaWduLFxuICBUcmltTW9kZSxcbiAgVGltZWxpbmVBcnJvdyxcbiAgVGltZWxpbmVMaW5lUmVuZGVyU3RhdGUsXG59IGZyb20gJ0B1bm92aXMvdHMnXG5pbXBvcnQgeyBWaXNYWUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Zpcy10aW1lbGluZScsXG4gIHRlbXBsYXRlOiAnJyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogVmlzWFlDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBWaXNUaW1lbGluZUNvbXBvbmVudCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgVmlzVGltZWxpbmVDb21wb25lbnQ8RGF0dW0+IGltcGxlbWVudHMgVGltZWxpbmVDb25maWdJbnRlcmZhY2U8RGF0dW0+LCBBZnRlclZpZXdJbml0IHtcbiAgLyoqIEFuaW1hdGlvbiBkdXJhdGlvbiBvZiB0aGUgZGF0YSB1cGRhdGUgdHJhbnNpdGlvbnMgaW4gbWlsbGlzZWNvbmRzLiBEZWZhdWx0OiBgNjAwYCAqL1xuICBASW5wdXQoKSBkdXJhdGlvbj86IG51bWJlclxuXG4gIC8qKiBFdmVudHMgY29uZmlndXJhdGlvbi4gQW4gb2JqZWN0IGNvbnRhaW5pbmcgcHJvcGVydGllcyBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDpcbiAgICpcbiAgICogYGBgXG4gICAqIHtcbiAgICogXFxbc2VsZWN0b3JTdHJpbmddOiB7XG4gICAqICAgICBcXFtldmVudFR5cGVdOiBjYWxsYmFja0Z1bmN0aW9uXG4gICAqICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqIGUuZy46XG4gICAqIGBgYFxuICAgKiB7XG4gICAqIFxcW0FyZWEuc2VsZWN0b3JzLmFyZWFdOiB7XG4gICAqICAgIGNsaWNrOiAoZCkgPT4gY29uc29sZS5sb2coXCJDbGlja2VkIEFyZWFcIiwgZClcbiAgICogIH1cbiAgICogfVxuICAgKiBgYGAgKi9cbiAgQElucHV0KCkgZXZlbnRzPzoge1xuICAgIFtzZWxlY3Rvcjogc3RyaW5nXToge1xuICAgICAgW2V2ZW50VHlwZSBpbiBWaXNFdmVudFR5cGVdPzogVmlzRXZlbnRDYWxsYmFja1xuICAgIH07XG4gIH1cblxuICAvKiogWW91IGNhbiBzZXQgZXZlcnkgU1ZHIGFuZCBIVE1MIHZpc3VhbGl6YXRpb24gb2JqZWN0IHRvIGhhdmUgYSBjdXN0b20gRE9NIGF0dHJpYnV0ZXMsIHdoaWNoIGlzIHVzZWZ1bFxuICAgKiB3aGVuIHlvdSB3YW50IHRvIGRvIHVuaXQgb3IgZW5kLXRvLWVuZCB0ZXN0aW5nLiBBdHRyaWJ1dGVzIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGhhcyB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTpcbiAgICpcbiAgICogYGBgXG4gICAqIHtcbiAgICogXFxbc2VsZWN0b3JTdHJpbmddOiB7XG4gICAqICAgICBcXFthdHRyaWJ1dGVOYW1lXTogYXR0cmlidXRlIGNvbnN0YW50IHZhbHVlIG9yIGFjY2Vzc29yIGZ1bmN0aW9uXG4gICAqICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqIGUuZy46XG4gICAqIGBgYFxuICAgKiB7XG4gICAqIFxcW0FyZWEuc2VsZWN0b3JzLmFyZWFdOiB7XG4gICAqICAgIFwidGVzdC12YWx1ZVwiOiBkID0+IGQudmFsdWVcbiAgICogIH1cbiAgICogfVxuICAgKiBgYGAgKi9cbiAgQElucHV0KCkgYXR0cmlidXRlcz86IHtcbiAgICBbc2VsZWN0b3I6IHN0cmluZ106IHtcbiAgICAgIFthdHRyOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgKChkYXR1bTogYW55KSA9PiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqIEFjY2Vzc29yIGZ1bmN0aW9uIGZvciBnZXR0aW5nIHRoZSB2YWx1ZXMgYWxvbmcgdGhlIFggYXhpcy4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgeDogTnVtZXJpY0FjY2Vzc29yPERhdHVtPlxuXG4gIC8qKiBBY2Nlc3NvciBmdW5jdGlvbiBmb3IgZ2V0dGluZyB0aGUgdW5pcXVlIGRhdGEgcmVjb3JkIGlkLiBVc2VkIGZvciBtb3JlIHBlcnNpc3RlbnQgZGF0YSB1cGRhdGVzLiBEZWZhdWx0OiBgKGQsIGkpID0+IGQuaWQgPz8gaWAgKi9cbiAgQElucHV0KCkgaWQ/OiAoKGQ6IERhdHVtLCBpOiBudW1iZXIsIC4uLnJlc3QpID0+IHN0cmluZylcblxuICAvKiogVGltZWxpbmUgaXRlbSBjb2xvciBhY2Nlc3NvciBmdW5jdGlvbi4gRGVmYXVsdDogYGQgPT4gZC5jb2xvcmAgKi9cbiAgQElucHV0KCkgY29sb3I/OiBDb2xvckFjY2Vzc29yPERhdHVtPlxuXG4gIC8qKiBTY2FsZSBmb3IgWCBkaW1lbnNpb24sIGUuZy4gU2NhbGUuc2NhbGVMaW5lYXIoKS4gSWYgeW91IHNldCB4U2NhbGUgeW91J2xsIGJlIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIGl0J3MgYGRvbWFpbmAgYW5kIGByYW5nZWAgYXMgd2VsbC5cbiAgICogT25seSBjb250aW51b3VzIHNjYWxlcyBhcmUgc3VwcG9ydGVkLlxuICAgKiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSB4U2NhbGU/OiBDb250aW51b3VzU2NhbGVcblxuICAvKiogU2NhbGUgZm9yIFkgZGltZW5zaW9uLCBlLmcuIFNjYWxlLnNjYWxlTGluZWFyKCkuIElmIHlvdSBzZXQgeVNjYWxlIHlvdSdsbCBiZSByZXNwb25zaWJsZSBmb3Igc2V0dGluZyBpdCdzIGBkb21haW5gIGFuZCBgcmFuZ2VgIGFzIHdlbGwuXG4gICAqIE9ubHkgY29udGludW91cyBzY2FsZXMgYXJlIHN1cHBvcnRlZC5cbiAgICogRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgeVNjYWxlPzogQ29udGludW91c1NjYWxlXG5cbiAgLyoqIElkZW50aWZpZXMgd2hldGhlciB0aGUgY29tcG9uZW50IHNob3VsZCBiZSBleGNsdWRlZCBmcm9tIG92ZXJhbGwgWCBhbmQgWSBkb21haW4gY2FsY3VsYXRpb25zIG9yIG5vdC5cbiAgICogVGhpcyBwcm9wZXJ0eSBjYW4gYmUgdXNlZnVsIHdoZW4geW91IHdhbnQgcGFzcyBpbmRpdmlkdWFsIGRhdGEgdG8gYSBjb21wb25lbnQgYW5kIHlvdSBkb24ndCB3YW50IGl0IHRvIGFmZmVjdFxuICAgKiB0aGUgc2NhbGVzIG9mIHRoZSBjaGFydC5cbiAgICogRGVmYXVsdDogYGZhbHNlYCAqL1xuICBASW5wdXQoKSBleGNsdWRlRnJvbURvbWFpbkNhbGN1bGF0aW9uPzogYm9vbGVhblxuXG4gIC8qKiAgKi9cbiAgQElucHV0KCkgdHlwZT86IFN0cmluZ0FjY2Vzc29yPERhdHVtPlxuXG4gIC8qKiAgKi9cbiAgQElucHV0KCkgbGVuZ3RoPzogTnVtZXJpY0FjY2Vzc29yPERhdHVtPlxuXG4gIC8qKiAgKi9cbiAgQElucHV0KCkgY3Vyc29yPzogU3RyaW5nQWNjZXNzb3I8RGF0dW0+XG5cbiAgLyoqIFRpbWVsaW5lIGl0ZW0gcm93IGFjY2Vzc29yIGZ1bmN0aW9uLiBSZWNvcmRzIHdpdGggdGhlIGBsaW5lUm93YCB3aWxsIGJlIHBsb3R0ZWQgaW4gb25lIHJvdy4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgbGluZVJvdz86IFN0cmluZ0FjY2Vzc29yPERhdHVtPlxuXG4gIC8qKiBUaW1lbGluZSBpdGVtIGR1cmF0aW9uIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgdW5kZWZpbmVkYC4gRmFsbHMgYmFjayB0byB0aGUgZGVwcmVjYXRlZCBgbGVuZ3RoYCBwcm9wZXJ0eSAqL1xuICBASW5wdXQoKSBsaW5lRHVyYXRpb24/OiBOdW1lcmljQWNjZXNzb3I8RGF0dW0+XG5cbiAgLyoqIFdpZHRoIG9mIHRoZSB0aW1lbGluZSBpdGVtcy4gRGVmYXVsdDogYDhgICovXG4gIEBJbnB1dCgpIGxpbmVXaWR0aD86IE51bWVyaWNBY2Nlc3NvcjxEYXR1bT5cblxuICAvKiogRGlzcGxheSByb3VuZGVkIGVuZHMgZm9yIHRpbWVsaW5lIGl0ZW1zLiBEZWZhdWx0OiBgdHJ1ZWAgKi9cbiAgQElucHV0KCkgbGluZUNhcD86IGJvb2xlYW5cblxuICAvKiogUHJvdmlkZSBhIGhyZWYgdG8gYW4gU1ZHIGRlZmluZWQgaW4gY29udGFpbmVyJ3MgYHN2Z0RlZnNgIHRvIGRpc3BsYXkgYW4gaWNvbiBhdCB0aGUgc3RhcnQgb2YgdGhlIGxpbmUuIERlZmF1bHQ6IHVuZGVmaW5lZCAqL1xuICBASW5wdXQoKSBsaW5lU3RhcnRJY29uPzogU3RyaW5nQWNjZXNzb3I8RGF0dW0+XG5cbiAgLyoqIExpbmUgc3RhcnQgaWNvbiBjb2xvciBhY2Nlc3NvciBmdW5jdGlvbi4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgbGluZVN0YXJ0SWNvbkNvbG9yPzogU3RyaW5nQWNjZXNzb3I8RGF0dW0+XG5cbiAgLyoqIExpbmUgc3RhcnQgaWNvbiBzaXplIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBsaW5lU3RhcnRJY29uU2l6ZT86IE51bWVyaWNBY2Nlc3NvcjxEYXR1bT5cblxuICAvKiogTGluZSBzdGFydCBpY29uIGFycmFuZ2VtZW50IGNvbmZpZ3VyYXRpb24uIENvbnRyb2xzIGhvdyB0aGUgaWNvbiBpcyBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIHRoZSBsaW5lLlxuICAgKiBBY2NlcHRzIHZhbHVlcyBmcm9tIHRoZSBBcnJhbmdlbWVudCBlbnVtOiBgQXJyYW5nZW1lbnQuU3RhcnRgLCBgQXJyYW5nZW1lbnQuTWlkZGxlYCwgYEFycmFuZ2VtZW50LkVuZGAgb3IgYSBzdHJpbmcgZXF1aXZhbGVudC5cbiAgICogRGVmYXVsdDogYEFycmFuZ2VtZW50Lkluc2lkZWAgKi9cbiAgQElucHV0KCkgbGluZVN0YXJ0SWNvbkFycmFuZ2VtZW50PzogR2VuZXJpY0FjY2Vzc29yPEFycmFuZ2VtZW50IHwgYCR7QXJyYW5nZW1lbnR9YCwgRGF0dW0+XG5cbiAgLyoqIFByb3ZpZGUgYSBocmVmIHRvIGFuIFNWRyBkZWZpbmVkIGluIGNvbnRhaW5lcidzIGBzdmdEZWZzYCB0byBkaXNwbGF5IGFuIGljb24gYXQgdGhlIGVuZCBvZiB0aGUgbGluZS4gRGVmYXVsdDogdW5kZWZpbmVkICovXG4gIEBJbnB1dCgpIGxpbmVFbmRJY29uPzogU3RyaW5nQWNjZXNzb3I8RGF0dW0+XG5cbiAgLyoqIExpbmUgZW5kIGljb24gY29sb3IgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIGxpbmVFbmRJY29uQ29sb3I/OiBTdHJpbmdBY2Nlc3NvcjxEYXR1bT5cblxuICAvKiogTGluZSBlbmQgaWNvbiBzaXplIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBsaW5lRW5kSWNvblNpemU/OiBOdW1lcmljQWNjZXNzb3I8RGF0dW0+XG5cbiAgLyoqIExpbmUgZW5kIGljb24gYXJyYW5nZW1lbnQgY29uZmlndXJhdGlvbi4gQ29udHJvbHMgaG93IHRoZSBpY29uIGlzIHBvc2l0aW9uZWQgcmVsYXRpdmUgdG8gdGhlIGxpbmUuXG4gICAqIEFjY2VwdHMgdmFsdWVzIGZyb20gdGhlIEFycmFuZ2VtZW50IGVudW06IGBBcnJhbmdlbWVudC5TdGFydGAsIGBBcnJhbmdlbWVudC5NaWRkbGVgLCBgQXJyYW5nZW1lbnQuRW5kYCBvciBhIHN0cmluZyBlcXVpdmFsZW50LlxuICAgKiBEZWZhdWx0OiBgQXJyYW5nZW1lbnQuSW5zaWRlYCAqL1xuICBASW5wdXQoKSBsaW5lRW5kSWNvbkFycmFuZ2VtZW50PzogR2VuZXJpY0FjY2Vzc29yPEFycmFuZ2VtZW50IHwgYCR7QXJyYW5nZW1lbnR9YCwgRGF0dW0+XG5cbiAgLyoqIENvbmZpZ3VyYWJsZSBUaW1lbGluZSBpdGVtIGN1cnNvciB3aGVuIGhvdmVyaW5nIG92ZXIuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIGxpbmVDdXJzb3I/OiBTdHJpbmdBY2Nlc3NvcjxEYXR1bT5cblxuICAvKiogU2V0cyB0aGUgbWluaW11bSBsaW5lIGxlbmd0aCB0byAxIHBpeGVsIGZvciBiZXR0ZXIgdmlzaWJpbGl0eSBvZiBzbWFsbCB2YWx1ZXMuXG4gICAqIFdoZW4gYGxpbmVDYXBgIGlzIHNldCB0byBgdHJ1ZWAsIHRoZSBzZWdtZW50IHdpbGwgYmUgcmVuZGVyZWQgYXMgYSBjaXJjbGUuXG4gICAqIERlZmF1bHQ6IGBmYWxzZWAgKi9cbiAgQElucHV0KCkgc2hvd0VtcHR5U2VnbWVudHM/OiBib29sZWFuXG5cbiAgLyoqIENlbnRlciBzbWFsbCBzZWdtZW50cyB3aGVuIGBzaG93RW1wdHlTZWdtZW50c2AgYW5kIGBsaW5lQ2FwYCBhcmUgc2V0IHRvIGB0cnVlYC5cbiAgICogRGVmYXVsdDogYHRydWVgICovXG4gIEBJbnB1dCgpIHNob3dFbXB0eVNlZ21lbnRzQ29ycmVjdFBvc2l0aW9uPzogYm9vbGVhblxuXG4gIC8qKiBUaW1lbGluZSByb3cgaGVpZ2h0LiBEZWZhdWx0OiBgMjJgICovXG4gIEBJbnB1dCgpIHJvd0hlaWdodD86IG51bWJlclxuXG4gIC8qKiBBbHRlcm5hdGluZyByb3cgY29sb3JzLiBEZWZhdWx0OiBgdHJ1ZWAgKi9cbiAgQElucHV0KCkgYWx0ZXJuYXRpbmdSb3dDb2xvcnM/OiBib29sZWFuXG5cbiAgLyoqICAqL1xuICBASW5wdXQoKSBzaG93TGFiZWxzPzogYm9vbGVhblxuXG4gIC8qKiAgKi9cbiAgQElucHV0KCkgbGFiZWxXaWR0aD86IG51bWJlclxuXG4gIC8qKiAgKi9cbiAgQElucHV0KCkgbWF4TGFiZWxXaWR0aD86IG51bWJlclxuXG4gIC8qKiBTaG93IHJvdyBsYWJlbHMgd2hlbiBzZXQgdG8gYHRydWVgLiBEZWZhdWx0OiBgZmFsc2VgLiBGYWxscyBiYWNrIHRvIGRlcHJlY2F0ZWQgYHNob3dMYWJlbHNgICovXG4gIEBJbnB1dCgpIHNob3dSb3dMYWJlbHM/OiBib29sZWFuXG5cbiAgLyoqIFJvdyBsYWJlbCBzdHlsZSBhcyBhbiBvYmplY3Qgd2l0aCB0aGUgYHsgW3Byb3BlcnR5LW5hbWVdOiB2YWx1ZSB9YCBmb3JtYXQuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHJvd0xhYmVsU3R5bGU/OiBHZW5lcmljQWNjZXNzb3I8UmVjb3JkPHN0cmluZywgc3RyaW5nPiwgVGltZWxpbmVSb3dMYWJlbDxEYXR1bT4+XG5cbiAgLyoqIFJvdyBsYWJlbCBmb3JtYXR0ZXIgZnVuY3Rpb24uIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHJvd0xhYmVsRm9ybWF0dGVyPzogKGtleTogc3RyaW5nLCBpdGVtczogRGF0dW1bXSwgaTogbnVtYmVyKSA9PiBzdHJpbmdcblxuICAvKiogUHJvdmlkZSBhbiBpY29uIGhyZWYgdG8gYmUgZGlzcGxheWVkIGJlZm9yZSB0aGUgcm93IGxhYmVsLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSByb3dJY29uPzogKGtleTogc3RyaW5nLCBpdGVtczogRGF0dW1bXSwgaTogbnVtYmVyKSA9PiBUaW1lbGluZVJvd0ljb24gfCB1bmRlZmluZWRcblxuICAvKiogRml4ZWQgbGFiZWwgd2lkdGggaW4gcGl4ZWxzLiBMYWJlbHMgbG9uZ2VyIHRoYW4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aWxsIGJlIHRyaW1tZWQuIERlZmF1bHQ6IGB1bmRlZmluZWRgLiBGYWxscyBiYWNrIHRvIGRlcHJlY2F0ZWQgYGxhYmVsV2lkdGhgLiAqL1xuICBASW5wdXQoKSByb3dMYWJlbFdpZHRoPzogbnVtYmVyXG5cbiAgLyoqIE1heGltdW0gbGFiZWwgd2lkdGggaW4gcGl4ZWxzLiBMYWJlbHMgbG9uZ2VyIHRoYW4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aWxsIGJlIHRyaW1tZWQuIERlZmF1bHQ6IGB1bmRlZmluZWRgLiBGYWxscyBiYWNrIHRvIGRlcHJlY2F0ZWQgYG1heExhYmVsV2lkdGhgLiAqL1xuICBASW5wdXQoKSByb3dNYXhMYWJlbFdpZHRoPzogbnVtYmVyXG5cbiAgLyoqIFRleHQgYWxpZ25tZW50IGZvciBsYWJlbHM6IGBUZXh0QWxpZ24uTGVmdGAsIGBUZXh0QWxpZ24uQ2VudGVyYCBvciBgVGV4dEFsaWduLlJpZ2h0YC4gRGVmYXVsdDogYFRleHRBbGlnbi5SaWdodGAgKi9cbiAgQElucHV0KCkgcm93TGFiZWxUZXh0QWxpZ24/OiBUZXh0QWxpZ24gfCBgJHtUZXh0QWxpZ259YFxuXG4gIC8qKiBSb3cgbGFiZWwgdHJpbSBtb2RlIHdoZW4gd2lkdGggaXMgbGltaXRlZDogYFRyaW1Nb2RlLlN0YXJ0YCwgYFRyaW1Nb2RlLk1pZGRsZWAgb3IgYFRyaW1Nb2RlLkVuZGAuIERlZmF1bHQ6IGBUcmltTW9kZS5NaWRkbGVgICovXG4gIEBJbnB1dCgpIHJvd0xhYmVsVHJpbU1vZGU/OiBUcmltTW9kZSB8IGAke1RyaW1Nb2RlfWBcblxuICAvKiogUm93IGxhYmVsIG1hcmdpbiBpbiBwaXhlbHMuIENhbiBiZSBhIHNpbmdsZSBudW1iZXIgb3IgYSBgW2xlZnQsIHJpZ2h0XWAgdHVwbGUuIERlZmF1bHQ6IGBbMCwgNV1gICovXG4gIEBJbnB1dCgpIHJvd0xhYmVsTWFyZ2luPzogbnVtYmVyIHwgW251bWJlciwgbnVtYmVyXVxuXG4gIC8qKiBXaGVuIGNvbXBvbmVudCBoZWlnaHQgaXMgbGFyZ2VyIHRoYW4gdGhlIGhlaWdodCBvZiBhbGwgcm93cywgcmVuZGVyIHJvd3MgdG8gZmlsbCBlbXB0eSBzcGFjZSAqL1xuICBASW5wdXQoKSByb3dGaWxsRW1wdHlTcGFjZT86IGJvb2xlYW5cblxuXG4gIEBJbnB1dCgpIGFycm93cz86IFRpbWVsaW5lQXJyb3dbXVxuXG4gIC8qKiBDb250cm9sIHRoZSBhbmltYXRpb24gYnkgc3BlY2lmeSB0aGUgaW5pdGlhbCBwb3NpdGlvbiBmb3IgbmV3IGxpbmVzIGFzIFt4LCB5XS4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgYW5pbWF0aW9uTGluZUVudGVyUG9zaXRpb24/OiBbbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbCwgbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbF0gfCAoKGQ6IERhdHVtICYgVGltZWxpbmVMaW5lUmVuZGVyU3RhdGUsIGk6IG51bWJlciwgZGF0YTogKERhdHVtICYgVGltZWxpbmVMaW5lUmVuZGVyU3RhdGUpW10pID0+IFtudW1iZXIgfCB1bmRlZmluZWQsIG51bWJlciB8IHVuZGVmaW5lZF0pIHwgdW5kZWZpbmVkXG5cbiAgLyoqIENvbnRyb2wgdGhlIGFuaW1hdGlvbiBieSBzcGVjaWZ5IHRoZSBkZXN0aW5hdGlvbiBwb3NpdGlvbiBmb3IgZXhpdGluZyBsaW5lcyBhcyBbeCwgeV0uIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIGFuaW1hdGlvbkxpbmVFeGl0UG9zaXRpb24/OiBbbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbCwgbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbF0gfCAoKGQ6IERhdHVtICYgVGltZWxpbmVMaW5lUmVuZGVyU3RhdGUsIGk6IG51bWJlciwgZGF0YTogKERhdHVtICYgVGltZWxpbmVMaW5lUmVuZGVyU3RhdGUpW10pID0+IFtudW1iZXIgfCB1bmRlZmluZWQsIG51bWJlciB8IHVuZGVmaW5lZF0pIHwgdW5kZWZpbmVkXG5cbiAgLyoqIFNjcm9sbGluZyBjYWxsYmFjayBmdW5jdGlvbjogYChzY3JvbGxUb3A6IG51bWJlcikgPT4gdm9pZGAuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIG9uU2Nyb2xsPzogKHNjcm9sbFRvcDogbnVtYmVyKSA9PiB2b2lkXG4gIEBJbnB1dCgpIGRhdGE6IERhdHVtW11cblxuICBjb21wb25lbnQ6IFRpbWVsaW5lPERhdHVtPiB8IHVuZGVmaW5lZFxuICBwdWJsaWMgY29tcG9uZW50Q29udGFpbmVyOiBDb250YWluZXJDb3JlIHwgdW5kZWZpbmVkXG5cbiAgbmdBZnRlclZpZXdJbml0ICgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBvbmVudCA9IG5ldyBUaW1lbGluZTxEYXR1bT4odGhpcy5nZXRDb25maWcoKSlcblxuICAgIGlmICh0aGlzLmRhdGEpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50LnNldERhdGEodGhpcy5kYXRhKVxuICAgICAgdGhpcy5jb21wb25lbnRDb250YWluZXI/LnJlbmRlcigpXG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMgKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5kYXRhKSB7IHRoaXMuY29tcG9uZW50Py5zZXREYXRhKHRoaXMuZGF0YSkgfVxuICAgIHRoaXMuY29tcG9uZW50Py5zZXRDb25maWcodGhpcy5nZXRDb25maWcoKSlcbiAgICB0aGlzLmNvbXBvbmVudENvbnRhaW5lcj8ucmVuZGVyKClcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29uZmlnICgpOiBUaW1lbGluZUNvbmZpZ0ludGVyZmFjZTxEYXR1bT4ge1xuICAgIGNvbnN0IHsgZHVyYXRpb24sIGV2ZW50cywgYXR0cmlidXRlcywgeCwgaWQsIGNvbG9yLCB4U2NhbGUsIHlTY2FsZSwgZXhjbHVkZUZyb21Eb21haW5DYWxjdWxhdGlvbiwgdHlwZSwgbGVuZ3RoLCBjdXJzb3IsIGxpbmVSb3csIGxpbmVEdXJhdGlvbiwgbGluZVdpZHRoLCBsaW5lQ2FwLCBsaW5lU3RhcnRJY29uLCBsaW5lU3RhcnRJY29uQ29sb3IsIGxpbmVTdGFydEljb25TaXplLCBsaW5lU3RhcnRJY29uQXJyYW5nZW1lbnQsIGxpbmVFbmRJY29uLCBsaW5lRW5kSWNvbkNvbG9yLCBsaW5lRW5kSWNvblNpemUsIGxpbmVFbmRJY29uQXJyYW5nZW1lbnQsIGxpbmVDdXJzb3IsIHNob3dFbXB0eVNlZ21lbnRzLCBzaG93RW1wdHlTZWdtZW50c0NvcnJlY3RQb3NpdGlvbiwgcm93SGVpZ2h0LCBhbHRlcm5hdGluZ1Jvd0NvbG9ycywgc2hvd0xhYmVscywgbGFiZWxXaWR0aCwgbWF4TGFiZWxXaWR0aCwgc2hvd1Jvd0xhYmVscywgcm93TGFiZWxTdHlsZSwgcm93TGFiZWxGb3JtYXR0ZXIsIHJvd0ljb24sIHJvd0xhYmVsV2lkdGgsIHJvd01heExhYmVsV2lkdGgsIHJvd0xhYmVsVGV4dEFsaWduLCByb3dMYWJlbFRyaW1Nb2RlLCByb3dMYWJlbE1hcmdpbiwgcm93RmlsbEVtcHR5U3BhY2UsIGFycm93cywgYW5pbWF0aW9uTGluZUVudGVyUG9zaXRpb24sIGFuaW1hdGlvbkxpbmVFeGl0UG9zaXRpb24sIG9uU2Nyb2xsIH0gPSB0aGlzXG4gICAgY29uc3QgY29uZmlnID0geyBkdXJhdGlvbiwgZXZlbnRzLCBhdHRyaWJ1dGVzLCB4LCBpZCwgY29sb3IsIHhTY2FsZSwgeVNjYWxlLCBleGNsdWRlRnJvbURvbWFpbkNhbGN1bGF0aW9uLCB0eXBlLCBsZW5ndGgsIGN1cnNvciwgbGluZVJvdywgbGluZUR1cmF0aW9uLCBsaW5lV2lkdGgsIGxpbmVDYXAsIGxpbmVTdGFydEljb24sIGxpbmVTdGFydEljb25Db2xvciwgbGluZVN0YXJ0SWNvblNpemUsIGxpbmVTdGFydEljb25BcnJhbmdlbWVudCwgbGluZUVuZEljb24sIGxpbmVFbmRJY29uQ29sb3IsIGxpbmVFbmRJY29uU2l6ZSwgbGluZUVuZEljb25BcnJhbmdlbWVudCwgbGluZUN1cnNvciwgc2hvd0VtcHR5U2VnbWVudHMsIHNob3dFbXB0eVNlZ21lbnRzQ29ycmVjdFBvc2l0aW9uLCByb3dIZWlnaHQsIGFsdGVybmF0aW5nUm93Q29sb3JzLCBzaG93TGFiZWxzLCBsYWJlbFdpZHRoLCBtYXhMYWJlbFdpZHRoLCBzaG93Um93TGFiZWxzLCByb3dMYWJlbFN0eWxlLCByb3dMYWJlbEZvcm1hdHRlciwgcm93SWNvbiwgcm93TGFiZWxXaWR0aCwgcm93TWF4TGFiZWxXaWR0aCwgcm93TGFiZWxUZXh0QWxpZ24sIHJvd0xhYmVsVHJpbU1vZGUsIHJvd0xhYmVsTWFyZ2luLCByb3dGaWxsRW1wdHlTcGFjZSwgYXJyb3dzLCBhbmltYXRpb25MaW5lRW50ZXJQb3NpdGlvbiwgYW5pbWF0aW9uTGluZUV4aXRQb3NpdGlvbiwgb25TY3JvbGwgfVxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhjb25maWcpIGFzIChrZXlvZiBUaW1lbGluZUNvbmZpZ0ludGVyZmFjZTxEYXR1bT4pW11cbiAgICBrZXlzLmZvckVhY2goa2V5ID0+IHsgaWYgKGNvbmZpZ1trZXldID09PSB1bmRlZmluZWQpIGRlbGV0ZSBjb25maWdba2V5XSB9KVxuXG4gICAgcmV0dXJuIGNvbmZpZ1xuICB9XG59XG4iXX0=
|