valtech-components 4.0.567 → 4.0.569
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/esm2022/lib/components/organisms/mini-games/chessimals-engine.mjs +25 -1
- package/esm2022/lib/components/organisms/mini-games/chessimals-game.component.mjs +75 -15
- package/esm2022/lib/components/organisms/mini-games/mini-games.i18n.mjs +13 -3
- package/esm2022/lib/components/organisms/mini-games/types.mjs +1 -1
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/valtech-components.mjs +111 -17
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/mini-games/chessimals-game.component.d.ts +1 -1
- package/lib/components/organisms/mini-games/types.d.ts +2 -2
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
- package/src/lib/assets/games/chessimals/challenge-avatars/nightmare-hunt.png +0 -0
- package/src/lib/assets/games/chessimals/challenge-avatars/nightmare-magnus.png +0 -0
- package/src/lib/assets/games/chessimals/challenge-avatars/nightmare-pride.png +0 -0
|
@@ -77,7 +77,7 @@ export class ChessimalsGameComponent {
|
|
|
77
77
|
this.boardSizes = [6, 8];
|
|
78
78
|
this.localModes = ['one-device', 'bot'];
|
|
79
79
|
this.botDifficulties = ['easy', 'normal', 'hard', 'nightmare'];
|
|
80
|
-
this.nightmareRivals = ['hunt', 'pride'];
|
|
80
|
+
this.nightmareRivals = ['hunt', 'pride', 'magnus'];
|
|
81
81
|
this.botProfiles = CHESSIMALS_BOT_PROFILES;
|
|
82
82
|
this.challengeLadder = CHESSIMALS_CHALLENGE_LADDER;
|
|
83
83
|
this.animals = ANIMALS;
|
|
@@ -1054,6 +1054,40 @@ export class ChessimalsGameComponent {
|
|
|
1054
1054
|
return this.applyNightmarePreset(game, this.activeNightmareMode());
|
|
1055
1055
|
}
|
|
1056
1056
|
applyNightmarePreset(game, mode) {
|
|
1057
|
+
if (mode === 'magnus') {
|
|
1058
|
+
return {
|
|
1059
|
+
...game,
|
|
1060
|
+
players: {
|
|
1061
|
+
...game.players,
|
|
1062
|
+
white: {
|
|
1063
|
+
...game.players.white,
|
|
1064
|
+
cards: {
|
|
1065
|
+
...game.players.white.cards,
|
|
1066
|
+
eagle: {
|
|
1067
|
+
...game.players.white.cards.eagle,
|
|
1068
|
+
used: true,
|
|
1069
|
+
usesRemaining: 0,
|
|
1070
|
+
},
|
|
1071
|
+
bull: {
|
|
1072
|
+
...game.players.white.cards.bull,
|
|
1073
|
+
used: true,
|
|
1074
|
+
usesRemaining: 0,
|
|
1075
|
+
},
|
|
1076
|
+
kangaroo: {
|
|
1077
|
+
...game.players.white.cards.kangaroo,
|
|
1078
|
+
used: true,
|
|
1079
|
+
usesRemaining: 0,
|
|
1080
|
+
},
|
|
1081
|
+
lion: {
|
|
1082
|
+
...game.players.white.cards.lion,
|
|
1083
|
+
used: false,
|
|
1084
|
+
usesRemaining: 1,
|
|
1085
|
+
},
|
|
1086
|
+
},
|
|
1087
|
+
},
|
|
1088
|
+
},
|
|
1089
|
+
};
|
|
1090
|
+
}
|
|
1057
1091
|
if (mode !== 'pride')
|
|
1058
1092
|
return game;
|
|
1059
1093
|
return {
|
|
@@ -1064,6 +1098,21 @@ export class ChessimalsGameComponent {
|
|
|
1064
1098
|
...game.players.black,
|
|
1065
1099
|
cards: {
|
|
1066
1100
|
...game.players.black.cards,
|
|
1101
|
+
eagle: {
|
|
1102
|
+
...game.players.black.cards.eagle,
|
|
1103
|
+
used: true,
|
|
1104
|
+
usesRemaining: 0,
|
|
1105
|
+
},
|
|
1106
|
+
bull: {
|
|
1107
|
+
...game.players.black.cards.bull,
|
|
1108
|
+
used: true,
|
|
1109
|
+
usesRemaining: 0,
|
|
1110
|
+
},
|
|
1111
|
+
kangaroo: {
|
|
1112
|
+
...game.players.black.cards.kangaroo,
|
|
1113
|
+
used: true,
|
|
1114
|
+
usesRemaining: 0,
|
|
1115
|
+
},
|
|
1067
1116
|
lion: {
|
|
1068
1117
|
...game.players.black.cards.lion,
|
|
1069
1118
|
used: false,
|
|
@@ -2618,7 +2667,12 @@ export class ChessimalsGameComponent {
|
|
|
2618
2667
|
}
|
|
2619
2668
|
selectNightmareRival(mode) {
|
|
2620
2669
|
this.selectedNightmareMode.set(mode);
|
|
2621
|
-
|
|
2670
|
+
if (mode === 'hunt')
|
|
2671
|
+
this.selectedBotProfileId.set('hunter');
|
|
2672
|
+
else if (mode === 'pride')
|
|
2673
|
+
this.selectedBotProfileId.set('predator');
|
|
2674
|
+
else
|
|
2675
|
+
this.selectedBotProfileId.set('magnus');
|
|
2622
2676
|
}
|
|
2623
2677
|
activeNightmareMode() {
|
|
2624
2678
|
if (this.selectedBotDifficulty() !== 'nightmare')
|
|
@@ -2634,6 +2688,8 @@ export class ChessimalsGameComponent {
|
|
|
2634
2688
|
return this.t('chessimalsNightmareHunt');
|
|
2635
2689
|
if (mode === 'pride')
|
|
2636
2690
|
return this.t('chessimalsNightmarePride');
|
|
2691
|
+
if (mode === 'magnus')
|
|
2692
|
+
return this.t('chessimalsNightmareMagnus');
|
|
2637
2693
|
return this.t('chessimalsNightmareNone');
|
|
2638
2694
|
}
|
|
2639
2695
|
nightmareModeDescription(mode) {
|
|
@@ -2641,13 +2697,17 @@ export class ChessimalsGameComponent {
|
|
|
2641
2697
|
return this.t('chessimalsNightmareHuntBody');
|
|
2642
2698
|
if (mode === 'pride')
|
|
2643
2699
|
return this.t('chessimalsNightmarePrideBody');
|
|
2700
|
+
if (mode === 'magnus')
|
|
2701
|
+
return this.t('chessimalsNightmareMagnusBody');
|
|
2644
2702
|
return this.t('chessimalsNightmareNoneBody');
|
|
2645
2703
|
}
|
|
2646
2704
|
nightmareModeAssetSrc(mode) {
|
|
2647
2705
|
if (mode === 'hunt')
|
|
2648
|
-
return 'assets/games/chessimals/challenge-avatars/
|
|
2706
|
+
return 'assets/games/chessimals/challenge-avatars/nightmare-hunt.png';
|
|
2649
2707
|
if (mode === 'pride')
|
|
2650
|
-
return 'assets/games/chessimals/challenge-avatars/
|
|
2708
|
+
return 'assets/games/chessimals/challenge-avatars/nightmare-pride.png';
|
|
2709
|
+
if (mode === 'magnus')
|
|
2710
|
+
return 'assets/games/chessimals/challenge-avatars/nightmare-magnus.png';
|
|
2651
2711
|
return '';
|
|
2652
2712
|
}
|
|
2653
2713
|
nightmareModeGlyph(mode) {
|
|
@@ -3552,7 +3612,7 @@ export class ChessimalsGameComponent {
|
|
|
3552
3612
|
/>
|
|
3553
3613
|
</label>
|
|
3554
3614
|
<button
|
|
3555
|
-
class="chessimals-
|
|
3615
|
+
class="chessimals-primary"
|
|
3556
3616
|
type="button"
|
|
3557
3617
|
[class.is-working]="onlineAction() === 'join'"
|
|
3558
3618
|
[attr.aria-busy]="onlineAction() === 'join'"
|
|
@@ -3583,7 +3643,7 @@ export class ChessimalsGameComponent {
|
|
|
3583
3643
|
</div>
|
|
3584
3644
|
</div>
|
|
3585
3645
|
<div class="chessimals-history__list">
|
|
3586
|
-
@for (entry of onlineHistory().slice(0,
|
|
3646
|
+
@for (entry of onlineHistory().slice(0, 4); track entry.gameId) {
|
|
3587
3647
|
<button type="button" class="chessimals-history__item" (click)="openHistoryGame(entry)">
|
|
3588
3648
|
<span>
|
|
3589
3649
|
<strong>{{ entry.gameId }}</strong>
|
|
@@ -4447,7 +4507,7 @@ export class ChessimalsGameComponent {
|
|
|
4447
4507
|
|
|
4448
4508
|
<ion-modal
|
|
4449
4509
|
[isOpen]="isPlayOptionsModalOpen()"
|
|
4450
|
-
cssClass="val-modal-adaptive chessimals-themed-modal chessimals-play-modal"
|
|
4510
|
+
cssClass="val-modal-adaptive chessimals-themed-modal chessimals-play-options-modal"
|
|
4451
4511
|
(didDismiss)="handlePlayOptionsModalDismissed()"
|
|
4452
4512
|
>
|
|
4453
4513
|
<ng-template>
|
|
@@ -4741,7 +4801,7 @@ export class ChessimalsGameComponent {
|
|
|
4741
4801
|
>
|
|
4742
4802
|
<ng-template>
|
|
4743
4803
|
<val-modal-layout
|
|
4744
|
-
|
|
4804
|
+
title=""
|
|
4745
4805
|
[closeLabel]="t('close')"
|
|
4746
4806
|
[actions]="aboutActions()"
|
|
4747
4807
|
actionsAlign="end"
|
|
@@ -4793,7 +4853,7 @@ export class ChessimalsGameComponent {
|
|
|
4793
4853
|
/>
|
|
4794
4854
|
</ng-template>
|
|
4795
4855
|
</ion-modal>
|
|
4796
|
-
`, isInline: true, styles: [":host{--chessimals-panel: #ffffff;--chessimals-surface: #fffaf1;--chessimals-elevated: rgba(255, 255, 255, .72);--chessimals-elevated-soft: rgba(255, 255, 255, .46);--chessimals-elevated-strong: rgba(255, 255, 255, .86);--chessimals-glass-highlight: rgba(255, 255, 255, .58);--chessimals-border: rgba(46, 58, 44, .18);--chessimals-text: #2e3a2c;--chessimals-muted: #51643d;--chessimals-soft: rgba(111, 122, 60, .1);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-selected: #37f28a;--chessimals-selected-rgb: 55, 242, 138;--chessimals-magic: #f7d45a;--chessimals-magic-rgb: 247, 212, 90;--chessimals-magic-hot: #fff56f;--chessimals-magic-deep: #b77a18;display:block;font-size:var(--val-mini-games-font-size, 1rem)}:host-context(body.font-small){--val-mini-games-font-size: .875rem}:host-context(body.font-large){--val-mini-games-font-size: 1.1875rem}.chessimals-shell{--chessimals-panel: #ffffff;--chessimals-surface: #fffaf1;--chessimals-elevated: rgba(255, 255, 255, .72);--chessimals-elevated-soft: rgba(255, 255, 255, .46);--chessimals-elevated-strong: rgba(255, 255, 255, .86);--chessimals-glass-highlight: rgba(255, 255, 255, .58);--chessimals-border: rgba(46, 58, 44, .18);--chessimals-text: #2e3a2c;--chessimals-muted: #51643d;--chessimals-soft: rgba(111, 122, 60, .1);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-selected: #37f28a;--chessimals-selected-rgb: 55, 242, 138;--chessimals-magic: #f7d45a;--chessimals-magic-rgb: 247, 212, 90;--chessimals-magic-hot: #fff56f;--chessimals-magic-deep: #b77a18;--chessimals-warning: #f4c542;--chessimals-warning-rgb: 244, 197, 66;--chessimals-move: var(--chessimals-sky);--chessimals-move-rgb: var(--chessimals-sky-rgb);--chessimals-capture: #1fcdb3;--chessimals-capture-rgb: 31, 205, 179;--chessimals-last: #8c6b4f;--chessimals-last-rgb: 140, 107, 79;--chessimals-cell-light: #f3f4e8;--chessimals-cell-dark: #7f944d;--chessimals-board-shadow: rgba(46, 58, 44, .14);--chessimals-piece-white-fill: #ffffff;--chessimals-piece-white-side: #f3eadb;--chessimals-piece-white-line: rgba(82, 65, 46, .12);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(84, 62, 34, .52)) drop-shadow(0 .18rem .12rem rgba(72, 58, 36, .22)) drop-shadow(0 .34rem .42rem rgba(72, 58, 36, .22));--chessimals-piece-black-fill: #242936;--chessimals-piece-black-side: #171b25;--chessimals-piece-black-line: rgba(255, 255, 255, .1);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .34)) drop-shadow(0 .18rem .1rem rgba(255, 255, 255, .12)) drop-shadow(0 .32rem .42rem rgba(0, 0, 0, .36));--chessimals-piece-gold: #c79a42;--chessimals-piece-gold-dark: #8a5f22;--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-inner-bg: #ffffff;--chessimals-animal-face-border: rgba(46, 58, 44, .12);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(46, 58, 44, .18));--chessimals-animal-face-locked-filter: grayscale(.2) saturate(.72);--chessimals-animal-face-locked-img-opacity: .72;display:grid;gap:1.125rem;width:100%;max-width:min(100%,60rem);margin:0 auto;color:var(--chessimals-text)}@media (prefers-color-scheme: dark){.chessimals-shell{--chessimals-panel: #172116;--chessimals-surface: #0f170f;--chessimals-elevated: rgba(255, 255, 255, .08);--chessimals-elevated-soft: rgba(255, 255, 255, .05);--chessimals-elevated-strong: rgba(255, 255, 255, .12);--chessimals-glass-highlight: rgba(255, 255, 255, .08);--chessimals-border: rgba(242, 230, 213, .2);--chessimals-text: #f6f3e9;--chessimals-muted: #c8cfb1;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #f3f4e8;--chessimals-cell-dark: #7f944d;--chessimals-board-shadow: rgba(0, 0, 0, .34);--chessimals-animal-face-border: rgba(242, 230, 213, .24)}}.chessimals-resume-splash{order:0;position:fixed;inset:0;z-index:1000;display:grid;place-items:center;align-content:center;gap:.65rem;padding:1.5rem;text-align:center;color:var(--chessimals-text);background:radial-gradient(circle at 50% 42%,rgba(var(--chessimals-primary-rgb),.18),transparent 22rem),color-mix(in srgb,var(--chessimals-panel) 92%,transparent);backdrop-filter:blur(.9rem)}.chessimals-resume-splash__logo{display:block;width:clamp(5.8rem,20vw,7.2rem);height:auto;animation:chessimals-resume-pulse 1.2s ease-in-out infinite;filter:drop-shadow(0 .8rem 1.2rem rgba(var(--ion-color-dark-rgb, 47, 42, 58),.18))}.chessimals-resume-splash strong{font-size:clamp(1.55rem,5vw,2.4rem);font-weight:950;line-height:1.05}.chessimals-resume-splash p{max-width:24rem;margin:0;color:var(--chessimals-muted);font-size:1rem;line-height:1.35}@keyframes chessimals-resume-pulse{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-.25rem) scale(1.04)}}@keyframes chessimals-spin{to{transform:rotate(360deg)}}@keyframes chessimals-online-pulse{0%,to{transform:scale(1);opacity:.78}50%{transform:scale(1.22);opacity:1}}:host-context(html.ion-palette-dark) .chessimals-shell,:host-context([data-theme=\"dark\"]) .chessimals-shell{--chessimals-panel: #172116;--chessimals-surface: #0f170f;--chessimals-elevated: rgba(255, 255, 255, .08);--chessimals-elevated-soft: rgba(255, 255, 255, .05);--chessimals-elevated-strong: rgba(255, 255, 255, .12);--chessimals-glass-highlight: rgba(255, 255, 255, .08);--chessimals-border: rgba(246, 227, 213, .22);--chessimals-text: #f6f3e9;--chessimals-muted: #c8cfb1;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #e8eadc;--chessimals-cell-dark: #5f7040;--chessimals-board-shadow: rgba(0, 0, 0, .34);--chessimals-capture: #66f2d7;--chessimals-capture-rgb: 102, 242, 215;--chessimals-last: #cdbe9b;--chessimals-last-rgb: 205, 190, 155;--chessimals-piece-white-fill: #fffaff;--chessimals-piece-white-side: #f0e5d4;--chessimals-piece-white-line: rgba(82, 65, 46, .12);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(84, 62, 34, .48)) drop-shadow(0 .18rem .12rem rgba(0, 0, 0, .24)) drop-shadow(0 .34rem .42rem rgba(0, 0, 0, .3));--chessimals-piece-black-fill: #202633;--chessimals-piece-black-side: #111620;--chessimals-piece-black-line: rgba(255, 255, 255, .12);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .34)) drop-shadow(0 .18rem .1rem rgba(255, 255, 255, .14)) drop-shadow(0 .34rem .44rem rgba(0, 0, 0, .52));--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-inner-bg: #ffffff;--chessimals-animal-face-border: rgba(242, 230, 213, .24);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(0, 0, 0, .22));--chessimals-animal-face-locked-filter: grayscale(.32) saturate(.72);--chessimals-animal-face-locked-img-opacity: .58}.chessimals-hero{display:grid;gap:.75rem;justify-items:center;overflow:hidden;border-radius:1.75rem;padding:clamp(1.25rem,5vw,2.5rem);background:radial-gradient(circle at 18% 12%,rgba(255,255,255,.92),transparent 20%),linear-gradient(135deg,#fdf8ee,#fff 40%,#edf3df);color:var(--chessimals-text);text-align:center;border:1px solid var(--chessimals-border)}:host-context(html.ion-palette-dark) .chessimals-hero,:host-context([data-theme=\"dark\"]) .chessimals-hero{background:radial-gradient(circle at 18% 12%,rgba(255,255,255,.08),transparent 22%),linear-gradient(135deg,#111a10,#172116 48%,#0f170f);color:var(--chessimals-text);border-color:#f6e3d538}.chessimals-hero__logo{display:grid;place-items:center;gap:.35rem;width:min(27rem,86vw);max-width:100%}.chessimals-hero__logo img{display:block;height:auto;object-fit:contain;border-radius:0}.chessimals-hero__emblem{width:min(12.25rem,48vw);margin-top:.2rem;transform:translateY(.2rem)}.chessimals-hero__wordmark{width:min(21rem,76vw)}.chessimals-hero p,.chessimals-howto p,.chessimals-tip p,.chessimals-result p,.chessimals-powers p{margin:0;line-height:1.45}.chessimals-powers{display:grid;gap:1rem;border:1px solid var(--chessimals-border);border-radius:1.625rem;padding:clamp(1rem,4vw,1.5rem);background:var(--chessimals-panel)}.chessimals-game{display:grid;gap:.875rem}.chessimals-panel{display:grid;gap:1.125rem}.chessimals-home-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.875rem}.chessimals-home-action{display:grid;justify-items:start;gap:.68rem;min-height:9.6rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:1.25rem;padding:1.15rem 1rem 1.05rem;background:radial-gradient(circle at 18% 10%,rgba(255,255,255,.74),transparent 22%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),rgba(var(--chessimals-secondary-rgb),.08)),var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-home-action--play{border-color:rgba(var(--chessimals-primary-rgb),.46);background:radial-gradient(circle at 18% 10%,rgba(255,255,255,.82),transparent 22%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.22),rgba(var(--chessimals-secondary-rgb),.12)),var(--chessimals-panel)}.chessimals-mode-icon{display:block;width:4.45rem;height:4.45rem;border-radius:1rem;object-fit:cover;background:rgba(var(--chessimals-sun-rgb),.16);box-shadow:0 0 0 1px rgba(var(--chessimals-primary-rgb),.14),0 .55rem 1rem rgba(var(--chessimals-shadow-rgb),.12)}.chessimals-home-action strong{font-size:clamp(1.1rem,3vw,1.45rem);font-weight:1000;line-height:1.05}.chessimals-home-action small{color:var(--chessimals-muted);font-size:.88rem;font-weight:900;line-height:1.3}.chessimals-options{border:1px solid var(--chessimals-border);border-radius:1.125rem;padding:.35rem;background:var(--chessimals-panel)}.chessimals-options summary{display:flex;align-items:center;justify-content:space-between;gap:.75rem;min-height:3.25rem;padding:.65rem .8rem;color:var(--chessimals-text);cursor:pointer;list-style:none}.chessimals-options summary::-webkit-details-marker{display:none}.chessimals-options summary:after{content:\"+\";display:grid;place-items:center;flex:0 0 auto;width:1.8rem;height:1.8rem;border-radius:999px;background:var(--chessimals-soft);color:var(--chessimals-primary);font-weight:950}.chessimals-options[open] summary:after{content:\"-\"}.chessimals-options summary strong,.chessimals-options summary span{display:block}.chessimals-options summary strong{font-weight:950}.chessimals-options summary span{color:var(--chessimals-muted);font-size:.84rem;font-weight:800}.chessimals-options>:not(summary){margin:.5rem}.chessimals-play-options{display:grid;gap:1.05rem;color:var(--chessimals-text)}.chessimals-play-options__group{display:grid;gap:.62rem}.chessimals-play-options__group h3{margin:0;color:var(--chessimals-text);font-size:.9rem;font-weight:950;line-height:1.15}.chessimals-play-options .chessimals-size button,.chessimals-play-options .chessimals-mode button,.chessimals-play-options .chessimals-nightmare button,.chessimals-play-options .chessimals-bots button{position:relative;overflow:hidden;min-height:4.75rem;padding:.78rem 2.1rem .78rem .9rem;border:1px solid rgba(var(--chessimals-primary-rgb),.2);border-radius:1.08rem;background:radial-gradient(circle at 16% 8%,rgba(255,255,255,.7),transparent 24%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),rgba(var(--chessimals-secondary-rgb),.05)),var(--chessimals-panel);color:var(--chessimals-text);box-shadow:inset 0 0 0 1px var(--chessimals-glass-highlight)}.chessimals-play-options .chessimals-size button.is-selected,.chessimals-play-options .chessimals-mode button.is-selected,.chessimals-play-options .chessimals-nightmare button.is-selected,.chessimals-play-options .chessimals-bots button.is-selected{border-color:var(--chessimals-primary);background:radial-gradient(circle at 16% 8%,rgba(255,255,255,.78),transparent 25%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.23),rgba(var(--chessimals-secondary-rgb),.13)),var(--chessimals-panel);box-shadow:0 0 0 .16rem rgba(var(--chessimals-primary-rgb),.18),0 .85rem 1.8rem rgba(var(--chessimals-primary-rgb),.16)}.chessimals-option-check{position:absolute;top:.65rem;right:.65rem;width:.72rem;height:.72rem;border:2px solid rgba(var(--chessimals-primary-rgb),.3);border-radius:999px;background:var(--chessimals-panel)}.is-selected>.chessimals-option-check{border-color:var(--chessimals-primary);background:var(--chessimals-primary);box-shadow:0 0 0 .28rem rgba(var(--chessimals-primary-rgb),.13)}.chessimals-play-options .chessimals-nightmare{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem}.chessimals-play-options .chessimals-nightmare button{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-areas:\"icon title\" \"icon body\";column-gap:.55rem;row-gap:.12rem;align-content:center;text-align:left}.chessimals-play-options .chessimals-nightmare strong{grid-area:title;align-self:end;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-play-options .chessimals-nightmare small{grid-area:body;color:var(--chessimals-muted);font-size:.72rem;font-weight:800;line-height:1.15}.chessimals-nightmare__icon{grid-area:icon;display:grid;place-items:center;width:2.35rem;height:2.35rem;overflow:hidden;border-radius:.8rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-weight:1000;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-nightmare__icon img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-play-options .chessimals-nightmare button.is-selected .chessimals-nightmare__icon{background:rgba(var(--chessimals-secondary-rgb),.2);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.24)}.chessimals-play-options .chessimals-difficulty{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem}.chessimals-play-options .chessimals-difficulty button{border:1px solid rgba(var(--chessimals-primary-rgb),.2);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.06),rgba(var(--chessimals-secondary-rgb),.04)),var(--chessimals-panel);color:var(--chessimals-text);box-shadow:inset 0 0 0 1px var(--chessimals-glass-highlight)}.chessimals-play-options .chessimals-difficulty button.is-selected{border-color:var(--chessimals-primary);background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 0 0 .16rem rgba(var(--chessimals-primary-rgb),.18),0 .72rem 1.25rem rgba(var(--chessimals-primary-rgb),.16)}.chessimals-play-options .chessimals-bots button>.chessimals-bot-avatar{width:2.45rem;height:2.45rem;border-radius:.8rem;background:rgba(var(--chessimals-primary-rgb),.12)}.chessimals-play-options .chessimals-bots button.is-selected>.chessimals-bot-avatar{background:rgba(var(--chessimals-secondary-rgb),.2);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.24)}.chessimals-play-modal{--chessimals-panel: var(--chessimals-modal-card, #ffffff);--chessimals-elevated: var(--chessimals-modal-card-strong, rgba(255, 255, 255, .72));--chessimals-elevated-soft: color-mix(in srgb, var(--chessimals-modal-card, #ffffff) 74%, transparent);--chessimals-elevated-strong: var(--chessimals-modal-card-strong, rgba(255, 255, 255, .86));--chessimals-glass-highlight: color-mix(in srgb, var(--chessimals-modal-surface, #ffffff) 58%, transparent);--chessimals-border: var(--chessimals-modal-border, rgba(46, 58, 44, .18));--chessimals-text: var(--chessimals-modal-text, #2e3a2c);--chessimals-muted: var(--chessimals-modal-muted, #51643d);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--background: var(--chessimals-primary);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--border-color: var(--chessimals-primary);--border-radius: 999px;--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast);--val-modal-footer-gap: .7rem}.chessimals-rules-modal{--chessimals-border: var(--chessimals-modal-border, rgba(46, 58, 44, .18));--chessimals-text: var(--chessimals-modal-text, #2e3a2c);--chessimals-muted: var(--chessimals-modal-muted, #51643d);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--ion-background-color: var(--chessimals-modal-surface, #ffffff);--ion-card-background: var(--chessimals-modal-card, #ffffff);--ion-text-color: var(--chessimals-text);--val-modal-footer-gap: .7rem}.chessimals-confirm-modal{--chessimals-border: var(--chessimals-modal-border, rgba(46, 58, 44, .18));--chessimals-text: var(--chessimals-modal-text, #2e3a2c);--chessimals-muted: var(--chessimals-modal-muted, #51643d);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--ion-background-color: var(--chessimals-modal-surface, #ffffff);--ion-card-background: var(--chessimals-modal-card, #ffffff);--ion-text-color: var(--chessimals-text);--val-modal-footer-gap: .7rem}:host ::ng-deep ion-modal.chessimals-themed-modal{--chessimals-modal-surface: #ffffff;--chessimals-modal-card: #ffffff;--chessimals-modal-card-strong: #f8fbf5;--chessimals-modal-text: #2e3a2c;--chessimals-modal-muted: #5f6f50;--chessimals-modal-border: rgba(46, 58, 44, .18);--chessimals-modal-shadow: rgba(46, 58, 44, .14);--ion-background-color: var(--chessimals-modal-surface);--ion-card-background: var(--chessimals-modal-card);--ion-text-color: var(--chessimals-modal-text);--ion-color-dark: var(--chessimals-modal-text);--ion-color-dark-rgb: 46, 58, 44;--ion-color-medium: var(--chessimals-modal-muted);--ion-color-medium-rgb: 95, 111, 80;--ion-border-color: var(--chessimals-modal-border);--ion-color-primary: var(--chessimals-primary);--ion-color-primary-rgb: var(--chessimals-primary-rgb);--ion-color-primary-contrast: var(--chessimals-primary-contrast);--ion-color-primary-shade: #285f36;--ion-color-primary-tint: #43804f}@media (prefers-color-scheme: dark){:host ::ng-deep ion-modal.chessimals-themed-modal{--chessimals-modal-surface: #121811;--chessimals-modal-card: #182217;--chessimals-modal-card-strong: #1d2a1c;--chessimals-modal-text: #f6f3e9;--chessimals-modal-muted: #c8cfb1;--chessimals-modal-border: rgba(246, 227, 213, .2);--chessimals-modal-shadow: rgba(0, 0, 0, .36);--ion-color-dark-rgb: 246, 243, 233;--ion-color-medium-rgb: 200, 207, 177}}:host-context(html.ion-palette-dark) ::ng-deep ion-modal.chessimals-themed-modal,:host-context([data-theme=\"dark\"]) ::ng-deep ion-modal.chessimals-themed-modal{--chessimals-modal-surface: #121811;--chessimals-modal-card: #182217;--chessimals-modal-card-strong: #1d2a1c;--chessimals-modal-text: #f6f3e9;--chessimals-modal-muted: #c8cfb1;--chessimals-modal-border: rgba(246, 227, 213, .2);--chessimals-modal-shadow: rgba(0, 0, 0, .36);--ion-color-dark-rgb: 246, 243, 233;--ion-color-medium-rgb: 200, 207, 177}:host ::ng-deep ion-modal.chessimals-themed-modal val-modal-shell ion-toolbar,:host ::ng-deep ion-modal.chessimals-themed-modal .val-modal-layout__footer{--background: var(--chessimals-modal-surface);--color: var(--chessimals-modal-text);background:var(--chessimals-modal-surface);color:var(--chessimals-modal-text);border-color:var(--chessimals-modal-border)}:host ::ng-deep ion-modal.chessimals-themed-modal val-modal-shell ion-content{--background: var(--chessimals-modal-surface);color:var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-themed-modal val-modal-shell ion-button{--color: var(--chessimals-modal-text);--color-hover: var(--chessimals-modal-text);--color-activated: var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-themed-modal val-display ion-text,:host ::ng-deep ion-modal.chessimals-themed-modal val-title ion-text{color:var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-themed-modal val-button.val-modal-layout__button ion-button,:host ::ng-deep ion-modal.chessimals-themed-modal val-button.chessimals-rules__action ion-button{min-height:3.45rem;font-weight:950;--border-radius: 999px;--padding-bottom: .85rem;--padding-end: 1.35rem;--padding-start: 1.35rem;--padding-top: .85rem}:host ::ng-deep ion-modal.chessimals-themed-modal val-button.val-modal-layout__button ion-button.button-solid,:host ::ng-deep ion-modal.chessimals-themed-modal val-button.chessimals-rules__action--primary ion-button{--background: var(--chessimals-primary);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast)}:host ::ng-deep ion-modal.chessimals-themed-modal val-button.val-modal-layout__button ion-button.button-outline,:host ::ng-deep ion-modal.chessimals-themed-modal val-button.chessimals-rules__action--secondary ion-button{--background: transparent;--border-color: var(--chessimals-modal-border);--border-width: 1px;--color: var(--chessimals-modal-text);--color-activated: var(--chessimals-modal-text);--color-hover: var(--chessimals-modal-text)}.chessimals-play-modal__actions,.chessimals-rules__actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.7rem;width:100%}.chessimals-play-modal__actions .chessimals-primary,.chessimals-play-modal__actions .chessimals-secondary{min-width:min(100%,12.5rem);padding:.85rem 1.35rem}.chessimals-rules__action{min-width:min(100%,12.5rem)}:host ::ng-deep ion-modal.chessimals-rules-modal val-button.chessimals-rules__action ion-button{min-height:3.45rem;font-weight:950;--border-radius: 999px;--padding-bottom: .85rem;--padding-end: 1.35rem;--padding-start: 1.35rem;--padding-top: .85rem}:host ::ng-deep ion-modal.chessimals-rules-modal val-button.chessimals-rules__action--primary ion-button{--background: var(--chessimals-primary);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast)}:host ::ng-deep ion-modal.chessimals-rules-modal val-button.chessimals-rules__action--secondary ion-button{--border-color: rgba(46, 58, 44, .24);--border-width: 1px;--color: var(--chessimals-text);--color-activated: var(--chessimals-text);--color-hover: var(--chessimals-text)}:host ::ng-deep ion-modal.chessimals-confirm-modal val-button.val-modal-layout__button ion-button{min-height:3.45rem;font-weight:950;--border-radius: 999px;--padding-bottom: .85rem;--padding-end: 1.35rem;--padding-start: 1.35rem;--padding-top: .85rem}:host ::ng-deep ion-modal.chessimals-confirm-modal val-button.val-modal-layout__button ion-button[data-testid=confirm]{--background: var(--chessimals-primary);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast)}:host ::ng-deep ion-modal.chessimals-confirm-modal val-button.val-modal-layout__button ion-button[data-testid=cancel]{--border-color: rgba(46, 58, 44, .24);--border-width: 1px;--color: var(--chessimals-text);--color-activated: var(--chessimals-text);--color-hover: var(--chessimals-text)}.chessimals-online{display:grid;gap:.875rem;border:1px solid var(--chessimals-border);border-radius:1.375rem;padding:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--chessimals-panel)}.chessimals-online--waiting{order:2;border-color:rgba(var(--chessimals-primary-rgb),.34)}.chessimals-online h2,.chessimals-online p{margin:0}.chessimals-online h2{font-size:1.1rem;font-weight:950}.chessimals-online p{color:var(--chessimals-muted);line-height:1.4}.chessimals-online__create,.chessimals-online__join{display:grid;gap:.55rem}.chessimals-online__create small{color:var(--chessimals-muted);font-weight:800;line-height:1.35}.chessimals-online__join{border-top:1px solid var(--chessimals-border);padding-top:.85rem}.chessimals-online__join>strong{font-size:.95rem;font-weight:950}.chessimals-online__error{border-radius:.875rem;padding:.7rem .8rem;background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12);color:var(--ion-color-danger, #eb445a)!important;font-weight:800}.chessimals-online__loading{display:flex;align-items:center;gap:.625rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:999px;padding:.65rem .85rem;background:rgba(var(--chessimals-primary-rgb),.08);color:var(--chessimals-text);font-size:.92rem;font-weight:900}.chessimals-online__loading span{width:1rem;height:1rem;border:.15rem solid rgba(var(--chessimals-primary-rgb),.24);border-top-color:var(--chessimals-primary);border-radius:999px;animation:chessimals-spin .75s linear infinite}.chessimals-online-code{display:grid;gap:.4rem;font-weight:950}.chessimals-online-code input{width:100%;min-height:3.3rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:850;letter-spacing:.05em;text-transform:uppercase}.chessimals-game-code{display:grid;gap:.2rem;border-radius:1rem;padding:.85rem 1rem;background:var(--chessimals-soft)}.chessimals-game-code small{color:var(--chessimals-muted);font-weight:900;letter-spacing:.06em;text-transform:uppercase}.chessimals-game-code strong{font-size:clamp(1.35rem,6vw,2rem);font-weight:950;letter-spacing:.05em}.chessimals-online-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-history{gap:.75rem}.chessimals-history__heading{display:flex;align-items:start;justify-content:space-between;gap:.75rem}.chessimals-history__list{display:grid;gap:.5rem}.chessimals-history__item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;border:1px solid var(--chessimals-border);border-radius:1rem;padding:.7rem .8rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-history__item span{display:grid;gap:.1rem;min-width:0}.chessimals-history__item strong{font-weight:950;letter-spacing:.04em}.chessimals-history__item small{overflow:hidden;color:var(--chessimals-muted);font-size:.82rem;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.chessimals-history__item em{flex:0 0 auto;color:var(--chessimals-primary);font-size:.86rem;font-style:normal;font-weight:950}.chessimals-home-settings{gap:.8rem}.chessimals-home-settings__actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.625rem}.chessimals-pending-player{display:flex;align-items:center;gap:.7rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:1rem;padding:.75rem;background:var(--chessimals-soft)}.chessimals-pending-player div{display:grid;gap:.1rem;min-width:0}.chessimals-pending-player small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.07em;text-transform:uppercase}.chessimals-pending-player strong{overflow:hidden;font-size:1.05rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-turn-card{order:1;display:flex;align-items:center;justify-content:space-between;gap:.625rem;min-height:3.75rem;overflow:visible;border:1px solid rgba(var(--chessimals-primary-rgb),.24);border-radius:1rem;padding:.55rem .65rem;background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.34),transparent 18%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.2),rgba(var(--chessimals-secondary-rgb),.1))}.chessimals-turn-card.is-black-turn{border-color:rgba(var(--ion-color-dark-rgb, 47, 42, 58),.28);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.12),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-dark-rgb, 47, 42, 58),.14),rgba(var(--chessimals-primary-rgb),.1))}.chessimals-turn-card.is-finished{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.42);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.35),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.18),rgba(var(--chessimals-primary-rgb),.12))}.chessimals-turn-card.is-finished .chessimals-turn-card__chip{color:var(--ion-color-success, #2dd36f)}.chessimals-turn-card.is-your-turn{border-color:rgba(var(--chessimals-primary-rgb),.48);box-shadow:0 0 0 .12rem rgba(var(--chessimals-primary-rgb),.12),0 .95rem 2rem rgba(var(--chessimals-primary-rgb),.14)}.chessimals-turn-card.is-your-turn .chessimals-turn-card__chip{background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 0 0 .32rem rgba(var(--chessimals-primary-rgb),.14);animation:chessimals-turn-pulse 1.45s ease-in-out infinite}.chessimals-turn-card.is-timer-low{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.5);box-shadow:0 0 0 .12rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12),0 .95rem 2rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.chessimals-turn-card.is-timer-low .chessimals-turn-card__chip{background:var(--ion-color-danger, #eb445a);color:var(--ion-color-danger-contrast, #ffffff)}.chessimals-turn-card.is-waiting-turn .chessimals-turn-card__chip{color:var(--chessimals-muted)}@keyframes chessimals-turn-pulse{0%,to{transform:translateZ(0) scale(1)}50%{transform:translateZ(0) scale(1.035)}}.chessimals-turn-card__copy{display:grid;min-width:0;gap:.15rem}.chessimals-turn-card__chip{justify-self:start;border-radius:999px;padding:.2rem .5rem;background:var(--chessimals-panel);color:var(--chessimals-primary);font-size:.62rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-turn-card strong{display:block;min-width:0;font-size:clamp(1rem,3.5vw,1.25rem);line-height:1.08;font-weight:950;overflow-wrap:anywhere}.chessimals-turn-card p{display:block;min-width:0;margin:0;color:var(--chessimals-muted);font-size:.78rem;line-height:1.22}.chessimals-player-strip{display:flex;flex:0 0 auto;align-items:center;gap:.45rem;min-width:10rem;max-width:min(17rem,42%);border:1px solid var(--chessimals-border);border-radius:999px;padding:.3rem .55rem .3rem .35rem;background:rgba(var(--ion-color-light-rgb, 244, 245, 248),.72)}:host-context(html.ion-palette-dark) .chessimals-player-strip,:host-context([data-theme=\"dark\"]) .chessimals-player-strip{background:#ffffff0f}.chessimals-player-strip val-user-avatar{display:inline-flex;flex:0 0 auto;line-height:0}.chessimals-player-strip__avatar{display:grid;place-items:center;flex:0 0 2.25rem;width:2.25rem;height:2.25rem;aspect-ratio:1 / 1;overflow:hidden;border-radius:999px;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.875rem;line-height:1}.chessimals-player-strip__avatar--initials{font-size:.78rem;font-weight:950}:host ::ng-deep .chessimals-player-strip .chessimals-turn-avatar{width:2.25rem;min-width:2.25rem;height:2.25rem;border-radius:50%}.chessimals-player-strip__text{display:grid;min-width:0;gap:.05rem;line-height:1.1}.chessimals-player-strip__text span{color:var(--chessimals-muted);font-size:.58rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-player-strip__text strong{overflow:hidden;font-size:.82rem;line-height:1.08;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-player-strip__text small{overflow:hidden;color:var(--chessimals-muted);font-size:.66rem;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}.chessimals-arena{order:4;display:grid;gap:.875rem;align-items:start}.chessimals-howto,.chessimals-tip,.chessimals-result,.chessimals-replay,.chessimals-rematch-status{display:grid;gap:.375rem;padding:1rem;border-radius:1.25rem;background:var(--chessimals-soft)}.chessimals-howto{border:1px solid var(--chessimals-border);background:var(--chessimals-soft);color:var(--chessimals-text)}.chessimals-howto p{color:var(--chessimals-muted)}.chessimals-howto__actions{display:flex;flex-wrap:wrap;gap:.625rem}:host-context(html.ion-palette-dark) .chessimals-howto,:host-context([data-theme=\"dark\"]) .chessimals-howto{border-color:#f6e3d533;background:#172116;color:#f6f3e9}:host-context(html.ion-palette-dark) .chessimals-howto p,:host-context([data-theme=\"dark\"]) .chessimals-howto p{color:#c8cfb1}.chessimals-result{order:5}.chessimals-result__actions{display:flex;flex-wrap:wrap;gap:.625rem;margin-top:.45rem}.chessimals-action-button{flex:0 1 auto;min-width:min(100%,12.5rem);max-width:100%;padding:.85rem 1.35rem}.chessimals-result.is-challenge-result{gap:0;padding:0;background:transparent}.chessimals-result__stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem;margin-top:.35rem}.chessimals-result__stats span{display:grid;gap:.15rem;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:.85rem;padding:.58rem .6rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--chessimals-panel)}.chessimals-result__stats small{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-weight:950;letter-spacing:.05em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-result__stats b{overflow:hidden;color:var(--chessimals-text);font-size:.92rem;font-weight:950;line-height:1.12;text-overflow:ellipsis;white-space:nowrap}.chessimals-result__detail{margin:.2rem 0 0}.chessimals-bot-report{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.75rem;margin-top:.35rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1rem;padding:.78rem .85rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),transparent),var(--chessimals-panel)}.chessimals-bot-report>span{display:grid;place-items:center;width:2.5rem;height:2.5rem;border-radius:.85rem;background:rgba(var(--chessimals-secondary-rgb),.14);font-size:1.45rem;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-bot-report>span img{width:100%;height:100%;object-fit:contain}.chessimals-bot-report div{display:grid;gap:.12rem;min-width:0}.chessimals-bot-report small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-bot-report strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.15}.chessimals-bot-report p{margin:0;color:var(--chessimals-muted);font-size:.84rem;font-weight:820;line-height:1.28}.chessimals-online-status{order:3;display:grid;grid-template-columns:1.35rem minmax(0,1fr);align-items:center;gap:.85rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1.1rem;padding:.85rem .95rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.09),transparent),var(--chessimals-panel)}.chessimals-online-status>span{justify-self:center;width:.72rem;height:.72rem;border-radius:999px;background:var(--chessimals-primary);box-shadow:0 0 0 .38rem rgba(var(--chessimals-primary-rgb),.12)}.chessimals-online-status.is-syncing>span{animation:chessimals-online-pulse .9s ease-in-out infinite}.chessimals-online-status.is-error{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.28);background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.1),transparent),var(--chessimals-panel)}.chessimals-online-status.is-error>span{background:var(--ion-color-danger, #eb445a);box-shadow:0 0 0 .38rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.chessimals-online-status div{display:grid;gap:.12rem;min-width:0}.chessimals-online-status strong{overflow:hidden;color:var(--chessimals-text);font-size:.95rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-online-status p{margin:0;color:var(--chessimals-muted);font-size:.84rem;font-weight:780;line-height:1.28}.chessimals-series{display:grid;gap:.18rem;margin-top:.35rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1rem;padding:.78rem .85rem;background:linear-gradient(135deg,rgba(var(--chessimals-secondary-rgb),.12),transparent),var(--chessimals-panel)}.chessimals-series--compact{margin-top:0}.chessimals-series small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-series strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.15}.chessimals-series span{color:var(--chessimals-muted);font-size:.84rem;font-weight:820;line-height:1.28}.chessimals-replay{order:5;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem;border:1px solid rgba(var(--chessimals-primary-rgb),.2);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),transparent),var(--chessimals-panel)}.chessimals-replay>div:first-child{display:grid;gap:.15rem;min-width:0}.chessimals-replay strong{font-size:1rem;font-weight:950}.chessimals-replay span{color:var(--chessimals-muted);font-size:.86rem;font-weight:800;line-height:1.25}.chessimals-replay__actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.5rem}.chessimals-replay__actions .chessimals-secondary{min-height:2.5rem;padding:0 .8rem}.chessimals-tutorial{order:3;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem;padding:1rem;border:1px solid rgba(var(--chessimals-primary-rgb),.24);border-radius:1.25rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel)}.chessimals-tutorial>div{display:grid;gap:.18rem;min-width:0}.chessimals-tutorial small{color:var(--chessimals-primary);font-size:.76rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-tutorial strong{font-size:1rem;font-weight:950}.chessimals-tutorial p{margin:0;color:var(--chessimals-muted);font-size:.88rem;font-weight:780;line-height:1.35}.chessimals-tutorial .chessimals-secondary{min-height:2.5rem;padding:0 .85rem}.chessimals-rematch-status{order:5;border:1px solid rgba(var(--chessimals-primary-rgb),.22);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.12),transparent),var(--chessimals-panel)}.chessimals-rematch-status.is-incoming{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.38);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.14),transparent),var(--chessimals-panel)}.chessimals-rematch-status strong{font-size:1rem;font-weight:950}.chessimals-rematch-status p{margin:0;color:var(--chessimals-muted);font-size:.88rem;line-height:1.35}.chessimals-rematch-player{background:var(--chessimals-elevated)}:host-context(html.ion-palette-dark) .chessimals-rematch-player,:host-context([data-theme=\"dark\"]) .chessimals-rematch-player{background:#ffffff0f}.chessimals-rematch-status__actions{display:flex;justify-content:flex-end}.chessimals-rematch-status__actions .chessimals-secondary{min-height:2.5rem;padding:0 .95rem}.chessimals-howto h2,.chessimals-powers h2{margin:0;font-size:1.15rem;font-weight:950}.chessimals-challenge-cta{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(10rem,auto) auto;gap:.65rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.24);border-radius:1.25rem;padding:.75rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.1),transparent 62%),var(--chessimals-panel);box-shadow:0 .7rem 1.4rem rgba(var(--chessimals-shadow-rgb),.08)}.chessimals-challenge-cta__copy{display:grid;gap:.18rem;min-width:0}.chessimals-challenge-cta__copy span,.chessimals-challenge-cta__rival small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-challenge-cta__copy h2{margin:0;color:var(--chessimals-text);font-size:clamp(1.05rem,2.5vw,1.32rem);font-weight:1000}.chessimals-challenge-cta__copy p{margin:0;color:var(--chessimals-muted);font-size:.82rem;font-weight:780;line-height:1.3}.chessimals-challenge-cta__meta{display:grid;grid-template-columns:repeat(2,minmax(3.8rem,1fr));gap:.4rem}.chessimals-challenge-cta__meta span{display:grid;gap:.08rem;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:.95rem;padding:.42rem .5rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-cta__meta small{color:var(--chessimals-muted);font-size:.62rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-cta__meta strong{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-cta__actions{display:grid;gap:.45rem;min-width:10rem}.chessimals-challenge-cta__rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.5rem;align-items:center;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:1rem;padding:.45rem;background:var(--chessimals-elevated)}.chessimals-challenge-cta__rival>.chessimals-bot-avatar{display:grid;place-items:center;width:2.15rem;height:2.15rem;border-radius:.9rem;background:rgba(var(--chessimals-sky-rgb),.14);font-size:1.12rem}.chessimals-challenge-cta__rival div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-cta__rival strong{overflow:hidden;color:var(--chessimals-text);font-size:.9rem;font-weight:1000;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-view{display:grid;gap:.85rem}.chessimals-back-link{justify-self:start;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:999px;padding:.45rem .72rem;background:var(--chessimals-elevated);color:var(--chessimals-text);font:inherit;font-size:.85rem;font-weight:950;cursor:pointer}.chessimals-challenge-back{margin-bottom:.15rem}.chessimals-challenge-card{display:grid;gap:.9rem;border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:1.375rem;padding:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.18),transparent 54%),linear-gradient(180deg,var(--chessimals-glass-highlight),transparent),var(--chessimals-panel);box-shadow:0 1rem 2.2rem #4f3a231f}.chessimals-challenge-card--dedicated{border:0;border-radius:0;padding:0;background:transparent;box-shadow:none}.chessimals-challenge-hero,.chessimals-challenge-focus,.chessimals-challenge-secondary{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(14rem,.9fr);gap:.75rem;align-items:stretch}.chessimals-challenge-card__copy{display:grid;gap:.28rem;align-content:center}.chessimals-challenge-card__copy span,.chessimals-challenge-summary small,.chessimals-challenge-route small,.chessimals-challenge-panel__heading small{color:var(--chessimals-sky);font-size:.72rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-challenge-card h2{margin:0;font-size:clamp(1.25rem,3.5vw,1.9rem);font-weight:1000}.chessimals-challenge-card p,.chessimals-challenge-summary p{margin:0;color:var(--chessimals-muted);font-size:.95rem;font-weight:780;line-height:1.35}.chessimals-challenge-card__stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.chessimals-challenge-rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.7rem;align-items:center;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1.125rem;padding:.7rem;background:var(--chessimals-elevated)}.chessimals-challenge-rival--feature{min-height:8rem;border-color:rgba(var(--chessimals-sky-rgb),.28);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent),var(--chessimals-elevated)}.chessimals-challenge-rival>.chessimals-bot-avatar{display:grid;place-items:center;width:3rem;height:3rem;border-radius:1rem;background:rgba(var(--chessimals-primary-rgb),.12);font-size:1.45rem}.chessimals-challenge-rival div{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-rival small,.chessimals-challenge-history small,.chessimals-challenge-summary__stats small{color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-rival strong{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-rival p{font-size:.84rem}.chessimals-challenge-rival em{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-style:normal;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-rival--next{background:rgba(var(--chessimals-primary-rgb),.08)}.chessimals-challenge-card__stats span{display:grid;gap:.16rem;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:1rem;padding:.55rem;background:var(--chessimals-elevated)}.chessimals-challenge-card__stats small{color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-card__stats strong{color:var(--chessimals-text);font-size:1.1rem;font-weight:1000}.chessimals-challenge-card__actions{display:grid;gap:.55rem;align-content:center}.chessimals-challenge-card__actions--hero{grid-template-columns:minmax(0,1fr)}.chessimals-challenge-route,.chessimals-challenge-panel{display:grid;gap:.55rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1.125rem;padding:.65rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-route>div:first-child,.chessimals-challenge-panel__heading{display:flex;flex-wrap:wrap;gap:.4rem;align-items:baseline;justify-content:space-between}.chessimals-challenge-route>div:first-child>span{color:var(--chessimals-muted);font-size:.76rem;font-weight:850}.chessimals-challenge-path{display:flex;flex-wrap:nowrap;gap:.4rem;overflow-x:auto;padding-block:.1rem;scrollbar-width:none}.chessimals-challenge-path::-webkit-scrollbar{display:none}.chessimals-challenge-path span{flex:0 0 auto;display:grid;place-items:center;width:2.15rem;height:2.15rem;overflow:hidden;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:999px;background:var(--chessimals-elevated-strong);font-size:1.08rem}.chessimals-challenge-path img{display:block;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;object-fit:contain}.chessimals-challenge-path span.is-cleared{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.34);background:rgba(var(--ion-color-success-rgb, 45, 211, 111),.16)}.chessimals-challenge-path span.is-current{border-color:rgba(var(--chessimals-sky-rgb),.48);background:rgba(var(--chessimals-sky-rgb),.18);box-shadow:0 0 0 2px rgba(var(--chessimals-sky-rgb),.12)}.chessimals-challenge-path span.is-final{border-color:rgba(var(--ion-color-warning-rgb, 255, 196, 9),.48)}.chessimals-challenge-roster{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.4rem}.chessimals-challenge-roster article{display:grid;grid-template-columns:minmax(0,1fr);gap:.4rem;align-items:center;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1rem;padding:.48rem;background:var(--chessimals-elevated-soft);opacity:.78}.chessimals-challenge-roster article.is-cleared{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.26);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.1),transparent),var(--chessimals-elevated-soft);opacity:1}.chessimals-challenge-roster article.is-current{border-color:rgba(var(--chessimals-sky-rgb),.38);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),transparent),var(--chessimals-elevated);box-shadow:0 0 0 2px rgba(var(--chessimals-sky-rgb),.1);opacity:1}.chessimals-challenge-roster article.is-final{border-color:rgba(var(--ion-color-warning-rgb, 255, 196, 9),.34)}.chessimals-challenge-roster article>.chessimals-bot-avatar{display:grid;place-items:center;width:2rem;height:2rem;border-radius:.85rem;background:rgba(var(--chessimals-primary-rgb),.1);font-size:1rem}.chessimals-challenge-roster article.is-current>.chessimals-bot-avatar{background:rgba(var(--chessimals-sky-rgb),.18)}.chessimals-challenge-roster div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-roster small,.chessimals-challenge-roster em{overflow:hidden;color:var(--chessimals-muted);font-size:.62rem;font-style:normal;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-roster strong{overflow:hidden;color:var(--chessimals-text);font-size:.82rem;font-weight:1000;line-height:1.08;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-roster p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.72rem;font-weight:820;line-height:1.18;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-achievements,.chessimals-mode-winrates{display:grid;grid-template-columns:minmax(0,1fr);gap:.45rem}.chessimals-mode-winrates>span{display:grid;gap:.1rem;border:1px solid rgba(var(--chessimals-sky-rgb),.2);border-radius:8px;padding:.48rem;background:rgba(var(--chessimals-sky-rgb),.08)}.chessimals-mode-winrates small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:900;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-mode-winrates strong{color:var(--chessimals-text);font-size:.98rem;font-weight:1000}.chessimals-mode-winrates em{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-style:normal;font-weight:850;text-overflow:ellipsis;white-space:nowrap}.chessimals-achievements>span{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.45rem;align-items:center;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.5rem;background:var(--chessimals-elevated-soft);opacity:.68}.chessimals-achievements>span.is-unlocked{border-color:rgba(var(--chessimals-sky-rgb),.3);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),var(--chessimals-elevated));opacity:1}.chessimals-achievements b{display:grid;place-items:center;width:1.9rem;height:1.9rem;border-radius:8px;background:rgba(var(--chessimals-primary-rgb),.1);color:var(--chessimals-muted);font-size:.9rem;font-weight:1000}.chessimals-achievements .is-unlocked b{background:var(--chessimals-sky);color:#fffaf0}.chessimals-achievements span span{display:grid;gap:.06rem;min-width:0}.chessimals-achievements strong,.chessimals-achievements small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-achievements strong{color:var(--chessimals-text);font-size:.78rem;font-weight:1000}.chessimals-achievements small{color:var(--chessimals-muted);font-size:.67rem;font-weight:850}.chessimals-secondary--compact{min-height:2.45rem;padding-block:.45rem}.chessimals-path-cta{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.75rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.26);border-radius:1.25rem;padding:.75rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.13),rgba(var(--chessimals-sun-rgb),.08)),var(--chessimals-elevated-soft)}.chessimals-path-cta div{display:grid;gap:.18rem;min-width:0}.chessimals-path-cta span,.chessimals-path-hero small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-path-cta strong{color:var(--chessimals-text);font-size:.95rem;font-weight:950;line-height:1.2}.chessimals-path-cta__action{justify-self:end;width:min(12rem,100%);min-width:9.5rem;padding-inline:1.1rem;white-space:nowrap}.chessimals-path-view{display:grid;gap:.85rem}.chessimals-path-hero{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.8rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.26);border-radius:1.25rem;padding:.85rem;background:radial-gradient(circle at 88% 10%,rgba(var(--chessimals-sun-rgb),.18),transparent 34%),linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent 62%),var(--chessimals-elevated-soft)}.chessimals-path-hero__art{display:block;width:clamp(5.2rem,15vw,7.5rem);height:clamp(5.2rem,15vw,7.5rem);object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-path-hero>div:not(.chessimals-path-hero__medal){display:grid;gap:.25rem;min-width:0}.chessimals-path-hero h2{margin:0;color:var(--chessimals-text);font-size:clamp(1.7rem,4vw,2.35rem);font-weight:1000;line-height:1}.chessimals-path-hero p{margin:0;color:var(--chessimals-muted);font-size:.95rem;font-weight:820;line-height:1.35}.chessimals-path-hero__medal{display:grid;place-items:center;width:6.5rem;min-height:6.5rem;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:1rem;background:linear-gradient(180deg,rgba(var(--chessimals-sun-rgb),.2),rgba(var(--chessimals-sky-rgb),.11)),var(--chessimals-elevated);box-shadow:0 16px 28px rgba(var(--chessimals-shadow-rgb),.12)}.chessimals-path-hero__medal img{display:block;width:3rem;height:3rem;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-path-hero__medal span{color:var(--chessimals-text);font-size:1.65rem;font-weight:1000;line-height:1}.chessimals-path-hero__medal b{color:var(--chessimals-muted);font-size:.78rem;font-weight:950}.chessimals-path-highlights{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem}.chessimals-path-highlights article{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.65rem;align-items:center;min-width:0;min-height:7.5rem;border:1px solid rgba(var(--chessimals-primary-rgb),.13);border-radius:1rem;padding:.7rem;background:radial-gradient(circle at 12% 4%,rgba(var(--chessimals-sun-rgb),.18),transparent 42%),var(--chessimals-elevated-soft)}.chessimals-path-highlights img{display:block;width:4.25rem;height:4.25rem;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-path-highlights article div{display:grid;min-width:0;gap:.12rem}.chessimals-path-highlights small{overflow:hidden;color:var(--chessimals-sky);font-size:.66rem;font-weight:950;letter-spacing:.05em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-path-highlights strong{overflow:hidden;color:var(--chessimals-text);font-size:1.08rem;font-weight:1000;line-height:1.06;text-overflow:ellipsis;white-space:nowrap}.chessimals-path-highlights span{color:var(--chessimals-muted);font-size:.76rem;font-weight:820;line-height:1.24}.chessimals-path-rings{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.6rem}.chessimals-path-ring,.chessimals-path-panel,.chessimals-path-stats span,.chessimals-path-bars span{border:1px solid rgba(var(--chessimals-primary-rgb),.13);border-radius:1rem;background:var(--chessimals-elevated-soft)}.chessimals-path-ring{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;padding:.65rem;text-align:left}.chessimals-path-ring>div{position:relative;display:grid;place-items:center;width:3.35rem;height:3.35rem;border-radius:999px;background:conic-gradient(var(--chessimals-sky) var(--ring-progress),rgba(var(--chessimals-primary-rgb),.12) 0)}.chessimals-path-ring>div:after{position:absolute;inset:.34rem;border-radius:inherit;background:var(--chessimals-elevated);content:\"\"}.chessimals-path-ring strong{position:relative;z-index:1;color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-path-ring span,.chessimals-path-bars b{color:var(--chessimals-text);font-size:.78rem;font-weight:950}.chessimals-path-ring span,.chessimals-path-ring small{min-width:0}.chessimals-path-ring small{color:var(--chessimals-muted);font-size:.68rem;font-weight:820;line-height:1.25}.chessimals-path-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:.75rem}.chessimals-path-panel{display:grid;gap:.65rem;align-content:start;padding:.75rem}.chessimals-path-panel--wide{grid-column:1 / -1}.chessimals-path-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem}.chessimals-path-stats span{display:grid;gap:.08rem;padding:.6rem}.chessimals-path-stats small{overflow:hidden;color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-path-stats strong{color:var(--chessimals-text);font-size:1.25rem;font-weight:1000}.chessimals-path-bars{display:grid;gap:.45rem}.chessimals-path-bars span{display:grid;grid-template-columns:minmax(0,.9fr) minmax(3rem,1fr) auto;gap:.45rem;align-items:center;padding:.48rem}.chessimals-path-bars i{display:block;height:.48rem;overflow:hidden;border-radius:999px;background:rgba(var(--chessimals-primary-rgb),.11)}.chessimals-path-bars i:before{display:block;width:var(--bar-progress);height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--chessimals-sky),var(--chessimals-sun));content:\"\"}.chessimals-path-bars strong{color:var(--chessimals-text);font-size:.86rem;font-weight:1000}.chessimals-achievements--path{grid-template-columns:1fr}.chessimals-challenge-history--path{border-top:0;padding-top:0}.chessimals-progress__heading small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-progress__heading{display:flex;flex-wrap:wrap;gap:.35rem;align-items:baseline;justify-content:space-between}.chessimals-progress__heading span{color:var(--chessimals-muted);font-size:.76rem;font-weight:820}.chessimals-challenge-history{display:grid;gap:.35rem;border-top:1px solid rgba(var(--chessimals-primary-rgb),.12);padding-top:.2rem}.chessimals-challenge-history span{display:flex;flex-wrap:wrap;gap:.35rem;color:var(--chessimals-muted);font-size:.82rem;font-weight:820}.chessimals-challenge-history b{color:var(--chessimals-text);font-weight:1000}.chessimals-challenge-summary{display:grid;gap:.6rem;border:0;border-radius:0;padding:0;background:transparent}.chessimals-challenge-summary.is-victory,.chessimals-challenge-summary.is-defeat{background:transparent}.chessimals-challenge-summary__hero,.chessimals-challenge-rival-voice{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.7rem}.chessimals-challenge-summary__hero>.chessimals-bot-avatar,.chessimals-challenge-rival-voice>.chessimals-bot-avatar{position:relative;display:grid;place-items:center;width:3rem;height:3rem;border-radius:1rem;background:rgba(var(--chessimals-sky-rgb),.16);font-size:1.55rem;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-challenge-summary__hero.is-cleared>.chessimals-bot-avatar img{filter:grayscale(1) saturate(.15) contrast(.95);opacity:.62}.chessimals-challenge-summary__hero.is-cleared>.chessimals-bot-avatar:after{content:\"\\2713\";position:absolute;right:-.05rem;bottom:-.05rem;display:grid;place-items:center;width:1.25rem;height:1.25rem;border:.12rem solid var(--chessimals-panel);border-radius:999px;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.74rem;font-weight:1000;line-height:1}.chessimals-challenge-summary__hero div,.chessimals-challenge-rival-voice div{display:grid;gap:.12rem;min-width:0}.chessimals-challenge-summary__hero small,.chessimals-challenge-rival-voice small{color:var(--chessimals-muted);font-size:.68rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-challenge-summary strong{font-size:1rem;font-weight:1000}.chessimals-challenge-summary__hero p,.chessimals-challenge-rival-voice p{margin:0;color:var(--chessimals-muted);font-size:.86rem;font-weight:820;line-height:1.28}.chessimals-challenge-rival-voice{border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:.95rem;padding:.65rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-summary__actions{display:grid}.chessimals-challenge-summary__play{min-height:3.35rem;font-size:1.02rem;box-shadow:0 .9rem 1.8rem rgba(var(--chessimals-primary-rgb),.26)}.chessimals-result.is-challenge-result .chessimals-challenge-tension,.chessimals-result.is-challenge-result .chessimals-challenge-rival--next{display:grid;grid-template-columns:minmax(0,1fr);border:0;border-radius:.75rem;padding:.45rem .6rem;background:rgba(var(--chessimals-primary-rgb),.07)}.chessimals-result.is-challenge-result .chessimals-challenge-rival--next{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.7rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1rem;padding:.65rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.12),transparent),rgba(var(--chessimals-primary-rgb),.06)}.chessimals-result.is-challenge-result .chessimals-challenge-rival--next>.chessimals-bot-avatar{width:3.4rem;height:3.4rem;border-radius:1.1rem;background:var(--chessimals-elevated-strong);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14),0 .45rem 1rem rgba(var(--chessimals-primary-rgb),.1)}.chessimals-result.is-challenge-result .chessimals-challenge-rival--next p{margin:0;color:var(--chessimals-text);font-size:.9rem;font-weight:900;line-height:1.22}.chessimals-result.is-challenge-result .chessimals-challenge-tension.is-critical{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.1)}.chessimals-challenge-rival-voice>.chessimals-bot-avatar{width:2.35rem;height:2.35rem;border-radius:999px;font-size:1.15rem}.chessimals-challenge-summary__stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem}.chessimals-challenge-record{display:flex;align-items:center;gap:.45rem;border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:999px;padding:.45rem .65rem;background:rgba(var(--chessimals-sky-rgb),.14);color:var(--chessimals-text)}.chessimals-challenge-record span{display:grid;place-items:center;width:1.45rem;height:1.45rem;border-radius:999px;background:var(--chessimals-sky);color:#fffaf0;font-size:.82rem}.chessimals-challenge-record strong{font-size:.9rem}.chessimals-challenge-tension{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.3);border-radius:.9rem;padding:.65rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),rgba(var(--chessimals-primary-rgb),.08)),var(--chessimals-elevated)}.chessimals-challenge-tension.is-critical{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.38);background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.16),rgba(var(--chessimals-primary-rgb),.08)),var(--chessimals-elevated)}.chessimals-challenge-tension>span{display:grid;place-items:center;width:2.25rem;height:2.25rem;border-radius:999px;background:rgba(var(--chessimals-sky-rgb),.18);color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-tension.is-critical>span{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.18)}.chessimals-challenge-tension div{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-tension strong{font-size:.95rem}.chessimals-challenge-tension p{font-size:.84rem}.chessimals-challenge-summary__stats span{display:grid;gap:.1rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:.8rem;padding:.45rem;background:var(--chessimals-elevated)}.chessimals-challenge-summary__stats b{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-rival--next em{color:var(--chessimals-muted);font-size:.78rem;font-style:normal;font-weight:820;line-height:1.25;white-space:normal}.chessimals-tip p,.chessimals-powers p{color:var(--chessimals-muted)}.chessimals-learn-more{justify-self:start;min-height:2.75rem;border:0;border-radius:999px;padding:0 1rem;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font:inherit;font-weight:950;box-shadow:0 .75rem 1.6rem rgba(var(--chessimals-primary-rgb),.28)}.chessimals-size,.chessimals-mode,.chessimals-status{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-status{order:3;grid-template-columns:repeat(3,minmax(0,1fr))}.chessimals-size button,.chessimals-mode button,.chessimals-status div{display:grid;gap:.2rem;align-content:center;min-width:0;min-height:3.875rem;padding:.55rem .65rem;border:1px solid var(--chessimals-border);border-radius:1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-size button.is-selected{border-color:var(--chessimals-primary);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-mode button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-status__timer{position:relative;overflow:hidden;isolation:isolate;border-color:rgba(var(--chessimals-primary-rgb),.42)!important}.chessimals-status__timer:before{content:\"\";position:absolute;inset:auto 0 0;z-index:0;height:.22rem;transform:scaleX(var(--timer-progress, 1));transform-origin:left center;background:var(--chessimals-primary);transition:transform .18s linear,background .18s ease}.chessimals-status__timer.is-low{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.58)!important;background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.16),transparent),var(--chessimals-panel)!important;animation:chessimals-turn-pulse .82s ease-in-out infinite}.chessimals-status__timer.is-low:before{background:var(--ion-color-danger, #eb445a)}.chessimals-status__timer.is-low strong{color:var(--ion-color-danger, #eb445a)}.chessimals-status__score.is-pop{border-color:rgba(var(--chessimals-sky-rgb),.42);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),transparent),var(--chessimals-panel);animation:chessimals-score-pulse .62s ease-out both}.chessimals-status__timer small,.chessimals-status__timer strong{position:relative;z-index:1}.chessimals-challenge-live{order:4;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1.35fr);gap:.65rem;align-items:stretch;border:1px solid rgba(var(--chessimals-sky-rgb),.28);border-radius:8px;padding:.68rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.13),transparent 52%),var(--chessimals-elevated-soft);color:var(--chessimals-text)}.chessimals-challenge-live__rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;min-width:0}.chessimals-challenge-live__rival>.chessimals-bot-avatar{display:grid;place-items:center;width:2.7rem;height:2.7rem;border-radius:8px;background:rgba(var(--chessimals-sky-rgb),.16);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14);font-size:1.35rem}.chessimals-challenge-live__rival div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-live__rival small,.chessimals-challenge-live__metrics small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-live__rival strong{overflow:hidden;color:var(--chessimals-text);font-size:1rem;font-weight:1000;line-height:1.05;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-live__rival p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.78rem;font-weight:820;line-height:1.18;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-challenge-live__metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.42rem}.chessimals-challenge-live__metrics span{display:grid;gap:.1rem;align-content:center;min-width:0;min-height:3rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.4rem .45rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-live__metrics b{overflow:hidden;color:var(--chessimals-text);font-size:.92rem;font-weight:1000;line-height:1.05;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-tension--live{grid-column:1 / -1;padding:.55rem}.chessimals-difficulty{display:flex;flex-wrap:wrap;gap:.55rem}.chessimals-difficulty button{min-height:2.75rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:950}.chessimals-difficulty button.is-selected{border-color:var(--chessimals-primary);background:var(--chessimals-primary);color:#fff}.chessimals-bots{display:grid;grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr));gap:.625rem}.chessimals-bots button{display:grid;grid-template-columns:auto 1fr;grid-template-areas:\"avatar title\" \"avatar body\" \"avatar tendency\";column-gap:.55rem;row-gap:.12rem;min-width:0;min-height:4.75rem;border:1px solid var(--chessimals-border);border-radius:1rem;padding:.65rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-bots button>.chessimals-bot-avatar{grid-area:avatar;display:grid;place-items:center;width:2.1rem;height:2.1rem;border-radius:50%;background:rgba(var(--chessimals-primary-rgb),.12);font-size:1.2rem}.chessimals-bots button strong{grid-area:title;align-self:end;font-size:.95rem;font-weight:950}.chessimals-bots button small{grid-area:body;color:var(--chessimals-muted);font-size:.75rem;font-weight:750;line-height:1.25}.chessimals-bots button p{grid-area:tendency;margin:.12rem 0 0;color:var(--chessimals-muted);font-size:.72rem;font-weight:820;line-height:1.24}.chessimals-bots button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16),0 .75rem 1.5rem rgba(var(--chessimals-primary-rgb),.1)}.chessimals-size strong,.chessimals-mode strong,.chessimals-status strong,.chessimals-result strong,.chessimals-rematch-status strong,.chessimals-tip strong{font-weight:950}.chessimals-status strong{min-width:0;font-size:clamp(.95rem,2.5vw,1.2rem);line-height:1.08;overflow-wrap:anywhere;white-space:normal}.chessimals-size small,.chessimals-mode small,.chessimals-status small{color:var(--chessimals-muted);font-size:.78rem;line-height:1.12}.chessimals-board-wrap{--chessimals-board-radius: min(.85rem, 14px);display:flex;justify-content:center;min-width:0;max-width:100%;overflow-x:auto;width:100%;padding:.25rem 0}.chessimals-board-wrap.is-orienting .chessimals-board-frame{animation:chessimals-orient-board .32s ease}.chessimals-board-wrap.is-finished{overflow-x:visible}.chessimals-board-frame{flex:0 1 58rem;min-width:0;width:100%;max-width:58rem;border-radius:var(--chessimals-board-radius)}.chessimals-board{position:relative;display:grid;grid-template-columns:repeat(var(--board-size),minmax(0,1fr));grid-template-rows:repeat(var(--board-size),minmax(0,1fr));min-width:0;width:100%;aspect-ratio:1 / 1;overflow:hidden;isolation:isolate;contain:paint;border:1px solid var(--chessimals-border);border-radius:var(--chessimals-board-radius);clip-path:inset(0 round var(--chessimals-board-radius));-webkit-mask-image:-webkit-radial-gradient(white,black);background:radial-gradient(ellipse at 16% 18%,rgba(255,255,255,.34),transparent 18%),radial-gradient(ellipse at 82% 78%,rgba(var(--chessimals-primary-rgb),.1),transparent 22%),radial-gradient(ellipse at 32% 68%,rgba(var(--chessimals-stone-rgb),.05),transparent 30%),radial-gradient(ellipse at 66% 34%,rgba(255,255,255,.08),transparent 24%),var(--chessimals-border);box-shadow:inset 0 0 0 1px #ffffff1a,0 .85rem 2.1rem var(--chessimals-board-shadow)}.chessimals-board-wrap.is-syncing .chessimals-board{cursor:wait}.chessimals-cell-coordinate{position:absolute;z-index:5;color:color-mix(in srgb,var(--chessimals-muted) 78%,var(--chessimals-text));font-size:.68rem;font-weight:950;letter-spacing:.02em;line-height:1;pointer-events:none;text-transform:uppercase;-webkit-user-select:none;user-select:none}.chessimals-cell-coordinate--rank{top:.2rem;left:.24rem}.chessimals-cell-coordinate--file{right:.24rem;bottom:.18rem}@keyframes chessimals-orient-board{0%{opacity:.72;filter:blur(.06rem);transform:scale(.985)}52%{opacity:.92;filter:blur(0);transform:scale(1.012)}to{opacity:1;filter:blur(0);transform:scale(1)}}.chessimals-center-line{position:absolute;top:50%;left:0;right:0;z-index:2;display:flex;align-items:center;justify-content:center;border-top:.08rem dashed rgba(var(--chessimals-primary-rgb),.56);filter:drop-shadow(0 0 .24rem rgba(var(--chessimals-primary-rgb),.26));pointer-events:none}.chessimals-power-trail{position:absolute;inset:0;z-index:5;pointer-events:none;--trail-color: rgba(var(--chessimals-magic-rgb), .88);--trail-glow: rgba(var(--chessimals-magic-rgb), .48)}.chessimals-power-trail.is-capture{--trail-color: rgba(var(--chessimals-capture-rgb), .86);--trail-glow: rgba(var(--chessimals-capture-rgb), .46)}.chessimals-power-trail.effect-eagle{--trail-color: rgba(255, 255, 255, .92);--trail-glow: rgba(120, 210, 255, .54)}.chessimals-power-trail.effect-bull{--trail-color: rgba(188, 131, 76, .86);--trail-glow: rgba(188, 131, 76, .36)}.chessimals-power-trail.effect-kangaroo{--trail-color: rgba(174, 124, 255, .86);--trail-glow: rgba(174, 124, 255, .42)}.chessimals-power-trail.effect-lion{--trail-color: rgba(255, 221, 120, .88);--trail-glow: rgba(255, 190, 56, .42)}.chessimals-power-trail>span{position:absolute;top:var(--trail-y);left:var(--trail-x);width:var(--trail-length);height:.45rem;border-radius:999px;background:linear-gradient(90deg,transparent,var(--trail-color) 42%,rgba(255,255,255,.92));box-shadow:0 0 .75rem var(--trail-glow),0 0 1.45rem var(--trail-glow);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0);transform-origin:0 50%;animation:chessimals-power-trail .72s ease-out both}.chessimals-power-trail.effect-eagle>span{height:.28rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.95) 44%,rgba(120,210,255,.58)),repeating-linear-gradient(90deg,transparent 0 .7rem,rgba(255,255,255,.66) .7rem .92rem);animation-name:chessimals-eagle-trail}.chessimals-power-trail.effect-bull>span{height:.72rem;background:repeating-linear-gradient(90deg,rgba(255,255,255,.42) 0 .18rem,transparent .18rem .42rem),linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.86));animation-name:chessimals-bull-trail}.chessimals-power-trail.effect-kangaroo>span{height:1rem;border-top:.16rem dashed var(--trail-color);background:transparent;box-shadow:none;filter:drop-shadow(0 0 .8rem var(--trail-glow));animation-name:chessimals-kangaroo-trail}.chessimals-power-trail.effect-lion>span{height:.62rem;background:linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.82)),repeating-linear-gradient(115deg,rgba(255,255,255,.55) 0 .12rem,transparent .12rem .34rem);animation-name:chessimals-lion-trail}@keyframes chessimals-power-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}28%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.72)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-eagle-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) skew(-10deg)}30%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.82) skew(-10deg)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1.05) skew(-10deg)}}@keyframes chessimals-bull-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) scaleY(1)}38%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.7) scaleY(1.18)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1) scaleY(.82)}}@keyframes chessimals-kangaroo-trail{0%{opacity:0;transform:translateY(-.4rem) rotate(var(--trail-angle)) scaleX(0)}34%{opacity:1;transform:translateY(-1.2rem) rotate(var(--trail-angle)) scaleX(.62)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-lion-trail{0%{opacity:0;filter:saturate(1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}36%{opacity:1;filter:saturate(1.4);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.76)}to{opacity:0;filter:saturate(1.1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-score-pulse{0%,to{transform:translateZ(0) scale(1)}42%{transform:translateZ(0) scale(1.035)}}.chessimals-challenge-intro{position:absolute;inset:0;z-index:7;display:grid;place-items:center;padding:clamp(.75rem,4vw,1.35rem);background:radial-gradient(circle at 50% 36%,rgba(var(--chessimals-sky-rgb),.24),transparent 34%),linear-gradient(135deg,#140c167a,#08120d57);backdrop-filter:blur(1.5px);animation:chessimals-challenge-intro-in .26s ease-out both}.chessimals-challenge-intro__card{display:grid;justify-items:center;gap:.55rem;width:min(18rem,92%);border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:8px;padding:.85rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent),var(--chessimals-elevated-strong);color:var(--chessimals-text);box-shadow:0 1.1rem 2.3rem #0000003d,inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.08);text-align:center}.chessimals-challenge-intro__avatar{display:grid;place-items:center;width:4rem;height:4rem;border-radius:8px;background:radial-gradient(circle at 35% 24%,var(--chessimals-glass-highlight),transparent 30%),rgba(var(--chessimals-sky-rgb),.16);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.16),0 .7rem 1.5rem rgba(var(--chessimals-sky-rgb),.18);font-size:2.15rem}.chessimals-challenge-intro__copy{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-intro__copy small,.chessimals-challenge-intro__facts small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:950;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-intro__copy strong{overflow:hidden;color:var(--chessimals-text);font-size:1.35rem;font-weight:1000;line-height:1.04;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-intro__copy p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.88rem;font-weight:820;line-height:1.24;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-challenge-intro__facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem;width:100%}.chessimals-challenge-intro__facts span{display:grid;gap:.1rem;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.38rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-intro__facts b{overflow:hidden;color:var(--chessimals-text);font-size:.86rem;font-weight:1000;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-intro .chessimals-primary{min-height:2.45rem;width:100%}@keyframes chessimals-challenge-intro-in{0%{opacity:0}to{opacity:1}}.chessimals-board-overlay{position:absolute;inset:0;z-index:8;display:grid;place-content:center;gap:.5rem;padding:1.25rem;background:radial-gradient(circle at 50% 34%,rgba(255,226,129,.34),transparent 24%),radial-gradient(circle at 50% 52%,rgba(var(--chessimals-primary-rgb),.34),transparent 42%),linear-gradient(135deg,#140c16e0,#08120dc7);color:#fff;text-align:center;backdrop-filter:blur(2px);overflow:hidden}.chessimals-board-overlay.is-defeat{background:radial-gradient(circle at 50% 34%,rgba(143,168,206,.26),transparent 24%),radial-gradient(circle at 50% 52%,rgba(72,86,115,.42),transparent 42%),linear-gradient(135deg,#090c14e6,#1c1e2bcc)}.chessimals-board-overlay:before{position:absolute;inset:0;background:radial-gradient(circle at 20% 30%,rgba(255,255,255,.58) 0 .08rem,transparent .1rem),radial-gradient(circle at 75% 25%,rgba(255,226,129,.7) 0 .1rem,transparent .12rem),radial-gradient(circle at 68% 72%,rgba(var(--chessimals-capture-rgb),.54) 0 .08rem,transparent .1rem),radial-gradient(circle at 35% 78%,rgba(255,255,255,.48) 0 .07rem,transparent .09rem),radial-gradient(circle at 84% 66%,rgba(255,255,255,.38) 0 .06rem,transparent .08rem),radial-gradient(circle at 14% 64%,rgba(255,226,129,.48) 0 .07rem,transparent .09rem);content:\"\";opacity:.72;animation:chessimals-victory-sparks 1.5s ease-in-out infinite}.chessimals-board-overlay__rays{position:absolute;inset:-18%;background:conic-gradient(from 8deg,transparent 0 7deg,rgba(255,226,129,.16) 7deg 11deg,transparent 11deg 22deg);opacity:.85;animation:chessimals-finale-rays 8s linear infinite}.chessimals-board-overlay.is-defeat .chessimals-board-overlay__rays{background:conic-gradient(from 8deg,transparent 0 8deg,rgba(180,204,240,.1) 8deg 12deg,transparent 12deg 24deg);animation-duration:12s}.chessimals-board-overlay__ribbon{position:absolute;top:-20%;width:.42rem;height:54%;border-radius:999px;background:linear-gradient(to bottom,transparent,rgba(255,226,129,.72),transparent);opacity:.7;transform:rotate(var(--ribbon-angle, 12deg));animation:chessimals-finale-ribbon 2.5s ease-in-out infinite}.chessimals-board-overlay.is-defeat .chessimals-board-overlay__ribbon{background:linear-gradient(to bottom,transparent,rgba(180,204,240,.42),transparent);opacity:.48}.chessimals-board-overlay__ribbon.ribbon-a{left:18%;--ribbon-angle: -18deg}.chessimals-board-overlay__ribbon.ribbon-b{left:50%;--ribbon-angle: 8deg;animation-delay:.32s}.chessimals-board-overlay__ribbon.ribbon-c{right:18%;--ribbon-angle: 20deg;animation-delay:.64s}.chessimals-board-overlay>*{position:relative;z-index:1}.chessimals-board-overlay span{justify-self:center;border-radius:999px;padding:.32rem .7rem;background:#ffffff26;color:#ffffffe6;font-size:.76rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-board-overlay strong{font-size:clamp(1.65rem,8vw,3rem);line-height:1;font-weight:950;text-shadow:0 0 1.25rem rgba(255,255,255,.26)}.chessimals-board-overlay em{justify-self:center;display:grid;place-items:center;width:clamp(3rem,14vw,4.6rem);height:clamp(3rem,14vw,4.6rem);border:.16rem solid rgba(255,255,255,.62);border-radius:50%;background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.72),transparent 18%),linear-gradient(135deg,#ffe281,#b98436);color:#2d2412;font-size:clamp(1.1rem,5vw,1.65rem);font-style:normal;font-weight:950;box-shadow:0 0 0 .45rem #ffe2811f,0 1rem 2rem #00000042;animation:chessimals-finale-medal 1.8s ease-in-out infinite}.chessimals-board-overlay.is-defeat em{background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.48),transparent 18%),linear-gradient(135deg,#d9e2ef,#69758e);color:#182032;box-shadow:0 0 0 .45rem #b4ccf01a,0 1rem 2rem #00000052}.chessimals-board-overlay em.has-avatar{overflow:hidden;background:#fff;padding:0}.chessimals-board-overlay em.has-avatar img{display:block;width:100%;height:100%;object-fit:cover}.chessimals-board-overlay b{justify-self:center;color:#fffc;font-size:.8rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-board-overlay small{color:#ffffffd1;font-size:clamp(.9rem,3vw,1.1rem);font-weight:800}.chessimals-board-overlay__stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem;width:min(26rem,92%);margin:.2rem auto 0}.chessimals-board-overlay__stats div{display:grid;gap:.08rem;min-width:0;border:1px solid rgba(255,255,255,.18);border-radius:.75rem;padding:.42rem .46rem;background:#ffffff1a;backdrop-filter:blur(3px)}.chessimals-board-overlay__stats dt,.chessimals-board-overlay__stats dd{overflow:hidden;margin:0;text-overflow:ellipsis;white-space:nowrap}.chessimals-board-overlay__stats dt{color:#ffffffad;font-size:clamp(.52rem,2.1vw,.66rem);font-weight:950;letter-spacing:.04em;text-transform:uppercase}.chessimals-board-overlay__stats dd{color:#fff;font-size:clamp(.68rem,2.8vw,.88rem);font-weight:950}@keyframes chessimals-victory-sparks{0%,to{opacity:.46;transform:translateY(0) scale(.98)}50%{opacity:.95;transform:translateY(-.35rem) scale(1.02)}}@keyframes chessimals-finale-rays{to{transform:rotate(360deg)}}@keyframes chessimals-finale-ribbon{0%,to{opacity:.18;transform:translateY(-.5rem) rotate(var(--ribbon-angle))}50%{opacity:.75;transform:translateY(1.4rem) rotate(var(--ribbon-angle))}}@keyframes chessimals-finale-medal{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-.18rem) scale(1.04)}}.chessimals-cell{position:relative;isolation:isolate;--chessimals-cell-bg: var(--chessimals-cell-light);display:grid;place-items:center;min-width:0;min-height:0;aspect-ratio:1;border:0;background:radial-gradient(ellipse at 26% 24%,rgba(255,255,255,.12),transparent 24%),radial-gradient(ellipse at 78% 76%,rgba(61,54,36,.06),transparent 28%),linear-gradient(135deg,rgba(255,255,255,.04),transparent 52%,rgba(52,44,28,.04)),var(--chessimals-cell-bg);color:var(--chessimals-text);font:inherit;overflow:hidden;transition:background .16s ease,box-shadow .16s ease,transform .16s ease}.chessimals-cell:before,.chessimals-cell:after{pointer-events:none}.chessimals-cell-texture{position:absolute;inset:0;z-index:0;display:block;pointer-events:none;opacity:.42;mix-blend-mode:multiply;background:radial-gradient(ellipse at var(--wear-x, 28%) var(--wear-y, 32%),rgba(255,255,255,.16),transparent 17%),radial-gradient(ellipse at var(--wear-x2, 74%) var(--wear-y2, 68%),rgba(75,66,42,.09),transparent 25%),repeating-linear-gradient(var(--wear-angle, 26deg),rgba(75,66,42,.045) 0 1px,transparent 1px .52rem),linear-gradient(135deg,rgba(255,255,255,.06),transparent 42%,rgba(52,44,28,.045))}.chessimals-cell-texture:after{position:absolute;inset:.08rem;border:1px solid rgba(75,66,42,.05);border-radius:.18rem;box-shadow:inset .08rem .08rem #ffffff14,inset -.08rem -.08rem #342c1c0b;content:\"\"}.chessimals-cell.is-edge-cell .chessimals-cell-texture{opacity:.56;background:radial-gradient(ellipse at var(--wear-x, 28%) var(--wear-y, 32%),rgba(255,255,255,.14),transparent 18%),radial-gradient(ellipse at var(--wear-x2, 74%) var(--wear-y2, 68%),rgba(75,66,42,.14),transparent 28%),linear-gradient(135deg,rgba(70,52,28,.055),transparent 44%,rgba(52,44,28,.09)),repeating-linear-gradient(var(--wear-angle, 26deg),rgba(75,66,42,.055) 0 1px,transparent 1px .48rem)}.chessimals-cell.wear-0{--wear-x: 22%;--wear-y: 24%;--wear-x2: 78%;--wear-y2: 72%;--wear-angle: 18deg}.chessimals-cell.wear-1{--wear-x: 64%;--wear-y: 18%;--wear-x2: 30%;--wear-y2: 76%;--wear-angle: -24deg}.chessimals-cell.wear-2{--wear-x: 42%;--wear-y: 58%;--wear-x2: 82%;--wear-y2: 26%;--wear-angle: 42deg}.chessimals-cell.wear-3{--wear-x: 74%;--wear-y: 68%;--wear-x2: 24%;--wear-y2: 28%;--wear-angle: -12deg}.chessimals-cell.wear-4{--wear-x: 34%;--wear-y: 18%;--wear-x2: 62%;--wear-y2: 84%;--wear-angle: 64deg}.chessimals-cell.wear-5{--wear-x: 18%;--wear-y: 70%;--wear-x2: 70%;--wear-y2: 34%;--wear-angle: -48deg}:host-context(html.ion-palette-dark) .chessimals-cell-texture,:host-context([data-theme=\"dark\"]) .chessimals-cell-texture{opacity:.34;mix-blend-mode:soft-light}.chessimals-cell.is-dark-cell{--chessimals-cell-bg: var(--chessimals-cell-dark)}.chessimals-cell.is-selected{z-index:1;background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.28) 0 36%,transparent 62%),linear-gradient(135deg,rgba(var(--chessimals-selected-rgb),.22),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .18rem var(--chessimals-selected),inset 0 0 .55rem #ffffffb8,inset 0 0 1.8rem rgba(var(--chessimals-selected-rgb),.42),0 0 .55rem rgba(var(--chessimals-selected-rgb),.56),0 0 1.55rem rgba(var(--chessimals-selected-rgb),.36)}.chessimals-board.is-power-aiming .chessimals-cell.is-selected{background:radial-gradient(circle at 50% 52%,rgba(var(--chessimals-magic-rgb),.38) 0 34%,transparent 64%),radial-gradient(circle at 32% 24%,rgba(255,255,255,.34),transparent 28%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.2),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .18rem var(--chessimals-magic-hot),inset 0 0 .8rem #ffffffa8,inset 0 0 1.9rem rgba(var(--chessimals-magic-rgb),.5),0 0 .7rem rgba(var(--chessimals-magic-rgb),.62),0 0 1.75rem rgba(var(--chessimals-magic-rgb),.42)}.chessimals-board.is-power-aiming .chessimals-cell.is-legal:not(.is-capture):after{border-color:rgba(var(--chessimals-magic-rgb),.94);box-shadow:0 0 .72rem rgba(var(--chessimals-magic-rgb),.48),inset 0 0 .6rem #fff3}.chessimals-board.is-power-aiming .chessimals-target{background:var(--chessimals-magic-hot);box-shadow:0 0 0 .2rem rgba(var(--chessimals-magic-rgb),.2),0 0 .95rem rgba(var(--chessimals-magic-rgb),.62)}.chessimals-cell.is-legal:not(.is-capture):after{position:absolute;inset:13%;z-index:2;border:max(2px,1.8%) solid var(--chessimals-move);border-radius:.55rem;content:\"\";opacity:.74;pointer-events:none}.chessimals-cell.is-last:not(.is-selected):not(.is-legal):not(.is-capture){background:radial-gradient(circle,rgba(var(--chessimals-last-rgb),.16) 0 42%,transparent 68%),var(--chessimals-cell-bg)}.chessimals-cell.is-capture{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.24),transparent 34%),linear-gradient(135deg,rgba(var(--chessimals-capture-rgb),.14),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .14rem rgba(var(--chessimals-capture-rgb),.84),inset 0 0 1.4rem rgba(var(--chessimals-capture-rgb),.24),0 0 .95rem rgba(var(--chessimals-capture-rgb),.34);animation:chessimals-capture-aura 1.35s ease-in-out infinite}.chessimals-cell.is-capture:before{position:absolute;inset:4%;z-index:1;display:block;border-radius:.64rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.52),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.24),transparent 58%);content:\"\";opacity:0;transform:translate(-42%) scale(.9);animation:chessimals-capture-sweep 1.35s ease-in-out infinite}.chessimals-cell.is-capture:after{position:absolute;inset:8%;z-index:3;border:max(2px,1.55%) solid rgba(var(--chessimals-capture-rgb),.9);border-radius:.62rem;box-shadow:0 0 .75rem rgba(var(--chessimals-capture-rgb),.5),inset 0 0 .72rem #ffffff38;content:\"\";pointer-events:none;animation:chessimals-capture-frame 1.35s ease-in-out infinite}.chessimals-cell.has-capture-ready:not(.is-selected):after{position:absolute;inset:16%;z-index:3;border:max(2px,1.45%) solid rgba(var(--chessimals-selected-rgb),.72);border-radius:999px;box-shadow:0 0 .65rem rgba(var(--chessimals-selected-rgb),.34),inset 0 0 .55rem #ffffff2e;content:\"\"}.chessimals-cell.is-winning.is-legal:not(.is-capture):after{border-color:rgba(var(--chessimals-warning-rgb),.92);border-radius:999px;box-shadow:0 0 .75rem rgba(var(--chessimals-warning-rgb),.48),inset 0 0 .58rem #ffffff38}.chessimals-cell.is-winning .chessimals-target{background:var(--chessimals-warning);box-shadow:0 0 0 .22rem rgba(var(--chessimals-warning-rgb),.2),0 0 .95rem rgba(var(--chessimals-warning-rgb),.56)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture){background:radial-gradient(circle at 50% 52%,rgba(var(--chessimals-warning-rgb),.16),transparent 52%),var(--chessimals-cell-bg)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture) .chessimals-piece{filter:drop-shadow(0 0 .38rem rgba(var(--chessimals-warning-rgb),.52)) var(--chessimals-piece-white-shadow)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture) .chessimals-piece.is-black{filter:drop-shadow(0 0 .38rem rgba(var(--chessimals-warning-rgb),.52)) var(--chessimals-piece-black-shadow)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture):before{position:absolute;top:.26rem;right:.26rem;z-index:4;width:.48rem;height:.48rem;border-radius:999px;background:rgba(var(--chessimals-warning-rgb),.96);box-shadow:0 0 0 .18rem rgba(var(--chessimals-warning-rgb),.22);content:\"\"}@keyframes chessimals-capture-aura{0%,to{filter:saturate(1);box-shadow:inset 0 0 0 .12rem rgba(var(--chessimals-capture-rgb),.78),inset 0 0 1rem rgba(var(--chessimals-capture-rgb),.2),0 0 .64rem rgba(var(--chessimals-capture-rgb),.32)}50%{filter:saturate(1.22);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.96),inset 0 0 1.34rem rgba(var(--chessimals-capture-rgb),.34),0 0 1.2rem rgba(var(--chessimals-capture-rgb),.48)}}@keyframes chessimals-capture-sweep{0%{opacity:0;transform:translate(-52%) scale(.88)}42%{opacity:.66;transform:translate(0) scale(1)}to{opacity:0;transform:translate(48%) scale(.92)}}@keyframes chessimals-capture-frame{0%,to{opacity:.68;transform:scale(.96)}50%{opacity:1;transform:scale(1)}}.chessimals-cell.has-source-effect:not(.is-moving-source){background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.12) 0 34%,transparent 64%),var(--chessimals-cell-bg)}.chessimals-cell.has-move-effect{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.22) 0 34%,transparent 68%),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.86),inset 0 0 1.2rem rgba(var(--chessimals-capture-rgb),.26),0 0 1.1rem rgba(var(--chessimals-capture-rgb),.42)}.chessimals-cell.has-move-effect:before{position:absolute;inset:.12rem;z-index:1;display:block;border-radius:.7rem;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.48),transparent 22%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.42),transparent 58%);content:\"\";opacity:0;transform:scale(.72);animation:chessimals-power-impact .7s ease-out both}.chessimals-cell.has-move-effect:after{position:absolute;inset:.28rem;z-index:4;display:block;border:.14rem solid rgba(255,255,255,.72);border-radius:.58rem;box-shadow:0 0 .5rem #ffffff5c,0 0 1rem rgba(var(--chessimals-capture-rgb),.32);content:\"\";animation:chessimals-power-frame .86s ease-out both}.chessimals-cell.has-capture-effect{animation:chessimals-capture-hit .78s ease-out both}.chessimals-cell.effect-eagle:before{background:linear-gradient(135deg,transparent 10%,rgba(255,255,255,.78) 48%,transparent 52%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.36),transparent 62%)}.chessimals-cell.effect-bull:before{background:repeating-linear-gradient(90deg,rgba(255,255,255,.34) 0 .16rem,transparent .16rem .34rem),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.38),transparent 62%)}.chessimals-cell.effect-kangaroo:before{border-radius:999px;background:radial-gradient(circle at 42% 44%,rgba(255,255,255,.58),transparent 18%),radial-gradient(circle at 58% 56%,rgba(var(--chessimals-capture-rgb),.4),transparent 64%)}.chessimals-cell.effect-lion:before{background:conic-gradient(from 0deg,transparent,rgba(255,255,255,.56),transparent,rgba(var(--chessimals-capture-rgb),.4),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.34),transparent 62%)}@keyframes chessimals-power-impact{0%{opacity:0;transform:scale(.54) rotate(0)}28%{opacity:1;transform:scale(.96) rotate(2deg)}to{opacity:0;transform:scale(1.3) rotate(8deg)}}@keyframes chessimals-power-frame{0%{opacity:0;transform:scale(.84)}34%{opacity:1;transform:scale(1.02)}to{opacity:0;transform:scale(1.16)}}@keyframes chessimals-capture-hit{0%,to{filter:saturate(1)}35%{filter:saturate(1.35) brightness(1.08)}}.chessimals-cell.is-moving-source .chessimals-piece{opacity:0}.chessimals-piece{position:relative;z-index:2;display:block;width:68%;height:74%;color:var(--chessimals-primary);--chessimals-piece-fill: var(--chessimals-piece-white-fill);--chessimals-piece-side: var(--chessimals-piece-white-side);--chessimals-piece-line: var(--chessimals-piece-white-line);--chessimals-piece-outline: rgba(82, 65, 46, .34);filter:var(--chessimals-piece-white-shadow)}.chessimals-piece.is-black{color:#fff;--chessimals-piece-fill: var(--chessimals-piece-black-fill);--chessimals-piece-side: var(--chessimals-piece-black-side);--chessimals-piece-line: var(--chessimals-piece-black-line);--chessimals-piece-outline: rgba(255, 255, 255, .22);filter:var(--chessimals-piece-black-shadow)}.chessimals-moving-piece{position:absolute;top:0;left:0;z-index:6;width:calc(100% / var(--board-size));height:calc(100% / var(--board-size));display:grid;place-items:center;pointer-events:none;transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%));animation:chessimals-piece-travel .36s cubic-bezier(.2,.82,.24,1) both}@keyframes chessimals-piece-travel{0%{transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%)) scale(1)}68%{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1.07)}to{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1)}}.chessimals-piece__side,.chessimals-piece__head,.chessimals-piece__collar,.chessimals-piece__neck,.chessimals-piece__base{position:absolute;display:block;left:50%;background:var(--chessimals-piece-fill);border:max(1px,1.25%) solid var(--chessimals-piece-outline);transform:translate(-50%)}.chessimals-piece__side{top:46%;z-index:0;width:58%;height:41%;border-radius:34% 34% 12% 12%;background:linear-gradient(96deg,var(--chessimals-piece-side) 0 34%,transparent 35%),var(--chessimals-piece-fill);clip-path:polygon(22% 0,78% 0,96% 100%,4% 100%);opacity:.92}.chessimals-piece__head{top:1%;z-index:4;width:48%;height:40%;border-radius:999px;background:radial-gradient(circle at 30% 22%,rgba(255,255,255,.72) 0 13%,transparent 14%),linear-gradient(135deg,rgba(255,255,255,.28) 0 34%,transparent 35%),var(--chessimals-piece-fill);box-shadow:inset -.18rem -.12rem #52412e0f,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece.is-black .chessimals-piece__head{box-shadow:inset .18rem -.12rem #ffffff0f,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece__collar{top:37%;z-index:5;width:72%;height:15%;border-radius:999px;background:linear-gradient(180deg,#f5cd77 0%,var(--chessimals-piece-gold) 55%,var(--chessimals-piece-gold-dark) 100%);border-color:color-mix(in srgb,var(--chessimals-piece-gold-dark) 72%,transparent);box-shadow:inset 0 .12rem #ffffff47,inset 0 -.08rem #462e1238,0 .08rem .18rem #462e1224}.chessimals-piece__neck{top:50%;z-index:2;width:52%;height:31%;clip-path:polygon(16% 0,84% 0,100% 100%,0 100%);background:linear-gradient(100deg,var(--chessimals-piece-side) 0 28%,transparent 29%),linear-gradient(180deg,var(--chessimals-piece-fill),color-mix(in srgb,var(--chessimals-piece-fill) 78%,var(--chessimals-piece-side)));box-shadow:inset -.12rem .1rem #ffffff14}.chessimals-piece__base{bottom:0;z-index:6;width:86%;height:17%;border-radius:.42rem .42rem .22rem .22rem;background:linear-gradient(100deg,var(--chessimals-piece-side) 0 18%,transparent 19%),linear-gradient(180deg,color-mix(in srgb,var(--chessimals-piece-fill) 92%,#ffffff),var(--chessimals-piece-fill));box-shadow:inset 0 .12rem #ffffff24,inset 0 -.1rem 0 var(--chessimals-piece-line)}.chessimals-target{width:16%;height:16%;border-radius:999px;background:var(--chessimals-move);opacity:.9;box-shadow:0 0 .9rem rgba(var(--chessimals-move-rgb),.42)}.chessimals-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.625rem}.chessimals-cards button{position:relative;isolation:isolate;display:grid;grid-template-rows:minmax(5.4rem,1fr) auto;gap:.5rem;place-items:stretch;min-height:8.15rem;padding:.55rem .55rem .7rem;border:.12rem solid rgba(var(--chessimals-magic-rgb),.54);border-radius:1.125rem;background:radial-gradient(circle at 50% 18%,rgba(255,255,255,.9),transparent 36%),linear-gradient(180deg,rgba(var(--chessimals-magic-rgb),.24),rgba(var(--chessimals-magic-deep),.08) 58%,transparent),var(--chessimals-panel);color:var(--chessimals-text);font:inherit;box-shadow:inset 0 0 0 .14rem #ffffff75,0 .55rem 1.2rem rgba(var(--chessimals-magic-rgb),.14);transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.chessimals-powers__heading{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.chessimals-powers p{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-powers__heading span{flex:0 0 auto;border-radius:999px;padding:.28rem .62rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-size:.78rem;font-weight:950}.chessimals-cards button.is-selected{border-color:var(--chessimals-magic-hot);background:radial-gradient(circle at 50% 16%,rgba(255,255,255,.42),transparent 30%),radial-gradient(circle at 50% 76%,rgba(var(--chessimals-magic-rgb),.2),transparent 56%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.2),#ffffff0a),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-magic-rgb),.28),0 0 1.35rem rgba(var(--chessimals-magic-rgb),.48),0 .9rem 2rem rgba(var(--chessimals-magic-rgb),.18);transform:translateY(-1px)}.chessimals-cards button.is-selected:before,.chessimals-cards button.is-selected:after{position:absolute;inset:-.5rem;z-index:0;border-radius:inherit;content:\"\";pointer-events:none}.chessimals-cards button>*{position:relative;z-index:1}.chessimals-cards button.is-selected:before{background:radial-gradient(circle at 18% 24%,rgba(var(--chessimals-magic-rgb),.88) 0 .08rem,transparent .1rem),radial-gradient(circle at 78% 20%,rgba(255,255,255,.86) 0 .07rem,transparent .09rem),radial-gradient(circle at 86% 62%,rgba(var(--chessimals-magic-rgb),.72) 0 .06rem,transparent .08rem),radial-gradient(circle at 28% 78%,rgba(255,245,111,.78) 0 .07rem,transparent .09rem),radial-gradient(circle at 54% 8%,rgba(255,255,255,.68) 0 .05rem,transparent .07rem);opacity:.8;animation:chessimalsMagicParticles 1.8s ease-in-out infinite}.chessimals-cards button.is-selected:after{background:conic-gradient(from 12deg,transparent 0 16deg,rgba(var(--chessimals-magic-rgb),.2) 16deg 22deg,transparent 22deg 44deg);opacity:.68;filter:blur(.04rem);animation:chessimalsMagicAura 3.2s linear infinite}.chessimals-cards button.is-used{opacity:.42}.chessimals-animal-face{display:grid;place-items:center;width:100%;min-height:5.4rem;overflow:hidden;border:.12rem solid rgba(var(--chessimals-magic-deep),.62);border-radius:.9rem;background:radial-gradient(circle at 50% 34%,rgba(255,255,255,.96),transparent 44%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.38),rgba(var(--chessimals-magic-deep),.14)),var(--chessimals-animal-face-bg);color:color-mix(in srgb,var(--chessimals-text) 92%,#000);box-shadow:inset 0 0 0 .12rem #ffffff7a,inset 0 -.18rem .45rem rgba(var(--chessimals-magic-deep),.14)}.chessimals-animal-face img{display:block;width:min(5.45rem,88%);height:min(5.45rem,88%);pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;object-fit:contain;transform:none;filter:var(--chessimals-animal-face-filter)}.chessimals-bot-avatar,.chessimals-challenge-intro__avatar{display:grid;overflow:hidden;place-items:center}.chessimals-bot-avatar img,.chessimals-challenge-intro__avatar img{display:block;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;object-fit:contain}.chessimals-cards button.is-selected .chessimals-animal-face,.chessimals-powers.is-ready .chessimals-cards button:not(.is-used) .chessimals-animal-face{color:color-mix(in srgb,var(--chessimals-text) 94%,#000)}.chessimals-powers.is-locked .chessimals-animal-face{filter:var(--chessimals-animal-face-locked-filter);opacity:.86}.chessimals-powers.is-locked .chessimals-animal-face img,.chessimals-cards button.is-used .chessimals-animal-face img{opacity:var(--chessimals-animal-face-locked-img-opacity)}.chessimals-power-uses{position:absolute;top:.5rem;right:.5rem;z-index:2;display:inline-grid;place-items:center;min-width:1.72rem;height:1.35rem;border-radius:999px;padding:0 .38rem;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.72rem;font-weight:1000;line-height:1;box-shadow:0 .35rem .9rem rgba(var(--chessimals-primary-rgb),.22)}.chessimals-cards strong{overflow:hidden;max-width:100%;align-self:center;font-size:clamp(.9rem,2.3vw,1.08rem);font-weight:950;line-height:1.05;text-align:center;text-overflow:ellipsis;white-space:nowrap}.chessimals-powers.is-locked .chessimals-cards{opacity:.68}.chessimals-powers.is-ready{border-color:rgba(var(--chessimals-magic-rgb),.46);box-shadow:0 0 0 1px rgba(var(--chessimals-magic-rgb),.12),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}.chessimals-powers.is-ready .chessimals-cards button:not(.is-used){animation:chessimalsPowerPulse 1.8s ease-in-out infinite}.chessimals-powers.is-unlock-pulse{animation:chessimalsPowersUnlocked 1.18s ease-out both}.chessimals-powers.is-unlock-pulse .chessimals-cards button:not(.is-used){animation:chessimalsPowerIgnite .76s ease-out both,chessimalsPowerPulse 1.8s ease-in-out .76s infinite}@keyframes chessimalsPowerPulse{0%,to{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}50%{box-shadow:0 0 1.4rem rgba(var(--chessimals-magic-rgb),.24)}}@keyframes chessimalsPowersUnlocked{0%{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}34%{box-shadow:0 0 0 .18rem rgba(var(--chessimals-magic-rgb),.28),0 0 2.2rem rgba(var(--chessimals-magic-rgb),.38),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.16)}to{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}}@keyframes chessimalsPowerIgnite{0%{transform:translateY(0) scale(.96);box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}42%{transform:translateY(-.08rem) scale(1.025);box-shadow:0 0 0 .14rem rgba(var(--chessimals-magic-rgb),.24),0 0 1.5rem rgba(var(--chessimals-magic-rgb),.46)}to{transform:translateY(0) scale(1);box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}}@keyframes chessimalsMagicParticles{0%,to{opacity:.54;transform:translateY(0) scale(.94)}50%{opacity:1;transform:translateY(-.18rem) scale(1.02)}}@keyframes chessimalsMagicAura{to{transform:rotate(1turn)}}.chessimals-actions{order:6;align-self:stretch;justify-self:stretch;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr));gap:.625rem;margin-top:1rem}.chessimals-shell--projection .chessimals-game{max-width:min(96vw,90rem)}.chessimals-shell--projection .chessimals-turn-card{padding:.875rem 1rem}.chessimals-shell--projection .chessimals-status,.chessimals-shell--projection .chessimals-actions,.chessimals-shell--projection .chessimals-online,.chessimals-shell--projection .chessimals-replay,.chessimals-shell--projection .chessimals-rematch-status{display:none}.chessimals-shell--projection .chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center}.chessimals-shell--projection .chessimals-board-wrap{--chessimals-board-radius: min(.625rem, 10px);width:min(96vw,82vh,58rem);max-width:none}.chessimals-shell--projection .chessimals-board-frame{flex-basis:auto;max-width:none}@media (min-width: 760px){.chessimals-game{gap:1rem}.chessimals-turn-card,.chessimals-status,.chessimals-arena,.chessimals-replay,.chessimals-result,.chessimals-actions{grid-column:1 / -1}.chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center;align-items:start;gap:.85rem}.chessimals-shell:not(.chessimals-shell--projection) .chessimals-board-frame{flex-basis:min(100%,clamp(28rem,calc(100vh - 22rem),50rem));width:min(100%,clamp(28rem,calc(100vh - 22rem),50rem));max-width:min(50rem,clamp(28rem,calc(100vh - 22rem),50rem))}.chessimals-powers{width:min(100%,40rem);align-content:center;grid-template-columns:minmax(11rem,.68fr) minmax(0,1fr);align-items:center;gap:.8rem;padding:.78rem}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr))}.chessimals-cards button{grid-template-rows:minmax(3.85rem,1fr) auto;min-height:5.85rem}.chessimals-animal-face{min-height:3.85rem}.chessimals-animal-face img{width:min(3.85rem,88%);height:min(3.85rem,88%)}.chessimals-powers p{-webkit-line-clamp:3}}.chessimals-rules{display:grid;gap:1.05rem;padding-top:.25rem}.chessimals-settings{display:grid;gap:.85rem;color:var(--chessimals-modal-text, var(--chessimals-text))}.chessimals-settings article{display:grid;gap:.65rem;padding:1rem;border:1px solid var(--chessimals-modal-border, rgba(var(--chessimals-primary-rgb), .2));border-radius:1.1rem;background:radial-gradient(circle at 14% 8%,color-mix(in srgb,var(--chessimals-modal-card, #ffffff) 82%,transparent),transparent 28%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),rgba(var(--chessimals-sky-rgb),.06)),var(--chessimals-modal-card-strong, var(--chessimals-elevated-strong));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--chessimals-modal-surface, #ffffff) 48%,transparent)}:host ::ng-deep ion-modal.chessimals-settings-modal val-modal-shell ion-toolbar{--background: var(--chessimals-modal-surface);--color: var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-settings-modal val-modal-shell ion-content{--background: var(--chessimals-modal-surface);color:var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-settings-modal val-modal-shell ion-button{--color: var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-settings-modal .chessimals-settings val-toggle-input ion-toggle{--track-background: rgba(var(--chessimals-primary-rgb), .14);--track-background-checked: var(--chessimals-primary);--handle-background: var(--chessimals-modal-card);--handle-background-checked: var(--chessimals-primary-contrast);color:var(--chessimals-modal-text);font-weight:900}:host ::ng-deep ion-modal.chessimals-settings-modal .chessimals-settings val-range-input ion-label{color:var(--chessimals-modal-text);font-weight:900}:host ::ng-deep ion-modal.chessimals-settings-modal .chessimals-settings val-range-input ion-range{--bar-background: rgba(var(--chessimals-primary-rgb), .14);--bar-background-active: var(--chessimals-primary);--bar-height: .32rem;--bar-border-radius: 999px;--knob-background: var(--chessimals-primary-contrast);--knob-size: 1.28rem;--pin-background: var(--chessimals-primary);--pin-color: var(--chessimals-primary-contrast);color:var(--chessimals-modal-text)}.chessimals-about{display:grid;justify-items:center;gap:1rem;color:var(--ion-text-color, var(--chessimals-text))}.chessimals-about__logo{display:block;width:min(25rem,88%);height:auto;object-fit:contain;object-position:center;filter:drop-shadow(0 .5rem .7rem rgba(46,58,44,.14))}.chessimals-about__thanks{color:var(--ion-text-color, var(--chessimals-text));font-size:1.08rem;font-weight:950;line-height:1.2;text-align:center}.chessimals-about__feedback{max-width:30rem}.chessimals-about p{margin:0;color:var(--ion-color-medium, var(--chessimals-muted));font-size:.95rem;font-weight:750;line-height:1.45;text-align:center}.chessimals-about dl{display:grid;width:100%;margin:0;gap:.65rem}.chessimals-about dl div{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem .95rem;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--ion-card-background, #fff)}.chessimals-about dt,.chessimals-about dd{margin:0}.chessimals-about dt{color:var(--ion-color-medium, var(--chessimals-muted));font-size:.78rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-about dd{color:var(--ion-text-color, var(--chessimals-text));font-size:.95rem;font-weight:950}.chessimals-rules__hero{display:block;width:100%;height:auto;object-fit:contain;border-radius:1.25rem;background:transparent;box-shadow:0 .85rem 1.8rem #2e3a2c1f}.chessimals-rules__powers,.chessimals-rules__note,.chessimals-rules__steps article{display:grid;align-items:start;gap:.75rem;border:1px solid var(--chessimals-modal-border, rgba(var(--chessimals-primary-rgb), .16));border-radius:1.25rem;background:var(--chessimals-modal-card, #ffffff);color:var(--chessimals-modal-text, var(--ion-text-color, #2f2a3a))}.chessimals-rules__section-title span{justify-self:start;border-radius:999px;padding:.24rem .55rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-rules__section-title{display:grid;gap:.35rem;padding-inline:0}.chessimals-rules__section-title strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.25}.chessimals-rules__steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem}.chessimals-rules__steps article{align-content:start;padding:.9rem}.chessimals-rules__steps article>img,.chessimals-rules__powers>img,.chessimals-rules__note>img{display:block;width:4.75rem;height:4.75rem;border-radius:1.15rem;object-fit:cover;box-shadow:0 0 0 .1rem rgba(var(--chessimals-sun-rgb),.68),0 .7rem 1.25rem #2e3a2c29}.chessimals-rules__powers,.chessimals-rules__note{grid-template-columns:auto minmax(0,1fr);padding:.95rem}.chessimals-rules__power-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem;margin-top:.35rem}.chessimals-rules__power-list span{display:grid;justify-items:center;align-content:center;gap:.32rem;min-width:0;min-height:8.1rem;border:1px solid var(--chessimals-modal-border, rgba(var(--chessimals-primary-rgb), .16));border-radius:1rem;padding:.8rem .52rem;background:radial-gradient(circle at 50% 0,color-mix(in srgb,var(--chessimals-modal-card, #ffffff) 78%,transparent),transparent 52%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),rgba(var(--chessimals-sun-rgb),.18)),var(--chessimals-modal-card-strong, #fff8df);color:var(--chessimals-modal-text, var(--chessimals-text));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--chessimals-modal-surface, #ffffff) 64%,transparent),0 .55rem 1.15rem var(--chessimals-modal-shadow, rgba(46, 58, 44, .12));font-size:.78rem;font-weight:950;line-height:1.05;text-align:center}.chessimals-rules__power-list strong,.chessimals-rules__power-list small{min-width:0}.chessimals-rules__power-list strong{font-size:.86rem;font-weight:950;line-height:1.08}.chessimals-rules__power-list small{color:var(--chessimals-muted);font-size:.69rem;font-weight:820;line-height:1.15}.chessimals-rules__power-list img{display:block;width:3.25rem;height:3.25rem;object-fit:contain;filter:drop-shadow(0 .25rem .35rem rgba(46,58,44,.16))}.chessimals-rules__note{border-color:rgba(var(--chessimals-sun-rgb),.34);background:linear-gradient(135deg,rgba(var(--chessimals-sun-rgb),.1),rgba(var(--chessimals-primary-rgb),.04)),var(--chessimals-modal-card, #ffffff)}.chessimals-rules article>span{display:grid;place-items:center;width:2rem;height:2rem;border-radius:999px;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-weight:950}.chessimals-rules article>div{display:grid;min-width:0;gap:.35rem}.chessimals-rules h3,.chessimals-rules p,.chessimals-rules ul{margin:0}.chessimals-rules h3{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.2}.chessimals-rules p,.chessimals-rules li{color:var(--chessimals-modal-muted, var(--ion-color-medium, #6f6a7a));font-size:.88rem;font-weight:760;line-height:1.5}.chessimals-rules ul{display:grid;gap:.45rem;padding-left:1.15rem}.chessimals-primary,.chessimals-secondary{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:3.625rem;border-radius:999px;font:inherit;font-weight:950}.chessimals-primary{border:0;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 1.125rem 2.8rem rgba(var(--chessimals-primary-rgb),.28)}.chessimals-secondary{border:1px solid var(--chessimals-border);background:transparent;color:var(--chessimals-text)}.chessimals-primary.is-working,.chessimals-secondary.is-working{cursor:wait;opacity:.82}.chessimals-button-spinner{width:1rem;height:1rem;flex:0 0 auto;border:.14rem solid currentColor;border-right-color:transparent;border-radius:999px;animation:chessimals-spin .72s linear infinite}@media (max-width: 560px){.chessimals-home-actions{grid-template-columns:1fr}.chessimals-home-action{min-height:0}.chessimals-rules__steps,.chessimals-rules__powers,.chessimals-rules__note{grid-template-columns:1fr}.chessimals-rules__power-list{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-size,.chessimals-mode,.chessimals-actions,.chessimals-play-options .chessimals-nightmare,.chessimals-challenge-cta,.chessimals-path-cta,.chessimals-path-hero,.chessimals-path-grid,.chessimals-path-highlights,.chessimals-path-rings,.chessimals-path-stats{grid-template-columns:1fr}.chessimals-path-hero{justify-items:start}.chessimals-path-hero__art{width:6.25rem;height:6.25rem}.chessimals-path-cta__action{justify-self:stretch;width:100%}.chessimals-path-hero__medal{justify-self:stretch;width:100%;min-height:5.5rem}.chessimals-path-bars span{grid-template-columns:minmax(0,1fr) auto}.chessimals-path-bars i{grid-column:1 / -1;order:3}.chessimals-challenge-cta__actions,.chessimals-challenge-cta__rival{min-width:0}.chessimals-challenge-hero,.chessimals-challenge-focus{grid-template-columns:1fr}.chessimals-challenge-card{padding:.85rem}.chessimals-challenge-card__stats{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-game{gap:.55rem}.chessimals-turn-card{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.5rem;min-height:0;border-radius:.95rem;padding:.5rem}.chessimals-turn-card__copy{gap:.1rem}.chessimals-turn-card__chip{max-width:100%;padding:.18rem .5rem;font-size:.6rem;letter-spacing:.045em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-turn-card strong{font-size:clamp(.92rem,4.4vw,1.12rem);line-height:1.08}.chessimals-turn-card p{display:-webkit-box;overflow:hidden;font-size:.72rem;line-height:1.2;-webkit-box-orient:vertical;-webkit-line-clamp:1}.chessimals-player-strip{width:auto;max-width:none;min-width:0;padding:.25rem}.chessimals-player-strip__avatar{flex:0 0 1.8rem;width:1.8rem;height:1.8rem;aspect-ratio:1 / 1}:host ::ng-deep .chessimals-player-strip .chessimals-turn-avatar{width:1.8rem;min-width:1.8rem;height:1.8rem}.chessimals-player-strip__text{display:none}.chessimals-status{grid-template-columns:repeat(3,minmax(0,1fr));gap:.3rem}.chessimals-status div{gap:.14rem;min-height:2.2rem;border-radius:.82rem;padding:.34rem .3rem}.chessimals-status small{font-size:.58rem;line-height:1.05}.chessimals-status strong{font-size:clamp(.78rem,3.2vw,.94rem);line-height:1.05}.chessimals-challenge-live{grid-template-columns:1fr;gap:.45rem;padding:.55rem}.chessimals-challenge-live__rival>.chessimals-bot-avatar{width:2.35rem;height:2.35rem;font-size:1.15rem}.chessimals-challenge-live__rival p{-webkit-line-clamp:1}.chessimals-challenge-live__metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:.3rem}.chessimals-challenge-live__metrics span{min-height:2.35rem;padding:.32rem .36rem}.chessimals-challenge-live__metrics small{font-size:.56rem}.chessimals-challenge-live__metrics b{font-size:.82rem}.chessimals-challenge-intro{padding:.55rem}.chessimals-challenge-intro__card{gap:.42rem;width:min(15.5rem,94%);padding:.6rem}.chessimals-challenge-intro__avatar{width:3.05rem;height:3.05rem;font-size:1.62rem}.chessimals-challenge-intro__copy strong{font-size:1.02rem}.chessimals-challenge-intro__copy p{font-size:.72rem;-webkit-line-clamp:1}.chessimals-challenge-intro__facts b{font-size:.74rem}.chessimals-challenge-intro .chessimals-primary{min-height:2.15rem}.chessimals-tip,.chessimals-result,.chessimals-replay,.chessimals-online-status,.chessimals-tutorial{gap:.2rem;border-radius:1rem;padding:.7rem .75rem}.chessimals-tip strong,.chessimals-result strong,.chessimals-replay strong,.chessimals-tutorial strong{font-size:.95rem}.chessimals-tip p,.chessimals-result p{font-size:.9rem;line-height:1.28}.chessimals-result__stats{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-replay,.chessimals-tutorial{grid-template-columns:1fr}.chessimals-replay__actions{justify-content:stretch}.chessimals-replay__actions .chessimals-secondary{flex:1 1 8rem}.chessimals-arena{gap:.5rem}.chessimals-board-wrap{width:100%;margin-inline:0;padding:0}.chessimals-board-frame{width:100%}.chessimals-powers{gap:.5rem;border-radius:1rem;padding:.55rem}.chessimals-powers__heading{gap:.4rem}.chessimals-powers h2{font-size:1rem}.chessimals-powers__heading span{padding:.22rem .48rem;font-size:.68rem}.chessimals-powers p{font-size:.78rem;line-height:1.2;-webkit-line-clamp:1}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem}.chessimals-cards button{grid-template-rows:minmax(3.65rem,1fr) auto;gap:.3rem;min-height:5.4rem;border-radius:.85rem;padding:.3rem .24rem .42rem}.chessimals-animal-face{min-height:3.65rem;border-radius:.68rem}.chessimals-animal-face img{width:min(3.55rem,92%);height:min(3.55rem,92%)}.chessimals-cards strong{font-size:clamp(.64rem,2.8vw,.78rem)}.chessimals-board{border-radius:var(--chessimals-board-radius)}.chessimals-cell-coordinate{font-size:.58rem}}@media (prefers-reduced-motion: reduce){.chessimals-cell.is-capture,.chessimals-cell.is-capture:before,.chessimals-cell.is-capture:after,.chessimals-cell.has-move-effect,.chessimals-cell.has-move-effect:before,.chessimals-cell.has-move-effect:after,.chessimals-cell.has-capture-effect,.chessimals-moving-piece,.chessimals-challenge-intro,.chessimals-status__score.is-pop{animation:none!important}.chessimals-moving-piece{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%))}}\n"], dependencies: [{ kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: MiniGameCalloutComponent, selector: "val-mini-game-callout", inputs: ["props"] }, { kind: "component", type: MiniGameScorePopComponent, selector: "val-mini-game-score-pop", inputs: ["props"] }, { kind: "component", type: ModalLayoutComponent, selector: "val-modal-layout", inputs: ["title", "subtitle", "closeLabel", "showClose", "actions", "actionsAlign", "footer", "footerClass"], outputs: ["close", "actionClick"] }, { kind: "component", type: RangeInputComponent, selector: "val-range-input", inputs: ["props"], outputs: ["rangeChange"] }, { kind: "component", type: ToggleInputComponent, selector: "val-toggle-input", inputs: ["preset", "props"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: UserAvatarComponent, selector: "val-user-avatar", inputs: ["props"], outputs: ["onClick"] }] }); }
|
|
4856
|
+
`, isInline: true, styles: [":host{--chessimals-panel: #ffffff;--chessimals-surface: #fffaf1;--chessimals-elevated: rgba(255, 255, 255, .72);--chessimals-elevated-soft: rgba(255, 255, 255, .46);--chessimals-elevated-strong: rgba(255, 255, 255, .86);--chessimals-glass-highlight: rgba(255, 255, 255, .58);--chessimals-border: rgba(46, 58, 44, .18);--chessimals-text: #2e3a2c;--chessimals-muted: #51643d;--chessimals-soft: rgba(111, 122, 60, .1);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-selected: #37f28a;--chessimals-selected-rgb: 55, 242, 138;--chessimals-magic: #f7d45a;--chessimals-magic-rgb: 247, 212, 90;--chessimals-magic-hot: #fff56f;--chessimals-magic-deep: #b77a18;display:block;font-size:var(--val-mini-games-font-size, 1rem)}:host-context(body.font-small){--val-mini-games-font-size: .875rem}:host-context(body.font-large){--val-mini-games-font-size: 1.1875rem}.chessimals-shell{--chessimals-panel: #ffffff;--chessimals-surface: #fffaf1;--chessimals-elevated: rgba(255, 255, 255, .72);--chessimals-elevated-soft: rgba(255, 255, 255, .46);--chessimals-elevated-strong: rgba(255, 255, 255, .86);--chessimals-glass-highlight: rgba(255, 255, 255, .58);--chessimals-border: rgba(46, 58, 44, .18);--chessimals-text: #2e3a2c;--chessimals-muted: #51643d;--chessimals-soft: rgba(111, 122, 60, .1);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-selected: #37f28a;--chessimals-selected-rgb: 55, 242, 138;--chessimals-magic: #f7d45a;--chessimals-magic-rgb: 247, 212, 90;--chessimals-magic-hot: #fff56f;--chessimals-magic-deep: #b77a18;--chessimals-warning: #f4c542;--chessimals-warning-rgb: 244, 197, 66;--chessimals-move: var(--chessimals-sky);--chessimals-move-rgb: var(--chessimals-sky-rgb);--chessimals-capture: #1fcdb3;--chessimals-capture-rgb: 31, 205, 179;--chessimals-last: #8c6b4f;--chessimals-last-rgb: 140, 107, 79;--chessimals-cell-light: #f3f4e8;--chessimals-cell-dark: #7f944d;--chessimals-board-shadow: rgba(46, 58, 44, .14);--chessimals-piece-white-fill: #ffffff;--chessimals-piece-white-side: #f3eadb;--chessimals-piece-white-line: rgba(82, 65, 46, .12);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(84, 62, 34, .52)) drop-shadow(0 .18rem .12rem rgba(72, 58, 36, .22)) drop-shadow(0 .34rem .42rem rgba(72, 58, 36, .22));--chessimals-piece-black-fill: #242936;--chessimals-piece-black-side: #171b25;--chessimals-piece-black-line: rgba(255, 255, 255, .1);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .34)) drop-shadow(0 .18rem .1rem rgba(255, 255, 255, .12)) drop-shadow(0 .32rem .42rem rgba(0, 0, 0, .36));--chessimals-piece-gold: #c79a42;--chessimals-piece-gold-dark: #8a5f22;--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-inner-bg: #ffffff;--chessimals-animal-face-border: rgba(46, 58, 44, .12);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(46, 58, 44, .18));--chessimals-animal-face-locked-filter: grayscale(.2) saturate(.72);--chessimals-animal-face-locked-img-opacity: .72;display:grid;gap:1.125rem;width:100%;max-width:min(100%,60rem);margin:0 auto;color:var(--chessimals-text)}@media (prefers-color-scheme: dark){.chessimals-shell{--chessimals-panel: #172116;--chessimals-surface: #0f170f;--chessimals-elevated: rgba(255, 255, 255, .08);--chessimals-elevated-soft: rgba(255, 255, 255, .05);--chessimals-elevated-strong: rgba(255, 255, 255, .12);--chessimals-glass-highlight: rgba(255, 255, 255, .08);--chessimals-border: rgba(242, 230, 213, .2);--chessimals-text: #f6f3e9;--chessimals-muted: #c8cfb1;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #f3f4e8;--chessimals-cell-dark: #7f944d;--chessimals-board-shadow: rgba(0, 0, 0, .34);--chessimals-animal-face-border: rgba(242, 230, 213, .24)}}.chessimals-resume-splash{order:0;position:fixed;inset:0;z-index:1000;display:grid;place-items:center;align-content:center;gap:.65rem;padding:1.5rem;text-align:center;color:var(--chessimals-text);background:radial-gradient(circle at 50% 42%,rgba(var(--chessimals-primary-rgb),.18),transparent 22rem),color-mix(in srgb,var(--chessimals-panel) 92%,transparent);backdrop-filter:blur(.9rem)}.chessimals-resume-splash__logo{display:block;width:clamp(5.8rem,20vw,7.2rem);height:auto;animation:chessimals-resume-pulse 1.2s ease-in-out infinite;filter:drop-shadow(0 .8rem 1.2rem rgba(var(--ion-color-dark-rgb, 47, 42, 58),.18))}.chessimals-resume-splash strong{font-size:clamp(1.55rem,5vw,2.4rem);font-weight:950;line-height:1.05}.chessimals-resume-splash p{max-width:24rem;margin:0;color:var(--chessimals-muted);font-size:1rem;line-height:1.35}@keyframes chessimals-resume-pulse{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-.25rem) scale(1.04)}}@keyframes chessimals-spin{to{transform:rotate(360deg)}}@keyframes chessimals-online-pulse{0%,to{transform:scale(1);opacity:.78}50%{transform:scale(1.22);opacity:1}}:host-context(html.ion-palette-dark) .chessimals-shell,:host-context([data-theme=\"dark\"]) .chessimals-shell{--chessimals-panel: #172116;--chessimals-surface: #0f170f;--chessimals-elevated: rgba(255, 255, 255, .08);--chessimals-elevated-soft: rgba(255, 255, 255, .05);--chessimals-elevated-strong: rgba(255, 255, 255, .12);--chessimals-glass-highlight: rgba(255, 255, 255, .08);--chessimals-border: rgba(246, 227, 213, .22);--chessimals-text: #f6f3e9;--chessimals-muted: #c8cfb1;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #e8eadc;--chessimals-cell-dark: #5f7040;--chessimals-board-shadow: rgba(0, 0, 0, .34);--chessimals-capture: #66f2d7;--chessimals-capture-rgb: 102, 242, 215;--chessimals-last: #cdbe9b;--chessimals-last-rgb: 205, 190, 155;--chessimals-piece-white-fill: #fffaff;--chessimals-piece-white-side: #f0e5d4;--chessimals-piece-white-line: rgba(82, 65, 46, .12);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(84, 62, 34, .48)) drop-shadow(0 .18rem .12rem rgba(0, 0, 0, .24)) drop-shadow(0 .34rem .42rem rgba(0, 0, 0, .3));--chessimals-piece-black-fill: #202633;--chessimals-piece-black-side: #111620;--chessimals-piece-black-line: rgba(255, 255, 255, .12);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .34)) drop-shadow(0 .18rem .1rem rgba(255, 255, 255, .14)) drop-shadow(0 .34rem .44rem rgba(0, 0, 0, .52));--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-inner-bg: #ffffff;--chessimals-animal-face-border: rgba(242, 230, 213, .24);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(0, 0, 0, .22));--chessimals-animal-face-locked-filter: grayscale(.32) saturate(.72);--chessimals-animal-face-locked-img-opacity: .58}.chessimals-hero{display:grid;gap:.75rem;justify-items:center;overflow:hidden;border-radius:1.75rem;padding:clamp(1.25rem,5vw,2.5rem);background:radial-gradient(circle at 18% 12%,rgba(255,255,255,.92),transparent 20%),linear-gradient(135deg,#fdf8ee,#fff 40%,#edf3df);color:var(--chessimals-text);text-align:center;border:1px solid var(--chessimals-border)}:host-context(html.ion-palette-dark) .chessimals-hero,:host-context([data-theme=\"dark\"]) .chessimals-hero{background:radial-gradient(circle at 18% 12%,rgba(255,255,255,.08),transparent 22%),linear-gradient(135deg,#111a10,#172116 48%,#0f170f);color:var(--chessimals-text);border-color:#f6e3d538}.chessimals-hero__logo{display:grid;place-items:center;gap:.35rem;width:min(27rem,86vw);max-width:100%}.chessimals-hero__logo img{display:block;height:auto;object-fit:contain;border-radius:0}.chessimals-hero__emblem{width:min(12.25rem,48vw);margin-top:.2rem;transform:translateY(.2rem)}.chessimals-hero__wordmark{width:min(21rem,76vw)}.chessimals-hero p,.chessimals-howto p,.chessimals-tip p,.chessimals-result p,.chessimals-powers p{margin:0;line-height:1.45}.chessimals-powers{display:grid;gap:1rem;border:1px solid var(--chessimals-border);border-radius:1.625rem;padding:clamp(1rem,4vw,1.5rem);background:var(--chessimals-panel)}.chessimals-game{display:grid;gap:.875rem}.chessimals-panel{display:grid;gap:1.125rem}.chessimals-home-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.875rem}.chessimals-home-action{display:grid;justify-items:start;gap:.68rem;min-height:9.6rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:1.25rem;padding:1.15rem 1rem 1.05rem;background:radial-gradient(circle at 18% 10%,rgba(255,255,255,.74),transparent 22%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),rgba(var(--chessimals-secondary-rgb),.08)),var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-home-action--play{border-color:rgba(var(--chessimals-primary-rgb),.46);background:radial-gradient(circle at 18% 10%,rgba(255,255,255,.82),transparent 22%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.22),rgba(var(--chessimals-secondary-rgb),.12)),var(--chessimals-panel)}.chessimals-mode-icon{display:block;width:4.45rem;height:4.45rem;border-radius:1rem;object-fit:cover;background:rgba(var(--chessimals-sun-rgb),.16);box-shadow:0 0 0 1px rgba(var(--chessimals-primary-rgb),.14),0 .55rem 1rem rgba(var(--chessimals-shadow-rgb),.12)}.chessimals-home-action strong{font-size:clamp(1.1rem,3vw,1.45rem);font-weight:1000;line-height:1.05}.chessimals-home-action small{color:var(--chessimals-muted);font-size:.88rem;font-weight:900;line-height:1.3}.chessimals-options{border:1px solid var(--chessimals-border);border-radius:1.125rem;padding:.35rem;background:var(--chessimals-panel)}.chessimals-options summary{display:flex;align-items:center;justify-content:space-between;gap:.75rem;min-height:3.25rem;padding:.65rem .8rem;color:var(--chessimals-text);cursor:pointer;list-style:none}.chessimals-options summary::-webkit-details-marker{display:none}.chessimals-options summary:after{content:\"+\";display:grid;place-items:center;flex:0 0 auto;width:1.8rem;height:1.8rem;border-radius:999px;background:var(--chessimals-soft);color:var(--chessimals-primary);font-weight:950}.chessimals-options[open] summary:after{content:\"-\"}.chessimals-options summary strong,.chessimals-options summary span{display:block}.chessimals-options summary strong{font-weight:950}.chessimals-options summary span{color:var(--chessimals-muted);font-size:.84rem;font-weight:800}.chessimals-options>:not(summary){margin:.5rem}.chessimals-play-options{display:grid;gap:1.05rem;color:var(--chessimals-text)}.chessimals-play-options__group{display:grid;gap:.62rem}.chessimals-play-options__group h3{margin:0;color:var(--chessimals-text);font-size:.9rem;font-weight:950;line-height:1.15}.chessimals-play-options .chessimals-size button,.chessimals-play-options .chessimals-mode button,.chessimals-play-options .chessimals-nightmare button,.chessimals-play-options .chessimals-bots button{position:relative;overflow:hidden;min-height:4.75rem;padding:.78rem 2.1rem .78rem .9rem;border:1px solid rgba(var(--chessimals-primary-rgb),.2);border-radius:1.08rem;background:radial-gradient(circle at 16% 8%,rgba(255,255,255,.7),transparent 24%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),rgba(var(--chessimals-secondary-rgb),.05)),var(--chessimals-panel);color:var(--chessimals-text);box-shadow:inset 0 0 0 1px var(--chessimals-glass-highlight)}.chessimals-play-options .chessimals-size button.is-selected,.chessimals-play-options .chessimals-mode button.is-selected,.chessimals-play-options .chessimals-nightmare button.is-selected,.chessimals-play-options .chessimals-bots button.is-selected{border-color:var(--chessimals-primary);background:radial-gradient(circle at 16% 8%,rgba(255,255,255,.78),transparent 25%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.23),rgba(var(--chessimals-secondary-rgb),.13)),var(--chessimals-panel);box-shadow:0 0 0 .16rem rgba(var(--chessimals-primary-rgb),.18),0 .85rem 1.8rem rgba(var(--chessimals-primary-rgb),.16)}.chessimals-option-check{position:absolute;top:.65rem;right:.65rem;width:.72rem;height:.72rem;border:2px solid rgba(var(--chessimals-primary-rgb),.3);border-radius:999px;background:var(--chessimals-panel)}.is-selected>.chessimals-option-check{border-color:var(--chessimals-primary);background:var(--chessimals-primary);box-shadow:0 0 0 .28rem rgba(var(--chessimals-primary-rgb),.13)}.chessimals-play-options .chessimals-nightmare{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem}.chessimals-play-options .chessimals-nightmare button{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-areas:\"icon title\" \"icon body\";column-gap:.55rem;row-gap:.12rem;align-content:center;text-align:left}.chessimals-play-options .chessimals-nightmare strong{grid-area:title;align-self:end;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-play-options .chessimals-nightmare small{grid-area:body;color:var(--chessimals-muted);font-size:.72rem;font-weight:800;line-height:1.15}.chessimals-nightmare__icon{grid-area:icon;display:grid;place-items:center;width:2.35rem;height:2.35rem;overflow:hidden;border-radius:.8rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-weight:1000;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-nightmare__icon img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-play-options .chessimals-nightmare button.is-selected .chessimals-nightmare__icon{background:rgba(var(--chessimals-secondary-rgb),.2);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.24)}.chessimals-play-options .chessimals-difficulty{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem}.chessimals-play-options .chessimals-difficulty button{border:1px solid rgba(var(--chessimals-primary-rgb),.2);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.06),rgba(var(--chessimals-secondary-rgb),.04)),var(--chessimals-panel);color:var(--chessimals-text);box-shadow:inset 0 0 0 1px var(--chessimals-glass-highlight)}.chessimals-play-options .chessimals-difficulty button.is-selected{border-color:var(--chessimals-primary);background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 0 0 .16rem rgba(var(--chessimals-primary-rgb),.18),0 .72rem 1.25rem rgba(var(--chessimals-primary-rgb),.16)}.chessimals-play-options .chessimals-bots button>.chessimals-bot-avatar{width:2.45rem;height:2.45rem;border-radius:.8rem;background:rgba(var(--chessimals-primary-rgb),.12)}.chessimals-play-options .chessimals-bots button.is-selected>.chessimals-bot-avatar{background:rgba(var(--chessimals-secondary-rgb),.2);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.24)}.chessimals-play-modal{--chessimals-panel: var(--chessimals-modal-card, #ffffff);--chessimals-elevated: var(--chessimals-modal-card-strong, rgba(255, 255, 255, .72));--chessimals-elevated-soft: color-mix(in srgb, var(--chessimals-modal-card, #ffffff) 74%, transparent);--chessimals-elevated-strong: var(--chessimals-modal-card-strong, rgba(255, 255, 255, .86));--chessimals-glass-highlight: color-mix(in srgb, var(--chessimals-modal-surface, #ffffff) 58%, transparent);--chessimals-border: var(--chessimals-modal-border, rgba(46, 58, 44, .18));--chessimals-text: var(--chessimals-modal-text, #2e3a2c);--chessimals-muted: var(--chessimals-modal-muted, #51643d);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--background: var(--chessimals-primary);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--border-color: var(--chessimals-primary);--border-radius: 999px;--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast);--val-modal-footer-gap: .7rem}.chessimals-rules-modal{--chessimals-border: var(--chessimals-modal-border, rgba(46, 58, 44, .18));--chessimals-text: var(--chessimals-modal-text, #2e3a2c);--chessimals-muted: var(--chessimals-modal-muted, #51643d);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--ion-background-color: var(--chessimals-modal-surface, #ffffff);--ion-card-background: var(--chessimals-modal-card, #ffffff);--ion-text-color: var(--chessimals-text);--val-modal-footer-gap: .7rem}.chessimals-confirm-modal{--chessimals-border: var(--chessimals-modal-border, rgba(46, 58, 44, .18));--chessimals-text: var(--chessimals-modal-text, #2e3a2c);--chessimals-muted: var(--chessimals-modal-muted, #51643d);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--ion-background-color: var(--chessimals-modal-surface, #ffffff);--ion-card-background: var(--chessimals-modal-card, #ffffff);--ion-text-color: var(--chessimals-text);--val-modal-footer-gap: .7rem}:host ::ng-deep ion-modal.chessimals-themed-modal{--chessimals-modal-surface: #ffffff;--chessimals-modal-card: #ffffff;--chessimals-modal-card-strong: #f8fbf5;--chessimals-modal-text: #2e3a2c;--chessimals-modal-muted: #5f6f50;--chessimals-modal-border: rgba(46, 58, 44, .18);--chessimals-modal-shadow: rgba(46, 58, 44, .14);--ion-background-color: var(--chessimals-modal-surface);--ion-card-background: var(--chessimals-modal-card);--ion-text-color: var(--chessimals-modal-text);--ion-color-dark: var(--chessimals-modal-text);--ion-color-dark-rgb: 46, 58, 44;--ion-color-medium: var(--chessimals-modal-muted);--ion-color-medium-rgb: 95, 111, 80;--ion-border-color: var(--chessimals-modal-border);--ion-color-primary: var(--chessimals-primary);--ion-color-primary-rgb: var(--chessimals-primary-rgb);--ion-color-primary-contrast: var(--chessimals-primary-contrast);--ion-color-primary-shade: #285f36;--ion-color-primary-tint: #43804f}@media (prefers-color-scheme: dark){:host ::ng-deep ion-modal.chessimals-themed-modal{--chessimals-modal-surface: #121811;--chessimals-modal-card: #182217;--chessimals-modal-card-strong: #1d2a1c;--chessimals-modal-text: #f6f3e9;--chessimals-modal-muted: #c8cfb1;--chessimals-modal-border: rgba(246, 227, 213, .2);--chessimals-modal-shadow: rgba(0, 0, 0, .36);--ion-color-dark-rgb: 246, 243, 233;--ion-color-medium-rgb: 200, 207, 177}}:host-context(html.ion-palette-dark) ::ng-deep ion-modal.chessimals-themed-modal,:host-context([data-theme=\"dark\"]) ::ng-deep ion-modal.chessimals-themed-modal{--chessimals-modal-surface: #121811;--chessimals-modal-card: #182217;--chessimals-modal-card-strong: #1d2a1c;--chessimals-modal-text: #f6f3e9;--chessimals-modal-muted: #c8cfb1;--chessimals-modal-border: rgba(246, 227, 213, .2);--chessimals-modal-shadow: rgba(0, 0, 0, .36);--ion-color-dark-rgb: 246, 243, 233;--ion-color-medium-rgb: 200, 207, 177}:host ::ng-deep ion-modal.chessimals-themed-modal val-modal-shell ion-toolbar,:host ::ng-deep ion-modal.chessimals-themed-modal .val-modal-layout__footer{--background: var(--chessimals-modal-surface);--color: var(--chessimals-modal-text);background:var(--chessimals-modal-surface);color:var(--chessimals-modal-text);border-color:var(--chessimals-modal-border)}:host ::ng-deep ion-modal.chessimals-themed-modal val-modal-shell ion-content{--background: var(--chessimals-modal-surface);color:var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-themed-modal val-modal-shell ion-button{--color: var(--chessimals-modal-text);--color-hover: var(--chessimals-modal-text);--color-activated: var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-themed-modal val-display ion-text,:host ::ng-deep ion-modal.chessimals-themed-modal val-title ion-text{color:var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-themed-modal val-button.val-modal-layout__button ion-button,:host ::ng-deep ion-modal.chessimals-themed-modal val-button.chessimals-rules__action ion-button{min-height:3.45rem;font-weight:950;--border-radius: 999px;--padding-bottom: .85rem;--padding-end: 1.35rem;--padding-start: 1.35rem;--padding-top: .85rem}:host ::ng-deep ion-modal.chessimals-themed-modal val-button.val-modal-layout__button ion-button.button-solid,:host ::ng-deep ion-modal.chessimals-themed-modal val-button.chessimals-rules__action--primary ion-button{--background: var(--chessimals-primary);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast)}:host ::ng-deep ion-modal.chessimals-themed-modal val-button.val-modal-layout__button ion-button.button-outline,:host ::ng-deep ion-modal.chessimals-themed-modal val-button.chessimals-rules__action--secondary ion-button{--background: transparent;--border-color: var(--chessimals-modal-border);--border-width: 1px;--color: var(--chessimals-modal-text);--color-activated: var(--chessimals-modal-text);--color-hover: var(--chessimals-modal-text)}.chessimals-play-modal__actions,.chessimals-rules__actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.7rem;width:100%}.chessimals-play-modal__actions .chessimals-primary,.chessimals-play-modal__actions .chessimals-secondary{min-width:min(100%,12.5rem);padding:.85rem 1.35rem}.chessimals-rules__action{min-width:min(100%,12.5rem)}:host ::ng-deep ion-modal.chessimals-rules-modal val-button.chessimals-rules__action ion-button{min-height:3.45rem;font-weight:950;--border-radius: 999px;--padding-bottom: .85rem;--padding-end: 1.35rem;--padding-start: 1.35rem;--padding-top: .85rem}:host ::ng-deep ion-modal.chessimals-rules-modal val-button.chessimals-rules__action--primary ion-button{--background: var(--chessimals-primary);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast)}:host ::ng-deep ion-modal.chessimals-rules-modal val-button.chessimals-rules__action--secondary ion-button{--border-color: rgba(46, 58, 44, .24);--border-width: 1px;--color: var(--chessimals-text);--color-activated: var(--chessimals-text);--color-hover: var(--chessimals-text)}:host ::ng-deep ion-modal.chessimals-confirm-modal val-button.val-modal-layout__button ion-button{min-height:3.45rem;font-weight:950;--border-radius: 999px;--padding-bottom: .85rem;--padding-end: 1.35rem;--padding-start: 1.35rem;--padding-top: .85rem}:host ::ng-deep ion-modal.chessimals-confirm-modal val-button.val-modal-layout__button ion-button[data-testid=confirm]{--background: var(--chessimals-primary);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast)}:host ::ng-deep ion-modal.chessimals-confirm-modal val-button.val-modal-layout__button ion-button[data-testid=cancel]{--border-color: rgba(46, 58, 44, .24);--border-width: 1px;--color: var(--chessimals-text);--color-activated: var(--chessimals-text);--color-hover: var(--chessimals-text)}.chessimals-online{display:grid;gap:.875rem;border:1px solid var(--chessimals-border);border-radius:1.375rem;padding:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--chessimals-panel)}.chessimals-online--waiting{order:2;border-color:rgba(var(--chessimals-primary-rgb),.34)}.chessimals-online h2,.chessimals-online p{margin:0}.chessimals-online h2{font-size:1.1rem;font-weight:950}.chessimals-online p{color:var(--chessimals-muted);line-height:1.4}.chessimals-online__create,.chessimals-online__join{display:grid;gap:.55rem}.chessimals-online__create small{color:var(--chessimals-muted);font-weight:800;line-height:1.35}.chessimals-online__join{border-top:1px solid var(--chessimals-border);padding-top:.85rem}.chessimals-online__join>strong{font-size:.95rem;font-weight:950}.chessimals-online__error{border-radius:.875rem;padding:.7rem .8rem;background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12);color:var(--ion-color-danger, #eb445a)!important;font-weight:800}.chessimals-online__loading{display:flex;align-items:center;gap:.625rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:999px;padding:.65rem .85rem;background:rgba(var(--chessimals-primary-rgb),.08);color:var(--chessimals-text);font-size:.92rem;font-weight:900}.chessimals-online__loading span{width:1rem;height:1rem;border:.15rem solid rgba(var(--chessimals-primary-rgb),.24);border-top-color:var(--chessimals-primary);border-radius:999px;animation:chessimals-spin .75s linear infinite}.chessimals-online-code{display:grid;gap:.4rem;font-weight:950}.chessimals-online-code input{width:100%;min-height:3.3rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:850;letter-spacing:.05em;text-transform:uppercase}.chessimals-game-code{display:grid;gap:.2rem;border-radius:1rem;padding:.85rem 1rem;background:var(--chessimals-soft)}.chessimals-game-code small{color:var(--chessimals-muted);font-weight:900;letter-spacing:.06em;text-transform:uppercase}.chessimals-game-code strong{font-size:clamp(1.35rem,6vw,2rem);font-weight:950;letter-spacing:.05em}.chessimals-online-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-history{gap:.75rem}.chessimals-history__heading{display:flex;align-items:start;justify-content:space-between;gap:.75rem}.chessimals-history__list{display:grid;gap:.5rem}.chessimals-history__item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;border:1px solid var(--chessimals-border);border-radius:1rem;padding:.7rem .8rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-history__item span{display:grid;gap:.1rem;min-width:0}.chessimals-history__item strong{font-weight:950;letter-spacing:.04em}.chessimals-history__item small{overflow:hidden;color:var(--chessimals-muted);font-size:.82rem;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.chessimals-history__item em{flex:0 0 auto;color:var(--chessimals-primary);font-size:.86rem;font-style:normal;font-weight:950}.chessimals-home-settings{gap:.8rem}.chessimals-home-settings__actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.625rem}.chessimals-pending-player{display:flex;align-items:center;gap:.7rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:1rem;padding:.75rem;background:var(--chessimals-soft)}.chessimals-pending-player div{display:grid;gap:.1rem;min-width:0}.chessimals-pending-player small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.07em;text-transform:uppercase}.chessimals-pending-player strong{overflow:hidden;font-size:1.05rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-turn-card{order:1;display:flex;align-items:center;justify-content:space-between;gap:.625rem;min-height:3.75rem;overflow:visible;border:1px solid rgba(var(--chessimals-primary-rgb),.24);border-radius:1rem;padding:.55rem .65rem;background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.34),transparent 18%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.2),rgba(var(--chessimals-secondary-rgb),.1))}.chessimals-turn-card.is-black-turn{border-color:rgba(var(--ion-color-dark-rgb, 47, 42, 58),.28);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.12),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-dark-rgb, 47, 42, 58),.14),rgba(var(--chessimals-primary-rgb),.1))}.chessimals-turn-card.is-finished{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.42);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.35),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.18),rgba(var(--chessimals-primary-rgb),.12))}.chessimals-turn-card.is-finished .chessimals-turn-card__chip{color:var(--ion-color-success, #2dd36f)}.chessimals-turn-card.is-your-turn{border-color:rgba(var(--chessimals-primary-rgb),.48);box-shadow:0 0 0 .12rem rgba(var(--chessimals-primary-rgb),.12),0 .95rem 2rem rgba(var(--chessimals-primary-rgb),.14)}.chessimals-turn-card.is-your-turn .chessimals-turn-card__chip{background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 0 0 .32rem rgba(var(--chessimals-primary-rgb),.14);animation:chessimals-turn-pulse 1.45s ease-in-out infinite}.chessimals-turn-card.is-timer-low{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.5);box-shadow:0 0 0 .12rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12),0 .95rem 2rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.chessimals-turn-card.is-timer-low .chessimals-turn-card__chip{background:var(--ion-color-danger, #eb445a);color:var(--ion-color-danger-contrast, #ffffff)}.chessimals-turn-card.is-waiting-turn .chessimals-turn-card__chip{color:var(--chessimals-muted)}@keyframes chessimals-turn-pulse{0%,to{transform:translateZ(0) scale(1)}50%{transform:translateZ(0) scale(1.035)}}.chessimals-turn-card__copy{display:grid;min-width:0;gap:.15rem}.chessimals-turn-card__chip{justify-self:start;border-radius:999px;padding:.2rem .5rem;background:var(--chessimals-panel);color:var(--chessimals-primary);font-size:.62rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-turn-card strong{display:block;min-width:0;font-size:clamp(1rem,3.5vw,1.25rem);line-height:1.08;font-weight:950;overflow-wrap:anywhere}.chessimals-turn-card p{display:block;min-width:0;margin:0;color:var(--chessimals-muted);font-size:.78rem;line-height:1.22}.chessimals-player-strip{display:flex;flex:0 0 auto;align-items:center;gap:.45rem;min-width:10rem;max-width:min(17rem,42%);border:1px solid var(--chessimals-border);border-radius:999px;padding:.3rem .55rem .3rem .35rem;background:rgba(var(--ion-color-light-rgb, 244, 245, 248),.72)}:host-context(html.ion-palette-dark) .chessimals-player-strip,:host-context([data-theme=\"dark\"]) .chessimals-player-strip{background:#ffffff0f}.chessimals-player-strip val-user-avatar{display:inline-flex;flex:0 0 auto;line-height:0}.chessimals-player-strip__avatar{display:grid;place-items:center;flex:0 0 2.25rem;width:2.25rem;height:2.25rem;aspect-ratio:1 / 1;overflow:hidden;border-radius:999px;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.875rem;line-height:1}.chessimals-player-strip__avatar--initials{font-size:.78rem;font-weight:950}:host ::ng-deep .chessimals-player-strip .chessimals-turn-avatar{width:2.25rem;min-width:2.25rem;height:2.25rem;border-radius:50%}.chessimals-player-strip__text{display:grid;min-width:0;gap:.05rem;line-height:1.1}.chessimals-player-strip__text span{color:var(--chessimals-muted);font-size:.58rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-player-strip__text strong{overflow:hidden;font-size:.82rem;line-height:1.08;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-player-strip__text small{overflow:hidden;color:var(--chessimals-muted);font-size:.66rem;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}.chessimals-arena{order:4;display:grid;gap:.875rem;align-items:start}.chessimals-howto,.chessimals-tip,.chessimals-result,.chessimals-replay,.chessimals-rematch-status{display:grid;gap:.375rem;padding:1rem;border-radius:1.25rem;background:var(--chessimals-soft)}.chessimals-howto{border:1px solid var(--chessimals-border);background:var(--chessimals-soft);color:var(--chessimals-text)}.chessimals-howto p{color:var(--chessimals-muted)}.chessimals-howto__actions{display:flex;flex-wrap:wrap;gap:.625rem}:host-context(html.ion-palette-dark) .chessimals-howto,:host-context([data-theme=\"dark\"]) .chessimals-howto{border-color:#f6e3d533;background:#172116;color:#f6f3e9}:host-context(html.ion-palette-dark) .chessimals-howto p,:host-context([data-theme=\"dark\"]) .chessimals-howto p{color:#c8cfb1}.chessimals-result{order:5}.chessimals-result__actions{display:flex;flex-wrap:wrap;gap:.625rem;margin-top:.45rem}.chessimals-action-button{flex:0 1 auto;min-width:min(100%,12.5rem);max-width:100%;padding:.85rem 1.35rem}.chessimals-result.is-challenge-result{gap:0;padding:0;background:transparent}.chessimals-result__stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem;margin-top:.35rem}.chessimals-result__stats span{display:grid;gap:.15rem;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:.85rem;padding:.58rem .6rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--chessimals-panel)}.chessimals-result__stats small{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-weight:950;letter-spacing:.05em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-result__stats b{overflow:hidden;color:var(--chessimals-text);font-size:.92rem;font-weight:950;line-height:1.12;text-overflow:ellipsis;white-space:nowrap}.chessimals-result__detail{margin:.2rem 0 0}.chessimals-bot-report{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.75rem;margin-top:.35rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1rem;padding:.78rem .85rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),transparent),var(--chessimals-panel)}.chessimals-bot-report>span{display:grid;place-items:center;width:2.5rem;height:2.5rem;border-radius:.85rem;background:rgba(var(--chessimals-secondary-rgb),.14);font-size:1.45rem;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-bot-report>span img{width:100%;height:100%;object-fit:contain}.chessimals-bot-report div{display:grid;gap:.12rem;min-width:0}.chessimals-bot-report small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-bot-report strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.15}.chessimals-bot-report p{margin:0;color:var(--chessimals-muted);font-size:.84rem;font-weight:820;line-height:1.28}.chessimals-online-status{order:3;display:grid;grid-template-columns:1.35rem minmax(0,1fr);align-items:center;gap:.85rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1.1rem;padding:.85rem .95rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.09),transparent),var(--chessimals-panel)}.chessimals-online-status>span{justify-self:center;width:.72rem;height:.72rem;border-radius:999px;background:var(--chessimals-primary);box-shadow:0 0 0 .38rem rgba(var(--chessimals-primary-rgb),.12)}.chessimals-online-status.is-syncing>span{animation:chessimals-online-pulse .9s ease-in-out infinite}.chessimals-online-status.is-error{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.28);background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.1),transparent),var(--chessimals-panel)}.chessimals-online-status.is-error>span{background:var(--ion-color-danger, #eb445a);box-shadow:0 0 0 .38rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.chessimals-online-status div{display:grid;gap:.12rem;min-width:0}.chessimals-online-status strong{overflow:hidden;color:var(--chessimals-text);font-size:.95rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-online-status p{margin:0;color:var(--chessimals-muted);font-size:.84rem;font-weight:780;line-height:1.28}.chessimals-series{display:grid;gap:.18rem;margin-top:.35rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1rem;padding:.78rem .85rem;background:linear-gradient(135deg,rgba(var(--chessimals-secondary-rgb),.12),transparent),var(--chessimals-panel)}.chessimals-series--compact{margin-top:0}.chessimals-series small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-series strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.15}.chessimals-series span{color:var(--chessimals-muted);font-size:.84rem;font-weight:820;line-height:1.28}.chessimals-replay{order:5;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem;border:1px solid rgba(var(--chessimals-primary-rgb),.2);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),transparent),var(--chessimals-panel)}.chessimals-replay>div:first-child{display:grid;gap:.15rem;min-width:0}.chessimals-replay strong{font-size:1rem;font-weight:950}.chessimals-replay span{color:var(--chessimals-muted);font-size:.86rem;font-weight:800;line-height:1.25}.chessimals-replay__actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.5rem}.chessimals-replay__actions .chessimals-secondary{min-height:2.5rem;padding:0 .8rem}.chessimals-tutorial{order:3;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem;padding:1rem;border:1px solid rgba(var(--chessimals-primary-rgb),.24);border-radius:1.25rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel)}.chessimals-tutorial>div{display:grid;gap:.18rem;min-width:0}.chessimals-tutorial small{color:var(--chessimals-primary);font-size:.76rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-tutorial strong{font-size:1rem;font-weight:950}.chessimals-tutorial p{margin:0;color:var(--chessimals-muted);font-size:.88rem;font-weight:780;line-height:1.35}.chessimals-tutorial .chessimals-secondary{min-height:2.5rem;padding:0 .85rem}.chessimals-rematch-status{order:5;border:1px solid rgba(var(--chessimals-primary-rgb),.22);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.12),transparent),var(--chessimals-panel)}.chessimals-rematch-status.is-incoming{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.38);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.14),transparent),var(--chessimals-panel)}.chessimals-rematch-status strong{font-size:1rem;font-weight:950}.chessimals-rematch-status p{margin:0;color:var(--chessimals-muted);font-size:.88rem;line-height:1.35}.chessimals-rematch-player{background:var(--chessimals-elevated)}:host-context(html.ion-palette-dark) .chessimals-rematch-player,:host-context([data-theme=\"dark\"]) .chessimals-rematch-player{background:#ffffff0f}.chessimals-rematch-status__actions{display:flex;justify-content:flex-end}.chessimals-rematch-status__actions .chessimals-secondary{min-height:2.5rem;padding:0 .95rem}.chessimals-howto h2,.chessimals-powers h2{margin:0;font-size:1.15rem;font-weight:950}.chessimals-challenge-cta{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(10rem,auto) auto;gap:.65rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.24);border-radius:1.25rem;padding:.75rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.1),transparent 62%),var(--chessimals-panel);box-shadow:0 .7rem 1.4rem rgba(var(--chessimals-shadow-rgb),.08)}.chessimals-challenge-cta__copy{display:grid;gap:.18rem;min-width:0}.chessimals-challenge-cta__copy span,.chessimals-challenge-cta__rival small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-challenge-cta__copy h2{margin:0;color:var(--chessimals-text);font-size:clamp(1.05rem,2.5vw,1.32rem);font-weight:1000}.chessimals-challenge-cta__copy p{margin:0;color:var(--chessimals-muted);font-size:.82rem;font-weight:780;line-height:1.3}.chessimals-challenge-cta__meta{display:grid;grid-template-columns:repeat(2,minmax(3.8rem,1fr));gap:.4rem}.chessimals-challenge-cta__meta span{display:grid;gap:.08rem;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:.95rem;padding:.42rem .5rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-cta__meta small{color:var(--chessimals-muted);font-size:.62rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-cta__meta strong{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-cta__actions{display:grid;gap:.45rem;min-width:10rem}.chessimals-challenge-cta__rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.5rem;align-items:center;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:1rem;padding:.45rem;background:var(--chessimals-elevated)}.chessimals-challenge-cta__rival>.chessimals-bot-avatar{display:grid;place-items:center;width:2.15rem;height:2.15rem;border-radius:.9rem;background:rgba(var(--chessimals-sky-rgb),.14);font-size:1.12rem}.chessimals-challenge-cta__rival div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-cta__rival strong{overflow:hidden;color:var(--chessimals-text);font-size:.9rem;font-weight:1000;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-view{display:grid;gap:.85rem}.chessimals-back-link{justify-self:start;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:999px;padding:.45rem .72rem;background:var(--chessimals-elevated);color:var(--chessimals-text);font:inherit;font-size:.85rem;font-weight:950;cursor:pointer}.chessimals-challenge-back{margin-bottom:.15rem}.chessimals-challenge-card{display:grid;gap:.9rem;border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:1.375rem;padding:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.18),transparent 54%),linear-gradient(180deg,var(--chessimals-glass-highlight),transparent),var(--chessimals-panel);box-shadow:0 1rem 2.2rem #4f3a231f}.chessimals-challenge-card--dedicated{border:0;border-radius:0;padding:0;background:transparent;box-shadow:none}.chessimals-challenge-hero,.chessimals-challenge-focus,.chessimals-challenge-secondary{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(14rem,.9fr);gap:.75rem;align-items:stretch}.chessimals-challenge-card__copy{display:grid;gap:.28rem;align-content:center}.chessimals-challenge-card__copy span,.chessimals-challenge-summary small,.chessimals-challenge-route small,.chessimals-challenge-panel__heading small{color:var(--chessimals-sky);font-size:.72rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-challenge-card h2{margin:0;font-size:clamp(1.25rem,3.5vw,1.9rem);font-weight:1000}.chessimals-challenge-card p,.chessimals-challenge-summary p{margin:0;color:var(--chessimals-muted);font-size:.95rem;font-weight:780;line-height:1.35}.chessimals-challenge-card__stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.chessimals-challenge-rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.7rem;align-items:center;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1.125rem;padding:.7rem;background:var(--chessimals-elevated)}.chessimals-challenge-rival--feature{min-height:8rem;border-color:rgba(var(--chessimals-sky-rgb),.28);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent),var(--chessimals-elevated)}.chessimals-challenge-rival>.chessimals-bot-avatar{display:grid;place-items:center;width:3rem;height:3rem;border-radius:1rem;background:rgba(var(--chessimals-primary-rgb),.12);font-size:1.45rem}.chessimals-challenge-rival div{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-rival small,.chessimals-challenge-history small,.chessimals-challenge-summary__stats small{color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-rival strong{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-rival p{font-size:.84rem}.chessimals-challenge-rival em{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-style:normal;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-rival--next{background:rgba(var(--chessimals-primary-rgb),.08)}.chessimals-challenge-card__stats span{display:grid;gap:.16rem;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:1rem;padding:.55rem;background:var(--chessimals-elevated)}.chessimals-challenge-card__stats small{color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-card__stats strong{color:var(--chessimals-text);font-size:1.1rem;font-weight:1000}.chessimals-challenge-card__actions{display:grid;gap:.55rem;align-content:center}.chessimals-challenge-card__actions--hero{grid-template-columns:minmax(0,1fr)}.chessimals-challenge-route,.chessimals-challenge-panel{display:grid;gap:.55rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1.125rem;padding:.65rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-route>div:first-child,.chessimals-challenge-panel__heading{display:flex;flex-wrap:wrap;gap:.4rem;align-items:baseline;justify-content:space-between}.chessimals-challenge-route>div:first-child>span{color:var(--chessimals-muted);font-size:.76rem;font-weight:850}.chessimals-challenge-path{display:flex;flex-wrap:nowrap;gap:.4rem;overflow-x:auto;padding-block:.1rem;scrollbar-width:none}.chessimals-challenge-path::-webkit-scrollbar{display:none}.chessimals-challenge-path span{flex:0 0 auto;display:grid;place-items:center;width:2.15rem;height:2.15rem;overflow:hidden;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:999px;background:var(--chessimals-elevated-strong);font-size:1.08rem}.chessimals-challenge-path img{display:block;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;object-fit:contain}.chessimals-challenge-path span.is-cleared{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.34);background:rgba(var(--ion-color-success-rgb, 45, 211, 111),.16)}.chessimals-challenge-path span.is-current{border-color:rgba(var(--chessimals-sky-rgb),.48);background:rgba(var(--chessimals-sky-rgb),.18);box-shadow:0 0 0 2px rgba(var(--chessimals-sky-rgb),.12)}.chessimals-challenge-path span.is-final{border-color:rgba(var(--ion-color-warning-rgb, 255, 196, 9),.48)}.chessimals-challenge-roster{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.4rem}.chessimals-challenge-roster article{display:grid;grid-template-columns:minmax(0,1fr);gap:.4rem;align-items:center;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1rem;padding:.48rem;background:var(--chessimals-elevated-soft);opacity:.78}.chessimals-challenge-roster article.is-cleared{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.26);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.1),transparent),var(--chessimals-elevated-soft);opacity:1}.chessimals-challenge-roster article.is-current{border-color:rgba(var(--chessimals-sky-rgb),.38);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),transparent),var(--chessimals-elevated);box-shadow:0 0 0 2px rgba(var(--chessimals-sky-rgb),.1);opacity:1}.chessimals-challenge-roster article.is-final{border-color:rgba(var(--ion-color-warning-rgb, 255, 196, 9),.34)}.chessimals-challenge-roster article>.chessimals-bot-avatar{display:grid;place-items:center;width:2rem;height:2rem;border-radius:.85rem;background:rgba(var(--chessimals-primary-rgb),.1);font-size:1rem}.chessimals-challenge-roster article.is-current>.chessimals-bot-avatar{background:rgba(var(--chessimals-sky-rgb),.18)}.chessimals-challenge-roster div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-roster small,.chessimals-challenge-roster em{overflow:hidden;color:var(--chessimals-muted);font-size:.62rem;font-style:normal;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-roster strong{overflow:hidden;color:var(--chessimals-text);font-size:.82rem;font-weight:1000;line-height:1.08;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-roster p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.72rem;font-weight:820;line-height:1.18;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-achievements,.chessimals-mode-winrates{display:grid;grid-template-columns:minmax(0,1fr);gap:.45rem}.chessimals-mode-winrates>span{display:grid;gap:.1rem;border:1px solid rgba(var(--chessimals-sky-rgb),.2);border-radius:8px;padding:.48rem;background:rgba(var(--chessimals-sky-rgb),.08)}.chessimals-mode-winrates small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:900;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-mode-winrates strong{color:var(--chessimals-text);font-size:.98rem;font-weight:1000}.chessimals-mode-winrates em{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-style:normal;font-weight:850;text-overflow:ellipsis;white-space:nowrap}.chessimals-achievements>span{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.45rem;align-items:center;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.5rem;background:var(--chessimals-elevated-soft);opacity:.68}.chessimals-achievements>span.is-unlocked{border-color:rgba(var(--chessimals-sky-rgb),.3);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),var(--chessimals-elevated));opacity:1}.chessimals-achievements b{display:grid;place-items:center;width:1.9rem;height:1.9rem;border-radius:8px;background:rgba(var(--chessimals-primary-rgb),.1);color:var(--chessimals-muted);font-size:.9rem;font-weight:1000}.chessimals-achievements .is-unlocked b{background:var(--chessimals-sky);color:#fffaf0}.chessimals-achievements span span{display:grid;gap:.06rem;min-width:0}.chessimals-achievements strong,.chessimals-achievements small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-achievements strong{color:var(--chessimals-text);font-size:.78rem;font-weight:1000}.chessimals-achievements small{color:var(--chessimals-muted);font-size:.67rem;font-weight:850}.chessimals-secondary--compact{min-height:2.45rem;padding-block:.45rem}.chessimals-path-cta{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.75rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.26);border-radius:1.25rem;padding:.75rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.13),rgba(var(--chessimals-sun-rgb),.08)),var(--chessimals-elevated-soft)}.chessimals-path-cta div{display:grid;gap:.18rem;min-width:0}.chessimals-path-cta span,.chessimals-path-hero small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-path-cta strong{color:var(--chessimals-text);font-size:.95rem;font-weight:950;line-height:1.2}.chessimals-path-cta__action{justify-self:end;width:min(12rem,100%);min-width:9.5rem;padding-inline:1.1rem;white-space:nowrap}.chessimals-path-view{display:grid;gap:.85rem}.chessimals-path-hero{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.8rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.26);border-radius:1.25rem;padding:.85rem;background:radial-gradient(circle at 88% 10%,rgba(var(--chessimals-sun-rgb),.18),transparent 34%),linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent 62%),var(--chessimals-elevated-soft)}.chessimals-path-hero__art{display:block;width:clamp(5.2rem,15vw,7.5rem);height:clamp(5.2rem,15vw,7.5rem);object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-path-hero>div:not(.chessimals-path-hero__medal){display:grid;gap:.25rem;min-width:0}.chessimals-path-hero h2{margin:0;color:var(--chessimals-text);font-size:clamp(1.7rem,4vw,2.35rem);font-weight:1000;line-height:1}.chessimals-path-hero p{margin:0;color:var(--chessimals-muted);font-size:.95rem;font-weight:820;line-height:1.35}.chessimals-path-hero__medal{display:grid;place-items:center;width:6.5rem;min-height:6.5rem;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:1rem;background:linear-gradient(180deg,rgba(var(--chessimals-sun-rgb),.2),rgba(var(--chessimals-sky-rgb),.11)),var(--chessimals-elevated);box-shadow:0 16px 28px rgba(var(--chessimals-shadow-rgb),.12)}.chessimals-path-hero__medal img{display:block;width:3rem;height:3rem;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-path-hero__medal span{color:var(--chessimals-text);font-size:1.65rem;font-weight:1000;line-height:1}.chessimals-path-hero__medal b{color:var(--chessimals-muted);font-size:.78rem;font-weight:950}.chessimals-path-highlights{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:.65rem}.chessimals-path-highlights article{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.65rem;align-items:center;min-width:0;min-height:7.5rem;border:1px solid rgba(var(--chessimals-primary-rgb),.13);border-radius:1rem;padding:.7rem;background:radial-gradient(circle at 12% 4%,rgba(var(--chessimals-sun-rgb),.18),transparent 42%),var(--chessimals-elevated-soft)}.chessimals-path-highlights img{display:block;width:4.25rem;height:4.25rem;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-path-highlights article div{display:grid;min-width:0;gap:.12rem}.chessimals-path-highlights small{color:var(--chessimals-sky);font-size:.66rem;font-weight:950;letter-spacing:.05em;text-transform:uppercase}.chessimals-path-highlights strong{color:var(--chessimals-text);font-size:1.08rem;font-weight:1000;line-height:1.06}.chessimals-path-highlights span{color:var(--chessimals-muted);font-size:.76rem;font-weight:820;line-height:1.24}.chessimals-path-rings{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:.6rem}.chessimals-path-ring,.chessimals-path-panel,.chessimals-path-stats span,.chessimals-path-bars span{border:1px solid rgba(var(--chessimals-primary-rgb),.13);border-radius:1rem;background:var(--chessimals-elevated-soft)}.chessimals-path-ring{display:grid;grid-template-areas:\"ring label\" \"ring detail\";grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;padding:.65rem;text-align:left}.chessimals-path-ring>div{position:relative;grid-area:ring;display:grid;place-items:center;width:3.35rem;height:3.35rem;border-radius:999px;background:conic-gradient(var(--chessimals-sky) var(--ring-progress),rgba(var(--chessimals-primary-rgb),.12) 0)}.chessimals-path-ring>div:after{position:absolute;inset:.34rem;border-radius:inherit;background:var(--chessimals-elevated);content:\"\"}.chessimals-path-ring strong{position:relative;z-index:1;color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-path-ring span,.chessimals-path-bars b{color:var(--chessimals-text);font-size:.78rem;font-weight:950}.chessimals-path-ring span{grid-area:label;align-self:end}.chessimals-path-ring small{grid-area:detail;align-self:start;min-width:0}.chessimals-path-ring small{color:var(--chessimals-muted);font-size:.68rem;font-weight:820;line-height:1.25}.chessimals-path-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:.75rem}.chessimals-path-panel{display:grid;gap:.65rem;align-content:start;padding:.75rem}.chessimals-path-panel--wide{grid-column:1 / -1}.chessimals-path-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,10.5rem),1fr));gap:.5rem}.chessimals-path-stats span{display:grid;gap:.08rem;padding:.6rem}.chessimals-path-stats small{color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-transform:uppercase}.chessimals-path-stats strong{color:var(--chessimals-text);font-size:1.25rem;font-weight:1000}.chessimals-path-bars{display:grid;gap:.45rem}.chessimals-path-bars span{display:grid;grid-template-columns:minmax(0,.9fr) minmax(3rem,1fr) auto;gap:.45rem;align-items:center;padding:.48rem}.chessimals-path-bars i{display:block;height:.48rem;overflow:hidden;border-radius:999px;background:rgba(var(--chessimals-primary-rgb),.11)}.chessimals-path-bars i:before{display:block;width:var(--bar-progress);height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--chessimals-sky),var(--chessimals-sun));content:\"\"}.chessimals-path-bars strong{color:var(--chessimals-text);font-size:.86rem;font-weight:1000}.chessimals-achievements--path{grid-template-columns:1fr}.chessimals-challenge-history--path{border-top:0;padding-top:0}.chessimals-progress__heading small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-progress__heading{display:flex;flex-wrap:wrap;gap:.35rem;align-items:baseline;justify-content:space-between}.chessimals-progress__heading span{color:var(--chessimals-muted);font-size:.76rem;font-weight:820}.chessimals-challenge-history{display:grid;gap:.35rem;border-top:1px solid rgba(var(--chessimals-primary-rgb),.12);padding-top:.2rem}.chessimals-challenge-history span{display:flex;flex-wrap:wrap;gap:.35rem;color:var(--chessimals-muted);font-size:.82rem;font-weight:820}.chessimals-challenge-history b{color:var(--chessimals-text);font-weight:1000}.chessimals-challenge-summary{display:grid;gap:.6rem;border:0;border-radius:0;padding:0;background:transparent}.chessimals-challenge-summary.is-victory,.chessimals-challenge-summary.is-defeat{background:transparent}.chessimals-challenge-summary__hero,.chessimals-challenge-rival-voice{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.7rem}.chessimals-challenge-summary__hero>.chessimals-bot-avatar,.chessimals-challenge-rival-voice>.chessimals-bot-avatar{position:relative;display:grid;place-items:center;width:3rem;height:3rem;border-radius:1rem;background:rgba(var(--chessimals-sky-rgb),.16);font-size:1.55rem;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-challenge-summary__hero.is-cleared>.chessimals-bot-avatar img{filter:grayscale(1) saturate(.15) contrast(.95);opacity:.62}.chessimals-challenge-summary__hero.is-cleared>.chessimals-bot-avatar:after{content:\"\\2713\";position:absolute;right:-.05rem;bottom:-.05rem;display:grid;place-items:center;width:1.25rem;height:1.25rem;border:.12rem solid var(--chessimals-panel);border-radius:999px;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.74rem;font-weight:1000;line-height:1}.chessimals-challenge-summary__hero div,.chessimals-challenge-rival-voice div{display:grid;gap:.12rem;min-width:0}.chessimals-challenge-summary__hero small,.chessimals-challenge-rival-voice small{color:var(--chessimals-muted);font-size:.68rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-challenge-summary strong{font-size:1rem;font-weight:1000}.chessimals-challenge-summary__hero p,.chessimals-challenge-rival-voice p{margin:0;color:var(--chessimals-muted);font-size:.86rem;font-weight:820;line-height:1.28}.chessimals-challenge-rival-voice{border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:.95rem;padding:.65rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-summary__actions{display:grid}.chessimals-challenge-summary__play{min-height:3.35rem;font-size:1.02rem;box-shadow:0 .9rem 1.8rem rgba(var(--chessimals-primary-rgb),.26)}.chessimals-result.is-challenge-result .chessimals-challenge-tension,.chessimals-result.is-challenge-result .chessimals-challenge-rival--next{display:grid;grid-template-columns:minmax(0,1fr);border:0;border-radius:.75rem;padding:.45rem .6rem;background:rgba(var(--chessimals-primary-rgb),.07)}.chessimals-result.is-challenge-result .chessimals-challenge-rival--next{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.7rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1rem;padding:.65rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.12),transparent),rgba(var(--chessimals-primary-rgb),.06)}.chessimals-result.is-challenge-result .chessimals-challenge-rival--next>.chessimals-bot-avatar{width:3.4rem;height:3.4rem;border-radius:1.1rem;background:var(--chessimals-elevated-strong);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14),0 .45rem 1rem rgba(var(--chessimals-primary-rgb),.1)}.chessimals-result.is-challenge-result .chessimals-challenge-rival--next p{margin:0;color:var(--chessimals-text);font-size:.9rem;font-weight:900;line-height:1.22}.chessimals-result.is-challenge-result .chessimals-challenge-tension.is-critical{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.1)}.chessimals-challenge-rival-voice>.chessimals-bot-avatar{width:2.35rem;height:2.35rem;border-radius:999px;font-size:1.15rem}.chessimals-challenge-summary__stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem}.chessimals-challenge-record{display:flex;align-items:center;gap:.45rem;border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:999px;padding:.45rem .65rem;background:rgba(var(--chessimals-sky-rgb),.14);color:var(--chessimals-text)}.chessimals-challenge-record span{display:grid;place-items:center;width:1.45rem;height:1.45rem;border-radius:999px;background:var(--chessimals-sky);color:#fffaf0;font-size:.82rem}.chessimals-challenge-record strong{font-size:.9rem}.chessimals-challenge-tension{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.3);border-radius:.9rem;padding:.65rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),rgba(var(--chessimals-primary-rgb),.08)),var(--chessimals-elevated)}.chessimals-challenge-tension.is-critical{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.38);background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.16),rgba(var(--chessimals-primary-rgb),.08)),var(--chessimals-elevated)}.chessimals-challenge-tension>span{display:grid;place-items:center;width:2.25rem;height:2.25rem;border-radius:999px;background:rgba(var(--chessimals-sky-rgb),.18);color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-tension.is-critical>span{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.18)}.chessimals-challenge-tension div{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-tension strong{font-size:.95rem}.chessimals-challenge-tension p{font-size:.84rem}.chessimals-challenge-summary__stats span{display:grid;gap:.1rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:.8rem;padding:.45rem;background:var(--chessimals-elevated)}.chessimals-challenge-summary__stats b{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-rival--next em{color:var(--chessimals-muted);font-size:.78rem;font-style:normal;font-weight:820;line-height:1.25;white-space:normal}.chessimals-tip p,.chessimals-powers p{color:var(--chessimals-muted)}.chessimals-learn-more{justify-self:start;min-height:2.75rem;border:0;border-radius:999px;padding:0 1rem;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font:inherit;font-weight:950;box-shadow:0 .75rem 1.6rem rgba(var(--chessimals-primary-rgb),.28)}.chessimals-size,.chessimals-mode,.chessimals-status{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-status{order:3;grid-template-columns:repeat(3,minmax(0,1fr))}.chessimals-size button,.chessimals-mode button,.chessimals-status div{display:grid;gap:.2rem;align-content:center;min-width:0;min-height:3.875rem;padding:.55rem .65rem;border:1px solid var(--chessimals-border);border-radius:1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-size button.is-selected{border-color:var(--chessimals-primary);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-mode button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-status__timer{position:relative;overflow:hidden;isolation:isolate;border-color:rgba(var(--chessimals-primary-rgb),.42)!important}.chessimals-status__timer:before{content:\"\";position:absolute;inset:auto 0 0;z-index:0;height:.22rem;transform:scaleX(var(--timer-progress, 1));transform-origin:left center;background:var(--chessimals-primary);transition:transform .18s linear,background .18s ease}.chessimals-status__timer.is-low{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.58)!important;background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.16),transparent),var(--chessimals-panel)!important;animation:chessimals-turn-pulse .82s ease-in-out infinite}.chessimals-status__timer.is-low:before{background:var(--ion-color-danger, #eb445a)}.chessimals-status__timer.is-low strong{color:var(--ion-color-danger, #eb445a)}.chessimals-status__score.is-pop{border-color:rgba(var(--chessimals-sky-rgb),.42);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),transparent),var(--chessimals-panel);animation:chessimals-score-pulse .62s ease-out both}.chessimals-status__timer small,.chessimals-status__timer strong{position:relative;z-index:1}.chessimals-challenge-live{order:4;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1.35fr);gap:.65rem;align-items:stretch;border:1px solid rgba(var(--chessimals-sky-rgb),.28);border-radius:8px;padding:.68rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.13),transparent 52%),var(--chessimals-elevated-soft);color:var(--chessimals-text)}.chessimals-challenge-live__rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;min-width:0}.chessimals-challenge-live__rival>.chessimals-bot-avatar{display:grid;place-items:center;width:2.7rem;height:2.7rem;border-radius:8px;background:rgba(var(--chessimals-sky-rgb),.16);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14);font-size:1.35rem}.chessimals-challenge-live__rival div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-live__rival small,.chessimals-challenge-live__metrics small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-live__rival strong{overflow:hidden;color:var(--chessimals-text);font-size:1rem;font-weight:1000;line-height:1.05;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-live__rival p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.78rem;font-weight:820;line-height:1.18;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-challenge-live__metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.42rem}.chessimals-challenge-live__metrics span{display:grid;gap:.1rem;align-content:center;min-width:0;min-height:3rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.4rem .45rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-live__metrics b{overflow:hidden;color:var(--chessimals-text);font-size:.92rem;font-weight:1000;line-height:1.05;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-tension--live{grid-column:1 / -1;padding:.55rem}.chessimals-difficulty{display:flex;flex-wrap:wrap;gap:.55rem}.chessimals-difficulty button{min-height:2.75rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:950}.chessimals-difficulty button.is-selected{border-color:var(--chessimals-primary);background:var(--chessimals-primary);color:#fff}.chessimals-bots{display:grid;grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr));gap:.625rem}.chessimals-bots button{display:grid;grid-template-columns:auto 1fr;grid-template-areas:\"avatar title\" \"avatar body\" \"avatar tendency\";column-gap:.55rem;row-gap:.12rem;min-width:0;min-height:4.75rem;border:1px solid var(--chessimals-border);border-radius:1rem;padding:.65rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-bots button>.chessimals-bot-avatar{grid-area:avatar;display:grid;place-items:center;width:2.1rem;height:2.1rem;border-radius:50%;background:rgba(var(--chessimals-primary-rgb),.12);font-size:1.2rem}.chessimals-bots button strong{grid-area:title;align-self:end;font-size:.95rem;font-weight:950}.chessimals-bots button small{grid-area:body;color:var(--chessimals-muted);font-size:.75rem;font-weight:750;line-height:1.25}.chessimals-bots button p{grid-area:tendency;margin:.12rem 0 0;color:var(--chessimals-muted);font-size:.72rem;font-weight:820;line-height:1.24}.chessimals-bots button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16),0 .75rem 1.5rem rgba(var(--chessimals-primary-rgb),.1)}.chessimals-size strong,.chessimals-mode strong,.chessimals-status strong,.chessimals-result strong,.chessimals-rematch-status strong,.chessimals-tip strong{font-weight:950}.chessimals-status strong{min-width:0;font-size:clamp(.95rem,2.5vw,1.2rem);line-height:1.08;overflow-wrap:anywhere;white-space:normal}.chessimals-size small,.chessimals-mode small,.chessimals-status small{color:var(--chessimals-muted);font-size:.78rem;line-height:1.12}.chessimals-board-wrap{--chessimals-board-radius: min(.85rem, 14px);display:flex;justify-content:center;min-width:0;max-width:100%;overflow-x:auto;width:100%;padding:.25rem 0}.chessimals-board-wrap.is-orienting .chessimals-board-frame{animation:chessimals-orient-board .32s ease}.chessimals-board-wrap.is-finished{overflow-x:visible}.chessimals-board-frame{flex:0 1 58rem;min-width:0;width:100%;max-width:58rem;border-radius:var(--chessimals-board-radius)}.chessimals-board{position:relative;display:grid;grid-template-columns:repeat(var(--board-size),minmax(0,1fr));grid-template-rows:repeat(var(--board-size),minmax(0,1fr));min-width:0;width:100%;aspect-ratio:1 / 1;overflow:hidden;isolation:isolate;contain:paint;border:1px solid var(--chessimals-border);border-radius:var(--chessimals-board-radius);clip-path:inset(0 round var(--chessimals-board-radius));-webkit-mask-image:-webkit-radial-gradient(white,black);background:radial-gradient(ellipse at 16% 18%,rgba(255,255,255,.34),transparent 18%),radial-gradient(ellipse at 82% 78%,rgba(var(--chessimals-primary-rgb),.1),transparent 22%),radial-gradient(ellipse at 32% 68%,rgba(var(--chessimals-stone-rgb),.05),transparent 30%),radial-gradient(ellipse at 66% 34%,rgba(255,255,255,.08),transparent 24%),var(--chessimals-border);box-shadow:inset 0 0 0 1px #ffffff1a,0 .85rem 2.1rem var(--chessimals-board-shadow)}.chessimals-board-wrap.is-syncing .chessimals-board{cursor:wait}.chessimals-cell-coordinate{position:absolute;z-index:5;color:color-mix(in srgb,var(--chessimals-muted) 78%,var(--chessimals-text));font-size:.68rem;font-weight:950;letter-spacing:.02em;line-height:1;pointer-events:none;text-transform:uppercase;-webkit-user-select:none;user-select:none}.chessimals-cell-coordinate--rank{top:.2rem;left:.24rem}.chessimals-cell-coordinate--file{right:.24rem;bottom:.18rem}@keyframes chessimals-orient-board{0%{opacity:.72;filter:blur(.06rem);transform:scale(.985)}52%{opacity:.92;filter:blur(0);transform:scale(1.012)}to{opacity:1;filter:blur(0);transform:scale(1)}}.chessimals-center-line{position:absolute;top:50%;left:0;right:0;z-index:2;display:flex;align-items:center;justify-content:center;border-top:.08rem dashed rgba(var(--chessimals-primary-rgb),.56);filter:drop-shadow(0 0 .24rem rgba(var(--chessimals-primary-rgb),.26));pointer-events:none}.chessimals-power-trail{position:absolute;inset:0;z-index:5;pointer-events:none;--trail-color: rgba(var(--chessimals-magic-rgb), .88);--trail-glow: rgba(var(--chessimals-magic-rgb), .48)}.chessimals-power-trail.is-capture{--trail-color: rgba(var(--chessimals-capture-rgb), .86);--trail-glow: rgba(var(--chessimals-capture-rgb), .46)}.chessimals-power-trail.effect-eagle{--trail-color: rgba(255, 255, 255, .92);--trail-glow: rgba(120, 210, 255, .54)}.chessimals-power-trail.effect-bull{--trail-color: rgba(188, 131, 76, .86);--trail-glow: rgba(188, 131, 76, .36)}.chessimals-power-trail.effect-kangaroo{--trail-color: rgba(174, 124, 255, .86);--trail-glow: rgba(174, 124, 255, .42)}.chessimals-power-trail.effect-lion{--trail-color: rgba(255, 221, 120, .88);--trail-glow: rgba(255, 190, 56, .42)}.chessimals-power-trail>span{position:absolute;top:var(--trail-y);left:var(--trail-x);width:var(--trail-length);height:.45rem;border-radius:999px;background:linear-gradient(90deg,transparent,var(--trail-color) 42%,rgba(255,255,255,.92));box-shadow:0 0 .75rem var(--trail-glow),0 0 1.45rem var(--trail-glow);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0);transform-origin:0 50%;animation:chessimals-power-trail .72s ease-out both}.chessimals-power-trail.effect-eagle>span{height:.28rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.95) 44%,rgba(120,210,255,.58)),repeating-linear-gradient(90deg,transparent 0 .7rem,rgba(255,255,255,.66) .7rem .92rem);animation-name:chessimals-eagle-trail}.chessimals-power-trail.effect-bull>span{height:.72rem;background:repeating-linear-gradient(90deg,rgba(255,255,255,.42) 0 .18rem,transparent .18rem .42rem),linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.86));animation-name:chessimals-bull-trail}.chessimals-power-trail.effect-kangaroo>span{height:1rem;border-top:.16rem dashed var(--trail-color);background:transparent;box-shadow:none;filter:drop-shadow(0 0 .8rem var(--trail-glow));animation-name:chessimals-kangaroo-trail}.chessimals-power-trail.effect-lion>span{height:.62rem;background:linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.82)),repeating-linear-gradient(115deg,rgba(255,255,255,.55) 0 .12rem,transparent .12rem .34rem);animation-name:chessimals-lion-trail}@keyframes chessimals-power-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}28%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.72)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-eagle-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) skew(-10deg)}30%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.82) skew(-10deg)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1.05) skew(-10deg)}}@keyframes chessimals-bull-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) scaleY(1)}38%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.7) scaleY(1.18)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1) scaleY(.82)}}@keyframes chessimals-kangaroo-trail{0%{opacity:0;transform:translateY(-.4rem) rotate(var(--trail-angle)) scaleX(0)}34%{opacity:1;transform:translateY(-1.2rem) rotate(var(--trail-angle)) scaleX(.62)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-lion-trail{0%{opacity:0;filter:saturate(1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}36%{opacity:1;filter:saturate(1.4);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.76)}to{opacity:0;filter:saturate(1.1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-score-pulse{0%,to{transform:translateZ(0) scale(1)}42%{transform:translateZ(0) scale(1.035)}}.chessimals-challenge-intro{position:absolute;inset:0;z-index:7;display:grid;place-items:center;padding:clamp(.75rem,4vw,1.35rem);background:radial-gradient(circle at 50% 36%,rgba(var(--chessimals-sky-rgb),.24),transparent 34%),linear-gradient(135deg,#140c167a,#08120d57);backdrop-filter:blur(1.5px);animation:chessimals-challenge-intro-in .26s ease-out both}.chessimals-challenge-intro__card{display:grid;justify-items:center;gap:.55rem;width:min(18rem,92%);border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:8px;padding:.85rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent),var(--chessimals-elevated-strong);color:var(--chessimals-text);box-shadow:0 1.1rem 2.3rem #0000003d,inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.08);text-align:center}.chessimals-challenge-intro__avatar{display:grid;place-items:center;width:4rem;height:4rem;border-radius:8px;background:radial-gradient(circle at 35% 24%,var(--chessimals-glass-highlight),transparent 30%),rgba(var(--chessimals-sky-rgb),.16);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.16),0 .7rem 1.5rem rgba(var(--chessimals-sky-rgb),.18);font-size:2.15rem}.chessimals-challenge-intro__copy{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-intro__copy small,.chessimals-challenge-intro__facts small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:950;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-intro__copy strong{overflow:hidden;color:var(--chessimals-text);font-size:1.35rem;font-weight:1000;line-height:1.04;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-intro__copy p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.88rem;font-weight:820;line-height:1.24;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-challenge-intro__facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem;width:100%}.chessimals-challenge-intro__facts span{display:grid;gap:.1rem;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.38rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-intro__facts b{overflow:hidden;color:var(--chessimals-text);font-size:.86rem;font-weight:1000;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-intro .chessimals-primary{min-height:2.45rem;width:100%}@keyframes chessimals-challenge-intro-in{0%{opacity:0}to{opacity:1}}.chessimals-board-overlay{position:absolute;inset:0;z-index:8;display:grid;place-content:center;gap:.5rem;padding:1.25rem;background:radial-gradient(circle at 50% 34%,rgba(255,226,129,.34),transparent 24%),radial-gradient(circle at 50% 52%,rgba(var(--chessimals-primary-rgb),.34),transparent 42%),linear-gradient(135deg,#140c16e0,#08120dc7);color:#fff;text-align:center;backdrop-filter:blur(2px);overflow:hidden}.chessimals-board-overlay.is-defeat{background:radial-gradient(circle at 50% 34%,rgba(143,168,206,.26),transparent 24%),radial-gradient(circle at 50% 52%,rgba(72,86,115,.42),transparent 42%),linear-gradient(135deg,#090c14e6,#1c1e2bcc)}.chessimals-board-overlay:before{position:absolute;inset:0;background:radial-gradient(circle at 20% 30%,rgba(255,255,255,.58) 0 .08rem,transparent .1rem),radial-gradient(circle at 75% 25%,rgba(255,226,129,.7) 0 .1rem,transparent .12rem),radial-gradient(circle at 68% 72%,rgba(var(--chessimals-capture-rgb),.54) 0 .08rem,transparent .1rem),radial-gradient(circle at 35% 78%,rgba(255,255,255,.48) 0 .07rem,transparent .09rem),radial-gradient(circle at 84% 66%,rgba(255,255,255,.38) 0 .06rem,transparent .08rem),radial-gradient(circle at 14% 64%,rgba(255,226,129,.48) 0 .07rem,transparent .09rem);content:\"\";opacity:.72;animation:chessimals-victory-sparks 1.5s ease-in-out infinite}.chessimals-board-overlay__rays{position:absolute;inset:-18%;background:conic-gradient(from 8deg,transparent 0 7deg,rgba(255,226,129,.16) 7deg 11deg,transparent 11deg 22deg);opacity:.85;animation:chessimals-finale-rays 8s linear infinite}.chessimals-board-overlay.is-defeat .chessimals-board-overlay__rays{background:conic-gradient(from 8deg,transparent 0 8deg,rgba(180,204,240,.1) 8deg 12deg,transparent 12deg 24deg);animation-duration:12s}.chessimals-board-overlay__ribbon{position:absolute;top:-20%;width:.42rem;height:54%;border-radius:999px;background:linear-gradient(to bottom,transparent,rgba(255,226,129,.72),transparent);opacity:.7;transform:rotate(var(--ribbon-angle, 12deg));animation:chessimals-finale-ribbon 2.5s ease-in-out infinite}.chessimals-board-overlay.is-defeat .chessimals-board-overlay__ribbon{background:linear-gradient(to bottom,transparent,rgba(180,204,240,.42),transparent);opacity:.48}.chessimals-board-overlay__ribbon.ribbon-a{left:18%;--ribbon-angle: -18deg}.chessimals-board-overlay__ribbon.ribbon-b{left:50%;--ribbon-angle: 8deg;animation-delay:.32s}.chessimals-board-overlay__ribbon.ribbon-c{right:18%;--ribbon-angle: 20deg;animation-delay:.64s}.chessimals-board-overlay>*{position:relative;z-index:1}.chessimals-board-overlay span{justify-self:center;border-radius:999px;padding:.32rem .7rem;background:#ffffff26;color:#ffffffe6;font-size:.76rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-board-overlay strong{font-size:clamp(1.65rem,8vw,3rem);line-height:1;font-weight:950;text-shadow:0 0 1.25rem rgba(255,255,255,.26)}.chessimals-board-overlay em{justify-self:center;display:grid;place-items:center;width:clamp(3rem,14vw,4.6rem);height:clamp(3rem,14vw,4.6rem);border:.16rem solid rgba(255,255,255,.62);border-radius:50%;background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.72),transparent 18%),linear-gradient(135deg,#ffe281,#b98436);color:#2d2412;font-size:clamp(1.1rem,5vw,1.65rem);font-style:normal;font-weight:950;box-shadow:0 0 0 .45rem #ffe2811f,0 1rem 2rem #00000042;animation:chessimals-finale-medal 1.8s ease-in-out infinite}.chessimals-board-overlay.is-defeat em{background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.48),transparent 18%),linear-gradient(135deg,#d9e2ef,#69758e);color:#182032;box-shadow:0 0 0 .45rem #b4ccf01a,0 1rem 2rem #00000052}.chessimals-board-overlay em.has-avatar{overflow:hidden;background:#fff;padding:0}.chessimals-board-overlay em.has-avatar img{display:block;width:100%;height:100%;object-fit:cover}.chessimals-board-overlay b{justify-self:center;color:#fffc;font-size:.8rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-board-overlay small{color:#ffffffd1;font-size:clamp(.9rem,3vw,1.1rem);font-weight:800}.chessimals-board-overlay__stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem;width:min(26rem,92%);margin:.2rem auto 0}.chessimals-board-overlay__stats div{display:grid;gap:.08rem;min-width:0;border:1px solid rgba(255,255,255,.18);border-radius:.75rem;padding:.42rem .46rem;background:#ffffff1a;backdrop-filter:blur(3px)}.chessimals-board-overlay__stats dt,.chessimals-board-overlay__stats dd{overflow:hidden;margin:0;text-overflow:ellipsis;white-space:nowrap}.chessimals-board-overlay__stats dt{color:#ffffffad;font-size:clamp(.52rem,2.1vw,.66rem);font-weight:950;letter-spacing:.04em;text-transform:uppercase}.chessimals-board-overlay__stats dd{color:#fff;font-size:clamp(.68rem,2.8vw,.88rem);font-weight:950}@keyframes chessimals-victory-sparks{0%,to{opacity:.46;transform:translateY(0) scale(.98)}50%{opacity:.95;transform:translateY(-.35rem) scale(1.02)}}@keyframes chessimals-finale-rays{to{transform:rotate(360deg)}}@keyframes chessimals-finale-ribbon{0%,to{opacity:.18;transform:translateY(-.5rem) rotate(var(--ribbon-angle))}50%{opacity:.75;transform:translateY(1.4rem) rotate(var(--ribbon-angle))}}@keyframes chessimals-finale-medal{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-.18rem) scale(1.04)}}.chessimals-cell{position:relative;isolation:isolate;--chessimals-cell-bg: var(--chessimals-cell-light);display:grid;place-items:center;min-width:0;min-height:0;aspect-ratio:1;border:0;background:radial-gradient(ellipse at 26% 24%,rgba(255,255,255,.12),transparent 24%),radial-gradient(ellipse at 78% 76%,rgba(61,54,36,.06),transparent 28%),linear-gradient(135deg,rgba(255,255,255,.04),transparent 52%,rgba(52,44,28,.04)),var(--chessimals-cell-bg);color:var(--chessimals-text);font:inherit;overflow:hidden;transition:background .16s ease,box-shadow .16s ease,transform .16s ease}.chessimals-cell:before,.chessimals-cell:after{pointer-events:none}.chessimals-cell-texture{position:absolute;inset:0;z-index:0;display:block;pointer-events:none;opacity:.42;mix-blend-mode:multiply;background:radial-gradient(ellipse at var(--wear-x, 28%) var(--wear-y, 32%),rgba(255,255,255,.16),transparent 17%),radial-gradient(ellipse at var(--wear-x2, 74%) var(--wear-y2, 68%),rgba(75,66,42,.09),transparent 25%),repeating-linear-gradient(var(--wear-angle, 26deg),rgba(75,66,42,.045) 0 1px,transparent 1px .52rem),linear-gradient(135deg,rgba(255,255,255,.06),transparent 42%,rgba(52,44,28,.045))}.chessimals-cell-texture:after{position:absolute;inset:.08rem;border:1px solid rgba(75,66,42,.05);border-radius:.18rem;box-shadow:inset .08rem .08rem #ffffff14,inset -.08rem -.08rem #342c1c0b;content:\"\"}.chessimals-cell.is-edge-cell .chessimals-cell-texture{opacity:.56;background:radial-gradient(ellipse at var(--wear-x, 28%) var(--wear-y, 32%),rgba(255,255,255,.14),transparent 18%),radial-gradient(ellipse at var(--wear-x2, 74%) var(--wear-y2, 68%),rgba(75,66,42,.14),transparent 28%),linear-gradient(135deg,rgba(70,52,28,.055),transparent 44%,rgba(52,44,28,.09)),repeating-linear-gradient(var(--wear-angle, 26deg),rgba(75,66,42,.055) 0 1px,transparent 1px .48rem)}.chessimals-cell.wear-0{--wear-x: 22%;--wear-y: 24%;--wear-x2: 78%;--wear-y2: 72%;--wear-angle: 18deg}.chessimals-cell.wear-1{--wear-x: 64%;--wear-y: 18%;--wear-x2: 30%;--wear-y2: 76%;--wear-angle: -24deg}.chessimals-cell.wear-2{--wear-x: 42%;--wear-y: 58%;--wear-x2: 82%;--wear-y2: 26%;--wear-angle: 42deg}.chessimals-cell.wear-3{--wear-x: 74%;--wear-y: 68%;--wear-x2: 24%;--wear-y2: 28%;--wear-angle: -12deg}.chessimals-cell.wear-4{--wear-x: 34%;--wear-y: 18%;--wear-x2: 62%;--wear-y2: 84%;--wear-angle: 64deg}.chessimals-cell.wear-5{--wear-x: 18%;--wear-y: 70%;--wear-x2: 70%;--wear-y2: 34%;--wear-angle: -48deg}:host-context(html.ion-palette-dark) .chessimals-cell-texture,:host-context([data-theme=\"dark\"]) .chessimals-cell-texture{opacity:.34;mix-blend-mode:soft-light}.chessimals-cell.is-dark-cell{--chessimals-cell-bg: var(--chessimals-cell-dark)}.chessimals-cell.is-selected{z-index:1;background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.28) 0 36%,transparent 62%),linear-gradient(135deg,rgba(var(--chessimals-selected-rgb),.22),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .18rem var(--chessimals-selected),inset 0 0 .55rem #ffffffb8,inset 0 0 1.8rem rgba(var(--chessimals-selected-rgb),.42),0 0 .55rem rgba(var(--chessimals-selected-rgb),.56),0 0 1.55rem rgba(var(--chessimals-selected-rgb),.36)}.chessimals-board.is-power-aiming .chessimals-cell.is-selected{background:radial-gradient(circle at 50% 52%,rgba(var(--chessimals-magic-rgb),.38) 0 34%,transparent 64%),radial-gradient(circle at 32% 24%,rgba(255,255,255,.34),transparent 28%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.2),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .18rem var(--chessimals-magic-hot),inset 0 0 .8rem #ffffffa8,inset 0 0 1.9rem rgba(var(--chessimals-magic-rgb),.5),0 0 .7rem rgba(var(--chessimals-magic-rgb),.62),0 0 1.75rem rgba(var(--chessimals-magic-rgb),.42)}.chessimals-board.is-power-aiming .chessimals-cell.is-legal:not(.is-capture):after{border-color:rgba(var(--chessimals-magic-rgb),.94);box-shadow:0 0 .72rem rgba(var(--chessimals-magic-rgb),.48),inset 0 0 .6rem #fff3}.chessimals-board.is-power-aiming .chessimals-target{background:var(--chessimals-magic-hot);box-shadow:0 0 0 .2rem rgba(var(--chessimals-magic-rgb),.2),0 0 .95rem rgba(var(--chessimals-magic-rgb),.62)}.chessimals-cell.is-legal:not(.is-capture):after{position:absolute;inset:13%;z-index:2;border:max(2px,1.8%) solid var(--chessimals-move);border-radius:.55rem;content:\"\";opacity:.74;pointer-events:none}.chessimals-cell.is-last:not(.is-selected):not(.is-legal):not(.is-capture){background:radial-gradient(circle,rgba(var(--chessimals-last-rgb),.16) 0 42%,transparent 68%),var(--chessimals-cell-bg)}.chessimals-cell.is-capture{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.24),transparent 34%),linear-gradient(135deg,rgba(var(--chessimals-capture-rgb),.14),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .14rem rgba(var(--chessimals-capture-rgb),.84),inset 0 0 1.4rem rgba(var(--chessimals-capture-rgb),.24),0 0 .95rem rgba(var(--chessimals-capture-rgb),.34);animation:chessimals-capture-aura 1.35s ease-in-out infinite}.chessimals-cell.is-capture:before{position:absolute;inset:4%;z-index:1;display:block;border-radius:.64rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.52),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.24),transparent 58%);content:\"\";opacity:0;transform:translate(-42%) scale(.9);animation:chessimals-capture-sweep 1.35s ease-in-out infinite}.chessimals-cell.is-capture:after{position:absolute;inset:8%;z-index:3;border:max(2px,1.55%) solid rgba(var(--chessimals-capture-rgb),.9);border-radius:.62rem;box-shadow:0 0 .75rem rgba(var(--chessimals-capture-rgb),.5),inset 0 0 .72rem #ffffff38;content:\"\";pointer-events:none;animation:chessimals-capture-frame 1.35s ease-in-out infinite}.chessimals-cell.has-capture-ready:not(.is-selected):after{position:absolute;inset:16%;z-index:3;border:max(2px,1.45%) solid rgba(var(--chessimals-selected-rgb),.72);border-radius:999px;box-shadow:0 0 .65rem rgba(var(--chessimals-selected-rgb),.34),inset 0 0 .55rem #ffffff2e;content:\"\"}.chessimals-cell.is-winning.is-legal:not(.is-capture):after{border-color:rgba(var(--chessimals-warning-rgb),.92);border-radius:999px;box-shadow:0 0 .75rem rgba(var(--chessimals-warning-rgb),.48),inset 0 0 .58rem #ffffff38}.chessimals-cell.is-winning .chessimals-target{background:var(--chessimals-warning);box-shadow:0 0 0 .22rem rgba(var(--chessimals-warning-rgb),.2),0 0 .95rem rgba(var(--chessimals-warning-rgb),.56)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture){background:radial-gradient(circle at 50% 52%,rgba(var(--chessimals-warning-rgb),.16),transparent 52%),var(--chessimals-cell-bg)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture) .chessimals-piece{filter:drop-shadow(0 0 .38rem rgba(var(--chessimals-warning-rgb),.52)) var(--chessimals-piece-white-shadow)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture) .chessimals-piece.is-black{filter:drop-shadow(0 0 .38rem rgba(var(--chessimals-warning-rgb),.52)) var(--chessimals-piece-black-shadow)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture):before{position:absolute;top:.26rem;right:.26rem;z-index:4;width:.48rem;height:.48rem;border-radius:999px;background:rgba(var(--chessimals-warning-rgb),.96);box-shadow:0 0 0 .18rem rgba(var(--chessimals-warning-rgb),.22);content:\"\"}@keyframes chessimals-capture-aura{0%,to{filter:saturate(1);box-shadow:inset 0 0 0 .12rem rgba(var(--chessimals-capture-rgb),.78),inset 0 0 1rem rgba(var(--chessimals-capture-rgb),.2),0 0 .64rem rgba(var(--chessimals-capture-rgb),.32)}50%{filter:saturate(1.22);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.96),inset 0 0 1.34rem rgba(var(--chessimals-capture-rgb),.34),0 0 1.2rem rgba(var(--chessimals-capture-rgb),.48)}}@keyframes chessimals-capture-sweep{0%{opacity:0;transform:translate(-52%) scale(.88)}42%{opacity:.66;transform:translate(0) scale(1)}to{opacity:0;transform:translate(48%) scale(.92)}}@keyframes chessimals-capture-frame{0%,to{opacity:.68;transform:scale(.96)}50%{opacity:1;transform:scale(1)}}.chessimals-cell.has-source-effect:not(.is-moving-source){background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.12) 0 34%,transparent 64%),var(--chessimals-cell-bg)}.chessimals-cell.has-move-effect{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.22) 0 34%,transparent 68%),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.86),inset 0 0 1.2rem rgba(var(--chessimals-capture-rgb),.26),0 0 1.1rem rgba(var(--chessimals-capture-rgb),.42)}.chessimals-cell.has-move-effect:before{position:absolute;inset:.12rem;z-index:1;display:block;border-radius:.7rem;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.48),transparent 22%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.42),transparent 58%);content:\"\";opacity:0;transform:scale(.72);animation:chessimals-power-impact .7s ease-out both}.chessimals-cell.has-move-effect:after{position:absolute;inset:.28rem;z-index:4;display:block;border:.14rem solid rgba(255,255,255,.72);border-radius:.58rem;box-shadow:0 0 .5rem #ffffff5c,0 0 1rem rgba(var(--chessimals-capture-rgb),.32);content:\"\";animation:chessimals-power-frame .86s ease-out both}.chessimals-cell.has-capture-effect{animation:chessimals-capture-hit .78s ease-out both}.chessimals-cell.effect-eagle:before{background:linear-gradient(135deg,transparent 10%,rgba(255,255,255,.78) 48%,transparent 52%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.36),transparent 62%)}.chessimals-cell.effect-bull:before{background:repeating-linear-gradient(90deg,rgba(255,255,255,.34) 0 .16rem,transparent .16rem .34rem),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.38),transparent 62%)}.chessimals-cell.effect-kangaroo:before{border-radius:999px;background:radial-gradient(circle at 42% 44%,rgba(255,255,255,.58),transparent 18%),radial-gradient(circle at 58% 56%,rgba(var(--chessimals-capture-rgb),.4),transparent 64%)}.chessimals-cell.effect-lion:before{background:conic-gradient(from 0deg,transparent,rgba(255,255,255,.56),transparent,rgba(var(--chessimals-capture-rgb),.4),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.34),transparent 62%)}@keyframes chessimals-power-impact{0%{opacity:0;transform:scale(.54) rotate(0)}28%{opacity:1;transform:scale(.96) rotate(2deg)}to{opacity:0;transform:scale(1.3) rotate(8deg)}}@keyframes chessimals-power-frame{0%{opacity:0;transform:scale(.84)}34%{opacity:1;transform:scale(1.02)}to{opacity:0;transform:scale(1.16)}}@keyframes chessimals-capture-hit{0%,to{filter:saturate(1)}35%{filter:saturate(1.35) brightness(1.08)}}.chessimals-cell.is-moving-source .chessimals-piece{opacity:0}.chessimals-piece{position:relative;z-index:2;display:block;width:68%;height:74%;color:var(--chessimals-primary);--chessimals-piece-fill: var(--chessimals-piece-white-fill);--chessimals-piece-side: var(--chessimals-piece-white-side);--chessimals-piece-line: var(--chessimals-piece-white-line);--chessimals-piece-outline: rgba(82, 65, 46, .34);filter:var(--chessimals-piece-white-shadow)}.chessimals-piece.is-black{color:#fff;--chessimals-piece-fill: var(--chessimals-piece-black-fill);--chessimals-piece-side: var(--chessimals-piece-black-side);--chessimals-piece-line: var(--chessimals-piece-black-line);--chessimals-piece-outline: rgba(255, 255, 255, .22);filter:var(--chessimals-piece-black-shadow)}.chessimals-moving-piece{position:absolute;top:0;left:0;z-index:6;width:calc(100% / var(--board-size));height:calc(100% / var(--board-size));display:grid;place-items:center;pointer-events:none;transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%));animation:chessimals-piece-travel .36s cubic-bezier(.2,.82,.24,1) both}@keyframes chessimals-piece-travel{0%{transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%)) scale(1)}68%{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1.07)}to{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1)}}.chessimals-piece__side,.chessimals-piece__head,.chessimals-piece__collar,.chessimals-piece__neck,.chessimals-piece__base{position:absolute;display:block;left:50%;background:var(--chessimals-piece-fill);border:max(1px,1.25%) solid var(--chessimals-piece-outline);transform:translate(-50%)}.chessimals-piece__side{top:46%;z-index:0;width:58%;height:41%;border-radius:34% 34% 12% 12%;background:linear-gradient(96deg,var(--chessimals-piece-side) 0 34%,transparent 35%),var(--chessimals-piece-fill);clip-path:polygon(22% 0,78% 0,96% 100%,4% 100%);opacity:.92}.chessimals-piece__head{top:1%;z-index:4;width:48%;height:40%;border-radius:999px;background:radial-gradient(circle at 30% 22%,rgba(255,255,255,.72) 0 13%,transparent 14%),linear-gradient(135deg,rgba(255,255,255,.28) 0 34%,transparent 35%),var(--chessimals-piece-fill);box-shadow:inset -.18rem -.12rem #52412e0f,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece.is-black .chessimals-piece__head{box-shadow:inset .18rem -.12rem #ffffff0f,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece__collar{top:37%;z-index:5;width:72%;height:15%;border-radius:999px;background:linear-gradient(180deg,#f5cd77 0%,var(--chessimals-piece-gold) 55%,var(--chessimals-piece-gold-dark) 100%);border-color:color-mix(in srgb,var(--chessimals-piece-gold-dark) 72%,transparent);box-shadow:inset 0 .12rem #ffffff47,inset 0 -.08rem #462e1238,0 .08rem .18rem #462e1224}.chessimals-piece__neck{top:50%;z-index:2;width:52%;height:31%;clip-path:polygon(16% 0,84% 0,100% 100%,0 100%);background:linear-gradient(100deg,var(--chessimals-piece-side) 0 28%,transparent 29%),linear-gradient(180deg,var(--chessimals-piece-fill),color-mix(in srgb,var(--chessimals-piece-fill) 78%,var(--chessimals-piece-side)));box-shadow:inset -.12rem .1rem #ffffff14}.chessimals-piece__base{bottom:0;z-index:6;width:86%;height:17%;border-radius:.42rem .42rem .22rem .22rem;background:linear-gradient(100deg,var(--chessimals-piece-side) 0 18%,transparent 19%),linear-gradient(180deg,color-mix(in srgb,var(--chessimals-piece-fill) 92%,#ffffff),var(--chessimals-piece-fill));box-shadow:inset 0 .12rem #ffffff24,inset 0 -.1rem 0 var(--chessimals-piece-line)}.chessimals-target{width:16%;height:16%;border-radius:999px;background:var(--chessimals-move);opacity:.9;box-shadow:0 0 .9rem rgba(var(--chessimals-move-rgb),.42)}.chessimals-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.625rem}.chessimals-cards button{position:relative;isolation:isolate;display:grid;grid-template-rows:minmax(5.4rem,1fr) auto;gap:.5rem;place-items:stretch;min-height:8.15rem;padding:.55rem .55rem .7rem;border:.12rem solid rgba(var(--chessimals-magic-rgb),.54);border-radius:1.125rem;background:radial-gradient(circle at 50% 18%,rgba(255,255,255,.9),transparent 36%),linear-gradient(180deg,rgba(var(--chessimals-magic-rgb),.24),rgba(var(--chessimals-magic-deep),.08) 58%,transparent),var(--chessimals-panel);color:var(--chessimals-text);font:inherit;box-shadow:inset 0 0 0 .14rem #ffffff75,0 .55rem 1.2rem rgba(var(--chessimals-magic-rgb),.14);transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.chessimals-powers__heading{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.chessimals-powers p{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-powers__heading span{flex:0 0 auto;border-radius:999px;padding:.28rem .62rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-size:.78rem;font-weight:950}.chessimals-cards button.is-selected{border-color:var(--chessimals-magic-hot);background:radial-gradient(circle at 50% 16%,rgba(255,255,255,.42),transparent 30%),radial-gradient(circle at 50% 76%,rgba(var(--chessimals-magic-rgb),.2),transparent 56%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.2),#ffffff0a),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-magic-rgb),.28),0 0 1.35rem rgba(var(--chessimals-magic-rgb),.48),0 .9rem 2rem rgba(var(--chessimals-magic-rgb),.18);transform:translateY(-1px)}.chessimals-cards button.is-selected:before,.chessimals-cards button.is-selected:after{position:absolute;inset:-.5rem;z-index:0;border-radius:inherit;content:\"\";pointer-events:none}.chessimals-cards button>*{position:relative;z-index:1}.chessimals-cards button.is-selected:before{background:radial-gradient(circle at 18% 24%,rgba(var(--chessimals-magic-rgb),.88) 0 .08rem,transparent .1rem),radial-gradient(circle at 78% 20%,rgba(255,255,255,.86) 0 .07rem,transparent .09rem),radial-gradient(circle at 86% 62%,rgba(var(--chessimals-magic-rgb),.72) 0 .06rem,transparent .08rem),radial-gradient(circle at 28% 78%,rgba(255,245,111,.78) 0 .07rem,transparent .09rem),radial-gradient(circle at 54% 8%,rgba(255,255,255,.68) 0 .05rem,transparent .07rem);opacity:.8;animation:chessimalsMagicParticles 1.8s ease-in-out infinite}.chessimals-cards button.is-selected:after{background:conic-gradient(from 12deg,transparent 0 16deg,rgba(var(--chessimals-magic-rgb),.2) 16deg 22deg,transparent 22deg 44deg);opacity:.68;filter:blur(.04rem);animation:chessimalsMagicAura 3.2s linear infinite}.chessimals-cards button.is-used{opacity:.42}.chessimals-animal-face{display:grid;place-items:center;width:100%;min-height:5.4rem;overflow:hidden;border:.12rem solid rgba(var(--chessimals-magic-deep),.62);border-radius:.9rem;background:radial-gradient(circle at 50% 34%,rgba(255,255,255,.96),transparent 44%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.38),rgba(var(--chessimals-magic-deep),.14)),var(--chessimals-animal-face-bg);color:color-mix(in srgb,var(--chessimals-text) 92%,#000);box-shadow:inset 0 0 0 .12rem #ffffff7a,inset 0 -.18rem .45rem rgba(var(--chessimals-magic-deep),.14)}.chessimals-animal-face img{display:block;width:min(5.45rem,88%);height:min(5.45rem,88%);pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;object-fit:contain;transform:none;filter:var(--chessimals-animal-face-filter)}.chessimals-bot-avatar,.chessimals-challenge-intro__avatar{display:grid;overflow:hidden;place-items:center}.chessimals-bot-avatar img,.chessimals-challenge-intro__avatar img{display:block;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;object-fit:contain}.chessimals-cards button.is-selected .chessimals-animal-face,.chessimals-powers.is-ready .chessimals-cards button:not(.is-used) .chessimals-animal-face{color:color-mix(in srgb,var(--chessimals-text) 94%,#000)}.chessimals-powers.is-locked .chessimals-animal-face{filter:var(--chessimals-animal-face-locked-filter);opacity:.86}.chessimals-powers.is-locked .chessimals-animal-face img,.chessimals-cards button.is-used .chessimals-animal-face img{opacity:var(--chessimals-animal-face-locked-img-opacity)}.chessimals-power-uses{position:absolute;top:.5rem;right:.5rem;z-index:2;display:inline-grid;place-items:center;min-width:1.72rem;height:1.35rem;border-radius:999px;padding:0 .38rem;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.72rem;font-weight:1000;line-height:1;box-shadow:0 .35rem .9rem rgba(var(--chessimals-primary-rgb),.22)}.chessimals-cards strong{overflow:hidden;max-width:100%;align-self:center;font-size:clamp(.9rem,2.3vw,1.08rem);font-weight:950;line-height:1.05;text-align:center;text-overflow:ellipsis;white-space:nowrap}.chessimals-powers.is-locked .chessimals-cards{opacity:.68}.chessimals-powers.is-ready{border-color:rgba(var(--chessimals-magic-rgb),.46);box-shadow:0 0 0 1px rgba(var(--chessimals-magic-rgb),.12),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}.chessimals-powers.is-ready .chessimals-cards button:not(.is-used){animation:chessimalsPowerPulse 1.8s ease-in-out infinite}.chessimals-powers.is-unlock-pulse{animation:chessimalsPowersUnlocked 1.18s ease-out both}.chessimals-powers.is-unlock-pulse .chessimals-cards button:not(.is-used){animation:chessimalsPowerIgnite .76s ease-out both,chessimalsPowerPulse 1.8s ease-in-out .76s infinite}@keyframes chessimalsPowerPulse{0%,to{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}50%{box-shadow:0 0 1.4rem rgba(var(--chessimals-magic-rgb),.24)}}@keyframes chessimalsPowersUnlocked{0%{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}34%{box-shadow:0 0 0 .18rem rgba(var(--chessimals-magic-rgb),.28),0 0 2.2rem rgba(var(--chessimals-magic-rgb),.38),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.16)}to{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}}@keyframes chessimalsPowerIgnite{0%{transform:translateY(0) scale(.96);box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}42%{transform:translateY(-.08rem) scale(1.025);box-shadow:0 0 0 .14rem rgba(var(--chessimals-magic-rgb),.24),0 0 1.5rem rgba(var(--chessimals-magic-rgb),.46)}to{transform:translateY(0) scale(1);box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}}@keyframes chessimalsMagicParticles{0%,to{opacity:.54;transform:translateY(0) scale(.94)}50%{opacity:1;transform:translateY(-.18rem) scale(1.02)}}@keyframes chessimalsMagicAura{to{transform:rotate(1turn)}}.chessimals-actions{order:6;align-self:stretch;justify-self:stretch;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr));gap:.625rem;margin-top:1rem}.chessimals-shell--projection .chessimals-game{max-width:min(96vw,90rem)}.chessimals-shell--projection .chessimals-turn-card{padding:.875rem 1rem}.chessimals-shell--projection .chessimals-status,.chessimals-shell--projection .chessimals-actions,.chessimals-shell--projection .chessimals-online,.chessimals-shell--projection .chessimals-replay,.chessimals-shell--projection .chessimals-rematch-status{display:none}.chessimals-shell--projection .chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center}.chessimals-shell--projection .chessimals-board-wrap{--chessimals-board-radius: min(.625rem, 10px);width:min(96vw,82vh,58rem);max-width:none}.chessimals-shell--projection .chessimals-board-frame{flex-basis:auto;max-width:none}@media (min-width: 760px){.chessimals-game{gap:1rem}.chessimals-turn-card,.chessimals-status,.chessimals-arena,.chessimals-replay,.chessimals-result,.chessimals-actions{grid-column:1 / -1}.chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center;align-items:start;gap:.85rem}.chessimals-shell:not(.chessimals-shell--projection) .chessimals-board-frame{flex-basis:min(100%,clamp(28rem,calc(100vh - 22rem),50rem));width:min(100%,clamp(28rem,calc(100vh - 22rem),50rem));max-width:min(50rem,clamp(28rem,calc(100vh - 22rem),50rem))}.chessimals-powers{width:min(100%,clamp(28rem,calc(100vh - 22rem),50rem));align-content:center;grid-template-columns:minmax(11rem,.68fr) minmax(0,1fr);align-items:center;gap:.8rem;padding:.78rem}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr))}.chessimals-cards button{grid-template-rows:minmax(3.85rem,1fr) auto;min-height:5.85rem}.chessimals-animal-face{min-height:3.85rem}.chessimals-animal-face img{width:min(3.85rem,88%);height:min(3.85rem,88%)}.chessimals-powers p{-webkit-line-clamp:3}}.chessimals-rules{display:grid;gap:1.05rem;padding-top:.25rem}.chessimals-settings{display:grid;gap:.85rem;color:var(--chessimals-modal-text, var(--chessimals-text))}.chessimals-settings article{display:grid;gap:.65rem;padding:1rem;border:1px solid var(--chessimals-modal-border, rgba(var(--chessimals-primary-rgb), .2));border-radius:1.1rem;background:radial-gradient(circle at 14% 8%,color-mix(in srgb,var(--chessimals-modal-card, #ffffff) 82%,transparent),transparent 28%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),rgba(var(--chessimals-sky-rgb),.06)),var(--chessimals-modal-card-strong, var(--chessimals-elevated-strong));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--chessimals-modal-surface, #ffffff) 48%,transparent)}:host ::ng-deep ion-modal.chessimals-settings-modal val-modal-shell ion-toolbar{--background: var(--chessimals-modal-surface);--color: var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-settings-modal val-modal-shell ion-content{--background: var(--chessimals-modal-surface);color:var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-settings-modal val-modal-shell ion-button{--color: var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-settings-modal .chessimals-settings val-toggle-input ion-toggle{--track-background: rgba(var(--chessimals-primary-rgb), .14);--track-background-checked: var(--chessimals-primary);--handle-background: var(--chessimals-modal-card);--handle-background-checked: var(--chessimals-primary-contrast);color:var(--chessimals-modal-text);font-weight:900}:host ::ng-deep ion-modal.chessimals-settings-modal .chessimals-settings val-range-input ion-label{color:var(--chessimals-modal-text);font-weight:900}:host ::ng-deep ion-modal.chessimals-settings-modal .chessimals-settings val-range-input ion-range{--bar-background: rgba(var(--chessimals-primary-rgb), .14);--bar-background-active: var(--chessimals-primary);--bar-height: .32rem;--bar-border-radius: 999px;--knob-background: var(--chessimals-primary-contrast);--knob-size: 1.28rem;--pin-background: var(--chessimals-primary);--pin-color: var(--chessimals-primary-contrast);color:var(--chessimals-modal-text)}.chessimals-about{display:grid;justify-items:center;gap:1rem;color:var(--ion-text-color, var(--chessimals-text))}.chessimals-about__logo{display:block;width:min(25rem,88%);height:auto;object-fit:contain;object-position:center;filter:drop-shadow(0 .5rem .7rem rgba(46,58,44,.14))}.chessimals-about__thanks{color:var(--ion-text-color, var(--chessimals-text));font-size:1.08rem;font-weight:950;line-height:1.2;text-align:center}.chessimals-about__feedback{max-width:30rem}.chessimals-about p{margin:0;color:var(--ion-color-medium, var(--chessimals-muted));font-size:.95rem;font-weight:750;line-height:1.45;text-align:center}.chessimals-about dl{display:grid;width:100%;margin:0;gap:.65rem}.chessimals-about dl div{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem .95rem;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--ion-card-background, #fff)}.chessimals-about dt,.chessimals-about dd{margin:0}.chessimals-about dt{color:var(--ion-color-medium, var(--chessimals-muted));font-size:.78rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-about dd{color:var(--ion-text-color, var(--chessimals-text));font-size:.95rem;font-weight:950}.chessimals-rules__hero{display:block;width:100%;height:auto;object-fit:contain;border-radius:1.25rem;background:transparent;box-shadow:0 .85rem 1.8rem #2e3a2c1f}.chessimals-rules__powers,.chessimals-rules__note,.chessimals-rules__steps article{display:grid;align-items:start;gap:.75rem;border:1px solid var(--chessimals-modal-border, rgba(var(--chessimals-primary-rgb), .16));border-radius:1.25rem;background:var(--chessimals-modal-card, #ffffff);color:var(--chessimals-modal-text, var(--ion-text-color, #2f2a3a))}.chessimals-rules__section-title span{justify-self:start;border-radius:999px;padding:.24rem .55rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-rules__section-title{display:grid;gap:.35rem;padding-inline:0}.chessimals-rules__section-title strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.25}.chessimals-rules__steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem}.chessimals-rules__steps article{align-content:start;padding:.9rem}.chessimals-rules__steps article>img,.chessimals-rules__powers>img,.chessimals-rules__note>img{display:block;width:4.75rem;height:4.75rem;border-radius:1.15rem;object-fit:cover;box-shadow:0 0 0 .1rem rgba(var(--chessimals-sun-rgb),.68),0 .7rem 1.25rem #2e3a2c29}.chessimals-rules__powers,.chessimals-rules__note{grid-template-columns:auto minmax(0,1fr);padding:.95rem}.chessimals-rules__power-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem;margin-top:.35rem}.chessimals-rules__power-list span{display:grid;justify-items:center;align-content:center;gap:.32rem;min-width:0;min-height:8.1rem;border:1px solid var(--chessimals-modal-border, rgba(var(--chessimals-primary-rgb), .16));border-radius:1rem;padding:.8rem .52rem;background:radial-gradient(circle at 50% 0,color-mix(in srgb,var(--chessimals-modal-card, #ffffff) 78%,transparent),transparent 52%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),rgba(var(--chessimals-sun-rgb),.18)),var(--chessimals-modal-card-strong, #fff8df);color:var(--chessimals-modal-text, var(--chessimals-text));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--chessimals-modal-surface, #ffffff) 64%,transparent),0 .55rem 1.15rem var(--chessimals-modal-shadow, rgba(46, 58, 44, .12));font-size:.78rem;font-weight:950;line-height:1.05;text-align:center}.chessimals-rules__power-list strong,.chessimals-rules__power-list small{min-width:0}.chessimals-rules__power-list strong{font-size:.86rem;font-weight:950;line-height:1.08}.chessimals-rules__power-list small{color:var(--chessimals-muted);font-size:.69rem;font-weight:820;line-height:1.15}.chessimals-rules__power-list img{display:block;width:3.25rem;height:3.25rem;object-fit:contain;filter:drop-shadow(0 .25rem .35rem rgba(46,58,44,.16))}.chessimals-rules__note{border-color:rgba(var(--chessimals-sun-rgb),.34);background:linear-gradient(135deg,rgba(var(--chessimals-sun-rgb),.1),rgba(var(--chessimals-primary-rgb),.04)),var(--chessimals-modal-card, #ffffff)}.chessimals-rules article>span{display:grid;place-items:center;width:2rem;height:2rem;border-radius:999px;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-weight:950}.chessimals-rules article>div{display:grid;min-width:0;gap:.35rem}.chessimals-rules h3,.chessimals-rules p,.chessimals-rules ul{margin:0}.chessimals-rules h3{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.2}.chessimals-rules p,.chessimals-rules li{color:var(--chessimals-modal-muted, var(--ion-color-medium, #6f6a7a));font-size:.88rem;font-weight:760;line-height:1.5}.chessimals-rules ul{display:grid;gap:.45rem;padding-left:1.15rem}.chessimals-primary,.chessimals-secondary{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:3.625rem;border-radius:999px;font:inherit;font-weight:950}.chessimals-primary{border:0;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 1.125rem 2.8rem rgba(var(--chessimals-primary-rgb),.28)}.chessimals-secondary{border:1px solid var(--chessimals-border);background:transparent;color:var(--chessimals-text)}.chessimals-primary.is-working,.chessimals-secondary.is-working{cursor:wait;opacity:.82}.chessimals-button-spinner{width:1rem;height:1rem;flex:0 0 auto;border:.14rem solid currentColor;border-right-color:transparent;border-radius:999px;animation:chessimals-spin .72s linear infinite}@media (max-width: 560px){.chessimals-home-actions{grid-template-columns:1fr}.chessimals-home-action{min-height:0}.chessimals-rules__steps,.chessimals-rules__powers,.chessimals-rules__note{grid-template-columns:1fr}.chessimals-rules__power-list{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-size,.chessimals-mode,.chessimals-actions,.chessimals-play-options .chessimals-nightmare,.chessimals-challenge-cta,.chessimals-path-cta,.chessimals-path-hero,.chessimals-path-grid,.chessimals-path-highlights,.chessimals-path-rings,.chessimals-path-stats{grid-template-columns:1fr}.chessimals-path-hero{justify-items:start}.chessimals-path-hero__art{width:6.25rem;height:6.25rem}.chessimals-path-cta__action{justify-self:stretch;width:100%}.chessimals-path-hero__medal{justify-self:stretch;width:100%;min-height:5.5rem}.chessimals-path-bars span{grid-template-columns:minmax(0,1fr) auto}.chessimals-path-bars i{grid-column:1 / -1;order:3}.chessimals-challenge-cta__actions,.chessimals-challenge-cta__rival{min-width:0}.chessimals-challenge-hero,.chessimals-challenge-focus{grid-template-columns:1fr}.chessimals-challenge-card{padding:.85rem}.chessimals-challenge-card__stats{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-game{gap:.55rem}.chessimals-turn-card{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.5rem;min-height:0;border-radius:.95rem;padding:.5rem}.chessimals-turn-card__copy{gap:.1rem}.chessimals-turn-card__chip{max-width:100%;padding:.18rem .5rem;font-size:.6rem;letter-spacing:.045em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-turn-card strong{font-size:clamp(.92rem,4.4vw,1.12rem);line-height:1.08}.chessimals-turn-card p{display:-webkit-box;overflow:hidden;font-size:.72rem;line-height:1.2;-webkit-box-orient:vertical;-webkit-line-clamp:1}.chessimals-player-strip{width:auto;max-width:none;min-width:0;padding:.25rem}.chessimals-player-strip__avatar{flex:0 0 1.8rem;width:1.8rem;height:1.8rem;aspect-ratio:1 / 1}:host ::ng-deep .chessimals-player-strip .chessimals-turn-avatar{width:1.8rem;min-width:1.8rem;height:1.8rem}.chessimals-player-strip__text{display:none}.chessimals-status{grid-template-columns:repeat(3,minmax(0,1fr));gap:.3rem}.chessimals-status div{gap:.14rem;min-height:2.2rem;border-radius:.82rem;padding:.34rem .3rem}.chessimals-status small{font-size:.58rem;line-height:1.05}.chessimals-status strong{font-size:clamp(.78rem,3.2vw,.94rem);line-height:1.05}.chessimals-challenge-live{grid-template-columns:1fr;gap:.45rem;padding:.55rem}.chessimals-challenge-live__rival>.chessimals-bot-avatar{width:2.35rem;height:2.35rem;font-size:1.15rem}.chessimals-challenge-live__rival p{-webkit-line-clamp:1}.chessimals-challenge-live__metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:.3rem}.chessimals-challenge-live__metrics span{min-height:2.35rem;padding:.32rem .36rem}.chessimals-challenge-live__metrics small{font-size:.56rem}.chessimals-challenge-live__metrics b{font-size:.82rem}.chessimals-challenge-intro{padding:.55rem}.chessimals-challenge-intro__card{gap:.42rem;width:min(15.5rem,94%);padding:.6rem}.chessimals-challenge-intro__avatar{width:3.05rem;height:3.05rem;font-size:1.62rem}.chessimals-challenge-intro__copy strong{font-size:1.02rem}.chessimals-challenge-intro__copy p{font-size:.72rem;-webkit-line-clamp:1}.chessimals-challenge-intro__facts b{font-size:.74rem}.chessimals-challenge-intro .chessimals-primary{min-height:2.15rem}.chessimals-tip,.chessimals-result,.chessimals-replay,.chessimals-online-status,.chessimals-tutorial{gap:.2rem;border-radius:1rem;padding:.7rem .75rem}.chessimals-tip strong,.chessimals-result strong,.chessimals-replay strong,.chessimals-tutorial strong{font-size:.95rem}.chessimals-tip p,.chessimals-result p{font-size:.9rem;line-height:1.28}.chessimals-result__stats{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-replay,.chessimals-tutorial{grid-template-columns:1fr}.chessimals-replay__actions{justify-content:stretch}.chessimals-replay__actions .chessimals-secondary{flex:1 1 8rem}.chessimals-arena{gap:.5rem}.chessimals-board-wrap{width:100%;margin-inline:0;padding:0}.chessimals-board-frame{width:100%}.chessimals-powers{gap:.5rem;border-radius:1rem;padding:.55rem}.chessimals-powers__heading{gap:.4rem}.chessimals-powers h2{font-size:1rem}.chessimals-powers__heading span{padding:.22rem .48rem;font-size:.68rem}.chessimals-powers p{font-size:.78rem;line-height:1.2;-webkit-line-clamp:1}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem}.chessimals-cards button{grid-template-rows:minmax(3.65rem,1fr) auto;gap:.3rem;min-height:5.4rem;border-radius:.85rem;padding:.3rem .24rem .42rem}.chessimals-animal-face{min-height:3.65rem;border-radius:.68rem}.chessimals-animal-face img{width:min(3.55rem,92%);height:min(3.55rem,92%)}.chessimals-cards strong{font-size:clamp(.64rem,2.8vw,.78rem)}.chessimals-board{border-radius:var(--chessimals-board-radius)}.chessimals-cell-coordinate{font-size:.58rem}}@media (prefers-reduced-motion: reduce){.chessimals-cell.is-capture,.chessimals-cell.is-capture:before,.chessimals-cell.is-capture:after,.chessimals-cell.has-move-effect,.chessimals-cell.has-move-effect:before,.chessimals-cell.has-move-effect:after,.chessimals-cell.has-capture-effect,.chessimals-moving-piece,.chessimals-challenge-intro,.chessimals-status__score.is-pop{animation:none!important}.chessimals-moving-piece{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%))}}\n"], dependencies: [{ kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: MiniGameCalloutComponent, selector: "val-mini-game-callout", inputs: ["props"] }, { kind: "component", type: MiniGameScorePopComponent, selector: "val-mini-game-score-pop", inputs: ["props"] }, { kind: "component", type: ModalLayoutComponent, selector: "val-modal-layout", inputs: ["title", "subtitle", "closeLabel", "showClose", "actions", "actionsAlign", "footer", "footerClass"], outputs: ["close", "actionClick"] }, { kind: "component", type: RangeInputComponent, selector: "val-range-input", inputs: ["props"], outputs: ["rangeChange"] }, { kind: "component", type: ToggleInputComponent, selector: "val-toggle-input", inputs: ["preset", "props"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: UserAvatarComponent, selector: "val-user-avatar", inputs: ["props"], outputs: ["onClick"] }] }); }
|
|
4797
4857
|
}
|
|
4798
4858
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChessimalsGameComponent, decorators: [{
|
|
4799
4859
|
type: Component,
|
|
@@ -4915,7 +4975,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4915
4975
|
/>
|
|
4916
4976
|
</label>
|
|
4917
4977
|
<button
|
|
4918
|
-
class="chessimals-
|
|
4978
|
+
class="chessimals-primary"
|
|
4919
4979
|
type="button"
|
|
4920
4980
|
[class.is-working]="onlineAction() === 'join'"
|
|
4921
4981
|
[attr.aria-busy]="onlineAction() === 'join'"
|
|
@@ -4946,7 +5006,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4946
5006
|
</div>
|
|
4947
5007
|
</div>
|
|
4948
5008
|
<div class="chessimals-history__list">
|
|
4949
|
-
@for (entry of onlineHistory().slice(0,
|
|
5009
|
+
@for (entry of onlineHistory().slice(0, 4); track entry.gameId) {
|
|
4950
5010
|
<button type="button" class="chessimals-history__item" (click)="openHistoryGame(entry)">
|
|
4951
5011
|
<span>
|
|
4952
5012
|
<strong>{{ entry.gameId }}</strong>
|
|
@@ -5810,7 +5870,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
5810
5870
|
|
|
5811
5871
|
<ion-modal
|
|
5812
5872
|
[isOpen]="isPlayOptionsModalOpen()"
|
|
5813
|
-
cssClass="val-modal-adaptive chessimals-themed-modal chessimals-play-modal"
|
|
5873
|
+
cssClass="val-modal-adaptive chessimals-themed-modal chessimals-play-options-modal"
|
|
5814
5874
|
(didDismiss)="handlePlayOptionsModalDismissed()"
|
|
5815
5875
|
>
|
|
5816
5876
|
<ng-template>
|
|
@@ -6104,7 +6164,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
6104
6164
|
>
|
|
6105
6165
|
<ng-template>
|
|
6106
6166
|
<val-modal-layout
|
|
6107
|
-
|
|
6167
|
+
title=""
|
|
6108
6168
|
[closeLabel]="t('close')"
|
|
6109
6169
|
[actions]="aboutActions()"
|
|
6110
6170
|
actionsAlign="end"
|
|
@@ -6156,7 +6216,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
6156
6216
|
/>
|
|
6157
6217
|
</ng-template>
|
|
6158
6218
|
</ion-modal>
|
|
6159
|
-
`, styles: [":host{--chessimals-panel: #ffffff;--chessimals-surface: #fffaf1;--chessimals-elevated: rgba(255, 255, 255, .72);--chessimals-elevated-soft: rgba(255, 255, 255, .46);--chessimals-elevated-strong: rgba(255, 255, 255, .86);--chessimals-glass-highlight: rgba(255, 255, 255, .58);--chessimals-border: rgba(46, 58, 44, .18);--chessimals-text: #2e3a2c;--chessimals-muted: #51643d;--chessimals-soft: rgba(111, 122, 60, .1);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-selected: #37f28a;--chessimals-selected-rgb: 55, 242, 138;--chessimals-magic: #f7d45a;--chessimals-magic-rgb: 247, 212, 90;--chessimals-magic-hot: #fff56f;--chessimals-magic-deep: #b77a18;display:block;font-size:var(--val-mini-games-font-size, 1rem)}:host-context(body.font-small){--val-mini-games-font-size: .875rem}:host-context(body.font-large){--val-mini-games-font-size: 1.1875rem}.chessimals-shell{--chessimals-panel: #ffffff;--chessimals-surface: #fffaf1;--chessimals-elevated: rgba(255, 255, 255, .72);--chessimals-elevated-soft: rgba(255, 255, 255, .46);--chessimals-elevated-strong: rgba(255, 255, 255, .86);--chessimals-glass-highlight: rgba(255, 255, 255, .58);--chessimals-border: rgba(46, 58, 44, .18);--chessimals-text: #2e3a2c;--chessimals-muted: #51643d;--chessimals-soft: rgba(111, 122, 60, .1);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-selected: #37f28a;--chessimals-selected-rgb: 55, 242, 138;--chessimals-magic: #f7d45a;--chessimals-magic-rgb: 247, 212, 90;--chessimals-magic-hot: #fff56f;--chessimals-magic-deep: #b77a18;--chessimals-warning: #f4c542;--chessimals-warning-rgb: 244, 197, 66;--chessimals-move: var(--chessimals-sky);--chessimals-move-rgb: var(--chessimals-sky-rgb);--chessimals-capture: #1fcdb3;--chessimals-capture-rgb: 31, 205, 179;--chessimals-last: #8c6b4f;--chessimals-last-rgb: 140, 107, 79;--chessimals-cell-light: #f3f4e8;--chessimals-cell-dark: #7f944d;--chessimals-board-shadow: rgba(46, 58, 44, .14);--chessimals-piece-white-fill: #ffffff;--chessimals-piece-white-side: #f3eadb;--chessimals-piece-white-line: rgba(82, 65, 46, .12);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(84, 62, 34, .52)) drop-shadow(0 .18rem .12rem rgba(72, 58, 36, .22)) drop-shadow(0 .34rem .42rem rgba(72, 58, 36, .22));--chessimals-piece-black-fill: #242936;--chessimals-piece-black-side: #171b25;--chessimals-piece-black-line: rgba(255, 255, 255, .1);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .34)) drop-shadow(0 .18rem .1rem rgba(255, 255, 255, .12)) drop-shadow(0 .32rem .42rem rgba(0, 0, 0, .36));--chessimals-piece-gold: #c79a42;--chessimals-piece-gold-dark: #8a5f22;--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-inner-bg: #ffffff;--chessimals-animal-face-border: rgba(46, 58, 44, .12);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(46, 58, 44, .18));--chessimals-animal-face-locked-filter: grayscale(.2) saturate(.72);--chessimals-animal-face-locked-img-opacity: .72;display:grid;gap:1.125rem;width:100%;max-width:min(100%,60rem);margin:0 auto;color:var(--chessimals-text)}@media (prefers-color-scheme: dark){.chessimals-shell{--chessimals-panel: #172116;--chessimals-surface: #0f170f;--chessimals-elevated: rgba(255, 255, 255, .08);--chessimals-elevated-soft: rgba(255, 255, 255, .05);--chessimals-elevated-strong: rgba(255, 255, 255, .12);--chessimals-glass-highlight: rgba(255, 255, 255, .08);--chessimals-border: rgba(242, 230, 213, .2);--chessimals-text: #f6f3e9;--chessimals-muted: #c8cfb1;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #f3f4e8;--chessimals-cell-dark: #7f944d;--chessimals-board-shadow: rgba(0, 0, 0, .34);--chessimals-animal-face-border: rgba(242, 230, 213, .24)}}.chessimals-resume-splash{order:0;position:fixed;inset:0;z-index:1000;display:grid;place-items:center;align-content:center;gap:.65rem;padding:1.5rem;text-align:center;color:var(--chessimals-text);background:radial-gradient(circle at 50% 42%,rgba(var(--chessimals-primary-rgb),.18),transparent 22rem),color-mix(in srgb,var(--chessimals-panel) 92%,transparent);backdrop-filter:blur(.9rem)}.chessimals-resume-splash__logo{display:block;width:clamp(5.8rem,20vw,7.2rem);height:auto;animation:chessimals-resume-pulse 1.2s ease-in-out infinite;filter:drop-shadow(0 .8rem 1.2rem rgba(var(--ion-color-dark-rgb, 47, 42, 58),.18))}.chessimals-resume-splash strong{font-size:clamp(1.55rem,5vw,2.4rem);font-weight:950;line-height:1.05}.chessimals-resume-splash p{max-width:24rem;margin:0;color:var(--chessimals-muted);font-size:1rem;line-height:1.35}@keyframes chessimals-resume-pulse{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-.25rem) scale(1.04)}}@keyframes chessimals-spin{to{transform:rotate(360deg)}}@keyframes chessimals-online-pulse{0%,to{transform:scale(1);opacity:.78}50%{transform:scale(1.22);opacity:1}}:host-context(html.ion-palette-dark) .chessimals-shell,:host-context([data-theme=\"dark\"]) .chessimals-shell{--chessimals-panel: #172116;--chessimals-surface: #0f170f;--chessimals-elevated: rgba(255, 255, 255, .08);--chessimals-elevated-soft: rgba(255, 255, 255, .05);--chessimals-elevated-strong: rgba(255, 255, 255, .12);--chessimals-glass-highlight: rgba(255, 255, 255, .08);--chessimals-border: rgba(246, 227, 213, .22);--chessimals-text: #f6f3e9;--chessimals-muted: #c8cfb1;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #e8eadc;--chessimals-cell-dark: #5f7040;--chessimals-board-shadow: rgba(0, 0, 0, .34);--chessimals-capture: #66f2d7;--chessimals-capture-rgb: 102, 242, 215;--chessimals-last: #cdbe9b;--chessimals-last-rgb: 205, 190, 155;--chessimals-piece-white-fill: #fffaff;--chessimals-piece-white-side: #f0e5d4;--chessimals-piece-white-line: rgba(82, 65, 46, .12);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(84, 62, 34, .48)) drop-shadow(0 .18rem .12rem rgba(0, 0, 0, .24)) drop-shadow(0 .34rem .42rem rgba(0, 0, 0, .3));--chessimals-piece-black-fill: #202633;--chessimals-piece-black-side: #111620;--chessimals-piece-black-line: rgba(255, 255, 255, .12);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .34)) drop-shadow(0 .18rem .1rem rgba(255, 255, 255, .14)) drop-shadow(0 .34rem .44rem rgba(0, 0, 0, .52));--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-inner-bg: #ffffff;--chessimals-animal-face-border: rgba(242, 230, 213, .24);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(0, 0, 0, .22));--chessimals-animal-face-locked-filter: grayscale(.32) saturate(.72);--chessimals-animal-face-locked-img-opacity: .58}.chessimals-hero{display:grid;gap:.75rem;justify-items:center;overflow:hidden;border-radius:1.75rem;padding:clamp(1.25rem,5vw,2.5rem);background:radial-gradient(circle at 18% 12%,rgba(255,255,255,.92),transparent 20%),linear-gradient(135deg,#fdf8ee,#fff 40%,#edf3df);color:var(--chessimals-text);text-align:center;border:1px solid var(--chessimals-border)}:host-context(html.ion-palette-dark) .chessimals-hero,:host-context([data-theme=\"dark\"]) .chessimals-hero{background:radial-gradient(circle at 18% 12%,rgba(255,255,255,.08),transparent 22%),linear-gradient(135deg,#111a10,#172116 48%,#0f170f);color:var(--chessimals-text);border-color:#f6e3d538}.chessimals-hero__logo{display:grid;place-items:center;gap:.35rem;width:min(27rem,86vw);max-width:100%}.chessimals-hero__logo img{display:block;height:auto;object-fit:contain;border-radius:0}.chessimals-hero__emblem{width:min(12.25rem,48vw);margin-top:.2rem;transform:translateY(.2rem)}.chessimals-hero__wordmark{width:min(21rem,76vw)}.chessimals-hero p,.chessimals-howto p,.chessimals-tip p,.chessimals-result p,.chessimals-powers p{margin:0;line-height:1.45}.chessimals-powers{display:grid;gap:1rem;border:1px solid var(--chessimals-border);border-radius:1.625rem;padding:clamp(1rem,4vw,1.5rem);background:var(--chessimals-panel)}.chessimals-game{display:grid;gap:.875rem}.chessimals-panel{display:grid;gap:1.125rem}.chessimals-home-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.875rem}.chessimals-home-action{display:grid;justify-items:start;gap:.68rem;min-height:9.6rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:1.25rem;padding:1.15rem 1rem 1.05rem;background:radial-gradient(circle at 18% 10%,rgba(255,255,255,.74),transparent 22%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),rgba(var(--chessimals-secondary-rgb),.08)),var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-home-action--play{border-color:rgba(var(--chessimals-primary-rgb),.46);background:radial-gradient(circle at 18% 10%,rgba(255,255,255,.82),transparent 22%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.22),rgba(var(--chessimals-secondary-rgb),.12)),var(--chessimals-panel)}.chessimals-mode-icon{display:block;width:4.45rem;height:4.45rem;border-radius:1rem;object-fit:cover;background:rgba(var(--chessimals-sun-rgb),.16);box-shadow:0 0 0 1px rgba(var(--chessimals-primary-rgb),.14),0 .55rem 1rem rgba(var(--chessimals-shadow-rgb),.12)}.chessimals-home-action strong{font-size:clamp(1.1rem,3vw,1.45rem);font-weight:1000;line-height:1.05}.chessimals-home-action small{color:var(--chessimals-muted);font-size:.88rem;font-weight:900;line-height:1.3}.chessimals-options{border:1px solid var(--chessimals-border);border-radius:1.125rem;padding:.35rem;background:var(--chessimals-panel)}.chessimals-options summary{display:flex;align-items:center;justify-content:space-between;gap:.75rem;min-height:3.25rem;padding:.65rem .8rem;color:var(--chessimals-text);cursor:pointer;list-style:none}.chessimals-options summary::-webkit-details-marker{display:none}.chessimals-options summary:after{content:\"+\";display:grid;place-items:center;flex:0 0 auto;width:1.8rem;height:1.8rem;border-radius:999px;background:var(--chessimals-soft);color:var(--chessimals-primary);font-weight:950}.chessimals-options[open] summary:after{content:\"-\"}.chessimals-options summary strong,.chessimals-options summary span{display:block}.chessimals-options summary strong{font-weight:950}.chessimals-options summary span{color:var(--chessimals-muted);font-size:.84rem;font-weight:800}.chessimals-options>:not(summary){margin:.5rem}.chessimals-play-options{display:grid;gap:1.05rem;color:var(--chessimals-text)}.chessimals-play-options__group{display:grid;gap:.62rem}.chessimals-play-options__group h3{margin:0;color:var(--chessimals-text);font-size:.9rem;font-weight:950;line-height:1.15}.chessimals-play-options .chessimals-size button,.chessimals-play-options .chessimals-mode button,.chessimals-play-options .chessimals-nightmare button,.chessimals-play-options .chessimals-bots button{position:relative;overflow:hidden;min-height:4.75rem;padding:.78rem 2.1rem .78rem .9rem;border:1px solid rgba(var(--chessimals-primary-rgb),.2);border-radius:1.08rem;background:radial-gradient(circle at 16% 8%,rgba(255,255,255,.7),transparent 24%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),rgba(var(--chessimals-secondary-rgb),.05)),var(--chessimals-panel);color:var(--chessimals-text);box-shadow:inset 0 0 0 1px var(--chessimals-glass-highlight)}.chessimals-play-options .chessimals-size button.is-selected,.chessimals-play-options .chessimals-mode button.is-selected,.chessimals-play-options .chessimals-nightmare button.is-selected,.chessimals-play-options .chessimals-bots button.is-selected{border-color:var(--chessimals-primary);background:radial-gradient(circle at 16% 8%,rgba(255,255,255,.78),transparent 25%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.23),rgba(var(--chessimals-secondary-rgb),.13)),var(--chessimals-panel);box-shadow:0 0 0 .16rem rgba(var(--chessimals-primary-rgb),.18),0 .85rem 1.8rem rgba(var(--chessimals-primary-rgb),.16)}.chessimals-option-check{position:absolute;top:.65rem;right:.65rem;width:.72rem;height:.72rem;border:2px solid rgba(var(--chessimals-primary-rgb),.3);border-radius:999px;background:var(--chessimals-panel)}.is-selected>.chessimals-option-check{border-color:var(--chessimals-primary);background:var(--chessimals-primary);box-shadow:0 0 0 .28rem rgba(var(--chessimals-primary-rgb),.13)}.chessimals-play-options .chessimals-nightmare{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem}.chessimals-play-options .chessimals-nightmare button{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-areas:\"icon title\" \"icon body\";column-gap:.55rem;row-gap:.12rem;align-content:center;text-align:left}.chessimals-play-options .chessimals-nightmare strong{grid-area:title;align-self:end;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-play-options .chessimals-nightmare small{grid-area:body;color:var(--chessimals-muted);font-size:.72rem;font-weight:800;line-height:1.15}.chessimals-nightmare__icon{grid-area:icon;display:grid;place-items:center;width:2.35rem;height:2.35rem;overflow:hidden;border-radius:.8rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-weight:1000;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-nightmare__icon img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-play-options .chessimals-nightmare button.is-selected .chessimals-nightmare__icon{background:rgba(var(--chessimals-secondary-rgb),.2);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.24)}.chessimals-play-options .chessimals-difficulty{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem}.chessimals-play-options .chessimals-difficulty button{border:1px solid rgba(var(--chessimals-primary-rgb),.2);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.06),rgba(var(--chessimals-secondary-rgb),.04)),var(--chessimals-panel);color:var(--chessimals-text);box-shadow:inset 0 0 0 1px var(--chessimals-glass-highlight)}.chessimals-play-options .chessimals-difficulty button.is-selected{border-color:var(--chessimals-primary);background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 0 0 .16rem rgba(var(--chessimals-primary-rgb),.18),0 .72rem 1.25rem rgba(var(--chessimals-primary-rgb),.16)}.chessimals-play-options .chessimals-bots button>.chessimals-bot-avatar{width:2.45rem;height:2.45rem;border-radius:.8rem;background:rgba(var(--chessimals-primary-rgb),.12)}.chessimals-play-options .chessimals-bots button.is-selected>.chessimals-bot-avatar{background:rgba(var(--chessimals-secondary-rgb),.2);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.24)}.chessimals-play-modal{--chessimals-panel: var(--chessimals-modal-card, #ffffff);--chessimals-elevated: var(--chessimals-modal-card-strong, rgba(255, 255, 255, .72));--chessimals-elevated-soft: color-mix(in srgb, var(--chessimals-modal-card, #ffffff) 74%, transparent);--chessimals-elevated-strong: var(--chessimals-modal-card-strong, rgba(255, 255, 255, .86));--chessimals-glass-highlight: color-mix(in srgb, var(--chessimals-modal-surface, #ffffff) 58%, transparent);--chessimals-border: var(--chessimals-modal-border, rgba(46, 58, 44, .18));--chessimals-text: var(--chessimals-modal-text, #2e3a2c);--chessimals-muted: var(--chessimals-modal-muted, #51643d);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--background: var(--chessimals-primary);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--border-color: var(--chessimals-primary);--border-radius: 999px;--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast);--val-modal-footer-gap: .7rem}.chessimals-rules-modal{--chessimals-border: var(--chessimals-modal-border, rgba(46, 58, 44, .18));--chessimals-text: var(--chessimals-modal-text, #2e3a2c);--chessimals-muted: var(--chessimals-modal-muted, #51643d);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--ion-background-color: var(--chessimals-modal-surface, #ffffff);--ion-card-background: var(--chessimals-modal-card, #ffffff);--ion-text-color: var(--chessimals-text);--val-modal-footer-gap: .7rem}.chessimals-confirm-modal{--chessimals-border: var(--chessimals-modal-border, rgba(46, 58, 44, .18));--chessimals-text: var(--chessimals-modal-text, #2e3a2c);--chessimals-muted: var(--chessimals-modal-muted, #51643d);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--ion-background-color: var(--chessimals-modal-surface, #ffffff);--ion-card-background: var(--chessimals-modal-card, #ffffff);--ion-text-color: var(--chessimals-text);--val-modal-footer-gap: .7rem}:host ::ng-deep ion-modal.chessimals-themed-modal{--chessimals-modal-surface: #ffffff;--chessimals-modal-card: #ffffff;--chessimals-modal-card-strong: #f8fbf5;--chessimals-modal-text: #2e3a2c;--chessimals-modal-muted: #5f6f50;--chessimals-modal-border: rgba(46, 58, 44, .18);--chessimals-modal-shadow: rgba(46, 58, 44, .14);--ion-background-color: var(--chessimals-modal-surface);--ion-card-background: var(--chessimals-modal-card);--ion-text-color: var(--chessimals-modal-text);--ion-color-dark: var(--chessimals-modal-text);--ion-color-dark-rgb: 46, 58, 44;--ion-color-medium: var(--chessimals-modal-muted);--ion-color-medium-rgb: 95, 111, 80;--ion-border-color: var(--chessimals-modal-border);--ion-color-primary: var(--chessimals-primary);--ion-color-primary-rgb: var(--chessimals-primary-rgb);--ion-color-primary-contrast: var(--chessimals-primary-contrast);--ion-color-primary-shade: #285f36;--ion-color-primary-tint: #43804f}@media (prefers-color-scheme: dark){:host ::ng-deep ion-modal.chessimals-themed-modal{--chessimals-modal-surface: #121811;--chessimals-modal-card: #182217;--chessimals-modal-card-strong: #1d2a1c;--chessimals-modal-text: #f6f3e9;--chessimals-modal-muted: #c8cfb1;--chessimals-modal-border: rgba(246, 227, 213, .2);--chessimals-modal-shadow: rgba(0, 0, 0, .36);--ion-color-dark-rgb: 246, 243, 233;--ion-color-medium-rgb: 200, 207, 177}}:host-context(html.ion-palette-dark) ::ng-deep ion-modal.chessimals-themed-modal,:host-context([data-theme=\"dark\"]) ::ng-deep ion-modal.chessimals-themed-modal{--chessimals-modal-surface: #121811;--chessimals-modal-card: #182217;--chessimals-modal-card-strong: #1d2a1c;--chessimals-modal-text: #f6f3e9;--chessimals-modal-muted: #c8cfb1;--chessimals-modal-border: rgba(246, 227, 213, .2);--chessimals-modal-shadow: rgba(0, 0, 0, .36);--ion-color-dark-rgb: 246, 243, 233;--ion-color-medium-rgb: 200, 207, 177}:host ::ng-deep ion-modal.chessimals-themed-modal val-modal-shell ion-toolbar,:host ::ng-deep ion-modal.chessimals-themed-modal .val-modal-layout__footer{--background: var(--chessimals-modal-surface);--color: var(--chessimals-modal-text);background:var(--chessimals-modal-surface);color:var(--chessimals-modal-text);border-color:var(--chessimals-modal-border)}:host ::ng-deep ion-modal.chessimals-themed-modal val-modal-shell ion-content{--background: var(--chessimals-modal-surface);color:var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-themed-modal val-modal-shell ion-button{--color: var(--chessimals-modal-text);--color-hover: var(--chessimals-modal-text);--color-activated: var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-themed-modal val-display ion-text,:host ::ng-deep ion-modal.chessimals-themed-modal val-title ion-text{color:var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-themed-modal val-button.val-modal-layout__button ion-button,:host ::ng-deep ion-modal.chessimals-themed-modal val-button.chessimals-rules__action ion-button{min-height:3.45rem;font-weight:950;--border-radius: 999px;--padding-bottom: .85rem;--padding-end: 1.35rem;--padding-start: 1.35rem;--padding-top: .85rem}:host ::ng-deep ion-modal.chessimals-themed-modal val-button.val-modal-layout__button ion-button.button-solid,:host ::ng-deep ion-modal.chessimals-themed-modal val-button.chessimals-rules__action--primary ion-button{--background: var(--chessimals-primary);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast)}:host ::ng-deep ion-modal.chessimals-themed-modal val-button.val-modal-layout__button ion-button.button-outline,:host ::ng-deep ion-modal.chessimals-themed-modal val-button.chessimals-rules__action--secondary ion-button{--background: transparent;--border-color: var(--chessimals-modal-border);--border-width: 1px;--color: var(--chessimals-modal-text);--color-activated: var(--chessimals-modal-text);--color-hover: var(--chessimals-modal-text)}.chessimals-play-modal__actions,.chessimals-rules__actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.7rem;width:100%}.chessimals-play-modal__actions .chessimals-primary,.chessimals-play-modal__actions .chessimals-secondary{min-width:min(100%,12.5rem);padding:.85rem 1.35rem}.chessimals-rules__action{min-width:min(100%,12.5rem)}:host ::ng-deep ion-modal.chessimals-rules-modal val-button.chessimals-rules__action ion-button{min-height:3.45rem;font-weight:950;--border-radius: 999px;--padding-bottom: .85rem;--padding-end: 1.35rem;--padding-start: 1.35rem;--padding-top: .85rem}:host ::ng-deep ion-modal.chessimals-rules-modal val-button.chessimals-rules__action--primary ion-button{--background: var(--chessimals-primary);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast)}:host ::ng-deep ion-modal.chessimals-rules-modal val-button.chessimals-rules__action--secondary ion-button{--border-color: rgba(46, 58, 44, .24);--border-width: 1px;--color: var(--chessimals-text);--color-activated: var(--chessimals-text);--color-hover: var(--chessimals-text)}:host ::ng-deep ion-modal.chessimals-confirm-modal val-button.val-modal-layout__button ion-button{min-height:3.45rem;font-weight:950;--border-radius: 999px;--padding-bottom: .85rem;--padding-end: 1.35rem;--padding-start: 1.35rem;--padding-top: .85rem}:host ::ng-deep ion-modal.chessimals-confirm-modal val-button.val-modal-layout__button ion-button[data-testid=confirm]{--background: var(--chessimals-primary);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast)}:host ::ng-deep ion-modal.chessimals-confirm-modal val-button.val-modal-layout__button ion-button[data-testid=cancel]{--border-color: rgba(46, 58, 44, .24);--border-width: 1px;--color: var(--chessimals-text);--color-activated: var(--chessimals-text);--color-hover: var(--chessimals-text)}.chessimals-online{display:grid;gap:.875rem;border:1px solid var(--chessimals-border);border-radius:1.375rem;padding:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--chessimals-panel)}.chessimals-online--waiting{order:2;border-color:rgba(var(--chessimals-primary-rgb),.34)}.chessimals-online h2,.chessimals-online p{margin:0}.chessimals-online h2{font-size:1.1rem;font-weight:950}.chessimals-online p{color:var(--chessimals-muted);line-height:1.4}.chessimals-online__create,.chessimals-online__join{display:grid;gap:.55rem}.chessimals-online__create small{color:var(--chessimals-muted);font-weight:800;line-height:1.35}.chessimals-online__join{border-top:1px solid var(--chessimals-border);padding-top:.85rem}.chessimals-online__join>strong{font-size:.95rem;font-weight:950}.chessimals-online__error{border-radius:.875rem;padding:.7rem .8rem;background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12);color:var(--ion-color-danger, #eb445a)!important;font-weight:800}.chessimals-online__loading{display:flex;align-items:center;gap:.625rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:999px;padding:.65rem .85rem;background:rgba(var(--chessimals-primary-rgb),.08);color:var(--chessimals-text);font-size:.92rem;font-weight:900}.chessimals-online__loading span{width:1rem;height:1rem;border:.15rem solid rgba(var(--chessimals-primary-rgb),.24);border-top-color:var(--chessimals-primary);border-radius:999px;animation:chessimals-spin .75s linear infinite}.chessimals-online-code{display:grid;gap:.4rem;font-weight:950}.chessimals-online-code input{width:100%;min-height:3.3rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:850;letter-spacing:.05em;text-transform:uppercase}.chessimals-game-code{display:grid;gap:.2rem;border-radius:1rem;padding:.85rem 1rem;background:var(--chessimals-soft)}.chessimals-game-code small{color:var(--chessimals-muted);font-weight:900;letter-spacing:.06em;text-transform:uppercase}.chessimals-game-code strong{font-size:clamp(1.35rem,6vw,2rem);font-weight:950;letter-spacing:.05em}.chessimals-online-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-history{gap:.75rem}.chessimals-history__heading{display:flex;align-items:start;justify-content:space-between;gap:.75rem}.chessimals-history__list{display:grid;gap:.5rem}.chessimals-history__item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;border:1px solid var(--chessimals-border);border-radius:1rem;padding:.7rem .8rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-history__item span{display:grid;gap:.1rem;min-width:0}.chessimals-history__item strong{font-weight:950;letter-spacing:.04em}.chessimals-history__item small{overflow:hidden;color:var(--chessimals-muted);font-size:.82rem;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.chessimals-history__item em{flex:0 0 auto;color:var(--chessimals-primary);font-size:.86rem;font-style:normal;font-weight:950}.chessimals-home-settings{gap:.8rem}.chessimals-home-settings__actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.625rem}.chessimals-pending-player{display:flex;align-items:center;gap:.7rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:1rem;padding:.75rem;background:var(--chessimals-soft)}.chessimals-pending-player div{display:grid;gap:.1rem;min-width:0}.chessimals-pending-player small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.07em;text-transform:uppercase}.chessimals-pending-player strong{overflow:hidden;font-size:1.05rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-turn-card{order:1;display:flex;align-items:center;justify-content:space-between;gap:.625rem;min-height:3.75rem;overflow:visible;border:1px solid rgba(var(--chessimals-primary-rgb),.24);border-radius:1rem;padding:.55rem .65rem;background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.34),transparent 18%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.2),rgba(var(--chessimals-secondary-rgb),.1))}.chessimals-turn-card.is-black-turn{border-color:rgba(var(--ion-color-dark-rgb, 47, 42, 58),.28);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.12),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-dark-rgb, 47, 42, 58),.14),rgba(var(--chessimals-primary-rgb),.1))}.chessimals-turn-card.is-finished{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.42);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.35),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.18),rgba(var(--chessimals-primary-rgb),.12))}.chessimals-turn-card.is-finished .chessimals-turn-card__chip{color:var(--ion-color-success, #2dd36f)}.chessimals-turn-card.is-your-turn{border-color:rgba(var(--chessimals-primary-rgb),.48);box-shadow:0 0 0 .12rem rgba(var(--chessimals-primary-rgb),.12),0 .95rem 2rem rgba(var(--chessimals-primary-rgb),.14)}.chessimals-turn-card.is-your-turn .chessimals-turn-card__chip{background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 0 0 .32rem rgba(var(--chessimals-primary-rgb),.14);animation:chessimals-turn-pulse 1.45s ease-in-out infinite}.chessimals-turn-card.is-timer-low{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.5);box-shadow:0 0 0 .12rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12),0 .95rem 2rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.chessimals-turn-card.is-timer-low .chessimals-turn-card__chip{background:var(--ion-color-danger, #eb445a);color:var(--ion-color-danger-contrast, #ffffff)}.chessimals-turn-card.is-waiting-turn .chessimals-turn-card__chip{color:var(--chessimals-muted)}@keyframes chessimals-turn-pulse{0%,to{transform:translateZ(0) scale(1)}50%{transform:translateZ(0) scale(1.035)}}.chessimals-turn-card__copy{display:grid;min-width:0;gap:.15rem}.chessimals-turn-card__chip{justify-self:start;border-radius:999px;padding:.2rem .5rem;background:var(--chessimals-panel);color:var(--chessimals-primary);font-size:.62rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-turn-card strong{display:block;min-width:0;font-size:clamp(1rem,3.5vw,1.25rem);line-height:1.08;font-weight:950;overflow-wrap:anywhere}.chessimals-turn-card p{display:block;min-width:0;margin:0;color:var(--chessimals-muted);font-size:.78rem;line-height:1.22}.chessimals-player-strip{display:flex;flex:0 0 auto;align-items:center;gap:.45rem;min-width:10rem;max-width:min(17rem,42%);border:1px solid var(--chessimals-border);border-radius:999px;padding:.3rem .55rem .3rem .35rem;background:rgba(var(--ion-color-light-rgb, 244, 245, 248),.72)}:host-context(html.ion-palette-dark) .chessimals-player-strip,:host-context([data-theme=\"dark\"]) .chessimals-player-strip{background:#ffffff0f}.chessimals-player-strip val-user-avatar{display:inline-flex;flex:0 0 auto;line-height:0}.chessimals-player-strip__avatar{display:grid;place-items:center;flex:0 0 2.25rem;width:2.25rem;height:2.25rem;aspect-ratio:1 / 1;overflow:hidden;border-radius:999px;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.875rem;line-height:1}.chessimals-player-strip__avatar--initials{font-size:.78rem;font-weight:950}:host ::ng-deep .chessimals-player-strip .chessimals-turn-avatar{width:2.25rem;min-width:2.25rem;height:2.25rem;border-radius:50%}.chessimals-player-strip__text{display:grid;min-width:0;gap:.05rem;line-height:1.1}.chessimals-player-strip__text span{color:var(--chessimals-muted);font-size:.58rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-player-strip__text strong{overflow:hidden;font-size:.82rem;line-height:1.08;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-player-strip__text small{overflow:hidden;color:var(--chessimals-muted);font-size:.66rem;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}.chessimals-arena{order:4;display:grid;gap:.875rem;align-items:start}.chessimals-howto,.chessimals-tip,.chessimals-result,.chessimals-replay,.chessimals-rematch-status{display:grid;gap:.375rem;padding:1rem;border-radius:1.25rem;background:var(--chessimals-soft)}.chessimals-howto{border:1px solid var(--chessimals-border);background:var(--chessimals-soft);color:var(--chessimals-text)}.chessimals-howto p{color:var(--chessimals-muted)}.chessimals-howto__actions{display:flex;flex-wrap:wrap;gap:.625rem}:host-context(html.ion-palette-dark) .chessimals-howto,:host-context([data-theme=\"dark\"]) .chessimals-howto{border-color:#f6e3d533;background:#172116;color:#f6f3e9}:host-context(html.ion-palette-dark) .chessimals-howto p,:host-context([data-theme=\"dark\"]) .chessimals-howto p{color:#c8cfb1}.chessimals-result{order:5}.chessimals-result__actions{display:flex;flex-wrap:wrap;gap:.625rem;margin-top:.45rem}.chessimals-action-button{flex:0 1 auto;min-width:min(100%,12.5rem);max-width:100%;padding:.85rem 1.35rem}.chessimals-result.is-challenge-result{gap:0;padding:0;background:transparent}.chessimals-result__stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem;margin-top:.35rem}.chessimals-result__stats span{display:grid;gap:.15rem;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:.85rem;padding:.58rem .6rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--chessimals-panel)}.chessimals-result__stats small{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-weight:950;letter-spacing:.05em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-result__stats b{overflow:hidden;color:var(--chessimals-text);font-size:.92rem;font-weight:950;line-height:1.12;text-overflow:ellipsis;white-space:nowrap}.chessimals-result__detail{margin:.2rem 0 0}.chessimals-bot-report{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.75rem;margin-top:.35rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1rem;padding:.78rem .85rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),transparent),var(--chessimals-panel)}.chessimals-bot-report>span{display:grid;place-items:center;width:2.5rem;height:2.5rem;border-radius:.85rem;background:rgba(var(--chessimals-secondary-rgb),.14);font-size:1.45rem;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-bot-report>span img{width:100%;height:100%;object-fit:contain}.chessimals-bot-report div{display:grid;gap:.12rem;min-width:0}.chessimals-bot-report small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-bot-report strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.15}.chessimals-bot-report p{margin:0;color:var(--chessimals-muted);font-size:.84rem;font-weight:820;line-height:1.28}.chessimals-online-status{order:3;display:grid;grid-template-columns:1.35rem minmax(0,1fr);align-items:center;gap:.85rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1.1rem;padding:.85rem .95rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.09),transparent),var(--chessimals-panel)}.chessimals-online-status>span{justify-self:center;width:.72rem;height:.72rem;border-radius:999px;background:var(--chessimals-primary);box-shadow:0 0 0 .38rem rgba(var(--chessimals-primary-rgb),.12)}.chessimals-online-status.is-syncing>span{animation:chessimals-online-pulse .9s ease-in-out infinite}.chessimals-online-status.is-error{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.28);background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.1),transparent),var(--chessimals-panel)}.chessimals-online-status.is-error>span{background:var(--ion-color-danger, #eb445a);box-shadow:0 0 0 .38rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.chessimals-online-status div{display:grid;gap:.12rem;min-width:0}.chessimals-online-status strong{overflow:hidden;color:var(--chessimals-text);font-size:.95rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-online-status p{margin:0;color:var(--chessimals-muted);font-size:.84rem;font-weight:780;line-height:1.28}.chessimals-series{display:grid;gap:.18rem;margin-top:.35rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1rem;padding:.78rem .85rem;background:linear-gradient(135deg,rgba(var(--chessimals-secondary-rgb),.12),transparent),var(--chessimals-panel)}.chessimals-series--compact{margin-top:0}.chessimals-series small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-series strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.15}.chessimals-series span{color:var(--chessimals-muted);font-size:.84rem;font-weight:820;line-height:1.28}.chessimals-replay{order:5;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem;border:1px solid rgba(var(--chessimals-primary-rgb),.2);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),transparent),var(--chessimals-panel)}.chessimals-replay>div:first-child{display:grid;gap:.15rem;min-width:0}.chessimals-replay strong{font-size:1rem;font-weight:950}.chessimals-replay span{color:var(--chessimals-muted);font-size:.86rem;font-weight:800;line-height:1.25}.chessimals-replay__actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.5rem}.chessimals-replay__actions .chessimals-secondary{min-height:2.5rem;padding:0 .8rem}.chessimals-tutorial{order:3;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem;padding:1rem;border:1px solid rgba(var(--chessimals-primary-rgb),.24);border-radius:1.25rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel)}.chessimals-tutorial>div{display:grid;gap:.18rem;min-width:0}.chessimals-tutorial small{color:var(--chessimals-primary);font-size:.76rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-tutorial strong{font-size:1rem;font-weight:950}.chessimals-tutorial p{margin:0;color:var(--chessimals-muted);font-size:.88rem;font-weight:780;line-height:1.35}.chessimals-tutorial .chessimals-secondary{min-height:2.5rem;padding:0 .85rem}.chessimals-rematch-status{order:5;border:1px solid rgba(var(--chessimals-primary-rgb),.22);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.12),transparent),var(--chessimals-panel)}.chessimals-rematch-status.is-incoming{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.38);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.14),transparent),var(--chessimals-panel)}.chessimals-rematch-status strong{font-size:1rem;font-weight:950}.chessimals-rematch-status p{margin:0;color:var(--chessimals-muted);font-size:.88rem;line-height:1.35}.chessimals-rematch-player{background:var(--chessimals-elevated)}:host-context(html.ion-palette-dark) .chessimals-rematch-player,:host-context([data-theme=\"dark\"]) .chessimals-rematch-player{background:#ffffff0f}.chessimals-rematch-status__actions{display:flex;justify-content:flex-end}.chessimals-rematch-status__actions .chessimals-secondary{min-height:2.5rem;padding:0 .95rem}.chessimals-howto h2,.chessimals-powers h2{margin:0;font-size:1.15rem;font-weight:950}.chessimals-challenge-cta{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(10rem,auto) auto;gap:.65rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.24);border-radius:1.25rem;padding:.75rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.1),transparent 62%),var(--chessimals-panel);box-shadow:0 .7rem 1.4rem rgba(var(--chessimals-shadow-rgb),.08)}.chessimals-challenge-cta__copy{display:grid;gap:.18rem;min-width:0}.chessimals-challenge-cta__copy span,.chessimals-challenge-cta__rival small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-challenge-cta__copy h2{margin:0;color:var(--chessimals-text);font-size:clamp(1.05rem,2.5vw,1.32rem);font-weight:1000}.chessimals-challenge-cta__copy p{margin:0;color:var(--chessimals-muted);font-size:.82rem;font-weight:780;line-height:1.3}.chessimals-challenge-cta__meta{display:grid;grid-template-columns:repeat(2,minmax(3.8rem,1fr));gap:.4rem}.chessimals-challenge-cta__meta span{display:grid;gap:.08rem;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:.95rem;padding:.42rem .5rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-cta__meta small{color:var(--chessimals-muted);font-size:.62rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-cta__meta strong{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-cta__actions{display:grid;gap:.45rem;min-width:10rem}.chessimals-challenge-cta__rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.5rem;align-items:center;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:1rem;padding:.45rem;background:var(--chessimals-elevated)}.chessimals-challenge-cta__rival>.chessimals-bot-avatar{display:grid;place-items:center;width:2.15rem;height:2.15rem;border-radius:.9rem;background:rgba(var(--chessimals-sky-rgb),.14);font-size:1.12rem}.chessimals-challenge-cta__rival div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-cta__rival strong{overflow:hidden;color:var(--chessimals-text);font-size:.9rem;font-weight:1000;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-view{display:grid;gap:.85rem}.chessimals-back-link{justify-self:start;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:999px;padding:.45rem .72rem;background:var(--chessimals-elevated);color:var(--chessimals-text);font:inherit;font-size:.85rem;font-weight:950;cursor:pointer}.chessimals-challenge-back{margin-bottom:.15rem}.chessimals-challenge-card{display:grid;gap:.9rem;border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:1.375rem;padding:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.18),transparent 54%),linear-gradient(180deg,var(--chessimals-glass-highlight),transparent),var(--chessimals-panel);box-shadow:0 1rem 2.2rem #4f3a231f}.chessimals-challenge-card--dedicated{border:0;border-radius:0;padding:0;background:transparent;box-shadow:none}.chessimals-challenge-hero,.chessimals-challenge-focus,.chessimals-challenge-secondary{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(14rem,.9fr);gap:.75rem;align-items:stretch}.chessimals-challenge-card__copy{display:grid;gap:.28rem;align-content:center}.chessimals-challenge-card__copy span,.chessimals-challenge-summary small,.chessimals-challenge-route small,.chessimals-challenge-panel__heading small{color:var(--chessimals-sky);font-size:.72rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-challenge-card h2{margin:0;font-size:clamp(1.25rem,3.5vw,1.9rem);font-weight:1000}.chessimals-challenge-card p,.chessimals-challenge-summary p{margin:0;color:var(--chessimals-muted);font-size:.95rem;font-weight:780;line-height:1.35}.chessimals-challenge-card__stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.chessimals-challenge-rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.7rem;align-items:center;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1.125rem;padding:.7rem;background:var(--chessimals-elevated)}.chessimals-challenge-rival--feature{min-height:8rem;border-color:rgba(var(--chessimals-sky-rgb),.28);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent),var(--chessimals-elevated)}.chessimals-challenge-rival>.chessimals-bot-avatar{display:grid;place-items:center;width:3rem;height:3rem;border-radius:1rem;background:rgba(var(--chessimals-primary-rgb),.12);font-size:1.45rem}.chessimals-challenge-rival div{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-rival small,.chessimals-challenge-history small,.chessimals-challenge-summary__stats small{color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-rival strong{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-rival p{font-size:.84rem}.chessimals-challenge-rival em{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-style:normal;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-rival--next{background:rgba(var(--chessimals-primary-rgb),.08)}.chessimals-challenge-card__stats span{display:grid;gap:.16rem;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:1rem;padding:.55rem;background:var(--chessimals-elevated)}.chessimals-challenge-card__stats small{color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-card__stats strong{color:var(--chessimals-text);font-size:1.1rem;font-weight:1000}.chessimals-challenge-card__actions{display:grid;gap:.55rem;align-content:center}.chessimals-challenge-card__actions--hero{grid-template-columns:minmax(0,1fr)}.chessimals-challenge-route,.chessimals-challenge-panel{display:grid;gap:.55rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1.125rem;padding:.65rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-route>div:first-child,.chessimals-challenge-panel__heading{display:flex;flex-wrap:wrap;gap:.4rem;align-items:baseline;justify-content:space-between}.chessimals-challenge-route>div:first-child>span{color:var(--chessimals-muted);font-size:.76rem;font-weight:850}.chessimals-challenge-path{display:flex;flex-wrap:nowrap;gap:.4rem;overflow-x:auto;padding-block:.1rem;scrollbar-width:none}.chessimals-challenge-path::-webkit-scrollbar{display:none}.chessimals-challenge-path span{flex:0 0 auto;display:grid;place-items:center;width:2.15rem;height:2.15rem;overflow:hidden;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:999px;background:var(--chessimals-elevated-strong);font-size:1.08rem}.chessimals-challenge-path img{display:block;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;object-fit:contain}.chessimals-challenge-path span.is-cleared{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.34);background:rgba(var(--ion-color-success-rgb, 45, 211, 111),.16)}.chessimals-challenge-path span.is-current{border-color:rgba(var(--chessimals-sky-rgb),.48);background:rgba(var(--chessimals-sky-rgb),.18);box-shadow:0 0 0 2px rgba(var(--chessimals-sky-rgb),.12)}.chessimals-challenge-path span.is-final{border-color:rgba(var(--ion-color-warning-rgb, 255, 196, 9),.48)}.chessimals-challenge-roster{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.4rem}.chessimals-challenge-roster article{display:grid;grid-template-columns:minmax(0,1fr);gap:.4rem;align-items:center;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1rem;padding:.48rem;background:var(--chessimals-elevated-soft);opacity:.78}.chessimals-challenge-roster article.is-cleared{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.26);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.1),transparent),var(--chessimals-elevated-soft);opacity:1}.chessimals-challenge-roster article.is-current{border-color:rgba(var(--chessimals-sky-rgb),.38);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),transparent),var(--chessimals-elevated);box-shadow:0 0 0 2px rgba(var(--chessimals-sky-rgb),.1);opacity:1}.chessimals-challenge-roster article.is-final{border-color:rgba(var(--ion-color-warning-rgb, 255, 196, 9),.34)}.chessimals-challenge-roster article>.chessimals-bot-avatar{display:grid;place-items:center;width:2rem;height:2rem;border-radius:.85rem;background:rgba(var(--chessimals-primary-rgb),.1);font-size:1rem}.chessimals-challenge-roster article.is-current>.chessimals-bot-avatar{background:rgba(var(--chessimals-sky-rgb),.18)}.chessimals-challenge-roster div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-roster small,.chessimals-challenge-roster em{overflow:hidden;color:var(--chessimals-muted);font-size:.62rem;font-style:normal;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-roster strong{overflow:hidden;color:var(--chessimals-text);font-size:.82rem;font-weight:1000;line-height:1.08;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-roster p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.72rem;font-weight:820;line-height:1.18;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-achievements,.chessimals-mode-winrates{display:grid;grid-template-columns:minmax(0,1fr);gap:.45rem}.chessimals-mode-winrates>span{display:grid;gap:.1rem;border:1px solid rgba(var(--chessimals-sky-rgb),.2);border-radius:8px;padding:.48rem;background:rgba(var(--chessimals-sky-rgb),.08)}.chessimals-mode-winrates small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:900;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-mode-winrates strong{color:var(--chessimals-text);font-size:.98rem;font-weight:1000}.chessimals-mode-winrates em{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-style:normal;font-weight:850;text-overflow:ellipsis;white-space:nowrap}.chessimals-achievements>span{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.45rem;align-items:center;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.5rem;background:var(--chessimals-elevated-soft);opacity:.68}.chessimals-achievements>span.is-unlocked{border-color:rgba(var(--chessimals-sky-rgb),.3);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),var(--chessimals-elevated));opacity:1}.chessimals-achievements b{display:grid;place-items:center;width:1.9rem;height:1.9rem;border-radius:8px;background:rgba(var(--chessimals-primary-rgb),.1);color:var(--chessimals-muted);font-size:.9rem;font-weight:1000}.chessimals-achievements .is-unlocked b{background:var(--chessimals-sky);color:#fffaf0}.chessimals-achievements span span{display:grid;gap:.06rem;min-width:0}.chessimals-achievements strong,.chessimals-achievements small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-achievements strong{color:var(--chessimals-text);font-size:.78rem;font-weight:1000}.chessimals-achievements small{color:var(--chessimals-muted);font-size:.67rem;font-weight:850}.chessimals-secondary--compact{min-height:2.45rem;padding-block:.45rem}.chessimals-path-cta{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.75rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.26);border-radius:1.25rem;padding:.75rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.13),rgba(var(--chessimals-sun-rgb),.08)),var(--chessimals-elevated-soft)}.chessimals-path-cta div{display:grid;gap:.18rem;min-width:0}.chessimals-path-cta span,.chessimals-path-hero small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-path-cta strong{color:var(--chessimals-text);font-size:.95rem;font-weight:950;line-height:1.2}.chessimals-path-cta__action{justify-self:end;width:min(12rem,100%);min-width:9.5rem;padding-inline:1.1rem;white-space:nowrap}.chessimals-path-view{display:grid;gap:.85rem}.chessimals-path-hero{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.8rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.26);border-radius:1.25rem;padding:.85rem;background:radial-gradient(circle at 88% 10%,rgba(var(--chessimals-sun-rgb),.18),transparent 34%),linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent 62%),var(--chessimals-elevated-soft)}.chessimals-path-hero__art{display:block;width:clamp(5.2rem,15vw,7.5rem);height:clamp(5.2rem,15vw,7.5rem);object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-path-hero>div:not(.chessimals-path-hero__medal){display:grid;gap:.25rem;min-width:0}.chessimals-path-hero h2{margin:0;color:var(--chessimals-text);font-size:clamp(1.7rem,4vw,2.35rem);font-weight:1000;line-height:1}.chessimals-path-hero p{margin:0;color:var(--chessimals-muted);font-size:.95rem;font-weight:820;line-height:1.35}.chessimals-path-hero__medal{display:grid;place-items:center;width:6.5rem;min-height:6.5rem;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:1rem;background:linear-gradient(180deg,rgba(var(--chessimals-sun-rgb),.2),rgba(var(--chessimals-sky-rgb),.11)),var(--chessimals-elevated);box-shadow:0 16px 28px rgba(var(--chessimals-shadow-rgb),.12)}.chessimals-path-hero__medal img{display:block;width:3rem;height:3rem;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-path-hero__medal span{color:var(--chessimals-text);font-size:1.65rem;font-weight:1000;line-height:1}.chessimals-path-hero__medal b{color:var(--chessimals-muted);font-size:.78rem;font-weight:950}.chessimals-path-highlights{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem}.chessimals-path-highlights article{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.65rem;align-items:center;min-width:0;min-height:7.5rem;border:1px solid rgba(var(--chessimals-primary-rgb),.13);border-radius:1rem;padding:.7rem;background:radial-gradient(circle at 12% 4%,rgba(var(--chessimals-sun-rgb),.18),transparent 42%),var(--chessimals-elevated-soft)}.chessimals-path-highlights img{display:block;width:4.25rem;height:4.25rem;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-path-highlights article div{display:grid;min-width:0;gap:.12rem}.chessimals-path-highlights small{overflow:hidden;color:var(--chessimals-sky);font-size:.66rem;font-weight:950;letter-spacing:.05em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-path-highlights strong{overflow:hidden;color:var(--chessimals-text);font-size:1.08rem;font-weight:1000;line-height:1.06;text-overflow:ellipsis;white-space:nowrap}.chessimals-path-highlights span{color:var(--chessimals-muted);font-size:.76rem;font-weight:820;line-height:1.24}.chessimals-path-rings{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.6rem}.chessimals-path-ring,.chessimals-path-panel,.chessimals-path-stats span,.chessimals-path-bars span{border:1px solid rgba(var(--chessimals-primary-rgb),.13);border-radius:1rem;background:var(--chessimals-elevated-soft)}.chessimals-path-ring{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;padding:.65rem;text-align:left}.chessimals-path-ring>div{position:relative;display:grid;place-items:center;width:3.35rem;height:3.35rem;border-radius:999px;background:conic-gradient(var(--chessimals-sky) var(--ring-progress),rgba(var(--chessimals-primary-rgb),.12) 0)}.chessimals-path-ring>div:after{position:absolute;inset:.34rem;border-radius:inherit;background:var(--chessimals-elevated);content:\"\"}.chessimals-path-ring strong{position:relative;z-index:1;color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-path-ring span,.chessimals-path-bars b{color:var(--chessimals-text);font-size:.78rem;font-weight:950}.chessimals-path-ring span,.chessimals-path-ring small{min-width:0}.chessimals-path-ring small{color:var(--chessimals-muted);font-size:.68rem;font-weight:820;line-height:1.25}.chessimals-path-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:.75rem}.chessimals-path-panel{display:grid;gap:.65rem;align-content:start;padding:.75rem}.chessimals-path-panel--wide{grid-column:1 / -1}.chessimals-path-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem}.chessimals-path-stats span{display:grid;gap:.08rem;padding:.6rem}.chessimals-path-stats small{overflow:hidden;color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-path-stats strong{color:var(--chessimals-text);font-size:1.25rem;font-weight:1000}.chessimals-path-bars{display:grid;gap:.45rem}.chessimals-path-bars span{display:grid;grid-template-columns:minmax(0,.9fr) minmax(3rem,1fr) auto;gap:.45rem;align-items:center;padding:.48rem}.chessimals-path-bars i{display:block;height:.48rem;overflow:hidden;border-radius:999px;background:rgba(var(--chessimals-primary-rgb),.11)}.chessimals-path-bars i:before{display:block;width:var(--bar-progress);height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--chessimals-sky),var(--chessimals-sun));content:\"\"}.chessimals-path-bars strong{color:var(--chessimals-text);font-size:.86rem;font-weight:1000}.chessimals-achievements--path{grid-template-columns:1fr}.chessimals-challenge-history--path{border-top:0;padding-top:0}.chessimals-progress__heading small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-progress__heading{display:flex;flex-wrap:wrap;gap:.35rem;align-items:baseline;justify-content:space-between}.chessimals-progress__heading span{color:var(--chessimals-muted);font-size:.76rem;font-weight:820}.chessimals-challenge-history{display:grid;gap:.35rem;border-top:1px solid rgba(var(--chessimals-primary-rgb),.12);padding-top:.2rem}.chessimals-challenge-history span{display:flex;flex-wrap:wrap;gap:.35rem;color:var(--chessimals-muted);font-size:.82rem;font-weight:820}.chessimals-challenge-history b{color:var(--chessimals-text);font-weight:1000}.chessimals-challenge-summary{display:grid;gap:.6rem;border:0;border-radius:0;padding:0;background:transparent}.chessimals-challenge-summary.is-victory,.chessimals-challenge-summary.is-defeat{background:transparent}.chessimals-challenge-summary__hero,.chessimals-challenge-rival-voice{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.7rem}.chessimals-challenge-summary__hero>.chessimals-bot-avatar,.chessimals-challenge-rival-voice>.chessimals-bot-avatar{position:relative;display:grid;place-items:center;width:3rem;height:3rem;border-radius:1rem;background:rgba(var(--chessimals-sky-rgb),.16);font-size:1.55rem;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-challenge-summary__hero.is-cleared>.chessimals-bot-avatar img{filter:grayscale(1) saturate(.15) contrast(.95);opacity:.62}.chessimals-challenge-summary__hero.is-cleared>.chessimals-bot-avatar:after{content:\"\\2713\";position:absolute;right:-.05rem;bottom:-.05rem;display:grid;place-items:center;width:1.25rem;height:1.25rem;border:.12rem solid var(--chessimals-panel);border-radius:999px;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.74rem;font-weight:1000;line-height:1}.chessimals-challenge-summary__hero div,.chessimals-challenge-rival-voice div{display:grid;gap:.12rem;min-width:0}.chessimals-challenge-summary__hero small,.chessimals-challenge-rival-voice small{color:var(--chessimals-muted);font-size:.68rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-challenge-summary strong{font-size:1rem;font-weight:1000}.chessimals-challenge-summary__hero p,.chessimals-challenge-rival-voice p{margin:0;color:var(--chessimals-muted);font-size:.86rem;font-weight:820;line-height:1.28}.chessimals-challenge-rival-voice{border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:.95rem;padding:.65rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-summary__actions{display:grid}.chessimals-challenge-summary__play{min-height:3.35rem;font-size:1.02rem;box-shadow:0 .9rem 1.8rem rgba(var(--chessimals-primary-rgb),.26)}.chessimals-result.is-challenge-result .chessimals-challenge-tension,.chessimals-result.is-challenge-result .chessimals-challenge-rival--next{display:grid;grid-template-columns:minmax(0,1fr);border:0;border-radius:.75rem;padding:.45rem .6rem;background:rgba(var(--chessimals-primary-rgb),.07)}.chessimals-result.is-challenge-result .chessimals-challenge-rival--next{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.7rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1rem;padding:.65rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.12),transparent),rgba(var(--chessimals-primary-rgb),.06)}.chessimals-result.is-challenge-result .chessimals-challenge-rival--next>.chessimals-bot-avatar{width:3.4rem;height:3.4rem;border-radius:1.1rem;background:var(--chessimals-elevated-strong);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14),0 .45rem 1rem rgba(var(--chessimals-primary-rgb),.1)}.chessimals-result.is-challenge-result .chessimals-challenge-rival--next p{margin:0;color:var(--chessimals-text);font-size:.9rem;font-weight:900;line-height:1.22}.chessimals-result.is-challenge-result .chessimals-challenge-tension.is-critical{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.1)}.chessimals-challenge-rival-voice>.chessimals-bot-avatar{width:2.35rem;height:2.35rem;border-radius:999px;font-size:1.15rem}.chessimals-challenge-summary__stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem}.chessimals-challenge-record{display:flex;align-items:center;gap:.45rem;border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:999px;padding:.45rem .65rem;background:rgba(var(--chessimals-sky-rgb),.14);color:var(--chessimals-text)}.chessimals-challenge-record span{display:grid;place-items:center;width:1.45rem;height:1.45rem;border-radius:999px;background:var(--chessimals-sky);color:#fffaf0;font-size:.82rem}.chessimals-challenge-record strong{font-size:.9rem}.chessimals-challenge-tension{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.3);border-radius:.9rem;padding:.65rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),rgba(var(--chessimals-primary-rgb),.08)),var(--chessimals-elevated)}.chessimals-challenge-tension.is-critical{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.38);background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.16),rgba(var(--chessimals-primary-rgb),.08)),var(--chessimals-elevated)}.chessimals-challenge-tension>span{display:grid;place-items:center;width:2.25rem;height:2.25rem;border-radius:999px;background:rgba(var(--chessimals-sky-rgb),.18);color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-tension.is-critical>span{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.18)}.chessimals-challenge-tension div{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-tension strong{font-size:.95rem}.chessimals-challenge-tension p{font-size:.84rem}.chessimals-challenge-summary__stats span{display:grid;gap:.1rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:.8rem;padding:.45rem;background:var(--chessimals-elevated)}.chessimals-challenge-summary__stats b{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-rival--next em{color:var(--chessimals-muted);font-size:.78rem;font-style:normal;font-weight:820;line-height:1.25;white-space:normal}.chessimals-tip p,.chessimals-powers p{color:var(--chessimals-muted)}.chessimals-learn-more{justify-self:start;min-height:2.75rem;border:0;border-radius:999px;padding:0 1rem;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font:inherit;font-weight:950;box-shadow:0 .75rem 1.6rem rgba(var(--chessimals-primary-rgb),.28)}.chessimals-size,.chessimals-mode,.chessimals-status{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-status{order:3;grid-template-columns:repeat(3,minmax(0,1fr))}.chessimals-size button,.chessimals-mode button,.chessimals-status div{display:grid;gap:.2rem;align-content:center;min-width:0;min-height:3.875rem;padding:.55rem .65rem;border:1px solid var(--chessimals-border);border-radius:1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-size button.is-selected{border-color:var(--chessimals-primary);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-mode button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-status__timer{position:relative;overflow:hidden;isolation:isolate;border-color:rgba(var(--chessimals-primary-rgb),.42)!important}.chessimals-status__timer:before{content:\"\";position:absolute;inset:auto 0 0;z-index:0;height:.22rem;transform:scaleX(var(--timer-progress, 1));transform-origin:left center;background:var(--chessimals-primary);transition:transform .18s linear,background .18s ease}.chessimals-status__timer.is-low{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.58)!important;background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.16),transparent),var(--chessimals-panel)!important;animation:chessimals-turn-pulse .82s ease-in-out infinite}.chessimals-status__timer.is-low:before{background:var(--ion-color-danger, #eb445a)}.chessimals-status__timer.is-low strong{color:var(--ion-color-danger, #eb445a)}.chessimals-status__score.is-pop{border-color:rgba(var(--chessimals-sky-rgb),.42);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),transparent),var(--chessimals-panel);animation:chessimals-score-pulse .62s ease-out both}.chessimals-status__timer small,.chessimals-status__timer strong{position:relative;z-index:1}.chessimals-challenge-live{order:4;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1.35fr);gap:.65rem;align-items:stretch;border:1px solid rgba(var(--chessimals-sky-rgb),.28);border-radius:8px;padding:.68rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.13),transparent 52%),var(--chessimals-elevated-soft);color:var(--chessimals-text)}.chessimals-challenge-live__rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;min-width:0}.chessimals-challenge-live__rival>.chessimals-bot-avatar{display:grid;place-items:center;width:2.7rem;height:2.7rem;border-radius:8px;background:rgba(var(--chessimals-sky-rgb),.16);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14);font-size:1.35rem}.chessimals-challenge-live__rival div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-live__rival small,.chessimals-challenge-live__metrics small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-live__rival strong{overflow:hidden;color:var(--chessimals-text);font-size:1rem;font-weight:1000;line-height:1.05;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-live__rival p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.78rem;font-weight:820;line-height:1.18;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-challenge-live__metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.42rem}.chessimals-challenge-live__metrics span{display:grid;gap:.1rem;align-content:center;min-width:0;min-height:3rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.4rem .45rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-live__metrics b{overflow:hidden;color:var(--chessimals-text);font-size:.92rem;font-weight:1000;line-height:1.05;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-tension--live{grid-column:1 / -1;padding:.55rem}.chessimals-difficulty{display:flex;flex-wrap:wrap;gap:.55rem}.chessimals-difficulty button{min-height:2.75rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:950}.chessimals-difficulty button.is-selected{border-color:var(--chessimals-primary);background:var(--chessimals-primary);color:#fff}.chessimals-bots{display:grid;grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr));gap:.625rem}.chessimals-bots button{display:grid;grid-template-columns:auto 1fr;grid-template-areas:\"avatar title\" \"avatar body\" \"avatar tendency\";column-gap:.55rem;row-gap:.12rem;min-width:0;min-height:4.75rem;border:1px solid var(--chessimals-border);border-radius:1rem;padding:.65rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-bots button>.chessimals-bot-avatar{grid-area:avatar;display:grid;place-items:center;width:2.1rem;height:2.1rem;border-radius:50%;background:rgba(var(--chessimals-primary-rgb),.12);font-size:1.2rem}.chessimals-bots button strong{grid-area:title;align-self:end;font-size:.95rem;font-weight:950}.chessimals-bots button small{grid-area:body;color:var(--chessimals-muted);font-size:.75rem;font-weight:750;line-height:1.25}.chessimals-bots button p{grid-area:tendency;margin:.12rem 0 0;color:var(--chessimals-muted);font-size:.72rem;font-weight:820;line-height:1.24}.chessimals-bots button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16),0 .75rem 1.5rem rgba(var(--chessimals-primary-rgb),.1)}.chessimals-size strong,.chessimals-mode strong,.chessimals-status strong,.chessimals-result strong,.chessimals-rematch-status strong,.chessimals-tip strong{font-weight:950}.chessimals-status strong{min-width:0;font-size:clamp(.95rem,2.5vw,1.2rem);line-height:1.08;overflow-wrap:anywhere;white-space:normal}.chessimals-size small,.chessimals-mode small,.chessimals-status small{color:var(--chessimals-muted);font-size:.78rem;line-height:1.12}.chessimals-board-wrap{--chessimals-board-radius: min(.85rem, 14px);display:flex;justify-content:center;min-width:0;max-width:100%;overflow-x:auto;width:100%;padding:.25rem 0}.chessimals-board-wrap.is-orienting .chessimals-board-frame{animation:chessimals-orient-board .32s ease}.chessimals-board-wrap.is-finished{overflow-x:visible}.chessimals-board-frame{flex:0 1 58rem;min-width:0;width:100%;max-width:58rem;border-radius:var(--chessimals-board-radius)}.chessimals-board{position:relative;display:grid;grid-template-columns:repeat(var(--board-size),minmax(0,1fr));grid-template-rows:repeat(var(--board-size),minmax(0,1fr));min-width:0;width:100%;aspect-ratio:1 / 1;overflow:hidden;isolation:isolate;contain:paint;border:1px solid var(--chessimals-border);border-radius:var(--chessimals-board-radius);clip-path:inset(0 round var(--chessimals-board-radius));-webkit-mask-image:-webkit-radial-gradient(white,black);background:radial-gradient(ellipse at 16% 18%,rgba(255,255,255,.34),transparent 18%),radial-gradient(ellipse at 82% 78%,rgba(var(--chessimals-primary-rgb),.1),transparent 22%),radial-gradient(ellipse at 32% 68%,rgba(var(--chessimals-stone-rgb),.05),transparent 30%),radial-gradient(ellipse at 66% 34%,rgba(255,255,255,.08),transparent 24%),var(--chessimals-border);box-shadow:inset 0 0 0 1px #ffffff1a,0 .85rem 2.1rem var(--chessimals-board-shadow)}.chessimals-board-wrap.is-syncing .chessimals-board{cursor:wait}.chessimals-cell-coordinate{position:absolute;z-index:5;color:color-mix(in srgb,var(--chessimals-muted) 78%,var(--chessimals-text));font-size:.68rem;font-weight:950;letter-spacing:.02em;line-height:1;pointer-events:none;text-transform:uppercase;-webkit-user-select:none;user-select:none}.chessimals-cell-coordinate--rank{top:.2rem;left:.24rem}.chessimals-cell-coordinate--file{right:.24rem;bottom:.18rem}@keyframes chessimals-orient-board{0%{opacity:.72;filter:blur(.06rem);transform:scale(.985)}52%{opacity:.92;filter:blur(0);transform:scale(1.012)}to{opacity:1;filter:blur(0);transform:scale(1)}}.chessimals-center-line{position:absolute;top:50%;left:0;right:0;z-index:2;display:flex;align-items:center;justify-content:center;border-top:.08rem dashed rgba(var(--chessimals-primary-rgb),.56);filter:drop-shadow(0 0 .24rem rgba(var(--chessimals-primary-rgb),.26));pointer-events:none}.chessimals-power-trail{position:absolute;inset:0;z-index:5;pointer-events:none;--trail-color: rgba(var(--chessimals-magic-rgb), .88);--trail-glow: rgba(var(--chessimals-magic-rgb), .48)}.chessimals-power-trail.is-capture{--trail-color: rgba(var(--chessimals-capture-rgb), .86);--trail-glow: rgba(var(--chessimals-capture-rgb), .46)}.chessimals-power-trail.effect-eagle{--trail-color: rgba(255, 255, 255, .92);--trail-glow: rgba(120, 210, 255, .54)}.chessimals-power-trail.effect-bull{--trail-color: rgba(188, 131, 76, .86);--trail-glow: rgba(188, 131, 76, .36)}.chessimals-power-trail.effect-kangaroo{--trail-color: rgba(174, 124, 255, .86);--trail-glow: rgba(174, 124, 255, .42)}.chessimals-power-trail.effect-lion{--trail-color: rgba(255, 221, 120, .88);--trail-glow: rgba(255, 190, 56, .42)}.chessimals-power-trail>span{position:absolute;top:var(--trail-y);left:var(--trail-x);width:var(--trail-length);height:.45rem;border-radius:999px;background:linear-gradient(90deg,transparent,var(--trail-color) 42%,rgba(255,255,255,.92));box-shadow:0 0 .75rem var(--trail-glow),0 0 1.45rem var(--trail-glow);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0);transform-origin:0 50%;animation:chessimals-power-trail .72s ease-out both}.chessimals-power-trail.effect-eagle>span{height:.28rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.95) 44%,rgba(120,210,255,.58)),repeating-linear-gradient(90deg,transparent 0 .7rem,rgba(255,255,255,.66) .7rem .92rem);animation-name:chessimals-eagle-trail}.chessimals-power-trail.effect-bull>span{height:.72rem;background:repeating-linear-gradient(90deg,rgba(255,255,255,.42) 0 .18rem,transparent .18rem .42rem),linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.86));animation-name:chessimals-bull-trail}.chessimals-power-trail.effect-kangaroo>span{height:1rem;border-top:.16rem dashed var(--trail-color);background:transparent;box-shadow:none;filter:drop-shadow(0 0 .8rem var(--trail-glow));animation-name:chessimals-kangaroo-trail}.chessimals-power-trail.effect-lion>span{height:.62rem;background:linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.82)),repeating-linear-gradient(115deg,rgba(255,255,255,.55) 0 .12rem,transparent .12rem .34rem);animation-name:chessimals-lion-trail}@keyframes chessimals-power-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}28%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.72)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-eagle-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) skew(-10deg)}30%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.82) skew(-10deg)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1.05) skew(-10deg)}}@keyframes chessimals-bull-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) scaleY(1)}38%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.7) scaleY(1.18)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1) scaleY(.82)}}@keyframes chessimals-kangaroo-trail{0%{opacity:0;transform:translateY(-.4rem) rotate(var(--trail-angle)) scaleX(0)}34%{opacity:1;transform:translateY(-1.2rem) rotate(var(--trail-angle)) scaleX(.62)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-lion-trail{0%{opacity:0;filter:saturate(1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}36%{opacity:1;filter:saturate(1.4);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.76)}to{opacity:0;filter:saturate(1.1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-score-pulse{0%,to{transform:translateZ(0) scale(1)}42%{transform:translateZ(0) scale(1.035)}}.chessimals-challenge-intro{position:absolute;inset:0;z-index:7;display:grid;place-items:center;padding:clamp(.75rem,4vw,1.35rem);background:radial-gradient(circle at 50% 36%,rgba(var(--chessimals-sky-rgb),.24),transparent 34%),linear-gradient(135deg,#140c167a,#08120d57);backdrop-filter:blur(1.5px);animation:chessimals-challenge-intro-in .26s ease-out both}.chessimals-challenge-intro__card{display:grid;justify-items:center;gap:.55rem;width:min(18rem,92%);border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:8px;padding:.85rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent),var(--chessimals-elevated-strong);color:var(--chessimals-text);box-shadow:0 1.1rem 2.3rem #0000003d,inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.08);text-align:center}.chessimals-challenge-intro__avatar{display:grid;place-items:center;width:4rem;height:4rem;border-radius:8px;background:radial-gradient(circle at 35% 24%,var(--chessimals-glass-highlight),transparent 30%),rgba(var(--chessimals-sky-rgb),.16);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.16),0 .7rem 1.5rem rgba(var(--chessimals-sky-rgb),.18);font-size:2.15rem}.chessimals-challenge-intro__copy{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-intro__copy small,.chessimals-challenge-intro__facts small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:950;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-intro__copy strong{overflow:hidden;color:var(--chessimals-text);font-size:1.35rem;font-weight:1000;line-height:1.04;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-intro__copy p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.88rem;font-weight:820;line-height:1.24;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-challenge-intro__facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem;width:100%}.chessimals-challenge-intro__facts span{display:grid;gap:.1rem;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.38rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-intro__facts b{overflow:hidden;color:var(--chessimals-text);font-size:.86rem;font-weight:1000;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-intro .chessimals-primary{min-height:2.45rem;width:100%}@keyframes chessimals-challenge-intro-in{0%{opacity:0}to{opacity:1}}.chessimals-board-overlay{position:absolute;inset:0;z-index:8;display:grid;place-content:center;gap:.5rem;padding:1.25rem;background:radial-gradient(circle at 50% 34%,rgba(255,226,129,.34),transparent 24%),radial-gradient(circle at 50% 52%,rgba(var(--chessimals-primary-rgb),.34),transparent 42%),linear-gradient(135deg,#140c16e0,#08120dc7);color:#fff;text-align:center;backdrop-filter:blur(2px);overflow:hidden}.chessimals-board-overlay.is-defeat{background:radial-gradient(circle at 50% 34%,rgba(143,168,206,.26),transparent 24%),radial-gradient(circle at 50% 52%,rgba(72,86,115,.42),transparent 42%),linear-gradient(135deg,#090c14e6,#1c1e2bcc)}.chessimals-board-overlay:before{position:absolute;inset:0;background:radial-gradient(circle at 20% 30%,rgba(255,255,255,.58) 0 .08rem,transparent .1rem),radial-gradient(circle at 75% 25%,rgba(255,226,129,.7) 0 .1rem,transparent .12rem),radial-gradient(circle at 68% 72%,rgba(var(--chessimals-capture-rgb),.54) 0 .08rem,transparent .1rem),radial-gradient(circle at 35% 78%,rgba(255,255,255,.48) 0 .07rem,transparent .09rem),radial-gradient(circle at 84% 66%,rgba(255,255,255,.38) 0 .06rem,transparent .08rem),radial-gradient(circle at 14% 64%,rgba(255,226,129,.48) 0 .07rem,transparent .09rem);content:\"\";opacity:.72;animation:chessimals-victory-sparks 1.5s ease-in-out infinite}.chessimals-board-overlay__rays{position:absolute;inset:-18%;background:conic-gradient(from 8deg,transparent 0 7deg,rgba(255,226,129,.16) 7deg 11deg,transparent 11deg 22deg);opacity:.85;animation:chessimals-finale-rays 8s linear infinite}.chessimals-board-overlay.is-defeat .chessimals-board-overlay__rays{background:conic-gradient(from 8deg,transparent 0 8deg,rgba(180,204,240,.1) 8deg 12deg,transparent 12deg 24deg);animation-duration:12s}.chessimals-board-overlay__ribbon{position:absolute;top:-20%;width:.42rem;height:54%;border-radius:999px;background:linear-gradient(to bottom,transparent,rgba(255,226,129,.72),transparent);opacity:.7;transform:rotate(var(--ribbon-angle, 12deg));animation:chessimals-finale-ribbon 2.5s ease-in-out infinite}.chessimals-board-overlay.is-defeat .chessimals-board-overlay__ribbon{background:linear-gradient(to bottom,transparent,rgba(180,204,240,.42),transparent);opacity:.48}.chessimals-board-overlay__ribbon.ribbon-a{left:18%;--ribbon-angle: -18deg}.chessimals-board-overlay__ribbon.ribbon-b{left:50%;--ribbon-angle: 8deg;animation-delay:.32s}.chessimals-board-overlay__ribbon.ribbon-c{right:18%;--ribbon-angle: 20deg;animation-delay:.64s}.chessimals-board-overlay>*{position:relative;z-index:1}.chessimals-board-overlay span{justify-self:center;border-radius:999px;padding:.32rem .7rem;background:#ffffff26;color:#ffffffe6;font-size:.76rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-board-overlay strong{font-size:clamp(1.65rem,8vw,3rem);line-height:1;font-weight:950;text-shadow:0 0 1.25rem rgba(255,255,255,.26)}.chessimals-board-overlay em{justify-self:center;display:grid;place-items:center;width:clamp(3rem,14vw,4.6rem);height:clamp(3rem,14vw,4.6rem);border:.16rem solid rgba(255,255,255,.62);border-radius:50%;background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.72),transparent 18%),linear-gradient(135deg,#ffe281,#b98436);color:#2d2412;font-size:clamp(1.1rem,5vw,1.65rem);font-style:normal;font-weight:950;box-shadow:0 0 0 .45rem #ffe2811f,0 1rem 2rem #00000042;animation:chessimals-finale-medal 1.8s ease-in-out infinite}.chessimals-board-overlay.is-defeat em{background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.48),transparent 18%),linear-gradient(135deg,#d9e2ef,#69758e);color:#182032;box-shadow:0 0 0 .45rem #b4ccf01a,0 1rem 2rem #00000052}.chessimals-board-overlay em.has-avatar{overflow:hidden;background:#fff;padding:0}.chessimals-board-overlay em.has-avatar img{display:block;width:100%;height:100%;object-fit:cover}.chessimals-board-overlay b{justify-self:center;color:#fffc;font-size:.8rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-board-overlay small{color:#ffffffd1;font-size:clamp(.9rem,3vw,1.1rem);font-weight:800}.chessimals-board-overlay__stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem;width:min(26rem,92%);margin:.2rem auto 0}.chessimals-board-overlay__stats div{display:grid;gap:.08rem;min-width:0;border:1px solid rgba(255,255,255,.18);border-radius:.75rem;padding:.42rem .46rem;background:#ffffff1a;backdrop-filter:blur(3px)}.chessimals-board-overlay__stats dt,.chessimals-board-overlay__stats dd{overflow:hidden;margin:0;text-overflow:ellipsis;white-space:nowrap}.chessimals-board-overlay__stats dt{color:#ffffffad;font-size:clamp(.52rem,2.1vw,.66rem);font-weight:950;letter-spacing:.04em;text-transform:uppercase}.chessimals-board-overlay__stats dd{color:#fff;font-size:clamp(.68rem,2.8vw,.88rem);font-weight:950}@keyframes chessimals-victory-sparks{0%,to{opacity:.46;transform:translateY(0) scale(.98)}50%{opacity:.95;transform:translateY(-.35rem) scale(1.02)}}@keyframes chessimals-finale-rays{to{transform:rotate(360deg)}}@keyframes chessimals-finale-ribbon{0%,to{opacity:.18;transform:translateY(-.5rem) rotate(var(--ribbon-angle))}50%{opacity:.75;transform:translateY(1.4rem) rotate(var(--ribbon-angle))}}@keyframes chessimals-finale-medal{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-.18rem) scale(1.04)}}.chessimals-cell{position:relative;isolation:isolate;--chessimals-cell-bg: var(--chessimals-cell-light);display:grid;place-items:center;min-width:0;min-height:0;aspect-ratio:1;border:0;background:radial-gradient(ellipse at 26% 24%,rgba(255,255,255,.12),transparent 24%),radial-gradient(ellipse at 78% 76%,rgba(61,54,36,.06),transparent 28%),linear-gradient(135deg,rgba(255,255,255,.04),transparent 52%,rgba(52,44,28,.04)),var(--chessimals-cell-bg);color:var(--chessimals-text);font:inherit;overflow:hidden;transition:background .16s ease,box-shadow .16s ease,transform .16s ease}.chessimals-cell:before,.chessimals-cell:after{pointer-events:none}.chessimals-cell-texture{position:absolute;inset:0;z-index:0;display:block;pointer-events:none;opacity:.42;mix-blend-mode:multiply;background:radial-gradient(ellipse at var(--wear-x, 28%) var(--wear-y, 32%),rgba(255,255,255,.16),transparent 17%),radial-gradient(ellipse at var(--wear-x2, 74%) var(--wear-y2, 68%),rgba(75,66,42,.09),transparent 25%),repeating-linear-gradient(var(--wear-angle, 26deg),rgba(75,66,42,.045) 0 1px,transparent 1px .52rem),linear-gradient(135deg,rgba(255,255,255,.06),transparent 42%,rgba(52,44,28,.045))}.chessimals-cell-texture:after{position:absolute;inset:.08rem;border:1px solid rgba(75,66,42,.05);border-radius:.18rem;box-shadow:inset .08rem .08rem #ffffff14,inset -.08rem -.08rem #342c1c0b;content:\"\"}.chessimals-cell.is-edge-cell .chessimals-cell-texture{opacity:.56;background:radial-gradient(ellipse at var(--wear-x, 28%) var(--wear-y, 32%),rgba(255,255,255,.14),transparent 18%),radial-gradient(ellipse at var(--wear-x2, 74%) var(--wear-y2, 68%),rgba(75,66,42,.14),transparent 28%),linear-gradient(135deg,rgba(70,52,28,.055),transparent 44%,rgba(52,44,28,.09)),repeating-linear-gradient(var(--wear-angle, 26deg),rgba(75,66,42,.055) 0 1px,transparent 1px .48rem)}.chessimals-cell.wear-0{--wear-x: 22%;--wear-y: 24%;--wear-x2: 78%;--wear-y2: 72%;--wear-angle: 18deg}.chessimals-cell.wear-1{--wear-x: 64%;--wear-y: 18%;--wear-x2: 30%;--wear-y2: 76%;--wear-angle: -24deg}.chessimals-cell.wear-2{--wear-x: 42%;--wear-y: 58%;--wear-x2: 82%;--wear-y2: 26%;--wear-angle: 42deg}.chessimals-cell.wear-3{--wear-x: 74%;--wear-y: 68%;--wear-x2: 24%;--wear-y2: 28%;--wear-angle: -12deg}.chessimals-cell.wear-4{--wear-x: 34%;--wear-y: 18%;--wear-x2: 62%;--wear-y2: 84%;--wear-angle: 64deg}.chessimals-cell.wear-5{--wear-x: 18%;--wear-y: 70%;--wear-x2: 70%;--wear-y2: 34%;--wear-angle: -48deg}:host-context(html.ion-palette-dark) .chessimals-cell-texture,:host-context([data-theme=\"dark\"]) .chessimals-cell-texture{opacity:.34;mix-blend-mode:soft-light}.chessimals-cell.is-dark-cell{--chessimals-cell-bg: var(--chessimals-cell-dark)}.chessimals-cell.is-selected{z-index:1;background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.28) 0 36%,transparent 62%),linear-gradient(135deg,rgba(var(--chessimals-selected-rgb),.22),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .18rem var(--chessimals-selected),inset 0 0 .55rem #ffffffb8,inset 0 0 1.8rem rgba(var(--chessimals-selected-rgb),.42),0 0 .55rem rgba(var(--chessimals-selected-rgb),.56),0 0 1.55rem rgba(var(--chessimals-selected-rgb),.36)}.chessimals-board.is-power-aiming .chessimals-cell.is-selected{background:radial-gradient(circle at 50% 52%,rgba(var(--chessimals-magic-rgb),.38) 0 34%,transparent 64%),radial-gradient(circle at 32% 24%,rgba(255,255,255,.34),transparent 28%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.2),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .18rem var(--chessimals-magic-hot),inset 0 0 .8rem #ffffffa8,inset 0 0 1.9rem rgba(var(--chessimals-magic-rgb),.5),0 0 .7rem rgba(var(--chessimals-magic-rgb),.62),0 0 1.75rem rgba(var(--chessimals-magic-rgb),.42)}.chessimals-board.is-power-aiming .chessimals-cell.is-legal:not(.is-capture):after{border-color:rgba(var(--chessimals-magic-rgb),.94);box-shadow:0 0 .72rem rgba(var(--chessimals-magic-rgb),.48),inset 0 0 .6rem #fff3}.chessimals-board.is-power-aiming .chessimals-target{background:var(--chessimals-magic-hot);box-shadow:0 0 0 .2rem rgba(var(--chessimals-magic-rgb),.2),0 0 .95rem rgba(var(--chessimals-magic-rgb),.62)}.chessimals-cell.is-legal:not(.is-capture):after{position:absolute;inset:13%;z-index:2;border:max(2px,1.8%) solid var(--chessimals-move);border-radius:.55rem;content:\"\";opacity:.74;pointer-events:none}.chessimals-cell.is-last:not(.is-selected):not(.is-legal):not(.is-capture){background:radial-gradient(circle,rgba(var(--chessimals-last-rgb),.16) 0 42%,transparent 68%),var(--chessimals-cell-bg)}.chessimals-cell.is-capture{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.24),transparent 34%),linear-gradient(135deg,rgba(var(--chessimals-capture-rgb),.14),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .14rem rgba(var(--chessimals-capture-rgb),.84),inset 0 0 1.4rem rgba(var(--chessimals-capture-rgb),.24),0 0 .95rem rgba(var(--chessimals-capture-rgb),.34);animation:chessimals-capture-aura 1.35s ease-in-out infinite}.chessimals-cell.is-capture:before{position:absolute;inset:4%;z-index:1;display:block;border-radius:.64rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.52),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.24),transparent 58%);content:\"\";opacity:0;transform:translate(-42%) scale(.9);animation:chessimals-capture-sweep 1.35s ease-in-out infinite}.chessimals-cell.is-capture:after{position:absolute;inset:8%;z-index:3;border:max(2px,1.55%) solid rgba(var(--chessimals-capture-rgb),.9);border-radius:.62rem;box-shadow:0 0 .75rem rgba(var(--chessimals-capture-rgb),.5),inset 0 0 .72rem #ffffff38;content:\"\";pointer-events:none;animation:chessimals-capture-frame 1.35s ease-in-out infinite}.chessimals-cell.has-capture-ready:not(.is-selected):after{position:absolute;inset:16%;z-index:3;border:max(2px,1.45%) solid rgba(var(--chessimals-selected-rgb),.72);border-radius:999px;box-shadow:0 0 .65rem rgba(var(--chessimals-selected-rgb),.34),inset 0 0 .55rem #ffffff2e;content:\"\"}.chessimals-cell.is-winning.is-legal:not(.is-capture):after{border-color:rgba(var(--chessimals-warning-rgb),.92);border-radius:999px;box-shadow:0 0 .75rem rgba(var(--chessimals-warning-rgb),.48),inset 0 0 .58rem #ffffff38}.chessimals-cell.is-winning .chessimals-target{background:var(--chessimals-warning);box-shadow:0 0 0 .22rem rgba(var(--chessimals-warning-rgb),.2),0 0 .95rem rgba(var(--chessimals-warning-rgb),.56)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture){background:radial-gradient(circle at 50% 52%,rgba(var(--chessimals-warning-rgb),.16),transparent 52%),var(--chessimals-cell-bg)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture) .chessimals-piece{filter:drop-shadow(0 0 .38rem rgba(var(--chessimals-warning-rgb),.52)) var(--chessimals-piece-white-shadow)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture) .chessimals-piece.is-black{filter:drop-shadow(0 0 .38rem rgba(var(--chessimals-warning-rgb),.52)) var(--chessimals-piece-black-shadow)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture):before{position:absolute;top:.26rem;right:.26rem;z-index:4;width:.48rem;height:.48rem;border-radius:999px;background:rgba(var(--chessimals-warning-rgb),.96);box-shadow:0 0 0 .18rem rgba(var(--chessimals-warning-rgb),.22);content:\"\"}@keyframes chessimals-capture-aura{0%,to{filter:saturate(1);box-shadow:inset 0 0 0 .12rem rgba(var(--chessimals-capture-rgb),.78),inset 0 0 1rem rgba(var(--chessimals-capture-rgb),.2),0 0 .64rem rgba(var(--chessimals-capture-rgb),.32)}50%{filter:saturate(1.22);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.96),inset 0 0 1.34rem rgba(var(--chessimals-capture-rgb),.34),0 0 1.2rem rgba(var(--chessimals-capture-rgb),.48)}}@keyframes chessimals-capture-sweep{0%{opacity:0;transform:translate(-52%) scale(.88)}42%{opacity:.66;transform:translate(0) scale(1)}to{opacity:0;transform:translate(48%) scale(.92)}}@keyframes chessimals-capture-frame{0%,to{opacity:.68;transform:scale(.96)}50%{opacity:1;transform:scale(1)}}.chessimals-cell.has-source-effect:not(.is-moving-source){background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.12) 0 34%,transparent 64%),var(--chessimals-cell-bg)}.chessimals-cell.has-move-effect{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.22) 0 34%,transparent 68%),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.86),inset 0 0 1.2rem rgba(var(--chessimals-capture-rgb),.26),0 0 1.1rem rgba(var(--chessimals-capture-rgb),.42)}.chessimals-cell.has-move-effect:before{position:absolute;inset:.12rem;z-index:1;display:block;border-radius:.7rem;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.48),transparent 22%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.42),transparent 58%);content:\"\";opacity:0;transform:scale(.72);animation:chessimals-power-impact .7s ease-out both}.chessimals-cell.has-move-effect:after{position:absolute;inset:.28rem;z-index:4;display:block;border:.14rem solid rgba(255,255,255,.72);border-radius:.58rem;box-shadow:0 0 .5rem #ffffff5c,0 0 1rem rgba(var(--chessimals-capture-rgb),.32);content:\"\";animation:chessimals-power-frame .86s ease-out both}.chessimals-cell.has-capture-effect{animation:chessimals-capture-hit .78s ease-out both}.chessimals-cell.effect-eagle:before{background:linear-gradient(135deg,transparent 10%,rgba(255,255,255,.78) 48%,transparent 52%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.36),transparent 62%)}.chessimals-cell.effect-bull:before{background:repeating-linear-gradient(90deg,rgba(255,255,255,.34) 0 .16rem,transparent .16rem .34rem),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.38),transparent 62%)}.chessimals-cell.effect-kangaroo:before{border-radius:999px;background:radial-gradient(circle at 42% 44%,rgba(255,255,255,.58),transparent 18%),radial-gradient(circle at 58% 56%,rgba(var(--chessimals-capture-rgb),.4),transparent 64%)}.chessimals-cell.effect-lion:before{background:conic-gradient(from 0deg,transparent,rgba(255,255,255,.56),transparent,rgba(var(--chessimals-capture-rgb),.4),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.34),transparent 62%)}@keyframes chessimals-power-impact{0%{opacity:0;transform:scale(.54) rotate(0)}28%{opacity:1;transform:scale(.96) rotate(2deg)}to{opacity:0;transform:scale(1.3) rotate(8deg)}}@keyframes chessimals-power-frame{0%{opacity:0;transform:scale(.84)}34%{opacity:1;transform:scale(1.02)}to{opacity:0;transform:scale(1.16)}}@keyframes chessimals-capture-hit{0%,to{filter:saturate(1)}35%{filter:saturate(1.35) brightness(1.08)}}.chessimals-cell.is-moving-source .chessimals-piece{opacity:0}.chessimals-piece{position:relative;z-index:2;display:block;width:68%;height:74%;color:var(--chessimals-primary);--chessimals-piece-fill: var(--chessimals-piece-white-fill);--chessimals-piece-side: var(--chessimals-piece-white-side);--chessimals-piece-line: var(--chessimals-piece-white-line);--chessimals-piece-outline: rgba(82, 65, 46, .34);filter:var(--chessimals-piece-white-shadow)}.chessimals-piece.is-black{color:#fff;--chessimals-piece-fill: var(--chessimals-piece-black-fill);--chessimals-piece-side: var(--chessimals-piece-black-side);--chessimals-piece-line: var(--chessimals-piece-black-line);--chessimals-piece-outline: rgba(255, 255, 255, .22);filter:var(--chessimals-piece-black-shadow)}.chessimals-moving-piece{position:absolute;top:0;left:0;z-index:6;width:calc(100% / var(--board-size));height:calc(100% / var(--board-size));display:grid;place-items:center;pointer-events:none;transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%));animation:chessimals-piece-travel .36s cubic-bezier(.2,.82,.24,1) both}@keyframes chessimals-piece-travel{0%{transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%)) scale(1)}68%{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1.07)}to{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1)}}.chessimals-piece__side,.chessimals-piece__head,.chessimals-piece__collar,.chessimals-piece__neck,.chessimals-piece__base{position:absolute;display:block;left:50%;background:var(--chessimals-piece-fill);border:max(1px,1.25%) solid var(--chessimals-piece-outline);transform:translate(-50%)}.chessimals-piece__side{top:46%;z-index:0;width:58%;height:41%;border-radius:34% 34% 12% 12%;background:linear-gradient(96deg,var(--chessimals-piece-side) 0 34%,transparent 35%),var(--chessimals-piece-fill);clip-path:polygon(22% 0,78% 0,96% 100%,4% 100%);opacity:.92}.chessimals-piece__head{top:1%;z-index:4;width:48%;height:40%;border-radius:999px;background:radial-gradient(circle at 30% 22%,rgba(255,255,255,.72) 0 13%,transparent 14%),linear-gradient(135deg,rgba(255,255,255,.28) 0 34%,transparent 35%),var(--chessimals-piece-fill);box-shadow:inset -.18rem -.12rem #52412e0f,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece.is-black .chessimals-piece__head{box-shadow:inset .18rem -.12rem #ffffff0f,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece__collar{top:37%;z-index:5;width:72%;height:15%;border-radius:999px;background:linear-gradient(180deg,#f5cd77 0%,var(--chessimals-piece-gold) 55%,var(--chessimals-piece-gold-dark) 100%);border-color:color-mix(in srgb,var(--chessimals-piece-gold-dark) 72%,transparent);box-shadow:inset 0 .12rem #ffffff47,inset 0 -.08rem #462e1238,0 .08rem .18rem #462e1224}.chessimals-piece__neck{top:50%;z-index:2;width:52%;height:31%;clip-path:polygon(16% 0,84% 0,100% 100%,0 100%);background:linear-gradient(100deg,var(--chessimals-piece-side) 0 28%,transparent 29%),linear-gradient(180deg,var(--chessimals-piece-fill),color-mix(in srgb,var(--chessimals-piece-fill) 78%,var(--chessimals-piece-side)));box-shadow:inset -.12rem .1rem #ffffff14}.chessimals-piece__base{bottom:0;z-index:6;width:86%;height:17%;border-radius:.42rem .42rem .22rem .22rem;background:linear-gradient(100deg,var(--chessimals-piece-side) 0 18%,transparent 19%),linear-gradient(180deg,color-mix(in srgb,var(--chessimals-piece-fill) 92%,#ffffff),var(--chessimals-piece-fill));box-shadow:inset 0 .12rem #ffffff24,inset 0 -.1rem 0 var(--chessimals-piece-line)}.chessimals-target{width:16%;height:16%;border-radius:999px;background:var(--chessimals-move);opacity:.9;box-shadow:0 0 .9rem rgba(var(--chessimals-move-rgb),.42)}.chessimals-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.625rem}.chessimals-cards button{position:relative;isolation:isolate;display:grid;grid-template-rows:minmax(5.4rem,1fr) auto;gap:.5rem;place-items:stretch;min-height:8.15rem;padding:.55rem .55rem .7rem;border:.12rem solid rgba(var(--chessimals-magic-rgb),.54);border-radius:1.125rem;background:radial-gradient(circle at 50% 18%,rgba(255,255,255,.9),transparent 36%),linear-gradient(180deg,rgba(var(--chessimals-magic-rgb),.24),rgba(var(--chessimals-magic-deep),.08) 58%,transparent),var(--chessimals-panel);color:var(--chessimals-text);font:inherit;box-shadow:inset 0 0 0 .14rem #ffffff75,0 .55rem 1.2rem rgba(var(--chessimals-magic-rgb),.14);transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.chessimals-powers__heading{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.chessimals-powers p{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-powers__heading span{flex:0 0 auto;border-radius:999px;padding:.28rem .62rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-size:.78rem;font-weight:950}.chessimals-cards button.is-selected{border-color:var(--chessimals-magic-hot);background:radial-gradient(circle at 50% 16%,rgba(255,255,255,.42),transparent 30%),radial-gradient(circle at 50% 76%,rgba(var(--chessimals-magic-rgb),.2),transparent 56%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.2),#ffffff0a),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-magic-rgb),.28),0 0 1.35rem rgba(var(--chessimals-magic-rgb),.48),0 .9rem 2rem rgba(var(--chessimals-magic-rgb),.18);transform:translateY(-1px)}.chessimals-cards button.is-selected:before,.chessimals-cards button.is-selected:after{position:absolute;inset:-.5rem;z-index:0;border-radius:inherit;content:\"\";pointer-events:none}.chessimals-cards button>*{position:relative;z-index:1}.chessimals-cards button.is-selected:before{background:radial-gradient(circle at 18% 24%,rgba(var(--chessimals-magic-rgb),.88) 0 .08rem,transparent .1rem),radial-gradient(circle at 78% 20%,rgba(255,255,255,.86) 0 .07rem,transparent .09rem),radial-gradient(circle at 86% 62%,rgba(var(--chessimals-magic-rgb),.72) 0 .06rem,transparent .08rem),radial-gradient(circle at 28% 78%,rgba(255,245,111,.78) 0 .07rem,transparent .09rem),radial-gradient(circle at 54% 8%,rgba(255,255,255,.68) 0 .05rem,transparent .07rem);opacity:.8;animation:chessimalsMagicParticles 1.8s ease-in-out infinite}.chessimals-cards button.is-selected:after{background:conic-gradient(from 12deg,transparent 0 16deg,rgba(var(--chessimals-magic-rgb),.2) 16deg 22deg,transparent 22deg 44deg);opacity:.68;filter:blur(.04rem);animation:chessimalsMagicAura 3.2s linear infinite}.chessimals-cards button.is-used{opacity:.42}.chessimals-animal-face{display:grid;place-items:center;width:100%;min-height:5.4rem;overflow:hidden;border:.12rem solid rgba(var(--chessimals-magic-deep),.62);border-radius:.9rem;background:radial-gradient(circle at 50% 34%,rgba(255,255,255,.96),transparent 44%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.38),rgba(var(--chessimals-magic-deep),.14)),var(--chessimals-animal-face-bg);color:color-mix(in srgb,var(--chessimals-text) 92%,#000);box-shadow:inset 0 0 0 .12rem #ffffff7a,inset 0 -.18rem .45rem rgba(var(--chessimals-magic-deep),.14)}.chessimals-animal-face img{display:block;width:min(5.45rem,88%);height:min(5.45rem,88%);pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;object-fit:contain;transform:none;filter:var(--chessimals-animal-face-filter)}.chessimals-bot-avatar,.chessimals-challenge-intro__avatar{display:grid;overflow:hidden;place-items:center}.chessimals-bot-avatar img,.chessimals-challenge-intro__avatar img{display:block;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;object-fit:contain}.chessimals-cards button.is-selected .chessimals-animal-face,.chessimals-powers.is-ready .chessimals-cards button:not(.is-used) .chessimals-animal-face{color:color-mix(in srgb,var(--chessimals-text) 94%,#000)}.chessimals-powers.is-locked .chessimals-animal-face{filter:var(--chessimals-animal-face-locked-filter);opacity:.86}.chessimals-powers.is-locked .chessimals-animal-face img,.chessimals-cards button.is-used .chessimals-animal-face img{opacity:var(--chessimals-animal-face-locked-img-opacity)}.chessimals-power-uses{position:absolute;top:.5rem;right:.5rem;z-index:2;display:inline-grid;place-items:center;min-width:1.72rem;height:1.35rem;border-radius:999px;padding:0 .38rem;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.72rem;font-weight:1000;line-height:1;box-shadow:0 .35rem .9rem rgba(var(--chessimals-primary-rgb),.22)}.chessimals-cards strong{overflow:hidden;max-width:100%;align-self:center;font-size:clamp(.9rem,2.3vw,1.08rem);font-weight:950;line-height:1.05;text-align:center;text-overflow:ellipsis;white-space:nowrap}.chessimals-powers.is-locked .chessimals-cards{opacity:.68}.chessimals-powers.is-ready{border-color:rgba(var(--chessimals-magic-rgb),.46);box-shadow:0 0 0 1px rgba(var(--chessimals-magic-rgb),.12),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}.chessimals-powers.is-ready .chessimals-cards button:not(.is-used){animation:chessimalsPowerPulse 1.8s ease-in-out infinite}.chessimals-powers.is-unlock-pulse{animation:chessimalsPowersUnlocked 1.18s ease-out both}.chessimals-powers.is-unlock-pulse .chessimals-cards button:not(.is-used){animation:chessimalsPowerIgnite .76s ease-out both,chessimalsPowerPulse 1.8s ease-in-out .76s infinite}@keyframes chessimalsPowerPulse{0%,to{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}50%{box-shadow:0 0 1.4rem rgba(var(--chessimals-magic-rgb),.24)}}@keyframes chessimalsPowersUnlocked{0%{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}34%{box-shadow:0 0 0 .18rem rgba(var(--chessimals-magic-rgb),.28),0 0 2.2rem rgba(var(--chessimals-magic-rgb),.38),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.16)}to{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}}@keyframes chessimalsPowerIgnite{0%{transform:translateY(0) scale(.96);box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}42%{transform:translateY(-.08rem) scale(1.025);box-shadow:0 0 0 .14rem rgba(var(--chessimals-magic-rgb),.24),0 0 1.5rem rgba(var(--chessimals-magic-rgb),.46)}to{transform:translateY(0) scale(1);box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}}@keyframes chessimalsMagicParticles{0%,to{opacity:.54;transform:translateY(0) scale(.94)}50%{opacity:1;transform:translateY(-.18rem) scale(1.02)}}@keyframes chessimalsMagicAura{to{transform:rotate(1turn)}}.chessimals-actions{order:6;align-self:stretch;justify-self:stretch;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr));gap:.625rem;margin-top:1rem}.chessimals-shell--projection .chessimals-game{max-width:min(96vw,90rem)}.chessimals-shell--projection .chessimals-turn-card{padding:.875rem 1rem}.chessimals-shell--projection .chessimals-status,.chessimals-shell--projection .chessimals-actions,.chessimals-shell--projection .chessimals-online,.chessimals-shell--projection .chessimals-replay,.chessimals-shell--projection .chessimals-rematch-status{display:none}.chessimals-shell--projection .chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center}.chessimals-shell--projection .chessimals-board-wrap{--chessimals-board-radius: min(.625rem, 10px);width:min(96vw,82vh,58rem);max-width:none}.chessimals-shell--projection .chessimals-board-frame{flex-basis:auto;max-width:none}@media (min-width: 760px){.chessimals-game{gap:1rem}.chessimals-turn-card,.chessimals-status,.chessimals-arena,.chessimals-replay,.chessimals-result,.chessimals-actions{grid-column:1 / -1}.chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center;align-items:start;gap:.85rem}.chessimals-shell:not(.chessimals-shell--projection) .chessimals-board-frame{flex-basis:min(100%,clamp(28rem,calc(100vh - 22rem),50rem));width:min(100%,clamp(28rem,calc(100vh - 22rem),50rem));max-width:min(50rem,clamp(28rem,calc(100vh - 22rem),50rem))}.chessimals-powers{width:min(100%,40rem);align-content:center;grid-template-columns:minmax(11rem,.68fr) minmax(0,1fr);align-items:center;gap:.8rem;padding:.78rem}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr))}.chessimals-cards button{grid-template-rows:minmax(3.85rem,1fr) auto;min-height:5.85rem}.chessimals-animal-face{min-height:3.85rem}.chessimals-animal-face img{width:min(3.85rem,88%);height:min(3.85rem,88%)}.chessimals-powers p{-webkit-line-clamp:3}}.chessimals-rules{display:grid;gap:1.05rem;padding-top:.25rem}.chessimals-settings{display:grid;gap:.85rem;color:var(--chessimals-modal-text, var(--chessimals-text))}.chessimals-settings article{display:grid;gap:.65rem;padding:1rem;border:1px solid var(--chessimals-modal-border, rgba(var(--chessimals-primary-rgb), .2));border-radius:1.1rem;background:radial-gradient(circle at 14% 8%,color-mix(in srgb,var(--chessimals-modal-card, #ffffff) 82%,transparent),transparent 28%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),rgba(var(--chessimals-sky-rgb),.06)),var(--chessimals-modal-card-strong, var(--chessimals-elevated-strong));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--chessimals-modal-surface, #ffffff) 48%,transparent)}:host ::ng-deep ion-modal.chessimals-settings-modal val-modal-shell ion-toolbar{--background: var(--chessimals-modal-surface);--color: var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-settings-modal val-modal-shell ion-content{--background: var(--chessimals-modal-surface);color:var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-settings-modal val-modal-shell ion-button{--color: var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-settings-modal .chessimals-settings val-toggle-input ion-toggle{--track-background: rgba(var(--chessimals-primary-rgb), .14);--track-background-checked: var(--chessimals-primary);--handle-background: var(--chessimals-modal-card);--handle-background-checked: var(--chessimals-primary-contrast);color:var(--chessimals-modal-text);font-weight:900}:host ::ng-deep ion-modal.chessimals-settings-modal .chessimals-settings val-range-input ion-label{color:var(--chessimals-modal-text);font-weight:900}:host ::ng-deep ion-modal.chessimals-settings-modal .chessimals-settings val-range-input ion-range{--bar-background: rgba(var(--chessimals-primary-rgb), .14);--bar-background-active: var(--chessimals-primary);--bar-height: .32rem;--bar-border-radius: 999px;--knob-background: var(--chessimals-primary-contrast);--knob-size: 1.28rem;--pin-background: var(--chessimals-primary);--pin-color: var(--chessimals-primary-contrast);color:var(--chessimals-modal-text)}.chessimals-about{display:grid;justify-items:center;gap:1rem;color:var(--ion-text-color, var(--chessimals-text))}.chessimals-about__logo{display:block;width:min(25rem,88%);height:auto;object-fit:contain;object-position:center;filter:drop-shadow(0 .5rem .7rem rgba(46,58,44,.14))}.chessimals-about__thanks{color:var(--ion-text-color, var(--chessimals-text));font-size:1.08rem;font-weight:950;line-height:1.2;text-align:center}.chessimals-about__feedback{max-width:30rem}.chessimals-about p{margin:0;color:var(--ion-color-medium, var(--chessimals-muted));font-size:.95rem;font-weight:750;line-height:1.45;text-align:center}.chessimals-about dl{display:grid;width:100%;margin:0;gap:.65rem}.chessimals-about dl div{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem .95rem;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--ion-card-background, #fff)}.chessimals-about dt,.chessimals-about dd{margin:0}.chessimals-about dt{color:var(--ion-color-medium, var(--chessimals-muted));font-size:.78rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-about dd{color:var(--ion-text-color, var(--chessimals-text));font-size:.95rem;font-weight:950}.chessimals-rules__hero{display:block;width:100%;height:auto;object-fit:contain;border-radius:1.25rem;background:transparent;box-shadow:0 .85rem 1.8rem #2e3a2c1f}.chessimals-rules__powers,.chessimals-rules__note,.chessimals-rules__steps article{display:grid;align-items:start;gap:.75rem;border:1px solid var(--chessimals-modal-border, rgba(var(--chessimals-primary-rgb), .16));border-radius:1.25rem;background:var(--chessimals-modal-card, #ffffff);color:var(--chessimals-modal-text, var(--ion-text-color, #2f2a3a))}.chessimals-rules__section-title span{justify-self:start;border-radius:999px;padding:.24rem .55rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-rules__section-title{display:grid;gap:.35rem;padding-inline:0}.chessimals-rules__section-title strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.25}.chessimals-rules__steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem}.chessimals-rules__steps article{align-content:start;padding:.9rem}.chessimals-rules__steps article>img,.chessimals-rules__powers>img,.chessimals-rules__note>img{display:block;width:4.75rem;height:4.75rem;border-radius:1.15rem;object-fit:cover;box-shadow:0 0 0 .1rem rgba(var(--chessimals-sun-rgb),.68),0 .7rem 1.25rem #2e3a2c29}.chessimals-rules__powers,.chessimals-rules__note{grid-template-columns:auto minmax(0,1fr);padding:.95rem}.chessimals-rules__power-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem;margin-top:.35rem}.chessimals-rules__power-list span{display:grid;justify-items:center;align-content:center;gap:.32rem;min-width:0;min-height:8.1rem;border:1px solid var(--chessimals-modal-border, rgba(var(--chessimals-primary-rgb), .16));border-radius:1rem;padding:.8rem .52rem;background:radial-gradient(circle at 50% 0,color-mix(in srgb,var(--chessimals-modal-card, #ffffff) 78%,transparent),transparent 52%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),rgba(var(--chessimals-sun-rgb),.18)),var(--chessimals-modal-card-strong, #fff8df);color:var(--chessimals-modal-text, var(--chessimals-text));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--chessimals-modal-surface, #ffffff) 64%,transparent),0 .55rem 1.15rem var(--chessimals-modal-shadow, rgba(46, 58, 44, .12));font-size:.78rem;font-weight:950;line-height:1.05;text-align:center}.chessimals-rules__power-list strong,.chessimals-rules__power-list small{min-width:0}.chessimals-rules__power-list strong{font-size:.86rem;font-weight:950;line-height:1.08}.chessimals-rules__power-list small{color:var(--chessimals-muted);font-size:.69rem;font-weight:820;line-height:1.15}.chessimals-rules__power-list img{display:block;width:3.25rem;height:3.25rem;object-fit:contain;filter:drop-shadow(0 .25rem .35rem rgba(46,58,44,.16))}.chessimals-rules__note{border-color:rgba(var(--chessimals-sun-rgb),.34);background:linear-gradient(135deg,rgba(var(--chessimals-sun-rgb),.1),rgba(var(--chessimals-primary-rgb),.04)),var(--chessimals-modal-card, #ffffff)}.chessimals-rules article>span{display:grid;place-items:center;width:2rem;height:2rem;border-radius:999px;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-weight:950}.chessimals-rules article>div{display:grid;min-width:0;gap:.35rem}.chessimals-rules h3,.chessimals-rules p,.chessimals-rules ul{margin:0}.chessimals-rules h3{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.2}.chessimals-rules p,.chessimals-rules li{color:var(--chessimals-modal-muted, var(--ion-color-medium, #6f6a7a));font-size:.88rem;font-weight:760;line-height:1.5}.chessimals-rules ul{display:grid;gap:.45rem;padding-left:1.15rem}.chessimals-primary,.chessimals-secondary{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:3.625rem;border-radius:999px;font:inherit;font-weight:950}.chessimals-primary{border:0;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 1.125rem 2.8rem rgba(var(--chessimals-primary-rgb),.28)}.chessimals-secondary{border:1px solid var(--chessimals-border);background:transparent;color:var(--chessimals-text)}.chessimals-primary.is-working,.chessimals-secondary.is-working{cursor:wait;opacity:.82}.chessimals-button-spinner{width:1rem;height:1rem;flex:0 0 auto;border:.14rem solid currentColor;border-right-color:transparent;border-radius:999px;animation:chessimals-spin .72s linear infinite}@media (max-width: 560px){.chessimals-home-actions{grid-template-columns:1fr}.chessimals-home-action{min-height:0}.chessimals-rules__steps,.chessimals-rules__powers,.chessimals-rules__note{grid-template-columns:1fr}.chessimals-rules__power-list{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-size,.chessimals-mode,.chessimals-actions,.chessimals-play-options .chessimals-nightmare,.chessimals-challenge-cta,.chessimals-path-cta,.chessimals-path-hero,.chessimals-path-grid,.chessimals-path-highlights,.chessimals-path-rings,.chessimals-path-stats{grid-template-columns:1fr}.chessimals-path-hero{justify-items:start}.chessimals-path-hero__art{width:6.25rem;height:6.25rem}.chessimals-path-cta__action{justify-self:stretch;width:100%}.chessimals-path-hero__medal{justify-self:stretch;width:100%;min-height:5.5rem}.chessimals-path-bars span{grid-template-columns:minmax(0,1fr) auto}.chessimals-path-bars i{grid-column:1 / -1;order:3}.chessimals-challenge-cta__actions,.chessimals-challenge-cta__rival{min-width:0}.chessimals-challenge-hero,.chessimals-challenge-focus{grid-template-columns:1fr}.chessimals-challenge-card{padding:.85rem}.chessimals-challenge-card__stats{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-game{gap:.55rem}.chessimals-turn-card{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.5rem;min-height:0;border-radius:.95rem;padding:.5rem}.chessimals-turn-card__copy{gap:.1rem}.chessimals-turn-card__chip{max-width:100%;padding:.18rem .5rem;font-size:.6rem;letter-spacing:.045em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-turn-card strong{font-size:clamp(.92rem,4.4vw,1.12rem);line-height:1.08}.chessimals-turn-card p{display:-webkit-box;overflow:hidden;font-size:.72rem;line-height:1.2;-webkit-box-orient:vertical;-webkit-line-clamp:1}.chessimals-player-strip{width:auto;max-width:none;min-width:0;padding:.25rem}.chessimals-player-strip__avatar{flex:0 0 1.8rem;width:1.8rem;height:1.8rem;aspect-ratio:1 / 1}:host ::ng-deep .chessimals-player-strip .chessimals-turn-avatar{width:1.8rem;min-width:1.8rem;height:1.8rem}.chessimals-player-strip__text{display:none}.chessimals-status{grid-template-columns:repeat(3,minmax(0,1fr));gap:.3rem}.chessimals-status div{gap:.14rem;min-height:2.2rem;border-radius:.82rem;padding:.34rem .3rem}.chessimals-status small{font-size:.58rem;line-height:1.05}.chessimals-status strong{font-size:clamp(.78rem,3.2vw,.94rem);line-height:1.05}.chessimals-challenge-live{grid-template-columns:1fr;gap:.45rem;padding:.55rem}.chessimals-challenge-live__rival>.chessimals-bot-avatar{width:2.35rem;height:2.35rem;font-size:1.15rem}.chessimals-challenge-live__rival p{-webkit-line-clamp:1}.chessimals-challenge-live__metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:.3rem}.chessimals-challenge-live__metrics span{min-height:2.35rem;padding:.32rem .36rem}.chessimals-challenge-live__metrics small{font-size:.56rem}.chessimals-challenge-live__metrics b{font-size:.82rem}.chessimals-challenge-intro{padding:.55rem}.chessimals-challenge-intro__card{gap:.42rem;width:min(15.5rem,94%);padding:.6rem}.chessimals-challenge-intro__avatar{width:3.05rem;height:3.05rem;font-size:1.62rem}.chessimals-challenge-intro__copy strong{font-size:1.02rem}.chessimals-challenge-intro__copy p{font-size:.72rem;-webkit-line-clamp:1}.chessimals-challenge-intro__facts b{font-size:.74rem}.chessimals-challenge-intro .chessimals-primary{min-height:2.15rem}.chessimals-tip,.chessimals-result,.chessimals-replay,.chessimals-online-status,.chessimals-tutorial{gap:.2rem;border-radius:1rem;padding:.7rem .75rem}.chessimals-tip strong,.chessimals-result strong,.chessimals-replay strong,.chessimals-tutorial strong{font-size:.95rem}.chessimals-tip p,.chessimals-result p{font-size:.9rem;line-height:1.28}.chessimals-result__stats{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-replay,.chessimals-tutorial{grid-template-columns:1fr}.chessimals-replay__actions{justify-content:stretch}.chessimals-replay__actions .chessimals-secondary{flex:1 1 8rem}.chessimals-arena{gap:.5rem}.chessimals-board-wrap{width:100%;margin-inline:0;padding:0}.chessimals-board-frame{width:100%}.chessimals-powers{gap:.5rem;border-radius:1rem;padding:.55rem}.chessimals-powers__heading{gap:.4rem}.chessimals-powers h2{font-size:1rem}.chessimals-powers__heading span{padding:.22rem .48rem;font-size:.68rem}.chessimals-powers p{font-size:.78rem;line-height:1.2;-webkit-line-clamp:1}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem}.chessimals-cards button{grid-template-rows:minmax(3.65rem,1fr) auto;gap:.3rem;min-height:5.4rem;border-radius:.85rem;padding:.3rem .24rem .42rem}.chessimals-animal-face{min-height:3.65rem;border-radius:.68rem}.chessimals-animal-face img{width:min(3.55rem,92%);height:min(3.55rem,92%)}.chessimals-cards strong{font-size:clamp(.64rem,2.8vw,.78rem)}.chessimals-board{border-radius:var(--chessimals-board-radius)}.chessimals-cell-coordinate{font-size:.58rem}}@media (prefers-reduced-motion: reduce){.chessimals-cell.is-capture,.chessimals-cell.is-capture:before,.chessimals-cell.is-capture:after,.chessimals-cell.has-move-effect,.chessimals-cell.has-move-effect:before,.chessimals-cell.has-move-effect:after,.chessimals-cell.has-capture-effect,.chessimals-moving-piece,.chessimals-challenge-intro,.chessimals-status__score.is-pop{animation:none!important}.chessimals-moving-piece{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%))}}\n"] }]
|
|
6219
|
+
`, styles: [":host{--chessimals-panel: #ffffff;--chessimals-surface: #fffaf1;--chessimals-elevated: rgba(255, 255, 255, .72);--chessimals-elevated-soft: rgba(255, 255, 255, .46);--chessimals-elevated-strong: rgba(255, 255, 255, .86);--chessimals-glass-highlight: rgba(255, 255, 255, .58);--chessimals-border: rgba(46, 58, 44, .18);--chessimals-text: #2e3a2c;--chessimals-muted: #51643d;--chessimals-soft: rgba(111, 122, 60, .1);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-selected: #37f28a;--chessimals-selected-rgb: 55, 242, 138;--chessimals-magic: #f7d45a;--chessimals-magic-rgb: 247, 212, 90;--chessimals-magic-hot: #fff56f;--chessimals-magic-deep: #b77a18;display:block;font-size:var(--val-mini-games-font-size, 1rem)}:host-context(body.font-small){--val-mini-games-font-size: .875rem}:host-context(body.font-large){--val-mini-games-font-size: 1.1875rem}.chessimals-shell{--chessimals-panel: #ffffff;--chessimals-surface: #fffaf1;--chessimals-elevated: rgba(255, 255, 255, .72);--chessimals-elevated-soft: rgba(255, 255, 255, .46);--chessimals-elevated-strong: rgba(255, 255, 255, .86);--chessimals-glass-highlight: rgba(255, 255, 255, .58);--chessimals-border: rgba(46, 58, 44, .18);--chessimals-text: #2e3a2c;--chessimals-muted: #51643d;--chessimals-soft: rgba(111, 122, 60, .1);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-selected: #37f28a;--chessimals-selected-rgb: 55, 242, 138;--chessimals-magic: #f7d45a;--chessimals-magic-rgb: 247, 212, 90;--chessimals-magic-hot: #fff56f;--chessimals-magic-deep: #b77a18;--chessimals-warning: #f4c542;--chessimals-warning-rgb: 244, 197, 66;--chessimals-move: var(--chessimals-sky);--chessimals-move-rgb: var(--chessimals-sky-rgb);--chessimals-capture: #1fcdb3;--chessimals-capture-rgb: 31, 205, 179;--chessimals-last: #8c6b4f;--chessimals-last-rgb: 140, 107, 79;--chessimals-cell-light: #f3f4e8;--chessimals-cell-dark: #7f944d;--chessimals-board-shadow: rgba(46, 58, 44, .14);--chessimals-piece-white-fill: #ffffff;--chessimals-piece-white-side: #f3eadb;--chessimals-piece-white-line: rgba(82, 65, 46, .12);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(84, 62, 34, .52)) drop-shadow(0 .18rem .12rem rgba(72, 58, 36, .22)) drop-shadow(0 .34rem .42rem rgba(72, 58, 36, .22));--chessimals-piece-black-fill: #242936;--chessimals-piece-black-side: #171b25;--chessimals-piece-black-line: rgba(255, 255, 255, .1);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .34)) drop-shadow(0 .18rem .1rem rgba(255, 255, 255, .12)) drop-shadow(0 .32rem .42rem rgba(0, 0, 0, .36));--chessimals-piece-gold: #c79a42;--chessimals-piece-gold-dark: #8a5f22;--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-inner-bg: #ffffff;--chessimals-animal-face-border: rgba(46, 58, 44, .12);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(46, 58, 44, .18));--chessimals-animal-face-locked-filter: grayscale(.2) saturate(.72);--chessimals-animal-face-locked-img-opacity: .72;display:grid;gap:1.125rem;width:100%;max-width:min(100%,60rem);margin:0 auto;color:var(--chessimals-text)}@media (prefers-color-scheme: dark){.chessimals-shell{--chessimals-panel: #172116;--chessimals-surface: #0f170f;--chessimals-elevated: rgba(255, 255, 255, .08);--chessimals-elevated-soft: rgba(255, 255, 255, .05);--chessimals-elevated-strong: rgba(255, 255, 255, .12);--chessimals-glass-highlight: rgba(255, 255, 255, .08);--chessimals-border: rgba(242, 230, 213, .2);--chessimals-text: #f6f3e9;--chessimals-muted: #c8cfb1;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #f3f4e8;--chessimals-cell-dark: #7f944d;--chessimals-board-shadow: rgba(0, 0, 0, .34);--chessimals-animal-face-border: rgba(242, 230, 213, .24)}}.chessimals-resume-splash{order:0;position:fixed;inset:0;z-index:1000;display:grid;place-items:center;align-content:center;gap:.65rem;padding:1.5rem;text-align:center;color:var(--chessimals-text);background:radial-gradient(circle at 50% 42%,rgba(var(--chessimals-primary-rgb),.18),transparent 22rem),color-mix(in srgb,var(--chessimals-panel) 92%,transparent);backdrop-filter:blur(.9rem)}.chessimals-resume-splash__logo{display:block;width:clamp(5.8rem,20vw,7.2rem);height:auto;animation:chessimals-resume-pulse 1.2s ease-in-out infinite;filter:drop-shadow(0 .8rem 1.2rem rgba(var(--ion-color-dark-rgb, 47, 42, 58),.18))}.chessimals-resume-splash strong{font-size:clamp(1.55rem,5vw,2.4rem);font-weight:950;line-height:1.05}.chessimals-resume-splash p{max-width:24rem;margin:0;color:var(--chessimals-muted);font-size:1rem;line-height:1.35}@keyframes chessimals-resume-pulse{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-.25rem) scale(1.04)}}@keyframes chessimals-spin{to{transform:rotate(360deg)}}@keyframes chessimals-online-pulse{0%,to{transform:scale(1);opacity:.78}50%{transform:scale(1.22);opacity:1}}:host-context(html.ion-palette-dark) .chessimals-shell,:host-context([data-theme=\"dark\"]) .chessimals-shell{--chessimals-panel: #172116;--chessimals-surface: #0f170f;--chessimals-elevated: rgba(255, 255, 255, .08);--chessimals-elevated-soft: rgba(255, 255, 255, .05);--chessimals-elevated-strong: rgba(255, 255, 255, .12);--chessimals-glass-highlight: rgba(255, 255, 255, .08);--chessimals-border: rgba(246, 227, 213, .22);--chessimals-text: #f6f3e9;--chessimals-muted: #c8cfb1;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #e8eadc;--chessimals-cell-dark: #5f7040;--chessimals-board-shadow: rgba(0, 0, 0, .34);--chessimals-capture: #66f2d7;--chessimals-capture-rgb: 102, 242, 215;--chessimals-last: #cdbe9b;--chessimals-last-rgb: 205, 190, 155;--chessimals-piece-white-fill: #fffaff;--chessimals-piece-white-side: #f0e5d4;--chessimals-piece-white-line: rgba(82, 65, 46, .12);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(84, 62, 34, .48)) drop-shadow(0 .18rem .12rem rgba(0, 0, 0, .24)) drop-shadow(0 .34rem .42rem rgba(0, 0, 0, .3));--chessimals-piece-black-fill: #202633;--chessimals-piece-black-side: #111620;--chessimals-piece-black-line: rgba(255, 255, 255, .12);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .34)) drop-shadow(0 .18rem .1rem rgba(255, 255, 255, .14)) drop-shadow(0 .34rem .44rem rgba(0, 0, 0, .52));--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-inner-bg: #ffffff;--chessimals-animal-face-border: rgba(242, 230, 213, .24);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(0, 0, 0, .22));--chessimals-animal-face-locked-filter: grayscale(.32) saturate(.72);--chessimals-animal-face-locked-img-opacity: .58}.chessimals-hero{display:grid;gap:.75rem;justify-items:center;overflow:hidden;border-radius:1.75rem;padding:clamp(1.25rem,5vw,2.5rem);background:radial-gradient(circle at 18% 12%,rgba(255,255,255,.92),transparent 20%),linear-gradient(135deg,#fdf8ee,#fff 40%,#edf3df);color:var(--chessimals-text);text-align:center;border:1px solid var(--chessimals-border)}:host-context(html.ion-palette-dark) .chessimals-hero,:host-context([data-theme=\"dark\"]) .chessimals-hero{background:radial-gradient(circle at 18% 12%,rgba(255,255,255,.08),transparent 22%),linear-gradient(135deg,#111a10,#172116 48%,#0f170f);color:var(--chessimals-text);border-color:#f6e3d538}.chessimals-hero__logo{display:grid;place-items:center;gap:.35rem;width:min(27rem,86vw);max-width:100%}.chessimals-hero__logo img{display:block;height:auto;object-fit:contain;border-radius:0}.chessimals-hero__emblem{width:min(12.25rem,48vw);margin-top:.2rem;transform:translateY(.2rem)}.chessimals-hero__wordmark{width:min(21rem,76vw)}.chessimals-hero p,.chessimals-howto p,.chessimals-tip p,.chessimals-result p,.chessimals-powers p{margin:0;line-height:1.45}.chessimals-powers{display:grid;gap:1rem;border:1px solid var(--chessimals-border);border-radius:1.625rem;padding:clamp(1rem,4vw,1.5rem);background:var(--chessimals-panel)}.chessimals-game{display:grid;gap:.875rem}.chessimals-panel{display:grid;gap:1.125rem}.chessimals-home-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.875rem}.chessimals-home-action{display:grid;justify-items:start;gap:.68rem;min-height:9.6rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:1.25rem;padding:1.15rem 1rem 1.05rem;background:radial-gradient(circle at 18% 10%,rgba(255,255,255,.74),transparent 22%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),rgba(var(--chessimals-secondary-rgb),.08)),var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-home-action--play{border-color:rgba(var(--chessimals-primary-rgb),.46);background:radial-gradient(circle at 18% 10%,rgba(255,255,255,.82),transparent 22%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.22),rgba(var(--chessimals-secondary-rgb),.12)),var(--chessimals-panel)}.chessimals-mode-icon{display:block;width:4.45rem;height:4.45rem;border-radius:1rem;object-fit:cover;background:rgba(var(--chessimals-sun-rgb),.16);box-shadow:0 0 0 1px rgba(var(--chessimals-primary-rgb),.14),0 .55rem 1rem rgba(var(--chessimals-shadow-rgb),.12)}.chessimals-home-action strong{font-size:clamp(1.1rem,3vw,1.45rem);font-weight:1000;line-height:1.05}.chessimals-home-action small{color:var(--chessimals-muted);font-size:.88rem;font-weight:900;line-height:1.3}.chessimals-options{border:1px solid var(--chessimals-border);border-radius:1.125rem;padding:.35rem;background:var(--chessimals-panel)}.chessimals-options summary{display:flex;align-items:center;justify-content:space-between;gap:.75rem;min-height:3.25rem;padding:.65rem .8rem;color:var(--chessimals-text);cursor:pointer;list-style:none}.chessimals-options summary::-webkit-details-marker{display:none}.chessimals-options summary:after{content:\"+\";display:grid;place-items:center;flex:0 0 auto;width:1.8rem;height:1.8rem;border-radius:999px;background:var(--chessimals-soft);color:var(--chessimals-primary);font-weight:950}.chessimals-options[open] summary:after{content:\"-\"}.chessimals-options summary strong,.chessimals-options summary span{display:block}.chessimals-options summary strong{font-weight:950}.chessimals-options summary span{color:var(--chessimals-muted);font-size:.84rem;font-weight:800}.chessimals-options>:not(summary){margin:.5rem}.chessimals-play-options{display:grid;gap:1.05rem;color:var(--chessimals-text)}.chessimals-play-options__group{display:grid;gap:.62rem}.chessimals-play-options__group h3{margin:0;color:var(--chessimals-text);font-size:.9rem;font-weight:950;line-height:1.15}.chessimals-play-options .chessimals-size button,.chessimals-play-options .chessimals-mode button,.chessimals-play-options .chessimals-nightmare button,.chessimals-play-options .chessimals-bots button{position:relative;overflow:hidden;min-height:4.75rem;padding:.78rem 2.1rem .78rem .9rem;border:1px solid rgba(var(--chessimals-primary-rgb),.2);border-radius:1.08rem;background:radial-gradient(circle at 16% 8%,rgba(255,255,255,.7),transparent 24%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),rgba(var(--chessimals-secondary-rgb),.05)),var(--chessimals-panel);color:var(--chessimals-text);box-shadow:inset 0 0 0 1px var(--chessimals-glass-highlight)}.chessimals-play-options .chessimals-size button.is-selected,.chessimals-play-options .chessimals-mode button.is-selected,.chessimals-play-options .chessimals-nightmare button.is-selected,.chessimals-play-options .chessimals-bots button.is-selected{border-color:var(--chessimals-primary);background:radial-gradient(circle at 16% 8%,rgba(255,255,255,.78),transparent 25%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.23),rgba(var(--chessimals-secondary-rgb),.13)),var(--chessimals-panel);box-shadow:0 0 0 .16rem rgba(var(--chessimals-primary-rgb),.18),0 .85rem 1.8rem rgba(var(--chessimals-primary-rgb),.16)}.chessimals-option-check{position:absolute;top:.65rem;right:.65rem;width:.72rem;height:.72rem;border:2px solid rgba(var(--chessimals-primary-rgb),.3);border-radius:999px;background:var(--chessimals-panel)}.is-selected>.chessimals-option-check{border-color:var(--chessimals-primary);background:var(--chessimals-primary);box-shadow:0 0 0 .28rem rgba(var(--chessimals-primary-rgb),.13)}.chessimals-play-options .chessimals-nightmare{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem}.chessimals-play-options .chessimals-nightmare button{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-areas:\"icon title\" \"icon body\";column-gap:.55rem;row-gap:.12rem;align-content:center;text-align:left}.chessimals-play-options .chessimals-nightmare strong{grid-area:title;align-self:end;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-play-options .chessimals-nightmare small{grid-area:body;color:var(--chessimals-muted);font-size:.72rem;font-weight:800;line-height:1.15}.chessimals-nightmare__icon{grid-area:icon;display:grid;place-items:center;width:2.35rem;height:2.35rem;overflow:hidden;border-radius:.8rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-weight:1000;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-nightmare__icon img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-play-options .chessimals-nightmare button.is-selected .chessimals-nightmare__icon{background:rgba(var(--chessimals-secondary-rgb),.2);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.24)}.chessimals-play-options .chessimals-difficulty{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem}.chessimals-play-options .chessimals-difficulty button{border:1px solid rgba(var(--chessimals-primary-rgb),.2);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.06),rgba(var(--chessimals-secondary-rgb),.04)),var(--chessimals-panel);color:var(--chessimals-text);box-shadow:inset 0 0 0 1px var(--chessimals-glass-highlight)}.chessimals-play-options .chessimals-difficulty button.is-selected{border-color:var(--chessimals-primary);background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 0 0 .16rem rgba(var(--chessimals-primary-rgb),.18),0 .72rem 1.25rem rgba(var(--chessimals-primary-rgb),.16)}.chessimals-play-options .chessimals-bots button>.chessimals-bot-avatar{width:2.45rem;height:2.45rem;border-radius:.8rem;background:rgba(var(--chessimals-primary-rgb),.12)}.chessimals-play-options .chessimals-bots button.is-selected>.chessimals-bot-avatar{background:rgba(var(--chessimals-secondary-rgb),.2);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.24)}.chessimals-play-modal{--chessimals-panel: var(--chessimals-modal-card, #ffffff);--chessimals-elevated: var(--chessimals-modal-card-strong, rgba(255, 255, 255, .72));--chessimals-elevated-soft: color-mix(in srgb, var(--chessimals-modal-card, #ffffff) 74%, transparent);--chessimals-elevated-strong: var(--chessimals-modal-card-strong, rgba(255, 255, 255, .86));--chessimals-glass-highlight: color-mix(in srgb, var(--chessimals-modal-surface, #ffffff) 58%, transparent);--chessimals-border: var(--chessimals-modal-border, rgba(46, 58, 44, .18));--chessimals-text: var(--chessimals-modal-text, #2e3a2c);--chessimals-muted: var(--chessimals-modal-muted, #51643d);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--background: var(--chessimals-primary);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--border-color: var(--chessimals-primary);--border-radius: 999px;--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast);--val-modal-footer-gap: .7rem}.chessimals-rules-modal{--chessimals-border: var(--chessimals-modal-border, rgba(46, 58, 44, .18));--chessimals-text: var(--chessimals-modal-text, #2e3a2c);--chessimals-muted: var(--chessimals-modal-muted, #51643d);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--ion-background-color: var(--chessimals-modal-surface, #ffffff);--ion-card-background: var(--chessimals-modal-card, #ffffff);--ion-text-color: var(--chessimals-text);--val-modal-footer-gap: .7rem}.chessimals-confirm-modal{--chessimals-border: var(--chessimals-modal-border, rgba(46, 58, 44, .18));--chessimals-text: var(--chessimals-modal-text, #2e3a2c);--chessimals-muted: var(--chessimals-modal-muted, #51643d);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--ion-background-color: var(--chessimals-modal-surface, #ffffff);--ion-card-background: var(--chessimals-modal-card, #ffffff);--ion-text-color: var(--chessimals-text);--val-modal-footer-gap: .7rem}:host ::ng-deep ion-modal.chessimals-themed-modal{--chessimals-modal-surface: #ffffff;--chessimals-modal-card: #ffffff;--chessimals-modal-card-strong: #f8fbf5;--chessimals-modal-text: #2e3a2c;--chessimals-modal-muted: #5f6f50;--chessimals-modal-border: rgba(46, 58, 44, .18);--chessimals-modal-shadow: rgba(46, 58, 44, .14);--ion-background-color: var(--chessimals-modal-surface);--ion-card-background: var(--chessimals-modal-card);--ion-text-color: var(--chessimals-modal-text);--ion-color-dark: var(--chessimals-modal-text);--ion-color-dark-rgb: 46, 58, 44;--ion-color-medium: var(--chessimals-modal-muted);--ion-color-medium-rgb: 95, 111, 80;--ion-border-color: var(--chessimals-modal-border);--ion-color-primary: var(--chessimals-primary);--ion-color-primary-rgb: var(--chessimals-primary-rgb);--ion-color-primary-contrast: var(--chessimals-primary-contrast);--ion-color-primary-shade: #285f36;--ion-color-primary-tint: #43804f}@media (prefers-color-scheme: dark){:host ::ng-deep ion-modal.chessimals-themed-modal{--chessimals-modal-surface: #121811;--chessimals-modal-card: #182217;--chessimals-modal-card-strong: #1d2a1c;--chessimals-modal-text: #f6f3e9;--chessimals-modal-muted: #c8cfb1;--chessimals-modal-border: rgba(246, 227, 213, .2);--chessimals-modal-shadow: rgba(0, 0, 0, .36);--ion-color-dark-rgb: 246, 243, 233;--ion-color-medium-rgb: 200, 207, 177}}:host-context(html.ion-palette-dark) ::ng-deep ion-modal.chessimals-themed-modal,:host-context([data-theme=\"dark\"]) ::ng-deep ion-modal.chessimals-themed-modal{--chessimals-modal-surface: #121811;--chessimals-modal-card: #182217;--chessimals-modal-card-strong: #1d2a1c;--chessimals-modal-text: #f6f3e9;--chessimals-modal-muted: #c8cfb1;--chessimals-modal-border: rgba(246, 227, 213, .2);--chessimals-modal-shadow: rgba(0, 0, 0, .36);--ion-color-dark-rgb: 246, 243, 233;--ion-color-medium-rgb: 200, 207, 177}:host ::ng-deep ion-modal.chessimals-themed-modal val-modal-shell ion-toolbar,:host ::ng-deep ion-modal.chessimals-themed-modal .val-modal-layout__footer{--background: var(--chessimals-modal-surface);--color: var(--chessimals-modal-text);background:var(--chessimals-modal-surface);color:var(--chessimals-modal-text);border-color:var(--chessimals-modal-border)}:host ::ng-deep ion-modal.chessimals-themed-modal val-modal-shell ion-content{--background: var(--chessimals-modal-surface);color:var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-themed-modal val-modal-shell ion-button{--color: var(--chessimals-modal-text);--color-hover: var(--chessimals-modal-text);--color-activated: var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-themed-modal val-display ion-text,:host ::ng-deep ion-modal.chessimals-themed-modal val-title ion-text{color:var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-themed-modal val-button.val-modal-layout__button ion-button,:host ::ng-deep ion-modal.chessimals-themed-modal val-button.chessimals-rules__action ion-button{min-height:3.45rem;font-weight:950;--border-radius: 999px;--padding-bottom: .85rem;--padding-end: 1.35rem;--padding-start: 1.35rem;--padding-top: .85rem}:host ::ng-deep ion-modal.chessimals-themed-modal val-button.val-modal-layout__button ion-button.button-solid,:host ::ng-deep ion-modal.chessimals-themed-modal val-button.chessimals-rules__action--primary ion-button{--background: var(--chessimals-primary);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast)}:host ::ng-deep ion-modal.chessimals-themed-modal val-button.val-modal-layout__button ion-button.button-outline,:host ::ng-deep ion-modal.chessimals-themed-modal val-button.chessimals-rules__action--secondary ion-button{--background: transparent;--border-color: var(--chessimals-modal-border);--border-width: 1px;--color: var(--chessimals-modal-text);--color-activated: var(--chessimals-modal-text);--color-hover: var(--chessimals-modal-text)}.chessimals-play-modal__actions,.chessimals-rules__actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.7rem;width:100%}.chessimals-play-modal__actions .chessimals-primary,.chessimals-play-modal__actions .chessimals-secondary{min-width:min(100%,12.5rem);padding:.85rem 1.35rem}.chessimals-rules__action{min-width:min(100%,12.5rem)}:host ::ng-deep ion-modal.chessimals-rules-modal val-button.chessimals-rules__action ion-button{min-height:3.45rem;font-weight:950;--border-radius: 999px;--padding-bottom: .85rem;--padding-end: 1.35rem;--padding-start: 1.35rem;--padding-top: .85rem}:host ::ng-deep ion-modal.chessimals-rules-modal val-button.chessimals-rules__action--primary ion-button{--background: var(--chessimals-primary);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast)}:host ::ng-deep ion-modal.chessimals-rules-modal val-button.chessimals-rules__action--secondary ion-button{--border-color: rgba(46, 58, 44, .24);--border-width: 1px;--color: var(--chessimals-text);--color-activated: var(--chessimals-text);--color-hover: var(--chessimals-text)}:host ::ng-deep ion-modal.chessimals-confirm-modal val-button.val-modal-layout__button ion-button{min-height:3.45rem;font-weight:950;--border-radius: 999px;--padding-bottom: .85rem;--padding-end: 1.35rem;--padding-start: 1.35rem;--padding-top: .85rem}:host ::ng-deep ion-modal.chessimals-confirm-modal val-button.val-modal-layout__button ion-button[data-testid=confirm]{--background: var(--chessimals-primary);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast)}:host ::ng-deep ion-modal.chessimals-confirm-modal val-button.val-modal-layout__button ion-button[data-testid=cancel]{--border-color: rgba(46, 58, 44, .24);--border-width: 1px;--color: var(--chessimals-text);--color-activated: var(--chessimals-text);--color-hover: var(--chessimals-text)}.chessimals-online{display:grid;gap:.875rem;border:1px solid var(--chessimals-border);border-radius:1.375rem;padding:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--chessimals-panel)}.chessimals-online--waiting{order:2;border-color:rgba(var(--chessimals-primary-rgb),.34)}.chessimals-online h2,.chessimals-online p{margin:0}.chessimals-online h2{font-size:1.1rem;font-weight:950}.chessimals-online p{color:var(--chessimals-muted);line-height:1.4}.chessimals-online__create,.chessimals-online__join{display:grid;gap:.55rem}.chessimals-online__create small{color:var(--chessimals-muted);font-weight:800;line-height:1.35}.chessimals-online__join{border-top:1px solid var(--chessimals-border);padding-top:.85rem}.chessimals-online__join>strong{font-size:.95rem;font-weight:950}.chessimals-online__error{border-radius:.875rem;padding:.7rem .8rem;background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12);color:var(--ion-color-danger, #eb445a)!important;font-weight:800}.chessimals-online__loading{display:flex;align-items:center;gap:.625rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:999px;padding:.65rem .85rem;background:rgba(var(--chessimals-primary-rgb),.08);color:var(--chessimals-text);font-size:.92rem;font-weight:900}.chessimals-online__loading span{width:1rem;height:1rem;border:.15rem solid rgba(var(--chessimals-primary-rgb),.24);border-top-color:var(--chessimals-primary);border-radius:999px;animation:chessimals-spin .75s linear infinite}.chessimals-online-code{display:grid;gap:.4rem;font-weight:950}.chessimals-online-code input{width:100%;min-height:3.3rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:850;letter-spacing:.05em;text-transform:uppercase}.chessimals-game-code{display:grid;gap:.2rem;border-radius:1rem;padding:.85rem 1rem;background:var(--chessimals-soft)}.chessimals-game-code small{color:var(--chessimals-muted);font-weight:900;letter-spacing:.06em;text-transform:uppercase}.chessimals-game-code strong{font-size:clamp(1.35rem,6vw,2rem);font-weight:950;letter-spacing:.05em}.chessimals-online-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-history{gap:.75rem}.chessimals-history__heading{display:flex;align-items:start;justify-content:space-between;gap:.75rem}.chessimals-history__list{display:grid;gap:.5rem}.chessimals-history__item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;border:1px solid var(--chessimals-border);border-radius:1rem;padding:.7rem .8rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-history__item span{display:grid;gap:.1rem;min-width:0}.chessimals-history__item strong{font-weight:950;letter-spacing:.04em}.chessimals-history__item small{overflow:hidden;color:var(--chessimals-muted);font-size:.82rem;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.chessimals-history__item em{flex:0 0 auto;color:var(--chessimals-primary);font-size:.86rem;font-style:normal;font-weight:950}.chessimals-home-settings{gap:.8rem}.chessimals-home-settings__actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.625rem}.chessimals-pending-player{display:flex;align-items:center;gap:.7rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:1rem;padding:.75rem;background:var(--chessimals-soft)}.chessimals-pending-player div{display:grid;gap:.1rem;min-width:0}.chessimals-pending-player small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.07em;text-transform:uppercase}.chessimals-pending-player strong{overflow:hidden;font-size:1.05rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-turn-card{order:1;display:flex;align-items:center;justify-content:space-between;gap:.625rem;min-height:3.75rem;overflow:visible;border:1px solid rgba(var(--chessimals-primary-rgb),.24);border-radius:1rem;padding:.55rem .65rem;background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.34),transparent 18%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.2),rgba(var(--chessimals-secondary-rgb),.1))}.chessimals-turn-card.is-black-turn{border-color:rgba(var(--ion-color-dark-rgb, 47, 42, 58),.28);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.12),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-dark-rgb, 47, 42, 58),.14),rgba(var(--chessimals-primary-rgb),.1))}.chessimals-turn-card.is-finished{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.42);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.35),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.18),rgba(var(--chessimals-primary-rgb),.12))}.chessimals-turn-card.is-finished .chessimals-turn-card__chip{color:var(--ion-color-success, #2dd36f)}.chessimals-turn-card.is-your-turn{border-color:rgba(var(--chessimals-primary-rgb),.48);box-shadow:0 0 0 .12rem rgba(var(--chessimals-primary-rgb),.12),0 .95rem 2rem rgba(var(--chessimals-primary-rgb),.14)}.chessimals-turn-card.is-your-turn .chessimals-turn-card__chip{background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 0 0 .32rem rgba(var(--chessimals-primary-rgb),.14);animation:chessimals-turn-pulse 1.45s ease-in-out infinite}.chessimals-turn-card.is-timer-low{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.5);box-shadow:0 0 0 .12rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12),0 .95rem 2rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.chessimals-turn-card.is-timer-low .chessimals-turn-card__chip{background:var(--ion-color-danger, #eb445a);color:var(--ion-color-danger-contrast, #ffffff)}.chessimals-turn-card.is-waiting-turn .chessimals-turn-card__chip{color:var(--chessimals-muted)}@keyframes chessimals-turn-pulse{0%,to{transform:translateZ(0) scale(1)}50%{transform:translateZ(0) scale(1.035)}}.chessimals-turn-card__copy{display:grid;min-width:0;gap:.15rem}.chessimals-turn-card__chip{justify-self:start;border-radius:999px;padding:.2rem .5rem;background:var(--chessimals-panel);color:var(--chessimals-primary);font-size:.62rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-turn-card strong{display:block;min-width:0;font-size:clamp(1rem,3.5vw,1.25rem);line-height:1.08;font-weight:950;overflow-wrap:anywhere}.chessimals-turn-card p{display:block;min-width:0;margin:0;color:var(--chessimals-muted);font-size:.78rem;line-height:1.22}.chessimals-player-strip{display:flex;flex:0 0 auto;align-items:center;gap:.45rem;min-width:10rem;max-width:min(17rem,42%);border:1px solid var(--chessimals-border);border-radius:999px;padding:.3rem .55rem .3rem .35rem;background:rgba(var(--ion-color-light-rgb, 244, 245, 248),.72)}:host-context(html.ion-palette-dark) .chessimals-player-strip,:host-context([data-theme=\"dark\"]) .chessimals-player-strip{background:#ffffff0f}.chessimals-player-strip val-user-avatar{display:inline-flex;flex:0 0 auto;line-height:0}.chessimals-player-strip__avatar{display:grid;place-items:center;flex:0 0 2.25rem;width:2.25rem;height:2.25rem;aspect-ratio:1 / 1;overflow:hidden;border-radius:999px;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.875rem;line-height:1}.chessimals-player-strip__avatar--initials{font-size:.78rem;font-weight:950}:host ::ng-deep .chessimals-player-strip .chessimals-turn-avatar{width:2.25rem;min-width:2.25rem;height:2.25rem;border-radius:50%}.chessimals-player-strip__text{display:grid;min-width:0;gap:.05rem;line-height:1.1}.chessimals-player-strip__text span{color:var(--chessimals-muted);font-size:.58rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-player-strip__text strong{overflow:hidden;font-size:.82rem;line-height:1.08;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-player-strip__text small{overflow:hidden;color:var(--chessimals-muted);font-size:.66rem;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}.chessimals-arena{order:4;display:grid;gap:.875rem;align-items:start}.chessimals-howto,.chessimals-tip,.chessimals-result,.chessimals-replay,.chessimals-rematch-status{display:grid;gap:.375rem;padding:1rem;border-radius:1.25rem;background:var(--chessimals-soft)}.chessimals-howto{border:1px solid var(--chessimals-border);background:var(--chessimals-soft);color:var(--chessimals-text)}.chessimals-howto p{color:var(--chessimals-muted)}.chessimals-howto__actions{display:flex;flex-wrap:wrap;gap:.625rem}:host-context(html.ion-palette-dark) .chessimals-howto,:host-context([data-theme=\"dark\"]) .chessimals-howto{border-color:#f6e3d533;background:#172116;color:#f6f3e9}:host-context(html.ion-palette-dark) .chessimals-howto p,:host-context([data-theme=\"dark\"]) .chessimals-howto p{color:#c8cfb1}.chessimals-result{order:5}.chessimals-result__actions{display:flex;flex-wrap:wrap;gap:.625rem;margin-top:.45rem}.chessimals-action-button{flex:0 1 auto;min-width:min(100%,12.5rem);max-width:100%;padding:.85rem 1.35rem}.chessimals-result.is-challenge-result{gap:0;padding:0;background:transparent}.chessimals-result__stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem;margin-top:.35rem}.chessimals-result__stats span{display:grid;gap:.15rem;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:.85rem;padding:.58rem .6rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--chessimals-panel)}.chessimals-result__stats small{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-weight:950;letter-spacing:.05em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-result__stats b{overflow:hidden;color:var(--chessimals-text);font-size:.92rem;font-weight:950;line-height:1.12;text-overflow:ellipsis;white-space:nowrap}.chessimals-result__detail{margin:.2rem 0 0}.chessimals-bot-report{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.75rem;margin-top:.35rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1rem;padding:.78rem .85rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),transparent),var(--chessimals-panel)}.chessimals-bot-report>span{display:grid;place-items:center;width:2.5rem;height:2.5rem;border-radius:.85rem;background:rgba(var(--chessimals-secondary-rgb),.14);font-size:1.45rem;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-bot-report>span img{width:100%;height:100%;object-fit:contain}.chessimals-bot-report div{display:grid;gap:.12rem;min-width:0}.chessimals-bot-report small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-bot-report strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.15}.chessimals-bot-report p{margin:0;color:var(--chessimals-muted);font-size:.84rem;font-weight:820;line-height:1.28}.chessimals-online-status{order:3;display:grid;grid-template-columns:1.35rem minmax(0,1fr);align-items:center;gap:.85rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1.1rem;padding:.85rem .95rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.09),transparent),var(--chessimals-panel)}.chessimals-online-status>span{justify-self:center;width:.72rem;height:.72rem;border-radius:999px;background:var(--chessimals-primary);box-shadow:0 0 0 .38rem rgba(var(--chessimals-primary-rgb),.12)}.chessimals-online-status.is-syncing>span{animation:chessimals-online-pulse .9s ease-in-out infinite}.chessimals-online-status.is-error{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.28);background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.1),transparent),var(--chessimals-panel)}.chessimals-online-status.is-error>span{background:var(--ion-color-danger, #eb445a);box-shadow:0 0 0 .38rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.chessimals-online-status div{display:grid;gap:.12rem;min-width:0}.chessimals-online-status strong{overflow:hidden;color:var(--chessimals-text);font-size:.95rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-online-status p{margin:0;color:var(--chessimals-muted);font-size:.84rem;font-weight:780;line-height:1.28}.chessimals-series{display:grid;gap:.18rem;margin-top:.35rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1rem;padding:.78rem .85rem;background:linear-gradient(135deg,rgba(var(--chessimals-secondary-rgb),.12),transparent),var(--chessimals-panel)}.chessimals-series--compact{margin-top:0}.chessimals-series small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-series strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.15}.chessimals-series span{color:var(--chessimals-muted);font-size:.84rem;font-weight:820;line-height:1.28}.chessimals-replay{order:5;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem;border:1px solid rgba(var(--chessimals-primary-rgb),.2);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),transparent),var(--chessimals-panel)}.chessimals-replay>div:first-child{display:grid;gap:.15rem;min-width:0}.chessimals-replay strong{font-size:1rem;font-weight:950}.chessimals-replay span{color:var(--chessimals-muted);font-size:.86rem;font-weight:800;line-height:1.25}.chessimals-replay__actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.5rem}.chessimals-replay__actions .chessimals-secondary{min-height:2.5rem;padding:0 .8rem}.chessimals-tutorial{order:3;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem;padding:1rem;border:1px solid rgba(var(--chessimals-primary-rgb),.24);border-radius:1.25rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel)}.chessimals-tutorial>div{display:grid;gap:.18rem;min-width:0}.chessimals-tutorial small{color:var(--chessimals-primary);font-size:.76rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-tutorial strong{font-size:1rem;font-weight:950}.chessimals-tutorial p{margin:0;color:var(--chessimals-muted);font-size:.88rem;font-weight:780;line-height:1.35}.chessimals-tutorial .chessimals-secondary{min-height:2.5rem;padding:0 .85rem}.chessimals-rematch-status{order:5;border:1px solid rgba(var(--chessimals-primary-rgb),.22);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.12),transparent),var(--chessimals-panel)}.chessimals-rematch-status.is-incoming{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.38);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.14),transparent),var(--chessimals-panel)}.chessimals-rematch-status strong{font-size:1rem;font-weight:950}.chessimals-rematch-status p{margin:0;color:var(--chessimals-muted);font-size:.88rem;line-height:1.35}.chessimals-rematch-player{background:var(--chessimals-elevated)}:host-context(html.ion-palette-dark) .chessimals-rematch-player,:host-context([data-theme=\"dark\"]) .chessimals-rematch-player{background:#ffffff0f}.chessimals-rematch-status__actions{display:flex;justify-content:flex-end}.chessimals-rematch-status__actions .chessimals-secondary{min-height:2.5rem;padding:0 .95rem}.chessimals-howto h2,.chessimals-powers h2{margin:0;font-size:1.15rem;font-weight:950}.chessimals-challenge-cta{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(10rem,auto) auto;gap:.65rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.24);border-radius:1.25rem;padding:.75rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.1),transparent 62%),var(--chessimals-panel);box-shadow:0 .7rem 1.4rem rgba(var(--chessimals-shadow-rgb),.08)}.chessimals-challenge-cta__copy{display:grid;gap:.18rem;min-width:0}.chessimals-challenge-cta__copy span,.chessimals-challenge-cta__rival small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-challenge-cta__copy h2{margin:0;color:var(--chessimals-text);font-size:clamp(1.05rem,2.5vw,1.32rem);font-weight:1000}.chessimals-challenge-cta__copy p{margin:0;color:var(--chessimals-muted);font-size:.82rem;font-weight:780;line-height:1.3}.chessimals-challenge-cta__meta{display:grid;grid-template-columns:repeat(2,minmax(3.8rem,1fr));gap:.4rem}.chessimals-challenge-cta__meta span{display:grid;gap:.08rem;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:.95rem;padding:.42rem .5rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-cta__meta small{color:var(--chessimals-muted);font-size:.62rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-cta__meta strong{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-cta__actions{display:grid;gap:.45rem;min-width:10rem}.chessimals-challenge-cta__rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.5rem;align-items:center;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:1rem;padding:.45rem;background:var(--chessimals-elevated)}.chessimals-challenge-cta__rival>.chessimals-bot-avatar{display:grid;place-items:center;width:2.15rem;height:2.15rem;border-radius:.9rem;background:rgba(var(--chessimals-sky-rgb),.14);font-size:1.12rem}.chessimals-challenge-cta__rival div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-cta__rival strong{overflow:hidden;color:var(--chessimals-text);font-size:.9rem;font-weight:1000;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-view{display:grid;gap:.85rem}.chessimals-back-link{justify-self:start;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:999px;padding:.45rem .72rem;background:var(--chessimals-elevated);color:var(--chessimals-text);font:inherit;font-size:.85rem;font-weight:950;cursor:pointer}.chessimals-challenge-back{margin-bottom:.15rem}.chessimals-challenge-card{display:grid;gap:.9rem;border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:1.375rem;padding:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.18),transparent 54%),linear-gradient(180deg,var(--chessimals-glass-highlight),transparent),var(--chessimals-panel);box-shadow:0 1rem 2.2rem #4f3a231f}.chessimals-challenge-card--dedicated{border:0;border-radius:0;padding:0;background:transparent;box-shadow:none}.chessimals-challenge-hero,.chessimals-challenge-focus,.chessimals-challenge-secondary{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(14rem,.9fr);gap:.75rem;align-items:stretch}.chessimals-challenge-card__copy{display:grid;gap:.28rem;align-content:center}.chessimals-challenge-card__copy span,.chessimals-challenge-summary small,.chessimals-challenge-route small,.chessimals-challenge-panel__heading small{color:var(--chessimals-sky);font-size:.72rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-challenge-card h2{margin:0;font-size:clamp(1.25rem,3.5vw,1.9rem);font-weight:1000}.chessimals-challenge-card p,.chessimals-challenge-summary p{margin:0;color:var(--chessimals-muted);font-size:.95rem;font-weight:780;line-height:1.35}.chessimals-challenge-card__stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.chessimals-challenge-rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.7rem;align-items:center;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1.125rem;padding:.7rem;background:var(--chessimals-elevated)}.chessimals-challenge-rival--feature{min-height:8rem;border-color:rgba(var(--chessimals-sky-rgb),.28);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent),var(--chessimals-elevated)}.chessimals-challenge-rival>.chessimals-bot-avatar{display:grid;place-items:center;width:3rem;height:3rem;border-radius:1rem;background:rgba(var(--chessimals-primary-rgb),.12);font-size:1.45rem}.chessimals-challenge-rival div{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-rival small,.chessimals-challenge-history small,.chessimals-challenge-summary__stats small{color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-rival strong{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-rival p{font-size:.84rem}.chessimals-challenge-rival em{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-style:normal;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-rival--next{background:rgba(var(--chessimals-primary-rgb),.08)}.chessimals-challenge-card__stats span{display:grid;gap:.16rem;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:1rem;padding:.55rem;background:var(--chessimals-elevated)}.chessimals-challenge-card__stats small{color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-card__stats strong{color:var(--chessimals-text);font-size:1.1rem;font-weight:1000}.chessimals-challenge-card__actions{display:grid;gap:.55rem;align-content:center}.chessimals-challenge-card__actions--hero{grid-template-columns:minmax(0,1fr)}.chessimals-challenge-route,.chessimals-challenge-panel{display:grid;gap:.55rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1.125rem;padding:.65rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-route>div:first-child,.chessimals-challenge-panel__heading{display:flex;flex-wrap:wrap;gap:.4rem;align-items:baseline;justify-content:space-between}.chessimals-challenge-route>div:first-child>span{color:var(--chessimals-muted);font-size:.76rem;font-weight:850}.chessimals-challenge-path{display:flex;flex-wrap:nowrap;gap:.4rem;overflow-x:auto;padding-block:.1rem;scrollbar-width:none}.chessimals-challenge-path::-webkit-scrollbar{display:none}.chessimals-challenge-path span{flex:0 0 auto;display:grid;place-items:center;width:2.15rem;height:2.15rem;overflow:hidden;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:999px;background:var(--chessimals-elevated-strong);font-size:1.08rem}.chessimals-challenge-path img{display:block;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;object-fit:contain}.chessimals-challenge-path span.is-cleared{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.34);background:rgba(var(--ion-color-success-rgb, 45, 211, 111),.16)}.chessimals-challenge-path span.is-current{border-color:rgba(var(--chessimals-sky-rgb),.48);background:rgba(var(--chessimals-sky-rgb),.18);box-shadow:0 0 0 2px rgba(var(--chessimals-sky-rgb),.12)}.chessimals-challenge-path span.is-final{border-color:rgba(var(--ion-color-warning-rgb, 255, 196, 9),.48)}.chessimals-challenge-roster{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.4rem}.chessimals-challenge-roster article{display:grid;grid-template-columns:minmax(0,1fr);gap:.4rem;align-items:center;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1rem;padding:.48rem;background:var(--chessimals-elevated-soft);opacity:.78}.chessimals-challenge-roster article.is-cleared{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.26);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.1),transparent),var(--chessimals-elevated-soft);opacity:1}.chessimals-challenge-roster article.is-current{border-color:rgba(var(--chessimals-sky-rgb),.38);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),transparent),var(--chessimals-elevated);box-shadow:0 0 0 2px rgba(var(--chessimals-sky-rgb),.1);opacity:1}.chessimals-challenge-roster article.is-final{border-color:rgba(var(--ion-color-warning-rgb, 255, 196, 9),.34)}.chessimals-challenge-roster article>.chessimals-bot-avatar{display:grid;place-items:center;width:2rem;height:2rem;border-radius:.85rem;background:rgba(var(--chessimals-primary-rgb),.1);font-size:1rem}.chessimals-challenge-roster article.is-current>.chessimals-bot-avatar{background:rgba(var(--chessimals-sky-rgb),.18)}.chessimals-challenge-roster div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-roster small,.chessimals-challenge-roster em{overflow:hidden;color:var(--chessimals-muted);font-size:.62rem;font-style:normal;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-roster strong{overflow:hidden;color:var(--chessimals-text);font-size:.82rem;font-weight:1000;line-height:1.08;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-roster p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.72rem;font-weight:820;line-height:1.18;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-achievements,.chessimals-mode-winrates{display:grid;grid-template-columns:minmax(0,1fr);gap:.45rem}.chessimals-mode-winrates>span{display:grid;gap:.1rem;border:1px solid rgba(var(--chessimals-sky-rgb),.2);border-radius:8px;padding:.48rem;background:rgba(var(--chessimals-sky-rgb),.08)}.chessimals-mode-winrates small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:900;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-mode-winrates strong{color:var(--chessimals-text);font-size:.98rem;font-weight:1000}.chessimals-mode-winrates em{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-style:normal;font-weight:850;text-overflow:ellipsis;white-space:nowrap}.chessimals-achievements>span{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.45rem;align-items:center;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.5rem;background:var(--chessimals-elevated-soft);opacity:.68}.chessimals-achievements>span.is-unlocked{border-color:rgba(var(--chessimals-sky-rgb),.3);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),var(--chessimals-elevated));opacity:1}.chessimals-achievements b{display:grid;place-items:center;width:1.9rem;height:1.9rem;border-radius:8px;background:rgba(var(--chessimals-primary-rgb),.1);color:var(--chessimals-muted);font-size:.9rem;font-weight:1000}.chessimals-achievements .is-unlocked b{background:var(--chessimals-sky);color:#fffaf0}.chessimals-achievements span span{display:grid;gap:.06rem;min-width:0}.chessimals-achievements strong,.chessimals-achievements small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-achievements strong{color:var(--chessimals-text);font-size:.78rem;font-weight:1000}.chessimals-achievements small{color:var(--chessimals-muted);font-size:.67rem;font-weight:850}.chessimals-secondary--compact{min-height:2.45rem;padding-block:.45rem}.chessimals-path-cta{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.75rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.26);border-radius:1.25rem;padding:.75rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.13),rgba(var(--chessimals-sun-rgb),.08)),var(--chessimals-elevated-soft)}.chessimals-path-cta div{display:grid;gap:.18rem;min-width:0}.chessimals-path-cta span,.chessimals-path-hero small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-path-cta strong{color:var(--chessimals-text);font-size:.95rem;font-weight:950;line-height:1.2}.chessimals-path-cta__action{justify-self:end;width:min(12rem,100%);min-width:9.5rem;padding-inline:1.1rem;white-space:nowrap}.chessimals-path-view{display:grid;gap:.85rem}.chessimals-path-hero{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.8rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.26);border-radius:1.25rem;padding:.85rem;background:radial-gradient(circle at 88% 10%,rgba(var(--chessimals-sun-rgb),.18),transparent 34%),linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent 62%),var(--chessimals-elevated-soft)}.chessimals-path-hero__art{display:block;width:clamp(5.2rem,15vw,7.5rem);height:clamp(5.2rem,15vw,7.5rem);object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-path-hero>div:not(.chessimals-path-hero__medal){display:grid;gap:.25rem;min-width:0}.chessimals-path-hero h2{margin:0;color:var(--chessimals-text);font-size:clamp(1.7rem,4vw,2.35rem);font-weight:1000;line-height:1}.chessimals-path-hero p{margin:0;color:var(--chessimals-muted);font-size:.95rem;font-weight:820;line-height:1.35}.chessimals-path-hero__medal{display:grid;place-items:center;width:6.5rem;min-height:6.5rem;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:1rem;background:linear-gradient(180deg,rgba(var(--chessimals-sun-rgb),.2),rgba(var(--chessimals-sky-rgb),.11)),var(--chessimals-elevated);box-shadow:0 16px 28px rgba(var(--chessimals-shadow-rgb),.12)}.chessimals-path-hero__medal img{display:block;width:3rem;height:3rem;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-path-hero__medal span{color:var(--chessimals-text);font-size:1.65rem;font-weight:1000;line-height:1}.chessimals-path-hero__medal b{color:var(--chessimals-muted);font-size:.78rem;font-weight:950}.chessimals-path-highlights{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:.65rem}.chessimals-path-highlights article{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.65rem;align-items:center;min-width:0;min-height:7.5rem;border:1px solid rgba(var(--chessimals-primary-rgb),.13);border-radius:1rem;padding:.7rem;background:radial-gradient(circle at 12% 4%,rgba(var(--chessimals-sun-rgb),.18),transparent 42%),var(--chessimals-elevated-soft)}.chessimals-path-highlights img{display:block;width:4.25rem;height:4.25rem;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-path-highlights article div{display:grid;min-width:0;gap:.12rem}.chessimals-path-highlights small{color:var(--chessimals-sky);font-size:.66rem;font-weight:950;letter-spacing:.05em;text-transform:uppercase}.chessimals-path-highlights strong{color:var(--chessimals-text);font-size:1.08rem;font-weight:1000;line-height:1.06}.chessimals-path-highlights span{color:var(--chessimals-muted);font-size:.76rem;font-weight:820;line-height:1.24}.chessimals-path-rings{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:.6rem}.chessimals-path-ring,.chessimals-path-panel,.chessimals-path-stats span,.chessimals-path-bars span{border:1px solid rgba(var(--chessimals-primary-rgb),.13);border-radius:1rem;background:var(--chessimals-elevated-soft)}.chessimals-path-ring{display:grid;grid-template-areas:\"ring label\" \"ring detail\";grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;padding:.65rem;text-align:left}.chessimals-path-ring>div{position:relative;grid-area:ring;display:grid;place-items:center;width:3.35rem;height:3.35rem;border-radius:999px;background:conic-gradient(var(--chessimals-sky) var(--ring-progress),rgba(var(--chessimals-primary-rgb),.12) 0)}.chessimals-path-ring>div:after{position:absolute;inset:.34rem;border-radius:inherit;background:var(--chessimals-elevated);content:\"\"}.chessimals-path-ring strong{position:relative;z-index:1;color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-path-ring span,.chessimals-path-bars b{color:var(--chessimals-text);font-size:.78rem;font-weight:950}.chessimals-path-ring span{grid-area:label;align-self:end}.chessimals-path-ring small{grid-area:detail;align-self:start;min-width:0}.chessimals-path-ring small{color:var(--chessimals-muted);font-size:.68rem;font-weight:820;line-height:1.25}.chessimals-path-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:.75rem}.chessimals-path-panel{display:grid;gap:.65rem;align-content:start;padding:.75rem}.chessimals-path-panel--wide{grid-column:1 / -1}.chessimals-path-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,10.5rem),1fr));gap:.5rem}.chessimals-path-stats span{display:grid;gap:.08rem;padding:.6rem}.chessimals-path-stats small{color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-transform:uppercase}.chessimals-path-stats strong{color:var(--chessimals-text);font-size:1.25rem;font-weight:1000}.chessimals-path-bars{display:grid;gap:.45rem}.chessimals-path-bars span{display:grid;grid-template-columns:minmax(0,.9fr) minmax(3rem,1fr) auto;gap:.45rem;align-items:center;padding:.48rem}.chessimals-path-bars i{display:block;height:.48rem;overflow:hidden;border-radius:999px;background:rgba(var(--chessimals-primary-rgb),.11)}.chessimals-path-bars i:before{display:block;width:var(--bar-progress);height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--chessimals-sky),var(--chessimals-sun));content:\"\"}.chessimals-path-bars strong{color:var(--chessimals-text);font-size:.86rem;font-weight:1000}.chessimals-achievements--path{grid-template-columns:1fr}.chessimals-challenge-history--path{border-top:0;padding-top:0}.chessimals-progress__heading small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-progress__heading{display:flex;flex-wrap:wrap;gap:.35rem;align-items:baseline;justify-content:space-between}.chessimals-progress__heading span{color:var(--chessimals-muted);font-size:.76rem;font-weight:820}.chessimals-challenge-history{display:grid;gap:.35rem;border-top:1px solid rgba(var(--chessimals-primary-rgb),.12);padding-top:.2rem}.chessimals-challenge-history span{display:flex;flex-wrap:wrap;gap:.35rem;color:var(--chessimals-muted);font-size:.82rem;font-weight:820}.chessimals-challenge-history b{color:var(--chessimals-text);font-weight:1000}.chessimals-challenge-summary{display:grid;gap:.6rem;border:0;border-radius:0;padding:0;background:transparent}.chessimals-challenge-summary.is-victory,.chessimals-challenge-summary.is-defeat{background:transparent}.chessimals-challenge-summary__hero,.chessimals-challenge-rival-voice{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.7rem}.chessimals-challenge-summary__hero>.chessimals-bot-avatar,.chessimals-challenge-rival-voice>.chessimals-bot-avatar{position:relative;display:grid;place-items:center;width:3rem;height:3rem;border-radius:1rem;background:rgba(var(--chessimals-sky-rgb),.16);font-size:1.55rem;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-challenge-summary__hero.is-cleared>.chessimals-bot-avatar img{filter:grayscale(1) saturate(.15) contrast(.95);opacity:.62}.chessimals-challenge-summary__hero.is-cleared>.chessimals-bot-avatar:after{content:\"\\2713\";position:absolute;right:-.05rem;bottom:-.05rem;display:grid;place-items:center;width:1.25rem;height:1.25rem;border:.12rem solid var(--chessimals-panel);border-radius:999px;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.74rem;font-weight:1000;line-height:1}.chessimals-challenge-summary__hero div,.chessimals-challenge-rival-voice div{display:grid;gap:.12rem;min-width:0}.chessimals-challenge-summary__hero small,.chessimals-challenge-rival-voice small{color:var(--chessimals-muted);font-size:.68rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-challenge-summary strong{font-size:1rem;font-weight:1000}.chessimals-challenge-summary__hero p,.chessimals-challenge-rival-voice p{margin:0;color:var(--chessimals-muted);font-size:.86rem;font-weight:820;line-height:1.28}.chessimals-challenge-rival-voice{border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:.95rem;padding:.65rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-summary__actions{display:grid}.chessimals-challenge-summary__play{min-height:3.35rem;font-size:1.02rem;box-shadow:0 .9rem 1.8rem rgba(var(--chessimals-primary-rgb),.26)}.chessimals-result.is-challenge-result .chessimals-challenge-tension,.chessimals-result.is-challenge-result .chessimals-challenge-rival--next{display:grid;grid-template-columns:minmax(0,1fr);border:0;border-radius:.75rem;padding:.45rem .6rem;background:rgba(var(--chessimals-primary-rgb),.07)}.chessimals-result.is-challenge-result .chessimals-challenge-rival--next{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.7rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1rem;padding:.65rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.12),transparent),rgba(var(--chessimals-primary-rgb),.06)}.chessimals-result.is-challenge-result .chessimals-challenge-rival--next>.chessimals-bot-avatar{width:3.4rem;height:3.4rem;border-radius:1.1rem;background:var(--chessimals-elevated-strong);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14),0 .45rem 1rem rgba(var(--chessimals-primary-rgb),.1)}.chessimals-result.is-challenge-result .chessimals-challenge-rival--next p{margin:0;color:var(--chessimals-text);font-size:.9rem;font-weight:900;line-height:1.22}.chessimals-result.is-challenge-result .chessimals-challenge-tension.is-critical{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.1)}.chessimals-challenge-rival-voice>.chessimals-bot-avatar{width:2.35rem;height:2.35rem;border-radius:999px;font-size:1.15rem}.chessimals-challenge-summary__stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem}.chessimals-challenge-record{display:flex;align-items:center;gap:.45rem;border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:999px;padding:.45rem .65rem;background:rgba(var(--chessimals-sky-rgb),.14);color:var(--chessimals-text)}.chessimals-challenge-record span{display:grid;place-items:center;width:1.45rem;height:1.45rem;border-radius:999px;background:var(--chessimals-sky);color:#fffaf0;font-size:.82rem}.chessimals-challenge-record strong{font-size:.9rem}.chessimals-challenge-tension{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.3);border-radius:.9rem;padding:.65rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),rgba(var(--chessimals-primary-rgb),.08)),var(--chessimals-elevated)}.chessimals-challenge-tension.is-critical{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.38);background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.16),rgba(var(--chessimals-primary-rgb),.08)),var(--chessimals-elevated)}.chessimals-challenge-tension>span{display:grid;place-items:center;width:2.25rem;height:2.25rem;border-radius:999px;background:rgba(var(--chessimals-sky-rgb),.18);color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-tension.is-critical>span{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.18)}.chessimals-challenge-tension div{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-tension strong{font-size:.95rem}.chessimals-challenge-tension p{font-size:.84rem}.chessimals-challenge-summary__stats span{display:grid;gap:.1rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:.8rem;padding:.45rem;background:var(--chessimals-elevated)}.chessimals-challenge-summary__stats b{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-rival--next em{color:var(--chessimals-muted);font-size:.78rem;font-style:normal;font-weight:820;line-height:1.25;white-space:normal}.chessimals-tip p,.chessimals-powers p{color:var(--chessimals-muted)}.chessimals-learn-more{justify-self:start;min-height:2.75rem;border:0;border-radius:999px;padding:0 1rem;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font:inherit;font-weight:950;box-shadow:0 .75rem 1.6rem rgba(var(--chessimals-primary-rgb),.28)}.chessimals-size,.chessimals-mode,.chessimals-status{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-status{order:3;grid-template-columns:repeat(3,minmax(0,1fr))}.chessimals-size button,.chessimals-mode button,.chessimals-status div{display:grid;gap:.2rem;align-content:center;min-width:0;min-height:3.875rem;padding:.55rem .65rem;border:1px solid var(--chessimals-border);border-radius:1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-size button.is-selected{border-color:var(--chessimals-primary);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-mode button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-status__timer{position:relative;overflow:hidden;isolation:isolate;border-color:rgba(var(--chessimals-primary-rgb),.42)!important}.chessimals-status__timer:before{content:\"\";position:absolute;inset:auto 0 0;z-index:0;height:.22rem;transform:scaleX(var(--timer-progress, 1));transform-origin:left center;background:var(--chessimals-primary);transition:transform .18s linear,background .18s ease}.chessimals-status__timer.is-low{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.58)!important;background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.16),transparent),var(--chessimals-panel)!important;animation:chessimals-turn-pulse .82s ease-in-out infinite}.chessimals-status__timer.is-low:before{background:var(--ion-color-danger, #eb445a)}.chessimals-status__timer.is-low strong{color:var(--ion-color-danger, #eb445a)}.chessimals-status__score.is-pop{border-color:rgba(var(--chessimals-sky-rgb),.42);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),transparent),var(--chessimals-panel);animation:chessimals-score-pulse .62s ease-out both}.chessimals-status__timer small,.chessimals-status__timer strong{position:relative;z-index:1}.chessimals-challenge-live{order:4;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1.35fr);gap:.65rem;align-items:stretch;border:1px solid rgba(var(--chessimals-sky-rgb),.28);border-radius:8px;padding:.68rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.13),transparent 52%),var(--chessimals-elevated-soft);color:var(--chessimals-text)}.chessimals-challenge-live__rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;min-width:0}.chessimals-challenge-live__rival>.chessimals-bot-avatar{display:grid;place-items:center;width:2.7rem;height:2.7rem;border-radius:8px;background:rgba(var(--chessimals-sky-rgb),.16);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14);font-size:1.35rem}.chessimals-challenge-live__rival div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-live__rival small,.chessimals-challenge-live__metrics small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-live__rival strong{overflow:hidden;color:var(--chessimals-text);font-size:1rem;font-weight:1000;line-height:1.05;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-live__rival p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.78rem;font-weight:820;line-height:1.18;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-challenge-live__metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.42rem}.chessimals-challenge-live__metrics span{display:grid;gap:.1rem;align-content:center;min-width:0;min-height:3rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.4rem .45rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-live__metrics b{overflow:hidden;color:var(--chessimals-text);font-size:.92rem;font-weight:1000;line-height:1.05;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-tension--live{grid-column:1 / -1;padding:.55rem}.chessimals-difficulty{display:flex;flex-wrap:wrap;gap:.55rem}.chessimals-difficulty button{min-height:2.75rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:950}.chessimals-difficulty button.is-selected{border-color:var(--chessimals-primary);background:var(--chessimals-primary);color:#fff}.chessimals-bots{display:grid;grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr));gap:.625rem}.chessimals-bots button{display:grid;grid-template-columns:auto 1fr;grid-template-areas:\"avatar title\" \"avatar body\" \"avatar tendency\";column-gap:.55rem;row-gap:.12rem;min-width:0;min-height:4.75rem;border:1px solid var(--chessimals-border);border-radius:1rem;padding:.65rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-bots button>.chessimals-bot-avatar{grid-area:avatar;display:grid;place-items:center;width:2.1rem;height:2.1rem;border-radius:50%;background:rgba(var(--chessimals-primary-rgb),.12);font-size:1.2rem}.chessimals-bots button strong{grid-area:title;align-self:end;font-size:.95rem;font-weight:950}.chessimals-bots button small{grid-area:body;color:var(--chessimals-muted);font-size:.75rem;font-weight:750;line-height:1.25}.chessimals-bots button p{grid-area:tendency;margin:.12rem 0 0;color:var(--chessimals-muted);font-size:.72rem;font-weight:820;line-height:1.24}.chessimals-bots button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16),0 .75rem 1.5rem rgba(var(--chessimals-primary-rgb),.1)}.chessimals-size strong,.chessimals-mode strong,.chessimals-status strong,.chessimals-result strong,.chessimals-rematch-status strong,.chessimals-tip strong{font-weight:950}.chessimals-status strong{min-width:0;font-size:clamp(.95rem,2.5vw,1.2rem);line-height:1.08;overflow-wrap:anywhere;white-space:normal}.chessimals-size small,.chessimals-mode small,.chessimals-status small{color:var(--chessimals-muted);font-size:.78rem;line-height:1.12}.chessimals-board-wrap{--chessimals-board-radius: min(.85rem, 14px);display:flex;justify-content:center;min-width:0;max-width:100%;overflow-x:auto;width:100%;padding:.25rem 0}.chessimals-board-wrap.is-orienting .chessimals-board-frame{animation:chessimals-orient-board .32s ease}.chessimals-board-wrap.is-finished{overflow-x:visible}.chessimals-board-frame{flex:0 1 58rem;min-width:0;width:100%;max-width:58rem;border-radius:var(--chessimals-board-radius)}.chessimals-board{position:relative;display:grid;grid-template-columns:repeat(var(--board-size),minmax(0,1fr));grid-template-rows:repeat(var(--board-size),minmax(0,1fr));min-width:0;width:100%;aspect-ratio:1 / 1;overflow:hidden;isolation:isolate;contain:paint;border:1px solid var(--chessimals-border);border-radius:var(--chessimals-board-radius);clip-path:inset(0 round var(--chessimals-board-radius));-webkit-mask-image:-webkit-radial-gradient(white,black);background:radial-gradient(ellipse at 16% 18%,rgba(255,255,255,.34),transparent 18%),radial-gradient(ellipse at 82% 78%,rgba(var(--chessimals-primary-rgb),.1),transparent 22%),radial-gradient(ellipse at 32% 68%,rgba(var(--chessimals-stone-rgb),.05),transparent 30%),radial-gradient(ellipse at 66% 34%,rgba(255,255,255,.08),transparent 24%),var(--chessimals-border);box-shadow:inset 0 0 0 1px #ffffff1a,0 .85rem 2.1rem var(--chessimals-board-shadow)}.chessimals-board-wrap.is-syncing .chessimals-board{cursor:wait}.chessimals-cell-coordinate{position:absolute;z-index:5;color:color-mix(in srgb,var(--chessimals-muted) 78%,var(--chessimals-text));font-size:.68rem;font-weight:950;letter-spacing:.02em;line-height:1;pointer-events:none;text-transform:uppercase;-webkit-user-select:none;user-select:none}.chessimals-cell-coordinate--rank{top:.2rem;left:.24rem}.chessimals-cell-coordinate--file{right:.24rem;bottom:.18rem}@keyframes chessimals-orient-board{0%{opacity:.72;filter:blur(.06rem);transform:scale(.985)}52%{opacity:.92;filter:blur(0);transform:scale(1.012)}to{opacity:1;filter:blur(0);transform:scale(1)}}.chessimals-center-line{position:absolute;top:50%;left:0;right:0;z-index:2;display:flex;align-items:center;justify-content:center;border-top:.08rem dashed rgba(var(--chessimals-primary-rgb),.56);filter:drop-shadow(0 0 .24rem rgba(var(--chessimals-primary-rgb),.26));pointer-events:none}.chessimals-power-trail{position:absolute;inset:0;z-index:5;pointer-events:none;--trail-color: rgba(var(--chessimals-magic-rgb), .88);--trail-glow: rgba(var(--chessimals-magic-rgb), .48)}.chessimals-power-trail.is-capture{--trail-color: rgba(var(--chessimals-capture-rgb), .86);--trail-glow: rgba(var(--chessimals-capture-rgb), .46)}.chessimals-power-trail.effect-eagle{--trail-color: rgba(255, 255, 255, .92);--trail-glow: rgba(120, 210, 255, .54)}.chessimals-power-trail.effect-bull{--trail-color: rgba(188, 131, 76, .86);--trail-glow: rgba(188, 131, 76, .36)}.chessimals-power-trail.effect-kangaroo{--trail-color: rgba(174, 124, 255, .86);--trail-glow: rgba(174, 124, 255, .42)}.chessimals-power-trail.effect-lion{--trail-color: rgba(255, 221, 120, .88);--trail-glow: rgba(255, 190, 56, .42)}.chessimals-power-trail>span{position:absolute;top:var(--trail-y);left:var(--trail-x);width:var(--trail-length);height:.45rem;border-radius:999px;background:linear-gradient(90deg,transparent,var(--trail-color) 42%,rgba(255,255,255,.92));box-shadow:0 0 .75rem var(--trail-glow),0 0 1.45rem var(--trail-glow);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0);transform-origin:0 50%;animation:chessimals-power-trail .72s ease-out both}.chessimals-power-trail.effect-eagle>span{height:.28rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.95) 44%,rgba(120,210,255,.58)),repeating-linear-gradient(90deg,transparent 0 .7rem,rgba(255,255,255,.66) .7rem .92rem);animation-name:chessimals-eagle-trail}.chessimals-power-trail.effect-bull>span{height:.72rem;background:repeating-linear-gradient(90deg,rgba(255,255,255,.42) 0 .18rem,transparent .18rem .42rem),linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.86));animation-name:chessimals-bull-trail}.chessimals-power-trail.effect-kangaroo>span{height:1rem;border-top:.16rem dashed var(--trail-color);background:transparent;box-shadow:none;filter:drop-shadow(0 0 .8rem var(--trail-glow));animation-name:chessimals-kangaroo-trail}.chessimals-power-trail.effect-lion>span{height:.62rem;background:linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.82)),repeating-linear-gradient(115deg,rgba(255,255,255,.55) 0 .12rem,transparent .12rem .34rem);animation-name:chessimals-lion-trail}@keyframes chessimals-power-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}28%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.72)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-eagle-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) skew(-10deg)}30%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.82) skew(-10deg)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1.05) skew(-10deg)}}@keyframes chessimals-bull-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) scaleY(1)}38%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.7) scaleY(1.18)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1) scaleY(.82)}}@keyframes chessimals-kangaroo-trail{0%{opacity:0;transform:translateY(-.4rem) rotate(var(--trail-angle)) scaleX(0)}34%{opacity:1;transform:translateY(-1.2rem) rotate(var(--trail-angle)) scaleX(.62)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-lion-trail{0%{opacity:0;filter:saturate(1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}36%{opacity:1;filter:saturate(1.4);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.76)}to{opacity:0;filter:saturate(1.1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-score-pulse{0%,to{transform:translateZ(0) scale(1)}42%{transform:translateZ(0) scale(1.035)}}.chessimals-challenge-intro{position:absolute;inset:0;z-index:7;display:grid;place-items:center;padding:clamp(.75rem,4vw,1.35rem);background:radial-gradient(circle at 50% 36%,rgba(var(--chessimals-sky-rgb),.24),transparent 34%),linear-gradient(135deg,#140c167a,#08120d57);backdrop-filter:blur(1.5px);animation:chessimals-challenge-intro-in .26s ease-out both}.chessimals-challenge-intro__card{display:grid;justify-items:center;gap:.55rem;width:min(18rem,92%);border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:8px;padding:.85rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent),var(--chessimals-elevated-strong);color:var(--chessimals-text);box-shadow:0 1.1rem 2.3rem #0000003d,inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.08);text-align:center}.chessimals-challenge-intro__avatar{display:grid;place-items:center;width:4rem;height:4rem;border-radius:8px;background:radial-gradient(circle at 35% 24%,var(--chessimals-glass-highlight),transparent 30%),rgba(var(--chessimals-sky-rgb),.16);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.16),0 .7rem 1.5rem rgba(var(--chessimals-sky-rgb),.18);font-size:2.15rem}.chessimals-challenge-intro__copy{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-intro__copy small,.chessimals-challenge-intro__facts small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:950;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-intro__copy strong{overflow:hidden;color:var(--chessimals-text);font-size:1.35rem;font-weight:1000;line-height:1.04;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-intro__copy p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.88rem;font-weight:820;line-height:1.24;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-challenge-intro__facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem;width:100%}.chessimals-challenge-intro__facts span{display:grid;gap:.1rem;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.38rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-intro__facts b{overflow:hidden;color:var(--chessimals-text);font-size:.86rem;font-weight:1000;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-intro .chessimals-primary{min-height:2.45rem;width:100%}@keyframes chessimals-challenge-intro-in{0%{opacity:0}to{opacity:1}}.chessimals-board-overlay{position:absolute;inset:0;z-index:8;display:grid;place-content:center;gap:.5rem;padding:1.25rem;background:radial-gradient(circle at 50% 34%,rgba(255,226,129,.34),transparent 24%),radial-gradient(circle at 50% 52%,rgba(var(--chessimals-primary-rgb),.34),transparent 42%),linear-gradient(135deg,#140c16e0,#08120dc7);color:#fff;text-align:center;backdrop-filter:blur(2px);overflow:hidden}.chessimals-board-overlay.is-defeat{background:radial-gradient(circle at 50% 34%,rgba(143,168,206,.26),transparent 24%),radial-gradient(circle at 50% 52%,rgba(72,86,115,.42),transparent 42%),linear-gradient(135deg,#090c14e6,#1c1e2bcc)}.chessimals-board-overlay:before{position:absolute;inset:0;background:radial-gradient(circle at 20% 30%,rgba(255,255,255,.58) 0 .08rem,transparent .1rem),radial-gradient(circle at 75% 25%,rgba(255,226,129,.7) 0 .1rem,transparent .12rem),radial-gradient(circle at 68% 72%,rgba(var(--chessimals-capture-rgb),.54) 0 .08rem,transparent .1rem),radial-gradient(circle at 35% 78%,rgba(255,255,255,.48) 0 .07rem,transparent .09rem),radial-gradient(circle at 84% 66%,rgba(255,255,255,.38) 0 .06rem,transparent .08rem),radial-gradient(circle at 14% 64%,rgba(255,226,129,.48) 0 .07rem,transparent .09rem);content:\"\";opacity:.72;animation:chessimals-victory-sparks 1.5s ease-in-out infinite}.chessimals-board-overlay__rays{position:absolute;inset:-18%;background:conic-gradient(from 8deg,transparent 0 7deg,rgba(255,226,129,.16) 7deg 11deg,transparent 11deg 22deg);opacity:.85;animation:chessimals-finale-rays 8s linear infinite}.chessimals-board-overlay.is-defeat .chessimals-board-overlay__rays{background:conic-gradient(from 8deg,transparent 0 8deg,rgba(180,204,240,.1) 8deg 12deg,transparent 12deg 24deg);animation-duration:12s}.chessimals-board-overlay__ribbon{position:absolute;top:-20%;width:.42rem;height:54%;border-radius:999px;background:linear-gradient(to bottom,transparent,rgba(255,226,129,.72),transparent);opacity:.7;transform:rotate(var(--ribbon-angle, 12deg));animation:chessimals-finale-ribbon 2.5s ease-in-out infinite}.chessimals-board-overlay.is-defeat .chessimals-board-overlay__ribbon{background:linear-gradient(to bottom,transparent,rgba(180,204,240,.42),transparent);opacity:.48}.chessimals-board-overlay__ribbon.ribbon-a{left:18%;--ribbon-angle: -18deg}.chessimals-board-overlay__ribbon.ribbon-b{left:50%;--ribbon-angle: 8deg;animation-delay:.32s}.chessimals-board-overlay__ribbon.ribbon-c{right:18%;--ribbon-angle: 20deg;animation-delay:.64s}.chessimals-board-overlay>*{position:relative;z-index:1}.chessimals-board-overlay span{justify-self:center;border-radius:999px;padding:.32rem .7rem;background:#ffffff26;color:#ffffffe6;font-size:.76rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-board-overlay strong{font-size:clamp(1.65rem,8vw,3rem);line-height:1;font-weight:950;text-shadow:0 0 1.25rem rgba(255,255,255,.26)}.chessimals-board-overlay em{justify-self:center;display:grid;place-items:center;width:clamp(3rem,14vw,4.6rem);height:clamp(3rem,14vw,4.6rem);border:.16rem solid rgba(255,255,255,.62);border-radius:50%;background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.72),transparent 18%),linear-gradient(135deg,#ffe281,#b98436);color:#2d2412;font-size:clamp(1.1rem,5vw,1.65rem);font-style:normal;font-weight:950;box-shadow:0 0 0 .45rem #ffe2811f,0 1rem 2rem #00000042;animation:chessimals-finale-medal 1.8s ease-in-out infinite}.chessimals-board-overlay.is-defeat em{background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.48),transparent 18%),linear-gradient(135deg,#d9e2ef,#69758e);color:#182032;box-shadow:0 0 0 .45rem #b4ccf01a,0 1rem 2rem #00000052}.chessimals-board-overlay em.has-avatar{overflow:hidden;background:#fff;padding:0}.chessimals-board-overlay em.has-avatar img{display:block;width:100%;height:100%;object-fit:cover}.chessimals-board-overlay b{justify-self:center;color:#fffc;font-size:.8rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-board-overlay small{color:#ffffffd1;font-size:clamp(.9rem,3vw,1.1rem);font-weight:800}.chessimals-board-overlay__stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem;width:min(26rem,92%);margin:.2rem auto 0}.chessimals-board-overlay__stats div{display:grid;gap:.08rem;min-width:0;border:1px solid rgba(255,255,255,.18);border-radius:.75rem;padding:.42rem .46rem;background:#ffffff1a;backdrop-filter:blur(3px)}.chessimals-board-overlay__stats dt,.chessimals-board-overlay__stats dd{overflow:hidden;margin:0;text-overflow:ellipsis;white-space:nowrap}.chessimals-board-overlay__stats dt{color:#ffffffad;font-size:clamp(.52rem,2.1vw,.66rem);font-weight:950;letter-spacing:.04em;text-transform:uppercase}.chessimals-board-overlay__stats dd{color:#fff;font-size:clamp(.68rem,2.8vw,.88rem);font-weight:950}@keyframes chessimals-victory-sparks{0%,to{opacity:.46;transform:translateY(0) scale(.98)}50%{opacity:.95;transform:translateY(-.35rem) scale(1.02)}}@keyframes chessimals-finale-rays{to{transform:rotate(360deg)}}@keyframes chessimals-finale-ribbon{0%,to{opacity:.18;transform:translateY(-.5rem) rotate(var(--ribbon-angle))}50%{opacity:.75;transform:translateY(1.4rem) rotate(var(--ribbon-angle))}}@keyframes chessimals-finale-medal{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-.18rem) scale(1.04)}}.chessimals-cell{position:relative;isolation:isolate;--chessimals-cell-bg: var(--chessimals-cell-light);display:grid;place-items:center;min-width:0;min-height:0;aspect-ratio:1;border:0;background:radial-gradient(ellipse at 26% 24%,rgba(255,255,255,.12),transparent 24%),radial-gradient(ellipse at 78% 76%,rgba(61,54,36,.06),transparent 28%),linear-gradient(135deg,rgba(255,255,255,.04),transparent 52%,rgba(52,44,28,.04)),var(--chessimals-cell-bg);color:var(--chessimals-text);font:inherit;overflow:hidden;transition:background .16s ease,box-shadow .16s ease,transform .16s ease}.chessimals-cell:before,.chessimals-cell:after{pointer-events:none}.chessimals-cell-texture{position:absolute;inset:0;z-index:0;display:block;pointer-events:none;opacity:.42;mix-blend-mode:multiply;background:radial-gradient(ellipse at var(--wear-x, 28%) var(--wear-y, 32%),rgba(255,255,255,.16),transparent 17%),radial-gradient(ellipse at var(--wear-x2, 74%) var(--wear-y2, 68%),rgba(75,66,42,.09),transparent 25%),repeating-linear-gradient(var(--wear-angle, 26deg),rgba(75,66,42,.045) 0 1px,transparent 1px .52rem),linear-gradient(135deg,rgba(255,255,255,.06),transparent 42%,rgba(52,44,28,.045))}.chessimals-cell-texture:after{position:absolute;inset:.08rem;border:1px solid rgba(75,66,42,.05);border-radius:.18rem;box-shadow:inset .08rem .08rem #ffffff14,inset -.08rem -.08rem #342c1c0b;content:\"\"}.chessimals-cell.is-edge-cell .chessimals-cell-texture{opacity:.56;background:radial-gradient(ellipse at var(--wear-x, 28%) var(--wear-y, 32%),rgba(255,255,255,.14),transparent 18%),radial-gradient(ellipse at var(--wear-x2, 74%) var(--wear-y2, 68%),rgba(75,66,42,.14),transparent 28%),linear-gradient(135deg,rgba(70,52,28,.055),transparent 44%,rgba(52,44,28,.09)),repeating-linear-gradient(var(--wear-angle, 26deg),rgba(75,66,42,.055) 0 1px,transparent 1px .48rem)}.chessimals-cell.wear-0{--wear-x: 22%;--wear-y: 24%;--wear-x2: 78%;--wear-y2: 72%;--wear-angle: 18deg}.chessimals-cell.wear-1{--wear-x: 64%;--wear-y: 18%;--wear-x2: 30%;--wear-y2: 76%;--wear-angle: -24deg}.chessimals-cell.wear-2{--wear-x: 42%;--wear-y: 58%;--wear-x2: 82%;--wear-y2: 26%;--wear-angle: 42deg}.chessimals-cell.wear-3{--wear-x: 74%;--wear-y: 68%;--wear-x2: 24%;--wear-y2: 28%;--wear-angle: -12deg}.chessimals-cell.wear-4{--wear-x: 34%;--wear-y: 18%;--wear-x2: 62%;--wear-y2: 84%;--wear-angle: 64deg}.chessimals-cell.wear-5{--wear-x: 18%;--wear-y: 70%;--wear-x2: 70%;--wear-y2: 34%;--wear-angle: -48deg}:host-context(html.ion-palette-dark) .chessimals-cell-texture,:host-context([data-theme=\"dark\"]) .chessimals-cell-texture{opacity:.34;mix-blend-mode:soft-light}.chessimals-cell.is-dark-cell{--chessimals-cell-bg: var(--chessimals-cell-dark)}.chessimals-cell.is-selected{z-index:1;background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.28) 0 36%,transparent 62%),linear-gradient(135deg,rgba(var(--chessimals-selected-rgb),.22),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .18rem var(--chessimals-selected),inset 0 0 .55rem #ffffffb8,inset 0 0 1.8rem rgba(var(--chessimals-selected-rgb),.42),0 0 .55rem rgba(var(--chessimals-selected-rgb),.56),0 0 1.55rem rgba(var(--chessimals-selected-rgb),.36)}.chessimals-board.is-power-aiming .chessimals-cell.is-selected{background:radial-gradient(circle at 50% 52%,rgba(var(--chessimals-magic-rgb),.38) 0 34%,transparent 64%),radial-gradient(circle at 32% 24%,rgba(255,255,255,.34),transparent 28%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.2),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .18rem var(--chessimals-magic-hot),inset 0 0 .8rem #ffffffa8,inset 0 0 1.9rem rgba(var(--chessimals-magic-rgb),.5),0 0 .7rem rgba(var(--chessimals-magic-rgb),.62),0 0 1.75rem rgba(var(--chessimals-magic-rgb),.42)}.chessimals-board.is-power-aiming .chessimals-cell.is-legal:not(.is-capture):after{border-color:rgba(var(--chessimals-magic-rgb),.94);box-shadow:0 0 .72rem rgba(var(--chessimals-magic-rgb),.48),inset 0 0 .6rem #fff3}.chessimals-board.is-power-aiming .chessimals-target{background:var(--chessimals-magic-hot);box-shadow:0 0 0 .2rem rgba(var(--chessimals-magic-rgb),.2),0 0 .95rem rgba(var(--chessimals-magic-rgb),.62)}.chessimals-cell.is-legal:not(.is-capture):after{position:absolute;inset:13%;z-index:2;border:max(2px,1.8%) solid var(--chessimals-move);border-radius:.55rem;content:\"\";opacity:.74;pointer-events:none}.chessimals-cell.is-last:not(.is-selected):not(.is-legal):not(.is-capture){background:radial-gradient(circle,rgba(var(--chessimals-last-rgb),.16) 0 42%,transparent 68%),var(--chessimals-cell-bg)}.chessimals-cell.is-capture{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.24),transparent 34%),linear-gradient(135deg,rgba(var(--chessimals-capture-rgb),.14),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .14rem rgba(var(--chessimals-capture-rgb),.84),inset 0 0 1.4rem rgba(var(--chessimals-capture-rgb),.24),0 0 .95rem rgba(var(--chessimals-capture-rgb),.34);animation:chessimals-capture-aura 1.35s ease-in-out infinite}.chessimals-cell.is-capture:before{position:absolute;inset:4%;z-index:1;display:block;border-radius:.64rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.52),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.24),transparent 58%);content:\"\";opacity:0;transform:translate(-42%) scale(.9);animation:chessimals-capture-sweep 1.35s ease-in-out infinite}.chessimals-cell.is-capture:after{position:absolute;inset:8%;z-index:3;border:max(2px,1.55%) solid rgba(var(--chessimals-capture-rgb),.9);border-radius:.62rem;box-shadow:0 0 .75rem rgba(var(--chessimals-capture-rgb),.5),inset 0 0 .72rem #ffffff38;content:\"\";pointer-events:none;animation:chessimals-capture-frame 1.35s ease-in-out infinite}.chessimals-cell.has-capture-ready:not(.is-selected):after{position:absolute;inset:16%;z-index:3;border:max(2px,1.45%) solid rgba(var(--chessimals-selected-rgb),.72);border-radius:999px;box-shadow:0 0 .65rem rgba(var(--chessimals-selected-rgb),.34),inset 0 0 .55rem #ffffff2e;content:\"\"}.chessimals-cell.is-winning.is-legal:not(.is-capture):after{border-color:rgba(var(--chessimals-warning-rgb),.92);border-radius:999px;box-shadow:0 0 .75rem rgba(var(--chessimals-warning-rgb),.48),inset 0 0 .58rem #ffffff38}.chessimals-cell.is-winning .chessimals-target{background:var(--chessimals-warning);box-shadow:0 0 0 .22rem rgba(var(--chessimals-warning-rgb),.2),0 0 .95rem rgba(var(--chessimals-warning-rgb),.56)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture){background:radial-gradient(circle at 50% 52%,rgba(var(--chessimals-warning-rgb),.16),transparent 52%),var(--chessimals-cell-bg)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture) .chessimals-piece{filter:drop-shadow(0 0 .38rem rgba(var(--chessimals-warning-rgb),.52)) var(--chessimals-piece-white-shadow)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture) .chessimals-piece.is-black{filter:drop-shadow(0 0 .38rem rgba(var(--chessimals-warning-rgb),.52)) var(--chessimals-piece-black-shadow)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture):before{position:absolute;top:.26rem;right:.26rem;z-index:4;width:.48rem;height:.48rem;border-radius:999px;background:rgba(var(--chessimals-warning-rgb),.96);box-shadow:0 0 0 .18rem rgba(var(--chessimals-warning-rgb),.22);content:\"\"}@keyframes chessimals-capture-aura{0%,to{filter:saturate(1);box-shadow:inset 0 0 0 .12rem rgba(var(--chessimals-capture-rgb),.78),inset 0 0 1rem rgba(var(--chessimals-capture-rgb),.2),0 0 .64rem rgba(var(--chessimals-capture-rgb),.32)}50%{filter:saturate(1.22);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.96),inset 0 0 1.34rem rgba(var(--chessimals-capture-rgb),.34),0 0 1.2rem rgba(var(--chessimals-capture-rgb),.48)}}@keyframes chessimals-capture-sweep{0%{opacity:0;transform:translate(-52%) scale(.88)}42%{opacity:.66;transform:translate(0) scale(1)}to{opacity:0;transform:translate(48%) scale(.92)}}@keyframes chessimals-capture-frame{0%,to{opacity:.68;transform:scale(.96)}50%{opacity:1;transform:scale(1)}}.chessimals-cell.has-source-effect:not(.is-moving-source){background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.12) 0 34%,transparent 64%),var(--chessimals-cell-bg)}.chessimals-cell.has-move-effect{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.22) 0 34%,transparent 68%),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.86),inset 0 0 1.2rem rgba(var(--chessimals-capture-rgb),.26),0 0 1.1rem rgba(var(--chessimals-capture-rgb),.42)}.chessimals-cell.has-move-effect:before{position:absolute;inset:.12rem;z-index:1;display:block;border-radius:.7rem;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.48),transparent 22%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.42),transparent 58%);content:\"\";opacity:0;transform:scale(.72);animation:chessimals-power-impact .7s ease-out both}.chessimals-cell.has-move-effect:after{position:absolute;inset:.28rem;z-index:4;display:block;border:.14rem solid rgba(255,255,255,.72);border-radius:.58rem;box-shadow:0 0 .5rem #ffffff5c,0 0 1rem rgba(var(--chessimals-capture-rgb),.32);content:\"\";animation:chessimals-power-frame .86s ease-out both}.chessimals-cell.has-capture-effect{animation:chessimals-capture-hit .78s ease-out both}.chessimals-cell.effect-eagle:before{background:linear-gradient(135deg,transparent 10%,rgba(255,255,255,.78) 48%,transparent 52%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.36),transparent 62%)}.chessimals-cell.effect-bull:before{background:repeating-linear-gradient(90deg,rgba(255,255,255,.34) 0 .16rem,transparent .16rem .34rem),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.38),transparent 62%)}.chessimals-cell.effect-kangaroo:before{border-radius:999px;background:radial-gradient(circle at 42% 44%,rgba(255,255,255,.58),transparent 18%),radial-gradient(circle at 58% 56%,rgba(var(--chessimals-capture-rgb),.4),transparent 64%)}.chessimals-cell.effect-lion:before{background:conic-gradient(from 0deg,transparent,rgba(255,255,255,.56),transparent,rgba(var(--chessimals-capture-rgb),.4),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.34),transparent 62%)}@keyframes chessimals-power-impact{0%{opacity:0;transform:scale(.54) rotate(0)}28%{opacity:1;transform:scale(.96) rotate(2deg)}to{opacity:0;transform:scale(1.3) rotate(8deg)}}@keyframes chessimals-power-frame{0%{opacity:0;transform:scale(.84)}34%{opacity:1;transform:scale(1.02)}to{opacity:0;transform:scale(1.16)}}@keyframes chessimals-capture-hit{0%,to{filter:saturate(1)}35%{filter:saturate(1.35) brightness(1.08)}}.chessimals-cell.is-moving-source .chessimals-piece{opacity:0}.chessimals-piece{position:relative;z-index:2;display:block;width:68%;height:74%;color:var(--chessimals-primary);--chessimals-piece-fill: var(--chessimals-piece-white-fill);--chessimals-piece-side: var(--chessimals-piece-white-side);--chessimals-piece-line: var(--chessimals-piece-white-line);--chessimals-piece-outline: rgba(82, 65, 46, .34);filter:var(--chessimals-piece-white-shadow)}.chessimals-piece.is-black{color:#fff;--chessimals-piece-fill: var(--chessimals-piece-black-fill);--chessimals-piece-side: var(--chessimals-piece-black-side);--chessimals-piece-line: var(--chessimals-piece-black-line);--chessimals-piece-outline: rgba(255, 255, 255, .22);filter:var(--chessimals-piece-black-shadow)}.chessimals-moving-piece{position:absolute;top:0;left:0;z-index:6;width:calc(100% / var(--board-size));height:calc(100% / var(--board-size));display:grid;place-items:center;pointer-events:none;transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%));animation:chessimals-piece-travel .36s cubic-bezier(.2,.82,.24,1) both}@keyframes chessimals-piece-travel{0%{transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%)) scale(1)}68%{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1.07)}to{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1)}}.chessimals-piece__side,.chessimals-piece__head,.chessimals-piece__collar,.chessimals-piece__neck,.chessimals-piece__base{position:absolute;display:block;left:50%;background:var(--chessimals-piece-fill);border:max(1px,1.25%) solid var(--chessimals-piece-outline);transform:translate(-50%)}.chessimals-piece__side{top:46%;z-index:0;width:58%;height:41%;border-radius:34% 34% 12% 12%;background:linear-gradient(96deg,var(--chessimals-piece-side) 0 34%,transparent 35%),var(--chessimals-piece-fill);clip-path:polygon(22% 0,78% 0,96% 100%,4% 100%);opacity:.92}.chessimals-piece__head{top:1%;z-index:4;width:48%;height:40%;border-radius:999px;background:radial-gradient(circle at 30% 22%,rgba(255,255,255,.72) 0 13%,transparent 14%),linear-gradient(135deg,rgba(255,255,255,.28) 0 34%,transparent 35%),var(--chessimals-piece-fill);box-shadow:inset -.18rem -.12rem #52412e0f,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece.is-black .chessimals-piece__head{box-shadow:inset .18rem -.12rem #ffffff0f,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece__collar{top:37%;z-index:5;width:72%;height:15%;border-radius:999px;background:linear-gradient(180deg,#f5cd77 0%,var(--chessimals-piece-gold) 55%,var(--chessimals-piece-gold-dark) 100%);border-color:color-mix(in srgb,var(--chessimals-piece-gold-dark) 72%,transparent);box-shadow:inset 0 .12rem #ffffff47,inset 0 -.08rem #462e1238,0 .08rem .18rem #462e1224}.chessimals-piece__neck{top:50%;z-index:2;width:52%;height:31%;clip-path:polygon(16% 0,84% 0,100% 100%,0 100%);background:linear-gradient(100deg,var(--chessimals-piece-side) 0 28%,transparent 29%),linear-gradient(180deg,var(--chessimals-piece-fill),color-mix(in srgb,var(--chessimals-piece-fill) 78%,var(--chessimals-piece-side)));box-shadow:inset -.12rem .1rem #ffffff14}.chessimals-piece__base{bottom:0;z-index:6;width:86%;height:17%;border-radius:.42rem .42rem .22rem .22rem;background:linear-gradient(100deg,var(--chessimals-piece-side) 0 18%,transparent 19%),linear-gradient(180deg,color-mix(in srgb,var(--chessimals-piece-fill) 92%,#ffffff),var(--chessimals-piece-fill));box-shadow:inset 0 .12rem #ffffff24,inset 0 -.1rem 0 var(--chessimals-piece-line)}.chessimals-target{width:16%;height:16%;border-radius:999px;background:var(--chessimals-move);opacity:.9;box-shadow:0 0 .9rem rgba(var(--chessimals-move-rgb),.42)}.chessimals-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.625rem}.chessimals-cards button{position:relative;isolation:isolate;display:grid;grid-template-rows:minmax(5.4rem,1fr) auto;gap:.5rem;place-items:stretch;min-height:8.15rem;padding:.55rem .55rem .7rem;border:.12rem solid rgba(var(--chessimals-magic-rgb),.54);border-radius:1.125rem;background:radial-gradient(circle at 50% 18%,rgba(255,255,255,.9),transparent 36%),linear-gradient(180deg,rgba(var(--chessimals-magic-rgb),.24),rgba(var(--chessimals-magic-deep),.08) 58%,transparent),var(--chessimals-panel);color:var(--chessimals-text);font:inherit;box-shadow:inset 0 0 0 .14rem #ffffff75,0 .55rem 1.2rem rgba(var(--chessimals-magic-rgb),.14);transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.chessimals-powers__heading{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.chessimals-powers p{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-powers__heading span{flex:0 0 auto;border-radius:999px;padding:.28rem .62rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-size:.78rem;font-weight:950}.chessimals-cards button.is-selected{border-color:var(--chessimals-magic-hot);background:radial-gradient(circle at 50% 16%,rgba(255,255,255,.42),transparent 30%),radial-gradient(circle at 50% 76%,rgba(var(--chessimals-magic-rgb),.2),transparent 56%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.2),#ffffff0a),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-magic-rgb),.28),0 0 1.35rem rgba(var(--chessimals-magic-rgb),.48),0 .9rem 2rem rgba(var(--chessimals-magic-rgb),.18);transform:translateY(-1px)}.chessimals-cards button.is-selected:before,.chessimals-cards button.is-selected:after{position:absolute;inset:-.5rem;z-index:0;border-radius:inherit;content:\"\";pointer-events:none}.chessimals-cards button>*{position:relative;z-index:1}.chessimals-cards button.is-selected:before{background:radial-gradient(circle at 18% 24%,rgba(var(--chessimals-magic-rgb),.88) 0 .08rem,transparent .1rem),radial-gradient(circle at 78% 20%,rgba(255,255,255,.86) 0 .07rem,transparent .09rem),radial-gradient(circle at 86% 62%,rgba(var(--chessimals-magic-rgb),.72) 0 .06rem,transparent .08rem),radial-gradient(circle at 28% 78%,rgba(255,245,111,.78) 0 .07rem,transparent .09rem),radial-gradient(circle at 54% 8%,rgba(255,255,255,.68) 0 .05rem,transparent .07rem);opacity:.8;animation:chessimalsMagicParticles 1.8s ease-in-out infinite}.chessimals-cards button.is-selected:after{background:conic-gradient(from 12deg,transparent 0 16deg,rgba(var(--chessimals-magic-rgb),.2) 16deg 22deg,transparent 22deg 44deg);opacity:.68;filter:blur(.04rem);animation:chessimalsMagicAura 3.2s linear infinite}.chessimals-cards button.is-used{opacity:.42}.chessimals-animal-face{display:grid;place-items:center;width:100%;min-height:5.4rem;overflow:hidden;border:.12rem solid rgba(var(--chessimals-magic-deep),.62);border-radius:.9rem;background:radial-gradient(circle at 50% 34%,rgba(255,255,255,.96),transparent 44%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.38),rgba(var(--chessimals-magic-deep),.14)),var(--chessimals-animal-face-bg);color:color-mix(in srgb,var(--chessimals-text) 92%,#000);box-shadow:inset 0 0 0 .12rem #ffffff7a,inset 0 -.18rem .45rem rgba(var(--chessimals-magic-deep),.14)}.chessimals-animal-face img{display:block;width:min(5.45rem,88%);height:min(5.45rem,88%);pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;object-fit:contain;transform:none;filter:var(--chessimals-animal-face-filter)}.chessimals-bot-avatar,.chessimals-challenge-intro__avatar{display:grid;overflow:hidden;place-items:center}.chessimals-bot-avatar img,.chessimals-challenge-intro__avatar img{display:block;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;object-fit:contain}.chessimals-cards button.is-selected .chessimals-animal-face,.chessimals-powers.is-ready .chessimals-cards button:not(.is-used) .chessimals-animal-face{color:color-mix(in srgb,var(--chessimals-text) 94%,#000)}.chessimals-powers.is-locked .chessimals-animal-face{filter:var(--chessimals-animal-face-locked-filter);opacity:.86}.chessimals-powers.is-locked .chessimals-animal-face img,.chessimals-cards button.is-used .chessimals-animal-face img{opacity:var(--chessimals-animal-face-locked-img-opacity)}.chessimals-power-uses{position:absolute;top:.5rem;right:.5rem;z-index:2;display:inline-grid;place-items:center;min-width:1.72rem;height:1.35rem;border-radius:999px;padding:0 .38rem;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.72rem;font-weight:1000;line-height:1;box-shadow:0 .35rem .9rem rgba(var(--chessimals-primary-rgb),.22)}.chessimals-cards strong{overflow:hidden;max-width:100%;align-self:center;font-size:clamp(.9rem,2.3vw,1.08rem);font-weight:950;line-height:1.05;text-align:center;text-overflow:ellipsis;white-space:nowrap}.chessimals-powers.is-locked .chessimals-cards{opacity:.68}.chessimals-powers.is-ready{border-color:rgba(var(--chessimals-magic-rgb),.46);box-shadow:0 0 0 1px rgba(var(--chessimals-magic-rgb),.12),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}.chessimals-powers.is-ready .chessimals-cards button:not(.is-used){animation:chessimalsPowerPulse 1.8s ease-in-out infinite}.chessimals-powers.is-unlock-pulse{animation:chessimalsPowersUnlocked 1.18s ease-out both}.chessimals-powers.is-unlock-pulse .chessimals-cards button:not(.is-used){animation:chessimalsPowerIgnite .76s ease-out both,chessimalsPowerPulse 1.8s ease-in-out .76s infinite}@keyframes chessimalsPowerPulse{0%,to{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}50%{box-shadow:0 0 1.4rem rgba(var(--chessimals-magic-rgb),.24)}}@keyframes chessimalsPowersUnlocked{0%{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}34%{box-shadow:0 0 0 .18rem rgba(var(--chessimals-magic-rgb),.28),0 0 2.2rem rgba(var(--chessimals-magic-rgb),.38),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.16)}to{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}}@keyframes chessimalsPowerIgnite{0%{transform:translateY(0) scale(.96);box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}42%{transform:translateY(-.08rem) scale(1.025);box-shadow:0 0 0 .14rem rgba(var(--chessimals-magic-rgb),.24),0 0 1.5rem rgba(var(--chessimals-magic-rgb),.46)}to{transform:translateY(0) scale(1);box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}}@keyframes chessimalsMagicParticles{0%,to{opacity:.54;transform:translateY(0) scale(.94)}50%{opacity:1;transform:translateY(-.18rem) scale(1.02)}}@keyframes chessimalsMagicAura{to{transform:rotate(1turn)}}.chessimals-actions{order:6;align-self:stretch;justify-self:stretch;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr));gap:.625rem;margin-top:1rem}.chessimals-shell--projection .chessimals-game{max-width:min(96vw,90rem)}.chessimals-shell--projection .chessimals-turn-card{padding:.875rem 1rem}.chessimals-shell--projection .chessimals-status,.chessimals-shell--projection .chessimals-actions,.chessimals-shell--projection .chessimals-online,.chessimals-shell--projection .chessimals-replay,.chessimals-shell--projection .chessimals-rematch-status{display:none}.chessimals-shell--projection .chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center}.chessimals-shell--projection .chessimals-board-wrap{--chessimals-board-radius: min(.625rem, 10px);width:min(96vw,82vh,58rem);max-width:none}.chessimals-shell--projection .chessimals-board-frame{flex-basis:auto;max-width:none}@media (min-width: 760px){.chessimals-game{gap:1rem}.chessimals-turn-card,.chessimals-status,.chessimals-arena,.chessimals-replay,.chessimals-result,.chessimals-actions{grid-column:1 / -1}.chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center;align-items:start;gap:.85rem}.chessimals-shell:not(.chessimals-shell--projection) .chessimals-board-frame{flex-basis:min(100%,clamp(28rem,calc(100vh - 22rem),50rem));width:min(100%,clamp(28rem,calc(100vh - 22rem),50rem));max-width:min(50rem,clamp(28rem,calc(100vh - 22rem),50rem))}.chessimals-powers{width:min(100%,clamp(28rem,calc(100vh - 22rem),50rem));align-content:center;grid-template-columns:minmax(11rem,.68fr) minmax(0,1fr);align-items:center;gap:.8rem;padding:.78rem}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr))}.chessimals-cards button{grid-template-rows:minmax(3.85rem,1fr) auto;min-height:5.85rem}.chessimals-animal-face{min-height:3.85rem}.chessimals-animal-face img{width:min(3.85rem,88%);height:min(3.85rem,88%)}.chessimals-powers p{-webkit-line-clamp:3}}.chessimals-rules{display:grid;gap:1.05rem;padding-top:.25rem}.chessimals-settings{display:grid;gap:.85rem;color:var(--chessimals-modal-text, var(--chessimals-text))}.chessimals-settings article{display:grid;gap:.65rem;padding:1rem;border:1px solid var(--chessimals-modal-border, rgba(var(--chessimals-primary-rgb), .2));border-radius:1.1rem;background:radial-gradient(circle at 14% 8%,color-mix(in srgb,var(--chessimals-modal-card, #ffffff) 82%,transparent),transparent 28%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),rgba(var(--chessimals-sky-rgb),.06)),var(--chessimals-modal-card-strong, var(--chessimals-elevated-strong));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--chessimals-modal-surface, #ffffff) 48%,transparent)}:host ::ng-deep ion-modal.chessimals-settings-modal val-modal-shell ion-toolbar{--background: var(--chessimals-modal-surface);--color: var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-settings-modal val-modal-shell ion-content{--background: var(--chessimals-modal-surface);color:var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-settings-modal val-modal-shell ion-button{--color: var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-settings-modal .chessimals-settings val-toggle-input ion-toggle{--track-background: rgba(var(--chessimals-primary-rgb), .14);--track-background-checked: var(--chessimals-primary);--handle-background: var(--chessimals-modal-card);--handle-background-checked: var(--chessimals-primary-contrast);color:var(--chessimals-modal-text);font-weight:900}:host ::ng-deep ion-modal.chessimals-settings-modal .chessimals-settings val-range-input ion-label{color:var(--chessimals-modal-text);font-weight:900}:host ::ng-deep ion-modal.chessimals-settings-modal .chessimals-settings val-range-input ion-range{--bar-background: rgba(var(--chessimals-primary-rgb), .14);--bar-background-active: var(--chessimals-primary);--bar-height: .32rem;--bar-border-radius: 999px;--knob-background: var(--chessimals-primary-contrast);--knob-size: 1.28rem;--pin-background: var(--chessimals-primary);--pin-color: var(--chessimals-primary-contrast);color:var(--chessimals-modal-text)}.chessimals-about{display:grid;justify-items:center;gap:1rem;color:var(--ion-text-color, var(--chessimals-text))}.chessimals-about__logo{display:block;width:min(25rem,88%);height:auto;object-fit:contain;object-position:center;filter:drop-shadow(0 .5rem .7rem rgba(46,58,44,.14))}.chessimals-about__thanks{color:var(--ion-text-color, var(--chessimals-text));font-size:1.08rem;font-weight:950;line-height:1.2;text-align:center}.chessimals-about__feedback{max-width:30rem}.chessimals-about p{margin:0;color:var(--ion-color-medium, var(--chessimals-muted));font-size:.95rem;font-weight:750;line-height:1.45;text-align:center}.chessimals-about dl{display:grid;width:100%;margin:0;gap:.65rem}.chessimals-about dl div{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem .95rem;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--ion-card-background, #fff)}.chessimals-about dt,.chessimals-about dd{margin:0}.chessimals-about dt{color:var(--ion-color-medium, var(--chessimals-muted));font-size:.78rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-about dd{color:var(--ion-text-color, var(--chessimals-text));font-size:.95rem;font-weight:950}.chessimals-rules__hero{display:block;width:100%;height:auto;object-fit:contain;border-radius:1.25rem;background:transparent;box-shadow:0 .85rem 1.8rem #2e3a2c1f}.chessimals-rules__powers,.chessimals-rules__note,.chessimals-rules__steps article{display:grid;align-items:start;gap:.75rem;border:1px solid var(--chessimals-modal-border, rgba(var(--chessimals-primary-rgb), .16));border-radius:1.25rem;background:var(--chessimals-modal-card, #ffffff);color:var(--chessimals-modal-text, var(--ion-text-color, #2f2a3a))}.chessimals-rules__section-title span{justify-self:start;border-radius:999px;padding:.24rem .55rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-rules__section-title{display:grid;gap:.35rem;padding-inline:0}.chessimals-rules__section-title strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.25}.chessimals-rules__steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem}.chessimals-rules__steps article{align-content:start;padding:.9rem}.chessimals-rules__steps article>img,.chessimals-rules__powers>img,.chessimals-rules__note>img{display:block;width:4.75rem;height:4.75rem;border-radius:1.15rem;object-fit:cover;box-shadow:0 0 0 .1rem rgba(var(--chessimals-sun-rgb),.68),0 .7rem 1.25rem #2e3a2c29}.chessimals-rules__powers,.chessimals-rules__note{grid-template-columns:auto minmax(0,1fr);padding:.95rem}.chessimals-rules__power-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem;margin-top:.35rem}.chessimals-rules__power-list span{display:grid;justify-items:center;align-content:center;gap:.32rem;min-width:0;min-height:8.1rem;border:1px solid var(--chessimals-modal-border, rgba(var(--chessimals-primary-rgb), .16));border-radius:1rem;padding:.8rem .52rem;background:radial-gradient(circle at 50% 0,color-mix(in srgb,var(--chessimals-modal-card, #ffffff) 78%,transparent),transparent 52%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),rgba(var(--chessimals-sun-rgb),.18)),var(--chessimals-modal-card-strong, #fff8df);color:var(--chessimals-modal-text, var(--chessimals-text));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--chessimals-modal-surface, #ffffff) 64%,transparent),0 .55rem 1.15rem var(--chessimals-modal-shadow, rgba(46, 58, 44, .12));font-size:.78rem;font-weight:950;line-height:1.05;text-align:center}.chessimals-rules__power-list strong,.chessimals-rules__power-list small{min-width:0}.chessimals-rules__power-list strong{font-size:.86rem;font-weight:950;line-height:1.08}.chessimals-rules__power-list small{color:var(--chessimals-muted);font-size:.69rem;font-weight:820;line-height:1.15}.chessimals-rules__power-list img{display:block;width:3.25rem;height:3.25rem;object-fit:contain;filter:drop-shadow(0 .25rem .35rem rgba(46,58,44,.16))}.chessimals-rules__note{border-color:rgba(var(--chessimals-sun-rgb),.34);background:linear-gradient(135deg,rgba(var(--chessimals-sun-rgb),.1),rgba(var(--chessimals-primary-rgb),.04)),var(--chessimals-modal-card, #ffffff)}.chessimals-rules article>span{display:grid;place-items:center;width:2rem;height:2rem;border-radius:999px;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-weight:950}.chessimals-rules article>div{display:grid;min-width:0;gap:.35rem}.chessimals-rules h3,.chessimals-rules p,.chessimals-rules ul{margin:0}.chessimals-rules h3{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.2}.chessimals-rules p,.chessimals-rules li{color:var(--chessimals-modal-muted, var(--ion-color-medium, #6f6a7a));font-size:.88rem;font-weight:760;line-height:1.5}.chessimals-rules ul{display:grid;gap:.45rem;padding-left:1.15rem}.chessimals-primary,.chessimals-secondary{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:3.625rem;border-radius:999px;font:inherit;font-weight:950}.chessimals-primary{border:0;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 1.125rem 2.8rem rgba(var(--chessimals-primary-rgb),.28)}.chessimals-secondary{border:1px solid var(--chessimals-border);background:transparent;color:var(--chessimals-text)}.chessimals-primary.is-working,.chessimals-secondary.is-working{cursor:wait;opacity:.82}.chessimals-button-spinner{width:1rem;height:1rem;flex:0 0 auto;border:.14rem solid currentColor;border-right-color:transparent;border-radius:999px;animation:chessimals-spin .72s linear infinite}@media (max-width: 560px){.chessimals-home-actions{grid-template-columns:1fr}.chessimals-home-action{min-height:0}.chessimals-rules__steps,.chessimals-rules__powers,.chessimals-rules__note{grid-template-columns:1fr}.chessimals-rules__power-list{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-size,.chessimals-mode,.chessimals-actions,.chessimals-play-options .chessimals-nightmare,.chessimals-challenge-cta,.chessimals-path-cta,.chessimals-path-hero,.chessimals-path-grid,.chessimals-path-highlights,.chessimals-path-rings,.chessimals-path-stats{grid-template-columns:1fr}.chessimals-path-hero{justify-items:start}.chessimals-path-hero__art{width:6.25rem;height:6.25rem}.chessimals-path-cta__action{justify-self:stretch;width:100%}.chessimals-path-hero__medal{justify-self:stretch;width:100%;min-height:5.5rem}.chessimals-path-bars span{grid-template-columns:minmax(0,1fr) auto}.chessimals-path-bars i{grid-column:1 / -1;order:3}.chessimals-challenge-cta__actions,.chessimals-challenge-cta__rival{min-width:0}.chessimals-challenge-hero,.chessimals-challenge-focus{grid-template-columns:1fr}.chessimals-challenge-card{padding:.85rem}.chessimals-challenge-card__stats{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-game{gap:.55rem}.chessimals-turn-card{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.5rem;min-height:0;border-radius:.95rem;padding:.5rem}.chessimals-turn-card__copy{gap:.1rem}.chessimals-turn-card__chip{max-width:100%;padding:.18rem .5rem;font-size:.6rem;letter-spacing:.045em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-turn-card strong{font-size:clamp(.92rem,4.4vw,1.12rem);line-height:1.08}.chessimals-turn-card p{display:-webkit-box;overflow:hidden;font-size:.72rem;line-height:1.2;-webkit-box-orient:vertical;-webkit-line-clamp:1}.chessimals-player-strip{width:auto;max-width:none;min-width:0;padding:.25rem}.chessimals-player-strip__avatar{flex:0 0 1.8rem;width:1.8rem;height:1.8rem;aspect-ratio:1 / 1}:host ::ng-deep .chessimals-player-strip .chessimals-turn-avatar{width:1.8rem;min-width:1.8rem;height:1.8rem}.chessimals-player-strip__text{display:none}.chessimals-status{grid-template-columns:repeat(3,minmax(0,1fr));gap:.3rem}.chessimals-status div{gap:.14rem;min-height:2.2rem;border-radius:.82rem;padding:.34rem .3rem}.chessimals-status small{font-size:.58rem;line-height:1.05}.chessimals-status strong{font-size:clamp(.78rem,3.2vw,.94rem);line-height:1.05}.chessimals-challenge-live{grid-template-columns:1fr;gap:.45rem;padding:.55rem}.chessimals-challenge-live__rival>.chessimals-bot-avatar{width:2.35rem;height:2.35rem;font-size:1.15rem}.chessimals-challenge-live__rival p{-webkit-line-clamp:1}.chessimals-challenge-live__metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:.3rem}.chessimals-challenge-live__metrics span{min-height:2.35rem;padding:.32rem .36rem}.chessimals-challenge-live__metrics small{font-size:.56rem}.chessimals-challenge-live__metrics b{font-size:.82rem}.chessimals-challenge-intro{padding:.55rem}.chessimals-challenge-intro__card{gap:.42rem;width:min(15.5rem,94%);padding:.6rem}.chessimals-challenge-intro__avatar{width:3.05rem;height:3.05rem;font-size:1.62rem}.chessimals-challenge-intro__copy strong{font-size:1.02rem}.chessimals-challenge-intro__copy p{font-size:.72rem;-webkit-line-clamp:1}.chessimals-challenge-intro__facts b{font-size:.74rem}.chessimals-challenge-intro .chessimals-primary{min-height:2.15rem}.chessimals-tip,.chessimals-result,.chessimals-replay,.chessimals-online-status,.chessimals-tutorial{gap:.2rem;border-radius:1rem;padding:.7rem .75rem}.chessimals-tip strong,.chessimals-result strong,.chessimals-replay strong,.chessimals-tutorial strong{font-size:.95rem}.chessimals-tip p,.chessimals-result p{font-size:.9rem;line-height:1.28}.chessimals-result__stats{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-replay,.chessimals-tutorial{grid-template-columns:1fr}.chessimals-replay__actions{justify-content:stretch}.chessimals-replay__actions .chessimals-secondary{flex:1 1 8rem}.chessimals-arena{gap:.5rem}.chessimals-board-wrap{width:100%;margin-inline:0;padding:0}.chessimals-board-frame{width:100%}.chessimals-powers{gap:.5rem;border-radius:1rem;padding:.55rem}.chessimals-powers__heading{gap:.4rem}.chessimals-powers h2{font-size:1rem}.chessimals-powers__heading span{padding:.22rem .48rem;font-size:.68rem}.chessimals-powers p{font-size:.78rem;line-height:1.2;-webkit-line-clamp:1}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem}.chessimals-cards button{grid-template-rows:minmax(3.65rem,1fr) auto;gap:.3rem;min-height:5.4rem;border-radius:.85rem;padding:.3rem .24rem .42rem}.chessimals-animal-face{min-height:3.65rem;border-radius:.68rem}.chessimals-animal-face img{width:min(3.55rem,92%);height:min(3.55rem,92%)}.chessimals-cards strong{font-size:clamp(.64rem,2.8vw,.78rem)}.chessimals-board{border-radius:var(--chessimals-board-radius)}.chessimals-cell-coordinate{font-size:.58rem}}@media (prefers-reduced-motion: reduce){.chessimals-cell.is-capture,.chessimals-cell.is-capture:before,.chessimals-cell.is-capture:after,.chessimals-cell.has-move-effect,.chessimals-cell.has-move-effect:before,.chessimals-cell.has-move-effect:after,.chessimals-cell.has-capture-effect,.chessimals-moving-piece,.chessimals-challenge-intro,.chessimals-status__score.is-pop{animation:none!important}.chessimals-moving-piece{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%))}}\n"] }]
|
|
6160
6220
|
}], ctorParameters: () => [], propDecorators: { boardAnchor: [{
|
|
6161
6221
|
type: ViewChild,
|
|
6162
6222
|
args: ['boardAnchor']
|
|
@@ -6167,4 +6227,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
6167
6227
|
}], projectionMode: [{
|
|
6168
6228
|
type: Input
|
|
6169
6229
|
}] } });
|
|
6170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlc3NpbWFscy1nYW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvbWluaS1nYW1lcy9jaGVzc2ltYWxzLWdhbWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLE1BQU0sRUFBcUIsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNySSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDdkIsMkJBQTJCLEVBQzNCLG9CQUFvQixFQUNwQix1QkFBdUIsRUFDdkIsb0JBQW9CLEVBQ3BCLFdBQVcsRUFDWCxvQkFBb0IsR0FDckIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM3RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLHdCQUF3QixFQUEyQixNQUFNLCtCQUErQixDQUFDO0FBQ2xHLE9BQU8sRUFBRSx5QkFBeUIsRUFBNEIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQSswQ1Qsdzh1SEFoMUNTLFFBQVEsc0RBQUUsd0JBQXdCLHFGQUFFLHlCQUF5Qix1RkFBRSxvQkFBb0IsOE1BQUUsbUJBQW1CLHlHQUFFLG9CQUFvQiwwRkFBRSxlQUFlLDBHQUFFLG1CQUFtQjs7NEZBcThObkssdUJBQXVCO2tCQXg4Tm5DLFNBQVM7K0JBQ0UscUJBQXFCLGNBQ25CLElBQUksV0FDUCxDQUFDLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSx5QkFBeUIsRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsbUJBQW1CLENBQUMsWUFDcks7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQSswQ1Q7d0RBNHBMaUMsV0FBVztzQkFBNUMsU0FBUzt1QkFBQyxhQUFhO2dCQTRPWCxZQUFZO3NCQUF4QixLQUFLO2dCQVFHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE5nWm9uZSwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW9uTW9kYWwgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IE5hdmlnYXRpb25TdGFydCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBhcHBseUNoZXNzaW1hbHNNb3ZlLFxuICBjaG9vc2VDaGVzc2ltYWxzQm90TW92ZSxcbiAgQ0hFU1NJTUFMU19CT1RfUFJPRklMRVMsXG4gIGNyZWF0ZUNoZXNzaW1hbHNSZXZpZXdTdGF0ZSxcbiAgY3JlYXRlQ2hlc3NpbWFsc0dhbWUsXG4gIGdldENoZXNzaW1hbHNMZWdhbE1vdmVzLFxuICBnZXRDaGVzc2ltYWxzUGllY2VBdCxcbiAgcG9zaXRpb25LZXksXG4gIHJlc2lnbkNoZXNzaW1hbHNHYW1lLFxufSBmcm9tICcuL2NoZXNzaW1hbHMtZW5naW5lJztcbmltcG9ydCB7IENoZXNzaW1hbHNPbmxpbmVTZXJ2aWNlIH0gZnJvbSAnLi9jaGVzc2ltYWxzLW9ubGluZS5zZXJ2aWNlJztcbmltcG9ydCB7IENoZXNzaW1hbHNDaGFsbGVuZ2VQcm9ncmVzc1NlcnZpY2UgfSBmcm9tICcuL2NoZXNzaW1hbHMtY2hhbGxlbmdlLXByb2dyZXNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTUlOSV9HQU1FU19JMThOIH0gZnJvbSAnLi9taW5pLWdhbWVzLmkxOG4nO1xuaW1wb3J0IHsgTWluaUdhbWVDYWxsb3V0Q29tcG9uZW50LCBNaW5pR2FtZUNhbGxvdXRNZXRhZGF0YSB9IGZyb20gJy4vbWluaS1nYW1lLWNhbGxvdXQuY29tcG9uZW50JztcbmltcG9ydCB7IE1pbmlHYW1lU2NvcmVQb3BDb21wb25lbnQsIE1pbmlHYW1lU2NvcmVQb3BNZXRhZGF0YSB9IGZyb20gJy4vbWluaS1nYW1lLXNjb3JlLXBvcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmV0cm9BdWRpb1NlcnZpY2UgfSBmcm9tICcuL3JldHJvLWF1ZGlvLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQ2hlc3NpbWFsc0FuaW1hbFR5cGUsXG4gIENoZXNzaW1hbHNCb3REaWZmaWN1bHR5LFxuICBDaGVzc2ltYWxzQm90UHJvZmlsZSxcbiAgQ2hlc3NpbWFsc0JvdFByb2ZpbGVJZCxcbiAgQ2hlc3NpbWFsc0JvYXJkU2l6ZSxcbiAgQ2hlc3NpbWFsc0NoYWxsZW5nZUJvdCxcbiAgQ2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kU3RhdHMsXG4gIENoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFJlc3VsdCxcbiAgQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1bixcbiAgQ2hlc3NpbWFsc0NoYWxsZW5nZVN0YXRzLFxuICBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBDaGVzc2ltYWxzSGlzdG9yeUVudHJ5LFxuICBDaGVzc2ltYWxzTG9jYWxNb2RlLFxuICBDaGVzc2ltYWxzTW92ZSxcbiAgQ2hlc3NpbWFsc05pZ2h0bWFyZU1vZGUsXG4gIENoZXNzaW1hbHNPbmxpbmVQYXJ0aWNpcGFudCxcbiAgQ2hlc3NpbWFsc1BpZWNlLFxuICBDaGVzc2ltYWxzUGxheWVyQ29sb3IsXG4gIENoZXNzaW1hbHNQb3NpdGlvbixcbiAgQ2hlc3NpbWFsc1N0YXRzTW9kZSxcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBNb2RhbExheW91dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9tb2RhbC1sYXlvdXQvbW9kYWwtbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSYW5nZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3JhbmdlLWlucHV0L3JhbmdlLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSYW5nZUlucHV0TWV0YWRhdGEsIFJhbmdlVmFsdWUgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvcmFuZ2UtaW5wdXQvdHlwZXMnO1xuaW1wb3J0IHsgVG9nZ2xlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvdG9nZ2xlLWlucHV0L3RvZ2dsZS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9nZ2xlSW5wdXRNZXRhZGF0YSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy90b2dnbGUtaW5wdXQvdHlwZXMnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXNlckF2YXRhckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3VzZXItYXZhdGFyL3VzZXItYXZhdGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVc2VyQXZhdGFyTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9hdG9tcy91c2VyLWF2YXRhci90eXBlcyc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGFwdGljc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9oYXB0aWNzL2hhcHRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBNaW5pR2FtZVBsYXllclByb2ZpbGVTZXJ2aWNlIH0gZnJvbSAnLi9taW5pLWdhbWUtcGxheWVyLXByb2ZpbGUuc2VydmljZSc7XG5pbXBvcnQgeyBWRVJTSU9OIGFzIFZBTFRFQ0hfQ09NUE9ORU5UU19WRVJTSU9OIH0gZnJvbSAnLi4vLi4vLi4vdmVyc2lvbic7XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzQW5pbWFsVmlldyB7XG4gIHR5cGU6IENoZXNzaW1hbHNBbmltYWxUeXBlO1xuICBhc3NldFNyYzogc3RyaW5nO1xuICB0b25lOiBudW1iZXI7XG59XG5cbnR5cGUgQ2hlc3NpbWFsc0NvbmZpcm1BY3Rpb24gPSAncmVzdGFydCcgfCAnbW9kZScgfCAnZ2FtZXMnIHwgJ3Jlc2lnbicgfCAnY2hhbGxlbmdlLW5ldyc7XG50eXBlIENoZXNzaW1hbHNSZW1hdGNoU3RhdGUgPSAnbm9uZScgfCAncmVxdWVzdGVkJyB8ICdpbmNvbWluZyc7XG50eXBlIENoZXNzaW1hbHNDaGFsbGVuZ2VQaGFzZSA9ICdpZGxlJyB8ICdwbGF5aW5nJyB8ICdiZXR3ZWVuJyB8ICdjb21wbGV0ZWQnIHwgJ2ZhaWxlZCc7XG50eXBlIENoZXNzaW1hbHNCb3REaWZmaWN1bHR5Q2hvaWNlID0gQ2hlc3NpbWFsc0JvdERpZmZpY3VsdHkgfCAnbmlnaHRtYXJlJztcblxuaW50ZXJmYWNlIENoZXNzaW1hbHNUdXRvcmlhbEV4cGVjdGVkTW92ZSB7XG4gIHBpZWNlSWQ6IHN0cmluZztcbiAgdG86IENoZXNzaW1hbHNQb3NpdGlvbjtcbiAgYW5pbWFsPzogQ2hlc3NpbWFsc0FuaW1hbFR5cGU7XG59XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzTW92aW5nUGllY2VWaWV3IHtcbiAgY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcjtcbiAgZnJvbVJvdzogbnVtYmVyO1xuICBmcm9tQ29sOiBudW1iZXI7XG4gIHRvUm93OiBudW1iZXI7XG4gIHRvQ29sOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzTW92ZUVmZmVjdFZpZXcge1xuICBhbmltYWw/OiBDaGVzc2ltYWxzQW5pbWFsVHlwZTtcbiAgZnJvbTogQ2hlc3NpbWFsc1Bvc2l0aW9uO1xuICB0bzogQ2hlc3NpbWFsc1Bvc2l0aW9uO1xuICBjYXB0dXJlOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc01vdmVUcmFpbFZpZXcge1xuICB4OiBzdHJpbmc7XG4gIHk6IHN0cmluZztcbiAgbGVuZ3RoOiBzdHJpbmc7XG4gIGFuZ2xlOiBzdHJpbmc7XG4gIGFuaW1hbD86IENoZXNzaW1hbHNBbmltYWxUeXBlO1xuICBjYXB0dXJlOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc0NoYWxsZW5nZVRlbnNpb25WaWV3IHtcbiAgdGl0bGU6IHN0cmluZztcbiAgYm9keTogc3RyaW5nO1xuICBpY29uOiBzdHJpbmc7XG4gIGNyaXRpY2FsOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc0FjaGlldmVtZW50VmlldyB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGJvZHk6IHN0cmluZztcbiAgaWNvbjogc3RyaW5nO1xuICB1bmxvY2tlZDogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIENoZXNzaW1hbHNQcm9ncmVzc01ldHJpY1ZpZXcge1xuICBsYWJlbDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc1Byb2dyZXNzUmluZ1ZpZXcge1xuICBsYWJlbDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBkZXRhaWw6IHN0cmluZztcbiAgcHJvZ3Jlc3M6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIENoZXNzaW1hbHNQYXRoSGlnaGxpZ2h0VmlldyB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGJvZHk6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgaW1hZ2VTcmM6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIENoZXNzaW1hbHNNb3ZlU2NvcmVWaWV3IHtcbiAgY29tYm86IG51bWJlcjtcbiAgbGFiZWw6IHN0cmluZztcbiAgc2NvcmU6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIENoZXNzaW1hbHNHYW1lU2NvcmVWaWV3IHtcbiAgYmVzdENvbWJvOiBudW1iZXI7XG4gIGJlc3RNb3ZlPzogQ2hlc3NpbWFsc01vdmVTY29yZVZpZXc7XG4gIHNjb3JlOiBudW1iZXI7XG59XG5cbmNvbnN0IENIRVNTSU1BTFNfTU9WRV9BTklNQVRJT05fTVMgPSAzNjA7XG5jb25zdCBDSEVTU0lNQUxTX1BPV0VSX0NBTExPVVRfTVMgPSAyMjAwO1xuY29uc3QgQ0hFU1NJTUFMU19TQ09SRV9QT1BfTVMgPSAxMTUwO1xuY29uc3QgQ0hFU1NJTUFMU19CT1RfVEhJTktJTkdfTVMgPSA2MjA7XG5jb25zdCBDSEVTU0lNQUxTX0JPVF9DT0xPUjogQ2hlc3NpbWFsc1BsYXllckNvbG9yID0gJ2JsYWNrJztcbmNvbnN0IENIRVNTSU1BTFNfVFVUT1JJQUxfU1RFUFMgPSA3O1xuY29uc3QgQ0hFU1NJTUFMU19PTkxJTkVfVFVSTl9TRUNPTkRTID0gNDU7XG5jb25zdCBDSEVTU0lNQUxTX0NIQUxMRU5HRV9UVVJOX1NFQ09ORFMgPSAzMDtcbmNvbnN0IENIRVNTSU1BTFNfQ0hBTExFTkdFX0ZJTkFMX1RVUk5fU0VDT05EUyA9IDIwO1xuY29uc3QgQ0hFU1NJTUFMU19QT1dFUl9BU1NFVF9CQVNFID0gJ2Fzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3Bvd2Vycyc7XG5cbmNvbnN0IEFOSU1BTFM6IENoZXNzaW1hbHNBbmltYWxWaWV3W10gPSBbXG4gIHsgdHlwZTogJ2VhZ2xlJywgYXNzZXRTcmM6IGAke0NIRVNTSU1BTFNfUE9XRVJfQVNTRVRfQkFTRX0vZWFnbGUtcG93ZXIucG5nYCwgdG9uZTogNjU5LjI1IH0sXG4gIHsgdHlwZTogJ2J1bGwnLCBhc3NldFNyYzogYCR7Q0hFU1NJTUFMU19QT1dFUl9BU1NFVF9CQVNFfS9idWxsLXBvd2VyLnBuZ2AsIHRvbmU6IDI2MS42MyB9LFxuICB7IHR5cGU6ICdrYW5nYXJvbycsIGFzc2V0U3JjOiBgJHtDSEVTU0lNQUxTX1BPV0VSX0FTU0VUX0JBU0V9L2thbmdhcm9vLXBvd2VyLnBuZ2AsIHRvbmU6IDUyMy4yNSB9LFxuICB7IHR5cGU6ICdsaW9uJywgYXNzZXRTcmM6IGAke0NIRVNTSU1BTFNfUE9XRVJfQVNTRVRfQkFTRX0vbGlvbi1wb3dlci5wbmdgLCB0b25lOiAzOTIgfSxcbl07XG5cbmNvbnN0IENIRVNTSU1BTFNfQ0hBTExFTkdFX0xBRERFUjogQ2hlc3NpbWFsc0NoYWxsZW5nZUJvdFtdID0gW1xuICB7IGlkOiAnc3Byb3V0Jywgcm91bmQ6IDEsIHByb2ZpbGVJZDogJ2V4cGxvcmVyJywgZGlmZmljdWx0eTogJ2Vhc3knLCBib2FyZFNpemU6IDYsIGludHJvS2V5OiAnY2hlc3NpbWFsc0NoYWxsZW5nZUJvdFNwcm91dEludHJvJyB9LFxuICB7IGlkOiAnc2VudGluZWwnLCByb3VuZDogMiwgcHJvZmlsZUlkOiAnZ3VhcmRpYW4nLCBkaWZmaWN1bHR5OiAnbm9ybWFsJywgYm9hcmRTaXplOiA2LCBpbnRyb0tleTogJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb3RTZW50aW5lbEludHJvJyB9LFxuICB7IGlkOiAnaHVudGVyJywgcm91bmQ6IDMsIHByb2ZpbGVJZDogJ2h1bnRlcicsIGRpZmZpY3VsdHk6ICdub3JtYWwnLCBib2FyZFNpemU6IDYsIGludHJvS2V5OiAnY2hlc3NpbWFsc0NoYWxsZW5nZUJvdEh1bnRlckludHJvJyB9LFxuICB7IGlkOiAnanVtcGVyJywgcm91bmQ6IDQsIHByb2ZpbGVJZDogJ2p1bXBlcicsIGRpZmZpY3VsdHk6ICdub3JtYWwnLCBib2FyZFNpemU6IDYsIGludHJvS2V5OiAnY2hlc3NpbWFsc0NoYWxsZW5nZUJvdEp1bXBlckludHJvJyB9LFxuICB7IGlkOiAncHJlZGF0b3InLCByb3VuZDogNSwgcHJvZmlsZUlkOiAncHJlZGF0b3InLCBkaWZmaWN1bHR5OiAnaGFyZCcsIGJvYXJkU2l6ZTogOCwgaW50cm9LZXk6ICdjaGVzc2ltYWxzQ2hhbGxlbmdlQm90UHJlZGF0b3JJbnRybycgfSxcbiAgeyBpZDogJ29yYWNsZScsIHJvdW5kOiA2LCBwcm9maWxlSWQ6ICdzdHJhdGVnaXN0JywgZGlmZmljdWx0eTogJ2hhcmQnLCBib2FyZFNpemU6IDgsIGludHJvS2V5OiAnY2hlc3NpbWFsc0NoYWxsZW5nZUJvdE9yYWNsZUludHJvJyB9LFxuICB7IGlkOiAnc3ByaW50ZXInLCByb3VuZDogNywgcHJvZmlsZUlkOiAnc3ByaW50ZXInLCBkaWZmaWN1bHR5OiAnaGFyZCcsIGJvYXJkU2l6ZTogOCwgaW50cm9LZXk6ICdjaGVzc2ltYWxzQ2hhbGxlbmdlQm90U3ByaW50ZXJJbnRybycgfSxcbiAgeyBpZDogJ2NoYW1waW9uJywgcm91bmQ6IDgsIHByb2ZpbGVJZDogJ3NlbnRpbmVsJywgZGlmZmljdWx0eTogJ2hhcmQnLCBib2FyZFNpemU6IDgsIGludHJvS2V5OiAnY2hlc3NpbWFsc0NoYWxsZW5nZUJvdENoYW1waW9uSW50cm8nIH0sXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtY2hlc3NpbWFscy1nYW1lJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0lvbk1vZGFsLCBNaW5pR2FtZUNhbGxvdXRDb21wb25lbnQsIE1pbmlHYW1lU2NvcmVQb3BDb21wb25lbnQsIE1vZGFsTGF5b3V0Q29tcG9uZW50LCBSYW5nZUlucHV0Q29tcG9uZW50LCBUb2dnbGVJbnB1dENvbXBvbmVudCwgQnV0dG9uQ29tcG9uZW50LCBVc2VyQXZhdGFyQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bWFpbiBjbGFzcz1cImNoZXNzaW1hbHMtc2hlbGxcIiBbY2xhc3MuY2hlc3NpbWFscy1zaGVsbC0tcHJvamVjdGlvbl09XCJwcm9qZWN0aW9uTW9kZVwiPlxuICAgICAgQGlmIChzY3JlZW4oKSA9PT0gJ2hvbWUnKSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1oZXJvXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtaGVyb19fbG9nb1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtaGVyb19fZW1ibGVtXCJcbiAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvYnJhbmQvY2hlc3NpbWFscy1lbWJsZW0ucG5nXCJcbiAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgZHJhZ2dhYmxlPVwiZmFsc2VcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLWhlcm9fX3dvcmRtYXJrXCJcbiAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvYnJhbmQvY2hlc3NpbWFscy13b3JkbWFyay5wbmdcIlxuICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICBkcmFnZ2FibGU9XCJmYWxzZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNTdWJ0aXRsZScpIH19PC9wPlxuICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLXBhbmVsXCI+XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLWhvbWUtYWN0aW9uc1wiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hlc3NpbWFsc0hvbWVDaG9vc2UnKVwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtaG9tZS1hY3Rpb24gY2hlc3NpbWFscy1ob21lLWFjdGlvbi0tcGxheVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib3BlblBsYXlPcHRpb25zTW9kYWwoKVwiPlxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLW1vZGUtaWNvblwiXG4gICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvbW9kZS1pY29ucy9zb2xvLWJvcmRlcmxlc3MucG5nXCJcbiAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgIGRyYWdnYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjaGVzc2ltYWxzUXVpY2tQbGF5JykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNRdWlja1BsYXlCb2R5JykgfX08L3NtYWxsPlxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLWhvbWUtYWN0aW9uXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvcGVuQ2hhbGxlbmdlVmlldygpXCI+XG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtbW9kZS1pY29uXCJcbiAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9tb2RlLWljb25zL2NoYWxsZW5nZS1ib3JkZXJsZXNzLnBuZ1wiXG4gICAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICBkcmFnZ2FibGU9XCJmYWxzZVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVRpdGxlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb2R5JykgfX08L3NtYWxsPlxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLWhvbWUtYWN0aW9uXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvcGVuUGF0aFZpZXcoKVwiPlxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLW1vZGUtaWNvblwiXG4gICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvbW9kZS1pY29ucy9wYXRoLWJvcmRlcmxlc3MucG5nXCJcbiAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgIGRyYWdnYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjaGVzc2ltYWxzUHJvZ3Jlc3NUaXRsZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzUHJvZ3Jlc3NTdWJ0aXRsZScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1ob3d0b1wiPlxuICAgICAgICAgICAgPGgyPnt7IHQoJ2NoZXNzaW1hbHNIb3dUb1RpdGxlJykgfX08L2gyPlxuICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc0hvd1RvQm9keScpIH19PC9wPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtaG93dG9fX2FjdGlvbnNcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtbGVhcm4tbW9yZVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic3RhcnRUdXRvcmlhbCgpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc1R1dG9yaWFsU3RhcnQnKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtbGVhcm4tbW9yZVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib3BlblJ1bGVzTW9kYWwoKVwiPlxuICAgICAgICAgICAgICAgIHt7IHQoJ2xlYXJuTW9yZScpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgPGRldGFpbHMgY2xhc3M9XCJjaGVzc2ltYWxzLW9wdGlvbnNcIj5cbiAgICAgICAgICAgIDxzdW1tYXJ5PlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2NoZXNzaW1hbHNQbGF5V2l0aEZyaWVuZCcpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NoZXNzaW1hbHNPbmxpbmVUaXRsZScpIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9zdW1tYXJ5PlxuXG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc09ubGluZVRpdGxlJykgfX08L2gyPlxuICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzT25saW5lQm9keScpIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKG9ubGluZUVycm9yKCkpIHtcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjaGVzc2ltYWxzLW9ubGluZV9fZXJyb3JcIj57eyBvbmxpbmVFcnJvcigpIH19PC9wPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChvbmxpbmVMb2FkaW5nKCkpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lX19sb2FkaW5nXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2NoZXNzaW1hbHNPbmxpbmVMb2FkaW5nJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmVfX2NyZWF0ZVwiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy13b3JraW5nXT1cIm9ubGluZUFjdGlvbigpID09PSAnY3JlYXRlJ1wiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1idXN5XT1cIm9ubGluZUFjdGlvbigpID09PSAnY3JlYXRlJ1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9ubGluZUxvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNyZWF0ZU9ubGluZUdhbWUoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAaWYgKG9ubGluZUFjdGlvbigpID09PSAnY3JlYXRlJykge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWJ1dHRvbi1zcGlubmVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ3JlYXRlT25saW5lJykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ3JlYXRlT25saW5lSGludCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lX19qb2luXCI+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc0pvaW5PbmxpbmVUaXRsZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lLWNvZGVcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzSm9pbkNvZGUnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvbmxpbmVKb2luQ29kZSgpXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ0KCdjaGVzc2ltYWxzSm9pbkNvZGVQbGFjZWhvbGRlcicpXCJcbiAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvbmxpbmVKb2luQ29kZS5zZXQobm9ybWFsaXplR2FtZUlkKCRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpKVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy13b3JraW5nXT1cIm9ubGluZUFjdGlvbigpID09PSAnam9pbidcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtYnVzeV09XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ2pvaW4nXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwib25saW5lTG9hZGluZygpIHx8ICFvbmxpbmVKb2luQ29kZSgpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiam9pbk9ubGluZUdhbWVCeUNvZGUoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAaWYgKG9ubGluZUFjdGlvbigpID09PSAnam9pbicpIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1idXR0b24tc3Bpbm5lclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0pvaW5PbmxpbmUnKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIDwvZGV0YWlscz5cblxuICAgICAgICAgIEBpZiAob25saW5lSGlzdG9yeSgpLmxlbmd0aCkge1xuICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9XCJjaGVzc2ltYWxzLW9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgPHN1bW1hcnk+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjaGVzc2ltYWxzSGlzdG9yeVRpdGxlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzSGlzdG9yeUJvZHknKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9zdW1tYXJ5PlxuXG4gICAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmUgY2hlc3NpbWFscy1oaXN0b3J5XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtaGlzdG9yeV9faGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPGgyPnt7IHQoJ2NoZXNzaW1hbHNIaXN0b3J5VGl0bGUnKSB9fTwvaDI+XG4gICAgICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNIaXN0b3J5Qm9keScpIH19PC9wPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtaGlzdG9yeV9fbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgQGZvciAoZW50cnkgb2Ygb25saW5lSGlzdG9yeSgpLnNsaWNlKDAsIDYpOyB0cmFjayBlbnRyeS5nYW1lSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjaGVzc2ltYWxzLWhpc3RvcnlfX2l0ZW1cIiAoY2xpY2spPVwib3Blbkhpc3RvcnlHYW1lKGVudHJ5KVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBlbnRyeS5nYW1lSWQgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBoaXN0b3J5T3V0Y29tZUxhYmVsKGVudHJ5KSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxlbT57eyB0KCdjaGVzc2ltYWxzSGlzdG9yeU9wZW4nKSB9fTwvZW0+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgICA8L2RldGFpbHM+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtaG9tZS1zZXR0aW5nc19fYWN0aW9uc1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvcGVuU2V0dGluZ3NNb2RhbCgpXCI+XG4gICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNTZXR0aW5ncycpIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib3BlbkFib3V0TW9kYWwoKVwiPlxuICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQWJvdXQnKSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RDaGFuZ2VHYW1lKClcIj5cbiAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0NoYW5nZUdhbWUnKSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH0gQGVsc2UgaWYgKHNjcmVlbigpID09PSAnY2hhbGxlbmdlJykge1xuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXZpZXdcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1iYWNrLWxpbmsgY2hlc3NpbWFscy1jaGFsbGVuZ2UtYmFja1wiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiYmFja1RvSG9tZSgpXCI+XG4gICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQmFja1RvTWVudScpIH19XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmQgY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZC0tZGVkaWNhdGVkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtaGVyb1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZF9fY29weVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VFeWVicm93JykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGgyPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VUaXRsZScpIH19PC9oMj5cbiAgICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQm9keScpIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX2FjdGlvbnMgY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZF9fYWN0aW9ucy0taGVyb1wiPlxuICAgICAgICAgICAgICAgIEBpZiAocmVzdW1hYmxlQ2hhbGxlbmdlUnVuKCk7IGFzIGFjdGl2ZVJ1bikge1xuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVzdW1lQ2hhbGxlbmdlKGFjdGl2ZVJ1bilcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJlc3VtZScpIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic3RhcnRDaGFsbGVuZ2UoKVwiPlxuICAgICAgICAgICAgICAgICAge3sgcmVzdW1hYmxlQ2hhbGxlbmdlUnVuKCkgPyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlU3RhcnROZXcnKSA6IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VTdGFydCcpIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtZm9jdXNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsIGNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsLS1mZWF0dXJlXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWJvdC1hdmF0YXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgIEBpZiAoYm90UHJvZmlsZUF2YXRhclNyYyhjaGFsbGVuZ2VNZW51Qm90KCkucHJvZmlsZUlkKTsgYXMgYXZhdGFyU3JjKSB7XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJhdmF0YXJTcmNcIiBhbHQ9XCJcIiBkcmFnZ2FibGU9XCJmYWxzZVwiIC8+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAge3sgYm90UHJvZmlsZUF2YXRhcihjaGFsbGVuZ2VNZW51Qm90KCkucHJvZmlsZUlkKSB9fVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGNoYWxsZW5nZUJvdFN0YXR1c0xhYmVsKGNoYWxsZW5nZU1lbnVCb3QoKSkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VCb3ROYW1lKGNoYWxsZW5nZU1lbnVCb3QoKSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgIDxwPnt7IHQoY2hhbGxlbmdlTWVudUJvdCgpLmludHJvS2V5KSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgIDxlbT5cbiAgICAgICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZUJvYXJkTGFiZWwnKS5yZXBsYWNlKCd7c2l6ZX0nLCBjaGFsbGVuZ2VNZW51Qm90KCkuYm9hcmRTaXplICsgJ3gnICsgY2hhbGxlbmdlTWVudUJvdCgpLmJvYXJkU2l6ZSkgfX1cbiAgICAgICAgICAgICAgICAgICAgLCB7eyBjaGFsbGVuZ2VCb3REaWZmaWN1bHR5TGFiZWwoY2hhbGxlbmdlTWVudUJvdCgpKSB9fVxuICAgICAgICAgICAgICAgICAgPC9lbT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkX19zdGF0c1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VMaXZlcycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+Mzwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmQnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZU1lbnVSb3VuZExhYmVsKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZUJlc3RTdHJlYWsnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZVN0YXRzKCkuYmVzdFdpblN0cmVhayB8fCAnLScgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVdpblJhdGUnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZVdpblJhdGVMYWJlbCgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvdXRlXCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VQYXRoJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSb3V0ZUhpbnQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1wYXRoXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUGF0aCcpXCI+XG4gICAgICAgICAgICAgICAgQGZvciAoYm90IG9mIGNoYWxsZW5nZUxhZGRlcjsgdHJhY2sgYm90LmlkKSB7XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtY2xlYXJlZF09XCJjaGFsbGVuZ2VNZW51Q2xlYXJlZFJvdW5kKCkgPj0gYm90LnJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWN1cnJlbnRdPVwiY2hhbGxlbmdlTWVudUJvdCgpLnJvdW5kID09PSBib3Qucm91bmRcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtZmluYWxdPVwiYm90LnJvdW5kID09PSBjaGFsbGVuZ2VMYWRkZXIubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiY2hhbGxlbmdlQm90TmFtZShib3QpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChib3RQcm9maWxlQXZhdGFyU3JjKGJvdC5wcm9maWxlSWQpOyBhcyBhdmF0YXJTcmMpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiYXZhdGFyU3JjXCIgYWx0PVwiXCIgZHJhZ2dhYmxlPVwiZmFsc2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICB7eyBib3RQcm9maWxlQXZhdGFyKGJvdC5wcm9maWxlSWQpIH19XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9IEBlbHNlIGlmIChzY3JlZW4oKSA9PT0gJ3BhdGgnKSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1wYXRoLXZpZXdcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1iYWNrLWxpbmtcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImJhY2tUb0hvbWUoKVwiPlxuICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0JhY2tUb01lbnUnKSB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLXBhdGgtaGVyb1wiPlxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcGF0aC1oZXJvX19hcnRcIlxuICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9wYXRoL3Byb2dyZXNzLW1hcC5wbmdcIlxuICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICBkcmFnZ2FibGU9XCJmYWxzZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VZb3VyUGF0aCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPGgyPnt7IHQoJ2NoZXNzaW1hbHNQcm9ncmVzc1RpdGxlJykgfX08L2gyPlxuICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzUHJvZ3Jlc3NIZXJvQm9keScpIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1wYXRoLWhlcm9fX21lZGFsXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvcGF0aC90cm9waHkucG5nXCIgYWx0PVwiXCIgZHJhZ2dhYmxlPVwiZmFsc2VcIiAvPlxuICAgICAgICAgICAgICA8c3Bhbj57eyBjaGFsbGVuZ2VTdGF0cygpLnRvdGFsV2lucyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGI+e3sgdCgnY2hlc3NpbWFsc1BhdGhXaW5zU2hvcnQnKSB9fTwvYj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1wYXRoLWhpZ2hsaWdodHNcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NoZXNzaW1hbHNQYXRoSGlnaGxpZ2h0cycpXCI+XG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIHBhdGhIaWdobGlnaHRzKCk7IHRyYWNrIGl0ZW0udGl0bGUpIHtcbiAgICAgICAgICAgICAgPGFydGljbGU+XG4gICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cIml0ZW0uaW1hZ2VTcmNcIiBhbHQ9XCJcIiBkcmFnZ2FibGU9XCJmYWxzZVwiIC8+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBpdGVtLnRpdGxlIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgaXRlbS52YWx1ZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgaXRlbS5ib2R5IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLXBhdGgtcmluZ3NcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NoZXNzaW1hbHNNb2RlV2luUmF0ZXMnKVwiPlxuICAgICAgICAgICAgQGZvciAocmluZyBvZiBwcm9ncmVzc1JpbmdzKCk7IHRyYWNrIHJpbmcubGFiZWwpIHtcbiAgICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLXBhdGgtcmluZ1wiIFtzdHlsZS4tLXJpbmctcHJvZ3Jlc3NdPVwicmluZy5wcm9ncmVzc1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHJpbmcudmFsdWUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyByaW5nLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyByaW5nLmRldGFpbCB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtcGF0aC1ncmlkXCI+XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcGF0aC1wYW5lbCBjaGVzc2ltYWxzLXBhdGgtcGFuZWwtLXdpZGVcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcHJvZ3Jlc3NfX2hlYWRpbmdcIj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc1Byb2dyZXNzQ2hhbGxlbmdlSGludCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzUHJvZ3Jlc3NNb2Rlc0hpbnQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXBhdGgtc3RhdHNcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQmVzdFJvdW5kJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VTdGF0cygpLmJlc3RSb3VuZFJlYWNoZWQgfHwgJy0nIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCZXN0U3RyZWFrJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VTdGF0cygpLmJlc3RXaW5TdHJlYWsgfHwgJy0nIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSZWNlbnRSdW5zJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VTdGF0cygpLmNoYWxsZW5nZXNQbGF5ZWQgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVN0YXR1c0NvbXBsZXRlZCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlU3RhdHMoKS5jaGFsbGVuZ2VzQ29tcGxldGVkIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLXBhdGgtcGFuZWxcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcHJvZ3Jlc3NfX2hlYWRpbmdcIj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc1Byb2dyZXNzUG93ZXJzJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NoZXNzaW1hbHNQcm9ncmVzc1Bvd2Vyc0hpbnQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXBhdGgtYmFyc1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKHBvd2VyIG9mIHByb2dyZXNzUG93ZXJTdGF0cygpOyB0cmFjayBwb3dlci5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gW3N0eWxlLi0tYmFyLXByb2dyZXNzXT1cInByb2dyZXNzTWV0cmljUGVyY2VudChwb3dlci52YWx1ZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGI+e3sgcG93ZXIubGFiZWwgfX08L2I+XG4gICAgICAgICAgICAgICAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBwb3dlci52YWx1ZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1wYXRoLXBhbmVsXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXByb2dyZXNzX19oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudHMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnY2hlc3NpbWFsc1Byb2dyZXNzQWNoaWV2ZW1lbnRzSGludCcpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtYWNoaWV2ZW1lbnRzIGNoZXNzaW1hbHMtYWNoaWV2ZW1lbnRzLS1wYXRoXCI+XG4gICAgICAgICAgICAgICAgQGZvciAoYWNoaWV2ZW1lbnQgb2YgY2hhbGxlbmdlQWNoaWV2ZW1lbnRzKCk7IHRyYWNrIGFjaGlldmVtZW50LnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICA8c3BhbiBbY2xhc3MuaXMtdW5sb2NrZWRdPVwiYWNoaWV2ZW1lbnQudW5sb2NrZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+e3sgYWNoaWV2ZW1lbnQuaWNvbiB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBhY2hpZXZlbWVudC50aXRsZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBhY2hpZXZlbWVudC5ib2R5IH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgQGlmIChjaGFsbGVuZ2VIaXN0b3J5KCkubGVuZ3RoKSB7XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcGF0aC1wYW5lbFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1wcm9ncmVzc19faGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUmVjZW50UnVucycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1oaXN0b3J5IGNoZXNzaW1hbHMtY2hhbGxlbmdlLWhpc3RvcnktLXBhdGhcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChydW4gb2YgY2hhbGxlbmdlSGlzdG9yeSgpOyB0cmFjayBydW4uaWQpIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICA8Yj57eyBjaGFsbGVuZ2VSdW5TdGF0dXNMYWJlbChydW4pIH19PC9iPlxuICAgICAgICAgICAgICAgICAgICB7eyBjaGFsbGVuZ2VSdW5MaW5lKHJ1bikgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1nYW1lXCI+XG4gICAgICAgICAgQGlmICghcHJvamVjdGlvbk1vZGUpIHtcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLWJhY2stbGluayBjaGVzc2ltYWxzLWdhbWUtYmFja1wiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdENoYW5nZU1vZGUoKVwiPlxuICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQmFja1RvTWVudScpIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKHJlc3VtZVNwbGFzaFZpc2libGUoKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcmVzdW1lLXNwbGFzaFwiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1yZXN1bWUtc3BsYXNoX19sb2dvXCJcbiAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9icmFuZC9jaGVzc2ltYWxzLWVtYmxlbS5wbmdcIlxuICAgICAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBkcmFnZ2FibGU9XCJmYWxzZVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc1Jlc3VtZVNwbGFzaFRpdGxlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc1Jlc3VtZVNwbGFzaEJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxhcnRpY2xlXG4gICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtdHVybi1jYXJkXCJcbiAgICAgICAgICAgIFtjbGFzcy5pcy1ibGFjay10dXJuXT1cImdhbWUoKS5jdXJyZW50VHVybiA9PT0gJ2JsYWNrJ1wiXG4gICAgICAgICAgICBbY2xhc3MuaXMtZmluaXNoZWRdPVwiZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJ1wiXG4gICAgICAgICAgICBbY2xhc3MuaXMteW91ci10dXJuXT1cImlzQWN0aW9uYWJsZVR1cm4oKVwiXG4gICAgICAgICAgICBbY2xhc3MuaXMtd2FpdGluZy10dXJuXT1cImlzV2FpdGluZ0ZvclR1cm4oKVwiXG4gICAgICAgICAgICBbY2xhc3MuaXMtdGltZXItbG93XT1cImlzVHVyblRpbWVyTG93KClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXR1cm4tY2FyZF9fY29weVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtdHVybi1jYXJkX19jaGlwXCI+XG4gICAgICAgICAgICAgICAge3sgdHVyblN0YXRlTGFiZWwoKSB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyA/IHdpblRpdGxlKCkgOiB0dXJuVGl0bGUoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8cD57eyB0dXJuU3RhdGVCb2R5KCkgfX08L3A+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcGxheWVyLXN0cmlwXCI+XG4gICAgICAgICAgICAgIEBpZiAoc2hvdWxkVXNlVHVyblBsYXllckF2YXRhcigpKSB7XG4gICAgICAgICAgICAgICAgPHZhbC11c2VyLWF2YXRhciBbcHJvcHNdPVwidHVyblBsYXllckF2YXRhclByb3BzKClcIiAvPlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX19hdmF0YXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHR1cm5QbGF5ZXJGYWxsYmFja0F2YXRhcigpIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX190ZXh0XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdHVyblBsYXllckV5ZWJyb3coKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHR1cm5QbGF5ZXJOYW1lKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICBAaWYgKHR1cm5QbGF5ZXJIYW5kbGUoKSkge1xuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHR1cm5QbGF5ZXJIYW5kbGUoKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgIEBpZiAoZ2FtZSgpLm1vZGUgPT09ICdvbmxpbmUnICYmIGdhbWUoKS5zdGF0dXMgPT09ICd3YWl0aW5nJykge1xuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLW9ubGluZSBjaGVzc2ltYWxzLW9ubGluZS0td2FpdGluZ1wiPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxoMj57eyB3YWl0aW5nVGl0bGUoKSB9fTwvaDI+XG4gICAgICAgICAgICAgICAgPHA+e3sgd2FpdGluZ0JvZHkoKSB9fTwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIEBpZiAoY2FuUmV2aWV3UGVuZGluZ0d1ZXN0KCkpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1wZW5kaW5nLXBsYXllclwiPlxuICAgICAgICAgICAgICAgICAgQGlmIChwZW5kaW5nR3Vlc3RBdmF0YXJVcmwoKSkge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLXVzZXItYXZhdGFyIFtwcm9wc109XCJwZW5kaW5nR3Vlc3RBdmF0YXJQcm9wcygpXCIgLz5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX19hdmF0YXIgY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX2F2YXRhci0taW5pdGlhbHNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBwZW5kaW5nR3Vlc3RJbml0aWFscygpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzSm9pblJlcXVlc3RQbGF5ZXInKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgcGVuZGluZ0d1ZXN0TmFtZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAocGVuZGluZ0d1ZXN0SGFuZGxlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgcGVuZGluZ0d1ZXN0SGFuZGxlKCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1nYW1lLWNvZGVcIj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0dhbWVDb2RlJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgZ2FtZSgpLmlkIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmUtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIEBpZiAoY2FuUmV2aWV3UGVuZGluZ0d1ZXN0KCkpIHtcbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtd29ya2luZ109XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ3JlamVjdCdcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWJ1c3ldPVwib25saW5lQWN0aW9uKCkgPT09ICdyZWplY3QnXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9ubGluZUxvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZWplY3RPbmxpbmVHdWVzdCgpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChvbmxpbmVBY3Rpb24oKSA9PT0gJ3JlamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtYnV0dG9uLXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc1JlamVjdEd1ZXN0JykgfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtd29ya2luZ109XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ2FjY2VwdCdcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWJ1c3ldPVwib25saW5lQWN0aW9uKCkgPT09ICdhY2NlcHQnXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9ubGluZUxvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY2NlcHRPbmxpbmVHdWVzdCgpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChvbmxpbmVBY3Rpb24oKSA9PT0gJ2FjY2VwdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtYnV0dG9uLXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0FjY2VwdEd1ZXN0JykgfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjb3B5T25saW5lTGluaygpXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNDb3B5TGluaycpIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNoYXJlT25saW5lTGluaygpXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNTaGFyZUxpbmsnKSB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKGlzQ2hhbGxlbmdlQWN0aXZlKCkgfHwgdHVyblNlY29uZHNSZW1haW5pbmcoKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1zdGF0dXMgY2hlc3NpbWFscy1zdGF0dXMtLXNpbXBsZVwiPlxuICAgICAgICAgICAgICBAaWYgKGlzQ2hhbGxlbmdlQWN0aXZlKCkpIHtcbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlUm91bmRMYWJlbCgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlTGl2ZXMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VMaXZlc0xhYmVsKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmICh0dXJuU2Vjb25kc1JlbWFpbmluZygpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1zdGF0dXNfX3RpbWVyXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtbG93XT1cImlzVHVyblRpbWVyTG93KClcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRpbWVyLXByb2dyZXNzXT1cInR1cm5UaW1lclByb2dyZXNzKClcIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJ0aW1lclwiXG4gICAgICAgICAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzVHVyblRpbWVyJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgdHVyblRpbWVyTGFiZWwoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChzaG91bGRTaG93Q2hhbGxlbmdlSW5HYW1lUGFuZWwoKSkge1xuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlXCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19yaXZhbFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1ib3QtYXZhdGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICBAaWYgKGNoYWxsZW5nZUxpdmVBdmF0YXJTcmMoKTsgYXMgYXZhdGFyU3JjKSB7XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJhdmF0YXJTcmNcIiBhbHQ9XCJcIiBkcmFnZ2FibGU9XCJmYWxzZVwiIC8+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAge3sgY2hhbGxlbmdlTGl2ZUF2YXRhcigpIH19XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgY2hhbGxlbmdlUm91bmRTdGFnZUxhYmVsKCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VMaXZlUml2YWxOYW1lKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgIDxwPnt7IGNoYWxsZW5nZUxpdmVSaXZhbExpbmUoKSB9fTwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChzaG91bGRTaG93T25saW5lU3RhdHVzKCkpIHtcbiAgICAgICAgICAgIDxhcnRpY2xlXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmUtc3RhdHVzXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmlzLWVycm9yXT1cIm9ubGluZUNvbm5lY3Rpb25TdGF0ZSgpID09PSAnZXJyb3InIHx8IGdhbWUoKS5zdGF0dXMgPT09ICdleHBpcmVkJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5pcy1zeW5jaW5nXT1cIm9ubGluZUNvbm5lY3Rpb25TdGF0ZSgpID09PSAnY29ubmVjdGluZycgfHwgbW92ZVN5bmNpbmcoKVwiXG4gICAgICAgICAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IG9ubGluZVN0YXR1c1RpdGxlKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8cD57eyBvbmxpbmVTdGF0dXNCb2R5KCkgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAodHV0b3JpYWxNb2RlKCkpIHtcbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy10dXRvcmlhbFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0dXRvcmlhbFByb2dyZXNzTGFiZWwoKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0dXRvcmlhbFRpdGxlKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8cD57eyB0dXRvcmlhbEJvZHkoKSB9fTwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZXhpdFR1dG9yaWFsKClcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzVHV0b3JpYWxFeGl0JykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLWFyZW5hXCI+XG4gICAgICAgICAgICA8c2VjdGlvblxuICAgICAgICAgICAgICAjYm9hcmRBbmNob3JcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLXdyYXBcIlxuICAgICAgICAgICAgICBbY2xhc3MuaXMtZmluaXNoZWRdPVwiZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5pcy1vcmllbnRpbmddPVwiaXNCb2FyZE9yaWVudGluZygpXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmlzLXN5bmNpbmddPVwibW92ZVN5bmNpbmcoKVwiXG4gICAgICAgICAgICAgIFtzdHlsZS4tLWJvYXJkLXNpemVdPVwicmV2aWV3R2FtZSgpLmJvYXJkU2l6ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLWZyYW1lXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkXCJcbiAgICAgICAgICAgICAgICAgIHJvbGU9XCJncmlkXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1ibGFjay12aWV3XT1cInJldmlld0dhbWUoKS5jdXJyZW50VHVybiA9PT0gJ2JsYWNrJ1wiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtcG93ZXItYWltaW5nXT1cIiEhc2VsZWN0ZWRBbmltYWwoKVwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NoZXNzaW1hbHNCb2FyZCcpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBAZm9yIChyb3cgb2YgZGlzcGxheVJvd3MoKTsgdHJhY2sgcm93KSB7XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGNvbCBvZiBkaXNwbGF5Q29scygpOyB0cmFjayBjb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtY2VsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtZGFyay1jZWxsXT1cImlzRGFya0NlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1lZGdlLWNlbGxdPVwiaXNFZGdlQ2VsbChyb3csIGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLndlYXItMF09XCJjZWxsV2Vhcihyb3csIGNvbCkgPT09IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLndlYXItMV09XCJjZWxsV2Vhcihyb3csIGNvbCkgPT09IDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLndlYXItMl09XCJjZWxsV2Vhcihyb3csIGNvbCkgPT09IDJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLndlYXItM109XCJjZWxsV2Vhcihyb3csIGNvbCkgPT09IDNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLndlYXItNF09XCJjZWxsV2Vhcihyb3csIGNvbCkgPT09IDRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLndlYXItNV09XCJjZWxsV2Vhcihyb3csIGNvbCkgPT09IDVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cImlzU2VsZWN0ZWRDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtbGVnYWxdPVwiaXNMZWdhbENlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1jYXB0dXJlXT1cImlzQ2FwdHVyZUNlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oYXMtdGhyZWF0XT1cImlzVGhyZWF0ZW5lZENlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oYXMtY2FwdHVyZS1yZWFkeV09XCJpc0NhcHR1cmVSZWFkeUNlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy13aW5uaW5nXT1cImlzV2lubmluZ0NlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1sYXN0XT1cImlzTGFzdE1vdmVDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtbW92aW5nLXNvdXJjZV09XCJpc01vdmluZ1NvdXJjZUNlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oYXMtbW92ZS1lZmZlY3RdPVwiaXNNb3ZlRWZmZWN0Q2VsbChyb3csIGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmhhcy1zb3VyY2UtZWZmZWN0XT1cImlzTW92ZUVmZmVjdFNvdXJjZUNlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oYXMtY2FwdHVyZS1lZmZlY3RdPVwiaXNNb3ZlRWZmZWN0Q2FwdHVyZUNlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3QtZWFnbGVdPVwiaXNNb3ZlRWZmZWN0Q2VsbChyb3csIGNvbCwgJ2VhZ2xlJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1idWxsXT1cImlzTW92ZUVmZmVjdENlbGwocm93LCBjb2wsICdidWxsJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1rYW5nYXJvb109XCJpc01vdmVFZmZlY3RDZWxsKHJvdywgY29sLCAna2FuZ2Fyb28nKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZWZmZWN0LWxpb25dPVwiaXNNb3ZlRWZmZWN0Q2VsbChyb3csIGNvbCwgJ2xpb24nKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJvamVjdGlvbk1vZGUgfHwgZ2FtZSgpLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJyB8fCAhY2FuUGxheUN1cnJlbnRUdXJuKCkgfHwgISFtb3ZpbmdQaWVjZSgpIHx8IGJvdFRoaW5raW5nKCkgfHwgbW92ZVN5bmNpbmcoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0Q2VsbCh7IHJvdywgY29sIH0pXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtY2VsbC10ZXh0dXJlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzaG93UmFua0xhYmVsKGNvbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZSBjaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZS0tcmFua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJhbmtMYWJlbChyb3cpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoc2hvd0ZpbGVMYWJlbChyb3cpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1jZWxsLWNvb3JkaW5hdGUgY2hlc3NpbWFscy1jZWxsLWNvb3JkaW5hdGUtLWZpbGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWxlTGFiZWwoY29sKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHBpZWNlQXQocm93LCBjb2wpOyBhcyBwaWVjZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWJsYWNrXT1cInBpZWNlLmNvbG9yID09PSAnYmxhY2snXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInBsYXllckxhYmVsKHBpZWNlLmNvbG9yKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX3NpZGVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19oZWFkXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fY29sbGFyXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fbmVja1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX2Jhc2VcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGlzTGVnYWxDZWxsKHJvdywgY29sKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtdGFyZ2V0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtY2VudGVyLWxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICBAaWYgKG1vdmVUcmFpbCgpOyBhcyB0cmFpbCkge1xuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1wb3dlci10cmFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWNhcHR1cmVdPVwidHJhaWwuY2FwdHVyZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1lYWdsZV09XCJ0cmFpbC5hbmltYWwgPT09ICdlYWdsZSdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3QtYnVsbF09XCJ0cmFpbC5hbmltYWwgPT09ICdidWxsJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1rYW5nYXJvb109XCJ0cmFpbC5hbmltYWwgPT09ICdrYW5nYXJvbydcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3QtbGlvbl09XCJ0cmFpbC5hbmltYWwgPT09ICdsaW9uJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tdHJhaWwteF09XCJ0cmFpbC54XCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS10cmFpbC15XT1cInRyYWlsLnlcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRyYWlsLWxlbmd0aF09XCJ0cmFpbC5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRyYWlsLWFuZ2xlXT1cInRyYWlsLmFuZ2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAaWYgKG1vdmluZ1BpZWNlKCk7IGFzIG1vdmluZykge1xuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1tb3ZpbmctcGllY2VcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLWZyb20tcm93XT1cIm1vdmluZy5mcm9tUm93XCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS1mcm9tLWNvbF09XCJtb3ZpbmcuZnJvbUNvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tdG8tcm93XT1cIm1vdmluZy50b1Jvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tdG8tY29sXT1cIm1vdmluZy50b0NvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZVwiIFtjbGFzcy5pcy1ibGFja109XCJtb3ZpbmcuY29sb3IgPT09ICdibGFjaydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fc2lkZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9faGVhZFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fY29sbGFyXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19uZWNrXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19iYXNlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGlmIChwb3dlckNhbGxvdXQoKTsgYXMgY2FsbG91dCkge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLW1pbmktZ2FtZS1jYWxsb3V0IFtwcm9wc109XCJjYWxsb3V0XCIgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBpZiAoc2NvcmVQb3AoKTsgYXMgcG9wKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtbWluaS1nYW1lLXNjb3JlLXBvcCBbcHJvcHNdPVwicG9wXCIgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBpZiAoY2hhbGxlbmdlSW50cm9WaXNpYmxlKCkgJiYgYWN0aXZlQ2hhbGxlbmdlQm90KCk7IGFzIGludHJvQm90KSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb1wiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2NhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2F2YXRhclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGJvdFByb2ZpbGVBdmF0YXJTcmMoaW50cm9Cb3QucHJvZmlsZUlkKTsgYXMgYXZhdGFyU3JjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImF2YXRhclNyY1wiIGFsdD1cIlwiIGRyYWdnYWJsZT1cImZhbHNlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYm90UHJvZmlsZUF2YXRhcihpbnRyb0JvdC5wcm9maWxlSWQpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fY29weVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgY2hhbGxlbmdlUm91bmRTdGFnZUxhYmVsKCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZUJvdE5hbWUoaW50cm9Cb3QpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7IHQoaW50cm9Cb3QuaW50cm9LZXkpIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2ZhY3RzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQm9hcmQnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+e3sgaW50cm9Cb3QuYm9hcmRTaXplIH19eHt7IGludHJvQm90LmJvYXJkU2l6ZSB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0JvdERpZmZpY3VsdHknKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+e3sgY2hhbGxlbmdlQm90RGlmZmljdWx0eUxhYmVsKGludHJvQm90KSB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJkaXNtaXNzQ2hhbGxlbmdlSW50cm8oKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlSW50cm9DdGEnKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGlmIChzaG91bGRTaG93RmluaXNoZWRPdmVybGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5XCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtdmljdG9yeV09XCJpc0N1cnJlbnRQbGF5ZXJWaWN0b3J5KClcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1kZWZlYXRdPVwiaXNDdXJyZW50UGxheWVyRGVmZWF0KClcIlxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmF5c1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmliYm9uIHJpYmJvbi1hXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19yaWJib24gcmliYm9uLWJcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JpYmJvbiByaWJib24tY1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzR2FtZU92ZXInKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKHdpbm5lckF2YXRhclVybCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9XCJoYXMtYXZhdGFyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJ3aW5uZXJBdmF0YXJVcmwoKVwiIFthbHRdPVwid2lubmVyRGlzcGxheU5hbWUoKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2VtPlxuICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGVtPnt7IHdpbm5lckluaXRpYWxzKCkgfX08L2VtPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHdpblRpdGxlKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICA8Yj57eyB3aW5uZXJTaWRlTGFiZWwoKSB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgbW92ZXNTdW1tYXJ5KCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICAgIEBpZiAob25saW5lUm9sZSgpICE9PSAnc3BlY3RhdG9yJyAmJiAhcHJvamVjdGlvbk1vZGUpIHtcbiAgICAgICAgICAgICAgPHNlY3Rpb25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcG93ZXJzXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtbG9ja2VkXT1cIiFwb3dlclBsYXllcigpLnBvd2VyVW5sb2NrZWRcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1yZWFkeV09XCJwb3dlclBsYXllcigpLnBvd2VyVW5sb2NrZWRcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy11bmxvY2stcHVsc2VdPVwicG93ZXJVbmxvY2tQdWxzZSgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1wb3dlcnNfX2hlYWRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGgyPnt7IHQoJ2NoZXNzaW1hbHNBbmltYWxDYXJkcycpIH19PC9oMj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgcG93ZXJQbGF5ZXIoKS5wb3dlclVubG9ja2VkID8gdCgnY2hlc3NpbWFsc1VubG9ja2VkJykgOiB0KCdjaGVzc2ltYWxzTG9ja2VkJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxwPnt7IHBvd2VyUGxheWVyKCkucG93ZXJVbmxvY2tlZCA/IHQoJ2NoZXNzaW1hbHNDYXJkc1JlYWR5JykgOiB0KCdjaGVzc2ltYWxzQ2FyZHNMb2NrZWQnKSB9fTwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jYXJkc1wiPlxuICAgICAgICAgICAgICAgICAgQGZvciAoYW5pbWFsIG9mIGFuaW1hbHM7IHRyYWNrIGFuaW1hbC50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtc2VsZWN0ZWRdPVwic2VsZWN0ZWRBbmltYWwoKSA9PT0gYW5pbWFsLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy11c2VkXT1cInBvd2VyUGxheWVyKCkuY2FyZHNbYW5pbWFsLnR5cGVdLnVzZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuVXNlUG93ZXJDYXJkcygpIHx8IHBvd2VyUGxheWVyKCkuY2FyZHNbYW5pbWFsLnR5cGVdLnVzZWQgfHwgaXNQb3dlckNhcmRCbG9ja2VkQnlUdXRvcmlhbChhbmltYWwudHlwZSlcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBbmltYWwoYW5pbWFsKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtYW5pbWFsLWZhY2VcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJhbmltYWwuYXNzZXRTcmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cImFuaW1hbExhYmVsKGFuaW1hbC50eXBlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdnYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRyYWdzdGFydCk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKHBvd2VyVXNlc0xhYmVsKGFuaW1hbC50eXBlKTsgYXMgdXNlc0xhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcG93ZXItdXNlc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPnt7IHVzZXNMYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBhbmltYWxMYWJlbChhbmltYWwudHlwZSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICBAaWYgKGhhc1JlcGxheUNvbnRyb2xzKCkpIHtcbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1yZXBsYXlcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2NoZXNzaW1hbHNSZXBsYXlUaXRsZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgcmVwbGF5UG9zaXRpb25MYWJlbCgpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcmVwbGF5X19hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuUmV2aWV3UHJldmlvdXMoKVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmV2aWV3UHJldmlvdXNNb3ZlKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNSZXBsYXlQcmV2aW91cycpIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuUmV2aWV3TmV4dCgpXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXZpZXdOZXh0TW92ZSgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzUmVwbGF5TmV4dCcpIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAoZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykge1xuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLXJlc3VsdFwiIFtjbGFzcy5pcy1jaGFsbGVuZ2UtcmVzdWx0XT1cImlzQ2hhbGxlbmdlQWN0aXZlKClcIj5cbiAgICAgICAgICAgICAgQGlmICghaXNDaGFsbGVuZ2VBY3RpdmUoKSkge1xuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgd2luVGl0bGUoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxwPnt7IHdpbkJvZHkoKSB9fTwvcD5cbiAgICAgICAgICAgICAgICBAaWYgKGNhbkNvbnRyb2xDdXJyZW50R2FtZSgpICYmIChnYW1lKCkubW9kZSAhPT0gJ29ubGluZScgfHwgcmVtYXRjaFN0YXRlKCkgPT09ICdub25lJykpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXJlc3VsdF9fYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGdhbWUoKS5tb2RlICE9PSAnb25saW5lJykge1xuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnkgY2hlc3NpbWFscy1hY3Rpb24tYnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXN0YXJ0R2FtZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyB0KCdwbGF5QWdhaW4nKSB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeSBjaGVzc2ltYWxzLWFjdGlvbi1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicmVtYXRjaExvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVxdWVzdE9ubGluZVJlbWF0Y2goKVwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgcmVtYXRjaEFjdGlvbkxhYmVsKCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoaXNDaGFsbGVuZ2VBY3RpdmUoKSkge1xuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtdmljdG9yeV09XCJjaGFsbGVuZ2VMYXN0V29uKClcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWRlZmVhdF09XCJjaGFsbGVuZ2VMYXN0V29uKCkgPT09IGZhbHNlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9faGVyb1wiIFtjbGFzcy5pcy1jbGVhcmVkXT1cImNoYWxsZW5nZUxhc3RXb24oKVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtYm90LWF2YXRhclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY2hhbGxlbmdlU3VtbWFyeUF2YXRhclNyYygpOyBhcyBhdmF0YXJTcmMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJhdmF0YXJTcmNcIiBhbHQ9XCJcIiBkcmFnZ2FibGU9XCJmYWxzZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBjaGFsbGVuZ2VTdW1tYXJ5QXZhdGFyKCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgY2hhbGxlbmdlUm91bmRTdGFnZUxhYmVsKCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlT3V0Y29tZVRpdGxlKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICA8cD57eyBjaGFsbGVuZ2VPdXRjb21lQm9keSgpIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX2FjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChjaGFsbGVuZ2VQaGFzZSgpID09PSAnYmV0d2VlbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1wcmltYXJ5IGNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX3BsYXlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNvbnRpbnVlQ2hhbGxlbmdlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNoYWxsZW5nZUNvbnRpbnVlTGFiZWwoKSB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1wcmltYXJ5IGNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX3BsYXlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInN0YXJ0Q2hhbGxlbmdlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VQbGF5QWdhaW4nKSB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIEBpZiAoY2hhbGxlbmdlVGVuc2lvbk1vbWVudCgpOyBhcyB0ZW5zaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS10ZW5zaW9uXCIgW2NsYXNzLmlzLWNyaXRpY2FsXT1cInRlbnNpb24uY3JpdGljYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0ZW5zaW9uLnRpdGxlIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cD57eyB0ZW5zaW9uLmJvZHkgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGlmIChjaGFsbGVuZ2VQaGFzZSgpID09PSAnYmV0d2VlbicgJiYgYWN0aXZlQ2hhbGxlbmdlQm90KCk7IGFzIG5leHRCb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsIGNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsLS1uZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWJvdC1hdmF0YXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYm90UHJvZmlsZUF2YXRhclNyYyhuZXh0Qm90LnByb2ZpbGVJZCk7IGFzIGF2YXRhclNyYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiYXZhdGFyU3JjXCIgYWx0PVwiXCIgZHJhZ2dhYmxlPVwiZmFsc2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGJvdFByb2ZpbGVBdmF0YXIobmV4dEJvdC5wcm9maWxlSWQpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgY2hhbGxlbmdlTmV4dFJpdmFsTGFiZWwoKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZUJvdE5hbWUobmV4dEJvdCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7IGNoYWxsZW5nZUJvdEludHJvKG5leHRCb3QpIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGVtPnt7IGNoYWxsZW5nZU5leHRSaXZhbEhpbnQoKSB9fTwvZW0+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoc2VyaWVzU3VtbWFyeSgpKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtc2VyaWVzXCI+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc1Nlcmllc1RpdGxlJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBzZXJpZXNTdW1tYXJ5KCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgIEBpZiAobGFzdFNlcmllc1dpbm5lckxhYmVsKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnY2hlc3NpbWFsc1Nlcmllc0xhc3RXaW5uZXInKS5yZXBsYWNlKCd7cGxheWVyfScsIGxhc3RTZXJpZXNXaW5uZXJMYWJlbCgpKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAocmVtYXRjaFN0YXRlKCkgIT09ICdub25lJykge1xuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLXJlbWF0Y2gtc3RhdHVzXCIgW2NsYXNzLmlzLWluY29taW5nXT1cInJlbWF0Y2hTdGF0ZSgpID09PSAnaW5jb21pbmcnXCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz5cbiAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgIHJlbWF0Y2hTdGF0ZSgpID09PSAnaW5jb21pbmcnXG4gICAgICAgICAgICAgICAgICAgICAgPyB0KCdjaGVzc2ltYWxzUmVtYXRjaEluY29taW5nVGl0bGUnKVxuICAgICAgICAgICAgICAgICAgICAgIDogdCgnY2hlc3NpbWFsc1JlbWF0Y2hSZXF1ZXN0ZWRUaXRsZScpXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIDwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgcmVtYXRjaFN0YXRlKCkgPT09ICdpbmNvbWluZydcbiAgICAgICAgICAgICAgICAgICAgICA/IHQoJ2NoZXNzaW1hbHNSZW1hdGNoSW5jb21pbmdCb2R5JylcbiAgICAgICAgICAgICAgICAgICAgICA6IHQoJ2NoZXNzaW1hbHNSZW1hdGNoUmVxdWVzdGVkQm9keScpXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIEBpZiAoc2VyaWVzU3VtbWFyeSgpKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtc2VyaWVzIGNoZXNzaW1hbHMtc2VyaWVzLS1jb21wYWN0XCI+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc1Nlcmllc1RpdGxlJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBzZXJpZXNTdW1tYXJ5KCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgIEBpZiAobGFzdFNlcmllc1dpbm5lckxhYmVsKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnY2hlc3NpbWFsc1Nlcmllc0xhc3RXaW5uZXInKS5yZXBsYWNlKCd7cGxheWVyfScsIGxhc3RTZXJpZXNXaW5uZXJMYWJlbCgpKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1wZW5kaW5nLXBsYXllciBjaGVzc2ltYWxzLXJlbWF0Y2gtcGxheWVyXCI+XG4gICAgICAgICAgICAgICAgQGlmIChyZW1hdGNoT3Bwb25lbnRBdmF0YXJVcmwoKSkge1xuICAgICAgICAgICAgICAgICAgPHZhbC11c2VyLWF2YXRhciBbcHJvcHNdPVwicmVtYXRjaE9wcG9uZW50QXZhdGFyUHJvcHMoKVwiIC8+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX19hdmF0YXIgY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX2F2YXRhci0taW5pdGlhbHNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgcmVtYXRjaE9wcG9uZW50SW5pdGlhbHMoKSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNSaXZhbCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgcmVtYXRjaE9wcG9uZW50TmFtZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICBAaWYgKHJlbWF0Y2hPcHBvbmVudEhhbmRsZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyByZW1hdGNoT3Bwb25lbnRIYW5kbGUoKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1c19fYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXdvcmtpbmddPVwicmVtYXRjaExvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZW1hdGNoU3RhdGUoKSA9PT0gJ3JlcXVlc3RlZCcgfHwgcmVtYXRjaExvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVxdWVzdE9ubGluZVJlbWF0Y2goKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgQGlmIChyZW1hdGNoTG9hZGluZygpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1idXR0b24tc3Bpbm5lclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHt7IHJlbWF0Y2hBY3Rpb25MYWJlbCgpIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWFjdGlvbnNcIj5cbiAgICAgICAgICAgIEBpZiAoZ2FtZSgpLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJyAmJiBjYW5Db250cm9sQ3VycmVudEdhbWUoKSkge1xuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RSZXNpZ24oKVwiPlxuICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNSZXNpZ24nKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoZ2FtZSgpLm1vZGUgPT09ICdvbmxpbmUnICYmIGdhbWUoKS5pZCAmJiAhcHJvamVjdGlvbk1vZGUpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzaGFyZVByb2plY3Rpb25MaW5rKClcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzU2hhcmVQcm9qZWN0aW9uJykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RDaGFuZ2VNb2RlKClcIj5cbiAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0NoYW5nZU1vZGUnKSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RDaGFuZ2VHYW1lKClcIj5cbiAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0NoYW5nZUdhbWUnKSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH1cbiAgICA8L21haW4+XG5cbiAgICA8aW9uLW1vZGFsXG4gICAgICBbaXNPcGVuXT1cImlzUGxheU9wdGlvbnNNb2RhbE9wZW4oKVwiXG4gICAgICBjc3NDbGFzcz1cInZhbC1tb2RhbC1hZGFwdGl2ZSBjaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCBjaGVzc2ltYWxzLXBsYXktbW9kYWxcIlxuICAgICAgKGRpZERpc21pc3MpPVwiaGFuZGxlUGxheU9wdGlvbnNNb2RhbERpc21pc3NlZCgpXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgIDx2YWwtbW9kYWwtbGF5b3V0XG4gICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXBsYXktbW9kYWxcIlxuICAgICAgICAgIFt0aXRsZV09XCJ0KCdjaGVzc2ltYWxzU29sb09wdGlvbnNUaXRsZScpXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwidCgnY2hlc3NpbWFsc1NvbG9PcHRpb25zQm9keScpXCJcbiAgICAgICAgICBbY2xvc2VMYWJlbF09XCJ0KCdjbG9zZScpXCJcbiAgICAgICAgICBbYWN0aW9uc109XCJbXVwiXG4gICAgICAgICAgW2Zvb3Rlcl09XCJ0cnVlXCJcbiAgICAgICAgICBhY3Rpb25zQWxpZ249XCJlbmRcIlxuICAgICAgICAgIChjbG9zZSk9XCJjbG9zZVBsYXlPcHRpb25zTW9kYWwoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtcGxheS1vcHRpb25zXCI+XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcGxheS1vcHRpb25zX19ncm91cFwiPlxuICAgICAgICAgICAgICA8aDMgaWQ9XCJjaGVzc2ltYWxzLXBsYXktYm9hcmQtc2l6ZVwiPnt7IHQoJ2NoZXNzaW1hbHNCb2FyZFNpemUnKSB9fTwvaDM+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXNpemVcIiByb2xlPVwicmFkaW9ncm91cFwiIGFyaWEtbGFiZWxsZWRieT1cImNoZXNzaW1hbHMtcGxheS1ib2FyZC1zaXplXCI+XG4gICAgICAgICAgICAgICAgQGZvciAoc2l6ZSBvZiBib2FyZFNpemVzOyB0cmFjayBzaXplKSB7XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtc2VsZWN0ZWRdPVwic2VsZWN0ZWRCb2FyZFNpemUoKSA9PT0gc2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcHJlc3NlZF09XCJzZWxlY3RlZEJvYXJkU2l6ZSgpID09PSBzaXplXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdGVkQm9hcmRTaXplLnNldChzaXplKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1vcHRpb24tY2hlY2tcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgc2l6ZSB9fXh7eyBzaXplIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBzaXplID09PSA2ID8gdCgnY2hlc3NpbWFsc1NpemVTbWFsbCcpIDogdCgnY2hlc3NpbWFsc1NpemVMYXJnZScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1wbGF5LW9wdGlvbnNfX2dyb3VwXCI+XG4gICAgICAgICAgICAgIDxoMyBpZD1cImNoZXNzaW1hbHMtcGxheS1tb2RlXCI+e3sgdCgnY2hlc3NpbWFsc01vZGVUaXRsZScpIH19PC9oMz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtbW9kZVwiIHJvbGU9XCJyYWRpb2dyb3VwXCIgYXJpYS1sYWJlbGxlZGJ5PVwiY2hlc3NpbWFscy1wbGF5LW1vZGVcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChtb2RlIG9mIGxvY2FsTW9kZXM7IHRyYWNrIG1vZGUpIHtcbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZExvY2FsTW9kZSgpID09PSBtb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1wcmVzc2VkXT1cInNlbGVjdGVkTG9jYWxNb2RlKCkgPT09IG1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWRMb2NhbE1vZGUuc2V0KG1vZGUpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLW9wdGlvbi1jaGVja1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBsb2NhbE1vZGVMYWJlbChtb2RlKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgbG9jYWxNb2RlRGVzY3JpcHRpb24obW9kZSkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgQGlmIChzZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90Jykge1xuICAgICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcGxheS1vcHRpb25zX19ncm91cFwiPlxuICAgICAgICAgICAgICAgIDxoMyBpZD1cImNoZXNzaW1hbHMtcGxheS1kaWZmaWN1bHR5XCI+e3sgdCgnY2hlc3NpbWFsc0JvdERpZmZpY3VsdHknKSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtZGlmZmljdWx0eVwiIHJvbGU9XCJyYWRpb2dyb3VwXCIgYXJpYS1sYWJlbGxlZGJ5PVwiY2hlc3NpbWFscy1wbGF5LWRpZmZpY3VsdHlcIj5cbiAgICAgICAgICAgICAgICAgIEBmb3IgKGRpZmZpY3VsdHkgb2YgYm90RGlmZmljdWx0aWVzOyB0cmFjayBkaWZmaWN1bHR5KSB7XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtc2VsZWN0ZWRdPVwic2VsZWN0ZWRCb3REaWZmaWN1bHR5KCkgPT09IGRpZmZpY3VsdHlcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcHJlc3NlZF09XCJzZWxlY3RlZEJvdERpZmZpY3VsdHkoKSA9PT0gZGlmZmljdWx0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEJvdERpZmZpY3VsdHkoZGlmZmljdWx0eSlcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3sgYm90RGlmZmljdWx0eUxhYmVsKGRpZmZpY3VsdHkpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLXBsYXktb3B0aW9uc19fZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICA8aDMgaWQ9XCJjaGVzc2ltYWxzLXBsYXktYm90XCI+XG4gICAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZEJvdERpZmZpY3VsdHkoKSA9PT0gJ25pZ2h0bWFyZScgPyB0KCdjaGVzc2ltYWxzTmlnaHRtYXJlUml2YWxzJykgOiB0KCdjaGVzc2ltYWxzQm90U3R5bGUnKSB9fVxuICAgICAgICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtYm90c1wiIHJvbGU9XCJyYWRpb2dyb3VwXCIgYXJpYS1sYWJlbGxlZGJ5PVwiY2hlc3NpbWFscy1wbGF5LWJvdFwiPlxuICAgICAgICAgICAgICAgICAgQGlmIChzZWxlY3RlZEJvdERpZmZpY3VsdHkoKSA9PT0gJ25pZ2h0bWFyZScpIHtcbiAgICAgICAgICAgICAgICAgICAgQGZvciAobW9kZSBvZiBuaWdodG1hcmVSaXZhbHM7IHRyYWNrIG1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZE5pZ2h0bWFyZU1vZGUoKSA9PT0gbW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXByZXNzZWRdPVwic2VsZWN0ZWROaWdodG1hcmVNb2RlKCkgPT09IG1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE5pZ2h0bWFyZVJpdmFsKG1vZGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtb3B0aW9uLWNoZWNrXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWJvdC1hdmF0YXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChuaWdodG1hcmVNb2RlQXNzZXRTcmMobW9kZSk7IGFzIGFzc2V0U3JjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImFzc2V0U3JjXCIgYWx0PVwiXCIgZHJhZ2dhYmxlPVwiZmFsc2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBuaWdodG1hcmVNb2RlR2x5cGgobW9kZSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBuaWdodG1hcmVNb2RlTGFiZWwobW9kZSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBuaWdodG1hcmVNb2RlRGVzY3JpcHRpb24obW9kZSkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgQGZvciAocHJvZmlsZSBvZiBhdmFpbGFibGVCb3RQcm9maWxlcygpOyB0cmFjayBwcm9maWxlLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtc2VsZWN0ZWRdPVwic2VsZWN0ZWRCb3RQcm9maWxlSWQoKSA9PT0gcHJvZmlsZS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXByZXNzZWRdPVwic2VsZWN0ZWRCb3RQcm9maWxlSWQoKSA9PT0gcHJvZmlsZS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWRCb3RQcm9maWxlSWQuc2V0KHByb2ZpbGUuaWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtb3B0aW9uLWNoZWNrXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWJvdC1hdmF0YXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChib3RQcm9maWxlQXZhdGFyU3JjKHByb2ZpbGUuaWQpOyBhcyBhdmF0YXJTcmMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiYXZhdGFyU3JjXCIgYWx0PVwiXCIgZHJhZ2dhYmxlPVwiZmFsc2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBwcm9maWxlLmF2YXRhciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGJvdFByb2ZpbGVMYWJlbChwcm9maWxlKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGJvdFByb2ZpbGVEZXNjcmlwdGlvbihwcm9maWxlKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgIDxkaXYgbW9kYWwtYWN0aW9ucyBjbGFzcz1cImNoZXNzaW1hbHMtcGxheS1tb2RhbF9fYWN0aW9uc1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbG9zZVBsYXlPcHRpb25zTW9kYWwoKVwiPlxuICAgICAgICAgICAgICB7eyB0KCdjbG9zZScpIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInN0YXJ0U29sb0dhbWVGcm9tT3B0aW9ucygpXCI+XG4gICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNTdGFydFNvbG8nKSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdmFsLW1vZGFsLWxheW91dD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9pb24tbW9kYWw+XG5cbiAgICA8aW9uLW1vZGFsXG4gICAgICBbaXNPcGVuXT1cImlzUnVsZXNNb2RhbE9wZW4oKVwiXG4gICAgICBjc3NDbGFzcz1cInZhbC1tb2RhbC1hZGFwdGl2ZSBjaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCBjaGVzc2ltYWxzLXJ1bGVzLW1vZGFsXCJcbiAgICAgIHN0eWxlPVwiXG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnk6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnktcmdiOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKTtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS1jb250cmFzdDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS1zaGFkZTogIzI4NWYzNjtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS10aW50OiAjNDM4MDRmO1xuICAgICAgICAtLWlvbi10ZXh0LWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgXCJcbiAgICAgIChkaWREaXNtaXNzKT1cImNsb3NlUnVsZXNNb2RhbCgpXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgIDx2YWwtbW9kYWwtbGF5b3V0XG4gICAgICAgICAgW3RpdGxlXT1cInQoJ2NoZXNzaW1hbHNSdWxlc1RpdGxlJylcIlxuICAgICAgICAgIFtzdWJ0aXRsZV09XCJ0KCdjaGVzc2ltYWxzUnVsZXNTdWJ0aXRsZScpXCJcbiAgICAgICAgICBbY2xvc2VMYWJlbF09XCJ0KCdjbG9zZScpXCJcbiAgICAgICAgICBbZm9vdGVyXT1cInRydWVcIlxuICAgICAgICAgIChjbG9zZSk9XCJjbG9zZVJ1bGVzTW9kYWwoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtcnVsZXNcIj5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXJ1bGVzX19oZXJvXCJcbiAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvdHV0b3JpYWwtc29sby1jbGVhbi5wbmdcIlxuICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICBsb2FkaW5nPVwibGF6eVwiXG4gICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1ydWxlc19fc2VjdGlvbi10aXRsZVwiPlxuICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzUnVsZXNRdWlja0d1aWRlJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc1J1bGVzU3VidGl0bGUnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXJ1bGVzX19zdGVwc1wiPlxuICAgICAgICAgICAgICA8YXJ0aWNsZT5cbiAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3J1bGVzL2ZpbmlzaC5qcGdcIiBhbHQ9XCJcIiBsb2FkaW5nPVwibGF6eVwiIC8+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxoMz57eyB0KCdjaGVzc2ltYWxzUnVsZUdvYWxUaXRsZScpIH19PC9oMz5cbiAgICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNSdWxlR29hbEJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgICAgIDxhcnRpY2xlPlxuICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvcnVsZXMvbW92ZS5qcGdcIiBhbHQ9XCJcIiBsb2FkaW5nPVwibGF6eVwiIC8+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxoMz57eyB0KCdjaGVzc2ltYWxzUnVsZU1vdmVUaXRsZScpIH19PC9oMz5cbiAgICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNSdWxlTW92ZUJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgICAgIDxhcnRpY2xlPlxuICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvcnVsZXMvY2FwdHVyZS5qcGdcIiBhbHQ9XCJcIiBsb2FkaW5nPVwibGF6eVwiIC8+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxoMz57eyB0KCdjaGVzc2ltYWxzUnVsZUNhcHR1cmVUaXRsZScpIH19PC9oMz5cbiAgICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNSdWxlQ2FwdHVyZUJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1ydWxlc19fcG93ZXJzXCI+XG4gICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvcnVsZXMvcG93ZXJzLmpwZ1wiIGFsdD1cIlwiIGxvYWRpbmc9XCJsYXp5XCIgLz5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDM+e3sgdCgnY2hlc3NpbWFsc1J1bGVQb3dlcnNUaXRsZScpIH19PC9oMz5cbiAgICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzUnVsZVBvd2Vyc0JvZHknKSB9fTwvcD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1ydWxlc19fcG93ZXItbGlzdFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hlc3NpbWFsc1J1bGVDYXJkc1RpdGxlJylcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3Bvd2Vycy9lYWdsZS1wb3dlci5wbmdcIiBhbHQ9XCJcIiBsb2FkaW5nPVwibGF6eVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc1J1bGVFYWdsZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzUnVsZUVhZ2xlQm9keScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3Bvd2Vycy9idWxsLXBvd2VyLnBuZ1wiIGFsdD1cIlwiIGxvYWRpbmc9XCJsYXp5XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjaGVzc2ltYWxzUnVsZUJ1bGwnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc1J1bGVCdWxsQm9keScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3Bvd2Vycy9rYW5nYXJvby1wb3dlci5wbmdcIiBhbHQ9XCJcIiBsb2FkaW5nPVwibGF6eVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc1J1bGVLYW5nYXJvbycpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzUnVsZUthbmdhcm9vQm9keScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3Bvd2Vycy9saW9uLXBvd2VyLnBuZ1wiIGFsdD1cIlwiIGxvYWRpbmc9XCJsYXp5XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjaGVzc2ltYWxzUnVsZUxpb24nKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc1J1bGVMaW9uQm9keScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1ydWxlc19fbm90ZVwiPlxuICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3J1bGVzL2ZpbmFsLXN0ZXAuanBnXCIgYWx0PVwiXCIgbG9hZGluZz1cImxhenlcIiAvPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxoMz57eyB0KCdjaGVzc2ltYWxzUnVsZUxpbWl0c1RpdGxlJykgfX08L2gzPlxuICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNSdWxlTGltaXRzQm9keScpIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICA8ZGl2IG1vZGFsLWFjdGlvbnMgY2xhc3M9XCJjaGVzc2ltYWxzLXJ1bGVzX19hY3Rpb25zXCI+XG4gICAgICAgICAgICA8dmFsLWJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcnVsZXNfX2FjdGlvbiBjaGVzc2ltYWxzLXJ1bGVzX19hY3Rpb24tLXByaW1hcnlcIlxuICAgICAgICAgICAgICBbcHJvcHNdPVwicnVsZXNUdXRvcmlhbEFjdGlvbigpXCJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwic3RhcnRUdXRvcmlhbEZyb21SdWxlcygpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8dmFsLWJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcnVsZXNfX2FjdGlvbiBjaGVzc2ltYWxzLXJ1bGVzX19hY3Rpb24tLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgIFtwcm9wc109XCJydWxlc0Nsb3NlQWN0aW9uKClcIlxuICAgICAgICAgICAgICAob25DbGljayk9XCJjbG9zZVJ1bGVzTW9kYWwoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3ZhbC1tb2RhbC1sYXlvdXQ+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuXG4gICAgPGlvbi1tb2RhbFxuICAgICAgW2lzT3Blbl09XCJpc1NldHRpbmdzTW9kYWxPcGVuKClcIlxuICAgICAgY3NzQ2xhc3M9XCJ2YWwtbW9kYWwtYWRhcHRpdmUgY2hlc3NpbWFscy10aGVtZWQtbW9kYWwgY2hlc3NpbWFscy1zZXR0aW5ncy1tb2RhbFwiXG4gICAgICBzdHlsZT1cIlxuICAgICAgICAtLWlvbi1jb2xvci1wcmltYXJ5OiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICAtLWlvbi1jb2xvci1wcmltYXJ5LXJnYjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYik7XG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnktY29udHJhc3Q6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnktc2hhZGU6ICMyODVmMzY7XG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnktdGludDogIzQzODA0ZjtcbiAgICAgIFwiXG4gICAgICAoZGlkRGlzbWlzcyk9XCJjbG9zZVNldHRpbmdzTW9kYWwoKVwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICA8dmFsLW1vZGFsLWxheW91dFxuICAgICAgICAgIFt0aXRsZV09XCJ0KCdjaGVzc2ltYWxzU2V0dGluZ3NUaXRsZScpXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwidCgnY2hlc3NpbWFsc1NldHRpbmdzU3VidGl0bGUnKVwiXG4gICAgICAgICAgW2Nsb3NlTGFiZWxdPVwidCgnY2xvc2UnKVwiXG4gICAgICAgICAgW2Zvb3Rlcl09XCJmYWxzZVwiXG4gICAgICAgICAgKGNsb3NlKT1cImNsb3NlU2V0dGluZ3NNb2RhbCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZXR0aW5nc1wiPlxuICAgICAgICAgICAgPGFydGljbGU+XG4gICAgICAgICAgICAgIDx2YWwtdG9nZ2xlLWlucHV0IFtwcm9wc109XCJtdXNpY1RvZ2dsZVByb3BzKClcIiAvPlxuICAgICAgICAgICAgICA8dmFsLXJhbmdlLWlucHV0IFtwcm9wc109XCJtdXNpY1ZvbHVtZVByb3BzKClcIiAocmFuZ2VDaGFuZ2UpPVwic2V0TXVzaWNWb2x1bWUoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgICA8YXJ0aWNsZT5cbiAgICAgICAgICAgICAgPHZhbC10b2dnbGUtaW5wdXQgW3Byb3BzXT1cInNmeFRvZ2dsZVByb3BzKClcIiAvPlxuICAgICAgICAgICAgICA8dmFsLXJhbmdlLWlucHV0IFtwcm9wc109XCJzZnhWb2x1bWVQcm9wcygpXCIgKHJhbmdlQ2hhbmdlKT1cInNldFNmeFZvbHVtZSgkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgIDwvdmFsLW1vZGFsLWxheW91dD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9pb24tbW9kYWw+XG5cbiAgICA8aW9uLW1vZGFsXG4gICAgICBbaXNPcGVuXT1cImlzQWJvdXRNb2RhbE9wZW4oKVwiXG4gICAgICBjc3NDbGFzcz1cInZhbC1tb2RhbC1hZGFwdGl2ZSBjaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCBjaGVzc2ltYWxzLWFib3V0LW1vZGFsXCJcbiAgICAgIHN0eWxlPVwiXG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnk6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnktcmdiOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKTtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS1jb250cmFzdDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS1zaGFkZTogIzI4NWYzNjtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS10aW50OiAjNDM4MDRmO1xuICAgICAgXCJcbiAgICAgIChkaWREaXNtaXNzKT1cImhhbmRsZUFib3V0TW9kYWxEaXNtaXNzZWQoKVwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICA8dmFsLW1vZGFsLWxheW91dFxuICAgICAgICAgIFt0aXRsZV09XCJ0KCdjaGVzc2ltYWxzQWJvdXQnKVwiXG4gICAgICAgICAgW2Nsb3NlTGFiZWxdPVwidCgnY2xvc2UnKVwiXG4gICAgICAgICAgW2FjdGlvbnNdPVwiYWJvdXRBY3Rpb25zKClcIlxuICAgICAgICAgIGFjdGlvbnNBbGlnbj1cImVuZFwiXG4gICAgICAgICAgKGNsb3NlKT1cImNsb3NlQWJvdXRNb2RhbCgpXCJcbiAgICAgICAgICAoYWN0aW9uQ2xpY2spPVwiaGFuZGxlQWJvdXRBY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtYWJvdXRcIj5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLWFib3V0X19sb2dvXCJcbiAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvYnJhbmQvY2hlc3NpbWFscy13b3JkbWFyay5wbmdcIlxuICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICBsb2FkaW5nPVwibGF6eVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cImNoZXNzaW1hbHMtYWJvdXRfX3RoYW5rc1wiPnt7IHQoJ2NoZXNzaW1hbHNBYm91dFRoYW5rcycpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzQWJvdXRCb2R5JykgfX08L3A+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImNoZXNzaW1hbHMtYWJvdXRfX2ZlZWRiYWNrXCI+e3sgdCgnY2hlc3NpbWFsc0Fib3V0RmVlZGJhY2tQcm9tcHQnKSB9fTwvcD5cbiAgICAgICAgICAgIDxkbD5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8ZHQ+e3sgdCgnY2hlc3NpbWFsc0Fib3V0TGliVmVyc2lvbicpIH19PC9kdD5cbiAgICAgICAgICAgICAgICA8ZGQ+e3sgdmFsdGVjaENvbXBvbmVudHNWZXJzaW9uIH19PC9kZD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2RsPlxuICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgPC92YWwtbW9kYWwtbGF5b3V0PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2lvbi1tb2RhbD5cblxuICAgIDxpb24tbW9kYWxcbiAgICAgIFtpc09wZW5dPVwiISFjb25maXJtQWN0aW9uKClcIlxuICAgICAgY3NzQ2xhc3M9XCJ2YWwtbW9kYWwtYWRhcHRpdmUgY2hlc3NpbWFscy10aGVtZWQtbW9kYWwgY2hlc3NpbWFscy1jb25maXJtLW1vZGFsXCJcbiAgICAgIHN0eWxlPVwiXG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnk6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnktcmdiOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKTtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS1jb250cmFzdDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS1zaGFkZTogIzI4NWYzNjtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS10aW50OiAjNDM4MDRmO1xuICAgICAgXCJcbiAgICAgIChkaWREaXNtaXNzKT1cImhhbmRsZUNvbmZpcm1Nb2RhbERpc21pc3NlZCgpXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgIDx2YWwtbW9kYWwtbGF5b3V0XG4gICAgICAgICAgW3RpdGxlXT1cImNvbmZpcm1UaXRsZSgpXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwiY29uZmlybUJvZHkoKVwiXG4gICAgICAgICAgW2Nsb3NlTGFiZWxdPVwidCgnY2xvc2UnKVwiXG4gICAgICAgICAgW2FjdGlvbnNdPVwiY29uZmlybUFjdGlvbnMoKVwiXG4gICAgICAgICAgYWN0aW9uc0FsaWduPVwiZW5kXCJcbiAgICAgICAgICAoY2xvc2UpPVwiY2xvc2VDb25maXJtTW9kYWwoKVwiXG4gICAgICAgICAgKGFjdGlvbkNsaWNrKT1cImNvbmZpcm1QZW5kaW5nQWN0aW9uKCRldmVudC5hY3Rpb24/LnRva2VuKVwiXG4gICAgICAgIC8+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wYW5lbDogI2ZmZmZmZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXN1cmZhY2U6ICNmZmZhZjE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1lbGV2YXRlZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcyKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40Nik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zdHJvbmc6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44Nik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1nbGFzcy1oaWdobGlnaHQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41OCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1ib3JkZXI6IHJnYmEoNDYsIDU4LCA0NCwgMC4xOCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy10ZXh0OiAjMmUzYTJjO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbXV0ZWQ6ICM1MTY0M2Q7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zb2Z0OiByZ2JhKDExMSwgMTIyLCA2MCwgMC4xKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnk6ICMyZTZmM2U7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYjogNDYsIDExMSwgNjI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0OiAjZmZmYWYwO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5OiAjYThhMDZhO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5LXJnYjogMTY4LCAxNjAsIDEwNjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNreTogI2MwNmEzZDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNreS1yZ2I6IDE5MiwgMTA2LCA2MTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXN0b25lOiAjOGU5MzYyO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc3RvbmUtcmdiOiAxNDIsIDE0NywgOTg7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWxlY3RlZDogIzM3ZjI4YTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYjogNTUsIDI0MiwgMTM4O1xuICAgICAgICAtLWNoZXNzaW1hbHMtbWFnaWM6ICNmN2Q0NWE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tYWdpYy1yZ2I6IDI0NywgMjEyLCA5MDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1hZ2ljLWhvdDogI2ZmZjU2ZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1hZ2ljLWRlZXA6ICNiNzdhMTg7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXZhbC1taW5pLWdhbWVzLWZvbnQtc2l6ZSwgMXJlbSk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoYm9keS5mb250LXNtYWxsKSB7XG4gICAgICAgIC0tdmFsLW1pbmktZ2FtZXMtZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChib2R5LmZvbnQtbGFyZ2UpIHtcbiAgICAgICAgLS12YWwtbWluaS1nYW1lcy1mb250LXNpemU6IDEuMTg3NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwge1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGFuZWw6ICNmZmZmZmY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdXJmYWNlOiAjZmZmYWYxO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZWxldmF0ZWQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43Mik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDYpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc3Ryb25nOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODYpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZ2xhc3MtaGlnaGxpZ2h0OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTgpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9yZGVyOiByZ2JhKDQ2LCA1OCwgNDQsIDAuMTgpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtdGV4dDogIzJlM2EyYztcbiAgICAgICAgLS1jaGVzc2ltYWxzLW11dGVkOiAjNTE2NDNkO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc29mdDogcmdiYSgxMTEsIDEyMiwgNjAsIDAuMSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5OiAjMmU2ZjNlO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2I6IDQ2LCAxMTEsIDYyO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdDogI2ZmZmFmMDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNlY29uZGFyeTogI2E4YTA2YTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2I6IDE2OCwgMTYwLCAxMDY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1za3k6ICNjMDZhM2Q7XG4gICAgICAgIC0tY2hlc3NpbWFscy1za3ktcmdiOiAxOTIsIDEwNiwgNjE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdG9uZTogIzhlOTM2MjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXN0b25lLXJnYjogMTQyLCAxNDcsIDk4O1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2VsZWN0ZWQ6ICMzN2YyOGE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2I6IDU1LCAyNDIsIDEzODtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1hZ2ljOiAjZjdkNDVhO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbWFnaWMtcmdiOiAyNDcsIDIxMiwgOTA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tYWdpYy1ob3Q6ICNmZmY1NmY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tYWdpYy1kZWVwOiAjYjc3YTE4O1xuICAgICAgICAtLWNoZXNzaW1hbHMtd2FybmluZzogI2Y0YzU0MjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXdhcm5pbmctcmdiOiAyNDQsIDE5NywgNjY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb3ZlOiB2YXIoLS1jaGVzc2ltYWxzLXNreSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb3ZlLXJnYjogdmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNhcHR1cmU6ICMxZmNkYjM7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYjogMzEsIDIwNSwgMTc5O1xuICAgICAgICAtLWNoZXNzaW1hbHMtbGFzdDogIzhjNmI0ZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWxhc3QtcmdiOiAxNDAsIDEwNywgNzk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWxpZ2h0OiAjZjNmNGU4O1xuICAgICAgICAtLWNoZXNzaW1hbHMtY2VsbC1kYXJrOiAjN2Y5NDRkO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9hcmQtc2hhZG93OiByZ2JhKDQ2LCA1OCwgNDQsIDAuMTQpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtZmlsbDogI2ZmZmZmZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNpZGU6ICNmM2VhZGI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1saW5lOiByZ2JhKDgyLCA2NSwgNDYsIDAuMTIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtc2hhZG93OlxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMCAxcHggcmdiYSg4NCwgNjIsIDM0LCAwLjUyKSlcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAuMThyZW0gMC4xMnJlbSByZ2JhKDcyLCA1OCwgMzYsIDAuMjIpKVxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMC4zNHJlbSAwLjQycmVtIHJnYmEoNzIsIDU4LCAzNiwgMC4yMikpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stZmlsbDogIzI0MjkzNjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLXNpZGU6ICMxNzFiMjU7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1saW5lOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaGFkb3c6XG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwIDFweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzQpKVxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMC4xOHJlbSAwLjFyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKSlcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAuMzJyZW0gMC40MnJlbSByZ2JhKDAsIDAsIDAsIDAuMzYpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWdvbGQ6ICNjNzlhNDI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1nb2xkLWRhcms6ICM4YTVmMjI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1iZzogI2ZmZmRmNztcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWlubmVyLWJnOiAjZmZmZmZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYm9yZGVyOiByZ2JhKDQ2LCA1OCwgNDQsIDAuMTIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAuMTJyZW0gMC4xNnJlbSByZ2JhKDQ2LCA1OCwgNDQsIDAuMTgpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWxvY2tlZC1maWx0ZXI6IGdyYXlzY2FsZSgwLjIpIHNhdHVyYXRlKDAuNzIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtbG9ja2VkLWltZy1vcGFjaXR5OiAwLjcyO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDEuMTI1cmVtO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWF4LXdpZHRoOiBtaW4oMTAwJSwgNjByZW0pO1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcbiAgICAgICAgLmNoZXNzaW1hbHMtc2hlbGwge1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1wYW5lbDogIzE3MjExNjtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtc3VyZmFjZTogIzBmMTcwZjtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtZWxldmF0ZWQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXN0cm9uZzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtZ2xhc3MtaGlnaGxpZ2h0OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1ib3JkZXI6IHJnYmEoMjQyLCAyMzAsIDIxMywgMC4yKTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtdGV4dDogI2Y2ZjNlOTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtbXV0ZWQ6ICNjOGNmYjE7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXNvZnQ6IHJnYmEoMTExLCAxMjIsIDYwLCAwLjIyKTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeTogIzJlNmYzZTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2I6IDQ2LCAxMTEsIDYyO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0OiAjZmZmYWYwO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnk6ICNhOGEwNmE7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2I6IDE2OCwgMTYwLCAxMDY7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXNreTogI2MwNmEzZDtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtc2t5LXJnYjogMTkyLCAxMDYsIDYxO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1zdG9uZTogIzhlOTM2MjtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtc3RvbmUtcmdiOiAxNDIsIDE0NywgOTg7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtbGlnaHQ6ICNmM2Y0ZTg7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtZGFyazogIzdmOTQ0ZDtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtYm9hcmQtc2hhZG93OiByZ2JhKDAsIDAsIDAsIDAuMzQpO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1ib3JkZXI6IHJnYmEoMjQyLCAyMzAsIDIxMywgMC4yNCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdW1lLXNwbGFzaCB7XG4gICAgICAgIG9yZGVyOiAwO1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICB6LWluZGV4OiAxMDAwO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC42NXJlbTtcbiAgICAgICAgcGFkZGluZzogMS41cmVtO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDQyJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xOCksIHRyYW5zcGFyZW50IDIycmVtKSxcbiAgICAgICAgICBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCkgOTIlLCB0cmFuc3BhcmVudCk7XG4gICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigwLjlyZW0pO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bWUtc3BsYXNoX19sb2dvIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiBjbGFtcCg1LjhyZW0sIDIwdncsIDcuMnJlbSk7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXJlc3VtZS1wdWxzZSAxLjJzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMC44cmVtIDEuMnJlbSByZ2JhKHZhcigtLWlvbi1jb2xvci1kYXJrLXJnYiwgNDcsIDQyLCA1OCksIDAuMTgpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdW1lLXNwbGFzaCBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDEuNTVyZW0sIDV2dywgMi40cmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VtZS1zcGxhc2ggcCB7XG4gICAgICAgIG1heC13aWR0aDogMjRyZW07XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtcmVzdW1lLXB1bHNlIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgxKTtcbiAgICAgICAgfVxuICAgICAgICA1MCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC4yNXJlbSkgc2NhbGUoMS4wNCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXNwaW4ge1xuICAgICAgICB0byB7XG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtb25saW5lLXB1bHNlIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgICAgb3BhY2l0eTogMC43ODtcbiAgICAgICAgfVxuXG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjIyKTtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAuY2hlc3NpbWFscy1zaGVsbCxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLmNoZXNzaW1hbHMtc2hlbGwge1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGFuZWw6ICMxNzIxMTY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdXJmYWNlOiAjMGYxNzBmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZWxldmF0ZWQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc3Ryb25nOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZ2xhc3MtaGlnaGxpZ2h0OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9yZGVyOiByZ2JhKDI0NiwgMjI3LCAyMTMsIDAuMjIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtdGV4dDogI2Y2ZjNlOTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW11dGVkOiAjYzhjZmIxO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc29mdDogcmdiYSgxMTEsIDEyMiwgNjAsIDAuMjIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeTogIzJlNmYzZTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiOiA0NiwgMTExLCA2MjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3Q6ICNmZmZhZjA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnk6ICNhOGEwNmE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiOiAxNjgsIDE2MCwgMTA2O1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2t5OiAjYzA2YTNkO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2t5LXJnYjogMTkyLCAxMDYsIDYxO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc3RvbmU6ICM4ZTkzNjI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdG9uZS1yZ2I6IDE0MiwgMTQ3LCA5ODtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtbGlnaHQ6ICNlOGVhZGM7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWRhcms6ICM1ZjcwNDA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1ib2FyZC1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4zNCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jYXB0dXJlOiAjNjZmMmQ3O1xuICAgICAgICAtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2I6IDEwMiwgMjQyLCAyMTU7XG4gICAgICAgIC0tY2hlc3NpbWFscy1sYXN0OiAjY2RiZTliO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbGFzdC1yZ2I6IDIwNSwgMTkwLCAxNTU7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1maWxsOiAjZmZmYWZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtc2lkZTogI2YwZTVkNDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLWxpbmU6IHJnYmEoODIsIDY1LCA0NiwgMC4xMik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1zaGFkb3c6XG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwIDFweCByZ2JhKDg0LCA2MiwgMzQsIDAuNDgpKVxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMC4xOHJlbSAwLjEycmVtIHJnYmEoMCwgMCwgMCwgMC4yNCkpXG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwLjM0cmVtIDAuNDJyZW0gcmdiYSgwLCAwLCAwLCAwLjMpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLWZpbGw6ICMyMDI2MzM7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaWRlOiAjMTExNjIwO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stbGluZTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLXNoYWRvdzpcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAgMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNCkpXG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwLjE4cmVtIDAuMXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQpKVxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMC4zNHJlbSAwLjQ0cmVtIHJnYmEoMCwgMCwgMCwgMC41MikpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYmc6ICNmZmZkZjc7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1pbm5lci1iZzogI2ZmZmZmZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWJvcmRlcjogcmdiYSgyNDIsIDIzMCwgMjEzLCAwLjI0KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWZpbHRlcjogZHJvcC1zaGFkb3coMCAwLjEycmVtIDAuMTZyZW0gcmdiYSgwLCAwLCAwLCAwLjIyKSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1sb2NrZWQtZmlsdGVyOlxuICAgICAgICAgIGdyYXlzY2FsZSgwLjMyKVxuICAgICAgICAgIHNhdHVyYXRlKDAuNzIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtbG9ja2VkLWltZy1vcGFjaXR5OiAwLjU4O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oZXJvIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgICBqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IGNsYW1wKDEuMjVyZW0sIDV2dywgMi41cmVtKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE4JSAxMiUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45MiksIHRyYW5zcGFyZW50IDIwJSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2ZkZjhlZSAwJSwgI2ZmZmZmZiA0MCUsICNlZGYzZGYgMTAwJSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5jaGVzc2ltYWxzLWhlcm8sXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5jaGVzc2ltYWxzLWhlcm8ge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTglIDEyJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSwgdHJhbnNwYXJlbnQgMjIlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMTExYTEwIDAlLCAjMTcyMTE2IDQ4JSwgIzBmMTcwZiAxMDAlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgyNDYsIDIyNywgMjEzLCAwLjIyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGVyb19fbG9nbyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC4zNXJlbTtcbiAgICAgICAgd2lkdGg6IG1pbigyN3JlbSwgODZ2dyk7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGVyb19fbG9nbyBpbWcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICBvYmplY3QtZml0OiBjb250YWluO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oZXJvX19lbWJsZW0ge1xuICAgICAgICB3aWR0aDogbWluKDEyLjI1cmVtLCA0OHZ3KTtcbiAgICAgICAgbWFyZ2luLXRvcDogMC4ycmVtO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMC4ycmVtKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGVyb19fd29yZG1hcmsge1xuICAgICAgICB3aWR0aDogbWluKDIxcmVtLCA3NnZ3KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGVybyBwLFxuICAgICAgLmNoZXNzaW1hbHMtaG93dG8gcCxcbiAgICAgIC5jaGVzc2ltYWxzLXRpcCBwLFxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0IHAsXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjYyNXJlbTtcbiAgICAgICAgcGFkZGluZzogY2xhbXAoMXJlbSwgNHZ3LCAxLjVyZW0pO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtZ2FtZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC44NzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhbmVsIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAxLjEyNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG9tZS1hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuODc1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ob21lLWFjdGlvbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGp1c3RpZnktaXRlbXM6IHN0YXJ0O1xuICAgICAgICBnYXA6IDAuNjhyZW07XG4gICAgICAgIG1pbi1oZWlnaHQ6IDkuNnJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDEuMTVyZW0gMXJlbSAxLjA1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTglIDEwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc0KSwgdHJhbnNwYXJlbnQgMjIlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEpLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5LXJnYiksIDAuMDgpKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhvbWUtYWN0aW9uLS1wbGF5IHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjQ2KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE4JSAxMCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44MiksIHRyYW5zcGFyZW50IDIyJSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yMiksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiKSwgMC4xMikpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1tb2RlLWljb24ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDQuNDVyZW07XG4gICAgICAgIGhlaWdodDogNC40NXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1zdW4tcmdiKSwgMC4xNik7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAgMXB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTQpLFxuICAgICAgICAgIDAgMC41NXJlbSAxcmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zaGFkb3ctcmdiKSwgMC4xMik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhvbWUtYWN0aW9uIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMS4xcmVtLCAzdncsIDEuNDVyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhvbWUtYWN0aW9uIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuODhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9wdGlvbnMge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMTI1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjM1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb3B0aW9ucyBzdW1tYXJ5IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICAgIG1pbi1oZWlnaHQ6IDMuMjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNjVyZW0gMC44cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vcHRpb25zIHN1bW1hcnk6Oi13ZWJraXQtZGV0YWlscy1tYXJrZXIge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vcHRpb25zIHN1bW1hcnk6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJysnO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgd2lkdGg6IDEuOHJlbTtcbiAgICAgICAgaGVpZ2h0OiAxLjhyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXNvZnQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb3B0aW9uc1tvcGVuXSBzdW1tYXJ5OjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICctJztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb3B0aW9ucyBzdW1tYXJ5IHN0cm9uZyxcbiAgICAgIC5jaGVzc2ltYWxzLW9wdGlvbnMgc3VtbWFyeSBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9wdGlvbnMgc3VtbWFyeSBzdHJvbmcge1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vcHRpb25zIHN1bW1hcnkgc3BhbiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg0cmVtO1xuICAgICAgICBmb250LXdlaWdodDogODAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vcHRpb25zID4gOm5vdChzdW1tYXJ5KSB7XG4gICAgICAgIG1hcmdpbjogMC41cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDEuMDVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnNfX2dyb3VwIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjYycmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnNfX2dyb3VwIGgzIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtc2l6ZSBidXR0b24sXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtbW9kZSBidXR0b24sXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtbmlnaHRtYXJlIGJ1dHRvbixcbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9ucyAuY2hlc3NpbWFscy1ib3RzIGJ1dHRvbiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgbWluLWhlaWdodDogNC43NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43OHJlbSAyLjFyZW0gMC43OHJlbSAwLjlyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMDhyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAxNiUgOCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KSwgdHJhbnNwYXJlbnQgMjQlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA4KSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2IpLCAwLjA1KSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggdmFyKC0tY2hlc3NpbWFscy1nbGFzcy1oaWdobGlnaHQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtc2l6ZSBidXR0b24uaXMtc2VsZWN0ZWQsXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtbW9kZSBidXR0b24uaXMtc2VsZWN0ZWQsXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtbmlnaHRtYXJlIGJ1dHRvbi5pcy1zZWxlY3RlZCxcbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9ucyAuY2hlc3NpbWFscy1ib3RzIGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE2JSA4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc4KSwgdHJhbnNwYXJlbnQgMjUlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjIzKSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2IpLCAwLjEzKSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAgMC4xNnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE4KSxcbiAgICAgICAgICAwIDAuODVyZW0gMS44cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vcHRpb24tY2hlY2sge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMC42NXJlbTtcbiAgICAgICAgcmlnaHQ6IDAuNjVyZW07XG4gICAgICAgIHdpZHRoOiAwLjcycmVtO1xuICAgICAgICBoZWlnaHQ6IDAuNzJyZW07XG4gICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMyk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmlzLXNlbGVjdGVkID4gLmNoZXNzaW1hbHMtb3B0aW9uLWNoZWNrIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjI4cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTMpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtbmlnaHRtYXJlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuNTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9ucyAuY2hlc3NpbWFscy1uaWdodG1hcmUgYnV0dG9uIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWFyZWFzOlxuICAgICAgICAgICdpY29uIHRpdGxlJ1xuICAgICAgICAgICdpY29uIGJvZHknO1xuICAgICAgICBjb2x1bW4tZ2FwOiAwLjU1cmVtO1xuICAgICAgICByb3ctZ2FwOiAwLjEycmVtO1xuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9ucyAuY2hlc3NpbWFscy1uaWdodG1hcmUgc3Ryb25nIHtcbiAgICAgICAgZ3JpZC1hcmVhOiB0aXRsZTtcbiAgICAgICAgYWxpZ24tc2VsZjogZW5kO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtbmlnaHRtYXJlIHNtYWxsIHtcbiAgICAgICAgZ3JpZC1hcmVhOiBib2R5O1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW5pZ2h0bWFyZV9faWNvbiB7XG4gICAgICAgIGdyaWQtYXJlYTogaWNvbjtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDIuMzVyZW07XG4gICAgICAgIGhlaWdodDogMi4zNXJlbTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC44cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW5pZ2h0bWFyZV9faWNvbiBpbWcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICAtd2Via2l0LXVzZXItZHJhZzogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheS1vcHRpb25zIC5jaGVzc2ltYWxzLW5pZ2h0bWFyZSBidXR0b24uaXMtc2VsZWN0ZWQgLmNoZXNzaW1hbHMtbmlnaHRtYXJlX19pY29uIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2IpLCAwLjIpO1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9ucyAuY2hlc3NpbWFscy1kaWZmaWN1bHR5IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuNTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9ucyAuY2hlc3NpbWFscy1kaWZmaWN1bHR5IGJ1dHRvbiB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMik7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4wNiksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiKSwgMC4wNCkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHZhcigtLWNoZXNzaW1hbHMtZ2xhc3MtaGlnaGxpZ2h0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheS1vcHRpb25zIC5jaGVzc2ltYWxzLWRpZmZpY3VsdHkgYnV0dG9uLmlzLXNlbGVjdGVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAwLjE2cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTgpLFxuICAgICAgICAgIDAgMC43MnJlbSAxLjI1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtYm90cyBidXR0b24gPiAuY2hlc3NpbWFscy1ib3QtYXZhdGFyIHtcbiAgICAgICAgd2lkdGg6IDIuNDVyZW07XG4gICAgICAgIGhlaWdodDogMi40NXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC44cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheS1vcHRpb25zIC5jaGVzc2ltYWxzLWJvdHMgYnV0dG9uLmlzLXNlbGVjdGVkID4gLmNoZXNzaW1hbHMtYm90LWF2YXRhciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiKSwgMC4yKTtcbiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW1vZGFsIHtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBhbmVsOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLWNhcmQsICNmZmZmZmYpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZWxldmF0ZWQ6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtY2FyZC1zdHJvbmcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43MikpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtY2FyZCwgI2ZmZmZmZikgNzQlLCB0cmFuc3BhcmVudCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zdHJvbmc6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtY2FyZC1zdHJvbmcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44NikpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZ2xhc3MtaGlnaGxpZ2h0OiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1zdXJmYWNlLCAjZmZmZmZmKSA1OCUsIHRyYW5zcGFyZW50KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWJvcmRlcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1ib3JkZXIsIHJnYmEoNDYsIDU4LCA0NCwgMC4xOCkpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtdGV4dDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0LCAjMmUzYTJjKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW11dGVkOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLW11dGVkLCAjNTE2NDNkKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnk6ICMyZTZmM2U7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYjogNDYsIDExMSwgNjI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0OiAjZmZmYWYwO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5OiAjYThhMDZhO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5LXJnYjogMTY4LCAxNjAsIDEwNjtcbiAgICAgICAgLS1iYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICAtLWJhY2tncm91bmQtYWN0aXZhdGVkOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KSA4OCUsICMwMDApO1xuICAgICAgICAtLWJhY2tncm91bmQtaG92ZXI6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpIDkyJSwgI2ZmZik7XG4gICAgICAgIC0tYm9yZGVyLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICAtLWJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICAtLWJveC1zaGFkb3c6IDAgMXJlbSAycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjIpO1xuICAgICAgICAtLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICAtLWNvbG9yLWFjdGl2YXRlZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgLS1jb2xvci1ob3ZlcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgLS12YWwtbW9kYWwtZm9vdGVyLWdhcDogMC43cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcy1tb2RhbCB7XG4gICAgICAgIC0tY2hlc3NpbWFscy1ib3JkZXI6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtYm9yZGVyLCByZ2JhKDQ2LCA1OCwgNDQsIDAuMTgpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXRleHQ6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dCwgIzJlM2EyYyk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tdXRlZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1tdXRlZCwgIzUxNjQzZCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5OiAjMmU2ZjNlO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2I6IDQ2LCAxMTEsIDYyO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdDogI2ZmZmFmMDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNlY29uZGFyeTogI2E4YTA2YTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2I6IDE2OCwgMTYwLCAxMDY7XG4gICAgICAgIC0taW9uLWJhY2tncm91bmQtY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtc3VyZmFjZSwgI2ZmZmZmZik7XG4gICAgICAgIC0taW9uLWNhcmQtYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkLCAjZmZmZmZmKTtcbiAgICAgICAgLS1pb24tdGV4dC1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgLS12YWwtbW9kYWwtZm9vdGVyLWdhcDogMC43cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jb25maXJtLW1vZGFsIHtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWJvcmRlcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1ib3JkZXIsIHJnYmEoNDYsIDU4LCA0NCwgMC4xOCkpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtdGV4dDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0LCAjMmUzYTJjKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW11dGVkOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLW11dGVkLCAjNTE2NDNkKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnk6ICMyZTZmM2U7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYjogNDYsIDExMSwgNjI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0OiAjZmZmYWYwO1xuICAgICAgICAtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXN1cmZhY2UsICNmZmZmZmYpO1xuICAgICAgICAtLWlvbi1jYXJkLWJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtY2FyZCwgI2ZmZmZmZik7XG4gICAgICAgIC0taW9uLXRleHQtY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIC0tdmFsLW1vZGFsLWZvb3Rlci1nYXA6IDAuN3JlbTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCB7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC1zdXJmYWNlOiAjZmZmZmZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbW9kYWwtY2FyZDogI2ZmZmZmZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1vZGFsLWNhcmQtc3Ryb25nOiAjZjhmYmY1O1xuICAgICAgICAtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dDogIzJlM2EyYztcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1vZGFsLW11dGVkOiAjNWY2ZjUwO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbW9kYWwtYm9yZGVyOiByZ2JhKDQ2LCA1OCwgNDQsIDAuMTgpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbW9kYWwtc2hhZG93OiByZ2JhKDQ2LCA1OCwgNDQsIDAuMTQpO1xuICAgICAgICAtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXN1cmZhY2UpO1xuICAgICAgICAtLWlvbi1jYXJkLWJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtY2FyZCk7XG4gICAgICAgIC0taW9uLXRleHQtY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dCk7XG4gICAgICAgIC0taW9uLWNvbG9yLWRhcms6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dCk7XG4gICAgICAgIC0taW9uLWNvbG9yLWRhcmstcmdiOiA0NiwgNTgsIDQ0O1xuICAgICAgICAtLWlvbi1jb2xvci1tZWRpdW06IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtbXV0ZWQpO1xuICAgICAgICAtLWlvbi1jb2xvci1tZWRpdW0tcmdiOiA5NSwgMTExLCA4MDtcbiAgICAgICAgLS1pb24tYm9yZGVyLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLWJvcmRlcik7XG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnk6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnktcmdiOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKTtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS1jb250cmFzdDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS1zaGFkZTogIzI4NWYzNjtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS10aW50OiAjNDM4MDRmO1xuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XG4gICAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy10aGVtZWQtbW9kYWwge1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC1zdXJmYWNlOiAjMTIxODExO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkOiAjMTgyMjE3O1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkLXN0cm9uZzogIzFkMmExYztcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dDogI2Y2ZjNlOTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtbW9kYWwtbXV0ZWQ6ICNjOGNmYjE7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLW1vZGFsLWJvcmRlcjogcmdiYSgyNDYsIDIyNywgMjEzLCAwLjIpO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4zNik7XG4gICAgICAgICAgLS1pb24tY29sb3ItZGFyay1yZ2I6IDI0NiwgMjQzLCAyMzM7XG4gICAgICAgICAgLS1pb24tY29sb3ItbWVkaXVtLXJnYjogMjAwLCAyMDcsIDE3NztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCB7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC1zdXJmYWNlOiAjMTIxODExO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbW9kYWwtY2FyZDogIzE4MjIxNztcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1vZGFsLWNhcmQtc3Ryb25nOiAjMWQyYTFjO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dDogI2Y2ZjNlOTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1vZGFsLW11dGVkOiAjYzhjZmIxO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbW9kYWwtYm9yZGVyOiByZ2JhKDI0NiwgMjI3LCAyMTMsIDAuMik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4zNik7XG4gICAgICAgIC0taW9uLWNvbG9yLWRhcmstcmdiOiAyNDYsIDI0MywgMjMzO1xuICAgICAgICAtLWlvbi1jb2xvci1tZWRpdW0tcmdiOiAyMDAsIDIwNywgMTc3O1xuICAgICAgfVxuXG4gICAgICA6aG9zdCA6Om5nLWRlZXAgaW9uLW1vZGFsLmNoZXNzaW1hbHMtdGhlbWVkLW1vZGFsIHZhbC1tb2RhbC1zaGVsbCBpb24tdG9vbGJhcixcbiAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy10aGVtZWQtbW9kYWwgLnZhbC1tb2RhbC1sYXlvdXRfX2Zvb3RlciB7XG4gICAgICAgIC0tYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1zdXJmYWNlKTtcbiAgICAgICAgLS1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1zdXJmYWNlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dCk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1ib3JkZXIpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdCA6Om5nLWRlZXAgaW9uLW1vZGFsLmNoZXNzaW1hbHMtdGhlbWVkLW1vZGFsIHZhbC1tb2RhbC1zaGVsbCBpb24tY29udGVudCB7XG4gICAgICAgIC0tYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1zdXJmYWNlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy10aGVtZWQtbW9kYWwgdmFsLW1vZGFsLXNoZWxsIGlvbi1idXR0b24ge1xuICAgICAgICAtLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXRleHQpO1xuICAgICAgICAtLWNvbG9yLWhvdmVyOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXRleHQpO1xuICAgICAgICAtLWNvbG9yLWFjdGl2YXRlZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCB2YWwtZGlzcGxheSBpb24tdGV4dCxcbiAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy10aGVtZWQtbW9kYWwgdmFsLXRpdGxlIGlvbi10ZXh0IHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy10aGVtZWQtbW9kYWwgdmFsLWJ1dHRvbi52YWwtbW9kYWwtbGF5b3V0X19idXR0b24gaW9uLWJ1dHRvbixcbiAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy10aGVtZWQtbW9kYWwgdmFsLWJ1dHRvbi5jaGVzc2ltYWxzLXJ1bGVzX19hY3Rpb24gaW9uLWJ1dHRvbiB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDMuNDVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIC0tYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIC0tcGFkZGluZy1ib3R0b206IDAuODVyZW07XG4gICAgICAgIC0tcGFkZGluZy1lbmQ6IDEuMzVyZW07XG4gICAgICAgIC0tcGFkZGluZy1zdGFydDogMS4zNXJlbTtcbiAgICAgICAgLS1wYWRkaW5nLXRvcDogMC44NXJlbTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCB2YWwtYnV0dG9uLnZhbC1tb2RhbC1sYXlvdXRfX2J1dHRvbiBpb24tYnV0dG9uLmJ1dHRvbi1zb2xpZCxcbiAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy10aGVtZWQtbW9kYWwgdmFsLWJ1dHRvbi5jaGVzc2ltYWxzLXJ1bGVzX19hY3Rpb24tLXByaW1hcnkgaW9uLWJ1dHRvbiB7XG4gICAgICAgIC0tYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgLS1iYWNrZ3JvdW5kLWhvdmVyOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KSA5MiUsICNmZmYpO1xuICAgICAgICAtLWJhY2tncm91bmQtYWN0aXZhdGVkOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KSA4OCUsICMwMDApO1xuICAgICAgICAtLWJveC1zaGFkb3c6IDAgMXJlbSAycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjIpO1xuICAgICAgICAtLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICAtLWNvbG9yLWFjdGl2YXRlZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgLS1jb2xvci1ob3ZlcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCB2YWwtYnV0dG9uLnZhbC1tb2RhbC1sYXlvdXRfX2J1dHRvbiBpb24tYnV0dG9uLmJ1dHRvbi1vdXRsaW5lLFxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCB2YWwtYnV0dG9uLmNoZXNzaW1hbHMtcnVsZXNfX2FjdGlvbi0tc2Vjb25kYXJ5IGlvbi1idXR0b24ge1xuICAgICAgICAtLWJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICAtLWJvcmRlci1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1ib3JkZXIpO1xuICAgICAgICAtLWJvcmRlci13aWR0aDogMXB4O1xuICAgICAgICAtLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXRleHQpO1xuICAgICAgICAtLWNvbG9yLWFjdGl2YXRlZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0KTtcbiAgICAgICAgLS1jb2xvci1ob3ZlcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheS1tb2RhbF9fYWN0aW9ucyxcbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgICBnYXA6IDAuN3JlbTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktbW9kYWxfX2FjdGlvbnMgLmNoZXNzaW1hbHMtcHJpbWFyeSxcbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktbW9kYWxfX2FjdGlvbnMgLmNoZXNzaW1hbHMtc2Vjb25kYXJ5IHtcbiAgICAgICAgbWluLXdpZHRoOiBtaW4oMTAwJSwgMTIuNXJlbSk7XG4gICAgICAgIHBhZGRpbmc6IDAuODVyZW0gMS4zNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX2FjdGlvbiB7XG4gICAgICAgIG1pbi13aWR0aDogbWluKDEwMCUsIDEyLjVyZW0pO1xuICAgICAgfVxuXG4gICAgICA6aG9zdCA6Om5nLWRlZXAgaW9uLW1vZGFsLmNoZXNzaW1hbHMtcnVsZXMtbW9kYWwgdmFsLWJ1dHRvbi5jaGVzc2ltYWxzLXJ1bGVzX19hY3Rpb24gaW9uLWJ1dHRvbiB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDMuNDVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIC0tYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIC0tcGFkZGluZy1ib3R0b206IDAuODVyZW07XG4gICAgICAgIC0tcGFkZGluZy1lbmQ6IDEuMzVyZW07XG4gICAgICAgIC0tcGFkZGluZy1zdGFydDogMS4zNXJlbTtcbiAgICAgICAgLS1wYWRkaW5nLXRvcDogMC44NXJlbTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXJ1bGVzLW1vZGFsIHZhbC1idXR0b24uY2hlc3NpbWFscy1ydWxlc19fYWN0aW9uLS1wcmltYXJ5IGlvbi1idXR0b24ge1xuICAgICAgICAtLWJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIC0tYmFja2dyb3VuZC1ob3ZlcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSkgOTIlLCAjZmZmKTtcbiAgICAgICAgLS1iYWNrZ3JvdW5kLWFjdGl2YXRlZDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSkgODglLCAjMDAwKTtcbiAgICAgICAgLS1ib3gtc2hhZG93OiAwIDFyZW0gMnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjIyKTtcbiAgICAgICAgLS1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgLS1jb2xvci1hY3RpdmF0ZWQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICAgIC0tY29sb3ItaG92ZXI6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy1ydWxlcy1tb2RhbCB2YWwtYnV0dG9uLmNoZXNzaW1hbHMtcnVsZXNfX2FjdGlvbi0tc2Vjb25kYXJ5IGlvbi1idXR0b24ge1xuICAgICAgICAtLWJvcmRlci1jb2xvcjogcmdiYSg0NiwgNTgsIDQ0LCAwLjI0KTtcbiAgICAgICAgLS1ib3JkZXItd2lkdGg6IDFweDtcbiAgICAgICAgLS1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgLS1jb2xvci1hY3RpdmF0ZWQ6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIC0tY29sb3ItaG92ZXI6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy1jb25maXJtLW1vZGFsIHZhbC1idXR0b24udmFsLW1vZGFsLWxheW91dF9fYnV0dG9uIGlvbi1idXR0b24ge1xuICAgICAgICBtaW4taGVpZ2h0OiAzLjQ1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICAtLWJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICAtLXBhZGRpbmctYm90dG9tOiAwLjg1cmVtO1xuICAgICAgICAtLXBhZGRpbmctZW5kOiAxLjM1cmVtO1xuICAgICAgICAtLXBhZGRpbmctc3RhcnQ6IDEuMzVyZW07XG4gICAgICAgIC0tcGFkZGluZy10b3A6IDAuODVyZW07XG4gICAgICB9XG5cbiAgICAgIDpob3N0XG4gICAgICAgIDo6bmctZGVlcFxuICAgICAgICBpb24tbW9kYWwuY2hlc3NpbWFscy1jb25maXJtLW1vZGFsXG4gICAgICAgIHZhbC1idXR0b24udmFsLW1vZGFsLWxheW91dF9fYnV0dG9uXG4gICAgICAgIGlvbi1idXR0b25bZGF0YS10ZXN0aWQ9J2NvbmZpcm0nXSB7XG4gICAgICAgIC0tYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgLS1iYWNrZ3JvdW5kLWhvdmVyOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KSA5MiUsICNmZmYpO1xuICAgICAgICAtLWJhY2tncm91bmQtYWN0aXZhdGVkOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KSA4OCUsICMwMDApO1xuICAgICAgICAtLWJveC1zaGFkb3c6IDAgMXJlbSAycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjIpO1xuICAgICAgICAtLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICAtLWNvbG9yLWFjdGl2YXRlZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgLS1jb2xvci1ob3ZlcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgIH1cblxuICAgICAgOmhvc3RcbiAgICAgICAgOjpuZy1kZWVwXG4gICAgICAgIGlvbi1tb2RhbC5jaGVzc2ltYWxzLWNvbmZpcm0tbW9kYWxcbiAgICAgICAgdmFsLWJ1dHRvbi52YWwtbW9kYWwtbGF5b3V0X19idXR0b25cbiAgICAgICAgaW9uLWJ1dHRvbltkYXRhLXRlc3RpZD0nY2FuY2VsJ10ge1xuICAgICAgICAtLWJvcmRlci1jb2xvcjogcmdiYSg0NiwgNTgsIDQ0LCAwLjI0KTtcbiAgICAgICAgLS1ib3JkZXItd2lkdGg6IDFweDtcbiAgICAgICAgLS1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgLS1jb2xvci1hY3RpdmF0ZWQ6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIC0tY29sb3ItaG92ZXI6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC44NzVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4zNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4wOCksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLS13YWl0aW5nIHtcbiAgICAgICAgb3JkZXI6IDI7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4zNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZSBoMixcbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZSBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUgaDIge1xuICAgICAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lIHAge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fY3JlYXRlLFxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lX19qb2luIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmVfX2NyZWF0ZSBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fam9pbiB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwLjg1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmVfX2pvaW4gPiBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fZXJyb3Ige1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjg3NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43cmVtIDAuOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjEyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIsICNlYjQ0NWEpICFpbXBvcnRhbnQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fbG9hZGluZyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC42NXJlbSAwLjg1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA4KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lX19sb2FkaW5nIHNwYW4ge1xuICAgICAgICB3aWR0aDogMXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxcmVtO1xuICAgICAgICBib3JkZXI6IDAuMTVyZW0gc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yNCk7XG4gICAgICAgIGJvcmRlci10b3AtY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtc3BpbiAwLjc1cyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1jb2RlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjRyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1jb2RlIGlucHV0IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDMuM3JlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMCAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWdhbWUtY29kZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4ycmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjg1cmVtIDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWdhbWUtY29kZSBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtZ2FtZS1jb2RlIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMS4zNXJlbSwgNnZ3LCAycmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLWFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3Rvcnkge1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3RvcnlfX2hlYWRpbmcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19saXN0IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3RvcnlfX2l0ZW0ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43cmVtIDAuOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19pdGVtIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMXJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19pdGVtIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3RvcnlfX2l0ZW0gc21hbGwge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3RvcnlfX2l0ZW0gZW0ge1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NnJlbTtcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ob21lLXNldHRpbmdzIHtcbiAgICAgICAgZ2FwOiAwLjhyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhvbWUtc2V0dGluZ3NfX2FjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDlyZW0sIDFmcikpO1xuICAgICAgICBnYXA6IDAuNjI1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wZW5kaW5nLXBsYXllciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC43cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjIyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGVuZGluZy1wbGF5ZXIgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjFyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGVuZGluZy1wbGF5ZXIgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDdlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGVuZGluZy1wbGF5ZXIgc3Ryb25nIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgZm9udC1zaXplOiAxLjA1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkIHtcbiAgICAgICAgb3JkZXI6IDE7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgZ2FwOiAwLjYyNXJlbTtcbiAgICAgICAgbWluLWhlaWdodDogMy43NXJlbTtcbiAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjU1cmVtIDAuNjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAxNSUgMTglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzQpLCB0cmFuc3BhcmVudCAxOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMiksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiKSwgMC4xKSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZC5pcy1ibGFjay10dXJuIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci1kYXJrLXJnYiwgNDcsIDQyLCA1OCksIDAuMjgpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTUlIDE4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKSwgdHJhbnNwYXJlbnQgMTglKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWlvbi1jb2xvci1kYXJrLXJnYiwgNDcsIDQyLCA1OCksIDAuMTQpLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkLmlzLWZpbmlzaGVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLXJnYiwgNDUsIDIxMSwgMTExKSwgMC40Mik7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAxNSUgMTglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzUpLCB0cmFuc3BhcmVudCAxOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjE4KSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMikpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQuaXMtZmluaXNoZWQgLmNoZXNzaW1hbHMtdHVybi1jYXJkX19jaGlwIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLCAjMmRkMzZmKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkLmlzLXlvdXItdHVybiB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC40OCk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAgMC4xMnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKSxcbiAgICAgICAgICAwIDAuOTVyZW0gMnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkLmlzLXlvdXItdHVybiAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NoaXAge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMC4zMnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE0KTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXR1cm4tcHVsc2UgMS40NXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZC5pcy10aW1lci1sb3cge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC41KTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAwLjEycmVtIHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC4xMiksXG4gICAgICAgICAgMCAwLjk1cmVtIDJyZW0gcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjEyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkLmlzLXRpbWVyLWxvdyAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NoaXAge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjZWI0NDVhKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXItY29udHJhc3QsICNmZmZmZmYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQuaXMtd2FpdGluZy10dXJuIC5jaGVzc2ltYWxzLXR1cm4tY2FyZF9fY2hpcCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXR1cm4tcHVsc2Uge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApIHNjYWxlKDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCkgc2NhbGUoMS4wMzUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZF9fY29weSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgZ2FwOiAwLjE1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NoaXAge1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IHN0YXJ0O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC4ycmVtIDAuNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBmb250LXNpemU6IDAuNjJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCBzdHJvbmcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDFyZW0sIDMuNXZ3LCAxLjI1cmVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIG92ZXJmbG93LXdyYXA6IGFueXdoZXJlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQgcCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjIyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXAge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjQ1cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDEwcmVtO1xuICAgICAgICBtYXgtd2lkdGg6IG1pbigxN3JlbSwgNDIlKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC4zcmVtIDAuNTVyZW0gMC4zcmVtIDAuMzVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLWxpZ2h0LXJnYiwgMjQ0LCAyNDUsIDI0OCksIDAuNzIpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXAge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXAgdmFsLXVzZXItYXZhdGFyIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICBsaW5lLWhlaWdodDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX19hdmF0YXIge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBmbGV4OiAwIDAgMi4yNXJlbTtcbiAgICAgICAgd2lkdGg6IDIuMjVyZW07XG4gICAgICAgIGhlaWdodDogMi4yNXJlbTtcbiAgICAgICAgYXNwZWN0LXJhdGlvOiAxIC8gMTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX19hdmF0YXItLWluaXRpYWxzIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICA6aG9zdCA6Om5nLWRlZXAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwIC5jaGVzc2ltYWxzLXR1cm4tYXZhdGFyIHtcbiAgICAgICAgd2lkdGg6IDIuMjVyZW07XG4gICAgICAgIG1pbi13aWR0aDogMi4yNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAyLjI1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fdGV4dCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgZ2FwOiAwLjA1cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX3RleHQgc3BhbiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjU4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX3RleHQgc3Ryb25nIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgZm9udC1zaXplOiAwLjgycmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wODtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fdGV4dCBzbWFsbCB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY2cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYXJlbmEge1xuICAgICAgICBvcmRlcjogNDtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjg3NXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ob3d0byxcbiAgICAgIC5jaGVzc2ltYWxzLXRpcCxcbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdCxcbiAgICAgIC5jaGVzc2ltYWxzLXJlcGxheSxcbiAgICAgIC5jaGVzc2ltYWxzLXJlbWF0Y2gtc3RhdHVzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjM3NXJlbTtcbiAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4yNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG93dG8ge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtc29mdCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ob3d0byBwIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ob3d0b19fYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgZ2FwOiAwLjYyNXJlbTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5jaGVzc2ltYWxzLWhvd3RvLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuY2hlc3NpbWFscy1ob3d0byB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgyNDYsIDIyNywgMjEzLCAwLjIpO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjMTcyMTE2O1xuICAgICAgICBjb2xvcjogI2Y2ZjNlOTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5jaGVzc2ltYWxzLWhvd3RvIHAsXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5jaGVzc2ltYWxzLWhvd3RvIHAge1xuICAgICAgICBjb2xvcjogI2M4Y2ZiMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0IHtcbiAgICAgICAgb3JkZXI6IDU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdF9fYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgZ2FwOiAwLjYyNXJlbTtcbiAgICAgICAgbWFyZ2luLXRvcDogMC40NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWN0aW9uLWJ1dHRvbiB7XG4gICAgICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgICAgICBtaW4td2lkdGg6IG1pbigxMDAlLCAxMi41cmVtKTtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBwYWRkaW5nOiAwLjg1cmVtIDEuMzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdC5pcy1jaGFsbGVuZ2UtcmVzdWx0IHtcbiAgICAgICAgZ2FwOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0X19zdGF0cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgIG1hcmdpbi10b3A6IDAuMzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdF9fc3RhdHMgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xNXJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE2KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC44NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC41OHJlbSAwLjZyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4wOCksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0X19zdGF0cyBzbWFsbCB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0X19zdGF0cyBiIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTI7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHRfX2RldGFpbCB7XG4gICAgICAgIG1hcmdpbjogMC4ycmVtIDAgMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90LXJlcG9ydCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgICBtYXJnaW4tdG9wOiAwLjM1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE4KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43OHJlbSAwLjg1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMSksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90LXJlcG9ydCA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMi41cmVtO1xuICAgICAgICBoZWlnaHQ6IDIuNXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC44NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2IpLCAwLjE0KTtcbiAgICAgICAgZm9udC1zaXplOiAxLjQ1cmVtO1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdC1yZXBvcnQgPiBzcGFuIGltZyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdC1yZXBvcnQgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjEycmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdC1yZXBvcnQgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90LXJlcG9ydCBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90LXJlcG9ydCBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1zdGF0dXMge1xuICAgICAgICBvcmRlcjogMztcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxLjM1cmVtIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuODVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuODVyZW0gMC45NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA5KSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUtc3RhdHVzID4gc3BhbiB7XG4gICAgICAgIGp1c3RpZnktc2VsZjogY2VudGVyO1xuICAgICAgICB3aWR0aDogMC43MnJlbTtcbiAgICAgICAgaGVpZ2h0OiAwLjcycmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMC4zOHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLXN0YXR1cy5pcy1zeW5jaW5nID4gc3BhbiB7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1vbmxpbmUtcHVsc2UgOTAwbXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1zdGF0dXMuaXMtZXJyb3Ige1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC4yOCk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjEpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1zdGF0dXMuaXMtZXJyb3IgPiBzcGFuIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2ViNDQ1YSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMzhyZW0gcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjEyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLXN0YXR1cyBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMTJyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLXN0YXR1cyBzdHJvbmcge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLXN0YXR1cyBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDc4MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNlcmllcyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xOHJlbTtcbiAgICAgICAgbWFyZ2luLXRvcDogMC4zNXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xOCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNzhyZW0gMC44NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5LXJnYiksIDAuMTIpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNlcmllcy0tY29tcGFjdCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNlcmllcyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjcycmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zZXJpZXMgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNlcmllcyBzcGFuIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuODRyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MjA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI4O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXBsYXkge1xuICAgICAgICBvcmRlcjogNTtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKSBhdXRvO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMik7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xKSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXBsYXkgPiBkaXY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMTVyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5IHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5IHNwYW4ge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlcGxheV9fYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlcGxheV9fYWN0aW9ucyAuY2hlc3NpbWFscy1zZWNvbmRhcnkge1xuICAgICAgICBtaW4taGVpZ2h0OiAyLjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAgMC44cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXRvcmlhbCB7XG4gICAgICAgIG9yZGVyOiAzO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpIGF1dG87XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMyksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHV0b3JpYWwgPiBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMThyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHV0b3JpYWwgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXRvcmlhbCBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1dG9yaWFsIHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzgwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4zNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHV0b3JpYWwgLmNoZXNzaW1hbHMtc2Vjb25kYXJ5IHtcbiAgICAgICAgbWluLWhlaWdodDogMi41cmVtO1xuICAgICAgICBwYWRkaW5nOiAwIDAuODVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlbWF0Y2gtc3RhdHVzIHtcbiAgICAgICAgb3JkZXI6IDU7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjIpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlbWF0Y2gtc3RhdHVzLmlzLWluY29taW5nIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLXJnYiwgNDUsIDIxMSwgMTExKSwgMC4zOCk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1pb24tY29sb3Itc3VjY2Vzcy1yZ2IsIDQ1LCAyMTEsIDExMSksIDAuMTQpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlbWF0Y2gtc3RhdHVzIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXMgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuODhyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXBsYXllciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLmNoZXNzaW1hbHMtcmVtYXRjaC1wbGF5ZXIsXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5jaGVzc2ltYWxzLXJlbWF0Y2gtcGxheWVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXNfX2FjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1c19fYWN0aW9ucyAuY2hlc3NpbWFscy1zZWNvbmRhcnkge1xuICAgICAgICBtaW4taGVpZ2h0OiAyLjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAgMC45NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG93dG8gaDIsXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMgaDIge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4xNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWN0YSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDEuMmZyKSBtaW5tYXgoMTByZW0sIGF1dG8pIGF1dG87XG4gICAgICAgIGdhcDogMC42NXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjI0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4yNXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMSksIHRyYW5zcGFyZW50IDYyJSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMC43cmVtIDEuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2hhZG93LXJnYiksIDAuMDgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19jb3B5IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjE4cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jdGFfX2NvcHkgc3BhbixcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jdGFfX3JpdmFsIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtc2t5KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19jb3B5IGgyIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjA1cmVtLCAyLjV2dywgMS4zMnJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19jb3B5IHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjgycmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzgwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4zO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19tZXRhIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDMuOHJlbSwgMWZyKSk7XG4gICAgICAgIGdhcDogMC40cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19tZXRhIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMDhyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjk1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjQycmVtIDAuNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWN0YV9fbWV0YSBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjYycmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19tZXRhIHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjQ1cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDEwcmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19yaXZhbCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNDVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19yaXZhbCA+IC5jaGVzc2ltYWxzLWJvdC1hdmF0YXIge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMi4xNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAyLjE1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjlyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xNCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4xMnJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWN0YV9fcml2YWwgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjA4cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jdGFfX3JpdmFsIHN0cm9uZyB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtdmlldyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC44NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYmFjay1saW5rIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBzdGFydDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwLjQ1cmVtIDAuNzJyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1iYWNrIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC4xNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuOXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjM0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4zNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE4KSwgdHJhbnNwYXJlbnQgNTQlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCB2YXIoLS1jaGVzc2ltYWxzLWdsYXNzLWhpZ2hsaWdodCksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxcmVtIDIuMnJlbSByZ2JhKDc5LCA1OCwgMzUsIDAuMTIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZC0tZGVkaWNhdGVkIHtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWhlcm8sXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtZm9jdXMsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc2Vjb25kYXJ5IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMS4xZnIpIG1pbm1heCgxNHJlbSwgMC45ZnIpO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZF9fY29weSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4yOHJlbTtcbiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZF9fY29weSBzcGFuLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnkgc21hbGwsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcm91dGUgc21hbGwsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcGFuZWxfX2hlYWRpbmcgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1za3kpO1xuICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkIGgyIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDEuMjVyZW0sIDMuNXZ3LCAxLjlyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmQgcCxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5IHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzgwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4zNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX3N0YXRzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBnYXA6IDAuN3JlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xOCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMTI1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjdyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwtLWZlYXR1cmUge1xuICAgICAgICBtaW4taGVpZ2h0OiA4cmVtO1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4yOCk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE0KSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwgPiAuY2hlc3NpbWFscy1ib3QtYXZhdGFyIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDNyZW07XG4gICAgICAgIGhlaWdodDogM3JlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGZvbnQtc2l6ZTogMS40NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsIGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xNHJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwgc21hbGwsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaGlzdG9yeSBzbWFsbCxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5X19zdGF0cyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbCBwIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjg0cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwgZW0ge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42OHJlbTtcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC0tbmV4dCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMDgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZF9fc3RhdHMgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xNnJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNTVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZF9fc3RhdHMgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX3N0YXRzIHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkX19hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkX19hY3Rpb25zLS1oZXJvIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvdXRlLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhbmVsIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4xMjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3V0ZSA+IGRpdjpmaXJzdC1jaGlsZCxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1wYW5lbF9faGVhZGluZyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgZ2FwOiAwLjRyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcm91dGUgPiBkaXY6Zmlyc3QtY2hpbGQgPiBzcGFuIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzZyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1wYXRoIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgICAgIGdhcDogMC40cmVtO1xuICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgICBwYWRkaW5nLWJsb2NrOiAwLjFyZW07XG4gICAgICAgIHNjcm9sbGJhci13aWR0aDogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhdGg6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhdGggc3BhbiB7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMi4xNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAyLjE1cmVtO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE4KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc3Ryb25nKTtcbiAgICAgICAgZm9udC1zaXplOiAxLjA4cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcGF0aCBpbWcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICAtd2Via2l0LXVzZXItZHJhZzogbm9uZTtcbiAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhdGggc3Bhbi5pcy1jbGVhcmVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLXJnYiwgNDUsIDIxMSwgMTExKSwgMC4zNCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjE2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhdGggc3Bhbi5pcy1jdXJyZW50IHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuNDgpO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTgpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjEyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhdGggc3Bhbi5pcy1maW5hbCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1pb24tY29sb3Itd2FybmluZy1yZ2IsIDI1NSwgMTk2LCA5KSwgMC40OCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3N0ZXIge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC40cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcm9zdGVyIGFydGljbGUge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBnYXA6IDAuNHJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC40OHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0KTtcbiAgICAgICAgb3BhY2l0eTogMC43ODtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBhcnRpY2xlLmlzLWNsZWFyZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjI2KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLXJnYiwgNDUsIDIxMSwgMTExKSwgMC4xKSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdCk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3N0ZXIgYXJ0aWNsZS5pcy1jdXJyZW50IHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMzgpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xNiksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBhcnRpY2xlLmlzLWZpbmFsIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci13YXJuaW5nLXJnYiwgMjU1LCAxOTYsIDkpLCAwLjM0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBhcnRpY2xlID4gLmNoZXNzaW1hbHMtYm90LWF2YXRhciB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAycmVtO1xuICAgICAgICBoZWlnaHQ6IDJyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuODVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBhcnRpY2xlLmlzLWN1cnJlbnQgPiAuY2hlc3NpbWFscy1ib3QtYXZhdGFyIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE4KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMDhyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBzbWFsbCxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3N0ZXIgZW0ge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42MnJlbTtcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3N0ZXIgc3Ryb25nIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA4O1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBwIHtcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MjA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE4O1xuICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcik7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtbW9kZS13aW5yYXRlcyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcik7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtbW9kZS13aW5yYXRlcyA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuNDhyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4wOCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUtd2lucmF0ZXMgc21hbGwge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUtd2lucmF0ZXMgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUtd2lucmF0ZXMgZW0ge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42OHJlbTtcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICBmb250LXdlaWdodDogODUwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWNoaWV2ZW1lbnRzID4gc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgZ2FwOiAwLjQ1cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdCk7XG4gICAgICAgIG9wYWNpdHk6IDAuNjg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cyA+IHNwYW4uaXMtdW5sb2NrZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4zKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTQpLCB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkKSk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cyBiIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDEuOXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxLjlyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cyAuaXMtdW5sb2NrZWQgYiB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtc2t5KTtcbiAgICAgICAgY29sb3I6ICNmZmZhZjA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cyBzcGFuIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMDZyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWNoaWV2ZW1lbnRzIHN0cm9uZyxcbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cyBzbWFsbCB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hY2hpZXZlbWVudHMgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY3cmVtO1xuICAgICAgICBmb250LXdlaWdodDogODUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zZWNvbmRhcnktLWNvbXBhY3Qge1xuICAgICAgICBtaW4taGVpZ2h0OiAyLjQ1cmVtO1xuICAgICAgICBwYWRkaW5nLWJsb2NrOiAwLjQ1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWN0YSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcikgYXV0bztcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMjYpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjI1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjc1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xMyksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zdW4tcmdiKSwgMC4wOCkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtY3RhIGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xOHJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWN0YSBzcGFuLFxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oZXJvIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtc2t5KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWN0YSBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWN0YV9fYWN0aW9uIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBlbmQ7XG4gICAgICAgIHdpZHRoOiBtaW4oMTJyZW0sIDEwMCUpO1xuICAgICAgICBtaW4td2lkdGg6IDkuNXJlbTtcbiAgICAgICAgcGFkZGluZy1pbmxpbmU6IDEuMXJlbTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC12aWV3IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjg1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWhlcm8ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gbWlubWF4KDAsIDFmcikgYXV0bztcbiAgICAgICAgZ2FwOiAwLjhyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4yNik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuODVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA4OCUgMTAlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc3VuLXJnYiksIDAuMTgpLCB0cmFuc3BhcmVudCAzNCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xNCksIHRyYW5zcGFyZW50IDYyJSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oZXJvX19hcnQge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IGNsYW1wKDUuMnJlbSwgMTV2dywgNy41cmVtKTtcbiAgICAgICAgaGVpZ2h0OiBjbGFtcCg1LjJyZW0sIDE1dncsIDcuNXJlbSk7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAgLXdlYmtpdC11c2VyLWRyYWc6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtaGVybyA+IGRpdjpub3QoLmNoZXNzaW1hbHMtcGF0aC1oZXJvX19tZWRhbCkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMjVyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oZXJvIGgyIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjdyZW0sIDR2dywgMi4zNXJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oZXJvIHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogODIwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4zNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oZXJvX19tZWRhbCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiA2LjVyZW07XG4gICAgICAgIG1pbi1oZWlnaHQ6IDYuNXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDE4MGRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXN1bi1yZ2IpLCAwLjIpLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTEpKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxNnB4IDI4cHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNoYWRvdy1yZ2IpLCAwLjEyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oZXJvX19tZWRhbCBpbWcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDNyZW07XG4gICAgICAgIGhlaWdodDogM3JlbTtcbiAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICAtd2Via2l0LXVzZXItZHJhZzogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oZXJvX19tZWRhbCBzcGFuIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS42NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWhlcm9fX21lZGFsIGIge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oaWdobGlnaHRzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuNjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtaGlnaGxpZ2h0cyBhcnRpY2xlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBnYXA6IDAuNjVyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgbWluLWhlaWdodDogNy41cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEzKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTIlIDQlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc3VuLXJnYiksIDAuMTgpLCB0cmFuc3BhcmVudCA0MiUpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtaGlnaGxpZ2h0cyBpbWcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDQuMjVyZW07XG4gICAgICAgIGhlaWdodDogNC4yNXJlbTtcbiAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICAtd2Via2l0LXVzZXItZHJhZzogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oaWdobGlnaHRzIGFydGljbGUgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBnYXA6IDAuMTJyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtaGlnaGxpZ2h0cyBzbWFsbCB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXNreSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtaGlnaGxpZ2h0cyBzdHJvbmcge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxLjA4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDY7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWhpZ2hsaWdodHMgc3BhbiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogODIwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yNDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1yaW5ncyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjZyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtcmluZyxcbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtcGFuZWwsXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLXN0YXRzIHNwYW4sXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWJhcnMgc3BhbiB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTMpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLXJpbmcge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gbWlubWF4KDAsIDFmcik7XG4gICAgICAgIGdhcDogMC41NXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMC42NXJlbTtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1yaW5nID4gZGl2IHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMy4zNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAzLjM1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogY29uaWMtZ3JhZGllbnQodmFyKC0tY2hlc3NpbWFscy1za3kpIHZhcigtLXJpbmctcHJvZ3Jlc3MpLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKSAwKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1yaW5nID4gZGl2OjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDAuMzRyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQpO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1yaW5nIHN0cm9uZyB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtcmluZyBzcGFuLFxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1iYXJzIGIge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLXJpbmcgc3BhbixcbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtcmluZyBzbWFsbCB7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1yaW5nIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNjhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MjA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWdyaWQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxLjA1ZnIpIG1pbm1heCgwLCAwLjk1ZnIpO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtcGFuZWwge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuNjVyZW07XG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IHN0YXJ0O1xuICAgICAgICBwYWRkaW5nOiAwLjc1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLXBhbmVsLS13aWRlIHtcbiAgICAgICAgZ3JpZC1jb2x1bW46IDEgLyAtMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1zdGF0cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtc3RhdHMgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4wOHJlbTtcbiAgICAgICAgcGFkZGluZzogMC42cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLXN0YXRzIHNtYWxsIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNjZyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLXN0YXRzIHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWJhcnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtYmFycyBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMC45ZnIpIG1pbm1heCgzcmVtLCAxZnIpIGF1dG87XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMC40OHJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1iYXJzIGkge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAwLjQ4cmVtO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtYmFycyBpOjpiZWZvcmUge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IHZhcigtLWJhci1wcm9ncmVzcyk7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB2YXIoLS1jaGVzc2ltYWxzLXNreSksIHZhcigtLWNoZXNzaW1hbHMtc3VuKSk7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWJhcnMgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cy0tcGF0aCB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaGlzdG9yeS0tcGF0aCB7XG4gICAgICAgIGJvcmRlci10b3A6IDA7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcm9ncmVzc19faGVhZGluZyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXNreSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDhlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcHJvZ3Jlc3NfX2hlYWRpbmcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogMC4zNXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXByb2dyZXNzX19oZWFkaW5nIHNwYW4ge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWhpc3Rvcnkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMzVyZW07XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgcGFkZGluZy10b3A6IDAuMnJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWhpc3Rvcnkgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgZ2FwOiAwLjM1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWhpc3RvcnkgYiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuNnJlbTtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnkuaXMtdmljdG9yeSxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5LmlzLWRlZmVhdCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9faGVybyxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC12b2ljZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjdyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5X19oZXJvID4gLmNoZXNzaW1hbHMtYm90LWF2YXRhcixcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC12b2ljZSA+IC5jaGVzc2ltYWxzLWJvdC1hdmF0YXIge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAzcmVtO1xuICAgICAgICBoZWlnaHQ6IDNyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xNik7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41NXJlbTtcbiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9faGVyby5pcy1jbGVhcmVkID4gLmNoZXNzaW1hbHMtYm90LWF2YXRhciBpbWcge1xuICAgICAgICBmaWx0ZXI6IGdyYXlzY2FsZSgxKSBzYXR1cmF0ZSgwLjE1KSBjb250cmFzdCgwLjk1KTtcbiAgICAgICAgb3BhY2l0eTogMC42MjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX2hlcm8uaXMtY2xlYXJlZCA+IC5jaGVzc2ltYWxzLWJvdC1hdmF0YXI6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJ+Kckyc7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IC0wLjA1cmVtO1xuICAgICAgICBib3R0b206IC0wLjA1cmVtO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMS4yNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxLjI1cmVtO1xuICAgICAgICBib3JkZXI6IDAuMTJyZW0gc29saWQgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc0cmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5X19oZXJvIGRpdixcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC12b2ljZSBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMTJyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX2hlcm8gc21hbGwsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwtdm9pY2Ugc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnkgc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX2hlcm8gcCxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC12b2ljZSBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC12b2ljZSB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjk1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjY1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9fYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5X19wbGF5IHtcbiAgICAgICAgbWluLWhlaWdodDogMy4zNXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAxLjAycmVtO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAuOXJlbSAxLjhyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdC5pcy1jaGFsbGVuZ2UtcmVzdWx0IC5jaGVzc2ltYWxzLWNoYWxsZW5nZS10ZW5zaW9uLFxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0LmlzLWNoYWxsZW5nZS1yZXN1bHQgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsLS1uZXh0IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjQ1cmVtIDAuNnJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4wNyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdC5pcy1jaGFsbGVuZ2UtcmVzdWx0IC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC0tbmV4dCB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjdyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjY1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xMiksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0LmlzLWNoYWxsZW5nZS1yZXN1bHQgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsLS1uZXh0ID4gLmNoZXNzaW1hbHMtYm90LWF2YXRhciB7XG4gICAgICAgIHdpZHRoOiAzLjRyZW07XG4gICAgICAgIGhlaWdodDogMy40cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc3Ryb25nKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAxcHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNCksXG4gICAgICAgICAgMCAwLjQ1cmVtIDFyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0LmlzLWNoYWxsZW5nZS1yZXN1bHQgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsLS1uZXh0IHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdC5pcy1jaGFsbGVuZ2UtcmVzdWx0IC5jaGVzc2ltYWxzLWNoYWxsZW5nZS10ZW5zaW9uLmlzLWNyaXRpY2FsIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjEpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwtdm9pY2UgPiAuY2hlc3NpbWFscy1ib3QtYXZhdGFyIHtcbiAgICAgICAgd2lkdGg6IDIuMzVyZW07XG4gICAgICAgIGhlaWdodDogMi4zNXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4xNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX3N0YXRzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yZWNvcmQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4zNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwLjQ1cmVtIDAuNjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xNCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcmVjb3JkIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMS40NXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxLjQ1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1za3kpO1xuICAgICAgICBjb2xvcjogI2ZmZmFmMDtcbiAgICAgICAgZm9udC1zaXplOiAwLjgycmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcmVjb3JkIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtdGVuc2lvbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMyk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuOXJlbTtcbiAgICAgICAgcGFkZGluZzogMC42NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTYpLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA4KSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS10ZW5zaW9uLmlzLWNyaXRpY2FsIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuMzgpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC4xNiksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMDgpKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXRlbnNpb24gPiBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDIuMjVyZW07XG4gICAgICAgIGhlaWdodDogMi4yNXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xOCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtdGVuc2lvbi5pcy1jcml0aWNhbCA+IHNwYW4ge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuMTgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtdGVuc2lvbiBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMTRyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXRlbnNpb24gc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtdGVuc2lvbiBwIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjg0cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9fc3RhdHMgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xcmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC44cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjQ1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX3N0YXRzIGIge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsLS1uZXh0IGVtIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjU7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXRpcCBwLFxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHAge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWxlYXJuLW1vcmUge1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IHN0YXJ0O1xuICAgICAgICBtaW4taGVpZ2h0OiAyLjc1cmVtO1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwIDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAuNzVyZW0gMS42cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaXplLFxuICAgICAgLmNoZXNzaW1hbHMtbW9kZSxcbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjYyNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHtcbiAgICAgICAgb3JkZXI6IDM7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2l6ZSBidXR0b24sXG4gICAgICAuY2hlc3NpbWFscy1tb2RlIGJ1dHRvbixcbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMnJlbTtcbiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDMuODc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjU1cmVtIDAuNjVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaXplIGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1tb2RlIGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEzKSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1c19fdGltZXIge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGlzb2xhdGlvbjogaXNvbGF0ZTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjQyKSAhaW1wb3J0YW50O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXNfX3RpbWVyOjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogYXV0byAwIDA7XG4gICAgICAgIHotaW5kZXg6IDA7XG4gICAgICAgIGhlaWdodDogMC4yMnJlbTtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgodmFyKC0tdGltZXItcHJvZ3Jlc3MsIDEpKTtcbiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBjZW50ZXI7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAxODBtcyBsaW5lYXIsIGJhY2tncm91bmQgMTgwbXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzX190aW1lci5pcy1sb3cge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC41OCkgIWltcG9ydGFudDtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuMTYpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCkgIWltcG9ydGFudDtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXR1cm4tcHVsc2UgODIwbXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1c19fdGltZXIuaXMtbG93OjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjZWI0NDVhKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzX190aW1lci5pcy1sb3cgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIsICNlYjQ0NWEpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXNfX3Njb3JlLmlzLXBvcCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjQyKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTYpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1zY29yZS1wdWxzZSA2MjBtcyBlYXNlLW91dCBib3RoO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXNfX3RpbWVyIHNtYWxsLFxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzX190aW1lciBzdHJvbmcge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlIHtcbiAgICAgICAgb3JkZXI6IDQ7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDEuMWZyKSBtaW5tYXgoMCwgMS4zNWZyKTtcbiAgICAgICAgZ2FwOiAwLjY1cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjI4KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBwYWRkaW5nOiAwLjY4cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xMyksIHRyYW5zcGFyZW50IDUyJSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19yaXZhbCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19yaXZhbCA+IC5jaGVzc2ltYWxzLWJvdC1hdmF0YXIge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMi43cmVtO1xuICAgICAgICBoZWlnaHQ6IDIuN3JlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTYpO1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4zNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX3JpdmFsIGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4wOHJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fcml2YWwgc21hbGwsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fbWV0cmljcyBzbWFsbCB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY0cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19yaXZhbCBzdHJvbmcge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDU7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fcml2YWwgcCB7XG4gICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogODIwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xODtcbiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fbWV0cmljcyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjQycmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fbWV0cmljcyBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjFyZW07XG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBtaW4taGVpZ2h0OiAzcmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBwYWRkaW5nOiAwLjRyZW0gMC40NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX21ldHJpY3MgYiB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDAuOTJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wNTtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS10ZW5zaW9uLS1saXZlIHtcbiAgICAgICAgZ3JpZC1jb2x1bW46IDEgLyAtMTtcbiAgICAgICAgcGFkZGluZzogMC41NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtZGlmZmljdWx0eSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1kaWZmaWN1bHR5IGJ1dHRvbiB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDIuNzVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAgMXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1kaWZmaWN1bHR5IGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdHMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDkuNXJlbSwgMWZyKSk7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdHMgYnV0dG9uIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmcjtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczpcbiAgICAgICAgICAnYXZhdGFyIHRpdGxlJ1xuICAgICAgICAgICdhdmF0YXIgYm9keSdcbiAgICAgICAgICAnYXZhdGFyIHRlbmRlbmN5JztcbiAgICAgICAgY29sdW1uLWdhcDogMC41NXJlbTtcbiAgICAgICAgcm93LWdhcDogMC4xMnJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBtaW4taGVpZ2h0OiA0Ljc1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90cyBidXR0b24gPiAuY2hlc3NpbWFscy1ib3QtYXZhdGFyIHtcbiAgICAgICAgZ3JpZC1hcmVhOiBhdmF0YXI7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAyLjFyZW07XG4gICAgICAgIGhlaWdodDogMi4xcmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgICBmb250LXNpemU6IDEuMnJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90cyBidXR0b24gc3Ryb25nIHtcbiAgICAgICAgZ3JpZC1hcmVhOiB0aXRsZTtcbiAgICAgICAgYWxpZ24tc2VsZjogZW5kO1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdHMgYnV0dG9uIHNtYWxsIHtcbiAgICAgICAgZ3JpZC1hcmVhOiBib2R5O1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDc1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdHMgYnV0dG9uIHAge1xuICAgICAgICBncmlkLWFyZWE6IHRlbmRlbmN5O1xuICAgICAgICBtYXJnaW46IDAuMTJyZW0gMCAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdHMgYnV0dG9uLmlzLXNlbGVjdGVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTMpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAgMnB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTYpLFxuICAgICAgICAgIDAgMC43NXJlbSAxLjVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2l6ZSBzdHJvbmcsXG4gICAgICAuY2hlc3NpbWFscy1tb2RlIHN0cm9uZyxcbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyBzdHJvbmcsXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHQgc3Ryb25nLFxuICAgICAgLmNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXMgc3Ryb25nLFxuICAgICAgLmNoZXNzaW1hbHMtdGlwIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyBzdHJvbmcge1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMC45NXJlbSwgMi41dncsIDEuMnJlbSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA4O1xuICAgICAgICBvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2l6ZSBzbWFsbCxcbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUgc21hbGwsXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXMgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLXdyYXAge1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9hcmQtcmFkaXVzOiBtaW4oMC44NXJlbSwgMTRweCk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmc6IDAuMjVyZW0gMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtd3JhcC5pcy1vcmllbnRpbmcgLmNoZXNzaW1hbHMtYm9hcmQtZnJhbWUge1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtb3JpZW50LWJvYXJkIDMyMG1zIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLXdyYXAuaXMtZmluaXNoZWQge1xuICAgICAgICBvdmVyZmxvdy14OiB2aXNpYmxlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1mcmFtZSB7XG4gICAgICAgIGZsZXg6IDAgMSA1OHJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWF4LXdpZHRoOiA1OHJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tY2hlc3NpbWFscy1ib2FyZC1yYWRpdXMpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQodmFyKC0tYm9hcmQtc2l6ZSksIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiByZXBlYXQodmFyKC0tYm9hcmQtc2l6ZSksIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYXNwZWN0LXJhdGlvOiAxIC8gMTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgaXNvbGF0aW9uOiBpc29sYXRlO1xuICAgICAgICBjb250YWluOiBwYWludDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1jaGVzc2ltYWxzLWJvYXJkLXJhZGl1cyk7XG4gICAgICAgIGNsaXAtcGF0aDogaW5zZXQoMCByb3VuZCB2YXIoLS1jaGVzc2ltYWxzLWJvYXJkLXJhZGl1cykpO1xuICAgICAgICAtd2Via2l0LW1hc2staW1hZ2U6IC13ZWJraXQtcmFkaWFsLWdyYWRpZW50KHdoaXRlLCBibGFjayk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgMTYlIDE4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjM0KSwgdHJhbnNwYXJlbnQgMTglKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCA4MiUgNzglLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEpLCB0cmFuc3BhcmVudCAyMiUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDMyJSA2OCUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zdG9uZS1yZ2IpLCAwLjA1KSwgdHJhbnNwYXJlbnQgMzAlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCA2NiUgMzQlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpLCB0cmFuc3BhcmVudCAyNCUpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpLFxuICAgICAgICAgIDAgMC44NXJlbSAyLjFyZW0gdmFyKC0tY2hlc3NpbWFscy1ib2FyZC1zaGFkb3cpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC13cmFwLmlzLXN5bmNpbmcgLmNoZXNzaW1hbHMtYm9hcmQge1xuICAgICAgICBjdXJzb3I6IHdhaXQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgei1pbmRleDogNTtcbiAgICAgICAgY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKSA3OCUsIHZhcigtLWNoZXNzaW1hbHMtdGV4dCkpO1xuICAgICAgICBmb250LXNpemU6IDAuNjhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZS0tcmFuayB7XG4gICAgICAgIHRvcDogMC4ycmVtO1xuICAgICAgICBsZWZ0OiAwLjI0cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLWNvb3JkaW5hdGUtLWZpbGUge1xuICAgICAgICByaWdodDogMC4yNHJlbTtcbiAgICAgICAgYm90dG9tOiAwLjE4cmVtO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtb3JpZW50LWJvYXJkIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuNzI7XG4gICAgICAgICAgZmlsdGVyOiBibHVyKDAuMDZyZW0pO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45ODUpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTIlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjkyO1xuICAgICAgICAgIGZpbHRlcjogYmx1cigwKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDEyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgZmlsdGVyOiBibHVyKDApO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VudGVyLWxpbmUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGJvcmRlci10b3A6IDAuMDhyZW0gZGFzaGVkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuNTYpO1xuICAgICAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMCAwLjI0cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjYpKTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgei1pbmRleDogNTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIC0tdHJhaWwtY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjg4KTtcbiAgICAgICAgLS10cmFpbC1nbG93OiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC40OCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmlzLWNhcHR1cmUge1xuICAgICAgICAtLXRyYWlsLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjg2KTtcbiAgICAgICAgLS10cmFpbC1nbG93OiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjQ2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuZWZmZWN0LWVhZ2xlIHtcbiAgICAgICAgLS10cmFpbC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkyKTtcbiAgICAgICAgLS10cmFpbC1nbG93OiByZ2JhKDEyMCwgMjEwLCAyNTUsIDAuNTQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci10cmFpbC5lZmZlY3QtYnVsbCB7XG4gICAgICAgIC0tdHJhaWwtY29sb3I6IHJnYmEoMTg4LCAxMzEsIDc2LCAwLjg2KTtcbiAgICAgICAgLS10cmFpbC1nbG93OiByZ2JhKDE4OCwgMTMxLCA3NiwgMC4zNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmVmZmVjdC1rYW5nYXJvbyB7XG4gICAgICAgIC0tdHJhaWwtY29sb3I6IHJnYmEoMTc0LCAxMjQsIDI1NSwgMC44Nik7XG4gICAgICAgIC0tdHJhaWwtZ2xvdzogcmdiYSgxNzQsIDEyNCwgMjU1LCAwLjQyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuZWZmZWN0LWxpb24ge1xuICAgICAgICAtLXRyYWlsLWNvbG9yOiByZ2JhKDI1NSwgMjIxLCAxMjAsIDAuODgpO1xuICAgICAgICAtLXRyYWlsLWdsb3c6IHJnYmEoMjU1LCAxOTAsIDU2LCAwLjQyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwgPiBzcGFuIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IHZhcigtLXRyYWlsLXkpO1xuICAgICAgICBsZWZ0OiB2YXIoLS10cmFpbC14KTtcbiAgICAgICAgd2lkdGg6IHZhcigtLXRyYWlsLWxlbmd0aCk7XG4gICAgICAgIGhlaWdodDogMC40NXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHZhcigtLXRyYWlsLWNvbG9yKSA0MiUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45MikpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwLjc1cmVtIHZhcigtLXRyYWlsLWdsb3cpLFxuICAgICAgICAgIDAgMCAxLjQ1cmVtIHZhcigtLXRyYWlsLWdsb3cpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDApO1xuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDUwJTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXBvd2VyLXRyYWlsIDcyMG1zIGVhc2Utb3V0IGJvdGg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmVmZmVjdC1lYWdsZSA+IHNwYW4ge1xuICAgICAgICBoZWlnaHQ6IDAuMjhyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk1KSA0NCUsIHJnYmEoMTIwLCAyMTAsIDI1NSwgMC41OCkpLFxuICAgICAgICAgIHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50IDAgMC43cmVtLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjYpIDAuN3JlbSAwLjkycmVtKTtcbiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGNoZXNzaW1hbHMtZWFnbGUtdHJhaWw7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmVmZmVjdC1idWxsID4gc3BhbiB7XG4gICAgICAgIGhlaWdodDogMC43MnJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDkwZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDIpIDAgMC4xOHJlbSwgdHJhbnNwYXJlbnQgMC4xOHJlbSAwLjQycmVtKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCB2YXIoLS10cmFpbC1jb2xvciksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44NikpO1xuICAgICAgICBhbmltYXRpb24tbmFtZTogY2hlc3NpbWFscy1idWxsLXRyYWlsO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci10cmFpbC5lZmZlY3Qta2FuZ2Fyb28gPiBzcGFuIHtcbiAgICAgICAgaGVpZ2h0OiAxcmVtO1xuICAgICAgICBib3JkZXItdG9wOiAwLjE2cmVtIGRhc2hlZCB2YXIoLS10cmFpbC1jb2xvcik7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMCAwLjhyZW0gdmFyKC0tdHJhaWwtZ2xvdykpO1xuICAgICAgICBhbmltYXRpb24tbmFtZTogY2hlc3NpbWFscy1rYW5nYXJvby10cmFpbDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuZWZmZWN0LWxpb24gPiBzcGFuIHtcbiAgICAgICAgaGVpZ2h0OiAwLjYycmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHZhcigtLXRyYWlsLWNvbG9yKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgyKSksXG4gICAgICAgICAgcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgxMTVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41NSkgMCAwLjEycmVtLCB0cmFuc3BhcmVudCAwLjEycmVtIDAuMzRyZW0pO1xuICAgICAgICBhbmltYXRpb24tbmFtZTogY2hlc3NpbWFscy1saW9uLXRyYWlsO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtcG93ZXItdHJhaWwge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDApO1xuICAgICAgICB9XG5cbiAgICAgICAgMjglIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMC43Mik7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWVhZ2xlLXRyYWlsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwKSBza2V3WCgtMTBkZWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMzAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMC44Mikgc2tld1goLTEwZGVnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgxLjA1KSBza2V3WCgtMTBkZWcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1idWxsLXRyYWlsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwKSBzY2FsZVkoMSk7XG4gICAgICAgIH1cblxuICAgICAgICAzOCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwLjcpIHNjYWxlWSgxLjE4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgxKSBzY2FsZVkoMC44Mik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWthbmdhcm9vLXRyYWlsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0wLjRyZW0pIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDM0JSB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEuMnJlbSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDAuNjIpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1saW9uLXRyYWlsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgZmlsdGVyOiBzYXR1cmF0ZSgxKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDApO1xuICAgICAgICB9XG5cbiAgICAgICAgMzYlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIGZpbHRlcjogc2F0dXJhdGUoMS40KTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDAuNzYpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICBmaWx0ZXI6IHNhdHVyYXRlKDEuMSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtc2NvcmUtcHVsc2Uge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApIHNjYWxlKDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgNDIlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCkgc2NhbGUoMS4wMzUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRybyB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDA7XG4gICAgICAgIHotaW5kZXg6IDc7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IGNsYW1wKDAuNzVyZW0sIDR2dywgMS4zNXJlbSk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgMzYlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMjQpLCB0cmFuc3BhcmVudCAzNCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjAsIDEyLCAyMiwgMC40OCksIHJnYmEoOCwgMTgsIDEzLCAwLjM0KSk7XG4gICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxLjVweCk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm8taW4gMjYwbXMgZWFzZS1vdXQgYm90aDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19jYXJkIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAganVzdGlmeS1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNTVyZW07XG4gICAgICAgIHdpZHRoOiBtaW4oMThyZW0sIDkyJSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4zNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgcGFkZGluZzogMC44NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTQpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zdHJvbmcpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDEuMXJlbSAyLjNyZW0gcmdiYSgwLCAwLCAwLCAwLjI0KSxcbiAgICAgICAgICBpbnNldCAwIDAgMCAxcHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4wOCk7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19hdmF0YXIge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogNHJlbTtcbiAgICAgICAgaGVpZ2h0OiA0cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzNSUgMjQlLCB2YXIoLS1jaGVzc2ltYWxzLWdsYXNzLWhpZ2hsaWdodCksIHRyYW5zcGFyZW50IDMwJSksXG4gICAgICAgICAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE2KTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAxcHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNiksXG4gICAgICAgICAgMCAwLjdyZW0gMS41cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xOCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMi4xNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19jb3B5IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjE0cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fY29weSBzbWFsbCxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fZmFjdHMgc21hbGwge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2NvcHkgc3Ryb25nIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4zNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA0O1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19jb3B5IHAge1xuICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjQ7XG4gICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19mYWN0cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjRyZW07XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2ZhY3RzIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMXJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBwYWRkaW5nOiAwLjM4cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2ZhY3RzIGIge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRybyAuY2hlc3NpbWFscy1wcmltYXJ5IHtcbiAgICAgICAgbWluLWhlaWdodDogMi40NXJlbTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm8taW4ge1xuICAgICAgICBmcm9tIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgdG8ge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDA7XG4gICAgICAgIHotaW5kZXg6IDg7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDEuMjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgMzQlLCByZ2JhKDI1NSwgMjI2LCAxMjksIDAuMzQpLCB0cmFuc3BhcmVudCAyNCUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUyJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4zNCksIHRyYW5zcGFyZW50IDQyJSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgyMCwgMTIsIDIyLCAwLjg4KSwgcmdiYSg4LCAxOCwgMTMsIDAuNzgpKTtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDJweCk7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkuaXMtZGVmZWF0IHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSAzNCUsIHJnYmEoMTQzLCAxNjgsIDIwNiwgMC4yNiksIHRyYW5zcGFyZW50IDI0JSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTIlLCByZ2JhKDcyLCA4NiwgMTE1LCAwLjQyKSwgdHJhbnNwYXJlbnQgNDIlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDksIDEyLCAyMCwgMC45KSwgcmdiYSgyOCwgMzAsIDQzLCAwLjgpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheTo6YmVmb3JlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDIwJSAzMCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41OCkgMCAwLjA4cmVtLCB0cmFuc3BhcmVudCAwLjFyZW0pLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNzUlIDI1JSwgcmdiYSgyNTUsIDIyNiwgMTI5LCAwLjcpIDAgMC4xcmVtLCB0cmFuc3BhcmVudCAwLjEycmVtKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDY4JSA3MiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuNTQpIDAgMC4wOHJlbSwgdHJhbnNwYXJlbnQgMC4xcmVtKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDM1JSA3OCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40OCkgMCAwLjA3cmVtLCB0cmFuc3BhcmVudCAwLjA5cmVtKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDg0JSA2NiUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zOCkgMCAwLjA2cmVtLCB0cmFuc3BhcmVudCAwLjA4cmVtKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE0JSA2NCUsIHJnYmEoMjU1LCAyMjYsIDEyOSwgMC40OCkgMCAwLjA3cmVtLCB0cmFuc3BhcmVudCAwLjA5cmVtKTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIG9wYWNpdHk6IDAuNzI7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy12aWN0b3J5LXNwYXJrcyAxLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19yYXlzIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogLTE4JTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBjb25pYy1ncmFkaWVudChcbiAgICAgICAgICAgIGZyb20gOGRlZyxcbiAgICAgICAgICAgIHRyYW5zcGFyZW50IDAgN2RlZyxcbiAgICAgICAgICAgIHJnYmEoMjU1LCAyMjYsIDEyOSwgMC4xNikgN2RlZyAxMWRlZyxcbiAgICAgICAgICAgIHRyYW5zcGFyZW50IDExZGVnIDIyZGVnXG4gICAgICAgICAgKTtcbiAgICAgICAgb3BhY2l0eTogMC44NTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLWZpbmFsZS1yYXlzIDhzIGxpbmVhciBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheS5pcy1kZWZlYXQgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmF5cyB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgY29uaWMtZ3JhZGllbnQoXG4gICAgICAgICAgICBmcm9tIDhkZWcsXG4gICAgICAgICAgICB0cmFuc3BhcmVudCAwIDhkZWcsXG4gICAgICAgICAgICByZ2JhKDE4MCwgMjA0LCAyNDAsIDAuMSkgOGRlZyAxMmRlZyxcbiAgICAgICAgICAgIHRyYW5zcGFyZW50IDEyZGVnIDI0ZGVnXG4gICAgICAgICAgKTtcbiAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAxMnM7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JpYmJvbiB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAtMjAlO1xuICAgICAgICB3aWR0aDogMC40MnJlbTtcbiAgICAgICAgaGVpZ2h0OiA1NCU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCB0cmFuc3BhcmVudCwgcmdiYSgyNTUsIDIyNiwgMTI5LCAwLjcyKSwgdHJhbnNwYXJlbnQpO1xuICAgICAgICBvcGFjaXR5OiAwLjc7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKHZhcigtLXJpYmJvbi1hbmdsZSwgMTJkZWcpKTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLWZpbmFsZS1yaWJib24gMi41cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheS5pcy1kZWZlYXQgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmliYm9uIHtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgdHJhbnNwYXJlbnQsIHJnYmEoMTgwLCAyMDQsIDI0MCwgMC40MiksIHRyYW5zcGFyZW50KTtcbiAgICAgICAgb3BhY2l0eTogMC40ODtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmliYm9uLnJpYmJvbi1hIHtcbiAgICAgICAgbGVmdDogMTglO1xuICAgICAgICAtLXJpYmJvbi1hbmdsZTogLTE4ZGVnO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19yaWJib24ucmliYm9uLWIge1xuICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgIC0tcmliYm9uLWFuZ2xlOiA4ZGVnO1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDMyMG1zO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19yaWJib24ucmliYm9uLWMge1xuICAgICAgICByaWdodDogMTglO1xuICAgICAgICAtLXJpYmJvbi1hbmdsZTogMjBkZWc7XG4gICAgICAgIGFuaW1hdGlvbi1kZWxheTogNjQwbXM7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkgPiAqIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IHNwYW4ge1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuMzJyZW0gMC43cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpO1xuICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpO1xuICAgICAgICBmb250LXNpemU6IDAuNzZyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkgc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjY1cmVtLCA4dncsIDNyZW0pO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgdGV4dC1zaGFkb3c6IDAgMCAxLjI1cmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkgZW0ge1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IGNlbnRlcjtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IGNsYW1wKDNyZW0sIDE0dncsIDQuNnJlbSk7XG4gICAgICAgIGhlaWdodDogY2xhbXAoM3JlbSwgMTR2dywgNC42cmVtKTtcbiAgICAgICAgYm9yZGVyOiAwLjE2cmVtIHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42Mik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDM1JSAyNSUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43MiksIHRyYW5zcGFyZW50IDE4JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2ZmZTI4MSwgI2I5ODQzNik7XG4gICAgICAgIGNvbG9yOiAjMmQyNDEyO1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDEuMXJlbSwgNXZ3LCAxLjY1cmVtKTtcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwIDAuNDVyZW0gcmdiYSgyNTUsIDIyNiwgMTI5LCAwLjEyKSxcbiAgICAgICAgICAwIDFyZW0gMnJlbSByZ2JhKDAsIDAsIDAsIDAuMjYpO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtZmluYWxlLW1lZGFsIDEuOHMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkuaXMtZGVmZWF0IGVtIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDM1JSAyNSUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40OCksIHRyYW5zcGFyZW50IDE4JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2Q5ZTJlZiwgIzY5NzU4ZSk7XG4gICAgICAgIGNvbG9yOiAjMTgyMDMyO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwIDAuNDVyZW0gcmdiYSgxODAsIDIwNCwgMjQwLCAwLjEpLFxuICAgICAgICAgIDAgMXJlbSAycmVtIHJnYmEoMCwgMCwgMCwgMC4zMik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkgZW0uaGFzLWF2YXRhciB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkgZW0uaGFzLWF2YXRhciBpbWcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkgYiB7XG4gICAgICAgIGp1c3RpZnktc2VsZjogY2VudGVyO1xuICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpO1xuICAgICAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDhlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheSBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODIpO1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDAuOXJlbSwgM3Z3LCAxLjFyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogODAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19zdGF0cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjM1cmVtO1xuICAgICAgICB3aWR0aDogbWluKDI2cmVtLCA5MiUpO1xuICAgICAgICBtYXJnaW46IDAuMnJlbSBhdXRvIDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3N0YXRzIGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4wOHJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjQycmVtIDAuNDZyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTtcbiAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDNweCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3N0YXRzIGR0LFxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fc3RhdHMgZGQge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19zdGF0cyBkdCB7XG4gICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjgpO1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDAuNTJyZW0sIDIuMXZ3LCAwLjY2cmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fc3RhdHMgZGQge1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgwLjY4cmVtLCAyLjh2dywgMC44OHJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy12aWN0b3J5LXNwYXJrcyB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjQ2O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgwLjk4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMC45NTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTAuMzVyZW0pIHNjYWxlKDEuMDIpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1maW5hbGUtcmF5cyB7XG4gICAgICAgIHRvIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1maW5hbGUtcmliYm9uIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuMTg7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0wLjVyZW0pIHJvdGF0ZSh2YXIoLS1yaWJib24tYW5nbGUpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMC43NTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMS40cmVtKSByb3RhdGUodmFyKC0tcmliYm9uLWFuZ2xlKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWZpbmFsZS1tZWRhbCB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7XG4gICAgICAgIH1cblxuICAgICAgICA1MCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC4xOHJlbSkgc2NhbGUoMS4wNCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgaXNvbGF0aW9uOiBpc29sYXRlO1xuICAgICAgICAtLWNoZXNzaW1hbHMtY2VsbC1iZzogdmFyKC0tY2hlc3NpbWFscy1jZWxsLWxpZ2h0KTtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBtaW4taGVpZ2h0OiAwO1xuICAgICAgICBhc3BlY3QtcmF0aW86IDE7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCAyNiUgMjQlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpLCB0cmFuc3BhcmVudCAyNCUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDc4JSA3NiUsIHJnYmEoNjEsIDU0LCAzNiwgMC4wNiksIHRyYW5zcGFyZW50IDI4JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA0KSwgdHJhbnNwYXJlbnQgNTIlLCByZ2JhKDUyLCA0NCwgMjgsIDAuMDQpKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtYmcpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgICBiYWNrZ3JvdW5kIDE2MG1zIGVhc2UsXG4gICAgICAgICAgYm94LXNoYWRvdyAxNjBtcyBlYXNlLFxuICAgICAgICAgIHRyYW5zZm9ybSAxNjBtcyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsOjpiZWZvcmUsXG4gICAgICAuY2hlc3NpbWFscy1jZWxsOjphZnRlciB7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLXRleHR1cmUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICB6LWluZGV4OiAwO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIG9wYWNpdHk6IDAuNDI7XG4gICAgICAgIG1peC1ibGVuZC1tb2RlOiBtdWx0aXBseTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCB2YXIoLS13ZWFyLXgsIDI4JSkgdmFyKC0td2Vhci15LCAzMiUpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTYpLCB0cmFuc3BhcmVudCAxNyUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IHZhcigtLXdlYXIteDIsIDc0JSkgdmFyKC0td2Vhci15MiwgNjglKSwgcmdiYSg3NSwgNjYsIDQyLCAwLjA5KSwgdHJhbnNwYXJlbnQgMjUlKSxcbiAgICAgICAgICByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHZhcigtLXdlYXItYW5nbGUsIDI2ZGVnKSwgcmdiYSg3NSwgNjYsIDQyLCAwLjA0NSkgMCAxcHgsIHRyYW5zcGFyZW50IDFweCAwLjUycmVtKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDYpLCB0cmFuc3BhcmVudCA0MiUsIHJnYmEoNTIsIDQ0LCAyOCwgMC4wNDUpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC10ZXh0dXJlOjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDAuMDhyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNzUsIDY2LCA0MiwgMC4wNSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuMThyZW07XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMC4wOHJlbSAwLjA4cmVtIDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSxcbiAgICAgICAgICBpbnNldCAtMC4wOHJlbSAtMC4wOHJlbSAwIHJnYmEoNTIsIDQ0LCAyOCwgMC4wNDUpO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1lZGdlLWNlbGwgLmNoZXNzaW1hbHMtY2VsbC10ZXh0dXJlIHtcbiAgICAgICAgb3BhY2l0eTogMC41NjtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCB2YXIoLS13ZWFyLXgsIDI4JSkgdmFyKC0td2Vhci15LCAzMiUpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQpLCB0cmFuc3BhcmVudCAxOCUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IHZhcigtLXdlYXIteDIsIDc0JSkgdmFyKC0td2Vhci15MiwgNjglKSwgcmdiYSg3NSwgNjYsIDQyLCAwLjE0KSwgdHJhbnNwYXJlbnQgMjglKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDcwLCA1MiwgMjgsIDAuMDU1KSwgdHJhbnNwYXJlbnQgNDQlLCByZ2JhKDUyLCA0NCwgMjgsIDAuMDkpKSxcbiAgICAgICAgICByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHZhcigtLXdlYXItYW5nbGUsIDI2ZGVnKSwgcmdiYSg3NSwgNjYsIDQyLCAwLjA1NSkgMCAxcHgsIHRyYW5zcGFyZW50IDFweCAwLjQ4cmVtKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC53ZWFyLTAge1xuICAgICAgICAtLXdlYXIteDogMjIlO1xuICAgICAgICAtLXdlYXIteTogMjQlO1xuICAgICAgICAtLXdlYXIteDI6IDc4JTtcbiAgICAgICAgLS13ZWFyLXkyOiA3MiU7XG4gICAgICAgIC0td2Vhci1hbmdsZTogMThkZWc7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwud2Vhci0xIHtcbiAgICAgICAgLS13ZWFyLXg6IDY0JTtcbiAgICAgICAgLS13ZWFyLXk6IDE4JTtcbiAgICAgICAgLS13ZWFyLXgyOiAzMCU7XG4gICAgICAgIC0td2Vhci15MjogNzYlO1xuICAgICAgICAtLXdlYXItYW5nbGU6IC0yNGRlZztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC53ZWFyLTIge1xuICAgICAgICAtLXdlYXIteDogNDIlO1xuICAgICAgICAtLXdlYXIteTogNTglO1xuICAgICAgICAtLXdlYXIteDI6IDgyJTtcbiAgICAgICAgLS13ZWFyLXkyOiAyNiU7XG4gICAgICAgIC0td2Vhci1hbmdsZTogNDJkZWc7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwud2Vhci0zIHtcbiAgICAgICAgLS13ZWFyLXg6IDc0JTtcbiAgICAgICAgLS13ZWFyLXk6IDY4JTtcbiAgICAgICAgLS13ZWFyLXgyOiAyNCU7XG4gICAgICAgIC0td2Vhci15MjogMjglO1xuICAgICAgICAtLXdlYXItYW5nbGU6IC0xMmRlZztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC53ZWFyLTQge1xuICAgICAgICAtLXdlYXIteDogMzQlO1xuICAgICAgICAtLXdlYXIteTogMTglO1xuICAgICAgICAtLXdlYXIteDI6IDYyJTtcbiAgICAgICAgLS13ZWFyLXkyOiA4NCU7XG4gICAgICAgIC0td2Vhci1hbmdsZTogNjRkZWc7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwud2Vhci01IHtcbiAgICAgICAgLS13ZWFyLXg6IDE4JTtcbiAgICAgICAgLS13ZWFyLXk6IDcwJTtcbiAgICAgICAgLS13ZWFyLXgyOiA3MCU7XG4gICAgICAgIC0td2Vhci15MjogMzQlO1xuICAgICAgICAtLXdlYXItYW5nbGU6IC00OGRlZztcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5jaGVzc2ltYWxzLWNlbGwtdGV4dHVyZSxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLmNoZXNzaW1hbHMtY2VsbC10ZXh0dXJlIHtcbiAgICAgICAgb3BhY2l0eTogMC4zNDtcbiAgICAgICAgbWl4LWJsZW5kLW1vZGU6IHNvZnQtbGlnaHQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtZGFyay1jZWxsIHtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtYmc6IHZhcigtLWNoZXNzaW1hbHMtY2VsbC1kYXJrKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1zZWxlY3RlZCB7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYiksIDAuMjgpIDAgMzYlLCB0cmFuc3BhcmVudCA2MiUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjIyKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1jZWxsLWJnKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAwLjE4cmVtIHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQpLFxuICAgICAgICAgIGluc2V0IDAgMCAwLjU1cmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43MiksXG4gICAgICAgICAgaW5zZXQgMCAwIDEuOHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC40MiksXG4gICAgICAgICAgMCAwIDAuNTVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYiksIDAuNTYpLFxuICAgICAgICAgIDAgMCAxLjU1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjM2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQuaXMtcG93ZXItYWltaW5nIC5jaGVzc2ltYWxzLWNlbGwuaXMtc2VsZWN0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUyJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMzgpIDAgMzQlLCB0cmFuc3BhcmVudCA2NCUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMzIlIDI0JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjM0KSwgdHJhbnNwYXJlbnQgMjglKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4yKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1jZWxsLWJnKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAwLjE4cmVtIHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtaG90KSxcbiAgICAgICAgICBpbnNldCAwIDAgMC44cmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42NiksXG4gICAgICAgICAgaW5zZXQgMCAwIDEuOXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC41KSxcbiAgICAgICAgICAwIDAgMC43cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjYyKSxcbiAgICAgICAgICAwIDAgMS43NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC40Mik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLmlzLXBvd2VyLWFpbWluZyAuY2hlc3NpbWFscy1jZWxsLmlzLWxlZ2FsOm5vdCguaXMtY2FwdHVyZSk6OmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC45NCk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAuNzJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuNDgpLFxuICAgICAgICAgIGluc2V0IDAgMCAwLjZyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC5pcy1wb3dlci1haW1pbmcgLmNoZXNzaW1hbHMtdGFyZ2V0IHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1tYWdpYy1ob3QpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwIDAuMnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4yKSxcbiAgICAgICAgICAwIDAgMC45NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC42Mik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtbGVnYWw6bm90KC5pcy1jYXB0dXJlKTo6YWZ0ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAxMyU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIGJvcmRlcjogbWF4KDJweCwgMS44JSkgc29saWQgdmFyKC0tY2hlc3NpbWFscy1tb3ZlKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC41NXJlbTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIG9wYWNpdHk6IDAuNzQ7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWxhc3Q6bm90KC5pcy1zZWxlY3RlZCk6bm90KC5pcy1sZWdhbCk6bm90KC5pcy1jYXB0dXJlKSB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWxhc3QtcmdiKSwgMC4xNikgMCA0MiUsIHRyYW5zcGFyZW50IDY4JSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1jZWxsLWJnKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1jYXB0dXJlIHtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNCksIHRyYW5zcGFyZW50IDM0JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4xNCksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtY2VsbC1iZyk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMC4xNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjg0KSxcbiAgICAgICAgICBpbnNldCAwIDAgMS40cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMjQpLFxuICAgICAgICAgIDAgMCAwLjk1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMzQpO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtY2FwdHVyZS1hdXJhIDEuMzVzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWNhcHR1cmU6OmJlZm9yZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDQlO1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC42NHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTIpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjI0KSwgdHJhbnNwYXJlbnQgNTglKTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNDIlKSBzY2FsZSgwLjkpO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtY2FwdHVyZS1zd2VlcCAxLjM1cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1jYXB0dXJlOjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDglO1xuICAgICAgICB6LWluZGV4OiAzO1xuICAgICAgICBib3JkZXI6IG1heCgycHgsIDEuNTUlKSBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjkpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjYycmVtO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwLjc1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuNSksXG4gICAgICAgICAgaW5zZXQgMCAwIDAuNzJyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIyKTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtY2FwdHVyZS1mcmFtZSAxLjM1cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtY2FwdHVyZS1yZWFkeTpub3QoLmlzLXNlbGVjdGVkKTo6YWZ0ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAxNiU7XG4gICAgICAgIHotaW5kZXg6IDM7XG4gICAgICAgIGJvcmRlcjogbWF4KDJweCwgMS40NSUpIHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjcyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAuNjVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYiksIDAuMzQpLFxuICAgICAgICAgIGluc2V0IDAgMCAwLjU1cmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xOCk7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLXdpbm5pbmcuaXMtbGVnYWw6bm90KC5pcy1jYXB0dXJlKTo6YWZ0ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy13YXJuaW5nLXJnYiksIDAuOTIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMC43NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtd2FybmluZy1yZ2IpLCAwLjQ4KSxcbiAgICAgICAgICBpbnNldCAwIDAgMC41OHJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLXdpbm5pbmcgLmNoZXNzaW1hbHMtdGFyZ2V0IHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy13YXJuaW5nKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAwLjIycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy13YXJuaW5nLXJnYiksIDAuMiksXG4gICAgICAgICAgMCAwIDAuOTVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXdhcm5pbmctcmdiKSwgMC41Nik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLXRocmVhdDpub3QoLmlzLXNlbGVjdGVkKTpub3QoLmlzLWNhcHR1cmUpIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy13YXJuaW5nLXJnYiksIDAuMTYpLCB0cmFuc3BhcmVudCA1MiUpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtY2VsbC1iZyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLXRocmVhdDpub3QoLmlzLXNlbGVjdGVkKTpub3QoLmlzLWNhcHR1cmUpIC5jaGVzc2ltYWxzLXBpZWNlIHtcbiAgICAgICAgZmlsdGVyOlxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMCAwLjM4cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy13YXJuaW5nLXJnYiksIDAuNTIpKVxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtc2hhZG93KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtdGhyZWF0Om5vdCguaXMtc2VsZWN0ZWQpOm5vdCguaXMtY2FwdHVyZSkgLmNoZXNzaW1hbHMtcGllY2UuaXMtYmxhY2sge1xuICAgICAgICBmaWx0ZXI6XG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwIDAuMzhyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXdhcm5pbmctcmdiKSwgMC41MikpXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaGFkb3cpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy10aHJlYXQ6bm90KC5pcy1zZWxlY3RlZCk6bm90KC5pcy1jYXB0dXJlKTo6YmVmb3JlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDAuMjZyZW07XG4gICAgICAgIHJpZ2h0OiAwLjI2cmVtO1xuICAgICAgICB6LWluZGV4OiA0O1xuICAgICAgICB3aWR0aDogMC40OHJlbTtcbiAgICAgICAgaGVpZ2h0OiAwLjQ4cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXdhcm5pbmctcmdiKSwgMC45Nik7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMThyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXdhcm5pbmctcmdiKSwgMC4yMik7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtY2FwdHVyZS1hdXJhIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIGZpbHRlcjogc2F0dXJhdGUoMSk7XG4gICAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAgIGluc2V0IDAgMCAwIDAuMTJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC43OCksXG4gICAgICAgICAgICBpbnNldCAwIDAgMXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjIpLFxuICAgICAgICAgICAgMCAwIDAuNjRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4zMik7XG4gICAgICAgIH1cblxuICAgICAgICA1MCUge1xuICAgICAgICAgIGZpbHRlcjogc2F0dXJhdGUoMS4yMik7XG4gICAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAgIGluc2V0IDAgMCAwIDAuMTZyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC45NiksXG4gICAgICAgICAgICBpbnNldCAwIDAgMS4zNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjM0KSxcbiAgICAgICAgICAgIDAgMCAxLjJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC40OCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWNhcHR1cmUtc3dlZXAge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUyJSkgc2NhbGUoMC44OCk7XG4gICAgICAgIH1cblxuICAgICAgICA0MiUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuNjY7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApIHNjYWxlKDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNDglKSBzY2FsZSgwLjkyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtY2FwdHVyZS1mcmFtZSB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjY4O1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45Nik7XG4gICAgICAgIH1cblxuICAgICAgICA1MCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1zb3VyY2UtZWZmZWN0Om5vdCguaXMtbW92aW5nLXNvdXJjZSkge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjEyKSAwIDM0JSwgdHJhbnNwYXJlbnQgNjQlKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtYmcpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1tb3ZlLWVmZmVjdCB7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjIyKSAwIDM0JSwgdHJhbnNwYXJlbnQgNjglKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtYmcpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAgMCAwIDAuMTZyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC44NiksXG4gICAgICAgICAgaW5zZXQgMCAwIDEuMnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjI2KSxcbiAgICAgICAgICAwIDAgMS4xcmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuNDIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1tb3ZlLWVmZmVjdDo6YmVmb3JlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMC4xMnJlbTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuN3JlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40OCksIHRyYW5zcGFyZW50IDIyJSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjQyKSwgdHJhbnNwYXJlbnQgNTglKTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC43Mik7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1wb3dlci1pbXBhY3QgNzAwbXMgZWFzZS1vdXQgYm90aDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtbW92ZS1lZmZlY3Q6OmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMC4yOHJlbTtcbiAgICAgICAgei1pbmRleDogNDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGJvcmRlcjogMC4xNHJlbSBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjU4cmVtO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwLjVyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjM2KSxcbiAgICAgICAgICAwIDAgMXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjMyKTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1wb3dlci1mcmFtZSA4NjBtcyBlYXNlLW91dCBib3RoO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1jYXB0dXJlLWVmZmVjdCB7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1jYXB0dXJlLWhpdCA3ODBtcyBlYXNlLW91dCBib3RoO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmVmZmVjdC1lYWdsZTo6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB0cmFuc3BhcmVudCAxMCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43OCkgNDglLCB0cmFuc3BhcmVudCA1MiUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4zNiksIHRyYW5zcGFyZW50IDYyJSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuZWZmZWN0LWJ1bGw6OmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCg5MGRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjM0KSAwIDAuMTZyZW0sIHRyYW5zcGFyZW50IDAuMTZyZW0gMC4zNHJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjM4KSwgdHJhbnNwYXJlbnQgNjIlKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5lZmZlY3Qta2FuZ2Fyb286OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNDIlIDQ0JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjU4KSwgdHJhbnNwYXJlbnQgMTglKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDU4JSA1NiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuNCksIHRyYW5zcGFyZW50IDY0JSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuZWZmZWN0LWxpb246OmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgY29uaWMtZ3JhZGllbnQoZnJvbSAwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjU2KSwgdHJhbnNwYXJlbnQsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuNCksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MCUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMzQpLCB0cmFuc3BhcmVudCA2MiUpO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtcG93ZXItaW1wYWN0IHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjU0KSByb3RhdGUoMGRlZyk7XG4gICAgICAgIH1cblxuICAgICAgICAyOCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk2KSByb3RhdGUoMmRlZyk7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4zKSByb3RhdGUoOGRlZyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXBvd2VyLWZyYW1lIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjg0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIDM0JSB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDIpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMTYpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1jYXB0dXJlLWhpdCB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBmaWx0ZXI6IHNhdHVyYXRlKDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgMzUlIHtcbiAgICAgICAgICBmaWx0ZXI6IHNhdHVyYXRlKDEuMzUpIGJyaWdodG5lc3MoMS4wOCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1tb3Zpbmctc291cmNlIC5jaGVzc2ltYWxzLXBpZWNlIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2Uge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogNjglO1xuICAgICAgICBoZWlnaHQ6IDc0JTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1maWxsOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLWZpbGwpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utc2lkZTogdmFyKC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1zaWRlKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWxpbmU6IHZhcigtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtbGluZSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1vdXRsaW5lOiByZ2JhKDgyLCA2NSwgNDYsIDAuMzQpO1xuICAgICAgICBmaWx0ZXI6IHZhcigtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtc2hhZG93KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2UuaXMtYmxhY2sge1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGw6IHZhcigtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stZmlsbCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1zaWRlOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLXNpZGUpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtbGluZTogdmFyKC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1saW5lKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLW91dGxpbmU6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yMik7XG4gICAgICAgIGZpbHRlcjogdmFyKC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaGFkb3cpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1tb3ZpbmctcGllY2Uge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgei1pbmRleDogNjtcbiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAvIHZhcigtLWJvYXJkLXNpemUpKTtcbiAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgLyB2YXIoLS1ib2FyZC1zaXplKSk7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZShcbiAgICAgICAgICBjYWxjKHZhcigtLWZyb20tY29sKSAqIDEwMCUpLFxuICAgICAgICAgIGNhbGModmFyKC0tZnJvbS1yb3cpICogMTAwJSlcbiAgICAgICAgKTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXBpZWNlLXRyYXZlbCAzNjBtcyBjdWJpYy1iZXppZXIoMC4yLCAwLjgyLCAwLjI0LCAxKSBib3RoO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtcGllY2UtdHJhdmVsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKFxuICAgICAgICAgICAgICBjYWxjKHZhcigtLWZyb20tY29sKSAqIDEwMCUpLFxuICAgICAgICAgICAgICBjYWxjKHZhcigtLWZyb20tcm93KSAqIDEwMCUpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBzY2FsZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDY4JSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoXG4gICAgICAgICAgICAgIGNhbGModmFyKC0tdG8tY29sKSAqIDEwMCUpLFxuICAgICAgICAgICAgICBjYWxjKHZhcigtLXRvLXJvdykgKiAxMDAlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgc2NhbGUoMS4wNyk7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZShcbiAgICAgICAgICAgICAgY2FsYyh2YXIoLS10by1jb2wpICogMTAwJSksXG4gICAgICAgICAgICAgIGNhbGModmFyKC0tdG8tcm93KSAqIDEwMCUpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBzY2FsZSgxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fc2lkZSxcbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19oZWFkLFxuICAgICAgLmNoZXNzaW1hbHMtcGllY2VfX2NvbGxhcixcbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19uZWNrLFxuICAgICAgLmNoZXNzaW1hbHMtcGllY2VfX2Jhc2Uge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGllY2UtZmlsbCk7XG4gICAgICAgIGJvcmRlcjogbWF4KDFweCwgMS4yNSUpIHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtcGllY2Utb3V0bGluZSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2VfX3NpZGUge1xuICAgICAgICB0b3A6IDQ2JTtcbiAgICAgICAgei1pbmRleDogMDtcbiAgICAgICAgd2lkdGg6IDU4JTtcbiAgICAgICAgaGVpZ2h0OiA0MSU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDM0JSAzNCUgMTIlIDEyJTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoOTZkZWcsIHZhcigtLWNoZXNzaW1hbHMtcGllY2Utc2lkZSkgMCAzNCUsIHRyYW5zcGFyZW50IDM1JSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1maWxsKTtcbiAgICAgICAgY2xpcC1wYXRoOiBwb2x5Z29uKDIyJSAwLCA3OCUgMCwgOTYlIDEwMCUsIDQlIDEwMCUpO1xuICAgICAgICBvcGFjaXR5OiAwLjkyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9faGVhZCB7XG4gICAgICAgIHRvcDogMSU7XG4gICAgICAgIHotaW5kZXg6IDQ7XG4gICAgICAgIHdpZHRoOiA0OCU7XG4gICAgICAgIGhlaWdodDogNDAlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDMwJSAyMiUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43MikgMCAxMyUsIHRyYW5zcGFyZW50IDE0JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI4KSAwIDM0JSwgdHJhbnNwYXJlbnQgMzUlKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGwpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IC0wLjE4cmVtIC0wLjEycmVtIDAgcmdiYSg4MiwgNjUsIDQ2LCAwLjA2KSxcbiAgICAgICAgICBpbnNldCAwIC0xcHggMCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWxpbmUpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1waWVjZS5pcy1ibGFjayAuY2hlc3NpbWFscy1waWVjZV9faGVhZCB7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMC4xOHJlbSAtMC4xMnJlbSAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNiksXG4gICAgICAgICAgaW5zZXQgMCAtMXB4IDAgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1saW5lKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2VfX2NvbGxhciB7XG4gICAgICAgIHRvcDogMzclO1xuICAgICAgICB6LWluZGV4OiA1O1xuICAgICAgICB3aWR0aDogNzIlO1xuICAgICAgICBoZWlnaHQ6IDE1JTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDE4MGRlZywgI2Y1Y2Q3NyAwJSwgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1nb2xkKSA1NSUsIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtZ29sZC1kYXJrKSAxMDAlKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1nb2xkLWRhcmspIDcyJSwgdHJhbnNwYXJlbnQpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAgMC4xMnJlbSAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yOCksXG4gICAgICAgICAgaW5zZXQgMCAtMC4wOHJlbSAwIHJnYmEoNzAsIDQ2LCAxOCwgMC4yMiksXG4gICAgICAgICAgMCAwLjA4cmVtIDAuMThyZW0gcmdiYSg3MCwgNDYsIDE4LCAwLjE0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2VfX25lY2sge1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgICAgd2lkdGg6IDUyJTtcbiAgICAgICAgaGVpZ2h0OiAzMSU7XG4gICAgICAgIGNsaXAtcGF0aDogcG9seWdvbigxNiUgMCwgODQlIDAsIDEwMCUgMTAwJSwgMCAxMDAlKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTAwZGVnLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXNpZGUpIDAgMjglLCB0cmFuc3BhcmVudCAyOSUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtZmlsbCksIGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGwpIDc4JSwgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1zaWRlKSkpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IC0wLjEycmVtIDAuMXJlbSAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19iYXNlIHtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICB6LWluZGV4OiA2O1xuICAgICAgICB3aWR0aDogODYlO1xuICAgICAgICBoZWlnaHQ6IDE3JTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC40MnJlbSAwLjQycmVtIDAuMjJyZW0gMC4yMnJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTAwZGVnLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXNpZGUpIDAgMTglLCB0cmFuc3BhcmVudCAxOSUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxODBkZWcsIGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGwpIDkyJSwgI2ZmZmZmZiksIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtZmlsbCkpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAgMC4xMnJlbSAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNCksXG4gICAgICAgICAgaW5zZXQgMCAtMC4xcmVtIDAgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1saW5lKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdGFyZ2V0IHtcbiAgICAgICAgd2lkdGg6IDE2JTtcbiAgICAgICAgaGVpZ2h0OiAxNiU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLW1vdmUpO1xuICAgICAgICBvcGFjaXR5OiAwLjk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwLjlyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1vdmUtcmdiKSwgMC40Mik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuNjI1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jYXJkcyBidXR0b24ge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGlzb2xhdGlvbjogaXNvbGF0ZTtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBtaW5tYXgoNS40cmVtLCAxZnIpIGF1dG87XG4gICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgICBwbGFjZS1pdGVtczogc3RyZXRjaDtcbiAgICAgICAgbWluLWhlaWdodDogOC4xNXJlbTtcbiAgICAgICAgcGFkZGluZzogMC41NXJlbSAwLjU1cmVtIDAuN3JlbTtcbiAgICAgICAgYm9yZGVyOiAwLjEycmVtIHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjU0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4xMjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgMTglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSksIHRyYW5zcGFyZW50IDM2JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDE4MGRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMjQpLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtZGVlcCksIDAuMDgpIDU4JSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAwLjE0cmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40NiksXG4gICAgICAgICAgMCAwLjU1cmVtIDEuMnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4xNCk7XG4gICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgYm9yZGVyLWNvbG9yIDE4MG1zIGVhc2UsXG4gICAgICAgICAgYm94LXNoYWRvdyAxODBtcyBlYXNlLFxuICAgICAgICAgIHRyYW5zZm9ybSAxODBtcyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnNfX2hlYWRpbmcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHAge1xuICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnNfX2hlYWRpbmcgc3BhbiB7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC4yOHJlbSAwLjYycmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uLmlzLXNlbGVjdGVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLWhvdCk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgMTYlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDIpLCB0cmFuc3BhcmVudCAzMCUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDc2JSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMiksIHRyYW5zcGFyZW50IDU2JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMiksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNCkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwIDJweCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4yOCksXG4gICAgICAgICAgMCAwIDEuMzVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuNDgpLFxuICAgICAgICAgIDAgMC45cmVtIDJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMTgpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy1zZWxlY3RlZDo6YmVmb3JlLFxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uLmlzLXNlbGVjdGVkOjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IC0wLjVyZW07XG4gICAgICAgIHotaW5kZXg6IDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uID4gKiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uLmlzLXNlbGVjdGVkOjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTglIDI0JSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuODgpIDAgMC4wOHJlbSwgdHJhbnNwYXJlbnQgMC4xcmVtKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDc4JSAyMCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44NikgMCAwLjA3cmVtLCB0cmFuc3BhcmVudCAwLjA5cmVtKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDg2JSA2MiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjcyKSAwIDAuMDZyZW0sIHRyYW5zcGFyZW50IDAuMDhyZW0pLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMjglIDc4JSwgcmdiYSgyNTUsIDI0NSwgMTExLCAwLjc4KSAwIDAuMDdyZW0sIHRyYW5zcGFyZW50IDAuMDlyZW0pLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTQlIDglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjgpIDAgMC4wNXJlbSwgdHJhbnNwYXJlbnQgMC4wN3JlbSk7XG4gICAgICAgIG9wYWNpdHk6IDAuODtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzTWFnaWNQYXJ0aWNsZXMgMS44cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uLmlzLXNlbGVjdGVkOjphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgY29uaWMtZ3JhZGllbnQoZnJvbSAxMmRlZywgdHJhbnNwYXJlbnQgMCAxNmRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMikgMTZkZWcgMjJkZWcsIHRyYW5zcGFyZW50IDIyZGVnIDQ0ZGVnKTtcbiAgICAgICAgb3BhY2l0eTogMC42ODtcbiAgICAgICAgZmlsdGVyOiBibHVyKDAuMDRyZW0pO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHNNYWdpY0F1cmEgMy4ycyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy11c2VkIHtcbiAgICAgICAgb3BhY2l0eTogMC40MjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2Uge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWluLWhlaWdodDogNS40cmVtO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBib3JkZXI6IDAuMTJyZW0gc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLWRlZXApLCAwLjYyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC45cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDM0JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk2KSwgdHJhbnNwYXJlbnQgNDQlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4zOCksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1kZWVwKSwgMC4xNCkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYmcpO1xuICAgICAgICBjb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtdGV4dCkgOTIlLCAjMDAwKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAwLjEycmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40OCksXG4gICAgICAgICAgaW5zZXQgMCAtMC4xOHJlbSAwLjQ1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1kZWVwKSwgMC4xNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIGltZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogbWluKDUuNDVyZW0sIDg4JSk7XG4gICAgICAgIGhlaWdodDogbWluKDUuNDVyZW0sIDg4JSk7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAgLXdlYmtpdC11c2VyLWRyYWc6IG5vbmU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgZmlsdGVyOiB2YXIoLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWZpbHRlcik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdC1hdmF0YXIsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2F2YXRhciB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdC1hdmF0YXIgaW1nLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19hdmF0YXIgaW1nIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAgLXdlYmtpdC11c2VyLWRyYWc6IG5vbmU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy1zZWxlY3RlZCAuY2hlc3NpbWFscy1hbmltYWwtZmFjZSxcbiAgICAgIC5jaGVzc2ltYWxzLXBvd2Vycy5pcy1yZWFkeSAuY2hlc3NpbWFscy1jYXJkcyBidXR0b246bm90KC5pcy11c2VkKSAuY2hlc3NpbWFscy1hbmltYWwtZmFjZSB7XG4gICAgICAgIGNvbG9yOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy10ZXh0KSA5NCUsICMwMDApO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtbG9ja2VkIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIHtcbiAgICAgICAgZmlsdGVyOiB2YXIoLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWxvY2tlZC1maWx0ZXIpO1xuICAgICAgICBvcGFjaXR5OiAwLjg2O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtbG9ja2VkIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIGltZyxcbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy11c2VkIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIGltZyB7XG4gICAgICAgIG9wYWNpdHk6IHZhcigtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtbG9ja2VkLWltZy1vcGFjaXR5KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdXNlcyB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwLjVyZW07XG4gICAgICAgIHJpZ2h0OiAwLjVyZW07XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBtaW4td2lkdGg6IDEuNzJyZW07XG4gICAgICAgIGhlaWdodDogMS4zNXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAgMC4zOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAuMzVyZW0gMC45cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jYXJkcyBzdHJvbmcge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgwLjlyZW0sIDIuM3Z3LCAxLjA4cmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDU7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2Vycy5pcy1sb2NrZWQgLmNoZXNzaW1hbHMtY2FyZHMge1xuICAgICAgICBvcGFjaXR5OiAwLjY4O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtcmVhZHkge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjQ2KTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAxcHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMTIpLFxuICAgICAgICAgIDAgMXJlbSAyLjRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMTIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtcmVhZHkgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uOm5vdCguaXMtdXNlZCkge1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHNQb3dlclB1bHNlIDE4MDBtcyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzLmlzLXVubG9jay1wdWxzZSB7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFsc1Bvd2Vyc1VubG9ja2VkIDExODBtcyBlYXNlLW91dCBib3RoO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtdW5sb2NrLXB1bHNlIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbjpub3QoLmlzLXVzZWQpIHtcbiAgICAgICAgYW5pbWF0aW9uOlxuICAgICAgICAgIGNoZXNzaW1hbHNQb3dlcklnbml0ZSA3NjBtcyBlYXNlLW91dCBib3RoLFxuICAgICAgICAgIGNoZXNzaW1hbHNQb3dlclB1bHNlIDE4MDBtcyBlYXNlLWluLW91dCA3NjBtcyBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzUG93ZXJQdWxzZSB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMS40cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjI0KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHNQb3dlcnNVbmxvY2tlZCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgICAgMCAwIDAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDApLFxuICAgICAgICAgICAgMCAxcmVtIDIuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4xMik7XG4gICAgICAgIH1cblxuICAgICAgICAzNCUge1xuICAgICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgICAwIDAgMCAwLjE4cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjI4KSxcbiAgICAgICAgICAgIDAgMCAyLjJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMzgpLFxuICAgICAgICAgICAgMCAxcmVtIDIuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4xNik7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgICAgMCAwIDAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDApLFxuICAgICAgICAgICAgMCAxcmVtIDIuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4xMik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzUG93ZXJJZ25pdGUge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDAuOTYpO1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDQyJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0wLjA4cmVtKSBzY2FsZSgxLjAyNSk7XG4gICAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAgIDAgMCAwIDAuMTRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMjQpLFxuICAgICAgICAgICAgMCAwIDEuNXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC40Nik7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFsc01hZ2ljUGFydGljbGVzIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuNTQ7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDAuOTQpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC4xOHJlbSkgc2NhbGUoMS4wMik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzTWFnaWNBdXJhIHtcbiAgICAgICAgdG8ge1xuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDF0dXJuKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hY3Rpb25zIHtcbiAgICAgICAgb3JkZXI6IDY7XG4gICAgICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gICAgICAgIGp1c3RpZnktc2VsZjogc3RyZXRjaDtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heChtaW4oMTAwJSwgMTJyZW0pLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjYyNXJlbTtcbiAgICAgICAgbWFyZ2luLXRvcDogMXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtZ2FtZSB7XG4gICAgICAgIG1heC13aWR0aDogbWluKDk2dncsIDkwcmVtKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtdHVybi1jYXJkIHtcbiAgICAgICAgcGFkZGluZzogMC44NzVyZW0gMXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtc3RhdHVzLFxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtYWN0aW9ucyxcbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLW9ubGluZSxcbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLXJlcGxheSxcbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLXJlbWF0Y2gtc3RhdHVzIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtYXJlbmEge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLWJvYXJkLXdyYXAge1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9hcmQtcmFkaXVzOiBtaW4oMC42MjVyZW0sIDEwcHgpO1xuICAgICAgICB3aWR0aDogbWluKDk2dncsIDgydmgsIDU4cmVtKTtcbiAgICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaGVsbC0tcHJvamVjdGlvbiAuY2hlc3NpbWFscy1ib2FyZC1mcmFtZSB7XG4gICAgICAgIGZsZXgtYmFzaXM6IGF1dG87XG4gICAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDc2MHB4KSB7XG4gICAgICAgIC5jaGVzc2ltYWxzLWdhbWUge1xuICAgICAgICAgIGdhcDogMXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCxcbiAgICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzLFxuICAgICAgICAuY2hlc3NpbWFscy1hcmVuYSxcbiAgICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5LFxuICAgICAgICAuY2hlc3NpbWFscy1yZXN1bHQsXG4gICAgICAgIC5jaGVzc2ltYWxzLWFjdGlvbnMge1xuICAgICAgICAgIGdyaWQtY29sdW1uOiAxIC8gLTE7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1hcmVuYSB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgICBqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICAgICAgICAgIGdhcDogMC44NXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXNoZWxsOm5vdCguY2hlc3NpbWFscy1zaGVsbC0tcHJvamVjdGlvbikgLmNoZXNzaW1hbHMtYm9hcmQtZnJhbWUge1xuICAgICAgICAgIGZsZXgtYmFzaXM6IG1pbigxMDAlLCBjbGFtcCgyOHJlbSwgY2FsYygxMDB2aCAtIDIycmVtKSwgNTByZW0pKTtcbiAgICAgICAgICB3aWR0aDogbWluKDEwMCUsIGNsYW1wKDI4cmVtLCBjYWxjKDEwMHZoIC0gMjJyZW0pLCA1MHJlbSkpO1xuICAgICAgICAgIG1heC13aWR0aDogbWluKDUwcmVtLCBjbGFtcCgyOHJlbSwgY2FsYygxMDB2aCAtIDIycmVtKSwgNTByZW0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyB7XG4gICAgICAgICAgd2lkdGg6IG1pbigxMDAlLCA0MHJlbSk7XG4gICAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDExcmVtLCAwLjY4ZnIpIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgZ2FwOiAwLjhyZW07XG4gICAgICAgICAgcGFkZGluZzogMC43OHJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jYXJkcyBidXR0b24ge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogbWlubWF4KDMuODVyZW0sIDFmcikgYXV0bztcbiAgICAgICAgICBtaW4taGVpZ2h0OiA1Ljg1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2Uge1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDMuODVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1hbmltYWwtZmFjZSBpbWcge1xuICAgICAgICAgIHdpZHRoOiBtaW4oMy44NXJlbSwgODglKTtcbiAgICAgICAgICBoZWlnaHQ6IG1pbigzLjg1cmVtLCA4OCUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHAge1xuICAgICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMS4wNXJlbTtcbiAgICAgICAgcGFkZGluZy10b3A6IDAuMjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNldHRpbmdzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjg1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0LCB2YXIoLS1jaGVzc2ltYWxzLXRleHQpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2V0dGluZ3MgYXJ0aWNsZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC42NXJlbTtcbiAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1ib3JkZXIsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMikpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAxNCUgOCUsIGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLWNhcmQsICNmZmZmZmYpIDgyJSwgdHJhbnNwYXJlbnQpLCB0cmFuc3BhcmVudCAyOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMSksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4wNikpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtY2FyZC1zdHJvbmcsIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc3Ryb25nKSk7XG4gICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1zdXJmYWNlLCAjZmZmZmZmKSA0OCUsIHRyYW5zcGFyZW50KTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXNldHRpbmdzLW1vZGFsIHZhbC1tb2RhbC1zaGVsbCBpb24tdG9vbGJhciB7XG4gICAgICAgIC0tYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1zdXJmYWNlKTtcbiAgICAgICAgLS1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXNldHRpbmdzLW1vZGFsIHZhbC1tb2RhbC1zaGVsbCBpb24tY29udGVudCB7XG4gICAgICAgIC0tYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1zdXJmYWNlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy1zZXR0aW5ncy1tb2RhbCB2YWwtbW9kYWwtc2hlbGwgaW9uLWJ1dHRvbiB7XG4gICAgICAgIC0tY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy1zZXR0aW5ncy1tb2RhbCAuY2hlc3NpbWFscy1zZXR0aW5ncyB2YWwtdG9nZ2xlLWlucHV0IGlvbi10b2dnbGUge1xuICAgICAgICAtLXRyYWNrLWJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTQpO1xuICAgICAgICAtLXRyYWNrLWJhY2tncm91bmQtY2hlY2tlZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgLS1oYW5kbGUtYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkKTtcbiAgICAgICAgLS1oYW5kbGUtYmFja2dyb3VuZC1jaGVja2VkOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXNldHRpbmdzLW1vZGFsIC5jaGVzc2ltYWxzLXNldHRpbmdzIHZhbC1yYW5nZS1pbnB1dCBpb24tbGFiZWwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXNldHRpbmdzLW1vZGFsIC5jaGVzc2ltYWxzLXNldHRpbmdzIHZhbC1yYW5nZS1pbnB1dCBpb24tcmFuZ2Uge1xuICAgICAgICAtLWJhci1iYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE0KTtcbiAgICAgICAgLS1iYXItYmFja2dyb3VuZC1hY3RpdmU6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIC0tYmFyLWhlaWdodDogMC4zMnJlbTtcbiAgICAgICAgLS1iYXItYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIC0ta25vYi1iYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICAtLWtub2Itc2l6ZTogMS4yOHJlbTtcbiAgICAgICAgLS1waW4tYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgLS1waW4tY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXRleHQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGp1c3RpZnktaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxcmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsIHZhcigtLWNoZXNzaW1hbHMtdGV4dCkpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dF9fbG9nbyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogbWluKDI1cmVtLCA4OCUpO1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgIG9iamVjdC1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMC41cmVtIDAuN3JlbSByZ2JhKDQ2LCA1OCwgNDQsIDAuMTQpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWJvdXRfX3RoYW5rcyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvciwgdmFyKC0tY2hlc3NpbWFscy10ZXh0KSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4wOHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dF9fZmVlZGJhY2sge1xuICAgICAgICBtYXgtd2lkdGg6IDMwcmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dCBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgdmFyKC0tY2hlc3NpbWFscy1tdXRlZCkpO1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3NTA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ1O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFib3V0IGRsIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZ2FwOiAwLjY1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dCBkbCBkaXYge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC44NXJlbSAwLjk1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE2KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA4KSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWlvbi1jYXJkLWJhY2tncm91bmQsICNmZmYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dCBkdCxcbiAgICAgIC5jaGVzc2ltYWxzLWFib3V0IGRkIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dCBkdCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWJvdXQgZGQge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsIHZhcigtLWNoZXNzaW1hbHMtdGV4dCkpO1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19oZXJvIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3gtc2hhZG93OiAwIDAuODVyZW0gMS44cmVtIHJnYmEoNDYsIDU4LCA0NCwgMC4xMik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19wb3dlcnMsXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19fbm90ZSxcbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19zdGVwcyBhcnRpY2xlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtYm9yZGVyLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE2KSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtY2FyZCwgI2ZmZmZmZik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXRleHQsIHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMmYyYTNhKSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19zZWN0aW9uLXRpdGxlIHNwYW4ge1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IHN0YXJ0O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC4yNHJlbSAwLjU1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3NlY3Rpb24tdGl0bGUge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMzVyZW07XG4gICAgICAgIHBhZGRpbmctaW5saW5lOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19fc2VjdGlvbi10aXRsZSBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3N0ZXBzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuN3JlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3N0ZXBzIGFydGljbGUge1xuICAgICAgICBhbGlnbi1jb250ZW50OiBzdGFydDtcbiAgICAgICAgcGFkZGluZzogMC45cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19fc3RlcHMgYXJ0aWNsZSA+IGltZyxcbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19wb3dlcnMgPiBpbWcsXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19fbm90ZSA+IGltZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogNC43NXJlbTtcbiAgICAgICAgaGVpZ2h0OiA0Ljc1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjE1cmVtO1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAwLjFyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXN1bi1yZ2IpLCAwLjY4KSxcbiAgICAgICAgICAwIDAuN3JlbSAxLjI1cmVtIHJnYmEoNDYsIDU4LCA0NCwgMC4xNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19wb3dlcnMsXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19fbm90ZSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgcGFkZGluZzogMC45NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3Bvd2VyLWxpc3Qge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC42NXJlbTtcbiAgICAgICAgbWFyZ2luLXRvcDogMC4zNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3Bvd2VyLWxpc3Qgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGp1c3RpZnktaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IDAuMzJyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgbWluLWhlaWdodDogOC4xcmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLWJvcmRlciwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNikpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjhyZW0gMC41MnJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSAwLCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkLCAjZmZmZmZmKSA3OCUsIHRyYW5zcGFyZW50KSwgdHJhbnNwYXJlbnQgNTIlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEpLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc3VuLXJnYiksIDAuMTgpKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLWNhcmQtc3Ryb25nLCAjZmZmOGRmKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dCwgdmFyKC0tY2hlc3NpbWFscy10ZXh0KSk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMXB4IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXN1cmZhY2UsICNmZmZmZmYpIDY0JSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIDAgMC41NXJlbSAxLjE1cmVtIHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtc2hhZG93LCByZ2JhKDQ2LCA1OCwgNDQsIDAuMTIpKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wNTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19fcG93ZXItbGlzdCBzdHJvbmcsXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19fcG93ZXItbGlzdCBzbWFsbCB7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3Bvd2VyLWxpc3Qgc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjg2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wODtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3Bvd2VyLWxpc3Qgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42OXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19wb3dlci1saXN0IGltZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMy4yNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAzLjI1cmVtO1xuICAgICAgICBvYmplY3QtZml0OiBjb250YWluO1xuICAgICAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMC4yNXJlbSAwLjM1cmVtIHJnYmEoNDYsIDU4LCA0NCwgMC4xNikpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19fbm90ZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXN1bi1yZ2IpLCAwLjM0KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc3VuLXJnYiksIDAuMSksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMDQpKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLWNhcmQsICNmZmZmZmYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyBhcnRpY2xlID4gc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAycmVtO1xuICAgICAgICBoZWlnaHQ6IDJyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIGFydGljbGUgPiBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGdhcDogMC4zNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgaDMsXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyBwLFxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgdWwge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIGgzIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgcCxcbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIGxpIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtbXV0ZWQsIHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM2ZjZhN2EpKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzYwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyB1bCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxLjE1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcmltYXJ5LFxuICAgICAgLmNoZXNzaW1hbHMtc2Vjb25kYXJ5IHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgICAgbWluLWhlaWdodDogMy42MjVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcmltYXJ5IHtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxLjEyNXJlbSAyLjhyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yOCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNlY29uZGFyeSB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcmltYXJ5LmlzLXdvcmtpbmcsXG4gICAgICAuY2hlc3NpbWFscy1zZWNvbmRhcnkuaXMtd29ya2luZyB7XG4gICAgICAgIGN1cnNvcjogd2FpdDtcbiAgICAgICAgb3BhY2l0eTogMC44MjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYnV0dG9uLXNwaW5uZXIge1xuICAgICAgICB3aWR0aDogMXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxcmVtO1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgYm9yZGVyOiAwLjE0cmVtIHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1zcGluIDcyMG1zIGxpbmVhciBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDU2MHB4KSB7XG4gICAgICAgIC5jaGVzc2ltYWxzLWhvbWUtYWN0aW9ucyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1ob21lLWFjdGlvbiB7XG4gICAgICAgICAgbWluLWhlaWdodDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19zdGVwcyxcbiAgICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3Bvd2VycyxcbiAgICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX25vdGUge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3Bvd2VyLWxpc3Qge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXNpemUsXG4gICAgICAgIC5jaGVzc2ltYWxzLW1vZGUsXG4gICAgICAgIC5jaGVzc2ltYWxzLWFjdGlvbnMge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcGxheS1vcHRpb25zIC5jaGVzc2ltYWxzLW5pZ2h0bWFyZSB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBhdGgtY3RhLFxuICAgICAgICAuY2hlc3NpbWFscy1wYXRoLWhlcm8sXG4gICAgICAgIC5jaGVzc2ltYWxzLXBhdGgtZ3JpZCxcbiAgICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oaWdobGlnaHRzLFxuICAgICAgICAuY2hlc3NpbWFscy1wYXRoLXJpbmdzLFxuICAgICAgICAuY2hlc3NpbWFscy1wYXRoLXN0YXRzIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBhdGgtaGVybyB7XG4gICAgICAgICAganVzdGlmeS1pdGVtczogc3RhcnQ7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wYXRoLWhlcm9fX2FydCB7XG4gICAgICAgICAgd2lkdGg6IDYuMjVyZW07XG4gICAgICAgICAgaGVpZ2h0OiA2LjI1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcGF0aC1jdGFfX2FjdGlvbiB7XG4gICAgICAgICAganVzdGlmeS1zZWxmOiBzdHJldGNoO1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oZXJvX19tZWRhbCB7XG4gICAgICAgICAganVzdGlmeS1zZWxmOiBzdHJldGNoO1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDUuNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBhdGgtYmFycyBzcGFuIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpIGF1dG87XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wYXRoLWJhcnMgaSB7XG4gICAgICAgICAgZ3JpZC1jb2x1bW46IDEgLyAtMTtcbiAgICAgICAgICBvcmRlcjogMztcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jdGFfX2FjdGlvbnMge1xuICAgICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jdGFfX3JpdmFsIHtcbiAgICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaGVybyxcbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWZvY3VzIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkIHtcbiAgICAgICAgICBwYWRkaW5nOiAwLjg1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX3N0YXRzIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1nYW1lIHtcbiAgICAgICAgICBnYXA6IDAuNTVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQge1xuICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKSBhdXRvO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgICAgbWluLWhlaWdodDogMDtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAwLjk1cmVtO1xuICAgICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZF9fY29weSB7XG4gICAgICAgICAgZ2FwOiAwLjFyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NoaXAge1xuICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjE4cmVtIDAuNXJlbTtcbiAgICAgICAgICBmb250LXNpemU6IDAuNnJlbTtcbiAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNDVlbTtcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQgc3Ryb25nIHtcbiAgICAgICAgICBmb250LXNpemU6IGNsYW1wKDAuOTJyZW0sIDQuNHZ3LCAxLjEycmVtKTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS4wODtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCBwIHtcbiAgICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwIHtcbiAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICAgIHBhZGRpbmc6IDAuMjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX2F2YXRhciB7XG4gICAgICAgICAgZmxleDogMCAwIDEuOHJlbTtcbiAgICAgICAgICB3aWR0aDogMS44cmVtO1xuICAgICAgICAgIGhlaWdodDogMS44cmVtO1xuICAgICAgICAgIGFzcGVjdC1yYXRpbzogMSAvIDE7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdCA6Om5nLWRlZXAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwIC5jaGVzc2ltYWxzLXR1cm4tYXZhdGFyIHtcbiAgICAgICAgICB3aWR0aDogMS44cmVtO1xuICAgICAgICAgIG1pbi13aWR0aDogMS44cmVtO1xuICAgICAgICAgIGhlaWdodDogMS44cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX190ZXh0IHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgICAgZ2FwOiAwLjNyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1zdGF0dXMgZGl2IHtcbiAgICAgICAgICBnYXA6IDAuMTRyZW07XG4gICAgICAgICAgbWluLWhlaWdodDogMi4ycmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuODJyZW07XG4gICAgICAgICAgcGFkZGluZzogMC4zNHJlbSAwLjNyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1zdGF0dXMgc21hbGwge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC41OHJlbTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS4wNTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyBzdHJvbmcge1xuICAgICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMC43OHJlbSwgMy4ydncsIDAuOTRyZW0pO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA1O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmUge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjU1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX3JpdmFsID4gLmNoZXNzaW1hbHMtYm90LWF2YXRhciB7XG4gICAgICAgICAgd2lkdGg6IDIuMzVyZW07XG4gICAgICAgICAgaGVpZ2h0OiAyLjM1cmVtO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMS4xNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19yaXZhbCBwIHtcbiAgICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDE7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fbWV0cmljcyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICAgIGdhcDogMC4zcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX21ldHJpY3Mgc3BhbiB7XG4gICAgICAgICAgbWluLWhlaWdodDogMi4zNXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjMycmVtIDAuMzZyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fbWV0cmljcyBzbWFsbCB7XG4gICAgICAgICAgZm9udC1zaXplOiAwLjU2cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX21ldHJpY3MgYiB7XG4gICAgICAgICAgZm9udC1zaXplOiAwLjgycmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvIHtcbiAgICAgICAgICBwYWRkaW5nOiAwLjU1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19jYXJkIHtcbiAgICAgICAgICBnYXA6IDAuNDJyZW07XG4gICAgICAgICAgd2lkdGg6IG1pbigxNS41cmVtLCA5NCUpO1xuICAgICAgICAgIHBhZGRpbmc6IDAuNnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fYXZhdGFyIHtcbiAgICAgICAgICB3aWR0aDogMy4wNXJlbTtcbiAgICAgICAgICBoZWlnaHQ6IDMuMDVyZW07XG4gICAgICAgICAgZm9udC1zaXplOiAxLjYycmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19jb3B5IHN0cm9uZyB7XG4gICAgICAgICAgZm9udC1zaXplOiAxLjAycmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19jb3B5IHAge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDE7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2ZhY3RzIGIge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC43NHJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRybyAuY2hlc3NpbWFscy1wcmltYXJ5IHtcbiAgICAgICAgICBtaW4taGVpZ2h0OiAyLjE1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdGlwLFxuICAgICAgICAuY2hlc3NpbWFscy1yZXN1bHQsXG4gICAgICAgIC5jaGVzc2ltYWxzLXJlcGxheSxcbiAgICAgICAgLmNoZXNzaW1hbHMtb25saW5lLXN0YXR1cyxcbiAgICAgICAgLmNoZXNzaW1hbHMtdHV0b3JpYWwge1xuICAgICAgICAgIGdhcDogMC4ycmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgICAgcGFkZGluZzogMC43cmVtIDAuNzVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10aXAgc3Ryb25nLFxuICAgICAgICAuY2hlc3NpbWFscy1yZXN1bHQgc3Ryb25nLFxuICAgICAgICAuY2hlc3NpbWFscy1yZXBsYXkgc3Ryb25nLFxuICAgICAgICAuY2hlc3NpbWFscy10dXRvcmlhbCBzdHJvbmcge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXRpcCBwLFxuICAgICAgICAuY2hlc3NpbWFscy1yZXN1bHQgcCB7XG4gICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjg7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1yZXN1bHRfX3N0YXRzIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1yZXBsYXkge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdHV0b3JpYWwge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5X19hY3Rpb25zIHtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHN0cmV0Y2g7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1yZXBsYXlfX2FjdGlvbnMgLmNoZXNzaW1hbHMtc2Vjb25kYXJ5IHtcbiAgICAgICAgICBmbGV4OiAxIDEgOHJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWFyZW5hIHtcbiAgICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLXdyYXAge1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIG1hcmdpbi1pbmxpbmU6IDA7XG4gICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLWZyYW1lIHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyB7XG4gICAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjU1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzX19oZWFkaW5nIHtcbiAgICAgICAgICBnYXA6IDAuNHJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyBoMiB7XG4gICAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzX19oZWFkaW5nIHNwYW4ge1xuICAgICAgICAgIHBhZGRpbmc6IDAuMjJyZW0gMC40OHJlbTtcbiAgICAgICAgICBmb250LXNpemU6IDAuNjhyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wb3dlcnMgcCB7XG4gICAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2FyZHMge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgICBnYXA6IDAuMzVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jYXJkcyBidXR0b24ge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogbWlubWF4KDMuNjVyZW0sIDFmcikgYXV0bztcbiAgICAgICAgICBnYXA6IDAuM3JlbTtcbiAgICAgICAgICBtaW4taGVpZ2h0OiA1LjRyZW07XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMC44NXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjNyZW0gMC4yNHJlbSAwLjQycmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2Uge1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDMuNjVyZW07XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMC42OHJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIGltZyB7XG4gICAgICAgICAgd2lkdGg6IG1pbigzLjU1cmVtLCA5MiUpO1xuICAgICAgICAgIGhlaWdodDogbWluKDMuNTVyZW0sIDkyJSk7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jYXJkcyBzdHJvbmcge1xuICAgICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMC42NHJlbSwgMi44dncsIDAuNzhyZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtYm9hcmQge1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWNoZXNzaW1hbHMtYm9hcmQtcmFkaXVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZSB7XG4gICAgICAgICAgZm9udC1zaXplOiAwLjU4cmVtO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gICAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtY2FwdHVyZSxcbiAgICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1jYXB0dXJlOjpiZWZvcmUsXG4gICAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtY2FwdHVyZTo6YWZ0ZXIsXG4gICAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLW1vdmUtZWZmZWN0LFxuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1tb3ZlLWVmZmVjdDo6YmVmb3JlLFxuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1tb3ZlLWVmZmVjdDo6YWZ0ZXIsXG4gICAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLWNhcHR1cmUtZWZmZWN0LFxuICAgICAgICAuY2hlc3NpbWFscy1tb3ZpbmctcGllY2UsXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRybyxcbiAgICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzX19zY29yZS5pcy1wb3Age1xuICAgICAgICAgIGFuaW1hdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtbW92aW5nLXBpZWNlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZShcbiAgICAgICAgICAgIGNhbGModmFyKC0tdG8tY29sKSAqIDEwMCUpLFxuICAgICAgICAgICAgY2FsYyh2YXIoLS10by1yb3cpICogMTAwJSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hlc3NpbWFsc0dhbWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXVkaW8gPSBpbmplY3QoUmV0cm9BdWRpb1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IG9ubGluZSA9IGluamVjdChDaGVzc2ltYWxzT25saW5lU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2hhbGxlbmdlUHJvZ3Jlc3MgPSBpbmplY3QoQ2hlc3NpbWFsc0NoYWxsZW5nZVByb2dyZXNzU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgdG9hc3QgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBhdXRoID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBoYXB0aWNzID0gaW5qZWN0KEhhcHRpY3NTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBwbGF5ZXJQcm9maWxlcyA9IGluamVjdChNaW5pR2FtZVBsYXllclByb2ZpbGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgcHJpdmF0ZSBib2FyZE9yaWVudGF0aW9uVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG1vdmVBbmltYXRpb25UaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgYm90VHVyblRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZVN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSBvbmxpbmVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBoaXN0b3J5U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgY2hhbGxlbmdlU3RhdHNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBjaGFsbGVuZ2VSdW5zU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgY2hhbGxlbmdlQWN0aXZlUnVuU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgaGlzdG9yeVVpZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGhpc3RvcnlXYXRjaFRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBtb3ZlRWZmZWN0U3RhcnRUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgbW92ZUVmZmVjdENsZWFyVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHNjb3JlUG9wQ2xlYXJUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcG93ZXJVbmxvY2tUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgY2hhbGxlbmdlSW50cm9UaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgdHVyblRpbWVySW50ZXJ2YWw6IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSB0dXJuVGltZXJLZXkgPSAnJztcbiAgcHJpdmF0ZSB0dXJuVGltZXJEZWFkbGluZSA9IDA7XG4gIHByaXZhdGUgdHVyblRpbWVyRHVyYXRpb24gPSAwO1xuICBwcml2YXRlIHR1cm5UaW1lckV4cGlyZWRLZXkgPSAnJztcbiAgcHJpdmF0ZSBwZW5kaW5nT25saW5lR2FtZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgb3BlbmluZ09ubGluZUdhbWVJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG9wZW5lZE9ubGluZUdhbWVJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGxhc3RPdXRjb21lU291bmRLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBsYXN0Q2hhbGxlbmdlSGFuZGxlZEtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGxhc3RNb2RlU3RhdHNIYW5kbGVkS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgnYm9hcmRBbmNob3InKSBwcml2YXRlIGJvYXJkQW5jaG9yPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgcmVhZG9ubHkgYm9hcmRTaXplczogQ2hlc3NpbWFsc0JvYXJkU2l6ZVtdID0gWzYsIDhdO1xuICByZWFkb25seSBsb2NhbE1vZGVzOiBDaGVzc2ltYWxzTG9jYWxNb2RlW10gPSBbJ29uZS1kZXZpY2UnLCAnYm90J107XG4gIHJlYWRvbmx5IGJvdERpZmZpY3VsdGllczogQ2hlc3NpbWFsc0JvdERpZmZpY3VsdHlDaG9pY2VbXSA9IFsnZWFzeScsICdub3JtYWwnLCAnaGFyZCcsICduaWdodG1hcmUnXTtcbiAgcmVhZG9ubHkgbmlnaHRtYXJlUml2YWxzOiBFeGNsdWRlPENoZXNzaW1hbHNOaWdodG1hcmVNb2RlLCAnbm9uZSc+W10gPSBbJ2h1bnQnLCAncHJpZGUnXTtcbiAgcmVhZG9ubHkgYm90UHJvZmlsZXMgPSBDSEVTU0lNQUxTX0JPVF9QUk9GSUxFUztcbiAgcmVhZG9ubHkgY2hhbGxlbmdlTGFkZGVyID0gQ0hFU1NJTUFMU19DSEFMTEVOR0VfTEFEREVSO1xuICByZWFkb25seSBhbmltYWxzID0gQU5JTUFMUztcbiAgcmVhZG9ubHkgdmFsdGVjaENvbXBvbmVudHNWZXJzaW9uID0gVkFMVEVDSF9DT01QT05FTlRTX1ZFUlNJT047XG4gIHJlYWRvbmx5IHNjcmVlbiA9IHNpZ25hbDwnaG9tZScgfCAnY2hhbGxlbmdlJyB8ICdwYXRoJyB8ICdnYW1lJz4oJ2hvbWUnKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRCb2FyZFNpemUgPSBzaWduYWw8Q2hlc3NpbWFsc0JvYXJkU2l6ZT4oNik7XG4gIHJlYWRvbmx5IHNlbGVjdGVkTG9jYWxNb2RlID0gc2lnbmFsPENoZXNzaW1hbHNMb2NhbE1vZGU+KCdvbmUtZGV2aWNlJyk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkQm90RGlmZmljdWx0eSA9IHNpZ25hbDxDaGVzc2ltYWxzQm90RGlmZmljdWx0eUNob2ljZT4oJ25vcm1hbCcpO1xuICByZWFkb25seSBzZWxlY3RlZE5pZ2h0bWFyZU1vZGUgPSBzaWduYWw8Q2hlc3NpbWFsc05pZ2h0bWFyZU1vZGU+KCdub25lJyk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkQm90UHJvZmlsZUlkID0gc2lnbmFsPENoZXNzaW1hbHNCb3RQcm9maWxlSWQ+KCdodW50ZXInKTtcbiAgcmVhZG9ubHkgZ2FtZUJvdFByb2ZpbGVJZCA9IHNpZ25hbDxDaGVzc2ltYWxzQm90UHJvZmlsZUlkIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBnYW1lID0gc2lnbmFsPENoZXNzaW1hbHNHYW1lU3RhdGU+KGNyZWF0ZUNoZXNzaW1hbHNHYW1lKDYpKTtcbiAgcmVhZG9ubHkgY2hhbGxlbmdlUGhhc2UgPSBzaWduYWw8Q2hlc3NpbWFsc0NoYWxsZW5nZVBoYXNlPignaWRsZScpO1xuICByZWFkb25seSBjaGFsbGVuZ2VSdW4gPSBzaWduYWw8Q2hlc3NpbWFsc0NoYWxsZW5nZVJ1biB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgY2hhbGxlbmdlU3RhdHMgPSBzaWduYWw8Q2hlc3NpbWFsc0NoYWxsZW5nZVN0YXRzPih0aGlzLmNoYWxsZW5nZVByb2dyZXNzLmVtcHR5U3RhdHMoKSk7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZUhpc3RvcnkgPSBzaWduYWw8Q2hlc3NpbWFsc0NoYWxsZW5nZVJ1bltdPihbXSk7XG4gIHJlYWRvbmx5IGFjdGl2ZVN0b3JlZENoYWxsZW5nZVJ1biA9IHNpZ25hbDxDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBjaGFsbGVuZ2VMYXN0V29uID0gc2lnbmFsPGJvb2xlYW4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZUxhc3RCb3QgPSBzaWduYWw8Q2hlc3NpbWFsc0NoYWxsZW5nZUJvdCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgY2hhbGxlbmdlTGFzdFJvdW5kU3RhdHMgPSBzaWduYWw8Q2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kU3RhdHMgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZU5ld1JlY29yZCA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZUludHJvVmlzaWJsZSA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IHR1cm5TZWNvbmRzUmVtYWluaW5nID0gc2lnbmFsPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRQaWVjZUlkID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRBbmltYWwgPSBzaWduYWw8Q2hlc3NpbWFsc0FuaW1hbFR5cGUgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGlzUGxheU9wdGlvbnNNb2RhbE9wZW4gPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBpc1J1bGVzTW9kYWxPcGVuID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaXNTZXR0aW5nc01vZGFsT3BlbiA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGlzQWJvdXRNb2RhbE9wZW4gPSBzaWduYWwoZmFsc2UpO1xuICBwcml2YXRlIHBlbmRpbmdTb2xvR2FtZVN0YXJ0ID0gZmFsc2U7XG4gIHByaXZhdGUgcGVuZGluZ0Fib3V0RmVlZGJhY2tOYXZpZ2F0aW9uID0gZmFsc2U7XG4gIHJlYWRvbmx5IHR1dG9yaWFsTW9kZSA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGlzQm9hcmRPcmllbnRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBtb3ZpbmdQaWVjZSA9IHNpZ25hbDxDaGVzc2ltYWxzTW92aW5nUGllY2VWaWV3IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBtb3ZlRWZmZWN0ID0gc2lnbmFsPENoZXNzaW1hbHNNb3ZlRWZmZWN0VmlldyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgc2NvcmVQb3AgPSBzaWduYWw8TWluaUdhbWVTY29yZVBvcE1ldGFkYXRhIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBwb3dlclVubG9ja1B1bHNlID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbW92ZVRyYWlsID0gY29tcHV0ZWQ8Q2hlc3NpbWFsc01vdmVUcmFpbFZpZXcgfCB1bmRlZmluZWQ+KCgpID0+IHtcbiAgICBjb25zdCBlZmZlY3QgPSB0aGlzLm1vdmVFZmZlY3QoKTtcbiAgICBpZiAoIWVmZmVjdCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGJvYXJkU2l6ZSA9IHRoaXMuZ2FtZSgpLmJvYXJkU2l6ZTtcbiAgICBjb25zdCBmcm9tQ29sID0gdGhpcy5kaXNwbGF5Q29sSW5kZXgoZWZmZWN0LmZyb20uY29sKSArIDAuNTtcbiAgICBjb25zdCBmcm9tUm93ID0gdGhpcy5kaXNwbGF5Um93SW5kZXgoZWZmZWN0LmZyb20ucm93KSArIDAuNTtcbiAgICBjb25zdCB0b0NvbCA9IHRoaXMuZGlzcGxheUNvbEluZGV4KGVmZmVjdC50by5jb2wpICsgMC41O1xuICAgIGNvbnN0IHRvUm93ID0gdGhpcy5kaXNwbGF5Um93SW5kZXgoZWZmZWN0LnRvLnJvdykgKyAwLjU7XG4gICAgY29uc3QgZnJvbVggPSAoZnJvbUNvbCAvIGJvYXJkU2l6ZSkgKiAxMDA7XG4gICAgY29uc3QgZnJvbVkgPSAoZnJvbVJvdyAvIGJvYXJkU2l6ZSkgKiAxMDA7XG4gICAgY29uc3QgZHggPSAoKHRvQ29sIC0gZnJvbUNvbCkgLyBib2FyZFNpemUpICogMTAwO1xuICAgIGNvbnN0IGR5ID0gKCh0b1JvdyAtIGZyb21Sb3cpIC8gYm9hcmRTaXplKSAqIDEwMDtcbiAgICBjb25zdCBsZW5ndGggPSBNYXRoLm1heCgxMCwgTWF0aC5oeXBvdChkeCwgZHkpKTtcbiAgICBjb25zdCBhbmdsZSA9IE1hdGguYXRhbjIoZHksIGR4KSAqICgxODAgLyBNYXRoLlBJKTtcblxuICAgIHJldHVybiB7XG4gICAgICB4OiBgJHtmcm9tWH0lYCxcbiAgICAgIHk6IGAke2Zyb21ZfSVgLFxuICAgICAgbGVuZ3RoOiBgJHtsZW5ndGh9JWAsXG4gICAgICBhbmdsZTogYCR7YW5nbGV9ZGVnYCxcbiAgICAgIGFuaW1hbDogZWZmZWN0LmFuaW1hbCxcbiAgICAgIGNhcHR1cmU6IGVmZmVjdC5jYXB0dXJlLFxuICAgIH07XG4gIH0pO1xuICByZWFkb25seSBwb3dlckNhbGxvdXQgPSBjb21wdXRlZDxNaW5pR2FtZUNhbGxvdXRNZXRhZGF0YSB8IHVuZGVmaW5lZD4oKCkgPT4ge1xuICAgIGNvbnN0IGVmZmVjdCA9IHRoaXMubW92ZUVmZmVjdCgpO1xuICAgIGlmICghZWZmZWN0Py5hbmltYWwpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3QgYW5pbWFsS2V5ID0gdGhpcy5jYXBpdGFsaXplKGVmZmVjdC5hbmltYWwpO1xuICAgIGNvbnN0IHJlc3VsdEtleSA9IGVmZmVjdC5jYXB0dXJlID8gJ0NhcHR1cmUnIDogJyc7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiB0aGlzLnQoYGNoZXNzaW1hbHNQb3dlckNhbGxvdXQke2FuaW1hbEtleX0ke3Jlc3VsdEtleX1UaXRsZWApLFxuICAgICAgYm9keTogdGhpcy50KGBjaGVzc2ltYWxzUG93ZXJDYWxsb3V0JHthbmltYWxLZXl9JHtyZXN1bHRLZXl9Qm9keWApLFxuICAgICAgaW1wYWN0OiB0aGlzLnQoZWZmZWN0LmNhcHR1cmUgPyAnY2hlc3NpbWFsc1Bvd2VyQ2FsbG91dENhcHR1cmVJbXBhY3QnIDogJ2NoZXNzaW1hbHNQb3dlckNhbGxvdXRNb3ZlSW1wYWN0JyksXG4gICAgICBpY29uOiB0aGlzLmFuaW1hbEdseXBoKGVmZmVjdC5hbmltYWwpLFxuICAgICAgaWNvblNyYzogdGhpcy5hbmltYWxBc3NldFNyYyhlZmZlY3QuYW5pbWFsKSxcbiAgICAgIHRvbmVSZ2I6IHRoaXMucG93ZXJDYWxsb3V0VG9uZShlZmZlY3QuYW5pbWFsKSxcbiAgICAgIGR1cmF0aW9uTXM6IENIRVNTSU1BTFNfUE9XRVJfQ0FMTE9VVF9NUyxcbiAgICAgIHZhcmlhbnQ6IGVmZmVjdC5jYXB0dXJlID8gJ2NhcHR1cmUnIDogJ2RlZmF1bHQnLFxuICAgIH07XG4gIH0pO1xuICByZWFkb25seSBib3RUaGlua2luZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGNvbmZpcm1BY3Rpb24gPSBzaWduYWw8Q2hlc3NpbWFsc0NvbmZpcm1BY3Rpb24gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlybWVkQWN0aW9uID0gc2lnbmFsPENoZXNzaW1hbHNDb25maXJtQWN0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBvbmxpbmVKb2luQ29kZSA9IHNpZ25hbCgnJyk7XG4gIHJlYWRvbmx5IG9ubGluZUxvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBvbmxpbmVBY3Rpb24gPSBzaWduYWw8J2NyZWF0ZScgfCAnam9pbicgfCAnYWNjZXB0JyB8ICdyZWplY3QnIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBvbmxpbmVFcnJvciA9IHNpZ25hbCgnJyk7XG4gIHJlYWRvbmx5IG9ubGluZVVpZCA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IG9ubGluZUhpc3RvcnkgPSBzaWduYWw8Q2hlc3NpbWFsc0hpc3RvcnlFbnRyeVtdPihbXSk7XG4gIHJlYWRvbmx5IHJlc3VtZVNwbGFzaFZpc2libGUgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSByZW1hdGNoTG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IG1vdmVTeW5jaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgb25saW5lQ29ubmVjdGlvblN0YXRlID0gc2lnbmFsPCdpZGxlJyB8ICdjb25uZWN0aW5nJyB8ICdsaXZlJyB8ICdlcnJvcic+KCdpZGxlJyk7XG4gIHJlYWRvbmx5IHJldmlld0luZGV4ID0gc2lnbmFsPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgbG9nZ2VkSW5Vc2VyID0gdGhpcy5hdXRoLnVzZXI7XG4gIHJlYWRvbmx5IGxvY2FsUGxheWVyUHJvZmlsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMucGxheWVyUHJvZmlsZXMuYWN0aXZlUHJvZmlsZSgpKTtcbiAgcmVhZG9ubHkgbG9jYWxQbGF5ZXJBdmF0YXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmxvY2FsUGxheWVyUHJvZmlsZSgpPy5hdmF0YXIgPz8gJ/CfjJ8nKTtcbiAgcmVhZG9ubHkgbG9nZ2VkUGxheWVyTmFtZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB1c2VyID0gdGhpcy5sb2dnZWRJblVzZXIoKTtcbiAgICBpZiAodXNlcj8ubmFtZT8udHJpbSgpKSByZXR1cm4gdXNlci5uYW1lLnRyaW0oKTtcbiAgICBpZiAodXNlcj8uZW1haWw/LnRyaW0oKSkgcmV0dXJuIHVzZXIuZW1haWwudHJpbSgpO1xuICAgIHJldHVybiB0aGlzLnBsYXllclByb2ZpbGVzLmRpc3BsYXlOYW1lKHRoaXMubG9jYWxQbGF5ZXJQcm9maWxlKCksIHRoaXMudCgnZGVmYXVsdFBsYXllck5hbWUnKSk7XG4gIH0pO1xuICByZWFkb25seSBsb2dnZWRQbGF5ZXJIYW5kbGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdXNlciA9IHRoaXMubG9nZ2VkSW5Vc2VyKCk7XG4gICAgY29uc3QgaGFuZGxlID0gdXNlcj8uaGFuZGxlPy50cmltKCk7XG4gICAgaWYgKGhhbmRsZSkgcmV0dXJuIGhhbmRsZS5zdGFydHNXaXRoKCdAJykgPyBoYW5kbGUgOiBgQCR7aGFuZGxlfWA7XG4gICAgaWYgKHVzZXI/LnVzZXJJZCkgcmV0dXJuIGBJRCAke3RoaXMuc2hvcnRVc2VySWQodXNlci51c2VySWQpfWA7XG4gICAgY29uc3QgcHJvZmlsZUlkID0gdGhpcy5sb2NhbFBsYXllclByb2ZpbGUoKT8uaWQ7XG4gICAgcmV0dXJuIHByb2ZpbGVJZCA/IGBJRCAke3RoaXMuc2hvcnRVc2VySWQocHJvZmlsZUlkKX1gIDogJyc7XG4gIH0pO1xuICByZWFkb25seSBsb2dnZWRQbGF5ZXJBdmF0YXJQcm9wcyA9IGNvbXB1dGVkPFVzZXJBdmF0YXJNZXRhZGF0YT4oKCkgPT4gKHtcbiAgICB1c2VyOiB0aGlzLmxvZ2dlZEluVXNlcigpLFxuICAgIHNpemU6ICdzbWFsbCcsXG4gICAgYm9yZGVyZWQ6IHRydWUsXG4gICAgY3NzQ2xhc3M6ICdjaGVzc2ltYWxzLXR1cm4tYXZhdGFyJyxcbiAgfSkpO1xuICByZWFkb25seSB0dXJuUGxheWVyUGFydGljaXBhbnQgPSBjb21wdXRlZDxDaGVzc2ltYWxzT25saW5lUGFydGljaXBhbnQgfCB1bmRlZmluZWQ+KCgpID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ29ubGluZScpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIGdhbWUub25saW5lPy5wYXJ0aWNpcGFudHM/LltnYW1lLmN1cnJlbnRUdXJuXTtcbiAgfSk7XG4gIHJlYWRvbmx5IHNob3VsZFVzZVR1cm5QbGF5ZXJBdmF0YXIgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSByZXR1cm4gISF0aGlzLnR1cm5QbGF5ZXJQYXJ0aWNpcGFudCgpO1xuICAgIHJldHVybiAhIXRoaXMubG9nZ2VkSW5Vc2VyKCk7XG4gIH0pO1xuICByZWFkb25seSB0dXJuUGxheWVyQXZhdGFyUHJvcHMgPSBjb21wdXRlZDxVc2VyQXZhdGFyTWV0YWRhdGE+KCgpID0+IHtcbiAgICBjb25zdCBwYXJ0aWNpcGFudCA9IHRoaXMudHVyblBsYXllclBhcnRpY2lwYW50KCk7XG4gICAgaWYgKHBhcnRpY2lwYW50KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB1c2VyOiB7XG4gICAgICAgICAgbmFtZTogcGFydGljaXBhbnQubmFtZSxcbiAgICAgICAgICBlbWFpbDogcGFydGljaXBhbnQuZW1haWwsXG4gICAgICAgICAgaGFuZGxlOiBwYXJ0aWNpcGFudC5oYW5kbGUsXG4gICAgICAgICAgYXZhdGFyVXJsOiBwYXJ0aWNpcGFudC5hdmF0YXJVcmwsXG4gICAgICAgIH0sXG4gICAgICAgIGF2YXRhclVybDogcGFydGljaXBhbnQuYXZhdGFyVXJsLFxuICAgICAgICBiYWNrZ3JvdW5kOiBwYXJ0aWNpcGFudC5jb2xvcixcbiAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgYm9yZGVyZWQ6IHRydWUsXG4gICAgICAgIGNzc0NsYXNzOiAnY2hlc3NpbWFscy10dXJuLWF2YXRhcicsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5sb2dnZWRQbGF5ZXJBdmF0YXJQcm9wcygpO1xuICB9KTtcbiAgcmVhZG9ubHkgdHVyblBsYXllckZhbGxiYWNrQXZhdGFyID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykgcmV0dXJuIHRoaXMudHVyblBsYXllclBhcnRpY2lwYW50KCk/LmF2YXRhciA/PyB0aGlzLnBsYXllckxhYmVsKGdhbWUuY3VycmVudFR1cm4pLmNoYXJBdCgwKTtcbiAgICByZXR1cm4gdGhpcy5sb2NhbFBsYXllckF2YXRhcigpO1xuICB9KTtcbiAgcmVhZG9ubHkgdHVyblBsYXllckV5ZWJyb3cgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzVHVybicpO1xuICAgIHJldHVybiB0aGlzLnQodGhpcy5sb2dnZWRJblVzZXIoKSA/ICdsb2dnZWRQbGF5ZXInIDogJ2xvY2FsUGxheWVyJyk7XG4gIH0pO1xuICByZWFkb25seSB0dXJuUGxheWVyTmFtZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ29ubGluZScpIHJldHVybiB0aGlzLnBsYXllckRpc3BsYXlOYW1lKGdhbWUuY3VycmVudFR1cm4pO1xuICAgIHJldHVybiB0aGlzLmxvZ2dlZFBsYXllck5hbWUoKTtcbiAgfSk7XG4gIHJlYWRvbmx5IHR1cm5QbGF5ZXJIYW5kbGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgIT09ICdvbmxpbmUnKSByZXR1cm4gdGhpcy5sb2dnZWRQbGF5ZXJIYW5kbGUoKTtcbiAgICBjb25zdCBwYXJ0aWNpcGFudCA9IHRoaXMudHVyblBsYXllclBhcnRpY2lwYW50KCk7XG4gICAgY29uc3QgaGFuZGxlID0gcGFydGljaXBhbnQ/LmhhbmRsZT8udHJpbSgpO1xuICAgIGlmIChoYW5kbGUpIHJldHVybiBoYW5kbGUuc3RhcnRzV2l0aCgnQCcpID8gaGFuZGxlIDogYEAke2hhbmRsZX1gO1xuICAgIGNvbnN0IHVzZXJJZCA9IHBhcnRpY2lwYW50Py5hY2NvdW50VXNlcklkIHx8IHBhcnRpY2lwYW50Py51aWQgfHwgcGFydGljaXBhbnQ/LnByb2ZpbGVJZDtcbiAgICByZXR1cm4gdXNlcklkID8gYElEICR7dGhpcy5zaG9ydFVzZXJJZCh1c2VySWQpfWAgOiAnJztcbiAgfSk7XG4gIHJlYWRvbmx5IG11c2ljRW5hYmxlZENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wodGhpcy5hdWRpby5tdXNpY0VuYWJsZWQoKSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KTtcbiAgcmVhZG9ubHkgc2Z4RW5hYmxlZENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wodGhpcy5hdWRpby5zZnhFbmFibGVkKCksIHsgbm9uTnVsbGFibGU6IHRydWUgfSk7XG4gIHJlYWRvbmx5IG11c2ljVm9sdW1lQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChNYXRoLnJvdW5kKHRoaXMuYXVkaW8ubXVzaWNWb2x1bWUoKSAqIDEwMCksIHsgbm9uTnVsbGFibGU6IHRydWUgfSk7XG4gIHJlYWRvbmx5IHNmeFZvbHVtZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woTWF0aC5yb3VuZCh0aGlzLmF1ZGlvLnNmeFZvbHVtZSgpICogMTAwKSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KTtcbiAgcmVhZG9ubHkgbXVzaWNUb2dnbGVQcm9wcyA9IGNvbXB1dGVkPFRvZ2dsZUlucHV0TWV0YWRhdGE+KCgpID0+ICh7XG4gICAgY29udHJvbDogdGhpcy5tdXNpY0VuYWJsZWRDb250cm9sLFxuICAgIGxhYmVsOiB0aGlzLnQoJ2NoZXNzaW1hbHNNdXNpY0VuYWJsZWQnKSxcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgIGp1c3RpZnk6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgfSkpO1xuICByZWFkb25seSBzZnhUb2dnbGVQcm9wcyA9IGNvbXB1dGVkPFRvZ2dsZUlucHV0TWV0YWRhdGE+KCgpID0+ICh7XG4gICAgY29udHJvbDogdGhpcy5zZnhFbmFibGVkQ29udHJvbCxcbiAgICBsYWJlbDogdGhpcy50KCdjaGVzc2ltYWxzU2Z4RW5hYmxlZCcpLFxuICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAganVzdGlmeTogJ3NwYWNlLWJldHdlZW4nLFxuICB9KSk7XG4gIHJlYWRvbmx5IG11c2ljVm9sdW1lUHJvcHMgPSBjb21wdXRlZDxSYW5nZUlucHV0TWV0YWRhdGE+KCgpID0+ICh7XG4gICAgY29udHJvbDogdGhpcy5tdXNpY1ZvbHVtZUNvbnRyb2wsXG4gICAgbGFiZWw6IGAke3RoaXMudCgnY2hlc3NpbWFsc011c2ljVm9sdW1lJyl9IMK3ICR7TWF0aC5yb3VuZCh0aGlzLmF1ZGlvLm11c2ljVm9sdW1lKCkgKiAxMDApfSVgLFxuICAgIG1pbjogMCxcbiAgICBtYXg6IDEwMCxcbiAgICBzdGVwOiA1LFxuICAgIHBpbjogdHJ1ZSxcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgIHN0YXJ0TGFiZWw6ICcwJyxcbiAgICBlbmRMYWJlbDogJzEwMCcsXG4gICAgcGluRm9ybWF0dGVyOiAodmFsdWUpID0+IGAke3ZhbHVlfSVgLFxuICB9KSk7XG4gIHJlYWRvbmx5IHNmeFZvbHVtZVByb3BzID0gY29tcHV0ZWQ8UmFuZ2VJbnB1dE1ldGFkYXRhPigoKSA9PiAoe1xuICAgIGNvbnRyb2w6IHRoaXMuc2Z4Vm9sdW1lQ29udHJvbCxcbiAgICBsYWJlbDogYCR7dGhpcy50KCdjaGVzc2ltYWxzU2Z4Vm9sdW1lJyl9IMK3ICR7TWF0aC5yb3VuZCh0aGlzLmF1ZGlvLnNmeFZvbHVtZSgpICogMTAwKX0lYCxcbiAgICBtaW46IDAsXG4gICAgbWF4OiAxMDAsXG4gICAgc3RlcDogNSxcbiAgICBwaW46IHRydWUsXG4gICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICBzdGFydExhYmVsOiAnMCcsXG4gICAgZW5kTGFiZWw6ICcxMDAnLFxuICAgIHBpbkZvcm1hdHRlcjogKHZhbHVlKSA9PiBgJHt2YWx1ZX0lYCxcbiAgfSkpO1xuICByZWFkb25seSBhdmFpbGFibGVCb3RQcm9maWxlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBkaWZmaWN1bHR5ID0gdGhpcy5zZWxlY3RlZEJvdERpZmZpY3VsdHkoKTtcbiAgICBpZiAoZGlmZmljdWx0eSA9PT0gJ25pZ2h0bWFyZScpIHJldHVybiBbXTtcbiAgICByZXR1cm4gdGhpcy5ib3RQcm9maWxlcy5maWx0ZXIoKHByb2ZpbGUpID0+IHByb2ZpbGUuZGlmZmljdWx0eSA9PT0gZGlmZmljdWx0eSk7XG4gIH0pO1xuICByZWFkb25seSBzZWxlY3RlZEJvdFByb2ZpbGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuYm90UHJvZmlsZXMuZmluZCgocHJvZmlsZSkgPT4gcHJvZmlsZS5pZCA9PT0gdGhpcy5zZWxlY3RlZEJvdFByb2ZpbGVJZCgpKSxcbiAgKTtcbiAgcmVhZG9ubHkgZ2FtZUJvdFByb2ZpbGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcHJvZmlsZUlkID0gdGhpcy5nYW1lQm90UHJvZmlsZUlkKCk7XG4gICAgcmV0dXJuIHByb2ZpbGVJZCA/IHRoaXMuYm90UHJvZmlsZXMuZmluZCgocHJvZmlsZSkgPT4gcHJvZmlsZS5pZCA9PT0gcHJvZmlsZUlkKSA6IHVuZGVmaW5lZDtcbiAgfSk7XG4gIHJlYWRvbmx5IGFjdGl2ZUNoYWxsZW5nZUJvdCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBydW4gPSB0aGlzLmNoYWxsZW5nZVJ1bigpO1xuICAgIGlmICghcnVuKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiB0aGlzLmNoYWxsZW5nZUxhZGRlcltNYXRoLm1heCgwLCB0aGlzLmNoYWxsZW5nZVJ1blJvdW5kSW5kZXgocnVuKSAtIDEpXTtcbiAgfSk7XG4gIHJlYWRvbmx5IHJlc3VtYWJsZUNoYWxsZW5nZVJ1biA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBydW4gPSB0aGlzLmFjdGl2ZVN0b3JlZENoYWxsZW5nZVJ1bigpO1xuICAgIHJldHVybiB0aGlzLmlzUmVzdW1hYmxlQ2hhbGxlbmdlUnVuKHJ1bikgPyBydW4gOiB1bmRlZmluZWQ7XG4gIH0pO1xuXG4gIEBJbnB1dCgpIHNldCBvbmxpbmVHYW1lSWQodmFsdWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBnYW1lSWQgPSB0aGlzLm9ubGluZS5ub3JtYWxpemVHYW1lSWQodmFsdWUgPz8gJycpO1xuICAgIGlmICghZ2FtZUlkKSByZXR1cm47XG4gICAgdGhpcy5wZW5kaW5nT25saW5lR2FtZUlkID0gZ2FtZUlkO1xuICAgIGlmICh0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCAhPT0gZ2FtZUlkICYmIHRoaXMub3BlbmluZ09ubGluZUdhbWVJZCAhPT0gZ2FtZUlkKSB7XG4gICAgICB2b2lkIHRoaXMub3Blbk9ubGluZUdhbWUoZ2FtZUlkKTtcbiAgICB9XG4gIH1cbiAgQElucHV0KCkgbWluaUdhbWVzUm91dGUgPSAnL21pbmktZ2FtZXMnO1xuICBASW5wdXQoKSBwcm9qZWN0aW9uTW9kZSA9IGZhbHNlO1xuXG4gIHJlYWRvbmx5IHJlcGxheUVudHJpZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmdhbWUoKS5tb3ZlSGlzdG9yeSA/PyBbXSk7XG4gIHJlYWRvbmx5IGFjdGl2ZVJldmlld0luZGV4ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGVudHJpZXMgPSB0aGlzLnJlcGxheUVudHJpZXMoKTtcbiAgICBpZiAodGhpcy5nYW1lKCkuc3RhdHVzICE9PSAnZmluaXNoZWQnIHx8IGVudHJpZXMubGVuZ3RoIDw9IDEpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnJldmlld0luZGV4KCkgPz8gZW50cmllcy5sZW5ndGggLSAxO1xuICAgIHJldHVybiBNYXRoLm1pbihNYXRoLm1heChpbmRleCwgMCksIGVudHJpZXMubGVuZ3RoIC0gMSk7XG4gIH0pO1xuICByZWFkb25seSBoYXNSZXBsYXlDb250cm9scyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYWN0aXZlUmV2aWV3SW5kZXgoKSAhPT0gdW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgcmV2aWV3R2FtZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuYWN0aXZlUmV2aWV3SW5kZXgoKTtcbiAgICBjb25zdCBlbnRyeSA9IGluZGV4ID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiB0aGlzLnJlcGxheUVudHJpZXMoKVtpbmRleF07XG4gICAgcmV0dXJuIGVudHJ5ID8gY3JlYXRlQ2hlc3NpbWFsc1Jldmlld1N0YXRlKHRoaXMuZ2FtZSgpLCBlbnRyeSkgOiB0aGlzLmdhbWUoKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGN1cnJlbnRQbGF5ZXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmdhbWUoKS5wbGF5ZXJzW3RoaXMuZ2FtZSgpLmN1cnJlbnRUdXJuXSk7XG4gIHJlYWRvbmx5IHBvd2VyUGxheWVyQ29sb3IgPSBjb21wdXRlZCgoKTogQ2hlc3NpbWFsc1BsYXllckNvbG9yID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ29ubGluZScpIHtcbiAgICAgIGNvbnN0IHJvbGUgPSB0aGlzLm9ubGluZVJvbGUoKTtcbiAgICAgIHJldHVybiByb2xlID09PSAnd2hpdGUnIHx8IHJvbGUgPT09ICdibGFjaycgPyByb2xlIDogZ2FtZS5jdXJyZW50VHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcpIHJldHVybiAnd2hpdGUnO1xuICAgIHJldHVybiBnYW1lLmN1cnJlbnRUdXJuO1xuICB9KTtcbiAgcmVhZG9ubHkgcG93ZXJQbGF5ZXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmdhbWUoKS5wbGF5ZXJzW3RoaXMucG93ZXJQbGF5ZXJDb2xvcigpXSk7XG4gIHJlYWRvbmx5IGNhblVzZVBvd2VyQ2FyZHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIHJldHVybiAoXG4gICAgICBnYW1lLnN0YXR1cyA9PT0gJ2luX3Byb2dyZXNzJyAmJlxuICAgICAgdGhpcy5wb3dlclBsYXllckNvbG9yKCkgPT09IGdhbWUuY3VycmVudFR1cm4gJiZcbiAgICAgIHRoaXMuY2FuUGxheUN1cnJlbnRUdXJuKCkgJiZcbiAgICAgICF0aGlzLmJvdFRoaW5raW5nKCkgJiZcbiAgICAgICF0aGlzLm1vdmluZ1BpZWNlKClcbiAgICApO1xuICB9KTtcbiAgcmVhZG9ubHkgbGVnYWxNb3ZlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBwaWVjZUlkID0gdGhpcy5zZWxlY3RlZFBpZWNlSWQoKTtcbiAgICBpZiAoIXBpZWNlSWQpIHJldHVybiBbXTtcbiAgICBpZiAoIXRoaXMuY2FuUGxheUN1cnJlbnRUdXJuKCkpIHJldHVybiBbXTtcbiAgICBjb25zdCBtb3ZlcyA9IGdldENoZXNzaW1hbHNMZWdhbE1vdmVzKHRoaXMuZ2FtZSgpLCBwaWVjZUlkLCB0aGlzLnNlbGVjdGVkQW5pbWFsKCkpO1xuICAgIGNvbnN0IGV4cGVjdGVkID0gdGhpcy50dXRvcmlhbEV4cGVjdGVkTW92ZSgpO1xuICAgIGlmICghZXhwZWN0ZWQpIHJldHVybiBtb3ZlcztcbiAgICByZXR1cm4gbW92ZXMuZmlsdGVyKFxuICAgICAgKG1vdmUpID0+XG4gICAgICAgIG1vdmUucGllY2VJZCA9PT0gZXhwZWN0ZWQucGllY2VJZCAmJlxuICAgICAgICBwb3NpdGlvbktleShtb3ZlLnRvKSA9PT0gcG9zaXRpb25LZXkoZXhwZWN0ZWQudG8pICYmXG4gICAgICAgIChtb3ZlLmFuaW1hbCA/PyB1bmRlZmluZWQpID09PSAoZXhwZWN0ZWQuYW5pbWFsID8/IHVuZGVmaW5lZCksXG4gICAgKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGxlZ2FsTW92ZUtleXMgPSBjb21wdXRlZCgoKSA9PiBuZXcgU2V0KHRoaXMubGVnYWxNb3ZlcygpLm1hcCgobW92ZSkgPT4gcG9zaXRpb25LZXkobW92ZS50bykpKSk7XG4gIHJlYWRvbmx5IGNhcHR1cmVNb3ZlS2V5cyA9IGNvbXB1dGVkKFxuICAgICgpID0+IG5ldyBTZXQodGhpcy5sZWdhbE1vdmVzKCkuZmlsdGVyKChtb3ZlKSA9PiAhIW1vdmUuY2FwdHVyZXNQaWVjZUlkKS5tYXAoKG1vdmUpID0+IHBvc2l0aW9uS2V5KG1vdmUudG8pKSksXG4gICk7XG4gIHJlYWRvbmx5IHdpbm5pbmdNb3ZlS2V5cyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnKSByZXR1cm4gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgY29uc3QgcHJvbW90aW9uUm93ID0gZ2FtZS5jdXJyZW50VHVybiA9PT0gJ3doaXRlJyA/IDAgOiBnYW1lLmJvYXJkU2l6ZSAtIDE7XG4gICAgcmV0dXJuIG5ldyBTZXQodGhpcy5sZWdhbE1vdmVzKCkuZmlsdGVyKChtb3ZlKSA9PiBtb3ZlLnRvLnJvdyA9PT0gcHJvbW90aW9uUm93KS5tYXAoKG1vdmUpID0+IHBvc2l0aW9uS2V5KG1vdmUudG8pKSk7XG4gIH0pO1xuICByZWFkb25seSBjYXB0dXJlUmVhZHlQaWVjZUlkcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKHRoaXMuYWN0aXZlUmV2aWV3SW5kZXgoKSAhPT0gdW5kZWZpbmVkIHx8IGdhbWUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnKSByZXR1cm4gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgY29uc3QgbW92ZXMgPSB0aGlzLmJhc2ljTW92ZXNGb3JDb2xvcihnYW1lLCBnYW1lLmN1cnJlbnRUdXJuKS5maWx0ZXIoKG1vdmUpID0+ICEhbW92ZS5jYXB0dXJlc1BpZWNlSWQpO1xuICAgIHJldHVybiBuZXcgU2V0KG1vdmVzLm1hcCgobW92ZSkgPT4gbW92ZS5waWVjZUlkKSk7XG4gIH0pO1xuICByZWFkb25seSB0aHJlYXRlbmVkUGllY2VJZHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmICh0aGlzLmFjdGl2ZVJldmlld0luZGV4KCkgIT09IHVuZGVmaW5lZCB8fCBnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJykgcmV0dXJuIG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGNvbnN0IG9wcG9uZW50ID0gZ2FtZS5jdXJyZW50VHVybiA9PT0gJ3doaXRlJyA/ICdibGFjaycgOiAnd2hpdGUnO1xuICAgIGNvbnN0IHRocmVhdGVuZWQgPSB0aGlzLmJhc2ljTW92ZXNGb3JDb2xvcihnYW1lLCBvcHBvbmVudClcbiAgICAgIC5tYXAoKG1vdmUpID0+IG1vdmUuY2FwdHVyZXNQaWVjZUlkKVxuICAgICAgLmZpbHRlcigocGllY2VJZCk6IHBpZWNlSWQgaXMgc3RyaW5nID0+ICEhcGllY2VJZCk7XG4gICAgcmV0dXJuIG5ldyBTZXQodGhyZWF0ZW5lZCk7XG4gIH0pO1xuICByZWFkb25seSBpc0FjdGlvbmFibGVUdXJuID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmdhbWUoKS5zdGF0dXMgPT09ICdpbl9wcm9ncmVzcycgJiYgdGhpcy5jYW5QbGF5Q3VycmVudFR1cm4oKSAmJiAhdGhpcy5ib3RUaGlua2luZygpICYmICF0aGlzLm1vdmVTeW5jaW5nKCksXG4gICk7XG4gIHJlYWRvbmx5IGlzV2FpdGluZ0ZvclR1cm4gPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2luX3Byb2dyZXNzJyAmJiAhdGhpcy5pc0FjdGlvbmFibGVUdXJuKCksXG4gICk7XG4gIHJlYWRvbmx5IGJvYXJkUm93cyA9IGNvbXB1dGVkKCgpID0+IEFycmF5LmZyb20oeyBsZW5ndGg6IHRoaXMucmV2aWV3R2FtZSgpLmJvYXJkU2l6ZSB9LCAoXywgaW5kZXgpID0+IGluZGV4KSk7XG4gIHJlYWRvbmx5IGJvYXJkQ29scyA9IGNvbXB1dGVkKCgpID0+IEFycmF5LmZyb20oeyBsZW5ndGg6IHRoaXMucmV2aWV3R2FtZSgpLmJvYXJkU2l6ZSB9LCAoXywgaW5kZXgpID0+IGluZGV4KSk7XG4gIHJlYWRvbmx5IGRpc3BsYXlSb3dzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmJvYXJkT3JpZW50YXRpb25Db2xvcigpID09PSAnYmxhY2snID8gWy4uLnRoaXMuYm9hcmRSb3dzKCldLnJldmVyc2UoKSA6IHRoaXMuYm9hcmRSb3dzKCksXG4gICk7XG4gIHJlYWRvbmx5IGRpc3BsYXlDb2xzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmJvYXJkT3JpZW50YXRpb25Db2xvcigpID09PSAnYmxhY2snID8gWy4uLnRoaXMuYm9hcmRDb2xzKCldLnJldmVyc2UoKSA6IHRoaXMuYm9hcmRDb2xzKCksXG4gICk7XG4gIHJlYWRvbmx5IGJvYXJkT3JpZW50YXRpb25Db2xvciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgY29uc3QgdWlkID0gdGhpcy5vbmxpbmVVaWQoKTtcbiAgICBpZiAodGhpcy50dXRvcmlhbE1vZGUoKSkgcmV0dXJuICd3aGl0ZSc7XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ29ubGluZScpIHJldHVybiB1aWQgPyB0aGlzLm9ubGluZS5wYXJ0aWNpcGFudFNpZGUoZ2FtZSwgdWlkKSA/PyAnd2hpdGUnIDogJ3doaXRlJztcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnbG9jYWwnICYmIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcpIHJldHVybiAnd2hpdGUnO1xuICAgIHJldHVybiBnYW1lLmN1cnJlbnRUdXJuO1xuICB9KTtcbiAgcmVhZG9ubHkgb25saW5lUm9sZSA9IGNvbXB1dGVkKCgpOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IgfCAnd2FpdGluZycgfCAncGVuZGluZycgfCAnc3BlY3RhdG9yJyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGNvbnN0IHVpZCA9IHRoaXMub25saW5lVWlkKCk7XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ29ubGluZScpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgaWYgKCF1aWQpIHJldHVybiAnc3BlY3RhdG9yJztcbiAgICBpZiAodGhpcy5vbmxpbmUuaXNIb3N0V2FpdGluZyhnYW1lLCB1aWQpKSByZXR1cm4gJ3dhaXRpbmcnO1xuICAgIGlmICh0aGlzLm9ubGluZS5pc1BlbmRpbmdHdWVzdChnYW1lLCB1aWQpKSByZXR1cm4gJ3BlbmRpbmcnO1xuICAgIHJldHVybiB0aGlzLm9ubGluZS5wYXJ0aWNpcGFudFNpZGUoZ2FtZSwgdWlkKSA/PyAnc3BlY3RhdG9yJztcbiAgfSk7XG4gIHJlYWRvbmx5IGNhblBsYXlDdXJyZW50VHVybiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnbG9jYWwnICYmIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcpIHtcbiAgICAgIHJldHVybiBnYW1lLmN1cnJlbnRUdXJuICE9PSBDSEVTU0lNQUxTX0JPVF9DT0xPUiAmJiAhdGhpcy5ib3RUaGlua2luZygpO1xuICAgIH1cbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJykgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIHRoaXMub25saW5lUm9sZSgpID09PSBnYW1lLmN1cnJlbnRUdXJuO1xuICB9KTtcbiAgcmVhZG9ubHkgY2FuQ29udHJvbEN1cnJlbnRHYW1lID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgIT09ICdvbmxpbmUnKSByZXR1cm4gdHJ1ZTtcbiAgICBjb25zdCByb2xlID0gdGhpcy5vbmxpbmVSb2xlKCk7XG4gICAgcmV0dXJuIHJvbGUgPT09ICd3aGl0ZScgfHwgcm9sZSA9PT0gJ2JsYWNrJztcbiAgfSk7XG4gIHJlYWRvbmx5IHJlbWF0Y2hTdGF0ZSA9IGNvbXB1dGVkPENoZXNzaW1hbHNSZW1hdGNoU3RhdGU+KCgpID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ29ubGluZScgfHwgZ2FtZS5zdGF0dXMgIT09ICdmaW5pc2hlZCcpIHJldHVybiAnbm9uZSc7XG4gICAgY29uc3QgdWlkID0gdGhpcy5vbmxpbmVVaWQoKTtcbiAgICBpZiAoIXVpZCB8fCB0aGlzLm9ubGluZVJvbGUoKSA9PT0gJ3NwZWN0YXRvcicpIHJldHVybiAnbm9uZSc7XG5cbiAgICBjb25zdCBoYXNNaW5lID0gdGhpcy5vbmxpbmUuaGFzQ3VycmVudFJlbWF0Y2hSZXF1ZXN0KGdhbWUsIHVpZCk7XG4gICAgY29uc3QgaGFzT3RoZXIgPSB0aGlzLm9ubGluZS5oYXNPcHBvbmVudFJlbWF0Y2hSZXF1ZXN0KGdhbWUsIHVpZCk7XG5cbiAgICBpZiAoaGFzT3RoZXIgJiYgIWhhc01pbmUpIHJldHVybiAnaW5jb21pbmcnO1xuICAgIGlmIChoYXNNaW5lKSByZXR1cm4gJ3JlcXVlc3RlZCc7XG4gICAgcmV0dXJuICdub25lJztcbiAgfSk7XG4gIHJlYWRvbmx5IHJlbWF0Y2hBY3Rpb25MYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMucmVtYXRjaFN0YXRlKCk7XG4gICAgaWYgKHRoaXMucmVtYXRjaExvYWRpbmcoKSkge1xuICAgICAgcmV0dXJuIHRoaXMudChzdGF0ZSA9PT0gJ2luY29taW5nJyA/ICdjaGVzc2ltYWxzQWNjZXB0aW5nUmVtYXRjaCcgOiAnY2hlc3NpbWFsc1JlcXVlc3RpbmdSZW1hdGNoJyk7XG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ2luY29taW5nJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0FjY2VwdFJlbWF0Y2gnKTtcbiAgICBpZiAoc3RhdGUgPT09ICdyZXF1ZXN0ZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzUmVtYXRjaFJlcXVlc3RlZEFjdGlvbicpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNSZW1hdGNoJyk7XG4gIH0pO1xuICByZWFkb25seSBzaG91bGRTaG93T25saW5lU3RhdHVzID0gY29tcHV0ZWQoKCkgPT5cbiAgICAhdGhpcy5wcm9qZWN0aW9uTW9kZSAmJiB0aGlzLmdhbWUoKS5tb2RlID09PSAnb25saW5lJyAmJiB0aGlzLmdhbWUoKS5zdGF0dXMgIT09ICd3YWl0aW5nJyxcbiAgKTtcbiAgcmVhZG9ubHkgb25saW5lU3RhdHVzVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGNvbnN0IHJvbGUgPSB0aGlzLm9ubGluZVJvbGUoKTtcbiAgICBpZiAodGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUoKSA9PT0gJ2Nvbm5lY3RpbmcnIHx8IHRoaXMubW92ZVN5bmNpbmcoKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZVN5bmNpbmdUaXRsZScpO1xuICAgIGlmICh0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZSgpID09PSAnZXJyb3InKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lRGlzY29ubmVjdGVkVGl0bGUnKTtcbiAgICBpZiAoZ2FtZS5zdGF0dXMgPT09ICdleHBpcmVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUV4cGlyZWRUaXRsZScpO1xuICAgIGlmIChnYW1lLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUZpbmlzaGVkVGl0bGUnKTtcbiAgICBpZiAocm9sZSA9PT0gJ3BlbmRpbmcnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lUGVuZGluZ1RpdGxlJyk7XG4gICAgaWYgKHJvbGUgPT09ICdzcGVjdGF0b3InKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lU3BlY3RhdG9yVGl0bGUnKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lQ29ubmVjdGVkVGl0bGUnKTtcbiAgfSk7XG4gIHJlYWRvbmx5IG9ubGluZVN0YXR1c0JvZHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGNvbnN0IHJvbGUgPSB0aGlzLm9ubGluZVJvbGUoKTtcbiAgICBpZiAodGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUoKSA9PT0gJ2Nvbm5lY3RpbmcnIHx8IHRoaXMubW92ZVN5bmNpbmcoKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZVN5bmNpbmdCb2R5Jyk7XG4gICAgaWYgKHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlKCkgPT09ICdlcnJvcicpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVEaXNjb25uZWN0ZWRCb2R5Jyk7XG4gICAgaWYgKGdhbWUuc3RhdHVzID09PSAnZXhwaXJlZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFeHBpcmVkQm9keScpO1xuICAgIGlmIChnYW1lLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUZpbmlzaGVkQm9keScpO1xuICAgIGlmIChyb2xlID09PSAncGVuZGluZycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNMb2JieUd1ZXN0V2FpdGluZ0JvZHknKTtcbiAgICBpZiAocm9sZSA9PT0gJ3NwZWN0YXRvcicpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVWaWV3ZXInKTtcbiAgICBpZiAodGhpcy5vbmxpbmVSb2xlKCkgPT09IHRoaXMuZ2FtZSgpLmN1cnJlbnRUdXJuKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzWW91clR1cm5Cb2R5Jyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1dhaXRpbmdUdXJuJyk7XG4gIH0pO1xuICByZWFkb25seSB0dXRvcmlhbFN0ZXBJbmRleCA9IGNvbXB1dGVkKCgpID0+IE1hdGgubWluKHRoaXMuZ2FtZSgpLm1vdmVDb3VudCwgQ0hFU1NJTUFMU19UVVRPUklBTF9TVEVQUykpO1xuICByZWFkb25seSB0dXRvcmlhbFByb2dyZXNzTGFiZWwgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJ1xuICAgICAgPyB0aGlzLnQoJ2NoZXNzaW1hbHNUdXRvcmlhbENvbXBsZXRlUHJvZ3Jlc3MnKVxuICAgICAgOiB0aGlzLnQoJ2NoZXNzaW1hbHNUdXRvcmlhbFByb2dyZXNzJylcbiAgICAgICAgICAucmVwbGFjZSgne3N0ZXB9JywgU3RyaW5nKHRoaXMudHV0b3JpYWxTdGVwSW5kZXgoKSArIDEpKVxuICAgICAgICAgIC5yZXBsYWNlKCd7dG90YWx9JywgU3RyaW5nKENIRVNTSU1BTFNfVFVUT1JJQUxfU1RFUFMpKSxcbiAgKTtcbiAgcmVhZG9ubHkgdHV0b3JpYWxUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5nYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzVHV0b3JpYWxEb25lVGl0bGUnKTtcbiAgICByZXR1cm4gdGhpcy50KGBjaGVzc2ltYWxzVHV0b3JpYWxTdGVwJHt0aGlzLnR1dG9yaWFsU3RlcEluZGV4KCkgKyAxfVRpdGxlYCk7XG4gIH0pO1xuICByZWFkb25seSB0dXRvcmlhbEJvZHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1R1dG9yaWFsRG9uZUJvZHknKTtcbiAgICByZXR1cm4gdGhpcy50KGBjaGVzc2ltYWxzVHV0b3JpYWxTdGVwJHt0aGlzLnR1dG9yaWFsU3RlcEluZGV4KCkgKyAxfUJvZHlgKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGN1cnJlbnRUdXJuVGl0bGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMudCgnY2hlc3NpbWFsc0N1cnJlbnRUdXJuJykucmVwbGFjZSgne3BsYXllcn0nLCB0aGlzLnBsYXllckxhYmVsKHRoaXMuZ2FtZSgpLmN1cnJlbnRUdXJuKSksXG4gICk7XG4gIHJlYWRvbmx5IHdpblRpdGxlID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnQoJ2NoZXNzaW1hbHNXaW5UaXRsZScpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgdGhpcy53aW5uZXJEaXNwbGF5TmFtZSgpKSxcbiAgKTtcbiAgcmVhZG9ubHkgd2luQm9keSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCByZWFzb24gPSB0aGlzLmdhbWUoKS53aW5uZXJSZWFzb24gPz8gJ3Byb21vdGlvbic7XG4gICAgY29uc3Qga2V5ID1cbiAgICAgIHJlYXNvbiA9PT0gJ2VsaW1pbmF0aW9uJ1xuICAgICAgICA/ICdjaGVzc2ltYWxzV2luRWxpbWluYXRpb24nXG4gICAgICAgIDogcmVhc29uID09PSAncmVzaWduYXRpb24nXG4gICAgICAgICAgPyAnY2hlc3NpbWFsc1dpblJlc2lnbmF0aW9uJ1xuICAgICAgICAgIDogcmVhc29uID09PSAnYmxvY2tlZCdcbiAgICAgICAgICAgID8gJ2NoZXNzaW1hbHNXaW5CbG9ja2VkJ1xuICAgICAgICAgICAgOiAnY2hlc3NpbWFsc1dpblByb21vdGlvbic7XG4gICAgcmV0dXJuIHRoaXMudChrZXkpO1xuICB9KTtcbiAgcmVhZG9ubHkgd2luUmVhc29uTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcmVhc29uID0gdGhpcy5nYW1lKCkud2lubmVyUmVhc29uID8/ICdwcm9tb3Rpb24nO1xuICAgIGNvbnN0IGtleSA9XG4gICAgICByZWFzb24gPT09ICdlbGltaW5hdGlvbidcbiAgICAgICAgPyAnY2hlc3NpbWFsc1JlYXNvbkVsaW1pbmF0aW9uJ1xuICAgICAgICA6IHJlYXNvbiA9PT0gJ3Jlc2lnbmF0aW9uJ1xuICAgICAgICAgID8gJ2NoZXNzaW1hbHNSZWFzb25SZXNpZ25hdGlvbidcbiAgICAgICAgICA6IHJlYXNvbiA9PT0gJ2Jsb2NrZWQnXG4gICAgICAgICAgICA/ICdjaGVzc2ltYWxzUmVhc29uQmxvY2tlZCdcbiAgICAgICAgICAgIDogJ2NoZXNzaW1hbHNSZWFzb25Qcm9tb3Rpb24nO1xuICAgIHJldHVybiB0aGlzLnQoa2V5KTtcbiAgfSk7XG4gIHJlYWRvbmx5IG1vdmVzU3VtbWFyeSA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy50KCdjaGVzc2ltYWxzTW92ZXNTdW1tYXJ5JykucmVwbGFjZSgne21vdmVzfScsIGAke3RoaXMuZ2FtZSgpLm1vdmVDb3VudH1gKSxcbiAgKTtcbiAgcmVhZG9ubHkgY2FwdHVyZXNCeUNvbG9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHNjb3JlOiBSZWNvcmQ8Q2hlc3NpbWFsc1BsYXllckNvbG9yLCBudW1iZXI+ID0geyB3aGl0ZTogMCwgYmxhY2s6IDAgfTtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHRoaXMuZ2FtZSgpLm1vdmVIaXN0b3J5ID8/IFtdKSB7XG4gICAgICBjb25zdCBtb3ZlID0gZW50cnkubW92ZTtcbiAgICAgIGlmICghbW92ZT8uY2FwdHVyZXNQaWVjZUlkKSBjb250aW51ZTtcbiAgICAgIGNvbnN0IHBpZWNlID0gZW50cnkucGllY2VzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IG1vdmUucGllY2VJZCk7XG4gICAgICBpZiAocGllY2U/LmNvbG9yKSBzY29yZVtwaWVjZS5jb2xvcl0gKz0gMTtcbiAgICB9XG4gICAgcmV0dXJuIHNjb3JlO1xuICB9KTtcbiAgcmVhZG9ubHkgcmVzdWx0Q2FwdHVyZXMgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMucmVwbGF5RW50cmllcygpLmZpbHRlcigoZW50cnkpID0+ICEhZW50cnkubW92ZT8uY2FwdHVyZXNQaWVjZUlkKS5sZW5ndGgsXG4gICk7XG4gIHJlYWRvbmx5IHJlc3VsdFBvd2VycyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5yZXBsYXlFbnRyaWVzKClcbiAgICAgIC5tYXAoKGVudHJ5KSA9PiBlbnRyeS5tb3ZlPy5hbmltYWwpXG4gICAgICAuZmlsdGVyKChhbmltYWwpOiBhbmltYWwgaXMgQ2hlc3NpbWFsc0FuaW1hbFR5cGUgPT4gISFhbmltYWwpLFxuICApO1xuICByZWFkb25seSBsaXZlU2NvcmUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuaXNDaGFsbGVuZ2VBY3RpdmUoKSA/IHRoaXMuY3JlYXRlR2FtZVNjb3JlKHRoaXMuZ2FtZSgpLCAnVycpLnNjb3JlIDogdGhpcy5jcmVhdGVHYW1lU2NvcmUodGhpcy5nYW1lKCkpLnNjb3JlLFxuICApO1xuICByZWFkb25seSByZXN1bHRTY29yZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY3JlYXRlR2FtZVNjb3JlKHRoaXMuZ2FtZSgpKSk7XG4gIHJlYWRvbmx5IHJlc3VsdFN0YXRzID0gY29tcHV0ZWQoKCkgPT4gW1xuICAgIHtcbiAgICAgIGxhYmVsOiB0aGlzLnQoJ2NoZXNzaW1hbHNSZXN1bHRTY29yZScpLFxuICAgICAgdmFsdWU6IFN0cmluZyh0aGlzLnJlc3VsdFNjb3JlKCkuc2NvcmUpLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6IHRoaXMudCgnY2hlc3NpbWFsc1Jlc3VsdE1vdmVzJyksXG4gICAgICB2YWx1ZTogU3RyaW5nKHRoaXMuZ2FtZSgpLm1vdmVDb3VudCksXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogdGhpcy50KCdjaGVzc2ltYWxzUmVzdWx0Q2FwdHVyZXMnKSxcbiAgICAgIHZhbHVlOiBTdHJpbmcodGhpcy5yZXN1bHRDYXB0dXJlcygpKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiB0aGlzLnQoJ2NoZXNzaW1hbHNSZXN1bHRQb3dlcnMnKSxcbiAgICAgIHZhbHVlOiBTdHJpbmcodGhpcy5yZXN1bHRQb3dlcnMoKS5sZW5ndGgpLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6IHRoaXMudCgnY2hlc3NpbWFsc1Jlc3VsdFJlYXNvbicpLFxuICAgICAgdmFsdWU6IHRoaXMud2luUmVhc29uTGFiZWwoKSxcbiAgICB9LFxuICBdKTtcbiAgcmVhZG9ubHkgcmVzdWx0UG93ZXJzTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcG93ZXJzID0gdGhpcy5yZXN1bHRQb3dlcnMoKTtcbiAgICBpZiAoIXBvd2Vycy5sZW5ndGgpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNSZXN1bHROb1Bvd2VycycpO1xuICAgIHJldHVybiBwb3dlcnMubWFwKChhbmltYWwpID0+IHRoaXMuYW5pbWFsTGFiZWwoYW5pbWFsKSkuam9pbignIMK3ICcpO1xuICB9KTtcbiAgcmVhZG9ubHkgbGl2ZVNjb3JlTGFiZWwgPSBjb21wdXRlZCgoKSA9PiBTdHJpbmcodGhpcy5saXZlU2NvcmUoKSkpO1xuICByZWFkb25seSByZXN1bHRCZXN0TW92ZUxhYmVsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGJlc3RNb3ZlID0gdGhpcy5yZXN1bHRTY29yZSgpLmJlc3RNb3ZlO1xuICAgIGlmICghYmVzdE1vdmUpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNSZXN1bHROb0Jlc3RNb3ZlJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1Jlc3VsdEJlc3RNb3ZlTGluZScpXG4gICAgICAucmVwbGFjZSgne3Njb3JlfScsIFN0cmluZyhiZXN0TW92ZS5zY29yZSkpXG4gICAgICAucmVwbGFjZSgne21vdmV9JywgYmVzdE1vdmUubGFiZWwpO1xuICB9KTtcbiAgcmVhZG9ubHkgc2hvdWxkU2hvd0JvdFJlcG9ydCA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5nYW1lKCkubW9kZSA9PT0gJ2xvY2FsJyAmJlxuICAgIHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyAmJlxuICAgICF0aGlzLnR1dG9yaWFsTW9kZSgpICYmXG4gICAgISF0aGlzLmdhbWVCb3RQcm9maWxlKCksXG4gICk7XG4gIHJlYWRvbmx5IGJvdFJlcG9ydFRpdGxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLmdhbWVCb3RQcm9maWxlKCk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0JvdFJlcG9ydFZzJykucmVwbGFjZShcbiAgICAgICd7Ym90fScsXG4gICAgICBwcm9maWxlID8gdGhpcy5ib3RQcm9maWxlTGFiZWwocHJvZmlsZSkgOiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RNb2RlJyksXG4gICAgKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGJvdFJlcG9ydEJvZHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcHJvZmlsZSA9IHRoaXMuZ2FtZUJvdFByb2ZpbGUoKTtcbiAgICBjb25zdCBib3RNb3ZlcyA9IHRoaXMucmVwbGF5RW50cmllcygpLmZpbHRlcigoZW50cnkpID0+IGVudHJ5Lm1vdmU/LnBpZWNlSWQuc3RhcnRzV2l0aCgnQicpKTtcbiAgICBjb25zdCBjYXB0dXJlcyA9IGJvdE1vdmVzLmZpbHRlcigoZW50cnkpID0+ICEhZW50cnkubW92ZT8uY2FwdHVyZXNQaWVjZUlkKS5sZW5ndGg7XG4gICAgY29uc3QgcG93ZXJzID0gYm90TW92ZXMuZmlsdGVyKChlbnRyeSkgPT4gISFlbnRyeS5tb3ZlPy5hbmltYWwpLmxlbmd0aDtcbiAgICBjb25zdCBvdXRjb21lS2V5ID1cbiAgICAgIHRoaXMuZ2FtZSgpLndpbm5lciA9PT0gQ0hFU1NJTUFMU19CT1RfQ09MT1JcbiAgICAgICAgPyAnY2hlc3NpbWFsc0JvdFJlcG9ydE91dGNvbWVXb24nXG4gICAgICAgIDogJ2NoZXNzaW1hbHNCb3RSZXBvcnRPdXRjb21lTG9zdCc7XG5cbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm90UmVwb3J0Qm9keScpXG4gICAgICAucmVwbGFjZSgne291dGNvbWV9JywgdGhpcy50KG91dGNvbWVLZXkpKVxuICAgICAgLnJlcGxhY2UoJ3tjYXB0dXJlc30nLCBTdHJpbmcoY2FwdHVyZXMpKVxuICAgICAgLnJlcGxhY2UoJ3twb3dlcnN9JywgU3RyaW5nKHBvd2VycykpXG4gICAgICAucmVwbGFjZSgne3N0eWxlfScsIHByb2ZpbGUgPyB0aGlzLmJvdFByb2ZpbGVUZW5kZW5jeShwcm9maWxlKSA6ICcnKTtcbiAgfSk7XG4gIHJlYWRvbmx5IHNlcmllc0dhbWVzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG9wcG9uZW50VWlkID0gdGhpcy5jdXJyZW50T3Bwb25lbnRVaWQoKTtcbiAgICBpZiAoIW9wcG9uZW50VWlkKSByZXR1cm4gW10gYXMgQ2hlc3NpbWFsc0hpc3RvcnlFbnRyeVtdO1xuICAgIHJldHVybiB0aGlzLm9ubGluZUhpc3RvcnkoKS5maWx0ZXIoXG4gICAgICAoZW50cnkpID0+IGVudHJ5Lm9wcG9uZW50VWlkID09PSBvcHBvbmVudFVpZCAmJiBlbnRyeS5zdGF0dXMgPT09ICdmaW5pc2hlZCcsXG4gICAgKTtcbiAgfSk7XG4gIHJlYWRvbmx5IHNlcmllc1Njb3JlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWVzID0gdGhpcy5zZXJpZXNHYW1lcygpO1xuICAgIGlmICghZ2FtZXMubGVuZ3RoKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiB7XG4gICAgICBtaW5lOiBnYW1lcy5maWx0ZXIoKGVudHJ5KSA9PiBlbnRyeS5vdXRjb21lID09PSAnd29uJykubGVuZ3RoLFxuICAgICAgcml2YWw6IGdhbWVzLmZpbHRlcigoZW50cnkpID0+IGVudHJ5Lm91dGNvbWUgPT09ICdsb3N0JykubGVuZ3RoLFxuICAgICAgdG90YWw6IGdhbWVzLmxlbmd0aCxcbiAgICB9O1xuICB9KTtcbiAgcmVhZG9ubHkgc2VyaWVzU3VtbWFyeSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzY29yZSA9IHRoaXMuc2VyaWVzU2NvcmUoKTtcbiAgICBpZiAoIXNjb3JlIHx8IHNjb3JlLnRvdGFsIDwgMikgcmV0dXJuICcnO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNTZXJpZXNTY29yZScpXG4gICAgICAucmVwbGFjZSgne21pbmV9JywgU3RyaW5nKHNjb3JlLm1pbmUpKVxuICAgICAgLnJlcGxhY2UoJ3tyaXZhbH0nLCBTdHJpbmcoc2NvcmUucml2YWwpKVxuICAgICAgLnJlcGxhY2UoJ3twbGF5ZXJ9JywgdGhpcy5yZW1hdGNoT3Bwb25lbnROYW1lKCkpO1xuICB9KTtcbiAgcmVhZG9ubHkgbGFzdFNlcmllc1dpbm5lckxhYmVsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGxhc3QgPSB0aGlzLnNlcmllc0dhbWVzKClbMF07XG4gICAgaWYgKCFsYXN0KSByZXR1cm4gJyc7XG4gICAgcmV0dXJuIGxhc3Qub3V0Y29tZSA9PT0gJ3dvbicgPyB0aGlzLnQoJ2NoZXNzaW1hbHNZb3UnKSA6IGxhc3Qub3Bwb25lbnROYW1lIHx8IHRoaXMucmVtYXRjaE9wcG9uZW50TmFtZSgpO1xuICB9KTtcbiAgcmVhZG9ubHkgY29uZmlybVRpdGxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybUFjdGlvbigpO1xuICAgIGlmIChhY3Rpb24gPT09ICdyZXN0YXJ0JykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1SZXN0YXJ0VGl0bGUnKTtcbiAgICBpZiAoYWN0aW9uID09PSAncmVzaWduJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1SZXNpZ25UaXRsZScpO1xuICAgIGlmIChhY3Rpb24gPT09ICdnYW1lcycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDb25maXJtR2FtZXNUaXRsZScpO1xuICAgIGlmIChhY3Rpb24gPT09ICdjaGFsbGVuZ2UtbmV3JykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZUNvbmZpcm1OZXdUaXRsZScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDb25maXJtTW9kZVRpdGxlJyk7XG4gIH0pO1xuICByZWFkb25seSBjb25maXJtQm9keSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmNvbmZpcm1BY3Rpb24oKTtcbiAgICBpZiAoYWN0aW9uID09PSAncmVzdGFydCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDb25maXJtUmVzdGFydEJvZHknKTtcbiAgICBpZiAoYWN0aW9uID09PSAncmVzaWduJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1SZXNpZ25Cb2R5Jyk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2dhbWVzJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1HYW1lc0JvZHknKTtcbiAgICBpZiAoYWN0aW9uID09PSAnY2hhbGxlbmdlLW5ldycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VDb25maXJtTmV3Qm9keScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDb25maXJtTW9kZUJvZHknKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGNvbmZpcm1BY3Rpb25zID0gY29tcHV0ZWQ8QnV0dG9uTWV0YWRhdGFbXT4oKCkgPT4ge1xuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybUFjdGlvbigpO1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHRleHQ6IHRoaXMudCgnY2FuY2VsJyksXG4gICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgIHN0YXRlOiAnRU5BQkxFRCcsXG4gICAgICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICAgICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICB0b2tlbjogJ2NhbmNlbCcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0ZXh0OlxuICAgICAgICAgIGFjdGlvbiA9PT0gJ3Jlc2lnbidcbiAgICAgICAgICAgID8gdGhpcy50KCdjaGVzc2ltYWxzUmVzaWduJylcbiAgICAgICAgICAgIDogYWN0aW9uID09PSAncmVzdGFydCdcbiAgICAgICAgICAgICAgPyB0aGlzLnQoJ3Jlc3RhcnQnKVxuICAgICAgICAgICAgICA6IGFjdGlvbiA9PT0gJ2dhbWVzJ1xuICAgICAgICAgICAgICAgID8gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbmdlR2FtZScpXG4gICAgICAgICAgICAgICAgOiBhY3Rpb24gPT09ICdjaGFsbGVuZ2UtbmV3J1xuICAgICAgICAgICAgICAgICAgPyB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VTdGFydE5ld0NvbmZpcm0nKVxuICAgICAgICAgICAgICAgICAgOiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFuZ2VNb2RlJyksXG4gICAgICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgICAgIHN0YXRlOiAnRU5BQkxFRCcsXG4gICAgICAgIGZpbGw6ICdzb2xpZCcsXG4gICAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgdG9rZW46ICdjb25maXJtJyxcbiAgICAgIH0sXG4gICAgXTtcbiAgfSk7XG4gIHJlYWRvbmx5IHJ1bGVzVHV0b3JpYWxBY3Rpb24gPSBjb21wdXRlZDxCdXR0b25NZXRhZGF0YT4oKCkgPT4gKHtcbiAgICB0ZXh0OiB0aGlzLnQoJ2NoZXNzaW1hbHNSdWxlc1RyeVR1dG9yaWFsJyksXG4gICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICBzdGF0ZTogJ0VOQUJMRUQnLFxuICAgIGZpbGw6ICdzb2xpZCcsXG4gICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgdHlwZTogJ2J1dHRvbicsXG4gICAgdG9rZW46ICd0dXRvcmlhbCcsXG4gIH0pKTtcbiAgcmVhZG9ubHkgcnVsZXNDbG9zZUFjdGlvbiA9IGNvbXB1dGVkPEJ1dHRvbk1ldGFkYXRhPigoKSA9PiAoe1xuICAgIHRleHQ6IHRoaXMudCgnY2xvc2UnKSxcbiAgICBjb2xvcjogJ2RhcmsnLFxuICAgIHN0YXRlOiAnRU5BQkxFRCcsXG4gICAgZmlsbDogJ291dGxpbmUnLFxuICAgIHNoYXBlOiAncm91bmQnLFxuICAgIHR5cGU6ICdidXR0b24nLFxuICAgIHRva2VuOiAnY2xvc2UnLFxuICB9KSk7XG4gIHJlYWRvbmx5IGFib3V0QWN0aW9ucyA9IGNvbXB1dGVkPEJ1dHRvbk1ldGFkYXRhW10+KCgpID0+IFtcbiAgICB7XG4gICAgICB0ZXh0OiB0aGlzLnQoJ2Nsb3NlJyksXG4gICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICB0b2tlbjogJ2Nsb3NlJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRleHQ6IHRoaXMudCgnY2hlc3NpbWFsc0Fib3V0RmVlZGJhY2snKSxcbiAgICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgICBzdGF0ZTogJ0VOQUJMRUQnLFxuICAgICAgZmlsbDogJ3NvbGlkJyxcbiAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICB0b2tlbjogJ2ZlZWRiYWNrJyxcbiAgICB9LFxuICBdKTtcbiAgcmVhZG9ubHkgYWN0aW9uSGludCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBwaWVjZUlkID0gdGhpcy5zZWxlY3RlZFBpZWNlSWQoKTtcbiAgICBpZiAoIXBpZWNlSWQpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNQaWNrQW55UGllY2UnKTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEFuaW1hbCgpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzUGlja1Bvd2VyVGFyZ2V0Jyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1BpY2tUYXJnZXQnKTtcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pMThuLnJlZ2lzdGVyRGVmYXVsdHMoJ01pbmlHYW1lcycsIE1JTklfR0FNRVNfSTE4Tik7XG4gICAgdGhpcy5hdWRpby5wcmVsb2FkQ2hlc3NpbWFsc1NhbXBsZXMoKTtcbiAgICB0aGlzLmF1ZGlvLnN0b3BNdXNpYygpO1xuICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljU29vbigpO1xuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5tdXNpY0VuYWJsZWRDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKGVuYWJsZWQpID0+IHtcbiAgICAgICAgdGhpcy5hdWRpby5zZXRNdXNpY0VuYWJsZWQoZW5hYmxlZCk7XG4gICAgICAgIGlmIChlbmFibGVkKSB0aGlzLnN5bmNDaGVzc2ltYWxzTXVzaWNBZnRlclNldHRpbmdzQ2hhbmdlKCk7XG4gICAgICB9KSxcbiAgICApO1xuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5zZnhFbmFibGVkQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChlbmFibGVkKSA9PiB0aGlzLmF1ZGlvLnNldFNmeEVuYWJsZWQoZW5hYmxlZCkpLFxuICAgICk7XG4gICAgdGhpcy5yb3V0ZVN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLm11c2ljVm9sdW1lQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2b2x1bWUpID0+IHRoaXMuc2V0TXVzaWNWb2x1bWUodm9sdW1lKSksXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMuc2Z4Vm9sdW1lQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2b2x1bWUpID0+IHRoaXMuc2V0U2Z4Vm9sdW1lKHZvbHVtZSkpLFxuICAgICk7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLmxvZ2dlZEluVXNlcigpO1xuICAgICAgaWYgKHVzZXIpIHtcbiAgICAgICAgdGhpcy5xdWV1ZUhpc3RvcnlXYXRjaCgpO1xuICAgICAgICB0aGlzLndhdGNoQ2hhbGxlbmdlU3RhdHMoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5oaXN0b3J5VWlkID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5oaXN0b3J5U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5oaXN0b3J5U3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5vbmxpbmVIaXN0b3J5LnNldChbXSk7XG4gICAgICB0aGlzLmNoYWxsZW5nZVN0YXRzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5jaGFsbGVuZ2VTdGF0c1N1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuY2hhbGxlbmdlUnVuc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuY2hhbGxlbmdlUnVuc1N1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuY2hhbGxlbmdlQWN0aXZlUnVuU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5jaGFsbGVuZ2VBY3RpdmVSdW5TdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmNoYWxsZW5nZVN0YXRzLnNldCh0aGlzLmNoYWxsZW5nZVByb2dyZXNzLmVtcHR5U3RhdHMoKSk7XG4gICAgICB0aGlzLmNoYWxsZW5nZUhpc3Rvcnkuc2V0KFtdKTtcbiAgICAgIHRoaXMuYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuLnNldCh1bmRlZmluZWQpO1xuICAgIH0sIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSk7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICAgIGlmICh0aGlzLnR1dG9yaWFsTW9kZSgpIHx8IGdhbWUuc3RhdHVzICE9PSAnZmluaXNoZWQnIHx8IHRoaXMuY2hhbGxlbmdlUGhhc2UoKSAhPT0gJ3BsYXlpbmcnKSByZXR1cm47XG4gICAgICBjb25zdCBrZXkgPSBgJHtnYW1lLmlkfToke2dhbWUubW92ZUNvdW50fToke2dhbWUud2lubmVyID8/ICdub25lJ306JHtnYW1lLndpbm5lclJlYXNvbiA/PyAnbm9uZSd9YDtcbiAgICAgIGlmICh0aGlzLmxhc3RDaGFsbGVuZ2VIYW5kbGVkS2V5ID09PSBrZXkpIHJldHVybjtcbiAgICAgIHRoaXMubGFzdENoYWxsZW5nZUhhbmRsZWRLZXkgPSBrZXk7XG4gICAgICB0aGlzLmhhbmRsZUNoYWxsZW5nZVJvdW5kRmluaXNoZWQoZ2FtZSk7XG4gICAgfSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KTtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgICAgaWYgKGdhbWUuc3RhdHVzICE9PSAnZmluaXNoZWQnIHx8IHRoaXMuY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ3BsYXlpbmcnKSByZXR1cm47XG4gICAgICBjb25zdCByZXN1bHQgPSB0aGlzLm1vZGVTdGF0c1Jlc3VsdChnYW1lKTtcbiAgICAgIGlmICghcmVzdWx0KSByZXR1cm47XG4gICAgICBjb25zdCBrZXkgPSBgJHtyZXN1bHQubW9kZX06JHtnYW1lLmlkfToke2dhbWUubW92ZUNvdW50fToke2dhbWUud2lubmVyID8/ICdub25lJ306JHtnYW1lLndpbm5lclJlYXNvbiA/PyAnbm9uZSd9YDtcbiAgICAgIGlmICh0aGlzLmxhc3RNb2RlU3RhdHNIYW5kbGVkS2V5ID09PSBrZXkpIHJldHVybjtcbiAgICAgIHRoaXMubGFzdE1vZGVTdGF0c0hhbmRsZWRLZXkgPSBrZXk7XG4gICAgICB2b2lkIHRoaXMuY2hhbGxlbmdlUHJvZ3Jlc3MucmVjb3JkTW9kZVJlc3VsdChyZXN1bHQubW9kZSwgcmVzdWx0LndvbiwgcmVzdWx0LnJvdW5kU3RhdHMpLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1tDaGVzc2ltYWxzXSBtb2RlIHN0YXRzIHNhdmUgZmFpbGVkJywgZXJyb3IpO1xuICAgICAgfSk7XG4gICAgfSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KTtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgdGhpcy5zeW5jVHVyblRpbWVyKCk7XG4gICAgfSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucmVzZXRGaW5pc2hlZExvY2FsR2FtZUZvck5leHRWaXNpdCh0cnVlKTtcbiAgICB0aGlzLmF1ZGlvLnN0b3BNdXNpYygpO1xuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICBpZiAodGhpcy5ib2FyZE9yaWVudGF0aW9uVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLmJvYXJkT3JpZW50YXRpb25UaW1lcik7XG4gICAgaWYgKHRoaXMubW92ZUFuaW1hdGlvblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIpO1xuICAgIGlmICh0aGlzLm1vdmVFZmZlY3RTdGFydFRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlRWZmZWN0U3RhcnRUaW1lcik7XG4gICAgaWYgKHRoaXMubW92ZUVmZmVjdENsZWFyVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLm1vdmVFZmZlY3RDbGVhclRpbWVyKTtcbiAgICBpZiAodGhpcy5zY29yZVBvcENsZWFyVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLnNjb3JlUG9wQ2xlYXJUaW1lcik7XG4gICAgaWYgKHRoaXMucG93ZXJVbmxvY2tUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMucG93ZXJVbmxvY2tUaW1lcik7XG4gICAgaWYgKHRoaXMuY2hhbGxlbmdlSW50cm9UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuY2hhbGxlbmdlSW50cm9UaW1lcik7XG4gICAgaWYgKHRoaXMuYm90VHVyblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5ib3RUdXJuVGltZXIpO1xuICAgIGlmICh0aGlzLmhpc3RvcnlXYXRjaFRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5oaXN0b3J5V2F0Y2hUaW1lcik7XG4gICAgdGhpcy5jbGVhclR1cm5UaW1lcigpO1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuaGlzdG9yeVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNoYWxsZW5nZVN0YXRzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY2hhbGxlbmdlUnVuc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNoYWxsZW5nZUFjdGl2ZVJ1blN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSB7XG4gICAgICAgICAgdGhpcy5yZXNldEZpbmlzaGVkTG9jYWxHYW1lRm9yTmV4dFZpc2l0KHRydWUpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICApO1xuICAgIGNvbnN0IGdhbWVJZCA9IHRoaXMucGVuZGluZ09ubGluZUdhbWVJZDtcbiAgICBpZiAoZ2FtZUlkICYmIHRoaXMub3BlbmVkT25saW5lR2FtZUlkICE9PSBnYW1lSWQgJiYgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkICE9PSBnYW1lSWQpIHtcbiAgICAgIHZvaWQgdGhpcy5vcGVuT25saW5lR2FtZShnYW1lSWQpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksICdNaW5pR2FtZXMnKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvcnRVc2VySWQodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IHZhbHVlLnRyaW0oKTtcbiAgICBpZiAobm9ybWFsaXplZC5sZW5ndGggPD0gMTApIHJldHVybiBub3JtYWxpemVkO1xuICAgIHJldHVybiBgJHtub3JtYWxpemVkLnNsaWNlKDAsIDQpfeKApiR7bm9ybWFsaXplZC5zbGljZSgtNCl9YDtcbiAgfVxuXG4gIHByaXZhdGUgcmFuZ2VWYWx1ZVRvTnVtYmVyKHZhbHVlOiBudW1iZXIgfCBSYW5nZVZhbHVlKTogbnVtYmVyIHtcbiAgICBjb25zdCByYXcgPSB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInID8gdmFsdWUgOiB2YWx1ZS51cHBlciA/PyB2YWx1ZS5sb3dlciA/PyAwO1xuICAgIHJldHVybiBNYXRoLm1pbigxMDAsIE1hdGgubWF4KDAsIE1hdGgucm91bmQocmF3KSkpO1xuICB9XG5cbiAgc3RhcnRDaGFsbGVuZ2UoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzQ2hhbGxlbmdlQWN0aXZlKCkgJiYgdGhpcy5yZXN1bWFibGVDaGFsbGVuZ2VSdW4oKSkge1xuICAgICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCgnY2hhbGxlbmdlLW5ldycpO1xuICAgICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHN0YWxlUnVuID0gdGhpcy5hY3RpdmVTdG9yZWRDaGFsbGVuZ2VSdW4oKTtcbiAgICBpZiAoc3RhbGVSdW4gJiYgIXRoaXMuaXNSZXN1bWFibGVDaGFsbGVuZ2VSdW4oc3RhbGVSdW4pKSB7XG4gICAgICB0aGlzLmFiYW5kb25DaGFsbGVuZ2VSdW4oc3RhbGVSdW4pO1xuICAgIH1cbiAgICB0aGlzLmNyZWF0ZU5ld0NoYWxsZW5nZVJ1bigpO1xuICB9XG5cbiAgcmVxdWVzdE5ld0NoYWxsZW5nZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZXN1bWFibGVDaGFsbGVuZ2VSdW4oKSB8fCB0aGlzLmlzQ2hhbGxlbmdlQWN0aXZlKCkpIHtcbiAgICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ2NoYWxsZW5nZS1uZXcnKTtcbiAgICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNyZWF0ZU5ld0NoYWxsZW5nZVJ1bigpO1xuICB9XG5cbiAgb3BlbkNoYWxsZW5nZVZpZXcoKTogdm9pZCB7XG4gICAgdGhpcy5zY3JlZW4uc2V0KCdjaGFsbGVuZ2UnKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIGJhY2tUb0hvbWUoKTogdm9pZCB7XG4gICAgdGhpcy5jYW5jZWxBY3RpdmVHYW1lcGxheUZlZWRiYWNrKCk7XG4gICAgdGhpcy5zY3JlZW4uc2V0KCdob21lJyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICBwcml2YXRlIGNhbmNlbEFjdGl2ZUdhbWVwbGF5RmVlZGJhY2soKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLmNsZWFyVHVyblRpbWVyKCk7XG4gICAgaWYgKHRoaXMubW92ZUVmZmVjdFN0YXJ0VGltZXIpIGNsZWFyVGltZW91dCh0aGlzLm1vdmVFZmZlY3RTdGFydFRpbWVyKTtcbiAgICBpZiAodGhpcy5tb3ZlRWZmZWN0Q2xlYXJUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMubW92ZUVmZmVjdENsZWFyVGltZXIpO1xuICAgIGlmICh0aGlzLnNjb3JlUG9wQ2xlYXJUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuc2NvcmVQb3BDbGVhclRpbWVyKTtcbiAgICB0aGlzLm1vdmVFZmZlY3RTdGFydFRpbWVyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMubW92ZUVmZmVjdENsZWFyVGltZXIgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zY29yZVBvcENsZWFyVGltZXIgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5tb3ZlRWZmZWN0LnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2NvcmVQb3Auc2V0KHVuZGVmaW5lZCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU5ld0NoYWxsZW5nZVJ1bigpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0Q2hhbGxlbmdlU2Vzc2lvblN0YXRlKCk7XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuICAgIGNvbnN0IGlkID0gYGNoYWxsZW5nZS0ke0RhdGUubm93KCkudG9TdHJpbmcoMzYpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIsIDgpfWA7XG4gICAgY29uc3QgcnVuOiBDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuID0ge1xuICAgICAgaWQsXG4gICAgICBzY2hlbWFWZXJzaW9uOiAyLFxuICAgICAgc3RhdHVzOiAnYWN0aXZlJyxcbiAgICAgIGxpdmVzU3RhcnQ6IDMsXG4gICAgICBsaXZlc1JlbWFpbmluZzogMyxcbiAgICAgIHJvdW5kSW5kZXg6IDEsXG4gICAgICBjdXJyZW50Um91bmQ6IDEsXG4gICAgICByb3VuZHNXb246IDAsXG4gICAgICBoaWdoZXN0Um91bmRSZWFjaGVkOiAxLFxuICAgICAgYWN0aXZlUm91bmRJZDogYCR7aWR9OjFgLFxuICAgICAgd2luczogMCxcbiAgICAgIGxvc3NlczogMCxcbiAgICAgIGJlc3RTdHJlYWtJblJ1bjogMCxcbiAgICAgIGN1cnJlbnRTdHJlYWs6IDAsXG4gICAgICBib3RMYWRkZXI6IHRoaXMuY2hhbGxlbmdlTGFkZGVyLm1hcCgoYm90KSA9PiBib3QuaWQpLFxuICAgICAgcm91bmRSZXN1bHRzOiBbXSxcbiAgICAgIHN0YXJ0ZWRBdDogbm93LFxuICAgICAgbGFzdEV2ZW50QXQ6IG5vdyxcbiAgICAgIHVwZGF0ZWRBdDogbm93LFxuICAgIH07XG4gICAgdGhpcy5jaGFsbGVuZ2VSdW4uc2V0KHJ1bik7XG4gICAgdGhpcy5hY3RpdmVTdG9yZWRDaGFsbGVuZ2VSdW4uc2V0KHJ1bik7XG4gICAgdGhpcy5zdGFydENoYWxsZW5nZVJvdW5kKHJ1bik7XG4gICAgdm9pZCB0aGlzLmNoYWxsZW5nZVByb2dyZXNzLnJlY29yZENoYWxsZW5nZVN0YXJ0ZWQodGhpcy5jaGFsbGVuZ2VSdW4oKSA/PyBydW4pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gY2hhbGxlbmdlIHJ1biBzYXZlIGZhaWxlZCcsIGVycm9yKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRDaGFsbGVuZ2VTZXNzaW9uU3RhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLmRpc21pc3NDaGFsbGVuZ2VJbnRybygpO1xuICAgIHRoaXMuY2hhbGxlbmdlUnVuLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlUGhhc2Uuc2V0KCdpZGxlJyk7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0V29uLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdEJvdC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RSb3VuZFN0YXRzLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTmV3UmVjb3JkLnNldChmYWxzZSk7XG4gICAgdGhpcy5sYXN0Q2hhbGxlbmdlSGFuZGxlZEtleSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmxhc3RPdXRjb21lU291bmRLZXkgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2xlYXJSZXZpZXcoKTtcbiAgfVxuXG4gIHJlc3VtZUNoYWxsZW5nZShydW4gPSB0aGlzLmFjdGl2ZVN0b3JlZENoYWxsZW5nZVJ1bigpKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzUmVzdW1hYmxlQ2hhbGxlbmdlUnVuKHJ1bikpIHtcbiAgICAgIHRoaXMuYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuLnNldCh1bmRlZmluZWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNoYWxsZW5nZVJ1bi5zZXQocnVuKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RXb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0Qm90LnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdFJvdW5kU3RhdHMuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VOZXdSZWNvcmQuc2V0KGZhbHNlKTtcbiAgICBjb25zdCBzYXZlZEdhbWUgPSB0aGlzLmFjdGl2ZUdhbWVGb3JSdW4ocnVuKTtcbiAgICBpZiAoc2F2ZWRHYW1lKSB7XG4gICAgICB0aGlzLmVudGVyQ2hhbGxlbmdlUm91bmQocnVuLCBzYXZlZEdhbWUsIGZhbHNlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdGFydENoYWxsZW5nZVJvdW5kKHJ1bik7XG4gIH1cblxuICBjb250aW51ZUNoYWxsZW5nZSgpOiB2b2lkIHtcbiAgICBjb25zdCBydW4gPSB0aGlzLmNoYWxsZW5nZVJ1bigpO1xuICAgIGlmICghcnVuIHx8IHRoaXMuY2hhbGxlbmdlUGhhc2UoKSAhPT0gJ2JldHdlZW4nKSByZXR1cm47XG4gICAgdGhpcy5zdGFydENoYWxsZW5nZVJvdW5kKHJ1bik7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0Q2hhbGxlbmdlUm91bmQocnVuOiBDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuKTogdm9pZCB7XG4gICAgY29uc3QgYm90ID0gdGhpcy5jaGFsbGVuZ2VMYWRkZXJbTWF0aC5tYXgoMCwgdGhpcy5jaGFsbGVuZ2VSdW5Sb3VuZEluZGV4KHJ1bikgLSAxKV07XG4gICAgaWYgKCFib3QpIHtcbiAgICAgIHRoaXMuY2hhbGxlbmdlUGhhc2Uuc2V0KCdjb21wbGV0ZWQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5lbnRlckNoYWxsZW5nZVJvdW5kKHJ1biwgY3JlYXRlQ2hlc3NpbWFsc0dhbWUoYm90LmJvYXJkU2l6ZSksIHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbnRlckNoYWxsZW5nZVJvdW5kKHJ1bjogQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1biwgZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgc2hvd0ludHJvOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgYm90ID0gdGhpcy5jaGFsbGVuZ2VMYWRkZXJbTWF0aC5tYXgoMCwgcnVuLmN1cnJlbnRSb3VuZCAtIDEpXTtcbiAgICBpZiAoIWJvdCkge1xuICAgICAgdGhpcy5jaGFsbGVuZ2VQaGFzZS5zZXQoJ2NvbXBsZXRlZCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9ubGluZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLnR1dG9yaWFsTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlLnNldCgnaWRsZScpO1xuICAgIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUuc2V0KCdib3QnKTtcbiAgICB0aGlzLnNlbGVjdGVkQm9hcmRTaXplLnNldChib3QuYm9hcmRTaXplKTtcbiAgICB0aGlzLnNlbGVjdGVkQm90RGlmZmljdWx0eS5zZXQoYm90LmRpZmZpY3VsdHkpO1xuICAgIHRoaXMuc2VsZWN0ZWROaWdodG1hcmVNb2RlLnNldCgnbm9uZScpO1xuICAgIHRoaXMuc2VsZWN0ZWRCb3RQcm9maWxlSWQuc2V0KGJvdC5wcm9maWxlSWQpO1xuICAgIHRoaXMuZ2FtZUJvdFByb2ZpbGVJZC5zZXQoYm90LnByb2ZpbGVJZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VQaGFzZS5zZXQoJ3BsYXlpbmcnKTtcbiAgICB0aGlzLmxhc3RDaGFsbGVuZ2VIYW5kbGVkS2V5ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMubGFzdE91dGNvbWVTb3VuZEtleSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmF1ZGlvLnN0b3BNdXNpYygpO1xuICAgIHRoaXMuZ2FtZS5zZXQoZ2FtZSk7XG4gICAgdGhpcy5wZXJzaXN0QWN0aXZlQ2hhbGxlbmdlR2FtZShnYW1lKTtcbiAgICB0aGlzLmNsZWFyUmV2aWV3KCk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2NyZWVuLnNldCgnZ2FtZScpO1xuICAgIGlmIChzaG93SW50cm8pIHRoaXMuc2hvd0NoYWxsZW5nZUludHJvKCk7XG4gICAgZWxzZSB0aGlzLmRpc21pc3NDaGFsbGVuZ2VJbnRybygpO1xuICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzR2FtZU11c2ljU29vbigpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIHRoaXMuZm9jdXNCb2FyZFNvb24oKTtcbiAgICB0aGlzLnF1ZXVlQm90VHVybklmTmVlZGVkKCk7XG4gIH1cblxuICBwcml2YXRlIGlzUmVzdW1hYmxlQ2hhbGxlbmdlUnVuKHJ1bjogQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1biB8IHVuZGVmaW5lZCk6IHJ1biBpcyBDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuIHtcbiAgICBpZiAoIXJ1biB8fCBydW4uc3RhdHVzICE9PSAnYWN0aXZlJykgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChydW4ubGl2ZXNSZW1haW5pbmcgPD0gMCkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChydW4uY3VycmVudFJvdW5kIDwgMSB8fCBydW4uY3VycmVudFJvdW5kID4gdGhpcy5jaGFsbGVuZ2VMYWRkZXIubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHJ1bi53aW5zID49IHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChydW4uY3VycmVudFJvdW5kICE9PSBydW4ud2lucyArIDEpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gISF0aGlzLmNoYWxsZW5nZUxhZGRlcltydW4uY3VycmVudFJvdW5kIC0gMV07XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUNvbmZpZ3VyZWRMb2NhbEdhbWUoYm9hcmRTaXplOiBDaGVzc2ltYWxzQm9hcmRTaXplKTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSB7XG4gICAgY29uc3QgZ2FtZSA9IGNyZWF0ZUNoZXNzaW1hbHNHYW1lKGJvYXJkU2l6ZSk7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSAhPT0gJ2JvdCcpIHJldHVybiBnYW1lO1xuICAgIHJldHVybiB0aGlzLmFwcGx5TmlnaHRtYXJlUHJlc2V0KGdhbWUsIHRoaXMuYWN0aXZlTmlnaHRtYXJlTW9kZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlOaWdodG1hcmVQcmVzZXQoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgbW9kZTogQ2hlc3NpbWFsc05pZ2h0bWFyZU1vZGUpOiBDaGVzc2ltYWxzR2FtZVN0YXRlIHtcbiAgICBpZiAobW9kZSAhPT0gJ3ByaWRlJykgcmV0dXJuIGdhbWU7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uZ2FtZSxcbiAgICAgIHBsYXllcnM6IHtcbiAgICAgICAgLi4uZ2FtZS5wbGF5ZXJzLFxuICAgICAgICBibGFjazoge1xuICAgICAgICAgIC4uLmdhbWUucGxheWVycy5ibGFjayxcbiAgICAgICAgICBjYXJkczoge1xuICAgICAgICAgICAgLi4uZ2FtZS5wbGF5ZXJzLmJsYWNrLmNhcmRzLFxuICAgICAgICAgICAgbGlvbjoge1xuICAgICAgICAgICAgICAuLi5nYW1lLnBsYXllcnMuYmxhY2suY2FyZHMubGlvbixcbiAgICAgICAgICAgICAgdXNlZDogZmFsc2UsXG4gICAgICAgICAgICAgIHVzZXNSZW1haW5pbmc6IDQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBzdGFydEdhbWUoKTogdm9pZCB7XG4gICAgdGhpcy5vbmxpbmVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VQaGFzZS5zZXQoJ2lkbGUnKTtcbiAgICB0aGlzLmNoYWxsZW5nZVJ1bi5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RXb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0Qm90LnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdFJvdW5kU3RhdHMuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VOZXdSZWNvcmQuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmRpc21pc3NDaGFsbGVuZ2VJbnRybygpO1xuICAgIHRoaXMudHV0b3JpYWxNb2RlLnNldChmYWxzZSk7XG4gICAgdGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUuc2V0KCdpZGxlJyk7XG4gICAgdGhpcy5nYW1lQm90UHJvZmlsZUlkLnNldCh0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnID8gdGhpcy5zZWxlY3RlZEJvdFByb2ZpbGVJZCgpIDogdW5kZWZpbmVkKTtcbiAgICB0aGlzLmxhc3RPdXRjb21lU291bmRLZXkgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5hdWRpby5zdG9wTXVzaWMoKTtcbiAgICB0aGlzLmdhbWUuc2V0KHRoaXMuY3JlYXRlQ29uZmlndXJlZExvY2FsR2FtZSh0aGlzLnNlbGVjdGVkQm9hcmRTaXplKCkpKTtcbiAgICB0aGlzLmNsZWFyUmV2aWV3KCk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2NyZWVuLnNldCgnZ2FtZScpO1xuICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzR2FtZU11c2ljU29vbigpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIHRoaXMuZm9jdXNCb2FyZFNvb24oKTtcbiAgICB0aGlzLnF1ZXVlQm90VHVybklmTmVlZGVkKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUNoYWxsZW5nZVJvdW5kRmluaXNoZWQoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IHZvaWQge1xuICAgIGNvbnN0IHJ1biA9IHRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gICAgY29uc3QgYm90ID0gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKTtcbiAgICBpZiAoIXJ1biB8fCAhYm90KSByZXR1cm47XG5cbiAgICBjb25zdCByb3VuZEluZGV4ID0gdGhpcy5jaGFsbGVuZ2VSdW5Sb3VuZEluZGV4KHJ1bik7XG4gICAgY29uc3Qgcm91bmRzV29uID0gdGhpcy5jaGFsbGVuZ2VSdW5Sb3VuZHNXb24ocnVuKTtcbiAgICBjb25zdCB3b24gPSBnYW1lLndpbm5lciA9PT0gJ3doaXRlJztcbiAgICBjb25zdCByb3VuZFN0YXRzID0gdGhpcy5jcmVhdGVDaGFsbGVuZ2VSb3VuZFN0YXRzKGdhbWUpO1xuICAgIGNvbnN0IG5leHRMaXZlcyA9IHdvbiA/IHJ1bi5saXZlc1JlbWFpbmluZyA6IE1hdGgubWF4KDAsIHJ1bi5saXZlc1JlbWFpbmluZyAtIDEpO1xuICAgIGNvbnN0IG5leHRTdHJlYWsgPSB3b24gPyBydW4uY3VycmVudFN0cmVhayArIDEgOiAwO1xuICAgIGNvbnN0IG5leHRSb3VuZCA9IHdvbiA/IE1hdGgubWluKHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aCwgcm91bmRJbmRleCArIDEpIDogcm91bmRJbmRleDtcbiAgICBjb25zdCBuZXh0Um91bmRzV29uID0gcm91bmRzV29uICsgKHdvbiA/IDEgOiAwKTtcbiAgICBjb25zdCBjb21wbGV0ZWQgPSB3b24gJiYgcm91bmRJbmRleCA+PSB0aGlzLmNoYWxsZW5nZUxhZGRlci5sZW5ndGg7XG4gICAgY29uc3QgZmFpbGVkID0gIXdvbiAmJiBuZXh0TGl2ZXMgPD0gMDtcbiAgICBjb25zdCBmaW5pc2hlZEF0ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuICAgIGNvbnN0IHJvdW5kUmVzdWx0OiBDaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRSZXN1bHQgPSB7XG4gICAgICByb3VuZDogcm91bmRJbmRleCxcbiAgICAgIGJvdElkOiBib3QuaWQsXG4gICAgICBwcm9maWxlSWQ6IGJvdC5wcm9maWxlSWQsXG4gICAgICB3b24sXG4gICAgICBsaXZlc1JlbWFpbmluZzogbmV4dExpdmVzLFxuICAgICAgc3RhdHM6IHJvdW5kU3RhdHMsXG4gICAgICBmaW5pc2hlZEF0LFxuICAgIH07XG4gICAgY29uc3QgbmV4dFJ1bjogQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1biA9IHtcbiAgICAgIC4uLnJ1bixcbiAgICAgIHN0YXR1czogY29tcGxldGVkID8gJ2NvbXBsZXRlZCcgOiBmYWlsZWQgPyAnZmFpbGVkJyA6ICdhY3RpdmUnLFxuICAgICAgbGl2ZXNSZW1haW5pbmc6IG5leHRMaXZlcyxcbiAgICAgIHdpbnM6IHJ1bi53aW5zICsgKHdvbiA/IDEgOiAwKSxcbiAgICAgIGxvc3NlczogcnVuLmxvc3NlcyArICh3b24gPyAwIDogMSksXG4gICAgICBjdXJyZW50U3RyZWFrOiBuZXh0U3RyZWFrLFxuICAgICAgYmVzdFN0cmVha0luUnVuOiBNYXRoLm1heChydW4uYmVzdFN0cmVha0luUnVuLCBuZXh0U3RyZWFrKSxcbiAgICAgIHJvdW5kSW5kZXg6IGNvbXBsZXRlZCB8fCBmYWlsZWQgPyByb3VuZEluZGV4IDogbmV4dFJvdW5kLFxuICAgICAgY3VycmVudFJvdW5kOiBjb21wbGV0ZWQgfHwgZmFpbGVkID8gcm91bmRJbmRleCA6IG5leHRSb3VuZCxcbiAgICAgIHJvdW5kc1dvbjogbmV4dFJvdW5kc1dvbixcbiAgICAgIGhpZ2hlc3RSb3VuZFJlYWNoZWQ6IE1hdGgubWF4KHJ1bi5oaWdoZXN0Um91bmRSZWFjaGVkID8/IHJvdW5kSW5kZXgsIHJvdW5kSW5kZXgpLFxuICAgICAgYWN0aXZlUm91bmRJZDogY29tcGxldGVkIHx8IGZhaWxlZCA/IHVuZGVmaW5lZCA6IGAke3J1bi5pZH06JHtuZXh0Um91bmR9YCxcbiAgICAgIHJvdW5kUmVzdWx0czogWy4uLnJ1bi5yb3VuZFJlc3VsdHMsIHJvdW5kUmVzdWx0XSxcbiAgICAgIGxhc3RFdmVudEF0OiBmaW5pc2hlZEF0LFxuICAgICAgYWN0aXZlR2FtZTogdW5kZWZpbmVkLFxuICAgICAgdXBkYXRlZEF0OiBmaW5pc2hlZEF0LFxuICAgICAgZmluaXNoZWRBdDogY29tcGxldGVkIHx8IGZhaWxlZCA/IGZpbmlzaGVkQXQgOiB1bmRlZmluZWQsXG4gICAgfTtcblxuICAgIHRoaXMuY2hhbGxlbmdlUnVuLnNldChuZXh0UnVuKTtcbiAgICB0aGlzLmFjdGl2ZVN0b3JlZENoYWxsZW5nZVJ1bi5zZXQobmV4dFJ1bi5zdGF0dXMgPT09ICdhY3RpdmUnID8gbmV4dFJ1biA6IHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0V29uLnNldCh3b24pO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdEJvdC5zZXQoYm90KTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RSb3VuZFN0YXRzLnNldChyb3VuZFN0YXRzKTtcbiAgICB0aGlzLmNoYWxsZW5nZU5ld1JlY29yZC5zZXQoXG4gICAgICByb3VuZEluZGV4ID4gdGhpcy5jaGFsbGVuZ2VTdGF0cygpLmJlc3RSb3VuZFJlYWNoZWRcbiAgICAgICAgfHwgTWF0aC5tYXgocnVuLmJlc3RTdHJlYWtJblJ1biwgbmV4dFN0cmVhaykgPiB0aGlzLmNoYWxsZW5nZVN0YXRzKCkuYmVzdFdpblN0cmVhayxcbiAgICApO1xuICAgIHRoaXMuY2hhbGxlbmdlUGhhc2Uuc2V0KGNvbXBsZXRlZCA/ICdjb21wbGV0ZWQnIDogZmFpbGVkID8gJ2ZhaWxlZCcgOiAnYmV0d2VlbicpO1xuXG4gICAgdm9pZCB0aGlzLmNoYWxsZW5nZVByb2dyZXNzLmFwcGx5Um91bmRSZXN1bHQoe1xuICAgICAgcnVuOiBuZXh0UnVuLFxuICAgICAgcm91bmRSZWFjaGVkOiByb3VuZEluZGV4LFxuICAgICAgd29uLFxuICAgICAgY29tcGxldGVkLFxuICAgICAgcm91bmRTdGF0cyxcbiAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgIGNvbnNvbGUud2FybignW0NoZXNzaW1hbHNdIGNoYWxsZW5nZSBzdGF0cyBzYXZlIGZhaWxlZCcsIGVycm9yKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYWJhbmRvbkNoYWxsZW5nZUlmTmVlZGVkKCk6IHZvaWQge1xuICAgIGNvbnN0IHJ1biA9IHRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gICAgaWYgKCFydW4gfHwgcnVuLnN0YXR1cyAhPT0gJ2FjdGl2ZScgfHwgdGhpcy5jaGFsbGVuZ2VQaGFzZSgpID09PSAnaWRsZScpIHJldHVybjtcbiAgICB0aGlzLmFiYW5kb25DaGFsbGVuZ2VSdW4ocnVuKTtcbiAgfVxuXG4gIHByaXZhdGUgYWJhbmRvbkNoYWxsZW5nZVJ1bihydW4/OiBDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuKTogdm9pZCB7XG4gICAgaWYgKCFydW4gfHwgcnVuLnN0YXR1cyAhPT0gJ2FjdGl2ZScpIHJldHVybjtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgY29uc3QgbmV4dFJ1bjogQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1biA9IHtcbiAgICAgIC4uLnJ1bixcbiAgICAgIHN0YXR1czogJ2FiYW5kb25lZCcsXG4gICAgICB1cGRhdGVkQXQ6IG5vdyxcbiAgICAgIGZpbmlzaGVkQXQ6IG5vdyxcbiAgICB9O1xuICAgIHRoaXMuYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuLnNldCh1bmRlZmluZWQpO1xuICAgIHZvaWQgdGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy5zYXZlUnVuKG5leHRSdW4pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gY2hhbGxlbmdlIGFiYW5kb24gc2F2ZSBmYWlsZWQnLCBlcnJvcik7XG4gICAgfSk7XG4gIH1cblxuICBzdGFydFR1dG9yaWFsKCk6IHZvaWQge1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub3BlbmVkT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMub3BlbmluZ09ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnJlc2V0Q2hhbGxlbmdlU2Vzc2lvblN0YXRlKCk7XG4gICAgdGhpcy50dXRvcmlhbE1vZGUuc2V0KHRydWUpO1xuICAgIHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlLnNldCgnaWRsZScpO1xuICAgIHRoaXMuZ2FtZUJvdFByb2ZpbGVJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlLnNldCgnb25lLWRldmljZScpO1xuICAgIHRoaXMubGFzdE91dGNvbWVTb3VuZEtleSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmF1ZGlvLnN0b3BNdXNpYygpO1xuICAgIHRoaXMuZ2FtZS5zZXQodGhpcy5jcmVhdGVUdXRvcmlhbEdhbWUoKSk7XG4gICAgdGhpcy5jbGVhclJldmlldygpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNjcmVlbi5zZXQoJ2dhbWUnKTtcbiAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpY1Nvb24oKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICB0aGlzLmZvY3VzQm9hcmRTb29uKCk7XG4gIH1cblxuICBzdGFydFR1dG9yaWFsRnJvbVJ1bGVzKCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VSdWxlc01vZGFsKCk7XG4gICAgdGhpcy5zdGFydFR1dG9yaWFsKCk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVPbmxpbmVHYW1lKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy50dXRvcmlhbE1vZGUuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmdhbWVCb3RQcm9maWxlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUuc2V0KCdjb25uZWN0aW5nJyk7XG4gICAgdGhpcy5hdWRpby5zdG9wTXVzaWMoKTtcbiAgICB0aGlzLm9ubGluZUVycm9yLnNldCgnJyk7XG4gICAgdGhpcy5vbmxpbmVBY3Rpb24uc2V0KCdjcmVhdGUnKTtcbiAgICB0aGlzLm9ubGluZUxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMucmVzdW1lU3BsYXNoVmlzaWJsZS5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRCb2FyZFNpemUuc2V0KDgpO1xuICAgICAgY29uc3QgZ2FtZSA9IGF3YWl0IHRoaXMub25saW5lLmNyZWF0ZUdhbWUoOCk7XG4gICAgICB0aGlzLm9ubGluZVVpZC5zZXQodGhpcy5vbmxpbmUuY3VycmVudFVpZCk7XG4gICAgICB0aGlzLnF1ZXVlSGlzdG9yeVdhdGNoKCk7XG4gICAgICB0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9IGdhbWUuaWQ7XG4gICAgICB0aGlzLndhdGNoT25saW5lR2FtZShnYW1lLmlkKTtcbiAgICAgIHRoaXMuZ2FtZS5zZXQoZ2FtZSk7XG4gICAgICB0aGlzLmNsZWFyUmV2aWV3KCk7XG4gICAgICB0aGlzLnNjcmVlbi5zZXQoJ2dhbWUnKTtcbiAgICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzR2FtZU11c2ljU29vbigpO1xuICAgICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5zdWNjZXNzKCk7XG4gICAgICB0aGlzLmZvY3VzQm9hcmRTb29uKCk7XG4gICAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5jaGVzc2ltYWxzR2FtZVJvdXRlKGdhbWUuaWQpKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gY3JlYXRlIG9ubGluZSBnYW1lIGZhaWxlZCcsIGVycm9yKTtcbiAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldChmYWxzZSk7XG4gICAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc01lbnVNdXNpY1Nvb24oKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgdm9pZCB0aGlzLmhhcHRpY3MuZXJyb3IoKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5vbmxpbmVBY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLm9ubGluZUxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBqb2luT25saW5lR2FtZUJ5Q29kZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBnYW1lSWQgPSB0aGlzLm9ubGluZS5ub3JtYWxpemVHYW1lSWQodGhpcy5vbmxpbmVKb2luQ29kZSgpKTtcbiAgICBpZiAoIXRoaXMub25saW5lLmlzVmFsaWRHYW1lSWQoZ2FtZUlkKSkge1xuICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lSW52YWxpZENvZGUnKSk7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vbmxpbmVKb2luQ29kZS5zZXQoZ2FtZUlkKTtcbiAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQoJ2pvaW4nKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5vcGVuT25saW5lR2FtZShnYW1lSWQpO1xuICAgICAgaWYgKHRoaXMub3BlbmVkT25saW5lR2FtZUlkID09PSBnYW1lSWQpIHtcbiAgICAgICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMuY2hlc3NpbWFsc0dhbWVSb3V0ZShnYW1lSWQpKTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5vbmxpbmVBY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb3Blbk9ubGluZUdhbWUoZ2FtZUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBub3JtYWxpemVkR2FtZUlkID0gdGhpcy5vbmxpbmUubm9ybWFsaXplR2FtZUlkKGdhbWVJZCk7XG4gICAgaWYgKCF0aGlzLm9ubGluZS5pc1ZhbGlkR2FtZUlkKG5vcm1hbGl6ZWRHYW1lSWQpKSB7XG4gICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVJbnZhbGlkQ29kZScpKTtcbiAgICAgIHRoaXMuY2FuY2VsQWN0aXZlR2FtZXBsYXlGZWVkYmFjaygpO1xuICAgICAgdGhpcy5zY3JlZW4uc2V0KCdob21lJyk7XG4gICAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc01lbnVNdXNpY1Nvb24oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMub3BlbmVkT25saW5lR2FtZUlkID09PSBub3JtYWxpemVkR2FtZUlkIHx8IHRoaXMub3BlbmluZ09ubGluZUdhbWVJZCA9PT0gbm9ybWFsaXplZEdhbWVJZCkgcmV0dXJuO1xuXG4gICAgdGhpcy5vbmxpbmVFcnJvci5zZXQoJycpO1xuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy50dXRvcmlhbE1vZGUuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmdhbWVCb3RQcm9maWxlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5hdWRpby5zdG9wTXVzaWMoKTtcbiAgICB0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZS5zZXQoJ2Nvbm5lY3RpbmcnKTtcbiAgICB0aGlzLm9ubGluZUxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMucmVzdW1lU3BsYXNoVmlzaWJsZS5zZXQodHJ1ZSk7XG4gICAgdGhpcy5zY3JlZW4uc2V0KCdnYW1lJyk7XG4gICAgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID0gbm9ybWFsaXplZEdhbWVJZDtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5vbmxpbmUuam9pbkdhbWUobm9ybWFsaXplZEdhbWVJZCk7XG4gICAgICB0aGlzLm9ubGluZVVpZC5zZXQodGhpcy5vbmxpbmUuY3VycmVudFVpZCk7XG4gICAgICB0aGlzLnF1ZXVlSGlzdG9yeVdhdGNoKCk7XG4gICAgICB0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9IG5vcm1hbGl6ZWRHYW1lSWQ7XG4gICAgICB0aGlzLndhdGNoT25saW5lR2FtZShub3JtYWxpemVkR2FtZUlkKTtcbiAgICAgIHRoaXMuc2NyZWVuLnNldCgnZ2FtZScpO1xuICAgICAgdGhpcy5zdGFydENoZXNzaW1hbHNHYW1lTXVzaWNTb29uKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5zZWxlY3Rpb24oKTtcbiAgICAgIHRoaXMuZm9jdXNCb2FyZFNvb24oKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gb3BlbiBvbmxpbmUgZ2FtZSBmYWlsZWQnLCBlcnJvcik7XG4gICAgICB0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlLnNldCgnZXJyb3InKTtcbiAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMub25saW5lT3BlbkVycm9yTWVzc2FnZShlcnJvcikpO1xuICAgICAgdGhpcy5jYW5jZWxBY3RpdmVHYW1lcGxheUZlZWRiYWNrKCk7XG4gICAgICB0aGlzLnNjcmVlbi5zZXQoJ2hvbWUnKTtcbiAgICAgIHRoaXMucmVzdW1lU3BsYXNoVmlzaWJsZS5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5zdGFydENoZXNzaW1hbHNNZW51TXVzaWNTb29uKCk7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLmVycm9yKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMub3BlbmluZ09ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHJlc3RhcnRHYW1lKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmdhbWUoKS5tb2RlID09PSAnb25saW5lJyAmJiB0aGlzLmdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHtcbiAgICAgIHZvaWQgdGhpcy5yZXF1ZXN0T25saW5lUmVtYXRjaCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNsZWFyQm90VHVybigpO1xuICAgIHRoaXMubGFzdE91dGNvbWVTb3VuZEtleSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmdhbWUuc2V0KHRoaXMudHV0b3JpYWxNb2RlKCkgPyB0aGlzLmNyZWF0ZVR1dG9yaWFsR2FtZSgpIDogdGhpcy5jcmVhdGVDb25maWd1cmVkTG9jYWxHYW1lKHRoaXMuZ2FtZSgpLmJvYXJkU2l6ZSkpO1xuICAgIHRoaXMuY2xlYXJSZXZpZXcoKTtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgdGhpcy5zdGFydENoZXNzaW1hbHNHYW1lTXVzaWNTb29uKCk7XG4gICAgdGhpcy5mb2N1c0JvYXJkU29vbigpO1xuICAgIHRoaXMucXVldWVCb3RUdXJuSWZOZWVkZWQoKTtcbiAgfVxuXG4gIGV4aXRUdXRvcmlhbCgpOiB2b2lkIHtcbiAgICB0aGlzLnR1dG9yaWFsTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMucmVzZXRUb01vZGVTZXR1cCgpO1xuICB9XG5cbiAgcmVzZXRUb01vZGVTZXR1cCgpOiB2b2lkIHtcbiAgICB0aGlzLmFiYW5kb25DaGFsbGVuZ2VJZk5lZWRlZCgpO1xuICAgIHRoaXMuY2hhbGxlbmdlUGhhc2Uuc2V0KCdpZGxlJyk7XG4gICAgdGhpcy5jaGFsbGVuZ2VSdW4uc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0V29uLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdEJvdC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RSb3VuZFN0YXRzLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMudHV0b3JpYWxNb2RlLnNldChmYWxzZSk7XG4gICAgdGhpcy5yZXNldEZpbmlzaGVkTG9jYWxHYW1lRm9yTmV4dFZpc2l0KCk7XG4gICAgdGhpcy5vbmxpbmVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5vbmxpbmVTdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucmVzdW1lU3BsYXNoVmlzaWJsZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMuY2FuY2VsQWN0aXZlR2FtZXBsYXlGZWVkYmFjaygpO1xuICAgIHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlLnNldCgnaWRsZScpO1xuICAgIHRoaXMuc2NyZWVuLnNldCgnaG9tZScpO1xuICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljU29vbigpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNsZWFyUmV2aWV3KCk7XG4gIH1cblxuICBwcml2YXRlIHJldHVybkNoYWxsZW5nZVRvTWVudSgpOiB2b2lkIHtcbiAgICBjb25zdCBydW4gPSB0aGlzLmNoYWxsZW5nZVJ1bigpO1xuICAgIGlmICh0aGlzLmlzUmVzdW1hYmxlQ2hhbGxlbmdlUnVuKHJ1bikpIHtcbiAgICAgIHRoaXMuYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuLnNldChydW4pO1xuICAgIH1cbiAgICB0aGlzLmRpc21pc3NDaGFsbGVuZ2VJbnRybygpO1xuICAgIHRoaXMucmVzZXRGaW5pc2hlZExvY2FsR2FtZUZvck5leHRWaXNpdCgpO1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgIHRoaXMub3BlbmVkT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMub3BlbmluZ09ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnJlc3VtZVNwbGFzaFZpc2libGUuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmNhbmNlbEFjdGl2ZUdhbWVwbGF5RmVlZGJhY2soKTtcbiAgICB0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZS5zZXQoJ2lkbGUnKTtcbiAgICB0aGlzLnNjcmVlbi5zZXQoJ2hvbWUnKTtcbiAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc01lbnVNdXNpY1Nvb24oKTtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jbGVhclJldmlldygpO1xuICB9XG5cbiAgcmVzZXRUb0dhbWVzTWVudSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5yZXNldFRvTW9kZVNldHVwKCk7XG4gICAgY29uc3Qgcm91dGUgPSB0aGlzLm1pbmlHYW1lc0Jhc2VSb3V0ZSgpO1xuICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChyb3V0ZSkuY2F0Y2goKCkgPT4ge1xuICAgICAgdGhpcy5jYW5jZWxBY3RpdmVHYW1lcGxheUZlZWRiYWNrKCk7XG4gICAgICB0aGlzLnNjcmVlbi5zZXQoJ2hvbWUnKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRGaW5pc2hlZExvY2FsR2FtZUZvck5leHRWaXNpdChyZXR1cm5Ib21lID0gZmFsc2UpOiB2b2lkIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ2xvY2FsJyB8fCBnYW1lLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJykgcmV0dXJuO1xuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgaWYgKHRoaXMubW92ZUFuaW1hdGlvblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIpO1xuICAgIHRoaXMubW92ZUFuaW1hdGlvblRpbWVyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNsZWFyUmV2aWV3KCk7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuZ2FtZS5zZXQodGhpcy5jcmVhdGVDb25maWd1cmVkTG9jYWxHYW1lKGdhbWUuYm9hcmRTaXplKSk7XG4gICAgaWYgKHJldHVybkhvbWUpIHtcbiAgICAgIHRoaXMuY2FuY2VsQWN0aXZlR2FtZXBsYXlGZWVkYmFjaygpO1xuICAgICAgdGhpcy5zY3JlZW4uc2V0KCdob21lJyk7XG4gICAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc01lbnVNdXNpY1Nvb24oKTtcbiAgICB9XG4gIH1cblxuICByZXF1ZXN0UmVzdGFydEdhbWUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNDaGFsbGVuZ2VBY3RpdmUoKSkgcmV0dXJuO1xuICAgIGlmICghdGhpcy5jYW5Db250cm9sQ3VycmVudEdhbWUoKSkgcmV0dXJuO1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ3Jlc3RhcnQnKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIHJlcXVlc3RDaGFuZ2VNb2RlKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ21vZGUnKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIHJlcXVlc3RDaGFuZ2VHYW1lKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ2dhbWVzJyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICByZXF1ZXN0UmVzaWduKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcgfHwgIXRoaXMuY2FuQ29udHJvbEN1cnJlbnRHYW1lKCkpIHJldHVybjtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KCdyZXNpZ24nKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIGNsb3NlQ29uZmlybU1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIGhhbmRsZUNvbmZpcm1Nb2RhbERpc21pc3NlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maXJtZWRBY3Rpb24oKTtcbiAgICB0aGlzLmNvbmZpcm1lZEFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICBpZiAoIWFjdGlvbikgcmV0dXJuO1xuXG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc3RhcnQnKSB7XG4gICAgICB0aGlzLnJlc3RhcnRHYW1lKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChhY3Rpb24gPT09ICdtb2RlJykge1xuICAgICAgaWYgKHRoaXMuaXNDaGFsbGVuZ2VBY3RpdmUoKSkge1xuICAgICAgICB0aGlzLnJldHVybkNoYWxsZW5nZVRvTWVudSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnJlc2V0VG9Nb2RlU2V0dXAoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2dhbWVzJykge1xuICAgICAgdGhpcy5yZXNldFRvR2FtZXNNZW51KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChhY3Rpb24gPT09ICdyZXNpZ24nKSB7XG4gICAgICB0aGlzLnJlc2lnbkdhbWUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2NoYWxsZW5nZS1uZXcnKSB7XG4gICAgICB0aGlzLmFiYW5kb25DaGFsbGVuZ2VSdW4odGhpcy5jaGFsbGVuZ2VSdW4oKSA/PyB0aGlzLmFjdGl2ZVN0b3JlZENoYWxsZW5nZVJ1bigpKTtcbiAgICAgIHRoaXMuYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuLnNldCh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5jcmVhdGVOZXdDaGFsbGVuZ2VSdW4oKTtcbiAgICB9XG4gIH1cblxuICBjb25maXJtUGVuZGluZ0FjdGlvbih0b2tlbj86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0b2tlbiAhPT0gJ2NvbmZpcm0nKSB7XG4gICAgICB0aGlzLmNsb3NlQ29uZmlybU1vZGFsKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maXJtQWN0aW9uKCk7XG4gICAgdGhpcy5jb25maXJtZWRBY3Rpb24uc2V0KGFjdGlvbik7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNpZ25HYW1lKCk6IHZvaWQge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHJldHVybjtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykge1xuICAgICAgdm9pZCB0aGlzLm9ubGluZS5yZXNpZ24oZ2FtZS5pZCkuY2F0Y2goKCkgPT4ge1xuICAgICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLmdhbWUuc2V0KHJlc2lnbkNoZXNzaW1hbHNHYW1lKGdhbWUsIGdhbWUuY3VycmVudFR1cm4pKTtcbiAgICB0aGlzLnNob3dMYXRlc3RSZXZpZXdTbmFwc2hvdCgpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnBsYXlDaGVzc2ltYWxzT3V0Y29tZVNvdW5kKCk7XG4gIH1cblxuICBvcGVuUGxheU9wdGlvbnNNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLnBlbmRpbmdTb2xvR2FtZVN0YXJ0ID0gZmFsc2U7XG4gICAgdGhpcy5pc1BsYXlPcHRpb25zTW9kYWxPcGVuLnNldCh0cnVlKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIGNsb3NlUGxheU9wdGlvbnNNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzUGxheU9wdGlvbnNNb2RhbE9wZW4uc2V0KGZhbHNlKTtcbiAgfVxuXG4gIGhhbmRsZVBsYXlPcHRpb25zTW9kYWxEaXNtaXNzZWQoKTogdm9pZCB7XG4gICAgdGhpcy5pc1BsYXlPcHRpb25zTW9kYWxPcGVuLnNldChmYWxzZSk7XG4gICAgaWYgKCF0aGlzLnBlbmRpbmdTb2xvR2FtZVN0YXJ0KSByZXR1cm47XG5cbiAgICB0aGlzLnBlbmRpbmdTb2xvR2FtZVN0YXJ0ID0gZmFsc2U7XG4gICAgdGhpcy5zdGFydEdhbWUoKTtcbiAgfVxuXG4gIHN0YXJ0U29sb0dhbWVGcm9tT3B0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLnBlbmRpbmdTb2xvR2FtZVN0YXJ0ID0gdHJ1ZTtcbiAgICB0aGlzLmNsb3NlUGxheU9wdGlvbnNNb2RhbCgpO1xuICB9XG5cbiAgb3BlblJ1bGVzTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc1J1bGVzTW9kYWxPcGVuLnNldCh0cnVlKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIGNsb3NlUnVsZXNNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzUnVsZXNNb2RhbE9wZW4uc2V0KGZhbHNlKTtcbiAgfVxuXG4gIG9wZW5TZXR0aW5nc01vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNTZXR0aW5nc01vZGFsT3Blbi5zZXQodHJ1ZSk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICBjbG9zZVNldHRpbmdzTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc1NldHRpbmdzTW9kYWxPcGVuLnNldChmYWxzZSk7XG4gIH1cblxuICBvcGVuUGF0aFZpZXcoKTogdm9pZCB7XG4gICAgdGhpcy5zY3JlZW4uc2V0KCdwYXRoJyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICBvcGVuQWJvdXRNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLnBlbmRpbmdBYm91dEZlZWRiYWNrTmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgIHRoaXMuaXNBYm91dE1vZGFsT3Blbi5zZXQodHJ1ZSk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICBjbG9zZUFib3V0TW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc0Fib3V0TW9kYWxPcGVuLnNldChmYWxzZSk7XG4gIH1cblxuICBoYW5kbGVBYm91dE1vZGFsRGlzbWlzc2VkKCk6IHZvaWQge1xuICAgIHRoaXMuaXNBYm91dE1vZGFsT3Blbi5zZXQoZmFsc2UpO1xuICAgIGlmICghdGhpcy5wZW5kaW5nQWJvdXRGZWVkYmFja05hdmlnYXRpb24pIHJldHVybjtcblxuICAgIHRoaXMucGVuZGluZ0Fib3V0RmVlZGJhY2tOYXZpZ2F0aW9uID0gZmFsc2U7XG4gICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvZmVlZGJhY2snKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICB9XG5cbiAgaGFuZGxlQWJvdXRBY3Rpb24oZXZlbnQ6IHsgYWN0aW9uPzogQnV0dG9uTWV0YWRhdGEgfSk6IHZvaWQge1xuICAgIGlmIChldmVudC5hY3Rpb24/LnRva2VuID09PSAnZmVlZGJhY2snKSB7XG4gICAgICB0aGlzLnBlbmRpbmdBYm91dEZlZWRiYWNrTmF2aWdhdGlvbiA9IHRydWU7XG4gICAgICB0aGlzLmNsb3NlQWJvdXRNb2RhbCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucGVuZGluZ0Fib3V0RmVlZGJhY2tOYXZpZ2F0aW9uID0gZmFsc2U7XG4gICAgdGhpcy5jbG9zZUFib3V0TW9kYWwoKTtcbiAgfVxuXG4gIHNldE11c2ljVm9sdW1lKHZhbHVlOiBudW1iZXIgfCBSYW5nZVZhbHVlKTogdm9pZCB7XG4gICAgY29uc3Qgdm9sdW1lID0gdGhpcy5yYW5nZVZhbHVlVG9OdW1iZXIodmFsdWUpO1xuICAgIGlmICh0aGlzLm11c2ljVm9sdW1lQ29udHJvbC52YWx1ZSAhPT0gdm9sdW1lKSB7XG4gICAgICB0aGlzLm11c2ljVm9sdW1lQ29udHJvbC5zZXRWYWx1ZSh2b2x1bWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG4gICAgdGhpcy5hdWRpby5zZXRNdXNpY1ZvbHVtZSh2b2x1bWUgLyAxMDApO1xuICAgIGlmICh2b2x1bWUgPiAwICYmIHRoaXMuYXVkaW8ubXVzaWNFbmFibGVkKCkpIHRoaXMuc3luY0NoZXNzaW1hbHNNdXNpY0FmdGVyU2V0dGluZ3NDaGFuZ2UoKTtcbiAgfVxuXG4gIHNldFNmeFZvbHVtZSh2YWx1ZTogbnVtYmVyIHwgUmFuZ2VWYWx1ZSk6IHZvaWQge1xuICAgIGNvbnN0IHZvbHVtZSA9IHRoaXMucmFuZ2VWYWx1ZVRvTnVtYmVyKHZhbHVlKTtcbiAgICBpZiAodGhpcy5zZnhWb2x1bWVDb250cm9sLnZhbHVlICE9PSB2b2x1bWUpIHtcbiAgICAgIHRoaXMuc2Z4Vm9sdW1lQ29udHJvbC5zZXRWYWx1ZSh2b2x1bWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG4gICAgdGhpcy5hdWRpby5zZXRTZnhWb2x1bWUodm9sdW1lIC8gMTAwKTtcbiAgfVxuXG4gIHByaXZhdGUgdHV0b3JpYWxFeHBlY3RlZE1vdmUoKTogQ2hlc3NpbWFsc1R1dG9yaWFsRXhwZWN0ZWRNb3ZlIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXRoaXMudHV0b3JpYWxNb2RlKCkgfHwgdGhpcy5nYW1lKCkuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IHN0ZXBzOiBDaGVzc2ltYWxzVHV0b3JpYWxFeHBlY3RlZE1vdmVbXSA9IFtcbiAgICAgIHsgcGllY2VJZDogJ1RXMScsIHRvOiB7IHJvdzogMywgY29sOiAxIH0gfSxcbiAgICAgIHsgcGllY2VJZDogJ1RCMScsIHRvOiB7IHJvdzogMiwgY29sOiAyIH0gfSxcbiAgICAgIHsgcGllY2VJZDogJ1RXMScsIHRvOiB7IHJvdzogMiwgY29sOiAyIH0gfSxcbiAgICAgIHsgcGllY2VJZDogJ1RCMicsIHRvOiB7IHJvdzogMiwgY29sOiA1IH0gfSxcbiAgICAgIHsgcGllY2VJZDogJ1RXMScsIHRvOiB7IHJvdzogMSwgY29sOiA0IH0sIGFuaW1hbDogJ2thbmdhcm9vJyB9LFxuICAgICAgeyBwaWVjZUlkOiAnVEIyJywgdG86IHsgcm93OiAzLCBjb2w6IDUgfSB9LFxuICAgICAgeyBwaWVjZUlkOiAnVFcxJywgdG86IHsgcm93OiAwLCBjb2w6IDQgfSB9LFxuICAgIF07XG4gICAgcmV0dXJuIHN0ZXBzW3RoaXMuZ2FtZSgpLm1vdmVDb3VudF07XG4gIH1cblxuICBpc1Bvd2VyQ2FyZEJsb2NrZWRCeVR1dG9yaWFsKGFuaW1hbDogQ2hlc3NpbWFsc0FuaW1hbFR5cGUpOiBib29sZWFuIHtcbiAgICBjb25zdCBleHBlY3RlZCA9IHRoaXMudHV0b3JpYWxFeHBlY3RlZE1vdmUoKTtcbiAgICByZXR1cm4gISFleHBlY3RlZD8uYW5pbWFsICYmIGV4cGVjdGVkLmFuaW1hbCAhPT0gYW5pbWFsO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVUdXRvcmlhbEdhbWUoKTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSB7XG4gICAgY29uc3QgYmFzZSA9IGNyZWF0ZUNoZXNzaW1hbHNHYW1lKDYpO1xuICAgIGNvbnN0IHBpZWNlczogQ2hlc3NpbWFsc1BpZWNlW10gPSBbXG4gICAgICB7IGlkOiAnVFcxJywgY29sb3I6ICd3aGl0ZScsIHBvc2l0aW9uOiB7IHJvdzogNCwgY29sOiAxIH0sIGNhcHR1cmVkOiBmYWxzZSB9LFxuICAgICAgeyBpZDogJ1RCMScsIGNvbG9yOiAnYmxhY2snLCBwb3NpdGlvbjogeyByb3c6IDEsIGNvbDogMiB9LCBjYXB0dXJlZDogZmFsc2UgfSxcbiAgICAgIHsgaWQ6ICdUQjInLCBjb2xvcjogJ2JsYWNrJywgcG9zaXRpb246IHsgcm93OiAxLCBjb2w6IDUgfSwgY2FwdHVyZWQ6IGZhbHNlIH0sXG4gICAgICB7IGlkOiAnVEIzJywgY29sb3I6ICdibGFjaycsIHBvc2l0aW9uOiB7IHJvdzogMSwgY29sOiA0IH0sIGNhcHR1cmVkOiBmYWxzZSB9LFxuICAgIF07XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmJhc2UsXG4gICAgICBpZDogJ1RVVE9SSUFMJyxcbiAgICAgIHBpZWNlcyxcbiAgICAgIGN1cnJlbnRUdXJuOiAnd2hpdGUnLFxuICAgICAgbW92ZUNvdW50OiAwLFxuICAgICAgcGxheWVyczoge1xuICAgICAgICB3aGl0ZToge1xuICAgICAgICAgIC4uLmJhc2UucGxheWVycy53aGl0ZSxcbiAgICAgICAgICBwb3dlclVubG9ja2VkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgYmxhY2s6IHtcbiAgICAgICAgICAuLi5iYXNlLnBsYXllcnMuYmxhY2ssXG4gICAgICAgICAgcG93ZXJVbmxvY2tlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbW92ZUhpc3Rvcnk6IFtcbiAgICAgICAge1xuICAgICAgICAgIG1vdmVOdW1iZXI6IDAsXG4gICAgICAgICAgcGllY2VzOiBwaWVjZXMubWFwKChwaWVjZSkgPT4gKHsgLi4ucGllY2UsIHBvc2l0aW9uOiB7IC4uLnBpZWNlLnBvc2l0aW9uIH0gfSkpLFxuICAgICAgICAgIGN1cnJlbnRUdXJuOiAnd2hpdGUnLFxuICAgICAgICAgIHN0YXR1czogJ2luX3Byb2dyZXNzJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYmFzaWNNb3Zlc0ZvckNvbG9yKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IpOiBDaGVzc2ltYWxzTW92ZVtdIHtcbiAgICBjb25zdCB0dXJuU3RhdGUgPSBjb2xvciA9PT0gZ2FtZS5jdXJyZW50VHVybiA/IGdhbWUgOiB7IC4uLmdhbWUsIGN1cnJlbnRUdXJuOiBjb2xvciB9O1xuICAgIHJldHVybiB0dXJuU3RhdGUucGllY2VzXG4gICAgICAuZmlsdGVyKChwaWVjZSkgPT4gcGllY2UuY29sb3IgPT09IGNvbG9yICYmICFwaWVjZS5jYXB0dXJlZClcbiAgICAgIC5mbGF0TWFwKChwaWVjZSkgPT4gZ2V0Q2hlc3NpbWFsc0xlZ2FsTW92ZXModHVyblN0YXRlLCBwaWVjZS5pZCkpO1xuICB9XG5cbiAgc2VsZWN0Q2VsbChwb3NpdGlvbjogQ2hlc3NpbWFsc1Bvc2l0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlIHx8IGdhbWUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnIHx8ICF0aGlzLmNhblBsYXlDdXJyZW50VHVybigpIHx8IHRoaXMubW92aW5nUGllY2UoKSB8fCB0aGlzLm1vdmVTeW5jaW5nKCkpIHJldHVybjtcblxuICAgIGNvbnN0IHBpZWNlID0gZ2V0Q2hlc3NpbWFsc1BpZWNlQXQoZ2FtZSwgcG9zaXRpb24pO1xuICAgIGlmIChwaWVjZT8uY29sb3IgPT09IGdhbWUuY3VycmVudFR1cm4pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldChwaWVjZS5pZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbW92ZSA9IHRoaXMubGVnYWxNb3ZlcygpLmZpbmQoKGl0ZW0pID0+IHBvc2l0aW9uS2V5KGl0ZW0udG8pID09PSBwb3NpdGlvbktleShwb3NpdGlvbikpO1xuICAgIGlmICghbW92ZSkgcmV0dXJuO1xuXG4gICAgdGhpcy5jb21taXRDaGVzc2ltYWxzTW92ZShnYW1lLCBtb3ZlKTtcbiAgfVxuXG4gIHByaXZhdGUgY29tbWl0Q2hlc3NpbWFsc01vdmUoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgbW92ZTogQ2hlc3NpbWFsc01vdmUpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdXBkYXRlZCA9IGFwcGx5Q2hlc3NpbWFsc01vdmUoZ2FtZSwgbW92ZSk7XG4gICAgICBpZiAobW92ZS5hbmltYWwpIHRoaXMucGxheU1vdmVTb3VuZChtb3ZlKTtcbiAgICAgIGlmICh1cGRhdGVkLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgdGhpcy5wbGF5Q2hlc3NpbWFsc091dGNvbWVTb3VuZCh1cGRhdGVkKTtcbiAgICAgIHRoaXMuYW5pbWF0ZU1vdmUoZ2FtZSwgbW92ZSwgdXBkYXRlZCk7XG4gICAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykge1xuICAgICAgICB0aGlzLm1vdmVTeW5jaW5nLnNldCh0cnVlKTtcbiAgICAgICAgdm9pZCB0aGlzLm9ubGluZVxuICAgICAgICAgIC5tb3ZlKGdhbWUuaWQsIG1vdmUpXG4gICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdm9pZCB0aGlzLmhhcHRpY3MuaW1wYWN0KG1vdmUuY2FwdHVyZXNQaWVjZUlkID8gJ21lZGl1bScgOiAnbGlnaHQnKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignW0NoZXNzaW1hbHNdIG9ubGluZSBtb3ZlIGZhaWxlZCcsIHsgZ2FtZUlkOiBnYW1lLmlkLCBtb3ZlLCBlcnJvciB9KTtcbiAgICAgICAgICAgIHRoaXMuZ2FtZS5zZXQoZ2FtZSk7XG4gICAgICAgICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgICAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgICAgICAgdm9pZCB0aGlzLmhhcHRpY3MuZXJyb3IoKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubW92ZVN5bmNpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICAgIGlmICghbW92ZS5hbmltYWwpIHRoaXMucGxheU1vdmVTb3VuZChtb3ZlKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3luY1R1cm5UaW1lcigpOiB2b2lkIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgY29uc3QgZHVyYXRpb24gPSB0aGlzLnR1cm5UaW1lckR1cmF0aW9uU2Vjb25kcygpO1xuICAgIGlmIChcbiAgICAgICFkdXJhdGlvbiB8fFxuICAgICAgdGhpcy5zY3JlZW4oKSAhPT0gJ2dhbWUnIHx8XG4gICAgICBnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJyB8fFxuICAgICAgIXRoaXMuY2FuUGxheUN1cnJlbnRUdXJuKCkgfHxcbiAgICAgIHRoaXMuYm90VGhpbmtpbmcoKSB8fFxuICAgICAgdGhpcy5tb3ZlU3luY2luZygpIHx8XG4gICAgICB0aGlzLm1vdmluZ1BpZWNlKClcbiAgICApIHtcbiAgICAgIHRoaXMuY2xlYXJUdXJuVGltZXIoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBrZXkgPSBgJHtnYW1lLmlkfToke2dhbWUuY3VycmVudFR1cm59OiR7Z2FtZS5tb3ZlQ291bnR9OiR7ZHVyYXRpb259YDtcbiAgICBpZiAodGhpcy50dXJuVGltZXJLZXkgPT09IGtleSAmJiB0aGlzLnR1cm5UaW1lckludGVydmFsKSByZXR1cm47XG5cbiAgICB0aGlzLmNsZWFyVHVyblRpbWVyKCk7XG4gICAgdGhpcy50dXJuVGltZXJLZXkgPSBrZXk7XG4gICAgdGhpcy50dXJuVGltZXJEdXJhdGlvbiA9IGR1cmF0aW9uO1xuICAgIHRoaXMudHVyblRpbWVyRGVhZGxpbmUgPSBEYXRlLm5vdygpICsgZHVyYXRpb24gKiAxMDAwO1xuICAgIHRoaXMudHVyblNlY29uZHNSZW1haW5pbmcuc2V0KGR1cmF0aW9uKTtcbiAgICB0aGlzLnR1cm5UaW1lckludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy50aWNrVHVyblRpbWVyKCksIDI1MCk7XG4gIH1cblxuICBwcml2YXRlIHRpY2tUdXJuVGltZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2NyZWVuKCkgIT09ICdnYW1lJykge1xuICAgICAgdGhpcy5jbGVhclR1cm5UaW1lcigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlbWFpbmluZyA9IE1hdGgubWF4KDAsIE1hdGguY2VpbCgodGhpcy50dXJuVGltZXJEZWFkbGluZSAtIERhdGUubm93KCkpIC8gMTAwMCkpO1xuICAgIHRoaXMudHVyblNlY29uZHNSZW1haW5pbmcuc2V0KHJlbWFpbmluZyk7XG4gICAgaWYgKHJlbWFpbmluZyA+IDApIHJldHVybjtcblxuICAgIGNvbnN0IGV4cGlyZWRLZXkgPSB0aGlzLnR1cm5UaW1lcktleTtcbiAgICB0aGlzLmNsZWFyVHVyblRpbWVyKCk7XG4gICAgaWYgKCFleHBpcmVkS2V5IHx8IHRoaXMudHVyblRpbWVyRXhwaXJlZEtleSA9PT0gZXhwaXJlZEtleSkgcmV0dXJuO1xuICAgIHRoaXMudHVyblRpbWVyRXhwaXJlZEtleSA9IGV4cGlyZWRLZXk7XG4gICAgdGhpcy5oYW5kbGVUdXJuVGltZXJFeHBpcmVkKCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyVHVyblRpbWVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnR1cm5UaW1lckludGVydmFsKSBjbGVhckludGVydmFsKHRoaXMudHVyblRpbWVySW50ZXJ2YWwpO1xuICAgIHRoaXMudHVyblRpbWVySW50ZXJ2YWwgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy50dXJuVGltZXJLZXkgPSAnJztcbiAgICB0aGlzLnR1cm5UaW1lckRlYWRsaW5lID0gMDtcbiAgICB0aGlzLnR1cm5UaW1lckR1cmF0aW9uID0gMDtcbiAgICB0aGlzLnR1cm5TZWNvbmRzUmVtYWluaW5nLnNldCh1bmRlZmluZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSB0dXJuVGltZXJEdXJhdGlvblNlY29uZHMoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKHRoaXMucHJvamVjdGlvbk1vZGUgfHwgdGhpcy50dXRvcmlhbE1vZGUoKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5pc0NoYWxsZW5nZUFjdGl2ZSgpICYmIHRoaXMuY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ3BsYXlpbmcnKSB7XG4gICAgICByZXR1cm4gZ2FtZS5ib2FyZFNpemUgPT09IDggPyBDSEVTU0lNQUxTX0NIQUxMRU5HRV9GSU5BTF9UVVJOX1NFQ09ORFMgOiBDSEVTU0lNQUxTX0NIQUxMRU5HRV9UVVJOX1NFQ09ORFM7XG4gICAgfVxuICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSByZXR1cm4gQ0hFU1NJTUFMU19PTkxJTkVfVFVSTl9TRUNPTkRTO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVR1cm5UaW1lckV4cGlyZWQoKTogdm9pZCB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChcbiAgICAgIHRoaXMuc2NyZWVuKCkgIT09ICdnYW1lJyB8fFxuICAgICAgZ2FtZS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycgfHxcbiAgICAgICF0aGlzLmNhblBsYXlDdXJyZW50VHVybigpIHx8XG4gICAgICB0aGlzLmJvdFRoaW5raW5nKCkgfHxcbiAgICAgIHRoaXMubW92ZVN5bmNpbmcoKSB8fFxuICAgICAgdGhpcy5tb3ZpbmdQaWVjZSgpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbW92ZSA9IHRoaXMuY2hvb3NlQXV0b21hdGljVHVybk1vdmUoZ2FtZSk7XG4gICAgaWYgKCFtb3ZlKSB7XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnQoJ2NoZXNzaW1hbHNUdXJuVGltZXJOb01vdmUnKSxcbiAgICAgICAgY29sb3I6ICd3YXJuaW5nJyxcbiAgICAgICAgZHVyYXRpb246IDIyMDAsXG4gICAgICAgIHBvc2l0aW9uOiAndG9wJyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5yZXNpZ25HYW1lKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICBtZXNzYWdlOiB0aGlzLnQoJ2NoZXNzaW1hbHNUdXJuVGltZXJBdXRvTW92ZScpLFxuICAgICAgY29sb3I6ICd3YXJuaW5nJyxcbiAgICAgIGR1cmF0aW9uOiAyMjAwLFxuICAgICAgcG9zaXRpb246ICd0b3AnLFxuICAgIH0pO1xuICAgIHRoaXMuY29tbWl0Q2hlc3NpbWFsc01vdmUoZ2FtZSwgbW92ZSk7XG4gIH1cblxuICBwcml2YXRlIGNob29zZUF1dG9tYXRpY1R1cm5Nb3ZlKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiBDaGVzc2ltYWxzTW92ZSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgbW92ZXMgPSBnYW1lLnBpZWNlc1xuICAgICAgLmZpbHRlcigocGllY2UpID0+IHBpZWNlLmNvbG9yID09PSBnYW1lLmN1cnJlbnRUdXJuICYmICFwaWVjZS5jYXB0dXJlZClcbiAgICAgIC5mbGF0TWFwKChwaWVjZSkgPT4gZ2V0Q2hlc3NpbWFsc0xlZ2FsTW92ZXMoZ2FtZSwgcGllY2UuaWQpKTtcbiAgICBjb25zdCBiYXNpY01vdmVzID0gbW92ZXMuZmlsdGVyKChtb3ZlKSA9PiBtb3ZlLmtpbmQgPT09ICdiYXNpYycpO1xuICAgIHJldHVybiBiYXNpY01vdmVzLmZpbmQoKG1vdmUpID0+IHRoaXMuaXNQcm9tb3Rpb25Nb3ZlKGdhbWUsIG1vdmUpKVxuICAgICAgPz8gYmFzaWNNb3Zlcy5maW5kKChtb3ZlKSA9PiAhIW1vdmUuY2FwdHVyZXNQaWVjZUlkKVxuICAgICAgPz8gYmFzaWNNb3Zlc1swXVxuICAgICAgPz8gbW92ZXMuZmluZCgobW92ZSkgPT4gISFtb3ZlLmNhcHR1cmVzUGllY2VJZClcbiAgICAgID8/IG1vdmVzWzBdO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1Byb21vdGlvbk1vdmUoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgbW92ZTogQ2hlc3NpbWFsc01vdmUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbW92ZS5raW5kID09PSAnYmFzaWMnICYmIG1vdmUudG8ucm93ID09PSAoZ2FtZS5jdXJyZW50VHVybiA9PT0gJ3doaXRlJyA/IDAgOiBnYW1lLmJvYXJkU2l6ZSAtIDEpO1xuICB9XG5cbiAgcHJpdmF0ZSBhbmltYXRlTW92ZShnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCBtb3ZlOiBDaGVzc2ltYWxzTW92ZSwgdXBkYXRlZDogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vdmVBbmltYXRpb25UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMubW92ZUFuaW1hdGlvblRpbWVyKTtcbiAgICB0aGlzLnF1ZXVlTW92ZUVmZmVjdChtb3ZlKTtcblxuICAgIGNvbnN0IG1vdmluZ1BpZWNlID0gZ2FtZS5waWVjZXMuZmluZCgocGllY2UpID0+IHBpZWNlLmlkID09PSBtb3ZlLnBpZWNlSWQpO1xuICAgIGlmICghbW92aW5nUGllY2UpIHtcbiAgICAgIHRoaXMuYXBwbHlBbmltYXRlZE1vdmUoZ2FtZSwgdXBkYXRlZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQoe1xuICAgICAgY29sb3I6IG1vdmluZ1BpZWNlLmNvbG9yLFxuICAgICAgZnJvbVJvdzogdGhpcy5kaXNwbGF5Um93SW5kZXgobW92ZS5mcm9tLnJvdyksXG4gICAgICBmcm9tQ29sOiB0aGlzLmRpc3BsYXlDb2xJbmRleChtb3ZlLmZyb20uY29sKSxcbiAgICAgIHRvUm93OiB0aGlzLmRpc3BsYXlSb3dJbmRleChtb3ZlLnRvLnJvdyksXG4gICAgICB0b0NvbDogdGhpcy5kaXNwbGF5Q29sSW5kZXgobW92ZS50by5jb2wpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYXBwbHlBbmltYXRlZE1vdmUoZ2FtZSwgdXBkYXRlZCk7XG4gICAgfSwgQ0hFU1NJTUFMU19NT1ZFX0FOSU1BVElPTl9NUyk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5QW5pbWF0ZWRNb3ZlKHByZXZpb3VzOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCB1cGRhdGVkOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogdm9pZCB7XG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmdhbWUuc2V0KHVwZGF0ZWQpO1xuICAgIHRoaXMucGVyc2lzdEFjdGl2ZUNoYWxsZW5nZUdhbWUodXBkYXRlZCk7XG4gICAgdGhpcy5xdWV1ZVNjb3JlUG9wKHByZXZpb3VzLCB1cGRhdGVkKTtcbiAgICB0aGlzLnBsYXlQb3dlclVubG9ja1NvdW5kKHByZXZpb3VzLCB1cGRhdGVkKTtcbiAgICBpZiAoXG4gICAgICB1cGRhdGVkLmN1cnJlbnRUdXJuICE9PSBwcmV2aW91cy5jdXJyZW50VHVybiAmJlxuICAgICAgdXBkYXRlZC5zdGF0dXMgIT09ICdmaW5pc2hlZCcgJiZcbiAgICAgICF0aGlzLnNob3VsZEtlZXBCb2FyZE9yaWVudGF0aW9uU3RhdGljKHVwZGF0ZWQpXG4gICAgKSB7XG4gICAgICB0aGlzLnRyaWdnZXJCb2FyZE9yaWVudGF0aW9uKCk7XG4gICAgfVxuICAgIGlmICh1cGRhdGVkLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykge1xuICAgICAgdGhpcy5zaG93TGF0ZXN0UmV2aWV3U25hcHNob3QoKTtcbiAgICAgIHRoaXMucGxheUNoZXNzaW1hbHNPdXRjb21lU291bmQodXBkYXRlZCk7XG4gICAgfVxuICAgIHRoaXMucXVldWVCb3RUdXJuSWZOZWVkZWQoKTtcbiAgfVxuXG4gIHByaXZhdGUgYWN0aXZlR2FtZUZvclJ1bihydW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4pOiBDaGVzc2ltYWxzR2FtZVN0YXRlIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBib3QgPSB0aGlzLmNoYWxsZW5nZUxhZGRlcltNYXRoLm1heCgwLCBydW4uY3VycmVudFJvdW5kIC0gMSldO1xuICAgIGNvbnN0IGdhbWUgPSBydW4uYWN0aXZlR2FtZTtcbiAgICBpZiAoIWJvdCB8fCAhZ2FtZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAoZ2FtZS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgaWYgKGdhbWUuYm9hcmRTaXplICE9PSBib3QuYm9hcmRTaXplKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiB0aGlzLmNsb25lQ2hhbGxlbmdlR2FtZShnYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgcGVyc2lzdEFjdGl2ZUNoYWxsZW5nZUdhbWUoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IHZvaWQge1xuICAgIGNvbnN0IHJ1biA9IHRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gICAgaWYgKCFydW4gfHwgcnVuLnN0YXR1cyAhPT0gJ2FjdGl2ZScgfHwgdGhpcy5jaGFsbGVuZ2VQaGFzZSgpICE9PSAncGxheWluZycpIHJldHVybjtcbiAgICBpZiAoZ2FtZS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycpIHJldHVybjtcbiAgICBjb25zdCBuZXh0UnVuOiBDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuID0ge1xuICAgICAgLi4ucnVuLFxuICAgICAgYWN0aXZlR2FtZTogdGhpcy5jbG9uZUNoYWxsZW5nZUdhbWUoZ2FtZSksXG4gICAgICB1cGRhdGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB9O1xuICAgIHRoaXMuY2hhbGxlbmdlUnVuLnNldChuZXh0UnVuKTtcbiAgICB2b2lkIHRoaXMuY2hhbGxlbmdlUHJvZ3Jlc3Muc2F2ZVJ1bihuZXh0UnVuKS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgIGNvbnNvbGUud2FybignW0NoZXNzaW1hbHNdIGNoYWxsZW5nZSBzbmFwc2hvdCBzYXZlIGZhaWxlZCcsIGVycm9yKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2xvbmVDaGFsbGVuZ2VHYW1lKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiBDaGVzc2ltYWxzR2FtZVN0YXRlIHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh7IC4uLmdhbWUsIG9ubGluZTogdW5kZWZpbmVkIH0pKSBhcyBDaGVzc2ltYWxzR2FtZVN0YXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBwbGF5UG93ZXJVbmxvY2tTb3VuZChwcmV2aW91czogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgdXBkYXRlZDogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IHZvaWQge1xuICAgIGNvbnN0IHdoaXRlVW5sb2NrZWQgPSAhcHJldmlvdXMucGxheWVycy53aGl0ZS5wb3dlclVubG9ja2VkICYmIHVwZGF0ZWQucGxheWVycy53aGl0ZS5wb3dlclVubG9ja2VkO1xuICAgIGNvbnN0IGJsYWNrVW5sb2NrZWQgPSAhcHJldmlvdXMucGxheWVycy5ibGFjay5wb3dlclVubG9ja2VkICYmIHVwZGF0ZWQucGxheWVycy5ibGFjay5wb3dlclVubG9ja2VkO1xuICAgIGlmICh3aGl0ZVVubG9ja2VkIHx8IGJsYWNrVW5sb2NrZWQpIHtcbiAgICAgIHRoaXMuYXVkaW8uY2hlc3NpbWFsc1Bvd2VyVW5sb2NrZWQoKTtcbiAgICAgIHRoaXMucG93ZXJVbmxvY2tQdWxzZS5zZXQoZmFsc2UpO1xuICAgICAgY29uc3Qgc3RhcnRQdWxzZSA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5wb3dlclVubG9ja1B1bHNlLnNldCh0cnVlKTtcbiAgICAgICAgaWYgKHRoaXMucG93ZXJVbmxvY2tUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMucG93ZXJVbmxvY2tUaW1lcik7XG4gICAgICAgIHRoaXMucG93ZXJVbmxvY2tUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5wb3dlclVubG9ja1B1bHNlLnNldChmYWxzZSksIDEzNTApO1xuICAgICAgfTtcbiAgICAgIGlmICh0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShzdGFydFB1bHNlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc3RhcnRQdWxzZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcXVldWVCb3RUdXJuSWZOZWVkZWQoKTogdm9pZCB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChcbiAgICAgIHRoaXMuc2NyZWVuKCkgIT09ICdnYW1lJyB8fFxuICAgICAgZ2FtZS5tb2RlICE9PSAnbG9jYWwnIHx8XG4gICAgICB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgIT09ICdib3QnIHx8XG4gICAgICBnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJyB8fFxuICAgICAgZ2FtZS5jdXJyZW50VHVybiAhPT0gQ0hFU1NJTUFMU19CT1RfQ09MT1JcbiAgICApIHtcbiAgICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYm90VHVyblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5ib3RUdXJuVGltZXIpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5ib3RUaGlua2luZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5ib3RUdXJuVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMucGxheUJvdFR1cm4oKSwgQ0hFU1NJTUFMU19CT1RfVEhJTktJTkdfTVMpO1xuICB9XG5cbiAgcHJpdmF0ZSBwbGF5Qm90VHVybigpOiB2b2lkIHtcbiAgICB0aGlzLmJvdFR1cm5UaW1lciA9IHVuZGVmaW5lZDtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKFxuICAgICAgdGhpcy5zY3JlZW4oKSAhPT0gJ2dhbWUnIHx8XG4gICAgICBnYW1lLm1vZGUgIT09ICdsb2NhbCcgfHxcbiAgICAgIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSAhPT0gJ2JvdCcgfHxcbiAgICAgIGdhbWUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnIHx8XG4gICAgICBnYW1lLmN1cnJlbnRUdXJuICE9PSBDSEVTU0lNQUxTX0JPVF9DT0xPUlxuICAgICkge1xuICAgICAgdGhpcy5ib3RUaGlua2luZy5zZXQoZmFsc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNoYWxsZW5nZUJvdCA9IHRoaXMuaXNDaGFsbGVuZ2VBY3RpdmUoKSA/IHRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KCkgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgbmlnaHRtYXJlTW9kZSA9IGNoYWxsZW5nZUJvdCA/ICdub25lJyA6IHRoaXMuYWN0aXZlTmlnaHRtYXJlTW9kZSgpO1xuICAgIGNvbnN0IG1vdmUgPSBjaG9vc2VDaGVzc2ltYWxzQm90TW92ZShnYW1lLCB0aGlzLmVuZ2luZUJvdERpZmZpY3VsdHkoKSwgdGhpcy5zZWxlY3RlZEJvdFByb2ZpbGVJZCgpLCB7XG4gICAgICBjaGFsbGVuZ2VSb3VuZDogY2hhbGxlbmdlQm90Py5yb3VuZCxcbiAgICAgIG5pZ2h0bWFyZU1vZGUsXG4gICAgfSk7XG4gICAgaWYgKCFtb3ZlKSB7XG4gICAgICB0aGlzLmdhbWUuc2V0KHJlc2lnbkNoZXNzaW1hbHNHYW1lKGdhbWUsIENIRVNTSU1BTFNfQk9UX0NPTE9SKSk7XG4gICAgICB0aGlzLnNob3dMYXRlc3RSZXZpZXdTbmFwc2hvdCgpO1xuICAgICAgdGhpcy5ib3RUaGlua2luZy5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5wbGF5Q2hlc3NpbWFsc091dGNvbWVTb3VuZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB1cGRhdGVkID0gYXBwbHlDaGVzc2ltYWxzTW92ZShnYW1lLCBtb3ZlKTtcbiAgICAgIHRoaXMuYm90VGhpbmtpbmcuc2V0KGZhbHNlKTtcbiAgICAgIGlmIChtb3ZlLmFuaW1hbCkgdGhpcy5wbGF5TW92ZVNvdW5kKG1vdmUsIHRydWUpO1xuICAgICAgaWYgKHVwZGF0ZWQuc3RhdHVzID09PSAnZmluaXNoZWQnKSB0aGlzLnBsYXlDaGVzc2ltYWxzT3V0Y29tZVNvdW5kKHVwZGF0ZWQpO1xuICAgICAgdGhpcy5hbmltYXRlTW92ZShnYW1lLCBtb3ZlLCB1cGRhdGVkKTtcbiAgICAgIGlmICghbW92ZS5hbmltYWwpIHRoaXMucGxheU1vdmVTb3VuZChtb3ZlLCB0cnVlKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMuYm90VGhpbmtpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJCb3RUdXJuKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmJvdFR1cm5UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuYm90VHVyblRpbWVyKTtcbiAgICB0aGlzLmJvdFR1cm5UaW1lciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmJvdFRoaW5raW5nLnNldChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIHRyaWdnZXJCb2FyZE9yaWVudGF0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNob3VsZEtlZXBCb2FyZE9yaWVudGF0aW9uU3RhdGljKCkpIHJldHVybjtcbiAgICBpZiAodGhpcy5ib2FyZE9yaWVudGF0aW9uVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLmJvYXJkT3JpZW50YXRpb25UaW1lcik7XG4gICAgdGhpcy5pc0JvYXJkT3JpZW50aW5nLnNldChmYWxzZSk7XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIHRoaXMuaXNCb2FyZE9yaWVudGluZy5zZXQodHJ1ZSk7XG4gICAgICB0aGlzLmJvYXJkT3JpZW50YXRpb25UaW1lciA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5pc0JvYXJkT3JpZW50aW5nLnNldChmYWxzZSksIDM0MCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNob3VsZEtlZXBCb2FyZE9yaWVudGF0aW9uU3RhdGljKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUgPSB0aGlzLmdhbWUoKSk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnR1dG9yaWFsTW9kZSgpKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGdhbWUubW9kZSA9PT0gJ2xvY2FsJyAmJiB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnO1xuICB9XG5cbiAgcHJpdmF0ZSBmb2N1c0JvYXJkU29vbigpOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZSA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmJvYXJkQW5jaG9yPy5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ3N0YXJ0JyB9KTtcbiAgICAgIH0sIDgwKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljU29vbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSB8fCB0aGlzLnNjcmVlbigpID09PSAnZ2FtZScpIHJldHVybjtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSB8fCB0aGlzLnNjcmVlbigpID09PSAnZ2FtZScpIHJldHVybjtcbiAgICAgIHZvaWQgdGhpcy5hdWRpby5zdGFydENoZXNzaW1hbHNNZW51TXVzaWMoKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydENoZXNzaW1hbHNHYW1lTXVzaWNTb29uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlIHx8IHRoaXMuc2NyZWVuKCkgIT09ICdnYW1lJykgcmV0dXJuO1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykgcmV0dXJuO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlIHx8IHRoaXMuc2NyZWVuKCkgIT09ICdnYW1lJykgcmV0dXJuO1xuICAgICAgdm9pZCB0aGlzLmF1ZGlvLnN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpYygpLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBwcml2YXRlIHN5bmNDaGVzc2ltYWxzTXVzaWNBZnRlclNldHRpbmdzQ2hhbmdlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNjcmVlbigpICE9PSAnZ2FtZScpIHtcbiAgICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljU29vbigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5zY3JlZW4oKSA9PT0gJ2dhbWUnICYmIHRoaXMuZ2FtZSgpLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJykge1xuICAgICAgdGhpcy5zdGFydENoZXNzaW1hbHNHYW1lTXVzaWNTb29uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwbGF5TW92ZVNvdW5kKG1vdmU6IENoZXNzaW1hbHNNb3ZlLCBpc0JvdCA9IGZhbHNlKTogdm9pZCB7XG4gICAgaWYgKG1vdmUuYW5pbWFsKSB7XG4gICAgICB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNQb3dlcihtb3ZlLmFuaW1hbCk7XG4gICAgICBpZiAobW92ZS5jYXB0dXJlc1BpZWNlSWQgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdGhpcy5hdWRpby5jaGVzc2ltYWxzQ2FwdHVyZSgpLCAxNTApO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobW92ZS5jYXB0dXJlc1BpZWNlSWQpIHtcbiAgICAgIHRoaXMuYXVkaW8uY2hlc3NpbWFsc0NhcHR1cmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGlzQm90KSB7XG4gICAgICB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNCb3RNb3ZlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYXVkaW8uY2hlc3NpbWFsc01vdmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgcGxheUNoZXNzaW1hbHNPdXRjb21lU291bmQoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSA9IHRoaXMuZ2FtZSgpKTogdm9pZCB7XG4gICAgaWYgKGdhbWUuc3RhdHVzICE9PSAnZmluaXNoZWQnKSByZXR1cm47XG4gICAgY29uc3Qga2V5ID0gYCR7Z2FtZS5pZH06JHtnYW1lLnN0YXR1c306JHtnYW1lLndpbm5lciA/PyAnbm9uZSd9OiR7Z2FtZS53aW5uZXJSZWFzb24gPz8gJ25vbmUnfToke2dhbWUubW92ZUNvdW50fWA7XG4gICAgaWYgKHRoaXMubGFzdE91dGNvbWVTb3VuZEtleSA9PT0ga2V5KSByZXR1cm47XG4gICAgdGhpcy5sYXN0T3V0Y29tZVNvdW5kS2V5ID0ga2V5O1xuICAgIGNvbnN0IHdpbm5lciA9IGdhbWUud2lubmVyO1xuICAgIGNvbnN0IHNpZGUgPSB0aGlzLmN1cnJlbnRQbGF5ZXJTaWRlRm9yT3V0Y29tZShnYW1lKTtcbiAgICBpZiAoIXdpbm5lciB8fCAhc2lkZSB8fCB3aW5uZXIgPT09IHNpZGUpIHtcbiAgICAgIHRoaXMuYXVkaW8uY2hlc3NpbWFsc1ZpY3RvcnkoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzRGVmZWF0KCk7XG4gIH1cblxuICBwcml2YXRlIGN1cnJlbnRQbGF5ZXJTaWRlRm9yT3V0Y29tZShnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogQ2hlc3NpbWFsc1BsYXllckNvbG9yIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykge1xuICAgICAgcmV0dXJuIHRoaXMub25saW5lLnBhcnRpY2lwYW50U2lkZShnYW1lLCB0aGlzLm9ubGluZVVpZCgpID8/IHRoaXMub25saW5lLmN1cnJlbnRVaWQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90JykgcmV0dXJuICd3aGl0ZSc7XG4gICAgcmV0dXJuIGdhbWUud2lubmVyUmVhc29uID09PSAncmVzaWduYXRpb24nID8gZ2FtZS5jdXJyZW50VHVybiA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJSZXZpZXcoKTogdm9pZCB7XG4gICAgdGhpcy5yZXZpZXdJbmRleC5zZXQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd0xhdGVzdFJldmlld1NuYXBzaG90KCk6IHZvaWQge1xuICAgIGNvbnN0IGVudHJpZXMgPSB0aGlzLmdhbWUoKS5tb3ZlSGlzdG9yeSA/PyBbXTtcbiAgICB0aGlzLnJldmlld0luZGV4LnNldChlbnRyaWVzLmxlbmd0aCA+IDEgPyBlbnRyaWVzLmxlbmd0aCAtIDEgOiB1bmRlZmluZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBxdWV1ZU1vdmVFZmZlY3QobW92ZTogQ2hlc3NpbWFsc01vdmUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tb3ZlRWZmZWN0U3RhcnRUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMubW92ZUVmZmVjdFN0YXJ0VGltZXIpO1xuICAgIGlmICh0aGlzLm1vdmVFZmZlY3RDbGVhclRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlRWZmZWN0Q2xlYXJUaW1lcik7XG5cbiAgICBpZiAoIW1vdmUuYW5pbWFsICYmICFtb3ZlLmNhcHR1cmVzUGllY2VJZCkge1xuICAgICAgdGhpcy5tb3ZlRWZmZWN0LnNldCh1bmRlZmluZWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubW92ZUVmZmVjdC5zZXQodW5kZWZpbmVkKTtcbiAgICBjb25zdCBkZWxheU1zID0gTWF0aC5tYXgoMCwgQ0hFU1NJTUFMU19NT1ZFX0FOSU1BVElPTl9NUyAtIDkwKTtcbiAgICB0aGlzLm1vdmVFZmZlY3RTdGFydFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm1vdmVFZmZlY3Quc2V0KHtcbiAgICAgICAgYW5pbWFsOiBtb3ZlLmFuaW1hbCxcbiAgICAgICAgZnJvbTogeyAuLi5tb3ZlLmZyb20gfSxcbiAgICAgICAgdG86IHsgLi4ubW92ZS50byB9LFxuICAgICAgICBjYXB0dXJlOiAhIW1vdmUuY2FwdHVyZXNQaWVjZUlkLFxuICAgICAgfSk7XG4gICAgICB0aGlzLm1vdmVFZmZlY3RDbGVhclRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLm1vdmVFZmZlY3Quc2V0KHVuZGVmaW5lZCksIENIRVNTSU1BTFNfUE9XRVJfQ0FMTE9VVF9NUyk7XG4gICAgfSwgZGVsYXlNcyk7XG4gIH1cblxuICBwcml2YXRlIHF1ZXVlU2NvcmVQb3AocHJldmlvdXM6IENoZXNzaW1hbHNHYW1lU3RhdGUsIHVwZGF0ZWQ6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zY29yZVBvcENsZWFyVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLnNjb3JlUG9wQ2xlYXJUaW1lcik7XG4gICAgY29uc3QgZW50cnkgPSB1cGRhdGVkLm1vdmVIaXN0b3J5Py5bdXBkYXRlZC5tb3ZlSGlzdG9yeS5sZW5ndGggLSAxXTtcbiAgICBjb25zdCBtb3ZlID0gZW50cnk/Lm1vdmU7XG4gICAgaWYgKCFlbnRyeSB8fCAhbW92ZSB8fCBwcmV2aW91cy5tb3ZlQ291bnQgPT09IHVwZGF0ZWQubW92ZUNvdW50KSB7XG4gICAgICB0aGlzLnNjb3JlUG9wLnNldCh1bmRlZmluZWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHByZXZpb3VzQ29tYm8gPSB0aGlzLmNhcHR1cmVDb21ib0JlZm9yZU1vdmUocHJldmlvdXMsIG1vdmUucGllY2VJZCk7XG4gICAgY29uc3QgbW92ZUNvbG9yID0gdGhpcy5jb2xvckZyb21QaWVjZUlkKG1vdmUucGllY2VJZCk7XG4gICAgY29uc3QgcHJvbW90aW9uID0gZW50cnkuc3RhdHVzID09PSAnZmluaXNoZWQnICYmIGVudHJ5Lndpbm5lclJlYXNvbiA9PT0gJ3Byb21vdGlvbicgJiYgZW50cnkud2lubmVyID09PSBtb3ZlQ29sb3I7XG4gICAgY29uc3Qgc2NvcmUgPSB0aGlzLnNjb3JlQ2hlc3NpbWFsc01vdmUobW92ZSwgcHJvbW90aW9uLCBwcmV2aW91c0NvbWJvKTtcbiAgICBpZiAoc2NvcmUuc2NvcmUgPD0gMSkge1xuICAgICAgdGhpcy5zY29yZVBvcC5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb2wgPSB0aGlzLmRpc3BsYXlDb2xJbmRleChtb3ZlLnRvLmNvbCkgKyAwLjU7XG4gICAgY29uc3Qgcm93ID0gdGhpcy5kaXNwbGF5Um93SW5kZXgobW92ZS50by5yb3cpICsgMC41O1xuICAgIHRoaXMuc2NvcmVQb3Auc2V0KHtcbiAgICAgIHNjb3JlOiBzY29yZS5zY29yZSxcbiAgICAgIGxhYmVsOiBzY29yZS5sYWJlbCxcbiAgICAgIGRldGFpbDogc2NvcmUuY29tYm8gPiAxID8gdGhpcy5zY29yZUNvbWJvTGFiZWwoc2NvcmUuY29tYm8pIDogdW5kZWZpbmVkLFxuICAgICAgeDogYCR7KGNvbCAvIHVwZGF0ZWQuYm9hcmRTaXplKSAqIDEwMH0lYCxcbiAgICAgIHk6IGAkeyhyb3cgLyB1cGRhdGVkLmJvYXJkU2l6ZSkgKiAxMDB9JWAsXG4gICAgICB0b25lUmdiOiAnNzksIDE2OSwgMjE4JyxcbiAgICAgIGR1cmF0aW9uTXM6IENIRVNTSU1BTFNfU0NPUkVfUE9QX01TLFxuICAgICAgdmFyaWFudDogc2NvcmUuY29tYm8gPiAxID8gJ2NvbWJvJyA6IG1vdmUuY2FwdHVyZXNQaWVjZUlkID8gJ2NhcHR1cmUnIDogJ3Njb3JlJyxcbiAgICB9KTtcbiAgICB0aGlzLnNjb3JlUG9wQ2xlYXJUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zY29yZVBvcC5zZXQodW5kZWZpbmVkKSwgQ0hFU1NJTUFMU19TQ09SRV9QT1BfTVMpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYXB0dXJlQ29tYm9CZWZvcmVNb3ZlKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIHBpZWNlSWQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgY29uc3QgY29sb3IgPSB0aGlzLmNvbG9yRnJvbVBpZWNlSWQocGllY2VJZCk7XG4gICAgaWYgKCFjb2xvcikgcmV0dXJuIDA7XG4gICAgbGV0IGNvbWJvID0gMDtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGdhbWUubW92ZUhpc3RvcnkgPz8gW10pIHtcbiAgICAgIGNvbnN0IG1vdmUgPSBlbnRyeS5tb3ZlO1xuICAgICAgaWYgKCFtb3ZlIHx8IHRoaXMuY29sb3JGcm9tUGllY2VJZChtb3ZlLnBpZWNlSWQpICE9PSBjb2xvcikgY29udGludWU7XG4gICAgICBjb21ibyA9IG1vdmUuY2FwdHVyZXNQaWVjZUlkID8gY29tYm8gKyAxIDogMDtcbiAgICB9XG4gICAgcmV0dXJuIGNvbWJvO1xuICB9XG5cbiAgdG9nZ2xlQW5pbWFsKGFuaW1hbDogQ2hlc3NpbWFsc0FuaW1hbFZpZXcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSB8fCAhdGhpcy5jYW5Vc2VQb3dlckNhcmRzKCkpIHJldHVybjtcbiAgICBpZiAodGhpcy5pc1Bvd2VyQ2FyZEJsb2NrZWRCeVR1dG9yaWFsKGFuaW1hbC50eXBlKSkgcmV0dXJuO1xuICAgIGNvbnN0IHBsYXllciA9IHRoaXMucG93ZXJQbGF5ZXIoKTtcbiAgICBpZiAoIXBsYXllci5wb3dlclVubG9ja2VkIHx8IHBsYXllci5jYXJkc1thbmltYWwudHlwZV0udXNlZCkgcmV0dXJuO1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLnNlbGVjdGVkQW5pbWFsKCk7XG4gICAgY29uc3QgbmV4dCA9IGN1cnJlbnQgPT09IGFuaW1hbC50eXBlID8gdW5kZWZpbmVkIDogYW5pbWFsLnR5cGU7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQobmV4dCk7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkUGllY2VJZCgpKSB7XG4gICAgICBjb25zdCBmaXJzdFBpZWNlID0gdGhpcy5nYW1lKCkucGllY2VzLmZpbmQoXG4gICAgICAgIChwaWVjZSkgPT4gIXBpZWNlLmNhcHR1cmVkICYmIHBpZWNlLmNvbG9yID09PSB0aGlzLmdhbWUoKS5jdXJyZW50VHVybixcbiAgICAgICk7XG4gICAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQoZmlyc3RQaWVjZT8uaWQpO1xuICAgIH1cbiAgICBpZiAobmV4dCkgdGhpcy5hdWRpby5jaGVzc2ltYWxzUG93ZXJQcmV2aWV3KGFuaW1hbC50eXBlKTtcbiAgfVxuXG4gIHBpZWNlQXQocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogQ2hlc3NpbWFsc1BpZWNlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gZ2V0Q2hlc3NpbWFsc1BpZWNlQXQodGhpcy5yZXZpZXdHYW1lKCksIHsgcm93LCBjb2wgfSk7XG4gIH1cblxuICBpc0RhcmtDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAocm93ICsgY29sKSAlIDIgPT09IDE7XG4gIH1cblxuICBpc0VkZ2VDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGxhc3QgPSB0aGlzLnJldmlld0dhbWUoKS5ib2FyZFNpemUgLSAxO1xuICAgIHJldHVybiByb3cgPT09IDAgfHwgY29sID09PSAwIHx8IHJvdyA9PT0gbGFzdCB8fCBjb2wgPT09IGxhc3Q7XG4gIH1cblxuICBjZWxsV2Vhcihyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLmFicygocm93ICogMTcgKyBjb2wgKiAzMSArIHJvdyAqIGNvbCAqIDcpICUgNik7XG4gIH1cblxuICBpc1NlbGVjdGVkQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBwaWVjZSA9IHRoaXMucGllY2VBdChyb3csIGNvbCk7XG4gICAgcmV0dXJuICEhcGllY2UgJiYgcGllY2UuaWQgPT09IHRoaXMuc2VsZWN0ZWRQaWVjZUlkKCk7XG4gIH1cblxuICBpc0xlZ2FsQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5sZWdhbE1vdmVLZXlzKCkuaGFzKHBvc2l0aW9uS2V5KHsgcm93LCBjb2wgfSkpO1xuICB9XG5cbiAgaXNDYXB0dXJlQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jYXB0dXJlTW92ZUtleXMoKS5oYXMocG9zaXRpb25LZXkoeyByb3csIGNvbCB9KSk7XG4gIH1cblxuICBpc1RocmVhdGVuZWRDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBpZWNlID0gdGhpcy5waWVjZUF0KHJvdywgY29sKTtcbiAgICByZXR1cm4gISFwaWVjZSAmJiB0aGlzLnRocmVhdGVuZWRQaWVjZUlkcygpLmhhcyhwaWVjZS5pZCk7XG4gIH1cblxuICBpc0NhcHR1cmVSZWFkeUNlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGllY2UgPSB0aGlzLnBpZWNlQXQocm93LCBjb2wpO1xuICAgIHJldHVybiAhIXBpZWNlICYmIHBpZWNlLmNvbG9yID09PSB0aGlzLmdhbWUoKS5jdXJyZW50VHVybiAmJiB0aGlzLmNhcHR1cmVSZWFkeVBpZWNlSWRzKCkuaGFzKHBpZWNlLmlkKTtcbiAgfVxuXG4gIGlzV2lubmluZ0NlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMud2lubmluZ01vdmVLZXlzKCkuaGFzKHBvc2l0aW9uS2V5KHsgcm93LCBjb2wgfSkpO1xuICB9XG5cbiAgaXNMYXN0TW92ZUNlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbGFzdE1vdmUgPSB0aGlzLnJldmlld0dhbWUoKS5sYXN0TW92ZTtcbiAgICByZXR1cm4gIXRoaXMuc2VsZWN0ZWRQaWVjZUlkKCkgJiYgISFsYXN0TW92ZSAmJiBwb3NpdGlvbktleShsYXN0TW92ZS50bykgPT09IHBvc2l0aW9uS2V5KHsgcm93LCBjb2wgfSk7XG4gIH1cblxuICBpc01vdmluZ1NvdXJjZUNlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbW92aW5nID0gdGhpcy5tb3ZpbmdQaWVjZSgpO1xuICAgIGlmICghbW92aW5nKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheVJvd0luZGV4KHJvdykgPT09IG1vdmluZy5mcm9tUm93ICYmIHRoaXMuZGlzcGxheUNvbEluZGV4KGNvbCkgPT09IG1vdmluZy5mcm9tQ29sO1xuICB9XG5cbiAgaXNNb3ZlRWZmZWN0Q2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIsIGFuaW1hbD86IENoZXNzaW1hbHNBbmltYWxUeXBlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZWZmZWN0ID0gdGhpcy5tb3ZlRWZmZWN0KCk7XG4gICAgaWYgKCFlZmZlY3QpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoYW5pbWFsICYmIGVmZmVjdC5hbmltYWwgIT09IGFuaW1hbCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBwb3NpdGlvbktleShlZmZlY3QudG8pID09PSBwb3NpdGlvbktleSh7IHJvdywgY29sIH0pO1xuICB9XG5cbiAgaXNNb3ZlRWZmZWN0U291cmNlQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBlZmZlY3QgPSB0aGlzLm1vdmVFZmZlY3QoKTtcbiAgICByZXR1cm4gISFlZmZlY3QgJiYgcG9zaXRpb25LZXkoZWZmZWN0LmZyb20pID09PSBwb3NpdGlvbktleSh7IHJvdywgY29sIH0pO1xuICB9XG5cbiAgaXNNb3ZlRWZmZWN0Q2FwdHVyZUNlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZWZmZWN0ID0gdGhpcy5tb3ZlRWZmZWN0KCk7XG4gICAgcmV0dXJuICEhZWZmZWN0Py5jYXB0dXJlICYmIHBvc2l0aW9uS2V5KGVmZmVjdC50bykgPT09IHBvc2l0aW9uS2V5KHsgcm93LCBjb2wgfSk7XG4gIH1cblxuICBmaWxlTGFiZWwoY29sOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDY1ICsgY29sKTtcbiAgfVxuXG4gIHJhbmtMYWJlbChyb3c6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMucmV2aWV3R2FtZSgpLmJvYXJkU2l6ZSAtIHJvd31gO1xuICB9XG5cbiAgc2hvd1JhbmtMYWJlbChjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjb2wgPT09IHRoaXMuZGlzcGxheUNvbHMoKVswXTtcbiAgfVxuXG4gIHNob3dGaWxlTGFiZWwocm93OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCByb3dzID0gdGhpcy5kaXNwbGF5Um93cygpO1xuICAgIHJldHVybiByb3cgPT09IHJvd3Nbcm93cy5sZW5ndGggLSAxXTtcbiAgfVxuXG4gIHBsYXllckxhYmVsKGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IpOiBzdHJpbmcge1xuICAgIHJldHVybiBjb2xvciA9PT0gJ3doaXRlJyA/IHRoaXMudCgnY2hlc3NpbWFsc1doaXRlJykgOiB0aGlzLnQoJ2NoZXNzaW1hbHNCbGFjaycpO1xuICB9XG5cbiAgY2FwdHVyZXNTY29yZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc2NvcmUgPSB0aGlzLmNhcHR1cmVzQnlDb2xvcigpO1xuICAgIHJldHVybiBgJHtzY29yZS53aGl0ZX0tJHtzY29yZS5ibGFja31gO1xuICB9XG5cbiAgdHVyblRpbWVyTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzZWNvbmRzID0gdGhpcy50dXJuU2Vjb25kc1JlbWFpbmluZygpO1xuICAgIHJldHVybiBzZWNvbmRzID09PSB1bmRlZmluZWQgPyAnLScgOiBgJHtzZWNvbmRzfXNgO1xuICB9XG5cbiAgc2NvcmVDb21ib0xhYmVsKGNvbWJvOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNTY29yZUNvbWJvJykucmVwbGFjZSgne2NvbWJvfScsIFN0cmluZyhjb21ibykpO1xuICB9XG5cbiAgdHVyblRpbWVyUHJvZ3Jlc3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzZWNvbmRzID0gdGhpcy50dXJuU2Vjb25kc1JlbWFpbmluZygpO1xuICAgIGNvbnN0IGR1cmF0aW9uID0gdGhpcy50dXJuVGltZXJEdXJhdGlvbjtcbiAgICBpZiAoc2Vjb25kcyA9PT0gdW5kZWZpbmVkIHx8IGR1cmF0aW9uIDw9IDApIHJldHVybiAnMSc7XG4gICAgcmV0dXJuIFN0cmluZyhNYXRoLm1heCgwLCBNYXRoLm1pbigxLCBzZWNvbmRzIC8gZHVyYXRpb24pKSk7XG4gIH1cblxuICBpc1R1cm5UaW1lckxvdygpOiBib29sZWFuIHtcbiAgICBjb25zdCBzZWNvbmRzID0gdGhpcy50dXJuU2Vjb25kc1JlbWFpbmluZygpO1xuICAgIHJldHVybiBzZWNvbmRzICE9PSB1bmRlZmluZWQgJiYgc2Vjb25kcyA8PSA1O1xuICB9XG5cbiAgdHVyblN0YXRlTGFiZWwoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5nYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzRmluaXNoZWRDaGlwJyk7XG4gICAgaWYgKHRoaXMuaXNBY3Rpb25hYmxlVHVybigpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzWW91clR1cm4nKTtcbiAgICBpZiAodGhpcy5ib3RUaGlua2luZygpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm90VGhpbmtpbmdUaXRsZScpO1xuICAgIGlmICh0aGlzLm1vdmVTeW5jaW5nKCkpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVTeW5jaW5nVGl0bGUnKTtcbiAgICByZXR1cm4gdGhpcy5pc1dhaXRpbmdGb3JUdXJuKCkgPyB0aGlzLnQoJ2NoZXNzaW1hbHNXYWl0aW5nVHVybkxhYmVsJykgOiB0aGlzLm1vZGVDaGlwTGFiZWwoKTtcbiAgfVxuXG4gIHR1cm5TdGF0ZUJvZHkoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5nYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnKSByZXR1cm4gdGhpcy53aW5Cb2R5KCk7XG4gICAgaWYgKHRoaXMuaXNBY3Rpb25hYmxlVHVybigpKSB7XG4gICAgICBpZiAodGhpcy5pc1R1cm5UaW1lckxvdygpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzVHVyblRpbWVyTG93Qm9keScpO1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcgJiYgdGhpcy5nYW1lKCkubW9kZSA9PT0gJ2xvY2FsJ1xuICAgICAgICA/IHRoaXMudCgnY2hlc3NpbWFsc0JvdFlvdXJUdXJuQm9keScpXG4gICAgICAgIDogdGhpcy50KCdjaGVzc2ltYWxzWW91clR1cm5Cb2R5Jyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmJvdFRoaW5raW5nKCkpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RUaGlua2luZ0JvZHknKTtcbiAgICBpZiAodGhpcy5tb3ZlU3luY2luZygpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lU3luY2luZ0JvZHknKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzV2FpdGluZ1R1cm4nKTtcbiAgfVxuXG4gIHdpbm5lckRpc3BsYXlOYW1lKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgd2lubmVyID0gdGhpcy5nYW1lKCkud2lubmVyID8/ICd3aGl0ZSc7XG4gICAgcmV0dXJuIHRoaXMucGxheWVyRGlzcGxheU5hbWUod2lubmVyKTtcbiAgfVxuXG4gIHdpbm5lclNpZGVMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBsYXllckxhYmVsKHRoaXMuZ2FtZSgpLndpbm5lciA/PyAnd2hpdGUnKTtcbiAgfVxuXG4gIHdpbm5lckluaXRpYWxzKCk6IHN0cmluZyB7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMud2lubmVyRGlzcGxheU5hbWUoKS50cmltKCk7XG4gICAgY29uc3QgaW5pdGlhbHMgPSBuYW1lXG4gICAgICAuc3BsaXQoL1xccysvKVxuICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgLnNsaWNlKDAsIDIpXG4gICAgICAubWFwKChwYXJ0KSA9PiBwYXJ0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpKVxuICAgICAgLmpvaW4oJycpO1xuICAgIHJldHVybiBpbml0aWFscyB8fCB0aGlzLndpbm5lclNpZGVMYWJlbCgpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpO1xuICB9XG5cbiAgd2lubmVyQXZhdGFyVXJsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGNvbnN0IHdpbm5lciA9IGdhbWUud2lubmVyO1xuICAgIGlmICghd2lubmVyIHx8IGdhbWUubW9kZSAhPT0gJ29ubGluZScpIHJldHVybiAnJztcbiAgICByZXR1cm4gZ2FtZS5vbmxpbmU/LnBhcnRpY2lwYW50cz8uW3dpbm5lcl0/LmF2YXRhclVybD8udHJpbSgpID8/ICcnO1xuICB9XG5cbiAgaXNDdXJyZW50UGxheWVyVmljdG9yeSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUuc3RhdHVzICE9PSAnZmluaXNoZWQnIHx8ICFnYW1lLndpbm5lcikgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRQbGF5ZXJTaWRlRm9yT3V0Y29tZShnYW1lKSA9PT0gZ2FtZS53aW5uZXI7XG4gIH1cblxuICBpc0N1cnJlbnRQbGF5ZXJEZWZlYXQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJyB8fCAhZ2FtZS53aW5uZXIpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBzaWRlID0gdGhpcy5jdXJyZW50UGxheWVyU2lkZUZvck91dGNvbWUoZ2FtZSk7XG4gICAgcmV0dXJuICEhc2lkZSAmJiBzaWRlICE9PSBnYW1lLndpbm5lcjtcbiAgfVxuXG4gIHByaXZhdGUgcGxheWVyRGlzcGxheU5hbWUoY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcik6IHN0cmluZyB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSB7XG4gICAgICBjb25zdCBwYXJ0aWNpcGFudCA9IGdhbWUub25saW5lPy5wYXJ0aWNpcGFudHM/Lltjb2xvcl07XG4gICAgICBjb25zdCBuYW1lID0gcGFydGljaXBhbnQ/Lm5hbWU/LnRyaW0oKTtcbiAgICAgIGlmIChuYW1lKSByZXR1cm4gbmFtZTtcbiAgICAgIGNvbnN0IGhhbmRsZSA9IHBhcnRpY2lwYW50Py5oYW5kbGU/LnRyaW0oKTtcbiAgICAgIGlmIChoYW5kbGUpIHJldHVybiBoYW5kbGU7XG4gICAgfVxuICAgIGlmIChnYW1lLm1vZGUgPT09ICdsb2NhbCcgJiYgdGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90Jykge1xuICAgICAgcmV0dXJuIGNvbG9yID09PSBDSEVTU0lNQUxTX0JPVF9DT0xPUiA/IHRoaXMudCgnY2hlc3NpbWFsc0JvdE5hbWUnKSA6IHRoaXMubG9nZ2VkUGxheWVyTmFtZSgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wbGF5ZXJMYWJlbChjb2xvcik7XG4gIH1cblxuICBwcml2YXRlIHJlbWF0Y2hPcHBvbmVudCgpOiBDaGVzc2ltYWxzT25saW5lUGFydGljaXBhbnQgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBjb25zdCByb2xlID0gdGhpcy5vbmxpbmVSb2xlKCk7XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ29ubGluZScgfHwgKHJvbGUgIT09ICd3aGl0ZScgJiYgcm9sZSAhPT0gJ2JsYWNrJykpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgb3Bwb25lbnRTaWRlOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IgPSByb2xlID09PSAnd2hpdGUnID8gJ2JsYWNrJyA6ICd3aGl0ZSc7XG4gICAgcmV0dXJuIGdhbWUub25saW5lPy5wYXJ0aWNpcGFudHM/LltvcHBvbmVudFNpZGVdO1xuICB9XG5cbiAgcHJpdmF0ZSBjdXJyZW50T3Bwb25lbnRVaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZW1hdGNoT3Bwb25lbnQoKT8udWlkID8/ICcnO1xuICB9XG5cbiAgbW9kZUNoaXBMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJykge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcgPyB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RNb2RlJykgOiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmVEZXZpY2UnKTtcbiAgICB9XG4gICAgY29uc3Qgcm9sZSA9IHRoaXMub25saW5lUm9sZSgpO1xuICAgIGlmIChyb2xlID09PSAnd2FpdGluZycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVXYWl0aW5nJyk7XG4gICAgaWYgKHJvbGUgPT09ICdwZW5kaW5nJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZVBlbmRpbmcnKTtcbiAgICBpZiAocm9sZSA9PT0gJ3NwZWN0YXRvcicpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNTcGVjdGF0b3InKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lUGxheWVyJyk7XG4gIH1cblxuICB0dXJuVGl0bGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ29ubGluZScpIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnICYmIGdhbWUuY3VycmVudFR1cm4gPT09IENIRVNTSU1BTFNfQk9UX0NPTE9SKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RUaGlua2luZ1RpdGxlJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50VHVyblRpdGxlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9ubGluZVJvbGUoKSA9PT0gZ2FtZS5jdXJyZW50VHVybikgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1lvdXJUdXJuJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0N1cnJlbnRUdXJuJykucmVwbGFjZSgne3BsYXllcn0nLCB0aGlzLnBsYXllckxhYmVsKGdhbWUuY3VycmVudFR1cm4pKTtcbiAgfVxuXG4gIG5vcm1hbGl6ZUdhbWVJZCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5vbmxpbmUubm9ybWFsaXplR2FtZUlkKHZhbHVlKTtcbiAgfVxuXG4gIGFzeW5jIGNvcHlPbmxpbmVMaW5rKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMub25saW5lLnNoYXJlVXJsKHRoaXMuZ2FtZSgpLmlkLCB0aGlzLm1pbmlHYW1lc0Jhc2VSb3V0ZSgpKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZD8ud3JpdGVUZXh0KHVybCk7XG4gICAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlOiB0aGlzLnQoJ2NoZXNzaW1hbHNMaW5rQ29waWVkJyksIGNvbG9yOiAnZGFyaycsIGR1cmF0aW9uOiAyMjAwLCBwb3NpdGlvbjogJ3RvcCcgfSk7XG4gICAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNoYXJlT25saW5lTGluaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLm9ubGluZS5zaGFyZVVybCh0aGlzLmdhbWUoKS5pZCwgdGhpcy5taW5pR2FtZXNCYXNlUm91dGUoKSk7XG4gICAgaWYgKG5hdmlnYXRvci5zaGFyZSkge1xuICAgICAgYXdhaXQgbmF2aWdhdG9yLnNoYXJlKHsgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc1RpdGxlJyksIHRleHQ6IHRoaXMudCgnY2hlc3NpbWFsc1NoYXJlVGV4dCcpLCB1cmwgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuY29weU9ubGluZUxpbmsoKTtcbiAgfVxuXG4gIGFzeW5jIHNoYXJlUHJvamVjdGlvbkxpbmsoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5vbmxpbmUucHJvamVjdGlvblNoYXJlVXJsKHRoaXMuZ2FtZSgpLmlkLCB0aGlzLm1pbmlHYW1lc0Jhc2VSb3V0ZSgpKTtcbiAgICBpZiAobmF2aWdhdG9yLnNoYXJlKSB7XG4gICAgICBhd2FpdCBuYXZpZ2F0b3Iuc2hhcmUoe1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzUHJvamVjdGlvblRpdGxlJyksXG4gICAgICAgIHRleHQ6IHRoaXMudCgnY2hlc3NpbWFsc1Byb2plY3Rpb25TaGFyZVRleHQnKSxcbiAgICAgICAgdXJsLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkPy53cml0ZVRleHQodXJsKTtcbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICAgIG1lc3NhZ2U6IHRoaXMudCgnY2hlc3NpbWFsc1Byb2plY3Rpb25MaW5rQ29waWVkJyksXG4gICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgIGR1cmF0aW9uOiAyMjAwLFxuICAgICAgICBwb3NpdGlvbjogJ3RvcCcsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgfVxuICB9XG5cbiAgY2FuUmV2aWV3UGVuZGluZ0d1ZXN0KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBjb25zdCB1aWQgPSB0aGlzLm9ubGluZVVpZCgpO1xuICAgIHJldHVybiAhIXVpZFxuICAgICAgJiYgZ2FtZS5tb2RlID09PSAnb25saW5lJ1xuICAgICAgJiYgdGhpcy5vbmxpbmUuaXNIb3N0V2FpdGluZyhnYW1lLCB1aWQpXG4gICAgICAmJiAhIWdhbWUub25saW5lLnBlbmRpbmdHdWVzdDtcbiAgfVxuXG4gIHBlbmRpbmdHdWVzdE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nYW1lKCkub25saW5lPy5wZW5kaW5nR3Vlc3Q/Lm5hbWUgPz8gdGhpcy50KCdkZWZhdWx0UGxheWVyTmFtZScpO1xuICB9XG5cbiAgcGVuZGluZ0d1ZXN0SGFuZGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2FtZSgpLm9ubGluZT8ucGVuZGluZ0d1ZXN0Py5oYW5kbGUgPz8gJyc7XG4gIH1cblxuICBwZW5kaW5nR3Vlc3RBdmF0YXJVcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nYW1lKCkub25saW5lPy5wZW5kaW5nR3Vlc3Q/LmF2YXRhclVybCA/PyAnJztcbiAgfVxuXG4gIHBlbmRpbmdHdWVzdEluaXRpYWxzKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZ3Vlc3QgPSB0aGlzLmdhbWUoKS5vbmxpbmU/LnBlbmRpbmdHdWVzdDtcbiAgICBjb25zdCBuYW1lID0gKGd1ZXN0Py5uYW1lIHx8IGd1ZXN0Py5oYW5kbGUgfHwgdGhpcy50KCdkZWZhdWx0UGxheWVyTmFtZScpKS50cmltKCk7XG4gICAgY29uc3QgaW5pdGlhbHMgPSBuYW1lXG4gICAgICAuc3BsaXQoL1xccysvKVxuICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgLnNsaWNlKDAsIDIpXG4gICAgICAubWFwKChwYXJ0KSA9PiBwYXJ0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpKVxuICAgICAgLmpvaW4oJycpO1xuICAgIHJldHVybiBpbml0aWFscyB8fCAnPyc7XG4gIH1cblxuICBwZW5kaW5nR3Vlc3RBdmF0YXJQcm9wcygpOiBVc2VyQXZhdGFyTWV0YWRhdGEge1xuICAgIGNvbnN0IGd1ZXN0ID0gdGhpcy5nYW1lKCkub25saW5lPy5wZW5kaW5nR3Vlc3Q7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVzZXI6IHtcbiAgICAgICAgbmFtZTogZ3Vlc3Q/Lm5hbWUsXG4gICAgICAgIGhhbmRsZTogZ3Vlc3Q/LmhhbmRsZSxcbiAgICAgICAgYXZhdGFyVXJsOiBndWVzdD8uYXZhdGFyVXJsLFxuICAgICAgfSxcbiAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICBib3JkZXJlZDogdHJ1ZSxcbiAgICB9O1xuICB9XG5cbiAgcmVtYXRjaE9wcG9uZW50TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlbWF0Y2hPcHBvbmVudCgpPy5uYW1lPy50cmltKCkgfHwgdGhpcy50KCdkZWZhdWx0UGxheWVyTmFtZScpO1xuICB9XG5cbiAgcmVtYXRjaE9wcG9uZW50SGFuZGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVtYXRjaE9wcG9uZW50KCk/LmhhbmRsZT8udHJpbSgpID8/ICcnO1xuICB9XG5cbiAgcmVtYXRjaE9wcG9uZW50QXZhdGFyVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVtYXRjaE9wcG9uZW50KCk/LmF2YXRhclVybD8udHJpbSgpID8/ICcnO1xuICB9XG5cbiAgcmVtYXRjaE9wcG9uZW50SW5pdGlhbHMoKTogc3RyaW5nIHtcbiAgICBjb25zdCBvcHBvbmVudCA9IHRoaXMucmVtYXRjaE9wcG9uZW50KCk7XG4gICAgY29uc3QgbmFtZSA9IChvcHBvbmVudD8ubmFtZSB8fCBvcHBvbmVudD8uaGFuZGxlIHx8IHRoaXMudCgnZGVmYXVsdFBsYXllck5hbWUnKSkudHJpbSgpO1xuICAgIGNvbnN0IGluaXRpYWxzID0gbmFtZVxuICAgICAgLnNwbGl0KC9cXHMrLylcbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgIC5zbGljZSgwLCAyKVxuICAgICAgLm1hcCgocGFydCkgPT4gcGFydC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSlcbiAgICAgIC5qb2luKCcnKTtcbiAgICByZXR1cm4gaW5pdGlhbHMgfHwgJz8nO1xuICB9XG5cbiAgcmVtYXRjaE9wcG9uZW50QXZhdGFyUHJvcHMoKTogVXNlckF2YXRhck1ldGFkYXRhIHtcbiAgICBjb25zdCBvcHBvbmVudCA9IHRoaXMucmVtYXRjaE9wcG9uZW50KCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVzZXI6IHtcbiAgICAgICAgbmFtZTogb3Bwb25lbnQ/Lm5hbWUsXG4gICAgICAgIGhhbmRsZTogb3Bwb25lbnQ/LmhhbmRsZSxcbiAgICAgICAgYXZhdGFyVXJsOiBvcHBvbmVudD8uYXZhdGFyVXJsLFxuICAgICAgfSxcbiAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICBib3JkZXJlZDogdHJ1ZSxcbiAgICB9O1xuICB9XG5cbiAgd2FpdGluZ1RpdGxlKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuY2FuUmV2aWV3UGVuZGluZ0d1ZXN0KCkpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNKb2luUmVxdWVzdFRpdGxlJyk7XG4gICAgaWYgKHRoaXMub25saW5lUm9sZSgpID09PSAncGVuZGluZycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNMb2JieUd1ZXN0V2FpdGluZ1RpdGxlJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1dhaXRpbmdUaXRsZScpO1xuICB9XG5cbiAgd2FpdGluZ0JvZHkoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5jYW5SZXZpZXdQZW5kaW5nR3Vlc3QoKSkge1xuICAgICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0pvaW5SZXF1ZXN0Qm9keScpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgdGhpcy5wZW5kaW5nR3Vlc3ROYW1lKCkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vbmxpbmVSb2xlKCkgPT09ICdwZW5kaW5nJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0xvYmJ5R3Vlc3RXYWl0aW5nQm9keScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNXYWl0aW5nQm9keScpO1xuICB9XG5cbiAgYXN5bmMgYWNjZXB0T25saW5lR3Vlc3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmNhblJldmlld1BlbmRpbmdHdWVzdCgpKSByZXR1cm47XG4gICAgdGhpcy5vbmxpbmVBY3Rpb24uc2V0KCdhY2NlcHQnKTtcbiAgICB0aGlzLm9ubGluZUxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm9ubGluZS5hY2NlcHRHdWVzdCh0aGlzLmdhbWUoKS5pZCk7XG4gICAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlOiB0aGlzLnQoJ2NoZXNzaW1hbHNHdWVzdEFjY2VwdGVkJyksIGNvbG9yOiAnZGFyaycsIGR1cmF0aW9uOiAyMjAwLCBwb3NpdGlvbjogJ3RvcCcgfSk7XG4gICAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLnN1Y2Nlc3MoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gYWNjZXB0IGd1ZXN0IGZhaWxlZCcsIGVycm9yKTtcbiAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5lcnJvcigpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHJlamVjdE9ubGluZUd1ZXN0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5jYW5SZXZpZXdQZW5kaW5nR3Vlc3QoKSkgcmV0dXJuO1xuICAgIHRoaXMub25saW5lQWN0aW9uLnNldCgncmVqZWN0Jyk7XG4gICAgdGhpcy5vbmxpbmVMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5vbmxpbmUucmVqZWN0R3Vlc3QodGhpcy5nYW1lKCkuaWQpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZTogdGhpcy50KCdjaGVzc2ltYWxzR3Vlc3RSZWplY3RlZCcpLCBjb2xvcjogJ2RhcmsnLCBkdXJhdGlvbjogMjIwMCwgcG9zaXRpb246ICd0b3AnIH0pO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy53YXJuaW5nKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignW0NoZXNzaW1hbHNdIHJlamVjdCBndWVzdCBmYWlsZWQnLCBlcnJvcik7XG4gICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgdm9pZCB0aGlzLmhhcHRpY3MuZXJyb3IoKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5vbmxpbmVBY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLm9ubGluZUxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBvcGVuSGlzdG9yeUdhbWUoZW50cnk6IENoZXNzaW1hbHNIaXN0b3J5RW50cnkpOiB2b2lkIHtcbiAgICB0aGlzLm9ubGluZUpvaW5Db2RlLnNldChlbnRyeS5nYW1lSWQpO1xuICAgIHZvaWQgdGhpcy5vcGVuT25saW5lR2FtZShlbnRyeS5nYW1lSWQpO1xuICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLmNoZXNzaW1hbHNHYW1lUm91dGUoZW50cnkuZ2FtZUlkKSk7XG4gIH1cblxuICBoaXN0b3J5T3V0Y29tZUxhYmVsKGVudHJ5OiBDaGVzc2ltYWxzSGlzdG9yeUVudHJ5KTogc3RyaW5nIHtcbiAgICBjb25zdCBvdXRjb21lS2V5ID0gYGNoZXNzaW1hbHNIaXN0b3J5JHtlbnRyeS5vdXRjb21lXG4gICAgICAuc3BsaXQoJ18nKVxuICAgICAgLm1hcCgocGFydCkgPT4gdGhpcy5jYXBpdGFsaXplKHBhcnQpKVxuICAgICAgLmpvaW4oJycpfWA7XG4gICAgY29uc3Qgb3Bwb25lbnQgPSBlbnRyeS5vcHBvbmVudE5hbWVcbiAgICAgID8gYCDCtyAke3RoaXMudCgnY2hlc3NpbWFsc0hpc3RvcnlBZ2FpbnN0JykucmVwbGFjZSgne3BsYXllcn0nLCBlbnRyeS5vcHBvbmVudE5hbWUpfWBcbiAgICAgIDogJyc7XG4gICAgcmV0dXJuIGAke3RoaXMudChvdXRjb21lS2V5KX0ke29wcG9uZW50fWA7XG4gIH1cblxuICBhc3luYyByZXF1ZXN0T25saW5lUmVtYXRjaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5nYW1lKCkubW9kZSAhPT0gJ29ubGluZScpIHJldHVybjtcbiAgICBpZiAoIXRoaXMuY2FuQ29udHJvbEN1cnJlbnRHYW1lKCkpIHJldHVybjtcbiAgICBpZiAodGhpcy5yZW1hdGNoU3RhdGUoKSA9PT0gJ3JlcXVlc3RlZCcgfHwgdGhpcy5yZW1hdGNoTG9hZGluZygpKSByZXR1cm47XG4gICAgY29uc3QgYWNjZXB0aW5nID0gdGhpcy5yZW1hdGNoU3RhdGUoKSA9PT0gJ2luY29taW5nJztcbiAgICB0aGlzLnJlbWF0Y2hMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbmV4dCA9IGF3YWl0IHRoaXMub25saW5lLnJlcXVlc3RSZW1hdGNoKHRoaXMuZ2FtZSgpLmlkKTtcbiAgICAgIGlmIChuZXh0Py5zdGF0dXMgPT09ICdpbl9wcm9ncmVzcycpIHtcbiAgICAgICAgdGhpcy5hcHBseU9ubGluZUdhbWVTbmFwc2hvdCh0aGlzLmdhbWUoKSwgbmV4dCk7XG4gICAgICB9XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnQoYWNjZXB0aW5nID8gJ2NoZXNzaW1hbHNSZW1hdGNoQWNjZXB0ZWQnIDogJ2NoZXNzaW1hbHNSZW1hdGNoUmVxdWVzdGVkVG9hc3QnKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgZHVyYXRpb246IDI0MDAsXG4gICAgICAgIHBvc2l0aW9uOiAndG9wJyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnJlbWF0Y2hMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBxdWV1ZUhpc3RvcnlXYXRjaCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oaXN0b3J5V2F0Y2hUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuaGlzdG9yeVdhdGNoVGltZXIpO1xuICAgIHRoaXMuaGlzdG9yeVdhdGNoVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMud2F0Y2hPbmxpbmVIaXN0b3J5KCksIDIyMCk7XG4gIH1cblxuICBwcml2YXRlIHdhdGNoT25saW5lSGlzdG9yeSgpOiB2b2lkIHtcbiAgICBjb25zdCB1aWQgPSB0aGlzLm9ubGluZS5jdXJyZW50VWlkO1xuICAgIGlmICghdWlkKSByZXR1cm47XG4gICAgaWYgKHRoaXMuaGlzdG9yeVVpZCA9PT0gdWlkICYmIHRoaXMuaGlzdG9yeVN1YnNjcmlwdGlvbikgcmV0dXJuO1xuICAgIHRoaXMuaGlzdG9yeVVpZCA9IHVpZDtcbiAgICB0aGlzLmhpc3RvcnlTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5oaXN0b3J5U3Vic2NyaXB0aW9uID0gdGhpcy5vbmxpbmUud2F0Y2hIaXN0b3J5KDI0KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGhpc3RvcnkpID0+IHRoaXMub25saW5lSGlzdG9yeS5zZXQoaGlzdG9yeSksXG4gICAgICBlcnJvcjogKCkgPT4gdGhpcy5vbmxpbmVIaXN0b3J5LnNldChbXSksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHdhdGNoQ2hhbGxlbmdlU3RhdHMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2hhbGxlbmdlU3RhdHNTdWJzY3JpcHRpb24pIHJldHVybjtcbiAgICB0aGlzLmNoYWxsZW5nZVN0YXRzU3Vic2NyaXB0aW9uID0gdGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy53YXRjaFN0YXRzKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChzdGF0cykgPT4gdGhpcy5jaGFsbGVuZ2VTdGF0cy5zZXQoc3RhdHMgPz8gdGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy5lbXB0eVN0YXRzKCkpLFxuICAgICAgZXJyb3I6ICgpID0+IHRoaXMuY2hhbGxlbmdlU3RhdHMuc2V0KHRoaXMuY2hhbGxlbmdlUHJvZ3Jlc3MuZW1wdHlTdGF0cygpKSxcbiAgICB9KTtcbiAgICB0aGlzLmNoYWxsZW5nZVJ1bnNTdWJzY3JpcHRpb24gPSB0aGlzLmNoYWxsZW5nZVByb2dyZXNzLndhdGNoUmVjZW50UnVucyg0KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJ1bnMpID0+IHRoaXMuY2hhbGxlbmdlSGlzdG9yeS5zZXQocnVucyksXG4gICAgICBlcnJvcjogKCkgPT4gdGhpcy5jaGFsbGVuZ2VIaXN0b3J5LnNldChbXSksXG4gICAgfSk7XG4gICAgdGhpcy5jaGFsbGVuZ2VBY3RpdmVSdW5TdWJzY3JpcHRpb24gPSB0aGlzLmNoYWxsZW5nZVByb2dyZXNzLndhdGNoQWN0aXZlUnVuKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChydW4pID0+IHRoaXMuYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuLnNldCh0aGlzLmlzUmVzdW1hYmxlQ2hhbGxlbmdlUnVuKHJ1bikgPyBydW4gOiB1bmRlZmluZWQpLFxuICAgICAgZXJyb3I6ICgpID0+IHRoaXMuYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuLnNldCh1bmRlZmluZWQpLFxuICAgIH0pO1xuICB9XG5cbiAgdW5sb2NrZWRMYWJlbChjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nYW1lKCkucGxheWVyc1tjb2xvcl0ucG93ZXJVbmxvY2tlZCA/IHRoaXMudCgnY2hlc3NpbWFsc1VubG9ja2VkJykgOiB0aGlzLnQoJ2NoZXNzaW1hbHNMb2NrZWQnKTtcbiAgfVxuXG4gIGxvY2FsTW9kZUxhYmVsKG1vZGU6IENoZXNzaW1hbHNMb2NhbE1vZGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBtb2RlID09PSAnYm90JyA/IHRoaXMudCgnY2hlc3NpbWFsc0JvdE1vZGUnKSA6IHRoaXMudCgnY2hlc3NpbWFsc09uZURldmljZScpO1xuICB9XG5cbiAgbG9jYWxNb2RlRGVzY3JpcHRpb24obW9kZTogQ2hlc3NpbWFsc0xvY2FsTW9kZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG1vZGUgPT09ICdib3QnID8gdGhpcy50KCdjaGVzc2ltYWxzQm90TW9kZUJvZHknKSA6IHRoaXMudCgnY2hlc3NpbWFsc09uZURldmljZUJvZHknKTtcbiAgfVxuXG4gIHNlbGVjdEJvdERpZmZpY3VsdHkoZGlmZmljdWx0eTogQ2hlc3NpbWFsc0JvdERpZmZpY3VsdHlDaG9pY2UpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkQm90RGlmZmljdWx0eS5zZXQoZGlmZmljdWx0eSk7XG4gICAgaWYgKGRpZmZpY3VsdHkgPT09ICduaWdodG1hcmUnKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZE5pZ2h0bWFyZSA9IHRoaXMuc2VsZWN0ZWROaWdodG1hcmVNb2RlKCk7XG4gICAgICB0aGlzLnNlbGVjdE5pZ2h0bWFyZVJpdmFsKHNlbGVjdGVkTmlnaHRtYXJlID09PSAnbm9uZScgPyAnaHVudCcgOiBzZWxlY3RlZE5pZ2h0bWFyZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3RlZE5pZ2h0bWFyZU1vZGUuc2V0KCdub25lJyk7XG4gICAgY29uc3QgcHJvZmlsZSA9IHRoaXMuYm90UHJvZmlsZXMuZmluZCgoaXRlbSkgPT4gaXRlbS5kaWZmaWN1bHR5ID09PSBkaWZmaWN1bHR5KTtcbiAgICBpZiAocHJvZmlsZSkgdGhpcy5zZWxlY3RlZEJvdFByb2ZpbGVJZC5zZXQocHJvZmlsZS5pZCk7XG4gIH1cblxuICBzZWxlY3ROaWdodG1hcmVSaXZhbChtb2RlOiBFeGNsdWRlPENoZXNzaW1hbHNOaWdodG1hcmVNb2RlLCAnbm9uZSc+KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZE5pZ2h0bWFyZU1vZGUuc2V0KG1vZGUpO1xuICAgIHRoaXMuc2VsZWN0ZWRCb3RQcm9maWxlSWQuc2V0KG1vZGUgPT09ICdodW50JyA/ICdodW50ZXInIDogJ3ByZWRhdG9yJyk7XG4gIH1cblxuICBwcml2YXRlIGFjdGl2ZU5pZ2h0bWFyZU1vZGUoKTogQ2hlc3NpbWFsc05pZ2h0bWFyZU1vZGUge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkQm90RGlmZmljdWx0eSgpICE9PSAnbmlnaHRtYXJlJykgcmV0dXJuICdub25lJztcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZE5pZ2h0bWFyZU1vZGUoKSA9PT0gJ25vbmUnID8gJ2h1bnQnIDogdGhpcy5zZWxlY3RlZE5pZ2h0bWFyZU1vZGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW5naW5lQm90RGlmZmljdWx0eSgpOiBDaGVzc2ltYWxzQm90RGlmZmljdWx0eSB7XG4gICAgY29uc3QgZGlmZmljdWx0eSA9IHRoaXMuc2VsZWN0ZWRCb3REaWZmaWN1bHR5KCk7XG4gICAgcmV0dXJuIGRpZmZpY3VsdHkgPT09ICduaWdodG1hcmUnID8gJ2hhcmQnIDogZGlmZmljdWx0eTtcbiAgfVxuXG4gIG5pZ2h0bWFyZU1vZGVMYWJlbChtb2RlOiBDaGVzc2ltYWxzTmlnaHRtYXJlTW9kZSk6IHN0cmluZyB7XG4gICAgaWYgKG1vZGUgPT09ICdodW50JykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc05pZ2h0bWFyZUh1bnQnKTtcbiAgICBpZiAobW9kZSA9PT0gJ3ByaWRlJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc05pZ2h0bWFyZVByaWRlJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc05pZ2h0bWFyZU5vbmUnKTtcbiAgfVxuXG4gIG5pZ2h0bWFyZU1vZGVEZXNjcmlwdGlvbihtb2RlOiBDaGVzc2ltYWxzTmlnaHRtYXJlTW9kZSk6IHN0cmluZyB7XG4gICAgaWYgKG1vZGUgPT09ICdodW50JykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc05pZ2h0bWFyZUh1bnRCb2R5Jyk7XG4gICAgaWYgKG1vZGUgPT09ICdwcmlkZScpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNOaWdodG1hcmVQcmlkZUJvZHknKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzTmlnaHRtYXJlTm9uZUJvZHknKTtcbiAgfVxuXG4gIG5pZ2h0bWFyZU1vZGVBc3NldFNyYyhtb2RlOiBDaGVzc2ltYWxzTmlnaHRtYXJlTW9kZSk6IHN0cmluZyB7XG4gICAgaWYgKG1vZGUgPT09ICdodW50JykgcmV0dXJuICdhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9jaGFsbGVuZ2UtYXZhdGFycy9odW50ZXIucG5nJztcbiAgICBpZiAobW9kZSA9PT0gJ3ByaWRlJykgcmV0dXJuICdhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9jaGFsbGVuZ2UtYXZhdGFycy9wcmVkYXRvci5wbmcnO1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIG5pZ2h0bWFyZU1vZGVHbHlwaChtb2RlOiBDaGVzc2ltYWxzTmlnaHRtYXJlTW9kZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG1vZGUgPT09ICdub25lJyA/ICdPSycgOiAnKic7XG4gIH1cblxuICBwb3dlclVzZXNMYWJlbChhbmltYWw6IENoZXNzaW1hbHNBbmltYWxUeXBlKTogc3RyaW5nIHtcbiAgICBjb25zdCByZW1haW5pbmcgPSB0aGlzLnBvd2VyUGxheWVyKCkuY2FyZHNbYW5pbWFsXS51c2VzUmVtYWluaW5nO1xuICAgIHJldHVybiByZW1haW5pbmcgJiYgcmVtYWluaW5nID4gMSA/ICd4JyArIHJlbWFpbmluZyA6ICcnO1xuICB9XG5cbiAgYm90RGlmZmljdWx0eUxhYmVsKGRpZmZpY3VsdHk6IENoZXNzaW1hbHNCb3REaWZmaWN1bHR5Q2hvaWNlKTogc3RyaW5nIHtcbiAgICBpZiAoZGlmZmljdWx0eSA9PT0gJ2Vhc3knKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm90RWFzeScpO1xuICAgIGlmIChkaWZmaWN1bHR5ID09PSAnaGFyZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RIYXJkJyk7XG4gICAgaWYgKGRpZmZpY3VsdHkgPT09ICduaWdodG1hcmUnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm90TmlnaHRtYXJlJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0JvdE5vcm1hbCcpO1xuICB9XG5cbiAgYm90UHJvZmlsZUxhYmVsKHByb2ZpbGU6IENoZXNzaW1hbHNCb3RQcm9maWxlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50KHByb2ZpbGUubGFiZWxLZXkpO1xuICB9XG5cbiAgYm90UHJvZmlsZURlc2NyaXB0aW9uKHByb2ZpbGU6IENoZXNzaW1hbHNCb3RQcm9maWxlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50KHByb2ZpbGUuZGVzY3JpcHRpb25LZXkpO1xuICB9XG5cbiAgYm90UHJvZmlsZVRlbmRlbmN5KHByb2ZpbGU6IENoZXNzaW1hbHNCb3RQcm9maWxlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50KGBjaGVzc2ltYWxzQm90JHt0aGlzLmNhcGl0YWxpemUocHJvZmlsZS5pZCl9VGVuZGVuY3lgKTtcbiAgfVxuXG4gIGJvdFByb2ZpbGVBdmF0YXIocHJvZmlsZUlkOiBDaGVzc2ltYWxzQm90UHJvZmlsZUlkKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ib3RQcm9maWxlcy5maW5kKChwcm9maWxlKSA9PiBwcm9maWxlLmlkID09PSBwcm9maWxlSWQpPy5hdmF0YXIgPz8gJ+KZnyc7XG4gIH1cblxuICBib3RQcm9maWxlQXZhdGFyU3JjKHByb2ZpbGVJZDogQ2hlc3NpbWFsc0JvdFByb2ZpbGVJZCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYm90UHJvZmlsZXMuZmluZCgocHJvZmlsZSkgPT4gcHJvZmlsZS5pZCA9PT0gcHJvZmlsZUlkKT8uYXZhdGFyU3JjID8/ICcnO1xuICB9XG5cbiAgY2hhbGxlbmdlQm90UHJvZmlsZShib3Q6IENoZXNzaW1hbHNDaGFsbGVuZ2VCb3QpOiBDaGVzc2ltYWxzQm90UHJvZmlsZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuYm90UHJvZmlsZXMuZmluZCgocHJvZmlsZSkgPT4gcHJvZmlsZS5pZCA9PT0gYm90LnByb2ZpbGVJZCk7XG4gIH1cblxuICBjaGFsbGVuZ2VPcGVuaW5nQm90KCk6IENoZXNzaW1hbHNDaGFsbGVuZ2VCb3Qge1xuICAgIHJldHVybiB0aGlzLmNoYWxsZW5nZUxhZGRlclswXTtcbiAgfVxuXG4gIGNoYWxsZW5nZU1lbnVCb3QoKTogQ2hlc3NpbWFsc0NoYWxsZW5nZUJvdCB7XG4gICAgY29uc3QgYWN0aXZlUnVuID0gdGhpcy5jaGFsbGVuZ2VNZW51UnVuKCk7XG4gICAgaWYgKGFjdGl2ZVJ1bikge1xuICAgICAgY29uc3QgYWN0aXZlUm91bmRJbmRleCA9IHRoaXMuY2hhbGxlbmdlUnVuUm91bmRJbmRleChhY3RpdmVSdW4pO1xuICAgICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlTGFkZGVyW01hdGgubWluKE1hdGgubWF4KGFjdGl2ZVJvdW5kSW5kZXggLSAxLCAwKSwgdGhpcy5jaGFsbGVuZ2VMYWRkZXIubGVuZ3RoIC0gMSldO1xuICAgIH1cbiAgICBjb25zdCBiZXN0Um91bmQgPSB0aGlzLmNoYWxsZW5nZVN0YXRzKCkuYmVzdFJvdW5kUmVhY2hlZDtcbiAgICBjb25zdCBuZXh0Um91bmRJbmRleCA9IE1hdGgubWluKE1hdGgubWF4KGJlc3RSb3VuZCwgMCksIHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aCAtIDEpO1xuICAgIHJldHVybiB0aGlzLmNoYWxsZW5nZUxhZGRlcltuZXh0Um91bmRJbmRleF07XG4gIH1cblxuICBjaGFsbGVuZ2VNZW51Um91bmRMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmNoYWxsZW5nZU1lbnVCb3QoKS5yb3VuZH0vJHt0aGlzLmNoYWxsZW5nZUxhZGRlci5sZW5ndGh9YDtcbiAgfVxuXG4gIGNoYWxsZW5nZU1lbnVMaXZlc0xhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFN0cmluZyh0aGlzLmNoYWxsZW5nZU1lbnVSdW4oKT8ubGl2ZXNSZW1haW5pbmcgPz8gMyk7XG4gIH1cblxuICBjaGFsbGVuZ2VNZW51Q2xlYXJlZFJvdW5kKCk6IG51bWJlciB7XG4gICAgY29uc3QgYWN0aXZlUnVuID0gdGhpcy5jaGFsbGVuZ2VNZW51UnVuKCk7XG4gICAgaWYgKGFjdGl2ZVJ1bikgcmV0dXJuIE1hdGgubWF4KDAsIGFjdGl2ZVJ1bi5jdXJyZW50Um91bmQgLSAxKTtcbiAgICByZXR1cm4gdGhpcy5jaGFsbGVuZ2VTdGF0cygpLmJlc3RSb3VuZFJlYWNoZWQ7XG4gIH1cblxuICBwcml2YXRlIGNoYWxsZW5nZU1lbnVSdW4oKTogQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1biB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgY3VycmVudFJ1biA9IHRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gICAgaWYgKHRoaXMuaXNSZXN1bWFibGVDaGFsbGVuZ2VSdW4oY3VycmVudFJ1bikpIHJldHVybiBjdXJyZW50UnVuO1xuICAgIHJldHVybiB0aGlzLnJlc3VtYWJsZUNoYWxsZW5nZVJ1bigpO1xuICB9XG5cbiAgY2hhbGxlbmdlQm90TmFtZShib3Q6IENoZXNzaW1hbHNDaGFsbGVuZ2VCb3QpOiBzdHJpbmcge1xuICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLmNoYWxsZW5nZUJvdFByb2ZpbGUoYm90KTtcbiAgICByZXR1cm4gcHJvZmlsZSA/IHRoaXMuYm90UHJvZmlsZUxhYmVsKHByb2ZpbGUpIDogdGhpcy50KCdjaGVzc2ltYWxzQm90TmFtZScpO1xuICB9XG5cbiAgY2hhbGxlbmdlQm90SW50cm8oYm90OiBDaGVzc2ltYWxzQ2hhbGxlbmdlQm90KTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50KGJvdC5pbnRyb0tleSk7XG4gIH1cblxuICBjaGFsbGVuZ2VCb3REaWZmaWN1bHR5TGFiZWwoYm90OiBDaGVzc2ltYWxzQ2hhbGxlbmdlQm90KTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ib3REaWZmaWN1bHR5TGFiZWwoYm90LmRpZmZpY3VsdHkpO1xuICB9XG5cbiAgY2hhbGxlbmdlQm90U3R5bGVMaW5lKGJvdDogQ2hlc3NpbWFsc0NoYWxsZW5nZUJvdCk6IHN0cmluZyB7XG4gICAgY29uc3QgcHJvZmlsZSA9IHRoaXMuY2hhbGxlbmdlQm90UHJvZmlsZShib3QpO1xuICAgIHJldHVybiBwcm9maWxlID8gdGhpcy5ib3RQcm9maWxlVGVuZGVuY3kocHJvZmlsZSkgOiB0aGlzLnQoYm90LmludHJvS2V5KTtcbiAgfVxuXG4gIGNoYWxsZW5nZUJvdFN0YXR1c0xhYmVsKGJvdDogQ2hlc3NpbWFsc0NoYWxsZW5nZUJvdCk6IHN0cmluZyB7XG4gICAgY29uc3QgY2xlYXJlZFJvdW5kID0gdGhpcy5jaGFsbGVuZ2VNZW51Q2xlYXJlZFJvdW5kKCk7XG4gICAgY29uc3QgY3VycmVudFJvdW5kID0gdGhpcy5jaGFsbGVuZ2VNZW51Qm90KCkucm91bmQ7XG4gICAgaWYgKGNsZWFyZWRSb3VuZCA+PSBib3Qucm91bmQpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSaXZhbENsZWFyZWQnKTtcbiAgICBpZiAoY3VycmVudFJvdW5kID09PSBib3Qucm91bmQpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSaXZhbEN1cnJlbnQnKTtcbiAgICBpZiAoYm90LnJvdW5kID09PSB0aGlzLmNoYWxsZW5nZUxhZGRlci5sZW5ndGgpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSaXZhbEZpbmFsJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJpdmFsUGVuZGluZycpO1xuICB9XG5cbiAgY2hhbGxlbmdlUnVuU3RhdHVzTGFiZWwocnVuOiBDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuKTogc3RyaW5nIHtcbiAgICBpZiAocnVuLnN0YXR1cyA9PT0gJ2NvbXBsZXRlZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VTdGF0dXNDb21wbGV0ZWQnKTtcbiAgICBpZiAocnVuLnN0YXR1cyA9PT0gJ2ZhaWxlZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VTdGF0dXNGYWlsZWQnKTtcbiAgICBpZiAocnVuLnN0YXR1cyA9PT0gJ2FiYW5kb25lZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VTdGF0dXNBYmFuZG9uZWQnKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlU3RhdHVzQWN0aXZlJyk7XG4gIH1cblxuICBjaGFsbGVuZ2VSdW5MaW5lKHJ1bjogQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1bik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJ1bkxpbmUnKVxuICAgICAgLnJlcGxhY2UoJ3tyb3VuZH0nLCBTdHJpbmcocnVuLmhpZ2hlc3RSb3VuZFJlYWNoZWQgPz8gdGhpcy5jaGFsbGVuZ2VSdW5Sb3VuZEluZGV4KHJ1bikpKVxuICAgICAgLnJlcGxhY2UoJ3t3aW5zfScsIFN0cmluZyh0aGlzLmNoYWxsZW5nZVJ1blJvdW5kc1dvbihydW4pKSk7XG4gIH1cblxuICBpc0NoYWxsZW5nZUFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jaGFsbGVuZ2VQaGFzZSgpICE9PSAnaWRsZScgJiYgISF0aGlzLmNoYWxsZW5nZVJ1bigpO1xuICB9XG5cbiAgc2hvdWxkU2hvd0NoYWxsZW5nZUluR2FtZVBhbmVsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5wcm9qZWN0aW9uTW9kZSAmJiB0aGlzLnNjcmVlbigpID09PSAnZ2FtZScgJiYgdGhpcy5jaGFsbGVuZ2VQaGFzZSgpID09PSAncGxheWluZycgJiYgISF0aGlzLmNoYWxsZW5nZVJ1bigpO1xuICB9XG5cbiAgc2hvd0NoYWxsZW5nZUludHJvKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlIHx8IHRoaXMuY2hhbGxlbmdlUGhhc2UoKSAhPT0gJ3BsYXlpbmcnIHx8ICF0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpKSByZXR1cm47XG4gICAgaWYgKHRoaXMuY2hhbGxlbmdlSW50cm9UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuY2hhbGxlbmdlSW50cm9UaW1lcik7XG4gICAgdGhpcy5jaGFsbGVuZ2VJbnRyb1Zpc2libGUuc2V0KHRydWUpO1xuICAgIHRoaXMuY2hhbGxlbmdlSW50cm9UaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuZGlzbWlzc0NoYWxsZW5nZUludHJvKCkpO1xuICAgIH0sIDI0MDApO1xuICB9XG5cbiAgZGlzbWlzc0NoYWxsZW5nZUludHJvKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNoYWxsZW5nZUludHJvVGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmNoYWxsZW5nZUludHJvVGltZXIpO1xuICAgICAgdGhpcy5jaGFsbGVuZ2VJbnRyb1RpbWVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICB0aGlzLmNoYWxsZW5nZUludHJvVmlzaWJsZS5zZXQoZmFsc2UpO1xuICB9XG5cbiAgY2hhbGxlbmdlTGl2ZUF2YXRhcigpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJvdCA9IHRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KCk7XG4gICAgcmV0dXJuIGJvdCA/IHRoaXMuYm90UHJvZmlsZUF2YXRhcihib3QucHJvZmlsZUlkKSA6ICfimZ8nO1xuICB9XG5cbiAgY2hhbGxlbmdlTGl2ZUF2YXRhclNyYygpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJvdCA9IHRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KCk7XG4gICAgcmV0dXJuIGJvdCA/IHRoaXMuYm90UHJvZmlsZUF2YXRhclNyYyhib3QucHJvZmlsZUlkKSA6ICcnO1xuICB9XG5cbiAgY2hhbGxlbmdlTGl2ZVJpdmFsTmFtZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJvdCA9IHRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KCk7XG4gICAgcmV0dXJuIGJvdCA/IHRoaXMuY2hhbGxlbmdlQm90TmFtZShib3QpIDogdGhpcy50KCdjaGVzc2ltYWxzQm90TmFtZScpO1xuICB9XG5cbiAgY2hhbGxlbmdlTGl2ZVJpdmFsTGluZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJvdCA9IHRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KCk7XG4gICAgaWYgKCFib3QpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb2R5Jyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZUxpdmVSaXZhbExpbmUnKVxuICAgICAgLnJlcGxhY2UoJ3tzdHlsZX0nLCB0aGlzLmNoYWxsZW5nZUJvdFN0eWxlTGluZShib3QpKVxuICAgICAgLnJlcGxhY2UoJ3tkaWZmaWN1bHR5fScsIHRoaXMuY2hhbGxlbmdlQm90RGlmZmljdWx0eUxhYmVsKGJvdCkpO1xuICB9XG5cbiAgY2hhbGxlbmdlTGl2ZVN0cmVha0xhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGB4JHt0aGlzLmNoYWxsZW5nZVJ1bigpPy5jdXJyZW50U3RyZWFrID8/IDB9YDtcbiAgfVxuXG4gIGNoYWxsZW5nZUxpdmVCb2FyZExhYmVsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYm9hcmRTaXplID0gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKT8uYm9hcmRTaXplID8/IHRoaXMuZ2FtZSgpLmJvYXJkU2l6ZTtcbiAgICByZXR1cm4gYCR7Ym9hcmRTaXplfXgke2JvYXJkU2l6ZX1gO1xuICB9XG5cbiAgY2hhbGxlbmdlTGl2ZVRpbWVyTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzZWNvbmRzID0gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKT8ucm91bmQgPT09IHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aFxuICAgICAgPyBDSEVTU0lNQUxTX0NIQUxMRU5HRV9GSU5BTF9UVVJOX1NFQ09ORFNcbiAgICAgIDogQ0hFU1NJTUFMU19DSEFMTEVOR0VfVFVSTl9TRUNPTkRTO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VUdXJuU2Vjb25kcycpLnJlcGxhY2UoJ3tzZWNvbmRzfScsIFN0cmluZyhzZWNvbmRzKSk7XG4gIH1cblxuICBjaGFsbGVuZ2VSb3VuZExhYmVsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBpZiAoIXJ1bikgcmV0dXJuICctJztcbiAgICByZXR1cm4gYCR7dGhpcy5jaGFsbGVuZ2VSdW5Sb3VuZEluZGV4KHJ1bil9LyR7dGhpcy5jaGFsbGVuZ2VMYWRkZXIubGVuZ3RofWA7XG4gIH1cblxuICBjaGFsbGVuZ2VMaXZlc0xhYmVsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBpZiAoIXJ1bikgcmV0dXJuICctJztcbiAgICByZXR1cm4gJ+KZpScucmVwZWF0KE1hdGgubWF4KDAsIHJ1bi5saXZlc1JlbWFpbmluZykpIHx8ICcwJztcbiAgfVxuXG4gIGNoYWxsZW5nZU91dGNvbWVUaXRsZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHBoYXNlID0gdGhpcy5jaGFsbGVuZ2VQaGFzZSgpO1xuICAgIGlmIChwaGFzZSA9PT0gJ2NvbXBsZXRlZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VDb21wbGV0ZWRUaXRsZScpO1xuICAgIGlmIChwaGFzZSA9PT0gJ2ZhaWxlZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VGYWlsZWRUaXRsZScpO1xuICAgIHJldHVybiB0aGlzLmNoYWxsZW5nZUxhc3RXb24oKVxuICAgICAgPyB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFdvblRpdGxlJylcbiAgICAgIDogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRMb3N0VGl0bGUnKTtcbiAgfVxuXG4gIGNoYWxsZW5nZU91dGNvbWVCb2R5KCk6IHN0cmluZyB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBjb25zdCBzdGF0cyA9IHRoaXMuY2hhbGxlbmdlTGFzdFJvdW5kU3RhdHMoKTtcbiAgICBjb25zdCBib3QgPSB0aGlzLmNoYWxsZW5nZUxhc3RCb3QoKSA/PyB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpO1xuICAgIGNvbnN0IGJvdE5hbWUgPSBib3QgPyB0aGlzLmNoYWxsZW5nZUJvdE5hbWUoYm90KSA6IHRoaXMudCgnY2hlc3NpbWFsc0JvdE5hbWUnKTtcbiAgICBjb25zdCBib2R5S2V5ID1cbiAgICAgIHRoaXMuY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ2NvbXBsZXRlZCdcbiAgICAgICAgPyAnY2hlc3NpbWFsc0NoYWxsZW5nZUNvbXBsZXRlZEJvZHknXG4gICAgICAgIDogdGhpcy5jaGFsbGVuZ2VQaGFzZSgpID09PSAnZmFpbGVkJ1xuICAgICAgICAgID8gJ2NoZXNzaW1hbHNDaGFsbGVuZ2VGYWlsZWRCb2R5J1xuICAgICAgICAgIDogdGhpcy5jaGFsbGVuZ2VMYXN0V29uKClcbiAgICAgICAgICAgID8gJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFdvbkJvZHknXG4gICAgICAgICAgICA6ICdjaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRMb3N0Qm9keSc7XG4gICAgcmV0dXJuIHRoaXMudChib2R5S2V5KVxuICAgICAgLnJlcGxhY2UoJ3tib3R9JywgYm90TmFtZSlcbiAgICAgIC5yZXBsYWNlKCd7bGl2ZXN9JywgU3RyaW5nKHJ1bj8ubGl2ZXNSZW1haW5pbmcgPz8gMCkpXG4gICAgICAucmVwbGFjZSgne3dpbnN9JywgU3RyaW5nKHJ1bj8ud2lucyA/PyAwKSlcbiAgICAgIC5yZXBsYWNlKCd7cG93ZXJzfScsIFN0cmluZyh0aGlzLnRvdGFsQ2hhbGxlbmdlUG93ZXJzKHN0YXRzKSkpO1xuICB9XG5cbiAgY2hhbGxlbmdlU3VtbWFyeUF2YXRhcigpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJvdCA9IHRoaXMuY2hhbGxlbmdlTGFzdEJvdCgpID8/IHRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KCk7XG4gICAgcmV0dXJuIGJvdCA/IHRoaXMuYm90UHJvZmlsZUF2YXRhcihib3QucHJvZmlsZUlkKSA6ICfimZ8nO1xuICB9XG5cbiAgY2hhbGxlbmdlU3VtbWFyeUF2YXRhclNyYygpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJvdCA9IHRoaXMuY2hhbGxlbmdlTGFzdEJvdCgpID8/IHRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KCk7XG4gICAgcmV0dXJuIGJvdCA/IHRoaXMuYm90UHJvZmlsZUF2YXRhclNyYyhib3QucHJvZmlsZUlkKSA6ICcnO1xuICB9XG5cbiAgY2hhbGxlbmdlUm91bmRTdGFnZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYm90ID0gdGhpcy5jaGFsbGVuZ2VQaGFzZSgpID09PSAncGxheWluZydcbiAgICAgID8gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKVxuICAgICAgOiB0aGlzLmNoYWxsZW5nZUxhc3RCb3QoKSA/PyB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpO1xuICAgIGNvbnN0IHJ1biA9IHRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gICAgY29uc3Qgcm91bmQgPSBib3Q/LnJvdW5kID8/IChydW4gPyB0aGlzLmNoYWxsZW5nZVJ1blJvdW5kSW5kZXgocnVuKSA6IDEpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFN0YWdlJylcbiAgICAgIC5yZXBsYWNlKCd7cm91bmR9JywgU3RyaW5nKHJvdW5kKSlcbiAgICAgIC5yZXBsYWNlKCd7dG90YWx9JywgU3RyaW5nKHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aCkpO1xuICB9XG5cbiAgY2hhbGxlbmdlUml2YWxWb2ljZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYm90ID0gdGhpcy5jaGFsbGVuZ2VMYXN0Qm90KCkgPz8gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKTtcbiAgICBjb25zdCBib3ROYW1lID0gYm90ID8gdGhpcy5jaGFsbGVuZ2VCb3ROYW1lKGJvdCkgOiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3ROYW1lJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJpdmFsVm9pY2UnKS5yZXBsYWNlKCd7Ym90fScsIGJvdE5hbWUpO1xuICB9XG5cbiAgY2hhbGxlbmdlUml2YWxWb2ljZVRpdGxlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcGhhc2UgPSB0aGlzLmNoYWxsZW5nZVBoYXNlKCk7XG4gICAgaWYgKHBoYXNlID09PSAnY29tcGxldGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVZvaWNlQ29tcGxldGVkVGl0bGUnKTtcbiAgICBpZiAocGhhc2UgPT09ICdmYWlsZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlVm9pY2VGYWlsZWRUaXRsZScpO1xuICAgIGNvbnN0IGJvdCA9IHRoaXMuY2hhbGxlbmdlTGFzdEJvdCgpID8/IHRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KCk7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5jaGFsbGVuZ2VMYXN0V29uKCkgPyAnV29uJyA6ICdMb3N0JztcbiAgICBjb25zdCBib3RUaXRsZSA9IHRoaXMuY2hhbGxlbmdlVm9pY2VUZXh0KGJvdCwgcmVzdWx0LCAnVGl0bGUnKTtcbiAgICBpZiAoYm90VGl0bGUpIHJldHVybiBib3RUaXRsZTtcbiAgICByZXR1cm4gdGhpcy5jaGFsbGVuZ2VMYXN0V29uKClcbiAgICAgID8gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlVm9pY2VXb25UaXRsZScpXG4gICAgICA6IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVZvaWNlTG9zdFRpdGxlJyk7XG4gIH1cblxuICBjaGFsbGVuZ2VSaXZhbFZvaWNlQm9keSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJvdCA9IHRoaXMuY2hhbGxlbmdlTGFzdEJvdCgpID8/IHRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KCk7XG4gICAgY29uc3QgYm90TmFtZSA9IGJvdCA/IHRoaXMuY2hhbGxlbmdlQm90TmFtZShib3QpIDogdGhpcy50KCdjaGVzc2ltYWxzQm90TmFtZScpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuY2hhbGxlbmdlTGFzdFdvbigpID8gJ1dvbicgOiAnTG9zdCc7XG4gICAgY29uc3QgYm90Qm9keSA9IHRoaXMuY2hhbGxlbmdlVm9pY2VUZXh0KGJvdCwgcmVzdWx0LCAnQm9keScpO1xuICAgIGlmIChib3RCb2R5KSByZXR1cm4gYm90Qm9keS5yZXBsYWNlKCd7Ym90fScsIGJvdE5hbWUpO1xuICAgIGNvbnN0IGtleSA9XG4gICAgICB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgPT09ICdjb21wbGV0ZWQnXG4gICAgICAgID8gJ2NoZXNzaW1hbHNDaGFsbGVuZ2VWb2ljZUNvbXBsZXRlZEJvZHknXG4gICAgICAgIDogdGhpcy5jaGFsbGVuZ2VQaGFzZSgpID09PSAnZmFpbGVkJ1xuICAgICAgICAgID8gJ2NoZXNzaW1hbHNDaGFsbGVuZ2VWb2ljZUZhaWxlZEJvZHknXG4gICAgICAgICAgOiB0aGlzLmNoYWxsZW5nZUxhc3RXb24oKVxuICAgICAgICAgICAgPyAnY2hlc3NpbWFsc0NoYWxsZW5nZVZvaWNlV29uQm9keSdcbiAgICAgICAgICAgIDogJ2NoZXNzaW1hbHNDaGFsbGVuZ2VWb2ljZUxvc3RCb2R5JztcbiAgICByZXR1cm4gdGhpcy50KGtleSkucmVwbGFjZSgne2JvdH0nLCBib3ROYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hhbGxlbmdlVm9pY2VUZXh0KFxuICAgIGJvdDogQ2hlc3NpbWFsc0NoYWxsZW5nZUJvdCB8IHVuZGVmaW5lZCxcbiAgICByZXN1bHQ6ICdXb24nIHwgJ0xvc3QnLFxuICAgIHBhcnQ6ICdUaXRsZScgfCAnQm9keScsXG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFib3QpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3Qga2V5ID0gYGNoZXNzaW1hbHNDaGFsbGVuZ2VWb2ljZSR7cmVzdWx0fSR7dGhpcy5jYXBpdGFsaXplKGJvdC5pZCl9JHtwYXJ0fWA7XG4gICAgY29uc3QgdGV4dCA9IHRoaXMudChrZXkpO1xuICAgIHJldHVybiB0ZXh0ID09PSBrZXkgPyB1bmRlZmluZWQgOiB0ZXh0O1xuICB9XG5cbiAgY2hhbGxlbmdlTmV4dFJpdmFsTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jaGFsbGVuZ2VMYXN0V29uKClcbiAgICAgID8gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlTmV4dFJpdmFsTGFiZWwnKVxuICAgICAgOiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSZXRyeVJpdmFsTGFiZWwnKTtcbiAgfVxuXG4gIGNoYWxsZW5nZUNvbnRpbnVlTGFiZWwoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuY2hhbGxlbmdlTGFzdFdvbigpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUmV0cnlSaXZhbCcpO1xuICAgIGNvbnN0IHJ1biA9IHRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gICAgaWYgKHJ1biAmJiB0aGlzLmNoYWxsZW5nZVJ1blJvdW5kSW5kZXgocnVuKSA9PT0gdGhpcy5jaGFsbGVuZ2VMYWRkZXIubGVuZ3RoKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlRmluYWxSb3VuZEN0YScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VOZXh0Uml2YWwnKTtcbiAgfVxuXG4gIGNoYWxsZW5nZU5leHRSaXZhbEhpbnQoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuY2hhbGxlbmdlTGFzdFdvbigpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUmV0cnlIaW50Jyk7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBpZiAocnVuICYmIHRoaXMuY2hhbGxlbmdlUnVuUm91bmRJbmRleChydW4pID09PSB0aGlzLmNoYWxsZW5nZUxhZGRlci5sZW5ndGgpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VGaW5hbFJvdW5kSGludCcpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VOZXh0Uml2YWxIaW50Jyk7XG4gIH1cblxuICBjaGFsbGVuZ2VXaW5SYXRlTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlV2luUmF0ZUxhYmVsKCdjaGFsbGVuZ2UnKTtcbiAgfVxuXG4gIG1vZGVXaW5SYXRlTGFiZWwobW9kZTogQ2hlc3NpbWFsc1N0YXRzTW9kZSk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RhdHMgPSB0aGlzLmNoYWxsZW5nZVN0YXRzKCk7XG4gICAgY29uc3QgbW9kZVN0YXRzID0gc3RhdHMubW9kZVN0YXRzW21vZGVdO1xuICAgIGNvbnN0IHBsYXllZCA9IG1vZGVTdGF0cy5wbGF5ZWQ7XG4gICAgaWYgKCFwbGF5ZWQpIHJldHVybiAnLSc7XG4gICAgcmV0dXJuIGAke01hdGgucm91bmQoKG1vZGVTdGF0cy53aW5zIC8gcGxheWVkKSAqIDEwMCl9JWA7XG4gIH1cblxuICBtb2RlU3RhdHNMaW5lKG1vZGU6IENoZXNzaW1hbHNTdGF0c01vZGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0YXRzID0gdGhpcy5jaGFsbGVuZ2VTdGF0cygpLm1vZGVTdGF0c1ttb2RlXTtcbiAgICBpZiAoIXN0YXRzLnBsYXllZCkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc01vZGVTdGF0c0VtcHR5Jyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc01vZGVTdGF0c0xpbmUnKVxuICAgICAgLnJlcGxhY2UoJ3twbGF5ZWR9JywgU3RyaW5nKHN0YXRzLnBsYXllZCkpXG4gICAgICAucmVwbGFjZSgne3dpbnN9JywgU3RyaW5nKHN0YXRzLndpbnMpKVxuICAgICAgLnJlcGxhY2UoJ3tsb3NzZXN9JywgU3RyaW5nKHN0YXRzLmxvc3NlcykpO1xuICB9XG5cbiAgcHJvZ3Jlc3NQb3dlclN0YXRzKCk6IENoZXNzaW1hbHNQcm9ncmVzc01ldHJpY1ZpZXdbXSB7XG4gICAgY29uc3Qgc3RhdHMgPSB0aGlzLmNoYWxsZW5nZVN0YXRzKCk7XG4gICAgcmV0dXJuIFtcbiAgICAgIHsgbGFiZWw6IHRoaXMuYW5pbWFsTGFiZWwoJ2VhZ2xlJyksIHZhbHVlOiBzdGF0cy5wb3dlcnNVc2VkLmVhZ2xlIH0sXG4gICAgICB7IGxhYmVsOiB0aGlzLmFuaW1hbExhYmVsKCdidWxsJyksIHZhbHVlOiBzdGF0cy5wb3dlcnNVc2VkLmJ1bGwgfSxcbiAgICAgIHsgbGFiZWw6IHRoaXMuYW5pbWFsTGFiZWwoJ2thbmdhcm9vJyksIHZhbHVlOiBzdGF0cy5wb3dlcnNVc2VkLmthbmdhcm9vIH0sXG4gICAgICB7IGxhYmVsOiB0aGlzLmFuaW1hbExhYmVsKCdsaW9uJyksIHZhbHVlOiBzdGF0cy5wb3dlcnNVc2VkLmxpb24gfSxcbiAgICAgIHsgbGFiZWw6IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVBvd2VyQ2FwdHVyZXMnKSwgdmFsdWU6IHN0YXRzLnBvd2VyQ2FwdHVyZXMgfSxcbiAgICAgIHsgbGFiZWw6IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVByb21vdGlvbnMnKSwgdmFsdWU6IHN0YXRzLnByb21vdGlvbnMgfSxcbiAgICBdO1xuICB9XG5cbiAgcGF0aEhpZ2hsaWdodHMoKTogQ2hlc3NpbWFsc1BhdGhIaWdobGlnaHRWaWV3W10ge1xuICAgIGNvbnN0IHN0YXRzID0gdGhpcy5jaGFsbGVuZ2VTdGF0cygpO1xuICAgIGNvbnN0IGZhdm9yaXRlUG93ZXIgPSB0aGlzLmZhdm9yaXRlUG93ZXJMYWJlbCgpO1xuICAgIGNvbnN0IG5leHRBY2hpZXZlbWVudCA9IHRoaXMuY2hhbGxlbmdlQWNoaWV2ZW1lbnRzKCkuZmluZCgoYWNoaWV2ZW1lbnQpID0+ICFhY2hpZXZlbWVudC51bmxvY2tlZCk7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc1BhdGhXaW5zVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzUGF0aFdpbnNCb2R5JykucmVwbGFjZSgne3dpbnN9JywgU3RyaW5nKHN0YXRzLnRvdGFsV2lucykpLFxuICAgICAgICB2YWx1ZTogU3RyaW5nKHN0YXRzLnRvdGFsV2lucyksXG4gICAgICAgIGltYWdlU3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvcGF0aC90cm9waHkucG5nJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNQYXRoU3RyZWFrVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzUGF0aFN0cmVha0JvZHknKS5yZXBsYWNlKCd7c3RyZWFrfScsIFN0cmluZyhzdGF0cy5iZXN0V2luU3RyZWFrKSksXG4gICAgICAgIHZhbHVlOiBzdGF0cy5iZXN0V2luU3RyZWFrID8gU3RyaW5nKHN0YXRzLmJlc3RXaW5TdHJlYWspIDogdGhpcy50KCdjaGVzc2ltYWxzUGF0aFByYWN0aWNlVmFsdWUnKSxcbiAgICAgICAgaW1hZ2VTcmM6ICdhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9wYXRoL3N0cmVhay5wbmcnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc1BhdGhGYXZvcml0ZVBvd2VyVGl0bGUnKSxcbiAgICAgICAgYm9keTogZmF2b3JpdGVQb3dlclxuICAgICAgICAgID8gdGhpcy50KCdjaGVzc2ltYWxzUGF0aEZhdm9yaXRlUG93ZXJCb2R5JykucmVwbGFjZSgne3Bvd2VyfScsIGZhdm9yaXRlUG93ZXIpXG4gICAgICAgICAgOiB0aGlzLnQoJ2NoZXNzaW1hbHNQYXRoRmF2b3JpdGVQb3dlckVtcHR5JyksXG4gICAgICAgIHZhbHVlOiBmYXZvcml0ZVBvd2VyIHx8IHRoaXMudCgnY2hlc3NpbWFsc1BhdGhQcmFjdGljZVZhbHVlJyksXG4gICAgICAgIGltYWdlU3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvcGF0aC9mYXZvcml0ZS1wb3dlci5wbmcnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc1BhdGhOZXh0VHJvcGh5VGl0bGUnKSxcbiAgICAgICAgYm9keTogbmV4dEFjaGlldmVtZW50Py5ib2R5IHx8IHRoaXMudCgnY2hlc3NpbWFsc1BhdGhOZXh0VHJvcGh5RG9uZScpLFxuICAgICAgICB2YWx1ZTogbmV4dEFjaGlldmVtZW50Py50aXRsZSB8fCB0aGlzLnQoJ2NoZXNzaW1hbHNQYXRoRG9uZVZhbHVlJyksXG4gICAgICAgIGltYWdlU3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvcGF0aC9wcm9ncmVzcy1tYXAucG5nJyxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIGZhdm9yaXRlUG93ZXJMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHBvd2VycyA9IHRoaXMuY2hhbGxlbmdlU3RhdHMoKS5wb3dlcnNVc2VkO1xuICAgIGNvbnN0IGVudHJpZXM6IEFycmF5PHsgYW5pbWFsOiBDaGVzc2ltYWxzQW5pbWFsVHlwZTsgdmFsdWU6IG51bWJlciB9PiA9IFtcbiAgICAgIHsgYW5pbWFsOiAnZWFnbGUnLCB2YWx1ZTogcG93ZXJzLmVhZ2xlIH0sXG4gICAgICB7IGFuaW1hbDogJ2J1bGwnLCB2YWx1ZTogcG93ZXJzLmJ1bGwgfSxcbiAgICAgIHsgYW5pbWFsOiAna2FuZ2Fyb28nLCB2YWx1ZTogcG93ZXJzLmthbmdhcm9vIH0sXG4gICAgICB7IGFuaW1hbDogJ2xpb24nLCB2YWx1ZTogcG93ZXJzLmxpb24gfSxcbiAgICBdO1xuICAgIGNvbnN0IGZhdm9yaXRlID0gZW50cmllcy5yZWR1Y2UoKGJlc3QsIGVudHJ5KSA9PiAoZW50cnkudmFsdWUgPiBiZXN0LnZhbHVlID8gZW50cnkgOiBiZXN0KSwgZW50cmllc1swXSk7XG4gICAgcmV0dXJuIGZhdm9yaXRlLnZhbHVlID4gMCA/IHRoaXMuYW5pbWFsTGFiZWwoZmF2b3JpdGUuYW5pbWFsKSA6ICcnO1xuICB9XG5cbiAgcHJvZ3Jlc3NSaW5ncygpOiBDaGVzc2ltYWxzUHJvZ3Jlc3NSaW5nVmlld1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5wcm9ncmVzc1JpbmcoJ2NoYWxsZW5nZScsIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVRpdGxlJykpLFxuICAgICAgdGhpcy5wcm9ncmVzc1JpbmcoJ2JvdCcsIHRoaXMudCgnY2hlc3NpbWFsc0JvdE1vZGUnKSksXG4gICAgICB0aGlzLnByb2dyZXNzUmluZygnb25saW5lJywgdGhpcy50KCdjaGVzc2ltYWxzT25saW5lUGxheWVyJykpLFxuICAgIF07XG4gIH1cblxuICBwcm9ncmVzc01ldHJpY1BlcmNlbnQodmFsdWU6IHN0cmluZyB8IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgbnVtZXJpY1ZhbHVlID0gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyA/IHZhbHVlIDogTnVtYmVyKHZhbHVlKTtcbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShudW1lcmljVmFsdWUpIHx8IG51bWVyaWNWYWx1ZSA8PSAwKSByZXR1cm4gJzAlJztcbiAgICByZXR1cm4gYCR7TWF0aC5taW4oMTAwLCBNYXRoLm1heCg4LCBudW1lcmljVmFsdWUgKiAxMikpfSVgO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9ncmVzc1JpbmcobW9kZTogQ2hlc3NpbWFsc1N0YXRzTW9kZSwgbGFiZWw6IHN0cmluZyk6IENoZXNzaW1hbHNQcm9ncmVzc1JpbmdWaWV3IHtcbiAgICBjb25zdCBzdGF0cyA9IHRoaXMuY2hhbGxlbmdlU3RhdHMoKS5tb2RlU3RhdHNbbW9kZV07XG4gICAgY29uc3Qgd2luUmF0ZSA9IHN0YXRzLnBsYXllZCA/IE1hdGgucm91bmQoKHN0YXRzLndpbnMgLyBzdGF0cy5wbGF5ZWQpICogMTAwKSA6IDA7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxhYmVsLFxuICAgICAgdmFsdWU6IHN0YXRzLnBsYXllZCA/IGAke3dpblJhdGV9JWAgOiAnLScsXG4gICAgICBkZXRhaWw6IHRoaXMubW9kZVN0YXRzTGluZShtb2RlKSxcbiAgICAgIHByb2dyZXNzOiBgJHt3aW5SYXRlfSVgLFxuICAgIH07XG4gIH1cblxuICBjaGFsbGVuZ2VBY2hpZXZlbWVudHMoKTogQ2hlc3NpbWFsc0FjaGlldmVtZW50Vmlld1tdIHtcbiAgICBjb25zdCBzdGF0cyA9IHRoaXMuY2hhbGxlbmdlU3RhdHMoKTtcbiAgICBjb25zdCBib3RTdGF0cyA9IHN0YXRzLm1vZGVTdGF0cy5ib3Q7XG4gICAgY29uc3Qgb25saW5lU3RhdHMgPSBzdGF0cy5tb2RlU3RhdHMub25saW5lO1xuICAgIGNvbnN0IHRvdGFsUG93ZXJzID0gc3RhdHMucG93ZXJzVXNlZC5lYWdsZSArIHN0YXRzLnBvd2Vyc1VzZWQuYnVsbCArIHN0YXRzLnBvd2Vyc1VzZWQua2FuZ2Fyb28gKyBzdGF0cy5wb3dlcnNVc2VkLmxpb247XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc0FjaGlldmVtZW50Rmlyc3RXaW5UaXRsZScpLFxuICAgICAgICBib2R5OiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudEZpcnN0V2luQm9keScpLFxuICAgICAgICBpY29uOiAnMScsXG4gICAgICAgIHVubG9ja2VkOiBzdGF0cy50b3RhbFdpbnMgPiAwLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc0FjaGlldmVtZW50U3RyZWFrVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRTdHJlYWtCb2R5JyksXG4gICAgICAgIGljb246ICczJyxcbiAgICAgICAgdW5sb2NrZWQ6IHN0YXRzLmJlc3RXaW5TdHJlYWsgPj0gMyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudFBvd2VyVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRQb3dlckJvZHknKSxcbiAgICAgICAgaWNvbjogJ1AnLFxuICAgICAgICB1bmxvY2tlZDogdG90YWxQb3dlcnMgPj0gMTAgfHwgc3RhdHMucG93ZXJDYXB0dXJlcyA+PSA1LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc0FjaGlldmVtZW50Q2hhbXBpb25UaXRsZScpLFxuICAgICAgICBib2R5OiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudENoYW1waW9uQm9keScpLFxuICAgICAgICBpY29uOiAnOCcsXG4gICAgICAgIHVubG9ja2VkOiBzdGF0cy5jaGFsbGVuZ2VzQ29tcGxldGVkID4gMCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudEJvdFdpblRpdGxlJyksXG4gICAgICAgIGJvZHk6IHRoaXMudCgnY2hlc3NpbWFsc0FjaGlldmVtZW50Qm90V2luQm9keScpLFxuICAgICAgICBpY29uOiAnQicsXG4gICAgICAgIHVubG9ja2VkOiBib3RTdGF0cy53aW5zID4gMCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudEJvdEZpdmVUaXRsZScpLFxuICAgICAgICBib2R5OiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudEJvdEZpdmVCb2R5JyksXG4gICAgICAgIGljb246ICc1JyxcbiAgICAgICAgdW5sb2NrZWQ6IGJvdFN0YXRzLndpbnMgPj0gNSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudE9ubGluZVdpblRpdGxlJyksXG4gICAgICAgIGJvZHk6IHRoaXMudCgnY2hlc3NpbWFsc0FjaGlldmVtZW50T25saW5lV2luQm9keScpLFxuICAgICAgICBpY29uOiAnTycsXG4gICAgICAgIHVubG9ja2VkOiBvbmxpbmVTdGF0cy53aW5zID4gMCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudE9ubGluZUZpdmVUaXRsZScpLFxuICAgICAgICBib2R5OiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudE9ubGluZUZpdmVCb2R5JyksXG4gICAgICAgIGljb246ICc1JyxcbiAgICAgICAgdW5sb2NrZWQ6IG9ubGluZVN0YXRzLnBsYXllZCA+PSA1LFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgY2hhbGxlbmdlRmVhdHVyZWRBY2hpZXZlbWVudHMoKTogQ2hlc3NpbWFsc0FjaGlldmVtZW50Vmlld1tdIHtcbiAgICBjb25zdCBhY2hpZXZlbWVudHMgPSB0aGlzLmNoYWxsZW5nZUFjaGlldmVtZW50cygpO1xuICAgIHJldHVybiBbXG4gICAgICAuLi5hY2hpZXZlbWVudHMuZmlsdGVyKChhY2hpZXZlbWVudCkgPT4gYWNoaWV2ZW1lbnQudW5sb2NrZWQpLFxuICAgICAgLi4uYWNoaWV2ZW1lbnRzLmZpbHRlcigoYWNoaWV2ZW1lbnQpID0+ICFhY2hpZXZlbWVudC51bmxvY2tlZCksXG4gICAgXS5zbGljZSgwLCA0KTtcbiAgfVxuXG4gIGNoYWxsZW5nZVRlbnNpb25Nb21lbnQoKTogQ2hlc3NpbWFsc0NoYWxsZW5nZVRlbnNpb25WaWV3IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBwaGFzZSA9IHRoaXMuY2hhbGxlbmdlUGhhc2UoKTtcbiAgICBpZiAocGhhc2UgIT09ICdwbGF5aW5nJyAmJiBwaGFzZSAhPT0gJ2JldHdlZW4nKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IHJ1biA9IHRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gICAgaWYgKCFydW4pIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBuZXh0Qm90ID0gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKTtcbiAgICBjb25zdCBsYXN0Qm90ID0gcGhhc2UgPT09ICdwbGF5aW5nJyA/IG5leHRCb3QgOiB0aGlzLmNoYWxsZW5nZUxhc3RCb3QoKSA/PyBuZXh0Qm90O1xuICAgIGNvbnN0IGJvdE5hbWUgPSBsYXN0Qm90ID8gdGhpcy5jaGFsbGVuZ2VCb3ROYW1lKGxhc3RCb3QpIDogdGhpcy50KCdjaGVzc2ltYWxzQm90TmFtZScpO1xuXG4gICAgaWYgKHJ1bi5saXZlc1JlbWFpbmluZyA8PSAxKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlTGFzdExpZmVUaXRsZScpLFxuICAgICAgICBib2R5OiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VMYXN0TGlmZUJvZHknKS5yZXBsYWNlKCd7Ym90fScsIGJvdE5hbWUpLFxuICAgICAgICBpY29uOiAn4pmlJyxcbiAgICAgICAgY3JpdGljYWw6IHRydWUsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNoYWxsZW5nZUxhc3RXb24oKSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSZW1hdGNoVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUmVtYXRjaEJvZHknKS5yZXBsYWNlKCd7Ym90fScsIGJvdE5hbWUpLFxuICAgICAgICBpY29uOiAn4oa7JyxcbiAgICAgICAgY3JpdGljYWw6IGZhbHNlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCByb3VuZEluZGV4ID0gdGhpcy5jaGFsbGVuZ2VSdW5Sb3VuZEluZGV4KHJ1bik7XG4gICAgaWYgKHJvdW5kSW5kZXggPj0gdGhpcy5jaGFsbGVuZ2VMYWRkZXIubGVuZ3RoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlRmluYWxSaXZhbFRpdGxlJyksXG4gICAgICAgIGJvZHk6IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZUZpbmFsUml2YWxCb2R5JyksXG4gICAgICAgIGljb246ICc4JyxcbiAgICAgICAgY3JpdGljYWw6IGZhbHNlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAocm91bmRJbmRleCA+PSB0aGlzLmNoYWxsZW5nZUxhZGRlci5sZW5ndGggLSAxKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlRmluYWxab25lVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlRmluYWxab25lQm9keScpLFxuICAgICAgICBpY29uOiAnNycsXG4gICAgICAgIGNyaXRpY2FsOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHJ1bi5jdXJyZW50U3RyZWFrID49IDIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VTdHJlYWtUaXRsZScpLnJlcGxhY2UoJ3tzdHJlYWt9JywgU3RyaW5nKHJ1bi5jdXJyZW50U3RyZWFrKSksXG4gICAgICAgIGJvZHk6IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVN0cmVha0JvZHknKSxcbiAgICAgICAgaWNvbjogU3RyaW5nKHJ1bi5jdXJyZW50U3RyZWFrKSxcbiAgICAgICAgY3JpdGljYWw6IGZhbHNlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY2hhbGxlbmdlSGFzTmV3UmVjb3JkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNoYWxsZW5nZU5ld1JlY29yZCgpO1xuICB9XG5cbiAgdG90YWxDaGFsbGVuZ2VQb3dlcnMoc3RhdHM/OiBDaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRTdGF0cyk6IG51bWJlciB7XG4gICAgaWYgKCFzdGF0cykgcmV0dXJuIDA7XG4gICAgcmV0dXJuIHN0YXRzLnBvd2Vyc1VzZWQuZWFnbGUgKyBzdGF0cy5wb3dlcnNVc2VkLmJ1bGwgKyBzdGF0cy5wb3dlcnNVc2VkLmthbmdhcm9vICsgc3RhdHMucG93ZXJzVXNlZC5saW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFsbGVuZ2VSdW5Sb3VuZEluZGV4KHJ1bjogQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1bik6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgubWluKHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aCwgTWF0aC5tYXgoMSwgcnVuLnJvdW5kSW5kZXggPz8gcnVuLmN1cnJlbnRSb3VuZCA/PyAxKSk7XG4gIH1cblxuICBwcml2YXRlIGNoYWxsZW5nZVJ1blJvdW5kc1dvbihydW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4pOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLm1heCgwLCBydW4ucm91bmRzV29uID8/IHJ1bi53aW5zID8/IDApO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVHYW1lU2NvcmUoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgcGxheWVyUHJlZml4Pzogc3RyaW5nKTogQ2hlc3NpbWFsc0dhbWVTY29yZVZpZXcge1xuICAgIGxldCBzY29yZSA9IDA7XG4gICAgbGV0IGNvbWJvID0gMDtcbiAgICBsZXQgYmVzdENvbWJvID0gMDtcbiAgICBsZXQgYmVzdE1vdmU6IENoZXNzaW1hbHNNb3ZlU2NvcmVWaWV3IHwgdW5kZWZpbmVkO1xuXG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBnYW1lLm1vdmVIaXN0b3J5ID8/IFtdKSB7XG4gICAgICBjb25zdCBtb3ZlID0gZW50cnkubW92ZTtcbiAgICAgIGlmICghbW92ZSkgY29udGludWU7XG4gICAgICBpZiAocGxheWVyUHJlZml4ICYmICFtb3ZlLnBpZWNlSWQuc3RhcnRzV2l0aChwbGF5ZXJQcmVmaXgpKSBjb250aW51ZTtcblxuICAgICAgY29uc3QgbW92ZUNvbG9yID0gdGhpcy5jb2xvckZyb21QaWVjZUlkKG1vdmUucGllY2VJZCk7XG4gICAgICBjb25zdCBpc1Byb21vdGlvbiA9IGVudHJ5LnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyAmJiBlbnRyeS53aW5uZXJSZWFzb24gPT09ICdwcm9tb3Rpb24nICYmIGVudHJ5Lndpbm5lciA9PT0gbW92ZUNvbG9yO1xuICAgICAgY29uc3QgbW92ZVNjb3JlID0gdGhpcy5zY29yZUNoZXNzaW1hbHNNb3ZlKG1vdmUsIGlzUHJvbW90aW9uLCBjb21ibyk7XG4gICAgICBpZiAobW92ZS5jYXB0dXJlc1BpZWNlSWQpIHtcbiAgICAgICAgY29tYm8gKz0gMTtcbiAgICAgICAgYmVzdENvbWJvID0gTWF0aC5tYXgoYmVzdENvbWJvLCBjb21ibyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb21ibyA9IDA7XG4gICAgICB9XG5cbiAgICAgIHNjb3JlICs9IG1vdmVTY29yZS5zY29yZTtcbiAgICAgIGlmICghYmVzdE1vdmUgfHwgbW92ZVNjb3JlLnNjb3JlID4gYmVzdE1vdmUuc2NvcmUpIGJlc3RNb3ZlID0gbW92ZVNjb3JlO1xuICAgIH1cblxuICAgIHJldHVybiB7IGJlc3RDb21ibywgYmVzdE1vdmUsIHNjb3JlIH07XG4gIH1cblxuICBwcml2YXRlIHNjb3JlQ2hlc3NpbWFsc01vdmUobW92ZTogQ2hlc3NpbWFsc01vdmUsIHByb21vdGlvbjogYm9vbGVhbiwgY3VycmVudENvbWJvOiBudW1iZXIpOiBDaGVzc2ltYWxzTW92ZVNjb3JlVmlldyB7XG4gICAgY29uc3QgY2FwdHVyZSA9ICEhbW92ZS5jYXB0dXJlc1BpZWNlSWQ7XG4gICAgY29uc3QgY29tYm8gPSBjYXB0dXJlID8gY3VycmVudENvbWJvICsgMSA6IDA7XG4gICAgY29uc3Qgc2NvcmUgPSAxXG4gICAgICArIChjYXB0dXJlID8gKG1vdmUuYW5pbWFsID8gNSA6IDMpIDogMClcbiAgICAgICsgKG1vdmUuYW5pbWFsICYmICFjYXB0dXJlID8gMSA6IDApXG4gICAgICArIChwcm9tb3Rpb24gPyA4IDogMClcbiAgICAgICsgKGNvbWJvID4gMSA/IGNvbWJvIC0gMSA6IDApO1xuICAgIGNvbnN0IGxhYmVsS2V5ID0gcHJvbW90aW9uXG4gICAgICA/ICdjaGVzc2ltYWxzU2NvcmVQcm9tb3Rpb24nXG4gICAgICA6IGNhcHR1cmUgJiYgbW92ZS5hbmltYWxcbiAgICAgICAgPyAnY2hlc3NpbWFsc1Njb3JlUG93ZXJDYXB0dXJlJ1xuICAgICAgICA6IGNhcHR1cmVcbiAgICAgICAgICA/ICdjaGVzc2ltYWxzU2NvcmVDYXB0dXJlJ1xuICAgICAgICAgIDogbW92ZS5hbmltYWxcbiAgICAgICAgICAgID8gJ2NoZXNzaW1hbHNTY29yZVBvd2VyTW92ZSdcbiAgICAgICAgICAgIDogJ2NoZXNzaW1hbHNTY29yZU1vdmUnO1xuICAgIHJldHVybiB7XG4gICAgICBjb21ibyxcbiAgICAgIGxhYmVsOiB0aGlzLnQobGFiZWxLZXkpLFxuICAgICAgc2NvcmUsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29sb3JGcm9tUGllY2VJZChwaWVjZUlkOiBzdHJpbmcpOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IgfCB1bmRlZmluZWQge1xuICAgIGlmIChwaWVjZUlkLnN0YXJ0c1dpdGgoJ1cnKSB8fCBwaWVjZUlkLnN0YXJ0c1dpdGgoJ1RXJykpIHJldHVybiAnd2hpdGUnO1xuICAgIGlmIChwaWVjZUlkLnN0YXJ0c1dpdGgoJ0InKSB8fCBwaWVjZUlkLnN0YXJ0c1dpdGgoJ1RCJykpIHJldHVybiAnYmxhY2snO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUNoYWxsZW5nZVJvdW5kU3RhdHMoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IENoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFN0YXRzIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVQbGF5ZXJSb3VuZFN0YXRzKGdhbWUsICdXJyk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVBsYXllclJvdW5kU3RhdHMoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgcGxheWVyUHJlZml4OiBzdHJpbmcpOiBDaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRTdGF0cyB7XG4gICAgY29uc3Qgcm91bmRTY29yZSA9IHRoaXMuY3JlYXRlR2FtZVNjb3JlKGdhbWUsIHBsYXllclByZWZpeCk7XG4gICAgY29uc3QgcGxheWVyQ29sb3IgPSBwbGF5ZXJQcmVmaXggPT09ICdCJyA/ICdibGFjaycgOiAnd2hpdGUnO1xuICAgIGNvbnN0IHN0YXRzOiBDaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRTdGF0cyA9IHtcbiAgICAgIHBvd2Vyc1VzZWQ6IHsgZWFnbGU6IDAsIGJ1bGw6IDAsIGthbmdhcm9vOiAwLCBsaW9uOiAwIH0sXG4gICAgICBwb3dlckNhcHR1cmVzOiAwLFxuICAgICAgcHJvbW90aW9uczogZ2FtZS53aW5uZXIgPT09IHBsYXllckNvbG9yICYmIGdhbWUud2lubmVyUmVhc29uID09PSAncHJvbW90aW9uJyA/IDEgOiAwLFxuICAgICAgY2FwdHVyZXM6IDAsXG4gICAgICBtb3ZlczogMCxcbiAgICAgIHNjb3JlOiByb3VuZFNjb3JlLnNjb3JlLFxuICAgICAgYmVzdE1vdmVTY29yZTogcm91bmRTY29yZS5iZXN0TW92ZT8uc2NvcmUgPz8gMCxcbiAgICAgIGJlc3RDb21ibzogcm91bmRTY29yZS5iZXN0Q29tYm8sXG4gICAgfTtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGdhbWUubW92ZUhpc3RvcnkgPz8gW10pIHtcbiAgICAgIGNvbnN0IG1vdmUgPSBlbnRyeS5tb3ZlO1xuICAgICAgaWYgKCFtb3ZlIHx8ICFtb3ZlLnBpZWNlSWQuc3RhcnRzV2l0aChwbGF5ZXJQcmVmaXgpKSBjb250aW51ZTtcbiAgICAgIHN0YXRzLm1vdmVzICs9IDE7XG4gICAgICBpZiAobW92ZS5jYXB0dXJlc1BpZWNlSWQpIHN0YXRzLmNhcHR1cmVzICs9IDE7XG4gICAgICBpZiAoIW1vdmUuYW5pbWFsKSBjb250aW51ZTtcbiAgICAgIHN0YXRzLnBvd2Vyc1VzZWRbbW92ZS5hbmltYWxdICs9IDE7XG4gICAgICBpZiAobW92ZS5jYXB0dXJlc1BpZWNlSWQpIHN0YXRzLnBvd2VyQ2FwdHVyZXMgKz0gMTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXRzO1xuICB9XG5cbiAgcHJpdmF0ZSBtb2RlU3RhdHNSZXN1bHQoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IHtcbiAgICBtb2RlOiBFeGNsdWRlPENoZXNzaW1hbHNTdGF0c01vZGUsICdjaGFsbGVuZ2UnPjtcbiAgICB3b246IGJvb2xlYW47XG4gICAgcm91bmRTdGF0czogQ2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kU3RhdHM7XG4gIH0gfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlIHx8IHRoaXMudHV0b3JpYWxNb2RlKCkgfHwgIWdhbWUud2lubmVyKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdsb2NhbCcpIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgIT09ICdib3QnKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIHsgbW9kZTogJ2JvdCcsIHdvbjogZ2FtZS53aW5uZXIgPT09ICd3aGl0ZScsIHJvdW5kU3RhdHM6IHRoaXMuY3JlYXRlUGxheWVyUm91bmRTdGF0cyhnYW1lLCAnVycpIH07XG4gICAgfVxuICAgIGlmIChnYW1lLm1vZGUgIT09ICdvbmxpbmUnKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IHVpZCA9IHRoaXMub25saW5lVWlkKCkgPz8gdGhpcy5vbmxpbmUuY3VycmVudFVpZDtcbiAgICBjb25zdCBzaWRlID0gdWlkID8gdGhpcy5vbmxpbmUucGFydGljaXBhbnRTaWRlKGdhbWUsIHVpZCkgOiB1bmRlZmluZWQ7XG4gICAgaWYgKHNpZGUgIT09ICd3aGl0ZScgJiYgc2lkZSAhPT0gJ2JsYWNrJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4ge1xuICAgICAgbW9kZTogJ29ubGluZScsXG4gICAgICB3b246IGdhbWUud2lubmVyID09PSBzaWRlLFxuICAgICAgcm91bmRTdGF0czogdGhpcy5jcmVhdGVQbGF5ZXJSb3VuZFN0YXRzKGdhbWUsIHNpZGUgPT09ICd3aGl0ZScgPyAnVycgOiAnQicpLFxuICAgIH07XG4gIH1cblxuICBhbmltYWxMYWJlbCh0eXBlOiBDaGVzc2ltYWxzQW5pbWFsVHlwZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudChgY2hlc3NpbWFsc0FuaW1hbCR7dGhpcy5jYXBpdGFsaXplKHR5cGUpfWApO1xuICB9XG5cbiAgYW5pbWFsR2x5cGgodHlwZTogQ2hlc3NpbWFsc0FuaW1hbFR5cGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IGdseXBoczogUmVjb3JkPENoZXNzaW1hbHNBbmltYWxUeXBlLCBzdHJpbmc+ID0ge1xuICAgICAgZWFnbGU6ICfihpcnLFxuICAgICAgYnVsbDogJ+KXhicsXG4gICAgICBrYW5nYXJvbzogJ+KktCcsXG4gICAgICBsaW9uOiAn4pmaJyxcbiAgICB9O1xuICAgIHJldHVybiBnbHlwaHNbdHlwZV07XG4gIH1cblxuICBhbmltYWxBc3NldFNyYyh0eXBlOiBDaGVzc2ltYWxzQW5pbWFsVHlwZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEFOSU1BTFMuZmluZCgoYW5pbWFsKSA9PiBhbmltYWwudHlwZSA9PT0gdHlwZSk/LmFzc2V0U3JjID8/ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBwb3dlckNhbGxvdXRUb25lKHR5cGU6IENoZXNzaW1hbHNBbmltYWxUeXBlKTogc3RyaW5nIHtcbiAgICBjb25zdCB0b25lczogUmVjb3JkPENoZXNzaW1hbHNBbmltYWxUeXBlLCBzdHJpbmc+ID0ge1xuICAgICAgZWFnbGU6ICc3OSwgMTY5LCAyMTgnLFxuICAgICAgYnVsbDogJzIyMCwgMTE2LCA1OCcsXG4gICAgICBrYW5nYXJvbzogJzEzOSwgMTEyLCAyMjInLFxuICAgICAgbGlvbjogJzIyMSwgMTU4LCAyNicsXG4gICAgfTtcbiAgICByZXR1cm4gdG9uZXNbdHlwZV07XG4gIH1cblxuICBjYW5SZXZpZXdQcmV2aW91cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuYWN0aXZlUmV2aWV3SW5kZXgoKSA/PyAwKSA+IDA7XG4gIH1cblxuICBjYW5SZXZpZXdOZXh0KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hY3RpdmVSZXZpZXdJbmRleCgpO1xuICAgIHJldHVybiBpbmRleCAhPT0gdW5kZWZpbmVkICYmIGluZGV4IDwgdGhpcy5yZXBsYXlFbnRyaWVzKCkubGVuZ3RoIC0gMTtcbiAgfVxuXG4gIHJldmlld1ByZXZpb3VzTW92ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuYWN0aXZlUmV2aWV3SW5kZXgoKTtcbiAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCB8fCBpbmRleCA8PSAwKSByZXR1cm47XG4gICAgdGhpcy5yZXZpZXdJbmRleC5zZXQoaW5kZXggLSAxKTtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgcmV2aWV3TmV4dE1vdmUoKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmFjdGl2ZVJldmlld0luZGV4KCk7XG4gICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQgfHwgaW5kZXggPj0gdGhpcy5yZXBsYXlFbnRyaWVzKCkubGVuZ3RoIC0gMSkgcmV0dXJuO1xuICAgIHRoaXMucmV2aWV3SW5kZXguc2V0KGluZGV4ICsgMSk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIHJlcGxheVBvc2l0aW9uTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuYWN0aXZlUmV2aWV3SW5kZXgoKTtcbiAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCkgcmV0dXJuICcnO1xuICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5yZXBsYXlFbnRyaWVzKClbaW5kZXhdO1xuICAgIGlmICghZW50cnkgfHwgZW50cnkubW92ZU51bWJlciA9PT0gMCkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1JlcGxheVN0YXJ0Jyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1JlcGxheU1vdmUnKVxuICAgICAgLnJlcGxhY2UoJ3ttb3ZlfScsIGAke2VudHJ5Lm1vdmVOdW1iZXJ9YClcbiAgICAgIC5yZXBsYWNlKCd7dG90YWx9JywgYCR7dGhpcy5nYW1lKCkubW92ZUNvdW50fWApO1xuICB9XG5cbiAgc2hvdWxkU2hvd0ZpbmlzaGVkT3ZlcmxheSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5nYW1lKCkuc3RhdHVzICE9PSAnZmluaXNoZWQnKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmFjdGl2ZVJldmlld0luZGV4KCk7XG4gICAgcmV0dXJuIGluZGV4ID09PSB1bmRlZmluZWQgfHwgaW5kZXggPT09IHRoaXMucmVwbGF5RW50cmllcygpLmxlbmd0aCAtIDE7XG4gIH1cblxuICBwcml2YXRlIGRpc3BsYXlSb3dJbmRleChyb3c6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYm9hcmRPcmllbnRhdGlvbkNvbG9yKCkgPT09ICdibGFjaycgPyB0aGlzLnJldmlld0dhbWUoKS5ib2FyZFNpemUgLSAxIC0gcm93IDogcm93O1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwbGF5Q29sSW5kZXgoY29sOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmJvYXJkT3JpZW50YXRpb25Db2xvcigpID09PSAnYmxhY2snID8gdGhpcy5yZXZpZXdHYW1lKCkuYm9hcmRTaXplIC0gMSAtIGNvbCA6IGNvbDtcbiAgfVxuXG4gIHByaXZhdGUgd2F0Y2hPbmxpbmVHYW1lKGdhbWVJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5vbmxpbmVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5vbmxpbmVTdWJzY3JpcHRpb24gPSB0aGlzLm9ubGluZS53YXRjaEdhbWUoZ2FtZUlkKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHN0YXRlKSA9PiB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgaWYgKCFzdGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUuc2V0KCdlcnJvcicpO1xuICAgICAgICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lTm90Rm91bmQnKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlLnNldCgnbGl2ZScpO1xuICAgICAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KCcnKTtcbiAgICAgICAgICBjb25zdCBwcmV2aW91cyA9IHRoaXMuZ2FtZSgpO1xuICAgICAgICAgIHRoaXMuYXBwbHlPbmxpbmVHYW1lU25hcHNob3QocHJldmlvdXMsIHN0YXRlKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZS5zZXQoJ2Vycm9yJyk7XG4gICAgICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lRGlzY29ubmVjdGVkQm9keScpKTtcbiAgICAgICAgICB0aGlzLnJlc3VtZVNwbGFzaFZpc2libGUuc2V0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLmNhbmNlbEFjdGl2ZUdhbWVwbGF5RmVlZGJhY2soKTtcbiAgICAgICAgICB0aGlzLnNjcmVlbi5zZXQoJ2hvbWUnKTtcbiAgICAgICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvbmxpbmVPcGVuRXJyb3JNZXNzYWdlKGVycm9yOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnJztcbiAgICBpZiAobWVzc2FnZS5pbmNsdWRlcygnQ0hFU1NJTUFMU19HQU1FX0VYUElSRUQnKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUV4cGlyZWRCb2R5Jyk7XG4gICAgaWYgKG1lc3NhZ2UuaW5jbHVkZXMoJ0NIRVNTSU1BTFNfR0FNRV9OT1RfRk9VTkQnKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZU5vdEZvdW5kJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJyk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5T25saW5lR2FtZVNuYXBzaG90KHByZXZpb3VzOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuZ2FtZS5zZXQoc3RhdGUpO1xuICAgIGlmIChzdGF0ZS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHtcbiAgICAgIGlmIChwcmV2aW91cy5pZCAhPT0gc3RhdGUuaWQgfHwgcHJldmlvdXMuc3RhdHVzICE9PSAnZmluaXNoZWQnIHx8IHRoaXMucmV2aWV3SW5kZXgoKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuc2hvd0xhdGVzdFJldmlld1NuYXBzaG90KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xlYXJSZXZpZXcoKTtcbiAgICB9XG4gICAgaWYgKHByZXZpb3VzLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyAmJiBzdGF0ZS5zdGF0dXMgPT09ICdpbl9wcm9ncmVzcycpIHtcbiAgICAgIHRoaXMubGFzdE91dGNvbWVTb3VuZEtleSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLnJlbWF0Y2hMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpY1Nvb24oKTtcbiAgICAgIHRoaXMuZm9jdXNCb2FyZFNvb24oKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLnN1Y2Nlc3MoKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZEJvYXJkU2l6ZS5zZXQoc3RhdGUuYm9hcmRTaXplKTtcbiAgICB0aGlzLnJlc3VtZVNwbGFzaFZpc2libGUuc2V0KGZhbHNlKTtcbiAgICBjb25zdCBwcmV2aW91c1BlbmRpbmdLZXkgPSBwcmV2aW91cy5pZCA9PT0gc3RhdGUuaWQgPyB0aGlzLm9ubGluZS5wYXJ0aWNpcGFudEtleShwcmV2aW91cy5vbmxpbmU/LnBlbmRpbmdHdWVzdCkgOiAnJztcbiAgICBjb25zdCBuZXh0UGVuZGluZ0tleSA9IHRoaXMub25saW5lLnBhcnRpY2lwYW50S2V5KHN0YXRlLm9ubGluZT8ucGVuZGluZ0d1ZXN0KTtcbiAgICBpZiAoXG4gICAgICBzdGF0ZS5zdGF0dXMgPT09ICd3YWl0aW5nJyAmJlxuICAgICAgdGhpcy5vbmxpbmUuaXNIb3N0V2FpdGluZyhzdGF0ZSwgdGhpcy5vbmxpbmUuY3VycmVudFVpZCkgJiZcbiAgICAgICEhbmV4dFBlbmRpbmdLZXkgJiZcbiAgICAgIG5leHRQZW5kaW5nS2V5ICE9PSBwcmV2aW91c1BlbmRpbmdLZXlcbiAgICApIHtcbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICAgIG1lc3NhZ2U6IHRoaXMudCgnY2hlc3NpbWFsc0pvaW5SZXF1ZXN0Qm9keScpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgdGhpcy5wZW5kaW5nR3Vlc3ROYW1lKCkpLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBkdXJhdGlvbjogMzIwMCxcbiAgICAgICAgcG9zaXRpb246ICd0b3AnLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNKb2luUmVxdWVzdCgpO1xuICAgICAgdm9pZCB0aGlzLmhhcHRpY3Muc3VjY2VzcygpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBwcmV2aW91cy5jdXJyZW50VHVybiAhPT0gc3RhdGUuY3VycmVudFR1cm4gJiZcbiAgICAgIHN0YXRlLnN0YXR1cyA9PT0gJ2luX3Byb2dyZXNzJyAmJlxuICAgICAgIXRoaXMuc2hvdWxkS2VlcEJvYXJkT3JpZW50YXRpb25TdGF0aWMoc3RhdGUpXG4gICAgKSB7XG4gICAgICB0aGlzLnRyaWdnZXJCb2FyZE9yaWVudGF0aW9uKCk7XG4gICAgfVxuICAgIGlmIChzdGF0ZS5zdGF0dXMgPT09ICdmaW5pc2hlZCcgJiYgcHJldmlvdXMuc3RhdHVzICE9PSAnZmluaXNoZWQnKSB7XG4gICAgICB0aGlzLnBsYXlDaGVzc2ltYWxzT3V0Y29tZVNvdW5kKHN0YXRlKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLnN1Y2Nlc3MoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1pbmlHYW1lc0Jhc2VSb3V0ZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJvdXRlID0gKHRoaXMubWluaUdhbWVzUm91dGUgfHwgJy9taW5pLWdhbWVzJykudHJpbSgpO1xuICAgIHJldHVybiBgLyR7cm91dGUucmVwbGFjZSgvXlxcLyt8XFwvKyQvZywgJycpIHx8ICdtaW5pLWdhbWVzJ31gO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVzc2ltYWxzR2FtZVJvdXRlKGdhbWVJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5taW5pR2FtZXNCYXNlUm91dGUoKX0vY2hlc3NpbWFscy8ke2VuY29kZVVSSUNvbXBvbmVudCh0aGlzLm9ubGluZS5ub3JtYWxpemVHYW1lSWQoZ2FtZUlkKSl9YDtcbiAgfVxuXG4gIHByaXZhdGUgY2FwaXRhbGl6ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB2YWx1ZS5zbGljZSgxKTtcbiAgfVxufVxuIl19
|
|
6230
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlc3NpbWFscy1nYW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvbWluaS1nYW1lcy9jaGVzc2ltYWxzLWdhbWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLE1BQU0sRUFBcUIsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNySSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDdkIsMkJBQTJCLEVBQzNCLG9CQUFvQixFQUNwQix1QkFBdUIsRUFDdkIsb0JBQW9CLEVBQ3BCLFdBQVcsRUFDWCxvQkFBb0IsR0FDckIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM3RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLHdCQUF3QixFQUEyQixNQUFNLCtCQUErQixDQUFDO0FBQ2xHLE9BQU8sRUFBRSx5QkFBeUIsRUFBNEIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FB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QUFtQixDQUFDLFlBQ3JLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErMENUO3dEQTZwTGlDLFdBQVc7c0JBQTVDLFNBQVM7dUJBQUMsYUFBYTtnQkE0T1gsWUFBWTtzQkFBeEIsS0FBSztnQkFRRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBOZ1pvbmUsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElvbk1vZGFsIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgYXBwbHlDaGVzc2ltYWxzTW92ZSxcbiAgY2hvb3NlQ2hlc3NpbWFsc0JvdE1vdmUsXG4gIENIRVNTSU1BTFNfQk9UX1BST0ZJTEVTLFxuICBjcmVhdGVDaGVzc2ltYWxzUmV2aWV3U3RhdGUsXG4gIGNyZWF0ZUNoZXNzaW1hbHNHYW1lLFxuICBnZXRDaGVzc2ltYWxzTGVnYWxNb3ZlcyxcbiAgZ2V0Q2hlc3NpbWFsc1BpZWNlQXQsXG4gIHBvc2l0aW9uS2V5LFxuICByZXNpZ25DaGVzc2ltYWxzR2FtZSxcbn0gZnJvbSAnLi9jaGVzc2ltYWxzLWVuZ2luZSc7XG5pbXBvcnQgeyBDaGVzc2ltYWxzT25saW5lU2VydmljZSB9IGZyb20gJy4vY2hlc3NpbWFscy1vbmxpbmUuc2VydmljZSc7XG5pbXBvcnQgeyBDaGVzc2ltYWxzQ2hhbGxlbmdlUHJvZ3Jlc3NTZXJ2aWNlIH0gZnJvbSAnLi9jaGVzc2ltYWxzLWNoYWxsZW5nZS1wcm9ncmVzcy5zZXJ2aWNlJztcbmltcG9ydCB7IE1JTklfR0FNRVNfSTE4TiB9IGZyb20gJy4vbWluaS1nYW1lcy5pMThuJztcbmltcG9ydCB7IE1pbmlHYW1lQ2FsbG91dENvbXBvbmVudCwgTWluaUdhbWVDYWxsb3V0TWV0YWRhdGEgfSBmcm9tICcuL21pbmktZ2FtZS1jYWxsb3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNaW5pR2FtZVNjb3JlUG9wQ29tcG9uZW50LCBNaW5pR2FtZVNjb3JlUG9wTWV0YWRhdGEgfSBmcm9tICcuL21pbmktZ2FtZS1zY29yZS1wb3AuY29tcG9uZW50JztcbmltcG9ydCB7IFJldHJvQXVkaW9TZXJ2aWNlIH0gZnJvbSAnLi9yZXRyby1hdWRpby5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIENoZXNzaW1hbHNBbmltYWxUeXBlLFxuICBDaGVzc2ltYWxzQm90RGlmZmljdWx0eSxcbiAgQ2hlc3NpbWFsc0JvdFByb2ZpbGUsXG4gIENoZXNzaW1hbHNCb3RQcm9maWxlSWQsXG4gIENoZXNzaW1hbHNCb2FyZFNpemUsXG4gIENoZXNzaW1hbHNDaGFsbGVuZ2VCb3QsXG4gIENoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFN0YXRzLFxuICBDaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRSZXN1bHQsXG4gIENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4sXG4gIENoZXNzaW1hbHNDaGFsbGVuZ2VTdGF0cyxcbiAgQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgQ2hlc3NpbWFsc0hpc3RvcnlFbnRyeSxcbiAgQ2hlc3NpbWFsc0xvY2FsTW9kZSxcbiAgQ2hlc3NpbWFsc01vdmUsXG4gIENoZXNzaW1hbHNOaWdodG1hcmVNb2RlLFxuICBDaGVzc2ltYWxzT25saW5lUGFydGljaXBhbnQsXG4gIENoZXNzaW1hbHNQaWVjZSxcbiAgQ2hlc3NpbWFsc1BsYXllckNvbG9yLFxuICBDaGVzc2ltYWxzUG9zaXRpb24sXG4gIENoZXNzaW1hbHNTdGF0c01vZGUsXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgTW9kYWxMYXlvdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvbW9kYWwtbGF5b3V0L21vZGFsLWxheW91dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmFuZ2VJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9yYW5nZS1pbnB1dC9yYW5nZS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmFuZ2VJbnB1dE1ldGFkYXRhLCBSYW5nZVZhbHVlIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3JhbmdlLWlucHV0L3R5cGVzJztcbmltcG9ydCB7IFRvZ2dsZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3RvZ2dsZS1pbnB1dC90b2dnbGUtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFRvZ2dsZUlucHV0TWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvdG9nZ2xlLWlucHV0L3R5cGVzJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IFVzZXJBdmF0YXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy91c2VyLWF2YXRhci91c2VyLWF2YXRhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXNlckF2YXRhck1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vYXRvbXMvdXNlci1hdmF0YXIvdHlwZXMnO1xuaW1wb3J0IHsgQnV0dG9uTWV0YWRhdGEgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEhhcHRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaGFwdGljcy9oYXB0aWNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgTWluaUdhbWVQbGF5ZXJQcm9maWxlU2VydmljZSB9IGZyb20gJy4vbWluaS1nYW1lLXBsYXllci1wcm9maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVkVSU0lPTiBhcyBWQUxURUNIX0NPTVBPTkVOVFNfVkVSU0lPTiB9IGZyb20gJy4uLy4uLy4uL3ZlcnNpb24nO1xuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc0FuaW1hbFZpZXcge1xuICB0eXBlOiBDaGVzc2ltYWxzQW5pbWFsVHlwZTtcbiAgYXNzZXRTcmM6IHN0cmluZztcbiAgdG9uZTogbnVtYmVyO1xufVxuXG50eXBlIENoZXNzaW1hbHNDb25maXJtQWN0aW9uID0gJ3Jlc3RhcnQnIHwgJ21vZGUnIHwgJ2dhbWVzJyB8ICdyZXNpZ24nIHwgJ2NoYWxsZW5nZS1uZXcnO1xudHlwZSBDaGVzc2ltYWxzUmVtYXRjaFN0YXRlID0gJ25vbmUnIHwgJ3JlcXVlc3RlZCcgfCAnaW5jb21pbmcnO1xudHlwZSBDaGVzc2ltYWxzQ2hhbGxlbmdlUGhhc2UgPSAnaWRsZScgfCAncGxheWluZycgfCAnYmV0d2VlbicgfCAnY29tcGxldGVkJyB8ICdmYWlsZWQnO1xudHlwZSBDaGVzc2ltYWxzQm90RGlmZmljdWx0eUNob2ljZSA9IENoZXNzaW1hbHNCb3REaWZmaWN1bHR5IHwgJ25pZ2h0bWFyZSc7XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzVHV0b3JpYWxFeHBlY3RlZE1vdmUge1xuICBwaWVjZUlkOiBzdHJpbmc7XG4gIHRvOiBDaGVzc2ltYWxzUG9zaXRpb247XG4gIGFuaW1hbD86IENoZXNzaW1hbHNBbmltYWxUeXBlO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc01vdmluZ1BpZWNlVmlldyB7XG4gIGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3I7XG4gIGZyb21Sb3c6IG51bWJlcjtcbiAgZnJvbUNvbDogbnVtYmVyO1xuICB0b1JvdzogbnVtYmVyO1xuICB0b0NvbDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc01vdmVFZmZlY3RWaWV3IHtcbiAgYW5pbWFsPzogQ2hlc3NpbWFsc0FuaW1hbFR5cGU7XG4gIGZyb206IENoZXNzaW1hbHNQb3NpdGlvbjtcbiAgdG86IENoZXNzaW1hbHNQb3NpdGlvbjtcbiAgY2FwdHVyZTogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIENoZXNzaW1hbHNNb3ZlVHJhaWxWaWV3IHtcbiAgeDogc3RyaW5nO1xuICB5OiBzdHJpbmc7XG4gIGxlbmd0aDogc3RyaW5nO1xuICBhbmdsZTogc3RyaW5nO1xuICBhbmltYWw/OiBDaGVzc2ltYWxzQW5pbWFsVHlwZTtcbiAgY2FwdHVyZTogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIENoZXNzaW1hbHNDaGFsbGVuZ2VUZW5zaW9uVmlldyB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGJvZHk6IHN0cmluZztcbiAgaWNvbjogc3RyaW5nO1xuICBjcml0aWNhbDogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIENoZXNzaW1hbHNBY2hpZXZlbWVudFZpZXcge1xuICB0aXRsZTogc3RyaW5nO1xuICBib2R5OiBzdHJpbmc7XG4gIGljb246IHN0cmluZztcbiAgdW5sb2NrZWQ6IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzUHJvZ3Jlc3NNZXRyaWNWaWV3IHtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZyB8IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIENoZXNzaW1hbHNQcm9ncmVzc1JpbmdWaWV3IHtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgZGV0YWlsOiBzdHJpbmc7XG4gIHByb2dyZXNzOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzUGF0aEhpZ2hsaWdodFZpZXcge1xuICB0aXRsZTogc3RyaW5nO1xuICBib2R5OiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGltYWdlU3JjOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzTW92ZVNjb3JlVmlldyB7XG4gIGNvbWJvOiBudW1iZXI7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHNjb3JlOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzR2FtZVNjb3JlVmlldyB7XG4gIGJlc3RDb21ibzogbnVtYmVyO1xuICBiZXN0TW92ZT86IENoZXNzaW1hbHNNb3ZlU2NvcmVWaWV3O1xuICBzY29yZTogbnVtYmVyO1xufVxuXG5jb25zdCBDSEVTU0lNQUxTX01PVkVfQU5JTUFUSU9OX01TID0gMzYwO1xuY29uc3QgQ0hFU1NJTUFMU19QT1dFUl9DQUxMT1VUX01TID0gMjIwMDtcbmNvbnN0IENIRVNTSU1BTFNfU0NPUkVfUE9QX01TID0gMTE1MDtcbmNvbnN0IENIRVNTSU1BTFNfQk9UX1RISU5LSU5HX01TID0gNjIwO1xuY29uc3QgQ0hFU1NJTUFMU19CT1RfQ09MT1I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvciA9ICdibGFjayc7XG5jb25zdCBDSEVTU0lNQUxTX1RVVE9SSUFMX1NURVBTID0gNztcbmNvbnN0IENIRVNTSU1BTFNfT05MSU5FX1RVUk5fU0VDT05EUyA9IDQ1O1xuY29uc3QgQ0hFU1NJTUFMU19DSEFMTEVOR0VfVFVSTl9TRUNPTkRTID0gMzA7XG5jb25zdCBDSEVTU0lNQUxTX0NIQUxMRU5HRV9GSU5BTF9UVVJOX1NFQ09ORFMgPSAyMDtcbmNvbnN0IENIRVNTSU1BTFNfUE9XRVJfQVNTRVRfQkFTRSA9ICdhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9wb3dlcnMnO1xuXG5jb25zdCBBTklNQUxTOiBDaGVzc2ltYWxzQW5pbWFsVmlld1tdID0gW1xuICB7IHR5cGU6ICdlYWdsZScsIGFzc2V0U3JjOiBgJHtDSEVTU0lNQUxTX1BPV0VSX0FTU0VUX0JBU0V9L2VhZ2xlLXBvd2VyLnBuZ2AsIHRvbmU6IDY1OS4yNSB9LFxuICB7IHR5cGU6ICdidWxsJywgYXNzZXRTcmM6IGAke0NIRVNTSU1BTFNfUE9XRVJfQVNTRVRfQkFTRX0vYnVsbC1wb3dlci5wbmdgLCB0b25lOiAyNjEuNjMgfSxcbiAgeyB0eXBlOiAna2FuZ2Fyb28nLCBhc3NldFNyYzogYCR7Q0hFU1NJTUFMU19QT1dFUl9BU1NFVF9CQVNFfS9rYW5nYXJvby1wb3dlci5wbmdgLCB0b25lOiA1MjMuMjUgfSxcbiAgeyB0eXBlOiAnbGlvbicsIGFzc2V0U3JjOiBgJHtDSEVTU0lNQUxTX1BPV0VSX0FTU0VUX0JBU0V9L2xpb24tcG93ZXIucG5nYCwgdG9uZTogMzkyIH0sXG5dO1xuXG5jb25zdCBDSEVTU0lNQUxTX0NIQUxMRU5HRV9MQURERVI6IENoZXNzaW1hbHNDaGFsbGVuZ2VCb3RbXSA9IFtcbiAgeyBpZDogJ3Nwcm91dCcsIHJvdW5kOiAxLCBwcm9maWxlSWQ6ICdleHBsb3JlcicsIGRpZmZpY3VsdHk6ICdlYXN5JywgYm9hcmRTaXplOiA2LCBpbnRyb0tleTogJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb3RTcHJvdXRJbnRybycgfSxcbiAgeyBpZDogJ3NlbnRpbmVsJywgcm91bmQ6IDIsIHByb2ZpbGVJZDogJ2d1YXJkaWFuJywgZGlmZmljdWx0eTogJ25vcm1hbCcsIGJvYXJkU2l6ZTogNiwgaW50cm9LZXk6ICdjaGVzc2ltYWxzQ2hhbGxlbmdlQm90U2VudGluZWxJbnRybycgfSxcbiAgeyBpZDogJ2h1bnRlcicsIHJvdW5kOiAzLCBwcm9maWxlSWQ6ICdodW50ZXInLCBkaWZmaWN1bHR5OiAnbm9ybWFsJywgYm9hcmRTaXplOiA2LCBpbnRyb0tleTogJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb3RIdW50ZXJJbnRybycgfSxcbiAgeyBpZDogJ2p1bXBlcicsIHJvdW5kOiA0LCBwcm9maWxlSWQ6ICdqdW1wZXInLCBkaWZmaWN1bHR5OiAnbm9ybWFsJywgYm9hcmRTaXplOiA2LCBpbnRyb0tleTogJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb3RKdW1wZXJJbnRybycgfSxcbiAgeyBpZDogJ3ByZWRhdG9yJywgcm91bmQ6IDUsIHByb2ZpbGVJZDogJ3ByZWRhdG9yJywgZGlmZmljdWx0eTogJ2hhcmQnLCBib2FyZFNpemU6IDgsIGludHJvS2V5OiAnY2hlc3NpbWFsc0NoYWxsZW5nZUJvdFByZWRhdG9ySW50cm8nIH0sXG4gIHsgaWQ6ICdvcmFjbGUnLCByb3VuZDogNiwgcHJvZmlsZUlkOiAnc3RyYXRlZ2lzdCcsIGRpZmZpY3VsdHk6ICdoYXJkJywgYm9hcmRTaXplOiA4LCBpbnRyb0tleTogJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb3RPcmFjbGVJbnRybycgfSxcbiAgeyBpZDogJ3NwcmludGVyJywgcm91bmQ6IDcsIHByb2ZpbGVJZDogJ3NwcmludGVyJywgZGlmZmljdWx0eTogJ2hhcmQnLCBib2FyZFNpemU6IDgsIGludHJvS2V5OiAnY2hlc3NpbWFsc0NoYWxsZW5nZUJvdFNwcmludGVySW50cm8nIH0sXG4gIHsgaWQ6ICdjaGFtcGlvbicsIHJvdW5kOiA4LCBwcm9maWxlSWQ6ICdzZW50aW5lbCcsIGRpZmZpY3VsdHk6ICdoYXJkJywgYm9hcmRTaXplOiA4LCBpbnRyb0tleTogJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb3RDaGFtcGlvbkludHJvJyB9LFxuXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWNoZXNzaW1hbHMtZ2FtZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtJb25Nb2RhbCwgTWluaUdhbWVDYWxsb3V0Q29tcG9uZW50LCBNaW5pR2FtZVNjb3JlUG9wQ29tcG9uZW50LCBNb2RhbExheW91dENvbXBvbmVudCwgUmFuZ2VJbnB1dENvbXBvbmVudCwgVG9nZ2xlSW5wdXRDb21wb25lbnQsIEJ1dHRvbkNvbXBvbmVudCwgVXNlckF2YXRhckNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPG1haW4gY2xhc3M9XCJjaGVzc2ltYWxzLXNoZWxsXCIgW2NsYXNzLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb25dPVwicHJvamVjdGlvbk1vZGVcIj5cbiAgICAgIEBpZiAoc2NyZWVuKCkgPT09ICdob21lJykge1xuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtaGVyb1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWhlcm9fX2xvZ29cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLWhlcm9fX2VtYmxlbVwiXG4gICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL2JyYW5kL2NoZXNzaW1hbHMtZW1ibGVtLnBuZ1wiXG4gICAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAgIGRyYWdnYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1oZXJvX193b3JkbWFya1wiXG4gICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL2JyYW5kL2NoZXNzaW1hbHMtd29yZG1hcmsucG5nXCJcbiAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgZHJhZ2dhYmxlPVwiZmFsc2VcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzU3VidGl0bGUnKSB9fTwvcD5cbiAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1wYW5lbFwiPlxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1ob21lLWFjdGlvbnNcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NoZXNzaW1hbHNIb21lQ2hvb3NlJylcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLWhvbWUtYWN0aW9uIGNoZXNzaW1hbHMtaG9tZS1hY3Rpb24tLXBsYXlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5QbGF5T3B0aW9uc01vZGFsKClcIj5cbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1tb2RlLWljb25cIlxuICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL21vZGUtaWNvbnMvc29sby1ib3JkZXJsZXNzLnBuZ1wiXG4gICAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICBkcmFnZ2FibGU9XCJmYWxzZVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc1F1aWNrUGxheScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzUXVpY2tQbGF5Qm9keScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1ob21lLWFjdGlvblwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib3BlbkNoYWxsZW5nZVZpZXcoKVwiPlxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLW1vZGUtaWNvblwiXG4gICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvbW9kZS1pY29ucy9jaGFsbGVuZ2UtYm9yZGVybGVzcy5wbmdcIlxuICAgICAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAgICAgZHJhZ2dhYmxlPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VUaXRsZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQm9keScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1ob21lLWFjdGlvblwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib3BlblBhdGhWaWV3KClcIj5cbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1tb2RlLWljb25cIlxuICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL21vZGUtaWNvbnMvcGF0aC1ib3JkZXJsZXNzLnBuZ1wiXG4gICAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICBkcmFnZ2FibGU9XCJmYWxzZVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc1Byb2dyZXNzVGl0bGUnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc1Byb2dyZXNzU3VidGl0bGUnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtaG93dG9cIj5cbiAgICAgICAgICAgIDxoMj57eyB0KCdjaGVzc2ltYWxzSG93VG9UaXRsZScpIH19PC9oMj5cbiAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNIb3dUb0JvZHknKSB9fTwvcD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWhvd3RvX19hY3Rpb25zXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLWxlYXJuLW1vcmVcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInN0YXJ0VHV0b3JpYWwoKVwiPlxuICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNUdXRvcmlhbFN0YXJ0JykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLWxlYXJuLW1vcmVcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5SdWxlc01vZGFsKClcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCdsZWFybk1vcmUnKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPVwiY2hlc3NpbWFscy1vcHRpb25zXCI+XG4gICAgICAgICAgICA8c3VtbWFyeT5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjaGVzc2ltYWxzUGxheVdpdGhGcmllbmQnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzT25saW5lVGl0bGUnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3VtbWFyeT5cblxuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLW9ubGluZVwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPGgyPnt7IHQoJ2NoZXNzaW1hbHNPbmxpbmVUaXRsZScpIH19PC9oMj5cbiAgICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc09ubGluZUJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgQGlmIChvbmxpbmVFcnJvcigpKSB7XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmVfX2Vycm9yXCI+e3sgb25saW5lRXJyb3IoKSB9fTwvcD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAob25saW5lTG9hZGluZygpKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLW9ubGluZV9fbG9hZGluZ1wiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjaGVzc2ltYWxzT25saW5lTG9hZGluZycpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lX19jcmVhdGVcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtd29ya2luZ109XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ2NyZWF0ZSdcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtYnVzeV09XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ2NyZWF0ZSdcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJvbmxpbmVMb2FkaW5nKClcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjcmVhdGVPbmxpbmVHYW1lKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQGlmIChvbmxpbmVBY3Rpb24oKSA9PT0gJ2NyZWF0ZScpIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1idXR0b24tc3Bpbm5lclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0NyZWF0ZU9ubGluZScpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NyZWF0ZU9ubGluZUhpbnQnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLW9ubGluZV9fam9pblwiPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2NoZXNzaW1hbHNKb2luT25saW5lVGl0bGUnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjaGVzc2ltYWxzLW9ubGluZS1jb2RlXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnY2hlc3NpbWFsc0pvaW5Db2RlJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICBbdmFsdWVdPVwib25saW5lSm9pbkNvZGUoKVwiXG4gICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwidCgnY2hlc3NpbWFsc0pvaW5Db2RlUGxhY2Vob2xkZXInKVwiXG4gICAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25saW5lSm9pbkNvZGUuc2V0KG5vcm1hbGl6ZUdhbWVJZCgkYW55KCRldmVudC50YXJnZXQpLnZhbHVlKSlcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLXdvcmtpbmddPVwib25saW5lQWN0aW9uKCkgPT09ICdqb2luJ1wiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1idXN5XT1cIm9ubGluZUFjdGlvbigpID09PSAnam9pbidcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJvbmxpbmVMb2FkaW5nKCkgfHwgIW9ubGluZUpvaW5Db2RlKClcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJqb2luT25saW5lR2FtZUJ5Q29kZSgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEBpZiAob25saW5lQWN0aW9uKCkgPT09ICdqb2luJykge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWJ1dHRvbi1zcGlubmVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzSm9pbk9ubGluZScpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgPC9kZXRhaWxzPlxuXG4gICAgICAgICAgQGlmIChvbmxpbmVIaXN0b3J5KCkubGVuZ3RoKSB7XG4gICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz1cImNoZXNzaW1hbHMtb3B0aW9uc1wiPlxuICAgICAgICAgICAgICA8c3VtbWFyeT5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2NoZXNzaW1hbHNIaXN0b3J5VGl0bGUnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NoZXNzaW1hbHNIaXN0b3J5Qm9keScpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L3N1bW1hcnk+XG5cbiAgICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLW9ubGluZSBjaGVzc2ltYWxzLWhpc3RvcnlcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1oaXN0b3J5X19oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc0hpc3RvcnlUaXRsZScpIH19PC9oMj5cbiAgICAgICAgICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc0hpc3RvcnlCb2R5JykgfX08L3A+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1oaXN0b3J5X19saXN0XCI+XG4gICAgICAgICAgICAgICAgICBAZm9yIChlbnRyeSBvZiBvbmxpbmVIaXN0b3J5KCkuc2xpY2UoMCwgNCk7IHRyYWNrIGVudHJ5LmdhbWVJZCkge1xuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNoZXNzaW1hbHMtaGlzdG9yeV9faXRlbVwiIChjbGljayk9XCJvcGVuSGlzdG9yeUdhbWUoZW50cnkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGVudHJ5LmdhbWVJZCB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGhpc3RvcnlPdXRjb21lTGFiZWwoZW50cnkpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPGVtPnt7IHQoJ2NoZXNzaW1hbHNIaXN0b3J5T3BlbicpIH19PC9lbT5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICAgIDwvZGV0YWlscz5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1ob21lLXNldHRpbmdzX19hY3Rpb25zXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5TZXR0aW5nc01vZGFsKClcIj5cbiAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc1NldHRpbmdzJykgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvcGVuQWJvdXRNb2RhbCgpXCI+XG4gICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNBYm91dCcpIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdENoYW5nZUdhbWUoKVwiPlxuICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ2hhbmdlR2FtZScpIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfSBAZWxzZSBpZiAoc2NyZWVuKCkgPT09ICdjaGFsbGVuZ2UnKSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2Utdmlld1wiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLWJhY2stbGluayBjaGVzc2ltYWxzLWNoYWxsZW5nZS1iYWNrXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJiYWNrVG9Ib21lKClcIj5cbiAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNCYWNrVG9NZW51JykgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZCBjaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkLS1kZWRpY2F0ZWRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1oZXJvXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkX19jb3B5XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZUV5ZWJyb3cnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVRpdGxlJykgfX08L2gyPlxuICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb2R5JykgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZF9fYWN0aW9ucyBjaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkX19hY3Rpb25zLS1oZXJvXCI+XG4gICAgICAgICAgICAgICAgQGlmIChyZXN1bWFibGVDaGFsbGVuZ2VSdW4oKTsgYXMgYWN0aXZlUnVuKSB7XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXN1bWVDaGFsbGVuZ2UoYWN0aXZlUnVuKVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUmVzdW1lJykgfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzdGFydENoYWxsZW5nZSgpXCI+XG4gICAgICAgICAgICAgICAgICB7eyByZXN1bWFibGVDaGFsbGVuZ2VSdW4oKSA/IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VTdGFydE5ldycpIDogdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVN0YXJ0JykgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1mb2N1c1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwgY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwtLWZlYXR1cmVcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtYm90LWF2YXRhclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgQGlmIChib3RQcm9maWxlQXZhdGFyU3JjKGNoYWxsZW5nZU1lbnVCb3QoKS5wcm9maWxlSWQpOyBhcyBhdmF0YXJTcmMpIHtcbiAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImF2YXRhclNyY1wiIGFsdD1cIlwiIGRyYWdnYWJsZT1cImZhbHNlXCIgLz5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB7eyBib3RQcm9maWxlQXZhdGFyKGNoYWxsZW5nZU1lbnVCb3QoKS5wcm9maWxlSWQpIH19XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgY2hhbGxlbmdlQm90U3RhdHVzTGFiZWwoY2hhbGxlbmdlTWVudUJvdCgpKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZUJvdE5hbWUoY2hhbGxlbmdlTWVudUJvdCgpKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgPHA+e3sgdChjaGFsbGVuZ2VNZW51Qm90KCkuaW50cm9LZXkpIH19PC9wPlxuICAgICAgICAgICAgICAgICAgPGVtPlxuICAgICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQm9hcmRMYWJlbCcpLnJlcGxhY2UoJ3tzaXplfScsIGNoYWxsZW5nZU1lbnVCb3QoKS5ib2FyZFNpemUgKyAneCcgKyBjaGFsbGVuZ2VNZW51Qm90KCkuYm9hcmRTaXplKSB9fVxuICAgICAgICAgICAgICAgICAgICAsIHt7IGNoYWxsZW5nZUJvdERpZmZpY3VsdHlMYWJlbChjaGFsbGVuZ2VNZW51Qm90KCkpIH19XG4gICAgICAgICAgICAgICAgICA8L2VtPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX3N0YXRzXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZUxpdmVzJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz4zPC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlTWVudVJvdW5kTGFiZWwoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQmVzdFN0cmVhaycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlU3RhdHMoKS5iZXN0V2luU3RyZWFrIHx8ICctJyB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlV2luUmF0ZScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlV2luUmF0ZUxhYmVsKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2Utcm91dGVcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVBhdGgnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJvdXRlSGludCcpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhdGhcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VQYXRoJylcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChib3Qgb2YgY2hhbGxlbmdlTGFkZGVyOyB0cmFjayBib3QuaWQpIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1jbGVhcmVkXT1cImNoYWxsZW5nZU1lbnVDbGVhcmVkUm91bmQoKSA+PSBib3Qucm91bmRcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtY3VycmVudF09XCJjaGFsbGVuZ2VNZW51Qm90KCkucm91bmQgPT09IGJvdC5yb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1maW5hbF09XCJib3Qucm91bmQgPT09IGNoYWxsZW5nZUxhZGRlci5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJjaGFsbGVuZ2VCb3ROYW1lKGJvdClcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGJvdFByb2ZpbGVBdmF0YXJTcmMoYm90LnByb2ZpbGVJZCk7IGFzIGF2YXRhclNyYykge1xuICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJhdmF0YXJTcmNcIiBhbHQ9XCJcIiBkcmFnZ2FibGU9XCJmYWxzZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHt7IGJvdFByb2ZpbGVBdmF0YXIoYm90LnByb2ZpbGVJZCkgfX1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH0gQGVsc2UgaWYgKHNjcmVlbigpID09PSAncGF0aCcpIHtcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLXBhdGgtdmlld1wiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLWJhY2stbGlua1wiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiYmFja1RvSG9tZSgpXCI+XG4gICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQmFja1RvTWVudScpIH19XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcGF0aC1oZXJvXCI+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1wYXRoLWhlcm9fX2FydFwiXG4gICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3BhdGgvcHJvZ3Jlc3MtbWFwLnBuZ1wiXG4gICAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAgIGRyYWdnYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVlvdXJQYXRoJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc1Byb2dyZXNzVGl0bGUnKSB9fTwvaDI+XG4gICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNQcm9ncmVzc0hlcm9Cb2R5JykgfX08L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXBhdGgtaGVyb19fbWVkYWxcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9wYXRoL3Ryb3BoeS5wbmdcIiBhbHQ9XCJcIiBkcmFnZ2FibGU9XCJmYWxzZVwiIC8+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IGNoYWxsZW5nZVN0YXRzKCkudG90YWxXaW5zIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8Yj57eyB0KCdjaGVzc2ltYWxzUGF0aFdpbnNTaG9ydCcpIH19PC9iPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLXBhdGgtaGlnaGxpZ2h0c1wiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hlc3NpbWFsc1BhdGhIaWdobGlnaHRzJylcIj5cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgcGF0aEhpZ2hsaWdodHMoKTsgdHJhY2sgaXRlbS50aXRsZSkge1xuICAgICAgICAgICAgICA8YXJ0aWNsZT5cbiAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiaXRlbS5pbWFnZVNyY1wiIGFsdD1cIlwiIGRyYWdnYWJsZT1cImZhbHNlXCIgLz5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGl0ZW0udGl0bGUgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBpdGVtLnZhbHVlIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyBpdGVtLmJvZHkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtcGF0aC1yaW5nc1wiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hlc3NpbWFsc01vZGVXaW5SYXRlcycpXCI+XG4gICAgICAgICAgICBAZm9yIChyaW5nIG9mIHByb2dyZXNzUmluZ3MoKTsgdHJhY2sgcmluZy5sYWJlbCkge1xuICAgICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcGF0aC1yaW5nXCIgW3N0eWxlLi0tcmluZy1wcm9ncmVzc109XCJyaW5nLnByb2dyZXNzXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgcmluZy52YWx1ZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHJpbmcubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IHJpbmcuZGV0YWlsIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1wYXRoLWdyaWRcIj5cbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1wYXRoLXBhbmVsIGNoZXNzaW1hbHMtcGF0aC1wYW5lbC0td2lkZVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1wcm9ncmVzc19faGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzUHJvZ3Jlc3NDaGFsbGVuZ2VIaW50JykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NoZXNzaW1hbHNQcm9ncmVzc01vZGVzSGludCcpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcGF0aC1zdGF0c1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCZXN0Um91bmQnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZVN0YXRzKCkuYmVzdFJvdW5kUmVhY2hlZCB8fCAnLScgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZUJlc3RTdHJlYWsnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZVN0YXRzKCkuYmVzdFdpblN0cmVhayB8fCAnLScgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJlY2VudFJ1bnMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZVN0YXRzKCkuY2hhbGxlbmdlc1BsYXllZCB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlU3RhdHVzQ29tcGxldGVkJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VTdGF0cygpLmNoYWxsZW5nZXNDb21wbGV0ZWQgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcGF0aC1wYW5lbFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1wcm9ncmVzc19faGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzUHJvZ3Jlc3NQb3dlcnMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnY2hlc3NpbWFsc1Byb2dyZXNzUG93ZXJzSGludCcpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcGF0aC1iYXJzXCI+XG4gICAgICAgICAgICAgICAgQGZvciAocG93ZXIgb2YgcHJvZ3Jlc3NQb3dlclN0YXRzKCk7IHRyYWNrIHBvd2VyLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICA8c3BhbiBbc3R5bGUuLS1iYXItcHJvZ3Jlc3NdPVwicHJvZ3Jlc3NNZXRyaWNQZXJjZW50KHBvd2VyLnZhbHVlKVwiPlxuICAgICAgICAgICAgICAgICAgICA8Yj57eyBwb3dlci5sYWJlbCB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgPGkgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHBvd2VyLnZhbHVlIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLXBhdGgtcGFuZWxcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcHJvZ3Jlc3NfX2hlYWRpbmdcIj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0FjaGlldmVtZW50cycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzUHJvZ3Jlc3NBY2hpZXZlbWVudHNIaW50JykgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1hY2hpZXZlbWVudHMgY2hlc3NpbWFscy1hY2hpZXZlbWVudHMtLXBhdGhcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChhY2hpZXZlbWVudCBvZiBjaGFsbGVuZ2VBY2hpZXZlbWVudHMoKTsgdHJhY2sgYWNoaWV2ZW1lbnQudGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuIFtjbGFzcy5pcy11bmxvY2tlZF09XCJhY2hpZXZlbWVudC51bmxvY2tlZFwiPlxuICAgICAgICAgICAgICAgICAgICA8YiBhcmlhLWhpZGRlbj1cInRydWVcIj57eyBhY2hpZXZlbWVudC5pY29uIH19PC9iPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGFjaGlldmVtZW50LnRpdGxlIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGFjaGlldmVtZW50LmJvZHkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICBAaWYgKGNoYWxsZW5nZUhpc3RvcnkoKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1wYXRoLXBhbmVsXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXByb2dyZXNzX19oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSZWNlbnRSdW5zJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLWhpc3RvcnkgY2hlc3NpbWFscy1jaGFsbGVuZ2UtaGlzdG9yeS0tcGF0aFwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKHJ1biBvZiBjaGFsbGVuZ2VIaXN0b3J5KCk7IHRyYWNrIHJ1bi5pZCkge1xuICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxiPnt7IGNoYWxsZW5nZVJ1blN0YXR1c0xhYmVsKHJ1bikgfX08L2I+XG4gICAgICAgICAgICAgICAgICAgIHt7IGNoYWxsZW5nZVJ1bkxpbmUocnVuKSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgfVxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLWdhbWVcIj5cbiAgICAgICAgICBAaWYgKCFwcm9qZWN0aW9uTW9kZSkge1xuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtYmFjay1saW5rIGNoZXNzaW1hbHMtZ2FtZS1iYWNrXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXF1ZXN0Q2hhbmdlTW9kZSgpXCI+XG4gICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNCYWNrVG9NZW51JykgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAocmVzdW1lU3BsYXNoVmlzaWJsZSgpKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1yZXN1bWUtc3BsYXNoXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXJlc3VtZS1zcGxhc2hfX2xvZ29cIlxuICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL2JyYW5kL2NoZXNzaW1hbHMtZW1ibGVtLnBuZ1wiXG4gICAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgIGRyYWdnYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjaGVzc2ltYWxzUmVzdW1lU3BsYXNoVGl0bGUnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzUmVzdW1lU3BsYXNoQm9keScpIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGFydGljbGVcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy10dXJuLWNhcmRcIlxuICAgICAgICAgICAgW2NsYXNzLmlzLWJsYWNrLXR1cm5dPVwiZ2FtZSgpLmN1cnJlbnRUdXJuID09PSAnYmxhY2snXCJcbiAgICAgICAgICAgIFtjbGFzcy5pcy1maW5pc2hlZF09XCJnYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnXCJcbiAgICAgICAgICAgIFtjbGFzcy5pcy15b3VyLXR1cm5dPVwiaXNBY3Rpb25hYmxlVHVybigpXCJcbiAgICAgICAgICAgIFtjbGFzcy5pcy13YWl0aW5nLXR1cm5dPVwiaXNXYWl0aW5nRm9yVHVybigpXCJcbiAgICAgICAgICAgIFtjbGFzcy5pcy10aW1lci1sb3ddPVwiaXNUdXJuVGltZXJMb3coKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtdHVybi1jYXJkX19jb3B5XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy10dXJuLWNhcmRfX2NoaXBcIj5cbiAgICAgICAgICAgICAgICB7eyB0dXJuU3RhdGVMYWJlbCgpIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyBnYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnID8gd2luVGl0bGUoKSA6IHR1cm5UaXRsZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDxwPnt7IHR1cm5TdGF0ZUJvZHkoKSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBcIj5cbiAgICAgICAgICAgICAgQGlmIChzaG91bGRVc2VUdXJuUGxheWVyQXZhdGFyKCkpIHtcbiAgICAgICAgICAgICAgICA8dmFsLXVzZXItYXZhdGFyIFtwcm9wc109XCJ0dXJuUGxheWVyQXZhdGFyUHJvcHMoKVwiIC8+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX2F2YXRhclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAge3sgdHVyblBsYXllckZhbGxiYWNrQXZhdGFyKCkgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX3RleHRcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyB0dXJuUGxheWVyRXllYnJvdygpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgdHVyblBsYXllck5hbWUoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIEBpZiAodHVyblBsYXllckhhbmRsZSgpKSB7XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdHVyblBsYXllckhhbmRsZSgpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgQGlmIChnYW1lKCkubW9kZSA9PT0gJ29ubGluZScgJiYgZ2FtZSgpLnN0YXR1cyA9PT0gJ3dhaXRpbmcnKSB7XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lIGNoZXNzaW1hbHMtb25saW5lLS13YWl0aW5nXCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGgyPnt7IHdhaXRpbmdUaXRsZSgpIH19PC9oMj5cbiAgICAgICAgICAgICAgICA8cD57eyB3YWl0aW5nQm9keSgpIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgQGlmIChjYW5SZXZpZXdQZW5kaW5nR3Vlc3QoKSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXBlbmRpbmctcGxheWVyXCI+XG4gICAgICAgICAgICAgICAgICBAaWYgKHBlbmRpbmdHdWVzdEF2YXRhclVybCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtdXNlci1hdmF0YXIgW3Byb3BzXT1cInBlbmRpbmdHdWVzdEF2YXRhclByb3BzKClcIiAvPlxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX2F2YXRhciBjaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fYXZhdGFyLS1pbml0aWFsc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IHBlbmRpbmdHdWVzdEluaXRpYWxzKCkgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNKb2luUmVxdWVzdFBsYXllcicpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBwZW5kaW5nR3Vlc3ROYW1lKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChwZW5kaW5nR3Vlc3RIYW5kbGUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBwZW5kaW5nR3Vlc3RIYW5kbGUoKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWdhbWUtY29kZVwiPlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzR2FtZUNvZGUnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyBnYW1lKCkuaWQgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLW9ubGluZS1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgQGlmIChjYW5SZXZpZXdQZW5kaW5nR3Vlc3QoKSkge1xuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy13b3JraW5nXT1cIm9ubGluZUFjdGlvbigpID09PSAncmVqZWN0J1wiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtYnVzeV09XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ3JlamVjdCdcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwib25saW5lTG9hZGluZygpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlamVjdE9ubGluZUd1ZXN0KClcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKG9ubGluZUFjdGlvbigpID09PSAncmVqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1idXR0b24tc3Bpbm5lclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzUmVqZWN0R3Vlc3QnKSB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy13b3JraW5nXT1cIm9ubGluZUFjdGlvbigpID09PSAnYWNjZXB0J1wiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtYnVzeV09XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ2FjY2VwdCdcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwib25saW5lTG9hZGluZygpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjY2VwdE9ubGluZUd1ZXN0KClcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKG9ubGluZUFjdGlvbigpID09PSAnYWNjZXB0Jykge1xuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1idXR0b24tc3Bpbm5lclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQWNjZXB0R3Vlc3QnKSB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNvcHlPbmxpbmVMaW5rKClcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0NvcHlMaW5rJykgfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2hhcmVPbmxpbmVMaW5rKClcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc1NoYXJlTGluaycpIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAoaXNDaGFsbGVuZ2VBY3RpdmUoKSB8fCB0dXJuU2Vjb25kc1JlbWFpbmluZygpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXN0YXR1cyBjaGVzc2ltYWxzLXN0YXR1cy0tc2ltcGxlXCI+XG4gICAgICAgICAgICAgIEBpZiAoaXNDaGFsbGVuZ2VBY3RpdmUoKSkge1xuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmQnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VSb3VuZExhYmVsKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VMaXZlcycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZUxpdmVzTGFiZWwoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKHR1cm5TZWNvbmRzUmVtYWluaW5nKCkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXN0YXR1c19fdGltZXJcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1sb3ddPVwiaXNUdXJuVGltZXJMb3coKVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLi0tdGltZXItcHJvZ3Jlc3NdPVwidHVyblRpbWVyUHJvZ3Jlc3MoKVwiXG4gICAgICAgICAgICAgICAgcm9sZT1cInRpbWVyXCJcbiAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNUdXJuVGltZXInKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0dXJuVGltZXJMYWJlbCgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKHNob3VsZFNob3dDaGFsbGVuZ2VJbkdhbWVQYW5lbCgpKSB7XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX3JpdmFsXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWJvdC1hdmF0YXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgIEBpZiAoY2hhbGxlbmdlTGl2ZUF2YXRhclNyYygpOyBhcyBhdmF0YXJTcmMpIHtcbiAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImF2YXRhclNyY1wiIGFsdD1cIlwiIGRyYWdnYWJsZT1cImZhbHNlXCIgLz5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB7eyBjaGFsbGVuZ2VMaXZlQXZhdGFyKCkgfX1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBjaGFsbGVuZ2VSb3VuZFN0YWdlTGFiZWwoKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZUxpdmVSaXZhbE5hbWUoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgPHA+e3sgY2hhbGxlbmdlTGl2ZVJpdmFsTGluZSgpIH19PC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKHNob3VsZFNob3dPbmxpbmVTdGF0dXMoKSkge1xuICAgICAgICAgICAgPGFydGljbGVcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLW9ubGluZS1zdGF0dXNcIlxuICAgICAgICAgICAgICBbY2xhc3MuaXMtZXJyb3JdPVwib25saW5lQ29ubmVjdGlvblN0YXRlKCkgPT09ICdlcnJvcicgfHwgZ2FtZSgpLnN0YXR1cyA9PT0gJ2V4cGlyZWQnXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmlzLXN5bmNpbmddPVwib25saW5lQ29ubmVjdGlvblN0YXRlKCkgPT09ICdjb25uZWN0aW5nJyB8fCBtb3ZlU3luY2luZygpXCJcbiAgICAgICAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgb25saW5lU3RhdHVzVGl0bGUoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxwPnt7IG9ubGluZVN0YXR1c0JvZHkoKSB9fTwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmICh0dXRvcmlhbE1vZGUoKSkge1xuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLXR1dG9yaWFsXCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IHR1dG9yaWFsUHJvZ3Jlc3NMYWJlbCgpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHR1dG9yaWFsVGl0bGUoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxwPnt7IHR1dG9yaWFsQm9keSgpIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJleGl0VHV0b3JpYWwoKVwiPlxuICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNUdXRvcmlhbEV4aXQnKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtYXJlbmFcIj5cbiAgICAgICAgICAgIDxzZWN0aW9uXG4gICAgICAgICAgICAgICNib2FyZEFuY2hvclxuICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtYm9hcmQtd3JhcFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5pcy1maW5pc2hlZF09XCJnYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmlzLW9yaWVudGluZ109XCJpc0JvYXJkT3JpZW50aW5nKClcIlxuICAgICAgICAgICAgICBbY2xhc3MuaXMtc3luY2luZ109XCJtb3ZlU3luY2luZygpXCJcbiAgICAgICAgICAgICAgW3N0eWxlLi0tYm9hcmQtc2l6ZV09XCJyZXZpZXdHYW1lKCkuYm9hcmRTaXplXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtYm9hcmQtZnJhbWVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtYm9hcmRcIlxuICAgICAgICAgICAgICAgICAgcm9sZT1cImdyaWRcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWJsYWNrLXZpZXddPVwicmV2aWV3R2FtZSgpLmN1cnJlbnRUdXJuID09PSAnYmxhY2snXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1wb3dlci1haW1pbmddPVwiISFzZWxlY3RlZEFuaW1hbCgpXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hlc3NpbWFsc0JvYXJkJylcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIEBmb3IgKHJvdyBvZiBkaXNwbGF5Um93cygpOyB0cmFjayByb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgQGZvciAoY29sIG9mIGRpc3BsYXlDb2xzKCk7IHRyYWNrIGNvbCkge1xuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImdyaWRjZWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1jZWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1kYXJrLWNlbGxdPVwiaXNEYXJrQ2VsbChyb3csIGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWVkZ2UtY2VsbF09XCJpc0VkZ2VDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Mud2Vhci0wXT1cImNlbGxXZWFyKHJvdywgY29sKSA9PT0gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Mud2Vhci0xXT1cImNlbGxXZWFyKHJvdywgY29sKSA9PT0gMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Mud2Vhci0yXT1cImNlbGxXZWFyKHJvdywgY29sKSA9PT0gMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Mud2Vhci0zXT1cImNlbGxXZWFyKHJvdywgY29sKSA9PT0gM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Mud2Vhci00XT1cImNlbGxXZWFyKHJvdywgY29sKSA9PT0gNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Mud2Vhci01XT1cImNlbGxXZWFyKHJvdywgY29sKSA9PT0gNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZENlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1sZWdhbF09XCJpc0xlZ2FsQ2VsbChyb3csIGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWNhcHR1cmVdPVwiaXNDYXB0dXJlQ2VsbChyb3csIGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmhhcy10aHJlYXRdPVwiaXNUaHJlYXRlbmVkQ2VsbChyb3csIGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmhhcy1jYXB0dXJlLXJlYWR5XT1cImlzQ2FwdHVyZVJlYWR5Q2VsbChyb3csIGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXdpbm5pbmddPVwiaXNXaW5uaW5nQ2VsbChyb3csIGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWxhc3RdPVwiaXNMYXN0TW92ZUNlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1tb3Zpbmctc291cmNlXT1cImlzTW92aW5nU291cmNlQ2VsbChyb3csIGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmhhcy1tb3ZlLWVmZmVjdF09XCJpc01vdmVFZmZlY3RDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaGFzLXNvdXJjZS1lZmZlY3RdPVwiaXNNb3ZlRWZmZWN0U291cmNlQ2VsbChyb3csIGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmhhcy1jYXB0dXJlLWVmZmVjdF09XCJpc01vdmVFZmZlY3RDYXB0dXJlQ2VsbChyb3csIGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1lYWdsZV09XCJpc01vdmVFZmZlY3RDZWxsKHJvdywgY29sLCAnZWFnbGUnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZWZmZWN0LWJ1bGxdPVwiaXNNb3ZlRWZmZWN0Q2VsbChyb3csIGNvbCwgJ2J1bGwnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZWZmZWN0LWthbmdhcm9vXT1cImlzTW92ZUVmZmVjdENlbGwocm93LCBjb2wsICdrYW5nYXJvbycpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3QtbGlvbl09XCJpc01vdmVFZmZlY3RDZWxsKHJvdywgY29sLCAnbGlvbicpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwcm9qZWN0aW9uTW9kZSB8fCBnYW1lKCkuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnIHx8ICFjYW5QbGF5Q3VycmVudFR1cm4oKSB8fCAhIW1vdmluZ1BpZWNlKCkgfHwgYm90VGhpbmtpbmcoKSB8fCBtb3ZlU3luY2luZygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RDZWxsKHsgcm93LCBjb2wgfSlcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1jZWxsLXRleHR1cmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3dSYW5rTGFiZWwoY29sKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtY2VsbC1jb29yZGluYXRlIGNoZXNzaW1hbHMtY2VsbC1jb29yZGluYXRlLS1yYW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcmFua0xhYmVsKHJvdykgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzaG93RmlsZUxhYmVsKHJvdykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZSBjaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZS0tZmlsZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpbGVMYWJlbChjb2wpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocGllY2VBdChyb3csIGNvbCk7IGFzIHBpZWNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtYmxhY2tdPVwicGllY2UuY29sb3IgPT09ICdibGFjaydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicGxheWVyTGFiZWwocGllY2UuY29sb3IpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fc2lkZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX2hlYWRcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19jb2xsYXJcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19uZWNrXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fYmFzZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoaXNMZWdhbENlbGwocm93LCBjb2wpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy10YXJnZXRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1jZW50ZXItbGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIEBpZiAobW92ZVRyYWlsKCk7IGFzIHRyYWlsKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXBvd2VyLXRyYWlsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtY2FwdHVyZV09XCJ0cmFpbC5jYXB0dXJlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZWZmZWN0LWVhZ2xlXT1cInRyYWlsLmFuaW1hbCA9PT0gJ2VhZ2xlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1idWxsXT1cInRyYWlsLmFuaW1hbCA9PT0gJ2J1bGwnXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZWZmZWN0LWthbmdhcm9vXT1cInRyYWlsLmFuaW1hbCA9PT0gJ2thbmdhcm9vJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1saW9uXT1cInRyYWlsLmFuaW1hbCA9PT0gJ2xpb24nXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS10cmFpbC14XT1cInRyYWlsLnhcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRyYWlsLXldPVwidHJhaWwueVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tdHJhaWwtbGVuZ3RoXT1cInRyYWlsLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tdHJhaWwtYW5nbGVdPVwidHJhaWwuYW5nbGVcIlxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBpZiAobW92aW5nUGllY2UoKTsgYXMgbW92aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLW1vdmluZy1waWVjZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tZnJvbS1yb3ddPVwibW92aW5nLmZyb21Sb3dcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLWZyb20tY29sXT1cIm1vdmluZy5mcm9tQ29sXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS10by1yb3ddPVwibW92aW5nLnRvUm93XCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS10by1jb2xdPVwibW92aW5nLnRvQ29sXCJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlXCIgW2NsYXNzLmlzLWJsYWNrXT1cIm1vdmluZy5jb2xvciA9PT0gJ2JsYWNrJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19zaWRlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19oZWFkXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19jb2xsYXJcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX25lY2tcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX2Jhc2VcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAaWYgKHBvd2VyQ2FsbG91dCgpOyBhcyBjYWxsb3V0KSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtbWluaS1nYW1lLWNhbGxvdXQgW3Byb3BzXT1cImNhbGxvdXRcIiAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGlmIChzY29yZVBvcCgpOyBhcyBwb3ApIHtcbiAgICAgICAgICAgICAgICAgICAgPHZhbC1taW5pLWdhbWUtc2NvcmUtcG9wIFtwcm9wc109XCJwb3BcIiAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGlmIChjaGFsbGVuZ2VJbnRyb1Zpc2libGUoKSAmJiBhY3RpdmVDaGFsbGVuZ2VCb3QoKTsgYXMgaW50cm9Cb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fYXZhdGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYm90UHJvZmlsZUF2YXRhclNyYyhpbnRyb0JvdC5wcm9maWxlSWQpOyBhcyBhdmF0YXJTcmMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiYXZhdGFyU3JjXCIgYWx0PVwiXCIgZHJhZ2dhYmxlPVwiZmFsc2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBib3RQcm9maWxlQXZhdGFyKGludHJvQm90LnByb2ZpbGVJZCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19jb3B5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBjaGFsbGVuZ2VSb3VuZFN0YWdlTGFiZWwoKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlQm90TmFtZShpbnRyb0JvdCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+e3sgdChpbnRyb0JvdC5pbnRyb0tleSkgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fZmFjdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNCb2FyZCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj57eyBpbnRyb0JvdC5ib2FyZFNpemUgfX14e3sgaW50cm9Cb3QuYm9hcmRTaXplIH19PC9iPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQm90RGlmZmljdWx0eScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj57eyBjaGFsbGVuZ2VCb3REaWZmaWN1bHR5TGFiZWwoaW50cm9Cb3QpIH19PC9iPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImRpc21pc3NDaGFsbGVuZ2VJbnRybygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VJbnRyb0N0YScpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAaWYgKHNob3VsZFNob3dGaW5pc2hlZE92ZXJsYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy12aWN0b3J5XT1cImlzQ3VycmVudFBsYXllclZpY3RvcnkoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWRlZmVhdF09XCJpc0N1cnJlbnRQbGF5ZXJEZWZlYXQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19yYXlzXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19yaWJib24gcmliYm9uLWFcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JpYmJvbiByaWJib24tYlwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmliYm9uIHJpYmJvbi1jXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NoZXNzaW1hbHNHYW1lT3ZlcicpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAod2lubmVyQXZhdGFyVXJsKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz1cImhhcy1hdmF0YXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cIndpbm5lckF2YXRhclVybCgpXCIgW2FsdF09XCJ3aW5uZXJEaXNwbGF5TmFtZSgpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZW0+XG4gICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZW0+e3sgd2lubmVySW5pdGlhbHMoKSB9fTwvZW0+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgd2luVGl0bGUoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgIDxiPnt7IHdpbm5lclNpZGVMYWJlbCgpIH19PC9iPlxuICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBtb3Zlc1N1bW1hcnkoKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgICAgQGlmIChvbmxpbmVSb2xlKCkgIT09ICdzcGVjdGF0b3InICYmICFwcm9qZWN0aW9uTW9kZSkge1xuICAgICAgICAgICAgICA8c2VjdGlvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1wb3dlcnNcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1sb2NrZWRdPVwiIXBvd2VyUGxheWVyKCkucG93ZXJVbmxvY2tlZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLXJlYWR5XT1cInBvd2VyUGxheWVyKCkucG93ZXJVbmxvY2tlZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLXVubG9jay1wdWxzZV09XCJwb3dlclVubG9ja1B1bHNlKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXBvd2Vyc19faGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc0FuaW1hbENhcmRzJykgfX08L2gyPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBwb3dlclBsYXllcigpLnBvd2VyVW5sb2NrZWQgPyB0KCdjaGVzc2ltYWxzVW5sb2NrZWQnKSA6IHQoJ2NoZXNzaW1hbHNMb2NrZWQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPHA+e3sgcG93ZXJQbGF5ZXIoKS5wb3dlclVubG9ja2VkID8gdCgnY2hlc3NpbWFsc0NhcmRzUmVhZHknKSA6IHQoJ2NoZXNzaW1hbHNDYXJkc0xvY2tlZCcpIH19PC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNhcmRzXCI+XG4gICAgICAgICAgICAgICAgICBAZm9yIChhbmltYWwgb2YgYW5pbWFsczsgdHJhY2sgYW5pbWFsLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZEFuaW1hbCgpID09PSBhbmltYWwudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXVzZWRdPVwicG93ZXJQbGF5ZXIoKS5jYXJkc1thbmltYWwudHlwZV0udXNlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5Vc2VQb3dlckNhcmRzKCkgfHwgcG93ZXJQbGF5ZXIoKS5jYXJkc1thbmltYWwudHlwZV0udXNlZCB8fCBpc1Bvd2VyQ2FyZEJsb2NrZWRCeVR1dG9yaWFsKGFuaW1hbC50eXBlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFuaW1hbChhbmltYWwpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1hbmltYWwtZmFjZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImFuaW1hbC5hc3NldFNyY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFthbHRdPVwiYW5pbWFsTGFiZWwoYW5pbWFsLnR5cGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ2dhYmxlPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZHJhZ3N0YXJ0KT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAocG93ZXJVc2VzTGFiZWwoYW5pbWFsLnR5cGUpOyBhcyB1c2VzTGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1wb3dlci11c2VzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+e3sgdXNlc0xhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGFuaW1hbExhYmVsKGFuaW1hbC50eXBlKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgIEBpZiAoaGFzUmVwbGF5Q29udHJvbHMoKSkge1xuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLXJlcGxheVwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc1JlcGxheVRpdGxlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyByZXBsYXlQb3NpdGlvbkxhYmVsKCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1yZXBsYXlfX2FjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5SZXZpZXdQcmV2aW91cygpXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXZpZXdQcmV2aW91c01vdmUoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc1JlcGxheVByZXZpb3VzJykgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5SZXZpZXdOZXh0KClcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJldmlld05leHRNb3ZlKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNSZXBsYXlOZXh0JykgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChnYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnKSB7XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcmVzdWx0XCIgW2NsYXNzLmlzLWNoYWxsZW5nZS1yZXN1bHRdPVwiaXNDaGFsbGVuZ2VBY3RpdmUoKVwiPlxuICAgICAgICAgICAgICBAaWYgKCFpc0NoYWxsZW5nZUFjdGl2ZSgpKSB7XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyB3aW5UaXRsZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHA+e3sgd2luQm9keSgpIH19PC9wPlxuICAgICAgICAgICAgICAgIEBpZiAoY2FuQ29udHJvbEN1cnJlbnRHYW1lKCkgJiYgKGdhbWUoKS5tb2RlICE9PSAnb25saW5lJyB8fCByZW1hdGNoU3RhdGUoKSA9PT0gJ25vbmUnKSkge1xuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcmVzdWx0X19hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoZ2FtZSgpLm1vZGUgIT09ICdvbmxpbmUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeSBjaGVzc2ltYWxzLWFjdGlvbi1idXR0b25cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlc3RhcnRHYW1lKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHQoJ3BsYXlBZ2FpbicpIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1wcmltYXJ5IGNoZXNzaW1hbHMtYWN0aW9uLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZW1hdGNoTG9hZGluZygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXF1ZXN0T25saW5lUmVtYXRjaCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyByZW1hdGNoQWN0aW9uTGFiZWwoKSB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChpc0NoYWxsZW5nZUFjdGl2ZSgpKSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5XCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy12aWN0b3J5XT1cImNoYWxsZW5nZUxhc3RXb24oKVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtZGVmZWF0XT1cImNoYWxsZW5nZUxhc3RXb24oKSA9PT0gZmFsc2VcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5X19oZXJvXCIgW2NsYXNzLmlzLWNsZWFyZWRdPVwiY2hhbGxlbmdlTGFzdFdvbigpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1ib3QtYXZhdGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChjaGFsbGVuZ2VTdW1tYXJ5QXZhdGFyU3JjKCk7IGFzIGF2YXRhclNyYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImF2YXRhclNyY1wiIGFsdD1cIlwiIGRyYWdnYWJsZT1cImZhbHNlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNoYWxsZW5nZVN1bW1hcnlBdmF0YXIoKSB9fVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBjaGFsbGVuZ2VSb3VuZFN0YWdlTGFiZWwoKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VPdXRjb21lVGl0bGUoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgIDxwPnt7IGNoYWxsZW5nZU91dGNvbWVCb2R5KCkgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9fYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGNoYWxsZW5nZVBoYXNlKCkgPT09ICdiZXR3ZWVuJykge1xuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnkgY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9fcGxheVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY29udGludWVDaGFsbGVuZ2UoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgY2hhbGxlbmdlQ29udGludWVMYWJlbCgpIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnkgY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9fcGxheVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic3RhcnRDaGFsbGVuZ2UoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVBsYXlBZ2FpbicpIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgQGlmIChjaGFsbGVuZ2VUZW5zaW9uTW9tZW50KCk7IGFzIHRlbnNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXRlbnNpb25cIiBbY2xhc3MuaXMtY3JpdGljYWxdPVwidGVuc2lvbi5jcml0aWNhbFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHRlbnNpb24udGl0bGUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7IHRlbnNpb24uYm9keSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAaWYgKGNoYWxsZW5nZVBoYXNlKCkgPT09ICdiZXR3ZWVuJyAmJiBhY3RpdmVDaGFsbGVuZ2VCb3QoKTsgYXMgbmV4dEJvdCkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwgY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwtLW5leHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtYm90LWF2YXRhclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChib3RQcm9maWxlQXZhdGFyU3JjKG5leHRCb3QucHJvZmlsZUlkKTsgYXMgYXZhdGFyU3JjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJhdmF0YXJTcmNcIiBhbHQ9XCJcIiBkcmFnZ2FibGU9XCJmYWxzZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYm90UHJvZmlsZUF2YXRhcihuZXh0Qm90LnByb2ZpbGVJZCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBjaGFsbGVuZ2VOZXh0Uml2YWxMYWJlbCgpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlQm90TmFtZShuZXh0Qm90KSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+e3sgY2hhbGxlbmdlQm90SW50cm8obmV4dEJvdCkgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZW0+e3sgY2hhbGxlbmdlTmV4dFJpdmFsSGludCgpIH19PC9lbT5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChzZXJpZXNTdW1tYXJ5KCkpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1zZXJpZXNcIj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzU2VyaWVzVGl0bGUnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHNlcmllc1N1bW1hcnkoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgQGlmIChsYXN0U2VyaWVzV2lubmVyTGFiZWwoKSkge1xuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzU2VyaWVzTGFzdFdpbm5lcicpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgbGFzdFNlcmllc1dpbm5lckxhYmVsKCkpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChyZW1hdGNoU3RhdGUoKSAhPT0gJ25vbmUnKSB7XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXNcIiBbY2xhc3MuaXMtaW5jb21pbmddPVwicmVtYXRjaFN0YXRlKCkgPT09ICdpbmNvbWluZydcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPlxuICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgcmVtYXRjaFN0YXRlKCkgPT09ICdpbmNvbWluZydcbiAgICAgICAgICAgICAgICAgICAgICA/IHQoJ2NoZXNzaW1hbHNSZW1hdGNoSW5jb21pbmdUaXRsZScpXG4gICAgICAgICAgICAgICAgICAgICAgOiB0KCdjaGVzc2ltYWxzUmVtYXRjaFJlcXVlc3RlZFRpdGxlJylcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICByZW1hdGNoU3RhdGUoKSA9PT0gJ2luY29taW5nJ1xuICAgICAgICAgICAgICAgICAgICAgID8gdCgnY2hlc3NpbWFsc1JlbWF0Y2hJbmNvbWluZ0JvZHknKVxuICAgICAgICAgICAgICAgICAgICAgIDogdCgnY2hlc3NpbWFsc1JlbWF0Y2hSZXF1ZXN0ZWRCb2R5JylcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgQGlmIChzZXJpZXNTdW1tYXJ5KCkpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1zZXJpZXMgY2hlc3NpbWFscy1zZXJpZXMtLWNvbXBhY3RcIj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzU2VyaWVzVGl0bGUnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHNlcmllc1N1bW1hcnkoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgQGlmIChsYXN0U2VyaWVzV2lubmVyTGFiZWwoKSkge1xuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzU2VyaWVzTGFzdFdpbm5lcicpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgbGFzdFNlcmllc1dpbm5lckxhYmVsKCkpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXBlbmRpbmctcGxheWVyIGNoZXNzaW1hbHMtcmVtYXRjaC1wbGF5ZXJcIj5cbiAgICAgICAgICAgICAgICBAaWYgKHJlbWF0Y2hPcHBvbmVudEF2YXRhclVybCgpKSB7XG4gICAgICAgICAgICAgICAgICA8dmFsLXVzZXItYXZhdGFyIFtwcm9wc109XCJyZW1hdGNoT3Bwb25lbnRBdmF0YXJQcm9wcygpXCIgLz5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX2F2YXRhciBjaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fYXZhdGFyLS1pbml0aWFsc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyByZW1hdGNoT3Bwb25lbnRJbml0aWFscygpIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc1JpdmFsJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyByZW1hdGNoT3Bwb25lbnROYW1lKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgIEBpZiAocmVtYXRjaE9wcG9uZW50SGFuZGxlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHJlbWF0Y2hPcHBvbmVudEhhbmRsZSgpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXJlbWF0Y2gtc3RhdHVzX19hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtd29ya2luZ109XCJyZW1hdGNoTG9hZGluZygpXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlbWF0Y2hTdGF0ZSgpID09PSAncmVxdWVzdGVkJyB8fCByZW1hdGNoTG9hZGluZygpXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXF1ZXN0T25saW5lUmVtYXRjaCgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBAaWYgKHJlbWF0Y2hMb2FkaW5nKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWJ1dHRvbi1zcGlubmVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAge3sgcmVtYXRjaEFjdGlvbkxhYmVsKCkgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtYWN0aW9uc1wiPlxuICAgICAgICAgICAgQGlmIChnYW1lKCkuc3RhdHVzICE9PSAnZmluaXNoZWQnICYmIGNhbkNvbnRyb2xDdXJyZW50R2FtZSgpKSB7XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdFJlc2lnbigpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc1Jlc2lnbicpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChnYW1lKCkubW9kZSA9PT0gJ29ubGluZScgJiYgZ2FtZSgpLmlkICYmICFwcm9qZWN0aW9uTW9kZSkge1xuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNoYXJlUHJvamVjdGlvbkxpbmsoKVwiPlxuICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNTaGFyZVByb2plY3Rpb24nKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdENoYW5nZU1vZGUoKVwiPlxuICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ2hhbmdlTW9kZScpIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdENoYW5nZUdhbWUoKVwiPlxuICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ2hhbmdlR2FtZScpIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfVxuICAgIDwvbWFpbj5cblxuICAgIDxpb24tbW9kYWxcbiAgICAgIFtpc09wZW5dPVwiaXNQbGF5T3B0aW9uc01vZGFsT3BlbigpXCJcbiAgICAgIGNzc0NsYXNzPVwidmFsLW1vZGFsLWFkYXB0aXZlIGNoZXNzaW1hbHMtdGhlbWVkLW1vZGFsIGNoZXNzaW1hbHMtcGxheS1vcHRpb25zLW1vZGFsXCJcbiAgICAgIChkaWREaXNtaXNzKT1cImhhbmRsZVBsYXlPcHRpb25zTW9kYWxEaXNtaXNzZWQoKVwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICA8dmFsLW1vZGFsLWxheW91dFxuICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1wbGF5LW1vZGFsXCJcbiAgICAgICAgICBbdGl0bGVdPVwidCgnY2hlc3NpbWFsc1NvbG9PcHRpb25zVGl0bGUnKVwiXG4gICAgICAgICAgW3N1YnRpdGxlXT1cInQoJ2NoZXNzaW1hbHNTb2xvT3B0aW9uc0JvZHknKVwiXG4gICAgICAgICAgW2Nsb3NlTGFiZWxdPVwidCgnY2xvc2UnKVwiXG4gICAgICAgICAgW2FjdGlvbnNdPVwiW11cIlxuICAgICAgICAgIFtmb290ZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgYWN0aW9uc0FsaWduPVwiZW5kXCJcbiAgICAgICAgICAoY2xvc2UpPVwiY2xvc2VQbGF5T3B0aW9uc01vZGFsKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLXBsYXktb3B0aW9uc1wiPlxuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLXBsYXktb3B0aW9uc19fZ3JvdXBcIj5cbiAgICAgICAgICAgICAgPGgzIGlkPVwiY2hlc3NpbWFscy1wbGF5LWJvYXJkLXNpemVcIj57eyB0KCdjaGVzc2ltYWxzQm9hcmRTaXplJykgfX08L2gzPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1zaXplXCIgcm9sZT1cInJhZGlvZ3JvdXBcIiBhcmlhLWxhYmVsbGVkYnk9XCJjaGVzc2ltYWxzLXBsYXktYm9hcmQtc2l6ZVwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKHNpemUgb2YgYm9hcmRTaXplczsgdHJhY2sgc2l6ZSkge1xuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cInNlbGVjdGVkQm9hcmRTaXplKCkgPT09IHNpemVcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXByZXNzZWRdPVwic2VsZWN0ZWRCb2FyZFNpemUoKSA9PT0gc2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RlZEJvYXJkU2l6ZS5zZXQoc2l6ZSlcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtb3B0aW9uLWNoZWNrXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHNpemUgfX14e3sgc2l6ZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgc2l6ZSA9PT0gNiA/IHQoJ2NoZXNzaW1hbHNTaXplU21hbGwnKSA6IHQoJ2NoZXNzaW1hbHNTaXplTGFyZ2UnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcGxheS1vcHRpb25zX19ncm91cFwiPlxuICAgICAgICAgICAgICA8aDMgaWQ9XCJjaGVzc2ltYWxzLXBsYXktbW9kZVwiPnt7IHQoJ2NoZXNzaW1hbHNNb2RlVGl0bGUnKSB9fTwvaDM+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLW1vZGVcIiByb2xlPVwicmFkaW9ncm91cFwiIGFyaWEtbGFiZWxsZWRieT1cImNoZXNzaW1hbHMtcGxheS1tb2RlXCI+XG4gICAgICAgICAgICAgICAgQGZvciAobW9kZSBvZiBsb2NhbE1vZGVzOyB0cmFjayBtb2RlKSB7XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtc2VsZWN0ZWRdPVwic2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gbW9kZVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcHJlc3NlZF09XCJzZWxlY3RlZExvY2FsTW9kZSgpID09PSBtb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdGVkTG9jYWxNb2RlLnNldChtb2RlKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1vcHRpb24tY2hlY2tcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgbG9jYWxNb2RlTGFiZWwobW9kZSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGxvY2FsTW9kZURlc2NyaXB0aW9uKG1vZGUpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICAgIEBpZiAoc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcpIHtcbiAgICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLXBsYXktb3B0aW9uc19fZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICA8aDMgaWQ9XCJjaGVzc2ltYWxzLXBsYXktZGlmZmljdWx0eVwiPnt7IHQoJ2NoZXNzaW1hbHNCb3REaWZmaWN1bHR5JykgfX08L2gzPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWRpZmZpY3VsdHlcIiByb2xlPVwicmFkaW9ncm91cFwiIGFyaWEtbGFiZWxsZWRieT1cImNoZXNzaW1hbHMtcGxheS1kaWZmaWN1bHR5XCI+XG4gICAgICAgICAgICAgICAgICBAZm9yIChkaWZmaWN1bHR5IG9mIGJvdERpZmZpY3VsdGllczsgdHJhY2sgZGlmZmljdWx0eSkge1xuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cInNlbGVjdGVkQm90RGlmZmljdWx0eSgpID09PSBkaWZmaWN1bHR5XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXByZXNzZWRdPVwic2VsZWN0ZWRCb3REaWZmaWN1bHR5KCkgPT09IGRpZmZpY3VsdHlcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RCb3REaWZmaWN1bHR5KGRpZmZpY3VsdHkpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IGJvdERpZmZpY3VsdHlMYWJlbChkaWZmaWN1bHR5KSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1wbGF5LW9wdGlvbnNfX2dyb3VwXCI+XG4gICAgICAgICAgICAgICAgPGgzIGlkPVwiY2hlc3NpbWFscy1wbGF5LWJvdFwiPlxuICAgICAgICAgICAgICAgICAge3sgc2VsZWN0ZWRCb3REaWZmaWN1bHR5KCkgPT09ICduaWdodG1hcmUnID8gdCgnY2hlc3NpbWFsc05pZ2h0bWFyZVJpdmFscycpIDogdCgnY2hlc3NpbWFsc0JvdFN0eWxlJykgfX1cbiAgICAgICAgICAgICAgICA8L2gzPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWJvdHNcIiByb2xlPVwicmFkaW9ncm91cFwiIGFyaWEtbGFiZWxsZWRieT1cImNoZXNzaW1hbHMtcGxheS1ib3RcIj5cbiAgICAgICAgICAgICAgICAgIEBpZiAoc2VsZWN0ZWRCb3REaWZmaWN1bHR5KCkgPT09ICduaWdodG1hcmUnKSB7XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKG1vZGUgb2YgbmlnaHRtYXJlUml2YWxzOyB0cmFjayBtb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtc2VsZWN0ZWRdPVwic2VsZWN0ZWROaWdodG1hcmVNb2RlKCkgPT09IG1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1wcmVzc2VkXT1cInNlbGVjdGVkTmlnaHRtYXJlTW9kZSgpID09PSBtb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3ROaWdodG1hcmVSaXZhbChtb2RlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLW9wdGlvbi1jaGVja1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1ib3QtYXZhdGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAobmlnaHRtYXJlTW9kZUFzc2V0U3JjKG1vZGUpOyBhcyBhc3NldFNyYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJhc3NldFNyY1wiIGFsdD1cIlwiIGRyYWdnYWJsZT1cImZhbHNlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbmlnaHRtYXJlTW9kZUdseXBoKG1vZGUpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgbmlnaHRtYXJlTW9kZUxhYmVsKG1vZGUpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgbmlnaHRtYXJlTW9kZURlc2NyaXB0aW9uKG1vZGUpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKHByb2ZpbGUgb2YgYXZhaWxhYmxlQm90UHJvZmlsZXMoKTsgdHJhY2sgcHJvZmlsZS5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cInNlbGVjdGVkQm90UHJvZmlsZUlkKCkgPT09IHByb2ZpbGUuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1wcmVzc2VkXT1cInNlbGVjdGVkQm90UHJvZmlsZUlkKCkgPT09IHByb2ZpbGUuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdGVkQm90UHJvZmlsZUlkLnNldChwcm9maWxlLmlkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLW9wdGlvbi1jaGVja1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1ib3QtYXZhdGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYm90UHJvZmlsZUF2YXRhclNyYyhwcm9maWxlLmlkKTsgYXMgYXZhdGFyU3JjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImF2YXRhclNyY1wiIGFsdD1cIlwiIGRyYWdnYWJsZT1cImZhbHNlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcHJvZmlsZS5hdmF0YXIgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBib3RQcm9maWxlTGFiZWwocHJvZmlsZSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBib3RQcm9maWxlRGVzY3JpcHRpb24ocHJvZmlsZSkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICA8ZGl2IG1vZGFsLWFjdGlvbnMgY2xhc3M9XCJjaGVzc2ltYWxzLXBsYXktbW9kYWxfX2FjdGlvbnNcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2xvc2VQbGF5T3B0aW9uc01vZGFsKClcIj5cbiAgICAgICAgICAgICAge3sgdCgnY2xvc2UnKSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzdGFydFNvbG9HYW1lRnJvbU9wdGlvbnMoKVwiPlxuICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzU3RhcnRTb2xvJykgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3ZhbC1tb2RhbC1sYXlvdXQ+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuXG4gICAgPGlvbi1tb2RhbFxuICAgICAgW2lzT3Blbl09XCJpc1J1bGVzTW9kYWxPcGVuKClcIlxuICAgICAgY3NzQ2xhc3M9XCJ2YWwtbW9kYWwtYWRhcHRpdmUgY2hlc3NpbWFscy10aGVtZWQtbW9kYWwgY2hlc3NpbWFscy1ydWxlcy1tb2RhbFwiXG4gICAgICBzdHlsZT1cIlxuICAgICAgICAtLWlvbi1jb2xvci1wcmltYXJ5OiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICAtLWlvbi1jb2xvci1wcmltYXJ5LXJnYjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYik7XG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnktY29udHJhc3Q6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnktc2hhZGU6ICMyODVmMzY7XG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnktdGludDogIzQzODA0ZjtcbiAgICAgICAgLS1pb24tdGV4dC1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgIFwiXG4gICAgICAoZGlkRGlzbWlzcyk9XCJjbG9zZVJ1bGVzTW9kYWwoKVwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICA8dmFsLW1vZGFsLWxheW91dFxuICAgICAgICAgIFt0aXRsZV09XCJ0KCdjaGVzc2ltYWxzUnVsZXNUaXRsZScpXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwidCgnY2hlc3NpbWFsc1J1bGVzU3VidGl0bGUnKVwiXG4gICAgICAgICAgW2Nsb3NlTGFiZWxdPVwidCgnY2xvc2UnKVwiXG4gICAgICAgICAgW2Zvb3Rlcl09XCJ0cnVlXCJcbiAgICAgICAgICAoY2xvc2UpPVwiY2xvc2VSdWxlc01vZGFsKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLXJ1bGVzXCI+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1ydWxlc19faGVyb1wiXG4gICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3R1dG9yaWFsLXNvbG8tY2xlYW4ucG5nXCJcbiAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcnVsZXNfX3NlY3Rpb24tdGl0bGVcIj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnY2hlc3NpbWFsc1J1bGVzUXVpY2tHdWlkZScpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2NoZXNzaW1hbHNSdWxlc1N1YnRpdGxlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1ydWxlc19fc3RlcHNcIj5cbiAgICAgICAgICAgICAgPGFydGljbGU+XG4gICAgICAgICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9ydWxlcy9maW5pc2guanBnXCIgYWx0PVwiXCIgbG9hZGluZz1cImxhenlcIiAvPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8aDM+e3sgdCgnY2hlc3NpbWFsc1J1bGVHb2FsVGl0bGUnKSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzUnVsZUdvYWxCb2R5JykgfX08L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgICA8YXJ0aWNsZT5cbiAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3J1bGVzL21vdmUuanBnXCIgYWx0PVwiXCIgbG9hZGluZz1cImxhenlcIiAvPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8aDM+e3sgdCgnY2hlc3NpbWFsc1J1bGVNb3ZlVGl0bGUnKSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzUnVsZU1vdmVCb2R5JykgfX08L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgICA8YXJ0aWNsZT5cbiAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3J1bGVzL2NhcHR1cmUuanBnXCIgYWx0PVwiXCIgbG9hZGluZz1cImxhenlcIiAvPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8aDM+e3sgdCgnY2hlc3NpbWFsc1J1bGVDYXB0dXJlVGl0bGUnKSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzUnVsZUNhcHR1cmVCb2R5JykgfX08L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcnVsZXNfX3Bvd2Vyc1wiPlxuICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3J1bGVzL3Bvd2Vycy5qcGdcIiBhbHQ9XCJcIiBsb2FkaW5nPVwibGF6eVwiIC8+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGgzPnt7IHQoJ2NoZXNzaW1hbHNSdWxlUG93ZXJzVGl0bGUnKSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc1J1bGVQb3dlcnNCb2R5JykgfX08L3A+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcnVsZXNfX3Bvd2VyLWxpc3RcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NoZXNzaW1hbHNSdWxlQ2FyZHNUaXRsZScpXCI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9wb3dlcnMvZWFnbGUtcG93ZXIucG5nXCIgYWx0PVwiXCIgbG9hZGluZz1cImxhenlcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2NoZXNzaW1hbHNSdWxlRWFnbGUnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc1J1bGVFYWdsZUJvZHknKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9wb3dlcnMvYnVsbC1wb3dlci5wbmdcIiBhbHQ9XCJcIiBsb2FkaW5nPVwibGF6eVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc1J1bGVCdWxsJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNSdWxlQnVsbEJvZHknKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9wb3dlcnMva2FuZ2Fyb28tcG93ZXIucG5nXCIgYWx0PVwiXCIgbG9hZGluZz1cImxhenlcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2NoZXNzaW1hbHNSdWxlS2FuZ2Fyb28nKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc1J1bGVLYW5nYXJvb0JvZHknKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9wb3dlcnMvbGlvbi1wb3dlci5wbmdcIiBhbHQ9XCJcIiBsb2FkaW5nPVwibGF6eVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc1J1bGVMaW9uJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNSdWxlTGlvbkJvZHknKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcnVsZXNfX25vdGVcIj5cbiAgICAgICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9ydWxlcy9maW5hbC1zdGVwLmpwZ1wiIGFsdD1cIlwiIGxvYWRpbmc9XCJsYXp5XCIgLz5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDM+e3sgdCgnY2hlc3NpbWFsc1J1bGVMaW1pdHNUaXRsZScpIH19PC9oMz5cbiAgICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzUnVsZUxpbWl0c0JvZHknKSB9fTwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgPGRpdiBtb2RhbC1hY3Rpb25zIGNsYXNzPVwiY2hlc3NpbWFscy1ydWxlc19fYWN0aW9uc1wiPlxuICAgICAgICAgICAgPHZhbC1idXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXJ1bGVzX19hY3Rpb24gY2hlc3NpbWFscy1ydWxlc19fYWN0aW9uLS1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgW3Byb3BzXT1cInJ1bGVzVHV0b3JpYWxBY3Rpb24oKVwiXG4gICAgICAgICAgICAgIChvbkNsaWNrKT1cInN0YXJ0VHV0b3JpYWxGcm9tUnVsZXMoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHZhbC1idXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXJ1bGVzX19hY3Rpb24gY2hlc3NpbWFscy1ydWxlc19fYWN0aW9uLS1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICBbcHJvcHNdPVwicnVsZXNDbG9zZUFjdGlvbigpXCJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiY2xvc2VSdWxlc01vZGFsKClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC92YWwtbW9kYWwtbGF5b3V0PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2lvbi1tb2RhbD5cblxuICAgIDxpb24tbW9kYWxcbiAgICAgIFtpc09wZW5dPVwiaXNTZXR0aW5nc01vZGFsT3BlbigpXCJcbiAgICAgIGNzc0NsYXNzPVwidmFsLW1vZGFsLWFkYXB0aXZlIGNoZXNzaW1hbHMtdGhlbWVkLW1vZGFsIGNoZXNzaW1hbHMtc2V0dGluZ3MtbW9kYWxcIlxuICAgICAgc3R5bGU9XCJcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeTogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS1yZ2I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpO1xuICAgICAgICAtLWlvbi1jb2xvci1wcmltYXJ5LWNvbnRyYXN0OiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICAtLWlvbi1jb2xvci1wcmltYXJ5LXNoYWRlOiAjMjg1ZjM2O1xuICAgICAgICAtLWlvbi1jb2xvci1wcmltYXJ5LXRpbnQ6ICM0MzgwNGY7XG4gICAgICBcIlxuICAgICAgKGRpZERpc21pc3MpPVwiY2xvc2VTZXR0aW5nc01vZGFsKClcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgPHZhbC1tb2RhbC1sYXlvdXRcbiAgICAgICAgICBbdGl0bGVdPVwidCgnY2hlc3NpbWFsc1NldHRpbmdzVGl0bGUnKVwiXG4gICAgICAgICAgW3N1YnRpdGxlXT1cInQoJ2NoZXNzaW1hbHNTZXR0aW5nc1N1YnRpdGxlJylcIlxuICAgICAgICAgIFtjbG9zZUxhYmVsXT1cInQoJ2Nsb3NlJylcIlxuICAgICAgICAgIFtmb290ZXJdPVwiZmFsc2VcIlxuICAgICAgICAgIChjbG9zZSk9XCJjbG9zZVNldHRpbmdzTW9kYWwoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2V0dGluZ3NcIj5cbiAgICAgICAgICAgIDxhcnRpY2xlPlxuICAgICAgICAgICAgICA8dmFsLXRvZ2dsZS1pbnB1dCBbcHJvcHNdPVwibXVzaWNUb2dnbGVQcm9wcygpXCIgLz5cbiAgICAgICAgICAgICAgPHZhbC1yYW5nZS1pbnB1dCBbcHJvcHNdPVwibXVzaWNWb2x1bWVQcm9wcygpXCIgKHJhbmdlQ2hhbmdlKT1cInNldE11c2ljVm9sdW1lKCRldmVudClcIiAvPlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgICAgPGFydGljbGU+XG4gICAgICAgICAgICAgIDx2YWwtdG9nZ2xlLWlucHV0IFtwcm9wc109XCJzZnhUb2dnbGVQcm9wcygpXCIgLz5cbiAgICAgICAgICAgICAgPHZhbC1yYW5nZS1pbnB1dCBbcHJvcHNdPVwic2Z4Vm9sdW1lUHJvcHMoKVwiIChyYW5nZUNoYW5nZSk9XCJzZXRTZnhWb2x1bWUoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICA8L3ZhbC1tb2RhbC1sYXlvdXQ+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuXG4gICAgPGlvbi1tb2RhbFxuICAgICAgW2lzT3Blbl09XCJpc0Fib3V0TW9kYWxPcGVuKClcIlxuICAgICAgY3NzQ2xhc3M9XCJ2YWwtbW9kYWwtYWRhcHRpdmUgY2hlc3NpbWFscy10aGVtZWQtbW9kYWwgY2hlc3NpbWFscy1hYm91dC1tb2RhbFwiXG4gICAgICBzdHlsZT1cIlxuICAgICAgICAtLWlvbi1jb2xvci1wcmltYXJ5OiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICAtLWlvbi1jb2xvci1wcmltYXJ5LXJnYjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYik7XG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnktY29udHJhc3Q6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnktc2hhZGU6ICMyODVmMzY7XG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnktdGludDogIzQzODA0ZjtcbiAgICAgIFwiXG4gICAgICAoZGlkRGlzbWlzcyk9XCJoYW5kbGVBYm91dE1vZGFsRGlzbWlzc2VkKClcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgPHZhbC1tb2RhbC1sYXlvdXRcbiAgICAgICAgICB0aXRsZT1cIlwiXG4gICAgICAgICAgW2Nsb3NlTGFiZWxdPVwidCgnY2xvc2UnKVwiXG4gICAgICAgICAgW2FjdGlvbnNdPVwiYWJvdXRBY3Rpb25zKClcIlxuICAgICAgICAgIGFjdGlvbnNBbGlnbj1cImVuZFwiXG4gICAgICAgICAgKGNsb3NlKT1cImNsb3NlQWJvdXRNb2RhbCgpXCJcbiAgICAgICAgICAoYWN0aW9uQ2xpY2spPVwiaGFuZGxlQWJvdXRBY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtYWJvdXRcIj5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLWFib3V0X19sb2dvXCJcbiAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvYnJhbmQvY2hlc3NpbWFscy13b3JkbWFyay5wbmdcIlxuICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICBsb2FkaW5nPVwibGF6eVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cImNoZXNzaW1hbHMtYWJvdXRfX3RoYW5rc1wiPnt7IHQoJ2NoZXNzaW1hbHNBYm91dFRoYW5rcycpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzQWJvdXRCb2R5JykgfX08L3A+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImNoZXNzaW1hbHMtYWJvdXRfX2ZlZWRiYWNrXCI+e3sgdCgnY2hlc3NpbWFsc0Fib3V0RmVlZGJhY2tQcm9tcHQnKSB9fTwvcD5cbiAgICAgICAgICAgIDxkbD5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8ZHQ+e3sgdCgnY2hlc3NpbWFsc0Fib3V0TGliVmVyc2lvbicpIH19PC9kdD5cbiAgICAgICAgICAgICAgICA8ZGQ+e3sgdmFsdGVjaENvbXBvbmVudHNWZXJzaW9uIH19PC9kZD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2RsPlxuICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgPC92YWwtbW9kYWwtbGF5b3V0PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2lvbi1tb2RhbD5cblxuICAgIDxpb24tbW9kYWxcbiAgICAgIFtpc09wZW5dPVwiISFjb25maXJtQWN0aW9uKClcIlxuICAgICAgY3NzQ2xhc3M9XCJ2YWwtbW9kYWwtYWRhcHRpdmUgY2hlc3NpbWFscy10aGVtZWQtbW9kYWwgY2hlc3NpbWFscy1jb25maXJtLW1vZGFsXCJcbiAgICAgIHN0eWxlPVwiXG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnk6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnktcmdiOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKTtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS1jb250cmFzdDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS1zaGFkZTogIzI4NWYzNjtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS10aW50OiAjNDM4MDRmO1xuICAgICAgXCJcbiAgICAgIChkaWREaXNtaXNzKT1cImhhbmRsZUNvbmZpcm1Nb2RhbERpc21pc3NlZCgpXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgIDx2YWwtbW9kYWwtbGF5b3V0XG4gICAgICAgICAgW3RpdGxlXT1cImNvbmZpcm1UaXRsZSgpXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwiY29uZmlybUJvZHkoKVwiXG4gICAgICAgICAgW2Nsb3NlTGFiZWxdPVwidCgnY2xvc2UnKVwiXG4gICAgICAgICAgW2FjdGlvbnNdPVwiY29uZmlybUFjdGlvbnMoKVwiXG4gICAgICAgICAgYWN0aW9uc0FsaWduPVwiZW5kXCJcbiAgICAgICAgICAoY2xvc2UpPVwiY2xvc2VDb25maXJtTW9kYWwoKVwiXG4gICAgICAgICAgKGFjdGlvbkNsaWNrKT1cImNvbmZpcm1QZW5kaW5nQWN0aW9uKCRldmVudC5hY3Rpb24/LnRva2VuKVwiXG4gICAgICAgIC8+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wYW5lbDogI2ZmZmZmZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXN1cmZhY2U6ICNmZmZhZjE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1lbGV2YXRlZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcyKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40Nik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zdHJvbmc6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44Nik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1nbGFzcy1oaWdobGlnaHQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41OCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1ib3JkZXI6IHJnYmEoNDYsIDU4LCA0NCwgMC4xOCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy10ZXh0OiAjMmUzYTJjO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbXV0ZWQ6ICM1MTY0M2Q7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zb2Z0OiByZ2JhKDExMSwgMTIyLCA2MCwgMC4xKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnk6ICMyZTZmM2U7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYjogNDYsIDExMSwgNjI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0OiAjZmZmYWYwO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5OiAjYThhMDZhO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5LXJnYjogMTY4LCAxNjAsIDEwNjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNreTogI2MwNmEzZDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNreS1yZ2I6IDE5MiwgMTA2LCA2MTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXN0b25lOiAjOGU5MzYyO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc3RvbmUtcmdiOiAxNDIsIDE0NywgOTg7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWxlY3RlZDogIzM3ZjI4YTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYjogNTUsIDI0MiwgMTM4O1xuICAgICAgICAtLWNoZXNzaW1hbHMtbWFnaWM6ICNmN2Q0NWE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tYWdpYy1yZ2I6IDI0NywgMjEyLCA5MDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1hZ2ljLWhvdDogI2ZmZjU2ZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1hZ2ljLWRlZXA6ICNiNzdhMTg7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXZhbC1taW5pLWdhbWVzLWZvbnQtc2l6ZSwgMXJlbSk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoYm9keS5mb250LXNtYWxsKSB7XG4gICAgICAgIC0tdmFsLW1pbmktZ2FtZXMtZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChib2R5LmZvbnQtbGFyZ2UpIHtcbiAgICAgICAgLS12YWwtbWluaS1nYW1lcy1mb250LXNpemU6IDEuMTg3NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwge1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGFuZWw6ICNmZmZmZmY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdXJmYWNlOiAjZmZmYWYxO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZWxldmF0ZWQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43Mik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDYpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc3Ryb25nOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODYpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZ2xhc3MtaGlnaGxpZ2h0OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTgpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9yZGVyOiByZ2JhKDQ2LCA1OCwgNDQsIDAuMTgpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtdGV4dDogIzJlM2EyYztcbiAgICAgICAgLS1jaGVzc2ltYWxzLW11dGVkOiAjNTE2NDNkO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc29mdDogcmdiYSgxMTEsIDEyMiwgNjAsIDAuMSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5OiAjMmU2ZjNlO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2I6IDQ2LCAxMTEsIDYyO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdDogI2ZmZmFmMDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNlY29uZGFyeTogI2E4YTA2YTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2I6IDE2OCwgMTYwLCAxMDY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1za3k6ICNjMDZhM2Q7XG4gICAgICAgIC0tY2hlc3NpbWFscy1za3ktcmdiOiAxOTIsIDEwNiwgNjE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdG9uZTogIzhlOTM2MjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXN0b25lLXJnYjogMTQyLCAxNDcsIDk4O1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2VsZWN0ZWQ6ICMzN2YyOGE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2I6IDU1LCAyNDIsIDEzODtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1hZ2ljOiAjZjdkNDVhO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbWFnaWMtcmdiOiAyNDcsIDIxMiwgOTA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tYWdpYy1ob3Q6ICNmZmY1NmY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tYWdpYy1kZWVwOiAjYjc3YTE4O1xuICAgICAgICAtLWNoZXNzaW1hbHMtd2FybmluZzogI2Y0YzU0MjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXdhcm5pbmctcmdiOiAyNDQsIDE5NywgNjY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb3ZlOiB2YXIoLS1jaGVzc2ltYWxzLXNreSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb3ZlLXJnYjogdmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNhcHR1cmU6ICMxZmNkYjM7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYjogMzEsIDIwNSwgMTc5O1xuICAgICAgICAtLWNoZXNzaW1hbHMtbGFzdDogIzhjNmI0ZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWxhc3QtcmdiOiAxNDAsIDEwNywgNzk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWxpZ2h0OiAjZjNmNGU4O1xuICAgICAgICAtLWNoZXNzaW1hbHMtY2VsbC1kYXJrOiAjN2Y5NDRkO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9hcmQtc2hhZG93OiByZ2JhKDQ2LCA1OCwgNDQsIDAuMTQpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtZmlsbDogI2ZmZmZmZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNpZGU6ICNmM2VhZGI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1saW5lOiByZ2JhKDgyLCA2NSwgNDYsIDAuMTIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtc2hhZG93OlxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMCAxcHggcmdiYSg4NCwgNjIsIDM0LCAwLjUyKSlcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAuMThyZW0gMC4xMnJlbSByZ2JhKDcyLCA1OCwgMzYsIDAuMjIpKVxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMC4zNHJlbSAwLjQycmVtIHJnYmEoNzIsIDU4LCAzNiwgMC4yMikpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stZmlsbDogIzI0MjkzNjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLXNpZGU6ICMxNzFiMjU7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1saW5lOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaGFkb3c6XG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwIDFweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzQpKVxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMC4xOHJlbSAwLjFyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKSlcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAuMzJyZW0gMC40MnJlbSByZ2JhKDAsIDAsIDAsIDAuMzYpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWdvbGQ6ICNjNzlhNDI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1nb2xkLWRhcms6ICM4YTVmMjI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1iZzogI2ZmZmRmNztcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWlubmVyLWJnOiAjZmZmZmZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYm9yZGVyOiByZ2JhKDQ2LCA1OCwgNDQsIDAuMTIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAuMTJyZW0gMC4xNnJlbSByZ2JhKDQ2LCA1OCwgNDQsIDAuMTgpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWxvY2tlZC1maWx0ZXI6IGdyYXlzY2FsZSgwLjIpIHNhdHVyYXRlKDAuNzIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtbG9ja2VkLWltZy1vcGFjaXR5OiAwLjcyO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDEuMTI1cmVtO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWF4LXdpZHRoOiBtaW4oMTAwJSwgNjByZW0pO1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcbiAgICAgICAgLmNoZXNzaW1hbHMtc2hlbGwge1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1wYW5lbDogIzE3MjExNjtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtc3VyZmFjZTogIzBmMTcwZjtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtZWxldmF0ZWQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXN0cm9uZzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtZ2xhc3MtaGlnaGxpZ2h0OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1ib3JkZXI6IHJnYmEoMjQyLCAyMzAsIDIxMywgMC4yKTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtdGV4dDogI2Y2ZjNlOTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtbXV0ZWQ6ICNjOGNmYjE7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXNvZnQ6IHJnYmEoMTExLCAxMjIsIDYwLCAwLjIyKTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeTogIzJlNmYzZTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2I6IDQ2LCAxMTEsIDYyO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0OiAjZmZmYWYwO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnk6ICNhOGEwNmE7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2I6IDE2OCwgMTYwLCAxMDY7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXNreTogI2MwNmEzZDtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtc2t5LXJnYjogMTkyLCAxMDYsIDYxO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1zdG9uZTogIzhlOTM2MjtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtc3RvbmUtcmdiOiAxNDIsIDE0NywgOTg7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtbGlnaHQ6ICNmM2Y0ZTg7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtZGFyazogIzdmOTQ0ZDtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtYm9hcmQtc2hhZG93OiByZ2JhKDAsIDAsIDAsIDAuMzQpO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1ib3JkZXI6IHJnYmEoMjQyLCAyMzAsIDIxMywgMC4yNCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdW1lLXNwbGFzaCB7XG4gICAgICAgIG9yZGVyOiAwO1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICB6LWluZGV4OiAxMDAwO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC42NXJlbTtcbiAgICAgICAgcGFkZGluZzogMS41cmVtO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDQyJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xOCksIHRyYW5zcGFyZW50IDIycmVtKSxcbiAgICAgICAgICBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCkgOTIlLCB0cmFuc3BhcmVudCk7XG4gICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigwLjlyZW0pO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bWUtc3BsYXNoX19sb2dvIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiBjbGFtcCg1LjhyZW0sIDIwdncsIDcuMnJlbSk7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXJlc3VtZS1wdWxzZSAxLjJzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMC44cmVtIDEuMnJlbSByZ2JhKHZhcigtLWlvbi1jb2xvci1kYXJrLXJnYiwgNDcsIDQyLCA1OCksIDAuMTgpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdW1lLXNwbGFzaCBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDEuNTVyZW0sIDV2dywgMi40cmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VtZS1zcGxhc2ggcCB7XG4gICAgICAgIG1heC13aWR0aDogMjRyZW07XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtcmVzdW1lLXB1bHNlIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgxKTtcbiAgICAgICAgfVxuICAgICAgICA1MCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC4yNXJlbSkgc2NhbGUoMS4wNCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXNwaW4ge1xuICAgICAgICB0byB7XG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtb25saW5lLXB1bHNlIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgICAgb3BhY2l0eTogMC43ODtcbiAgICAgICAgfVxuXG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjIyKTtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAuY2hlc3NpbWFscy1zaGVsbCxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLmNoZXNzaW1hbHMtc2hlbGwge1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGFuZWw6ICMxNzIxMTY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdXJmYWNlOiAjMGYxNzBmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZWxldmF0ZWQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc3Ryb25nOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZ2xhc3MtaGlnaGxpZ2h0OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9yZGVyOiByZ2JhKDI0NiwgMjI3LCAyMTMsIDAuMjIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtdGV4dDogI2Y2ZjNlOTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW11dGVkOiAjYzhjZmIxO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc29mdDogcmdiYSgxMTEsIDEyMiwgNjAsIDAuMjIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeTogIzJlNmYzZTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiOiA0NiwgMTExLCA2MjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3Q6ICNmZmZhZjA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnk6ICNhOGEwNmE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiOiAxNjgsIDE2MCwgMTA2O1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2t5OiAjYzA2YTNkO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2t5LXJnYjogMTkyLCAxMDYsIDYxO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc3RvbmU6ICM4ZTkzNjI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdG9uZS1yZ2I6IDE0MiwgMTQ3LCA5ODtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtbGlnaHQ6ICNlOGVhZGM7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWRhcms6ICM1ZjcwNDA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1ib2FyZC1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4zNCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jYXB0dXJlOiAjNjZmMmQ3O1xuICAgICAgICAtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2I6IDEwMiwgMjQyLCAyMTU7XG4gICAgICAgIC0tY2hlc3NpbWFscy1sYXN0OiAjY2RiZTliO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbGFzdC1yZ2I6IDIwNSwgMTkwLCAxNTU7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1maWxsOiAjZmZmYWZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtc2lkZTogI2YwZTVkNDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLWxpbmU6IHJnYmEoODIsIDY1LCA0NiwgMC4xMik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1zaGFkb3c6XG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwIDFweCByZ2JhKDg0LCA2MiwgMzQsIDAuNDgpKVxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMC4xOHJlbSAwLjEycmVtIHJnYmEoMCwgMCwgMCwgMC4yNCkpXG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwLjM0cmVtIDAuNDJyZW0gcmdiYSgwLCAwLCAwLCAwLjMpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLWZpbGw6ICMyMDI2MzM7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaWRlOiAjMTExNjIwO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stbGluZTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLXNoYWRvdzpcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAgMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNCkpXG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwLjE4cmVtIDAuMXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQpKVxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMC4zNHJlbSAwLjQ0cmVtIHJnYmEoMCwgMCwgMCwgMC41MikpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYmc6ICNmZmZkZjc7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1pbm5lci1iZzogI2ZmZmZmZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWJvcmRlcjogcmdiYSgyNDIsIDIzMCwgMjEzLCAwLjI0KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWZpbHRlcjogZHJvcC1zaGFkb3coMCAwLjEycmVtIDAuMTZyZW0gcmdiYSgwLCAwLCAwLCAwLjIyKSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1sb2NrZWQtZmlsdGVyOlxuICAgICAgICAgIGdyYXlzY2FsZSgwLjMyKVxuICAgICAgICAgIHNhdHVyYXRlKDAuNzIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtbG9ja2VkLWltZy1vcGFjaXR5OiAwLjU4O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oZXJvIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgICBqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IGNsYW1wKDEuMjVyZW0sIDV2dywgMi41cmVtKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE4JSAxMiUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45MiksIHRyYW5zcGFyZW50IDIwJSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2ZkZjhlZSAwJSwgI2ZmZmZmZiA0MCUsICNlZGYzZGYgMTAwJSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5jaGVzc2ltYWxzLWhlcm8sXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5jaGVzc2ltYWxzLWhlcm8ge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTglIDEyJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSwgdHJhbnNwYXJlbnQgMjIlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMTExYTEwIDAlLCAjMTcyMTE2IDQ4JSwgIzBmMTcwZiAxMDAlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgyNDYsIDIyNywgMjEzLCAwLjIyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGVyb19fbG9nbyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC4zNXJlbTtcbiAgICAgICAgd2lkdGg6IG1pbigyN3JlbSwgODZ2dyk7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGVyb19fbG9nbyBpbWcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICBvYmplY3QtZml0OiBjb250YWluO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oZXJvX19lbWJsZW0ge1xuICAgICAgICB3aWR0aDogbWluKDEyLjI1cmVtLCA0OHZ3KTtcbiAgICAgICAgbWFyZ2luLXRvcDogMC4ycmVtO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMC4ycmVtKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGVyb19fd29yZG1hcmsge1xuICAgICAgICB3aWR0aDogbWluKDIxcmVtLCA3NnZ3KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGVybyBwLFxuICAgICAgLmNoZXNzaW1hbHMtaG93dG8gcCxcbiAgICAgIC5jaGVzc2ltYWxzLXRpcCBwLFxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0IHAsXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjYyNXJlbTtcbiAgICAgICAgcGFkZGluZzogY2xhbXAoMXJlbSwgNHZ3LCAxLjVyZW0pO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtZ2FtZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC44NzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhbmVsIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAxLjEyNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG9tZS1hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuODc1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ob21lLWFjdGlvbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGp1c3RpZnktaXRlbXM6IHN0YXJ0O1xuICAgICAgICBnYXA6IDAuNjhyZW07XG4gICAgICAgIG1pbi1oZWlnaHQ6IDkuNnJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDEuMTVyZW0gMXJlbSAxLjA1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTglIDEwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc0KSwgdHJhbnNwYXJlbnQgMjIlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEpLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5LXJnYiksIDAuMDgpKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhvbWUtYWN0aW9uLS1wbGF5IHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjQ2KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE4JSAxMCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44MiksIHRyYW5zcGFyZW50IDIyJSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yMiksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiKSwgMC4xMikpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1tb2RlLWljb24ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDQuNDVyZW07XG4gICAgICAgIGhlaWdodDogNC40NXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1zdW4tcmdiKSwgMC4xNik7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAgMXB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTQpLFxuICAgICAgICAgIDAgMC41NXJlbSAxcmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zaGFkb3ctcmdiKSwgMC4xMik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhvbWUtYWN0aW9uIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMS4xcmVtLCAzdncsIDEuNDVyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhvbWUtYWN0aW9uIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuODhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9wdGlvbnMge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMTI1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjM1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb3B0aW9ucyBzdW1tYXJ5IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICAgIG1pbi1oZWlnaHQ6IDMuMjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNjVyZW0gMC44cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vcHRpb25zIHN1bW1hcnk6Oi13ZWJraXQtZGV0YWlscy1tYXJrZXIge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vcHRpb25zIHN1bW1hcnk6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJysnO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgd2lkdGg6IDEuOHJlbTtcbiAgICAgICAgaGVpZ2h0OiAxLjhyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXNvZnQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb3B0aW9uc1tvcGVuXSBzdW1tYXJ5OjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICctJztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb3B0aW9ucyBzdW1tYXJ5IHN0cm9uZyxcbiAgICAgIC5jaGVzc2ltYWxzLW9wdGlvbnMgc3VtbWFyeSBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9wdGlvbnMgc3VtbWFyeSBzdHJvbmcge1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vcHRpb25zIHN1bW1hcnkgc3BhbiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg0cmVtO1xuICAgICAgICBmb250LXdlaWdodDogODAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vcHRpb25zID4gOm5vdChzdW1tYXJ5KSB7XG4gICAgICAgIG1hcmdpbjogMC41cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDEuMDVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnNfX2dyb3VwIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjYycmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnNfX2dyb3VwIGgzIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtc2l6ZSBidXR0b24sXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtbW9kZSBidXR0b24sXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtbmlnaHRtYXJlIGJ1dHRvbixcbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9ucyAuY2hlc3NpbWFscy1ib3RzIGJ1dHRvbiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgbWluLWhlaWdodDogNC43NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43OHJlbSAyLjFyZW0gMC43OHJlbSAwLjlyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMDhyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAxNiUgOCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KSwgdHJhbnNwYXJlbnQgMjQlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA4KSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2IpLCAwLjA1KSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggdmFyKC0tY2hlc3NpbWFscy1nbGFzcy1oaWdobGlnaHQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtc2l6ZSBidXR0b24uaXMtc2VsZWN0ZWQsXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtbW9kZSBidXR0b24uaXMtc2VsZWN0ZWQsXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtbmlnaHRtYXJlIGJ1dHRvbi5pcy1zZWxlY3RlZCxcbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9ucyAuY2hlc3NpbWFscy1ib3RzIGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE2JSA4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc4KSwgdHJhbnNwYXJlbnQgMjUlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjIzKSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2IpLCAwLjEzKSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAgMC4xNnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE4KSxcbiAgICAgICAgICAwIDAuODVyZW0gMS44cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vcHRpb24tY2hlY2sge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMC42NXJlbTtcbiAgICAgICAgcmlnaHQ6IDAuNjVyZW07XG4gICAgICAgIHdpZHRoOiAwLjcycmVtO1xuICAgICAgICBoZWlnaHQ6IDAuNzJyZW07XG4gICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMyk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmlzLXNlbGVjdGVkID4gLmNoZXNzaW1hbHMtb3B0aW9uLWNoZWNrIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjI4cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTMpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtbmlnaHRtYXJlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuNTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9ucyAuY2hlc3NpbWFscy1uaWdodG1hcmUgYnV0dG9uIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWFyZWFzOlxuICAgICAgICAgICdpY29uIHRpdGxlJ1xuICAgICAgICAgICdpY29uIGJvZHknO1xuICAgICAgICBjb2x1bW4tZ2FwOiAwLjU1cmVtO1xuICAgICAgICByb3ctZ2FwOiAwLjEycmVtO1xuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9ucyAuY2hlc3NpbWFscy1uaWdodG1hcmUgc3Ryb25nIHtcbiAgICAgICAgZ3JpZC1hcmVhOiB0aXRsZTtcbiAgICAgICAgYWxpZ24tc2VsZjogZW5kO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtbmlnaHRtYXJlIHNtYWxsIHtcbiAgICAgICAgZ3JpZC1hcmVhOiBib2R5O1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW5pZ2h0bWFyZV9faWNvbiB7XG4gICAgICAgIGdyaWQtYXJlYTogaWNvbjtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDIuMzVyZW07XG4gICAgICAgIGhlaWdodDogMi4zNXJlbTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC44cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW5pZ2h0bWFyZV9faWNvbiBpbWcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICAtd2Via2l0LXVzZXItZHJhZzogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheS1vcHRpb25zIC5jaGVzc2ltYWxzLW5pZ2h0bWFyZSBidXR0b24uaXMtc2VsZWN0ZWQgLmNoZXNzaW1hbHMtbmlnaHRtYXJlX19pY29uIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2IpLCAwLjIpO1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9ucyAuY2hlc3NpbWFscy1kaWZmaWN1bHR5IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuNTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9ucyAuY2hlc3NpbWFscy1kaWZmaWN1bHR5IGJ1dHRvbiB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMik7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4wNiksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiKSwgMC4wNCkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHZhcigtLWNoZXNzaW1hbHMtZ2xhc3MtaGlnaGxpZ2h0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheS1vcHRpb25zIC5jaGVzc2ltYWxzLWRpZmZpY3VsdHkgYnV0dG9uLmlzLXNlbGVjdGVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAwLjE2cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTgpLFxuICAgICAgICAgIDAgMC43MnJlbSAxLjI1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtYm90cyBidXR0b24gPiAuY2hlc3NpbWFscy1ib3QtYXZhdGFyIHtcbiAgICAgICAgd2lkdGg6IDIuNDVyZW07XG4gICAgICAgIGhlaWdodDogMi40NXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC44cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheS1vcHRpb25zIC5jaGVzc2ltYWxzLWJvdHMgYnV0dG9uLmlzLXNlbGVjdGVkID4gLmNoZXNzaW1hbHMtYm90LWF2YXRhciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiKSwgMC4yKTtcbiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW1vZGFsIHtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBhbmVsOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLWNhcmQsICNmZmZmZmYpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZWxldmF0ZWQ6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtY2FyZC1zdHJvbmcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43MikpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtY2FyZCwgI2ZmZmZmZikgNzQlLCB0cmFuc3BhcmVudCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zdHJvbmc6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtY2FyZC1zdHJvbmcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44NikpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZ2xhc3MtaGlnaGxpZ2h0OiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1zdXJmYWNlLCAjZmZmZmZmKSA1OCUsIHRyYW5zcGFyZW50KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWJvcmRlcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1ib3JkZXIsIHJnYmEoNDYsIDU4LCA0NCwgMC4xOCkpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtdGV4dDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0LCAjMmUzYTJjKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW11dGVkOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLW11dGVkLCAjNTE2NDNkKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnk6ICMyZTZmM2U7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYjogNDYsIDExMSwgNjI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0OiAjZmZmYWYwO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5OiAjYThhMDZhO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5LXJnYjogMTY4LCAxNjAsIDEwNjtcbiAgICAgICAgLS1iYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICAtLWJhY2tncm91bmQtYWN0aXZhdGVkOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KSA4OCUsICMwMDApO1xuICAgICAgICAtLWJhY2tncm91bmQtaG92ZXI6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpIDkyJSwgI2ZmZik7XG4gICAgICAgIC0tYm9yZGVyLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICAtLWJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICAtLWJveC1zaGFkb3c6IDAgMXJlbSAycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjIpO1xuICAgICAgICAtLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICAtLWNvbG9yLWFjdGl2YXRlZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgLS1jb2xvci1ob3ZlcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgLS12YWwtbW9kYWwtZm9vdGVyLWdhcDogMC43cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcy1tb2RhbCB7XG4gICAgICAgIC0tY2hlc3NpbWFscy1ib3JkZXI6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtYm9yZGVyLCByZ2JhKDQ2LCA1OCwgNDQsIDAuMTgpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXRleHQ6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dCwgIzJlM2EyYyk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tdXRlZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1tdXRlZCwgIzUxNjQzZCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5OiAjMmU2ZjNlO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2I6IDQ2LCAxMTEsIDYyO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdDogI2ZmZmFmMDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNlY29uZGFyeTogI2E4YTA2YTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2I6IDE2OCwgMTYwLCAxMDY7XG4gICAgICAgIC0taW9uLWJhY2tncm91bmQtY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtc3VyZmFjZSwgI2ZmZmZmZik7XG4gICAgICAgIC0taW9uLWNhcmQtYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkLCAjZmZmZmZmKTtcbiAgICAgICAgLS1pb24tdGV4dC1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgLS12YWwtbW9kYWwtZm9vdGVyLWdhcDogMC43cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jb25maXJtLW1vZGFsIHtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWJvcmRlcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1ib3JkZXIsIHJnYmEoNDYsIDU4LCA0NCwgMC4xOCkpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtdGV4dDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0LCAjMmUzYTJjKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW11dGVkOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLW11dGVkLCAjNTE2NDNkKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnk6ICMyZTZmM2U7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYjogNDYsIDExMSwgNjI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0OiAjZmZmYWYwO1xuICAgICAgICAtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXN1cmZhY2UsICNmZmZmZmYpO1xuICAgICAgICAtLWlvbi1jYXJkLWJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtY2FyZCwgI2ZmZmZmZik7XG4gICAgICAgIC0taW9uLXRleHQtY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIC0tdmFsLW1vZGFsLWZvb3Rlci1nYXA6IDAuN3JlbTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCB7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC1zdXJmYWNlOiAjZmZmZmZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbW9kYWwtY2FyZDogI2ZmZmZmZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1vZGFsLWNhcmQtc3Ryb25nOiAjZjhmYmY1O1xuICAgICAgICAtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dDogIzJlM2EyYztcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1vZGFsLW11dGVkOiAjNWY2ZjUwO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbW9kYWwtYm9yZGVyOiByZ2JhKDQ2LCA1OCwgNDQsIDAuMTgpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbW9kYWwtc2hhZG93OiByZ2JhKDQ2LCA1OCwgNDQsIDAuMTQpO1xuICAgICAgICAtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXN1cmZhY2UpO1xuICAgICAgICAtLWlvbi1jYXJkLWJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtY2FyZCk7XG4gICAgICAgIC0taW9uLXRleHQtY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dCk7XG4gICAgICAgIC0taW9uLWNvbG9yLWRhcms6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dCk7XG4gICAgICAgIC0taW9uLWNvbG9yLWRhcmstcmdiOiA0NiwgNTgsIDQ0O1xuICAgICAgICAtLWlvbi1jb2xvci1tZWRpdW06IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtbXV0ZWQpO1xuICAgICAgICAtLWlvbi1jb2xvci1tZWRpdW0tcmdiOiA5NSwgMTExLCA4MDtcbiAgICAgICAgLS1pb24tYm9yZGVyLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLWJvcmRlcik7XG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnk6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnktcmdiOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKTtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS1jb250cmFzdDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS1zaGFkZTogIzI4NWYzNjtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS10aW50OiAjNDM4MDRmO1xuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XG4gICAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy10aGVtZWQtbW9kYWwge1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC1zdXJmYWNlOiAjMTIxODExO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkOiAjMTgyMjE3O1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkLXN0cm9uZzogIzFkMmExYztcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dDogI2Y2ZjNlOTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtbW9kYWwtbXV0ZWQ6ICNjOGNmYjE7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLW1vZGFsLWJvcmRlcjogcmdiYSgyNDYsIDIyNywgMjEzLCAwLjIpO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4zNik7XG4gICAgICAgICAgLS1pb24tY29sb3ItZGFyay1yZ2I6IDI0NiwgMjQzLCAyMzM7XG4gICAgICAgICAgLS1pb24tY29sb3ItbWVkaXVtLXJnYjogMjAwLCAyMDcsIDE3NztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCB7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC1zdXJmYWNlOiAjMTIxODExO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbW9kYWwtY2FyZDogIzE4MjIxNztcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1vZGFsLWNhcmQtc3Ryb25nOiAjMWQyYTFjO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dDogI2Y2ZjNlOTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1vZGFsLW11dGVkOiAjYzhjZmIxO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbW9kYWwtYm9yZGVyOiByZ2JhKDI0NiwgMjI3LCAyMTMsIDAuMik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4zNik7XG4gICAgICAgIC0taW9uLWNvbG9yLWRhcmstcmdiOiAyNDYsIDI0MywgMjMzO1xuICAgICAgICAtLWlvbi1jb2xvci1tZWRpdW0tcmdiOiAyMDAsIDIwNywgMTc3O1xuICAgICAgfVxuXG4gICAgICA6aG9zdCA6Om5nLWRlZXAgaW9uLW1vZGFsLmNoZXNzaW1hbHMtdGhlbWVkLW1vZGFsIHZhbC1tb2RhbC1zaGVsbCBpb24tdG9vbGJhcixcbiAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy10aGVtZWQtbW9kYWwgLnZhbC1tb2RhbC1sYXlvdXRfX2Zvb3RlciB7XG4gICAgICAgIC0tYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1zdXJmYWNlKTtcbiAgICAgICAgLS1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1zdXJmYWNlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dCk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1ib3JkZXIpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdCA6Om5nLWRlZXAgaW9uLW1vZGFsLmNoZXNzaW1hbHMtdGhlbWVkLW1vZGFsIHZhbC1tb2RhbC1zaGVsbCBpb24tY29udGVudCB7XG4gICAgICAgIC0tYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1zdXJmYWNlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy10aGVtZWQtbW9kYWwgdmFsLW1vZGFsLXNoZWxsIGlvbi1idXR0b24ge1xuICAgICAgICAtLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXRleHQpO1xuICAgICAgICAtLWNvbG9yLWhvdmVyOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXRleHQpO1xuICAgICAgICAtLWNvbG9yLWFjdGl2YXRlZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCB2YWwtZGlzcGxheSBpb24tdGV4dCxcbiAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy10aGVtZWQtbW9kYWwgdmFsLXRpdGxlIGlvbi10ZXh0IHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy10aGVtZWQtbW9kYWwgdmFsLWJ1dHRvbi52YWwtbW9kYWwtbGF5b3V0X19idXR0b24gaW9uLWJ1dHRvbixcbiAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy10aGVtZWQtbW9kYWwgdmFsLWJ1dHRvbi5jaGVzc2ltYWxzLXJ1bGVzX19hY3Rpb24gaW9uLWJ1dHRvbiB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDMuNDVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIC0tYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIC0tcGFkZGluZy1ib3R0b206IDAuODVyZW07XG4gICAgICAgIC0tcGFkZGluZy1lbmQ6IDEuMzVyZW07XG4gICAgICAgIC0tcGFkZGluZy1zdGFydDogMS4zNXJlbTtcbiAgICAgICAgLS1wYWRkaW5nLXRvcDogMC44NXJlbTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCB2YWwtYnV0dG9uLnZhbC1tb2RhbC1sYXlvdXRfX2J1dHRvbiBpb24tYnV0dG9uLmJ1dHRvbi1zb2xpZCxcbiAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy10aGVtZWQtbW9kYWwgdmFsLWJ1dHRvbi5jaGVzc2ltYWxzLXJ1bGVzX19hY3Rpb24tLXByaW1hcnkgaW9uLWJ1dHRvbiB7XG4gICAgICAgIC0tYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgLS1iYWNrZ3JvdW5kLWhvdmVyOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KSA5MiUsICNmZmYpO1xuICAgICAgICAtLWJhY2tncm91bmQtYWN0aXZhdGVkOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KSA4OCUsICMwMDApO1xuICAgICAgICAtLWJveC1zaGFkb3c6IDAgMXJlbSAycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjIpO1xuICAgICAgICAtLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICAtLWNvbG9yLWFjdGl2YXRlZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgLS1jb2xvci1ob3ZlcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCB2YWwtYnV0dG9uLnZhbC1tb2RhbC1sYXlvdXRfX2J1dHRvbiBpb24tYnV0dG9uLmJ1dHRvbi1vdXRsaW5lLFxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCB2YWwtYnV0dG9uLmNoZXNzaW1hbHMtcnVsZXNfX2FjdGlvbi0tc2Vjb25kYXJ5IGlvbi1idXR0b24ge1xuICAgICAgICAtLWJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICAtLWJvcmRlci1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1ib3JkZXIpO1xuICAgICAgICAtLWJvcmRlci13aWR0aDogMXB4O1xuICAgICAgICAtLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXRleHQpO1xuICAgICAgICAtLWNvbG9yLWFjdGl2YXRlZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0KTtcbiAgICAgICAgLS1jb2xvci1ob3ZlcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheS1tb2RhbF9fYWN0aW9ucyxcbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgICBnYXA6IDAuN3JlbTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktbW9kYWxfX2FjdGlvbnMgLmNoZXNzaW1hbHMtcHJpbWFyeSxcbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktbW9kYWxfX2FjdGlvbnMgLmNoZXNzaW1hbHMtc2Vjb25kYXJ5IHtcbiAgICAgICAgbWluLXdpZHRoOiBtaW4oMTAwJSwgMTIuNXJlbSk7XG4gICAgICAgIHBhZGRpbmc6IDAuODVyZW0gMS4zNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX2FjdGlvbiB7XG4gICAgICAgIG1pbi13aWR0aDogbWluKDEwMCUsIDEyLjVyZW0pO1xuICAgICAgfVxuXG4gICAgICA6aG9zdCA6Om5nLWRlZXAgaW9uLW1vZGFsLmNoZXNzaW1hbHMtcnVsZXMtbW9kYWwgdmFsLWJ1dHRvbi5jaGVzc2ltYWxzLXJ1bGVzX19hY3Rpb24gaW9uLWJ1dHRvbiB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDMuNDVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIC0tYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIC0tcGFkZGluZy1ib3R0b206IDAuODVyZW07XG4gICAgICAgIC0tcGFkZGluZy1lbmQ6IDEuMzVyZW07XG4gICAgICAgIC0tcGFkZGluZy1zdGFydDogMS4zNXJlbTtcbiAgICAgICAgLS1wYWRkaW5nLXRvcDogMC44NXJlbTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXJ1bGVzLW1vZGFsIHZhbC1idXR0b24uY2hlc3NpbWFscy1ydWxlc19fYWN0aW9uLS1wcmltYXJ5IGlvbi1idXR0b24ge1xuICAgICAgICAtLWJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIC0tYmFja2dyb3VuZC1ob3ZlcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSkgOTIlLCAjZmZmKTtcbiAgICAgICAgLS1iYWNrZ3JvdW5kLWFjdGl2YXRlZDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSkgODglLCAjMDAwKTtcbiAgICAgICAgLS1ib3gtc2hhZG93OiAwIDFyZW0gMnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjIyKTtcbiAgICAgICAgLS1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgLS1jb2xvci1hY3RpdmF0ZWQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICAgIC0tY29sb3ItaG92ZXI6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy1ydWxlcy1tb2RhbCB2YWwtYnV0dG9uLmNoZXNzaW1hbHMtcnVsZXNfX2FjdGlvbi0tc2Vjb25kYXJ5IGlvbi1idXR0b24ge1xuICAgICAgICAtLWJvcmRlci1jb2xvcjogcmdiYSg0NiwgNTgsIDQ0LCAwLjI0KTtcbiAgICAgICAgLS1ib3JkZXItd2lkdGg6IDFweDtcbiAgICAgICAgLS1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgLS1jb2xvci1hY3RpdmF0ZWQ6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIC0tY29sb3ItaG92ZXI6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy1jb25maXJtLW1vZGFsIHZhbC1idXR0b24udmFsLW1vZGFsLWxheW91dF9fYnV0dG9uIGlvbi1idXR0b24ge1xuICAgICAgICBtaW4taGVpZ2h0OiAzLjQ1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICAtLWJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICAtLXBhZGRpbmctYm90dG9tOiAwLjg1cmVtO1xuICAgICAgICAtLXBhZGRpbmctZW5kOiAxLjM1cmVtO1xuICAgICAgICAtLXBhZGRpbmctc3RhcnQ6IDEuMzVyZW07XG4gICAgICAgIC0tcGFkZGluZy10b3A6IDAuODVyZW07XG4gICAgICB9XG5cbiAgICAgIDpob3N0XG4gICAgICAgIDo6bmctZGVlcFxuICAgICAgICBpb24tbW9kYWwuY2hlc3NpbWFscy1jb25maXJtLW1vZGFsXG4gICAgICAgIHZhbC1idXR0b24udmFsLW1vZGFsLWxheW91dF9fYnV0dG9uXG4gICAgICAgIGlvbi1idXR0b25bZGF0YS10ZXN0aWQ9J2NvbmZpcm0nXSB7XG4gICAgICAgIC0tYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgLS1iYWNrZ3JvdW5kLWhvdmVyOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KSA5MiUsICNmZmYpO1xuICAgICAgICAtLWJhY2tncm91bmQtYWN0aXZhdGVkOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KSA4OCUsICMwMDApO1xuICAgICAgICAtLWJveC1zaGFkb3c6IDAgMXJlbSAycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjIpO1xuICAgICAgICAtLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICAtLWNvbG9yLWFjdGl2YXRlZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgLS1jb2xvci1ob3ZlcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgIH1cblxuICAgICAgOmhvc3RcbiAgICAgICAgOjpuZy1kZWVwXG4gICAgICAgIGlvbi1tb2RhbC5jaGVzc2ltYWxzLWNvbmZpcm0tbW9kYWxcbiAgICAgICAgdmFsLWJ1dHRvbi52YWwtbW9kYWwtbGF5b3V0X19idXR0b25cbiAgICAgICAgaW9uLWJ1dHRvbltkYXRhLXRlc3RpZD0nY2FuY2VsJ10ge1xuICAgICAgICAtLWJvcmRlci1jb2xvcjogcmdiYSg0NiwgNTgsIDQ0LCAwLjI0KTtcbiAgICAgICAgLS1ib3JkZXItd2lkdGg6IDFweDtcbiAgICAgICAgLS1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgLS1jb2xvci1hY3RpdmF0ZWQ6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIC0tY29sb3ItaG92ZXI6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC44NzVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4zNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4wOCksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLS13YWl0aW5nIHtcbiAgICAgICAgb3JkZXI6IDI7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4zNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZSBoMixcbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZSBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUgaDIge1xuICAgICAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lIHAge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fY3JlYXRlLFxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lX19qb2luIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmVfX2NyZWF0ZSBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fam9pbiB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwLjg1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmVfX2pvaW4gPiBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fZXJyb3Ige1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjg3NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43cmVtIDAuOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjEyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIsICNlYjQ0NWEpICFpbXBvcnRhbnQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fbG9hZGluZyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC42NXJlbSAwLjg1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA4KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lX19sb2FkaW5nIHNwYW4ge1xuICAgICAgICB3aWR0aDogMXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxcmVtO1xuICAgICAgICBib3JkZXI6IDAuMTVyZW0gc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yNCk7XG4gICAgICAgIGJvcmRlci10b3AtY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtc3BpbiAwLjc1cyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1jb2RlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjRyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1jb2RlIGlucHV0IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDMuM3JlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMCAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWdhbWUtY29kZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4ycmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjg1cmVtIDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWdhbWUtY29kZSBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtZ2FtZS1jb2RlIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMS4zNXJlbSwgNnZ3LCAycmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLWFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3Rvcnkge1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3RvcnlfX2hlYWRpbmcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19saXN0IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3RvcnlfX2l0ZW0ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43cmVtIDAuOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19pdGVtIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMXJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19pdGVtIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3RvcnlfX2l0ZW0gc21hbGwge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3RvcnlfX2l0ZW0gZW0ge1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NnJlbTtcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ob21lLXNldHRpbmdzIHtcbiAgICAgICAgZ2FwOiAwLjhyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhvbWUtc2V0dGluZ3NfX2FjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDlyZW0sIDFmcikpO1xuICAgICAgICBnYXA6IDAuNjI1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wZW5kaW5nLXBsYXllciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC43cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjIyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGVuZGluZy1wbGF5ZXIgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjFyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGVuZGluZy1wbGF5ZXIgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDdlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGVuZGluZy1wbGF5ZXIgc3Ryb25nIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgZm9udC1zaXplOiAxLjA1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkIHtcbiAgICAgICAgb3JkZXI6IDE7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgZ2FwOiAwLjYyNXJlbTtcbiAgICAgICAgbWluLWhlaWdodDogMy43NXJlbTtcbiAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjU1cmVtIDAuNjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAxNSUgMTglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzQpLCB0cmFuc3BhcmVudCAxOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMiksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiKSwgMC4xKSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZC5pcy1ibGFjay10dXJuIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci1kYXJrLXJnYiwgNDcsIDQyLCA1OCksIDAuMjgpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTUlIDE4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKSwgdHJhbnNwYXJlbnQgMTglKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWlvbi1jb2xvci1kYXJrLXJnYiwgNDcsIDQyLCA1OCksIDAuMTQpLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkLmlzLWZpbmlzaGVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLXJnYiwgNDUsIDIxMSwgMTExKSwgMC40Mik7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAxNSUgMTglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzUpLCB0cmFuc3BhcmVudCAxOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjE4KSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMikpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQuaXMtZmluaXNoZWQgLmNoZXNzaW1hbHMtdHVybi1jYXJkX19jaGlwIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLCAjMmRkMzZmKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkLmlzLXlvdXItdHVybiB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC40OCk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAgMC4xMnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKSxcbiAgICAgICAgICAwIDAuOTVyZW0gMnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkLmlzLXlvdXItdHVybiAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NoaXAge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMC4zMnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE0KTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXR1cm4tcHVsc2UgMS40NXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZC5pcy10aW1lci1sb3cge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC41KTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAwLjEycmVtIHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC4xMiksXG4gICAgICAgICAgMCAwLjk1cmVtIDJyZW0gcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjEyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkLmlzLXRpbWVyLWxvdyAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NoaXAge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjZWI0NDVhKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXItY29udHJhc3QsICNmZmZmZmYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQuaXMtd2FpdGluZy10dXJuIC5jaGVzc2ltYWxzLXR1cm4tY2FyZF9fY2hpcCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXR1cm4tcHVsc2Uge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApIHNjYWxlKDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCkgc2NhbGUoMS4wMzUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZF9fY29weSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgZ2FwOiAwLjE1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NoaXAge1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IHN0YXJ0O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC4ycmVtIDAuNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBmb250LXNpemU6IDAuNjJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCBzdHJvbmcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDFyZW0sIDMuNXZ3LCAxLjI1cmVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIG92ZXJmbG93LXdyYXA6IGFueXdoZXJlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQgcCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjIyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXAge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjQ1cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDEwcmVtO1xuICAgICAgICBtYXgtd2lkdGg6IG1pbigxN3JlbSwgNDIlKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC4zcmVtIDAuNTVyZW0gMC4zcmVtIDAuMzVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLWxpZ2h0LXJnYiwgMjQ0LCAyNDUsIDI0OCksIDAuNzIpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXAge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXAgdmFsLXVzZXItYXZhdGFyIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICBsaW5lLWhlaWdodDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX19hdmF0YXIge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBmbGV4OiAwIDAgMi4yNXJlbTtcbiAgICAgICAgd2lkdGg6IDIuMjVyZW07XG4gICAgICAgIGhlaWdodDogMi4yNXJlbTtcbiAgICAgICAgYXNwZWN0LXJhdGlvOiAxIC8gMTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX19hdmF0YXItLWluaXRpYWxzIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICA6aG9zdCA6Om5nLWRlZXAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwIC5jaGVzc2ltYWxzLXR1cm4tYXZhdGFyIHtcbiAgICAgICAgd2lkdGg6IDIuMjVyZW07XG4gICAgICAgIG1pbi13aWR0aDogMi4yNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAyLjI1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fdGV4dCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgZ2FwOiAwLjA1cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX3RleHQgc3BhbiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjU4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX3RleHQgc3Ryb25nIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgZm9udC1zaXplOiAwLjgycmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wODtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fdGV4dCBzbWFsbCB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY2cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYXJlbmEge1xuICAgICAgICBvcmRlcjogNDtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjg3NXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ob3d0byxcbiAgICAgIC5jaGVzc2ltYWxzLXRpcCxcbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdCxcbiAgICAgIC5jaGVzc2ltYWxzLXJlcGxheSxcbiAgICAgIC5jaGVzc2ltYWxzLXJlbWF0Y2gtc3RhdHVzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjM3NXJlbTtcbiAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4yNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG93dG8ge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtc29mdCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ob3d0byBwIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ob3d0b19fYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgZ2FwOiAwLjYyNXJlbTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5jaGVzc2ltYWxzLWhvd3RvLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuY2hlc3NpbWFscy1ob3d0byB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgyNDYsIDIyNywgMjEzLCAwLjIpO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjMTcyMTE2O1xuICAgICAgICBjb2xvcjogI2Y2ZjNlOTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5jaGVzc2ltYWxzLWhvd3RvIHAsXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5jaGVzc2ltYWxzLWhvd3RvIHAge1xuICAgICAgICBjb2xvcjogI2M4Y2ZiMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0IHtcbiAgICAgICAgb3JkZXI6IDU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdF9fYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgZ2FwOiAwLjYyNXJlbTtcbiAgICAgICAgbWFyZ2luLXRvcDogMC40NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWN0aW9uLWJ1dHRvbiB7XG4gICAgICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgICAgICBtaW4td2lkdGg6IG1pbigxMDAlLCAxMi41cmVtKTtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBwYWRkaW5nOiAwLjg1cmVtIDEuMzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdC5pcy1jaGFsbGVuZ2UtcmVzdWx0IHtcbiAgICAgICAgZ2FwOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0X19zdGF0cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgIG1hcmdpbi10b3A6IDAuMzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdF9fc3RhdHMgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xNXJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE2KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC44NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC41OHJlbSAwLjZyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4wOCksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0X19zdGF0cyBzbWFsbCB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0X19zdGF0cyBiIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTI7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHRfX2RldGFpbCB7XG4gICAgICAgIG1hcmdpbjogMC4ycmVtIDAgMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90LXJlcG9ydCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgICBtYXJnaW4tdG9wOiAwLjM1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE4KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43OHJlbSAwLjg1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMSksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90LXJlcG9ydCA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMi41cmVtO1xuICAgICAgICBoZWlnaHQ6IDIuNXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC44NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2IpLCAwLjE0KTtcbiAgICAgICAgZm9udC1zaXplOiAxLjQ1cmVtO1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdC1yZXBvcnQgPiBzcGFuIGltZyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdC1yZXBvcnQgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjEycmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdC1yZXBvcnQgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90LXJlcG9ydCBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90LXJlcG9ydCBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1zdGF0dXMge1xuICAgICAgICBvcmRlcjogMztcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxLjM1cmVtIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuODVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuODVyZW0gMC45NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA5KSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUtc3RhdHVzID4gc3BhbiB7XG4gICAgICAgIGp1c3RpZnktc2VsZjogY2VudGVyO1xuICAgICAgICB3aWR0aDogMC43MnJlbTtcbiAgICAgICAgaGVpZ2h0OiAwLjcycmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMC4zOHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLXN0YXR1cy5pcy1zeW5jaW5nID4gc3BhbiB7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1vbmxpbmUtcHVsc2UgOTAwbXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1zdGF0dXMuaXMtZXJyb3Ige1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC4yOCk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjEpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1zdGF0dXMuaXMtZXJyb3IgPiBzcGFuIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2ViNDQ1YSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMzhyZW0gcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjEyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLXN0YXR1cyBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMTJyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLXN0YXR1cyBzdHJvbmcge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLXN0YXR1cyBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDc4MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNlcmllcyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xOHJlbTtcbiAgICAgICAgbWFyZ2luLXRvcDogMC4zNXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xOCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNzhyZW0gMC44NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5LXJnYiksIDAuMTIpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNlcmllcy0tY29tcGFjdCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNlcmllcyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjcycmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zZXJpZXMgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNlcmllcyBzcGFuIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuODRyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MjA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI4O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXBsYXkge1xuICAgICAgICBvcmRlcjogNTtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKSBhdXRvO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMik7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xKSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXBsYXkgPiBkaXY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMTVyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5IHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5IHNwYW4ge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlcGxheV9fYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlcGxheV9fYWN0aW9ucyAuY2hlc3NpbWFscy1zZWNvbmRhcnkge1xuICAgICAgICBtaW4taGVpZ2h0OiAyLjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAgMC44cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXRvcmlhbCB7XG4gICAgICAgIG9yZGVyOiAzO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpIGF1dG87XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMyksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHV0b3JpYWwgPiBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMThyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHV0b3JpYWwgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXRvcmlhbCBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1dG9yaWFsIHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzgwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4zNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHV0b3JpYWwgLmNoZXNzaW1hbHMtc2Vjb25kYXJ5IHtcbiAgICAgICAgbWluLWhlaWdodDogMi41cmVtO1xuICAgICAgICBwYWRkaW5nOiAwIDAuODVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlbWF0Y2gtc3RhdHVzIHtcbiAgICAgICAgb3JkZXI6IDU7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjIpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlbWF0Y2gtc3RhdHVzLmlzLWluY29taW5nIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLXJnYiwgNDUsIDIxMSwgMTExKSwgMC4zOCk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1pb24tY29sb3Itc3VjY2Vzcy1yZ2IsIDQ1LCAyMTEsIDExMSksIDAuMTQpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlbWF0Y2gtc3RhdHVzIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXMgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuODhyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXBsYXllciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLmNoZXNzaW1hbHMtcmVtYXRjaC1wbGF5ZXIsXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5jaGVzc2ltYWxzLXJlbWF0Y2gtcGxheWVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXNfX2FjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1c19fYWN0aW9ucyAuY2hlc3NpbWFscy1zZWNvbmRhcnkge1xuICAgICAgICBtaW4taGVpZ2h0OiAyLjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAgMC45NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG93dG8gaDIsXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMgaDIge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4xNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWN0YSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDEuMmZyKSBtaW5tYXgoMTByZW0sIGF1dG8pIGF1dG87XG4gICAgICAgIGdhcDogMC42NXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjI0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4yNXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMSksIHRyYW5zcGFyZW50IDYyJSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMC43cmVtIDEuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2hhZG93LXJnYiksIDAuMDgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19jb3B5IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjE4cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jdGFfX2NvcHkgc3BhbixcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jdGFfX3JpdmFsIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtc2t5KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19jb3B5IGgyIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjA1cmVtLCAyLjV2dywgMS4zMnJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19jb3B5IHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjgycmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzgwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4zO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19tZXRhIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDMuOHJlbSwgMWZyKSk7XG4gICAgICAgIGdhcDogMC40cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19tZXRhIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMDhyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjk1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjQycmVtIDAuNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWN0YV9fbWV0YSBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjYycmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19tZXRhIHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjQ1cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDEwcmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19yaXZhbCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNDVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19yaXZhbCA+IC5jaGVzc2ltYWxzLWJvdC1hdmF0YXIge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMi4xNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAyLjE1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjlyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xNCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4xMnJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWN0YV9fcml2YWwgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjA4cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jdGFfX3JpdmFsIHN0cm9uZyB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtdmlldyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC44NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYmFjay1saW5rIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBzdGFydDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwLjQ1cmVtIDAuNzJyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1iYWNrIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC4xNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuOXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjM0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4zNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE4KSwgdHJhbnNwYXJlbnQgNTQlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCB2YXIoLS1jaGVzc2ltYWxzLWdsYXNzLWhpZ2hsaWdodCksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxcmVtIDIuMnJlbSByZ2JhKDc5LCA1OCwgMzUsIDAuMTIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZC0tZGVkaWNhdGVkIHtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWhlcm8sXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtZm9jdXMsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc2Vjb25kYXJ5IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMS4xZnIpIG1pbm1heCgxNHJlbSwgMC45ZnIpO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZF9fY29weSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4yOHJlbTtcbiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZF9fY29weSBzcGFuLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnkgc21hbGwsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcm91dGUgc21hbGwsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcGFuZWxfX2hlYWRpbmcgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1za3kpO1xuICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkIGgyIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDEuMjVyZW0sIDMuNXZ3LCAxLjlyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmQgcCxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5IHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzgwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4zNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX3N0YXRzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBnYXA6IDAuN3JlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xOCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMTI1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjdyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwtLWZlYXR1cmUge1xuICAgICAgICBtaW4taGVpZ2h0OiA4cmVtO1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4yOCk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE0KSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwgPiAuY2hlc3NpbWFscy1ib3QtYXZhdGFyIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDNyZW07XG4gICAgICAgIGhlaWdodDogM3JlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGZvbnQtc2l6ZTogMS40NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsIGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xNHJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwgc21hbGwsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaGlzdG9yeSBzbWFsbCxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5X19zdGF0cyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbCBwIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjg0cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwgZW0ge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42OHJlbTtcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC0tbmV4dCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMDgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZF9fc3RhdHMgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xNnJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNTVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZF9fc3RhdHMgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX3N0YXRzIHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkX19hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkX19hY3Rpb25zLS1oZXJvIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvdXRlLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhbmVsIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4xMjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3V0ZSA+IGRpdjpmaXJzdC1jaGlsZCxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1wYW5lbF9faGVhZGluZyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgZ2FwOiAwLjRyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcm91dGUgPiBkaXY6Zmlyc3QtY2hpbGQgPiBzcGFuIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzZyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1wYXRoIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgICAgIGdhcDogMC40cmVtO1xuICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgICBwYWRkaW5nLWJsb2NrOiAwLjFyZW07XG4gICAgICAgIHNjcm9sbGJhci13aWR0aDogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhdGg6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhdGggc3BhbiB7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMi4xNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAyLjE1cmVtO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE4KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc3Ryb25nKTtcbiAgICAgICAgZm9udC1zaXplOiAxLjA4cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcGF0aCBpbWcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICAtd2Via2l0LXVzZXItZHJhZzogbm9uZTtcbiAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhdGggc3Bhbi5pcy1jbGVhcmVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLXJnYiwgNDUsIDIxMSwgMTExKSwgMC4zNCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjE2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhdGggc3Bhbi5pcy1jdXJyZW50IHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuNDgpO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTgpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjEyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhdGggc3Bhbi5pcy1maW5hbCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1pb24tY29sb3Itd2FybmluZy1yZ2IsIDI1NSwgMTk2LCA5KSwgMC40OCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3N0ZXIge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC40cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcm9zdGVyIGFydGljbGUge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBnYXA6IDAuNHJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC40OHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0KTtcbiAgICAgICAgb3BhY2l0eTogMC43ODtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBhcnRpY2xlLmlzLWNsZWFyZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjI2KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLXJnYiwgNDUsIDIxMSwgMTExKSwgMC4xKSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdCk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3N0ZXIgYXJ0aWNsZS5pcy1jdXJyZW50IHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMzgpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xNiksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBhcnRpY2xlLmlzLWZpbmFsIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci13YXJuaW5nLXJnYiwgMjU1LCAxOTYsIDkpLCAwLjM0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBhcnRpY2xlID4gLmNoZXNzaW1hbHMtYm90LWF2YXRhciB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAycmVtO1xuICAgICAgICBoZWlnaHQ6IDJyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuODVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBhcnRpY2xlLmlzLWN1cnJlbnQgPiAuY2hlc3NpbWFscy1ib3QtYXZhdGFyIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE4KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMDhyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBzbWFsbCxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3N0ZXIgZW0ge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42MnJlbTtcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3N0ZXIgc3Ryb25nIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA4O1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBwIHtcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MjA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE4O1xuICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcik7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtbW9kZS13aW5yYXRlcyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcik7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtbW9kZS13aW5yYXRlcyA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuNDhyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4wOCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUtd2lucmF0ZXMgc21hbGwge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUtd2lucmF0ZXMgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUtd2lucmF0ZXMgZW0ge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42OHJlbTtcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICBmb250LXdlaWdodDogODUwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWNoaWV2ZW1lbnRzID4gc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgZ2FwOiAwLjQ1cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdCk7XG4gICAgICAgIG9wYWNpdHk6IDAuNjg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cyA+IHNwYW4uaXMtdW5sb2NrZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4zKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTQpLCB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkKSk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cyBiIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDEuOXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxLjlyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cyAuaXMtdW5sb2NrZWQgYiB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtc2t5KTtcbiAgICAgICAgY29sb3I6ICNmZmZhZjA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cyBzcGFuIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMDZyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWNoaWV2ZW1lbnRzIHN0cm9uZyxcbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cyBzbWFsbCB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hY2hpZXZlbWVudHMgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY3cmVtO1xuICAgICAgICBmb250LXdlaWdodDogODUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zZWNvbmRhcnktLWNvbXBhY3Qge1xuICAgICAgICBtaW4taGVpZ2h0OiAyLjQ1cmVtO1xuICAgICAgICBwYWRkaW5nLWJsb2NrOiAwLjQ1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWN0YSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcikgYXV0bztcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMjYpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjI1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjc1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xMyksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zdW4tcmdiKSwgMC4wOCkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtY3RhIGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xOHJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWN0YSBzcGFuLFxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oZXJvIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtc2t5KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWN0YSBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWN0YV9fYWN0aW9uIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBlbmQ7XG4gICAgICAgIHdpZHRoOiBtaW4oMTJyZW0sIDEwMCUpO1xuICAgICAgICBtaW4td2lkdGg6IDkuNXJlbTtcbiAgICAgICAgcGFkZGluZy1pbmxpbmU6IDEuMXJlbTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC12aWV3IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjg1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWhlcm8ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gbWlubWF4KDAsIDFmcikgYXV0bztcbiAgICAgICAgZ2FwOiAwLjhyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4yNik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuODVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA4OCUgMTAlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc3VuLXJnYiksIDAuMTgpLCB0cmFuc3BhcmVudCAzNCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xNCksIHRyYW5zcGFyZW50IDYyJSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oZXJvX19hcnQge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IGNsYW1wKDUuMnJlbSwgMTV2dywgNy41cmVtKTtcbiAgICAgICAgaGVpZ2h0OiBjbGFtcCg1LjJyZW0sIDE1dncsIDcuNXJlbSk7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAgLXdlYmtpdC11c2VyLWRyYWc6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtaGVybyA+IGRpdjpub3QoLmNoZXNzaW1hbHMtcGF0aC1oZXJvX19tZWRhbCkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMjVyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oZXJvIGgyIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjdyZW0sIDR2dywgMi4zNXJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oZXJvIHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogODIwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4zNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oZXJvX19tZWRhbCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiA2LjVyZW07XG4gICAgICAgIG1pbi1oZWlnaHQ6IDYuNXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDE4MGRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXN1bi1yZ2IpLCAwLjIpLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTEpKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxNnB4IDI4cHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNoYWRvdy1yZ2IpLCAwLjEyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oZXJvX19tZWRhbCBpbWcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDNyZW07XG4gICAgICAgIGhlaWdodDogM3JlbTtcbiAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICAtd2Via2l0LXVzZXItZHJhZzogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oZXJvX19tZWRhbCBzcGFuIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS42NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWhlcm9fX21lZGFsIGIge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oaWdobGlnaHRzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heChtaW4oMTAwJSwgMTVyZW0pLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjY1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWhpZ2hsaWdodHMgYXJ0aWNsZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgZ2FwOiAwLjY1cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDcuNXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMyk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuN3JlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDEyJSA0JSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXN1bi1yZ2IpLCAwLjE4KSwgdHJhbnNwYXJlbnQgNDIlKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWhpZ2hsaWdodHMgaW1nIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiA0LjI1cmVtO1xuICAgICAgICBoZWlnaHQ6IDQuMjVyZW07XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAgLXdlYmtpdC11c2VyLWRyYWc6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtaGlnaGxpZ2h0cyBhcnRpY2xlIGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgZ2FwOiAwLjEycmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWhpZ2hsaWdodHMgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1za3kpO1xuICAgICAgICBmb250LXNpemU6IDAuNjZyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtaGlnaGxpZ2h0cyBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxLjA4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDY7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtaGlnaGxpZ2h0cyBzcGFuIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzZyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MjA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLXJpbmdzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heChtaW4oMTAwJSwgMTVyZW0pLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjZyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtcmluZyxcbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtcGFuZWwsXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLXN0YXRzIHNwYW4sXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWJhcnMgc3BhbiB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTMpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLXJpbmcge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWFyZWFzOlxuICAgICAgICAgICdyaW5nIGxhYmVsJ1xuICAgICAgICAgICdyaW5nIGRldGFpbCc7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAwLjY1cmVtO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLXJpbmcgPiBkaXYge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGdyaWQtYXJlYTogcmluZztcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDMuMzVyZW07XG4gICAgICAgIGhlaWdodDogMy4zNXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IGNvbmljLWdyYWRpZW50KHZhcigtLWNoZXNzaW1hbHMtc2t5KSB2YXIoLS1yaW5nLXByb2dyZXNzKSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMikgMCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtcmluZyA+IGRpdjo6YWZ0ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwLjM0cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkKTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtcmluZyBzdHJvbmcge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLXJpbmcgc3BhbixcbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtYmFycyBiIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1yaW5nIHNwYW4ge1xuICAgICAgICBncmlkLWFyZWE6IGxhYmVsO1xuICAgICAgICBhbGlnbi1zZWxmOiBlbmQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtcmluZyBzbWFsbCB7XG4gICAgICAgIGdyaWQtYXJlYTogZGV0YWlsO1xuICAgICAgICBhbGlnbi1zZWxmOiBzdGFydDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLXJpbmcgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtZ3JpZCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDEuMDVmcikgbWlubWF4KDAsIDAuOTVmcik7XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1wYW5lbCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC42NXJlbTtcbiAgICAgICAgYWxpZ24tY29udGVudDogc3RhcnQ7XG4gICAgICAgIHBhZGRpbmc6IDAuNzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtcGFuZWwtLXdpZGUge1xuICAgICAgICBncmlkLWNvbHVtbjogMSAvIC0xO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLXN0YXRzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heChtaW4oMTAwJSwgMTAuNXJlbSksIDFmcikpO1xuICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1zdGF0cyBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjA4cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjZyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtc3RhdHMgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1zdGF0cyBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxLjI1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1iYXJzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjQ1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWJhcnMgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDAuOWZyKSBtaW5tYXgoM3JlbSwgMWZyKSBhdXRvO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDAuNDhyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtYmFycyBpIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGhlaWdodDogMC40OHJlbTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTEpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWJhcnMgaTo6YmVmb3JlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiB2YXIoLS1iYXItcHJvZ3Jlc3MpO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdmFyKC0tY2hlc3NpbWFscy1za3kpLCB2YXIoLS1jaGVzc2ltYWxzLXN1bikpO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1iYXJzIHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDAuODZyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hY2hpZXZlbWVudHMtLXBhdGgge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWhpc3RvcnktLXBhdGgge1xuICAgICAgICBib3JkZXItdG9wOiAwO1xuICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcHJvZ3Jlc3NfX2hlYWRpbmcgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1za3kpO1xuICAgICAgICBmb250LXNpemU6IDAuNjhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXByb2dyZXNzX19oZWFkaW5nIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6IDAuMzVyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcm9ncmVzc19faGVhZGluZyBzcGFuIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzZyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MjA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1oaXN0b3J5IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjM1cmVtO1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwLjJyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1oaXN0b3J5IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogMC4zNXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuODJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MjA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1oaXN0b3J5IGIge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjZyZW07XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5LmlzLXZpY3RvcnksXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeS5pcy1kZWZlYXQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX2hlcm8sXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwtdm9pY2Uge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gbWlubWF4KDAsIDFmcik7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC43cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9faGVybyA+IC5jaGVzc2ltYWxzLWJvdC1hdmF0YXIsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwtdm9pY2UgPiAuY2hlc3NpbWFscy1ib3QtYXZhdGFyIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogM3JlbTtcbiAgICAgICAgaGVpZ2h0OiAzcmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTYpO1xuICAgICAgICBmb250LXNpemU6IDEuNTVyZW07XG4gICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX2hlcm8uaXMtY2xlYXJlZCA+IC5jaGVzc2ltYWxzLWJvdC1hdmF0YXIgaW1nIHtcbiAgICAgICAgZmlsdGVyOiBncmF5c2NhbGUoMSkgc2F0dXJhdGUoMC4xNSkgY29udHJhc3QoMC45NSk7XG4gICAgICAgIG9wYWNpdHk6IDAuNjI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5X19oZXJvLmlzLWNsZWFyZWQgPiAuY2hlc3NpbWFscy1ib3QtYXZhdGFyOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICfinJMnO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHJpZ2h0OiAtMC4wNXJlbTtcbiAgICAgICAgYm90dG9tOiAtMC4wNXJlbTtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDEuMjVyZW07XG4gICAgICAgIGhlaWdodDogMS4yNXJlbTtcbiAgICAgICAgYm9yZGVyOiAwLjEycmVtIHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9faGVybyBkaXYsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwtdm9pY2UgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjEycmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5X19oZXJvIHNtYWxsLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsLXZvaWNlIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNjhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5IHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5X19oZXJvIHAsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwtdm9pY2UgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuODZyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MjA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI4O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwtdm9pY2Uge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC45NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC42NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX2FjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9fcGxheSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDMuMzVyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMS4wMnJlbTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwLjlyZW0gMS44cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHQuaXMtY2hhbGxlbmdlLXJlc3VsdCAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtdGVuc2lvbixcbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdC5pcy1jaGFsbGVuZ2UtcmVzdWx0IC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC0tbmV4dCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcik7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC40NXJlbSAwLjZyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMDcpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHQuaXMtY2hhbGxlbmdlLXJlc3VsdCAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwtLW5leHQge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gbWlubWF4KDAsIDFmcik7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC43cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC42NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTIpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4wNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdC5pcy1jaGFsbGVuZ2UtcmVzdWx0IC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC0tbmV4dCA+IC5jaGVzc2ltYWxzLWJvdC1hdmF0YXIge1xuICAgICAgICB3aWR0aDogMy40cmVtO1xuICAgICAgICBoZWlnaHQ6IDMuNHJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4xcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXN0cm9uZyk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMXB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTQpLFxuICAgICAgICAgIDAgMC40NXJlbSAxcmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdC5pcy1jaGFsbGVuZ2UtcmVzdWx0IC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC0tbmV4dCBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjIyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHQuaXMtY2hhbGxlbmdlLXJlc3VsdCAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtdGVuc2lvbi5pcy1jcml0aWNhbCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC4xKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsLXZvaWNlID4gLmNoZXNzaW1hbHMtYm90LWF2YXRhciB7XG4gICAgICAgIHdpZHRoOiAyLjM1cmVtO1xuICAgICAgICBoZWlnaHQ6IDIuMzVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBmb250LXNpemU6IDEuMTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5X19zdGF0cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjQ1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcmVjb3JkIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjQ1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMzQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC40NXJlbSAwLjY1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJlY29yZCBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDEuNDVyZW07XG4gICAgICAgIGhlaWdodDogMS40NXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtc2t5KTtcbiAgICAgICAgY29sb3I6ICNmZmZhZjA7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJlY29yZCBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXRlbnNpb24ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gbWlubWF4KDAsIDFmcik7XG4gICAgICAgIGdhcDogMC41NXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjMpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjlyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE2KSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4wOCkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtdGVuc2lvbi5pcy1jcml0aWNhbCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjM4KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuMTYpLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA4KSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS10ZW5zaW9uID4gc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAyLjI1cmVtO1xuICAgICAgICBoZWlnaHQ6IDIuMjVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTgpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXRlbnNpb24uaXMtY3JpdGljYWwgPiBzcGFuIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjE4KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXRlbnNpb24gZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjE0cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS10ZW5zaW9uIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXRlbnNpb24gcCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NHJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX3N0YXRzIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuOHJlbTtcbiAgICAgICAgcGFkZGluZzogMC40NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5X19zdGF0cyBiIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC0tbmV4dCBlbSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MjA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10aXAgcCxcbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyBwIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1sZWFybi1tb3JlIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBzdGFydDtcbiAgICAgICAgbWluLWhlaWdodDogMi43NXJlbTtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMCAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwLjc1cmVtIDEuNnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjI4KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2l6ZSxcbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUsXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyB7XG4gICAgICAgIG9yZGVyOiAzO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNpemUgYnV0dG9uLFxuICAgICAgLmNoZXNzaW1hbHMtbW9kZSBidXR0b24sXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXMgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjJyZW07XG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBtaW4taGVpZ2h0OiAzLjg3NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC41NXJlbSAwLjY1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2l6ZSBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtbW9kZSBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMyksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXNfX3RpbWVyIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBpc29sYXRpb246IGlzb2xhdGU7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC40MikgIWltcG9ydGFudDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzX190aW1lcjo6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IGF1dG8gMCAwO1xuICAgICAgICB6LWluZGV4OiAwO1xuICAgICAgICBoZWlnaHQ6IDAuMjJyZW07XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKHZhcigtLXRpbWVyLXByb2dyZXNzLCAxKSk7XG4gICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgY2VudGVyO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMTgwbXMgbGluZWFyLCBiYWNrZ3JvdW5kIDE4MG1zIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1c19fdGltZXIuaXMtbG93IHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuNTgpICFpbXBvcnRhbnQ7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjE2KSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpICFpbXBvcnRhbnQ7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy10dXJuLXB1bHNlIDgyMG1zIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXNfX3RpbWVyLmlzLWxvdzo6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2ViNDQ1YSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1c19fdGltZXIuaXMtbG93IHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjZWI0NDVhKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzX19zY29yZS5pcy1wb3Age1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC40Mik7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE2KSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtc2NvcmUtcHVsc2UgNjIwbXMgZWFzZS1vdXQgYm90aDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzX190aW1lciBzbWFsbCxcbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1c19fdGltZXIgc3Ryb25nIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZSB7XG4gICAgICAgIG9yZGVyOiA0O1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxLjFmcikgbWlubWF4KDAsIDEuMzVmcik7XG4gICAgICAgIGdhcDogMC42NXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4yOCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgcGFkZGluZzogMC42OHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTMpLCB0cmFuc3BhcmVudCA1MiUpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fcml2YWwge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gbWlubWF4KDAsIDFmcik7XG4gICAgICAgIGdhcDogMC41NXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fcml2YWwgPiAuY2hlc3NpbWFscy1ib3QtYXZhdGFyIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDIuN3JlbTtcbiAgICAgICAgaGVpZ2h0OiAyLjdyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE2KTtcbiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTQpO1xuICAgICAgICBmb250LXNpemU6IDEuMzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19yaXZhbCBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMDhyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX3JpdmFsIHNtYWxsLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX21ldHJpY3Mgc21hbGwge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fcml2YWwgc3Ryb25nIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA1O1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX3JpdmFsIHAge1xuICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTg7XG4gICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX21ldHJpY3Mge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC40MnJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX21ldHJpY3Mgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xcmVtO1xuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgbWluLWhlaWdodDogM3JlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgcGFkZGluZzogMC40cmVtIDAuNDVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19tZXRyaWNzIGIge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjkycmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDU7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtdGVuc2lvbi0tbGl2ZSB7XG4gICAgICAgIGdyaWQtY29sdW1uOiAxIC8gLTE7XG4gICAgICAgIHBhZGRpbmc6IDAuNTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWRpZmZpY3VsdHkge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogMC41NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtZGlmZmljdWx0eSBidXR0b24ge1xuICAgICAgICBtaW4taGVpZ2h0OiAyLjc1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwIDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtZGlmZmljdWx0eSBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3RzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCg5LjVyZW0sIDFmcikpO1xuICAgICAgICBnYXA6IDAuNjI1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3RzIGJ1dHRvbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnI7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6XG4gICAgICAgICAgJ2F2YXRhciB0aXRsZSdcbiAgICAgICAgICAnYXZhdGFyIGJvZHknXG4gICAgICAgICAgJ2F2YXRhciB0ZW5kZW5jeSc7XG4gICAgICAgIGNvbHVtbi1nYXA6IDAuNTVyZW07XG4gICAgICAgIHJvdy1nYXA6IDAuMTJyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgbWluLWhlaWdodDogNC43NXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjY1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdHMgYnV0dG9uID4gLmNoZXNzaW1hbHMtYm90LWF2YXRhciB7XG4gICAgICAgIGdyaWQtYXJlYTogYXZhdGFyO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMi4xcmVtO1xuICAgICAgICBoZWlnaHQ6IDIuMXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgZm9udC1zaXplOiAxLjJyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdHMgYnV0dG9uIHN0cm9uZyB7XG4gICAgICAgIGdyaWQtYXJlYTogdGl0bGU7XG4gICAgICAgIGFsaWduLXNlbGY6IGVuZDtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3RzIGJ1dHRvbiBzbWFsbCB7XG4gICAgICAgIGdyaWQtYXJlYTogYm9keTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3NTA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3RzIGJ1dHRvbiBwIHtcbiAgICAgICAgZ3JpZC1hcmVhOiB0ZW5kZW5jeTtcbiAgICAgICAgbWFyZ2luOiAwLjEycmVtIDAgMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MjA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3RzIGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEzKSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwIDJweCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE2KSxcbiAgICAgICAgICAwIDAuNzVyZW0gMS41cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNpemUgc3Ryb25nLFxuICAgICAgLmNoZXNzaW1hbHMtbW9kZSBzdHJvbmcsXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXMgc3Ryb25nLFxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0IHN0cm9uZyxcbiAgICAgIC5jaGVzc2ltYWxzLXJlbWF0Y2gtc3RhdHVzIHN0cm9uZyxcbiAgICAgIC5jaGVzc2ltYWxzLXRpcCBzdHJvbmcge1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXMgc3Ryb25nIHtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDAuOTVyZW0sIDIuNXZ3LCAxLjJyZW0pO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wODtcbiAgICAgICAgb3ZlcmZsb3ctd3JhcDogYW55d2hlcmU7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNpemUgc21hbGwsXG4gICAgICAuY2hlc3NpbWFscy1tb2RlIHNtYWxsLFxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjEyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC13cmFwIHtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWJvYXJkLXJhZGl1czogbWluKDAuODVyZW0sIDE0cHgpO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBwYWRkaW5nOiAwLjI1cmVtIDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLXdyYXAuaXMtb3JpZW50aW5nIC5jaGVzc2ltYWxzLWJvYXJkLWZyYW1lIHtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLW9yaWVudC1ib2FyZCAzMjBtcyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC13cmFwLmlzLWZpbmlzaGVkIHtcbiAgICAgICAgb3ZlcmZsb3cteDogdmlzaWJsZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtZnJhbWUge1xuICAgICAgICBmbGV4OiAwIDEgNThyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1heC13aWR0aDogNThyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWNoZXNzaW1hbHMtYm9hcmQtcmFkaXVzKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KHZhcigtLWJvYXJkLXNpemUpLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogcmVwZWF0KHZhcigtLWJvYXJkLXNpemUpLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGFzcGVjdC1yYXRpbzogMSAvIDE7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGlzb2xhdGlvbjogaXNvbGF0ZTtcbiAgICAgICAgY29udGFpbjogcGFpbnQ7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tY2hlc3NpbWFscy1ib2FyZC1yYWRpdXMpO1xuICAgICAgICBjbGlwLXBhdGg6IGluc2V0KDAgcm91bmQgdmFyKC0tY2hlc3NpbWFscy1ib2FyZC1yYWRpdXMpKTtcbiAgICAgICAgLXdlYmtpdC1tYXNrLWltYWdlOiAtd2Via2l0LXJhZGlhbC1ncmFkaWVudCh3aGl0ZSwgYmxhY2spO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDE2JSAxOCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNCksIHRyYW5zcGFyZW50IDE4JSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgODIlIDc4JSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xKSwgdHJhbnNwYXJlbnQgMjIlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCAzMiUgNjglLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc3RvbmUtcmdiKSwgMC4wNSksIHRyYW5zcGFyZW50IDMwJSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgNjYlIDM0JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSwgdHJhbnNwYXJlbnQgMjQlKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSxcbiAgICAgICAgICAwIDAuODVyZW0gMi4xcmVtIHZhcigtLWNoZXNzaW1hbHMtYm9hcmQtc2hhZG93KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtd3JhcC5pcy1zeW5jaW5nIC5jaGVzc2ltYWxzLWJvYXJkIHtcbiAgICAgICAgY3Vyc29yOiB3YWl0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLWNvb3JkaW5hdGUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHotaW5kZXg6IDU7XG4gICAgICAgIGNvbG9yOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1tdXRlZCkgNzglLCB2YXIoLS1jaGVzc2ltYWxzLXRleHQpKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wMmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLWNvb3JkaW5hdGUtLXJhbmsge1xuICAgICAgICB0b3A6IDAuMnJlbTtcbiAgICAgICAgbGVmdDogMC4yNHJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC1jb29yZGluYXRlLS1maWxlIHtcbiAgICAgICAgcmlnaHQ6IDAuMjRyZW07XG4gICAgICAgIGJvdHRvbTogMC4xOHJlbTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLW9yaWVudC1ib2FyZCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjcyO1xuICAgICAgICAgIGZpbHRlcjogYmx1cigwLjA2cmVtKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTg1KTtcbiAgICAgICAgfVxuXG4gICAgICAgIDUyJSB7XG4gICAgICAgICAgb3BhY2l0eTogMC45MjtcbiAgICAgICAgICBmaWx0ZXI6IGJsdXIoMCk7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjAxMik7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIGZpbHRlcjogYmx1cigwKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbnRlci1saW5lIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBib3JkZXItdG9wOiAwLjA4cmVtIGRhc2hlZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjU2KTtcbiAgICAgICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAgMC4yNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjI2KSk7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci10cmFpbCB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDA7XG4gICAgICAgIHotaW5kZXg6IDU7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICAtLXRyYWlsLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC44OCk7XG4gICAgICAgIC0tdHJhaWwtZ2xvdzogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuNDgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci10cmFpbC5pcy1jYXB0dXJlIHtcbiAgICAgICAgLS10cmFpbC1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC44Nik7XG4gICAgICAgIC0tdHJhaWwtZ2xvdzogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC40Nik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmVmZmVjdC1lYWdsZSB7XG4gICAgICAgIC0tdHJhaWwtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45Mik7XG4gICAgICAgIC0tdHJhaWwtZ2xvdzogcmdiYSgxMjAsIDIxMCwgMjU1LCAwLjU0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuZWZmZWN0LWJ1bGwge1xuICAgICAgICAtLXRyYWlsLWNvbG9yOiByZ2JhKDE4OCwgMTMxLCA3NiwgMC44Nik7XG4gICAgICAgIC0tdHJhaWwtZ2xvdzogcmdiYSgxODgsIDEzMSwgNzYsIDAuMzYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci10cmFpbC5lZmZlY3Qta2FuZ2Fyb28ge1xuICAgICAgICAtLXRyYWlsLWNvbG9yOiByZ2JhKDE3NCwgMTI0LCAyNTUsIDAuODYpO1xuICAgICAgICAtLXRyYWlsLWdsb3c6IHJnYmEoMTc0LCAxMjQsIDI1NSwgMC40Mik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmVmZmVjdC1saW9uIHtcbiAgICAgICAgLS10cmFpbC1jb2xvcjogcmdiYSgyNTUsIDIyMSwgMTIwLCAwLjg4KTtcbiAgICAgICAgLS10cmFpbC1nbG93OiByZ2JhKDI1NSwgMTkwLCA1NiwgMC40Mik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsID4gc3BhbiB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiB2YXIoLS10cmFpbC15KTtcbiAgICAgICAgbGVmdDogdmFyKC0tdHJhaWwteCk7XG4gICAgICAgIHdpZHRoOiB2YXIoLS10cmFpbC1sZW5ndGgpO1xuICAgICAgICBoZWlnaHQ6IDAuNDVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCB2YXIoLS10cmFpbC1jb2xvcikgNDIlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTIpKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMC43NXJlbSB2YXIoLS10cmFpbC1nbG93KSxcbiAgICAgICAgICAwIDAgMS40NXJlbSB2YXIoLS10cmFpbC1nbG93KTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwKTtcbiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogMCA1MCU7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1wb3dlci10cmFpbCA3MjBtcyBlYXNlLW91dCBib3RoO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci10cmFpbC5lZmZlY3QtZWFnbGUgPiBzcGFuIHtcbiAgICAgICAgaGVpZ2h0OiAwLjI4cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45NSkgNDQlLCByZ2JhKDEyMCwgMjEwLCAyNTUsIDAuNTgpKSxcbiAgICAgICAgICByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCAwIDAuN3JlbSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjY2KSAwLjdyZW0gMC45MnJlbSk7XG4gICAgICAgIGFuaW1hdGlvbi1uYW1lOiBjaGVzc2ltYWxzLWVhZ2xlLXRyYWlsO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci10cmFpbC5lZmZlY3QtYnVsbCA+IHNwYW4ge1xuICAgICAgICBoZWlnaHQ6IDAuNzJyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCg5MGRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQyKSAwIDAuMThyZW0sIHRyYW5zcGFyZW50IDAuMThyZW0gMC40MnJlbSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgdmFyKC0tdHJhaWwtY29sb3IpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODYpKTtcbiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGNoZXNzaW1hbHMtYnVsbC10cmFpbDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuZWZmZWN0LWthbmdhcm9vID4gc3BhbiB7XG4gICAgICAgIGhlaWdodDogMXJlbTtcbiAgICAgICAgYm9yZGVyLXRvcDogMC4xNnJlbSBkYXNoZWQgdmFyKC0tdHJhaWwtY29sb3IpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAgMC44cmVtIHZhcigtLXRyYWlsLWdsb3cpKTtcbiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGNoZXNzaW1hbHMta2FuZ2Fyb28tdHJhaWw7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmVmZmVjdC1saW9uID4gc3BhbiB7XG4gICAgICAgIGhlaWdodDogMC42MnJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCB2YXIoLS10cmFpbC1jb2xvciksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44MikpLFxuICAgICAgICAgIHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoMTE1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTUpIDAgMC4xMnJlbSwgdHJhbnNwYXJlbnQgMC4xMnJlbSAwLjM0cmVtKTtcbiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGNoZXNzaW1hbHMtbGlvbi10cmFpbDtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXBvd2VyLXRyYWlsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDI4JSB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDAuNzIpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1lYWdsZS10cmFpbCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMCkgc2tld1goLTEwZGVnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDMwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDAuODIpIHNrZXdYKC0xMGRlZyk7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMS4wNSkgc2tld1goLTEwZGVnKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtYnVsbC10cmFpbCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMCkgc2NhbGVZKDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgMzglIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMC43KSBzY2FsZVkoMS4xOCk7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMSkgc2NhbGVZKDAuODIpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1rYW5nYXJvby10cmFpbCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC40cmVtKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMCk7XG4gICAgICAgIH1cblxuICAgICAgICAzNCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xLjJyZW0pIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwLjYyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtbGlvbi10cmFpbCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIGZpbHRlcjogc2F0dXJhdGUoMSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDM2JSB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICBmaWx0ZXI6IHNhdHVyYXRlKDEuNCk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwLjc2KTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgZmlsdGVyOiBzYXR1cmF0ZSgxLjEpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXNjb3JlLXB1bHNlIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKSBzY2FsZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDQyJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApIHNjYWxlKDEuMDM1KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm8ge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICB6LWluZGV4OiA3O1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiBjbGFtcCgwLjc1cmVtLCA0dncsIDEuMzVyZW0pO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDM2JSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjI0KSwgdHJhbnNwYXJlbnQgMzQlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDIwLCAxMiwgMjIsIDAuNDgpLCByZ2JhKDgsIDE4LCAxMywgMC4zNCkpO1xuICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMS41cHgpO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvLWluIDI2MG1zIGVhc2Utb3V0IGJvdGg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fY2FyZCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGp1c3RpZnktaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgICB3aWR0aDogbWluKDE4cmVtLCA5MiUpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMzQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuODVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE0KSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc3Ryb25nKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAxLjFyZW0gMi4zcmVtIHJnYmEoMCwgMCwgMCwgMC4yNCksXG4gICAgICAgICAgaW5zZXQgMCAwIDAgMXB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMDgpO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fYXZhdGFyIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDRyZW07XG4gICAgICAgIGhlaWdodDogNHJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMzUlIDI0JSwgdmFyKC0tY2hlc3NpbWFscy1nbGFzcy1oaWdobGlnaHQpLCB0cmFuc3BhcmVudCAzMCUpLFxuICAgICAgICAgIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xNik7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMXB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTYpLFxuICAgICAgICAgIDAgMC43cmVtIDEuNXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTgpO1xuICAgICAgICBmb250LXNpemU6IDIuMTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fY29weSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xNHJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2NvcHkgc21hbGwsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2ZhY3RzIHNtYWxsIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNjRyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19jb3B5IHN0cm9uZyB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDEuMzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wNDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fY29weSBwIHtcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuODhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MjA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI0O1xuICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fZmFjdHMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC40cmVtO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19mYWN0cyBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjFyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgcGFkZGluZzogMC4zOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19mYWN0cyBiIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm8gLmNoZXNzaW1hbHMtcHJpbWFyeSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDIuNDVyZW07XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvLWluIHtcbiAgICAgICAgZnJvbSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRvIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICB6LWluZGV4OiA4O1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgICBwYWRkaW5nOiAxLjI1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDM0JSwgcmdiYSgyNTUsIDIyNiwgMTI5LCAwLjM0KSwgdHJhbnNwYXJlbnQgMjQlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMzQpLCB0cmFuc3BhcmVudCA0MiUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjAsIDEyLCAyMiwgMC44OCksIHJnYmEoOCwgMTgsIDEzLCAwLjc4KSk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigycHgpO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5LmlzLWRlZmVhdCB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgMzQlLCByZ2JhKDE0MywgMTY4LCAyMDYsIDAuMjYpLCB0cmFuc3BhcmVudCAyNCUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUyJSwgcmdiYSg3MiwgODYsIDExNSwgMC40MiksIHRyYW5zcGFyZW50IDQyJSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSg5LCAxMiwgMjAsIDAuOSksIHJnYmEoMjgsIDMwLCA0MywgMC44KSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXk6OmJlZm9yZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDA7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAyMCUgMzAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTgpIDAgMC4wOHJlbSwgdHJhbnNwYXJlbnQgMC4xcmVtKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDc1JSAyNSUsIHJnYmEoMjU1LCAyMjYsIDEyOSwgMC43KSAwIDAuMXJlbSwgdHJhbnNwYXJlbnQgMC4xMnJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA2OCUgNzIlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjU0KSAwIDAuMDhyZW0sIHRyYW5zcGFyZW50IDAuMXJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzNSUgNzglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDgpIDAgMC4wN3JlbSwgdHJhbnNwYXJlbnQgMC4wOXJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA4NCUgNjYlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzgpIDAgMC4wNnJlbSwgdHJhbnNwYXJlbnQgMC4wOHJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAxNCUgNjQlLCByZ2JhKDI1NSwgMjI2LCAxMjksIDAuNDgpIDAgMC4wN3JlbSwgdHJhbnNwYXJlbnQgMC4wOXJlbSk7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBvcGFjaXR5OiAwLjcyO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtdmljdG9yeS1zcGFya3MgMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmF5cyB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IC0xOCU7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgY29uaWMtZ3JhZGllbnQoXG4gICAgICAgICAgICBmcm9tIDhkZWcsXG4gICAgICAgICAgICB0cmFuc3BhcmVudCAwIDdkZWcsXG4gICAgICAgICAgICByZ2JhKDI1NSwgMjI2LCAxMjksIDAuMTYpIDdkZWcgMTFkZWcsXG4gICAgICAgICAgICB0cmFuc3BhcmVudCAxMWRlZyAyMmRlZ1xuICAgICAgICAgICk7XG4gICAgICAgIG9wYWNpdHk6IDAuODU7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1maW5hbGUtcmF5cyA4cyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkuaXMtZGVmZWF0IC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JheXMge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGNvbmljLWdyYWRpZW50KFxuICAgICAgICAgICAgZnJvbSA4ZGVnLFxuICAgICAgICAgICAgdHJhbnNwYXJlbnQgMCA4ZGVnLFxuICAgICAgICAgICAgcmdiYSgxODAsIDIwNCwgMjQwLCAwLjEpIDhkZWcgMTJkZWcsXG4gICAgICAgICAgICB0cmFuc3BhcmVudCAxMmRlZyAyNGRlZ1xuICAgICAgICAgICk7XG4gICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMTJzO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19yaWJib24ge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogLTIwJTtcbiAgICAgICAgd2lkdGg6IDAuNDJyZW07XG4gICAgICAgIGhlaWdodDogNTQlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgdHJhbnNwYXJlbnQsIHJnYmEoMjU1LCAyMjYsIDEyOSwgMC43MiksIHRyYW5zcGFyZW50KTtcbiAgICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSh2YXIoLS1yaWJib24tYW5nbGUsIDEyZGVnKSk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1maW5hbGUtcmliYm9uIDIuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkuaXMtZGVmZWF0IC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JpYmJvbiB7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHRyYW5zcGFyZW50LCByZ2JhKDE4MCwgMjA0LCAyNDAsIDAuNDIpLCB0cmFuc3BhcmVudCk7XG4gICAgICAgIG9wYWNpdHk6IDAuNDg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JpYmJvbi5yaWJib24tYSB7XG4gICAgICAgIGxlZnQ6IDE4JTtcbiAgICAgICAgLS1yaWJib24tYW5nbGU6IC0xOGRlZztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmliYm9uLnJpYmJvbi1iIHtcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICAtLXJpYmJvbi1hbmdsZTogOGRlZztcbiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAzMjBtcztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmliYm9uLnJpYmJvbi1jIHtcbiAgICAgICAgcmlnaHQ6IDE4JTtcbiAgICAgICAgLS1yaWJib24tYW5nbGU6IDIwZGVnO1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDY0MG1zO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5ID4gKiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheSBzcGFuIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBjZW50ZXI7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwLjMycmVtIDAuN3JlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTtcbiAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMS42NXJlbSwgOHZ3LCAzcmVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIHRleHQtc2hhZG93OiAwIDAgMS4yNXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IGVtIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBjZW50ZXI7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiBjbGFtcCgzcmVtLCAxNHZ3LCA0LjZyZW0pO1xuICAgICAgICBoZWlnaHQ6IGNsYW1wKDNyZW0sIDE0dncsIDQuNnJlbSk7XG4gICAgICAgIGJvcmRlcjogMC4xNnJlbSBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzNSUgMjUlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzIpLCB0cmFuc3BhcmVudCAxOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNmZmUyODEsICNiOTg0MzYpO1xuICAgICAgICBjb2xvcjogIzJkMjQxMjtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjFyZW0sIDV2dywgMS42NXJlbSk7XG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAwLjQ1cmVtIHJnYmEoMjU1LCAyMjYsIDEyOSwgMC4xMiksXG4gICAgICAgICAgMCAxcmVtIDJyZW0gcmdiYSgwLCAwLCAwLCAwLjI2KTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLWZpbmFsZS1tZWRhbCAxLjhzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5LmlzLWRlZmVhdCBlbSB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzNSUgMjUlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDgpLCB0cmFuc3BhcmVudCAxOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNkOWUyZWYsICM2OTc1OGUpO1xuICAgICAgICBjb2xvcjogIzE4MjAzMjtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAwLjQ1cmVtIHJnYmEoMTgwLCAyMDQsIDI0MCwgMC4xKSxcbiAgICAgICAgICAwIDFyZW0gMnJlbSByZ2JhKDAsIDAsIDAsIDAuMzIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IGVtLmhhcy1hdmF0YXIge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IGVtLmhhcy1hdmF0YXIgaW1nIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IGIge1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IGNlbnRlcjtcbiAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkgc21hbGwge1xuICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgyKTtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgwLjlyZW0sIDN2dywgMS4xcmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fc3RhdHMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC4zNXJlbTtcbiAgICAgICAgd2lkdGg6IG1pbigyNnJlbSwgOTIlKTtcbiAgICAgICAgbWFyZ2luOiAwLjJyZW0gYXV0byAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19zdGF0cyBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMDhyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE4KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC40MnJlbSAwLjQ2cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigzcHgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19zdGF0cyBkdCxcbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3N0YXRzIGRkIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fc3RhdHMgZHQge1xuICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjY4KTtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgwLjUycmVtLCAyLjF2dywgMC42NnJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3N0YXRzIGRkIHtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMC42OHJlbSwgMi44dncsIDAuODhyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtdmljdG9yeS1zcGFya3Mge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMC40NjtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMC45OCk7XG4gICAgICAgIH1cblxuICAgICAgICA1MCUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuOTU7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0wLjM1cmVtKSBzY2FsZSgxLjAyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtZmluYWxlLXJheXMge1xuICAgICAgICB0byB7XG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtZmluYWxlLXJpYmJvbiB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjE4O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC41cmVtKSByb3RhdGUodmFyKC0tcmliYm9uLWFuZ2xlKSk7XG4gICAgICAgIH1cblxuICAgICAgICA1MCUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuNzU7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEuNHJlbSkgcm90YXRlKHZhcigtLXJpYmJvbi1hbmdsZSkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1maW5hbGUtbWVkYWwge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTAuMThyZW0pIHNjYWxlKDEuMDQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGlzb2xhdGlvbjogaXNvbGF0ZTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtYmc6IHZhcigtLWNoZXNzaW1hbHMtY2VsbC1saWdodCk7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgbWluLWhlaWdodDogMDtcbiAgICAgICAgYXNwZWN0LXJhdGlvOiAxO1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgMjYlIDI0JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKSwgdHJhbnNwYXJlbnQgMjQlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCA3OCUgNzYlLCByZ2JhKDYxLCA1NCwgMzYsIDAuMDYpLCB0cmFuc3BhcmVudCAyOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNCksIHRyYW5zcGFyZW50IDUyJSwgcmdiYSg1MiwgNDQsIDI4LCAwLjA0KSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1jZWxsLWJnKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgYmFja2dyb3VuZCAxNjBtcyBlYXNlLFxuICAgICAgICAgIGJveC1zaGFkb3cgMTYwbXMgZWFzZSxcbiAgICAgICAgICB0cmFuc2Zvcm0gMTYwbXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbDo6YmVmb3JlLFxuICAgICAgLmNoZXNzaW1hbHMtY2VsbDo6YWZ0ZXIge1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC10ZXh0dXJlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgei1pbmRleDogMDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICBvcGFjaXR5OiAwLjQyO1xuICAgICAgICBtaXgtYmxlbmQtbW9kZTogbXVsdGlwbHk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgdmFyKC0td2Vhci14LCAyOCUpIHZhcigtLXdlYXIteSwgMzIlKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE2KSwgdHJhbnNwYXJlbnQgMTclKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCB2YXIoLS13ZWFyLXgyLCA3NCUpIHZhcigtLXdlYXIteTIsIDY4JSksIHJnYmEoNzUsIDY2LCA0MiwgMC4wOSksIHRyYW5zcGFyZW50IDI1JSksXG4gICAgICAgICAgcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh2YXIoLS13ZWFyLWFuZ2xlLCAyNmRlZyksIHJnYmEoNzUsIDY2LCA0MiwgMC4wNDUpIDAgMXB4LCB0cmFuc3BhcmVudCAxcHggMC41MnJlbSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA2KSwgdHJhbnNwYXJlbnQgNDIlLCByZ2JhKDUyLCA0NCwgMjgsIDAuMDQ1KSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwtdGV4dHVyZTo6YWZ0ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwLjA4cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDc1LCA2NiwgNDIsIDAuMDUpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjE4cmVtO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAuMDhyZW0gMC4wOHJlbSAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCksXG4gICAgICAgICAgaW5zZXQgLTAuMDhyZW0gLTAuMDhyZW0gMCByZ2JhKDUyLCA0NCwgMjgsIDAuMDQ1KTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtZWRnZS1jZWxsIC5jaGVzc2ltYWxzLWNlbGwtdGV4dHVyZSB7XG4gICAgICAgIG9wYWNpdHk6IDAuNTY7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgdmFyKC0td2Vhci14LCAyOCUpIHZhcigtLXdlYXIteSwgMzIlKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0KSwgdHJhbnNwYXJlbnQgMTglKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCB2YXIoLS13ZWFyLXgyLCA3NCUpIHZhcigtLXdlYXIteTIsIDY4JSksIHJnYmEoNzUsIDY2LCA0MiwgMC4xNCksIHRyYW5zcGFyZW50IDI4JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSg3MCwgNTIsIDI4LCAwLjA1NSksIHRyYW5zcGFyZW50IDQ0JSwgcmdiYSg1MiwgNDQsIDI4LCAwLjA5KSksXG4gICAgICAgICAgcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh2YXIoLS13ZWFyLWFuZ2xlLCAyNmRlZyksIHJnYmEoNzUsIDY2LCA0MiwgMC4wNTUpIDAgMXB4LCB0cmFuc3BhcmVudCAxcHggMC40OHJlbSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwud2Vhci0wIHtcbiAgICAgICAgLS13ZWFyLXg6IDIyJTtcbiAgICAgICAgLS13ZWFyLXk6IDI0JTtcbiAgICAgICAgLS13ZWFyLXgyOiA3OCU7XG4gICAgICAgIC0td2Vhci15MjogNzIlO1xuICAgICAgICAtLXdlYXItYW5nbGU6IDE4ZGVnO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLndlYXItMSB7XG4gICAgICAgIC0td2Vhci14OiA2NCU7XG4gICAgICAgIC0td2Vhci15OiAxOCU7XG4gICAgICAgIC0td2Vhci14MjogMzAlO1xuICAgICAgICAtLXdlYXIteTI6IDc2JTtcbiAgICAgICAgLS13ZWFyLWFuZ2xlOiAtMjRkZWc7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwud2Vhci0yIHtcbiAgICAgICAgLS13ZWFyLXg6IDQyJTtcbiAgICAgICAgLS13ZWFyLXk6IDU4JTtcbiAgICAgICAgLS13ZWFyLXgyOiA4MiU7XG4gICAgICAgIC0td2Vhci15MjogMjYlO1xuICAgICAgICAtLXdlYXItYW5nbGU6IDQyZGVnO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLndlYXItMyB7XG4gICAgICAgIC0td2Vhci14OiA3NCU7XG4gICAgICAgIC0td2Vhci15OiA2OCU7XG4gICAgICAgIC0td2Vhci14MjogMjQlO1xuICAgICAgICAtLXdlYXIteTI6IDI4JTtcbiAgICAgICAgLS13ZWFyLWFuZ2xlOiAtMTJkZWc7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwud2Vhci00IHtcbiAgICAgICAgLS13ZWFyLXg6IDM0JTtcbiAgICAgICAgLS13ZWFyLXk6IDE4JTtcbiAgICAgICAgLS13ZWFyLXgyOiA2MiU7XG4gICAgICAgIC0td2Vhci15MjogODQlO1xuICAgICAgICAtLXdlYXItYW5nbGU6IDY0ZGVnO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLndlYXItNSB7XG4gICAgICAgIC0td2Vhci14OiAxOCU7XG4gICAgICAgIC0td2Vhci15OiA3MCU7XG4gICAgICAgIC0td2Vhci14MjogNzAlO1xuICAgICAgICAtLXdlYXIteTI6IDM0JTtcbiAgICAgICAgLS13ZWFyLWFuZ2xlOiAtNDhkZWc7XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAuY2hlc3NpbWFscy1jZWxsLXRleHR1cmUsXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5jaGVzc2ltYWxzLWNlbGwtdGV4dHVyZSB7XG4gICAgICAgIG9wYWNpdHk6IDAuMzQ7XG4gICAgICAgIG1peC1ibGVuZC1tb2RlOiBzb2Z0LWxpZ2h0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWRhcmstY2VsbCB7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWJnOiB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtZGFyayk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtc2VsZWN0ZWQge1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjI4KSAwIDM2JSwgdHJhbnNwYXJlbnQgNjIlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4yMiksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtY2VsbC1iZyk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMC4xOHJlbSB2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkKSxcbiAgICAgICAgICBpbnNldCAwIDAgMC41NXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzIpLFxuICAgICAgICAgIGluc2V0IDAgMCAxLjhyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYiksIDAuNDIpLFxuICAgICAgICAgIDAgMCAwLjU1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjU2KSxcbiAgICAgICAgICAwIDAgMS41NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4zNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLmlzLXBvd2VyLWFpbWluZyAuY2hlc3NpbWFscy1jZWxsLmlzLXNlbGVjdGVkIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjM4KSAwIDM0JSwgdHJhbnNwYXJlbnQgNjQlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDMyJSAyNCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNCksIHRyYW5zcGFyZW50IDI4JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMiksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtY2VsbC1iZyk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMC4xOHJlbSB2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLWhvdCksXG4gICAgICAgICAgaW5zZXQgMCAwIDAuOHJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjYpLFxuICAgICAgICAgIGluc2V0IDAgMCAxLjlyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuNSksXG4gICAgICAgICAgMCAwIDAuN3JlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC42MiksXG4gICAgICAgICAgMCAwIDEuNzVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuNDIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC5pcy1wb3dlci1haW1pbmcgLmNoZXNzaW1hbHMtY2VsbC5pcy1sZWdhbDpub3QoLmlzLWNhcHR1cmUpOjphZnRlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuOTQpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwLjcycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjQ4KSxcbiAgICAgICAgICBpbnNldCAwIDAgMC42cmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQuaXMtcG93ZXItYWltaW5nIC5jaGVzc2ltYWxzLXRhcmdldCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtaG90KTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAwLjJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMiksXG4gICAgICAgICAgMCAwIDAuOTVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuNjIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWxlZ2FsOm5vdCguaXMtY2FwdHVyZSk6OmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMTMlO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBib3JkZXI6IG1heCgycHgsIDEuOCUpIHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtbW92ZSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNTVyZW07XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBvcGFjaXR5OiAwLjc0O1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1sYXN0Om5vdCguaXMtc2VsZWN0ZWQpOm5vdCguaXMtbGVnYWwpOm5vdCguaXMtY2FwdHVyZSkge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1sYXN0LXJnYiksIDAuMTYpIDAgNDIlLCB0cmFuc3BhcmVudCA2OCUpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtY2VsbC1iZyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtY2FwdHVyZSB7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjQpLCB0cmFuc3BhcmVudCAzNCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMTQpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtYmcpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAgMCAwIDAuMTRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC44NCksXG4gICAgICAgICAgaW5zZXQgMCAwIDEuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjI0KSxcbiAgICAgICAgICAwIDAgMC45NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjM0KTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLWNhcHR1cmUtYXVyYSAxLjM1cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1jYXB0dXJlOjpiZWZvcmUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiA0JTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNjRyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUyKSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4yNCksIHRyYW5zcGFyZW50IDU4JSk7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTQyJSkgc2NhbGUoMC45KTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLWNhcHR1cmUtc3dlZXAgMS4zNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtY2FwdHVyZTo6YWZ0ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiA4JTtcbiAgICAgICAgei1pbmRleDogMztcbiAgICAgICAgYm9yZGVyOiBtYXgoMnB4LCAxLjU1JSkgc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC45KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC42MnJlbTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMC43NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjUpLFxuICAgICAgICAgIGluc2V0IDAgMCAwLjcycmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yMik7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLWNhcHR1cmUtZnJhbWUgMS4zNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLWNhcHR1cmUtcmVhZHk6bm90KC5pcy1zZWxlY3RlZCk6OmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMTYlO1xuICAgICAgICB6LWluZGV4OiAzO1xuICAgICAgICBib3JkZXI6IG1heCgycHgsIDEuNDUlKSBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC43Mik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwLjY1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjM0KSxcbiAgICAgICAgICBpbnNldCAwIDAgMC41NXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTgpO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy13aW5uaW5nLmlzLWxlZ2FsOm5vdCguaXMtY2FwdHVyZSk6OmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtd2FybmluZy1yZ2IpLCAwLjkyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAuNzVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXdhcm5pbmctcmdiKSwgMC40OCksXG4gICAgICAgICAgaW5zZXQgMCAwIDAuNThyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy13aW5uaW5nIC5jaGVzc2ltYWxzLXRhcmdldCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtd2FybmluZyk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAgMC4yMnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtd2FybmluZy1yZ2IpLCAwLjIpLFxuICAgICAgICAgIDAgMCAwLjk1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy13YXJuaW5nLXJnYiksIDAuNTYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy10aHJlYXQ6bm90KC5pcy1zZWxlY3RlZCk6bm90KC5pcy1jYXB0dXJlKSB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTIlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtd2FybmluZy1yZ2IpLCAwLjE2KSwgdHJhbnNwYXJlbnQgNTIlKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtYmcpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy10aHJlYXQ6bm90KC5pcy1zZWxlY3RlZCk6bm90KC5pcy1jYXB0dXJlKSAuY2hlc3NpbWFscy1waWVjZSB7XG4gICAgICAgIGZpbHRlcjpcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAgMC4zOHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtd2FybmluZy1yZ2IpLCAwLjUyKSlcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNoYWRvdyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLXRocmVhdDpub3QoLmlzLXNlbGVjdGVkKTpub3QoLmlzLWNhcHR1cmUpIC5jaGVzc2ltYWxzLXBpZWNlLmlzLWJsYWNrIHtcbiAgICAgICAgZmlsdGVyOlxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMCAwLjM4cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy13YXJuaW5nLXJnYiksIDAuNTIpKVxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stc2hhZG93KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtdGhyZWF0Om5vdCguaXMtc2VsZWN0ZWQpOm5vdCguaXMtY2FwdHVyZSk6OmJlZm9yZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwLjI2cmVtO1xuICAgICAgICByaWdodDogMC4yNnJlbTtcbiAgICAgICAgei1pbmRleDogNDtcbiAgICAgICAgd2lkdGg6IDAuNDhyZW07XG4gICAgICAgIGhlaWdodDogMC40OHJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy13YXJuaW5nLXJnYiksIDAuOTYpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjE4cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy13YXJuaW5nLXJnYiksIDAuMjIpO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWNhcHR1cmUtYXVyYSB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBmaWx0ZXI6IHNhdHVyYXRlKDEpO1xuICAgICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgICBpbnNldCAwIDAgMCAwLjEycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuNzgpLFxuICAgICAgICAgICAgaW5zZXQgMCAwIDFyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4yKSxcbiAgICAgICAgICAgIDAgMCAwLjY0cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMzIpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBmaWx0ZXI6IHNhdHVyYXRlKDEuMjIpO1xuICAgICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgICBpbnNldCAwIDAgMCAwLjE2cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuOTYpLFxuICAgICAgICAgICAgaW5zZXQgMCAwIDEuMzRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4zNCksXG4gICAgICAgICAgICAwIDAgMS4ycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuNDgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1jYXB0dXJlLXN3ZWVwIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MiUpIHNjYWxlKDAuODgpO1xuICAgICAgICB9XG5cbiAgICAgICAgNDIlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjY2O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSBzY2FsZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDQ4JSkgc2NhbGUoMC45Mik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWNhcHR1cmUtZnJhbWUge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMC42ODtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTYpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtc291cmNlLWVmZmVjdDpub3QoLmlzLW1vdmluZy1zb3VyY2UpIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4xMikgMCAzNCUsIHRyYW5zcGFyZW50IDY0JSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1jZWxsLWJnKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtbW92ZS1lZmZlY3Qge1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4yMikgMCAzNCUsIHRyYW5zcGFyZW50IDY4JSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1jZWxsLWJnKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAwLjE2cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuODYpLFxuICAgICAgICAgIGluc2V0IDAgMCAxLjJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4yNiksXG4gICAgICAgICAgMCAwIDEuMXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjQyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtbW92ZS1lZmZlY3Q6OmJlZm9yZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDAuMTJyZW07XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjdyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDgpLCB0cmFuc3BhcmVudCAyMiUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC40MiksIHRyYW5zcGFyZW50IDU4JSk7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNzIpO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtcG93ZXItaW1wYWN0IDcwMG1zIGVhc2Utb3V0IGJvdGg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLW1vdmUtZWZmZWN0OjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDAuMjhyZW07XG4gICAgICAgIHotaW5kZXg6IDQ7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBib3JkZXI6IDAuMTRyZW0gc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC41OHJlbTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMC41cmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNiksXG4gICAgICAgICAgMCAwIDFyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4zMik7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtcG93ZXItZnJhbWUgODYwbXMgZWFzZS1vdXQgYm90aDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtY2FwdHVyZS1lZmZlY3Qge1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtY2FwdHVyZS1oaXQgNzgwbXMgZWFzZS1vdXQgYm90aDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5lZmZlY3QtZWFnbGU6OmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdHJhbnNwYXJlbnQgMTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzgpIDQ4JSwgdHJhbnNwYXJlbnQgNTIlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MCUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMzYpLCB0cmFuc3BhcmVudCA2MiUpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmVmZmVjdC1idWxsOjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoOTBkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNCkgMCAwLjE2cmVtLCB0cmFuc3BhcmVudCAwLjE2cmVtIDAuMzRyZW0pLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4zOCksIHRyYW5zcGFyZW50IDYyJSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuZWZmZWN0LWthbmdhcm9vOjpiZWZvcmUge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDQyJSA0NCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41OCksIHRyYW5zcGFyZW50IDE4JSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1OCUgNTYlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjQpLCB0cmFuc3BhcmVudCA2NCUpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmVmZmVjdC1saW9uOjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGNvbmljLWdyYWRpZW50KGZyb20gMGRlZywgdHJhbnNwYXJlbnQsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41NiksIHRyYW5zcGFyZW50LCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjQpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjM0KSwgdHJhbnNwYXJlbnQgNjIlKTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXBvd2VyLWltcGFjdCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC41NCkgcm90YXRlKDBkZWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMjglIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45Nikgcm90YXRlKDJkZWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMykgcm90YXRlKDhkZWcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1wb3dlci1mcmFtZSB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC44NCk7XG4gICAgICAgIH1cblxuICAgICAgICAzNCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjAyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjE2KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtY2FwdHVyZS1oaXQge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgZmlsdGVyOiBzYXR1cmF0ZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDM1JSB7XG4gICAgICAgICAgZmlsdGVyOiBzYXR1cmF0ZSgxLjM1KSBicmlnaHRuZXNzKDEuMDgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtbW92aW5nLXNvdXJjZSAuY2hlc3NpbWFscy1waWVjZSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDY4JTtcbiAgICAgICAgaGVpZ2h0OiA3NCU7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtZmlsbDogdmFyKC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1maWxsKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXNpZGU6IHZhcigtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtc2lkZSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1saW5lOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLWxpbmUpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utb3V0bGluZTogcmdiYSg4MiwgNjUsIDQ2LCAwLjM0KTtcbiAgICAgICAgZmlsdGVyOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNoYWRvdyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlLmlzLWJsYWNrIHtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1maWxsOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLWZpbGwpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utc2lkZTogdmFyKC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaWRlKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWxpbmU6IHZhcigtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stbGluZSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1vdXRsaW5lOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjIpO1xuICAgICAgICBmaWx0ZXI6IHZhcigtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stc2hhZG93KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtbW92aW5nLXBpZWNlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHotaW5kZXg6IDY7XG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLyB2YXIoLS1ib2FyZC1zaXplKSk7XG4gICAgICAgIGhlaWdodDogY2FsYygxMDAlIC8gdmFyKC0tYm9hcmQtc2l6ZSkpO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoXG4gICAgICAgICAgY2FsYyh2YXIoLS1mcm9tLWNvbCkgKiAxMDAlKSxcbiAgICAgICAgICBjYWxjKHZhcigtLWZyb20tcm93KSAqIDEwMCUpXG4gICAgICAgICk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1waWVjZS10cmF2ZWwgMzYwbXMgY3ViaWMtYmV6aWVyKDAuMiwgMC44MiwgMC4yNCwgMSkgYm90aDtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXBpZWNlLXRyYXZlbCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZShcbiAgICAgICAgICAgICAgY2FsYyh2YXIoLS1mcm9tLWNvbCkgKiAxMDAlKSxcbiAgICAgICAgICAgICAgY2FsYyh2YXIoLS1mcm9tLXJvdykgKiAxMDAlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgc2NhbGUoMSk7XG4gICAgICAgIH1cblxuICAgICAgICA2OCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKFxuICAgICAgICAgICAgICBjYWxjKHZhcigtLXRvLWNvbCkgKiAxMDAlKSxcbiAgICAgICAgICAgICAgY2FsYyh2YXIoLS10by1yb3cpICogMTAwJSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIHNjYWxlKDEuMDcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoXG4gICAgICAgICAgICAgIGNhbGModmFyKC0tdG8tY29sKSAqIDEwMCUpLFxuICAgICAgICAgICAgICBjYWxjKHZhcigtLXRvLXJvdykgKiAxMDAlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgc2NhbGUoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2VfX3NpZGUsXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9faGVhZCxcbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19jb2xsYXIsXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fbmVjayxcbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19iYXNlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGwpO1xuICAgICAgICBib3JkZXI6IG1heCgxcHgsIDEuMjUlKSBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLW91dGxpbmUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19zaWRlIHtcbiAgICAgICAgdG9wOiA0NiU7XG4gICAgICAgIHotaW5kZXg6IDA7XG4gICAgICAgIHdpZHRoOiA1OCU7XG4gICAgICAgIGhlaWdodDogNDElO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAzNCUgMzQlIDEyJSAxMiU7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDk2ZGVnLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXNpZGUpIDAgMzQlLCB0cmFuc3BhcmVudCAzNSUpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtZmlsbCk7XG4gICAgICAgIGNsaXAtcGF0aDogcG9seWdvbigyMiUgMCwgNzglIDAsIDk2JSAxMDAlLCA0JSAxMDAlKTtcbiAgICAgICAgb3BhY2l0eTogMC45MjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2VfX2hlYWQge1xuICAgICAgICB0b3A6IDElO1xuICAgICAgICB6LWluZGV4OiA0O1xuICAgICAgICB3aWR0aDogNDglO1xuICAgICAgICBoZWlnaHQ6IDQwJTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzMCUgMjIlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzIpIDAgMTMlLCB0cmFuc3BhcmVudCAxNCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yOCkgMCAzNCUsIHRyYW5zcGFyZW50IDM1JSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1maWxsKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAtMC4xOHJlbSAtMC4xMnJlbSAwIHJnYmEoODIsIDY1LCA0NiwgMC4wNiksXG4gICAgICAgICAgaW5zZXQgMCAtMXB4IDAgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1saW5lKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2UuaXMtYmxhY2sgLmNoZXNzaW1hbHMtcGllY2VfX2hlYWQge1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAuMThyZW0gLTAuMTJyZW0gMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDYpLFxuICAgICAgICAgIGluc2V0IDAgLTFweCAwIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtbGluZSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19jb2xsYXIge1xuICAgICAgICB0b3A6IDM3JTtcbiAgICAgICAgei1pbmRleDogNTtcbiAgICAgICAgd2lkdGg6IDcyJTtcbiAgICAgICAgaGVpZ2h0OiAxNSU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxODBkZWcsICNmNWNkNzcgMCUsIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtZ29sZCkgNTUlLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWdvbGQtZGFyaykgMTAwJSk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtZ29sZC1kYXJrKSA3MiUsIHRyYW5zcGFyZW50KTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAuMTJyZW0gMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjgpLFxuICAgICAgICAgIGluc2V0IDAgLTAuMDhyZW0gMCByZ2JhKDcwLCA0NiwgMTgsIDAuMjIpLFxuICAgICAgICAgIDAgMC4wOHJlbSAwLjE4cmVtIHJnYmEoNzAsIDQ2LCAxOCwgMC4xNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19uZWNrIHtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIHdpZHRoOiA1MiU7XG4gICAgICAgIGhlaWdodDogMzElO1xuICAgICAgICBjbGlwLXBhdGg6IHBvbHlnb24oMTYlIDAsIDg0JSAwLCAxMDAlIDEwMCUsIDAgMTAwJSk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEwMGRlZywgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1zaWRlKSAwIDI4JSwgdHJhbnNwYXJlbnQgMjklKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGwpLCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1maWxsKSA3OCUsIHZhcigtLWNoZXNzaW1hbHMtcGllY2Utc2lkZSkpKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAtMC4xMnJlbSAwLjFyZW0gMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fYmFzZSB7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgei1pbmRleDogNjtcbiAgICAgICAgd2lkdGg6IDg2JTtcbiAgICAgICAgaGVpZ2h0OiAxNyU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNDJyZW0gMC40MnJlbSAwLjIycmVtIDAuMjJyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEwMGRlZywgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1zaWRlKSAwIDE4JSwgdHJhbnNwYXJlbnQgMTklKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1maWxsKSA5MiUsICNmZmZmZmYpLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGwpKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAuMTJyZW0gMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQpLFxuICAgICAgICAgIGluc2V0IDAgLTAuMXJlbSAwIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtbGluZSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXRhcmdldCB7XG4gICAgICAgIHdpZHRoOiAxNiU7XG4gICAgICAgIGhlaWdodDogMTYlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1tb3ZlKTtcbiAgICAgICAgb3BhY2l0eTogMC45O1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMC45cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tb3ZlLXJnYiksIDAuNDIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jYXJkcyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjYyNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBpc29sYXRpb246IGlzb2xhdGU7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogbWlubWF4KDUuNHJlbSwgMWZyKSBhdXRvO1xuICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgICAgcGxhY2UtaXRlbXM6IHN0cmV0Y2g7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDguMTVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNTVyZW0gMC41NXJlbSAwLjdyZW07XG4gICAgICAgIGJvcmRlcjogMC4xMnJlbSBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC41NCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMTI1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDE4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpLCB0cmFuc3BhcmVudCAzNiUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjI0KSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLWRlZXApLCAwLjA4KSA1OCUsIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMC4xNHJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDYpLFxuICAgICAgICAgIDAgMC41NXJlbSAxLjJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMTQpO1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIGJvcmRlci1jb2xvciAxODBtcyBlYXNlLFxuICAgICAgICAgIGJveC1zaGFkb3cgMTgwbXMgZWFzZSxcbiAgICAgICAgICB0cmFuc2Zvcm0gMTgwbXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzX19oZWFkaW5nIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyBwIHtcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzX19oZWFkaW5nIHNwYW4ge1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuMjhyZW0gMC42MnJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tYWdpYy1ob3QpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDE2JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQyKSwgdHJhbnNwYXJlbnQgMzAlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA3NiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjIpLCB0cmFuc3BhcmVudCA1NiUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjIpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDQpKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAycHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMjgpLFxuICAgICAgICAgIDAgMCAxLjM1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjQ4KSxcbiAgICAgICAgICAwIDAuOXJlbSAycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjE4KTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jYXJkcyBidXR0b24uaXMtc2VsZWN0ZWQ6OmJlZm9yZSxcbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy1zZWxlY3RlZDo6YWZ0ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAtMC41cmVtO1xuICAgICAgICB6LWluZGV4OiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbiA+ICoge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy1zZWxlY3RlZDo6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE4JSAyNCUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjg4KSAwIDAuMDhyZW0sIHRyYW5zcGFyZW50IDAuMXJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA3OCUgMjAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODYpIDAgMC4wN3JlbSwgdHJhbnNwYXJlbnQgMC4wOXJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA4NiUgNjIlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC43MikgMCAwLjA2cmVtLCB0cmFuc3BhcmVudCAwLjA4cmVtKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDI4JSA3OCUsIHJnYmEoMjU1LCAyNDUsIDExMSwgMC43OCkgMCAwLjA3cmVtLCB0cmFuc3BhcmVudCAwLjA5cmVtKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDU0JSA4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjY4KSAwIDAuMDVyZW0sIHRyYW5zcGFyZW50IDAuMDdyZW0pO1xuICAgICAgICBvcGFjaXR5OiAwLjg7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFsc01hZ2ljUGFydGljbGVzIDEuOHMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy1zZWxlY3RlZDo6YWZ0ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGNvbmljLWdyYWRpZW50KGZyb20gMTJkZWcsIHRyYW5zcGFyZW50IDAgMTZkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjIpIDE2ZGVnIDIyZGVnLCB0cmFuc3BhcmVudCAyMmRlZyA0NGRlZyk7XG4gICAgICAgIG9wYWNpdHk6IDAuNjg7XG4gICAgICAgIGZpbHRlcjogYmx1cigwLjA0cmVtKTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzTWFnaWNBdXJhIDMuMnMgbGluZWFyIGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jYXJkcyBidXR0b24uaXMtdXNlZCB7XG4gICAgICAgIG9wYWNpdHk6IDAuNDI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDUuNHJlbTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgYm9yZGVyOiAwLjEycmVtIHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1kZWVwKSwgMC42Mik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuOXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSAzNCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45NiksIHRyYW5zcGFyZW50IDQ0JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMzgpLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtZGVlcCksIDAuMTQpKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWJnKTtcbiAgICAgICAgY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXRleHQpIDkyJSwgIzAwMCk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMC4xMnJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDgpLFxuICAgICAgICAgIGluc2V0IDAgLTAuMThyZW0gMC40NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtZGVlcCksIDAuMTQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hbmltYWwtZmFjZSBpbWcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IG1pbig1LjQ1cmVtLCA4OCUpO1xuICAgICAgICBoZWlnaHQ6IG1pbig1LjQ1cmVtLCA4OCUpO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgIC13ZWJraXQtdXNlci1kcmFnOiBub25lO1xuICAgICAgICBvYmplY3QtZml0OiBjb250YWluO1xuICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgIGZpbHRlcjogdmFyKC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1maWx0ZXIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3QtYXZhdGFyLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19hdmF0YXIge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3QtYXZhdGFyIGltZyxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fYXZhdGFyIGltZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgIC13ZWJraXQtdXNlci1kcmFnOiBub25lO1xuICAgICAgICBvYmplY3QtZml0OiBjb250YWluO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jYXJkcyBidXR0b24uaXMtc2VsZWN0ZWQgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2UsXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtcmVhZHkgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uOm5vdCguaXMtdXNlZCkgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2Uge1xuICAgICAgICBjb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtdGV4dCkgOTQlLCAjMDAwKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzLmlzLWxvY2tlZCAuY2hlc3NpbWFscy1hbmltYWwtZmFjZSB7XG4gICAgICAgIGZpbHRlcjogdmFyKC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1sb2NrZWQtZmlsdGVyKTtcbiAgICAgICAgb3BhY2l0eTogMC44NjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzLmlzLWxvY2tlZCAuY2hlc3NpbWFscy1hbmltYWwtZmFjZSBpbWcsXG4gICAgICAuY2hlc3NpbWFscy1jYXJkcyBidXR0b24uaXMtdXNlZCAuY2hlc3NpbWFscy1hbmltYWwtZmFjZSBpbWcge1xuICAgICAgICBvcGFjaXR5OiB2YXIoLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWxvY2tlZC1pbWctb3BhY2l0eSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXVzZXMge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMC41cmVtO1xuICAgICAgICByaWdodDogMC41cmVtO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgbWluLXdpZHRoOiAxLjcycmVtO1xuICAgICAgICBoZWlnaHQ6IDEuMzVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwIDAuMzhyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwLjM1cmVtIDAuOXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjIyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgc3Ryb25nIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMC45cmVtLCAyLjN2dywgMS4wOHJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA1O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtbG9ja2VkIC5jaGVzc2ltYWxzLWNhcmRzIHtcbiAgICAgICAgb3BhY2l0eTogMC42ODtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzLmlzLXJlYWR5IHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC40Nik7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAgMXB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjEyKSxcbiAgICAgICAgICAwIDFyZW0gMi40cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjEyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzLmlzLXJlYWR5IC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbjpub3QoLmlzLXVzZWQpIHtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzUG93ZXJQdWxzZSAxODAwbXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2Vycy5pcy11bmxvY2stcHVsc2Uge1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHNQb3dlcnNVbmxvY2tlZCAxMTgwbXMgZWFzZS1vdXQgYm90aDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzLmlzLXVubG9jay1wdWxzZSAuY2hlc3NpbWFscy1jYXJkcyBidXR0b246bm90KC5pcy11c2VkKSB7XG4gICAgICAgIGFuaW1hdGlvbjpcbiAgICAgICAgICBjaGVzc2ltYWxzUG93ZXJJZ25pdGUgNzYwbXMgZWFzZS1vdXQgYm90aCxcbiAgICAgICAgICBjaGVzc2ltYWxzUG93ZXJQdWxzZSAxODAwbXMgZWFzZS1pbi1vdXQgNzYwbXMgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFsc1Bvd2VyUHVsc2Uge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDApO1xuICAgICAgICB9XG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDEuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4yNCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzUG93ZXJzVW5sb2NrZWQge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAgIDAgMCAwIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwKSxcbiAgICAgICAgICAgIDAgMXJlbSAyLjRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMTIpO1xuICAgICAgICB9XG5cbiAgICAgICAgMzQlIHtcbiAgICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgICAgMCAwIDAgMC4xOHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4yOCksXG4gICAgICAgICAgICAwIDAgMi4ycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjM4KSxcbiAgICAgICAgICAgIDAgMXJlbSAyLjRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMTYpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAgIDAgMCAwIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwKSxcbiAgICAgICAgICAgIDAgMXJlbSAyLjRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMTIpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFsc1Bvd2VySWduaXRlIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgwLjk2KTtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMCk7XG4gICAgICAgIH1cblxuICAgICAgICA0MiUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC4wOHJlbSkgc2NhbGUoMS4wMjUpO1xuICAgICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgICAwIDAgMCAwLjE0cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjI0KSxcbiAgICAgICAgICAgIDAgMCAxLjVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuNDYpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDEpO1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHNNYWdpY1BhcnRpY2xlcyB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjU0O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgwLjk0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTAuMThyZW0pIHNjYWxlKDEuMDIpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFsc01hZ2ljQXVyYSB7XG4gICAgICAgIHRvIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxdHVybik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWN0aW9ucyB7XG4gICAgICAgIG9yZGVyOiA2O1xuICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IHN0cmV0Y2g7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgobWluKDEwMCUsIDEycmVtKSwgMWZyKSk7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICAgIG1hcmdpbi10b3A6IDFyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLWdhbWUge1xuICAgICAgICBtYXgtd2lkdGg6IG1pbig5NnZ3LCA5MHJlbSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCB7XG4gICAgICAgIHBhZGRpbmc6IDAuODc1cmVtIDFyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLXN0YXR1cyxcbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLWFjdGlvbnMsXG4gICAgICAuY2hlc3NpbWFscy1zaGVsbC0tcHJvamVjdGlvbiAuY2hlc3NpbWFscy1vbmxpbmUsXG4gICAgICAuY2hlc3NpbWFscy1zaGVsbC0tcHJvamVjdGlvbiAuY2hlc3NpbWFscy1yZXBsYXksXG4gICAgICAuY2hlc3NpbWFscy1zaGVsbC0tcHJvamVjdGlvbiAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1cyB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLWFyZW5hIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAganVzdGlmeS1pdGVtczogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaGVsbC0tcHJvamVjdGlvbiAuY2hlc3NpbWFscy1ib2FyZC13cmFwIHtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWJvYXJkLXJhZGl1czogbWluKDAuNjI1cmVtLCAxMHB4KTtcbiAgICAgICAgd2lkdGg6IG1pbig5NnZ3LCA4MnZoLCA1OHJlbSk7XG4gICAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtYm9hcmQtZnJhbWUge1xuICAgICAgICBmbGV4LWJhc2lzOiBhdXRvO1xuICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA3NjBweCkge1xuICAgICAgICAuY2hlc3NpbWFscy1nYW1lIHtcbiAgICAgICAgICBnYXA6IDFyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQsXG4gICAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyxcbiAgICAgICAgLmNoZXNzaW1hbHMtYXJlbmEsXG4gICAgICAgIC5jaGVzc2ltYWxzLXJlcGxheSxcbiAgICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0LFxuICAgICAgICAuY2hlc3NpbWFscy1hY3Rpb25zIHtcbiAgICAgICAgICBncmlkLWNvbHVtbjogMSAvIC0xO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtYXJlbmEge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcik7XG4gICAgICAgICAganVzdGlmeS1pdGVtczogY2VudGVyO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcbiAgICAgICAgICBnYXA6IDAuODVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1zaGVsbDpub3QoLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24pIC5jaGVzc2ltYWxzLWJvYXJkLWZyYW1lIHtcbiAgICAgICAgICBmbGV4LWJhc2lzOiBtaW4oMTAwJSwgY2xhbXAoMjhyZW0sIGNhbGMoMTAwdmggLSAyMnJlbSksIDUwcmVtKSk7XG4gICAgICAgICAgd2lkdGg6IG1pbigxMDAlLCBjbGFtcCgyOHJlbSwgY2FsYygxMDB2aCAtIDIycmVtKSwgNTByZW0pKTtcbiAgICAgICAgICBtYXgtd2lkdGg6IG1pbig1MHJlbSwgY2xhbXAoMjhyZW0sIGNhbGMoMTAwdmggLSAyMnJlbSksIDUwcmVtKSk7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wb3dlcnMge1xuICAgICAgICAgIHdpZHRoOiBtaW4oMTAwJSwgY2xhbXAoMjhyZW0sIGNhbGMoMTAwdmggLSAyMnJlbSksIDUwcmVtKSk7XG4gICAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDExcmVtLCAwLjY4ZnIpIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgZ2FwOiAwLjhyZW07XG4gICAgICAgICAgcGFkZGluZzogMC43OHJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jYXJkcyBidXR0b24ge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogbWlubWF4KDMuODVyZW0sIDFmcikgYXV0bztcbiAgICAgICAgICBtaW4taGVpZ2h0OiA1Ljg1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2Uge1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDMuODVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1hbmltYWwtZmFjZSBpbWcge1xuICAgICAgICAgIHdpZHRoOiBtaW4oMy44NXJlbSwgODglKTtcbiAgICAgICAgICBoZWlnaHQ6IG1pbigzLjg1cmVtLCA4OCUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHAge1xuICAgICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMS4wNXJlbTtcbiAgICAgICAgcGFkZGluZy10b3A6IDAuMjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNldHRpbmdzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjg1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0LCB2YXIoLS1jaGVzc2ltYWxzLXRleHQpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2V0dGluZ3MgYXJ0aWNsZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC42NXJlbTtcbiAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1ib3JkZXIsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMikpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAxNCUgOCUsIGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLWNhcmQsICNmZmZmZmYpIDgyJSwgdHJhbnNwYXJlbnQpLCB0cmFuc3BhcmVudCAyOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMSksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4wNikpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtY2FyZC1zdHJvbmcsIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc3Ryb25nKSk7XG4gICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1zdXJmYWNlLCAjZmZmZmZmKSA0OCUsIHRyYW5zcGFyZW50KTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXNldHRpbmdzLW1vZGFsIHZhbC1tb2RhbC1zaGVsbCBpb24tdG9vbGJhciB7XG4gICAgICAgIC0tYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1zdXJmYWNlKTtcbiAgICAgICAgLS1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXNldHRpbmdzLW1vZGFsIHZhbC1tb2RhbC1zaGVsbCBpb24tY29udGVudCB7XG4gICAgICAgIC0tYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1zdXJmYWNlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy1zZXR0aW5ncy1tb2RhbCB2YWwtbW9kYWwtc2hlbGwgaW9uLWJ1dHRvbiB7XG4gICAgICAgIC0tY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy1zZXR0aW5ncy1tb2RhbCAuY2hlc3NpbWFscy1zZXR0aW5ncyB2YWwtdG9nZ2xlLWlucHV0IGlvbi10b2dnbGUge1xuICAgICAgICAtLXRyYWNrLWJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTQpO1xuICAgICAgICAtLXRyYWNrLWJhY2tncm91bmQtY2hlY2tlZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgLS1oYW5kbGUtYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkKTtcbiAgICAgICAgLS1oYW5kbGUtYmFja2dyb3VuZC1jaGVja2VkOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXNldHRpbmdzLW1vZGFsIC5jaGVzc2ltYWxzLXNldHRpbmdzIHZhbC1yYW5nZS1pbnB1dCBpb24tbGFiZWwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXNldHRpbmdzLW1vZGFsIC5jaGVzc2ltYWxzLXNldHRpbmdzIHZhbC1yYW5nZS1pbnB1dCBpb24tcmFuZ2Uge1xuICAgICAgICAtLWJhci1iYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE0KTtcbiAgICAgICAgLS1iYXItYmFja2dyb3VuZC1hY3RpdmU6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIC0tYmFyLWhlaWdodDogMC4zMnJlbTtcbiAgICAgICAgLS1iYXItYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIC0ta25vYi1iYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICAtLWtub2Itc2l6ZTogMS4yOHJlbTtcbiAgICAgICAgLS1waW4tYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgLS1waW4tY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXRleHQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGp1c3RpZnktaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxcmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsIHZhcigtLWNoZXNzaW1hbHMtdGV4dCkpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dF9fbG9nbyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogbWluKDI1cmVtLCA4OCUpO1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgIG9iamVjdC1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMC41cmVtIDAuN3JlbSByZ2JhKDQ2LCA1OCwgNDQsIDAuMTQpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWJvdXRfX3RoYW5rcyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvciwgdmFyKC0tY2hlc3NpbWFscy10ZXh0KSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4wOHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dF9fZmVlZGJhY2sge1xuICAgICAgICBtYXgtd2lkdGg6IDMwcmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dCBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgdmFyKC0tY2hlc3NpbWFscy1tdXRlZCkpO1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3NTA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ1O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFib3V0IGRsIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZ2FwOiAwLjY1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dCBkbCBkaXYge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC44NXJlbSAwLjk1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE2KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA4KSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWlvbi1jYXJkLWJhY2tncm91bmQsICNmZmYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dCBkdCxcbiAgICAgIC5jaGVzc2ltYWxzLWFib3V0IGRkIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dCBkdCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWJvdXQgZGQge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsIHZhcigtLWNoZXNzaW1hbHMtdGV4dCkpO1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19oZXJvIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3gtc2hhZG93OiAwIDAuODVyZW0gMS44cmVtIHJnYmEoNDYsIDU4LCA0NCwgMC4xMik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19wb3dlcnMsXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19fbm90ZSxcbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19zdGVwcyBhcnRpY2xlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtYm9yZGVyLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE2KSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtY2FyZCwgI2ZmZmZmZik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXRleHQsIHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMmYyYTNhKSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19zZWN0aW9uLXRpdGxlIHNwYW4ge1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IHN0YXJ0O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC4yNHJlbSAwLjU1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3NlY3Rpb24tdGl0bGUge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMzVyZW07XG4gICAgICAgIHBhZGRpbmctaW5saW5lOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19fc2VjdGlvbi10aXRsZSBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3N0ZXBzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuN3JlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3N0ZXBzIGFydGljbGUge1xuICAgICAgICBhbGlnbi1jb250ZW50OiBzdGFydDtcbiAgICAgICAgcGFkZGluZzogMC45cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19fc3RlcHMgYXJ0aWNsZSA+IGltZyxcbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19wb3dlcnMgPiBpbWcsXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19fbm90ZSA+IGltZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogNC43NXJlbTtcbiAgICAgICAgaGVpZ2h0OiA0Ljc1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjE1cmVtO1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAwLjFyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXN1bi1yZ2IpLCAwLjY4KSxcbiAgICAgICAgICAwIDAuN3JlbSAxLjI1cmVtIHJnYmEoNDYsIDU4LCA0NCwgMC4xNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19wb3dlcnMsXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19fbm90ZSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgcGFkZGluZzogMC45NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3Bvd2VyLWxpc3Qge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC42NXJlbTtcbiAgICAgICAgbWFyZ2luLXRvcDogMC4zNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3Bvd2VyLWxpc3Qgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGp1c3RpZnktaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IDAuMzJyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgbWluLWhlaWdodDogOC4xcmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLWJvcmRlciwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNikpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjhyZW0gMC41MnJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSAwLCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkLCAjZmZmZmZmKSA3OCUsIHRyYW5zcGFyZW50KSwgdHJhbnNwYXJlbnQgNTIlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEpLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc3VuLXJnYiksIDAuMTgpKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLWNhcmQtc3Ryb25nLCAjZmZmOGRmKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dCwgdmFyKC0tY2hlc3NpbWFscy10ZXh0KSk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMXB4IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXN1cmZhY2UsICNmZmZmZmYpIDY0JSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIDAgMC41NXJlbSAxLjE1cmVtIHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtc2hhZG93LCByZ2JhKDQ2LCA1OCwgNDQsIDAuMTIpKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wNTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19fcG93ZXItbGlzdCBzdHJvbmcsXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19fcG93ZXItbGlzdCBzbWFsbCB7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3Bvd2VyLWxpc3Qgc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjg2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wODtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3Bvd2VyLWxpc3Qgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42OXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19wb3dlci1saXN0IGltZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMy4yNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAzLjI1cmVtO1xuICAgICAgICBvYmplY3QtZml0OiBjb250YWluO1xuICAgICAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMC4yNXJlbSAwLjM1cmVtIHJnYmEoNDYsIDU4LCA0NCwgMC4xNikpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19fbm90ZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXN1bi1yZ2IpLCAwLjM0KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc3VuLXJnYiksIDAuMSksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMDQpKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLWNhcmQsICNmZmZmZmYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyBhcnRpY2xlID4gc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAycmVtO1xuICAgICAgICBoZWlnaHQ6IDJyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIGFydGljbGUgPiBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGdhcDogMC4zNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgaDMsXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyBwLFxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgdWwge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIGgzIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgcCxcbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIGxpIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtbXV0ZWQsIHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM2ZjZhN2EpKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzYwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyB1bCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxLjE1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcmltYXJ5LFxuICAgICAgLmNoZXNzaW1hbHMtc2Vjb25kYXJ5IHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgICAgbWluLWhlaWdodDogMy42MjVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcmltYXJ5IHtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxLjEyNXJlbSAyLjhyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yOCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNlY29uZGFyeSB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcmltYXJ5LmlzLXdvcmtpbmcsXG4gICAgICAuY2hlc3NpbWFscy1zZWNvbmRhcnkuaXMtd29ya2luZyB7XG4gICAgICAgIGN1cnNvcjogd2FpdDtcbiAgICAgICAgb3BhY2l0eTogMC44MjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYnV0dG9uLXNwaW5uZXIge1xuICAgICAgICB3aWR0aDogMXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxcmVtO1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgYm9yZGVyOiAwLjE0cmVtIHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1zcGluIDcyMG1zIGxpbmVhciBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDU2MHB4KSB7XG4gICAgICAgIC5jaGVzc2ltYWxzLWhvbWUtYWN0aW9ucyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1ob21lLWFjdGlvbiB7XG4gICAgICAgICAgbWluLWhlaWdodDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19zdGVwcyxcbiAgICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3Bvd2VycyxcbiAgICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX25vdGUge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3Bvd2VyLWxpc3Qge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXNpemUsXG4gICAgICAgIC5jaGVzc2ltYWxzLW1vZGUsXG4gICAgICAgIC5jaGVzc2ltYWxzLWFjdGlvbnMge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcGxheS1vcHRpb25zIC5jaGVzc2ltYWxzLW5pZ2h0bWFyZSB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBhdGgtY3RhLFxuICAgICAgICAuY2hlc3NpbWFscy1wYXRoLWhlcm8sXG4gICAgICAgIC5jaGVzc2ltYWxzLXBhdGgtZ3JpZCxcbiAgICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oaWdobGlnaHRzLFxuICAgICAgICAuY2hlc3NpbWFscy1wYXRoLXJpbmdzLFxuICAgICAgICAuY2hlc3NpbWFscy1wYXRoLXN0YXRzIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBhdGgtaGVybyB7XG4gICAgICAgICAganVzdGlmeS1pdGVtczogc3RhcnQ7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wYXRoLWhlcm9fX2FydCB7XG4gICAgICAgICAgd2lkdGg6IDYuMjVyZW07XG4gICAgICAgICAgaGVpZ2h0OiA2LjI1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcGF0aC1jdGFfX2FjdGlvbiB7XG4gICAgICAgICAganVzdGlmeS1zZWxmOiBzdHJldGNoO1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oZXJvX19tZWRhbCB7XG4gICAgICAgICAganVzdGlmeS1zZWxmOiBzdHJldGNoO1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDUuNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBhdGgtYmFycyBzcGFuIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpIGF1dG87XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wYXRoLWJhcnMgaSB7XG4gICAgICAgICAgZ3JpZC1jb2x1bW46IDEgLyAtMTtcbiAgICAgICAgICBvcmRlcjogMztcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jdGFfX2FjdGlvbnMge1xuICAgICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jdGFfX3JpdmFsIHtcbiAgICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaGVybyxcbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWZvY3VzIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkIHtcbiAgICAgICAgICBwYWRkaW5nOiAwLjg1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX3N0YXRzIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1nYW1lIHtcbiAgICAgICAgICBnYXA6IDAuNTVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQge1xuICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKSBhdXRvO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgICAgbWluLWhlaWdodDogMDtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAwLjk1cmVtO1xuICAgICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZF9fY29weSB7XG4gICAgICAgICAgZ2FwOiAwLjFyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NoaXAge1xuICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjE4cmVtIDAuNXJlbTtcbiAgICAgICAgICBmb250LXNpemU6IDAuNnJlbTtcbiAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNDVlbTtcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQgc3Ryb25nIHtcbiAgICAgICAgICBmb250LXNpemU6IGNsYW1wKDAuOTJyZW0sIDQuNHZ3LCAxLjEycmVtKTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS4wODtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCBwIHtcbiAgICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwIHtcbiAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICAgIHBhZGRpbmc6IDAuMjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX2F2YXRhciB7XG4gICAgICAgICAgZmxleDogMCAwIDEuOHJlbTtcbiAgICAgICAgICB3aWR0aDogMS44cmVtO1xuICAgICAgICAgIGhlaWdodDogMS44cmVtO1xuICAgICAgICAgIGFzcGVjdC1yYXRpbzogMSAvIDE7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdCA6Om5nLWRlZXAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwIC5jaGVzc2ltYWxzLXR1cm4tYXZhdGFyIHtcbiAgICAgICAgICB3aWR0aDogMS44cmVtO1xuICAgICAgICAgIG1pbi13aWR0aDogMS44cmVtO1xuICAgICAgICAgIGhlaWdodDogMS44cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX190ZXh0IHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgICAgZ2FwOiAwLjNyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1zdGF0dXMgZGl2IHtcbiAgICAgICAgICBnYXA6IDAuMTRyZW07XG4gICAgICAgICAgbWluLWhlaWdodDogMi4ycmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuODJyZW07XG4gICAgICAgICAgcGFkZGluZzogMC4zNHJlbSAwLjNyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1zdGF0dXMgc21hbGwge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC41OHJlbTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS4wNTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyBzdHJvbmcge1xuICAgICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMC43OHJlbSwgMy4ydncsIDAuOTRyZW0pO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA1O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmUge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjU1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX3JpdmFsID4gLmNoZXNzaW1hbHMtYm90LWF2YXRhciB7XG4gICAgICAgICAgd2lkdGg6IDIuMzVyZW07XG4gICAgICAgICAgaGVpZ2h0OiAyLjM1cmVtO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMS4xNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19yaXZhbCBwIHtcbiAgICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDE7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fbWV0cmljcyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICAgIGdhcDogMC4zcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX21ldHJpY3Mgc3BhbiB7XG4gICAgICAgICAgbWluLWhlaWdodDogMi4zNXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjMycmVtIDAuMzZyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fbWV0cmljcyBzbWFsbCB7XG4gICAgICAgICAgZm9udC1zaXplOiAwLjU2cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX21ldHJpY3MgYiB7XG4gICAgICAgICAgZm9udC1zaXplOiAwLjgycmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvIHtcbiAgICAgICAgICBwYWRkaW5nOiAwLjU1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19jYXJkIHtcbiAgICAgICAgICBnYXA6IDAuNDJyZW07XG4gICAgICAgICAgd2lkdGg6IG1pbigxNS41cmVtLCA5NCUpO1xuICAgICAgICAgIHBhZGRpbmc6IDAuNnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fYXZhdGFyIHtcbiAgICAgICAgICB3aWR0aDogMy4wNXJlbTtcbiAgICAgICAgICBoZWlnaHQ6IDMuMDVyZW07XG4gICAgICAgICAgZm9udC1zaXplOiAxLjYycmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19jb3B5IHN0cm9uZyB7XG4gICAgICAgICAgZm9udC1zaXplOiAxLjAycmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19jb3B5IHAge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDE7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2ZhY3RzIGIge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC43NHJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRybyAuY2hlc3NpbWFscy1wcmltYXJ5IHtcbiAgICAgICAgICBtaW4taGVpZ2h0OiAyLjE1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdGlwLFxuICAgICAgICAuY2hlc3NpbWFscy1yZXN1bHQsXG4gICAgICAgIC5jaGVzc2ltYWxzLXJlcGxheSxcbiAgICAgICAgLmNoZXNzaW1hbHMtb25saW5lLXN0YXR1cyxcbiAgICAgICAgLmNoZXNzaW1hbHMtdHV0b3JpYWwge1xuICAgICAgICAgIGdhcDogMC4ycmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgICAgcGFkZGluZzogMC43cmVtIDAuNzVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10aXAgc3Ryb25nLFxuICAgICAgICAuY2hlc3NpbWFscy1yZXN1bHQgc3Ryb25nLFxuICAgICAgICAuY2hlc3NpbWFscy1yZXBsYXkgc3Ryb25nLFxuICAgICAgICAuY2hlc3NpbWFscy10dXRvcmlhbCBzdHJvbmcge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXRpcCBwLFxuICAgICAgICAuY2hlc3NpbWFscy1yZXN1bHQgcCB7XG4gICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjg7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1yZXN1bHRfX3N0YXRzIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1yZXBsYXkge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdHV0b3JpYWwge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5X19hY3Rpb25zIHtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHN0cmV0Y2g7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1yZXBsYXlfX2FjdGlvbnMgLmNoZXNzaW1hbHMtc2Vjb25kYXJ5IHtcbiAgICAgICAgICBmbGV4OiAxIDEgOHJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWFyZW5hIHtcbiAgICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLXdyYXAge1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIG1hcmdpbi1pbmxpbmU6IDA7XG4gICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLWZyYW1lIHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyB7XG4gICAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjU1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzX19oZWFkaW5nIHtcbiAgICAgICAgICBnYXA6IDAuNHJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyBoMiB7XG4gICAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzX19oZWFkaW5nIHNwYW4ge1xuICAgICAgICAgIHBhZGRpbmc6IDAuMjJyZW0gMC40OHJlbTtcbiAgICAgICAgICBmb250LXNpemU6IDAuNjhyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wb3dlcnMgcCB7XG4gICAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2FyZHMge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgICBnYXA6IDAuMzVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jYXJkcyBidXR0b24ge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogbWlubWF4KDMuNjVyZW0sIDFmcikgYXV0bztcbiAgICAgICAgICBnYXA6IDAuM3JlbTtcbiAgICAgICAgICBtaW4taGVpZ2h0OiA1LjRyZW07XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMC44NXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjNyZW0gMC4yNHJlbSAwLjQycmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2Uge1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDMuNjVyZW07XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMC42OHJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIGltZyB7XG4gICAgICAgICAgd2lkdGg6IG1pbigzLjU1cmVtLCA5MiUpO1xuICAgICAgICAgIGhlaWdodDogbWluKDMuNTVyZW0sIDkyJSk7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jYXJkcyBzdHJvbmcge1xuICAgICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMC42NHJlbSwgMi44dncsIDAuNzhyZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtYm9hcmQge1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWNoZXNzaW1hbHMtYm9hcmQtcmFkaXVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZSB7XG4gICAgICAgICAgZm9udC1zaXplOiAwLjU4cmVtO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gICAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtY2FwdHVyZSxcbiAgICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1jYXB0dXJlOjpiZWZvcmUsXG4gICAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtY2FwdHVyZTo6YWZ0ZXIsXG4gICAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLW1vdmUtZWZmZWN0LFxuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1tb3ZlLWVmZmVjdDo6YmVmb3JlLFxuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1tb3ZlLWVmZmVjdDo6YWZ0ZXIsXG4gICAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLWNhcHR1cmUtZWZmZWN0LFxuICAgICAgICAuY2hlc3NpbWFscy1tb3ZpbmctcGllY2UsXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRybyxcbiAgICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzX19zY29yZS5pcy1wb3Age1xuICAgICAgICAgIGFuaW1hdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtbW92aW5nLXBpZWNlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZShcbiAgICAgICAgICAgIGNhbGModmFyKC0tdG8tY29sKSAqIDEwMCUpLFxuICAgICAgICAgICAgY2FsYyh2YXIoLS10by1yb3cpICogMTAwJSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hlc3NpbWFsc0dhbWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXVkaW8gPSBpbmplY3QoUmV0cm9BdWRpb1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IG9ubGluZSA9IGluamVjdChDaGVzc2ltYWxzT25saW5lU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2hhbGxlbmdlUHJvZ3Jlc3MgPSBpbmplY3QoQ2hlc3NpbWFsc0NoYWxsZW5nZVByb2dyZXNzU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgdG9hc3QgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBhdXRoID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBoYXB0aWNzID0gaW5qZWN0KEhhcHRpY3NTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBwbGF5ZXJQcm9maWxlcyA9IGluamVjdChNaW5pR2FtZVBsYXllclByb2ZpbGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgcHJpdmF0ZSBib2FyZE9yaWVudGF0aW9uVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG1vdmVBbmltYXRpb25UaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgYm90VHVyblRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZVN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSBvbmxpbmVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBoaXN0b3J5U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgY2hhbGxlbmdlU3RhdHNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBjaGFsbGVuZ2VSdW5zU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgY2hhbGxlbmdlQWN0aXZlUnVuU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgaGlzdG9yeVVpZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGhpc3RvcnlXYXRjaFRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBtb3ZlRWZmZWN0U3RhcnRUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgbW92ZUVmZmVjdENsZWFyVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHNjb3JlUG9wQ2xlYXJUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcG93ZXJVbmxvY2tUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgY2hhbGxlbmdlSW50cm9UaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgdHVyblRpbWVySW50ZXJ2YWw6IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSB0dXJuVGltZXJLZXkgPSAnJztcbiAgcHJpdmF0ZSB0dXJuVGltZXJEZWFkbGluZSA9IDA7XG4gIHByaXZhdGUgdHVyblRpbWVyRHVyYXRpb24gPSAwO1xuICBwcml2YXRlIHR1cm5UaW1lckV4cGlyZWRLZXkgPSAnJztcbiAgcHJpdmF0ZSBwZW5kaW5nT25saW5lR2FtZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgb3BlbmluZ09ubGluZUdhbWVJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG9wZW5lZE9ubGluZUdhbWVJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGxhc3RPdXRjb21lU291bmRLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBsYXN0Q2hhbGxlbmdlSGFuZGxlZEtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGxhc3RNb2RlU3RhdHNIYW5kbGVkS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgnYm9hcmRBbmNob3InKSBwcml2YXRlIGJvYXJkQW5jaG9yPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgcmVhZG9ubHkgYm9hcmRTaXplczogQ2hlc3NpbWFsc0JvYXJkU2l6ZVtdID0gWzYsIDhdO1xuICByZWFkb25seSBsb2NhbE1vZGVzOiBDaGVzc2ltYWxzTG9jYWxNb2RlW10gPSBbJ29uZS1kZXZpY2UnLCAnYm90J107XG4gIHJlYWRvbmx5IGJvdERpZmZpY3VsdGllczogQ2hlc3NpbWFsc0JvdERpZmZpY3VsdHlDaG9pY2VbXSA9IFsnZWFzeScsICdub3JtYWwnLCAnaGFyZCcsICduaWdodG1hcmUnXTtcbiAgcmVhZG9ubHkgbmlnaHRtYXJlUml2YWxzOiBFeGNsdWRlPENoZXNzaW1hbHNOaWdodG1hcmVNb2RlLCAnbm9uZSc+W10gPSBbJ2h1bnQnLCAncHJpZGUnLCAnbWFnbnVzJ107XG4gIHJlYWRvbmx5IGJvdFByb2ZpbGVzID0gQ0hFU1NJTUFMU19CT1RfUFJPRklMRVM7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZUxhZGRlciA9IENIRVNTSU1BTFNfQ0hBTExFTkdFX0xBRERFUjtcbiAgcmVhZG9ubHkgYW5pbWFscyA9IEFOSU1BTFM7XG4gIHJlYWRvbmx5IHZhbHRlY2hDb21wb25lbnRzVmVyc2lvbiA9IFZBTFRFQ0hfQ09NUE9ORU5UU19WRVJTSU9OO1xuICByZWFkb25seSBzY3JlZW4gPSBzaWduYWw8J2hvbWUnIHwgJ2NoYWxsZW5nZScgfCAncGF0aCcgfCAnZ2FtZSc+KCdob21lJyk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkQm9hcmRTaXplID0gc2lnbmFsPENoZXNzaW1hbHNCb2FyZFNpemU+KDYpO1xuICByZWFkb25seSBzZWxlY3RlZExvY2FsTW9kZSA9IHNpZ25hbDxDaGVzc2ltYWxzTG9jYWxNb2RlPignb25lLWRldmljZScpO1xuICByZWFkb25seSBzZWxlY3RlZEJvdERpZmZpY3VsdHkgPSBzaWduYWw8Q2hlc3NpbWFsc0JvdERpZmZpY3VsdHlDaG9pY2U+KCdub3JtYWwnKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWROaWdodG1hcmVNb2RlID0gc2lnbmFsPENoZXNzaW1hbHNOaWdodG1hcmVNb2RlPignbm9uZScpO1xuICByZWFkb25seSBzZWxlY3RlZEJvdFByb2ZpbGVJZCA9IHNpZ25hbDxDaGVzc2ltYWxzQm90UHJvZmlsZUlkPignaHVudGVyJyk7XG4gIHJlYWRvbmx5IGdhbWVCb3RQcm9maWxlSWQgPSBzaWduYWw8Q2hlc3NpbWFsc0JvdFByb2ZpbGVJZCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgZ2FtZSA9IHNpZ25hbDxDaGVzc2ltYWxzR2FtZVN0YXRlPihjcmVhdGVDaGVzc2ltYWxzR2FtZSg2KSk7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZVBoYXNlID0gc2lnbmFsPENoZXNzaW1hbHNDaGFsbGVuZ2VQaGFzZT4oJ2lkbGUnKTtcbiAgcmVhZG9ubHkgY2hhbGxlbmdlUnVuID0gc2lnbmFsPENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZVN0YXRzID0gc2lnbmFsPENoZXNzaW1hbHNDaGFsbGVuZ2VTdGF0cz4odGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy5lbXB0eVN0YXRzKCkpO1xuICByZWFkb25seSBjaGFsbGVuZ2VIaXN0b3J5ID0gc2lnbmFsPENoZXNzaW1hbHNDaGFsbGVuZ2VSdW5bXT4oW10pO1xuICByZWFkb25seSBhY3RpdmVTdG9yZWRDaGFsbGVuZ2VSdW4gPSBzaWduYWw8Q2hlc3NpbWFsc0NoYWxsZW5nZVJ1biB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgY2hhbGxlbmdlTGFzdFdvbiA9IHNpZ25hbDxib29sZWFuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBjaGFsbGVuZ2VMYXN0Qm90ID0gc2lnbmFsPENoZXNzaW1hbHNDaGFsbGVuZ2VCb3QgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZUxhc3RSb3VuZFN0YXRzID0gc2lnbmFsPENoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFN0YXRzIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBjaGFsbGVuZ2VOZXdSZWNvcmQgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBjaGFsbGVuZ2VJbnRyb1Zpc2libGUgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSB0dXJuU2Vjb25kc1JlbWFpbmluZyA9IHNpZ25hbDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkUGllY2VJZCA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkQW5pbWFsID0gc2lnbmFsPENoZXNzaW1hbHNBbmltYWxUeXBlIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBpc1BsYXlPcHRpb25zTW9kYWxPcGVuID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaXNSdWxlc01vZGFsT3BlbiA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGlzU2V0dGluZ3NNb2RhbE9wZW4gPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBpc0Fib3V0TW9kYWxPcGVuID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJpdmF0ZSBwZW5kaW5nU29sb0dhbWVTdGFydCA9IGZhbHNlO1xuICBwcml2YXRlIHBlbmRpbmdBYm91dEZlZWRiYWNrTmF2aWdhdGlvbiA9IGZhbHNlO1xuICByZWFkb25seSB0dXRvcmlhbE1vZGUgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBpc0JvYXJkT3JpZW50aW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbW92aW5nUGllY2UgPSBzaWduYWw8Q2hlc3NpbWFsc01vdmluZ1BpZWNlVmlldyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgbW92ZUVmZmVjdCA9IHNpZ25hbDxDaGVzc2ltYWxzTW92ZUVmZmVjdFZpZXcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHNjb3JlUG9wID0gc2lnbmFsPE1pbmlHYW1lU2NvcmVQb3BNZXRhZGF0YSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgcG93ZXJVbmxvY2tQdWxzZSA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IG1vdmVUcmFpbCA9IGNvbXB1dGVkPENoZXNzaW1hbHNNb3ZlVHJhaWxWaWV3IHwgdW5kZWZpbmVkPigoKSA9PiB7XG4gICAgY29uc3QgZWZmZWN0ID0gdGhpcy5tb3ZlRWZmZWN0KCk7XG4gICAgaWYgKCFlZmZlY3QpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBib2FyZFNpemUgPSB0aGlzLmdhbWUoKS5ib2FyZFNpemU7XG4gICAgY29uc3QgZnJvbUNvbCA9IHRoaXMuZGlzcGxheUNvbEluZGV4KGVmZmVjdC5mcm9tLmNvbCkgKyAwLjU7XG4gICAgY29uc3QgZnJvbVJvdyA9IHRoaXMuZGlzcGxheVJvd0luZGV4KGVmZmVjdC5mcm9tLnJvdykgKyAwLjU7XG4gICAgY29uc3QgdG9Db2wgPSB0aGlzLmRpc3BsYXlDb2xJbmRleChlZmZlY3QudG8uY29sKSArIDAuNTtcbiAgICBjb25zdCB0b1JvdyA9IHRoaXMuZGlzcGxheVJvd0luZGV4KGVmZmVjdC50by5yb3cpICsgMC41O1xuICAgIGNvbnN0IGZyb21YID0gKGZyb21Db2wgLyBib2FyZFNpemUpICogMTAwO1xuICAgIGNvbnN0IGZyb21ZID0gKGZyb21Sb3cgLyBib2FyZFNpemUpICogMTAwO1xuICAgIGNvbnN0IGR4ID0gKCh0b0NvbCAtIGZyb21Db2wpIC8gYm9hcmRTaXplKSAqIDEwMDtcbiAgICBjb25zdCBkeSA9ICgodG9Sb3cgLSBmcm9tUm93KSAvIGJvYXJkU2l6ZSkgKiAxMDA7XG4gICAgY29uc3QgbGVuZ3RoID0gTWF0aC5tYXgoMTAsIE1hdGguaHlwb3QoZHgsIGR5KSk7XG4gICAgY29uc3QgYW5nbGUgPSBNYXRoLmF0YW4yKGR5LCBkeCkgKiAoMTgwIC8gTWF0aC5QSSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgeDogYCR7ZnJvbVh9JWAsXG4gICAgICB5OiBgJHtmcm9tWX0lYCxcbiAgICAgIGxlbmd0aDogYCR7bGVuZ3RofSVgLFxuICAgICAgYW5nbGU6IGAke2FuZ2xlfWRlZ2AsXG4gICAgICBhbmltYWw6IGVmZmVjdC5hbmltYWwsXG4gICAgICBjYXB0dXJlOiBlZmZlY3QuY2FwdHVyZSxcbiAgICB9O1xuICB9KTtcbiAgcmVhZG9ubHkgcG93ZXJDYWxsb3V0ID0gY29tcHV0ZWQ8TWluaUdhbWVDYWxsb3V0TWV0YWRhdGEgfCB1bmRlZmluZWQ+KCgpID0+IHtcbiAgICBjb25zdCBlZmZlY3QgPSB0aGlzLm1vdmVFZmZlY3QoKTtcbiAgICBpZiAoIWVmZmVjdD8uYW5pbWFsKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGFuaW1hbEtleSA9IHRoaXMuY2FwaXRhbGl6ZShlZmZlY3QuYW5pbWFsKTtcbiAgICBjb25zdCByZXN1bHRLZXkgPSBlZmZlY3QuY2FwdHVyZSA/ICdDYXB0dXJlJyA6ICcnO1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogdGhpcy50KGBjaGVzc2ltYWxzUG93ZXJDYWxsb3V0JHthbmltYWxLZXl9JHtyZXN1bHRLZXl9VGl0bGVgKSxcbiAgICAgIGJvZHk6IHRoaXMudChgY2hlc3NpbWFsc1Bvd2VyQ2FsbG91dCR7YW5pbWFsS2V5fSR7cmVzdWx0S2V5fUJvZHlgKSxcbiAgICAgIGltcGFjdDogdGhpcy50KGVmZmVjdC5jYXB0dXJlID8gJ2NoZXNzaW1hbHNQb3dlckNhbGxvdXRDYXB0dXJlSW1wYWN0JyA6ICdjaGVzc2ltYWxzUG93ZXJDYWxsb3V0TW92ZUltcGFjdCcpLFxuICAgICAgaWNvbjogdGhpcy5hbmltYWxHbHlwaChlZmZlY3QuYW5pbWFsKSxcbiAgICAgIGljb25TcmM6IHRoaXMuYW5pbWFsQXNzZXRTcmMoZWZmZWN0LmFuaW1hbCksXG4gICAgICB0b25lUmdiOiB0aGlzLnBvd2VyQ2FsbG91dFRvbmUoZWZmZWN0LmFuaW1hbCksXG4gICAgICBkdXJhdGlvbk1zOiBDSEVTU0lNQUxTX1BPV0VSX0NBTExPVVRfTVMsXG4gICAgICB2YXJpYW50OiBlZmZlY3QuY2FwdHVyZSA/ICdjYXB0dXJlJyA6ICdkZWZhdWx0JyxcbiAgICB9O1xuICB9KTtcbiAgcmVhZG9ubHkgYm90VGhpbmtpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBjb25maXJtQWN0aW9uID0gc2lnbmFsPENoZXNzaW1hbHNDb25maXJtQWN0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpcm1lZEFjdGlvbiA9IHNpZ25hbDxDaGVzc2ltYWxzQ29uZmlybUFjdGlvbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgb25saW5lSm9pbkNvZGUgPSBzaWduYWwoJycpO1xuICByZWFkb25seSBvbmxpbmVMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgb25saW5lQWN0aW9uID0gc2lnbmFsPCdjcmVhdGUnIHwgJ2pvaW4nIHwgJ2FjY2VwdCcgfCAncmVqZWN0JyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgb25saW5lRXJyb3IgPSBzaWduYWwoJycpO1xuICByZWFkb25seSBvbmxpbmVVaWQgPSBzaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBvbmxpbmVIaXN0b3J5ID0gc2lnbmFsPENoZXNzaW1hbHNIaXN0b3J5RW50cnlbXT4oW10pO1xuICByZWFkb25seSByZXN1bWVTcGxhc2hWaXNpYmxlID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgcmVtYXRjaExvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBtb3ZlU3luY2luZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IG9ubGluZUNvbm5lY3Rpb25TdGF0ZSA9IHNpZ25hbDwnaWRsZScgfCAnY29ubmVjdGluZycgfCAnbGl2ZScgfCAnZXJyb3InPignaWRsZScpO1xuICByZWFkb25seSByZXZpZXdJbmRleCA9IHNpZ25hbDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGxvZ2dlZEluVXNlciA9IHRoaXMuYXV0aC51c2VyO1xuICByZWFkb25seSBsb2NhbFBsYXllclByb2ZpbGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnBsYXllclByb2ZpbGVzLmFjdGl2ZVByb2ZpbGUoKSk7XG4gIHJlYWRvbmx5IGxvY2FsUGxheWVyQXZhdGFyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5sb2NhbFBsYXllclByb2ZpbGUoKT8uYXZhdGFyID8/ICfwn4yfJyk7XG4gIHJlYWRvbmx5IGxvZ2dlZFBsYXllck5hbWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdXNlciA9IHRoaXMubG9nZ2VkSW5Vc2VyKCk7XG4gICAgaWYgKHVzZXI/Lm5hbWU/LnRyaW0oKSkgcmV0dXJuIHVzZXIubmFtZS50cmltKCk7XG4gICAgaWYgKHVzZXI/LmVtYWlsPy50cmltKCkpIHJldHVybiB1c2VyLmVtYWlsLnRyaW0oKTtcbiAgICByZXR1cm4gdGhpcy5wbGF5ZXJQcm9maWxlcy5kaXNwbGF5TmFtZSh0aGlzLmxvY2FsUGxheWVyUHJvZmlsZSgpLCB0aGlzLnQoJ2RlZmF1bHRQbGF5ZXJOYW1lJykpO1xuICB9KTtcbiAgcmVhZG9ubHkgbG9nZ2VkUGxheWVySGFuZGxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmxvZ2dlZEluVXNlcigpO1xuICAgIGNvbnN0IGhhbmRsZSA9IHVzZXI/LmhhbmRsZT8udHJpbSgpO1xuICAgIGlmIChoYW5kbGUpIHJldHVybiBoYW5kbGUuc3RhcnRzV2l0aCgnQCcpID8gaGFuZGxlIDogYEAke2hhbmRsZX1gO1xuICAgIGlmICh1c2VyPy51c2VySWQpIHJldHVybiBgSUQgJHt0aGlzLnNob3J0VXNlcklkKHVzZXIudXNlcklkKX1gO1xuICAgIGNvbnN0IHByb2ZpbGVJZCA9IHRoaXMubG9jYWxQbGF5ZXJQcm9maWxlKCk/LmlkO1xuICAgIHJldHVybiBwcm9maWxlSWQgPyBgSUQgJHt0aGlzLnNob3J0VXNlcklkKHByb2ZpbGVJZCl9YCA6ICcnO1xuICB9KTtcbiAgcmVhZG9ubHkgbG9nZ2VkUGxheWVyQXZhdGFyUHJvcHMgPSBjb21wdXRlZDxVc2VyQXZhdGFyTWV0YWRhdGE+KCgpID0+ICh7XG4gICAgdXNlcjogdGhpcy5sb2dnZWRJblVzZXIoKSxcbiAgICBzaXplOiAnc21hbGwnLFxuICAgIGJvcmRlcmVkOiB0cnVlLFxuICAgIGNzc0NsYXNzOiAnY2hlc3NpbWFscy10dXJuLWF2YXRhcicsXG4gIH0pKTtcbiAgcmVhZG9ubHkgdHVyblBsYXllclBhcnRpY2lwYW50ID0gY29tcHV0ZWQ8Q2hlc3NpbWFsc09ubGluZVBhcnRpY2lwYW50IHwgdW5kZWZpbmVkPigoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgIT09ICdvbmxpbmUnKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiBnYW1lLm9ubGluZT8ucGFydGljaXBhbnRzPy5bZ2FtZS5jdXJyZW50VHVybl07XG4gIH0pO1xuICByZWFkb25seSBzaG91bGRVc2VUdXJuUGxheWVyQXZhdGFyID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykgcmV0dXJuICEhdGhpcy50dXJuUGxheWVyUGFydGljaXBhbnQoKTtcbiAgICByZXR1cm4gISF0aGlzLmxvZ2dlZEluVXNlcigpO1xuICB9KTtcbiAgcmVhZG9ubHkgdHVyblBsYXllckF2YXRhclByb3BzID0gY29tcHV0ZWQ8VXNlckF2YXRhck1ldGFkYXRhPigoKSA9PiB7XG4gICAgY29uc3QgcGFydGljaXBhbnQgPSB0aGlzLnR1cm5QbGF5ZXJQYXJ0aWNpcGFudCgpO1xuICAgIGlmIChwYXJ0aWNpcGFudCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdXNlcjoge1xuICAgICAgICAgIG5hbWU6IHBhcnRpY2lwYW50Lm5hbWUsXG4gICAgICAgICAgZW1haWw6IHBhcnRpY2lwYW50LmVtYWlsLFxuICAgICAgICAgIGhhbmRsZTogcGFydGljaXBhbnQuaGFuZGxlLFxuICAgICAgICAgIGF2YXRhclVybDogcGFydGljaXBhbnQuYXZhdGFyVXJsLFxuICAgICAgICB9LFxuICAgICAgICBhdmF0YXJVcmw6IHBhcnRpY2lwYW50LmF2YXRhclVybCxcbiAgICAgICAgYmFja2dyb3VuZDogcGFydGljaXBhbnQuY29sb3IsXG4gICAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICAgIGJvcmRlcmVkOiB0cnVlLFxuICAgICAgICBjc3NDbGFzczogJ2NoZXNzaW1hbHMtdHVybi1hdmF0YXInLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubG9nZ2VkUGxheWVyQXZhdGFyUHJvcHMoKTtcbiAgfSk7XG4gIHJlYWRvbmx5IHR1cm5QbGF5ZXJGYWxsYmFja0F2YXRhciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ29ubGluZScpIHJldHVybiB0aGlzLnR1cm5QbGF5ZXJQYXJ0aWNpcGFudCgpPy5hdmF0YXIgPz8gdGhpcy5wbGF5ZXJMYWJlbChnYW1lLmN1cnJlbnRUdXJuKS5jaGFyQXQoMCk7XG4gICAgcmV0dXJuIHRoaXMubG9jYWxQbGF5ZXJBdmF0YXIoKTtcbiAgfSk7XG4gIHJlYWRvbmx5IHR1cm5QbGF5ZXJFeWVicm93ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1R1cm4nKTtcbiAgICByZXR1cm4gdGhpcy50KHRoaXMubG9nZ2VkSW5Vc2VyKCkgPyAnbG9nZ2VkUGxheWVyJyA6ICdsb2NhbFBsYXllcicpO1xuICB9KTtcbiAgcmVhZG9ubHkgdHVyblBsYXllck5hbWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSByZXR1cm4gdGhpcy5wbGF5ZXJEaXNwbGF5TmFtZShnYW1lLmN1cnJlbnRUdXJuKTtcbiAgICByZXR1cm4gdGhpcy5sb2dnZWRQbGF5ZXJOYW1lKCk7XG4gIH0pO1xuICByZWFkb25seSB0dXJuUGxheWVySGFuZGxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJykgcmV0dXJuIHRoaXMubG9nZ2VkUGxheWVySGFuZGxlKCk7XG4gICAgY29uc3QgcGFydGljaXBhbnQgPSB0aGlzLnR1cm5QbGF5ZXJQYXJ0aWNpcGFudCgpO1xuICAgIGNvbnN0IGhhbmRsZSA9IHBhcnRpY2lwYW50Py5oYW5kbGU/LnRyaW0oKTtcbiAgICBpZiAoaGFuZGxlKSByZXR1cm4gaGFuZGxlLnN0YXJ0c1dpdGgoJ0AnKSA/IGhhbmRsZSA6IGBAJHtoYW5kbGV9YDtcbiAgICBjb25zdCB1c2VySWQgPSBwYXJ0aWNpcGFudD8uYWNjb3VudFVzZXJJZCB8fCBwYXJ0aWNpcGFudD8udWlkIHx8IHBhcnRpY2lwYW50Py5wcm9maWxlSWQ7XG4gICAgcmV0dXJuIHVzZXJJZCA/IGBJRCAke3RoaXMuc2hvcnRVc2VySWQodXNlcklkKX1gIDogJyc7XG4gIH0pO1xuICByZWFkb25seSBtdXNpY0VuYWJsZWRDb250cm9sID0gbmV3IEZvcm1Db250cm9sKHRoaXMuYXVkaW8ubXVzaWNFbmFibGVkKCksIHsgbm9uTnVsbGFibGU6IHRydWUgfSk7XG4gIHJlYWRvbmx5IHNmeEVuYWJsZWRDb250cm9sID0gbmV3IEZvcm1Db250cm9sKHRoaXMuYXVkaW8uc2Z4RW5hYmxlZCgpLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xuICByZWFkb25seSBtdXNpY1ZvbHVtZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woTWF0aC5yb3VuZCh0aGlzLmF1ZGlvLm11c2ljVm9sdW1lKCkgKiAxMDApLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xuICByZWFkb25seSBzZnhWb2x1bWVDb250cm9sID0gbmV3IEZvcm1Db250cm9sKE1hdGgucm91bmQodGhpcy5hdWRpby5zZnhWb2x1bWUoKSAqIDEwMCksIHsgbm9uTnVsbGFibGU6IHRydWUgfSk7XG4gIHJlYWRvbmx5IG11c2ljVG9nZ2xlUHJvcHMgPSBjb21wdXRlZDxUb2dnbGVJbnB1dE1ldGFkYXRhPigoKSA9PiAoe1xuICAgIGNvbnRyb2w6IHRoaXMubXVzaWNFbmFibGVkQ29udHJvbCxcbiAgICBsYWJlbDogdGhpcy50KCdjaGVzc2ltYWxzTXVzaWNFbmFibGVkJyksXG4gICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICBqdXN0aWZ5OiAnc3BhY2UtYmV0d2VlbicsXG4gIH0pKTtcbiAgcmVhZG9ubHkgc2Z4VG9nZ2xlUHJvcHMgPSBjb21wdXRlZDxUb2dnbGVJbnB1dE1ldGFkYXRhPigoKSA9PiAoe1xuICAgIGNvbnRyb2w6IHRoaXMuc2Z4RW5hYmxlZENvbnRyb2wsXG4gICAgbGFiZWw6IHRoaXMudCgnY2hlc3NpbWFsc1NmeEVuYWJsZWQnKSxcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgIGp1c3RpZnk6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgfSkpO1xuICByZWFkb25seSBtdXNpY1ZvbHVtZVByb3BzID0gY29tcHV0ZWQ8UmFuZ2VJbnB1dE1ldGFkYXRhPigoKSA9PiAoe1xuICAgIGNvbnRyb2w6IHRoaXMubXVzaWNWb2x1bWVDb250cm9sLFxuICAgIGxhYmVsOiBgJHt0aGlzLnQoJ2NoZXNzaW1hbHNNdXNpY1ZvbHVtZScpfSDCtyAke01hdGgucm91bmQodGhpcy5hdWRpby5tdXNpY1ZvbHVtZSgpICogMTAwKX0lYCxcbiAgICBtaW46IDAsXG4gICAgbWF4OiAxMDAsXG4gICAgc3RlcDogNSxcbiAgICBwaW46IHRydWUsXG4gICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICBzdGFydExhYmVsOiAnMCcsXG4gICAgZW5kTGFiZWw6ICcxMDAnLFxuICAgIHBpbkZvcm1hdHRlcjogKHZhbHVlKSA9PiBgJHt2YWx1ZX0lYCxcbiAgfSkpO1xuICByZWFkb25seSBzZnhWb2x1bWVQcm9wcyA9IGNvbXB1dGVkPFJhbmdlSW5wdXRNZXRhZGF0YT4oKCkgPT4gKHtcbiAgICBjb250cm9sOiB0aGlzLnNmeFZvbHVtZUNvbnRyb2wsXG4gICAgbGFiZWw6IGAke3RoaXMudCgnY2hlc3NpbWFsc1NmeFZvbHVtZScpfSDCtyAke01hdGgucm91bmQodGhpcy5hdWRpby5zZnhWb2x1bWUoKSAqIDEwMCl9JWAsXG4gICAgbWluOiAwLFxuICAgIG1heDogMTAwLFxuICAgIHN0ZXA6IDUsXG4gICAgcGluOiB0cnVlLFxuICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgc3RhcnRMYWJlbDogJzAnLFxuICAgIGVuZExhYmVsOiAnMTAwJyxcbiAgICBwaW5Gb3JtYXR0ZXI6ICh2YWx1ZSkgPT4gYCR7dmFsdWV9JWAsXG4gIH0pKTtcbiAgcmVhZG9ubHkgYXZhaWxhYmxlQm90UHJvZmlsZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZGlmZmljdWx0eSA9IHRoaXMuc2VsZWN0ZWRCb3REaWZmaWN1bHR5KCk7XG4gICAgaWYgKGRpZmZpY3VsdHkgPT09ICduaWdodG1hcmUnKSByZXR1cm4gW107XG4gICAgcmV0dXJuIHRoaXMuYm90UHJvZmlsZXMuZmlsdGVyKChwcm9maWxlKSA9PiBwcm9maWxlLmRpZmZpY3VsdHkgPT09IGRpZmZpY3VsdHkpO1xuICB9KTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRCb3RQcm9maWxlID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmJvdFByb2ZpbGVzLmZpbmQoKHByb2ZpbGUpID0+IHByb2ZpbGUuaWQgPT09IHRoaXMuc2VsZWN0ZWRCb3RQcm9maWxlSWQoKSksXG4gICk7XG4gIHJlYWRvbmx5IGdhbWVCb3RQcm9maWxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHByb2ZpbGVJZCA9IHRoaXMuZ2FtZUJvdFByb2ZpbGVJZCgpO1xuICAgIHJldHVybiBwcm9maWxlSWQgPyB0aGlzLmJvdFByb2ZpbGVzLmZpbmQoKHByb2ZpbGUpID0+IHByb2ZpbGUuaWQgPT09IHByb2ZpbGVJZCkgOiB1bmRlZmluZWQ7XG4gIH0pO1xuICByZWFkb25seSBhY3RpdmVDaGFsbGVuZ2VCb3QgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBpZiAoIXJ1bikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdGhpcy5jaGFsbGVuZ2VMYWRkZXJbTWF0aC5tYXgoMCwgdGhpcy5jaGFsbGVuZ2VSdW5Sb3VuZEluZGV4KHJ1bikgLSAxKV07XG4gIH0pO1xuICByZWFkb25seSByZXN1bWFibGVDaGFsbGVuZ2VSdW4gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5hY3RpdmVTdG9yZWRDaGFsbGVuZ2VSdW4oKTtcbiAgICByZXR1cm4gdGhpcy5pc1Jlc3VtYWJsZUNoYWxsZW5nZVJ1bihydW4pID8gcnVuIDogdW5kZWZpbmVkO1xuICB9KTtcblxuICBASW5wdXQoKSBzZXQgb25saW5lR2FtZUlkKHZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgZ2FtZUlkID0gdGhpcy5vbmxpbmUubm9ybWFsaXplR2FtZUlkKHZhbHVlID8/ICcnKTtcbiAgICBpZiAoIWdhbWVJZCkgcmV0dXJuO1xuICAgIHRoaXMucGVuZGluZ09ubGluZUdhbWVJZCA9IGdhbWVJZDtcbiAgICBpZiAodGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgIT09IGdhbWVJZCAmJiB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgIT09IGdhbWVJZCkge1xuICAgICAgdm9pZCB0aGlzLm9wZW5PbmxpbmVHYW1lKGdhbWVJZCk7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpIG1pbmlHYW1lc1JvdXRlID0gJy9taW5pLWdhbWVzJztcbiAgQElucHV0KCkgcHJvamVjdGlvbk1vZGUgPSBmYWxzZTtcblxuICByZWFkb25seSByZXBsYXlFbnRyaWVzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5nYW1lKCkubW92ZUhpc3RvcnkgPz8gW10pO1xuICByZWFkb25seSBhY3RpdmVSZXZpZXdJbmRleCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBlbnRyaWVzID0gdGhpcy5yZXBsYXlFbnRyaWVzKCk7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJyB8fCBlbnRyaWVzLmxlbmd0aCA8PSAxKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yZXZpZXdJbmRleCgpID8/IGVudHJpZXMubGVuZ3RoIC0gMTtcbiAgICByZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgoaW5kZXgsIDApLCBlbnRyaWVzLmxlbmd0aCAtIDEpO1xuICB9KTtcbiAgcmVhZG9ubHkgaGFzUmVwbGF5Q29udHJvbHMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmFjdGl2ZVJldmlld0luZGV4KCkgIT09IHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHJldmlld0dhbWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmFjdGl2ZVJldmlld0luZGV4KCk7XG4gICAgY29uc3QgZW50cnkgPSBpbmRleCA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogdGhpcy5yZXBsYXlFbnRyaWVzKClbaW5kZXhdO1xuICAgIHJldHVybiBlbnRyeSA/IGNyZWF0ZUNoZXNzaW1hbHNSZXZpZXdTdGF0ZSh0aGlzLmdhbWUoKSwgZW50cnkpIDogdGhpcy5nYW1lKCk7XG4gIH0pO1xuICByZWFkb25seSBjdXJyZW50UGxheWVyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5nYW1lKCkucGxheWVyc1t0aGlzLmdhbWUoKS5jdXJyZW50VHVybl0pO1xuICByZWFkb25seSBwb3dlclBsYXllckNvbG9yID0gY29tcHV0ZWQoKCk6IENoZXNzaW1hbHNQbGF5ZXJDb2xvciA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSB7XG4gICAgICBjb25zdCByb2xlID0gdGhpcy5vbmxpbmVSb2xlKCk7XG4gICAgICByZXR1cm4gcm9sZSA9PT0gJ3doaXRlJyB8fCByb2xlID09PSAnYmxhY2snID8gcm9sZSA6IGdhbWUuY3VycmVudFR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnKSByZXR1cm4gJ3doaXRlJztcbiAgICByZXR1cm4gZ2FtZS5jdXJyZW50VHVybjtcbiAgfSk7XG4gIHJlYWRvbmx5IHBvd2VyUGxheWVyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5nYW1lKCkucGxheWVyc1t0aGlzLnBvd2VyUGxheWVyQ29sb3IoKV0pO1xuICByZWFkb25seSBjYW5Vc2VQb3dlckNhcmRzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICByZXR1cm4gKFxuICAgICAgZ2FtZS5zdGF0dXMgPT09ICdpbl9wcm9ncmVzcycgJiZcbiAgICAgIHRoaXMucG93ZXJQbGF5ZXJDb2xvcigpID09PSBnYW1lLmN1cnJlbnRUdXJuICYmXG4gICAgICB0aGlzLmNhblBsYXlDdXJyZW50VHVybigpICYmXG4gICAgICAhdGhpcy5ib3RUaGlua2luZygpICYmXG4gICAgICAhdGhpcy5tb3ZpbmdQaWVjZSgpXG4gICAgKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGxlZ2FsTW92ZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcGllY2VJZCA9IHRoaXMuc2VsZWN0ZWRQaWVjZUlkKCk7XG4gICAgaWYgKCFwaWVjZUlkKSByZXR1cm4gW107XG4gICAgaWYgKCF0aGlzLmNhblBsYXlDdXJyZW50VHVybigpKSByZXR1cm4gW107XG4gICAgY29uc3QgbW92ZXMgPSBnZXRDaGVzc2ltYWxzTGVnYWxNb3Zlcyh0aGlzLmdhbWUoKSwgcGllY2VJZCwgdGhpcy5zZWxlY3RlZEFuaW1hbCgpKTtcbiAgICBjb25zdCBleHBlY3RlZCA9IHRoaXMudHV0b3JpYWxFeHBlY3RlZE1vdmUoKTtcbiAgICBpZiAoIWV4cGVjdGVkKSByZXR1cm4gbW92ZXM7XG4gICAgcmV0dXJuIG1vdmVzLmZpbHRlcihcbiAgICAgIChtb3ZlKSA9PlxuICAgICAgICBtb3ZlLnBpZWNlSWQgPT09IGV4cGVjdGVkLnBpZWNlSWQgJiZcbiAgICAgICAgcG9zaXRpb25LZXkobW92ZS50bykgPT09IHBvc2l0aW9uS2V5KGV4cGVjdGVkLnRvKSAmJlxuICAgICAgICAobW92ZS5hbmltYWwgPz8gdW5kZWZpbmVkKSA9PT0gKGV4cGVjdGVkLmFuaW1hbCA/PyB1bmRlZmluZWQpLFxuICAgICk7XG4gIH0pO1xuICByZWFkb25seSBsZWdhbE1vdmVLZXlzID0gY29tcHV0ZWQoKCkgPT4gbmV3IFNldCh0aGlzLmxlZ2FsTW92ZXMoKS5tYXAoKG1vdmUpID0+IHBvc2l0aW9uS2V5KG1vdmUudG8pKSkpO1xuICByZWFkb25seSBjYXB0dXJlTW92ZUtleXMgPSBjb21wdXRlZChcbiAgICAoKSA9PiBuZXcgU2V0KHRoaXMubGVnYWxNb3ZlcygpLmZpbHRlcigobW92ZSkgPT4gISFtb3ZlLmNhcHR1cmVzUGllY2VJZCkubWFwKChtb3ZlKSA9PiBwb3NpdGlvbktleShtb3ZlLnRvKSkpLFxuICApO1xuICByZWFkb25seSB3aW5uaW5nTW92ZUtleXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJykgcmV0dXJuIG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGNvbnN0IHByb21vdGlvblJvdyA9IGdhbWUuY3VycmVudFR1cm4gPT09ICd3aGl0ZScgPyAwIDogZ2FtZS5ib2FyZFNpemUgLSAxO1xuICAgIHJldHVybiBuZXcgU2V0KHRoaXMubGVnYWxNb3ZlcygpLmZpbHRlcigobW92ZSkgPT4gbW92ZS50by5yb3cgPT09IHByb21vdGlvblJvdykubWFwKChtb3ZlKSA9PiBwb3NpdGlvbktleShtb3ZlLnRvKSkpO1xuICB9KTtcbiAgcmVhZG9ubHkgY2FwdHVyZVJlYWR5UGllY2VJZHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmICh0aGlzLmFjdGl2ZVJldmlld0luZGV4KCkgIT09IHVuZGVmaW5lZCB8fCBnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJykgcmV0dXJuIG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGNvbnN0IG1vdmVzID0gdGhpcy5iYXNpY01vdmVzRm9yQ29sb3IoZ2FtZSwgZ2FtZS5jdXJyZW50VHVybikuZmlsdGVyKChtb3ZlKSA9PiAhIW1vdmUuY2FwdHVyZXNQaWVjZUlkKTtcbiAgICByZXR1cm4gbmV3IFNldChtb3Zlcy5tYXAoKG1vdmUpID0+IG1vdmUucGllY2VJZCkpO1xuICB9KTtcbiAgcmVhZG9ubHkgdGhyZWF0ZW5lZFBpZWNlSWRzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAodGhpcy5hY3RpdmVSZXZpZXdJbmRleCgpICE9PSB1bmRlZmluZWQgfHwgZ2FtZS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycpIHJldHVybiBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBjb25zdCBvcHBvbmVudCA9IGdhbWUuY3VycmVudFR1cm4gPT09ICd3aGl0ZScgPyAnYmxhY2snIDogJ3doaXRlJztcbiAgICBjb25zdCB0aHJlYXRlbmVkID0gdGhpcy5iYXNpY01vdmVzRm9yQ29sb3IoZ2FtZSwgb3Bwb25lbnQpXG4gICAgICAubWFwKChtb3ZlKSA9PiBtb3ZlLmNhcHR1cmVzUGllY2VJZClcbiAgICAgIC5maWx0ZXIoKHBpZWNlSWQpOiBwaWVjZUlkIGlzIHN0cmluZyA9PiAhIXBpZWNlSWQpO1xuICAgIHJldHVybiBuZXcgU2V0KHRocmVhdGVuZWQpO1xuICB9KTtcbiAgcmVhZG9ubHkgaXNBY3Rpb25hYmxlVHVybiA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5nYW1lKCkuc3RhdHVzID09PSAnaW5fcHJvZ3Jlc3MnICYmIHRoaXMuY2FuUGxheUN1cnJlbnRUdXJuKCkgJiYgIXRoaXMuYm90VGhpbmtpbmcoKSAmJiAhdGhpcy5tb3ZlU3luY2luZygpLFxuICApO1xuICByZWFkb25seSBpc1dhaXRpbmdGb3JUdXJuID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmdhbWUoKS5zdGF0dXMgPT09ICdpbl9wcm9ncmVzcycgJiYgIXRoaXMuaXNBY3Rpb25hYmxlVHVybigpLFxuICApO1xuICByZWFkb25seSBib2FyZFJvd3MgPSBjb21wdXRlZCgoKSA9PiBBcnJheS5mcm9tKHsgbGVuZ3RoOiB0aGlzLnJldmlld0dhbWUoKS5ib2FyZFNpemUgfSwgKF8sIGluZGV4KSA9PiBpbmRleCkpO1xuICByZWFkb25seSBib2FyZENvbHMgPSBjb21wdXRlZCgoKSA9PiBBcnJheS5mcm9tKHsgbGVuZ3RoOiB0aGlzLnJldmlld0dhbWUoKS5ib2FyZFNpemUgfSwgKF8sIGluZGV4KSA9PiBpbmRleCkpO1xuICByZWFkb25seSBkaXNwbGF5Um93cyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5ib2FyZE9yaWVudGF0aW9uQ29sb3IoKSA9PT0gJ2JsYWNrJyA/IFsuLi50aGlzLmJvYXJkUm93cygpXS5yZXZlcnNlKCkgOiB0aGlzLmJvYXJkUm93cygpLFxuICApO1xuICByZWFkb25seSBkaXNwbGF5Q29scyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5ib2FyZE9yaWVudGF0aW9uQ29sb3IoKSA9PT0gJ2JsYWNrJyA/IFsuLi50aGlzLmJvYXJkQ29scygpXS5yZXZlcnNlKCkgOiB0aGlzLmJvYXJkQ29scygpLFxuICApO1xuICByZWFkb25seSBib2FyZE9yaWVudGF0aW9uQ29sb3IgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGNvbnN0IHVpZCA9IHRoaXMub25saW5lVWlkKCk7XG4gICAgaWYgKHRoaXMudHV0b3JpYWxNb2RlKCkpIHJldHVybiAnd2hpdGUnO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSByZXR1cm4gdWlkID8gdGhpcy5vbmxpbmUucGFydGljaXBhbnRTaWRlKGdhbWUsIHVpZCkgPz8gJ3doaXRlJyA6ICd3aGl0ZSc7XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ2xvY2FsJyAmJiB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnKSByZXR1cm4gJ3doaXRlJztcbiAgICByZXR1cm4gZ2FtZS5jdXJyZW50VHVybjtcbiAgfSk7XG4gIHJlYWRvbmx5IG9ubGluZVJvbGUgPSBjb21wdXRlZCgoKTogQ2hlc3NpbWFsc1BsYXllckNvbG9yIHwgJ3dhaXRpbmcnIHwgJ3BlbmRpbmcnIHwgJ3NwZWN0YXRvcicgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBjb25zdCB1aWQgPSB0aGlzLm9ubGluZVVpZCgpO1xuICAgIGlmIChnYW1lLm1vZGUgIT09ICdvbmxpbmUnKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmICghdWlkKSByZXR1cm4gJ3NwZWN0YXRvcic7XG4gICAgaWYgKHRoaXMub25saW5lLmlzSG9zdFdhaXRpbmcoZ2FtZSwgdWlkKSkgcmV0dXJuICd3YWl0aW5nJztcbiAgICBpZiAodGhpcy5vbmxpbmUuaXNQZW5kaW5nR3Vlc3QoZ2FtZSwgdWlkKSkgcmV0dXJuICdwZW5kaW5nJztcbiAgICByZXR1cm4gdGhpcy5vbmxpbmUucGFydGljaXBhbnRTaWRlKGdhbWUsIHVpZCkgPz8gJ3NwZWN0YXRvcic7XG4gIH0pO1xuICByZWFkb25seSBjYW5QbGF5Q3VycmVudFR1cm4gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMucHJvamVjdGlvbk1vZGUpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ2xvY2FsJyAmJiB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnKSB7XG4gICAgICByZXR1cm4gZ2FtZS5jdXJyZW50VHVybiAhPT0gQ0hFU1NJTUFMU19CT1RfQ09MT1IgJiYgIXRoaXMuYm90VGhpbmtpbmcoKTtcbiAgICB9XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ29ubGluZScpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiB0aGlzLm9ubGluZVJvbGUoKSA9PT0gZ2FtZS5jdXJyZW50VHVybjtcbiAgfSk7XG4gIHJlYWRvbmx5IGNhbkNvbnRyb2xDdXJyZW50R2FtZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJykgcmV0dXJuIHRydWU7XG4gICAgY29uc3Qgcm9sZSA9IHRoaXMub25saW5lUm9sZSgpO1xuICAgIHJldHVybiByb2xlID09PSAnd2hpdGUnIHx8IHJvbGUgPT09ICdibGFjayc7XG4gIH0pO1xuICByZWFkb25seSByZW1hdGNoU3RhdGUgPSBjb21wdXRlZDxDaGVzc2ltYWxzUmVtYXRjaFN0YXRlPigoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgIT09ICdvbmxpbmUnIHx8IGdhbWUuc3RhdHVzICE9PSAnZmluaXNoZWQnKSByZXR1cm4gJ25vbmUnO1xuICAgIGNvbnN0IHVpZCA9IHRoaXMub25saW5lVWlkKCk7XG4gICAgaWYgKCF1aWQgfHwgdGhpcy5vbmxpbmVSb2xlKCkgPT09ICdzcGVjdGF0b3InKSByZXR1cm4gJ25vbmUnO1xuXG4gICAgY29uc3QgaGFzTWluZSA9IHRoaXMub25saW5lLmhhc0N1cnJlbnRSZW1hdGNoUmVxdWVzdChnYW1lLCB1aWQpO1xuICAgIGNvbnN0IGhhc090aGVyID0gdGhpcy5vbmxpbmUuaGFzT3Bwb25lbnRSZW1hdGNoUmVxdWVzdChnYW1lLCB1aWQpO1xuXG4gICAgaWYgKGhhc090aGVyICYmICFoYXNNaW5lKSByZXR1cm4gJ2luY29taW5nJztcbiAgICBpZiAoaGFzTWluZSkgcmV0dXJuICdyZXF1ZXN0ZWQnO1xuICAgIHJldHVybiAnbm9uZSc7XG4gIH0pO1xuICByZWFkb25seSByZW1hdGNoQWN0aW9uTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLnJlbWF0Y2hTdGF0ZSgpO1xuICAgIGlmICh0aGlzLnJlbWF0Y2hMb2FkaW5nKCkpIHtcbiAgICAgIHJldHVybiB0aGlzLnQoc3RhdGUgPT09ICdpbmNvbWluZycgPyAnY2hlc3NpbWFsc0FjY2VwdGluZ1JlbWF0Y2gnIDogJ2NoZXNzaW1hbHNSZXF1ZXN0aW5nUmVtYXRjaCcpO1xuICAgIH1cbiAgICBpZiAoc3RhdGUgPT09ICdpbmNvbWluZycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2NlcHRSZW1hdGNoJyk7XG4gICAgaWYgKHN0YXRlID09PSAncmVxdWVzdGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1JlbWF0Y2hSZXF1ZXN0ZWRBY3Rpb24nKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzUmVtYXRjaCcpO1xuICB9KTtcbiAgcmVhZG9ubHkgc2hvdWxkU2hvd09ubGluZVN0YXR1cyA9IGNvbXB1dGVkKCgpID0+XG4gICAgIXRoaXMucHJvamVjdGlvbk1vZGUgJiYgdGhpcy5nYW1lKCkubW9kZSA9PT0gJ29ubGluZScgJiYgdGhpcy5nYW1lKCkuc3RhdHVzICE9PSAnd2FpdGluZycsXG4gICk7XG4gIHJlYWRvbmx5IG9ubGluZVN0YXR1c1RpdGxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBjb25zdCByb2xlID0gdGhpcy5vbmxpbmVSb2xlKCk7XG4gICAgaWYgKHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlKCkgPT09ICdjb25uZWN0aW5nJyB8fCB0aGlzLm1vdmVTeW5jaW5nKCkpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVTeW5jaW5nVGl0bGUnKTtcbiAgICBpZiAodGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUoKSA9PT0gJ2Vycm9yJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZURpc2Nvbm5lY3RlZFRpdGxlJyk7XG4gICAgaWYgKGdhbWUuc3RhdHVzID09PSAnZXhwaXJlZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFeHBpcmVkVGl0bGUnKTtcbiAgICBpZiAoZ2FtZS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVGaW5pc2hlZFRpdGxlJyk7XG4gICAgaWYgKHJvbGUgPT09ICdwZW5kaW5nJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZVBlbmRpbmdUaXRsZScpO1xuICAgIGlmIChyb2xlID09PSAnc3BlY3RhdG9yJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZVNwZWN0YXRvclRpdGxlJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUNvbm5lY3RlZFRpdGxlJyk7XG4gIH0pO1xuICByZWFkb25seSBvbmxpbmVTdGF0dXNCb2R5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBjb25zdCByb2xlID0gdGhpcy5vbmxpbmVSb2xlKCk7XG4gICAgaWYgKHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlKCkgPT09ICdjb25uZWN0aW5nJyB8fCB0aGlzLm1vdmVTeW5jaW5nKCkpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVTeW5jaW5nQm9keScpO1xuICAgIGlmICh0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZSgpID09PSAnZXJyb3InKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lRGlzY29ubmVjdGVkQm9keScpO1xuICAgIGlmIChnYW1lLnN0YXR1cyA9PT0gJ2V4cGlyZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lRXhwaXJlZEJvZHknKTtcbiAgICBpZiAoZ2FtZS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVGaW5pc2hlZEJvZHknKTtcbiAgICBpZiAocm9sZSA9PT0gJ3BlbmRpbmcnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzTG9iYnlHdWVzdFdhaXRpbmdCb2R5Jyk7XG4gICAgaWYgKHJvbGUgPT09ICdzcGVjdGF0b3InKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lVmlld2VyJyk7XG4gICAgaWYgKHRoaXMub25saW5lUm9sZSgpID09PSB0aGlzLmdhbWUoKS5jdXJyZW50VHVybikgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1lvdXJUdXJuQm9keScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNXYWl0aW5nVHVybicpO1xuICB9KTtcbiAgcmVhZG9ubHkgdHV0b3JpYWxTdGVwSW5kZXggPSBjb21wdXRlZCgoKSA9PiBNYXRoLm1pbih0aGlzLmdhbWUoKS5tb3ZlQ291bnQsIENIRVNTSU1BTFNfVFVUT1JJQUxfU1RFUFMpKTtcbiAgcmVhZG9ubHkgdHV0b3JpYWxQcm9ncmVzc0xhYmVsID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCdcbiAgICAgID8gdGhpcy50KCdjaGVzc2ltYWxzVHV0b3JpYWxDb21wbGV0ZVByb2dyZXNzJylcbiAgICAgIDogdGhpcy50KCdjaGVzc2ltYWxzVHV0b3JpYWxQcm9ncmVzcycpXG4gICAgICAgICAgLnJlcGxhY2UoJ3tzdGVwfScsIFN0cmluZyh0aGlzLnR1dG9yaWFsU3RlcEluZGV4KCkgKyAxKSlcbiAgICAgICAgICAucmVwbGFjZSgne3RvdGFsfScsIFN0cmluZyhDSEVTU0lNQUxTX1RVVE9SSUFMX1NURVBTKSksXG4gICk7XG4gIHJlYWRvbmx5IHR1dG9yaWFsVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1R1dG9yaWFsRG9uZVRpdGxlJyk7XG4gICAgcmV0dXJuIHRoaXMudChgY2hlc3NpbWFsc1R1dG9yaWFsU3RlcCR7dGhpcy50dXRvcmlhbFN0ZXBJbmRleCgpICsgMX1UaXRsZWApO1xuICB9KTtcbiAgcmVhZG9ubHkgdHV0b3JpYWxCb2R5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0aGlzLmdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNUdXRvcmlhbERvbmVCb2R5Jyk7XG4gICAgcmV0dXJuIHRoaXMudChgY2hlc3NpbWFsc1R1dG9yaWFsU3RlcCR7dGhpcy50dXRvcmlhbFN0ZXBJbmRleCgpICsgMX1Cb2R5YCk7XG4gIH0pO1xuICByZWFkb25seSBjdXJyZW50VHVyblRpdGxlID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnQoJ2NoZXNzaW1hbHNDdXJyZW50VHVybicpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgdGhpcy5wbGF5ZXJMYWJlbCh0aGlzLmdhbWUoKS5jdXJyZW50VHVybikpLFxuICApO1xuICByZWFkb25seSB3aW5UaXRsZSA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy50KCdjaGVzc2ltYWxzV2luVGl0bGUnKS5yZXBsYWNlKCd7cGxheWVyfScsIHRoaXMud2lubmVyRGlzcGxheU5hbWUoKSksXG4gICk7XG4gIHJlYWRvbmx5IHdpbkJvZHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcmVhc29uID0gdGhpcy5nYW1lKCkud2lubmVyUmVhc29uID8/ICdwcm9tb3Rpb24nO1xuICAgIGNvbnN0IGtleSA9XG4gICAgICByZWFzb24gPT09ICdlbGltaW5hdGlvbidcbiAgICAgICAgPyAnY2hlc3NpbWFsc1dpbkVsaW1pbmF0aW9uJ1xuICAgICAgICA6IHJlYXNvbiA9PT0gJ3Jlc2lnbmF0aW9uJ1xuICAgICAgICAgID8gJ2NoZXNzaW1hbHNXaW5SZXNpZ25hdGlvbidcbiAgICAgICAgICA6IHJlYXNvbiA9PT0gJ2Jsb2NrZWQnXG4gICAgICAgICAgICA/ICdjaGVzc2ltYWxzV2luQmxvY2tlZCdcbiAgICAgICAgICAgIDogJ2NoZXNzaW1hbHNXaW5Qcm9tb3Rpb24nO1xuICAgIHJldHVybiB0aGlzLnQoa2V5KTtcbiAgfSk7XG4gIHJlYWRvbmx5IHdpblJlYXNvbkxhYmVsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHJlYXNvbiA9IHRoaXMuZ2FtZSgpLndpbm5lclJlYXNvbiA/PyAncHJvbW90aW9uJztcbiAgICBjb25zdCBrZXkgPVxuICAgICAgcmVhc29uID09PSAnZWxpbWluYXRpb24nXG4gICAgICAgID8gJ2NoZXNzaW1hbHNSZWFzb25FbGltaW5hdGlvbidcbiAgICAgICAgOiByZWFzb24gPT09ICdyZXNpZ25hdGlvbidcbiAgICAgICAgICA/ICdjaGVzc2ltYWxzUmVhc29uUmVzaWduYXRpb24nXG4gICAgICAgICAgOiByZWFzb24gPT09ICdibG9ja2VkJ1xuICAgICAgICAgICAgPyAnY2hlc3NpbWFsc1JlYXNvbkJsb2NrZWQnXG4gICAgICAgICAgICA6ICdjaGVzc2ltYWxzUmVhc29uUHJvbW90aW9uJztcbiAgICByZXR1cm4gdGhpcy50KGtleSk7XG4gIH0pO1xuICByZWFkb25seSBtb3Zlc1N1bW1hcnkgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMudCgnY2hlc3NpbWFsc01vdmVzU3VtbWFyeScpLnJlcGxhY2UoJ3ttb3Zlc30nLCBgJHt0aGlzLmdhbWUoKS5tb3ZlQ291bnR9YCksXG4gICk7XG4gIHJlYWRvbmx5IGNhcHR1cmVzQnlDb2xvciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzY29yZTogUmVjb3JkPENoZXNzaW1hbHNQbGF5ZXJDb2xvciwgbnVtYmVyPiA9IHsgd2hpdGU6IDAsIGJsYWNrOiAwIH07XG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiB0aGlzLmdhbWUoKS5tb3ZlSGlzdG9yeSA/PyBbXSkge1xuICAgICAgY29uc3QgbW92ZSA9IGVudHJ5Lm1vdmU7XG4gICAgICBpZiAoIW1vdmU/LmNhcHR1cmVzUGllY2VJZCkgY29udGludWU7XG4gICAgICBjb25zdCBwaWVjZSA9IGVudHJ5LnBpZWNlcy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBtb3ZlLnBpZWNlSWQpO1xuICAgICAgaWYgKHBpZWNlPy5jb2xvcikgc2NvcmVbcGllY2UuY29sb3JdICs9IDE7XG4gICAgfVxuICAgIHJldHVybiBzY29yZTtcbiAgfSk7XG4gIHJlYWRvbmx5IHJlc3VsdENhcHR1cmVzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnJlcGxheUVudHJpZXMoKS5maWx0ZXIoKGVudHJ5KSA9PiAhIWVudHJ5Lm1vdmU/LmNhcHR1cmVzUGllY2VJZCkubGVuZ3RoLFxuICApO1xuICByZWFkb25seSByZXN1bHRQb3dlcnMgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMucmVwbGF5RW50cmllcygpXG4gICAgICAubWFwKChlbnRyeSkgPT4gZW50cnkubW92ZT8uYW5pbWFsKVxuICAgICAgLmZpbHRlcigoYW5pbWFsKTogYW5pbWFsIGlzIENoZXNzaW1hbHNBbmltYWxUeXBlID0+ICEhYW5pbWFsKSxcbiAgKTtcbiAgcmVhZG9ubHkgbGl2ZVNjb3JlID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmlzQ2hhbGxlbmdlQWN0aXZlKCkgPyB0aGlzLmNyZWF0ZUdhbWVTY29yZSh0aGlzLmdhbWUoKSwgJ1cnKS5zY29yZSA6IHRoaXMuY3JlYXRlR2FtZVNjb3JlKHRoaXMuZ2FtZSgpKS5zY29yZSxcbiAgKTtcbiAgcmVhZG9ubHkgcmVzdWx0U2NvcmUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNyZWF0ZUdhbWVTY29yZSh0aGlzLmdhbWUoKSkpO1xuICByZWFkb25seSByZXN1bHRTdGF0cyA9IGNvbXB1dGVkKCgpID0+IFtcbiAgICB7XG4gICAgICBsYWJlbDogdGhpcy50KCdjaGVzc2ltYWxzUmVzdWx0U2NvcmUnKSxcbiAgICAgIHZhbHVlOiBTdHJpbmcodGhpcy5yZXN1bHRTY29yZSgpLnNjb3JlKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiB0aGlzLnQoJ2NoZXNzaW1hbHNSZXN1bHRNb3ZlcycpLFxuICAgICAgdmFsdWU6IFN0cmluZyh0aGlzLmdhbWUoKS5tb3ZlQ291bnQpLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6IHRoaXMudCgnY2hlc3NpbWFsc1Jlc3VsdENhcHR1cmVzJyksXG4gICAgICB2YWx1ZTogU3RyaW5nKHRoaXMucmVzdWx0Q2FwdHVyZXMoKSksXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogdGhpcy50KCdjaGVzc2ltYWxzUmVzdWx0UG93ZXJzJyksXG4gICAgICB2YWx1ZTogU3RyaW5nKHRoaXMucmVzdWx0UG93ZXJzKCkubGVuZ3RoKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiB0aGlzLnQoJ2NoZXNzaW1hbHNSZXN1bHRSZWFzb24nKSxcbiAgICAgIHZhbHVlOiB0aGlzLndpblJlYXNvbkxhYmVsKCksXG4gICAgfSxcbiAgXSk7XG4gIHJlYWRvbmx5IHJlc3VsdFBvd2Vyc0xhYmVsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHBvd2VycyA9IHRoaXMucmVzdWx0UG93ZXJzKCk7XG4gICAgaWYgKCFwb3dlcnMubGVuZ3RoKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzUmVzdWx0Tm9Qb3dlcnMnKTtcbiAgICByZXR1cm4gcG93ZXJzLm1hcCgoYW5pbWFsKSA9PiB0aGlzLmFuaW1hbExhYmVsKGFuaW1hbCkpLmpvaW4oJyDCtyAnKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGxpdmVTY29yZUxhYmVsID0gY29tcHV0ZWQoKCkgPT4gU3RyaW5nKHRoaXMubGl2ZVNjb3JlKCkpKTtcbiAgcmVhZG9ubHkgcmVzdWx0QmVzdE1vdmVMYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBiZXN0TW92ZSA9IHRoaXMucmVzdWx0U2NvcmUoKS5iZXN0TW92ZTtcbiAgICBpZiAoIWJlc3RNb3ZlKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzUmVzdWx0Tm9CZXN0TW92ZScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNSZXN1bHRCZXN0TW92ZUxpbmUnKVxuICAgICAgLnJlcGxhY2UoJ3tzY29yZX0nLCBTdHJpbmcoYmVzdE1vdmUuc2NvcmUpKVxuICAgICAgLnJlcGxhY2UoJ3ttb3ZlfScsIGJlc3RNb3ZlLmxhYmVsKTtcbiAgfSk7XG4gIHJlYWRvbmx5IHNob3VsZFNob3dCb3RSZXBvcnQgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuZ2FtZSgpLm1vZGUgPT09ICdsb2NhbCcgJiZcbiAgICB0aGlzLmdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcgJiZcbiAgICAhdGhpcy50dXRvcmlhbE1vZGUoKSAmJlxuICAgICEhdGhpcy5nYW1lQm90UHJvZmlsZSgpLFxuICApO1xuICByZWFkb25seSBib3RSZXBvcnRUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBwcm9maWxlID0gdGhpcy5nYW1lQm90UHJvZmlsZSgpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RSZXBvcnRWcycpLnJlcGxhY2UoXG4gICAgICAne2JvdH0nLFxuICAgICAgcHJvZmlsZSA/IHRoaXMuYm90UHJvZmlsZUxhYmVsKHByb2ZpbGUpIDogdGhpcy50KCdjaGVzc2ltYWxzQm90TW9kZScpLFxuICAgICk7XG4gIH0pO1xuICByZWFkb25seSBib3RSZXBvcnRCb2R5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLmdhbWVCb3RQcm9maWxlKCk7XG4gICAgY29uc3QgYm90TW92ZXMgPSB0aGlzLnJlcGxheUVudHJpZXMoKS5maWx0ZXIoKGVudHJ5KSA9PiBlbnRyeS5tb3ZlPy5waWVjZUlkLnN0YXJ0c1dpdGgoJ0InKSk7XG4gICAgY29uc3QgY2FwdHVyZXMgPSBib3RNb3Zlcy5maWx0ZXIoKGVudHJ5KSA9PiAhIWVudHJ5Lm1vdmU/LmNhcHR1cmVzUGllY2VJZCkubGVuZ3RoO1xuICAgIGNvbnN0IHBvd2VycyA9IGJvdE1vdmVzLmZpbHRlcigoZW50cnkpID0+ICEhZW50cnkubW92ZT8uYW5pbWFsKS5sZW5ndGg7XG4gICAgY29uc3Qgb3V0Y29tZUtleSA9XG4gICAgICB0aGlzLmdhbWUoKS53aW5uZXIgPT09IENIRVNTSU1BTFNfQk9UX0NPTE9SXG4gICAgICAgID8gJ2NoZXNzaW1hbHNCb3RSZXBvcnRPdXRjb21lV29uJ1xuICAgICAgICA6ICdjaGVzc2ltYWxzQm90UmVwb3J0T3V0Y29tZUxvc3QnO1xuXG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0JvdFJlcG9ydEJvZHknKVxuICAgICAgLnJlcGxhY2UoJ3tvdXRjb21lfScsIHRoaXMudChvdXRjb21lS2V5KSlcbiAgICAgIC5yZXBsYWNlKCd7Y2FwdHVyZXN9JywgU3RyaW5nKGNhcHR1cmVzKSlcbiAgICAgIC5yZXBsYWNlKCd7cG93ZXJzfScsIFN0cmluZyhwb3dlcnMpKVxuICAgICAgLnJlcGxhY2UoJ3tzdHlsZX0nLCBwcm9maWxlID8gdGhpcy5ib3RQcm9maWxlVGVuZGVuY3kocHJvZmlsZSkgOiAnJyk7XG4gIH0pO1xuICByZWFkb25seSBzZXJpZXNHYW1lcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBvcHBvbmVudFVpZCA9IHRoaXMuY3VycmVudE9wcG9uZW50VWlkKCk7XG4gICAgaWYgKCFvcHBvbmVudFVpZCkgcmV0dXJuIFtdIGFzIENoZXNzaW1hbHNIaXN0b3J5RW50cnlbXTtcbiAgICByZXR1cm4gdGhpcy5vbmxpbmVIaXN0b3J5KCkuZmlsdGVyKFxuICAgICAgKGVudHJ5KSA9PiBlbnRyeS5vcHBvbmVudFVpZCA9PT0gb3Bwb25lbnRVaWQgJiYgZW50cnkuc3RhdHVzID09PSAnZmluaXNoZWQnLFxuICAgICk7XG4gIH0pO1xuICByZWFkb25seSBzZXJpZXNTY29yZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBnYW1lcyA9IHRoaXMuc2VyaWVzR2FtZXMoKTtcbiAgICBpZiAoIWdhbWVzLmxlbmd0aCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4ge1xuICAgICAgbWluZTogZ2FtZXMuZmlsdGVyKChlbnRyeSkgPT4gZW50cnkub3V0Y29tZSA9PT0gJ3dvbicpLmxlbmd0aCxcbiAgICAgIHJpdmFsOiBnYW1lcy5maWx0ZXIoKGVudHJ5KSA9PiBlbnRyeS5vdXRjb21lID09PSAnbG9zdCcpLmxlbmd0aCxcbiAgICAgIHRvdGFsOiBnYW1lcy5sZW5ndGgsXG4gICAgfTtcbiAgfSk7XG4gIHJlYWRvbmx5IHNlcmllc1N1bW1hcnkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc2NvcmUgPSB0aGlzLnNlcmllc1Njb3JlKCk7XG4gICAgaWYgKCFzY29yZSB8fCBzY29yZS50b3RhbCA8IDIpIHJldHVybiAnJztcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzU2VyaWVzU2NvcmUnKVxuICAgICAgLnJlcGxhY2UoJ3ttaW5lfScsIFN0cmluZyhzY29yZS5taW5lKSlcbiAgICAgIC5yZXBsYWNlKCd7cml2YWx9JywgU3RyaW5nKHNjb3JlLnJpdmFsKSlcbiAgICAgIC5yZXBsYWNlKCd7cGxheWVyfScsIHRoaXMucmVtYXRjaE9wcG9uZW50TmFtZSgpKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGxhc3RTZXJpZXNXaW5uZXJMYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBsYXN0ID0gdGhpcy5zZXJpZXNHYW1lcygpWzBdO1xuICAgIGlmICghbGFzdCkgcmV0dXJuICcnO1xuICAgIHJldHVybiBsYXN0Lm91dGNvbWUgPT09ICd3b24nID8gdGhpcy50KCdjaGVzc2ltYWxzWW91JykgOiBsYXN0Lm9wcG9uZW50TmFtZSB8fCB0aGlzLnJlbWF0Y2hPcHBvbmVudE5hbWUoKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGNvbmZpcm1UaXRsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmNvbmZpcm1BY3Rpb24oKTtcbiAgICBpZiAoYWN0aW9uID09PSAncmVzdGFydCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDb25maXJtUmVzdGFydFRpdGxlJyk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc2lnbicpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDb25maXJtUmVzaWduVGl0bGUnKTtcbiAgICBpZiAoYWN0aW9uID09PSAnZ2FtZXMnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ29uZmlybUdhbWVzVGl0bGUnKTtcbiAgICBpZiAoYWN0aW9uID09PSAnY2hhbGxlbmdlLW5ldycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VDb25maXJtTmV3VGl0bGUnKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ29uZmlybU1vZGVUaXRsZScpO1xuICB9KTtcbiAgcmVhZG9ubHkgY29uZmlybUJvZHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maXJtQWN0aW9uKCk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc3RhcnQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ29uZmlybVJlc3RhcnRCb2R5Jyk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc2lnbicpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDb25maXJtUmVzaWduQm9keScpO1xuICAgIGlmIChhY3Rpb24gPT09ICdnYW1lcycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDb25maXJtR2FtZXNCb2R5Jyk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2NoYWxsZW5nZS1uZXcnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQ29uZmlybU5ld0JvZHknKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ29uZmlybU1vZGVCb2R5Jyk7XG4gIH0pO1xuICByZWFkb25seSBjb25maXJtQWN0aW9ucyA9IGNvbXB1dGVkPEJ1dHRvbk1ldGFkYXRhW10+KCgpID0+IHtcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmNvbmZpcm1BY3Rpb24oKTtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICB0ZXh0OiB0aGlzLnQoJ2NhbmNlbCcpLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBzdGF0ZTogJ0VOQUJMRUQnLFxuICAgICAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgdG9rZW46ICdjYW5jZWwnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGV4dDpcbiAgICAgICAgICBhY3Rpb24gPT09ICdyZXNpZ24nXG4gICAgICAgICAgICA/IHRoaXMudCgnY2hlc3NpbWFsc1Jlc2lnbicpXG4gICAgICAgICAgICA6IGFjdGlvbiA9PT0gJ3Jlc3RhcnQnXG4gICAgICAgICAgICAgID8gdGhpcy50KCdyZXN0YXJ0JylcbiAgICAgICAgICAgICAgOiBhY3Rpb24gPT09ICdnYW1lcydcbiAgICAgICAgICAgICAgICA/IHRoaXMudCgnY2hlc3NpbWFsc0NoYW5nZUdhbWUnKVxuICAgICAgICAgICAgICAgIDogYWN0aW9uID09PSAnY2hhbGxlbmdlLW5ldydcbiAgICAgICAgICAgICAgICAgID8gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlU3RhcnROZXdDb25maXJtJylcbiAgICAgICAgICAgICAgICAgIDogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbmdlTW9kZScpLFxuICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICBzdGF0ZTogJ0VOQUJMRUQnLFxuICAgICAgICBmaWxsOiAnc29saWQnLFxuICAgICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgIHRva2VuOiAnY29uZmlybScsXG4gICAgICB9LFxuICAgIF07XG4gIH0pO1xuICByZWFkb25seSBydWxlc1R1dG9yaWFsQWN0aW9uID0gY29tcHV0ZWQ8QnV0dG9uTWV0YWRhdGE+KCgpID0+ICh7XG4gICAgdGV4dDogdGhpcy50KCdjaGVzc2ltYWxzUnVsZXNUcnlUdXRvcmlhbCcpLFxuICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICBmaWxsOiAnc29saWQnLFxuICAgIHNoYXBlOiAncm91bmQnLFxuICAgIHR5cGU6ICdidXR0b24nLFxuICAgIHRva2VuOiAndHV0b3JpYWwnLFxuICB9KSk7XG4gIHJlYWRvbmx5IHJ1bGVzQ2xvc2VBY3Rpb24gPSBjb21wdXRlZDxCdXR0b25NZXRhZGF0YT4oKCkgPT4gKHtcbiAgICB0ZXh0OiB0aGlzLnQoJ2Nsb3NlJyksXG4gICAgY29sb3I6ICdkYXJrJyxcbiAgICBzdGF0ZTogJ0VOQUJMRUQnLFxuICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICB0b2tlbjogJ2Nsb3NlJyxcbiAgfSkpO1xuICByZWFkb25seSBhYm91dEFjdGlvbnMgPSBjb21wdXRlZDxCdXR0b25NZXRhZGF0YVtdPigoKSA9PiBbXG4gICAge1xuICAgICAgdGV4dDogdGhpcy50KCdjbG9zZScpLFxuICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgIHN0YXRlOiAnRU5BQkxFRCcsXG4gICAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgdG9rZW46ICdjbG9zZScsXG4gICAgfSxcbiAgICB7XG4gICAgICB0ZXh0OiB0aGlzLnQoJ2NoZXNzaW1hbHNBYm91dEZlZWRiYWNrJyksXG4gICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgIGZpbGw6ICdzb2xpZCcsXG4gICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgdG9rZW46ICdmZWVkYmFjaycsXG4gICAgfSxcbiAgXSk7XG4gIHJlYWRvbmx5IGFjdGlvbkhpbnQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcGllY2VJZCA9IHRoaXMuc2VsZWN0ZWRQaWVjZUlkKCk7XG4gICAgaWYgKCFwaWVjZUlkKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzUGlja0FueVBpZWNlJyk7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRBbmltYWwoKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1BpY2tQb3dlclRhcmdldCcpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNQaWNrVGFyZ2V0Jyk7XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaTE4bi5yZWdpc3RlckRlZmF1bHRzKCdNaW5pR2FtZXMnLCBNSU5JX0dBTUVTX0kxOE4pO1xuICAgIHRoaXMuYXVkaW8ucHJlbG9hZENoZXNzaW1hbHNTYW1wbGVzKCk7XG4gICAgdGhpcy5hdWRpby5zdG9wTXVzaWMoKTtcbiAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc01lbnVNdXNpY1Nvb24oKTtcbiAgICB0aGlzLnJvdXRlU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMubXVzaWNFbmFibGVkQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChlbmFibGVkKSA9PiB7XG4gICAgICAgIHRoaXMuYXVkaW8uc2V0TXVzaWNFbmFibGVkKGVuYWJsZWQpO1xuICAgICAgICBpZiAoZW5hYmxlZCkgdGhpcy5zeW5jQ2hlc3NpbWFsc011c2ljQWZ0ZXJTZXR0aW5nc0NoYW5nZSgpO1xuICAgICAgfSksXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMuc2Z4RW5hYmxlZENvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoZW5hYmxlZCkgPT4gdGhpcy5hdWRpby5zZXRTZnhFbmFibGVkKGVuYWJsZWQpKSxcbiAgICApO1xuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5tdXNpY1ZvbHVtZUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodm9sdW1lKSA9PiB0aGlzLnNldE11c2ljVm9sdW1lKHZvbHVtZSkpLFxuICAgICk7XG4gICAgdGhpcy5yb3V0ZVN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLnNmeFZvbHVtZUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodm9sdW1lKSA9PiB0aGlzLnNldFNmeFZvbHVtZSh2b2x1bWUpKSxcbiAgICApO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdGhpcy5sb2dnZWRJblVzZXIoKTtcbiAgICAgIGlmICh1c2VyKSB7XG4gICAgICAgIHRoaXMucXVldWVIaXN0b3J5V2F0Y2goKTtcbiAgICAgICAgdGhpcy53YXRjaENoYWxsZW5nZVN0YXRzKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuaGlzdG9yeVVpZCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuaGlzdG9yeVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuaGlzdG9yeVN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMub25saW5lSGlzdG9yeS5zZXQoW10pO1xuICAgICAgdGhpcy5jaGFsbGVuZ2VTdGF0c1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuY2hhbGxlbmdlU3RhdHNTdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmNoYWxsZW5nZVJ1bnNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLmNoYWxsZW5nZVJ1bnNTdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmNoYWxsZW5nZUFjdGl2ZVJ1blN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuY2hhbGxlbmdlQWN0aXZlUnVuU3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5jaGFsbGVuZ2VTdGF0cy5zZXQodGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy5lbXB0eVN0YXRzKCkpO1xuICAgICAgdGhpcy5jaGFsbGVuZ2VIaXN0b3J5LnNldChbXSk7XG4gICAgICB0aGlzLmFjdGl2ZVN0b3JlZENoYWxsZW5nZVJ1bi5zZXQodW5kZWZpbmVkKTtcbiAgICB9LCB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0pO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgICBpZiAodGhpcy50dXRvcmlhbE1vZGUoKSB8fCBnYW1lLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJyB8fCB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgIT09ICdwbGF5aW5nJykgcmV0dXJuO1xuICAgICAgY29uc3Qga2V5ID0gYCR7Z2FtZS5pZH06JHtnYW1lLm1vdmVDb3VudH06JHtnYW1lLndpbm5lciA/PyAnbm9uZSd9OiR7Z2FtZS53aW5uZXJSZWFzb24gPz8gJ25vbmUnfWA7XG4gICAgICBpZiAodGhpcy5sYXN0Q2hhbGxlbmdlSGFuZGxlZEtleSA9PT0ga2V5KSByZXR1cm47XG4gICAgICB0aGlzLmxhc3RDaGFsbGVuZ2VIYW5kbGVkS2V5ID0ga2V5O1xuICAgICAgdGhpcy5oYW5kbGVDaGFsbGVuZ2VSb3VuZEZpbmlzaGVkKGdhbWUpO1xuICAgIH0sIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSk7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICAgIGlmIChnYW1lLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJyB8fCB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgPT09ICdwbGF5aW5nJykgcmV0dXJuO1xuICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5tb2RlU3RhdHNSZXN1bHQoZ2FtZSk7XG4gICAgICBpZiAoIXJlc3VsdCkgcmV0dXJuO1xuICAgICAgY29uc3Qga2V5ID0gYCR7cmVzdWx0Lm1vZGV9OiR7Z2FtZS5pZH06JHtnYW1lLm1vdmVDb3VudH06JHtnYW1lLndpbm5lciA/PyAnbm9uZSd9OiR7Z2FtZS53aW5uZXJSZWFzb24gPz8gJ25vbmUnfWA7XG4gICAgICBpZiAodGhpcy5sYXN0TW9kZVN0YXRzSGFuZGxlZEtleSA9PT0ga2V5KSByZXR1cm47XG4gICAgICB0aGlzLmxhc3RNb2RlU3RhdHNIYW5kbGVkS2V5ID0ga2V5O1xuICAgICAgdm9pZCB0aGlzLmNoYWxsZW5nZVByb2dyZXNzLnJlY29yZE1vZGVSZXN1bHQocmVzdWx0Lm1vZGUsIHJlc3VsdC53b24sIHJlc3VsdC5yb3VuZFN0YXRzKS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gbW9kZSBzdGF0cyBzYXZlIGZhaWxlZCcsIGVycm9yKTtcbiAgICAgIH0pO1xuICAgIH0sIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSk7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHRoaXMuc3luY1R1cm5UaW1lcigpO1xuICAgIH0sIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0RmluaXNoZWRMb2NhbEdhbWVGb3JOZXh0VmlzaXQodHJ1ZSk7XG4gICAgdGhpcy5hdWRpby5zdG9wTXVzaWMoKTtcbiAgICB0aGlzLnJvdXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgaWYgKHRoaXMuYm9hcmRPcmllbnRhdGlvblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5ib2FyZE9yaWVudGF0aW9uVGltZXIpO1xuICAgIGlmICh0aGlzLm1vdmVBbmltYXRpb25UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMubW92ZUFuaW1hdGlvblRpbWVyKTtcbiAgICBpZiAodGhpcy5tb3ZlRWZmZWN0U3RhcnRUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMubW92ZUVmZmVjdFN0YXJ0VGltZXIpO1xuICAgIGlmICh0aGlzLm1vdmVFZmZlY3RDbGVhclRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlRWZmZWN0Q2xlYXJUaW1lcik7XG4gICAgaWYgKHRoaXMuc2NvcmVQb3BDbGVhclRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5zY29yZVBvcENsZWFyVGltZXIpO1xuICAgIGlmICh0aGlzLnBvd2VyVW5sb2NrVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLnBvd2VyVW5sb2NrVGltZXIpO1xuICAgIGlmICh0aGlzLmNoYWxsZW5nZUludHJvVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLmNoYWxsZW5nZUludHJvVGltZXIpO1xuICAgIGlmICh0aGlzLmJvdFR1cm5UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuYm90VHVyblRpbWVyKTtcbiAgICBpZiAodGhpcy5oaXN0b3J5V2F0Y2hUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuaGlzdG9yeVdhdGNoVGltZXIpO1xuICAgIHRoaXMuY2xlYXJUdXJuVGltZXIoKTtcbiAgICB0aGlzLm9ubGluZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmhpc3RvcnlTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VTdGF0c1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNoYWxsZW5nZVJ1bnNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VBY3RpdmVSdW5TdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xuICAgICAgICAgIHRoaXMucmVzZXRGaW5pc2hlZExvY2FsR2FtZUZvck5leHRWaXNpdCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKTtcbiAgICBjb25zdCBnYW1lSWQgPSB0aGlzLnBlbmRpbmdPbmxpbmVHYW1lSWQ7XG4gICAgaWYgKGdhbWVJZCAmJiB0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCAhPT0gZ2FtZUlkICYmIHRoaXMub3BlbmluZ09ubGluZUdhbWVJZCAhPT0gZ2FtZUlkKSB7XG4gICAgICB2b2lkIHRoaXMub3Blbk9ubGluZUdhbWUoZ2FtZUlkKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCAnTWluaUdhbWVzJyk7XG4gIH1cblxuICBwcml2YXRlIHNob3J0VXNlcklkKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB2YWx1ZS50cmltKCk7XG4gICAgaWYgKG5vcm1hbGl6ZWQubGVuZ3RoIDw9IDEwKSByZXR1cm4gbm9ybWFsaXplZDtcbiAgICByZXR1cm4gYCR7bm9ybWFsaXplZC5zbGljZSgwLCA0KX3igKYke25vcm1hbGl6ZWQuc2xpY2UoLTQpfWA7XG4gIH1cblxuICBwcml2YXRlIHJhbmdlVmFsdWVUb051bWJlcih2YWx1ZTogbnVtYmVyIHwgUmFuZ2VWYWx1ZSk6IG51bWJlciB7XG4gICAgY29uc3QgcmF3ID0gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyA/IHZhbHVlIDogdmFsdWUudXBwZXIgPz8gdmFsdWUubG93ZXIgPz8gMDtcbiAgICByZXR1cm4gTWF0aC5taW4oMTAwLCBNYXRoLm1heCgwLCBNYXRoLnJvdW5kKHJhdykpKTtcbiAgfVxuXG4gIHN0YXJ0Q2hhbGxlbmdlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0NoYWxsZW5nZUFjdGl2ZSgpICYmIHRoaXMucmVzdW1hYmxlQ2hhbGxlbmdlUnVuKCkpIHtcbiAgICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ2NoYWxsZW5nZS1uZXcnKTtcbiAgICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzdGFsZVJ1biA9IHRoaXMuYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuKCk7XG4gICAgaWYgKHN0YWxlUnVuICYmICF0aGlzLmlzUmVzdW1hYmxlQ2hhbGxlbmdlUnVuKHN0YWxlUnVuKSkge1xuICAgICAgdGhpcy5hYmFuZG9uQ2hhbGxlbmdlUnVuKHN0YWxlUnVuKTtcbiAgICB9XG4gICAgdGhpcy5jcmVhdGVOZXdDaGFsbGVuZ2VSdW4oKTtcbiAgfVxuXG4gIHJlcXVlc3ROZXdDaGFsbGVuZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVzdW1hYmxlQ2hhbGxlbmdlUnVuKCkgfHwgdGhpcy5pc0NoYWxsZW5nZUFjdGl2ZSgpKSB7XG4gICAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KCdjaGFsbGVuZ2UtbmV3Jyk7XG4gICAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jcmVhdGVOZXdDaGFsbGVuZ2VSdW4oKTtcbiAgfVxuXG4gIG9wZW5DaGFsbGVuZ2VWaWV3KCk6IHZvaWQge1xuICAgIHRoaXMuc2NyZWVuLnNldCgnY2hhbGxlbmdlJyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICBiYWNrVG9Ib21lKCk6IHZvaWQge1xuICAgIHRoaXMuY2FuY2VsQWN0aXZlR2FtZXBsYXlGZWVkYmFjaygpO1xuICAgIHRoaXMuc2NyZWVuLnNldCgnaG9tZScpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYW5jZWxBY3RpdmVHYW1lcGxheUZlZWRiYWNrKCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy5jbGVhclR1cm5UaW1lcigpO1xuICAgIGlmICh0aGlzLm1vdmVFZmZlY3RTdGFydFRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlRWZmZWN0U3RhcnRUaW1lcik7XG4gICAgaWYgKHRoaXMubW92ZUVmZmVjdENsZWFyVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLm1vdmVFZmZlY3RDbGVhclRpbWVyKTtcbiAgICBpZiAodGhpcy5zY29yZVBvcENsZWFyVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLnNjb3JlUG9wQ2xlYXJUaW1lcik7XG4gICAgdGhpcy5tb3ZlRWZmZWN0U3RhcnRUaW1lciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm1vdmVFZmZlY3RDbGVhclRpbWVyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2NvcmVQb3BDbGVhclRpbWVyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMubW92ZUVmZmVjdC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNjb3JlUG9wLnNldCh1bmRlZmluZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVOZXdDaGFsbGVuZ2VSdW4oKTogdm9pZCB7XG4gICAgdGhpcy5yZXNldENoYWxsZW5nZVNlc3Npb25TdGF0ZSgpO1xuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICBjb25zdCBpZCA9IGBjaGFsbGVuZ2UtJHtEYXRlLm5vdygpLnRvU3RyaW5nKDM2KX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCA4KX1gO1xuICAgIGNvbnN0IHJ1bjogQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1biA9IHtcbiAgICAgIGlkLFxuICAgICAgc2NoZW1hVmVyc2lvbjogMixcbiAgICAgIHN0YXR1czogJ2FjdGl2ZScsXG4gICAgICBsaXZlc1N0YXJ0OiAzLFxuICAgICAgbGl2ZXNSZW1haW5pbmc6IDMsXG4gICAgICByb3VuZEluZGV4OiAxLFxuICAgICAgY3VycmVudFJvdW5kOiAxLFxuICAgICAgcm91bmRzV29uOiAwLFxuICAgICAgaGlnaGVzdFJvdW5kUmVhY2hlZDogMSxcbiAgICAgIGFjdGl2ZVJvdW5kSWQ6IGAke2lkfToxYCxcbiAgICAgIHdpbnM6IDAsXG4gICAgICBsb3NzZXM6IDAsXG4gICAgICBiZXN0U3RyZWFrSW5SdW46IDAsXG4gICAgICBjdXJyZW50U3RyZWFrOiAwLFxuICAgICAgYm90TGFkZGVyOiB0aGlzLmNoYWxsZW5nZUxhZGRlci5tYXAoKGJvdCkgPT4gYm90LmlkKSxcbiAgICAgIHJvdW5kUmVzdWx0czogW10sXG4gICAgICBzdGFydGVkQXQ6IG5vdyxcbiAgICAgIGxhc3RFdmVudEF0OiBub3csXG4gICAgICB1cGRhdGVkQXQ6IG5vdyxcbiAgICB9O1xuICAgIHRoaXMuY2hhbGxlbmdlUnVuLnNldChydW4pO1xuICAgIHRoaXMuYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuLnNldChydW4pO1xuICAgIHRoaXMuc3RhcnRDaGFsbGVuZ2VSb3VuZChydW4pO1xuICAgIHZvaWQgdGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy5yZWNvcmRDaGFsbGVuZ2VTdGFydGVkKHRoaXMuY2hhbGxlbmdlUnVuKCkgPz8gcnVuKS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgIGNvbnNvbGUud2FybignW0NoZXNzaW1hbHNdIGNoYWxsZW5nZSBydW4gc2F2ZSBmYWlsZWQnLCBlcnJvcik7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0Q2hhbGxlbmdlU2Vzc2lvblN0YXRlKCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy5kaXNtaXNzQ2hhbGxlbmdlSW50cm8oKTtcbiAgICB0aGlzLmNoYWxsZW5nZVJ1bi5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZVBoYXNlLnNldCgnaWRsZScpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdFdvbi5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RCb3Quc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0Um91bmRTdGF0cy5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZU5ld1JlY29yZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMubGFzdENoYWxsZW5nZUhhbmRsZWRLZXkgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5sYXN0T3V0Y29tZVNvdW5kS2V5ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNsZWFyUmV2aWV3KCk7XG4gIH1cblxuICByZXN1bWVDaGFsbGVuZ2UocnVuID0gdGhpcy5hY3RpdmVTdG9yZWRDaGFsbGVuZ2VSdW4oKSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1Jlc3VtYWJsZUNoYWxsZW5nZVJ1bihydW4pKSB7XG4gICAgICB0aGlzLmFjdGl2ZVN0b3JlZENoYWxsZW5nZVJ1bi5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jaGFsbGVuZ2VSdW4uc2V0KHJ1bik7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0V29uLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdEJvdC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RSb3VuZFN0YXRzLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTmV3UmVjb3JkLnNldChmYWxzZSk7XG4gICAgY29uc3Qgc2F2ZWRHYW1lID0gdGhpcy5hY3RpdmVHYW1lRm9yUnVuKHJ1bik7XG4gICAgaWYgKHNhdmVkR2FtZSkge1xuICAgICAgdGhpcy5lbnRlckNoYWxsZW5nZVJvdW5kKHJ1biwgc2F2ZWRHYW1lLCBmYWxzZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RhcnRDaGFsbGVuZ2VSb3VuZChydW4pO1xuICB9XG5cbiAgY29udGludWVDaGFsbGVuZ2UoKTogdm9pZCB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBpZiAoIXJ1biB8fCB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgIT09ICdiZXR3ZWVuJykgcmV0dXJuO1xuICAgIHRoaXMuc3RhcnRDaGFsbGVuZ2VSb3VuZChydW4pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydENoYWxsZW5nZVJvdW5kKHJ1bjogQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1bik6IHZvaWQge1xuICAgIGNvbnN0IGJvdCA9IHRoaXMuY2hhbGxlbmdlTGFkZGVyW01hdGgubWF4KDAsIHRoaXMuY2hhbGxlbmdlUnVuUm91bmRJbmRleChydW4pIC0gMSldO1xuICAgIGlmICghYm90KSB7XG4gICAgICB0aGlzLmNoYWxsZW5nZVBoYXNlLnNldCgnY29tcGxldGVkJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZW50ZXJDaGFsbGVuZ2VSb3VuZChydW4sIGNyZWF0ZUNoZXNzaW1hbHNHYW1lKGJvdC5ib2FyZFNpemUpLCB0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZW50ZXJDaGFsbGVuZ2VSb3VuZChydW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4sIGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIHNob3dJbnRybzogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGJvdCA9IHRoaXMuY2hhbGxlbmdlTGFkZGVyW01hdGgubWF4KDAsIHJ1bi5jdXJyZW50Um91bmQgLSAxKV07XG4gICAgaWYgKCFib3QpIHtcbiAgICAgIHRoaXMuY2hhbGxlbmdlUGhhc2Uuc2V0KCdjb21wbGV0ZWQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vbmxpbmVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy50dXRvcmlhbE1vZGUuc2V0KGZhbHNlKTtcbiAgICB0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZS5zZXQoJ2lkbGUnKTtcbiAgICB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlLnNldCgnYm90Jyk7XG4gICAgdGhpcy5zZWxlY3RlZEJvYXJkU2l6ZS5zZXQoYm90LmJvYXJkU2l6ZSk7XG4gICAgdGhpcy5zZWxlY3RlZEJvdERpZmZpY3VsdHkuc2V0KGJvdC5kaWZmaWN1bHR5KTtcbiAgICB0aGlzLnNlbGVjdGVkTmlnaHRtYXJlTW9kZS5zZXQoJ25vbmUnKTtcbiAgICB0aGlzLnNlbGVjdGVkQm90UHJvZmlsZUlkLnNldChib3QucHJvZmlsZUlkKTtcbiAgICB0aGlzLmdhbWVCb3RQcm9maWxlSWQuc2V0KGJvdC5wcm9maWxlSWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlUGhhc2Uuc2V0KCdwbGF5aW5nJyk7XG4gICAgdGhpcy5sYXN0Q2hhbGxlbmdlSGFuZGxlZEtleSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmxhc3RPdXRjb21lU291bmRLZXkgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5hdWRpby5zdG9wTXVzaWMoKTtcbiAgICB0aGlzLmdhbWUuc2V0KGdhbWUpO1xuICAgIHRoaXMucGVyc2lzdEFjdGl2ZUNoYWxsZW5nZUdhbWUoZ2FtZSk7XG4gICAgdGhpcy5jbGVhclJldmlldygpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNjcmVlbi5zZXQoJ2dhbWUnKTtcbiAgICBpZiAoc2hvd0ludHJvKSB0aGlzLnNob3dDaGFsbGVuZ2VJbnRybygpO1xuICAgIGVsc2UgdGhpcy5kaXNtaXNzQ2hhbGxlbmdlSW50cm8oKTtcbiAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpY1Nvb24oKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICB0aGlzLmZvY3VzQm9hcmRTb29uKCk7XG4gICAgdGhpcy5xdWV1ZUJvdFR1cm5JZk5lZWRlZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1Jlc3VtYWJsZUNoYWxsZW5nZVJ1bihydW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4gfCB1bmRlZmluZWQpOiBydW4gaXMgQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1biB7XG4gICAgaWYgKCFydW4gfHwgcnVuLnN0YXR1cyAhPT0gJ2FjdGl2ZScpIHJldHVybiBmYWxzZTtcbiAgICBpZiAocnVuLmxpdmVzUmVtYWluaW5nIDw9IDApIHJldHVybiBmYWxzZTtcbiAgICBpZiAocnVuLmN1cnJlbnRSb3VuZCA8IDEgfHwgcnVuLmN1cnJlbnRSb3VuZCA+IHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChydW4ud2lucyA+PSB0aGlzLmNoYWxsZW5nZUxhZGRlci5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICBpZiAocnVuLmN1cnJlbnRSb3VuZCAhPT0gcnVuLndpbnMgKyAxKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuICEhdGhpcy5jaGFsbGVuZ2VMYWRkZXJbcnVuLmN1cnJlbnRSb3VuZCAtIDFdO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDb25maWd1cmVkTG9jYWxHYW1lKGJvYXJkU2l6ZTogQ2hlc3NpbWFsc0JvYXJkU2l6ZSk6IENoZXNzaW1hbHNHYW1lU3RhdGUge1xuICAgIGNvbnN0IGdhbWUgPSBjcmVhdGVDaGVzc2ltYWxzR2FtZShib2FyZFNpemUpO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgIT09ICdib3QnKSByZXR1cm4gZ2FtZTtcbiAgICByZXR1cm4gdGhpcy5hcHBseU5pZ2h0bWFyZVByZXNldChnYW1lLCB0aGlzLmFjdGl2ZU5pZ2h0bWFyZU1vZGUoKSk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5TmlnaHRtYXJlUHJlc2V0KGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIG1vZGU6IENoZXNzaW1hbHNOaWdodG1hcmVNb2RlKTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSB7XG4gICAgaWYgKG1vZGUgPT09ICdtYWdudXMnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5nYW1lLFxuICAgICAgICBwbGF5ZXJzOiB7XG4gICAgICAgICAgLi4uZ2FtZS5wbGF5ZXJzLFxuICAgICAgICAgIHdoaXRlOiB7XG4gICAgICAgICAgICAuLi5nYW1lLnBsYXllcnMud2hpdGUsXG4gICAgICAgICAgICBjYXJkczoge1xuICAgICAgICAgICAgICAuLi5nYW1lLnBsYXllcnMud2hpdGUuY2FyZHMsXG4gICAgICAgICAgICAgIGVhZ2xlOiB7XG4gICAgICAgICAgICAgICAgLi4uZ2FtZS5wbGF5ZXJzLndoaXRlLmNhcmRzLmVhZ2xlLFxuICAgICAgICAgICAgICAgIHVzZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgdXNlc1JlbWFpbmluZzogMCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgYnVsbDoge1xuICAgICAgICAgICAgICAgIC4uLmdhbWUucGxheWVycy53aGl0ZS5jYXJkcy5idWxsLFxuICAgICAgICAgICAgICAgIHVzZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgdXNlc1JlbWFpbmluZzogMCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAga2FuZ2Fyb286IHtcbiAgICAgICAgICAgICAgICAuLi5nYW1lLnBsYXllcnMud2hpdGUuY2FyZHMua2FuZ2Fyb28sXG4gICAgICAgICAgICAgICAgdXNlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB1c2VzUmVtYWluaW5nOiAwLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBsaW9uOiB7XG4gICAgICAgICAgICAgICAgLi4uZ2FtZS5wbGF5ZXJzLndoaXRlLmNhcmRzLmxpb24sXG4gICAgICAgICAgICAgICAgdXNlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdXNlc1JlbWFpbmluZzogMSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKG1vZGUgIT09ICdwcmlkZScpIHJldHVybiBnYW1lO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmdhbWUsXG4gICAgICBwbGF5ZXJzOiB7XG4gICAgICAgIC4uLmdhbWUucGxheWVycyxcbiAgICAgICAgYmxhY2s6IHtcbiAgICAgICAgICAuLi5nYW1lLnBsYXllcnMuYmxhY2ssXG4gICAgICAgICAgY2FyZHM6IHtcbiAgICAgICAgICAgIC4uLmdhbWUucGxheWVycy5ibGFjay5jYXJkcyxcbiAgICAgICAgICAgIGVhZ2xlOiB7XG4gICAgICAgICAgICAgIC4uLmdhbWUucGxheWVycy5ibGFjay5jYXJkcy5lYWdsZSxcbiAgICAgICAgICAgICAgdXNlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgdXNlc1JlbWFpbmluZzogMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidWxsOiB7XG4gICAgICAgICAgICAgIC4uLmdhbWUucGxheWVycy5ibGFjay5jYXJkcy5idWxsLFxuICAgICAgICAgICAgICB1c2VkOiB0cnVlLFxuICAgICAgICAgICAgICB1c2VzUmVtYWluaW5nOiAwLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGthbmdhcm9vOiB7XG4gICAgICAgICAgICAgIC4uLmdhbWUucGxheWVycy5ibGFjay5jYXJkcy5rYW5nYXJvbyxcbiAgICAgICAgICAgICAgdXNlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgdXNlc1JlbWFpbmluZzogMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsaW9uOiB7XG4gICAgICAgICAgICAgIC4uLmdhbWUucGxheWVycy5ibGFjay5jYXJkcy5saW9uLFxuICAgICAgICAgICAgICB1c2VkOiBmYWxzZSxcbiAgICAgICAgICAgICAgdXNlc1JlbWFpbmluZzogNCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHN0YXJ0R2FtZSgpOiB2b2lkIHtcbiAgICB0aGlzLm9ubGluZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLmNoYWxsZW5nZVBoYXNlLnNldCgnaWRsZScpO1xuICAgIHRoaXMuY2hhbGxlbmdlUnVuLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdFdvbi5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RCb3Quc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0Um91bmRTdGF0cy5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZU5ld1JlY29yZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMuZGlzbWlzc0NoYWxsZW5nZUludHJvKCk7XG4gICAgdGhpcy50dXRvcmlhbE1vZGUuc2V0KGZhbHNlKTtcbiAgICB0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZS5zZXQoJ2lkbGUnKTtcbiAgICB0aGlzLmdhbWVCb3RQcm9maWxlSWQuc2V0KHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcgPyB0aGlzLnNlbGVjdGVkQm90UHJvZmlsZUlkKCkgOiB1bmRlZmluZWQpO1xuICAgIHRoaXMubGFzdE91dGNvbWVTb3VuZEtleSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmF1ZGlvLnN0b3BNdXNpYygpO1xuICAgIHRoaXMuZ2FtZS5zZXQodGhpcy5jcmVhdGVDb25maWd1cmVkTG9jYWxHYW1lKHRoaXMuc2VsZWN0ZWRCb2FyZFNpemUoKSkpO1xuICAgIHRoaXMuY2xlYXJSZXZpZXcoKTtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zY3JlZW4uc2V0KCdnYW1lJyk7XG4gICAgdGhpcy5zdGFydENoZXNzaW1hbHNHYW1lTXVzaWNTb29uKCk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgdGhpcy5mb2N1c0JvYXJkU29vbigpO1xuICAgIHRoaXMucXVldWVCb3RUdXJuSWZOZWVkZWQoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ2hhbGxlbmdlUm91bmRGaW5pc2hlZChnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogdm9pZCB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBjb25zdCBib3QgPSB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpO1xuICAgIGlmICghcnVuIHx8ICFib3QpIHJldHVybjtcblxuICAgIGNvbnN0IHJvdW5kSW5kZXggPSB0aGlzLmNoYWxsZW5nZVJ1blJvdW5kSW5kZXgocnVuKTtcbiAgICBjb25zdCByb3VuZHNXb24gPSB0aGlzLmNoYWxsZW5nZVJ1blJvdW5kc1dvbihydW4pO1xuICAgIGNvbnN0IHdvbiA9IGdhbWUud2lubmVyID09PSAnd2hpdGUnO1xuICAgIGNvbnN0IHJvdW5kU3RhdHMgPSB0aGlzLmNyZWF0ZUNoYWxsZW5nZVJvdW5kU3RhdHMoZ2FtZSk7XG4gICAgY29uc3QgbmV4dExpdmVzID0gd29uID8gcnVuLmxpdmVzUmVtYWluaW5nIDogTWF0aC5tYXgoMCwgcnVuLmxpdmVzUmVtYWluaW5nIC0gMSk7XG4gICAgY29uc3QgbmV4dFN0cmVhayA9IHdvbiA/IHJ1bi5jdXJyZW50U3RyZWFrICsgMSA6IDA7XG4gICAgY29uc3QgbmV4dFJvdW5kID0gd29uID8gTWF0aC5taW4odGhpcy5jaGFsbGVuZ2VMYWRkZXIubGVuZ3RoLCByb3VuZEluZGV4ICsgMSkgOiByb3VuZEluZGV4O1xuICAgIGNvbnN0IG5leHRSb3VuZHNXb24gPSByb3VuZHNXb24gKyAod29uID8gMSA6IDApO1xuICAgIGNvbnN0IGNvbXBsZXRlZCA9IHdvbiAmJiByb3VuZEluZGV4ID49IHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aDtcbiAgICBjb25zdCBmYWlsZWQgPSAhd29uICYmIG5leHRMaXZlcyA8PSAwO1xuICAgIGNvbnN0IGZpbmlzaGVkQXQgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgY29uc3Qgcm91bmRSZXN1bHQ6IENoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFJlc3VsdCA9IHtcbiAgICAgIHJvdW5kOiByb3VuZEluZGV4LFxuICAgICAgYm90SWQ6IGJvdC5pZCxcbiAgICAgIHByb2ZpbGVJZDogYm90LnByb2ZpbGVJZCxcbiAgICAgIHdvbixcbiAgICAgIGxpdmVzUmVtYWluaW5nOiBuZXh0TGl2ZXMsXG4gICAgICBzdGF0czogcm91bmRTdGF0cyxcbiAgICAgIGZpbmlzaGVkQXQsXG4gICAgfTtcbiAgICBjb25zdCBuZXh0UnVuOiBDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuID0ge1xuICAgICAgLi4ucnVuLFxuICAgICAgc3RhdHVzOiBjb21wbGV0ZWQgPyAnY29tcGxldGVkJyA6IGZhaWxlZCA/ICdmYWlsZWQnIDogJ2FjdGl2ZScsXG4gICAgICBsaXZlc1JlbWFpbmluZzogbmV4dExpdmVzLFxuICAgICAgd2luczogcnVuLndpbnMgKyAod29uID8gMSA6IDApLFxuICAgICAgbG9zc2VzOiBydW4ubG9zc2VzICsgKHdvbiA/IDAgOiAxKSxcbiAgICAgIGN1cnJlbnRTdHJlYWs6IG5leHRTdHJlYWssXG4gICAgICBiZXN0U3RyZWFrSW5SdW46IE1hdGgubWF4KHJ1bi5iZXN0U3RyZWFrSW5SdW4sIG5leHRTdHJlYWspLFxuICAgICAgcm91bmRJbmRleDogY29tcGxldGVkIHx8IGZhaWxlZCA/IHJvdW5kSW5kZXggOiBuZXh0Um91bmQsXG4gICAgICBjdXJyZW50Um91bmQ6IGNvbXBsZXRlZCB8fCBmYWlsZWQgPyByb3VuZEluZGV4IDogbmV4dFJvdW5kLFxuICAgICAgcm91bmRzV29uOiBuZXh0Um91bmRzV29uLFxuICAgICAgaGlnaGVzdFJvdW5kUmVhY2hlZDogTWF0aC5tYXgocnVuLmhpZ2hlc3RSb3VuZFJlYWNoZWQgPz8gcm91bmRJbmRleCwgcm91bmRJbmRleCksXG4gICAgICBhY3RpdmVSb3VuZElkOiBjb21wbGV0ZWQgfHwgZmFpbGVkID8gdW5kZWZpbmVkIDogYCR7cnVuLmlkfToke25leHRSb3VuZH1gLFxuICAgICAgcm91bmRSZXN1bHRzOiBbLi4ucnVuLnJvdW5kUmVzdWx0cywgcm91bmRSZXN1bHRdLFxuICAgICAgbGFzdEV2ZW50QXQ6IGZpbmlzaGVkQXQsXG4gICAgICBhY3RpdmVHYW1lOiB1bmRlZmluZWQsXG4gICAgICB1cGRhdGVkQXQ6IGZpbmlzaGVkQXQsXG4gICAgICBmaW5pc2hlZEF0OiBjb21wbGV0ZWQgfHwgZmFpbGVkID8gZmluaXNoZWRBdCA6IHVuZGVmaW5lZCxcbiAgICB9O1xuXG4gICAgdGhpcy5jaGFsbGVuZ2VSdW4uc2V0KG5leHRSdW4pO1xuICAgIHRoaXMuYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuLnNldChuZXh0UnVuLnN0YXR1cyA9PT0gJ2FjdGl2ZScgPyBuZXh0UnVuIDogdW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RXb24uc2V0KHdvbik7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0Qm90LnNldChib3QpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdFJvdW5kU3RhdHMuc2V0KHJvdW5kU3RhdHMpO1xuICAgIHRoaXMuY2hhbGxlbmdlTmV3UmVjb3JkLnNldChcbiAgICAgIHJvdW5kSW5kZXggPiB0aGlzLmNoYWxsZW5nZVN0YXRzKCkuYmVzdFJvdW5kUmVhY2hlZFxuICAgICAgICB8fCBNYXRoLm1heChydW4uYmVzdFN0cmVha0luUnVuLCBuZXh0U3RyZWFrKSA+IHRoaXMuY2hhbGxlbmdlU3RhdHMoKS5iZXN0V2luU3RyZWFrLFxuICAgICk7XG4gICAgdGhpcy5jaGFsbGVuZ2VQaGFzZS5zZXQoY29tcGxldGVkID8gJ2NvbXBsZXRlZCcgOiBmYWlsZWQgPyAnZmFpbGVkJyA6ICdiZXR3ZWVuJyk7XG5cbiAgICB2b2lkIHRoaXMuY2hhbGxlbmdlUHJvZ3Jlc3MuYXBwbHlSb3VuZFJlc3VsdCh7XG4gICAgICBydW46IG5leHRSdW4sXG4gICAgICByb3VuZFJlYWNoZWQ6IHJvdW5kSW5kZXgsXG4gICAgICB3b24sXG4gICAgICBjb21wbGV0ZWQsXG4gICAgICByb3VuZFN0YXRzLFxuICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gY2hhbGxlbmdlIHN0YXRzIHNhdmUgZmFpbGVkJywgZXJyb3IpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhYmFuZG9uQ2hhbGxlbmdlSWZOZWVkZWQoKTogdm9pZCB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBpZiAoIXJ1biB8fCBydW4uc3RhdHVzICE9PSAnYWN0aXZlJyB8fCB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgPT09ICdpZGxlJykgcmV0dXJuO1xuICAgIHRoaXMuYWJhbmRvbkNoYWxsZW5nZVJ1bihydW4pO1xuICB9XG5cbiAgcHJpdmF0ZSBhYmFuZG9uQ2hhbGxlbmdlUnVuKHJ1bj86IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4pOiB2b2lkIHtcbiAgICBpZiAoIXJ1biB8fCBydW4uc3RhdHVzICE9PSAnYWN0aXZlJykgcmV0dXJuO1xuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICBjb25zdCBuZXh0UnVuOiBDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuID0ge1xuICAgICAgLi4ucnVuLFxuICAgICAgc3RhdHVzOiAnYWJhbmRvbmVkJyxcbiAgICAgIHVwZGF0ZWRBdDogbm93LFxuICAgICAgZmluaXNoZWRBdDogbm93LFxuICAgIH07XG4gICAgdGhpcy5hY3RpdmVTdG9yZWRDaGFsbGVuZ2VSdW4uc2V0KHVuZGVmaW5lZCk7XG4gICAgdm9pZCB0aGlzLmNoYWxsZW5nZVByb2dyZXNzLnNhdmVSdW4obmV4dFJ1bikuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tDaGVzc2ltYWxzXSBjaGFsbGVuZ2UgYWJhbmRvbiBzYXZlIGZhaWxlZCcsIGVycm9yKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXJ0VHV0b3JpYWwoKTogdm9pZCB7XG4gICAgdGhpcy5vbmxpbmVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucmVzZXRDaGFsbGVuZ2VTZXNzaW9uU3RhdGUoKTtcbiAgICB0aGlzLnR1dG9yaWFsTW9kZS5zZXQodHJ1ZSk7XG4gICAgdGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUuc2V0KCdpZGxlJyk7XG4gICAgdGhpcy5nYW1lQm90UHJvZmlsZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUuc2V0KCdvbmUtZGV2aWNlJyk7XG4gICAgdGhpcy5sYXN0T3V0Y29tZVNvdW5kS2V5ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYXVkaW8uc3RvcE11c2ljKCk7XG4gICAgdGhpcy5nYW1lLnNldCh0aGlzLmNyZWF0ZVR1dG9yaWFsR2FtZSgpKTtcbiAgICB0aGlzLmNsZWFyUmV2aWV3KCk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2NyZWVuLnNldCgnZ2FtZScpO1xuICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzR2FtZU11c2ljU29vbigpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIHRoaXMuZm9jdXNCb2FyZFNvb24oKTtcbiAgfVxuXG4gIHN0YXJ0VHV0b3JpYWxGcm9tUnVsZXMoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZVJ1bGVzTW9kYWwoKTtcbiAgICB0aGlzLnN0YXJ0VHV0b3JpYWwoKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZU9ubGluZUdhbWUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLnR1dG9yaWFsTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMuZ2FtZUJvdFByb2ZpbGVJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZS5zZXQoJ2Nvbm5lY3RpbmcnKTtcbiAgICB0aGlzLmF1ZGlvLnN0b3BNdXNpYygpO1xuICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KCcnKTtcbiAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQoJ2NyZWF0ZScpO1xuICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgdGhpcy5zZWxlY3RlZEJvYXJkU2l6ZS5zZXQoOCk7XG4gICAgICBjb25zdCBnYW1lID0gYXdhaXQgdGhpcy5vbmxpbmUuY3JlYXRlR2FtZSg4KTtcbiAgICAgIHRoaXMub25saW5lVWlkLnNldCh0aGlzLm9ubGluZS5jdXJyZW50VWlkKTtcbiAgICAgIHRoaXMucXVldWVIaXN0b3J5V2F0Y2goKTtcbiAgICAgIHRoaXMub3BlbmVkT25saW5lR2FtZUlkID0gZ2FtZS5pZDtcbiAgICAgIHRoaXMud2F0Y2hPbmxpbmVHYW1lKGdhbWUuaWQpO1xuICAgICAgdGhpcy5nYW1lLnNldChnYW1lKTtcbiAgICAgIHRoaXMuY2xlYXJSZXZpZXcoKTtcbiAgICAgIHRoaXMuc2NyZWVuLnNldCgnZ2FtZScpO1xuICAgICAgdGhpcy5zdGFydENoZXNzaW1hbHNHYW1lTXVzaWNTb29uKCk7XG4gICAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLnN1Y2Nlc3MoKTtcbiAgICAgIHRoaXMuZm9jdXNCb2FyZFNvb24oKTtcbiAgICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLmNoZXNzaW1hbHNHYW1lUm91dGUoZ2FtZS5pZCkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tDaGVzc2ltYWxzXSBjcmVhdGUgb25saW5lIGdhbWUgZmFpbGVkJywgZXJyb3IpO1xuICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lRXJyb3InKSk7XG4gICAgICB0aGlzLnJlc3VtZVNwbGFzaFZpc2libGUuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljU29vbigpO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5lcnJvcigpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGpvaW5PbmxpbmVHYW1lQnlDb2RlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGdhbWVJZCA9IHRoaXMub25saW5lLm5vcm1hbGl6ZUdhbWVJZCh0aGlzLm9ubGluZUpvaW5Db2RlKCkpO1xuICAgIGlmICghdGhpcy5vbmxpbmUuaXNWYWxpZEdhbWVJZChnYW1lSWQpKSB7XG4gICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVJbnZhbGlkQ29kZScpKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9ubGluZUpvaW5Db2RlLnNldChnYW1lSWQpO1xuICAgIHRoaXMub25saW5lQWN0aW9uLnNldCgnam9pbicpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm9wZW5PbmxpbmVHYW1lKGdhbWVJZCk7XG4gICAgICBpZiAodGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPT09IGdhbWVJZCkge1xuICAgICAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5jaGVzc2ltYWxzR2FtZVJvdXRlKGdhbWVJZCkpO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBvcGVuT25saW5lR2FtZShnYW1lSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRHYW1lSWQgPSB0aGlzLm9ubGluZS5ub3JtYWxpemVHYW1lSWQoZ2FtZUlkKTtcbiAgICBpZiAoIXRoaXMub25saW5lLmlzVmFsaWRHYW1lSWQobm9ybWFsaXplZEdhbWVJZCkpIHtcbiAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUludmFsaWRDb2RlJykpO1xuICAgICAgdGhpcy5jYW5jZWxBY3RpdmVHYW1lcGxheUZlZWRiYWNrKCk7XG4gICAgICB0aGlzLnNjcmVlbi5zZXQoJ2hvbWUnKTtcbiAgICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljU29vbigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPT09IG5vcm1hbGl6ZWRHYW1lSWQgfHwgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID09PSBub3JtYWxpemVkR2FtZUlkKSByZXR1cm47XG5cbiAgICB0aGlzLm9ubGluZUVycm9yLnNldCgnJyk7XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLnR1dG9yaWFsTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMuZ2FtZUJvdFByb2ZpbGVJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmF1ZGlvLnN0b3BNdXNpYygpO1xuICAgIHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlLnNldCgnY29ubmVjdGluZycpO1xuICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldCh0cnVlKTtcbiAgICB0aGlzLnNjcmVlbi5zZXQoJ2dhbWUnKTtcbiAgICB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgPSBub3JtYWxpemVkR2FtZUlkO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm9ubGluZS5qb2luR2FtZShub3JtYWxpemVkR2FtZUlkKTtcbiAgICAgIHRoaXMub25saW5lVWlkLnNldCh0aGlzLm9ubGluZS5jdXJyZW50VWlkKTtcbiAgICAgIHRoaXMucXVldWVIaXN0b3J5V2F0Y2goKTtcbiAgICAgIHRoaXMub3BlbmVkT25saW5lR2FtZUlkID0gbm9ybWFsaXplZEdhbWVJZDtcbiAgICAgIHRoaXMud2F0Y2hPbmxpbmVHYW1lKG5vcm1hbGl6ZWRHYW1lSWQpO1xuICAgICAgdGhpcy5zY3JlZW4uc2V0KCdnYW1lJyk7XG4gICAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpY1Nvb24oKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLnNlbGVjdGlvbigpO1xuICAgICAgdGhpcy5mb2N1c0JvYXJkU29vbigpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tDaGVzc2ltYWxzXSBvcGVuIG9ubGluZSBnYW1lIGZhaWxlZCcsIGVycm9yKTtcbiAgICAgIHRoaXMub3BlbmVkT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUuc2V0KCdlcnJvcicpO1xuICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy5vbmxpbmVPcGVuRXJyb3JNZXNzYWdlKGVycm9yKSk7XG4gICAgICB0aGlzLmNhbmNlbEFjdGl2ZUdhbWVwbGF5RmVlZGJhY2soKTtcbiAgICAgIHRoaXMuc2NyZWVuLnNldCgnaG9tZScpO1xuICAgICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldChmYWxzZSk7XG4gICAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc01lbnVNdXNpY1Nvb24oKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgdm9pZCB0aGlzLmhhcHRpY3MuZXJyb3IoKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5vbmxpbmVMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcmVzdGFydEdhbWUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLm1vZGUgPT09ICdvbmxpbmUnICYmIHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykge1xuICAgICAgdm9pZCB0aGlzLnJlcXVlc3RPbmxpbmVSZW1hdGNoKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy5sYXN0T3V0Y29tZVNvdW5kS2V5ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZ2FtZS5zZXQodGhpcy50dXRvcmlhbE1vZGUoKSA/IHRoaXMuY3JlYXRlVHV0b3JpYWxHYW1lKCkgOiB0aGlzLmNyZWF0ZUNvbmZpZ3VyZWRMb2NhbEdhbWUodGhpcy5nYW1lKCkuYm9hcmRTaXplKSk7XG4gICAgdGhpcy5jbGVhclJldmlldygpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpY1Nvb24oKTtcbiAgICB0aGlzLmZvY3VzQm9hcmRTb29uKCk7XG4gICAgdGhpcy5xdWV1ZUJvdFR1cm5JZk5lZWRlZCgpO1xuICB9XG5cbiAgZXhpdFR1dG9yaWFsKCk6IHZvaWQge1xuICAgIHRoaXMudHV0b3JpYWxNb2RlLnNldChmYWxzZSk7XG4gICAgdGhpcy5yZXNldFRvTW9kZVNldHVwKCk7XG4gIH1cblxuICByZXNldFRvTW9kZVNldHVwKCk6IHZvaWQge1xuICAgIHRoaXMuYWJhbmRvbkNoYWxsZW5nZUlmTmVlZGVkKCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VQaGFzZS5zZXQoJ2lkbGUnKTtcbiAgICB0aGlzLmNoYWxsZW5nZVJ1bi5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RXb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0Qm90LnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdFJvdW5kU3RhdHMuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy50dXRvcmlhbE1vZGUuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnJlc2V0RmluaXNoZWRMb2NhbEdhbWVGb3JOZXh0VmlzaXQoKTtcbiAgICB0aGlzLm9ubGluZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9ubGluZVN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldChmYWxzZSk7XG4gICAgdGhpcy5jYW5jZWxBY3RpdmVHYW1lcGxheUZlZWRiYWNrKCk7XG4gICAgdGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUuc2V0KCdpZGxlJyk7XG4gICAgdGhpcy5zY3JlZW4uc2V0KCdob21lJyk7XG4gICAgdGhpcy5zdGFydENoZXNzaW1hbHNNZW51TXVzaWNTb29uKCk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2xlYXJSZXZpZXcoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmV0dXJuQ2hhbGxlbmdlVG9NZW51KCk6IHZvaWQge1xuICAgIGNvbnN0IHJ1biA9IHRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gICAgaWYgKHRoaXMuaXNSZXN1bWFibGVDaGFsbGVuZ2VSdW4ocnVuKSkge1xuICAgICAgdGhpcy5hY3RpdmVTdG9yZWRDaGFsbGVuZ2VSdW4uc2V0KHJ1bik7XG4gICAgfVxuICAgIHRoaXMuZGlzbWlzc0NoYWxsZW5nZUludHJvKCk7XG4gICAgdGhpcy5yZXNldEZpbmlzaGVkTG9jYWxHYW1lRm9yTmV4dFZpc2l0KCk7XG4gICAgdGhpcy5vbmxpbmVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5vbmxpbmVTdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucmVzdW1lU3BsYXNoVmlzaWJsZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMuY2FuY2VsQWN0aXZlR2FtZXBsYXlGZWVkYmFjaygpO1xuICAgIHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlLnNldCgnaWRsZScpO1xuICAgIHRoaXMuc2NyZWVuLnNldCgnaG9tZScpO1xuICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljU29vbigpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNsZWFyUmV2aWV3KCk7XG4gIH1cblxuICByZXNldFRvR2FtZXNNZW51KCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnJlc2V0VG9Nb2RlU2V0dXAoKTtcbiAgICBjb25zdCByb3V0ZSA9IHRoaXMubWluaUdhbWVzQmFzZVJvdXRlKCk7XG4gICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHJvdXRlKS5jYXRjaCgoKSA9PiB7XG4gICAgICB0aGlzLmNhbmNlbEFjdGl2ZUdhbWVwbGF5RmVlZGJhY2soKTtcbiAgICAgIHRoaXMuc2NyZWVuLnNldCgnaG9tZScpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldEZpbmlzaGVkTG9jYWxHYW1lRm9yTmV4dFZpc2l0KHJldHVybkhvbWUgPSBmYWxzZSk6IHZvaWQge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnbG9jYWwnIHx8IGdhbWUuc3RhdHVzICE9PSAnZmluaXNoZWQnKSByZXR1cm47XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICBpZiAodGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLm1vdmVBbmltYXRpb25UaW1lcik7XG4gICAgdGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2xlYXJSZXZpZXcoKTtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5nYW1lLnNldCh0aGlzLmNyZWF0ZUNvbmZpZ3VyZWRMb2NhbEdhbWUoZ2FtZS5ib2FyZFNpemUpKTtcbiAgICBpZiAocmV0dXJuSG9tZSkge1xuICAgICAgdGhpcy5jYW5jZWxBY3RpdmVHYW1lcGxheUZlZWRiYWNrKCk7XG4gICAgICB0aGlzLnNjcmVlbi5zZXQoJ2hvbWUnKTtcbiAgICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljU29vbigpO1xuICAgIH1cbiAgfVxuXG4gIHJlcXVlc3RSZXN0YXJ0R2FtZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0NoYWxsZW5nZUFjdGl2ZSgpKSByZXR1cm47XG4gICAgaWYgKCF0aGlzLmNhbkNvbnRyb2xDdXJyZW50R2FtZSgpKSByZXR1cm47XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCgncmVzdGFydCcpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgcmVxdWVzdENoYW5nZU1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCgnbW9kZScpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgcmVxdWVzdENoYW5nZUdhbWUoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCgnZ2FtZXMnKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIHJlcXVlc3RSZXNpZ24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyB8fCAhdGhpcy5jYW5Db250cm9sQ3VycmVudEdhbWUoKSkgcmV0dXJuO1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ3Jlc2lnbicpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgY2xvc2VDb25maXJtTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICB9XG5cbiAgaGFuZGxlQ29uZmlybU1vZGFsRGlzbWlzc2VkKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmNvbmZpcm1lZEFjdGlvbigpO1xuICAgIHRoaXMuY29uZmlybWVkQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICAgIGlmICghYWN0aW9uKSByZXR1cm47XG5cbiAgICBpZiAoYWN0aW9uID09PSAncmVzdGFydCcpIHtcbiAgICAgIHRoaXMucmVzdGFydEdhbWUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGFjdGlvbiA9PT0gJ21vZGUnKSB7XG4gICAgICBpZiAodGhpcy5pc0NoYWxsZW5nZUFjdGl2ZSgpKSB7XG4gICAgICAgIHRoaXMucmV0dXJuQ2hhbGxlbmdlVG9NZW51KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVzZXRUb01vZGVTZXR1cCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uID09PSAnZ2FtZXMnKSB7XG4gICAgICB0aGlzLnJlc2V0VG9HYW1lc01lbnUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc2lnbicpIHtcbiAgICAgIHRoaXMucmVzaWduR2FtZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uID09PSAnY2hhbGxlbmdlLW5ldycpIHtcbiAgICAgIHRoaXMuYWJhbmRvbkNoYWxsZW5nZVJ1bih0aGlzLmNoYWxsZW5nZVJ1bigpID8/IHRoaXMuYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuKCkpO1xuICAgICAgdGhpcy5hY3RpdmVTdG9yZWRDaGFsbGVuZ2VSdW4uc2V0KHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLmNyZWF0ZU5ld0NoYWxsZW5nZVJ1bigpO1xuICAgIH1cbiAgfVxuXG4gIGNvbmZpcm1QZW5kaW5nQWN0aW9uKHRva2VuPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRva2VuICE9PSAnY29uZmlybScpIHtcbiAgICAgIHRoaXMuY2xvc2VDb25maXJtTW9kYWwoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmNvbmZpcm1BY3Rpb24oKTtcbiAgICB0aGlzLmNvbmZpcm1lZEFjdGlvbi5zZXQoYWN0aW9uKTtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gIH1cblxuICBwcml2YXRlIHJlc2lnbkdhbWUoKTogdm9pZCB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgcmV0dXJuO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSB7XG4gICAgICB2b2lkIHRoaXMub25saW5lLnJlc2lnbihnYW1lLmlkKS5jYXRjaCgoKSA9PiB7XG4gICAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNsZWFyQm90VHVybigpO1xuICAgIHRoaXMuZ2FtZS5zZXQocmVzaWduQ2hlc3NpbWFsc0dhbWUoZ2FtZSwgZ2FtZS5jdXJyZW50VHVybikpO1xuICAgIHRoaXMuc2hvd0xhdGVzdFJldmlld1NuYXBzaG90KCk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMucGxheUNoZXNzaW1hbHNPdXRjb21lU291bmQoKTtcbiAgfVxuXG4gIG9wZW5QbGF5T3B0aW9uc01vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMucGVuZGluZ1NvbG9HYW1lU3RhcnQgPSBmYWxzZTtcbiAgICB0aGlzLmlzUGxheU9wdGlvbnNNb2RhbE9wZW4uc2V0KHRydWUpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgY2xvc2VQbGF5T3B0aW9uc01vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNQbGF5T3B0aW9uc01vZGFsT3Blbi5zZXQoZmFsc2UpO1xuICB9XG5cbiAgaGFuZGxlUGxheU9wdGlvbnNNb2RhbERpc21pc3NlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzUGxheU9wdGlvbnNNb2RhbE9wZW4uc2V0KGZhbHNlKTtcbiAgICBpZiAoIXRoaXMucGVuZGluZ1NvbG9HYW1lU3RhcnQpIHJldHVybjtcblxuICAgIHRoaXMucGVuZGluZ1NvbG9HYW1lU3RhcnQgPSBmYWxzZTtcbiAgICB0aGlzLnN0YXJ0R2FtZSgpO1xuICB9XG5cbiAgc3RhcnRTb2xvR2FtZUZyb21PcHRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMucGVuZGluZ1NvbG9HYW1lU3RhcnQgPSB0cnVlO1xuICAgIHRoaXMuY2xvc2VQbGF5T3B0aW9uc01vZGFsKCk7XG4gIH1cblxuICBvcGVuUnVsZXNNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzUnVsZXNNb2RhbE9wZW4uc2V0KHRydWUpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgY2xvc2VSdWxlc01vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNSdWxlc01vZGFsT3Blbi5zZXQoZmFsc2UpO1xuICB9XG5cbiAgb3BlblNldHRpbmdzTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc1NldHRpbmdzTW9kYWxPcGVuLnNldCh0cnVlKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIGNsb3NlU2V0dGluZ3NNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzU2V0dGluZ3NNb2RhbE9wZW4uc2V0KGZhbHNlKTtcbiAgfVxuXG4gIG9wZW5QYXRoVmlldygpOiB2b2lkIHtcbiAgICB0aGlzLnNjcmVlbi5zZXQoJ3BhdGgnKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIG9wZW5BYm91dE1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMucGVuZGluZ0Fib3V0RmVlZGJhY2tOYXZpZ2F0aW9uID0gZmFsc2U7XG4gICAgdGhpcy5pc0Fib3V0TW9kYWxPcGVuLnNldCh0cnVlKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIGNsb3NlQWJvdXRNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzQWJvdXRNb2RhbE9wZW4uc2V0KGZhbHNlKTtcbiAgfVxuXG4gIGhhbmRsZUFib3V0TW9kYWxEaXNtaXNzZWQoKTogdm9pZCB7XG4gICAgdGhpcy5pc0Fib3V0TW9kYWxPcGVuLnNldChmYWxzZSk7XG4gICAgaWYgKCF0aGlzLnBlbmRpbmdBYm91dEZlZWRiYWNrTmF2aWdhdGlvbikgcmV0dXJuO1xuXG4gICAgdGhpcy5wZW5kaW5nQWJvdXRGZWVkYmFja05hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9mZWVkYmFjaycpLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gIH1cblxuICBoYW5kbGVBYm91dEFjdGlvbihldmVudDogeyBhY3Rpb24/OiBCdXR0b25NZXRhZGF0YSB9KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmFjdGlvbj8udG9rZW4gPT09ICdmZWVkYmFjaycpIHtcbiAgICAgIHRoaXMucGVuZGluZ0Fib3V0RmVlZGJhY2tOYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2xvc2VBYm91dE1vZGFsKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wZW5kaW5nQWJvdXRGZWVkYmFja05hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmNsb3NlQWJvdXRNb2RhbCgpO1xuICB9XG5cbiAgc2V0TXVzaWNWb2x1bWUodmFsdWU6IG51bWJlciB8IFJhbmdlVmFsdWUpOiB2b2lkIHtcbiAgICBjb25zdCB2b2x1bWUgPSB0aGlzLnJhbmdlVmFsdWVUb051bWJlcih2YWx1ZSk7XG4gICAgaWYgKHRoaXMubXVzaWNWb2x1bWVDb250cm9sLnZhbHVlICE9PSB2b2x1bWUpIHtcbiAgICAgIHRoaXMubXVzaWNWb2x1bWVDb250cm9sLnNldFZhbHVlKHZvbHVtZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cbiAgICB0aGlzLmF1ZGlvLnNldE11c2ljVm9sdW1lKHZvbHVtZSAvIDEwMCk7XG4gICAgaWYgKHZvbHVtZSA+IDAgJiYgdGhpcy5hdWRpby5tdXNpY0VuYWJsZWQoKSkgdGhpcy5zeW5jQ2hlc3NpbWFsc011c2ljQWZ0ZXJTZXR0aW5nc0NoYW5nZSgpO1xuICB9XG5cbiAgc2V0U2Z4Vm9sdW1lKHZhbHVlOiBudW1iZXIgfCBSYW5nZVZhbHVlKTogdm9pZCB7XG4gICAgY29uc3Qgdm9sdW1lID0gdGhpcy5yYW5nZVZhbHVlVG9OdW1iZXIodmFsdWUpO1xuICAgIGlmICh0aGlzLnNmeFZvbHVtZUNvbnRyb2wudmFsdWUgIT09IHZvbHVtZSkge1xuICAgICAgdGhpcy5zZnhWb2x1bWVDb250cm9sLnNldFZhbHVlKHZvbHVtZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cbiAgICB0aGlzLmF1ZGlvLnNldFNmeFZvbHVtZSh2b2x1bWUgLyAxMDApO1xuICB9XG5cbiAgcHJpdmF0ZSB0dXRvcmlhbEV4cGVjdGVkTW92ZSgpOiBDaGVzc2ltYWxzVHV0b3JpYWxFeHBlY3RlZE1vdmUgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy50dXRvcmlhbE1vZGUoKSB8fCB0aGlzLmdhbWUoKS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc3RlcHM6IENoZXNzaW1hbHNUdXRvcmlhbEV4cGVjdGVkTW92ZVtdID0gW1xuICAgICAgeyBwaWVjZUlkOiAnVFcxJywgdG86IHsgcm93OiAzLCBjb2w6IDEgfSB9LFxuICAgICAgeyBwaWVjZUlkOiAnVEIxJywgdG86IHsgcm93OiAyLCBjb2w6IDIgfSB9LFxuICAgICAgeyBwaWVjZUlkOiAnVFcxJywgdG86IHsgcm93OiAyLCBjb2w6IDIgfSB9LFxuICAgICAgeyBwaWVjZUlkOiAnVEIyJywgdG86IHsgcm93OiAyLCBjb2w6IDUgfSB9LFxuICAgICAgeyBwaWVjZUlkOiAnVFcxJywgdG86IHsgcm93OiAxLCBjb2w6IDQgfSwgYW5pbWFsOiAna2FuZ2Fyb28nIH0sXG4gICAgICB7IHBpZWNlSWQ6ICdUQjInLCB0bzogeyByb3c6IDMsIGNvbDogNSB9IH0sXG4gICAgICB7IHBpZWNlSWQ6ICdUVzEnLCB0bzogeyByb3c6IDAsIGNvbDogNCB9IH0sXG4gICAgXTtcbiAgICByZXR1cm4gc3RlcHNbdGhpcy5nYW1lKCkubW92ZUNvdW50XTtcbiAgfVxuXG4gIGlzUG93ZXJDYXJkQmxvY2tlZEJ5VHV0b3JpYWwoYW5pbWFsOiBDaGVzc2ltYWxzQW5pbWFsVHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGV4cGVjdGVkID0gdGhpcy50dXRvcmlhbEV4cGVjdGVkTW92ZSgpO1xuICAgIHJldHVybiAhIWV4cGVjdGVkPy5hbmltYWwgJiYgZXhwZWN0ZWQuYW5pbWFsICE9PSBhbmltYWw7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVR1dG9yaWFsR2FtZSgpOiBDaGVzc2ltYWxzR2FtZVN0YXRlIHtcbiAgICBjb25zdCBiYXNlID0gY3JlYXRlQ2hlc3NpbWFsc0dhbWUoNik7XG4gICAgY29uc3QgcGllY2VzOiBDaGVzc2ltYWxzUGllY2VbXSA9IFtcbiAgICAgIHsgaWQ6ICdUVzEnLCBjb2xvcjogJ3doaXRlJywgcG9zaXRpb246IHsgcm93OiA0LCBjb2w6IDEgfSwgY2FwdHVyZWQ6IGZhbHNlIH0sXG4gICAgICB7IGlkOiAnVEIxJywgY29sb3I6ICdibGFjaycsIHBvc2l0aW9uOiB7IHJvdzogMSwgY29sOiAyIH0sIGNhcHR1cmVkOiBmYWxzZSB9LFxuICAgICAgeyBpZDogJ1RCMicsIGNvbG9yOiAnYmxhY2snLCBwb3NpdGlvbjogeyByb3c6IDEsIGNvbDogNSB9LCBjYXB0dXJlZDogZmFsc2UgfSxcbiAgICAgIHsgaWQ6ICdUQjMnLCBjb2xvcjogJ2JsYWNrJywgcG9zaXRpb246IHsgcm93OiAxLCBjb2w6IDQgfSwgY2FwdHVyZWQ6IGZhbHNlIH0sXG4gICAgXTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uYmFzZSxcbiAgICAgIGlkOiAnVFVUT1JJQUwnLFxuICAgICAgcGllY2VzLFxuICAgICAgY3VycmVudFR1cm46ICd3aGl0ZScsXG4gICAgICBtb3ZlQ291bnQ6IDAsXG4gICAgICBwbGF5ZXJzOiB7XG4gICAgICAgIHdoaXRlOiB7XG4gICAgICAgICAgLi4uYmFzZS5wbGF5ZXJzLndoaXRlLFxuICAgICAgICAgIHBvd2VyVW5sb2NrZWQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBibGFjazoge1xuICAgICAgICAgIC4uLmJhc2UucGxheWVycy5ibGFjayxcbiAgICAgICAgICBwb3dlclVubG9ja2VkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBtb3ZlSGlzdG9yeTogW1xuICAgICAgICB7XG4gICAgICAgICAgbW92ZU51bWJlcjogMCxcbiAgICAgICAgICBwaWVjZXM6IHBpZWNlcy5tYXAoKHBpZWNlKSA9PiAoeyAuLi5waWVjZSwgcG9zaXRpb246IHsgLi4ucGllY2UucG9zaXRpb24gfSB9KSksXG4gICAgICAgICAgY3VycmVudFR1cm46ICd3aGl0ZScsXG4gICAgICAgICAgc3RhdHVzOiAnaW5fcHJvZ3Jlc3MnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBiYXNpY01vdmVzRm9yQ29sb3IoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcik6IENoZXNzaW1hbHNNb3ZlW10ge1xuICAgIGNvbnN0IHR1cm5TdGF0ZSA9IGNvbG9yID09PSBnYW1lLmN1cnJlbnRUdXJuID8gZ2FtZSA6IHsgLi4uZ2FtZSwgY3VycmVudFR1cm46IGNvbG9yIH07XG4gICAgcmV0dXJuIHR1cm5TdGF0ZS5waWVjZXNcbiAgICAgIC5maWx0ZXIoKHBpZWNlKSA9PiBwaWVjZS5jb2xvciA9PT0gY29sb3IgJiYgIXBpZWNlLmNhcHR1cmVkKVxuICAgICAgLmZsYXRNYXAoKHBpZWNlKSA9PiBnZXRDaGVzc2ltYWxzTGVnYWxNb3Zlcyh0dXJuU3RhdGUsIHBpZWNlLmlkKSk7XG4gIH1cblxuICBzZWxlY3RDZWxsKHBvc2l0aW9uOiBDaGVzc2ltYWxzUG9zaXRpb24pOiB2b2lkIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKHRoaXMucHJvamVjdGlvbk1vZGUgfHwgZ2FtZS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycgfHwgIXRoaXMuY2FuUGxheUN1cnJlbnRUdXJuKCkgfHwgdGhpcy5tb3ZpbmdQaWVjZSgpIHx8IHRoaXMubW92ZVN5bmNpbmcoKSkgcmV0dXJuO1xuXG4gICAgY29uc3QgcGllY2UgPSBnZXRDaGVzc2ltYWxzUGllY2VBdChnYW1lLCBwb3NpdGlvbik7XG4gICAgaWYgKHBpZWNlPy5jb2xvciA9PT0gZ2FtZS5jdXJyZW50VHVybikge1xuICAgICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHBpZWNlLmlkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtb3ZlID0gdGhpcy5sZWdhbE1vdmVzKCkuZmluZCgoaXRlbSkgPT4gcG9zaXRpb25LZXkoaXRlbS50bykgPT09IHBvc2l0aW9uS2V5KHBvc2l0aW9uKSk7XG4gICAgaWYgKCFtb3ZlKSByZXR1cm47XG5cbiAgICB0aGlzLmNvbW1pdENoZXNzaW1hbHNNb3ZlKGdhbWUsIG1vdmUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb21taXRDaGVzc2ltYWxzTW92ZShnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCBtb3ZlOiBDaGVzc2ltYWxzTW92ZSk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB1cGRhdGVkID0gYXBwbHlDaGVzc2ltYWxzTW92ZShnYW1lLCBtb3ZlKTtcbiAgICAgIGlmIChtb3ZlLmFuaW1hbCkgdGhpcy5wbGF5TW92ZVNvdW5kKG1vdmUpO1xuICAgICAgaWYgKHVwZGF0ZWQuc3RhdHVzID09PSAnZmluaXNoZWQnKSB0aGlzLnBsYXlDaGVzc2ltYWxzT3V0Y29tZVNvdW5kKHVwZGF0ZWQpO1xuICAgICAgdGhpcy5hbmltYXRlTW92ZShnYW1lLCBtb3ZlLCB1cGRhdGVkKTtcbiAgICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSB7XG4gICAgICAgIHRoaXMubW92ZVN5bmNpbmcuc2V0KHRydWUpO1xuICAgICAgICB2b2lkIHRoaXMub25saW5lXG4gICAgICAgICAgLm1vdmUoZ2FtZS5pZCwgbW92ZSlcbiAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB2b2lkIHRoaXMuaGFwdGljcy5pbXBhY3QobW92ZS5jYXB0dXJlc1BpZWNlSWQgPyAnbWVkaXVtJyA6ICdsaWdodCcpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gb25saW5lIG1vdmUgZmFpbGVkJywgeyBnYW1lSWQ6IGdhbWUuaWQsIG1vdmUsIGVycm9yIH0pO1xuICAgICAgICAgICAgdGhpcy5nYW1lLnNldChnYW1lKTtcbiAgICAgICAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICAgICAgICB2b2lkIHRoaXMuaGFwdGljcy5lcnJvcigpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5tb3ZlU3luY2luZy5zZXQoZmFsc2UpO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgICAgaWYgKCFtb3ZlLmFuaW1hbCkgdGhpcy5wbGF5TW92ZVNvdW5kKG1vdmUpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzeW5jVHVyblRpbWVyKCk6IHZvaWQge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBjb25zdCBkdXJhdGlvbiA9IHRoaXMudHVyblRpbWVyRHVyYXRpb25TZWNvbmRzKCk7XG4gICAgaWYgKFxuICAgICAgIWR1cmF0aW9uIHx8XG4gICAgICB0aGlzLnNjcmVlbigpICE9PSAnZ2FtZScgfHxcbiAgICAgIGdhbWUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnIHx8XG4gICAgICAhdGhpcy5jYW5QbGF5Q3VycmVudFR1cm4oKSB8fFxuICAgICAgdGhpcy5ib3RUaGlua2luZygpIHx8XG4gICAgICB0aGlzLm1vdmVTeW5jaW5nKCkgfHxcbiAgICAgIHRoaXMubW92aW5nUGllY2UoKVxuICAgICkge1xuICAgICAgdGhpcy5jbGVhclR1cm5UaW1lcigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGtleSA9IGAke2dhbWUuaWR9OiR7Z2FtZS5jdXJyZW50VHVybn06JHtnYW1lLm1vdmVDb3VudH06JHtkdXJhdGlvbn1gO1xuICAgIGlmICh0aGlzLnR1cm5UaW1lcktleSA9PT0ga2V5ICYmIHRoaXMudHVyblRpbWVySW50ZXJ2YWwpIHJldHVybjtcblxuICAgIHRoaXMuY2xlYXJUdXJuVGltZXIoKTtcbiAgICB0aGlzLnR1cm5UaW1lcktleSA9IGtleTtcbiAgICB0aGlzLnR1cm5UaW1lckR1cmF0aW9uID0gZHVyYXRpb247XG4gICAgdGhpcy50dXJuVGltZXJEZWFkbGluZSA9IERhdGUubm93KCkgKyBkdXJhdGlvbiAqIDEwMDA7XG4gICAgdGhpcy50dXJuU2Vjb25kc1JlbWFpbmluZy5zZXQoZHVyYXRpb24pO1xuICAgIHRoaXMudHVyblRpbWVySW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB0aGlzLnRpY2tUdXJuVGltZXIoKSwgMjUwKTtcbiAgfVxuXG4gIHByaXZhdGUgdGlja1R1cm5UaW1lcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zY3JlZW4oKSAhPT0gJ2dhbWUnKSB7XG4gICAgICB0aGlzLmNsZWFyVHVyblRpbWVyKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVtYWluaW5nID0gTWF0aC5tYXgoMCwgTWF0aC5jZWlsKCh0aGlzLnR1cm5UaW1lckRlYWRsaW5lIC0gRGF0ZS5ub3coKSkgLyAxMDAwKSk7XG4gICAgdGhpcy50dXJuU2Vjb25kc1JlbWFpbmluZy5zZXQocmVtYWluaW5nKTtcbiAgICBpZiAocmVtYWluaW5nID4gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgZXhwaXJlZEtleSA9IHRoaXMudHVyblRpbWVyS2V5O1xuICAgIHRoaXMuY2xlYXJUdXJuVGltZXIoKTtcbiAgICBpZiAoIWV4cGlyZWRLZXkgfHwgdGhpcy50dXJuVGltZXJFeHBpcmVkS2V5ID09PSBleHBpcmVkS2V5KSByZXR1cm47XG4gICAgdGhpcy50dXJuVGltZXJFeHBpcmVkS2V5ID0gZXhwaXJlZEtleTtcbiAgICB0aGlzLmhhbmRsZVR1cm5UaW1lckV4cGlyZWQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJUdXJuVGltZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudHVyblRpbWVySW50ZXJ2YWwpIGNsZWFySW50ZXJ2YWwodGhpcy50dXJuVGltZXJJbnRlcnZhbCk7XG4gICAgdGhpcy50dXJuVGltZXJJbnRlcnZhbCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnR1cm5UaW1lcktleSA9ICcnO1xuICAgIHRoaXMudHVyblRpbWVyRGVhZGxpbmUgPSAwO1xuICAgIHRoaXMudHVyblRpbWVyRHVyYXRpb24gPSAwO1xuICAgIHRoaXMudHVyblNlY29uZHNSZW1haW5pbmcuc2V0KHVuZGVmaW5lZCk7XG4gIH1cblxuICBwcml2YXRlIHR1cm5UaW1lckR1cmF0aW9uU2Vjb25kcygpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSB8fCB0aGlzLnR1dG9yaWFsTW9kZSgpKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmICh0aGlzLmlzQ2hhbGxlbmdlQWN0aXZlKCkgJiYgdGhpcy5jaGFsbGVuZ2VQaGFzZSgpID09PSAncGxheWluZycpIHtcbiAgICAgIHJldHVybiBnYW1lLmJvYXJkU2l6ZSA9PT0gOCA/IENIRVNTSU1BTFNfQ0hBTExFTkdFX0ZJTkFMX1RVUk5fU0VDT05EUyA6IENIRVNTSU1BTFNfQ0hBTExFTkdFX1RVUk5fU0VDT05EUztcbiAgICB9XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ29ubGluZScpIHJldHVybiBDSEVTU0lNQUxTX09OTElORV9UVVJOX1NFQ09ORFM7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlVHVyblRpbWVyRXhwaXJlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKFxuICAgICAgdGhpcy5zY3JlZW4oKSAhPT0gJ2dhbWUnIHx8XG4gICAgICBnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJyB8fFxuICAgICAgIXRoaXMuY2FuUGxheUN1cnJlbnRUdXJuKCkgfHxcbiAgICAgIHRoaXMuYm90VGhpbmtpbmcoKSB8fFxuICAgICAgdGhpcy5tb3ZlU3luY2luZygpIHx8XG4gICAgICB0aGlzLm1vdmluZ1BpZWNlKClcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtb3ZlID0gdGhpcy5jaG9vc2VBdXRvbWF0aWNUdXJuTW92ZShnYW1lKTtcbiAgICBpZiAoIW1vdmUpIHtcbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICAgIG1lc3NhZ2U6IHRoaXMudCgnY2hlc3NpbWFsc1R1cm5UaW1lck5vTW92ZScpLFxuICAgICAgICBjb2xvcjogJ3dhcm5pbmcnLFxuICAgICAgICBkdXJhdGlvbjogMjIwMCxcbiAgICAgICAgcG9zaXRpb246ICd0b3AnLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnJlc2lnbkdhbWUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgIG1lc3NhZ2U6IHRoaXMudCgnY2hlc3NpbWFsc1R1cm5UaW1lckF1dG9Nb3ZlJyksXG4gICAgICBjb2xvcjogJ3dhcm5pbmcnLFxuICAgICAgZHVyYXRpb246IDIyMDAsXG4gICAgICBwb3NpdGlvbjogJ3RvcCcsXG4gICAgfSk7XG4gICAgdGhpcy5jb21taXRDaGVzc2ltYWxzTW92ZShnYW1lLCBtb3ZlKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hvb3NlQXV0b21hdGljVHVybk1vdmUoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IENoZXNzaW1hbHNNb3ZlIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBtb3ZlcyA9IGdhbWUucGllY2VzXG4gICAgICAuZmlsdGVyKChwaWVjZSkgPT4gcGllY2UuY29sb3IgPT09IGdhbWUuY3VycmVudFR1cm4gJiYgIXBpZWNlLmNhcHR1cmVkKVxuICAgICAgLmZsYXRNYXAoKHBpZWNlKSA9PiBnZXRDaGVzc2ltYWxzTGVnYWxNb3ZlcyhnYW1lLCBwaWVjZS5pZCkpO1xuICAgIGNvbnN0IGJhc2ljTW92ZXMgPSBtb3Zlcy5maWx0ZXIoKG1vdmUpID0+IG1vdmUua2luZCA9PT0gJ2Jhc2ljJyk7XG4gICAgcmV0dXJuIGJhc2ljTW92ZXMuZmluZCgobW92ZSkgPT4gdGhpcy5pc1Byb21vdGlvbk1vdmUoZ2FtZSwgbW92ZSkpXG4gICAgICA/PyBiYXNpY01vdmVzLmZpbmQoKG1vdmUpID0+ICEhbW92ZS5jYXB0dXJlc1BpZWNlSWQpXG4gICAgICA/PyBiYXNpY01vdmVzWzBdXG4gICAgICA/PyBtb3Zlcy5maW5kKChtb3ZlKSA9PiAhIW1vdmUuY2FwdHVyZXNQaWVjZUlkKVxuICAgICAgPz8gbW92ZXNbMF07XG4gIH1cblxuICBwcml2YXRlIGlzUHJvbW90aW9uTW92ZShnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCBtb3ZlOiBDaGVzc2ltYWxzTW92ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBtb3ZlLmtpbmQgPT09ICdiYXNpYycgJiYgbW92ZS50by5yb3cgPT09IChnYW1lLmN1cnJlbnRUdXJuID09PSAnd2hpdGUnID8gMCA6IGdhbWUuYm9hcmRTaXplIC0gMSk7XG4gIH1cblxuICBwcml2YXRlIGFuaW1hdGVNb3ZlKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIG1vdmU6IENoZXNzaW1hbHNNb3ZlLCB1cGRhdGVkOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW92ZUFuaW1hdGlvblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIpO1xuICAgIHRoaXMucXVldWVNb3ZlRWZmZWN0KG1vdmUpO1xuXG4gICAgY29uc3QgbW92aW5nUGllY2UgPSBnYW1lLnBpZWNlcy5maW5kKChwaWVjZSkgPT4gcGllY2UuaWQgPT09IG1vdmUucGllY2VJZCk7XG4gICAgaWYgKCFtb3ZpbmdQaWVjZSkge1xuICAgICAgdGhpcy5hcHBseUFuaW1hdGVkTW92ZShnYW1lLCB1cGRhdGVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh7XG4gICAgICBjb2xvcjogbW92aW5nUGllY2UuY29sb3IsXG4gICAgICBmcm9tUm93OiB0aGlzLmRpc3BsYXlSb3dJbmRleChtb3ZlLmZyb20ucm93KSxcbiAgICAgIGZyb21Db2w6IHRoaXMuZGlzcGxheUNvbEluZGV4KG1vdmUuZnJvbS5jb2wpLFxuICAgICAgdG9Sb3c6IHRoaXMuZGlzcGxheVJvd0luZGV4KG1vdmUudG8ucm93KSxcbiAgICAgIHRvQ29sOiB0aGlzLmRpc3BsYXlDb2xJbmRleChtb3ZlLnRvLmNvbCksXG4gICAgfSk7XG5cbiAgICB0aGlzLm1vdmVBbmltYXRpb25UaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hcHBseUFuaW1hdGVkTW92ZShnYW1lLCB1cGRhdGVkKTtcbiAgICB9LCBDSEVTU0lNQUxTX01PVkVfQU5JTUFUSU9OX01TKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlBbmltYXRlZE1vdmUocHJldmlvdXM6IENoZXNzaW1hbHNHYW1lU3RhdGUsIHVwZGF0ZWQ6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuZ2FtZS5zZXQodXBkYXRlZCk7XG4gICAgdGhpcy5wZXJzaXN0QWN0aXZlQ2hhbGxlbmdlR2FtZSh1cGRhdGVkKTtcbiAgICB0aGlzLnF1ZXVlU2NvcmVQb3AocHJldmlvdXMsIHVwZGF0ZWQpO1xuICAgIHRoaXMucGxheVBvd2VyVW5sb2NrU291bmQocHJldmlvdXMsIHVwZGF0ZWQpO1xuICAgIGlmIChcbiAgICAgIHVwZGF0ZWQuY3VycmVudFR1cm4gIT09IHByZXZpb3VzLmN1cnJlbnRUdXJuICYmXG4gICAgICB1cGRhdGVkLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJyAmJlxuICAgICAgIXRoaXMuc2hvdWxkS2VlcEJvYXJkT3JpZW50YXRpb25TdGF0aWModXBkYXRlZClcbiAgICApIHtcbiAgICAgIHRoaXMudHJpZ2dlckJvYXJkT3JpZW50YXRpb24oKTtcbiAgICB9XG4gICAgaWYgKHVwZGF0ZWQuc3RhdHVzID09PSAnZmluaXNoZWQnKSB7XG4gICAgICB0aGlzLnNob3dMYXRlc3RSZXZpZXdTbmFwc2hvdCgpO1xuICAgICAgdGhpcy5wbGF5Q2hlc3NpbWFsc091dGNvbWVTb3VuZCh1cGRhdGVkKTtcbiAgICB9XG4gICAgdGhpcy5xdWV1ZUJvdFR1cm5JZk5lZWRlZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhY3RpdmVHYW1lRm9yUnVuKHJ1bjogQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1bik6IENoZXNzaW1hbHNHYW1lU3RhdGUgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGJvdCA9IHRoaXMuY2hhbGxlbmdlTGFkZGVyW01hdGgubWF4KDAsIHJ1bi5jdXJyZW50Um91bmQgLSAxKV07XG4gICAgY29uc3QgZ2FtZSA9IHJ1bi5hY3RpdmVHYW1lO1xuICAgIGlmICghYm90IHx8ICFnYW1lKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmIChnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAoZ2FtZS5ib2FyZFNpemUgIT09IGJvdC5ib2FyZFNpemUpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ29ubGluZScpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmVDaGFsbGVuZ2VHYW1lKGdhbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBwZXJzaXN0QWN0aXZlQ2hhbGxlbmdlR2FtZShnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogdm9pZCB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBpZiAoIXJ1biB8fCBydW4uc3RhdHVzICE9PSAnYWN0aXZlJyB8fCB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgIT09ICdwbGF5aW5nJykgcmV0dXJuO1xuICAgIGlmIChnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJykgcmV0dXJuO1xuICAgIGNvbnN0IG5leHRSdW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4gPSB7XG4gICAgICAuLi5ydW4sXG4gICAgICBhY3RpdmVHYW1lOiB0aGlzLmNsb25lQ2hhbGxlbmdlR2FtZShnYW1lKSxcbiAgICAgIHVwZGF0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIH07XG4gICAgdGhpcy5jaGFsbGVuZ2VSdW4uc2V0KG5leHRSdW4pO1xuICAgIHZvaWQgdGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy5zYXZlUnVuKG5leHRSdW4pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gY2hhbGxlbmdlIHNuYXBzaG90IHNhdmUgZmFpbGVkJywgZXJyb3IpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9uZUNoYWxsZW5nZUdhbWUoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IENoZXNzaW1hbHNHYW1lU3RhdGUge1xuICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHsgLi4uZ2FtZSwgb25saW5lOiB1bmRlZmluZWQgfSkpIGFzIENoZXNzaW1hbHNHYW1lU3RhdGU7XG4gIH1cblxuICBwcml2YXRlIHBsYXlQb3dlclVubG9ja1NvdW5kKHByZXZpb3VzOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCB1cGRhdGVkOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogdm9pZCB7XG4gICAgY29uc3Qgd2hpdGVVbmxvY2tlZCA9ICFwcmV2aW91cy5wbGF5ZXJzLndoaXRlLnBvd2VyVW5sb2NrZWQgJiYgdXBkYXRlZC5wbGF5ZXJzLndoaXRlLnBvd2VyVW5sb2NrZWQ7XG4gICAgY29uc3QgYmxhY2tVbmxvY2tlZCA9ICFwcmV2aW91cy5wbGF5ZXJzLmJsYWNrLnBvd2VyVW5sb2NrZWQgJiYgdXBkYXRlZC5wbGF5ZXJzLmJsYWNrLnBvd2VyVW5sb2NrZWQ7XG4gICAgaWYgKHdoaXRlVW5sb2NrZWQgfHwgYmxhY2tVbmxvY2tlZCkge1xuICAgICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzUG93ZXJVbmxvY2tlZCgpO1xuICAgICAgdGhpcy5wb3dlclVubG9ja1B1bHNlLnNldChmYWxzZSk7XG4gICAgICBjb25zdCBzdGFydFB1bHNlID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnBvd2VyVW5sb2NrUHVsc2Uuc2V0KHRydWUpO1xuICAgICAgICBpZiAodGhpcy5wb3dlclVubG9ja1RpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5wb3dlclVubG9ja1RpbWVyKTtcbiAgICAgICAgdGhpcy5wb3dlclVubG9ja1RpbWVyID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLnBvd2VyVW5sb2NrUHVsc2Uuc2V0KGZhbHNlKSwgMTM1MCk7XG4gICAgICB9O1xuICAgICAgaWYgKHR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0YXJ0UHVsc2UpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzdGFydFB1bHNlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBxdWV1ZUJvdFR1cm5JZk5lZWRlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKFxuICAgICAgdGhpcy5zY3JlZW4oKSAhPT0gJ2dhbWUnIHx8XG4gICAgICBnYW1lLm1vZGUgIT09ICdsb2NhbCcgfHxcbiAgICAgIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSAhPT0gJ2JvdCcgfHxcbiAgICAgIGdhbWUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnIHx8XG4gICAgICBnYW1lLmN1cnJlbnRUdXJuICE9PSBDSEVTU0lNQUxTX0JPVF9DT0xPUlxuICAgICkge1xuICAgICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5ib3RUdXJuVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLmJvdFR1cm5UaW1lcik7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmJvdFRoaW5raW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLmJvdFR1cm5UaW1lciA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5wbGF5Qm90VHVybigpLCBDSEVTU0lNQUxTX0JPVF9USElOS0lOR19NUyk7XG4gIH1cblxuICBwcml2YXRlIHBsYXlCb3RUdXJuKCk6IHZvaWQge1xuICAgIHRoaXMuYm90VHVyblRpbWVyID0gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoXG4gICAgICB0aGlzLnNjcmVlbigpICE9PSAnZ2FtZScgfHxcbiAgICAgIGdhbWUubW9kZSAhPT0gJ2xvY2FsJyB8fFxuICAgICAgdGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpICE9PSAnYm90JyB8fFxuICAgICAgZ2FtZS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycgfHxcbiAgICAgIGdhbWUuY3VycmVudFR1cm4gIT09IENIRVNTSU1BTFNfQk9UX0NPTE9SXG4gICAgKSB7XG4gICAgICB0aGlzLmJvdFRoaW5raW5nLnNldChmYWxzZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY2hhbGxlbmdlQm90ID0gdGhpcy5pc0NoYWxsZW5nZUFjdGl2ZSgpID8gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBuaWdodG1hcmVNb2RlID0gY2hhbGxlbmdlQm90ID8gJ25vbmUnIDogdGhpcy5hY3RpdmVOaWdodG1hcmVNb2RlKCk7XG4gICAgY29uc3QgbW92ZSA9IGNob29zZUNoZXNzaW1hbHNCb3RNb3ZlKGdhbWUsIHRoaXMuZW5naW5lQm90RGlmZmljdWx0eSgpLCB0aGlzLnNlbGVjdGVkQm90UHJvZmlsZUlkKCksIHtcbiAgICAgIGNoYWxsZW5nZVJvdW5kOiBjaGFsbGVuZ2VCb3Q/LnJvdW5kLFxuICAgICAgbmlnaHRtYXJlTW9kZSxcbiAgICB9KTtcbiAgICBpZiAoIW1vdmUpIHtcbiAgICAgIHRoaXMuZ2FtZS5zZXQocmVzaWduQ2hlc3NpbWFsc0dhbWUoZ2FtZSwgQ0hFU1NJTUFMU19CT1RfQ09MT1IpKTtcbiAgICAgIHRoaXMuc2hvd0xhdGVzdFJldmlld1NuYXBzaG90KCk7XG4gICAgICB0aGlzLmJvdFRoaW5raW5nLnNldChmYWxzZSk7XG4gICAgICB0aGlzLnBsYXlDaGVzc2ltYWxzT3V0Y29tZVNvdW5kKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVwZGF0ZWQgPSBhcHBseUNoZXNzaW1hbHNNb3ZlKGdhbWUsIG1vdmUpO1xuICAgICAgdGhpcy5ib3RUaGlua2luZy5zZXQoZmFsc2UpO1xuICAgICAgaWYgKG1vdmUuYW5pbWFsKSB0aGlzLnBsYXlNb3ZlU291bmQobW92ZSwgdHJ1ZSk7XG4gICAgICBpZiAodXBkYXRlZC5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHRoaXMucGxheUNoZXNzaW1hbHNPdXRjb21lU291bmQodXBkYXRlZCk7XG4gICAgICB0aGlzLmFuaW1hdGVNb3ZlKGdhbWUsIG1vdmUsIHVwZGF0ZWQpO1xuICAgICAgaWYgKCFtb3ZlLmFuaW1hbCkgdGhpcy5wbGF5TW92ZVNvdW5kKG1vdmUsIHRydWUpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5ib3RUaGlua2luZy5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckJvdFR1cm4oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYm90VHVyblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5ib3RUdXJuVGltZXIpO1xuICAgIHRoaXMuYm90VHVyblRpbWVyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYm90VGhpbmtpbmcuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgdHJpZ2dlckJvYXJkT3JpZW50YXRpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2hvdWxkS2VlcEJvYXJkT3JpZW50YXRpb25TdGF0aWMoKSkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmJvYXJkT3JpZW50YXRpb25UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuYm9hcmRPcmllbnRhdGlvblRpbWVyKTtcbiAgICB0aGlzLmlzQm9hcmRPcmllbnRpbmcuc2V0KGZhbHNlKTtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdGhpcy5pc0JvYXJkT3JpZW50aW5nLnNldCh0cnVlKTtcbiAgICAgIHRoaXMuYm9hcmRPcmllbnRhdGlvblRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLmlzQm9hcmRPcmllbnRpbmcuc2V0KGZhbHNlKSwgMzQwKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkS2VlcEJvYXJkT3JpZW50YXRpb25TdGF0aWMoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSA9IHRoaXMuZ2FtZSgpKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMudHV0b3JpYWxNb2RlKCkpIHJldHVybiB0cnVlO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gZ2FtZS5tb2RlID09PSAnbG9jYWwnICYmIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCc7XG4gIH1cblxuICBwcml2YXRlIGZvY3VzQm9hcmRTb29uKCk6IHZvaWQge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lID09PSAndW5kZWZpbmVkJykgcmV0dXJuO1xuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuYm9hcmRBbmNob3I/Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnc3RhcnQnIH0pO1xuICAgICAgfSwgODApO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydENoZXNzaW1hbHNNZW51TXVzaWNTb29uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlIHx8IHRoaXMuc2NyZWVuKCkgPT09ICdnYW1lJykgcmV0dXJuO1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykgcmV0dXJuO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlIHx8IHRoaXMuc2NyZWVuKCkgPT09ICdnYW1lJykgcmV0dXJuO1xuICAgICAgdm9pZCB0aGlzLmF1ZGlvLnN0YXJ0Q2hlc3NpbWFsc01lbnVNdXNpYygpLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpY1Nvb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvamVjdGlvbk1vZGUgfHwgdGhpcy5zY3JlZW4oKSAhPT0gJ2dhbWUnKSByZXR1cm47XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSByZXR1cm47XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMucHJvamVjdGlvbk1vZGUgfHwgdGhpcy5zY3JlZW4oKSAhPT0gJ2dhbWUnKSByZXR1cm47XG4gICAgICB2b2lkIHRoaXMuYXVkaW8uc3RhcnRDaGVzc2ltYWxzR2FtZU11c2ljKCkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc3luY0NoZXNzaW1hbHNNdXNpY0FmdGVyU2V0dGluZ3NDaGFuZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2NyZWVuKCkgIT09ICdnYW1lJykge1xuICAgICAgdGhpcy5zdGFydENoZXNzaW1hbHNNZW51TXVzaWNTb29uKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnNjcmVlbigpID09PSAnZ2FtZScgJiYgdGhpcy5nYW1lKCkuc3RhdHVzICE9PSAnZmluaXNoZWQnKSB7XG4gICAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpY1Nvb24oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBsYXlNb3ZlU291bmQobW92ZTogQ2hlc3NpbWFsc01vdmUsIGlzQm90ID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAobW92ZS5hbmltYWwpIHtcbiAgICAgIHRoaXMuYXVkaW8uY2hlc3NpbWFsc1Bvd2VyKG1vdmUuYW5pbWFsKTtcbiAgICAgIGlmIChtb3ZlLmNhcHR1cmVzUGllY2VJZCAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNDYXB0dXJlKCksIDE1MCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChtb3ZlLmNhcHR1cmVzUGllY2VJZCkge1xuICAgICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzQ2FwdHVyZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaXNCb3QpIHtcbiAgICAgIHRoaXMuYXVkaW8uY2hlc3NpbWFsc0JvdE1vdmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzTW92ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBwbGF5Q2hlc3NpbWFsc091dGNvbWVTb3VuZChnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlID0gdGhpcy5nYW1lKCkpOiB2b2lkIHtcbiAgICBpZiAoZ2FtZS5zdGF0dXMgIT09ICdmaW5pc2hlZCcpIHJldHVybjtcbiAgICBjb25zdCBrZXkgPSBgJHtnYW1lLmlkfToke2dhbWUuc3RhdHVzfToke2dhbWUud2lubmVyID8/ICdub25lJ306JHtnYW1lLndpbm5lclJlYXNvbiA/PyAnbm9uZSd9OiR7Z2FtZS5tb3ZlQ291bnR9YDtcbiAgICBpZiAodGhpcy5sYXN0T3V0Y29tZVNvdW5kS2V5ID09PSBrZXkpIHJldHVybjtcbiAgICB0aGlzLmxhc3RPdXRjb21lU291bmRLZXkgPSBrZXk7XG4gICAgY29uc3Qgd2lubmVyID0gZ2FtZS53aW5uZXI7XG4gICAgY29uc3Qgc2lkZSA9IHRoaXMuY3VycmVudFBsYXllclNpZGVGb3JPdXRjb21lKGdhbWUpO1xuICAgIGlmICghd2lubmVyIHx8ICFzaWRlIHx8IHdpbm5lciA9PT0gc2lkZSkge1xuICAgICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzVmljdG9yeSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNEZWZlYXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY3VycmVudFBsYXllclNpZGVGb3JPdXRjb21lKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSB7XG4gICAgICByZXR1cm4gdGhpcy5vbmxpbmUucGFydGljaXBhbnRTaWRlKGdhbWUsIHRoaXMub25saW5lVWlkKCkgPz8gdGhpcy5vbmxpbmUuY3VycmVudFVpZCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnKSByZXR1cm4gJ3doaXRlJztcbiAgICByZXR1cm4gZ2FtZS53aW5uZXJSZWFzb24gPT09ICdyZXNpZ25hdGlvbicgPyBnYW1lLmN1cnJlbnRUdXJuIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhclJldmlldygpOiB2b2lkIHtcbiAgICB0aGlzLnJldmlld0luZGV4LnNldCh1bmRlZmluZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93TGF0ZXN0UmV2aWV3U25hcHNob3QoKTogdm9pZCB7XG4gICAgY29uc3QgZW50cmllcyA9IHRoaXMuZ2FtZSgpLm1vdmVIaXN0b3J5ID8/IFtdO1xuICAgIHRoaXMucmV2aWV3SW5kZXguc2V0KGVudHJpZXMubGVuZ3RoID4gMSA/IGVudHJpZXMubGVuZ3RoIC0gMSA6IHVuZGVmaW5lZCk7XG4gIH1cblxuICBwcml2YXRlIHF1ZXVlTW92ZUVmZmVjdChtb3ZlOiBDaGVzc2ltYWxzTW92ZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vdmVFZmZlY3RTdGFydFRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlRWZmZWN0U3RhcnRUaW1lcik7XG4gICAgaWYgKHRoaXMubW92ZUVmZmVjdENsZWFyVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLm1vdmVFZmZlY3RDbGVhclRpbWVyKTtcblxuICAgIGlmICghbW92ZS5hbmltYWwgJiYgIW1vdmUuY2FwdHVyZXNQaWVjZUlkKSB7XG4gICAgICB0aGlzLm1vdmVFZmZlY3Quc2V0KHVuZGVmaW5lZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5tb3ZlRWZmZWN0LnNldCh1bmRlZmluZWQpO1xuICAgIGNvbnN0IGRlbGF5TXMgPSBNYXRoLm1heCgwLCBDSEVTU0lNQUxTX01PVkVfQU5JTUFUSU9OX01TIC0gOTApO1xuICAgIHRoaXMubW92ZUVmZmVjdFN0YXJ0VGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubW92ZUVmZmVjdC5zZXQoe1xuICAgICAgICBhbmltYWw6IG1vdmUuYW5pbWFsLFxuICAgICAgICBmcm9tOiB7IC4uLm1vdmUuZnJvbSB9LFxuICAgICAgICB0bzogeyAuLi5tb3ZlLnRvIH0sXG4gICAgICAgIGNhcHR1cmU6ICEhbW92ZS5jYXB0dXJlc1BpZWNlSWQsXG4gICAgICB9KTtcbiAgICAgIHRoaXMubW92ZUVmZmVjdENsZWFyVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMubW92ZUVmZmVjdC5zZXQodW5kZWZpbmVkKSwgQ0hFU1NJTUFMU19QT1dFUl9DQUxMT1VUX01TKTtcbiAgICB9LCBkZWxheU1zKTtcbiAgfVxuXG4gIHByaXZhdGUgcXVldWVTY29yZVBvcChwcmV2aW91czogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgdXBkYXRlZDogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNjb3JlUG9wQ2xlYXJUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuc2NvcmVQb3BDbGVhclRpbWVyKTtcbiAgICBjb25zdCBlbnRyeSA9IHVwZGF0ZWQubW92ZUhpc3Rvcnk/Llt1cGRhdGVkLm1vdmVIaXN0b3J5Lmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IG1vdmUgPSBlbnRyeT8ubW92ZTtcbiAgICBpZiAoIWVudHJ5IHx8ICFtb3ZlIHx8IHByZXZpb3VzLm1vdmVDb3VudCA9PT0gdXBkYXRlZC5tb3ZlQ291bnQpIHtcbiAgICAgIHRoaXMuc2NvcmVQb3Auc2V0KHVuZGVmaW5lZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcHJldmlvdXNDb21ibyA9IHRoaXMuY2FwdHVyZUNvbWJvQmVmb3JlTW92ZShwcmV2aW91cywgbW92ZS5waWVjZUlkKTtcbiAgICBjb25zdCBtb3ZlQ29sb3IgPSB0aGlzLmNvbG9yRnJvbVBpZWNlSWQobW92ZS5waWVjZUlkKTtcbiAgICBjb25zdCBwcm9tb3Rpb24gPSBlbnRyeS5zdGF0dXMgPT09ICdmaW5pc2hlZCcgJiYgZW50cnkud2lubmVyUmVhc29uID09PSAncHJvbW90aW9uJyAmJiBlbnRyeS53aW5uZXIgPT09IG1vdmVDb2xvcjtcbiAgICBjb25zdCBzY29yZSA9IHRoaXMuc2NvcmVDaGVzc2ltYWxzTW92ZShtb3ZlLCBwcm9tb3Rpb24sIHByZXZpb3VzQ29tYm8pO1xuICAgIGlmIChzY29yZS5zY29yZSA8PSAxKSB7XG4gICAgICB0aGlzLnNjb3JlUG9wLnNldCh1bmRlZmluZWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbCA9IHRoaXMuZGlzcGxheUNvbEluZGV4KG1vdmUudG8uY29sKSArIDAuNTtcbiAgICBjb25zdCByb3cgPSB0aGlzLmRpc3BsYXlSb3dJbmRleChtb3ZlLnRvLnJvdykgKyAwLjU7XG4gICAgdGhpcy5zY29yZVBvcC5zZXQoe1xuICAgICAgc2NvcmU6IHNjb3JlLnNjb3JlLFxuICAgICAgbGFiZWw6IHNjb3JlLmxhYmVsLFxuICAgICAgZGV0YWlsOiBzY29yZS5jb21ibyA+IDEgPyB0aGlzLnNjb3JlQ29tYm9MYWJlbChzY29yZS5jb21ibykgOiB1bmRlZmluZWQsXG4gICAgICB4OiBgJHsoY29sIC8gdXBkYXRlZC5ib2FyZFNpemUpICogMTAwfSVgLFxuICAgICAgeTogYCR7KHJvdyAvIHVwZGF0ZWQuYm9hcmRTaXplKSAqIDEwMH0lYCxcbiAgICAgIHRvbmVSZ2I6ICc3OSwgMTY5LCAyMTgnLFxuICAgICAgZHVyYXRpb25NczogQ0hFU1NJTUFMU19TQ09SRV9QT1BfTVMsXG4gICAgICB2YXJpYW50OiBzY29yZS5jb21ibyA+IDEgPyAnY29tYm8nIDogbW92ZS5jYXB0dXJlc1BpZWNlSWQgPyAnY2FwdHVyZScgOiAnc2NvcmUnLFxuICAgIH0pO1xuICAgIHRoaXMuc2NvcmVQb3BDbGVhclRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLnNjb3JlUG9wLnNldCh1bmRlZmluZWQpLCBDSEVTU0lNQUxTX1NDT1JFX1BPUF9NUyk7XG4gIH1cblxuICBwcml2YXRlIGNhcHR1cmVDb21ib0JlZm9yZU1vdmUoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgcGllY2VJZDogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBjb25zdCBjb2xvciA9IHRoaXMuY29sb3JGcm9tUGllY2VJZChwaWVjZUlkKTtcbiAgICBpZiAoIWNvbG9yKSByZXR1cm4gMDtcbiAgICBsZXQgY29tYm8gPSAwO1xuICAgIGZvciAoY29uc3QgZW50cnkgb2YgZ2FtZS5tb3ZlSGlzdG9yeSA/PyBbXSkge1xuICAgICAgY29uc3QgbW92ZSA9IGVudHJ5Lm1vdmU7XG4gICAgICBpZiAoIW1vdmUgfHwgdGhpcy5jb2xvckZyb21QaWVjZUlkKG1vdmUucGllY2VJZCkgIT09IGNvbG9yKSBjb250aW51ZTtcbiAgICAgIGNvbWJvID0gbW92ZS5jYXB0dXJlc1BpZWNlSWQgPyBjb21ibyArIDEgOiAwO1xuICAgIH1cbiAgICByZXR1cm4gY29tYm87XG4gIH1cblxuICB0b2dnbGVBbmltYWwoYW5pbWFsOiBDaGVzc2ltYWxzQW5pbWFsVmlldyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlIHx8ICF0aGlzLmNhblVzZVBvd2VyQ2FyZHMoKSkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmlzUG93ZXJDYXJkQmxvY2tlZEJ5VHV0b3JpYWwoYW5pbWFsLnR5cGUpKSByZXR1cm47XG4gICAgY29uc3QgcGxheWVyID0gdGhpcy5wb3dlclBsYXllcigpO1xuICAgIGlmICghcGxheWVyLnBvd2VyVW5sb2NrZWQgfHwgcGxheWVyLmNhcmRzW2FuaW1hbC50eXBlXS51c2VkKSByZXR1cm47XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuc2VsZWN0ZWRBbmltYWwoKTtcbiAgICBjb25zdCBuZXh0ID0gY3VycmVudCA9PT0gYW5pbWFsLnR5cGUgPyB1bmRlZmluZWQgOiBhbmltYWwudHlwZTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldChuZXh0KTtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRQaWVjZUlkKCkpIHtcbiAgICAgIGNvbnN0IGZpcnN0UGllY2UgPSB0aGlzLmdhbWUoKS5waWVjZXMuZmluZChcbiAgICAgICAgKHBpZWNlKSA9PiAhcGllY2UuY2FwdHVyZWQgJiYgcGllY2UuY29sb3IgPT09IHRoaXMuZ2FtZSgpLmN1cnJlbnRUdXJuLFxuICAgICAgKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldChmaXJzdFBpZWNlPy5pZCk7XG4gICAgfVxuICAgIGlmIChuZXh0KSB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNQb3dlclByZXZpZXcoYW5pbWFsLnR5cGUpO1xuICB9XG5cbiAgcGllY2VBdChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBDaGVzc2ltYWxzUGllY2UgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBnZXRDaGVzc2ltYWxzUGllY2VBdCh0aGlzLnJldmlld0dhbWUoKSwgeyByb3csIGNvbCB9KTtcbiAgfVxuXG4gIGlzRGFya0NlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChyb3cgKyBjb2wpICUgMiA9PT0gMTtcbiAgfVxuXG4gIGlzRWRnZUNlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbGFzdCA9IHRoaXMucmV2aWV3R2FtZSgpLmJvYXJkU2l6ZSAtIDE7XG4gICAgcmV0dXJuIHJvdyA9PT0gMCB8fCBjb2wgPT09IDAgfHwgcm93ID09PSBsYXN0IHx8IGNvbCA9PT0gbGFzdDtcbiAgfVxuXG4gIGNlbGxXZWFyKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGguYWJzKChyb3cgKiAxNyArIGNvbCAqIDMxICsgcm93ICogY29sICogNykgJSA2KTtcbiAgfVxuXG4gIGlzU2VsZWN0ZWRDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBpZWNlID0gdGhpcy5waWVjZUF0KHJvdywgY29sKTtcbiAgICByZXR1cm4gISFwaWVjZSAmJiBwaWVjZS5pZCA9PT0gdGhpcy5zZWxlY3RlZFBpZWNlSWQoKTtcbiAgfVxuXG4gIGlzTGVnYWxDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxlZ2FsTW92ZUtleXMoKS5oYXMocG9zaXRpb25LZXkoeyByb3csIGNvbCB9KSk7XG4gIH1cblxuICBpc0NhcHR1cmVDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNhcHR1cmVNb3ZlS2V5cygpLmhhcyhwb3NpdGlvbktleSh7IHJvdywgY29sIH0pKTtcbiAgfVxuXG4gIGlzVGhyZWF0ZW5lZENlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGllY2UgPSB0aGlzLnBpZWNlQXQocm93LCBjb2wpO1xuICAgIHJldHVybiAhIXBpZWNlICYmIHRoaXMudGhyZWF0ZW5lZFBpZWNlSWRzKCkuaGFzKHBpZWNlLmlkKTtcbiAgfVxuXG4gIGlzQ2FwdHVyZVJlYWR5Q2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBwaWVjZSA9IHRoaXMucGllY2VBdChyb3csIGNvbCk7XG4gICAgcmV0dXJuICEhcGllY2UgJiYgcGllY2UuY29sb3IgPT09IHRoaXMuZ2FtZSgpLmN1cnJlbnRUdXJuICYmIHRoaXMuY2FwdHVyZVJlYWR5UGllY2VJZHMoKS5oYXMocGllY2UuaWQpO1xuICB9XG5cbiAgaXNXaW5uaW5nQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy53aW5uaW5nTW92ZUtleXMoKS5oYXMocG9zaXRpb25LZXkoeyByb3csIGNvbCB9KSk7XG4gIH1cblxuICBpc0xhc3RNb3ZlQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBsYXN0TW92ZSA9IHRoaXMucmV2aWV3R2FtZSgpLmxhc3RNb3ZlO1xuICAgIHJldHVybiAhdGhpcy5zZWxlY3RlZFBpZWNlSWQoKSAmJiAhIWxhc3RNb3ZlICYmIHBvc2l0aW9uS2V5KGxhc3RNb3ZlLnRvKSA9PT0gcG9zaXRpb25LZXkoeyByb3csIGNvbCB9KTtcbiAgfVxuXG4gIGlzTW92aW5nU291cmNlQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBtb3ZpbmcgPSB0aGlzLm1vdmluZ1BpZWNlKCk7XG4gICAgaWYgKCFtb3ZpbmcpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5Um93SW5kZXgocm93KSA9PT0gbW92aW5nLmZyb21Sb3cgJiYgdGhpcy5kaXNwbGF5Q29sSW5kZXgoY29sKSA9PT0gbW92aW5nLmZyb21Db2w7XG4gIH1cblxuICBpc01vdmVFZmZlY3RDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlciwgYW5pbWFsPzogQ2hlc3NpbWFsc0FuaW1hbFR5cGUpOiBib29sZWFuIHtcbiAgICBjb25zdCBlZmZlY3QgPSB0aGlzLm1vdmVFZmZlY3QoKTtcbiAgICBpZiAoIWVmZmVjdCkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChhbmltYWwgJiYgZWZmZWN0LmFuaW1hbCAhPT0gYW5pbWFsKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHBvc2l0aW9uS2V5KGVmZmVjdC50bykgPT09IHBvc2l0aW9uS2V5KHsgcm93LCBjb2wgfSk7XG4gIH1cblxuICBpc01vdmVFZmZlY3RTb3VyY2VDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGVmZmVjdCA9IHRoaXMubW92ZUVmZmVjdCgpO1xuICAgIHJldHVybiAhIWVmZmVjdCAmJiBwb3NpdGlvbktleShlZmZlY3QuZnJvbSkgPT09IHBvc2l0aW9uS2V5KHsgcm93LCBjb2wgfSk7XG4gIH1cblxuICBpc01vdmVFZmZlY3RDYXB0dXJlQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBlZmZlY3QgPSB0aGlzLm1vdmVFZmZlY3QoKTtcbiAgICByZXR1cm4gISFlZmZlY3Q/LmNhcHR1cmUgJiYgcG9zaXRpb25LZXkoZWZmZWN0LnRvKSA9PT0gcG9zaXRpb25LZXkoeyByb3csIGNvbCB9KTtcbiAgfVxuXG4gIGZpbGVMYWJlbChjb2w6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoNjUgKyBjb2wpO1xuICB9XG5cbiAgcmFua0xhYmVsKHJvdzogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5yZXZpZXdHYW1lKCkuYm9hcmRTaXplIC0gcm93fWA7XG4gIH1cblxuICBzaG93UmFua0xhYmVsKGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGNvbCA9PT0gdGhpcy5kaXNwbGF5Q29scygpWzBdO1xuICB9XG5cbiAgc2hvd0ZpbGVMYWJlbChyb3c6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJvd3MgPSB0aGlzLmRpc3BsYXlSb3dzKCk7XG4gICAgcmV0dXJuIHJvdyA9PT0gcm93c1tyb3dzLmxlbmd0aCAtIDFdO1xuICB9XG5cbiAgcGxheWVyTGFiZWwoY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNvbG9yID09PSAnd2hpdGUnID8gdGhpcy50KCdjaGVzc2ltYWxzV2hpdGUnKSA6IHRoaXMudCgnY2hlc3NpbWFsc0JsYWNrJyk7XG4gIH1cblxuICBjYXB0dXJlc1Njb3JlTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzY29yZSA9IHRoaXMuY2FwdHVyZXNCeUNvbG9yKCk7XG4gICAgcmV0dXJuIGAke3Njb3JlLndoaXRlfS0ke3Njb3JlLmJsYWNrfWA7XG4gIH1cblxuICB0dXJuVGltZXJMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHNlY29uZHMgPSB0aGlzLnR1cm5TZWNvbmRzUmVtYWluaW5nKCk7XG4gICAgcmV0dXJuIHNlY29uZHMgPT09IHVuZGVmaW5lZCA/ICctJyA6IGAke3NlY29uZHN9c2A7XG4gIH1cblxuICBzY29yZUNvbWJvTGFiZWwoY29tYm86IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1Njb3JlQ29tYm8nKS5yZXBsYWNlKCd7Y29tYm99JywgU3RyaW5nKGNvbWJvKSk7XG4gIH1cblxuICB0dXJuVGltZXJQcm9ncmVzcygpOiBzdHJpbmcge1xuICAgIGNvbnN0IHNlY29uZHMgPSB0aGlzLnR1cm5TZWNvbmRzUmVtYWluaW5nKCk7XG4gICAgY29uc3QgZHVyYXRpb24gPSB0aGlzLnR1cm5UaW1lckR1cmF0aW9uO1xuICAgIGlmIChzZWNvbmRzID09PSB1bmRlZmluZWQgfHwgZHVyYXRpb24gPD0gMCkgcmV0dXJuICcxJztcbiAgICByZXR1cm4gU3RyaW5nKE1hdGgubWF4KDAsIE1hdGgubWluKDEsIHNlY29uZHMgLyBkdXJhdGlvbikpKTtcbiAgfVxuXG4gIGlzVHVyblRpbWVyTG93KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNlY29uZHMgPSB0aGlzLnR1cm5TZWNvbmRzUmVtYWluaW5nKCk7XG4gICAgcmV0dXJuIHNlY29uZHMgIT09IHVuZGVmaW5lZCAmJiBzZWNvbmRzIDw9IDU7XG4gIH1cblxuICB0dXJuU3RhdGVMYWJlbCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNGaW5pc2hlZENoaXAnKTtcbiAgICBpZiAodGhpcy5pc0FjdGlvbmFibGVUdXJuKCkpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNZb3VyVHVybicpO1xuICAgIGlmICh0aGlzLmJvdFRoaW5raW5nKCkpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RUaGlua2luZ1RpdGxlJyk7XG4gICAgaWYgKHRoaXMubW92ZVN5bmNpbmcoKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZVN5bmNpbmdUaXRsZScpO1xuICAgIHJldHVybiB0aGlzLmlzV2FpdGluZ0ZvclR1cm4oKSA/IHRoaXMudCgnY2hlc3NpbWFsc1dhaXRpbmdUdXJuTGFiZWwnKSA6IHRoaXMubW9kZUNoaXBMYWJlbCgpO1xuICB9XG5cbiAgdHVyblN0YXRlQm9keSgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHJldHVybiB0aGlzLndpbkJvZHkoKTtcbiAgICBpZiAodGhpcy5pc0FjdGlvbmFibGVUdXJuKCkpIHtcbiAgICAgIGlmICh0aGlzLmlzVHVyblRpbWVyTG93KCkpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNUdXJuVGltZXJMb3dCb2R5Jyk7XG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90JyAmJiB0aGlzLmdhbWUoKS5tb2RlID09PSAnbG9jYWwnXG4gICAgICAgID8gdGhpcy50KCdjaGVzc2ltYWxzQm90WW91clR1cm5Cb2R5JylcbiAgICAgICAgOiB0aGlzLnQoJ2NoZXNzaW1hbHNZb3VyVHVybkJvZHknKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuYm90VGhpbmtpbmcoKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0JvdFRoaW5raW5nQm9keScpO1xuICAgIGlmICh0aGlzLm1vdmVTeW5jaW5nKCkpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVTeW5jaW5nQm9keScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNXYWl0aW5nVHVybicpO1xuICB9XG5cbiAgd2lubmVyRGlzcGxheU5hbWUoKTogc3RyaW5nIHtcbiAgICBjb25zdCB3aW5uZXIgPSB0aGlzLmdhbWUoKS53aW5uZXIgPz8gJ3doaXRlJztcbiAgICByZXR1cm4gdGhpcy5wbGF5ZXJEaXNwbGF5TmFtZSh3aW5uZXIpO1xuICB9XG5cbiAgd2lubmVyU2lkZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucGxheWVyTGFiZWwodGhpcy5nYW1lKCkud2lubmVyID8/ICd3aGl0ZScpO1xuICB9XG5cbiAgd2lubmVySW5pdGlhbHMoKTogc3RyaW5nIHtcbiAgICBjb25zdCBuYW1lID0gdGhpcy53aW5uZXJEaXNwbGF5TmFtZSgpLnRyaW0oKTtcbiAgICBjb25zdCBpbml0aWFscyA9IG5hbWVcbiAgICAgIC5zcGxpdCgvXFxzKy8pXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAuc2xpY2UoMCwgMilcbiAgICAgIC5tYXAoKHBhcnQpID0+IHBhcnQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkpXG4gICAgICAuam9pbignJyk7XG4gICAgcmV0dXJuIGluaXRpYWxzIHx8IHRoaXMud2lubmVyU2lkZUxhYmVsKCkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCk7XG4gIH1cblxuICB3aW5uZXJBdmF0YXJVcmwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgY29uc3Qgd2lubmVyID0gZ2FtZS53aW5uZXI7XG4gICAgaWYgKCF3aW5uZXIgfHwgZ2FtZS5tb2RlICE9PSAnb25saW5lJykgcmV0dXJuICcnO1xuICAgIHJldHVybiBnYW1lLm9ubGluZT8ucGFydGljaXBhbnRzPy5bd2lubmVyXT8uYXZhdGFyVXJsPy50cmltKCkgPz8gJyc7XG4gIH1cblxuICBpc0N1cnJlbnRQbGF5ZXJWaWN0b3J5KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5zdGF0dXMgIT09ICdmaW5pc2hlZCcgfHwgIWdhbWUud2lubmVyKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFBsYXllclNpZGVGb3JPdXRjb21lKGdhbWUpID09PSBnYW1lLndpbm5lcjtcbiAgfVxuXG4gIGlzQ3VycmVudFBsYXllckRlZmVhdCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUuc3RhdHVzICE9PSAnZmluaXNoZWQnIHx8ICFnYW1lLndpbm5lcikgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IHNpZGUgPSB0aGlzLmN1cnJlbnRQbGF5ZXJTaWRlRm9yT3V0Y29tZShnYW1lKTtcbiAgICByZXR1cm4gISFzaWRlICYmIHNpZGUgIT09IGdhbWUud2lubmVyO1xuICB9XG5cbiAgcHJpdmF0ZSBwbGF5ZXJEaXNwbGF5TmFtZShjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yKTogc3RyaW5nIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ29ubGluZScpIHtcbiAgICAgIGNvbnN0IHBhcnRpY2lwYW50ID0gZ2FtZS5vbmxpbmU/LnBhcnRpY2lwYW50cz8uW2NvbG9yXTtcbiAgICAgIGNvbnN0IG5hbWUgPSBwYXJ0aWNpcGFudD8ubmFtZT8udHJpbSgpO1xuICAgICAgaWYgKG5hbWUpIHJldHVybiBuYW1lO1xuICAgICAgY29uc3QgaGFuZGxlID0gcGFydGljaXBhbnQ/LmhhbmRsZT8udHJpbSgpO1xuICAgICAgaWYgKGhhbmRsZSkgcmV0dXJuIGhhbmRsZTtcbiAgICB9XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ2xvY2FsJyAmJiB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnKSB7XG4gICAgICByZXR1cm4gY29sb3IgPT09IENIRVNTSU1BTFNfQk9UX0NPTE9SID8gdGhpcy50KCdjaGVzc2ltYWxzQm90TmFtZScpIDogdGhpcy5sb2dnZWRQbGF5ZXJOYW1lKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnBsYXllckxhYmVsKGNvbG9yKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtYXRjaE9wcG9uZW50KCk6IENoZXNzaW1hbHNPbmxpbmVQYXJ0aWNpcGFudCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGNvbnN0IHJvbGUgPSB0aGlzLm9ubGluZVJvbGUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJyB8fCAocm9sZSAhPT0gJ3doaXRlJyAmJiByb2xlICE9PSAnYmxhY2snKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCBvcHBvbmVudFNpZGU6IENoZXNzaW1hbHNQbGF5ZXJDb2xvciA9IHJvbGUgPT09ICd3aGl0ZScgPyAnYmxhY2snIDogJ3doaXRlJztcbiAgICByZXR1cm4gZ2FtZS5vbmxpbmU/LnBhcnRpY2lwYW50cz8uW29wcG9uZW50U2lkZV07XG4gIH1cblxuICBwcml2YXRlIGN1cnJlbnRPcHBvbmVudFVpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlbWF0Y2hPcHBvbmVudCgpPy51aWQgPz8gJyc7XG4gIH1cblxuICBtb2RlQ2hpcExhYmVsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgIT09ICdvbmxpbmUnKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90JyA/IHRoaXMudCgnY2hlc3NpbWFsc0JvdE1vZGUnKSA6IHRoaXMudCgnY2hlc3NpbWFsc09uZURldmljZScpO1xuICAgIH1cbiAgICBjb25zdCByb2xlID0gdGhpcy5vbmxpbmVSb2xlKCk7XG4gICAgaWYgKHJvbGUgPT09ICd3YWl0aW5nJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZVdhaXRpbmcnKTtcbiAgICBpZiAocm9sZSA9PT0gJ3BlbmRpbmcnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lUGVuZGluZycpO1xuICAgIGlmIChyb2xlID09PSAnc3BlY3RhdG9yJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1NwZWN0YXRvcicpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVQbGF5ZXInKTtcbiAgfVxuXG4gIHR1cm5UaXRsZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJykge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcgJiYgZ2FtZS5jdXJyZW50VHVybiA9PT0gQ0hFU1NJTUFMU19CT1RfQ09MT1IpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0JvdFRoaW5raW5nVGl0bGUnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRUdXJuVGl0bGUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub25saW5lUm9sZSgpID09PSBnYW1lLmN1cnJlbnRUdXJuKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzWW91clR1cm4nKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ3VycmVudFR1cm4nKS5yZXBsYWNlKCd7cGxheWVyfScsIHRoaXMucGxheWVyTGFiZWwoZ2FtZS5jdXJyZW50VHVybikpO1xuICB9XG5cbiAgbm9ybWFsaXplR2FtZUlkKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm9ubGluZS5ub3JtYWxpemVHYW1lSWQodmFsdWUpO1xuICB9XG5cbiAgYXN5bmMgY29weU9ubGluZUxpbmsoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5vbmxpbmUuc2hhcmVVcmwodGhpcy5nYW1lKCkuaWQsIHRoaXMubWluaUdhbWVzQmFzZVJvdXRlKCkpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkPy53cml0ZVRleHQodXJsKTtcbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7IG1lc3NhZ2U6IHRoaXMudCgnY2hlc3NpbWFsc0xpbmtDb3BpZWQnKSwgY29sb3I6ICdkYXJrJywgZHVyYXRpb246IDIyMDAsIHBvc2l0aW9uOiAndG9wJyB9KTtcbiAgICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2hhcmVPbmxpbmVMaW5rKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMub25saW5lLnNoYXJlVXJsKHRoaXMuZ2FtZSgpLmlkLCB0aGlzLm1pbmlHYW1lc0Jhc2VSb3V0ZSgpKTtcbiAgICBpZiAobmF2aWdhdG9yLnNoYXJlKSB7XG4gICAgICBhd2FpdCBuYXZpZ2F0b3Iuc2hhcmUoeyB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzVGl0bGUnKSwgdGV4dDogdGhpcy50KCdjaGVzc2ltYWxzU2hhcmVUZXh0JyksIHVybCB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5jb3B5T25saW5lTGluaygpO1xuICB9XG5cbiAgYXN5bmMgc2hhcmVQcm9qZWN0aW9uTGluaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLm9ubGluZS5wcm9qZWN0aW9uU2hhcmVVcmwodGhpcy5nYW1lKCkuaWQsIHRoaXMubWluaUdhbWVzQmFzZVJvdXRlKCkpO1xuICAgIGlmIChuYXZpZ2F0b3Iuc2hhcmUpIHtcbiAgICAgIGF3YWl0IG5hdmlnYXRvci5zaGFyZSh7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNQcm9qZWN0aW9uVGl0bGUnKSxcbiAgICAgICAgdGV4dDogdGhpcy50KCdjaGVzc2ltYWxzUHJvamVjdGlvblNoYXJlVGV4dCcpLFxuICAgICAgICB1cmwsXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQ/LndyaXRlVGV4dCh1cmwpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgbWVzc2FnZTogdGhpcy50KCdjaGVzc2ltYWxzUHJvamVjdGlvbkxpbmtDb3BpZWQnKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgZHVyYXRpb246IDIyMDAsXG4gICAgICAgIHBvc2l0aW9uOiAndG9wJyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICB9XG4gIH1cblxuICBjYW5SZXZpZXdQZW5kaW5nR3Vlc3QoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGNvbnN0IHVpZCA9IHRoaXMub25saW5lVWlkKCk7XG4gICAgcmV0dXJuICEhdWlkXG4gICAgICAmJiBnYW1lLm1vZGUgPT09ICdvbmxpbmUnXG4gICAgICAmJiB0aGlzLm9ubGluZS5pc0hvc3RXYWl0aW5nKGdhbWUsIHVpZClcbiAgICAgICYmICEhZ2FtZS5vbmxpbmUucGVuZGluZ0d1ZXN0O1xuICB9XG5cbiAgcGVuZGluZ0d1ZXN0TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdhbWUoKS5vbmxpbmU/LnBlbmRpbmdHdWVzdD8ubmFtZSA/PyB0aGlzLnQoJ2RlZmF1bHRQbGF5ZXJOYW1lJyk7XG4gIH1cblxuICBwZW5kaW5nR3Vlc3RIYW5kbGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nYW1lKCkub25saW5lPy5wZW5kaW5nR3Vlc3Q/LmhhbmRsZSA/PyAnJztcbiAgfVxuXG4gIHBlbmRpbmdHdWVzdEF2YXRhclVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdhbWUoKS5vbmxpbmU/LnBlbmRpbmdHdWVzdD8uYXZhdGFyVXJsID8/ICcnO1xuICB9XG5cbiAgcGVuZGluZ0d1ZXN0SW5pdGlhbHMoKTogc3RyaW5nIHtcbiAgICBjb25zdCBndWVzdCA9IHRoaXMuZ2FtZSgpLm9ubGluZT8ucGVuZGluZ0d1ZXN0O1xuICAgIGNvbnN0IG5hbWUgPSAoZ3Vlc3Q/Lm5hbWUgfHwgZ3Vlc3Q/LmhhbmRsZSB8fCB0aGlzLnQoJ2RlZmF1bHRQbGF5ZXJOYW1lJykpLnRyaW0oKTtcbiAgICBjb25zdCBpbml0aWFscyA9IG5hbWVcbiAgICAgIC5zcGxpdCgvXFxzKy8pXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAuc2xpY2UoMCwgMilcbiAgICAgIC5tYXAoKHBhcnQpID0+IHBhcnQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkpXG4gICAgICAuam9pbignJyk7XG4gICAgcmV0dXJuIGluaXRpYWxzIHx8ICc/JztcbiAgfVxuXG4gIHBlbmRpbmdHdWVzdEF2YXRhclByb3BzKCk6IFVzZXJBdmF0YXJNZXRhZGF0YSB7XG4gICAgY29uc3QgZ3Vlc3QgPSB0aGlzLmdhbWUoKS5vbmxpbmU/LnBlbmRpbmdHdWVzdDtcbiAgICByZXR1cm4ge1xuICAgICAgdXNlcjoge1xuICAgICAgICBuYW1lOiBndWVzdD8ubmFtZSxcbiAgICAgICAgaGFuZGxlOiBndWVzdD8uaGFuZGxlLFxuICAgICAgICBhdmF0YXJVcmw6IGd1ZXN0Py5hdmF0YXJVcmwsXG4gICAgICB9LFxuICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgIGJvcmRlcmVkOiB0cnVlLFxuICAgIH07XG4gIH1cblxuICByZW1hdGNoT3Bwb25lbnROYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVtYXRjaE9wcG9uZW50KCk/Lm5hbWU/LnRyaW0oKSB8fCB0aGlzLnQoJ2RlZmF1bHRQbGF5ZXJOYW1lJyk7XG4gIH1cblxuICByZW1hdGNoT3Bwb25lbnRIYW5kbGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZW1hdGNoT3Bwb25lbnQoKT8uaGFuZGxlPy50cmltKCkgPz8gJyc7XG4gIH1cblxuICByZW1hdGNoT3Bwb25lbnRBdmF0YXJVcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZW1hdGNoT3Bwb25lbnQoKT8uYXZhdGFyVXJsPy50cmltKCkgPz8gJyc7XG4gIH1cblxuICByZW1hdGNoT3Bwb25lbnRJbml0aWFscygpOiBzdHJpbmcge1xuICAgIGNvbnN0IG9wcG9uZW50ID0gdGhpcy5yZW1hdGNoT3Bwb25lbnQoKTtcbiAgICBjb25zdCBuYW1lID0gKG9wcG9uZW50Py5uYW1lIHx8IG9wcG9uZW50Py5oYW5kbGUgfHwgdGhpcy50KCdkZWZhdWx0UGxheWVyTmFtZScpKS50cmltKCk7XG4gICAgY29uc3QgaW5pdGlhbHMgPSBuYW1lXG4gICAgICAuc3BsaXQoL1xccysvKVxuICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgLnNsaWNlKDAsIDIpXG4gICAgICAubWFwKChwYXJ0KSA9PiBwYXJ0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpKVxuICAgICAgLmpvaW4oJycpO1xuICAgIHJldHVybiBpbml0aWFscyB8fCAnPyc7XG4gIH1cblxuICByZW1hdGNoT3Bwb25lbnRBdmF0YXJQcm9wcygpOiBVc2VyQXZhdGFyTWV0YWRhdGEge1xuICAgIGNvbnN0IG9wcG9uZW50ID0gdGhpcy5yZW1hdGNoT3Bwb25lbnQoKTtcbiAgICByZXR1cm4ge1xuICAgICAgdXNlcjoge1xuICAgICAgICBuYW1lOiBvcHBvbmVudD8ubmFtZSxcbiAgICAgICAgaGFuZGxlOiBvcHBvbmVudD8uaGFuZGxlLFxuICAgICAgICBhdmF0YXJVcmw6IG9wcG9uZW50Py5hdmF0YXJVcmwsXG4gICAgICB9LFxuICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgIGJvcmRlcmVkOiB0cnVlLFxuICAgIH07XG4gIH1cblxuICB3YWl0aW5nVGl0bGUoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5jYW5SZXZpZXdQZW5kaW5nR3Vlc3QoKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0pvaW5SZXF1ZXN0VGl0bGUnKTtcbiAgICBpZiAodGhpcy5vbmxpbmVSb2xlKCkgPT09ICdwZW5kaW5nJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0xvYmJ5R3Vlc3RXYWl0aW5nVGl0bGUnKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzV2FpdGluZ1RpdGxlJyk7XG4gIH1cblxuICB3YWl0aW5nQm9keSgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmNhblJldmlld1BlbmRpbmdHdWVzdCgpKSB7XG4gICAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzSm9pblJlcXVlc3RCb2R5JykucmVwbGFjZSgne3BsYXllcn0nLCB0aGlzLnBlbmRpbmdHdWVzdE5hbWUoKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9ubGluZVJvbGUoKSA9PT0gJ3BlbmRpbmcnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzTG9iYnlHdWVzdFdhaXRpbmdCb2R5Jyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1dhaXRpbmdCb2R5Jyk7XG4gIH1cblxuICBhc3luYyBhY2NlcHRPbmxpbmVHdWVzdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuY2FuUmV2aWV3UGVuZGluZ0d1ZXN0KCkpIHJldHVybjtcbiAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQoJ2FjY2VwdCcpO1xuICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMub25saW5lLmFjY2VwdEd1ZXN0KHRoaXMuZ2FtZSgpLmlkKTtcbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7IG1lc3NhZ2U6IHRoaXMudCgnY2hlc3NpbWFsc0d1ZXN0QWNjZXB0ZWQnKSwgY29sb3I6ICdkYXJrJywgZHVyYXRpb246IDIyMDAsIHBvc2l0aW9uOiAndG9wJyB9KTtcbiAgICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgICAgdm9pZCB0aGlzLmhhcHRpY3Muc3VjY2VzcygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tDaGVzc2ltYWxzXSBhY2NlcHQgZ3Vlc3QgZmFpbGVkJywgZXJyb3IpO1xuICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lRXJyb3InKSk7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLmVycm9yKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMub25saW5lQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5vbmxpbmVMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcmVqZWN0T25saW5lR3Vlc3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmNhblJldmlld1BlbmRpbmdHdWVzdCgpKSByZXR1cm47XG4gICAgdGhpcy5vbmxpbmVBY3Rpb24uc2V0KCdyZWplY3QnKTtcbiAgICB0aGlzLm9ubGluZUxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm9ubGluZS5yZWplY3RHdWVzdCh0aGlzLmdhbWUoKS5pZCk7XG4gICAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlOiB0aGlzLnQoJ2NoZXNzaW1hbHNHdWVzdFJlamVjdGVkJyksIGNvbG9yOiAnZGFyaycsIGR1cmF0aW9uOiAyMjAwLCBwb3NpdGlvbjogJ3RvcCcgfSk7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLndhcm5pbmcoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gcmVqZWN0IGd1ZXN0IGZhaWxlZCcsIGVycm9yKTtcbiAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5lcnJvcigpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5IaXN0b3J5R2FtZShlbnRyeTogQ2hlc3NpbWFsc0hpc3RvcnlFbnRyeSk6IHZvaWQge1xuICAgIHRoaXMub25saW5lSm9pbkNvZGUuc2V0KGVudHJ5LmdhbWVJZCk7XG4gICAgdm9pZCB0aGlzLm9wZW5PbmxpbmVHYW1lKGVudHJ5LmdhbWVJZCk7XG4gICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMuY2hlc3NpbWFsc0dhbWVSb3V0ZShlbnRyeS5nYW1lSWQpKTtcbiAgfVxuXG4gIGhpc3RvcnlPdXRjb21lTGFiZWwoZW50cnk6IENoZXNzaW1hbHNIaXN0b3J5RW50cnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IG91dGNvbWVLZXkgPSBgY2hlc3NpbWFsc0hpc3Rvcnkke2VudHJ5Lm91dGNvbWVcbiAgICAgIC5zcGxpdCgnXycpXG4gICAgICAubWFwKChwYXJ0KSA9PiB0aGlzLmNhcGl0YWxpemUocGFydCkpXG4gICAgICAuam9pbignJyl9YDtcbiAgICBjb25zdCBvcHBvbmVudCA9IGVudHJ5Lm9wcG9uZW50TmFtZVxuICAgICAgPyBgIMK3ICR7dGhpcy50KCdjaGVzc2ltYWxzSGlzdG9yeUFnYWluc3QnKS5yZXBsYWNlKCd7cGxheWVyfScsIGVudHJ5Lm9wcG9uZW50TmFtZSl9YFxuICAgICAgOiAnJztcbiAgICByZXR1cm4gYCR7dGhpcy50KG91dGNvbWVLZXkpfSR7b3Bwb25lbnR9YDtcbiAgfVxuXG4gIGFzeW5jIHJlcXVlc3RPbmxpbmVSZW1hdGNoKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmdhbWUoKS5tb2RlICE9PSAnb25saW5lJykgcmV0dXJuO1xuICAgIGlmICghdGhpcy5jYW5Db250cm9sQ3VycmVudEdhbWUoKSkgcmV0dXJuO1xuICAgIGlmICh0aGlzLnJlbWF0Y2hTdGF0ZSgpID09PSAncmVxdWVzdGVkJyB8fCB0aGlzLnJlbWF0Y2hMb2FkaW5nKCkpIHJldHVybjtcbiAgICBjb25zdCBhY2NlcHRpbmcgPSB0aGlzLnJlbWF0Y2hTdGF0ZSgpID09PSAnaW5jb21pbmcnO1xuICAgIHRoaXMucmVtYXRjaExvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBuZXh0ID0gYXdhaXQgdGhpcy5vbmxpbmUucmVxdWVzdFJlbWF0Y2godGhpcy5nYW1lKCkuaWQpO1xuICAgICAgaWYgKG5leHQ/LnN0YXR1cyA9PT0gJ2luX3Byb2dyZXNzJykge1xuICAgICAgICB0aGlzLmFwcGx5T25saW5lR2FtZVNuYXBzaG90KHRoaXMuZ2FtZSgpLCBuZXh0KTtcbiAgICAgIH1cbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICAgIG1lc3NhZ2U6IHRoaXMudChhY2NlcHRpbmcgPyAnY2hlc3NpbWFsc1JlbWF0Y2hBY2NlcHRlZCcgOiAnY2hlc3NpbWFsc1JlbWF0Y2hSZXF1ZXN0ZWRUb2FzdCcpLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBkdXJhdGlvbjogMjQwMCxcbiAgICAgICAgcG9zaXRpb246ICd0b3AnLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMucmVtYXRjaExvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHF1ZXVlSGlzdG9yeVdhdGNoKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhpc3RvcnlXYXRjaFRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5oaXN0b3J5V2F0Y2hUaW1lcik7XG4gICAgdGhpcy5oaXN0b3J5V2F0Y2hUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy53YXRjaE9ubGluZUhpc3RvcnkoKSwgMjIwKTtcbiAgfVxuXG4gIHByaXZhdGUgd2F0Y2hPbmxpbmVIaXN0b3J5KCk6IHZvaWQge1xuICAgIGNvbnN0IHVpZCA9IHRoaXMub25saW5lLmN1cnJlbnRVaWQ7XG4gICAgaWYgKCF1aWQpIHJldHVybjtcbiAgICBpZiAodGhpcy5oaXN0b3J5VWlkID09PSB1aWQgJiYgdGhpcy5oaXN0b3J5U3Vic2NyaXB0aW9uKSByZXR1cm47XG4gICAgdGhpcy5oaXN0b3J5VWlkID0gdWlkO1xuICAgIHRoaXMuaGlzdG9yeVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmhpc3RvcnlTdWJzY3JpcHRpb24gPSB0aGlzLm9ubGluZS53YXRjaEhpc3RvcnkoMjQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoaGlzdG9yeSkgPT4gdGhpcy5vbmxpbmVIaXN0b3J5LnNldChoaXN0b3J5KSxcbiAgICAgIGVycm9yOiAoKSA9PiB0aGlzLm9ubGluZUhpc3Rvcnkuc2V0KFtdKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgd2F0Y2hDaGFsbGVuZ2VTdGF0cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jaGFsbGVuZ2VTdGF0c1N1YnNjcmlwdGlvbikgcmV0dXJuO1xuICAgIHRoaXMuY2hhbGxlbmdlU3RhdHNTdWJzY3JpcHRpb24gPSB0aGlzLmNoYWxsZW5nZVByb2dyZXNzLndhdGNoU3RhdHMoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHN0YXRzKSA9PiB0aGlzLmNoYWxsZW5nZVN0YXRzLnNldChzdGF0cyA/PyB0aGlzLmNoYWxsZW5nZVByb2dyZXNzLmVtcHR5U3RhdHMoKSksXG4gICAgICBlcnJvcjogKCkgPT4gdGhpcy5jaGFsbGVuZ2VTdGF0cy5zZXQodGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy5lbXB0eVN0YXRzKCkpLFxuICAgIH0pO1xuICAgIHRoaXMuY2hhbGxlbmdlUnVuc1N1YnNjcmlwdGlvbiA9IHRoaXMuY2hhbGxlbmdlUHJvZ3Jlc3Mud2F0Y2hSZWNlbnRSdW5zKDQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocnVucykgPT4gdGhpcy5jaGFsbGVuZ2VIaXN0b3J5LnNldChydW5zKSxcbiAgICAgIGVycm9yOiAoKSA9PiB0aGlzLmNoYWxsZW5nZUhpc3Rvcnkuc2V0KFtdKSxcbiAgICB9KTtcbiAgICB0aGlzLmNoYWxsZW5nZUFjdGl2ZVJ1blN1YnNjcmlwdGlvbiA9IHRoaXMuY2hhbGxlbmdlUHJvZ3Jlc3Mud2F0Y2hBY3RpdmVSdW4oKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJ1bikgPT4gdGhpcy5hY3RpdmVTdG9yZWRDaGFsbGVuZ2VSdW4uc2V0KHRoaXMuaXNSZXN1bWFibGVDaGFsbGVuZ2VSdW4ocnVuKSA/IHJ1biA6IHVuZGVmaW5lZCksXG4gICAgICBlcnJvcjogKCkgPT4gdGhpcy5hY3RpdmVTdG9yZWRDaGFsbGVuZ2VSdW4uc2V0KHVuZGVmaW5lZCksXG4gICAgfSk7XG4gIH1cblxuICB1bmxvY2tlZExhYmVsKGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdhbWUoKS5wbGF5ZXJzW2NvbG9yXS5wb3dlclVubG9ja2VkID8gdGhpcy50KCdjaGVzc2ltYWxzVW5sb2NrZWQnKSA6IHRoaXMudCgnY2hlc3NpbWFsc0xvY2tlZCcpO1xuICB9XG5cbiAgbG9jYWxNb2RlTGFiZWwobW9kZTogQ2hlc3NpbWFsc0xvY2FsTW9kZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG1vZGUgPT09ICdib3QnID8gdGhpcy50KCdjaGVzc2ltYWxzQm90TW9kZScpIDogdGhpcy50KCdjaGVzc2ltYWxzT25lRGV2aWNlJyk7XG4gIH1cblxuICBsb2NhbE1vZGVEZXNjcmlwdGlvbihtb2RlOiBDaGVzc2ltYWxzTG9jYWxNb2RlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbW9kZSA9PT0gJ2JvdCcgPyB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RNb2RlQm9keScpIDogdGhpcy50KCdjaGVzc2ltYWxzT25lRGV2aWNlQm9keScpO1xuICB9XG5cbiAgc2VsZWN0Qm90RGlmZmljdWx0eShkaWZmaWN1bHR5OiBDaGVzc2ltYWxzQm90RGlmZmljdWx0eUNob2ljZSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRCb3REaWZmaWN1bHR5LnNldChkaWZmaWN1bHR5KTtcbiAgICBpZiAoZGlmZmljdWx0eSA9PT0gJ25pZ2h0bWFyZScpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkTmlnaHRtYXJlID0gdGhpcy5zZWxlY3RlZE5pZ2h0bWFyZU1vZGUoKTtcbiAgICAgIHRoaXMuc2VsZWN0TmlnaHRtYXJlUml2YWwoc2VsZWN0ZWROaWdodG1hcmUgPT09ICdub25lJyA/ICdodW50JyA6IHNlbGVjdGVkTmlnaHRtYXJlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkTmlnaHRtYXJlTW9kZS5zZXQoJ25vbmUnKTtcbiAgICBjb25zdCBwcm9maWxlID0gdGhpcy5ib3RQcm9maWxlcy5maW5kKChpdGVtKSA9PiBpdGVtLmRpZmZpY3VsdHkgPT09IGRpZmZpY3VsdHkpO1xuICAgIGlmIChwcm9maWxlKSB0aGlzLnNlbGVjdGVkQm90UHJvZmlsZUlkLnNldChwcm9maWxlLmlkKTtcbiAgfVxuXG4gIHNlbGVjdE5pZ2h0bWFyZVJpdmFsKG1vZGU6IEV4Y2x1ZGU8Q2hlc3NpbWFsc05pZ2h0bWFyZU1vZGUsICdub25lJz4pOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkTmlnaHRtYXJlTW9kZS5zZXQobW9kZSk7XG4gICAgaWYgKG1vZGUgPT09ICdodW50JykgdGhpcy5zZWxlY3RlZEJvdFByb2ZpbGVJZC5zZXQoJ2h1bnRlcicpO1xuICAgIGVsc2UgaWYgKG1vZGUgPT09ICdwcmlkZScpIHRoaXMuc2VsZWN0ZWRCb3RQcm9maWxlSWQuc2V0KCdwcmVkYXRvcicpO1xuICAgIGVsc2UgdGhpcy5zZWxlY3RlZEJvdFByb2ZpbGVJZC5zZXQoJ21hZ251cycpO1xuICB9XG5cbiAgcHJpdmF0ZSBhY3RpdmVOaWdodG1hcmVNb2RlKCk6IENoZXNzaW1hbHNOaWdodG1hcmVNb2RlIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEJvdERpZmZpY3VsdHkoKSAhPT0gJ25pZ2h0bWFyZScpIHJldHVybiAnbm9uZSc7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWROaWdodG1hcmVNb2RlKCkgPT09ICdub25lJyA/ICdodW50JyA6IHRoaXMuc2VsZWN0ZWROaWdodG1hcmVNb2RlKCk7XG4gIH1cblxuICBwcml2YXRlIGVuZ2luZUJvdERpZmZpY3VsdHkoKTogQ2hlc3NpbWFsc0JvdERpZmZpY3VsdHkge1xuICAgIGNvbnN0IGRpZmZpY3VsdHkgPSB0aGlzLnNlbGVjdGVkQm90RGlmZmljdWx0eSgpO1xuICAgIHJldHVybiBkaWZmaWN1bHR5ID09PSAnbmlnaHRtYXJlJyA/ICdoYXJkJyA6IGRpZmZpY3VsdHk7XG4gIH1cblxuICBuaWdodG1hcmVNb2RlTGFiZWwobW9kZTogQ2hlc3NpbWFsc05pZ2h0bWFyZU1vZGUpOiBzdHJpbmcge1xuICAgIGlmIChtb2RlID09PSAnaHVudCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNOaWdodG1hcmVIdW50Jyk7XG4gICAgaWYgKG1vZGUgPT09ICdwcmlkZScpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNOaWdodG1hcmVQcmlkZScpO1xuICAgIGlmIChtb2RlID09PSAnbWFnbnVzJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc05pZ2h0bWFyZU1hZ251cycpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNOaWdodG1hcmVOb25lJyk7XG4gIH1cblxuICBuaWdodG1hcmVNb2RlRGVzY3JpcHRpb24obW9kZTogQ2hlc3NpbWFsc05pZ2h0bWFyZU1vZGUpOiBzdHJpbmcge1xuICAgIGlmIChtb2RlID09PSAnaHVudCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNOaWdodG1hcmVIdW50Qm9keScpO1xuICAgIGlmIChtb2RlID09PSAncHJpZGUnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzTmlnaHRtYXJlUHJpZGVCb2R5Jyk7XG4gICAgaWYgKG1vZGUgPT09ICdtYWdudXMnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzTmlnaHRtYXJlTWFnbnVzQm9keScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNOaWdodG1hcmVOb25lQm9keScpO1xuICB9XG5cbiAgbmlnaHRtYXJlTW9kZUFzc2V0U3JjKG1vZGU6IENoZXNzaW1hbHNOaWdodG1hcmVNb2RlKTogc3RyaW5nIHtcbiAgICBpZiAobW9kZSA9PT0gJ2h1bnQnKSByZXR1cm4gJ2Fzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL2NoYWxsZW5nZS1hdmF0YXJzL25pZ2h0bWFyZS1odW50LnBuZyc7XG4gICAgaWYgKG1vZGUgPT09ICdwcmlkZScpIHJldHVybiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvY2hhbGxlbmdlLWF2YXRhcnMvbmlnaHRtYXJlLXByaWRlLnBuZyc7XG4gICAgaWYgKG1vZGUgPT09ICdtYWdudXMnKSByZXR1cm4gJ2Fzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL2NoYWxsZW5nZS1hdmF0YXJzL25pZ2h0bWFyZS1tYWdudXMucG5nJztcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBuaWdodG1hcmVNb2RlR2x5cGgobW9kZTogQ2hlc3NpbWFsc05pZ2h0bWFyZU1vZGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBtb2RlID09PSAnbm9uZScgPyAnT0snIDogJyonO1xuICB9XG5cbiAgcG93ZXJVc2VzTGFiZWwoYW5pbWFsOiBDaGVzc2ltYWxzQW5pbWFsVHlwZSk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVtYWluaW5nID0gdGhpcy5wb3dlclBsYXllcigpLmNhcmRzW2FuaW1hbF0udXNlc1JlbWFpbmluZztcbiAgICByZXR1cm4gcmVtYWluaW5nICYmIHJlbWFpbmluZyA+IDEgPyAneCcgKyByZW1haW5pbmcgOiAnJztcbiAgfVxuXG4gIGJvdERpZmZpY3VsdHlMYWJlbChkaWZmaWN1bHR5OiBDaGVzc2ltYWxzQm90RGlmZmljdWx0eUNob2ljZSk6IHN0cmluZyB7XG4gICAgaWYgKGRpZmZpY3VsdHkgPT09ICdlYXN5JykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0JvdEVhc3knKTtcbiAgICBpZiAoZGlmZmljdWx0eSA9PT0gJ2hhcmQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm90SGFyZCcpO1xuICAgIGlmIChkaWZmaWN1bHR5ID09PSAnbmlnaHRtYXJlJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0JvdE5pZ2h0bWFyZScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3ROb3JtYWwnKTtcbiAgfVxuXG4gIGJvdFByb2ZpbGVMYWJlbChwcm9maWxlOiBDaGVzc2ltYWxzQm90UHJvZmlsZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudChwcm9maWxlLmxhYmVsS2V5KTtcbiAgfVxuXG4gIGJvdFByb2ZpbGVEZXNjcmlwdGlvbihwcm9maWxlOiBDaGVzc2ltYWxzQm90UHJvZmlsZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudChwcm9maWxlLmRlc2NyaXB0aW9uS2V5KTtcbiAgfVxuXG4gIGJvdFByb2ZpbGVUZW5kZW5jeShwcm9maWxlOiBDaGVzc2ltYWxzQm90UHJvZmlsZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudChgY2hlc3NpbWFsc0JvdCR7dGhpcy5jYXBpdGFsaXplKHByb2ZpbGUuaWQpfVRlbmRlbmN5YCk7XG4gIH1cblxuICBib3RQcm9maWxlQXZhdGFyKHByb2ZpbGVJZDogQ2hlc3NpbWFsc0JvdFByb2ZpbGVJZCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYm90UHJvZmlsZXMuZmluZCgocHJvZmlsZSkgPT4gcHJvZmlsZS5pZCA9PT0gcHJvZmlsZUlkKT8uYXZhdGFyID8/ICfimZ8nO1xuICB9XG5cbiAgYm90UHJvZmlsZUF2YXRhclNyYyhwcm9maWxlSWQ6IENoZXNzaW1hbHNCb3RQcm9maWxlSWQpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmJvdFByb2ZpbGVzLmZpbmQoKHByb2ZpbGUpID0+IHByb2ZpbGUuaWQgPT09IHByb2ZpbGVJZCk/LmF2YXRhclNyYyA/PyAnJztcbiAgfVxuXG4gIGNoYWxsZW5nZUJvdFByb2ZpbGUoYm90OiBDaGVzc2ltYWxzQ2hhbGxlbmdlQm90KTogQ2hlc3NpbWFsc0JvdFByb2ZpbGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmJvdFByb2ZpbGVzLmZpbmQoKHByb2ZpbGUpID0+IHByb2ZpbGUuaWQgPT09IGJvdC5wcm9maWxlSWQpO1xuICB9XG5cbiAgY2hhbGxlbmdlT3BlbmluZ0JvdCgpOiBDaGVzc2ltYWxzQ2hhbGxlbmdlQm90IHtcbiAgICByZXR1cm4gdGhpcy5jaGFsbGVuZ2VMYWRkZXJbMF07XG4gIH1cblxuICBjaGFsbGVuZ2VNZW51Qm90KCk6IENoZXNzaW1hbHNDaGFsbGVuZ2VCb3Qge1xuICAgIGNvbnN0IGFjdGl2ZVJ1biA9IHRoaXMuY2hhbGxlbmdlTWVudVJ1bigpO1xuICAgIGlmIChhY3RpdmVSdW4pIHtcbiAgICAgIGNvbnN0IGFjdGl2ZVJvdW5kSW5kZXggPSB0aGlzLmNoYWxsZW5nZVJ1blJvdW5kSW5kZXgoYWN0aXZlUnVuKTtcbiAgICAgIHJldHVybiB0aGlzLmNoYWxsZW5nZUxhZGRlcltNYXRoLm1pbihNYXRoLm1heChhY3RpdmVSb3VuZEluZGV4IC0gMSwgMCksIHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aCAtIDEpXTtcbiAgICB9XG4gICAgY29uc3QgYmVzdFJvdW5kID0gdGhpcy5jaGFsbGVuZ2VTdGF0cygpLmJlc3RSb3VuZFJlYWNoZWQ7XG4gICAgY29uc3QgbmV4dFJvdW5kSW5kZXggPSBNYXRoLm1pbihNYXRoLm1heChiZXN0Um91bmQsIDApLCB0aGlzLmNoYWxsZW5nZUxhZGRlci5sZW5ndGggLSAxKTtcbiAgICByZXR1cm4gdGhpcy5jaGFsbGVuZ2VMYWRkZXJbbmV4dFJvdW5kSW5kZXhdO1xuICB9XG5cbiAgY2hhbGxlbmdlTWVudVJvdW5kTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5jaGFsbGVuZ2VNZW51Qm90KCkucm91bmR9LyR7dGhpcy5jaGFsbGVuZ2VMYWRkZXIubGVuZ3RofWA7XG4gIH1cblxuICBjaGFsbGVuZ2VNZW51TGl2ZXNMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTdHJpbmcodGhpcy5jaGFsbGVuZ2VNZW51UnVuKCk/LmxpdmVzUmVtYWluaW5nID8/IDMpO1xuICB9XG5cbiAgY2hhbGxlbmdlTWVudUNsZWFyZWRSb3VuZCgpOiBudW1iZXIge1xuICAgIGNvbnN0IGFjdGl2ZVJ1biA9IHRoaXMuY2hhbGxlbmdlTWVudVJ1bigpO1xuICAgIGlmIChhY3RpdmVSdW4pIHJldHVybiBNYXRoLm1heCgwLCBhY3RpdmVSdW4uY3VycmVudFJvdW5kIC0gMSk7XG4gICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlU3RhdHMoKS5iZXN0Um91bmRSZWFjaGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFsbGVuZ2VNZW51UnVuKCk6IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGN1cnJlbnRSdW4gPSB0aGlzLmNoYWxsZW5nZVJ1bigpO1xuICAgIGlmICh0aGlzLmlzUmVzdW1hYmxlQ2hhbGxlbmdlUnVuKGN1cnJlbnRSdW4pKSByZXR1cm4gY3VycmVudFJ1bjtcbiAgICByZXR1cm4gdGhpcy5yZXN1bWFibGVDaGFsbGVuZ2VSdW4oKTtcbiAgfVxuXG4gIGNoYWxsZW5nZUJvdE5hbWUoYm90OiBDaGVzc2ltYWxzQ2hhbGxlbmdlQm90KTogc3RyaW5nIHtcbiAgICBjb25zdCBwcm9maWxlID0gdGhpcy5jaGFsbGVuZ2VCb3RQcm9maWxlKGJvdCk7XG4gICAgcmV0dXJuIHByb2ZpbGUgPyB0aGlzLmJvdFByb2ZpbGVMYWJlbChwcm9maWxlKSA6IHRoaXMudCgnY2hlc3NpbWFsc0JvdE5hbWUnKTtcbiAgfVxuXG4gIGNoYWxsZW5nZUJvdEludHJvKGJvdDogQ2hlc3NpbWFsc0NoYWxsZW5nZUJvdCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudChib3QuaW50cm9LZXkpO1xuICB9XG5cbiAgY2hhbGxlbmdlQm90RGlmZmljdWx0eUxhYmVsKGJvdDogQ2hlc3NpbWFsc0NoYWxsZW5nZUJvdCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYm90RGlmZmljdWx0eUxhYmVsKGJvdC5kaWZmaWN1bHR5KTtcbiAgfVxuXG4gIGNoYWxsZW5nZUJvdFN0eWxlTGluZShib3Q6IENoZXNzaW1hbHNDaGFsbGVuZ2VCb3QpOiBzdHJpbmcge1xuICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLmNoYWxsZW5nZUJvdFByb2ZpbGUoYm90KTtcbiAgICByZXR1cm4gcHJvZmlsZSA/IHRoaXMuYm90UHJvZmlsZVRlbmRlbmN5KHByb2ZpbGUpIDogdGhpcy50KGJvdC5pbnRyb0tleSk7XG4gIH1cblxuICBjaGFsbGVuZ2VCb3RTdGF0dXNMYWJlbChib3Q6IENoZXNzaW1hbHNDaGFsbGVuZ2VCb3QpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNsZWFyZWRSb3VuZCA9IHRoaXMuY2hhbGxlbmdlTWVudUNsZWFyZWRSb3VuZCgpO1xuICAgIGNvbnN0IGN1cnJlbnRSb3VuZCA9IHRoaXMuY2hhbGxlbmdlTWVudUJvdCgpLnJvdW5kO1xuICAgIGlmIChjbGVhcmVkUm91bmQgPj0gYm90LnJvdW5kKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUml2YWxDbGVhcmVkJyk7XG4gICAgaWYgKGN1cnJlbnRSb3VuZCA9PT0gYm90LnJvdW5kKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUml2YWxDdXJyZW50Jyk7XG4gICAgaWYgKGJvdC5yb3VuZCA9PT0gdGhpcy5jaGFsbGVuZ2VMYWRkZXIubGVuZ3RoKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUml2YWxGaW5hbCcpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSaXZhbFBlbmRpbmcnKTtcbiAgfVxuXG4gIGNoYWxsZW5nZVJ1blN0YXR1c0xhYmVsKHJ1bjogQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1bik6IHN0cmluZyB7XG4gICAgaWYgKHJ1bi5zdGF0dXMgPT09ICdjb21wbGV0ZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlU3RhdHVzQ29tcGxldGVkJyk7XG4gICAgaWYgKHJ1bi5zdGF0dXMgPT09ICdmYWlsZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlU3RhdHVzRmFpbGVkJyk7XG4gICAgaWYgKHJ1bi5zdGF0dXMgPT09ICdhYmFuZG9uZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlU3RhdHVzQWJhbmRvbmVkJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVN0YXR1c0FjdGl2ZScpO1xuICB9XG5cbiAgY2hhbGxlbmdlUnVuTGluZShydW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4pOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSdW5MaW5lJylcbiAgICAgIC5yZXBsYWNlKCd7cm91bmR9JywgU3RyaW5nKHJ1bi5oaWdoZXN0Um91bmRSZWFjaGVkID8/IHRoaXMuY2hhbGxlbmdlUnVuUm91bmRJbmRleChydW4pKSlcbiAgICAgIC5yZXBsYWNlKCd7d2luc30nLCBTdHJpbmcodGhpcy5jaGFsbGVuZ2VSdW5Sb3VuZHNXb24ocnVuKSkpO1xuICB9XG5cbiAgaXNDaGFsbGVuZ2VBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlUGhhc2UoKSAhPT0gJ2lkbGUnICYmICEhdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgfVxuXG4gIHNob3VsZFNob3dDaGFsbGVuZ2VJbkdhbWVQYW5lbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMucHJvamVjdGlvbk1vZGUgJiYgdGhpcy5zY3JlZW4oKSA9PT0gJ2dhbWUnICYmIHRoaXMuY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ3BsYXlpbmcnICYmICEhdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgfVxuXG4gIHNob3dDaGFsbGVuZ2VJbnRybygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSB8fCB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgIT09ICdwbGF5aW5nJyB8fCAhdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKSkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmNoYWxsZW5nZUludHJvVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLmNoYWxsZW5nZUludHJvVGltZXIpO1xuICAgIHRoaXMuY2hhbGxlbmdlSW50cm9WaXNpYmxlLnNldCh0cnVlKTtcbiAgICB0aGlzLmNoYWxsZW5nZUludHJvVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmRpc21pc3NDaGFsbGVuZ2VJbnRybygpKTtcbiAgICB9LCAyNDAwKTtcbiAgfVxuXG4gIGRpc21pc3NDaGFsbGVuZ2VJbnRybygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jaGFsbGVuZ2VJbnRyb1RpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5jaGFsbGVuZ2VJbnRyb1RpbWVyKTtcbiAgICAgIHRoaXMuY2hhbGxlbmdlSW50cm9UaW1lciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdGhpcy5jaGFsbGVuZ2VJbnRyb1Zpc2libGUuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIGNoYWxsZW5nZUxpdmVBdmF0YXIoKTogc3RyaW5nIHtcbiAgICBjb25zdCBib3QgPSB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpO1xuICAgIHJldHVybiBib3QgPyB0aGlzLmJvdFByb2ZpbGVBdmF0YXIoYm90LnByb2ZpbGVJZCkgOiAn4pmfJztcbiAgfVxuXG4gIGNoYWxsZW5nZUxpdmVBdmF0YXJTcmMoKTogc3RyaW5nIHtcbiAgICBjb25zdCBib3QgPSB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpO1xuICAgIHJldHVybiBib3QgPyB0aGlzLmJvdFByb2ZpbGVBdmF0YXJTcmMoYm90LnByb2ZpbGVJZCkgOiAnJztcbiAgfVxuXG4gIGNoYWxsZW5nZUxpdmVSaXZhbE5hbWUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBib3QgPSB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpO1xuICAgIHJldHVybiBib3QgPyB0aGlzLmNoYWxsZW5nZUJvdE5hbWUoYm90KSA6IHRoaXMudCgnY2hlc3NpbWFsc0JvdE5hbWUnKTtcbiAgfVxuXG4gIGNoYWxsZW5nZUxpdmVSaXZhbExpbmUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBib3QgPSB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpO1xuICAgIGlmICghYm90KSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQm9keScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VMaXZlUml2YWxMaW5lJylcbiAgICAgIC5yZXBsYWNlKCd7c3R5bGV9JywgdGhpcy5jaGFsbGVuZ2VCb3RTdHlsZUxpbmUoYm90KSlcbiAgICAgIC5yZXBsYWNlKCd7ZGlmZmljdWx0eX0nLCB0aGlzLmNoYWxsZW5nZUJvdERpZmZpY3VsdHlMYWJlbChib3QpKTtcbiAgfVxuXG4gIGNoYWxsZW5nZUxpdmVTdHJlYWtMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgeCR7dGhpcy5jaGFsbGVuZ2VSdW4oKT8uY3VycmVudFN0cmVhayA/PyAwfWA7XG4gIH1cblxuICBjaGFsbGVuZ2VMaXZlQm9hcmRMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJvYXJkU2l6ZSA9IHRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KCk/LmJvYXJkU2l6ZSA/PyB0aGlzLmdhbWUoKS5ib2FyZFNpemU7XG4gICAgcmV0dXJuIGAke2JvYXJkU2l6ZX14JHtib2FyZFNpemV9YDtcbiAgfVxuXG4gIGNoYWxsZW5nZUxpdmVUaW1lckxhYmVsKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc2Vjb25kcyA9IHRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KCk/LnJvdW5kID09PSB0aGlzLmNoYWxsZW5nZUxhZGRlci5sZW5ndGhcbiAgICAgID8gQ0hFU1NJTUFMU19DSEFMTEVOR0VfRklOQUxfVFVSTl9TRUNPTkRTXG4gICAgICA6IENIRVNTSU1BTFNfQ0hBTExFTkdFX1RVUk5fU0VDT05EUztcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlVHVyblNlY29uZHMnKS5yZXBsYWNlKCd7c2Vjb25kc30nLCBTdHJpbmcoc2Vjb25kcykpO1xuICB9XG5cbiAgY2hhbGxlbmdlUm91bmRMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJ1biA9IHRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gICAgaWYgKCFydW4pIHJldHVybiAnLSc7XG4gICAgcmV0dXJuIGAke3RoaXMuY2hhbGxlbmdlUnVuUm91bmRJbmRleChydW4pfS8ke3RoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aH1gO1xuICB9XG5cbiAgY2hhbGxlbmdlTGl2ZXNMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJ1biA9IHRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gICAgaWYgKCFydW4pIHJldHVybiAnLSc7XG4gICAgcmV0dXJuICfimaUnLnJlcGVhdChNYXRoLm1heCgwLCBydW4ubGl2ZXNSZW1haW5pbmcpKSB8fCAnMCc7XG4gIH1cblxuICBjaGFsbGVuZ2VPdXRjb21lVGl0bGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBwaGFzZSA9IHRoaXMuY2hhbGxlbmdlUGhhc2UoKTtcbiAgICBpZiAocGhhc2UgPT09ICdjb21wbGV0ZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQ29tcGxldGVkVGl0bGUnKTtcbiAgICBpZiAocGhhc2UgPT09ICdmYWlsZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlRmFpbGVkVGl0bGUnKTtcbiAgICByZXR1cm4gdGhpcy5jaGFsbGVuZ2VMYXN0V29uKClcbiAgICAgID8gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRXb25UaXRsZScpXG4gICAgICA6IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kTG9zdFRpdGxlJyk7XG4gIH1cblxuICBjaGFsbGVuZ2VPdXRjb21lQm9keSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJ1biA9IHRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gICAgY29uc3Qgc3RhdHMgPSB0aGlzLmNoYWxsZW5nZUxhc3RSb3VuZFN0YXRzKCk7XG4gICAgY29uc3QgYm90ID0gdGhpcy5jaGFsbGVuZ2VMYXN0Qm90KCkgPz8gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKTtcbiAgICBjb25zdCBib3ROYW1lID0gYm90ID8gdGhpcy5jaGFsbGVuZ2VCb3ROYW1lKGJvdCkgOiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3ROYW1lJyk7XG4gICAgY29uc3QgYm9keUtleSA9XG4gICAgICB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgPT09ICdjb21wbGV0ZWQnXG4gICAgICAgID8gJ2NoZXNzaW1hbHNDaGFsbGVuZ2VDb21wbGV0ZWRCb2R5J1xuICAgICAgICA6IHRoaXMuY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ2ZhaWxlZCdcbiAgICAgICAgICA/ICdjaGVzc2ltYWxzQ2hhbGxlbmdlRmFpbGVkQm9keSdcbiAgICAgICAgICA6IHRoaXMuY2hhbGxlbmdlTGFzdFdvbigpXG4gICAgICAgICAgICA/ICdjaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRXb25Cb2R5J1xuICAgICAgICAgICAgOiAnY2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kTG9zdEJvZHknO1xuICAgIHJldHVybiB0aGlzLnQoYm9keUtleSlcbiAgICAgIC5yZXBsYWNlKCd7Ym90fScsIGJvdE5hbWUpXG4gICAgICAucmVwbGFjZSgne2xpdmVzfScsIFN0cmluZyhydW4/LmxpdmVzUmVtYWluaW5nID8/IDApKVxuICAgICAgLnJlcGxhY2UoJ3t3aW5zfScsIFN0cmluZyhydW4/LndpbnMgPz8gMCkpXG4gICAgICAucmVwbGFjZSgne3Bvd2Vyc30nLCBTdHJpbmcodGhpcy50b3RhbENoYWxsZW5nZVBvd2VycyhzdGF0cykpKTtcbiAgfVxuXG4gIGNoYWxsZW5nZVN1bW1hcnlBdmF0YXIoKTogc3RyaW5nIHtcbiAgICBjb25zdCBib3QgPSB0aGlzLmNoYWxsZW5nZUxhc3RCb3QoKSA/PyB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpO1xuICAgIHJldHVybiBib3QgPyB0aGlzLmJvdFByb2ZpbGVBdmF0YXIoYm90LnByb2ZpbGVJZCkgOiAn4pmfJztcbiAgfVxuXG4gIGNoYWxsZW5nZVN1bW1hcnlBdmF0YXJTcmMoKTogc3RyaW5nIHtcbiAgICBjb25zdCBib3QgPSB0aGlzLmNoYWxsZW5nZUxhc3RCb3QoKSA/PyB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpO1xuICAgIHJldHVybiBib3QgPyB0aGlzLmJvdFByb2ZpbGVBdmF0YXJTcmMoYm90LnByb2ZpbGVJZCkgOiAnJztcbiAgfVxuXG4gIGNoYWxsZW5nZVJvdW5kU3RhZ2VMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJvdCA9IHRoaXMuY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ3BsYXlpbmcnXG4gICAgICA/IHRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KClcbiAgICAgIDogdGhpcy5jaGFsbGVuZ2VMYXN0Qm90KCkgPz8gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKTtcbiAgICBjb25zdCBydW4gPSB0aGlzLmNoYWxsZW5nZVJ1bigpO1xuICAgIGNvbnN0IHJvdW5kID0gYm90Py5yb3VuZCA/PyAocnVuID8gdGhpcy5jaGFsbGVuZ2VSdW5Sb3VuZEluZGV4KHJ1bikgOiAxKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRTdGFnZScpXG4gICAgICAucmVwbGFjZSgne3JvdW5kfScsIFN0cmluZyhyb3VuZCkpXG4gICAgICAucmVwbGFjZSgne3RvdGFsfScsIFN0cmluZyh0aGlzLmNoYWxsZW5nZUxhZGRlci5sZW5ndGgpKTtcbiAgfVxuXG4gIGNoYWxsZW5nZVJpdmFsVm9pY2VMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJvdCA9IHRoaXMuY2hhbGxlbmdlTGFzdEJvdCgpID8/IHRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KCk7XG4gICAgY29uc3QgYm90TmFtZSA9IGJvdCA/IHRoaXMuY2hhbGxlbmdlQm90TmFtZShib3QpIDogdGhpcy50KCdjaGVzc2ltYWxzQm90TmFtZScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSaXZhbFZvaWNlJykucmVwbGFjZSgne2JvdH0nLCBib3ROYW1lKTtcbiAgfVxuXG4gIGNoYWxsZW5nZVJpdmFsVm9pY2VUaXRsZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHBoYXNlID0gdGhpcy5jaGFsbGVuZ2VQaGFzZSgpO1xuICAgIGlmIChwaGFzZSA9PT0gJ2NvbXBsZXRlZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VWb2ljZUNvbXBsZXRlZFRpdGxlJyk7XG4gICAgaWYgKHBoYXNlID09PSAnZmFpbGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVZvaWNlRmFpbGVkVGl0bGUnKTtcbiAgICBjb25zdCBib3QgPSB0aGlzLmNoYWxsZW5nZUxhc3RCb3QoKSA/PyB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuY2hhbGxlbmdlTGFzdFdvbigpID8gJ1dvbicgOiAnTG9zdCc7XG4gICAgY29uc3QgYm90VGl0bGUgPSB0aGlzLmNoYWxsZW5nZVZvaWNlVGV4dChib3QsIHJlc3VsdCwgJ1RpdGxlJyk7XG4gICAgaWYgKGJvdFRpdGxlKSByZXR1cm4gYm90VGl0bGU7XG4gICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlTGFzdFdvbigpXG4gICAgICA/IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVZvaWNlV29uVGl0bGUnKVxuICAgICAgOiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VWb2ljZUxvc3RUaXRsZScpO1xuICB9XG5cbiAgY2hhbGxlbmdlUml2YWxWb2ljZUJvZHkoKTogc3RyaW5nIHtcbiAgICBjb25zdCBib3QgPSB0aGlzLmNoYWxsZW5nZUxhc3RCb3QoKSA/PyB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpO1xuICAgIGNvbnN0IGJvdE5hbWUgPSBib3QgPyB0aGlzLmNoYWxsZW5nZUJvdE5hbWUoYm90KSA6IHRoaXMudCgnY2hlc3NpbWFsc0JvdE5hbWUnKTtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmNoYWxsZW5nZUxhc3RXb24oKSA/ICdXb24nIDogJ0xvc3QnO1xuICAgIGNvbnN0IGJvdEJvZHkgPSB0aGlzLmNoYWxsZW5nZVZvaWNlVGV4dChib3QsIHJlc3VsdCwgJ0JvZHknKTtcbiAgICBpZiAoYm90Qm9keSkgcmV0dXJuIGJvdEJvZHkucmVwbGFjZSgne2JvdH0nLCBib3ROYW1lKTtcbiAgICBjb25zdCBrZXkgPVxuICAgICAgdGhpcy5jaGFsbGVuZ2VQaGFzZSgpID09PSAnY29tcGxldGVkJ1xuICAgICAgICA/ICdjaGVzc2ltYWxzQ2hhbGxlbmdlVm9pY2VDb21wbGV0ZWRCb2R5J1xuICAgICAgICA6IHRoaXMuY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ2ZhaWxlZCdcbiAgICAgICAgICA/ICdjaGVzc2ltYWxzQ2hhbGxlbmdlVm9pY2VGYWlsZWRCb2R5J1xuICAgICAgICAgIDogdGhpcy5jaGFsbGVuZ2VMYXN0V29uKClcbiAgICAgICAgICAgID8gJ2NoZXNzaW1hbHNDaGFsbGVuZ2VWb2ljZVdvbkJvZHknXG4gICAgICAgICAgICA6ICdjaGVzc2ltYWxzQ2hhbGxlbmdlVm9pY2VMb3N0Qm9keSc7XG4gICAgcmV0dXJuIHRoaXMudChrZXkpLnJlcGxhY2UoJ3tib3R9JywgYm90TmFtZSk7XG4gIH1cblxuICBwcml2YXRlIGNoYWxsZW5nZVZvaWNlVGV4dChcbiAgICBib3Q6IENoZXNzaW1hbHNDaGFsbGVuZ2VCb3QgfCB1bmRlZmluZWQsXG4gICAgcmVzdWx0OiAnV29uJyB8ICdMb3N0JyxcbiAgICBwYXJ0OiAnVGl0bGUnIHwgJ0JvZHknLFxuICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICghYm90KSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGtleSA9IGBjaGVzc2ltYWxzQ2hhbGxlbmdlVm9pY2Uke3Jlc3VsdH0ke3RoaXMuY2FwaXRhbGl6ZShib3QuaWQpfSR7cGFydH1gO1xuICAgIGNvbnN0IHRleHQgPSB0aGlzLnQoa2V5KTtcbiAgICByZXR1cm4gdGV4dCA9PT0ga2V5ID8gdW5kZWZpbmVkIDogdGV4dDtcbiAgfVxuXG4gIGNoYWxsZW5nZU5leHRSaXZhbExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlTGFzdFdvbigpXG4gICAgICA/IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZU5leHRSaXZhbExhYmVsJylcbiAgICAgIDogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUmV0cnlSaXZhbExhYmVsJyk7XG4gIH1cblxuICBjaGFsbGVuZ2VDb250aW51ZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmNoYWxsZW5nZUxhc3RXb24oKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJldHJ5Uml2YWwnKTtcbiAgICBjb25zdCBydW4gPSB0aGlzLmNoYWxsZW5nZVJ1bigpO1xuICAgIGlmIChydW4gJiYgdGhpcy5jaGFsbGVuZ2VSdW5Sb3VuZEluZGV4KHJ1bikgPT09IHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aCkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZUZpbmFsUm91bmRDdGEnKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlTmV4dFJpdmFsJyk7XG4gIH1cblxuICBjaGFsbGVuZ2VOZXh0Uml2YWxIaW50KCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmNoYWxsZW5nZUxhc3RXb24oKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJldHJ5SGludCcpO1xuICAgIGNvbnN0IHJ1biA9IHRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gICAgaWYgKHJ1biAmJiB0aGlzLmNoYWxsZW5nZVJ1blJvdW5kSW5kZXgocnVuKSA9PT0gdGhpcy5jaGFsbGVuZ2VMYWRkZXIubGVuZ3RoKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlRmluYWxSb3VuZEhpbnQnKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlTmV4dFJpdmFsSGludCcpO1xuICB9XG5cbiAgY2hhbGxlbmdlV2luUmF0ZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubW9kZVdpblJhdGVMYWJlbCgnY2hhbGxlbmdlJyk7XG4gIH1cblxuICBtb2RlV2luUmF0ZUxhYmVsKG1vZGU6IENoZXNzaW1hbHNTdGF0c01vZGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0YXRzID0gdGhpcy5jaGFsbGVuZ2VTdGF0cygpO1xuICAgIGNvbnN0IG1vZGVTdGF0cyA9IHN0YXRzLm1vZGVTdGF0c1ttb2RlXTtcbiAgICBjb25zdCBwbGF5ZWQgPSBtb2RlU3RhdHMucGxheWVkO1xuICAgIGlmICghcGxheWVkKSByZXR1cm4gJy0nO1xuICAgIHJldHVybiBgJHtNYXRoLnJvdW5kKChtb2RlU3RhdHMud2lucyAvIHBsYXllZCkgKiAxMDApfSVgO1xuICB9XG5cbiAgbW9kZVN0YXRzTGluZShtb2RlOiBDaGVzc2ltYWxzU3RhdHNNb2RlKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdGF0cyA9IHRoaXMuY2hhbGxlbmdlU3RhdHMoKS5tb2RlU3RhdHNbbW9kZV07XG4gICAgaWYgKCFzdGF0cy5wbGF5ZWQpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNNb2RlU3RhdHNFbXB0eScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNNb2RlU3RhdHNMaW5lJylcbiAgICAgIC5yZXBsYWNlKCd7cGxheWVkfScsIFN0cmluZyhzdGF0cy5wbGF5ZWQpKVxuICAgICAgLnJlcGxhY2UoJ3t3aW5zfScsIFN0cmluZyhzdGF0cy53aW5zKSlcbiAgICAgIC5yZXBsYWNlKCd7bG9zc2VzfScsIFN0cmluZyhzdGF0cy5sb3NzZXMpKTtcbiAgfVxuXG4gIHByb2dyZXNzUG93ZXJTdGF0cygpOiBDaGVzc2ltYWxzUHJvZ3Jlc3NNZXRyaWNWaWV3W10ge1xuICAgIGNvbnN0IHN0YXRzID0gdGhpcy5jaGFsbGVuZ2VTdGF0cygpO1xuICAgIHJldHVybiBbXG4gICAgICB7IGxhYmVsOiB0aGlzLmFuaW1hbExhYmVsKCdlYWdsZScpLCB2YWx1ZTogc3RhdHMucG93ZXJzVXNlZC5lYWdsZSB9LFxuICAgICAgeyBsYWJlbDogdGhpcy5hbmltYWxMYWJlbCgnYnVsbCcpLCB2YWx1ZTogc3RhdHMucG93ZXJzVXNlZC5idWxsIH0sXG4gICAgICB7IGxhYmVsOiB0aGlzLmFuaW1hbExhYmVsKCdrYW5nYXJvbycpLCB2YWx1ZTogc3RhdHMucG93ZXJzVXNlZC5rYW5nYXJvbyB9LFxuICAgICAgeyBsYWJlbDogdGhpcy5hbmltYWxMYWJlbCgnbGlvbicpLCB2YWx1ZTogc3RhdHMucG93ZXJzVXNlZC5saW9uIH0sXG4gICAgICB7IGxhYmVsOiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VQb3dlckNhcHR1cmVzJyksIHZhbHVlOiBzdGF0cy5wb3dlckNhcHR1cmVzIH0sXG4gICAgICB7IGxhYmVsOiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VQcm9tb3Rpb25zJyksIHZhbHVlOiBzdGF0cy5wcm9tb3Rpb25zIH0sXG4gICAgXTtcbiAgfVxuXG4gIHBhdGhIaWdobGlnaHRzKCk6IENoZXNzaW1hbHNQYXRoSGlnaGxpZ2h0Vmlld1tdIHtcbiAgICBjb25zdCBzdGF0cyA9IHRoaXMuY2hhbGxlbmdlU3RhdHMoKTtcbiAgICBjb25zdCBmYXZvcml0ZVBvd2VyID0gdGhpcy5mYXZvcml0ZVBvd2VyTGFiZWwoKTtcbiAgICBjb25zdCBuZXh0QWNoaWV2ZW1lbnQgPSB0aGlzLmNoYWxsZW5nZUFjaGlldmVtZW50cygpLmZpbmQoKGFjaGlldmVtZW50KSA9PiAhYWNoaWV2ZW1lbnQudW5sb2NrZWQpO1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNQYXRoV2luc1RpdGxlJyksXG4gICAgICAgIGJvZHk6IHRoaXMudCgnY2hlc3NpbWFsc1BhdGhXaW5zQm9keScpLnJlcGxhY2UoJ3t3aW5zfScsIFN0cmluZyhzdGF0cy50b3RhbFdpbnMpKSxcbiAgICAgICAgdmFsdWU6IFN0cmluZyhzdGF0cy50b3RhbFdpbnMpLFxuICAgICAgICBpbWFnZVNyYzogJ2Fzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3BhdGgvdHJvcGh5LnBuZycsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzUGF0aFN0cmVha1RpdGxlJyksXG4gICAgICAgIGJvZHk6IHRoaXMudCgnY2hlc3NpbWFsc1BhdGhTdHJlYWtCb2R5JykucmVwbGFjZSgne3N0cmVha30nLCBTdHJpbmcoc3RhdHMuYmVzdFdpblN0cmVhaykpLFxuICAgICAgICB2YWx1ZTogc3RhdHMuYmVzdFdpblN0cmVhayA/IFN0cmluZyhzdGF0cy5iZXN0V2luU3RyZWFrKSA6IHRoaXMudCgnY2hlc3NpbWFsc1BhdGhQcmFjdGljZVZhbHVlJyksXG4gICAgICAgIGltYWdlU3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvcGF0aC9zdHJlYWsucG5nJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNQYXRoRmF2b3JpdGVQb3dlclRpdGxlJyksXG4gICAgICAgIGJvZHk6IGZhdm9yaXRlUG93ZXJcbiAgICAgICAgICA/IHRoaXMudCgnY2hlc3NpbWFsc1BhdGhGYXZvcml0ZVBvd2VyQm9keScpLnJlcGxhY2UoJ3twb3dlcn0nLCBmYXZvcml0ZVBvd2VyKVxuICAgICAgICAgIDogdGhpcy50KCdjaGVzc2ltYWxzUGF0aEZhdm9yaXRlUG93ZXJFbXB0eScpLFxuICAgICAgICB2YWx1ZTogZmF2b3JpdGVQb3dlciB8fCB0aGlzLnQoJ2NoZXNzaW1hbHNQYXRoUHJhY3RpY2VWYWx1ZScpLFxuICAgICAgICBpbWFnZVNyYzogJ2Fzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3BhdGgvZmF2b3JpdGUtcG93ZXIucG5nJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNQYXRoTmV4dFRyb3BoeVRpdGxlJyksXG4gICAgICAgIGJvZHk6IG5leHRBY2hpZXZlbWVudD8uYm9keSB8fCB0aGlzLnQoJ2NoZXNzaW1hbHNQYXRoTmV4dFRyb3BoeURvbmUnKSxcbiAgICAgICAgdmFsdWU6IG5leHRBY2hpZXZlbWVudD8udGl0bGUgfHwgdGhpcy50KCdjaGVzc2ltYWxzUGF0aERvbmVWYWx1ZScpLFxuICAgICAgICBpbWFnZVNyYzogJ2Fzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3BhdGgvcHJvZ3Jlc3MtbWFwLnBuZycsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBmYXZvcml0ZVBvd2VyTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBwb3dlcnMgPSB0aGlzLmNoYWxsZW5nZVN0YXRzKCkucG93ZXJzVXNlZDtcbiAgICBjb25zdCBlbnRyaWVzOiBBcnJheTx7IGFuaW1hbDogQ2hlc3NpbWFsc0FuaW1hbFR5cGU7IHZhbHVlOiBudW1iZXIgfT4gPSBbXG4gICAgICB7IGFuaW1hbDogJ2VhZ2xlJywgdmFsdWU6IHBvd2Vycy5lYWdsZSB9LFxuICAgICAgeyBhbmltYWw6ICdidWxsJywgdmFsdWU6IHBvd2Vycy5idWxsIH0sXG4gICAgICB7IGFuaW1hbDogJ2thbmdhcm9vJywgdmFsdWU6IHBvd2Vycy5rYW5nYXJvbyB9LFxuICAgICAgeyBhbmltYWw6ICdsaW9uJywgdmFsdWU6IHBvd2Vycy5saW9uIH0sXG4gICAgXTtcbiAgICBjb25zdCBmYXZvcml0ZSA9IGVudHJpZXMucmVkdWNlKChiZXN0LCBlbnRyeSkgPT4gKGVudHJ5LnZhbHVlID4gYmVzdC52YWx1ZSA/IGVudHJ5IDogYmVzdCksIGVudHJpZXNbMF0pO1xuICAgIHJldHVybiBmYXZvcml0ZS52YWx1ZSA+IDAgPyB0aGlzLmFuaW1hbExhYmVsKGZhdm9yaXRlLmFuaW1hbCkgOiAnJztcbiAgfVxuXG4gIHByb2dyZXNzUmluZ3MoKTogQ2hlc3NpbWFsc1Byb2dyZXNzUmluZ1ZpZXdbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMucHJvZ3Jlc3NSaW5nKCdjaGFsbGVuZ2UnLCB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VUaXRsZScpKSxcbiAgICAgIHRoaXMucHJvZ3Jlc3NSaW5nKCdib3QnLCB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RNb2RlJykpLFxuICAgICAgdGhpcy5wcm9ncmVzc1JpbmcoJ29ubGluZScsIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZVBsYXllcicpKSxcbiAgICBdO1xuICB9XG5cbiAgcHJvZ3Jlc3NNZXRyaWNQZXJjZW50KHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IG51bWVyaWNWYWx1ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgPyB2YWx1ZSA6IE51bWJlcih2YWx1ZSk7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUobnVtZXJpY1ZhbHVlKSB8fCBudW1lcmljVmFsdWUgPD0gMCkgcmV0dXJuICcwJSc7XG4gICAgcmV0dXJuIGAke01hdGgubWluKDEwMCwgTWF0aC5tYXgoOCwgbnVtZXJpY1ZhbHVlICogMTIpKX0lYDtcbiAgfVxuXG4gIHByaXZhdGUgcHJvZ3Jlc3NSaW5nKG1vZGU6IENoZXNzaW1hbHNTdGF0c01vZGUsIGxhYmVsOiBzdHJpbmcpOiBDaGVzc2ltYWxzUHJvZ3Jlc3NSaW5nVmlldyB7XG4gICAgY29uc3Qgc3RhdHMgPSB0aGlzLmNoYWxsZW5nZVN0YXRzKCkubW9kZVN0YXRzW21vZGVdO1xuICAgIGNvbnN0IHdpblJhdGUgPSBzdGF0cy5wbGF5ZWQgPyBNYXRoLnJvdW5kKChzdGF0cy53aW5zIC8gc3RhdHMucGxheWVkKSAqIDEwMCkgOiAwO1xuICAgIHJldHVybiB7XG4gICAgICBsYWJlbCxcbiAgICAgIHZhbHVlOiBzdGF0cy5wbGF5ZWQgPyBgJHt3aW5SYXRlfSVgIDogJy0nLFxuICAgICAgZGV0YWlsOiB0aGlzLm1vZGVTdGF0c0xpbmUobW9kZSksXG4gICAgICBwcm9ncmVzczogYCR7d2luUmF0ZX0lYCxcbiAgICB9O1xuICB9XG5cbiAgY2hhbGxlbmdlQWNoaWV2ZW1lbnRzKCk6IENoZXNzaW1hbHNBY2hpZXZlbWVudFZpZXdbXSB7XG4gICAgY29uc3Qgc3RhdHMgPSB0aGlzLmNoYWxsZW5nZVN0YXRzKCk7XG4gICAgY29uc3QgYm90U3RhdHMgPSBzdGF0cy5tb2RlU3RhdHMuYm90O1xuICAgIGNvbnN0IG9ubGluZVN0YXRzID0gc3RhdHMubW9kZVN0YXRzLm9ubGluZTtcbiAgICBjb25zdCB0b3RhbFBvd2VycyA9IHN0YXRzLnBvd2Vyc1VzZWQuZWFnbGUgKyBzdGF0cy5wb3dlcnNVc2VkLmJ1bGwgKyBzdGF0cy5wb3dlcnNVc2VkLmthbmdhcm9vICsgc3RhdHMucG93ZXJzVXNlZC5saW9uO1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudEZpcnN0V2luVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRGaXJzdFdpbkJvZHknKSxcbiAgICAgICAgaWNvbjogJzEnLFxuICAgICAgICB1bmxvY2tlZDogc3RhdHMudG90YWxXaW5zID4gMCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudFN0cmVha1RpdGxlJyksXG4gICAgICAgIGJvZHk6IHRoaXMudCgnY2hlc3NpbWFsc0FjaGlldmVtZW50U3RyZWFrQm9keScpLFxuICAgICAgICBpY29uOiAnMycsXG4gICAgICAgIHVubG9ja2VkOiBzdGF0cy5iZXN0V2luU3RyZWFrID49IDMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRQb3dlclRpdGxlJyksXG4gICAgICAgIGJvZHk6IHRoaXMudCgnY2hlc3NpbWFsc0FjaGlldmVtZW50UG93ZXJCb2R5JyksXG4gICAgICAgIGljb246ICdQJyxcbiAgICAgICAgdW5sb2NrZWQ6IHRvdGFsUG93ZXJzID49IDEwIHx8IHN0YXRzLnBvd2VyQ2FwdHVyZXMgPj0gNSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudENoYW1waW9uVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRDaGFtcGlvbkJvZHknKSxcbiAgICAgICAgaWNvbjogJzgnLFxuICAgICAgICB1bmxvY2tlZDogc3RhdHMuY2hhbGxlbmdlc0NvbXBsZXRlZCA+IDAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRCb3RXaW5UaXRsZScpLFxuICAgICAgICBib2R5OiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudEJvdFdpbkJvZHknKSxcbiAgICAgICAgaWNvbjogJ0InLFxuICAgICAgICB1bmxvY2tlZDogYm90U3RhdHMud2lucyA+IDAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRCb3RGaXZlVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRCb3RGaXZlQm9keScpLFxuICAgICAgICBpY29uOiAnNScsXG4gICAgICAgIHVubG9ja2VkOiBib3RTdGF0cy53aW5zID49IDUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRPbmxpbmVXaW5UaXRsZScpLFxuICAgICAgICBib2R5OiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudE9ubGluZVdpbkJvZHknKSxcbiAgICAgICAgaWNvbjogJ08nLFxuICAgICAgICB1bmxvY2tlZDogb25saW5lU3RhdHMud2lucyA+IDAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRPbmxpbmVGaXZlVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRPbmxpbmVGaXZlQm9keScpLFxuICAgICAgICBpY29uOiAnNScsXG4gICAgICAgIHVubG9ja2VkOiBvbmxpbmVTdGF0cy5wbGF5ZWQgPj0gNSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIGNoYWxsZW5nZUZlYXR1cmVkQWNoaWV2ZW1lbnRzKCk6IENoZXNzaW1hbHNBY2hpZXZlbWVudFZpZXdbXSB7XG4gICAgY29uc3QgYWNoaWV2ZW1lbnRzID0gdGhpcy5jaGFsbGVuZ2VBY2hpZXZlbWVudHMoKTtcbiAgICByZXR1cm4gW1xuICAgICAgLi4uYWNoaWV2ZW1lbnRzLmZpbHRlcigoYWNoaWV2ZW1lbnQpID0+IGFjaGlldmVtZW50LnVubG9ja2VkKSxcbiAgICAgIC4uLmFjaGlldmVtZW50cy5maWx0ZXIoKGFjaGlldmVtZW50KSA9PiAhYWNoaWV2ZW1lbnQudW5sb2NrZWQpLFxuICAgIF0uc2xpY2UoMCwgNCk7XG4gIH1cblxuICBjaGFsbGVuZ2VUZW5zaW9uTW9tZW50KCk6IENoZXNzaW1hbHNDaGFsbGVuZ2VUZW5zaW9uVmlldyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgcGhhc2UgPSB0aGlzLmNoYWxsZW5nZVBoYXNlKCk7XG4gICAgaWYgKHBoYXNlICE9PSAncGxheWluZycgJiYgcGhhc2UgIT09ICdiZXR3ZWVuJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCBydW4gPSB0aGlzLmNoYWxsZW5nZVJ1bigpO1xuICAgIGlmICghcnVuKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgbmV4dEJvdCA9IHRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KCk7XG4gICAgY29uc3QgbGFzdEJvdCA9IHBoYXNlID09PSAncGxheWluZycgPyBuZXh0Qm90IDogdGhpcy5jaGFsbGVuZ2VMYXN0Qm90KCkgPz8gbmV4dEJvdDtcbiAgICBjb25zdCBib3ROYW1lID0gbGFzdEJvdCA/IHRoaXMuY2hhbGxlbmdlQm90TmFtZShsYXN0Qm90KSA6IHRoaXMudCgnY2hlc3NpbWFsc0JvdE5hbWUnKTtcblxuICAgIGlmIChydW4ubGl2ZXNSZW1haW5pbmcgPD0gMSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZUxhc3RMaWZlVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlTGFzdExpZmVCb2R5JykucmVwbGFjZSgne2JvdH0nLCBib3ROYW1lKSxcbiAgICAgICAgaWNvbjogJ+KZpScsXG4gICAgICAgIGNyaXRpY2FsOiB0cnVlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jaGFsbGVuZ2VMYXN0V29uKCkgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUmVtYXRjaFRpdGxlJyksXG4gICAgICAgIGJvZHk6IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJlbWF0Y2hCb2R5JykucmVwbGFjZSgne2JvdH0nLCBib3ROYW1lKSxcbiAgICAgICAgaWNvbjogJ+KGuycsXG4gICAgICAgIGNyaXRpY2FsOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3Qgcm91bmRJbmRleCA9IHRoaXMuY2hhbGxlbmdlUnVuUm91bmRJbmRleChydW4pO1xuICAgIGlmIChyb3VuZEluZGV4ID49IHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZUZpbmFsUml2YWxUaXRsZScpLFxuICAgICAgICBib2R5OiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VGaW5hbFJpdmFsQm9keScpLFxuICAgICAgICBpY29uOiAnOCcsXG4gICAgICAgIGNyaXRpY2FsOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHJvdW5kSW5kZXggPj0gdGhpcy5jaGFsbGVuZ2VMYWRkZXIubGVuZ3RoIC0gMSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZUZpbmFsWm9uZVRpdGxlJyksXG4gICAgICAgIGJvZHk6IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZUZpbmFsWm9uZUJvZHknKSxcbiAgICAgICAgaWNvbjogJzcnLFxuICAgICAgICBjcml0aWNhbDogZmFsc2UsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChydW4uY3VycmVudFN0cmVhayA+PSAyKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlU3RyZWFrVGl0bGUnKS5yZXBsYWNlKCd7c3RyZWFrfScsIFN0cmluZyhydW4uY3VycmVudFN0cmVhaykpLFxuICAgICAgICBib2R5OiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VTdHJlYWtCb2R5JyksXG4gICAgICAgIGljb246IFN0cmluZyhydW4uY3VycmVudFN0cmVhayksXG4gICAgICAgIGNyaXRpY2FsOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNoYWxsZW5nZUhhc05ld1JlY29yZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jaGFsbGVuZ2VOZXdSZWNvcmQoKTtcbiAgfVxuXG4gIHRvdGFsQ2hhbGxlbmdlUG93ZXJzKHN0YXRzPzogQ2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kU3RhdHMpOiBudW1iZXIge1xuICAgIGlmICghc3RhdHMpIHJldHVybiAwO1xuICAgIHJldHVybiBzdGF0cy5wb3dlcnNVc2VkLmVhZ2xlICsgc3RhdHMucG93ZXJzVXNlZC5idWxsICsgc3RhdHMucG93ZXJzVXNlZC5rYW5nYXJvbyArIHN0YXRzLnBvd2Vyc1VzZWQubGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgY2hhbGxlbmdlUnVuUm91bmRJbmRleChydW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4pOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLm1pbih0aGlzLmNoYWxsZW5nZUxhZGRlci5sZW5ndGgsIE1hdGgubWF4KDEsIHJ1bi5yb3VuZEluZGV4ID8/IHJ1bi5jdXJyZW50Um91bmQgPz8gMSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFsbGVuZ2VSdW5Sb3VuZHNXb24ocnVuOiBDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5tYXgoMCwgcnVuLnJvdW5kc1dvbiA/PyBydW4ud2lucyA/PyAwKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlR2FtZVNjb3JlKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIHBsYXllclByZWZpeD86IHN0cmluZyk6IENoZXNzaW1hbHNHYW1lU2NvcmVWaWV3IHtcbiAgICBsZXQgc2NvcmUgPSAwO1xuICAgIGxldCBjb21ibyA9IDA7XG4gICAgbGV0IGJlc3RDb21ibyA9IDA7XG4gICAgbGV0IGJlc3RNb3ZlOiBDaGVzc2ltYWxzTW92ZVNjb3JlVmlldyB8IHVuZGVmaW5lZDtcblxuICAgIGZvciAoY29uc3QgZW50cnkgb2YgZ2FtZS5tb3ZlSGlzdG9yeSA/PyBbXSkge1xuICAgICAgY29uc3QgbW92ZSA9IGVudHJ5Lm1vdmU7XG4gICAgICBpZiAoIW1vdmUpIGNvbnRpbnVlO1xuICAgICAgaWYgKHBsYXllclByZWZpeCAmJiAhbW92ZS5waWVjZUlkLnN0YXJ0c1dpdGgocGxheWVyUHJlZml4KSkgY29udGludWU7XG5cbiAgICAgIGNvbnN0IG1vdmVDb2xvciA9IHRoaXMuY29sb3JGcm9tUGllY2VJZChtb3ZlLnBpZWNlSWQpO1xuICAgICAgY29uc3QgaXNQcm9tb3Rpb24gPSBlbnRyeS5zdGF0dXMgPT09ICdmaW5pc2hlZCcgJiYgZW50cnkud2lubmVyUmVhc29uID09PSAncHJvbW90aW9uJyAmJiBlbnRyeS53aW5uZXIgPT09IG1vdmVDb2xvcjtcbiAgICAgIGNvbnN0IG1vdmVTY29yZSA9IHRoaXMuc2NvcmVDaGVzc2ltYWxzTW92ZShtb3ZlLCBpc1Byb21vdGlvbiwgY29tYm8pO1xuICAgICAgaWYgKG1vdmUuY2FwdHVyZXNQaWVjZUlkKSB7XG4gICAgICAgIGNvbWJvICs9IDE7XG4gICAgICAgIGJlc3RDb21ibyA9IE1hdGgubWF4KGJlc3RDb21ibywgY29tYm8pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29tYm8gPSAwO1xuICAgICAgfVxuXG4gICAgICBzY29yZSArPSBtb3ZlU2NvcmUuc2NvcmU7XG4gICAgICBpZiAoIWJlc3RNb3ZlIHx8IG1vdmVTY29yZS5zY29yZSA+IGJlc3RNb3ZlLnNjb3JlKSBiZXN0TW92ZSA9IG1vdmVTY29yZTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBiZXN0Q29tYm8sIGJlc3RNb3ZlLCBzY29yZSB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzY29yZUNoZXNzaW1hbHNNb3ZlKG1vdmU6IENoZXNzaW1hbHNNb3ZlLCBwcm9tb3Rpb246IGJvb2xlYW4sIGN1cnJlbnRDb21ibzogbnVtYmVyKTogQ2hlc3NpbWFsc01vdmVTY29yZVZpZXcge1xuICAgIGNvbnN0IGNhcHR1cmUgPSAhIW1vdmUuY2FwdHVyZXNQaWVjZUlkO1xuICAgIGNvbnN0IGNvbWJvID0gY2FwdHVyZSA/IGN1cnJlbnRDb21ibyArIDEgOiAwO1xuICAgIGNvbnN0IHNjb3JlID0gMVxuICAgICAgKyAoY2FwdHVyZSA/IChtb3ZlLmFuaW1hbCA/IDUgOiAzKSA6IDApXG4gICAgICArIChtb3ZlLmFuaW1hbCAmJiAhY2FwdHVyZSA/IDEgOiAwKVxuICAgICAgKyAocHJvbW90aW9uID8gOCA6IDApXG4gICAgICArIChjb21ibyA+IDEgPyBjb21ibyAtIDEgOiAwKTtcbiAgICBjb25zdCBsYWJlbEtleSA9IHByb21vdGlvblxuICAgICAgPyAnY2hlc3NpbWFsc1Njb3JlUHJvbW90aW9uJ1xuICAgICAgOiBjYXB0dXJlICYmIG1vdmUuYW5pbWFsXG4gICAgICAgID8gJ2NoZXNzaW1hbHNTY29yZVBvd2VyQ2FwdHVyZSdcbiAgICAgICAgOiBjYXB0dXJlXG4gICAgICAgICAgPyAnY2hlc3NpbWFsc1Njb3JlQ2FwdHVyZSdcbiAgICAgICAgICA6IG1vdmUuYW5pbWFsXG4gICAgICAgICAgICA/ICdjaGVzc2ltYWxzU2NvcmVQb3dlck1vdmUnXG4gICAgICAgICAgICA6ICdjaGVzc2ltYWxzU2NvcmVNb3ZlJztcbiAgICByZXR1cm4ge1xuICAgICAgY29tYm8sXG4gICAgICBsYWJlbDogdGhpcy50KGxhYmVsS2V5KSxcbiAgICAgIHNjb3JlLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNvbG9yRnJvbVBpZWNlSWQocGllY2VJZDogc3RyaW5nKTogQ2hlc3NpbWFsc1BsYXllckNvbG9yIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAocGllY2VJZC5zdGFydHNXaXRoKCdXJykgfHwgcGllY2VJZC5zdGFydHNXaXRoKCdUVycpKSByZXR1cm4gJ3doaXRlJztcbiAgICBpZiAocGllY2VJZC5zdGFydHNXaXRoKCdCJykgfHwgcGllY2VJZC5zdGFydHNXaXRoKCdUQicpKSByZXR1cm4gJ2JsYWNrJztcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDaGFsbGVuZ2VSb3VuZFN0YXRzKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiBDaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRTdGF0cyB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlUGxheWVyUm91bmRTdGF0cyhnYW1lLCAnVycpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVQbGF5ZXJSb3VuZFN0YXRzKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIHBsYXllclByZWZpeDogc3RyaW5nKTogQ2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kU3RhdHMge1xuICAgIGNvbnN0IHJvdW5kU2NvcmUgPSB0aGlzLmNyZWF0ZUdhbWVTY29yZShnYW1lLCBwbGF5ZXJQcmVmaXgpO1xuICAgIGNvbnN0IHBsYXllckNvbG9yID0gcGxheWVyUHJlZml4ID09PSAnQicgPyAnYmxhY2snIDogJ3doaXRlJztcbiAgICBjb25zdCBzdGF0czogQ2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kU3RhdHMgPSB7XG4gICAgICBwb3dlcnNVc2VkOiB7IGVhZ2xlOiAwLCBidWxsOiAwLCBrYW5nYXJvbzogMCwgbGlvbjogMCB9LFxuICAgICAgcG93ZXJDYXB0dXJlczogMCxcbiAgICAgIHByb21vdGlvbnM6IGdhbWUud2lubmVyID09PSBwbGF5ZXJDb2xvciAmJiBnYW1lLndpbm5lclJlYXNvbiA9PT0gJ3Byb21vdGlvbicgPyAxIDogMCxcbiAgICAgIGNhcHR1cmVzOiAwLFxuICAgICAgbW92ZXM6IDAsXG4gICAgICBzY29yZTogcm91bmRTY29yZS5zY29yZSxcbiAgICAgIGJlc3RNb3ZlU2NvcmU6IHJvdW5kU2NvcmUuYmVzdE1vdmU/LnNjb3JlID8/IDAsXG4gICAgICBiZXN0Q29tYm86IHJvdW5kU2NvcmUuYmVzdENvbWJvLFxuICAgIH07XG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBnYW1lLm1vdmVIaXN0b3J5ID8/IFtdKSB7XG4gICAgICBjb25zdCBtb3ZlID0gZW50cnkubW92ZTtcbiAgICAgIGlmICghbW92ZSB8fCAhbW92ZS5waWVjZUlkLnN0YXJ0c1dpdGgocGxheWVyUHJlZml4KSkgY29udGludWU7XG4gICAgICBzdGF0cy5tb3ZlcyArPSAxO1xuICAgICAgaWYgKG1vdmUuY2FwdHVyZXNQaWVjZUlkKSBzdGF0cy5jYXB0dXJlcyArPSAxO1xuICAgICAgaWYgKCFtb3ZlLmFuaW1hbCkgY29udGludWU7XG4gICAgICBzdGF0cy5wb3dlcnNVc2VkW21vdmUuYW5pbWFsXSArPSAxO1xuICAgICAgaWYgKG1vdmUuY2FwdHVyZXNQaWVjZUlkKSBzdGF0cy5wb3dlckNhcHR1cmVzICs9IDE7XG4gICAgfVxuICAgIHJldHVybiBzdGF0cztcbiAgfVxuXG4gIHByaXZhdGUgbW9kZVN0YXRzUmVzdWx0KGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiB7XG4gICAgbW9kZTogRXhjbHVkZTxDaGVzc2ltYWxzU3RhdHNNb2RlLCAnY2hhbGxlbmdlJz47XG4gICAgd29uOiBib29sZWFuO1xuICAgIHJvdW5kU3RhdHM6IENoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFN0YXRzO1xuICB9IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSB8fCB0aGlzLnR1dG9yaWFsTW9kZSgpIHx8ICFnYW1lLndpbm5lcikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnbG9jYWwnKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpICE9PSAnYm90JykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiB7IG1vZGU6ICdib3QnLCB3b246IGdhbWUud2lubmVyID09PSAnd2hpdGUnLCByb3VuZFN0YXRzOiB0aGlzLmNyZWF0ZVBsYXllclJvdW5kU3RhdHMoZ2FtZSwgJ1cnKSB9O1xuICAgIH1cbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCB1aWQgPSB0aGlzLm9ubGluZVVpZCgpID8/IHRoaXMub25saW5lLmN1cnJlbnRVaWQ7XG4gICAgY29uc3Qgc2lkZSA9IHVpZCA/IHRoaXMub25saW5lLnBhcnRpY2lwYW50U2lkZShnYW1lLCB1aWQpIDogdW5kZWZpbmVkO1xuICAgIGlmIChzaWRlICE9PSAnd2hpdGUnICYmIHNpZGUgIT09ICdibGFjaycpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vZGU6ICdvbmxpbmUnLFxuICAgICAgd29uOiBnYW1lLndpbm5lciA9PT0gc2lkZSxcbiAgICAgIHJvdW5kU3RhdHM6IHRoaXMuY3JlYXRlUGxheWVyUm91bmRTdGF0cyhnYW1lLCBzaWRlID09PSAnd2hpdGUnID8gJ1cnIDogJ0InKSxcbiAgICB9O1xuICB9XG5cbiAgYW5pbWFsTGFiZWwodHlwZTogQ2hlc3NpbWFsc0FuaW1hbFR5cGUpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQoYGNoZXNzaW1hbHNBbmltYWwke3RoaXMuY2FwaXRhbGl6ZSh0eXBlKX1gKTtcbiAgfVxuXG4gIGFuaW1hbEdseXBoKHR5cGU6IENoZXNzaW1hbHNBbmltYWxUeXBlKTogc3RyaW5nIHtcbiAgICBjb25zdCBnbHlwaHM6IFJlY29yZDxDaGVzc2ltYWxzQW5pbWFsVHlwZSwgc3RyaW5nPiA9IHtcbiAgICAgIGVhZ2xlOiAn4oaXJyxcbiAgICAgIGJ1bGw6ICfil4YnLFxuICAgICAga2FuZ2Fyb286ICfipLQnLFxuICAgICAgbGlvbjogJ+KZmicsXG4gICAgfTtcbiAgICByZXR1cm4gZ2x5cGhzW3R5cGVdO1xuICB9XG5cbiAgYW5pbWFsQXNzZXRTcmModHlwZTogQ2hlc3NpbWFsc0FuaW1hbFR5cGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBBTklNQUxTLmZpbmQoKGFuaW1hbCkgPT4gYW5pbWFsLnR5cGUgPT09IHR5cGUpPy5hc3NldFNyYyA/PyAnJztcbiAgfVxuXG4gIHByaXZhdGUgcG93ZXJDYWxsb3V0VG9uZSh0eXBlOiBDaGVzc2ltYWxzQW5pbWFsVHlwZSk6IHN0cmluZyB7XG4gICAgY29uc3QgdG9uZXM6IFJlY29yZDxDaGVzc2ltYWxzQW5pbWFsVHlwZSwgc3RyaW5nPiA9IHtcbiAgICAgIGVhZ2xlOiAnNzksIDE2OSwgMjE4JyxcbiAgICAgIGJ1bGw6ICcyMjAsIDExNiwgNTgnLFxuICAgICAga2FuZ2Fyb286ICcxMzksIDExMiwgMjIyJyxcbiAgICAgIGxpb246ICcyMjEsIDE1OCwgMjYnLFxuICAgIH07XG4gICAgcmV0dXJuIHRvbmVzW3R5cGVdO1xuICB9XG5cbiAgY2FuUmV2aWV3UHJldmlvdXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLmFjdGl2ZVJldmlld0luZGV4KCkgPz8gMCkgPiAwO1xuICB9XG5cbiAgY2FuUmV2aWV3TmV4dCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuYWN0aXZlUmV2aWV3SW5kZXgoKTtcbiAgICByZXR1cm4gaW5kZXggIT09IHVuZGVmaW5lZCAmJiBpbmRleCA8IHRoaXMucmVwbGF5RW50cmllcygpLmxlbmd0aCAtIDE7XG4gIH1cblxuICByZXZpZXdQcmV2aW91c01vdmUoKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmFjdGl2ZVJldmlld0luZGV4KCk7XG4gICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQgfHwgaW5kZXggPD0gMCkgcmV0dXJuO1xuICAgIHRoaXMucmV2aWV3SW5kZXguc2V0KGluZGV4IC0gMSk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIHJldmlld05leHRNb3ZlKCk6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hY3RpdmVSZXZpZXdJbmRleCgpO1xuICAgIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkIHx8IGluZGV4ID49IHRoaXMucmVwbGF5RW50cmllcygpLmxlbmd0aCAtIDEpIHJldHVybjtcbiAgICB0aGlzLnJldmlld0luZGV4LnNldChpbmRleCArIDEpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICByZXBsYXlQb3NpdGlvbkxhYmVsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmFjdGl2ZVJldmlld0luZGV4KCk7XG4gICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQpIHJldHVybiAnJztcbiAgICBjb25zdCBlbnRyeSA9IHRoaXMucmVwbGF5RW50cmllcygpW2luZGV4XTtcbiAgICBpZiAoIWVudHJ5IHx8IGVudHJ5Lm1vdmVOdW1iZXIgPT09IDApIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNSZXBsYXlTdGFydCcpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNSZXBsYXlNb3ZlJylcbiAgICAgIC5yZXBsYWNlKCd7bW92ZX0nLCBgJHtlbnRyeS5tb3ZlTnVtYmVyfWApXG4gICAgICAucmVwbGFjZSgne3RvdGFsfScsIGAke3RoaXMuZ2FtZSgpLm1vdmVDb3VudH1gKTtcbiAgfVxuXG4gIHNob3VsZFNob3dGaW5pc2hlZE92ZXJsYXkoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJykgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hY3RpdmVSZXZpZXdJbmRleCgpO1xuICAgIHJldHVybiBpbmRleCA9PT0gdW5kZWZpbmVkIHx8IGluZGV4ID09PSB0aGlzLnJlcGxheUVudHJpZXMoKS5sZW5ndGggLSAxO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwbGF5Um93SW5kZXgocm93OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmJvYXJkT3JpZW50YXRpb25Db2xvcigpID09PSAnYmxhY2snID8gdGhpcy5yZXZpZXdHYW1lKCkuYm9hcmRTaXplIC0gMSAtIHJvdyA6IHJvdztcbiAgfVxuXG4gIHByaXZhdGUgZGlzcGxheUNvbEluZGV4KGNvbDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5ib2FyZE9yaWVudGF0aW9uQ29sb3IoKSA9PT0gJ2JsYWNrJyA/IHRoaXMucmV2aWV3R2FtZSgpLmJvYXJkU2l6ZSAtIDEgLSBjb2wgOiBjb2w7XG4gIH1cblxuICBwcml2YXRlIHdhdGNoT25saW5lR2FtZShnYW1lSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uID0gdGhpcy5vbmxpbmUud2F0Y2hHYW1lKGdhbWVJZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChzdGF0ZSkgPT4ge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIGlmICghc3RhdGUpIHtcbiAgICAgICAgICAgIHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlLnNldCgnZXJyb3InKTtcbiAgICAgICAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZU5vdEZvdW5kJykpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZS5zZXQoJ2xpdmUnKTtcbiAgICAgICAgICB0aGlzLm9ubGluZUVycm9yLnNldCgnJyk7XG4gICAgICAgICAgY29uc3QgcHJldmlvdXMgPSB0aGlzLmdhbWUoKTtcbiAgICAgICAgICB0aGlzLmFwcGx5T25saW5lR2FtZVNuYXBzaG90KHByZXZpb3VzLCBzdGF0ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUuc2V0KCdlcnJvcicpO1xuICAgICAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZURpc2Nvbm5lY3RlZEJvZHknKSk7XG4gICAgICAgICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5jYW5jZWxBY3RpdmVHYW1lcGxheUZlZWRiYWNrKCk7XG4gICAgICAgICAgdGhpcy5zY3JlZW4uc2V0KCdob21lJyk7XG4gICAgICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb25saW5lT3BlbkVycm9yTWVzc2FnZShlcnJvcjogdW5rbm93bik6IHN0cmluZyB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJyc7XG4gICAgaWYgKG1lc3NhZ2UuaW5jbHVkZXMoJ0NIRVNTSU1BTFNfR0FNRV9FWFBJUkVEJykpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFeHBpcmVkQm9keScpO1xuICAgIGlmIChtZXNzYWdlLmluY2x1ZGVzKCdDSEVTU0lNQUxTX0dBTUVfTk9UX0ZPVU5EJykpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVOb3RGb3VuZCcpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseU9ubGluZUdhbWVTbmFwc2hvdChwcmV2aW91czogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLmdhbWUuc2V0KHN0YXRlKTtcbiAgICBpZiAoc3RhdGUuc3RhdHVzID09PSAnZmluaXNoZWQnKSB7XG4gICAgICBpZiAocHJldmlvdXMuaWQgIT09IHN0YXRlLmlkIHx8IHByZXZpb3VzLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJyB8fCB0aGlzLnJldmlld0luZGV4KCkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnNob3dMYXRlc3RSZXZpZXdTbmFwc2hvdCgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsZWFyUmV2aWV3KCk7XG4gICAgfVxuICAgIGlmIChwcmV2aW91cy5zdGF0dXMgPT09ICdmaW5pc2hlZCcgJiYgc3RhdGUuc3RhdHVzID09PSAnaW5fcHJvZ3Jlc3MnKSB7XG4gICAgICB0aGlzLmxhc3RPdXRjb21lU291bmRLZXkgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5yZW1hdGNoTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5zdGFydENoZXNzaW1hbHNHYW1lTXVzaWNTb29uKCk7XG4gICAgICB0aGlzLmZvY3VzQm9hcmRTb29uKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5zdWNjZXNzKCk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRCb2FyZFNpemUuc2V0KHN0YXRlLmJvYXJkU2l6ZSk7XG4gICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldChmYWxzZSk7XG4gICAgY29uc3QgcHJldmlvdXNQZW5kaW5nS2V5ID0gcHJldmlvdXMuaWQgPT09IHN0YXRlLmlkID8gdGhpcy5vbmxpbmUucGFydGljaXBhbnRLZXkocHJldmlvdXMub25saW5lPy5wZW5kaW5nR3Vlc3QpIDogJyc7XG4gICAgY29uc3QgbmV4dFBlbmRpbmdLZXkgPSB0aGlzLm9ubGluZS5wYXJ0aWNpcGFudEtleShzdGF0ZS5vbmxpbmU/LnBlbmRpbmdHdWVzdCk7XG4gICAgaWYgKFxuICAgICAgc3RhdGUuc3RhdHVzID09PSAnd2FpdGluZycgJiZcbiAgICAgIHRoaXMub25saW5lLmlzSG9zdFdhaXRpbmcoc3RhdGUsIHRoaXMub25saW5lLmN1cnJlbnRVaWQpICYmXG4gICAgICAhIW5leHRQZW5kaW5nS2V5ICYmXG4gICAgICBuZXh0UGVuZGluZ0tleSAhPT0gcHJldmlvdXNQZW5kaW5nS2V5XG4gICAgKSB7XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnQoJ2NoZXNzaW1hbHNKb2luUmVxdWVzdEJvZHknKS5yZXBsYWNlKCd7cGxheWVyfScsIHRoaXMucGVuZGluZ0d1ZXN0TmFtZSgpKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgZHVyYXRpb246IDMyMDAsXG4gICAgICAgIHBvc2l0aW9uOiAndG9wJyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzSm9pblJlcXVlc3QoKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLnN1Y2Nlc3MoKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgcHJldmlvdXMuY3VycmVudFR1cm4gIT09IHN0YXRlLmN1cnJlbnRUdXJuICYmXG4gICAgICBzdGF0ZS5zdGF0dXMgPT09ICdpbl9wcm9ncmVzcycgJiZcbiAgICAgICF0aGlzLnNob3VsZEtlZXBCb2FyZE9yaWVudGF0aW9uU3RhdGljKHN0YXRlKVxuICAgICkge1xuICAgICAgdGhpcy50cmlnZ2VyQm9hcmRPcmllbnRhdGlvbigpO1xuICAgIH1cbiAgICBpZiAoc3RhdGUuc3RhdHVzID09PSAnZmluaXNoZWQnICYmIHByZXZpb3VzLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJykge1xuICAgICAgdGhpcy5wbGF5Q2hlc3NpbWFsc091dGNvbWVTb3VuZChzdGF0ZSk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5zdWNjZXNzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtaW5pR2FtZXNCYXNlUm91dGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCByb3V0ZSA9ICh0aGlzLm1pbmlHYW1lc1JvdXRlIHx8ICcvbWluaS1nYW1lcycpLnRyaW0oKTtcbiAgICByZXR1cm4gYC8ke3JvdXRlLnJlcGxhY2UoL15cXC8rfFxcLyskL2csICcnKSB8fCAnbWluaS1nYW1lcyd9YDtcbiAgfVxuXG4gIHByaXZhdGUgY2hlc3NpbWFsc0dhbWVSb3V0ZShnYW1lSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMubWluaUdhbWVzQmFzZVJvdXRlKCl9L2NoZXNzaW1hbHMvJHtlbmNvZGVVUklDb21wb25lbnQodGhpcy5vbmxpbmUubm9ybWFsaXplR2FtZUlkKGdhbWVJZCkpfWA7XG4gIH1cblxuICBwcml2YXRlIGNhcGl0YWxpemUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdmFsdWUuc2xpY2UoMSk7XG4gIH1cbn1cbiJdfQ==
|