@ethlete/cdk 4.47.0 → 4.48.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/esm2022/lib/components/bracket/components/new-bracket/bracket-new.mjs +170 -69
- package/esm2022/lib/components/bracket/components/new-bracket/draw-man.mjs +75 -32
- package/esm2022/lib/components/bracket/components/new-bracket/grid-placements.mjs +8 -3
- package/esm2022/lib/components/bracket/components/new-bracket/journey-highlight.mjs +18 -0
- package/esm2022/lib/components/bracket/components/new-bracket/new-bracket.component.mjs +47 -9
- package/esm2022/lib/components/bracket/stories/dummy-data/ET_DUMMY_DATA_DOUBLE_SYNC.mjs +1116 -0
- package/esm2022/lib/components/bracket/stories/dummy-data/ET_DUMMY_DATA_SINGLE.mjs +2691 -0
- package/esm2022/lib/components/bracket/stories/dummy-data/ET_DUMMY_DATA_SWISS.mjs +72479 -0
- package/esm2022/lib/components/bracket/stories/dummy-data/ET_DUMMY_DATE_DOUBLE_ASYNC.mjs +1275 -0
- package/esm2022/lib/components/bracket/stories/dummy-data/FIFA_DUMMY_DATA_DOUBLE.mjs +2453 -0
- package/esm2022/lib/components/bracket/stories/dummy-data/FIFA_DUMMY_DATA_SINGLE.mjs +2570 -0
- package/esm2022/lib/components/bracket/stories/dummy-data/index.mjs +7 -0
- package/fesm2022/ethlete-cdk.mjs +315 -109
- package/fesm2022/ethlete-cdk.mjs.map +1 -1
- package/lib/components/bracket/components/new-bracket/bracket-new.d.ts +1632 -18
- package/lib/components/bracket/components/new-bracket/draw-man.d.ts +5 -3
- package/lib/components/bracket/components/new-bracket/grid-placements.d.ts +4 -0
- package/lib/components/bracket/components/new-bracket/journey-highlight.d.ts +2 -0
- package/lib/components/bracket/components/new-bracket/new-bracket.component.d.ts +7 -2
- package/lib/components/bracket/stories/dummy-data/ET_DUMMY_DATA_DOUBLE_SYNC.d.ts +149 -0
- package/lib/components/bracket/stories/dummy-data/ET_DUMMY_DATA_SINGLE.d.ts +184 -0
- package/lib/components/bracket/stories/dummy-data/ET_DUMMY_DATA_SWISS.d.ts +214 -0
- package/lib/components/bracket/stories/dummy-data/ET_DUMMY_DATE_DOUBLE_ASYNC.d.ts +149 -0
- package/lib/components/bracket/stories/dummy-data/FIFA_DUMMY_DATA_DOUBLE.d.ts +1640 -0
- package/lib/components/bracket/stories/dummy-data/FIFA_DUMMY_DATA_SINGLE.d.ts +2388 -0
- package/lib/components/bracket/stories/dummy-data/index.d.ts +6 -0
- package/lib/components/query-error/directives/query-error/query-error.directive.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,27 +1,28 @@
|
|
|
1
1
|
import { BRACKET_ROUND_MIRROR_TYPE, DOUBLE_ELIMINATION_BRACKET_ROUND_TYPE, FIRST_ROUNDS_TYPE, } from './bracket-new';
|
|
2
|
-
const path = (d, options) => `<path d="${d}" stroke="currentColor" fill="none" stroke-width="${options.width}" stroke-dasharray="${options.dashArray}" stroke-dashoffset="${options.dashOffset}" />`;
|
|
2
|
+
const path = (d, options) => `<path d="${d.replace(/\s+/g, ' ').trim()}" stroke="currentColor" fill="none" stroke-width="${options.width}" stroke-dasharray="${options.dashArray}" stroke-dashoffset="${options.dashOffset}" class="${options.className}" />`;
|
|
3
3
|
const curve = (from, to, direction, options) => {
|
|
4
4
|
const fromInline = from.inline.end;
|
|
5
|
-
const fromBlock = from.block.center;
|
|
6
5
|
const toInline = to.inline.start;
|
|
7
6
|
const toBlock = to.block.center;
|
|
8
|
-
const
|
|
7
|
+
const fromBlock = from.block.center;
|
|
8
|
+
const startingCurveAmount = options.lineStartingCurveAmount;
|
|
9
|
+
const endingCurveAmount = options.lineEndingCurveAmount;
|
|
9
10
|
const totalSpace = toInline - fromInline;
|
|
10
|
-
const totalSpaceMinusCurve = totalSpace -
|
|
11
|
+
const totalSpaceMinusCurve = totalSpace - startingCurveAmount - endingCurveAmount;
|
|
11
12
|
const lineLength = totalSpaceMinusCurve / 2;
|
|
12
13
|
const straightLeftEnd = fromInline + lineLength;
|
|
13
14
|
const straightRightStart = toInline - lineLength;
|
|
14
15
|
// first 90 degree curve down
|
|
15
16
|
const firstCurveStartX = straightLeftEnd;
|
|
16
|
-
const firstCurveEndX = straightLeftEnd +
|
|
17
|
-
const firstCurveEndY = direction === 'down' ? fromBlock +
|
|
18
|
-
const firstCurveBezierX = straightLeftEnd +
|
|
17
|
+
const firstCurveEndX = straightLeftEnd + startingCurveAmount;
|
|
18
|
+
const firstCurveEndY = direction === 'down' ? fromBlock + startingCurveAmount : fromBlock - startingCurveAmount;
|
|
19
|
+
const firstCurveBezierX = straightLeftEnd + startingCurveAmount;
|
|
19
20
|
const firstCurveBezierY = fromBlock;
|
|
20
21
|
// second 90 degree curve to the right
|
|
21
|
-
const secondCurveStartY = direction === 'down' ? toBlock -
|
|
22
|
+
const secondCurveStartY = direction === 'down' ? toBlock - endingCurveAmount : toBlock + endingCurveAmount;
|
|
22
23
|
const secondCurveEndX = straightRightStart;
|
|
23
24
|
const secondCurveEndY = toBlock;
|
|
24
|
-
const secondCurveBezierX = straightRightStart -
|
|
25
|
+
const secondCurveBezierX = straightRightStart - endingCurveAmount;
|
|
25
26
|
const secondCurveBezierY = toBlock;
|
|
26
27
|
const pathStr = `
|
|
27
28
|
M ${fromInline} ${fromBlock}
|
|
@@ -30,7 +31,40 @@ const curve = (from, to, direction, options) => {
|
|
|
30
31
|
V ${secondCurveStartY}
|
|
31
32
|
Q ${secondCurveBezierX} ${secondCurveBezierY}, ${secondCurveEndX} ${secondCurveEndY}
|
|
32
33
|
H ${toInline}
|
|
33
|
-
|
|
34
|
+
`;
|
|
35
|
+
return path(pathStr, options.path);
|
|
36
|
+
};
|
|
37
|
+
const curveInverted = (from, to, direction, options) => {
|
|
38
|
+
const fromInline = from.inline.start;
|
|
39
|
+
const fromBlock = from.block.center;
|
|
40
|
+
const toInline = to.inline.end;
|
|
41
|
+
const toBlock = to.block.center;
|
|
42
|
+
const startingCurveAmount = options.lineStartingCurveAmount;
|
|
43
|
+
const endingCurveAmount = options.lineEndingCurveAmount;
|
|
44
|
+
const totalSpace = fromInline - toInline;
|
|
45
|
+
const totalSpaceMinusCurve = totalSpace - startingCurveAmount - endingCurveAmount;
|
|
46
|
+
const lineLength = totalSpaceMinusCurve / 2;
|
|
47
|
+
const straightRightEnd = fromInline - lineLength;
|
|
48
|
+
const straightLeftStart = toInline + lineLength;
|
|
49
|
+
const firstCurveStartX = straightRightEnd;
|
|
50
|
+
const firstCurveEndX = straightRightEnd - startingCurveAmount;
|
|
51
|
+
const firstCurveEndY = direction === 'down' ? fromBlock + startingCurveAmount : fromBlock - startingCurveAmount;
|
|
52
|
+
const firstCurveBezierX = straightRightEnd - startingCurveAmount;
|
|
53
|
+
const firstCurveBezierY = fromBlock;
|
|
54
|
+
// second 90 degree curve to the right
|
|
55
|
+
const secondCurveStartY = direction === 'down' ? toBlock - endingCurveAmount : toBlock + endingCurveAmount;
|
|
56
|
+
const secondCurveEndX = straightLeftStart;
|
|
57
|
+
const secondCurveEndY = toBlock;
|
|
58
|
+
const secondCurveBezierX = straightLeftStart + endingCurveAmount;
|
|
59
|
+
const secondCurveBezierY = toBlock;
|
|
60
|
+
const pathStr = `
|
|
61
|
+
M ${fromInline} ${fromBlock}
|
|
62
|
+
H ${firstCurveStartX}
|
|
63
|
+
Q ${firstCurveBezierX} ${firstCurveBezierY}, ${firstCurveEndX} ${firstCurveEndY}
|
|
64
|
+
V ${secondCurveStartY}
|
|
65
|
+
Q ${secondCurveBezierX} ${secondCurveBezierY}, ${secondCurveEndX} ${secondCurveEndY}
|
|
66
|
+
H ${toInline}
|
|
67
|
+
`;
|
|
34
68
|
return path(pathStr, options.path);
|
|
35
69
|
};
|
|
36
70
|
const line = (from, to, options) => {
|
|
@@ -108,10 +142,14 @@ export const drawMan = (items, firstRounds, dimensions) => {
|
|
|
108
142
|
matchHeight,
|
|
109
143
|
rowGap,
|
|
110
144
|
};
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
145
|
+
const currentMatchParticipantsShortIds = [
|
|
146
|
+
item.matchRelation.currentMatch.home?.shortId,
|
|
147
|
+
item.matchRelation.currentMatch.away?.shortId,
|
|
148
|
+
]
|
|
149
|
+
.filter((id) => !!id)
|
|
150
|
+
.join(' ');
|
|
151
|
+
const pathOptions = { ...dimensions.path, className: currentMatchParticipantsShortIds };
|
|
152
|
+
const currentMatchPosition = getMatchPosition(round, item.matchRelation.currentMatch.id, staticMeasurements);
|
|
115
153
|
// We only draw the left side of the match relation
|
|
116
154
|
switch (item.matchRelation.type) {
|
|
117
155
|
case 'nothing-to-one': {
|
|
@@ -119,31 +157,36 @@ export const drawMan = (items, firstRounds, dimensions) => {
|
|
|
119
157
|
}
|
|
120
158
|
case 'one-to-nothing':
|
|
121
159
|
case 'one-to-one': {
|
|
122
|
-
const
|
|
123
|
-
const current = getMatchPosition(round, item.matchRelation.currentMatch.id, staticMeasurements);
|
|
160
|
+
const previousMatchPosition = getMatchPosition(items.get(item.matchRelation.previousRound.id), item.matchRelation.previousMatch.id, staticMeasurements);
|
|
124
161
|
// draw a straight line
|
|
125
|
-
svgParts.push(line(
|
|
126
|
-
break;
|
|
127
|
-
}
|
|
128
|
-
case 'one-to-two': {
|
|
129
|
-
const nextUpper = getMatchPosition(items.get(item.matchRelation.nextUpperRound.id), item.matchRelation.nextUpperMatch.id, staticMeasurements);
|
|
130
|
-
const nextLower = getMatchPosition(items.get(item.matchRelation.nextLowerRound.id), item.matchRelation.nextLowerMatch.id, staticMeasurements);
|
|
131
|
-
const current = getMatchPosition(round, item.matchRelation.currentMatch.id, staticMeasurements);
|
|
132
|
-
// const curveOptions: CurveOptions = { ...dimensions.curve, path: dimensions.path };
|
|
133
|
-
// // draw two lines that merge into one in the middle
|
|
134
|
-
// svgParts.push(curve(nextUpper, current, 'down', curveOptions));
|
|
135
|
-
// svgParts.push(curve(nextLower, current, 'up', curveOptions));
|
|
162
|
+
svgParts.push(line(previousMatchPosition, currentMatchPosition, { path: pathOptions }));
|
|
136
163
|
break;
|
|
137
164
|
}
|
|
138
165
|
case 'two-to-nothing':
|
|
139
166
|
case 'two-to-one': {
|
|
140
167
|
const previousUpper = getMatchPosition(items.get(item.matchRelation.previousUpperRound.id), item.matchRelation.previousUpperMatch.id, staticMeasurements);
|
|
141
168
|
const previousLower = getMatchPosition(items.get(item.matchRelation.previousLowerRound.id), item.matchRelation.previousLowerMatch.id, staticMeasurements);
|
|
142
|
-
const
|
|
143
|
-
|
|
169
|
+
const curveOptions = {
|
|
170
|
+
...dimensions.curve,
|
|
171
|
+
path: { ...dimensions.path, className: '' },
|
|
172
|
+
};
|
|
173
|
+
const curveFn = item.roundRelation.currentRound.mirrorRoundType === BRACKET_ROUND_MIRROR_TYPE.RIGHT ? curveInverted : curve;
|
|
144
174
|
// draw two lines that merge into one in the middle
|
|
145
|
-
svgParts.push(
|
|
146
|
-
|
|
175
|
+
svgParts.push(curveFn(previousUpper, currentMatchPosition, 'down', {
|
|
176
|
+
...curveOptions,
|
|
177
|
+
path: { ...curveOptions.path, className: item.matchRelation.previousUpperMatch.winner?.shortId || '' },
|
|
178
|
+
}));
|
|
179
|
+
svgParts.push(curveFn(previousLower, currentMatchPosition, 'up', {
|
|
180
|
+
...curveOptions,
|
|
181
|
+
path: { ...curveOptions.path, className: item.matchRelation.previousLowerMatch.winner?.shortId || '' },
|
|
182
|
+
}));
|
|
183
|
+
if (item.matchRelation.currentRound.mirrorRoundType === BRACKET_ROUND_MIRROR_TYPE.RIGHT &&
|
|
184
|
+
item.matchRelation.type === 'two-to-one' &&
|
|
185
|
+
item.matchRelation.nextRound.mirrorRoundType === null) {
|
|
186
|
+
// draw a straight line for the special case of connecting the final match to the mirrored semi final match
|
|
187
|
+
const next = getMatchPosition(items.get(item.matchRelation.nextRound.id), item.matchRelation.nextMatch.id, staticMeasurements);
|
|
188
|
+
svgParts.push(line(next, currentMatchPosition, { path: pathOptions }));
|
|
189
|
+
}
|
|
147
190
|
break;
|
|
148
191
|
}
|
|
149
192
|
}
|
|
@@ -151,4 +194,4 @@ export const drawMan = (items, firstRounds, dimensions) => {
|
|
|
151
194
|
}
|
|
152
195
|
return svgParts.join('');
|
|
153
196
|
};
|
|
154
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhdy1tYW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvYnJhY2tldC9jb21wb25lbnRzL25ldy1icmFja2V0L2RyYXctbWFuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx5QkFBeUIsRUFHekIscUNBQXFDLEVBQ3JDLGlCQUFpQixHQUVsQixNQUFNLGVBQWUsQ0FBQztBQXFCdkIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFTLEVBQUUsT0FBb0IsRUFBRSxFQUFFLENBQy9DLFlBQVksQ0FBQyxxREFBcUQsT0FBTyxDQUFDLEtBQUssdUJBQXVCLE9BQU8sQ0FBQyxTQUFTLHdCQUF3QixPQUFPLENBQUMsVUFBVSxNQUFNLENBQUM7QUFPMUssTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFxQixFQUFFLEVBQW1CLEVBQUUsU0FBd0IsRUFBRSxPQUFxQixFQUFFLEVBQUU7SUFDNUcsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDbkMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFFcEMsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDakMsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFFaEMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUV4QyxNQUFNLFVBQVUsR0FBRyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQ3pDLE1BQU0sb0JBQW9CLEdBQUcsVUFBVSxHQUFHLFdBQVcsR0FBRyxDQUFDLENBQUM7SUFDMUQsTUFBTSxVQUFVLEdBQUcsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0lBRTVDLE1BQU0sZUFBZSxHQUFHLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFD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QUFDLEVBQ25ELElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsRUFBRSxFQUN4QyxrQkFBa0IsQ0FDbkIsQ0FBQztvQkFFRixNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FDcEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxFQUNuRCxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsRUFDeEMsa0JBQWtCLENBQ25CLENBQUM7b0JBRUYsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO29CQUNoRyxNQUFNLFlBQVksR0FBaUIsRUFBRSxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFFbEYsbURBQW1EO29CQUNuRCxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO29CQUNuRSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO29CQUNqRSxNQUFNO2dCQUNSLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQlJBQ0tFVF9ST1VORF9NSVJST1JfVFlQRSxcbiAgQnJhY2tldE1hdGNoSWQsXG4gIEJyYWNrZXRSb3VuZElkLFxuICBET1VCTEVfRUxJTUlOQVRJT05fQlJBQ0tFVF9ST1VORF9UWVBFLFxuICBGSVJTVF9ST1VORFNfVFlQRSxcbiAgRmlyc3RSb3VuZHMsXG59IGZyb20gJy4vYnJhY2tldC1uZXcnO1xuaW1wb3J0IHsgQnJhY2tldEdyaWREZWZpbml0aW9ucyB9IGZyb20gJy4vZ3JpZC1kZWZpbml0aW9ucyc7XG5pbXBvcnQgeyBCcmFja2V0R3JpZFJvdW5kSXRlbSB9IGZyb20gJy4vZ3JpZC1wbGFjZW1lbnRzJztcblxuZXhwb3J0IHR5cGUgRHJhd01hbkRpbWVuc2lvbnMgPSB7XG4gIGNvbHVtbldpZHRoOiBudW1iZXI7XG4gIG1hdGNoSGVpZ2h0OiBudW1iZXI7XG4gIHJvdW5kSGVhZGVySGVpZ2h0OiBudW1iZXI7XG4gIGNvbHVtbkdhcDogbnVtYmVyO1xuICByb3dHYXA6IG51bWJlcjtcbiAgZ3JpZERlZmluaXRpb25zOiBCcmFja2V0R3JpZERlZmluaXRpb25zO1xuICBwYXRoOiBQYXRoT3B0aW9ucztcbiAgY3VydmU6IE9taXQ8Q3VydmVPcHRpb25zLCAncGF0aCc+O1xufTtcblxudHlwZSBQYXRoT3B0aW9ucyA9IHtcbiAgd2lkdGg6IG51bWJlcjtcbiAgZGFzaEFycmF5OiBudW1iZXI7XG4gIGRhc2hPZmZzZXQ6IG51bWJlcjtcbn07XG5cbmNvbnN0IHBhdGggPSAoZDogc3RyaW5nLCBvcHRpb25zOiBQYXRoT3B0aW9ucykgPT5cbiAgYDxwYXRoIGQ9XCIke2R9XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgZmlsbD1cIm5vbmVcIiBzdHJva2Utd2lkdGg9XCIke29wdGlvbnMud2lkdGh9XCIgc3Ryb2tlLWRhc2hhcnJheT1cIiR7b3B0aW9ucy5kYXNoQXJyYXl9XCIgc3Ryb2tlLWRhc2hvZmZzZXQ9XCIke29wdGlvbnMuZGFzaE9mZnNldH1cIiAvPmA7XG5cbnR5cGUgQ3VydmVPcHRpb25zID0ge1xuICBjdXJ2ZUFtb3VudDogbnVtYmVyO1xuICBwYXRoOiBQYXRoT3B0aW9ucztcbn07XG5cbmNvbnN0IGN1cnZlID0gKGZyb206IEJyYWNrZXRQb3NpdGlvbiwgdG86IEJyYWNrZXRQb3NpdGlvbiwgZGlyZWN0aW9uOiAndXAnIHwgJ2Rvd24nLCBvcHRpb25zOiBDdXJ2ZU9wdGlvbnMpID0+IHtcbiAgY29uc3QgZnJvbUlubGluZSA9IGZyb20uaW5saW5lLmVuZDtcbiAgY29uc3QgZnJvbUJsb2NrID0gZnJvbS5ibG9jay5jZW50ZXI7XG5cbiAgY29uc3QgdG9JbmxpbmUgPSB0by5pbmxpbmUuc3RhcnQ7XG4gIGNvbnN0IHRvQmxvY2sgPSB0by5ibG9jay5jZW50ZXI7XG5cbiAgY29uc3QgY3VydmVBbW91bnQgPSBvcHRpb25zLmN1cnZlQW1vdW50O1xuXG4gIGNvbnN0IHRvdGFsU3BhY2UgPSB0b0lubGluZSAtIGZyb21JbmxpbmU7XG4gIGNvbnN0IHRvdGFsU3BhY2VNaW51c0N1cnZlID0gdG90YWxTcGFjZSAtIGN1cnZlQW1vdW50ICogMjtcbiAgY29uc3QgbGluZUxlbmd0aCA9IHRvdGFsU3BhY2VNaW51c0N1cnZlIC8gMjtcblxuICBjb25zdCBzdHJhaWdodExlZnRFbmQgPSBmcm9tSW5saW5lICsgbGluZUxlbmd0aDtcbiAgY29uc3Qgc3RyYWlnaHRSaWdodFN0YXJ0ID0gdG9JbmxpbmUgLSBsaW5lTGVuZ3RoO1xuXG4gIC8vIGZpcnN0IDkwIGRlZ3JlZSBjdXJ2ZSBkb3duXG4gIGNvbnN0IGZpcnN0Q3VydmVTdGFydFggPSBzdHJhaWdodExlZnRFbmQ7XG4gIGNvbnN0IGZpcnN0Q3VydmVFbmRYID0gc3RyYWlnaHRMZWZ0RW5kICsgY3VydmVBbW91bnQ7XG4gIGNvbnN0IGZpcnN0Q3VydmVFbmRZID0gZGlyZWN0aW9uID09PSAnZG93bicgPyBmcm9tQmxvY2sgKyBjdXJ2ZUFtb3VudCA6IGZyb21CbG9jayAtIGN1cnZlQW1vdW50O1xuXG4gIGNvbnN0IGZpcnN0Q3VydmVCZXppZXJYID0gc3RyYWlnaHRMZWZ0RW5kICsgY3VydmVBbW91bnQ7XG4gIGNvbnN0IGZpcnN0Q3VydmVCZXppZXJZID0gZnJvbUJsb2NrO1xuXG4gIC8vIHNlY29uZCA5MCBkZWdyZWUgY3VydmUgdG8gdGhlIHJpZ2h0XG4gIGNvbnN0IHNlY29uZEN1cnZlU3RhcnRZID0gZGlyZWN0aW9uID09PSAnZG93bicgPyB0b0Jsb2NrIC0gY3VydmVBbW91bnQgOiB0b0Jsb2NrICsgY3VydmVBbW91bnQ7XG4gIGNvbnN0IHNlY29uZEN1cnZlRW5kWCA9IHN0cmFpZ2h0UmlnaHRTdGFydDtcbiAgY29uc3Qgc2Vjb25kQ3VydmVFbmRZID0gdG9CbG9jaztcblxuICBjb25zdCBzZWNvbmRDdXJ2ZUJlemllclggPSBzdHJhaWdodFJpZ2h0U3RhcnQgLSBjdXJ2ZUFtb3VudDtcbiAgY29uc3Qgc2Vjb25kQ3VydmVCZXppZXJZID0gdG9CbG9jaztcblxuICBjb25zdCBwYXRoU3RyID0gYFxuICAgIE0gJHtmcm9tSW5saW5lfSAke2Zyb21CbG9ja30gXG4gICAgSCAke2ZpcnN0Q3VydmVTdGFydFh9IFxuICAgIFEgJHtmaXJzdEN1cnZlQmV6aWVyWH0gJHtmaXJzdEN1cnZlQmV6aWVyWX0sICR7Zmlyc3RDdXJ2ZUVuZFh9ICR7Zmlyc3RDdXJ2ZUVuZFl9IFxuICAgIFYgJHtzZWNvbmRDdXJ2ZVN0YXJ0WX0gXG4gICAgUSAke3NlY29uZEN1cnZlQmV6aWVyWH0gJHtzZWNvbmRDdXJ2ZUJlemllcll9LCAke3NlY29uZEN1cnZlRW5kWH0gJHtzZWNvbmRDdXJ2ZUVuZFl9IFxuICAgIEggJHt0b0lubGluZX1cbiAgYC5yZXBsYWNlKC9cXHMrL2csICcgJyk7XG5cbiAgcmV0dXJuIHBhdGgocGF0aFN0ciwgb3B0aW9ucy5wYXRoKTtcbn07XG5cbnR5cGUgTGluZU9wdGlvbnMgPSB7XG4gIHBhdGg6IFBhdGhPcHRpb25zO1xufTtcblxuY29uc3QgbGluZSA9IChmcm9tOiBCcmFja2V0UG9zaXRpb24sIHRvOiBCcmFja2V0UG9zaXRpb24sIG9wdGlvbnM6IExpbmVPcHRpb25zKSA9PiB7XG4gIHJldHVybiBwYXRoKGBNICR7ZnJvbS5pbmxpbmUuZW5kfSAke2Zyb20uYmxvY2suY2VudGVyfSBMICR7dG8uaW5saW5lLnN0YXJ0fSAke3RvLmJsb2NrLmNlbnRlcn1gLCBvcHRpb25zLnBhdGgpO1xufTtcblxudHlwZSBTdGF0aWNNZWFzdXJlbWVudHMgPSB7XG4gIC8qKiBXaWR0aCBvZiBvbmUgY29sdW1uICovXG4gIGNvbHVtbldpZHRoOiBudW1iZXI7XG5cbiAgLyoqIEhlaWdodCBvZiBvbmUgbWF0Y2ggKi9cbiAgbWF0Y2hIZWlnaHQ6IG51bWJlcjtcblxuICAvKiogR2FwIGJldHdlZW4gcm93cyAqL1xuICByb3dHYXA6IG51bWJlcjtcblxuICAvKiogR2FwIGJldHdlZW4gY29sdW1ucyAqL1xuICBjb2x1bW5HYXA6IG51bWJlcjtcblxuICAvKipcbiAgICogT2Zmc2V0IGZyb20gdGhlIHRvcC5cbiAgICogV2lsbCBiZSAwIGlmIGUuZy4gdGhlcmUgaXMgbm8gcm91bmQgaGVhZGVyIGFuZCB3ZSBhcmUgZGlzcGxheWluZyBhIHNpbmdsZSBlbGltaW5hdGlvbiBicmFja2V0LlxuICAgKiBXaWxsIGJlIHNvbWUgdmFsdWUgaWYgdGhlcmUgaXMgYSByb3VuZCBoZWFkZXIgb3IgaWYgd2Ugd2FudCB0byBkaXNwbGF5IHRoZSBsb3dlciBicmFja2V0IG9mIGEgZG91YmxlIGVsaW1pbmF0aW9uIGJyYWNrZXQuXG4gICAqL1xuICBiYXNlT2Zmc2V0WTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIG1hdGNoZXMgaW4gdGhlIGZpcnN0IHJvdW5kLlxuICAgKiBGb3IgZG91YmxlIGVsaW1pbmF0aW9uIGJyYWNrZXRzLCB0aGlzIGlzIHRoZSBudW1iZXIgb2YgbWF0Y2hlcyBpbiB0aGUgdXBwZXIgYnJhY2tldCBvciB0aGUgbG93ZXIgYnJhY2tldC5cbiAgICogRm9yIGRvdWJsZSBlbGltaW5hdGlvbiBtYXRjaGVzIGFmdGVyIHRoZSB1cHBlciBhbmQgbG93ZXIgYnJhY2tldCBoYXZlIGJlZW4gbWVyZ2VkLCB0aGlzIGlzIHRoZSBzdW0gb2YgbWF0Y2hlcyBpbiB0aGUgZmlyc3Qgcm91bmQgb2YgdGhlIHVwcGVyIGFuZCBsb3dlciBicmFja2V0LlxuICAgKi9cbiAgYmFzZVJvdW5kTWF0Y2hDb3VudDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaWxsIGJlIHJvdW5kIGhlYWRlciBoZWlnaHQgKyByb3cgZ2FwIGlmIHdlIGFyZSBtZXJnaW5nIHRoZSB1cHBlciBhbmQgbG93ZXIgYnJhY2tldCBvZiBhIGRvdWJsZSBlbGltaW5hdGlvbiBicmFja2V0LCAwIG90aGVyd2lzZS5cbiAgICogVGhpcyB2YWx1ZSB3aWxsIGJlIGFkZGVkIHRvIHRoZSBhdmFpbGFibGUgd2hpdGVzcGFjZSBmb3IgdGhlIG1hdGNoIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgbWlkZGxlIG9mLlxuICAgKi9cbiAgZG91YmxlRWxpbWluYXRpb25NZXJnZU9mZnNldDogbnVtYmVyO1xufTtcblxudHlwZSBCcmFja2V0UG9zaXRpb24gPSB7XG4gIGlubGluZTogeyBzdGFydDogbnVtYmVyOyBlbmQ6IG51bWJlcjsgY2VudGVyOiBudW1iZXIgfTsgLy8gdGhlIGxlZnQsIHJpZ2h0IGFuZCBjZW50ZXIgb2YgdGhlIG1hdGNoXG4gIGJsb2NrOiB7IHN0YXJ0OiBudW1iZXI7IGVuZDogbnVtYmVyOyBjZW50ZXI6IG51bWJlciB9OyAvLyB0aGUgdG9wLCBib3R0b20gYW5kIGNlbnRlciBvZiB0aGUgbWF0Y2hcbn07XG5cbmNvbnN0IGdldE1hdGNoUG9zaXRpb24gPSA8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4oXG4gIHJvdW5kSXRlbTogQnJhY2tldEdyaWRSb3VuZEl0ZW08VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4gfCB1bmRlZmluZWQsXG4gIG1hdGNoSWQ6IEJyYWNrZXRNYXRjaElkIHwgdW5kZWZpbmVkLFxuICBzdGF0aWNNZWFzdXJlbWVudHM6IFN0YXRpY01lYXN1cmVtZW50cyxcbik6IEJyYWNrZXRQb3NpdGlvbiA9PiB7XG4gIGlmICghcm91bmRJdGVtKSB0aHJvdyBuZXcgRXJyb3IoJ0l0ZW0gaXMgbWlzc2luZycpO1xuICBpZiAoIW1hdGNoSWQpIHRocm93IG5ldyBFcnJvcignTWF0Y2ggaXMgbWlzc2luZycpO1xuXG4gIGNvbnN0IG1hdGNoID0gcm91bmRJdGVtLml0ZW1zLmdldChtYXRjaElkKTtcblxuICBpZiAoIW1hdGNoIHx8IG1hdGNoLnR5cGUgIT09ICdtYXRjaCcpIHRocm93IG5ldyBFcnJvcignTWF0Y2ggaXMgbWlzc2luZycpO1xuXG4gIGNvbnN0IG1hdGNoSGFsZiA9IHN0YXRpY01lYXN1cmVtZW50cy5tYXRjaEhlaWdodCAvIDI7XG5cbiAgY29uc3Qgcm91bmRGYWN0b3IgPSBzdGF0aWNNZWFzdXJlbWVudHMuYmFzZVJvdW5kTWF0Y2hDb3VudCAvIHJvdW5kSXRlbS5yb3VuZFJlbGF0aW9uLmN1cnJlbnRSb3VuZC5tYXRjaENvdW50O1xuICBjb25zdCByZW1haW5pbmdSb3dHYXBDb3VudCA9IHJvdW5kSXRlbS5yb3VuZFJlbGF0aW9uLmN1cnJlbnRSb3VuZC5tYXRjaENvdW50IC0gMTtcbiAgY29uc3QgbWF0Y2hJbmNsdWRlZFJvd0dhcFRvdGFsID0gc3RhdGljTWVhc3VyZW1lbnRzLmJhc2VSb3VuZE1hdGNoQ291bnQgLSAxIC0gcmVtYWluaW5nUm93R2FwQ291bnQ7XG4gIGNvbnN0IG1hdGNoSW5jbHVkZWRSb3dHYXBQZXJNYXRjaCA9IG1hdGNoSW5jbHVkZWRSb3dHYXBUb3RhbCAvIHJvdW5kSXRlbS5yb3VuZFJlbGF0aW9uLmN1cnJlbnRSb3VuZC5tYXRjaENvdW50O1xuICBjb25zdCBtYXRjaFJvdW5kSXRlbUhlaWdodCA9XG4gICAgc3RhdGljTWVhc3VyZW1lbnRzLm1hdGNoSGVpZ2h0ICogcm91bmRGYWN0b3IgKyBtYXRjaEluY2x1ZGVkUm93R2FwUGVyTWF0Y2ggKiBzdGF0aWNNZWFzdXJlbWVudHMucm93R2FwO1xuXG4gIGNvbnN0IG1hdGNoZXNBYm92ZSA9IG1hdGNoLm1hdGNoUmVsYXRpb24uY3VycmVudE1hdGNoLmluZGV4SW5Sb3VuZDtcbiAgY29uc3Qgcm93T2Zmc2V0ID0gbWF0Y2hlc0Fib3ZlICogc3RhdGljTWVhc3VyZW1lbnRzLnJvd0dhcCArIG1hdGNoZXNBYm92ZSAqIG1hdGNoUm91bmRJdGVtSGVpZ2h0O1xuXG4gIGNvbnN0IG1hdGNoUm93T2Zmc2V0ID0gKG1hdGNoUm91bmRJdGVtSGVpZ2h0IC0gc3RhdGljTWVhc3VyZW1lbnRzLm1hdGNoSGVpZ2h0KSAvIDI7XG5cbiAgY29uc3QgYmxvY2tTdGFydCA9XG4gICAgcm93T2Zmc2V0ICsgbWF0Y2hSb3dPZmZzZXQgKyBzdGF0aWNNZWFzdXJlbWVudHMuYmFzZU9mZnNldFkgKyBzdGF0aWNNZWFzdXJlbWVudHMuZG91YmxlRWxpbWluYXRpb25NZXJnZU9mZnNldDtcblxuICBjb25zdCBibG9jayA9IHtcbiAgICBzdGFydDogYmxvY2tTdGFydCxcbiAgICBlbmQ6IGJsb2NrU3RhcnQgKyBzdGF0aWNNZWFzdXJlbWVudHMubWF0Y2hIZWlnaHQsXG4gICAgY2VudGVyOiBibG9ja1N0YXJ0ICsgbWF0Y2hIYWxmLFxuICB9O1xuXG4gIGNvbnN0IGlubGluZVN0YXJ0ID1cbiAgICAocm91bmRJdGVtLmNvbHVtblN0YXJ0IC0gMSkgKiBzdGF0aWNNZWFzdXJlbWVudHMuY29sdW1uV2lkdGggK1xuICAgIChyb3VuZEl0ZW0uY29sdW1uU3RhcnQgLSAxKSAqIHN0YXRpY01lYXN1cmVtZW50cy5jb2x1bW5HYXA7XG5cbiAgY29uc3QgaW5saW5lID0ge1xuICAgIHN0YXJ0OiBpbmxpbmVTdGFydCxcbiAgICBlbmQ6IGlubGluZVN0YXJ0ICsgc3RhdGljTWVhc3VyZW1lbnRzLmNvbHVtbldpZHRoLFxuICAgIGNlbnRlcjogaW5saW5lU3RhcnQgKyBzdGF0aWNNZWFzdXJlbWVudHMuY29sdW1uV2lkdGggLyAyLFxuICB9O1xuXG4gIHJldHVybiB7IGlubGluZSwgYmxvY2sgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBkcmF3TWFuID0gPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+KFxuICBpdGVtczogTWFwPEJyYWNrZXRSb3VuZElkLCBCcmFja2V0R3JpZFJvdW5kSXRlbTxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPj4sXG4gIGZpcnN0Um91bmRzOiBGaXJzdFJvdW5kczxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPixcbiAgZGltZW5zaW9uczogRHJhd01hbkRpbWVuc2lvbnMsXG4pID0+IHtcbiAgY29uc3QgeyBjb2x1bW5XaWR0aCwgbWF0Y2hIZWlnaHQsIHJvd0dhcCwgY29sdW1uR2FwLCByb3VuZEhlYWRlckhlaWdodCB9ID0gZGltZW5zaW9ucztcbiAgY29uc3Qgcm91bmRIZWFkZXJSb3dHYXAgPSByb3VuZEhlYWRlckhlaWdodCA/IHJvd0dhcCA6IDA7XG4gIGNvbnN0IGJhc2VPZmZzZXRZID0gcm91bmRIZWFkZXJIZWlnaHQgKyByb3VuZEhlYWRlclJvd0dhcDtcblxuICBjb25zdCBzdmdQYXJ0czogc3RyaW5nW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IHJvdW5kIG9mIGl0ZW1zLnZhbHVlcygpKSB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHJvdW5kLml0ZW1zLnZhbHVlcygpKSB7XG4gICAgICBpZiAoaXRlbS50eXBlID09PSAncm91bmQnKSBjb250aW51ZTsgLy8gd2UgZG9uJ3QgZHJhdyBsaW5lcyBmb3Igcm91bmQgaGVhZGVyc1xuXG4gICAgICBsZXQgYmFzZVJvdW5kTWF0Y2hDb3VudDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgICBsZXQgZG91YmxlRWxpbWluYXRpb25NZXJnZU9mZnNldCA9IDA7XG5cbiAgICAgIGlmIChmaXJzdFJvdW5kcy50eXBlID09PSBGSVJTVF9ST1VORFNfVFlQRS5TSU5HTEUpIHtcbiAgICAgICAgYmFzZVJvdW5kTWF0Y2hDb3VudCA9IGZpcnN0Um91bmRzLmZpcnN0Lm1hdGNoQ291bnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaXRlbS5yb3VuZFJlbGF0aW9uLmN1cnJlbnRSb3VuZC50eXBlID09PSBET1VCTEVfRUxJTUlOQVRJT05fQlJBQ0tFVF9ST1VORF9UWVBFLlVQUEVSX0JSQUNLRVQpIHtcbiAgICAgICAgICBiYXNlUm91bmRNYXRjaENvdW50ID0gZmlyc3RSb3VuZHMudXBwZXIubWF0Y2hDb3VudDtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLnJvdW5kUmVsYXRpb24uY3VycmVudFJvdW5kLnR5cGUgPT09IERPVUJMRV9FTElNSU5BVElPTl9CUkFDS0VUX1JPVU5EX1RZUEUuTE9XRVJfQlJBQ0tFVCkge1xuICAgICAgICAgIGJhc2VSb3VuZE1hdGNoQ291bnQgPSBmaXJzdFJvdW5kcy5sb3dlci5tYXRjaENvdW50O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJhc2VSb3VuZE1hdGNoQ291bnQgPSBmaXJzdFJvdW5kcy51cHBlci5tYXRjaENvdW50ICsgZmlyc3RSb3VuZHMubG93ZXIubWF0Y2hDb3VudDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbS5yb3VuZFJlbGF0aW9uLmN1cnJlbnRSb3VuZC50eXBlID09PSBET1VCTEVfRUxJTUlOQVRJT05fQlJBQ0tFVF9ST1VORF9UWVBFLkxPV0VSX0JSQUNLRVQpIHtcbiAgICAgICAgZG91YmxlRWxpbWluYXRpb25NZXJnZU9mZnNldCA9IHJvdW5kSGVhZGVySGVpZ2h0ICsgcm91bmRIZWFkZXJSb3dHYXA7XG4gICAgICAgIC8vIFRPRE86XG4gICAgICAgIC8vIGJhc2VPZmZzZXRZID0gYmFzZU9mZnNldFkgKiAyICgyIHJvdW5kIGhlYWRlcnMgYW5kIGdhcHMpICsgKGZpcnN0Um91bmRzLnVwcGVyLm1hdGNoQ291bnQgKiBtYXRjaEhlaWdodCkgKyAoZmlyc3RSb3VuZHMudXBwZXIubWF0Y2hDb3VudCAtIDEgKiByb3dHYXApXG4gICAgICAgIC8vIGJhc2VPZmZzZXRZXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN0YXRpY01lYXN1cmVtZW50czogU3RhdGljTWVhc3VyZW1lbnRzID0ge1xuICAgICAgICBiYXNlT2Zmc2V0WSxcbiAgICAgICAgYmFzZVJvdW5kTWF0Y2hDb3VudCxcbiAgICAgICAgY29sdW1uR2FwLFxuICAgICAgICBjb2x1bW5XaWR0aCxcbiAgICAgICAgZG91YmxlRWxpbWluYXRpb25NZXJnZU9mZnNldCxcbiAgICAgICAgbWF0Y2hIZWlnaHQsXG4gICAgICAgIHJvd0dhcCxcbiAgICAgIH07XG5cbiAgICAgIC8vIFRPRE86IE5vIGxpbmVzIGZvciBub3dcbiAgICAgIGlmIChpdGVtLm1hdGNoUmVsYXRpb24uY3VycmVudFJvdW5kLm1pcnJvclJvdW5kVHlwZSA9PT0gQlJBQ0tFVF9ST1VORF9NSVJST1JfVFlQRS5SSUdIVCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy8gV2Ugb25seSBkcmF3IHRoZSBsZWZ0IHNpZGUgb2YgdGhlIG1hdGNoIHJlbGF0aW9uXG4gICAgICBzd2l0Y2ggKGl0ZW0ubWF0Y2hSZWxhdGlvbi50eXBlKSB7XG4gICAgICAgIGNhc2UgJ25vdGhpbmctdG8tb25lJzoge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ29uZS10by1ub3RoaW5nJzpcbiAgICAgICAgY2FzZSAnb25lLXRvLW9uZSc6IHtcbiAgICAgICAgICBjb25zdCBwcmV2aW91cyA9IGdldE1hdGNoUG9zaXRpb24oXG4gICAgICAgICAgICBpdGVtcy5nZXQoaXRlbS5tYXRjaFJlbGF0aW9uLnByZXZpb3VzUm91bmQuaWQpLFxuICAgICAgICAgICAgaXRlbS5tYXRjaFJlbGF0aW9uLnByZXZpb3VzTWF0Y2guaWQsXG4gICAgICAgICAgICBzdGF0aWNNZWFzdXJlbWVudHMsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBjdXJyZW50ID0gZ2V0TWF0Y2hQb3NpdGlvbihyb3VuZCwgaXRlbS5tYXRjaFJlbGF0aW9uLmN1cnJlbnRNYXRjaC5pZCwgc3RhdGljTWVhc3VyZW1lbnRzKTtcblxuICAgICAgICAgIC8vIGRyYXcgYSBzdHJhaWdodCBsaW5lXG4gICAgICAgICAgc3ZnUGFydHMucHVzaChsaW5lKHByZXZpb3VzLCBjdXJyZW50LCB7IHBhdGg6IGRpbWVuc2lvbnMucGF0aCB9KSk7XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdvbmUtdG8tdHdvJzoge1xuICAgICAgICAgIGNvbnN0IG5leHRVcHBlciA9IGdldE1hdGNoUG9zaXRpb24oXG4gICAgICAgICAgICBpdGVtcy5nZXQoaXRlbS5tYXRjaFJlbGF0aW9uLm5leHRVcHBlclJvdW5kLmlkKSxcbiAgICAgICAgICAgIGl0ZW0ubWF0Y2hSZWxhdGlvbi5uZXh0VXBwZXJNYXRjaC5pZCxcbiAgICAgICAgICAgIHN0YXRpY01lYXN1cmVtZW50cyxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc3QgbmV4dExvd2VyID0gZ2V0TWF0Y2hQb3NpdGlvbihcbiAgICAgICAgICAgIGl0ZW1zLmdldChpdGVtLm1hdGNoUmVsYXRpb24ubmV4dExvd2VyUm91bmQuaWQpLFxuICAgICAgICAgICAgaXRlbS5tYXRjaFJlbGF0aW9uLm5leHRMb3dlck1hdGNoLmlkLFxuICAgICAgICAgICAgc3RhdGljTWVhc3VyZW1lbnRzLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb25zdCBjdXJyZW50ID0gZ2V0TWF0Y2hQb3NpdGlvbihyb3VuZCwgaXRlbS5tYXRjaFJlbGF0aW9uLmN1cnJlbnRNYXRjaC5pZCwgc3RhdGljTWVhc3VyZW1lbnRzKTtcblxuICAgICAgICAgIC8vIGNvbnN0IGN1cnZlT3B0aW9uczogQ3VydmVPcHRpb25zID0geyAuLi5kaW1lbnNpb25zLmN1cnZlLCBwYXRoOiBkaW1lbnNpb25zLnBhdGggfTtcblxuICAgICAgICAgIC8vIC8vIGRyYXcgdHdvIGxpbmVzIHRoYXQgbWVyZ2UgaW50byBvbmUgaW4gdGhlIG1pZGRsZVxuICAgICAgICAgIC8vIHN2Z1BhcnRzLnB1c2goY3VydmUobmV4dFVwcGVyLCBjdXJyZW50LCAnZG93bicsIGN1cnZlT3B0aW9ucykpO1xuICAgICAgICAgIC8vIHN2Z1BhcnRzLnB1c2goY3VydmUobmV4dExvd2VyLCBjdXJyZW50LCAndXAnLCBjdXJ2ZU9wdGlvbnMpKTtcblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3R3by10by1ub3RoaW5nJzpcbiAgICAgICAgY2FzZSAndHdvLXRvLW9uZSc6IHtcbiAgICAgICAgICBjb25zdCBwcmV2aW91c1VwcGVyID0gZ2V0TWF0Y2hQb3NpdGlvbihcbiAgICAgICAgICAgIGl0ZW1zLmdldChpdGVtLm1hdGNoUmVsYXRpb24ucHJldmlvdXNVcHBlclJvdW5kLmlkKSxcbiAgICAgICAgICAgIGl0ZW0ubWF0Y2hSZWxhdGlvbi5wcmV2aW91c1VwcGVyTWF0Y2guaWQsXG4gICAgICAgICAgICBzdGF0aWNNZWFzdXJlbWVudHMsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IHByZXZpb3VzTG93ZXIgPSBnZXRNYXRjaFBvc2l0aW9uKFxuICAgICAgICAgICAgaXRlbXMuZ2V0KGl0ZW0ubWF0Y2hSZWxhdGlvbi5wcmV2aW91c0xvd2VyUm91bmQuaWQpLFxuICAgICAgICAgICAgaXRlbS5tYXRjaFJlbGF0aW9uLnByZXZpb3VzTG93ZXJNYXRjaC5pZCxcbiAgICAgICAgICAgIHN0YXRpY01lYXN1cmVtZW50cyxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc3QgY3VycmVudCA9IGdldE1hdGNoUG9zaXRpb24ocm91bmQsIGl0ZW0ubWF0Y2hSZWxhdGlvbi5jdXJyZW50TWF0Y2guaWQsIHN0YXRpY01lYXN1cmVtZW50cyk7XG4gICAgICAgICAgY29uc3QgY3VydmVPcHRpb25zOiBDdXJ2ZU9wdGlvbnMgPSB7IC4uLmRpbWVuc2lvbnMuY3VydmUsIHBhdGg6IGRpbWVuc2lvbnMucGF0aCB9O1xuXG4gICAgICAgICAgLy8gZHJhdyB0d28gbGluZXMgdGhhdCBtZXJnZSBpbnRvIG9uZSBpbiB0aGUgbWlkZGxlXG4gICAgICAgICAgc3ZnUGFydHMucHVzaChjdXJ2ZShwcmV2aW91c1VwcGVyLCBjdXJyZW50LCAnZG93bicsIGN1cnZlT3B0aW9ucykpO1xuICAgICAgICAgIHN2Z1BhcnRzLnB1c2goY3VydmUocHJldmlvdXNMb3dlciwgY3VycmVudCwgJ3VwJywgY3VydmVPcHRpb25zKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3ZnUGFydHMuam9pbignJyk7XG59O1xuIl19
|
|
197
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhdy1tYW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvYnJhY2tldC9jb21wb25lbnRzL25ldy1icmFja2V0L2RyYXctbWFuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx5QkFBeUIsRUFHekIscUNBQXFDLEVBQ3JDLGlCQUFpQixHQUVsQixNQUFNLGVBQWUsQ0FBQztBQXNCdkIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFTLEVBQUUsT0FBb0IsRUFBRSxFQUFFLENBQy9DLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLHFEQUFxRCxPQUFPLENBQUMsS0FBSyx1QkFBdUIsT0FBTyxDQUFDLFNBQVMsd0JBQXdCLE9BQU8sQ0FBQyxVQUFVLFlBQVksT0FBTyxDQUFDLFNBQVMsTUFBTSxDQUFDO0FBUW5PLE1BQU0sS0FBSyxHQUFHLENBQUMsSUFBcUIsRUFBRSxFQUFtQixFQUFFLFNBQXdCLEVBQUUsT0FBcUIsRUFBRSxFQUFFO0lBQzVHLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO0lBQ25DLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBRWpDLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ2hDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBRXBDLE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDLHVCQUF1QixDQUFDO0lBQzVELE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixDQUFDO0lBRXhELE1BQU0sVUFBVSxHQUFHLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDekMsTUFBTSxvQkFBb0IsR0FB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SVJST1JfVFlQRSxcbiAgQnJhY2tldE1hdGNoSWQsXG4gIEJyYWNrZXRSb3VuZElkLFxuICBET1VCTEVfRUxJTUlOQVRJT05fQlJBQ0tFVF9ST1VORF9UWVBFLFxuICBGSVJTVF9ST1VORFNfVFlQRSxcbiAgRmlyc3RSb3VuZHMsXG59IGZyb20gJy4vYnJhY2tldC1uZXcnO1xuaW1wb3J0IHsgQnJhY2tldEdyaWREZWZpbml0aW9ucyB9IGZyb20gJy4vZ3JpZC1kZWZpbml0aW9ucyc7XG5pbXBvcnQgeyBCcmFja2V0R3JpZFJvdW5kSXRlbSB9IGZyb20gJy4vZ3JpZC1wbGFjZW1lbnRzJztcblxuZXhwb3J0IHR5cGUgRHJhd01hbkRpbWVuc2lvbnMgPSB7XG4gIGNvbHVtbldpZHRoOiBudW1iZXI7XG4gIG1hdGNoSGVpZ2h0OiBudW1iZXI7XG4gIHJvdW5kSGVhZGVySGVpZ2h0OiBudW1iZXI7XG4gIGNvbHVtbkdhcDogbnVtYmVyO1xuICByb3dHYXA6IG51bWJlcjtcbiAgZ3JpZERlZmluaXRpb25zOiBCcmFja2V0R3JpZERlZmluaXRpb25zO1xuICBwYXRoOiBPbWl0PFBhdGhPcHRpb25zLCAnY2xhc3NOYW1lJz47XG4gIGN1cnZlOiBPbWl0PEN1cnZlT3B0aW9ucywgJ3BhdGgnIHwgJ2ludmVydGVkJz47XG59O1xuXG50eXBlIFBhdGhPcHRpb25zID0ge1xuICB3aWR0aDogbnVtYmVyO1xuICBkYXNoQXJyYXk6IG51bWJlcjtcbiAgZGFzaE9mZnNldDogbnVtYmVyO1xuICBjbGFzc05hbWU6IHN0cmluZztcbn07XG5cbmNvbnN0IHBhdGggPSAoZDogc3RyaW5nLCBvcHRpb25zOiBQYXRoT3B0aW9ucykgPT5cbiAgYDxwYXRoIGQ9XCIke2QucmVwbGFjZSgvXFxzKy9nLCAnICcpLnRyaW0oKX1cIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBmaWxsPVwibm9uZVwiIHN0cm9rZS13aWR0aD1cIiR7b3B0aW9ucy53aWR0aH1cIiBzdHJva2UtZGFzaGFycmF5PVwiJHtvcHRpb25zLmRhc2hBcnJheX1cIiBzdHJva2UtZGFzaG9mZnNldD1cIiR7b3B0aW9ucy5kYXNoT2Zmc2V0fVwiIGNsYXNzPVwiJHtvcHRpb25zLmNsYXNzTmFtZX1cIiAvPmA7XG5cbnR5cGUgQ3VydmVPcHRpb25zID0ge1xuICBsaW5lU3RhcnRpbmdDdXJ2ZUFtb3VudDogbnVtYmVyO1xuICBsaW5lRW5kaW5nQ3VydmVBbW91bnQ6IG51bWJlcjtcbiAgcGF0aDogUGF0aE9wdGlvbnM7XG59O1xuXG5jb25zdCBjdXJ2ZSA9IChmcm9tOiBCcmFja2V0UG9zaXRpb24sIHRvOiBCcmFja2V0UG9zaXRpb24sIGRpcmVjdGlvbjogJ3VwJyB8ICdkb3duJywgb3B0aW9uczogQ3VydmVPcHRpb25zKSA9PiB7XG4gIGNvbnN0IGZyb21JbmxpbmUgPSBmcm9tLmlubGluZS5lbmQ7XG4gIGNvbnN0IHRvSW5saW5lID0gdG8uaW5saW5lLnN0YXJ0O1xuXG4gIGNvbnN0IHRvQmxvY2sgPSB0by5ibG9jay5jZW50ZXI7XG4gIGNvbnN0IGZyb21CbG9jayA9IGZyb20uYmxvY2suY2VudGVyO1xuXG4gIGNvbnN0IHN0YXJ0aW5nQ3VydmVBbW91bnQgPSBvcHRpb25zLmxpbmVTdGFydGluZ0N1cnZlQW1vdW50O1xuICBjb25zdCBlbmRpbmdDdXJ2ZUFtb3VudCA9IG9wdGlvbnMubGluZUVuZGluZ0N1cnZlQW1vdW50O1xuXG4gIGNvbnN0IHRvdGFsU3BhY2UgPSB0b0lubGluZSAtIGZyb21JbmxpbmU7XG4gIGNvbnN0IHRvdGFsU3BhY2VNaW51c0N1cnZlID0gdG90YWxTcGFjZSAtIHN0YXJ0aW5nQ3VydmVBbW91bnQgLSBlbmRpbmdDdXJ2ZUFtb3VudDtcbiAgY29uc3QgbGluZUxlbmd0aCA9IHRvdGFsU3BhY2VNaW51c0N1cnZlIC8gMjtcblxuICBjb25zdCBzdHJhaWdodExlZnRFbmQgPSBmcm9tSW5saW5lICsgbGluZUxlbmd0aDtcbiAgY29uc3Qgc3RyYWlnaHRSaWdodFN0YXJ0ID0gdG9JbmxpbmUgLSBsaW5lTGVuZ3RoO1xuICAvLyBmaXJzdCA5MCBkZWdyZWUgY3VydmUgZG93blxuICBjb25zdCBmaXJzdEN1cnZlU3RhcnRYID0gc3RyYWlnaHRMZWZ0RW5kO1xuICBjb25zdCBmaXJzdEN1cnZlRW5kWCA9IHN0cmFpZ2h0TGVmdEVuZCArIHN0YXJ0aW5nQ3VydmVBbW91bnQ7XG4gIGNvbnN0IGZpcnN0Q3VydmVFbmRZID0gZGlyZWN0aW9uID09PSAnZG93bicgPyBmcm9tQmxvY2sgKyBzdGFydGluZ0N1cnZlQW1vdW50IDogZnJvbUJsb2NrIC0gc3RhcnRpbmdDdXJ2ZUFtb3VudDtcblxuICBjb25zdCBmaXJzdEN1cnZlQmV6aWVyWCA9IHN0cmFpZ2h0TGVmdEVuZCArIHN0YXJ0aW5nQ3VydmVBbW91bnQ7XG4gIGNvbnN0IGZpcnN0Q3VydmVCZXppZXJZID0gZnJvbUJsb2NrO1xuXG4gIC8vIHNlY29uZCA5MCBkZWdyZWUgY3VydmUgdG8gdGhlIHJpZ2h0XG4gIGNvbnN0IHNlY29uZEN1cnZlU3RhcnRZID0gZGlyZWN0aW9uID09PSAnZG93bicgPyB0b0Jsb2NrIC0gZW5kaW5nQ3VydmVBbW91bnQgOiB0b0Jsb2NrICsgZW5kaW5nQ3VydmVBbW91bnQ7XG4gIGNvbnN0IHNlY29uZEN1cnZlRW5kWCA9IHN0cmFpZ2h0UmlnaHRTdGFydDtcbiAgY29uc3Qgc2Vjb25kQ3VydmVFbmRZID0gdG9CbG9jaztcblxuICBjb25zdCBzZWNvbmRDdXJ2ZUJlemllclggPSBzdHJhaWdodFJpZ2h0U3RhcnQgLSBlbmRpbmdDdXJ2ZUFtb3VudDtcbiAgY29uc3Qgc2Vjb25kQ3VydmVCZXppZXJZID0gdG9CbG9jaztcblxuICBjb25zdCBwYXRoU3RyID0gYFxuICAgIE0gJHtmcm9tSW5saW5lfSAke2Zyb21CbG9ja30gXG4gICAgSCAke2ZpcnN0Q3VydmVTdGFydFh9IFxuICAgIFEgJHtmaXJzdEN1cnZlQmV6aWVyWH0gJHtmaXJzdEN1cnZlQmV6aWVyWX0sICR7Zmlyc3RDdXJ2ZUVuZFh9ICR7Zmlyc3RDdXJ2ZUVuZFl9IFxuICAgIFYgJHtzZWNvbmRDdXJ2ZVN0YXJ0WX0gXG4gICAgUSAke3NlY29uZEN1cnZlQmV6aWVyWH0gJHtzZWNvbmRDdXJ2ZUJlemllcll9LCAke3NlY29uZEN1cnZlRW5kWH0gJHtzZWNvbmRDdXJ2ZUVuZFl9IFxuICAgIEggJHt0b0lubGluZX1cbiAgYDtcblxuICByZXR1cm4gcGF0aChwYXRoU3RyLCBvcHRpb25zLnBhdGgpO1xufTtcblxuY29uc3QgY3VydmVJbnZlcnRlZCA9IChmcm9tOiBCcmFja2V0UG9zaXRpb24sIHRvOiBCcmFja2V0UG9zaXRpb24sIGRpcmVjdGlvbjogJ3VwJyB8ICdkb3duJywgb3B0aW9uczogQ3VydmVPcHRpb25zKSA9PiB7XG4gIGNvbnN0IGZyb21JbmxpbmUgPSBmcm9tLmlubGluZS5zdGFydDtcbiAgY29uc3QgZnJvbUJsb2NrID0gZnJvbS5ibG9jay5jZW50ZXI7XG5cbiAgY29uc3QgdG9JbmxpbmUgPSB0by5pbmxpbmUuZW5kO1xuICBjb25zdCB0b0Jsb2NrID0gdG8uYmxvY2suY2VudGVyO1xuXG4gIGNvbnN0IHN0YXJ0aW5nQ3VydmVBbW91bnQgPSBvcHRpb25zLmxpbmVTdGFydGluZ0N1cnZlQW1vdW50O1xuICBjb25zdCBlbmRpbmdDdXJ2ZUFtb3VudCA9IG9wdGlvbnMubGluZUVuZGluZ0N1cnZlQW1vdW50O1xuXG4gIGNvbnN0IHRvdGFsU3BhY2UgPSBmcm9tSW5saW5lIC0gdG9JbmxpbmU7XG4gIGNvbnN0IHRvdGFsU3BhY2VNaW51c0N1cnZlID0gdG90YWxTcGFjZSAtIHN0YXJ0aW5nQ3VydmVBbW91bnQgLSBlbmRpbmdDdXJ2ZUFtb3VudDtcbiAgY29uc3QgbGluZUxlbmd0aCA9IHRvdGFsU3BhY2VNaW51c0N1cnZlIC8gMjtcblxuICBjb25zdCBzdHJhaWdodFJpZ2h0RW5kID0gZnJvbUlubGluZSAtIGxpbmVMZW5ndGg7XG4gIGNvbnN0IHN0cmFpZ2h0TGVmdFN0YXJ0ID0gdG9JbmxpbmUgKyBsaW5lTGVuZ3RoO1xuXG4gIGNvbnN0IGZpcnN0Q3VydmVTdGFydFggPSBzdHJhaWdodFJpZ2h0RW5kO1xuICBjb25zdCBmaXJzdEN1cnZlRW5kWCA9IHN0cmFpZ2h0UmlnaHRFbmQgLSBzdGFydGluZ0N1cnZlQW1vdW50O1xuICBjb25zdCBmaXJzdEN1cnZlRW5kWSA9IGRpcmVjdGlvbiA9PT0gJ2Rvd24nID8gZnJvbUJsb2NrICsgc3RhcnRpbmdDdXJ2ZUFtb3VudCA6IGZyb21CbG9jayAtIHN0YXJ0aW5nQ3VydmVBbW91bnQ7XG5cbiAgY29uc3QgZmlyc3RDdXJ2ZUJlemllclggPSBzdHJhaWdodFJpZ2h0RW5kIC0gc3RhcnRpbmdDdXJ2ZUFtb3VudDtcbiAgY29uc3QgZmlyc3RDdXJ2ZUJlemllclkgPSBmcm9tQmxvY2s7XG5cbiAgLy8gc2Vjb25kIDkwIGRlZ3JlZSBjdXJ2ZSB0byB0aGUgcmlnaHRcbiAgY29uc3Qgc2Vjb25kQ3VydmVTdGFydFkgPSBkaXJlY3Rpb24gPT09ICdkb3duJyA/IHRvQmxvY2sgLSBlbmRpbmdDdXJ2ZUFtb3VudCA6IHRvQmxvY2sgKyBlbmRpbmdDdXJ2ZUFtb3VudDtcbiAgY29uc3Qgc2Vjb25kQ3VydmVFbmRYID0gc3RyYWlnaHRMZWZ0U3RhcnQ7XG4gIGNvbnN0IHNlY29uZEN1cnZlRW5kWSA9IHRvQmxvY2s7XG5cbiAgY29uc3Qgc2Vjb25kQ3VydmVCZXppZXJYID0gc3RyYWlnaHRMZWZ0U3RhcnQgKyBlbmRpbmdDdXJ2ZUFtb3VudDtcbiAgY29uc3Qgc2Vjb25kQ3VydmVCZXppZXJZID0gdG9CbG9jaztcblxuICBjb25zdCBwYXRoU3RyID0gYFxuICAgIE0gJHtmcm9tSW5saW5lfSAke2Zyb21CbG9ja30gXG4gICAgSCAke2ZpcnN0Q3VydmVTdGFydFh9IFxuICAgIFEgJHtmaXJzdEN1cnZlQmV6aWVyWH0gJHtmaXJzdEN1cnZlQmV6aWVyWX0sICR7Zmlyc3RDdXJ2ZUVuZFh9ICR7Zmlyc3RDdXJ2ZUVuZFl9IFxuICAgIFYgJHtzZWNvbmRDdXJ2ZVN0YXJ0WX1cbiAgICBRICR7c2Vjb25kQ3VydmVCZXppZXJYfSAke3NlY29uZEN1cnZlQmV6aWVyWX0sICR7c2Vjb25kQ3VydmVFbmRYfSAke3NlY29uZEN1cnZlRW5kWX0gXG4gICAgSCAke3RvSW5saW5lfVxuICBgO1xuXG4gIHJldHVybiBwYXRoKHBhdGhTdHIsIG9wdGlvbnMucGF0aCk7XG59O1xuXG50eXBlIExpbmVPcHRpb25zID0ge1xuICBwYXRoOiBQYXRoT3B0aW9ucztcbn07XG5cbmNvbnN0IGxpbmUgPSAoZnJvbTogQnJhY2tldFBvc2l0aW9uLCB0bzogQnJhY2tldFBvc2l0aW9uLCBvcHRpb25zOiBMaW5lT3B0aW9ucykgPT4ge1xuICByZXR1cm4gcGF0aChgTSAke2Zyb20uaW5saW5lLmVuZH0gJHtmcm9tLmJsb2NrLmNlbnRlcn0gTCAke3RvLmlubGluZS5zdGFydH0gJHt0by5ibG9jay5jZW50ZXJ9YCwgb3B0aW9ucy5wYXRoKTtcbn07XG5cbnR5cGUgU3RhdGljTWVhc3VyZW1lbnRzID0ge1xuICAvKiogV2lkdGggb2Ygb25lIGNvbHVtbiAqL1xuICBjb2x1bW5XaWR0aDogbnVtYmVyO1xuXG4gIC8qKiBIZWlnaHQgb2Ygb25lIG1hdGNoICovXG4gIG1hdGNoSGVpZ2h0OiBudW1iZXI7XG5cbiAgLyoqIEdhcCBiZXR3ZWVuIHJvd3MgKi9cbiAgcm93R2FwOiBudW1iZXI7XG5cbiAgLyoqIEdhcCBiZXR3ZWVuIGNvbHVtbnMgKi9cbiAgY29sdW1uR2FwOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE9mZnNldCBmcm9tIHRoZSB0b3AuXG4gICAqIFdpbGwgYmUgMCBpZiBlLmcuIHRoZXJlIGlzIG5vIHJvdW5kIGhlYWRlciBhbmQgd2UgYXJlIGRpc3BsYXlpbmcgYSBzaW5nbGUgZWxpbWluYXRpb24gYnJhY2tldC5cbiAgICogV2lsbCBiZSBzb21lIHZhbHVlIGlmIHRoZXJlIGlzIGEgcm91bmQgaGVhZGVyIG9yIGlmIHdlIHdhbnQgdG8gZGlzcGxheSB0aGUgbG93ZXIgYnJhY2tldCBvZiBhIGRvdWJsZSBlbGltaW5hdGlvbiBicmFja2V0LlxuICAgKi9cbiAgYmFzZU9mZnNldFk6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBtYXRjaGVzIGluIHRoZSBmaXJzdCByb3VuZC5cbiAgICogRm9yIGRvdWJsZSBlbGltaW5hdGlvbiBicmFja2V0cywgdGhpcyBpcyB0aGUgbnVtYmVyIG9mIG1hdGNoZXMgaW4gdGhlIHVwcGVyIGJyYWNrZXQgb3IgdGhlIGxvd2VyIGJyYWNrZXQuXG4gICAqIEZvciBkb3VibGUgZWxpbWluYXRpb24gbWF0Y2hlcyBhZnRlciB0aGUgdXBwZXIgYW5kIGxvd2VyIGJyYWNrZXQgaGF2ZSBiZWVuIG1lcmdlZCwgdGhpcyBpcyB0aGUgc3VtIG9mIG1hdGNoZXMgaW4gdGhlIGZpcnN0IHJvdW5kIG9mIHRoZSB1cHBlciBhbmQgbG93ZXIgYnJhY2tldC5cbiAgICovXG4gIGJhc2VSb3VuZE1hdGNoQ291bnQ6IG51bWJlcjtcblxuICAvKipcbiAgICogV2lsbCBiZSByb3VuZCBoZWFkZXIgaGVpZ2h0ICsgcm93IGdhcCBpZiB3ZSBhcmUgbWVyZ2luZyB0aGUgdXBwZXIgYW5kIGxvd2VyIGJyYWNrZXQgb2YgYSBkb3VibGUgZWxpbWluYXRpb24gYnJhY2tldCwgMCBvdGhlcndpc2UuXG4gICAqIFRoaXMgdmFsdWUgd2lsbCBiZSBhZGRlZCB0byB0aGUgYXZhaWxhYmxlIHdoaXRlc3BhY2UgZm9yIHRoZSBtYXRjaCB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIG1pZGRsZSBvZi5cbiAgICovXG4gIGRvdWJsZUVsaW1pbmF0aW9uTWVyZ2VPZmZzZXQ6IG51bWJlcjtcbn07XG5cbnR5cGUgQnJhY2tldFBvc2l0aW9uID0ge1xuICBpbmxpbmU6IHsgc3RhcnQ6IG51bWJlcjsgZW5kOiBudW1iZXI7IGNlbnRlcjogbnVtYmVyIH07IC8vIHRoZSBsZWZ0LCByaWdodCBhbmQgY2VudGVyIG9mIHRoZSBtYXRjaFxuICBibG9jazogeyBzdGFydDogbnVtYmVyOyBlbmQ6IG51bWJlcjsgY2VudGVyOiBudW1iZXIgfTsgLy8gdGhlIHRvcCwgYm90dG9tIGFuZCBjZW50ZXIgb2YgdGhlIG1hdGNoXG59O1xuXG5jb25zdCBnZXRNYXRjaFBvc2l0aW9uID0gPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+KFxuICByb3VuZEl0ZW06IEJyYWNrZXRHcmlkUm91bmRJdGVtPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+IHwgdW5kZWZpbmVkLFxuICBtYXRjaElkOiBCcmFja2V0TWF0Y2hJZCB8IHVuZGVmaW5lZCxcbiAgc3RhdGljTWVhc3VyZW1lbnRzOiBTdGF0aWNNZWFzdXJlbWVudHMsXG4pOiBCcmFja2V0UG9zaXRpb24gPT4ge1xuICBpZiAoIXJvdW5kSXRlbSkgdGhyb3cgbmV3IEVycm9yKCdJdGVtIGlzIG1pc3NpbmcnKTtcbiAgaWYgKCFtYXRjaElkKSB0aHJvdyBuZXcgRXJyb3IoJ01hdGNoIGlzIG1pc3NpbmcnKTtcblxuICBjb25zdCBtYXRjaCA9IHJvdW5kSXRlbS5pdGVtcy5nZXQobWF0Y2hJZCk7XG5cbiAgaWYgKCFtYXRjaCB8fCBtYXRjaC50eXBlICE9PSAnbWF0Y2gnKSB0aHJvdyBuZXcgRXJyb3IoJ01hdGNoIGlzIG1pc3NpbmcnKTtcblxuICBjb25zdCBtYXRjaEhhbGYgPSBzdGF0aWNNZWFzdXJlbWVudHMubWF0Y2hIZWlnaHQgLyAyO1xuXG4gIGNvbnN0IHJvdW5kRmFjdG9yID0gc3RhdGljTWVhc3VyZW1lbnRzLmJhc2VSb3VuZE1hdGNoQ291bnQgLyByb3VuZEl0ZW0ucm91bmRSZWxhdGlvbi5jdXJyZW50Um91bmQubWF0Y2hDb3VudDtcbiAgY29uc3QgcmVtYWluaW5nUm93R2FwQ291bnQgPSByb3VuZEl0ZW0ucm91bmRSZWxhdGlvbi5jdXJyZW50Um91bmQubWF0Y2hDb3VudCAtIDE7XG4gIGNvbnN0IG1hdGNoSW5jbHVkZWRSb3dHYXBUb3RhbCA9IHN0YXRpY01lYXN1cmVtZW50cy5iYXNlUm91bmRNYXRjaENvdW50IC0gMSAtIHJlbWFpbmluZ1Jvd0dhcENvdW50O1xuICBjb25zdCBtYXRjaEluY2x1ZGVkUm93R2FwUGVyTWF0Y2ggPSBtYXRjaEluY2x1ZGVkUm93R2FwVG90YWwgLyByb3VuZEl0ZW0ucm91bmRSZWxhdGlvbi5jdXJyZW50Um91bmQubWF0Y2hDb3VudDtcbiAgY29uc3QgbWF0Y2hSb3VuZEl0ZW1IZWlnaHQgPVxuICAgIHN0YXRpY01lYXN1cmVtZW50cy5tYXRjaEhlaWdodCAqIHJvdW5kRmFjdG9yICsgbWF0Y2hJbmNsdWRlZFJvd0dhcFBlck1hdGNoICogc3RhdGljTWVhc3VyZW1lbnRzLnJvd0dhcDtcblxuICBjb25zdCBtYXRjaGVzQWJvdmUgPSBtYXRjaC5tYXRjaFJlbGF0aW9uLmN1cnJlbnRNYXRjaC5pbmRleEluUm91bmQ7XG4gIGNvbnN0IHJvd09mZnNldCA9IG1hdGNoZXNBYm92ZSAqIHN0YXRpY01lYXN1cmVtZW50cy5yb3dHYXAgKyBtYXRjaGVzQWJvdmUgKiBtYXRjaFJvdW5kSXRlbUhlaWdodDtcblxuICBjb25zdCBtYXRjaFJvd09mZnNldCA9IChtYXRjaFJvdW5kSXRlbUhlaWdodCAtIHN0YXRpY01lYXN1cmVtZW50cy5tYXRjaEhlaWdodCkgLyAyO1xuXG4gIGNvbnN0IGJsb2NrU3RhcnQgPVxuICAgIHJvd09mZnNldCArIG1hdGNoUm93T2Zmc2V0ICsgc3RhdGljTWVhc3VyZW1lbnRzLmJhc2VPZmZzZXRZICsgc3RhdGljTWVhc3VyZW1lbnRzLmRvdWJsZUVsaW1pbmF0aW9uTWVyZ2VPZmZzZXQ7XG5cbiAgY29uc3QgYmxvY2sgPSB7XG4gICAgc3RhcnQ6IGJsb2NrU3RhcnQsXG4gICAgZW5kOiBibG9ja1N0YXJ0ICsgc3RhdGljTWVhc3VyZW1lbnRzLm1hdGNoSGVpZ2h0LFxuICAgIGNlbnRlcjogYmxvY2tTdGFydCArIG1hdGNoSGFsZixcbiAgfTtcblxuICBjb25zdCBpbmxpbmVTdGFydCA9XG4gICAgKHJvdW5kSXRlbS5jb2x1bW5TdGFydCAtIDEpICogc3RhdGljTWVhc3VyZW1lbnRzLmNvbHVtbldpZHRoICtcbiAgICAocm91bmRJdGVtLmNvbHVtblN0YXJ0IC0gMSkgKiBzdGF0aWNNZWFzdXJlbWVudHMuY29sdW1uR2FwO1xuXG4gIGNvbnN0IGlubGluZSA9IHtcbiAgICBzdGFydDogaW5saW5lU3RhcnQsXG4gICAgZW5kOiBpbmxpbmVTdGFydCArIHN0YXRpY01lYXN1cmVtZW50cy5jb2x1bW5XaWR0aCxcbiAgICBjZW50ZXI6IGlubGluZVN0YXJ0ICsgc3RhdGljTWVhc3VyZW1lbnRzLmNvbHVtbldpZHRoIC8gMixcbiAgfTtcblxuICByZXR1cm4geyBpbmxpbmUsIGJsb2NrIH07XG59O1xuXG5leHBvcnQgY29uc3QgZHJhd01hbiA9IDxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPihcbiAgaXRlbXM6IE1hcDxCcmFja2V0Um91bmRJZCwgQnJhY2tldEdyaWRSb3VuZEl0ZW08VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4+LFxuICBmaXJzdFJvdW5kczogRmlyc3RSb3VuZHM8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4gIGRpbWVuc2lvbnM6IERyYXdNYW5EaW1lbnNpb25zLFxuKSA9PiB7XG4gIGNvbnN0IHsgY29sdW1uV2lkdGgsIG1hdGNoSGVpZ2h0LCByb3dHYXAsIGNvbHVtbkdhcCwgcm91bmRIZWFkZXJIZWlnaHQgfSA9IGRpbWVuc2lvbnM7XG4gIGNvbnN0IHJvdW5kSGVhZGVyUm93R2FwID0gcm91bmRIZWFkZXJIZWlnaHQgPyByb3dHYXAgOiAwO1xuICBjb25zdCBiYXNlT2Zmc2V0WSA9IHJvdW5kSGVhZGVySGVpZ2h0ICsgcm91bmRIZWFkZXJSb3dHYXA7XG5cbiAgY29uc3Qgc3ZnUGFydHM6IHN0cmluZ1tdID0gW107XG5cbiAgZm9yIChjb25zdCByb3VuZCBvZiBpdGVtcy52YWx1ZXMoKSkge1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiByb3VuZC5pdGVtcy52YWx1ZXMoKSkge1xuICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ3JvdW5kJykgY29udGludWU7IC8vIHdlIGRvbid0IGRyYXcgbGluZXMgZm9yIHJvdW5kIGhlYWRlcnNcblxuICAgICAgbGV0IGJhc2VSb3VuZE1hdGNoQ291bnQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgICAgbGV0IGRvdWJsZUVsaW1pbmF0aW9uTWVyZ2VPZmZzZXQgPSAwO1xuXG4gICAgICBpZiAoZmlyc3RSb3VuZHMudHlwZSA9PT0gRklSU1RfUk9VTkRTX1RZUEUuU0lOR0xFKSB7XG4gICAgICAgIGJhc2VSb3VuZE1hdGNoQ291bnQgPSBmaXJzdFJvdW5kcy5maXJzdC5tYXRjaENvdW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGl0ZW0ucm91bmRSZWxhdGlvbi5jdXJyZW50Um91bmQudHlwZSA9PT0gRE9VQkxFX0VMSU1JTkFUSU9OX0JSQUNLRVRfUk9VTkRfVFlQRS5VUFBFUl9CUkFDS0VUKSB7XG4gICAgICAgICAgYmFzZVJvdW5kTWF0Y2hDb3VudCA9IGZpcnN0Um91bmRzLnVwcGVyLm1hdGNoQ291bnQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5yb3VuZFJlbGF0aW9uLmN1cnJlbnRSb3VuZC50eXBlID09PSBET1VCTEVfRUxJTUlOQVRJT05fQlJBQ0tFVF9ST1VORF9UWVBFLkxPV0VSX0JSQUNLRVQpIHtcbiAgICAgICAgICBiYXNlUm91bmRNYXRjaENvdW50ID0gZmlyc3RSb3VuZHMubG93ZXIubWF0Y2hDb3VudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBiYXNlUm91bmRNYXRjaENvdW50ID0gZmlyc3RSb3VuZHMudXBwZXIubWF0Y2hDb3VudCArIGZpcnN0Um91bmRzLmxvd2VyLm1hdGNoQ291bnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGl0ZW0ucm91bmRSZWxhdGlvbi5jdXJyZW50Um91bmQudHlwZSA9PT0gRE9VQkxFX0VMSU1JTkFUSU9OX0JSQUNLRVRfUk9VTkRfVFlQRS5MT1dFUl9CUkFDS0VUKSB7XG4gICAgICAgIGRvdWJsZUVsaW1pbmF0aW9uTWVyZ2VPZmZzZXQgPSByb3VuZEhlYWRlckhlaWdodCArIHJvdW5kSGVhZGVyUm93R2FwO1xuICAgICAgICAvLyBUT0RPOlxuICAgICAgICAvLyBiYXNlT2Zmc2V0WSA9IGJhc2VPZmZzZXRZICogMiAoMiByb3VuZCBoZWFkZXJzIGFuZCBnYXBzKSArIChmaXJzdFJvdW5kcy51cHBlci5tYXRjaENvdW50ICogbWF0Y2hIZWlnaHQpICsgKGZpcnN0Um91bmRzLnVwcGVyLm1hdGNoQ291bnQgLSAxICogcm93R2FwKVxuICAgICAgICAvLyBiYXNlT2Zmc2V0WVxuICAgICAgfVxuXG4gICAgICBjb25zdCBzdGF0aWNNZWFzdXJlbWVudHM6IFN0YXRpY01lYXN1cmVtZW50cyA9IHtcbiAgICAgICAgYmFzZU9mZnNldFksXG4gICAgICAgIGJhc2VSb3VuZE1hdGNoQ291bnQsXG4gICAgICAgIGNvbHVtbkdhcCxcbiAgICAgICAgY29sdW1uV2lkdGgsXG4gICAgICAgIGRvdWJsZUVsaW1pbmF0aW9uTWVyZ2VPZmZzZXQsXG4gICAgICAgIG1hdGNoSGVpZ2h0LFxuICAgICAgICByb3dHYXAsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBjdXJyZW50TWF0Y2hQYXJ0aWNpcGFudHNTaG9ydElkcyA9IFtcbiAgICAgICAgaXRlbS5tYXRjaFJlbGF0aW9uLmN1cnJlbnRNYXRjaC5ob21lPy5zaG9ydElkLFxuICAgICAgICBpdGVtLm1hdGNoUmVsYXRpb24uY3VycmVudE1hdGNoLmF3YXk/LnNob3J0SWQsXG4gICAgICBdXG4gICAgICAgIC5maWx0ZXIoKGlkKSA9PiAhIWlkKVxuICAgICAgICAuam9pbignICcpO1xuXG4gICAgICBjb25zdCBwYXRoT3B0aW9uczogUGF0aE9wdGlvbnMgPSB7IC4uLmRpbWVuc2lvbnMucGF0aCwgY2xhc3NOYW1lOiBjdXJyZW50TWF0Y2hQYXJ0aWNpcGFudHNTaG9ydElkcyB9O1xuXG4gICAgICBjb25zdCBjdXJyZW50TWF0Y2hQb3NpdGlvbiA9IGdldE1hdGNoUG9zaXRpb24ocm91bmQsIGl0ZW0ubWF0Y2hSZWxhdGlvbi5jdXJyZW50TWF0Y2guaWQsIHN0YXRpY01lYXN1cmVtZW50cyk7XG5cbiAgICAgIC8vIFdlIG9ubHkgZHJhdyB0aGUgbGVmdCBzaWRlIG9mIHRoZSBtYXRjaCByZWxhdGlvblxuICAgICAgc3dpdGNoIChpdGVtLm1hdGNoUmVsYXRpb24udHlwZSkge1xuICAgICAgICBjYXNlICdub3RoaW5nLXRvLW9uZSc6IHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdvbmUtdG8tbm90aGluZyc6XG4gICAgICAgIGNhc2UgJ29uZS10by1vbmUnOiB7XG4gICAgICAgICAgY29uc3QgcHJldmlvdXNNYXRjaFBvc2l0aW9uID0gZ2V0TWF0Y2hQb3NpdGlvbihcbiAgICAgICAgICAgIGl0ZW1zLmdldChpdGVtLm1hdGNoUmVsYXRpb24ucHJldmlvdXNSb3VuZC5pZCksXG4gICAgICAgICAgICBpdGVtLm1hdGNoUmVsYXRpb24ucHJldmlvdXNNYXRjaC5pZCxcbiAgICAgICAgICAgIHN0YXRpY01lYXN1cmVtZW50cyxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgLy8gZHJhdyBhIHN0cmFpZ2h0IGxpbmVcbiAgICAgICAgICBzdmdQYXJ0cy5wdXNoKGxpbmUocHJldmlvdXNNYXRjaFBvc2l0aW9uLCBjdXJyZW50TWF0Y2hQb3NpdGlvbiwgeyBwYXRoOiBwYXRoT3B0aW9ucyB9KSk7XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgJ3R3by10by1ub3RoaW5nJzpcbiAgICAgICAgY2FzZSAndHdvLXRvLW9uZSc6IHtcbiAgICAgICAgICBjb25zdCBwcmV2aW91c1VwcGVyID0gZ2V0TWF0Y2hQb3NpdGlvbihcbiAgICAgICAgICAgIGl0ZW1zLmdldChpdGVtLm1hdGNoUmVsYXRpb24ucHJldmlvdXNVcHBlclJvdW5kLmlkKSxcbiAgICAgICAgICAgIGl0ZW0ubWF0Y2hSZWxhdGlvbi5wcmV2aW91c1VwcGVyTWF0Y2guaWQsXG4gICAgICAgICAgICBzdGF0aWNNZWFzdXJlbWVudHMsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IHByZXZpb3VzTG93ZXIgPSBnZXRNYXRjaFBvc2l0aW9uKFxuICAgICAgICAgICAgaXRlbXMuZ2V0KGl0ZW0ubWF0Y2hSZWxhdGlvbi5wcmV2aW91c0xvd2VyUm91bmQuaWQpLFxuICAgICAgICAgICAgaXRlbS5tYXRjaFJlbGF0aW9uLnByZXZpb3VzTG93ZXJNYXRjaC5pZCxcbiAgICAgICAgICAgIHN0YXRpY01lYXN1cmVtZW50cyxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc3QgY3VydmVPcHRpb25zOiBDdXJ2ZU9wdGlvbnMgPSB7XG4gICAgICAgICAgICAuLi5kaW1lbnNpb25zLmN1cnZlLFxuICAgICAgICAgICAgcGF0aDogeyAuLi5kaW1lbnNpb25zLnBhdGgsIGNsYXNzTmFtZTogJycgfSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgY29uc3QgY3VydmVGbiA9XG4gICAgICAgICAgICBpdGVtLnJvdW5kUmVsYXRpb24uY3VycmVudFJvdW5kLm1pcnJvclJvdW5kVHlwZSA9PT0gQlJBQ0tFVF9ST1VORF9NSVJST1JfVFlQRS5SSUdIVCA/IGN1cnZlSW52ZXJ0ZWQgOiBjdXJ2ZTtcblxuICAgICAgICAgIC8vIGRyYXcgdHdvIGxpbmVzIHRoYXQgbWVyZ2UgaW50byBvbmUgaW4gdGhlIG1pZGRsZVxuICAgICAgICAgIHN2Z1BhcnRzLnB1c2goXG4gICAgICAgICAgICBjdXJ2ZUZuKHByZXZpb3VzVXBwZXIsIGN1cnJlbnRNYXRjaFBvc2l0aW9uLCAnZG93bicsIHtcbiAgICAgICAgICAgICAgLi4uY3VydmVPcHRpb25zLFxuICAgICAgICAgICAgICBwYXRoOiB7IC4uLmN1cnZlT3B0aW9ucy5wYXRoLCBjbGFzc05hbWU6IGl0ZW0ubWF0Y2hSZWxhdGlvbi5wcmV2aW91c1VwcGVyTWF0Y2gud2lubmVyPy5zaG9ydElkIHx8ICcnIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICAgIHN2Z1BhcnRzLnB1c2goXG4gICAgICAgICAgICBjdXJ2ZUZuKHByZXZpb3VzTG93ZXIsIGN1cnJlbnRNYXRjaFBvc2l0aW9uLCAndXAnLCB7XG4gICAgICAgICAgICAgIC4uLmN1cnZlT3B0aW9ucyxcbiAgICAgICAgICAgICAgcGF0aDogeyAuLi5jdXJ2ZU9wdGlvbnMucGF0aCwgY2xhc3NOYW1lOiBpdGVtLm1hdGNoUmVsYXRpb24ucHJldmlvdXNMb3dlck1hdGNoLndpbm5lcj8uc2hvcnRJZCB8fCAnJyB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGl0ZW0ubWF0Y2hSZWxhdGlvbi5jdXJyZW50Um91bmQubWlycm9yUm91bmRUeXBlID09PSBCUkFDS0VUX1JPVU5EX01JUlJPUl9UWVBFLlJJR0hUICYmXG4gICAgICAgICAgICBpdGVtLm1hdGNoUmVsYXRpb24udHlwZSA9PT0gJ3R3by10by1vbmUnICYmXG4gICAgICAgICAgICBpdGVtLm1hdGNoUmVsYXRpb24ubmV4dFJvdW5kLm1pcnJvclJvdW5kVHlwZSA9PT0gbnVsbFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgLy8gZHJhdyBhIHN0cmFpZ2h0IGxpbmUgZm9yIHRoZSBzcGVjaWFsIGNhc2Ugb2YgY29ubmVjdGluZyB0aGUgZmluYWwgbWF0Y2ggdG8gdGhlIG1pcnJvcmVkIHNlbWkgZmluYWwgbWF0Y2hcblxuICAgICAgICAgICAgY29uc3QgbmV4dCA9IGdldE1hdGNoUG9zaXRpb24oXG4gICAgICAgICAgICAgIGl0ZW1zLmdldChpdGVtLm1hdGNoUmVsYXRpb24ubmV4dFJvdW5kLmlkKSxcbiAgICAgICAgICAgICAgaXRlbS5tYXRjaFJlbGF0aW9uLm5leHRNYXRjaC5pZCxcbiAgICAgICAgICAgICAgc3RhdGljTWVhc3VyZW1lbnRzLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgc3ZnUGFydHMucHVzaChsaW5lKG5leHQsIGN1cnJlbnRNYXRjaFBvc2l0aW9uLCB7IHBhdGg6IHBhdGhPcHRpb25zIH0pKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdmdQYXJ0cy5qb2luKCcnKTtcbn07XG4iXX0=
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import { TOURNAMENT_MODE, } from './bracket-new';
|
|
1
|
+
import { COMMON_BRACKET_ROUND_TYPE, TOURNAMENT_MODE, } from './bracket-new';
|
|
2
2
|
import { NewBracketDefaultMatchComponent } from './new-bracket-default-match.component';
|
|
3
3
|
import { NewBracketDefaultRoundHeaderComponent } from './new-bracket-default-round-header.component';
|
|
4
4
|
export const generateBracketGridItems = (bracketData, roundTypeMap, swissGroups, roundRelations, matchRelations, options) => {
|
|
5
5
|
const roundHeaderComponent = options.headerComponent ?? NewBracketDefaultRoundHeaderComponent;
|
|
6
6
|
const matchComponent = options.matchComponent ?? NewBracketDefaultMatchComponent;
|
|
7
|
+
const finalMatchComponent = options.finalMatchComponent ?? matchComponent;
|
|
7
8
|
const optionsWithDefaults = {
|
|
8
9
|
...options,
|
|
9
10
|
headerComponent: roundHeaderComponent,
|
|
10
11
|
matchComponent: matchComponent,
|
|
12
|
+
finalMatchComponent: finalMatchComponent,
|
|
11
13
|
};
|
|
12
14
|
switch (bracketData.mode) {
|
|
13
15
|
case TOURNAMENT_MODE.DOUBLE_ELIMINATION:
|
|
@@ -54,6 +56,7 @@ const generateGenericGridPlacements = (bracketData, roundTypeMap, roundRelations
|
|
|
54
56
|
rowStart: currentMatchRow,
|
|
55
57
|
rowEnd: ++currentMatchRow,
|
|
56
58
|
component: options.headerComponent,
|
|
59
|
+
className: 'et-bracket-new-item et-bracket-round-header-container',
|
|
57
60
|
roundRelation,
|
|
58
61
|
data: {
|
|
59
62
|
bracketRound: round,
|
|
@@ -69,15 +72,17 @@ const generateGenericGridPlacements = (bracketData, roundTypeMap, roundRelations
|
|
|
69
72
|
throw new Error('Match relation is missing');
|
|
70
73
|
}
|
|
71
74
|
const baseRow = match.indexInRound * matchHeight;
|
|
75
|
+
const participantShortIds = [match.home?.shortId, match.away?.shortId].filter((id) => !!id).join(' ');
|
|
72
76
|
const matchItem = {
|
|
73
77
|
type: 'match',
|
|
74
78
|
id: match.id,
|
|
75
79
|
layoutId: `${match.id}-layout`,
|
|
76
80
|
rowStart: baseRow + currentMatchRow,
|
|
77
81
|
rowEnd: baseRow + currentMatchRow + matchHeight,
|
|
78
|
-
component: options.matchComponent,
|
|
82
|
+
component: round.type === COMMON_BRACKET_ROUND_TYPE.FINAL ? options.finalMatchComponent : options.matchComponent,
|
|
79
83
|
matchRelation,
|
|
80
84
|
roundRelation,
|
|
85
|
+
className: `et-bracket-new-item et-bracket-match-container ${participantShortIds}`,
|
|
81
86
|
data: {
|
|
82
87
|
bracketRound: round,
|
|
83
88
|
bracketMatch: match,
|
|
@@ -97,4 +102,4 @@ const generateSwissWithEliminationGridPlacements = (bracketData, roundTypeMap, s
|
|
|
97
102
|
const gridItems = new Map();
|
|
98
103
|
return gridItems;
|
|
99
104
|
};
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wbGFjZW1lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL2JyYWNrZXQvY29tcG9uZW50cy9uZXctYnJhY2tldC9ncmlkLXBsYWNlbWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQVlMLGVBQWUsR0FDaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEYsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFvRXJHLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQ3RDLFdBQWdELEVBQ2hELFlBQXlELEVBQ3pELFdBQXdFLEVBQ3hFLGNBQTZELEVBQzdELGNBQWdFLEVBQ2hFLE9BQWdFLEVBQ2hFLEVBQUU7SUFDRixNQUFNLG9CQUFvQixHQUFHLE9BQU8sQ0FBQyxlQUFlLElBQUkscUNBQXFDLENBQUM7SUFDOUYsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLGNBQWMsSUFBSSwrQkFBK0IsQ0FBQztJQUVqRixNQUFNLG1CQUFtQixHQUF3RTtRQUMvRixHQUFHLE9BQU87UUFDVixlQUFlLEVBQUUsb0JBQW9CO1FBQ3JDLGNBQWMsRUFBRSxjQUFjO0tBQy9CLENBQUM7SUFFRixRQUFRLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixLQUFLLGVBQWUsQ0FBQyxrQkFBa0I7WUFDckMsT0FBTyx1Q0FBdUMsQ0FDNUMsV0FBVyxFQUNYLFlBQVksRUFDWixjQUFjLEVBQ2QsY0FBYyxFQUNkLG1CQUFtQixDQUNwQixDQUFDO1FBQ0osS0FBSyxlQUFlLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxXQUFXO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQztZQUUvRixPQUFPLDBDQUEwQyxDQUMvQyxXQUFXLEVBQ1gsWUFBWSxFQUNaLFdBQVcsRUFDWCxjQUFjLEVBQ2QsY0FBYyxFQUNkLG1CQUFtQixDQUNwQixDQUFDO1FBQ0osQ0FBQztRQUVEO1lBQ0UsT0FBTyw2QkFBNkIsQ0FDbEMsV0FBVyxFQUNYLFlBQVksRUFDWixjQUFjLEVBQ2QsY0FBYyxFQUNkLG1CQUFtQixDQUNwQixDQUFDO0lBQ04sQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sNkJBQTZCLEdBQUcsQ0FDcEMsV0FBZ0QsRUFDaEQsWUFBeUQsRUFDekQsY0FBNkQsRUFDN0QsY0FBZ0UsRUFDaEUsT0FBNEUsRUFDNUUsRUFBRTtJQUNGLE1BQU0sU0FBUyxHQUFzRSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQy9GLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDO0lBRTVELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELEtBQUssTUFBTSxLQUFLLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBQ2hELE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRW5ELElBQUksZUFBZSxHQUFHLENBQUMsQ0FBQztRQUV4QixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNwQyxNQUFNLFNBQVMsR0FBRyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBRWxDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUVELElBQUksYUFBYSxDQUFDLElBQUksS0FBSyxnQkFBZ0IsSUFBSSxhQUFhLENBQUMsSUFBSSxLQUFLLFlBQVksRUFBRSxDQUFDO1lBQ25GLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBaUQ7WUFDOUQsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQ1osUUFBUSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsU0FBUztZQUM5QixXQUFXO1lBQ1gsU0FBUztZQUNULGFBQWE7WUFDYixLQUFLLEVBQUUsSUFBSSxHQUFHLEVBQUU7U0FDakIsQ0FBQztRQUVGLElBQUksT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDaEMsTUFBTSxlQUFlLEdBQXVEO2dCQUMxRSxJQUFJLEVBQUUsT0FBTztnQkFDYixFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUU7Z0JBQ1osUUFBUSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsU0FBUztnQkFDOUIsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pCLE1BQU0sRUFBRSxFQUFFLGVBQWU7Z0JBQ3pCLFNBQVMsRUFBRSxPQUFPLENBQUMsZUFBZTtnQkFDbEMsYUFBYTtnQkFDYixJQUFJLEVBQUU7b0JBQ0osWUFBWSxFQUFFLEtBQUs7aUJBQ3BCO2FBQ0YsQ0FBQztZQUVGLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUVELE1BQU0sb0JBQW9CLEdBQUcsYUFBYSxDQUFDLElBQUksS0FBSyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDakgsTUFBTSxXQUFXLEdBQUcsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFcEUsS0FBSyxNQUFNLEtBQUssSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDM0MsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFbkQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7WUFDL0MsQ0FBQztZQUVELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO1lBRWpELE1BQU0sU0FBUyxHQUFpRDtnQkFDOUQsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNaLFFBQVEsRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLFNBQVM7Z0JBQzlCLFFBQVEsRUFBRSxPQUFPLEdBQUcsZUFBZTtnQkFDbkMsTUFBTSxFQUFFLE9BQU8sR0FBRyxlQUFlLEdBQUcsV0FBVztnQkFDL0MsU0FBUyxFQUFFLE9BQU8sQ0FBQyxjQUFjO2dCQUNqQyxhQUFhO2dCQUNiLGFBQWE7Z0JBQ2IsSUFBSSxFQUFFO29CQUNKLFlBQVksRUFBRSxLQUFLO29CQUNuQixZQUFZLEVBQUUsS0FBSztpQkFDcEI7YUFDRixDQUFDO1lBRUYsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBRUQsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFFRixNQUFNLHVDQUF1QyxHQUFHLENBQzlDLFdBQWdELEVBQ2hELFlBQXlELEVBQ3pELGNBQTZELEVBQzdELGNBQWdFLEVBQ2hFLE9BQTRFLEVBQzVFLEVBQUU7SUFDRixNQUFNLFNBQVMsR0FBc0UsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUUvRixPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFFRixNQUFNLDBDQUEwQyxHQUFHLENBQ2pELFdBQWdELEVBQ2hELFlBQXlELEVBQ3pELFdBQWlFLEVBQ2pFLGNBQTZELEVBQzdELGNBQWdFLEVBQ2hFLE9BQTRFLEVBQzVFLEVBQUU7SUFDRixNQUFNLFNBQVMsR0FBc0UsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUUvRixPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBJbnB1dFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQnJhY2tldERhdGEsXG4gIEJyYWNrZXRNYXRjaCxcbiAgQnJhY2tldE1hdGNoSWQsXG4gIEJyYWNrZXRNYXRjaFJlbGF0aW9uLFxuICBCcmFja2V0TWF0Y2hSZWxhdGlvbnNNYXAsXG4gIEJyYWNrZXRSb3VuZCxcbiAgQnJhY2tldFJvdW5kSWQsXG4gIEJyYWNrZXRSb3VuZE1hcFdpdGhTd2lzc0RhdGEsXG4gIEJyYWNrZXRSb3VuZFJlbGF0aW9uLFxuICBCcmFja2V0Um91bmRSZWxhdGlvbnMsXG4gIEJyYWNrZXRSb3VuZFR5cGVNYXAsXG4gIFRPVVJOQU1FTlRfTU9ERSxcbn0gZnJvbSAnLi9icmFja2V0LW5ldyc7XG5pbXBvcnQgeyBOZXdCcmFja2V0RGVmYXVsdE1hdGNoQ29tcG9uZW50IH0gZnJvbSAnLi9uZXctYnJhY2tldC1kZWZhdWx0LW1hdGNoLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZXdCcmFja2V0RGVmYXVsdFJvdW5kSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9uZXctYnJhY2tldC1kZWZhdWx0LXJvdW5kLWhlYWRlci5jb21wb25lbnQnO1xuXG5leHBvcnQgdHlwZSBCcmFja2V0Um91bmRIZWFkZXJDb21wb25lbnQ8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4gPSBDb21wb25lbnRUeXBlPHtcbiAgYnJhY2tldFJvdW5kOiBJbnB1dFNpZ25hbDxCcmFja2V0Um91bmQ8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4+O1xufT47XG5cbmV4cG9ydCB0eXBlIENvbXBvbmVudElucHV0VmFsdWU8VD4gPSAoKSA9PiB7XG4gIFtQIGluIGtleW9mIFRdOiBUW1BdIGV4dGVuZHMgSW5wdXRTaWduYWw8aW5mZXIgVT4gPyBVIDogbmV2ZXI7XG59O1xuXG5leHBvcnQgdHlwZSBCcmFja2V0TWF0Y2hDb21wb25lbnQ8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4gPSBDb21wb25lbnRUeXBlPHtcbiAgYnJhY2tldFJvdW5kOiBJbnB1dFNpZ25hbDxCcmFja2V0Um91bmQ8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4+O1xuICBicmFja2V0TWF0Y2g6IElucHV0U2lnbmFsPEJyYWNrZXRNYXRjaDxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPj47XG59PjtcblxuZXhwb3J0IHR5cGUgQnJhY2tldEdyaWRSb3VuZEl0ZW08VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4gPSB7XG4gIGlkOiBzdHJpbmc7XG4gIGxheW91dElkOiBzdHJpbmc7XG4gIGNvbHVtblN0YXJ0OiBudW1iZXI7XG4gIGNvbHVtbkVuZDogbnVtYmVyO1xuICByb3VuZFJlbGF0aW9uOiBCcmFja2V0Um91bmRSZWxhdGlvbjxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPjtcbiAgaXRlbXM6IE1hcDxCcmFja2V0Um91bmRJZCB8IEJyYWNrZXRNYXRjaElkLCBCcmFja2V0R3JpZEl0ZW08VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4+O1xufTtcblxuZXhwb3J0IHR5cGUgQnJhY2tldEdyaWRSb3VuZEhlYWRlckl0ZW08VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4gPSB7XG4gIHR5cGU6ICdyb3VuZCc7XG4gIGlkOiBzdHJpbmc7XG4gIGxheW91dElkOiBzdHJpbmc7XG4gIHJvd1N0YXJ0OiBudW1iZXI7XG4gIHJvd0VuZDogbnVtYmVyO1xuICBjb21wb25lbnQ6IEJyYWNrZXRSb3VuZEhlYWRlckNvbXBvbmVudDxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPjtcbiAgcm91bmRSZWxhdGlvbjogQnJhY2tldFJvdW5kUmVsYXRpb248VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT47XG4gIGRhdGE6IHtcbiAgICBicmFja2V0Um91bmQ6IEJyYWNrZXRSb3VuZDxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPjtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIEJyYWNrZXRHcmlkTWF0Y2hJdGVtPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+ID0ge1xuICB0eXBlOiAnbWF0Y2gnO1xuICBpZDogc3RyaW5nO1xuICBsYXlvdXRJZDogc3RyaW5nO1xuICByb3dTdGFydDogbnVtYmVyO1xuICByb3dFbmQ6IG51bWJlcjtcbiAgY29tcG9uZW50OiBCcmFja2V0TWF0Y2hDb21wb25lbnQ8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT47XG4gIG1hdGNoUmVsYXRpb246IEJyYWNrZXRNYXRjaFJlbGF0aW9uPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+O1xuICByb3VuZFJlbGF0aW9uOiBCcmFja2V0Um91bmRSZWxhdGlvbjxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPjtcbiAgZGF0YToge1xuICAgIGJyYWNrZXRSb3VuZDogQnJhY2tldFJvdW5kPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+O1xuICAgIGJyYWNrZXRNYXRjaDogQnJhY2tldE1hdGNoPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+O1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgQnJhY2tldEdyaWRJdGVtPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+ID1cbiAgfCBCcmFja2V0R3JpZFJvdW5kSGVhZGVySXRlbTxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPlxuICB8IEJyYWNrZXRHcmlkTWF0Y2hJdGVtPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+O1xuXG5leHBvcnQgdHlwZSBHZW5lcmF0ZUJyYWNrZXRHcmlkSXRlbXNPcHRpb25zPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+ID0ge1xuICBpbmNsdWRlUm91bmRIZWFkZXJzOiBib29sZWFuO1xuICBoZWFkZXJDb21wb25lbnQ/OiBCcmFja2V0Um91bmRIZWFkZXJDb21wb25lbnQ8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT47XG4gIG1hdGNoQ29tcG9uZW50PzogQnJhY2tldE1hdGNoQ29tcG9uZW50PFRSb3VuZERhdGEsIFRNYXRjaERhdGE+O1xufTtcblxuZXhwb3J0IHR5cGUgR2VuZXJhdGVCcmFja2V0R3JpZEl0ZW1zT3B0aW9uc1dpdGhEZWZhdWx0czxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPiA9IHtcbiAgaW5jbHVkZVJvdW5kSGVhZGVyczogYm9vbGVhbjtcbiAgaGVhZGVyQ29tcG9uZW50OiBCcmFja2V0Um91bmRIZWFkZXJDb21wb25lbnQ8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT47XG4gIG1hdGNoQ29tcG9uZW50OiBCcmFja2V0TWF0Y2hDb21wb25lbnQ8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT47XG59O1xuXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVCcmFja2V0R3JpZEl0ZW1zID0gPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+KFxuICBicmFja2V0RGF0YTogQnJhY2tldERhdGE8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4gIHJvdW5kVHlwZU1hcDogQnJhY2tldFJvdW5kVHlwZU1hcDxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPixcbiAgc3dpc3NHcm91cHM6IEJyYWNrZXRSb3VuZE1hcFdpdGhTd2lzc0RhdGE8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4gfCBudWxsLFxuICByb3VuZFJlbGF0aW9uczogQnJhY2tldFJvdW5kUmVsYXRpb25zPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+LFxuICBtYXRjaFJlbGF0aW9uczogQnJhY2tldE1hdGNoUmVsYXRpb25zTWFwPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+LFxuICBvcHRpb25zOiBHZW5lcmF0ZUJyYWNrZXRHcmlkSXRlbXNPcHRpb25zPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+LFxuKSA9PiB7XG4gIGNvbnN0IHJvdW5kSGVhZGVyQ29tcG9uZW50ID0gb3B0aW9ucy5oZWFkZXJDb21wb25lbnQgPz8gTmV3QnJhY2tldERlZmF1bHRSb3VuZEhlYWRlckNvbXBvbmVudDtcbiAgY29uc3QgbWF0Y2hDb21wb25lbnQgPSBvcHRpb25zLm1hdGNoQ29tcG9uZW50ID8/IE5ld0JyYWNrZXREZWZhdWx0TWF0Y2hDb21wb25lbnQ7XG5cbiAgY29uc3Qgb3B0aW9uc1dpdGhEZWZhdWx0czogR2VuZXJhdGVCcmFja2V0R3JpZEl0ZW1zT3B0aW9uc1dpdGhEZWZhdWx0czxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPiA9IHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGhlYWRlckNvbXBvbmVudDogcm91bmRIZWFkZXJDb21wb25lbnQsXG4gICAgbWF0Y2hDb21wb25lbnQ6IG1hdGNoQ29tcG9uZW50LFxuICB9O1xuXG4gIHN3aXRjaCAoYnJhY2tldERhdGEubW9kZSkge1xuICAgIGNhc2UgVE9VUk5BTUVOVF9NT0RFLkRPVUJMRV9FTElNSU5BVElPTjpcbiAgICAgIHJldHVybiBnZW5lcmF0ZURvdWJsZUVsaW1pbmF0aW9uR3JpZFBsYWNlbWVudHMoXG4gICAgICAgIGJyYWNrZXREYXRhLFxuICAgICAgICByb3VuZFR5cGVNYXAsXG4gICAgICAgIHJvdW5kUmVsYXRpb25zLFxuICAgICAgICBtYXRjaFJlbGF0aW9ucyxcbiAgICAgICAgb3B0aW9uc1dpdGhEZWZhdWx0cyxcbiAgICAgICk7XG4gICAgY2FzZSBUT1VSTkFNRU5UX01PREUuU1dJU1NfV0lUSF9FTElNSU5BVElPTjoge1xuICAgICAgaWYgKCFzd2lzc0dyb3VwcykgdGhyb3cgbmV3IEVycm9yKCdTd2lzcyBncm91cHMgYXJlIHJlcXVpcmVkIGZvciBzd2lzcyB3aXRoIGVsaW1pbmF0aW9uIG1vZGUnKTtcblxuICAgICAgcmV0dXJuIGdlbmVyYXRlU3dpc3NXaXRoRWxpbWluYXRpb25HcmlkUGxhY2VtZW50cyhcbiAgICAgICAgYnJhY2tldERhdGEsXG4gICAgICAgIHJvdW5kVHlwZU1hcCxcbiAgICAgICAgc3dpc3NHcm91cHMsXG4gICAgICAgIHJvdW5kUmVsYXRpb25zLFxuICAgICAgICBtYXRjaFJlbGF0aW9ucyxcbiAgICAgICAgb3B0aW9uc1dpdGhEZWZhdWx0cyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBnZW5lcmF0ZUdlbmVyaWNHcmlkUGxhY2VtZW50cyhcbiAgICAgICAgYnJhY2tldERhdGEsXG4gICAgICAgIHJvdW5kVHlwZU1hcCxcbiAgICAgICAgcm91bmRSZWxhdGlvbnMsXG4gICAgICAgIG1hdGNoUmVsYXRpb25zLFxuICAgICAgICBvcHRpb25zV2l0aERlZmF1bHRzLFxuICAgICAgKTtcbiAgfVxufTtcblxuY29uc3QgZ2VuZXJhdGVHZW5lcmljR3JpZFBsYWNlbWVudHMgPSA8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4oXG4gIGJyYWNrZXREYXRhOiBCcmFja2V0RGF0YTxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPixcbiAgcm91bmRUeXBlTWFwOiBCcmFja2V0Um91bmRUeXBlTWFwPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+LFxuICByb3VuZFJlbGF0aW9uczogQnJhY2tldFJvdW5kUmVsYXRpb25zPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+LFxuICBtYXRjaFJlbGF0aW9uczogQnJhY2tldE1hdGNoUmVsYXRpb25zTWFwPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+LFxuICBvcHRpb25zOiBHZW5lcmF0ZUJyYWNrZXRHcmlkSXRlbXNPcHRpb25zV2l0aERlZmF1bHRzPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+LFxuKSA9PiB7XG4gIGNvbnN0IGdyaWRJdGVtczogTWFwPEJyYWNrZXRSb3VuZElkLCBCcmFja2V0R3JpZFJvdW5kSXRlbTxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPj4gPSBuZXcgTWFwKCk7XG4gIGNvbnN0IGZpcnN0Um91bmQgPSBicmFja2V0RGF0YS5yb3VuZHMudmFsdWVzKCkubmV4dCgpLnZhbHVlO1xuXG4gIGlmICghZmlyc3RSb3VuZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignRmlyc3Qgcm91bmQgaXMgbWlzc2luZycpO1xuICB9XG5cbiAgZm9yIChjb25zdCByb3VuZCBvZiBicmFja2V0RGF0YS5yb3VuZHMudmFsdWVzKCkpIHtcbiAgICBjb25zdCByb3VuZFJlbGF0aW9uID0gcm91bmRSZWxhdGlvbnMuZ2V0KHJvdW5kLmlkKTtcblxuICAgIGxldCBjdXJyZW50TWF0Y2hSb3cgPSAxO1xuXG4gICAgY29uc3QgY29sdW1uU3RhcnQgPSByb3VuZC5pbmRleCArIDE7XG4gICAgY29uc3QgY29sdW1uRW5kID0gY29sdW1uU3RhcnQgKyAxO1xuXG4gICAgaWYgKCFyb3VuZFJlbGF0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JvdW5kIHJlbGF0aW9uIGlzIG1pc3NpbmcnKTtcbiAgICB9XG5cbiAgICBpZiAocm91bmRSZWxhdGlvbi50eXBlID09PSAndHdvLXRvLW5vdGhpbmcnIHx8IHJvdW5kUmVsYXRpb24udHlwZSA9PT0gJ3R3by10by1vbmUnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcmVsYXRpb24gdHlwZSAke3JvdW5kUmVsYXRpb24udHlwZX1gKTtcbiAgICB9XG5cbiAgICBjb25zdCByb3VuZEl0ZW06IEJyYWNrZXRHcmlkUm91bmRJdGVtPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+ID0ge1xuICAgICAgaWQ6IHJvdW5kLmlkLFxuICAgICAgbGF5b3V0SWQ6IGAke3JvdW5kLmlkfS1sYXlvdXRgLFxuICAgICAgY29sdW1uU3RhcnQsXG4gICAgICBjb2x1bW5FbmQsXG4gICAgICByb3VuZFJlbGF0aW9uLFxuICAgICAgaXRlbXM6IG5ldyBNYXAoKSxcbiAgICB9O1xuXG4gICAgaWYgKG9wdGlvbnMuaW5jbHVkZVJvdW5kSGVhZGVycykge1xuICAgICAgY29uc3Qgcm91bmRIZWFkZXJJdGVtOiBCcmFja2V0R3JpZFJvdW5kSGVhZGVySXRlbTxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPiA9IHtcbiAgICAgICAgdHlwZTogJ3JvdW5kJyxcbiAgICAgICAgaWQ6IHJvdW5kLmlkLFxuICAgICAgICBsYXlvdXRJZDogYCR7cm91bmQuaWR9LWxheW91dGAsXG4gICAgICAgIHJvd1N0YXJ0OiBjdXJyZW50TWF0Y2hSb3csXG4gICAgICAgIHJvd0VuZDogKytjdXJyZW50TWF0Y2hSb3csXG4gICAgICAgIGNvbXBvbmVudDogb3B0aW9ucy5oZWFkZXJDb21wb25lbnQsXG4gICAgICAgIHJvdW5kUmVsYXRpb24sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBicmFja2V0Um91bmQ6IHJvdW5kLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgcm91bmRJdGVtLml0ZW1zLnNldChyb3VuZC5pZCwgcm91bmRIZWFkZXJJdGVtKTtcbiAgICB9XG5cbiAgICBjb25zdCByb290Um91bmRNYXRjaEZhY3RvciA9IHJvdW5kUmVsYXRpb24udHlwZSAhPT0gJ25vdGhpbmctdG8tb25lJyA/IHJvdW5kUmVsYXRpb24ucm9vdFJvdW5kTWF0Y2hGYWN0b3IgOiBudWxsO1xuICAgIGNvbnN0IG1hdGNoSGVpZ2h0ID0gcm9vdFJvdW5kTWF0Y2hGYWN0b3IgPyByb290Um91bmRNYXRjaEZhY3RvciA6IDE7XG5cbiAgICBmb3IgKGNvbnN0IG1hdGNoIG9mIHJvdW5kLm1hdGNoZXMudmFsdWVzKCkpIHtcbiAgICAgIGNvbnN0IG1hdGNoUmVsYXRpb24gPSBtYXRjaFJlbGF0aW9ucy5nZXQobWF0Y2guaWQpO1xuXG4gICAgICBpZiAoIW1hdGNoUmVsYXRpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNYXRjaCByZWxhdGlvbiBpcyBtaXNzaW5nJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGJhc2VSb3cgPSBtYXRjaC5pbmRleEluUm91bmQgKiBtYXRjaEhlaWdodDtcblxuICAgICAgY29uc3QgbWF0Y2hJdGVtOiBCcmFja2V0R3JpZE1hdGNoSXRlbTxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPiA9IHtcbiAgICAgICAgdHlwZTogJ21hdGNoJyxcbiAgICAgICAgaWQ6IG1hdGNoLmlkLFxuICAgICAgICBsYXlvdXRJZDogYCR7bWF0Y2guaWR9LWxheW91dGAsXG4gICAgICAgIHJvd1N0YXJ0OiBiYXNlUm93ICsgY3VycmVudE1hdGNoUm93LFxuICAgICAgICByb3dFbmQ6IGJhc2VSb3cgKyBjdXJyZW50TWF0Y2hSb3cgKyBtYXRjaEhlaWdodCxcbiAgICAgICAgY29tcG9uZW50OiBvcHRpb25zLm1hdGNoQ29tcG9uZW50LFxuICAgICAgICBtYXRjaFJlbGF0aW9uLFxuICAgICAgICByb3VuZFJlbGF0aW9uLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgYnJhY2tldFJvdW5kOiByb3VuZCxcbiAgICAgICAgICBicmFja2V0TWF0Y2g6IG1hdGNoLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgcm91bmRJdGVtLml0ZW1zLnNldChtYXRjaC5pZCwgbWF0Y2hJdGVtKTtcbiAgICB9XG5cbiAgICBncmlkSXRlbXMuc2V0KHJvdW5kLmlkLCByb3VuZEl0ZW0pO1xuICB9XG5cbiAgcmV0dXJuIGdyaWRJdGVtcztcbn07XG5cbmNvbnN0IGdlbmVyYXRlRG91YmxlRWxpbWluYXRpb25HcmlkUGxhY2VtZW50cyA9IDxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPihcbiAgYnJhY2tldERhdGE6IEJyYWNrZXREYXRhPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+LFxuICByb3VuZFR5cGVNYXA6IEJyYWNrZXRSb3VuZFR5cGVNYXA8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4gIHJvdW5kUmVsYXRpb25zOiBCcmFja2V0Um91bmRSZWxhdGlvbnM8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4gIG1hdGNoUmVsYXRpb25zOiBCcmFja2V0TWF0Y2hSZWxhdGlvbnNNYXA8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4gIG9wdGlvbnM6IEdlbmVyYXRlQnJhY2tldEdyaWRJdGVtc09wdGlvbnNXaXRoRGVmYXVsdHM8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4pID0+IHtcbiAgY29uc3QgZ3JpZEl0ZW1zOiBNYXA8QnJhY2tldFJvdW5kSWQsIEJyYWNrZXRHcmlkUm91bmRJdGVtPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+PiA9IG5ldyBNYXAoKTtcblxuICByZXR1cm4gZ3JpZEl0ZW1zO1xufTtcblxuY29uc3QgZ2VuZXJhdGVTd2lzc1dpdGhFbGltaW5hdGlvbkdyaWRQbGFjZW1lbnRzID0gPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+KFxuICBicmFja2V0RGF0YTogQnJhY2tldERhdGE8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4gIHJvdW5kVHlwZU1hcDogQnJhY2tldFJvdW5kVHlwZU1hcDxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPixcbiAgc3dpc3NHcm91cHM6IEJyYWNrZXRSb3VuZE1hcFdpdGhTd2lzc0RhdGE8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4gIHJvdW5kUmVsYXRpb25zOiBCcmFja2V0Um91bmRSZWxhdGlvbnM8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4gIG1hdGNoUmVsYXRpb25zOiBCcmFja2V0TWF0Y2hSZWxhdGlvbnNNYXA8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4gIG9wdGlvbnM6IEdlbmVyYXRlQnJhY2tldEdyaWRJdGVtc09wdGlvbnNXaXRoRGVmYXVsdHM8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4pID0+IHtcbiAgY29uc3QgZ3JpZEl0ZW1zOiBNYXA8QnJhY2tldFJvdW5kSWQsIEJyYWNrZXRHcmlkUm91bmRJdGVtPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+PiA9IG5ldyBNYXAoKTtcblxuICByZXR1cm4gZ3JpZEl0ZW1zO1xufTtcbiJdfQ==
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wbGFjZW1lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL2JyYWNrZXQvY29tcG9uZW50cy9uZXctYnJhY2tldC9ncmlkLXBsYWNlbWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQVlMLHlCQUF5QixFQUN6QixlQUFlLEdBQ2hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBd0VyRyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUN0QyxXQUFnRCxFQUNoRCxZQUF5RCxFQUN6RCxXQUF3RSxFQUN4RSxjQUE2RCxFQUM3RCxjQUFnRSxFQUNoRSxPQUFnRSxFQUNoRSxFQUFFO0lBQ0YsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLENBQUMsZUFBZSxJQUFJLHFDQUFxQyxDQUFDO0lBQzlGLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxjQUFjLElBQUksK0JBQStCLENBQUM7SUFDakYsTUFBTSxtQkFBbUIsR0FBRyxPQUFPLENBQUMsbUJBQW1CLElBQUksY0FBYyxDQUFDO0lBRTFFLE1BQU0sbUJBQW1CLEdBQXdFO1FBQy9GLEdBQUcsT0FBTztRQUNWLGVBQWUsRUFBRSxvQkFBb0I7UUFDckMsY0FBYyxFQUFFLGNBQWM7UUFDOUIsbUJBQW1CLEVBQUUsbUJBQW1CO0tBQ3pDLENBQUM7SUFFRixRQUFRLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixLQUFLLGVBQWUsQ0FBQyxrQkFBa0I7WUFDckMsT0FBTyx1Q0FBdUMsQ0FDNUMsV0FBVyxFQUNYLFlBQVksRUFDWixjQUFjLEVBQ2QsY0FBYyxFQUNkLG1CQUFtQixDQUNwQixDQUFDO1FBQ0osS0FBSyxlQUFl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WUFBWSxFQUFFLEtBQUs7aUJBQ3BCO2FBQ0YsQ0FBQztZQUVGLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUVELFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBRUYsTUFBTSx1Q0FBdUMsR0FBRyxDQUM5QyxXQUFnRCxFQUNoRCxZQUF5RCxFQUN6RCxjQUE2RCxFQUM3RCxjQUFnRSxFQUNoRSxPQUE0RSxFQUM1RSxFQUFFO0lBQ0YsTUFBTSxTQUFTLEdBQXNFLElBQUksR0FBRyxFQUFFLENBQUM7SUFFL0YsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBRUYsTUFBTSwwQ0FBMEMsR0FBRyxDQUNqRCxXQUFnRCxFQUNoRCxZQUF5RCxFQUN6RCxXQUFpRSxFQUNqRSxjQUE2RCxFQUM3RCxjQUFnRSxFQUNoRSxPQUE0RSxFQUM1RSxFQUFFO0lBQ0YsTUFBTSxTQUFTLEdBQXNFLElBQUksR0FBRyxFQUFFLENBQUM7SUFFL0YsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgSW5wdXRTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJyYWNrZXREYXRhLFxuICBCcmFja2V0TWF0Y2gsXG4gIEJyYWNrZXRNYXRjaElkLFxuICBCcmFja2V0TWF0Y2hSZWxhdGlvbixcbiAgQnJhY2tldE1hdGNoUmVsYXRpb25zTWFwLFxuICBCcmFja2V0Um91bmQsXG4gIEJyYWNrZXRSb3VuZElkLFxuICBCcmFja2V0Um91bmRNYXBXaXRoU3dpc3NEYXRhLFxuICBCcmFja2V0Um91bmRSZWxhdGlvbixcbiAgQnJhY2tldFJvdW5kUmVsYXRpb25zLFxuICBCcmFja2V0Um91bmRUeXBlTWFwLFxuICBDT01NT05fQlJBQ0tFVF9ST1VORF9UWVBFLFxuICBUT1VSTkFNRU5UX01PREUsXG59IGZyb20gJy4vYnJhY2tldC1uZXcnO1xuaW1wb3J0IHsgTmV3QnJhY2tldERlZmF1bHRNYXRjaENvbXBvbmVudCB9IGZyb20gJy4vbmV3LWJyYWNrZXQtZGVmYXVsdC1tYXRjaC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmV3QnJhY2tldERlZmF1bHRSb3VuZEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vbmV3LWJyYWNrZXQtZGVmYXVsdC1yb3VuZC1oZWFkZXIuY29tcG9uZW50JztcblxuZXhwb3J0IHR5cGUgQnJhY2tldFJvdW5kSGVhZGVyQ29tcG9uZW50PFRSb3VuZERhdGEsIFRNYXRjaERhdGE+ID0gQ29tcG9uZW50VHlwZTx7XG4gIGJyYWNrZXRSb3VuZDogSW5wdXRTaWduYWw8QnJhY2tldFJvdW5kPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+Pjtcbn0+O1xuXG5leHBvcnQgdHlwZSBDb21wb25lbnRJbnB1dFZhbHVlPFQ+ID0gKCkgPT4ge1xuICBbUCBpbiBrZXlvZiBUXTogVFtQXSBleHRlbmRzIElucHV0U2lnbmFsPGluZmVyIFU+ID8gVSA6IG5ldmVyO1xufTtcblxuZXhwb3J0IHR5cGUgQnJhY2tldE1hdGNoQ29tcG9uZW50PFRSb3VuZERhdGEsIFRNYXRjaERhdGE+ID0gQ29tcG9uZW50VHlwZTx7XG4gIGJyYWNrZXRSb3VuZDogSW5wdXRTaWduYWw8QnJhY2tldFJvdW5kPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+PjtcbiAgYnJhY2tldE1hdGNoOiBJbnB1dFNpZ25hbDxCcmFja2V0TWF0Y2g8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4+O1xufT47XG5cbmV4cG9ydCB0eXBlIEJyYWNrZXRHcmlkUm91bmRJdGVtPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+ID0ge1xuICBpZDogc3RyaW5nO1xuICBsYXlvdXRJZDogc3RyaW5nO1xuICBjb2x1bW5TdGFydDogbnVtYmVyO1xuICBjb2x1bW5FbmQ6IG51bWJlcjtcbiAgcm91bmRSZWxhdGlvbjogQnJhY2tldFJvdW5kUmVsYXRpb248VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT47XG4gIGl0ZW1zOiBNYXA8QnJhY2tldFJvdW5kSWQgfCBCcmFja2V0TWF0Y2hJZCwgQnJhY2tldEdyaWRJdGVtPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+Pjtcbn07XG5cbmV4cG9ydCB0eXBlIEJyYWNrZXRHcmlkUm91bmRIZWFkZXJJdGVtPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+ID0ge1xuICB0eXBlOiAncm91bmQnO1xuICBpZDogc3RyaW5nO1xuICBsYXlvdXRJZDogc3RyaW5nO1xuICByb3dTdGFydDogbnVtYmVyO1xuICByb3dFbmQ6IG51bWJlcjtcbiAgY2xhc3NOYW1lOiBzdHJpbmc7XG4gIGNvbXBvbmVudDogQnJhY2tldFJvdW5kSGVhZGVyQ29tcG9uZW50PFRSb3VuZERhdGEsIFRNYXRjaERhdGE+O1xuICByb3VuZFJlbGF0aW9uOiBCcmFja2V0Um91bmRSZWxhdGlvbjxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPjtcbiAgZGF0YToge1xuICAgIGJyYWNrZXRSb3VuZDogQnJhY2tldFJvdW5kPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+O1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgQnJhY2tldEdyaWRNYXRjaEl0ZW08VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4gPSB7XG4gIHR5cGU6ICdtYXRjaCc7XG4gIGlkOiBzdHJpbmc7XG4gIGxheW91dElkOiBzdHJpbmc7XG4gIHJvd1N0YXJ0OiBudW1iZXI7XG4gIHJvd0VuZDogbnVtYmVyO1xuICBjbGFzc05hbWU6IHN0cmluZztcbiAgY29tcG9uZW50OiBCcmFja2V0TWF0Y2hDb21wb25lbnQ8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT47XG4gIG1hdGNoUmVsYXRpb246IEJyYWNrZXRNYXRjaFJlbGF0aW9uPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+O1xuICByb3VuZFJlbGF0aW9uOiBCcmFja2V0Um91bmRSZWxhdGlvbjxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPjtcbiAgZGF0YToge1xuICAgIGJyYWNrZXRSb3VuZDogQnJhY2tldFJvdW5kPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+O1xuICAgIGJyYWNrZXRNYXRjaDogQnJhY2tldE1hdGNoPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+O1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgQnJhY2tldEdyaWRJdGVtPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+ID1cbiAgfCBCcmFja2V0R3JpZFJvdW5kSGVhZGVySXRlbTxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPlxuICB8IEJyYWNrZXRHcmlkTWF0Y2hJdGVtPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+O1xuXG5leHBvcnQgdHlwZSBHZW5lcmF0ZUJyYWNrZXRHcmlkSXRlbXNPcHRpb25zPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+ID0ge1xuICBpbmNsdWRlUm91bmRIZWFkZXJzOiBib29sZWFuO1xuICBoZWFkZXJDb21wb25lbnQ/OiBCcmFja2V0Um91bmRIZWFkZXJDb21wb25lbnQ8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT47XG4gIG1hdGNoQ29tcG9uZW50PzogQnJhY2tldE1hdGNoQ29tcG9uZW50PFRSb3VuZERhdGEsIFRNYXRjaERhdGE+O1xuICBmaW5hbE1hdGNoQ29tcG9uZW50PzogQnJhY2tldE1hdGNoQ29tcG9uZW50PFRSb3VuZERhdGEsIFRNYXRjaERhdGE+O1xufTtcblxuZXhwb3J0IHR5cGUgR2VuZXJhdGVCcmFja2V0R3JpZEl0ZW1zT3B0aW9uc1dpdGhEZWZhdWx0czxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPiA9IHtcbiAgaW5jbHVkZVJvdW5kSGVhZGVyczogYm9vbGVhbjtcbiAgaGVhZGVyQ29tcG9uZW50OiBCcmFja2V0Um91bmRIZWFkZXJDb21wb25lbnQ8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT47XG4gIG1hdGNoQ29tcG9uZW50OiBCcmFja2V0TWF0Y2hDb21wb25lbnQ8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT47XG4gIGZpbmFsTWF0Y2hDb21wb25lbnQ6IEJyYWNrZXRNYXRjaENvbXBvbmVudDxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZUJyYWNrZXRHcmlkSXRlbXMgPSA8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4oXG4gIGJyYWNrZXREYXRhOiBCcmFja2V0RGF0YTxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPixcbiAgcm91bmRUeXBlTWFwOiBCcmFja2V0Um91bmRUeXBlTWFwPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+LFxuICBzd2lzc0dyb3VwczogQnJhY2tldFJvdW5kTWFwV2l0aFN3aXNzRGF0YTxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPiB8IG51bGwsXG4gIHJvdW5kUmVsYXRpb25zOiBCcmFja2V0Um91bmRSZWxhdGlvbnM8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4gIG1hdGNoUmVsYXRpb25zOiBCcmFja2V0TWF0Y2hSZWxhdGlvbnNNYXA8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4gIG9wdGlvbnM6IEdlbmVyYXRlQnJhY2tldEdyaWRJdGVtc09wdGlvbnM8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4pID0+IHtcbiAgY29uc3Qgcm91bmRIZWFkZXJDb21wb25lbnQgPSBvcHRpb25zLmhlYWRlckNvbXBvbmVudCA/PyBOZXdCcmFja2V0RGVmYXVsdFJvdW5kSGVhZGVyQ29tcG9uZW50O1xuICBjb25zdCBtYXRjaENvbXBvbmVudCA9IG9wdGlvbnMubWF0Y2hDb21wb25lbnQgPz8gTmV3QnJhY2tldERlZmF1bHRNYXRjaENvbXBvbmVudDtcbiAgY29uc3QgZmluYWxNYXRjaENvbXBvbmVudCA9IG9wdGlvbnMuZmluYWxNYXRjaENvbXBvbmVudCA/PyBtYXRjaENvbXBvbmVudDtcblxuICBjb25zdCBvcHRpb25zV2l0aERlZmF1bHRzOiBHZW5lcmF0ZUJyYWNrZXRHcmlkSXRlbXNPcHRpb25zV2l0aERlZmF1bHRzPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+ID0ge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgaGVhZGVyQ29tcG9uZW50OiByb3VuZEhlYWRlckNvbXBvbmVudCxcbiAgICBtYXRjaENvbXBvbmVudDogbWF0Y2hDb21wb25lbnQsXG4gICAgZmluYWxNYXRjaENvbXBvbmVudDogZmluYWxNYXRjaENvbXBvbmVudCxcbiAgfTtcblxuICBzd2l0Y2ggKGJyYWNrZXREYXRhLm1vZGUpIHtcbiAgICBjYXNlIFRPVVJOQU1FTlRfTU9ERS5ET1VCTEVfRUxJTUlOQVRJT046XG4gICAgICByZXR1cm4gZ2VuZXJhdGVEb3VibGVFbGltaW5hdGlvbkdyaWRQbGFjZW1lbnRzKFxuICAgICAgICBicmFja2V0RGF0YSxcbiAgICAgICAgcm91bmRUeXBlTWFwLFxuICAgICAgICByb3VuZFJlbGF0aW9ucyxcbiAgICAgICAgbWF0Y2hSZWxhdGlvbnMsXG4gICAgICAgIG9wdGlvbnNXaXRoRGVmYXVsdHMsXG4gICAgICApO1xuICAgIGNhc2UgVE9VUk5BTUVOVF9NT0RFLlNXSVNTX1dJVEhfRUxJTUlOQVRJT046IHtcbiAgICAgIGlmICghc3dpc3NHcm91cHMpIHRocm93IG5ldyBFcnJvcignU3dpc3MgZ3JvdXBzIGFyZSByZXF1aXJlZCBmb3Igc3dpc3Mgd2l0aCBlbGltaW5hdGlvbiBtb2RlJyk7XG5cbiAgICAgIHJldHVybiBnZW5lcmF0ZVN3aXNzV2l0aEVsaW1pbmF0aW9uR3JpZFBsYWNlbWVudHMoXG4gICAgICAgIGJyYWNrZXREYXRhLFxuICAgICAgICByb3VuZFR5cGVNYXAsXG4gICAgICAgIHN3aXNzR3JvdXBzLFxuICAgICAgICByb3VuZFJlbGF0aW9ucyxcbiAgICAgICAgbWF0Y2hSZWxhdGlvbnMsXG4gICAgICAgIG9wdGlvbnNXaXRoRGVmYXVsdHMsXG4gICAgICApO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZ2VuZXJhdGVHZW5lcmljR3JpZFBsYWNlbWVudHMoXG4gICAgICAgIGJyYWNrZXREYXRhLFxuICAgICAgICByb3VuZFR5cGVNYXAsXG4gICAgICAgIHJvdW5kUmVsYXRpb25zLFxuICAgICAgICBtYXRjaFJlbGF0aW9ucyxcbiAgICAgICAgb3B0aW9uc1dpdGhEZWZhdWx0cyxcbiAgICAgICk7XG4gIH1cbn07XG5cbmNvbnN0IGdlbmVyYXRlR2VuZXJpY0dyaWRQbGFjZW1lbnRzID0gPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+KFxuICBicmFja2V0RGF0YTogQnJhY2tldERhdGE8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4gIHJvdW5kVHlwZU1hcDogQnJhY2tldFJvdW5kVHlwZU1hcDxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPixcbiAgcm91bmRSZWxhdGlvbnM6IEJyYWNrZXRSb3VuZFJlbGF0aW9uczxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPixcbiAgbWF0Y2hSZWxhdGlvbnM6IEJyYWNrZXRNYXRjaFJlbGF0aW9uc01hcDxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPixcbiAgb3B0aW9uczogR2VuZXJhdGVCcmFja2V0R3JpZEl0ZW1zT3B0aW9uc1dpdGhEZWZhdWx0czxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPixcbikgPT4ge1xuICBjb25zdCBncmlkSXRlbXM6IE1hcDxCcmFja2V0Um91bmRJZCwgQnJhY2tldEdyaWRSb3VuZEl0ZW08VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4+ID0gbmV3IE1hcCgpO1xuICBjb25zdCBmaXJzdFJvdW5kID0gYnJhY2tldERhdGEucm91bmRzLnZhbHVlcygpLm5leHQoKS52YWx1ZTtcblxuICBpZiAoIWZpcnN0Um91bmQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZpcnN0IHJvdW5kIGlzIG1pc3NpbmcnKTtcbiAgfVxuXG4gIGZvciAoY29uc3Qgcm91bmQgb2YgYnJhY2tldERhdGEucm91bmRzLnZhbHVlcygpKSB7XG4gICAgY29uc3Qgcm91bmRSZWxhdGlvbiA9IHJvdW5kUmVsYXRpb25zLmdldChyb3VuZC5pZCk7XG5cbiAgICBsZXQgY3VycmVudE1hdGNoUm93ID0gMTtcblxuICAgIGNvbnN0IGNvbHVtblN0YXJ0ID0gcm91bmQuaW5kZXggKyAxO1xuICAgIGNvbnN0IGNvbHVtbkVuZCA9IGNvbHVtblN0YXJ0ICsgMTtcblxuICAgIGlmICghcm91bmRSZWxhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSb3VuZCByZWxhdGlvbiBpcyBtaXNzaW5nJyk7XG4gICAgfVxuXG4gICAgaWYgKHJvdW5kUmVsYXRpb24udHlwZSA9PT0gJ3R3by10by1ub3RoaW5nJyB8fCByb3VuZFJlbGF0aW9uLnR5cGUgPT09ICd0d28tdG8tb25lJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHJlbGF0aW9uIHR5cGUgJHtyb3VuZFJlbGF0aW9uLnR5cGV9YCk7XG4gICAgfVxuXG4gICAgY29uc3Qgcm91bmRJdGVtOiBCcmFja2V0R3JpZFJvdW5kSXRlbTxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPiA9IHtcbiAgICAgIGlkOiByb3VuZC5pZCxcbiAgICAgIGxheW91dElkOiBgJHtyb3VuZC5pZH0tbGF5b3V0YCxcbiAgICAgIGNvbHVtblN0YXJ0LFxuICAgICAgY29sdW1uRW5kLFxuICAgICAgcm91bmRSZWxhdGlvbixcbiAgICAgIGl0ZW1zOiBuZXcgTWFwKCksXG4gICAgfTtcblxuICAgIGlmIChvcHRpb25zLmluY2x1ZGVSb3VuZEhlYWRlcnMpIHtcbiAgICAgIGNvbnN0IHJvdW5kSGVhZGVySXRlbTogQnJhY2tldEdyaWRSb3VuZEhlYWRlckl0ZW08VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4gPSB7XG4gICAgICAgIHR5cGU6ICdyb3VuZCcsXG4gICAgICAgIGlkOiByb3VuZC5pZCxcbiAgICAgICAgbGF5b3V0SWQ6IGAke3JvdW5kLmlkfS1sYXlvdXRgLFxuICAgICAgICByb3dTdGFydDogY3VycmVudE1hdGNoUm93LFxuICAgICAgICByb3dFbmQ6ICsrY3VycmVudE1hdGNoUm93LFxuICAgICAgICBjb21wb25lbnQ6IG9wdGlvbnMuaGVhZGVyQ29tcG9uZW50LFxuICAgICAgICBjbGFzc05hbWU6ICdldC1icmFja2V0LW5ldy1pdGVtIGV0LWJyYWNrZXQtcm91bmQtaGVhZGVyLWNvbnRhaW5lcicsXG4gICAgICAgIHJvdW5kUmVsYXRpb24sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBicmFja2V0Um91bmQ6IHJvdW5kLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgcm91bmRJdGVtLml0ZW1zLnNldChyb3VuZC5pZCwgcm91bmRIZWFkZXJJdGVtKTtcbiAgICB9XG5cbiAgICBjb25zdCByb290Um91bmRNYXRjaEZhY3RvciA9IHJvdW5kUmVsYXRpb24udHlwZSAhPT0gJ25vdGhpbmctdG8tb25lJyA/IHJvdW5kUmVsYXRpb24ucm9vdFJvdW5kTWF0Y2hGYWN0b3IgOiBudWxsO1xuICAgIGNvbnN0IG1hdGNoSGVpZ2h0ID0gcm9vdFJvdW5kTWF0Y2hGYWN0b3IgPyByb290Um91bmRNYXRjaEZhY3RvciA6IDE7XG5cbiAgICBmb3IgKGNvbnN0IG1hdGNoIG9mIHJvdW5kLm1hdGNoZXMudmFsdWVzKCkpIHtcbiAgICAgIGNvbnN0IG1hdGNoUmVsYXRpb24gPSBtYXRjaFJlbGF0aW9ucy5nZXQobWF0Y2guaWQpO1xuXG4gICAgICBpZiAoIW1hdGNoUmVsYXRpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNYXRjaCByZWxhdGlvbiBpcyBtaXNzaW5nJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGJhc2VSb3cgPSBtYXRjaC5pbmRleEluUm91bmQgKiBtYXRjaEhlaWdodDtcblxuICAgICAgY29uc3QgcGFydGljaXBhbnRTaG9ydElkcyA9IFttYXRjaC5ob21lPy5zaG9ydElkLCBtYXRjaC5hd2F5Py5zaG9ydElkXS5maWx0ZXIoKGlkKSA9PiAhIWlkKS5qb2luKCcgJyk7XG5cbiAgICAgIGNvbnN0IG1hdGNoSXRlbTogQnJhY2tldEdyaWRNYXRjaEl0ZW08VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4gPSB7XG4gICAgICAgIHR5cGU6ICdtYXRjaCcsXG4gICAgICAgIGlkOiBtYXRjaC5pZCxcbiAgICAgICAgbGF5b3V0SWQ6IGAke21hdGNoLmlkfS1sYXlvdXRgLFxuICAgICAgICByb3dTdGFydDogYmFzZVJvdyArIGN1cnJlbnRNYXRjaFJvdyxcbiAgICAgICAgcm93RW5kOiBiYXNlUm93ICsgY3VycmVudE1hdGNoUm93ICsgbWF0Y2hIZWlnaHQsXG4gICAgICAgIGNvbXBvbmVudDpcbiAgICAgICAgICByb3VuZC50eXBlID09PSBDT01NT05fQlJBQ0tFVF9ST1VORF9UWVBFLkZJTkFMID8gb3B0aW9ucy5maW5hbE1hdGNoQ29tcG9uZW50IDogb3B0aW9ucy5tYXRjaENvbXBvbmVudCxcbiAgICAgICAgbWF0Y2hSZWxhdGlvbixcbiAgICAgICAgcm91bmRSZWxhdGlvbixcbiAgICAgICAgY2xhc3NOYW1lOiBgZXQtYnJhY2tldC1uZXctaXRlbSBldC1icmFja2V0LW1hdGNoLWNvbnRhaW5lciAke3BhcnRpY2lwYW50U2hvcnRJZHN9YCxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGJyYWNrZXRSb3VuZDogcm91bmQsXG4gICAgICAgICAgYnJhY2tldE1hdGNoOiBtYXRjaCxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIHJvdW5kSXRlbS5pdGVtcy5zZXQobWF0Y2guaWQsIG1hdGNoSXRlbSk7XG4gICAgfVxuXG4gICAgZ3JpZEl0ZW1zLnNldChyb3VuZC5pZCwgcm91bmRJdGVtKTtcbiAgfVxuXG4gIHJldHVybiBncmlkSXRlbXM7XG59O1xuXG5jb25zdCBnZW5lcmF0ZURvdWJsZUVsaW1pbmF0aW9uR3JpZFBsYWNlbWVudHMgPSA8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4oXG4gIGJyYWNrZXREYXRhOiBCcmFja2V0RGF0YTxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPixcbiAgcm91bmRUeXBlTWFwOiBCcmFja2V0Um91bmRUeXBlTWFwPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+LFxuICByb3VuZFJlbGF0aW9uczogQnJhY2tldFJvdW5kUmVsYXRpb25zPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+LFxuICBtYXRjaFJlbGF0aW9uczogQnJhY2tldE1hdGNoUmVsYXRpb25zTWFwPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+LFxuICBvcHRpb25zOiBHZW5lcmF0ZUJyYWNrZXRHcmlkSXRlbXNPcHRpb25zV2l0aERlZmF1bHRzPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+LFxuKSA9PiB7XG4gIGNvbnN0IGdyaWRJdGVtczogTWFwPEJyYWNrZXRSb3VuZElkLCBCcmFja2V0R3JpZFJvdW5kSXRlbTxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPj4gPSBuZXcgTWFwKCk7XG5cbiAgcmV0dXJuIGdyaWRJdGVtcztcbn07XG5cbmNvbnN0IGdlbmVyYXRlU3dpc3NXaXRoRWxpbWluYXRpb25HcmlkUGxhY2VtZW50cyA9IDxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPihcbiAgYnJhY2tldERhdGE6IEJyYWNrZXREYXRhPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+LFxuICByb3VuZFR5cGVNYXA6IEJyYWNrZXRSb3VuZFR5cGVNYXA8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4gIHN3aXNzR3JvdXBzOiBCcmFja2V0Um91bmRNYXBXaXRoU3dpc3NEYXRhPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+LFxuICByb3VuZFJlbGF0aW9uczogQnJhY2tldFJvdW5kUmVsYXRpb25zPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+LFxuICBtYXRjaFJlbGF0aW9uczogQnJhY2tldE1hdGNoUmVsYXRpb25zTWFwPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+LFxuICBvcHRpb25zOiBHZW5lcmF0ZUJyYWNrZXRHcmlkSXRlbXNPcHRpb25zV2l0aERlZmF1bHRzPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+LFxuKSA9PiB7XG4gIGNvbnN0IGdyaWRJdGVtczogTWFwPEJyYWNrZXRSb3VuZElkLCBCcmFja2V0R3JpZFJvdW5kSXRlbTxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPj4gPSBuZXcgTWFwKCk7XG5cbiAgcmV0dXJuIGdyaWRJdGVtcztcbn07XG4iXX0=
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export const createJourneyHighlight = (bracketData) => {
|
|
2
|
+
let styles = '';
|
|
3
|
+
for (const participant of bracketData.participants.values()) {
|
|
4
|
+
styles += `
|
|
5
|
+
.et-new-bracket-host:has(.${participant.shortId}:hover) {
|
|
6
|
+
path, .et-bracket-match-container {
|
|
7
|
+
opacity: 0.5;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.${participant.shortId} {
|
|
11
|
+
opacity: 1 !important;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
`;
|
|
15
|
+
}
|
|
16
|
+
return styles.replace(/\s+/g, ' ').trim();
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam91cm5leS1oaWdobGlnaHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvYnJhY2tldC9jb21wb25lbnRzL25ldy1icmFja2V0L2pvdXJuZXktaGlnaGxpZ2h0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQXlCLFdBQWdELEVBQUUsRUFBRTtJQUNqSCxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFFaEIsS0FBSyxNQUFNLFdBQVcsSUFBSSxXQUFXLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFDNUQsTUFBTSxJQUFJO3NDQUN3QixXQUFXLENBQUMsT0FBTzs7Ozs7ZUFLMUMsV0FBVyxDQUFDLE9BQU87Ozs7U0FJekIsQ0FBQztJQUNSLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzVDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyYWNrZXREYXRhIH0gZnJvbSAnLi9icmFja2V0LW5ldyc7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVKb3VybmV5SGlnaGxpZ2h0ID0gPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+KGJyYWNrZXREYXRhOiBCcmFja2V0RGF0YTxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPikgPT4ge1xuICBsZXQgc3R5bGVzID0gJyc7XG5cbiAgZm9yIChjb25zdCBwYXJ0aWNpcGFudCBvZiBicmFja2V0RGF0YS5wYXJ0aWNpcGFudHMudmFsdWVzKCkpIHtcbiAgICBzdHlsZXMgKz0gYFxuICAgICAgICAgIC5ldC1uZXctYnJhY2tldC1ob3N0OmhhcyguJHtwYXJ0aWNpcGFudC5zaG9ydElkfTpob3Zlcikge1xuICAgICAgICAgICAgcGF0aCwgLmV0LWJyYWNrZXQtbWF0Y2gtY29udGFpbmVyIHtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC4ke3BhcnRpY2lwYW50LnNob3J0SWR9IHtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBgO1xuICB9XG5cbiAgcmV0dXJuIHN0eWxlcy5yZXBsYWNlKC9cXHMrL2csICcgJykudHJpbSgpO1xufTtcbiJdfQ==
|