valtech-components 4.0.533 → 4.0.535

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.
Files changed (53) hide show
  1. package/esm2022/lib/components/organisms/mini-games/bubble-blitz-game.component.mjs +3 -3
  2. package/esm2022/lib/components/organisms/mini-games/chessimals-challenge-progress.service.mjs +45 -6
  3. package/esm2022/lib/components/organisms/mini-games/chessimals-engine.mjs +18 -1
  4. package/esm2022/lib/components/organisms/mini-games/chessimals-game.component.mjs +632 -729
  5. package/esm2022/lib/components/organisms/mini-games/christianity-game.component.mjs +3 -3
  6. package/esm2022/lib/components/organisms/mini-games/memory-game.component.mjs +3 -3
  7. package/esm2022/lib/components/organisms/mini-games/mini-games-menu.component.mjs +3 -3
  8. package/esm2022/lib/components/organisms/mini-games/mini-games.i18n.mjs +91 -9
  9. package/esm2022/lib/components/organisms/mini-games/retro-audio.service.mjs +27 -1
  10. package/esm2022/lib/components/organisms/mini-games/simon-game.component.mjs +3 -3
  11. package/esm2022/lib/components/organisms/mini-games/types.mjs +1 -1
  12. package/esm2022/lib/version.mjs +2 -2
  13. package/esm2022/mini-games/public-api.mjs +2 -2
  14. package/fesm2022/valtech-components-mini-games.mjs +1 -1
  15. package/fesm2022/valtech-components-mini-games.mjs.map +1 -1
  16. package/fesm2022/valtech-components.mjs +819 -752
  17. package/fesm2022/valtech-components.mjs.map +1 -1
  18. package/lib/components/organisms/mini-games/chessimals-challenge-progress.service.d.ts +4 -0
  19. package/lib/components/organisms/mini-games/chessimals-game.component.d.ts +23 -1
  20. package/lib/components/organisms/mini-games/retro-audio.service.d.ts +2 -0
  21. package/lib/components/organisms/mini-games/types.d.ts +2 -0
  22. package/lib/version.d.ts +1 -1
  23. package/package.json +1 -1
  24. package/src/lib/assets/games/README.md +149 -0
  25. package/src/lib/assets/games/chessimals/brand/README.md +23 -0
  26. package/src/lib/assets/games/chessimals/brand/chessimals-app-icon-192.png +0 -0
  27. package/src/lib/assets/games/chessimals/brand/chessimals-app-icon-512.png +0 -0
  28. package/src/lib/assets/games/chessimals/brand/chessimals-app-icon-capacitor.png +0 -0
  29. package/src/lib/assets/games/chessimals/brand/chessimals-app-icon.png +0 -0
  30. package/src/lib/assets/games/chessimals/brand/chessimals-emblem.png +0 -0
  31. package/src/lib/assets/games/chessimals/brand/chessimals-favicon.png +0 -0
  32. package/src/lib/assets/games/chessimals/brand/chessimals-wordmark.png +0 -0
  33. package/src/lib/assets/games/chessimals/challenge-avatars/ambusher.png +0 -0
  34. package/src/lib/assets/games/chessimals/challenge-avatars/endgame.png +0 -0
  35. package/src/lib/assets/games/chessimals/challenge-avatars/explorer.png +0 -0
  36. package/src/lib/assets/games/chessimals/challenge-avatars/guardian.png +0 -0
  37. package/src/lib/assets/games/chessimals/challenge-avatars/hunter.png +0 -0
  38. package/src/lib/assets/games/chessimals/challenge-avatars/impulsive.png +0 -0
  39. package/src/lib/assets/games/chessimals/challenge-avatars/jumper.png +0 -0
  40. package/src/lib/assets/games/chessimals/challenge-avatars/locksmith.png +0 -0
  41. package/src/lib/assets/games/chessimals/challenge-avatars/matriarch.png +0 -0
  42. package/src/lib/assets/games/chessimals/challenge-avatars/oracle.png +0 -0
  43. package/src/lib/assets/games/chessimals/challenge-avatars/predator.png +0 -0
  44. package/src/lib/assets/games/chessimals/challenge-avatars/runner.png +0 -0
  45. package/src/lib/assets/games/chessimals/challenge-avatars/sentinel.png +0 -0
  46. package/src/lib/assets/games/chessimals/challenge-avatars/sprinter.png +0 -0
  47. package/src/lib/assets/games/chessimals/challenge-avatars/storm.png +0 -0
  48. package/src/lib/assets/games/chessimals/challenge-avatars/strategist.png +0 -0
  49. package/src/lib/assets/games/chessimals/powers/README.md +12 -0
  50. package/src/lib/assets/games/chessimals/powers/bull-power.png +0 -0
  51. package/src/lib/assets/games/chessimals/powers/eagle-power.png +0 -0
  52. package/src/lib/assets/games/chessimals/powers/kangaroo-power.png +0 -0
  53. package/src/lib/assets/games/chessimals/powers/lion-power.png +0 -0
@@ -1,9 +1,11 @@
1
1
  const ANIMALS = ['eagle', 'bull', 'kangaroo', 'lion'];
2
+ const CHESSIMALS_CHALLENGE_AVATAR_BASE = 'assets/games/chessimals/challenge-avatars';
2
3
  export const CHESSIMALS_BOT_PROFILES = [
3
4
  {
4
5
  id: 'explorer',
5
6
  difficulty: 'easy',
6
7
  avatar: '🧭',
8
+ avatarSrc: `${CHESSIMALS_CHALLENGE_AVATAR_BASE}/explorer.png`,
7
9
  labelKey: 'chessimalsBotExplorer',
8
10
  descriptionKey: 'chessimalsBotExplorerBody',
9
11
  },
@@ -11,6 +13,7 @@ export const CHESSIMALS_BOT_PROFILES = [
11
13
  id: 'impulsive',
12
14
  difficulty: 'easy',
13
15
  avatar: '⚡',
16
+ avatarSrc: `${CHESSIMALS_CHALLENGE_AVATAR_BASE}/impulsive.png`,
14
17
  labelKey: 'chessimalsBotImpulsive',
15
18
  descriptionKey: 'chessimalsBotImpulsiveBody',
16
19
  },
@@ -18,6 +21,7 @@ export const CHESSIMALS_BOT_PROFILES = [
18
21
  id: 'runner',
19
22
  difficulty: 'easy',
20
23
  avatar: '🏁',
24
+ avatarSrc: `${CHESSIMALS_CHALLENGE_AVATAR_BASE}/runner.png`,
21
25
  labelKey: 'chessimalsBotRunner',
22
26
  descriptionKey: 'chessimalsBotRunnerBody',
23
27
  },
@@ -25,6 +29,7 @@ export const CHESSIMALS_BOT_PROFILES = [
25
29
  id: 'hunter',
26
30
  difficulty: 'normal',
27
31
  avatar: '🎯',
32
+ avatarSrc: `${CHESSIMALS_CHALLENGE_AVATAR_BASE}/hunter.png`,
28
33
  labelKey: 'chessimalsBotHunter',
29
34
  descriptionKey: 'chessimalsBotHunterBody',
30
35
  },
@@ -32,6 +37,7 @@ export const CHESSIMALS_BOT_PROFILES = [
32
37
  id: 'guardian',
33
38
  difficulty: 'normal',
34
39
  avatar: '🛡️',
40
+ avatarSrc: `${CHESSIMALS_CHALLENGE_AVATAR_BASE}/guardian.png`,
35
41
  labelKey: 'chessimalsBotGuardian',
36
42
  descriptionKey: 'chessimalsBotGuardianBody',
37
43
  },
@@ -39,6 +45,7 @@ export const CHESSIMALS_BOT_PROFILES = [
39
45
  id: 'jumper',
40
46
  difficulty: 'normal',
41
47
  avatar: '🦘',
48
+ avatarSrc: `${CHESSIMALS_CHALLENGE_AVATAR_BASE}/jumper.png`,
42
49
  labelKey: 'chessimalsBotJumper',
43
50
  descriptionKey: 'chessimalsBotJumperBody',
44
51
  },
@@ -46,6 +53,7 @@ export const CHESSIMALS_BOT_PROFILES = [
46
53
  id: 'strategist',
47
54
  difficulty: 'hard',
48
55
  avatar: '♟️',
56
+ avatarSrc: `${CHESSIMALS_CHALLENGE_AVATAR_BASE}/strategist.png`,
49
57
  labelKey: 'chessimalsBotStrategist',
50
58
  descriptionKey: 'chessimalsBotStrategistBody',
51
59
  },
@@ -53,6 +61,7 @@ export const CHESSIMALS_BOT_PROFILES = [
53
61
  id: 'predator',
54
62
  difficulty: 'hard',
55
63
  avatar: '🦁',
64
+ avatarSrc: `${CHESSIMALS_CHALLENGE_AVATAR_BASE}/predator.png`,
56
65
  labelKey: 'chessimalsBotPredator',
57
66
  descriptionKey: 'chessimalsBotPredatorBody',
58
67
  },
@@ -60,6 +69,7 @@ export const CHESSIMALS_BOT_PROFILES = [
60
69
  id: 'sprinter',
61
70
  difficulty: 'hard',
62
71
  avatar: '🚀',
72
+ avatarSrc: `${CHESSIMALS_CHALLENGE_AVATAR_BASE}/sprinter.png`,
63
73
  labelKey: 'chessimalsBotSprinter',
64
74
  descriptionKey: 'chessimalsBotSprinterBody',
65
75
  },
@@ -67,6 +77,7 @@ export const CHESSIMALS_BOT_PROFILES = [
67
77
  id: 'sentinel',
68
78
  difficulty: 'hard',
69
79
  avatar: '🏰',
80
+ avatarSrc: `${CHESSIMALS_CHALLENGE_AVATAR_BASE}/sentinel.png`,
70
81
  labelKey: 'chessimalsBotSentinel',
71
82
  descriptionKey: 'chessimalsBotSentinelBody',
72
83
  },
@@ -74,6 +85,7 @@ export const CHESSIMALS_BOT_PROFILES = [
74
85
  id: 'oracle',
75
86
  difficulty: 'hard',
76
87
  avatar: '🔮',
88
+ avatarSrc: `${CHESSIMALS_CHALLENGE_AVATAR_BASE}/oracle.png`,
77
89
  labelKey: 'chessimalsBotOracle',
78
90
  descriptionKey: 'chessimalsBotOracleBody',
79
91
  },
@@ -81,6 +93,7 @@ export const CHESSIMALS_BOT_PROFILES = [
81
93
  id: 'ambusher',
82
94
  difficulty: 'hard',
83
95
  avatar: '🪤',
96
+ avatarSrc: `${CHESSIMALS_CHALLENGE_AVATAR_BASE}/ambusher.png`,
84
97
  labelKey: 'chessimalsBotAmbusher',
85
98
  descriptionKey: 'chessimalsBotAmbusherBody',
86
99
  },
@@ -88,6 +101,7 @@ export const CHESSIMALS_BOT_PROFILES = [
88
101
  id: 'locksmith',
89
102
  difficulty: 'hard',
90
103
  avatar: '🔐',
104
+ avatarSrc: `${CHESSIMALS_CHALLENGE_AVATAR_BASE}/locksmith.png`,
91
105
  labelKey: 'chessimalsBotLocksmith',
92
106
  descriptionKey: 'chessimalsBotLocksmithBody',
93
107
  },
@@ -95,6 +109,7 @@ export const CHESSIMALS_BOT_PROFILES = [
95
109
  id: 'storm',
96
110
  difficulty: 'hard',
97
111
  avatar: '🌩️',
112
+ avatarSrc: `${CHESSIMALS_CHALLENGE_AVATAR_BASE}/storm.png`,
98
113
  labelKey: 'chessimalsBotStorm',
99
114
  descriptionKey: 'chessimalsBotStormBody',
100
115
  },
@@ -102,6 +117,7 @@ export const CHESSIMALS_BOT_PROFILES = [
102
117
  id: 'matriarch',
103
118
  difficulty: 'hard',
104
119
  avatar: '👑',
120
+ avatarSrc: `${CHESSIMALS_CHALLENGE_AVATAR_BASE}/matriarch.png`,
105
121
  labelKey: 'chessimalsBotMatriarch',
106
122
  descriptionKey: 'chessimalsBotMatriarchBody',
107
123
  },
@@ -109,6 +125,7 @@ export const CHESSIMALS_BOT_PROFILES = [
109
125
  id: 'endgame',
110
126
  difficulty: 'hard',
111
127
  avatar: '⌛',
128
+ avatarSrc: `${CHESSIMALS_CHALLENGE_AVATAR_BASE}/endgame.png`,
112
129
  labelKey: 'chessimalsBotEndgame',
113
130
  descriptionKey: 'chessimalsBotEndgameBody',
114
131
  },
@@ -766,4 +783,4 @@ function otherColor(color) {
766
783
  function createLocalId() {
767
784
  return `local-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;
768
785
  }
769
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlc3NpbWFscy1lbmdpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL21pbmktZ2FtZXMvY2hlc3NpbWFscy1lbmdpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaUJBLE1BQU0sT0FBTyxHQUEyQixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBcUI5RSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBMkI7SUFDN0Q7UUFDRSxFQUFFLEVBQUUsVUFBVTtRQUNkLFVBQVUsRUFBRSxNQUFNO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO1FBQ1osUUFBUSxFQUFFLHVCQUF1QjtRQUNqQyxjQUFjLEVBQUUsMkJBQTJCO0tBQzVDO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsV0FBVztRQUNmLFVBQVUsRUFBRSxNQUFNO1FBQ2xCLE1BQU0sRUFBRSxHQUFHO1FBQ1gsUUFBUSxFQUFFLHdCQUF3QjtRQUNsQyxjQUFjLEVBQUUsNEJBQTRCO0tBQzdDO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsUUFBUTtRQUNaLFVBQVUsRUFBRSxNQUFNO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO1FBQ1osUUFBUSxFQUFFLHFCQUFxQjtRQUMvQixjQUFjLEVBQUUseUJBQXlCO0tBQzFDO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsUUFBUTtRQUNaLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLE1BQU0sRUFBRSxJQUFJO1FBQ1osUUFBUSxFQUFFLHFCQUFxQjtRQUMvQixjQUFjLEVBQUUseUJBQXlCO0tBQzFDO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsVUFBVTtRQUNkLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLE1BQU0sRUFBRSxLQUFLO1FBQ2IsUUFBUSxFQUFFLHVCQUF1QjtRQUNqQyxjQUFjLEVBQUUsMkJBQTJCO0tBQzVDO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsUUFBUTtRQUNa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RSxHQUFHLEVBQUU7SUFDekwsTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUU7SUFDckwsTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDcEwsUUFBUSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDckwsTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDckwsVUFBVSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUU7SUFDekwsUUFBUSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDckwsUUFBUSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDdkwsUUFBUSxFQUFFLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDMUwsTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDbkwsUUFBUSxFQUFFLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDekwsU0FBUyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDM0wsS0FBSyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDeEwsU0FBUyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUU7SUFDekwsT0FBTyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJ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QUVkLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDMUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDaEUsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdkMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDckMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUN4QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUMzRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxRQUFRLEdBQUcsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN2RSxPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFDSCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0UsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLFdBQVcsQ0FBQztJQUN6QyxLQUFLLE1BQU0sSUFBSSxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQzVCLE1BQU0sSUFBSSxJQUFJLENBQUMs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LENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQ3JCLFNBQThCLEVBQzlCLEtBQTRCLEVBQzVCLFFBQTRCO0lBRTVCLE9BQU8sS0FBSyxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEtBQUssU0FBUyxHQUFHLENBQUMsQ0FBQztBQUNqRixDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsU0FBOEIsRUFBRSxRQUE0QjtJQUNqRixPQUFPLENBQ0wsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLEdBQUcsR0FBRyxTQUFTLElBQUksUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQy9GLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsQ0FBcUIsRUFBRSxDQUFxQjtJQUNoRSxPQUFPLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDNUMsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLEtBQTRCO0lBQzlDLE9BQU8sS0FBSyxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFDL0MsQ0FBQztBQUVELFNBQVMsYUFBYTtJQUNwQixPQUFPLFNBQVMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN0RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hlc3NpbWFsc0FuaW1hbFR5cGUsXG4gIENoZXNzaW1hbHNCb3REaWZmaWN1bHR5LFxuICBDaGVzc2ltYWxzQm90UHJvZmlsZSxcbiAgQ2hlc3NpbWFsc0JvdFByb2ZpbGVJZCxcbiAgQ2hlc3NpbWFsc0JvYXJkU2l6ZSxcbiAgQ2hlc3NpbWFsc0dhbWVNb2RlLFxuICBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBDaGVzc2ltYWxzR2FtZVN0YXR1cyxcbiAgQ2hlc3NpbWFsc01vdmUsXG4gIENoZXNzaW1hbHNNb3ZlSGlzdG9yeUVudHJ5LFxuICBDaGVzc2ltYWxzT25saW5lU3RhdGUsXG4gIENoZXNzaW1hbHNQaWVjZSxcbiAgQ2hlc3NpbWFsc1BsYXllckNvbG9yLFxuICBDaGVzc2ltYWxzUG9zaXRpb24sXG59IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBBTklNQUxTOiBDaGVzc2ltYWxzQW5pbWFsVHlwZVtdID0gWydlYWdsZScsICdidWxsJywgJ2thbmdhcm9vJywgJ2xpb24nXTtcblxuaW50ZXJmYWNlIENoZXNzaW1hbHNCb3RTdHlsZSB7XG4gIGFkdmFuY2VtZW50OiBudW1iZXI7XG4gIGNhcHR1cmU6IG51bWJlcjtcbiAgc2FmZXR5OiBudW1iZXI7XG4gIHBvd2VyOiBudW1iZXI7XG4gIGNlbnRlcjogbnVtYmVyO1xuICB1bmxvY2s6IG51bWJlcjtcbiAgcmVwbHk6IG51bWJlcjtcbiAgcmFuZG9tbmVzczogbnVtYmVyO1xuICBzcHJlYWQ6IG51bWJlcjtcbiAgbW9iaWxpdHk6IG51bWJlcjtcbiAgdHJhcDogbnVtYmVyO1xuICBlbmRnYW1lOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzQm90T3B0aW9ucyB7XG4gIGNoYWxsZW5nZVJvdW5kPzogbnVtYmVyO1xufVxuXG5leHBvcnQgY29uc3QgQ0hFU1NJTUFMU19CT1RfUFJPRklMRVM6IENoZXNzaW1hbHNCb3RQcm9maWxlW10gPSBbXG4gIHtcbiAgICBpZDogJ2V4cGxvcmVyJyxcbiAgICBkaWZmaWN1bHR5OiAnZWFzeScsXG4gICAgYXZhdGFyOiAn8J+nrScsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90RXhwbG9yZXInLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdEV4cGxvcmVyQm9keScsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2ltcHVsc2l2ZScsXG4gICAgZGlmZmljdWx0eTogJ2Vhc3knLFxuICAgIGF2YXRhcjogJ+KaoScsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90SW1wdWxzaXZlJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RJbXB1bHNpdmVCb2R5JyxcbiAgfSxcbiAge1xuICAgIGlkOiAncnVubmVyJyxcbiAgICBkaWZmaWN1bHR5OiAnZWFzeScsXG4gICAgYXZhdGFyOiAn8J+PgScsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90UnVubmVyJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RSdW5uZXJCb2R5JyxcbiAgfSxcbiAge1xuICAgIGlkOiAnaHVudGVyJyxcbiAgICBkaWZmaWN1bHR5OiAnbm9ybWFsJyxcbiAgICBhdmF0YXI6ICfwn46vJyxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RIdW50ZXInLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdEh1bnRlckJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdndWFyZGlhbicsXG4gICAgZGlmZmljdWx0eTogJ25vcm1hbCcsXG4gICAgYXZhdGFyOiAn8J+boe+4jycsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90R3VhcmRpYW4nLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdEd1YXJkaWFuQm9keScsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2p1bXBlcicsXG4gICAgZGlmZmljdWx0eTogJ25vcm1hbCcsXG4gICAgYXZhdGFyOiAn8J+mmCcsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90SnVtcGVyJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RKdW1wZXJCb2R5JyxcbiAgfSxcbiAge1xuICAgIGlkOiAnc3RyYXRlZ2lzdCcsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGF2YXRhcjogJ+KZn++4jycsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90U3RyYXRlZ2lzdCcsXG4gICAgZGVzY3JpcHRpb25LZXk6ICdjaGVzc2ltYWxzQm90U3RyYXRlZ2lzdEJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdwcmVkYXRvcicsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGF2YXRhcjogJ/CfpoEnLFxuICAgIGxhYmVsS2V5OiAnY2hlc3NpbWFsc0JvdFByZWRhdG9yJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RQcmVkYXRvckJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdzcHJpbnRlcicsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGF2YXRhcjogJ/CfmoAnLFxuICAgIGxhYmVsS2V5OiAnY2hlc3NpbWFsc0JvdFNwcmludGVyJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RTcHJpbnRlckJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdzZW50aW5lbCcsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGF2YXRhcjogJ/Cfj7AnLFxuICAgIGxhYmVsS2V5OiAnY2hlc3NpbWFsc0JvdFNlbnRpbmVsJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RTZW50aW5lbEJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdvcmFjbGUnLFxuICAgIGRpZmZpY3VsdHk6ICdoYXJkJyxcbiAgICBhdmF0YXI6ICfwn5SuJyxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RPcmFjbGUnLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdE9yYWNsZUJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdhbWJ1c2hlcicsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGF2YXRhcjogJ/CfqqQnLFxuICAgIGxhYmVsS2V5OiAnY2hlc3NpbWFsc0JvdEFtYnVzaGVyJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RBbWJ1c2hlckJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdsb2Nrc21pdGgnLFxuICAgIGRpZmZpY3VsdHk6ICdoYXJkJyxcbiAgICBhdmF0YXI6ICfwn5SQJyxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RMb2Nrc21pdGgnLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdExvY2tzbWl0aEJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdzdG9ybScsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGF2YXRhcjogJ/CfjKnvuI8nLFxuICAgIGxhYmVsS2V5OiAnY2hlc3NpbWFsc0JvdFN0b3JtJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RTdG9ybUJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdtYXRyaWFyY2gnLFxuICAgIGRpZmZpY3VsdHk6ICdoYXJkJyxcbiAgICBhdmF0YXI6ICfwn5GRJyxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RNYXRyaWFyY2gnLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdE1hdHJpYXJjaEJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdlbmRnYW1lJyxcbiAgICBkaWZmaWN1bHR5OiAnaGFyZCcsXG4gICAgYXZhdGFyOiAn4oybJyxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RFbmRnYW1lJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RFbmRnYW1lQm9keScsXG4gIH0sXG5dO1xuXG5jb25zdCBCT1RfU1RZTEVTOiBSZWNvcmQ8Q2hlc3NpbWFsc0JvdFByb2ZpbGVJZCwgQ2hlc3NpbWFsc0JvdFN0eWxlPiA9IHtcbiAgZXhwbG9yZXI6IHsgYWR2YW5jZW1lbnQ6IDEuMDUsIGNhcHR1cmU6IDAuODIsIHNhZmV0eTogMC42MiwgcG93ZXI6IDAuOCwgY2VudGVyOiAxLjE1LCB1bmxvY2s6IDEuMDUsIHJlcGx5OiAwLjcsIHJhbmRvbW5lc3M6IDI2MCwgc3ByZWFkOiAwLjY4LCBtb2JpbGl0eTogMC43NSwgdHJhcDogMC41LCBlbmRnYW1lOiAwLjU1IH0sXG4gIGltcHVsc2l2ZTogeyBhZHZhbmNlbWVudDogMC45LCBjYXB0dXJlOiAxLjQ1LCBzYWZldHk6IDAuNDgsIHBvd2VyOiAxLjE1LCBjZW50ZXI6IDAuOCwgdW5sb2NrOiAwLjksIHJlcGx5OiAwLjU1LCByYW5kb21uZXNzOiAyOTAsIHNwcmVhZDogMC42MiwgbW9iaWxpdHk6IDAuODUsIHRyYXA6IDAuNjIsIGVuZGdhbWU6IDAuNSB9LFxuICBydW5uZXI6IHsgYWR2YW5jZW1lbnQ6IDEuNTUsIGNhcHR1cmU6IDAuNzgsIHNhZmV0eTogMC41LCBwb3dlcjogMC45NSwgY2VudGVyOiAwLjcsIHVubG9jazogMS4xLCByZXBseTogMC41NSwgcmFuZG9tbmVzczogMjUwLCBzcHJlYWQ6IDAuNiwgbW9iaWxpdHk6IDAuNzIsIHRyYXA6IDAuNDUsIGVuZGdhbWU6IDEuMSB9LFxuICBodW50ZXI6IHsgYWR2YW5jZW1lbnQ6IDAuOTUsIGNhcHR1cmU6IDEuNDUsIHNhZmV0eTogMC45LCBwb3dlcjogMS4wNSwgY2VudGVyOiAwLjk1LCB1bmxvY2s6IDAuOTUsIHJlcGx5OiAxLCByYW5kb21uZXNzOiA5MCwgc3ByZWFkOiAwLjMsIG1vYmlsaXR5OiAwLjk1LCB0cmFwOiAwLjgyLCBlbmRnYW1lOiAwLjc2IH0sXG4gIGd1YXJkaWFuOiB7IGFkdmFuY2VtZW50OiAwLjg4LCBjYXB0dXJlOiAxLCBzYWZldHk6IDEuNDUsIHBvd2VyOiAwLjg1LCBjZW50ZXI6IDEuMDUsIHVubG9jazogMSwgcmVwbHk6IDEuMTUsIHJhbmRvbW5lc3M6IDcwLCBzcHJlYWQ6IDAuMjYsIG1vYmlsaXR5OiAwLjgyLCB0cmFwOiAwLjcyLCBlbmRnYW1lOiAwLjcyIH0sXG4gIGp1bXBlcjogeyBhZHZhbmNlbWVudDogMS4xMiwgY2FwdHVyZTogMSwgc2FmZXR5OiAwLjkyLCBwb3dlcjogMS40MiwgY2VudGVyOiAxLjE4LCB1bmxvY2s6IDEuMDgsIHJlcGx5OiAwLjk1LCByYW5kb21uZXNzOiA5NSwgc3ByZWFkOiAwLjMyLCBtb2JpbGl0eTogMS4xNSwgdHJhcDogMC45LCBlbmRnYW1lOiAwLjgyIH0sXG4gIHN0cmF0ZWdpc3Q6IHsgYWR2YW5jZW1lbnQ6IDEuMDUsIGNhcHR1cmU6IDEuMDgsIHNhZmV0eTogMS4yMiwgcG93ZXI6IDEuMDgsIGNlbnRlcjogMS4xNiwgdW5sb2NrOiAxLjEsIHJlcGx5OiAxLjI1LCByYW5kb21uZXNzOiAyMiwgc3ByZWFkOiAwLjE0LCBtb2JpbGl0eTogMS4wOCwgdHJhcDogMS4wNiwgZW5kZ2FtZTogMSB9LFxuICBwcmVkYXRvcjogeyBhZHZhbmNlbWVudDogMC45OCwgY2FwdHVyZTogMS42OCwgc2FmZXR5OiAxLjAyLCBwb3dlcjogMS4zNCwgY2VudGVyOiAxLCB1bmxvY2s6IDEsIHJlcGx5OiAxLjEyLCByYW5kb21uZXNzOiAyOCwgc3ByZWFkOiAwLjE2LCBtb2JpbGl0eTogMS4wMiwgdHJhcDogMS4xOCwgZW5kZ2FtZTogMC44MiB9LFxuICBzcHJpbnRlcjogeyBhZHZhbmNlbWVudDogMS43MiwgY2FwdHVyZTogMC45LCBzYWZldHk6IDAuOTUsIHBvd2VyOiAxLjA4LCBjZW50ZXI6IDAuODYsIHVubG9jazogMS4xOCwgcmVwbHk6IDEsIHJhbmRvbW5lc3M6IDI2LCBzcHJlYWQ6IDAuMTUsIG1vYmlsaXR5OiAwLjk1LCB0cmFwOiAwLjc4LCBlbmRnYW1lOiAxLjQyIH0sXG4gIHNlbnRpbmVsOiB7IGFkdmFuY2VtZW50OiAwLjksIGNhcHR1cmU6IDEuMTIsIHNhZmV0eTogMS43MiwgcG93ZXI6IDAuOTUsIGNlbnRlcjogMS4yOCwgdW5sb2NrOiAxLjA1LCByZXBseTogMS4zOCwgcmFuZG9tbmVzczogMTgsIHNwcmVhZDogMC4xMiwgbW9iaWxpdHk6IDAuODYsIHRyYXA6IDEuMDQsIGVuZGdhbWU6IDAuODQgfSxcbiAgb3JhY2xlOiB7IGFkdmFuY2VtZW50OiAxLCBjYXB0dXJlOiAxLjEyLCBzYWZldHk6IDEuNDIsIHBvd2VyOiAxLjEsIGNlbnRlcjogMS4xOCwgdW5sb2NrOiAxLjA4LCByZXBseTogMS44LCByYW5kb21uZXNzOiA4LCBzcHJlYWQ6IDAuMDgsIG1vYmlsaXR5OiAxLjA2LCB0cmFwOiAxLjIyLCBlbmRnYW1lOiAxLjA4IH0sXG4gIGFtYnVzaGVyOiB7IGFkdmFuY2VtZW50OiAwLjksIGNhcHR1cmU6IDEuNDgsIHNhZmV0eTogMS4wOCwgcG93ZXI6IDEuNDYsIGNlbnRlcjogMS4wNSwgdW5sb2NrOiAxLjAyLCByZXBseTogMS4zMiwgcmFuZG9tbmVzczogMTQsIHNwcmVhZDogMC4xLCBtb2JpbGl0eTogMS4xMiwgdHJhcDogMS43MiwgZW5kZ2FtZTogMC45MiB9LFxuICBsb2Nrc21pdGg6IHsgYWR2YW5jZW1lbnQ6IDAuODgsIGNhcHR1cmU6IDEuMDQsIHNhZmV0eTogMS41NSwgcG93ZXI6IDEuMDIsIGNlbnRlcjogMS40OCwgdW5sb2NrOiAxLjEyLCByZXBseTogMS41MiwgcmFuZG9tbmVzczogMTIsIHNwcmVhZDogMC4xLCBtb2JpbGl0eTogMS41OCwgdHJhcDogMS4yNCwgZW5kZ2FtZTogMC44NiB9LFxuICBzdG9ybTogeyBhZHZhbmNlbWVudDogMS4xOCwgY2FwdHVyZTogMS4zOCwgc2FmZXR5OiAwLjk4LCBwb3dlcjogMS42MiwgY2VudGVyOiAxLjA4LCB1bmxvY2s6IDEuMTgsIHJlcGx5OiAxLjIyLCByYW5kb21uZXNzOiAxOCwgc3ByZWFkOiAwLjEzLCBtb2JpbGl0eTogMS4zNiwgdHJhcDogMS4yOCwgZW5kZ2FtZTogMS4wMiB9LFxuICBtYXRyaWFyY2g6IHsgYWR2YW5jZW1lbnQ6IDAuOTYsIGNhcHR1cmU6IDEuMTgsIHNhZmV0eTogMS42NCwgcG93ZXI6IDEuMTgsIGNlbnRlcjogMS4yMiwgdW5sb2NrOiAxLjA4LCByZXBseTogMS42NiwgcmFuZG9tbmVzczogMTAsIHNwcmVhZDogMC4wOCwgbW9iaWxpdHk6IDEuMDIsIHRyYXA6IDEuMzYsIGVuZGdhbWU6IDEgfSxcbiAgZW5kZ2FtZTogeyBhZHZhbmNlbWVudDogMS40NiwgY2FwdHVyZTogMSwgc2FmZXR5OiAxLjI4LCBwb3dlcjogMS4wNCwgY2VudGVyOiAwLjk0LCB1bmxvY2s6IDEuMDgsIHJlcGx5OiAxLjQ0LCByYW5kb21uZXNzOiAxMCwgc3ByZWFkOiAwLjA5LCBtb2JpbGl0eTogMC45OCwgdHJhcDogMS4wMiwgZW5kZ2FtZTogMS44NiB9LFxufTtcblxuY29uc3QgREVGQVVMVF9CT1RfUFJPRklMRV9CWV9ESUZGSUNVTFRZOiBSZWNvcmQ8Q2hlc3NpbWFsc0JvdERpZmZpY3VsdHksIENoZXNzaW1hbHNCb3RQcm9maWxlSWQ+ID0ge1xuICBlYXN5OiAnZXhwbG9yZXInLFxuICBub3JtYWw6ICdodW50ZXInLFxuICBoYXJkOiAnc3RyYXRlZ2lzdCcsXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUNoZXNzaW1hbHNHYW1lT3B0aW9ucyB7XG4gIGlkPzogc3RyaW5nO1xuICBtb2RlPzogQ2hlc3NpbWFsc0dhbWVNb2RlO1xuICBzdGF0dXM/OiBDaGVzc2ltYWxzR2FtZVN0YXR1cztcbiAgb25saW5lPzogQ2hlc3NpbWFsc09ubGluZVN0YXRlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2hlc3NpbWFsc0dhbWUoXG4gIGJvYXJkU2l6ZTogQ2hlc3NpbWFsc0JvYXJkU2l6ZSA9IDYsXG4gIG9wdGlvbnM6IENyZWF0ZUNoZXNzaW1hbHNHYW1lT3B0aW9ucyA9IHt9LFxuKTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSB7XG4gIGNvbnN0IHBpZWNlczogQ2hlc3NpbWFsc1BpZWNlW10gPSBbXTtcbiAgY29uc3Qgd2hpdGVSb3cgPSBib2FyZFNpemUgLSAyO1xuICBjb25zdCBibGFja1JvdyA9IDE7XG5cbiAgZm9yIChsZXQgY29sID0gMDsgY29sIDwgYm9hcmRTaXplOyBjb2wgKz0gMSkge1xuICAgIHBpZWNlcy5wdXNoKHtcbiAgICAgIGlkOiBgVyR7Y29sICsgMX1gLFxuICAgICAgY29sb3I6ICd3aGl0ZScsXG4gICAgICBwb3NpdGlvbjogeyByb3c6IHdoaXRlUm93LCBjb2wgfSxcbiAgICAgIGNhcHR1cmVkOiBmYWxzZSxcbiAgICB9KTtcbiAgICBwaWVjZXMucHVzaCh7XG4gICAgICBpZDogYEIke2NvbCArIDF9YCxcbiAgICAgIGNvbG9yOiAnYmxhY2snLFxuICAgICAgcG9zaXRpb246IHsgcm93OiBibGFja1JvdywgY29sIH0sXG4gICAgICBjYXB0dXJlZDogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBzdGF0ZSA9IHJlZnJlc2hDaGVzc2ltYWxzUG93ZXJVbmxvY2tzKHtcbiAgICBpZDogb3B0aW9ucy5pZCA/PyBjcmVhdGVMb2NhbElkKCksXG4gICAgbW9kZTogb3B0aW9ucy5tb2RlID8/ICdsb2NhbCcsXG4gICAgYm9hcmRTaXplLFxuICAgIHN0YXR1czogb3B0aW9ucy5zdGF0dXMgPz8gJ2luX3Byb2dyZXNzJyxcbiAgICBjdXJyZW50VHVybjogJ3doaXRlJyxcbiAgICBwaWVjZXMsXG4gICAgcGxheWVyczoge1xuICAgICAgd2hpdGU6IHsgY29sb3I6ICd3aGl0ZScsIHBvd2VyVW5sb2NrZWQ6IGZhbHNlLCBjYXJkczogY3JlYXRlQ2FyZHMoKSB9LFxuICAgICAgYmxhY2s6IHsgY29sb3I6ICdibGFjaycsIHBvd2VyVW5sb2NrZWQ6IGZhbHNlLCBjYXJkczogY3JlYXRlQ2FyZHMoKSB9LFxuICAgIH0sXG4gICAgbW92ZUNvdW50OiAwLFxuICAgIG9ubGluZTogb3B0aW9ucy5vbmxpbmUsXG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgbW92ZUhpc3Rvcnk6IFtjcmVhdGVNb3ZlSGlzdG9yeUVudHJ5KHN0YXRlKV0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGVzc2ltYWxzUGllY2VBdChcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIHBvc2l0aW9uOiBDaGVzc2ltYWxzUG9zaXRpb24sXG4pOiBDaGVzc2ltYWxzUGllY2UgfCB1bmRlZmluZWQge1xuICByZXR1cm4gYWN0aXZlUGllY2VzKHN0YXRlKS5maW5kKFxuICAgIChwaWVjZSkgPT5cbiAgICAgICFwaWVjZS5jYXB0dXJlZCAmJiBwaWVjZS5wb3NpdGlvbi5yb3cgPT09IHBvc2l0aW9uLnJvdyAmJiBwaWVjZS5wb3NpdGlvbi5jb2wgPT09IHBvc2l0aW9uLmNvbCxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENoZXNzaW1hbHNMZWdhbE1vdmVzKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgcGllY2VJZDogc3RyaW5nLFxuICBhbmltYWw/OiBDaGVzc2ltYWxzQW5pbWFsVHlwZSxcbik6IENoZXNzaW1hbHNNb3ZlW10ge1xuICBpZiAoc3RhdGUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnKSByZXR1cm4gW107XG5cbiAgY29uc3QgcGllY2UgPSBhY3RpdmVQaWVjZXMoc3RhdGUpLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IHBpZWNlSWQgJiYgIWl0ZW0uY2FwdHVyZWQpO1xuICBpZiAoIXBpZWNlIHx8IHBpZWNlLmNvbG9yICE9PSBzdGF0ZS5jdXJyZW50VHVybikgcmV0dXJuIFtdO1xuXG4gIGlmIChhbmltYWwpIHtcbiAgICBjb25zdCBwbGF5ZXIgPSBzdGF0ZS5wbGF5ZXJzW3BpZWNlLmNvbG9yXTtcbiAgICBpZiAoIXBsYXllci5wb3dlclVubG9ja2VkIHx8IHBsYXllci5jYXJkc1thbmltYWxdLnVzZWQpIHJldHVybiBbXTtcbiAgICByZXR1cm4gZ2V0UG93ZXJNb3ZlcyhzdGF0ZSwgcGllY2UsIGFuaW1hbCk7XG4gIH1cblxuICByZXR1cm4gZ2V0QmFzaWNNb3ZlcyhzdGF0ZSwgcGllY2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2hlc3NpbWFsc0FsbExlZ2FsTW92ZXMoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yID0gc3RhdGUuY3VycmVudFR1cm4sXG4pOiBDaGVzc2ltYWxzTW92ZVtdIHtcbiAgaWYgKHN0YXRlLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJykgcmV0dXJuIFtdO1xuXG4gIGNvbnN0IHR1cm5TdGF0ZSA9IGNvbG9yID09PSBzdGF0ZS5jdXJyZW50VHVybiA/IHN0YXRlIDogeyAuLi5zdGF0ZSwgY3VycmVudFR1cm46IGNvbG9yIH07XG4gIGNvbnN0IHBsYXllciA9IHR1cm5TdGF0ZS5wbGF5ZXJzW2NvbG9yXTtcbiAgY29uc3QgbW92ZXM6IENoZXNzaW1hbHNNb3ZlW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IHBpZWNlIG9mIGFjdGl2ZVBpZWNlcyh0dXJuU3RhdGUpKSB7XG4gICAgaWYgKHBpZWNlLmNhcHR1cmVkIHx8IHBpZWNlLmNvbG9yICE9PSBjb2xvcikgY29udGludWU7XG5cbiAgICBtb3Zlcy5wdXNoKC4uLmdldENoZXNzaW1hbHNMZWdhbE1vdmVzKHR1cm5TdGF0ZSwgcGllY2UuaWQpKTtcbiAgICBpZiAoIXBsYXllci5wb3dlclVubG9ja2VkKSBjb250aW51ZTtcblxuICAgIGZvciAoY29uc3QgYW5pbWFsIG9mIEFOSU1BTFMpIHtcbiAgICAgIGlmIChwbGF5ZXIuY2FyZHNbYW5pbWFsXS51c2VkKSBjb250aW51ZTtcbiAgICAgIG1vdmVzLnB1c2goLi4uZ2V0Q2hlc3NpbWFsc0xlZ2FsTW92ZXModHVyblN0YXRlLCBwaWVjZS5pZCwgYW5pbWFsKSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1vdmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hvb3NlQ2hlc3NpbWFsc0JvdE1vdmUoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBkaWZmaWN1bHR5OiBDaGVzc2ltYWxzQm90RGlmZmljdWx0eSA9ICdub3JtYWwnLFxuICBwcm9maWxlSWQ6IENoZXNzaW1hbHNCb3RQcm9maWxlSWQgPSBERUZBVUxUX0JPVF9QUk9GSUxFX0JZX0RJRkZJQ1VMVFlbZGlmZmljdWx0eV0sXG4gIG9wdGlvbnM6IENoZXNzaW1hbHNCb3RPcHRpb25zID0ge30sXG4pOiBDaGVzc2ltYWxzTW92ZSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IG1vdmVzID0gZ2V0Q2hlc3NpbWFsc0FsbExlZ2FsTW92ZXMoc3RhdGUpO1xuICBpZiAobW92ZXMubGVuZ3RoID09PSAwKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCBiYXNlU3R5bGUgPSBCT1RfU1RZTEVTW3Byb2ZpbGVJZF0gPz8gQk9UX1NUWUxFU1tERUZBVUxUX0JPVF9QUk9GSUxFX0JZX0RJRkZJQ1VMVFlbZGlmZmljdWx0eV1dO1xuICBjb25zdCBjaGFsbGVuZ2VQcmVzc3VyZSA9IGdldENoYWxsZW5nZVByZXNzdXJlKG9wdGlvbnMuY2hhbGxlbmdlUm91bmQpO1xuICBjb25zdCBzdHlsZSA9IHR1bmVCb3RTdHlsZShiYXNlU3R5bGUsIGRpZmZpY3VsdHksIGNoYWxsZW5nZVByZXNzdXJlKTtcblxuICBjb25zdCBxdWlja1Njb3JlZCA9IG1vdmVzXG4gICAgLm1hcCgobW92ZSkgPT4gKHsgbW92ZSwgc2NvcmU6IHNjb3JlQm90TW92ZShzdGF0ZSwgbW92ZSwgZGlmZmljdWx0eSwgc3R5bGUsIGNoYWxsZW5nZVByZXNzdXJlLCBmYWxzZSkgfSkpXG4gICAgLnNvcnQoKGEsIGIpID0+IGIuc2NvcmUgLSBhLnNjb3JlKTtcbiAgY29uc3QgbG9va2FoZWFkTGltaXQgPSBkaWZmaWN1bHR5ID09PSAnaGFyZCcgPyAzMiA6IGRpZmZpY3VsdHkgPT09ICdub3JtYWwnID8gMjQgOiAwO1xuICBjb25zdCBzY29yZWQgPSBxdWlja1Njb3JlZFxuICAgIC5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoe1xuICAgICAgbW92ZTogaXRlbS5tb3ZlLFxuICAgICAgc2NvcmU6XG4gICAgICAgIGluZGV4IDwgbG9va2FoZWFkTGltaXRcbiAgICAgICAgICA/IHNjb3JlQm90TW92ZVdpdGhMb29rYWhlYWQoc3RhdGUsIGl0ZW0ubW92ZSwgZGlmZmljdWx0eSwgc3R5bGUsIGNoYWxsZW5nZVByZXNzdXJlKVxuICAgICAgICAgIDogaXRlbS5zY29yZSxcbiAgICB9KSlcbiAgICAuc29ydCgoYSwgYikgPT4gYi5zY29yZSAtIGEuc2NvcmUpO1xuXG4gIGlmIChkaWZmaWN1bHR5ID09PSAnZWFzeScpIHtcbiAgICBjb25zdCBwbGF5YWJsZSA9IHNjb3JlZC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uc2NvcmUgPiAtMzAwMCk7XG4gICAgcmV0dXJuIHBpY2tOb2lzeUJvdE1vdmUocGxheWFibGUubGVuZ3RoID8gcGxheWFibGUgOiBzY29yZWQsIDAuNTUpO1xuICB9XG5cbiAgaWYgKGRpZmZpY3VsdHkgPT09ICdub3JtYWwnKSB7XG4gICAgcmV0dXJuIHNjb3JlZFswXT8ubW92ZTtcbiAgfVxuXG4gIGNvbnN0IHdpbm5pbmdNb3ZlID0gc2NvcmVkLmZpbmQoKGl0ZW0pID0+IGl0ZW0uc2NvcmUgPj0gMTAwMDApO1xuICBpZiAod2lubmluZ01vdmUpIHJldHVybiB3aW5uaW5nTW92ZS5tb3ZlO1xuXG4gIGNvbnN0IG9wcG9uZW50V2lubmluZ1RhcmdldHMgPSBuZXcgU2V0KFxuICAgIGdldEltbWVkaWF0ZVdpbm5pbmdNb3ZlcyhzdGF0ZSwgb3RoZXJDb2xvcihzdGF0ZS5jdXJyZW50VHVybikpLm1hcCgobW92ZSkgPT4gcG9zaXRpb25LZXkobW92ZS50bykpLFxuICApO1xuICBpZiAob3Bwb25lbnRXaW5uaW5nVGFyZ2V0cy5zaXplID4gMCkge1xuICAgIGNvbnN0IGJsb2NraW5nTW92ZSA9IHNjb3JlZC5maW5kKFxuICAgICAgKGl0ZW0pID0+IGl0ZW0ubW92ZS5jYXB0dXJlc1BpZWNlSWQgfHwgb3Bwb25lbnRXaW5uaW5nVGFyZ2V0cy5oYXMocG9zaXRpb25LZXkoaXRlbS5tb3ZlLnRvKSksXG4gICAgKTtcbiAgICBpZiAoYmxvY2tpbmdNb3ZlKSByZXR1cm4gYmxvY2tpbmdNb3ZlLm1vdmU7XG4gIH1cblxuICBjb25zdCBjaGFsbGVuZ2VDYXB0dXJlID0gY2hvb3NlQ2hhbGxlbmdlQmFzaWNDYXB0dXJlKHNjb3JlZCwgY2hhbGxlbmdlUHJlc3N1cmUpO1xuICBpZiAoY2hhbGxlbmdlQ2FwdHVyZSkgcmV0dXJuIGNoYWxsZW5nZUNhcHR1cmU7XG5cbiAgY29uc3QgY29uc2VydmF0aXZlQ2FwdHVyZSA9IGNob29zZUNvbnNlcnZhdGl2ZUhhcmRDYXB0dXJlKHN0YXRlLCBzY29yZWQpO1xuICBpZiAoY29uc2VydmF0aXZlQ2FwdHVyZSkgcmV0dXJuIGNvbnNlcnZhdGl2ZUNhcHR1cmU7XG5cbiAgcmV0dXJuIHNjb3JlZFswXT8ubW92ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5Q2hlc3NpbWFsc01vdmUoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBjYW5kaWRhdGU6IENoZXNzaW1hbHNNb3ZlLFxuKTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSB7XG4gIGNvbnN0IGxlZ2FsTW92ZSA9IGdldENoZXNzaW1hbHNMZWdhbE1vdmVzKHN0YXRlLCBjYW5kaWRhdGUucGllY2VJZCwgY2FuZGlkYXRlLmFuaW1hbCkuZmluZCgobW92ZSkgPT5cbiAgICBzYW1lUG9zaXRpb24obW92ZS5mcm9tLCBjYW5kaWRhdGUuZnJvbSkgJiYgc2FtZVBvc2l0aW9uKG1vdmUudG8sIGNhbmRpZGF0ZS50byksXG4gICk7XG5cbiAgaWYgKCFsZWdhbE1vdmUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NIRVNTSU1BTFNfSUxMRUdBTF9NT1ZFJyk7XG4gIH1cblxuICBjb25zdCBtb3ZlZFBpZWNlID0gYWN0aXZlUGllY2VzKHN0YXRlKS5maW5kKChwaWVjZSkgPT4gcGllY2UuaWQgPT09IGxlZ2FsTW92ZS5waWVjZUlkKTtcbiAgaWYgKCFtb3ZlZFBpZWNlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDSEVTU0lNQUxTX1BJRUNFX05PVF9GT1VORCcpO1xuICB9XG5cbiAgY29uc3QgcGllY2VzID0gYWN0aXZlUGllY2VzKHN0YXRlKS5tYXAoKHBpZWNlKSA9PiB7XG4gICAgaWYgKHBpZWNlLmlkID09PSBsZWdhbE1vdmUucGllY2VJZCkge1xuICAgICAgcmV0dXJuIHsgLi4ucGllY2UsIHBvc2l0aW9uOiB7IC4uLmxlZ2FsTW92ZS50byB9IH07XG4gICAgfVxuICAgIGlmIChwaWVjZS5pZCA9PT0gbGVnYWxNb3ZlLmNhcHR1cmVzUGllY2VJZCkge1xuICAgICAgcmV0dXJuIHsgLi4ucGllY2UsIGNhcHR1cmVkOiB0cnVlIH07XG4gICAgfVxuICAgIHJldHVybiBwaWVjZTtcbiAgfSk7XG5cbiAgY29uc3QgcGxheWVycyA9IHtcbiAgICAuLi5zdGF0ZS5wbGF5ZXJzLFxuICAgIFttb3ZlZFBpZWNlLmNvbG9yXToge1xuICAgICAgLi4uc3RhdGUucGxheWVyc1ttb3ZlZFBpZWNlLmNvbG9yXSxcbiAgICAgIGNhcmRzOlxuICAgICAgICBsZWdhbE1vdmUua2luZCA9PT0gJ3Bvd2VyJyAmJiBsZWdhbE1vdmUuYW5pbWFsXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIC4uLnN0YXRlLnBsYXllcnNbbW92ZWRQaWVjZS5jb2xvcl0uY2FyZHMsXG4gICAgICAgICAgICAgIFtsZWdhbE1vdmUuYW5pbWFsXToge1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLnBsYXllcnNbbW92ZWRQaWVjZS5jb2xvcl0uY2FyZHNbbGVnYWxNb3ZlLmFuaW1hbF0sXG4gICAgICAgICAgICAgICAgdXNlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHN0YXRlLnBsYXllcnNbbW92ZWRQaWVjZS5jb2xvcl0uY2FyZHMsXG4gICAgfSxcbiAgfTtcblxuICBjb25zdCBuZXh0U3RhdGUgPSByZWZyZXNoQ2hlc3NpbWFsc1Bvd2VyVW5sb2Nrcyh7XG4gICAgLi4uc3RhdGUsXG4gICAgcGllY2VzLFxuICAgIHBsYXllcnMsXG4gICAgY3VycmVudFR1cm46IG90aGVyQ29sb3IobW92ZWRQaWVjZS5jb2xvciksXG4gICAgbW92ZUNvdW50OiBzdGF0ZS5tb3ZlQ291bnQgKyAxLFxuICAgIGxhc3RNb3ZlOiBsZWdhbE1vdmUsXG4gIH0pO1xuXG4gIGNvbnN0IHByb21vdGVkID0gaXNQcm9tb3Rpb25Sb3cobmV4dFN0YXRlLmJvYXJkU2l6ZSwgbW92ZWRQaWVjZS5jb2xvciwgbGVnYWxNb3ZlLnRvKTtcbiAgY29uc3QgZW5lbXlQaWVjZXMgPSBhY3RpdmVQaWVjZXMobmV4dFN0YXRlKS5maWx0ZXIoXG4gICAgKHBpZWNlKSA9PiBwaWVjZS5jb2xvciAhPT0gbW92ZWRQaWVjZS5jb2xvciAmJiAhcGllY2UuY2FwdHVyZWQsXG4gICk7XG5cbiAgY29uc3QgcmVzb2x2ZWRTdGF0ZSA9XG4gICAgcHJvbW90ZWQgfHwgZW5lbXlQaWVjZXMubGVuZ3RoID09PSAwXG4gICAgICA/IHtcbiAgICAgICAgICAuLi5uZXh0U3RhdGUsXG4gICAgICAgICAgc3RhdHVzOiAnZmluaXNoZWQnIGFzIGNvbnN0LFxuICAgICAgICAgIHdpbm5lcjogbW92ZWRQaWVjZS5jb2xvcixcbiAgICAgICAgICB3aW5uZXJSZWFzb246IHByb21vdGVkID8gKCdwcm9tb3Rpb24nIGFzIGNvbnN0KSA6ICgnZWxpbWluYXRpb24nIGFzIGNvbnN0KSxcbiAgICAgICAgfVxuICAgICAgOiBuZXh0U3RhdGU7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5yZXNvbHZlZFN0YXRlLFxuICAgIG1vdmVIaXN0b3J5OiBbXG4gICAgICAuLi5lbnN1cmVNb3ZlSGlzdG9yeShzdGF0ZSksXG4gICAgICBjcmVhdGVNb3ZlSGlzdG9yeUVudHJ5KHJlc29sdmVkU3RhdGUsIGxlZ2FsTW92ZSksXG4gICAgXSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNoZXNzaW1hbHNSZXZpZXdTdGF0ZShcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIGVudHJ5OiBDaGVzc2ltYWxzTW92ZUhpc3RvcnlFbnRyeSxcbik6IENoZXNzaW1hbHNHYW1lU3RhdGUge1xuICBjb25zdCBiYXNlU3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUgPSB7IC4uLnN0YXRlIH07XG4gIGRlbGV0ZSBiYXNlU3RhdGUubGFzdE1vdmU7XG4gIGRlbGV0ZSBiYXNlU3RhdGUud2lubmVyO1xuICBkZWxldGUgYmFzZVN0YXRlLndpbm5lclJlYXNvbjtcbiAgcmV0dXJuIHtcbiAgICAuLi5iYXNlU3RhdGUsXG4gICAgc3RhdHVzOiBlbnRyeS5zdGF0dXMsXG4gICAgY3VycmVudFR1cm46IGVudHJ5LmN1cnJlbnRUdXJuLFxuICAgIHBpZWNlczogY2xvbmVQaWVjZXMoZW50cnkucGllY2VzKSxcbiAgICBtb3ZlQ291bnQ6IGVudHJ5Lm1vdmVOdW1iZXIsXG4gICAgLi4uKGVudHJ5Lndpbm5lciA/IHsgd2lubmVyOiBlbnRyeS53aW5uZXIgfSA6IHt9KSxcbiAgICAuLi4oZW50cnkud2lubmVyUmVhc29uID8geyB3aW5uZXJSZWFzb246IGVudHJ5Lndpbm5lclJlYXNvbiB9IDoge30pLFxuICAgIC4uLihlbnRyeS5tb3ZlID8geyBsYXN0TW92ZTogc2FuaXRpemVNb3ZlKGVudHJ5Lm1vdmUpIH0gOiB7fSksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZU1vdmVIaXN0b3J5RW50cnkoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBtb3ZlPzogQ2hlc3NpbWFsc01vdmUsXG4pOiBDaGVzc2ltYWxzTW92ZUhpc3RvcnlFbnRyeSB7XG4gIHJldHVybiB7XG4gICAgbW92ZU51bWJlcjogc3RhdGUubW92ZUNvdW50LFxuICAgIHBpZWNlczogY2xvbmVQaWVjZXMoc3RhdGUucGllY2VzKSxcbiAgICBjdXJyZW50VHVybjogc3RhdGUuY3VycmVudFR1cm4sXG4gICAgc3RhdHVzOiBzdGF0ZS5zdGF0dXMsXG4gICAgLi4uKG1vdmUgPyB7IG1vdmU6IHNhbml0aXplTW92ZShtb3ZlKSB9IDoge30pLFxuICAgIC4uLihzdGF0ZS53aW5uZXIgPyB7IHdpbm5lcjogc3RhdGUud2lubmVyIH0gOiB7fSksXG4gICAgLi4uKHN0YXRlLndpbm5lclJlYXNvbiA/IHsgd2lubmVyUmVhc29uOiBzdGF0ZS53aW5uZXJSZWFzb24gfSA6IHt9KSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZW5zdXJlTW92ZUhpc3Rvcnkoc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiBDaGVzc2ltYWxzTW92ZUhpc3RvcnlFbnRyeVtdIHtcbiAgaWYgKHN0YXRlLm1vdmVIaXN0b3J5Py5sZW5ndGgpIHJldHVybiBzdGF0ZS5tb3ZlSGlzdG9yeS5tYXAoY2xvbmVNb3ZlSGlzdG9yeUVudHJ5KTtcbiAgcmV0dXJuIFtjcmVhdGVNb3ZlSGlzdG9yeUVudHJ5KHN0YXRlKV07XG59XG5cbmZ1bmN0aW9uIGNsb25lTW92ZUhpc3RvcnlFbnRyeShlbnRyeTogQ2hlc3NpbWFsc01vdmVIaXN0b3J5RW50cnkpOiBDaGVzc2ltYWxzTW92ZUhpc3RvcnlFbnRyeSB7XG4gIHJldHVybiB7XG4gICAgLi4uZW50cnksXG4gICAgcGllY2VzOiBjbG9uZVBpZWNlcyhlbnRyeS5waWVjZXMpLFxuICAgIC4uLihlbnRyeS5tb3ZlID8geyBtb3ZlOiBzYW5pdGl6ZU1vdmUoZW50cnkubW92ZSkgfSA6IHt9KSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY2xvbmVQaWVjZXMocGllY2VzOiBDaGVzc2ltYWxzUGllY2VbXSk6IENoZXNzaW1hbHNQaWVjZVtdIHtcbiAgcmV0dXJuIHBpZWNlcy5tYXAoKHBpZWNlKSA9PiAoe1xuICAgIC4uLnBpZWNlLFxuICAgIHBvc2l0aW9uOiB7IC4uLnBpZWNlLnBvc2l0aW9uIH0sXG4gIH0pKTtcbn1cblxuZnVuY3Rpb24gc2FuaXRpemVNb3ZlKG1vdmU6IENoZXNzaW1hbHNNb3ZlKTogQ2hlc3NpbWFsc01vdmUge1xuICByZXR1cm4ge1xuICAgIHBpZWNlSWQ6IG1vdmUucGllY2VJZCxcbiAgICBmcm9tOiB7IC4uLm1vdmUuZnJvbSB9LFxuICAgIHRvOiB7IC4uLm1vdmUudG8gfSxcbiAgICBraW5kOiBtb3ZlLmtpbmQsXG4gICAgLi4uKG1vdmUuYW5pbWFsID8geyBhbmltYWw6IG1vdmUuYW5pbWFsIH0gOiB7fSksXG4gICAgLi4uKG1vdmUuY2FwdHVyZXNQaWVjZUlkID8geyBjYXB0dXJlc1BpZWNlSWQ6IG1vdmUuY2FwdHVyZXNQaWVjZUlkIH0gOiB7fSksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNpZ25DaGVzc2ltYWxzR2FtZShcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IsXG4pOiBDaGVzc2ltYWxzR2FtZVN0YXRlIHtcbiAgY29uc3QgcmVzaWduZWRTdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBzdGF0dXM6ICdmaW5pc2hlZCcsXG4gICAgd2lubmVyOiBvdGhlckNvbG9yKGNvbG9yKSxcbiAgICB3aW5uZXJSZWFzb246ICdyZXNpZ25hdGlvbicsXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5yZXNpZ25lZFN0YXRlLFxuICAgIG1vdmVIaXN0b3J5OiBbXG4gICAgICAuLi5lbnN1cmVNb3ZlSGlzdG9yeShzdGF0ZSksXG4gICAgICBjcmVhdGVNb3ZlSGlzdG9yeUVudHJ5KHJlc2lnbmVkU3RhdGUpLFxuICAgIF0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3NpdGlvbktleShwb3NpdGlvbjogQ2hlc3NpbWFsc1Bvc2l0aW9uKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke3Bvc2l0aW9uLnJvd306JHtwb3NpdGlvbi5jb2x9YDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ2FyZHMoKSB7XG4gIHJldHVybiBBTklNQUxTLnJlZHVjZShcbiAgICAoY2FyZHMsIHR5cGUpID0+ICh7XG4gICAgICAuLi5jYXJkcyxcbiAgICAgIFt0eXBlXTogeyB0eXBlLCB1c2VkOiBmYWxzZSB9LFxuICAgIH0pLFxuICAgIHt9IGFzIFJlY29yZDxDaGVzc2ltYWxzQW5pbWFsVHlwZSwgeyB0eXBlOiBDaGVzc2ltYWxzQW5pbWFsVHlwZTsgdXNlZDogYm9vbGVhbiB9PixcbiAgKTtcbn1cblxuZnVuY3Rpb24gYWN0aXZlUGllY2VzKHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogQ2hlc3NpbWFsc1BpZWNlW10ge1xuICByZXR1cm4gc3RhdGUucGllY2VzLmZpbHRlcigocGllY2UpOiBwaWVjZSBpcyBDaGVzc2ltYWxzUGllY2UgPT4gISFwaWVjZSk7XG59XG5cbmZ1bmN0aW9uIGdldEJhc2ljTW92ZXMoc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIHBpZWNlOiBDaGVzc2ltYWxzUGllY2UpOiBDaGVzc2ltYWxzTW92ZVtdIHtcbiAgY29uc3QgZGlyZWN0aW9uID0gcGllY2UuY29sb3IgPT09ICd3aGl0ZScgPyAtMSA6IDE7XG4gIGNvbnN0IG1vdmVzOiBDaGVzc2ltYWxzTW92ZVtdID0gW107XG4gIGNvbnN0IGZvcndhcmQgPSB7IHJvdzogcGllY2UucG9zaXRpb24ucm93ICsgZGlyZWN0aW9uLCBjb2w6IHBpZWNlLnBvc2l0aW9uLmNvbCB9O1xuXG4gIGlmIChpc0luc2lkZUJvYXJkKHN0YXRlLmJvYXJkU2l6ZSwgZm9yd2FyZCkgJiYgIWdldENoZXNzaW1hbHNQaWVjZUF0KHN0YXRlLCBmb3J3YXJkKSkge1xuICAgIG1vdmVzLnB1c2goe1xuICAgICAgcGllY2VJZDogcGllY2UuaWQsXG4gICAgICBmcm9tOiB7IC4uLnBpZWNlLnBvc2l0aW9uIH0sXG4gICAgICB0bzogZm9yd2FyZCxcbiAgICAgIGtpbmQ6ICdiYXNpYycsXG4gICAgfSk7XG4gIH1cblxuICBmb3IgKGNvbnN0IGNvbE9mZnNldCBvZiBbLTEsIDFdKSB7XG4gICAgY29uc3QgdGFyZ2V0ID0geyByb3c6IHBpZWNlLnBvc2l0aW9uLnJvdyArIGRpcmVjdGlvbiwgY29sOiBwaWVjZS5wb3NpdGlvbi5jb2wgKyBjb2xPZmZzZXQgfTtcbiAgICBjb25zdCB0YXJnZXRQaWVjZSA9IGdldENoZXNzaW1hbHNQaWVjZUF0KHN0YXRlLCB0YXJnZXQpO1xuICAgIGlmIChcbiAgICAgIGlzSW5zaWRlQm9hcmQoc3RhdGUuYm9hcmRTaXplLCB0YXJnZXQpICYmXG4gICAgICB0YXJnZXRQaWVjZSAmJlxuICAgICAgdGFyZ2V0UGllY2UuY29sb3IgIT09IHBpZWNlLmNvbG9yICYmXG4gICAgICAhaXNQcm9tb3Rpb25Sb3coc3RhdGUuYm9hcmRTaXplLCBwaWVjZS5jb2xvciwgdGFyZ2V0KVxuICAgICkge1xuICAgICAgbW92ZXMucHVzaCh7XG4gICAgICAgIHBpZWNlSWQ6IHBpZWNlLmlkLFxuICAgICAgICBmcm9tOiB7IC4uLnBpZWNlLnBvc2l0aW9uIH0sXG4gICAgICAgIHRvOiB0YXJnZXQsXG4gICAgICAgIGtpbmQ6ICdiYXNpYycsXG4gICAgICAgIGNhcHR1cmVzUGllY2VJZDogdGFyZ2V0UGllY2UuaWQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbW92ZXM7XG59XG5cbmZ1bmN0aW9uIGdldFBvd2VyTW92ZXMoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBwaWVjZTogQ2hlc3NpbWFsc1BpZWNlLFxuICBhbmltYWw6IENoZXNzaW1hbHNBbmltYWxUeXBlLFxuKTogQ2hlc3NpbWFsc01vdmVbXSB7XG4gIGlmIChhbmltYWwgPT09ICdrYW5nYXJvbycpIHtcbiAgICByZXR1cm4gZ2V0S2FuZ2Fyb29Nb3ZlcyhzdGF0ZSwgcGllY2UpO1xuICB9XG5cbiAgY29uc3QgZGlyZWN0aW9ucyA9IGdldFBvd2VyRGlyZWN0aW9ucyhhbmltYWwpO1xuICBjb25zdCBtb3ZlczogQ2hlc3NpbWFsc01vdmVbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgZGlyZWN0aW9uIG9mIGRpcmVjdGlvbnMpIHtcbiAgICBmb3IgKGxldCBkaXN0YW5jZSA9IDE7IGRpc3RhbmNlIDwgc3RhdGUuYm9hcmRTaXplOyBkaXN0YW5jZSArPSAxKSB7XG4gICAgICBjb25zdCB0YXJnZXQgPSB7XG4gICAgICAgIHJvdzogcGllY2UucG9zaXRpb24ucm93ICsgZGlyZWN0aW9uLnJvdyAqIGRpc3RhbmNlLFxuICAgICAgICBjb2w6IHBpZWNlLnBvc2l0aW9uLmNvbCArIGRpcmVjdGlvbi5jb2wgKiBkaXN0YW5jZSxcbiAgICAgIH07XG4gICAgICBpZiAoIWlzSW5zaWRlQm9hcmQoc3RhdGUuYm9hcmRTaXplLCB0YXJnZXQpKSBicmVhaztcbiAgICAgIGlmIChpc1Byb21vdGlvblJvdyhzdGF0ZS5ib2FyZFNpemUsIHBpZWNlLmNvbG9yLCB0YXJnZXQpKSBicmVhaztcblxuICAgICAgY29uc3QgdGFyZ2V0UGllY2UgPSBnZXRDaGVzc2ltYWxzUGllY2VBdChzdGF0ZSwgdGFyZ2V0KTtcbiAgICAgIGlmICh0YXJnZXRQaWVjZT8uY29sb3IgPT09IHBpZWNlLmNvbG9yKSBicmVhaztcblxuICAgICAgbW92ZXMucHVzaCh7XG4gICAgICAgIHBpZWNlSWQ6IHBpZWNlLmlkLFxuICAgICAgICBmcm9tOiB7IC4uLnBpZWNlLnBvc2l0aW9uIH0sXG4gICAgICAgIHRvOiB0YXJnZXQsXG4gICAgICAgIGtpbmQ6ICdwb3dlcicsXG4gICAgICAgIGFuaW1hbCxcbiAgICAgICAgLi4uKHRhcmdldFBpZWNlID8geyBjYXB0dXJlc1BpZWNlSWQ6IHRhcmdldFBpZWNlLmlkIH0gOiB7fSksXG4gICAgICB9KTtcblxuICAgICAgaWYgKHRhcmdldFBpZWNlKSBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbW92ZXM7XG59XG5cbmZ1bmN0aW9uIGdldEthbmdhcm9vTW92ZXMoc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIHBpZWNlOiBDaGVzc2ltYWxzUGllY2UpOiBDaGVzc2ltYWxzTW92ZVtdIHtcbiAgY29uc3QgbW92ZXM6IENoZXNzaW1hbHNNb3ZlW10gPSBbXTtcbiAgY29uc3QganVtcHMgPSBbXG4gICAgeyByb3c6IC0yLCBjb2w6IC0xIH0sXG4gICAgeyByb3c6IC0yLCBjb2w6IDEgfSxcbiAgICB7IHJvdzogLTEsIGNvbDogLTIgfSxcbiAgICB7IHJvdzogLTEsIGNvbDogMiB9LFxuICAgIHsgcm93OiAxLCBjb2w6IC0yIH0sXG4gICAgeyByb3c6IDEsIGNvbDogMiB9LFxuICAgIHsgcm93OiAyLCBjb2w6IC0xIH0sXG4gICAgeyByb3c6IDIsIGNvbDogMSB9LFxuICBdO1xuXG4gIGZvciAoY29uc3QganVtcCBvZiBqdW1wcykge1xuICAgIGNvbnN0IHRhcmdldCA9IHtcbiAgICAgIHJvdzogcGllY2UucG9zaXRpb24ucm93ICsganVtcC5yb3csXG4gICAgICBjb2w6IHBpZWNlLnBvc2l0aW9uLmNvbCArIGp1bXAuY29sLFxuICAgIH07XG4gICAgaWYgKCFpc0luc2lkZUJvYXJkKHN0YXRlLmJvYXJkU2l6ZSwgdGFyZ2V0KSkgY29udGludWU7XG4gICAgaWYgKGlzUHJvbW90aW9uUm93KHN0YXRlLmJvYXJkU2l6ZSwgcGllY2UuY29sb3IsIHRhcmdldCkpIGNvbnRpbnVlO1xuXG4gICAgY29uc3QgdGFyZ2V0UGllY2UgPSBnZXRDaGVzc2ltYWxzUGllY2VBdChzdGF0ZSwgdGFyZ2V0KTtcbiAgICBpZiAodGFyZ2V0UGllY2U/LmNvbG9yID09PSBwaWVjZS5jb2xvcikgY29udGludWU7XG5cbiAgICBtb3Zlcy5wdXNoKHtcbiAgICAgIHBpZWNlSWQ6IHBpZWNlLmlkLFxuICAgICAgZnJvbTogeyAuLi5waWVjZS5wb3NpdGlvbiB9LFxuICAgICAgdG86IHRhcmdldCxcbiAgICAgIGtpbmQ6ICdwb3dlcicsXG4gICAgICBhbmltYWw6ICdrYW5nYXJvbycsXG4gICAgICAuLi4odGFyZ2V0UGllY2UgPyB7IGNhcHR1cmVzUGllY2VJZDogdGFyZ2V0UGllY2UuaWQgfSA6IHt9KSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBtb3Zlcztcbn1cblxuZnVuY3Rpb24gc2NvcmVCb3RNb3ZlKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgbW92ZTogQ2hlc3NpbWFsc01vdmUsXG4gIGRpZmZpY3VsdHk6IENoZXNzaW1hbHNCb3REaWZmaWN1bHR5LFxuICBzdHlsZTogQ2hlc3NpbWFsc0JvdFN0eWxlLFxuICBjaGFsbGVuZ2VQcmVzc3VyZSA9IDAsXG4gIGluY2x1ZGVUYWN0aWNhbFByZXNzdXJlID0gdHJ1ZSxcbik6IG51bWJlciB7XG4gIGNvbnN0IGNvbG9yID0gc3RhdGUuY3VycmVudFR1cm47XG4gIGNvbnN0IHRhcmdldFBpZWNlID0gbW92ZS5jYXB0dXJlc1BpZWNlSWRcbiAgICA/IGFjdGl2ZVBpZWNlcyhzdGF0ZSkuZmluZCgocGllY2UpID0+IHBpZWNlLmlkID09PSBtb3ZlLmNhcHR1cmVzUGllY2VJZClcbiAgICA6IHVuZGVmaW5lZDtcbiAgY29uc3QgYWR2YW5jZW1lbnQgPVxuICAgIGNvbG9yID09PSAnd2hpdGUnID8gc3RhdGUuYm9hcmRTaXplIC0gMSAtIG1vdmUudG8ucm93IDogbW92ZS50by5yb3c7XG4gIGxldCBzY29yZSA9IGFkdmFuY2VtZW50ICogMjQgKiBzdHlsZS5hZHZhbmNlbWVudDtcbiAgY29uc3Qgc3RlcHNUb1Byb21vdGlvbiA9XG4gICAgY29sb3IgPT09ICd3aGl0ZScgPyBtb3ZlLnRvLnJvdyA6IHN0YXRlLmJvYXJkU2l6ZSAtIDEgLSBtb3ZlLnRvLnJvdztcbiAgc2NvcmUgKz0gTWF0aC5tYXgoMCwgc3RhdGUuYm9hcmRTaXplIC0gMSAtIHN0ZXBzVG9Qcm9tb3Rpb24pICogMTAgKiBjaGFsbGVuZ2VQcmVzc3VyZSAqIHN0eWxlLmFkdmFuY2VtZW50O1xuXG4gIGlmIChtb3ZlLmtpbmQgPT09ICdiYXNpYycgJiYgaXNQcm9tb3Rpb25Sb3coc3RhdGUuYm9hcmRTaXplLCBjb2xvciwgbW92ZS50bykpIHtcbiAgICBzY29yZSArPSAxMDAwMCArIDI1MDAgKiBjaGFsbGVuZ2VQcmVzc3VyZTtcbiAgfVxuICBpZiAodGFyZ2V0UGllY2UpIHtcbiAgICBzY29yZSArPSAoNTIwICsgMTgwICogY2hhbGxlbmdlUHJlc3N1cmUpICogc3R5bGUuY2FwdHVyZTtcbiAgICBpZiAobW92ZS5raW5kID09PSAnYmFzaWMnKSBzY29yZSArPSAxNjAgKiBjaGFsbGVuZ2VQcmVzc3VyZSAqIHN0eWxlLmNhcHR1cmU7XG4gICAgY29uc3QgdGFyZ2V0QWR2YW5jZW1lbnQgPVxuICAgICAgdGFyZ2V0UGllY2UuY29sb3IgPT09ICd3aGl0ZSdcbiAgICAgICAgPyBzdGF0ZS5ib2FyZFNpemUgLSAxIC0gdGFyZ2V0UGllY2UucG9zaXRpb24ucm93XG4gICAgICAgIDogdGFyZ2V0UGllY2UucG9zaXRpb24ucm93O1xuICAgIHNjb3JlICs9IHRhcmdldEFkdmFuY2VtZW50ICogKDE2ICsgOCAqIGNoYWxsZW5nZVByZXNzdXJlKSAqIHN0eWxlLmNhcHR1cmU7XG4gIH1cbiAgaWYgKG1vdmUua2luZCA9PT0gJ3Bvd2VyJykge1xuICAgIHNjb3JlICs9ICh0YXJnZXRQaWVjZSA/IDEyMCA6IGRpZmZpY3VsdHkgPT09ICdoYXJkJyA/IC02MCAtIDE3MCAqIGNoYWxsZW5nZVByZXNzdXJlIDogLTMwKSAqIHN0eWxlLnBvd2VyO1xuICB9XG4gIGlmIChtb3ZlLmFuaW1hbCA9PT0gJ2xpb24nKSBzY29yZSAtPSAyMCAqIHN0eWxlLnBvd2VyO1xuICBpZiAobW92ZS5hbmltYWwgPT09ICdrYW5nYXJvbycpIHNjb3JlICs9IDE0ICogc3R5bGUucG93ZXI7XG4gIGlmICh3b3VsZFVubG9ja1Bvd2VyKHN0YXRlLCBjb2xvciwgbW92ZS50bykpIHNjb3JlICs9IDkwICogc3R5bGUudW5sb2NrO1xuICBpZiAoaW5jbHVkZVRhY3RpY2FsUHJlc3N1cmUgJiYgc3RhdGUuYm9hcmRTaXplIDw9IDYpIHtcbiAgICBzY29yZSArPSBjb3VudFBvd2VyUmVhY2hBZnRlck1vdmUoc3RhdGUsIG1vdmUsIGNvbG9yKSAqIChkaWZmaWN1bHR5ID09PSAnaGFyZCcgPyA4IDogNCkgKiBzdHlsZS5tb2JpbGl0eTtcbiAgICBzY29yZSArPSBjb3VudFByb3RlY3RlZFRocmVhdHNBZnRlck1vdmUoc3RhdGUsIG1vdmUsIGNvbG9yKSAqIChkaWZmaWN1bHR5ID09PSAnaGFyZCcgPyAzNiA6IDE4KSAqIHN0eWxlLnRyYXA7XG4gICAgc2NvcmUgKz0gc2NvcmVFbmRnYW1lUHJlc3N1cmUoc3RhdGUsIG1vdmUsIGNvbG9yKSAqIHN0eWxlLmVuZGdhbWU7XG4gIH0gZWxzZSB7XG4gICAgc2NvcmUgKz0gc2NvcmVFbmRnYW1lUHJlc3N1cmUoc3RhdGUsIG1vdmUsIGNvbG9yKSAqIHN0eWxlLmVuZGdhbWU7XG4gIH1cbiAgaWYgKGRpZmZpY3VsdHkgPT09ICdoYXJkJyAmJiBpc1NxdWFyZVZ1bG5lcmFibGVBZnRlck1vdmUoc3RhdGUsIG1vdmUpKSB7XG4gICAgc2NvcmUgLT0gKHRhcmdldFBpZWNlID8gODAgOiAxNDApICogc3R5bGUuc2FmZXR5O1xuICB9XG4gIHNjb3JlICs9IChNYXRoLnJhbmRvbSgpIC0gMC41KSAqIHN0eWxlLnJhbmRvbW5lc3M7XG5cbiAgcmV0dXJuIHNjb3JlO1xufVxuXG5mdW5jdGlvbiBzY29yZUJvdE1vdmVXaXRoTG9va2FoZWFkKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgbW92ZTogQ2hlc3NpbWFsc01vdmUsXG4gIGRpZmZpY3VsdHk6IENoZXNzaW1hbHNCb3REaWZmaWN1bHR5LFxuICBzdHlsZTogQ2hlc3NpbWFsc0JvdFN0eWxlLFxuICBjaGFsbGVuZ2VQcmVzc3VyZSA9IDAsXG4pOiBudW1iZXIge1xuICBsZXQgc2NvcmUgPSBzY29yZUJvdE1vdmUoc3RhdGUsIG1vdmUsIGRpZmZpY3VsdHksIHN0eWxlLCBjaGFsbGVuZ2VQcmVzc3VyZSk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBhZnRlck1vdmUgPSBhcHBseUNoZXNzaW1hbHNNb3ZlKHN0YXRlLCBtb3ZlKTtcbiAgICBpZiAoYWZ0ZXJNb3ZlLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgcmV0dXJuIHNjb3JlICsgNTAwMDtcblxuICAgIGNvbnN0IG9wcG9uZW50TW92ZXMgPSBnZXRDaGVzc2ltYWxzQWxsTGVnYWxNb3ZlcyhhZnRlck1vdmUpO1xuICAgIGNvbnN0IG9wcG9uZW50SW1tZWRpYXRlV2luID0gb3Bwb25lbnRNb3Zlcy5zb21lKFxuICAgICAgKG9wcG9uZW50TW92ZSkgPT5cbiAgICAgICAgb3Bwb25lbnRNb3ZlLmtpbmQgPT09ICdiYXNpYycgJiZcbiAgICAgICAgaXNQcm9tb3Rpb25Sb3coYWZ0ZXJNb3ZlLmJvYXJkU2l6ZSwgYWZ0ZXJNb3ZlLmN1cnJlbnRUdXJuLCBvcHBvbmVudE1vdmUudG8pLFxuICAgICk7XG4gICAgaWYgKG9wcG9uZW50SW1tZWRpYXRlV2luKSB7XG4gICAgICBzY29yZSAtPSAoZGlmZmljdWx0eSA9PT0gJ2Vhc3knID8gMTgwMCA6IGRpZmZpY3VsdHkgPT09ICdub3JtYWwnID8gNTIwMCA6IDgwMDAgKyA0MjAwICogY2hhbGxlbmdlUHJlc3N1cmUpICogc3R5bGUuc2FmZXR5O1xuICAgIH1cblxuICAgIGNvbnN0IG1vdmVkUGllY2UgPSBhZnRlck1vdmUucGllY2VzLmZpbmQoKHBpZWNlKSA9PiBwaWVjZS5pZCA9PT0gbW92ZS5waWVjZUlkICYmICFwaWVjZS5jYXB0dXJlZCk7XG4gICAgaWYgKG1vdmVkUGllY2UpIHtcbiAgICAgIGNvbnN0IGNhbkNhcHR1cmVNb3ZlZFBpZWNlID0gb3Bwb25lbnRNb3Zlcy5zb21lKChvcHBvbmVudE1vdmUpID0+IG9wcG9uZW50TW92ZS5jYXB0dXJlc1BpZWNlSWQgPT09IG1vdmUucGllY2VJZCk7XG4gICAgICBpZiAoY2FuQ2FwdHVyZU1vdmVkUGllY2UpIHtcbiAgICAgICAgc2NvcmUgLT0gKG1vdmUuY2FwdHVyZXNQaWVjZUlkID8gMTgwIDogZGlmZmljdWx0eSA9PT0gJ2Vhc3knID8gMTIwIDogZGlmZmljdWx0eSA9PT0gJ25vcm1hbCcgPyAzNjAgOiA1NjApXG4gICAgICAgICAgKiBzdHlsZS5zYWZldHlcbiAgICAgICAgICAqICgxICsgY2hhbGxlbmdlUHJlc3N1cmUpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjZW50ZXIgPSAoYWZ0ZXJNb3ZlLmJvYXJkU2l6ZSAtIDEpIC8gMjtcbiAgICAgIGNvbnN0IGNlbnRlckNvbnRyb2wgPSBNYXRoLm1heCgwLCBhZnRlck1vdmUuYm9hcmRTaXplIC8gMiAtIE1hdGguYWJzKG1vdmVkUGllY2UucG9zaXRpb24uY29sIC0gY2VudGVyKSk7XG4gICAgICBzY29yZSArPSBjZW50ZXJDb250cm9sICogKGRpZmZpY3VsdHkgPT09ICdoYXJkJyA/IDE4IDogMTApICogc3R5bGUuY2VudGVyO1xuICAgIH1cblxuICAgIGNvbnN0IG9wcG9uZW50QmVzdFJlcGx5ID0gb3Bwb25lbnRNb3Zlc1xuICAgICAgLm1hcCgob3Bwb25lbnRNb3ZlKSA9PiBzY29yZUJvdE1vdmUoYWZ0ZXJNb3ZlLCBvcHBvbmVudE1vdmUsIGRpZmZpY3VsdHksIHN0eWxlLCBjaGFsbGVuZ2VQcmVzc3VyZSwgZmFsc2UpKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGIgLSBhKVswXTtcblxuICAgIGlmIChvcHBvbmVudEJlc3RSZXBseSkge1xuICAgICAgY29uc3QgcmVwbHlXZWlnaHQgPSBkaWZmaWN1bHR5ID09PSAnZWFzeScgPyAwLjEyIDogZGlmZmljdWx0eSA9PT0gJ25vcm1hbCcgPyAwLjMyICsgMC4wOCAqIGNoYWxsZW5nZVByZXNzdXJlIDogMC40OCArIDAuMTYgKiBjaGFsbGVuZ2VQcmVzc3VyZTtcbiAgICAgIHNjb3JlIC09IG9wcG9uZW50QmVzdFJlcGx5ICogcmVwbHlXZWlnaHQgKiBzdHlsZS5yZXBseTtcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIHNjb3JlIC09IDEwMDA7XG4gIH1cblxuICByZXR1cm4gc2NvcmU7XG59XG5cbmZ1bmN0aW9uIGdldENoYWxsZW5nZVByZXNzdXJlKHJvdW5kPzogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKCFyb3VuZCB8fCByb3VuZCA8PSAyKSByZXR1cm4gMDtcbiAgcmV0dXJuIE1hdGgubWluKDEsIE1hdGgubWF4KDAsIChyb3VuZCAtIDIpIC8gNikpO1xufVxuXG5mdW5jdGlvbiB0dW5lQm90U3R5bGUoXG4gIHN0eWxlOiBDaGVzc2ltYWxzQm90U3R5bGUsXG4gIGRpZmZpY3VsdHk6IENoZXNzaW1hbHNCb3REaWZmaWN1bHR5LFxuICBjaGFsbGVuZ2VQcmVzc3VyZTogbnVtYmVyLFxuKTogQ2hlc3NpbWFsc0JvdFN0eWxlIHtcbiAgaWYgKCFjaGFsbGVuZ2VQcmVzc3VyZSkgcmV0dXJuIHN0eWxlO1xuICBjb25zdCBwcmVzc3VyZSA9IGRpZmZpY3VsdHkgPT09ICdlYXN5JyA/IGNoYWxsZW5nZVByZXNzdXJlICogMC40NSA6IGNoYWxsZW5nZVByZXNzdXJlO1xuICByZXR1cm4ge1xuICAgIC4uLnN0eWxlLFxuICAgIGNhcHR1cmU6IHN0eWxlLmNhcHR1cmUgKiAoMSArIHByZXNzdXJlICogMC4yOCksXG4gICAgc2FmZXR5OiBzdHlsZS5zYWZldHkgKiAoMSArIHByZXNzdXJlICogMC4zNCksXG4gICAgcmVwbHk6IHN0eWxlLnJlcGx5ICogKDEgKyBwcmVzc3VyZSAqIDAuMjIpLFxuICAgIGNlbnRlcjogc3R5bGUuY2VudGVyICogKDEgKyBwcmVzc3VyZSAqIDAuMTIpLFxuICAgIHJhbmRvbW5lc3M6IHN0eWxlLnJhbmRvbW5lc3MgKiAoMSAtIHByZXNzdXJlICogMC42NSksXG4gICAgc3ByZWFkOiBzdHlsZS5zcHJlYWQgKiAoMSAtIHByZXNzdXJlICogMC4zNSksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNob29zZUNoYWxsZW5nZUJhc2ljQ2FwdHVyZShcbiAgc2NvcmVkOiB7IG1vdmU6IENoZXNzaW1hbHNNb3ZlOyBzY29yZTogbnVtYmVyIH1bXSxcbiAgY2hhbGxlbmdlUHJlc3N1cmU6IG51bWJlcixcbik6IENoZXNzaW1hbHNNb3ZlIHwgdW5kZWZpbmVkIHtcbiAgaWYgKGNoYWxsZW5nZVByZXNzdXJlIDwgMC41KSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIGNvbnN0IGJlc3QgPSBzY29yZWRbMF07XG4gIGNvbnN0IGJlc3RCYXNpY0NhcHR1cmUgPSBzY29yZWQuZmluZCgoaXRlbSkgPT4gaXRlbS5tb3ZlLmtpbmQgPT09ICdiYXNpYycgJiYgaXRlbS5tb3ZlLmNhcHR1cmVzUGllY2VJZCk7XG4gIGlmICghYmVzdCB8fCAhYmVzdEJhc2ljQ2FwdHVyZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgaWYgKGJlc3QubW92ZS5raW5kID09PSAnYmFzaWMnICYmIGJlc3QubW92ZS5jYXB0dXJlc1BpZWNlSWQpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgY29uc3QgdG9sZXJhbmNlID0gYmVzdC5tb3ZlLmtpbmQgPT09ICdwb3dlcicgJiYgIWJlc3QubW92ZS5jYXB0dXJlc1BpZWNlSWQgPyAxODAwIDogOTAwO1xuICByZXR1cm4gYmVzdC5zY29yZSAtIGJlc3RCYXNpY0NhcHR1cmUuc2NvcmUgPD0gdG9sZXJhbmNlID8gYmVzdEJhc2ljQ2FwdHVyZS5tb3ZlIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBjb3VudFBvd2VyUmVhY2hBZnRlck1vdmUoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBtb3ZlOiBDaGVzc2ltYWxzTW92ZSxcbiAgY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcixcbik6IG51bWJlciB7XG4gIHRyeSB7XG4gICAgY29uc3QgYWZ0ZXJNb3ZlID0gYXBwbHlDaGVzc2ltYWxzTW92ZShzdGF0ZSwgbW92ZSk7XG4gICAgY29uc3QgZXZhbHVhdGlvblN0YXRlID0geyAuLi5hZnRlck1vdmUsIGN1cnJlbnRUdXJuOiBjb2xvciB9O1xuICAgIHJldHVybiBnZXRDaGVzc2ltYWxzQWxsTGVnYWxNb3ZlcyhldmFsdWF0aW9uU3RhdGUsIGNvbG9yKS5maWx0ZXIoKG5leHRNb3ZlKSA9PiBuZXh0TW92ZS5raW5kID09PSAncG93ZXInKS5sZW5ndGg7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvdW50UHJvdGVjdGVkVGhyZWF0c0FmdGVyTW92ZShcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIG1vdmU6IENoZXNzaW1hbHNNb3ZlLFxuICBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yLFxuKTogbnVtYmVyIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBhZnRlck1vdmUgPSBhcHBseUNoZXNzaW1hbHNNb3ZlKHN0YXRlLCBtb3ZlKTtcbiAgICBjb25zdCBldmFsdWF0aW9uU3RhdGUgPSB7IC4uLmFmdGVyTW92ZSwgY3VycmVudFR1cm46IGNvbG9yIH07XG4gICAgY29uc3Qgb3VyTW92ZXMgPSBnZXRDaGVzc2ltYWxzQWxsTGVnYWxNb3ZlcyhldmFsdWF0aW9uU3RhdGUsIGNvbG9yKTtcbiAgICBjb25zdCBlbmVteVBpZWNlcyA9IGFjdGl2ZVBpZWNlcyhhZnRlck1vdmUpLmZpbHRlcigocGllY2UpID0+IHBpZWNlLmNvbG9yICE9PSBjb2xvciAmJiAhcGllY2UuY2FwdHVyZWQpO1xuICAgIHJldHVybiBlbmVteVBpZWNlcy5maWx0ZXIoKHBpZWNlKSA9PlxuICAgICAgb3VyTW92ZXMuc29tZSgobmV4dE1vdmUpID0+IG5leHRNb3ZlLmNhcHR1cmVzUGllY2VJZCA9PT0gcGllY2UuaWQpLFxuICAgICkubGVuZ3RoO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuXG5mdW5jdGlvbiBzY29yZUVuZGdhbWVQcmVzc3VyZShcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIG1vdmU6IENoZXNzaW1hbHNNb3ZlLFxuICBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yLFxuKTogbnVtYmVyIHtcbiAgY29uc3QgcmVtYWluaW5nRW5lbXlQaWVjZXMgPSBhY3RpdmVQaWVjZXMoc3RhdGUpLmZpbHRlcigocGllY2UpID0+IHBpZWNlLmNvbG9yICE9PSBjb2xvciAmJiAhcGllY2UuY2FwdHVyZWQpLmxlbmd0aDtcbiAgY29uc3QgdXJnZW5jeSA9IHJlbWFpbmluZ0VuZW15UGllY2VzIDw9IE1hdGgubWF4KDIsIE1hdGguZmxvb3Ioc3RhdGUuYm9hcmRTaXplIC8gMikpID8gMS42IDogMTtcbiAgY29uc3QgZGlzdGFuY2VUb1Byb21vdGlvbiA9XG4gICAgY29sb3IgPT09ICd3aGl0ZScgPyBtb3ZlLnRvLnJvdyA6IHN0YXRlLmJvYXJkU2l6ZSAtIDEgLSBtb3ZlLnRvLnJvdztcbiAgcmV0dXJuIE1hdGgubWF4KDAsIHN0YXRlLmJvYXJkU2l6ZSAtIGRpc3RhbmNlVG9Qcm9tb3Rpb24pICogMTQgKiB1cmdlbmN5O1xufVxuXG5mdW5jdGlvbiBjaG9vc2VDb25zZXJ2YXRpdmVIYXJkQ2FwdHVyZShcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIHNjb3JlZDogeyBtb3ZlOiBDaGVzc2ltYWxzTW92ZTsgc2NvcmU6IG51bWJlciB9W10sXG4pOiBDaGVzc2ltYWxzTW92ZSB8IHVuZGVmaW5lZCB7XG4gIGlmIChzdGF0ZS5ib2FyZFNpemUgIT09IDgpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgY29uc3QgYmVzdCA9IHNjb3JlZFswXTtcbiAgaWYgKCFiZXN0IHx8IGJlc3QubW92ZS5raW5kICE9PSAncG93ZXInIHx8ICFiZXN0Lm1vdmUuY2FwdHVyZXNQaWVjZUlkIHx8IGJlc3Quc2NvcmUgPj0gMTAwMDApIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgYmVzdEJhc2ljQ2FwdHVyZSA9IHNjb3JlZC5maW5kKChpdGVtKSA9PiBpdGVtLm1vdmUua2luZCA9PT0gJ2Jhc2ljJyAmJiBpdGVtLm1vdmUuY2FwdHVyZXNQaWVjZUlkKTtcbiAgaWYgKCFiZXN0QmFzaWNDYXB0dXJlKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIHJldHVybiBiZXN0LnNjb3JlIC0gYmVzdEJhc2ljQ2FwdHVyZS5zY29yZSA8PSA2NTAgPyBiZXN0QmFzaWNDYXB0dXJlLm1vdmUgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHBpY2tOb2lzeUJvdE1vdmUoXG4gIHNjb3JlZDogQXJyYXk8eyBtb3ZlOiBDaGVzc2ltYWxzTW92ZTsgc2NvcmU6IG51bWJlciB9PixcbiAgc3ByZWFkOiBudW1iZXIsXG4pOiBDaGVzc2ltYWxzTW92ZSB8IHVuZGVmaW5lZCB7XG4gIGlmIChzY29yZWQubGVuZ3RoID09PSAwKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCBwb29sU2l6ZSA9IE1hdGgubWF4KDEsIE1hdGguY2VpbChzY29yZWQubGVuZ3RoICogc3ByZWFkKSk7XG4gIGNvbnN0IHBvb2wgPSBzY29yZWQuc2xpY2UoMCwgcG9vbFNpemUpO1xuICBjb25zdCB0b3BTY29yZSA9IHBvb2xbMF0/LnNjb3JlID8/IDA7XG4gIGNvbnN0IHdlaWdodGVkID0gcG9vbC5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgY29uc3QgcmVsYXRpdmUgPSBNYXRoLm1heCgwLCBpdGVtLnNjb3JlIC0gdG9wU2NvcmUgKyAxMjAwKTtcbiAgICBjb25zdCB3ZWlnaHQgPSBNYXRoLm1heCgxLCByZWxhdGl2ZSAvIDEyMCArIChwb29sLmxlbmd0aCAtIGluZGV4KSAqIDIpO1xuICAgIHJldHVybiB7IC4uLml0ZW0sIHdlaWdodCB9O1xuICB9KTtcbiAgY29uc3QgdG90YWxXZWlnaHQgPSB3ZWlnaHRlZC5yZWR1Y2UoKHRvdGFsLCBpdGVtKSA9PiB0b3RhbCArIGl0ZW0ud2VpZ2h0LCAwKTtcbiAgbGV0IGN1cnNvciA9IE1hdGgucmFuZG9tKCkgKiB0b3RhbFdlaWdodDtcbiAgZm9yIChjb25zdCBpdGVtIG9mIHdlaWdodGVkKSB7XG4gICAgY3Vyc29yIC09IGl0ZW0ud2VpZ2h0O1xuICAgIGlmIChjdXJzb3IgPD0gMCkgcmV0dXJuIGl0ZW0ubW92ZTtcbiAgfVxuICByZXR1cm4gcG9vbFswXT8ubW92ZTtcbn1cblxuZnVuY3Rpb24gZ2V0SW1tZWRpYXRlV2lubmluZ01vdmVzKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcixcbik6IENoZXNzaW1hbHNNb3ZlW10ge1xuICByZXR1cm4gZ2V0Q2hlc3NpbWFsc0FsbExlZ2FsTW92ZXMoc3RhdGUsIGNvbG9yKS5maWx0ZXIoXG4gICAgKG1vdmUpID0+IG1vdmUua2luZCA9PT0gJ2Jhc2ljJyAmJiBpc1Byb21vdGlvblJvdyhzdGF0ZS5ib2FyZFNpemUsIGNvbG9yLCBtb3ZlLnRvKSxcbiAgKTtcbn1cblxuZnVuY3Rpb24gd291bGRVbmxvY2tQb3dlcihcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IsXG4gIHBvc2l0aW9uOiBDaGVzc2ltYWxzUG9zaXRpb24sXG4pOiBib29sZWFuIHtcbiAgaWYgKHN0YXRlLnBsYXllcnNbY29sb3JdLnBvd2VyVW5sb2NrZWQpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgY2VudGVyVG9wID0gc3RhdGUuYm9hcmRTaXplIC8gMiAtIDE7XG4gIGNvbnN0IGNlbnRlckJvdHRvbSA9IHN0YXRlLmJvYXJkU2l6ZSAvIDI7XG4gIHJldHVybiBjb2xvciA9PT0gJ3doaXRlJyA/IHBvc2l0aW9uLnJvdyA8PSBjZW50ZXJUb3AgOiBwb3NpdGlvbi5yb3cgPj0gY2VudGVyQm90dG9tO1xufVxuXG5mdW5jdGlvbiBpc1NxdWFyZVZ1bG5lcmFibGVBZnRlck1vdmUoc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIG1vdmU6IENoZXNzaW1hbHNNb3ZlKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgY29uc3QgYWZ0ZXJNb3ZlID0gYXBwbHlDaGVzc2ltYWxzTW92ZShzdGF0ZSwgbW92ZSk7XG4gICAgaWYgKGFmdGVyTW92ZS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gZ2V0Q2hlc3NpbWFsc0FsbExlZ2FsTW92ZXMoYWZ0ZXJNb3ZlKS5zb21lKChlbmVteU1vdmUpID0+XG4gICAgICBzYW1lUG9zaXRpb24oZW5lbXlNb3ZlLnRvLCBtb3ZlLnRvKSAmJiAhIWVuZW15TW92ZS5jYXB0dXJlc1BpZWNlSWQsXG4gICAgKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFBvd2VyRGlyZWN0aW9ucyhhbmltYWw6IENoZXNzaW1hbHNBbmltYWxUeXBlKTogQ2hlc3NpbWFsc1Bvc2l0aW9uW10ge1xuICBpZiAoYW5pbWFsID09PSAnZWFnbGUnKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHsgcm93OiAtMSwgY29sOiAtMSB9LFxuICAgICAgeyByb3c6IC0xLCBjb2w6IDEgfSxcbiAgICAgIHsgcm93OiAxLCBjb2w6IC0xIH0sXG4gICAgICB7IHJvdzogMSwgY29sOiAxIH0sXG4gICAgXTtcbiAgfVxuICBpZiAoYW5pbWFsID09PSAnYnVsbCcpIHtcbiAgICByZXR1cm4gW1xuICAgICAgeyByb3c6IC0xLCBjb2w6IDAgfSxcbiAgICAgIHsgcm93OiAxLCBjb2w6IDAgfSxcbiAgICAgIHsgcm93OiAwLCBjb2w6IC0xIH0sXG4gICAgICB7IHJvdzogMCwgY29sOiAxIH0sXG4gICAgXTtcbiAgfVxuICByZXR1cm4gW1xuICAgIHsgcm93OiAtMSwgY29sOiAtMSB9LFxuICAgIHsgcm93OiAtMSwgY29sOiAwIH0sXG4gICAgeyByb3c6IC0xLCBjb2w6IDEgfSxcbiAgICB7IHJvdzogMCwgY29sOiAtMSB9LFxuICAgIHsgcm93OiAwLCBjb2w6IDEgfSxcbiAgICB7IHJvdzogMSwgY29sOiAtMSB9LFxuICAgIHsgcm93OiAxLCBjb2w6IDAgfSxcbiAgICB7IHJvdzogMSwgY29sOiAxIH0sXG4gIF07XG59XG5cbmZ1bmN0aW9uIHJlZnJlc2hDaGVzc2ltYWxzUG93ZXJVbmxvY2tzKHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSB7XG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgcGxheWVyczoge1xuICAgICAgd2hpdGU6IHtcbiAgICAgICAgLi4uc3RhdGUucGxheWVycy53aGl0ZSxcbiAgICAgICAgcG93ZXJVbmxvY2tlZDpcbiAgICAgICAgICBzdGF0ZS5wbGF5ZXJzLndoaXRlLnBvd2VyVW5sb2NrZWQgfHxcbiAgICAgICAgICBoYXNDcm9zc2VkQ2VudGVyKHN0YXRlLCAnd2hpdGUnKSB8fFxuICAgICAgICAgIGhhc0VuZW15RW50ZXJlZEhvbWUoc3RhdGUsICd3aGl0ZScpLFxuICAgICAgfSxcbiAgICAgIGJsYWNrOiB7XG4gICAgICAgIC4uLnN0YXRlLnBsYXllcnMuYmxhY2ssXG4gICAgICAgIHBvd2VyVW5sb2NrZWQ6XG4gICAgICAgICAgc3RhdGUucGxheWVycy5ibGFjay5wb3dlclVubG9ja2VkIHx8XG4gICAgICAgICAgaGFzQ3Jvc3NlZENlbnRlcihzdGF0ZSwgJ2JsYWNrJykgfHxcbiAgICAgICAgICBoYXNFbmVteUVudGVyZWRIb21lKHN0YXRlLCAnYmxhY2snKSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gaGFzQ3Jvc3NlZENlbnRlcihzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcik6IGJvb2xlYW4ge1xuICBjb25zdCBjZW50ZXJUb3AgPSBzdGF0ZS5ib2FyZFNpemUgLyAyIC0gMTtcbiAgY29uc3QgY2VudGVyQm90dG9tID0gc3RhdGUuYm9hcmRTaXplIC8gMjtcbiAgcmV0dXJuIGFjdGl2ZVBpZWNlcyhzdGF0ZSkuc29tZSgocGllY2UpID0+IHtcbiAgICBpZiAocGllY2UuY29sb3IgIT09IGNvbG9yIHx8IHBpZWNlLmNhcHR1cmVkKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIGNvbG9yID09PSAnd2hpdGUnID8gcGllY2UucG9zaXRpb24ucm93IDw9IGNlbnRlclRvcCA6IHBpZWNlLnBvc2l0aW9uLnJvdyA+PSBjZW50ZXJCb3R0b207XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBoYXNFbmVteUVudGVyZWRIb21lKHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yKTogYm9vbGVhbiB7XG4gIGNvbnN0IGNlbnRlclRvcCA9IHN0YXRlLmJvYXJkU2l6ZSAvIDIgLSAxO1xuICBjb25zdCBjZW50ZXJCb3R0b20gPSBzdGF0ZS5ib2FyZFNpemUgLyAyO1xuICBjb25zdCBlbmVteSA9IG90aGVyQ29sb3IoY29sb3IpO1xuICByZXR1cm4gYWN0aXZlUGllY2VzKHN0YXRlKS5zb21lKChwaWVjZSkgPT4ge1xuICAgIGlmIChwaWVjZS5jb2xvciAhPT0gZW5lbXkgfHwgcGllY2UuY2FwdHVyZWQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gY29sb3IgPT09ICd3aGl0ZScgPyBwaWVjZS5wb3NpdGlvbi5yb3cgPj0gY2VudGVyQm90dG9tIDogcGllY2UucG9zaXRpb24ucm93IDw9IGNlbnRlclRvcDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGlzUHJvbW90aW9uUm93KFxuICBib2FyZFNpemU6IENoZXNzaW1hbHNCb2FyZFNpemUsXG4gIGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IsXG4gIHBvc2l0aW9uOiBDaGVzc2ltYWxzUG9zaXRpb24sXG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIGNvbG9yID09PSAnd2hpdGUnID8gcG9zaXRpb24ucm93ID09PSAwIDogcG9zaXRpb24ucm93ID09PSBib2FyZFNpemUgLSAxO1xufVxuXG5mdW5jdGlvbiBpc0luc2lkZUJvYXJkKGJvYXJkU2l6ZTogQ2hlc3NpbWFsc0JvYXJkU2l6ZSwgcG9zaXRpb246IENoZXNzaW1hbHNQb3NpdGlvbik6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgIHBvc2l0aW9uLnJvdyA+PSAwICYmIHBvc2l0aW9uLnJvdyA8IGJvYXJkU2l6ZSAmJiBwb3NpdGlvbi5jb2wgPj0gMCAmJiBwb3NpdGlvbi5jb2wgPCBib2FyZFNpemVcbiAgKTtcbn1cblxuZnVuY3Rpb24gc2FtZVBvc2l0aW9uKGE6IENoZXNzaW1hbHNQb3NpdGlvbiwgYjogQ2hlc3NpbWFsc1Bvc2l0aW9uKTogYm9vbGVhbiB7XG4gIHJldHVybiBhLnJvdyA9PT0gYi5yb3cgJiYgYS5jb2wgPT09IGIuY29sO1xufVxuXG5mdW5jdGlvbiBvdGhlckNvbG9yKGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IpOiBDaGVzc2ltYWxzUGxheWVyQ29sb3Ige1xuICByZXR1cm4gY29sb3IgPT09ICd3aGl0ZScgPyAnYmxhY2snIDogJ3doaXRlJztcbn1cblxuZnVuY3Rpb24gY3JlYXRlTG9jYWxJZCgpOiBzdHJpbmcge1xuICByZXR1cm4gYGxvY2FsLSR7RGF0ZS5ub3coKS50b1N0cmluZygzNil9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiwgOCl9YDtcbn1cbiJdfQ==
786
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlc3NpbWFscy1lbmdpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL21pbmktZ2FtZXMvY2hlc3NpbWFscy1lbmdpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaUJBLE1BQU0sT0FBTyxHQUEyQixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzlFLE1BQU0sZ0NBQWdDLEdBQUcsMkNBQTJDLENBQUM7QUFxQnJGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUEyQjtJQUM3RDtRQUNFLEVBQUUsRUFBRSxVQUFVO1FBQ2QsVUFBVSxFQUFFLE1BQU07UUFDbEIsTUFBTSxFQUFFLElBQUk7UUFDWixTQUFTLEVBQUUsR0FBRyxnQ0FBZ0MsZUFBZTtRQUM3RCxRQUFRLEVBQUUsdUJBQXVCO1FBQ2pDLGNBQWMsRUFBRSwyQkFBMkI7S0FDNUM7SUFDRDtRQUNFLEVBQUUsRUFBRSxXQUFXO1FBQ2YsVUFBVSxFQUFFLE1BQU07UUFDbEIsTUFBTSxFQUFFLEdBQUc7UUFDWCxTQUFTLEVBQUUsR0FBRyxnQ0FBZ0MsZ0JBQWdCO1FBQzlELFFBQVEsRUFBRSx3QkFBd0I7UUFDbEMsY0FBYyxFQUFFLDRCQUE0QjtLQUM3QztJQUNEO1FBQ0UsRUFBRSxFQUFFLFFBQVE7UUFDWixVQUFVLEVBQUUsTUFBTTtRQUNsQixNQUFNLEVBQUUsSUFBSTtRQUNaLFNBQVMsRUFBRSxHQUFHLGdDQUFnQyxhQUFhO1FBQzNELFFBQVEsRUFBRSxxQkFBcUI7UUFDL0IsY0FBYyxFQUFFLHlCQUF5QjtLQUMxQztJQUNEO1FBQ0UsRUFBRSxFQUFFLFFBQVE7UUFDWixVQUFVLEVBQUUsUUFBUTtRQUNwQixNQUFNLEVBQUUsSUFBSTtRQUNaLFNBQVMsRUFBRSxHQUFHLGdDQUFnQyxhQUFhO1FBQzNELFFBQVEsRUFBRSxxQkFBcUI7UUFDL0Is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O1FBQ2hDLGNBQWMsRUFBRSwwQkFBMEI7S0FDM0M7Q0FDRixDQUFDO0FBRUYsTUFBTSxVQUFVLEdBQXVEO0lBQ3JFLFFBQVEsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFO0lBQ3pMLFNBQVMsRUFBRSxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFO0lBQ3pMLE1BQU0sRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFO0lBQ3JMLE1BQU0sRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFO0lBQ3BMLFFBQVEsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFO0lBQ3JMLE1BQU0sRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFO0lBQ3JMLFVBQVUsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFO0lBQ3pMLFFBQVEsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFO0lBQ3JMLFFBQVEsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFO0lBQ3ZMLFFBQVEsRUFBRSxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFO0lBQzFMLE1BQU0sRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFO0lBQ25MLFFBQVEsRUFBRSxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFO0lBQ3pMLFNBQVMsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFO0lBQzNMLEtBQUssRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUss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QUksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUMvRixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLENBQXFCLEVBQUUsQ0FBcUI7SUFDaEUsT0FBTyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQzVDLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxLQUE0QjtJQUM5QyxPQUFPLEtBQUssS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0FBQy9DLENBQUM7QUFFRCxTQUFTLGFBQWE7SUFDcEIsT0FBTyxTQUFTLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDdEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoZXNzaW1hbHNBbmltYWxUeXBlLFxuICBDaGVzc2ltYWxzQm90RGlmZmljdWx0eSxcbiAgQ2hlc3NpbWFsc0JvdFByb2ZpbGUsXG4gIENoZXNzaW1hbHNCb3RQcm9maWxlSWQsXG4gIENoZXNzaW1hbHNCb2FyZFNpemUsXG4gIENoZXNzaW1hbHNHYW1lTW9kZSxcbiAgQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgQ2hlc3NpbWFsc0dhbWVTdGF0dXMsXG4gIENoZXNzaW1hbHNNb3ZlLFxuICBDaGVzc2ltYWxzTW92ZUhpc3RvcnlFbnRyeSxcbiAgQ2hlc3NpbWFsc09ubGluZVN0YXRlLFxuICBDaGVzc2ltYWxzUGllY2UsXG4gIENoZXNzaW1hbHNQbGF5ZXJDb2xvcixcbiAgQ2hlc3NpbWFsc1Bvc2l0aW9uLFxufSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgQU5JTUFMUzogQ2hlc3NpbWFsc0FuaW1hbFR5cGVbXSA9IFsnZWFnbGUnLCAnYnVsbCcsICdrYW5nYXJvbycsICdsaW9uJ107XG5jb25zdCBDSEVTU0lNQUxTX0NIQUxMRU5HRV9BVkFUQVJfQkFTRSA9ICdhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9jaGFsbGVuZ2UtYXZhdGFycyc7XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzQm90U3R5bGUge1xuICBhZHZhbmNlbWVudDogbnVtYmVyO1xuICBjYXB0dXJlOiBudW1iZXI7XG4gIHNhZmV0eTogbnVtYmVyO1xuICBwb3dlcjogbnVtYmVyO1xuICBjZW50ZXI6IG51bWJlcjtcbiAgdW5sb2NrOiBudW1iZXI7XG4gIHJlcGx5OiBudW1iZXI7XG4gIHJhbmRvbW5lc3M6IG51bWJlcjtcbiAgc3ByZWFkOiBudW1iZXI7XG4gIG1vYmlsaXR5OiBudW1iZXI7XG4gIHRyYXA6IG51bWJlcjtcbiAgZW5kZ2FtZTogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc0JvdE9wdGlvbnMge1xuICBjaGFsbGVuZ2VSb3VuZD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IENIRVNTSU1BTFNfQk9UX1BST0ZJTEVTOiBDaGVzc2ltYWxzQm90UHJvZmlsZVtdID0gW1xuICB7XG4gICAgaWQ6ICdleHBsb3JlcicsXG4gICAgZGlmZmljdWx0eTogJ2Vhc3knLFxuICAgIGF2YXRhcjogJ/Cfp60nLFxuICAgIGF2YXRhclNyYzogYCR7Q0hFU1NJTUFMU19DSEFMTEVOR0VfQVZBVEFSX0JBU0V9L2V4cGxvcmVyLnBuZ2AsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90RXhwbG9yZXInLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdEV4cGxvcmVyQm9keScsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2ltcHVsc2l2ZScsXG4gICAgZGlmZmljdWx0eTogJ2Vhc3knLFxuICAgIGF2YXRhcjogJ+KaoScsXG4gICAgYXZhdGFyU3JjOiBgJHtDSEVTU0lNQUxTX0NIQUxMRU5HRV9BVkFUQVJfQkFTRX0vaW1wdWxzaXZlLnBuZ2AsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90SW1wdWxzaXZlJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RJbXB1bHNpdmVCb2R5JyxcbiAgfSxcbiAge1xuICAgIGlkOiAncnVubmVyJyxcbiAgICBkaWZmaWN1bHR5OiAnZWFzeScsXG4gICAgYXZhdGFyOiAn8J+PgScsXG4gICAgYXZhdGFyU3JjOiBgJHtDSEVTU0lNQUxTX0NIQUxMRU5HRV9BVkFUQVJfQkFTRX0vcnVubmVyLnBuZ2AsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90UnVubmVyJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RSdW5uZXJCb2R5JyxcbiAgfSxcbiAge1xuICAgIGlkOiAnaHVudGVyJyxcbiAgICBkaWZmaWN1bHR5OiAnbm9ybWFsJyxcbiAgICBhdmF0YXI6ICfwn46vJyxcbiAgICBhdmF0YXJTcmM6IGAke0NIRVNTSU1BTFNfQ0hBTExFTkdFX0FWQVRBUl9CQVNFfS9odW50ZXIucG5nYCxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RIdW50ZXInLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdEh1bnRlckJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdndWFyZGlhbicsXG4gICAgZGlmZmljdWx0eTogJ25vcm1hbCcsXG4gICAgYXZhdGFyOiAn8J+boe+4jycsXG4gICAgYXZhdGFyU3JjOiBgJHtDSEVTU0lNQUxTX0NIQUxMRU5HRV9BVkFUQVJfQkFTRX0vZ3VhcmRpYW4ucG5nYCxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RHdWFyZGlhbicsXG4gICAgZGVzY3JpcHRpb25LZXk6ICdjaGVzc2ltYWxzQm90R3VhcmRpYW5Cb2R5JyxcbiAgfSxcbiAge1xuICAgIGlkOiAnanVtcGVyJyxcbiAgICBkaWZmaWN1bHR5OiAnbm9ybWFsJyxcbiAgICBhdmF0YXI6ICfwn6aYJyxcbiAgICBhdmF0YXJTcmM6IGAke0NIRVNTSU1BTFNfQ0hBTExFTkdFX0FWQVRBUl9CQVNFfS9qdW1wZXIucG5nYCxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RKdW1wZXInLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdEp1bXBlckJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdzdHJhdGVnaXN0JyxcbiAgICBkaWZmaWN1bHR5OiAnaGFyZCcsXG4gICAgYXZhdGFyOiAn4pmf77iPJyxcbiAgICBhdmF0YXJTcmM6IGAke0NIRVNTSU1BTFNfQ0hBTExFTkdFX0FWQVRBUl9CQVNFfS9zdHJhdGVnaXN0LnBuZ2AsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90U3RyYXRlZ2lzdCcsXG4gICAgZGVzY3JpcHRpb25LZXk6ICdjaGVzc2ltYWxzQm90U3RyYXRlZ2lzdEJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdwcmVkYXRvcicsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGF2YXRhcjogJ/CfpoEnLFxuICAgIGF2YXRhclNyYzogYCR7Q0hFU1NJTUFMU19DSEFMTEVOR0VfQVZBVEFSX0JBU0V9L3ByZWRhdG9yLnBuZ2AsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90UHJlZGF0b3InLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdFByZWRhdG9yQm9keScsXG4gIH0sXG4gIHtcbiAgICBpZDogJ3NwcmludGVyJyxcbiAgICBkaWZmaWN1bHR5OiAnaGFyZCcsXG4gICAgYXZhdGFyOiAn8J+agCcsXG4gICAgYXZhdGFyU3JjOiBgJHtDSEVTU0lNQUxTX0NIQUxMRU5HRV9BVkFUQVJfQkFTRX0vc3ByaW50ZXIucG5nYCxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RTcHJpbnRlcicsXG4gICAgZGVzY3JpcHRpb25LZXk6ICdjaGVzc2ltYWxzQm90U3ByaW50ZXJCb2R5JyxcbiAgfSxcbiAge1xuICAgIGlkOiAnc2VudGluZWwnLFxuICAgIGRpZmZpY3VsdHk6ICdoYXJkJyxcbiAgICBhdmF0YXI6ICfwn4+wJyxcbiAgICBhdmF0YXJTcmM6IGAke0NIRVNTSU1BTFNfQ0hBTExFTkdFX0FWQVRBUl9CQVNFfS9zZW50aW5lbC5wbmdgLFxuICAgIGxhYmVsS2V5OiAnY2hlc3NpbWFsc0JvdFNlbnRpbmVsJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RTZW50aW5lbEJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdvcmFjbGUnLFxuICAgIGRpZmZpY3VsdHk6ICdoYXJkJyxcbiAgICBhdmF0YXI6ICfwn5SuJyxcbiAgICBhdmF0YXJTcmM6IGAke0NIRVNTSU1BTFNfQ0hBTExFTkdFX0FWQVRBUl9CQVNFfS9vcmFjbGUucG5nYCxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RPcmFjbGUnLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdE9yYWNsZUJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdhbWJ1c2hlcicsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGF2YXRhcjogJ/CfqqQnLFxuICAgIGF2YXRhclNyYzogYCR7Q0hFU1NJTUFMU19DSEFMTEVOR0VfQVZBVEFSX0JBU0V9L2FtYnVzaGVyLnBuZ2AsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90QW1idXNoZXInLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdEFtYnVzaGVyQm9keScsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2xvY2tzbWl0aCcsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGF2YXRhcjogJ/CflJAnLFxuICAgIGF2YXRhclNyYzogYCR7Q0hFU1NJTUFMU19DSEFMTEVOR0VfQVZBVEFSX0JBU0V9L2xvY2tzbWl0aC5wbmdgLFxuICAgIGxhYmVsS2V5OiAnY2hlc3NpbWFsc0JvdExvY2tzbWl0aCcsXG4gICAgZGVzY3JpcHRpb25LZXk6ICdjaGVzc2ltYWxzQm90TG9ja3NtaXRoQm9keScsXG4gIH0sXG4gIHtcbiAgICBpZDogJ3N0b3JtJyxcbiAgICBkaWZmaWN1bHR5OiAnaGFyZCcsXG4gICAgYXZhdGFyOiAn8J+Mqe+4jycsXG4gICAgYXZhdGFyU3JjOiBgJHtDSEVTU0lNQUxTX0NIQUxMRU5HRV9BVkFUQVJfQkFTRX0vc3Rvcm0ucG5nYCxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RTdG9ybScsXG4gICAgZGVzY3JpcHRpb25LZXk6ICdjaGVzc2ltYWxzQm90U3Rvcm1Cb2R5JyxcbiAgfSxcbiAge1xuICAgIGlkOiAnbWF0cmlhcmNoJyxcbiAgICBkaWZmaWN1bHR5OiAnaGFyZCcsXG4gICAgYXZhdGFyOiAn8J+RkScsXG4gICAgYXZhdGFyU3JjOiBgJHtDSEVTU0lNQUxTX0NIQUxMRU5HRV9BVkFUQVJfQkFTRX0vbWF0cmlhcmNoLnBuZ2AsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90TWF0cmlhcmNoJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RNYXRyaWFyY2hCb2R5JyxcbiAgfSxcbiAge1xuICAgIGlkOiAnZW5kZ2FtZScsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGF2YXRhcjogJ+KMmycsXG4gICAgYXZhdGFyU3JjOiBgJHtDSEVTU0lNQUxTX0NIQUxMRU5HRV9BVkFUQVJfQkFTRX0vZW5kZ2FtZS5wbmdgLFxuICAgIGxhYmVsS2V5OiAnY2hlc3NpbWFsc0JvdEVuZGdhbWUnLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdEVuZGdhbWVCb2R5JyxcbiAgfSxcbl07XG5cbmNvbnN0IEJPVF9TVFlMRVM6IFJlY29yZDxDaGVzc2ltYWxzQm90UHJvZmlsZUlkLCBDaGVzc2ltYWxzQm90U3R5bGU+ID0ge1xuICBleHBsb3JlcjogeyBhZHZhbmNlbWVudDogMS4wNSwgY2FwdHVyZTogMC44Miwgc2FmZXR5OiAwLjYyLCBwb3dlcjogMC44LCBjZW50ZXI6IDEuMTUsIHVubG9jazogMS4wNSwgcmVwbHk6IDAuNywgcmFuZG9tbmVzczogMjYwLCBzcHJlYWQ6IDAuNjgsIG1vYmlsaXR5OiAwLjc1LCB0cmFwOiAwLjUsIGVuZGdhbWU6IDAuNTUgfSxcbiAgaW1wdWxzaXZlOiB7IGFkdmFuY2VtZW50OiAwLjksIGNhcHR1cmU6IDEuNDUsIHNhZmV0eTogMC40OCwgcG93ZXI6IDEuMTUsIGNlbnRlcjogMC44LCB1bmxvY2s6IDAuOSwgcmVwbHk6IDAuNTUsIHJhbmRvbW5lc3M6IDI5MCwgc3ByZWFkOiAwLjYyLCBtb2JpbGl0eTogMC44NSwgdHJhcDogMC42MiwgZW5kZ2FtZTogMC41IH0sXG4gIHJ1bm5lcjogeyBhZHZhbmNlbWVudDogMS41NSwgY2FwdHVyZTogMC43OCwgc2FmZXR5OiAwLjUsIHBvd2VyOiAwLjk1LCBjZW50ZXI6IDAuNywgdW5sb2NrOiAxLjEsIHJlcGx5OiAwLjU1LCByYW5kb21uZXNzOiAyNTAsIHNwcmVhZDogMC42LCBtb2JpbGl0eTogMC43MiwgdHJhcDogMC40NSwgZW5kZ2FtZTogMS4xIH0sXG4gIGh1bnRlcjogeyBhZHZhbmNlbWVudDogMC45NSwgY2FwdHVyZTogMS40NSwgc2FmZXR5OiAwLjksIHBvd2VyOiAxLjA1LCBjZW50ZXI6IDAuOTUsIHVubG9jazogMC45NSwgcmVwbHk6IDEsIHJhbmRvbW5lc3M6IDkwLCBzcHJlYWQ6IDAuMywgbW9iaWxpdHk6IDAuOTUsIHRyYXA6IDAuODIsIGVuZGdhbWU6IDAuNzYgfSxcbiAgZ3VhcmRpYW46IHsgYWR2YW5jZW1lbnQ6IDAuODgsIGNhcHR1cmU6IDEsIHNhZmV0eTogMS40NSwgcG93ZXI6IDAuODUsIGNlbnRlcjogMS4wNSwgdW5sb2NrOiAxLCByZXBseTogMS4xNSwgcmFuZG9tbmVzczogNzAsIHNwcmVhZDogMC4yNiwgbW9iaWxpdHk6IDAuODIsIHRyYXA6IDAuNzIsIGVuZGdhbWU6IDAuNzIgfSxcbiAganVtcGVyOiB7IGFkdmFuY2VtZW50OiAxLjEyLCBjYXB0dXJlOiAxLCBzYWZldHk6IDAuOTIsIHBvd2VyOiAxLjQyLCBjZW50ZXI6IDEuMTgsIHVubG9jazogMS4wOCwgcmVwbHk6IDAuOTUsIHJhbmRvbW5lc3M6IDk1LCBzcHJlYWQ6IDAuMzIsIG1vYmlsaXR5OiAxLjE1LCB0cmFwOiAwLjksIGVuZGdhbWU6IDAuODIgfSxcbiAgc3RyYXRlZ2lzdDogeyBhZHZhbmNlbWVudDogMS4wNSwgY2FwdHVyZTogMS4wOCwgc2FmZXR5OiAxLjIyLCBwb3dlcjogMS4wOCwgY2VudGVyOiAxLjE2LCB1bmxvY2s6IDEuMSwgcmVwbHk6IDEuMjUsIHJhbmRvbW5lc3M6IDIyLCBzcHJlYWQ6IDAuMTQsIG1vYmlsaXR5OiAxLjA4LCB0cmFwOiAxLjA2LCBlbmRnYW1lOiAxIH0sXG4gIHByZWRhdG9yOiB7IGFkdmFuY2VtZW50OiAwLjk4LCBjYXB0dXJlOiAxLjY4LCBzYWZldHk6IDEuMDIsIHBvd2VyOiAxLjM0LCBjZW50ZXI6IDEsIHVubG9jazogMSwgcmVwbHk6IDEuMTIsIHJhbmRvbW5lc3M6IDI4LCBzcHJlYWQ6IDAuMTYsIG1vYmlsaXR5OiAxLjAyLCB0cmFwOiAxLjE4LCBlbmRnYW1lOiAwLjgyIH0sXG4gIHNwcmludGVyOiB7IGFkdmFuY2VtZW50OiAxLjcyLCBjYXB0dXJlOiAwLjksIHNhZmV0eTogMC45NSwgcG93ZXI6IDEuMDgsIGNlbnRlcjogMC44NiwgdW5sb2NrOiAxLjE4LCByZXBseTogMSwgcmFuZG9tbmVzczogMjYsIHNwcmVhZDogMC4xNSwgbW9iaWxpdHk6IDAuOTUsIHRyYXA6IDAuNzgsIGVuZGdhbWU6IDEuNDIgfSxcbiAgc2VudGluZWw6IHsgYWR2YW5jZW1lbnQ6IDAuOSwgY2FwdHVyZTogMS4xMiwgc2FmZXR5OiAxLjcyLCBwb3dlcjogMC45NSwgY2VudGVyOiAxLjI4LCB1bmxvY2s6IDEuMDUsIHJlcGx5OiAxLjM4LCByYW5kb21uZXNzOiAxOCwgc3ByZWFkOiAwLjEyLCBtb2JpbGl0eTogMC44NiwgdHJhcDogMS4wNCwgZW5kZ2FtZTogMC44NCB9LFxuICBvcmFjbGU6IHsgYWR2YW5jZW1lbnQ6IDEsIGNhcHR1cmU6IDEuMTIsIHNhZmV0eTogMS40MiwgcG93ZXI6IDEuMSwgY2VudGVyOiAxLjE4LCB1bmxvY2s6IDEuMDgsIHJlcGx5OiAxLjgsIHJhbmRvbW5lc3M6IDgsIHNwcmVhZDogMC4wOCwgbW9iaWxpdHk6IDEuMDYsIHRyYXA6IDEuMjIsIGVuZGdhbWU6IDEuMDggfSxcbiAgYW1idXNoZXI6IHsgYWR2YW5jZW1lbnQ6IDAuOSwgY2FwdHVyZTogMS40OCwgc2FmZXR5OiAxLjA4LCBwb3dlcjogMS40NiwgY2VudGVyOiAxLjA1LCB1bmxvY2s6IDEuMDIsIHJlcGx5OiAxLjMyLCByYW5kb21uZXNzOiAxNCwgc3ByZWFkOiAwLjEsIG1vYmlsaXR5OiAxLjEyLCB0cmFwOiAxLjcyLCBlbmRnYW1lOiAwLjkyIH0sXG4gIGxvY2tzbWl0aDogeyBhZHZhbmNlbWVudDogMC44OCwgY2FwdHVyZTogMS4wNCwgc2FmZXR5OiAxLjU1LCBwb3dlcjogMS4wMiwgY2VudGVyOiAxLjQ4LCB1bmxvY2s6IDEuMTIsIHJlcGx5OiAxLjUyLCByYW5kb21uZXNzOiAxMiwgc3ByZWFkOiAwLjEsIG1vYmlsaXR5OiAxLjU4LCB0cmFwOiAxLjI0LCBlbmRnYW1lOiAwLjg2IH0sXG4gIHN0b3JtOiB7IGFkdmFuY2VtZW50OiAxLjE4LCBjYXB0dXJlOiAxLjM4LCBzYWZldHk6IDAuOTgsIHBvd2VyOiAxLjYyLCBjZW50ZXI6IDEuMDgsIHVubG9jazogMS4xOCwgcmVwbHk6IDEuMjIsIHJhbmRvbW5lc3M6IDE4LCBzcHJlYWQ6IDAuMTMsIG1vYmlsaXR5OiAxLjM2LCB0cmFwOiAxLjI4LCBlbmRnYW1lOiAxLjAyIH0sXG4gIG1hdHJpYXJjaDogeyBhZHZhbmNlbWVudDogMC45NiwgY2FwdHVyZTogMS4xOCwgc2FmZXR5OiAxLjY0LCBwb3dlcjogMS4xOCwgY2VudGVyOiAxLjIyLCB1bmxvY2s6IDEuMDgsIHJlcGx5OiAxLjY2LCByYW5kb21uZXNzOiAxMCwgc3ByZWFkOiAwLjA4LCBtb2JpbGl0eTogMS4wMiwgdHJhcDogMS4zNiwgZW5kZ2FtZTogMSB9LFxuICBlbmRnYW1lOiB7IGFkdmFuY2VtZW50OiAxLjQ2LCBjYXB0dXJlOiAxLCBzYWZldHk6IDEuMjgsIHBvd2VyOiAxLjA0LCBjZW50ZXI6IDAuOTQsIHVubG9jazogMS4wOCwgcmVwbHk6IDEuNDQsIHJhbmRvbW5lc3M6IDEwLCBzcHJlYWQ6IDAuMDksIG1vYmlsaXR5OiAwLjk4LCB0cmFwOiAxLjAyLCBlbmRnYW1lOiAxLjg2IH0sXG59O1xuXG5jb25zdCBERUZBVUxUX0JPVF9QUk9GSUxFX0JZX0RJRkZJQ1VMVFk6IFJlY29yZDxDaGVzc2ltYWxzQm90RGlmZmljdWx0eSwgQ2hlc3NpbWFsc0JvdFByb2ZpbGVJZD4gPSB7XG4gIGVhc3k6ICdleHBsb3JlcicsXG4gIG5vcm1hbDogJ2h1bnRlcicsXG4gIGhhcmQ6ICdzdHJhdGVnaXN0Jyxcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQ2hlc3NpbWFsc0dhbWVPcHRpb25zIHtcbiAgaWQ/OiBzdHJpbmc7XG4gIG1vZGU/OiBDaGVzc2ltYWxzR2FtZU1vZGU7XG4gIHN0YXR1cz86IENoZXNzaW1hbHNHYW1lU3RhdHVzO1xuICBvbmxpbmU/OiBDaGVzc2ltYWxzT25saW5lU3RhdGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDaGVzc2ltYWxzR2FtZShcbiAgYm9hcmRTaXplOiBDaGVzc2ltYWxzQm9hcmRTaXplID0gNixcbiAgb3B0aW9uczogQ3JlYXRlQ2hlc3NpbWFsc0dhbWVPcHRpb25zID0ge30sXG4pOiBDaGVzc2ltYWxzR2FtZVN0YXRlIHtcbiAgY29uc3QgcGllY2VzOiBDaGVzc2ltYWxzUGllY2VbXSA9IFtdO1xuICBjb25zdCB3aGl0ZVJvdyA9IGJvYXJkU2l6ZSAtIDI7XG4gIGNvbnN0IGJsYWNrUm93ID0gMTtcblxuICBmb3IgKGxldCBjb2wgPSAwOyBjb2wgPCBib2FyZFNpemU7IGNvbCArPSAxKSB7XG4gICAgcGllY2VzLnB1c2goe1xuICAgICAgaWQ6IGBXJHtjb2wgKyAxfWAsXG4gICAgICBjb2xvcjogJ3doaXRlJyxcbiAgICAgIHBvc2l0aW9uOiB7IHJvdzogd2hpdGVSb3csIGNvbCB9LFxuICAgICAgY2FwdHVyZWQ6IGZhbHNlLFxuICAgIH0pO1xuICAgIHBpZWNlcy5wdXNoKHtcbiAgICAgIGlkOiBgQiR7Y29sICsgMX1gLFxuICAgICAgY29sb3I6ICdibGFjaycsXG4gICAgICBwb3NpdGlvbjogeyByb3c6IGJsYWNrUm93LCBjb2wgfSxcbiAgICAgIGNhcHR1cmVkOiBmYWxzZSxcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IHN0YXRlID0gcmVmcmVzaENoZXNzaW1hbHNQb3dlclVubG9ja3Moe1xuICAgIGlkOiBvcHRpb25zLmlkID8/IGNyZWF0ZUxvY2FsSWQoKSxcbiAgICBtb2RlOiBvcHRpb25zLm1vZGUgPz8gJ2xvY2FsJyxcbiAgICBib2FyZFNpemUsXG4gICAgc3RhdHVzOiBvcHRpb25zLnN0YXR1cyA/PyAnaW5fcHJvZ3Jlc3MnLFxuICAgIGN1cnJlbnRUdXJuOiAnd2hpdGUnLFxuICAgIHBpZWNlcyxcbiAgICBwbGF5ZXJzOiB7XG4gICAgICB3aGl0ZTogeyBjb2xvcjogJ3doaXRlJywgcG93ZXJVbmxvY2tlZDogZmFsc2UsIGNhcmRzOiBjcmVhdGVDYXJkcygpIH0sXG4gICAgICBibGFjazogeyBjb2xvcjogJ2JsYWNrJywgcG93ZXJVbmxvY2tlZDogZmFsc2UsIGNhcmRzOiBjcmVhdGVDYXJkcygpIH0sXG4gICAgfSxcbiAgICBtb3ZlQ291bnQ6IDAsXG4gICAgb25saW5lOiBvcHRpb25zLm9ubGluZSxcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtb3ZlSGlzdG9yeTogW2NyZWF0ZU1vdmVIaXN0b3J5RW50cnkoc3RhdGUpXSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENoZXNzaW1hbHNQaWVjZUF0KFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgcG9zaXRpb246IENoZXNzaW1hbHNQb3NpdGlvbixcbik6IENoZXNzaW1hbHNQaWVjZSB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBhY3RpdmVQaWVjZXMoc3RhdGUpLmZpbmQoXG4gICAgKHBpZWNlKSA9PlxuICAgICAgIXBpZWNlLmNhcHR1cmVkICYmIHBpZWNlLnBvc2l0aW9uLnJvdyA9PT0gcG9zaXRpb24ucm93ICYmIHBpZWNlLnBvc2l0aW9uLmNvbCA9PT0gcG9zaXRpb24uY29sLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2hlc3NpbWFsc0xlZ2FsTW92ZXMoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBwaWVjZUlkOiBzdHJpbmcsXG4gIGFuaW1hbD86IENoZXNzaW1hbHNBbmltYWxUeXBlLFxuKTogQ2hlc3NpbWFsc01vdmVbXSB7XG4gIGlmIChzdGF0ZS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycpIHJldHVybiBbXTtcblxuICBjb25zdCBwaWVjZSA9IGFjdGl2ZVBpZWNlcyhzdGF0ZSkuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gcGllY2VJZCAmJiAhaXRlbS5jYXB0dXJlZCk7XG4gIGlmICghcGllY2UgfHwgcGllY2UuY29sb3IgIT09IHN0YXRlLmN1cnJlbnRUdXJuKSByZXR1cm4gW107XG5cbiAgaWYgKGFuaW1hbCkge1xuICAgIGNvbnN0IHBsYXllciA9IHN0YXRlLnBsYXllcnNbcGllY2UuY29sb3JdO1xuICAgIGlmICghcGxheWVyLnBvd2VyVW5sb2NrZWQgfHwgcGxheWVyLmNhcmRzW2FuaW1hbF0udXNlZCkgcmV0dXJuIFtdO1xuICAgIHJldHVybiBnZXRQb3dlck1vdmVzKHN0YXRlLCBwaWVjZSwgYW5pbWFsKTtcbiAgfVxuXG4gIHJldHVybiBnZXRCYXNpY01vdmVzKHN0YXRlLCBwaWVjZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGVzc2ltYWxzQWxsTGVnYWxNb3ZlcyhcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IgPSBzdGF0ZS5jdXJyZW50VHVybixcbik6IENoZXNzaW1hbHNNb3ZlW10ge1xuICBpZiAoc3RhdGUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnKSByZXR1cm4gW107XG5cbiAgY29uc3QgdHVyblN0YXRlID0gY29sb3IgPT09IHN0YXRlLmN1cnJlbnRUdXJuID8gc3RhdGUgOiB7IC4uLnN0YXRlLCBjdXJyZW50VHVybjogY29sb3IgfTtcbiAgY29uc3QgcGxheWVyID0gdHVyblN0YXRlLnBsYXllcnNbY29sb3JdO1xuICBjb25zdCBtb3ZlczogQ2hlc3NpbWFsc01vdmVbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgcGllY2Ugb2YgYWN0aXZlUGllY2VzKHR1cm5TdGF0ZSkpIHtcbiAgICBpZiAocGllY2UuY2FwdHVyZWQgfHwgcGllY2UuY29sb3IgIT09IGNvbG9yKSBjb250aW51ZTtcblxuICAgIG1vdmVzLnB1c2goLi4uZ2V0Q2hlc3NpbWFsc0xlZ2FsTW92ZXModHVyblN0YXRlLCBwaWVjZS5pZCkpO1xuICAgIGlmICghcGxheWVyLnBvd2VyVW5sb2NrZWQpIGNvbnRpbnVlO1xuXG4gICAgZm9yIChjb25zdCBhbmltYWwgb2YgQU5JTUFMUykge1xuICAgICAgaWYgKHBsYXllci5jYXJkc1thbmltYWxdLnVzZWQpIGNvbnRpbnVlO1xuICAgICAgbW92ZXMucHVzaCguLi5nZXRDaGVzc2ltYWxzTGVnYWxNb3Zlcyh0dXJuU3RhdGUsIHBpZWNlLmlkLCBhbmltYWwpKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbW92ZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaG9vc2VDaGVzc2ltYWxzQm90TW92ZShcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIGRpZmZpY3VsdHk6IENoZXNzaW1hbHNCb3REaWZmaWN1bHR5ID0gJ25vcm1hbCcsXG4gIHByb2ZpbGVJZDogQ2hlc3NpbWFsc0JvdFByb2ZpbGVJZCA9IERFRkFVTFRfQk9UX1BST0ZJTEVfQllfRElGRklDVUxUWVtkaWZmaWN1bHR5XSxcbiAgb3B0aW9uczogQ2hlc3NpbWFsc0JvdE9wdGlvbnMgPSB7fSxcbik6IENoZXNzaW1hbHNNb3ZlIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgbW92ZXMgPSBnZXRDaGVzc2ltYWxzQWxsTGVnYWxNb3ZlcyhzdGF0ZSk7XG4gIGlmIChtb3Zlcy5sZW5ndGggPT09IDApIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IGJhc2VTdHlsZSA9IEJPVF9TVFlMRVNbcHJvZmlsZUlkXSA/PyBCT1RfU1RZTEVTW0RFRkFVTFRfQk9UX1BST0ZJTEVfQllfRElGRklDVUxUWVtkaWZmaWN1bHR5XV07XG4gIGNvbnN0IGNoYWxsZW5nZVByZXNzdXJlID0gZ2V0Q2hhbGxlbmdlUHJlc3N1cmUob3B0aW9ucy5jaGFsbGVuZ2VSb3VuZCk7XG4gIGNvbnN0IHN0eWxlID0gdHVuZUJvdFN0eWxlKGJhc2VTdHlsZSwgZGlmZmljdWx0eSwgY2hhbGxlbmdlUHJlc3N1cmUpO1xuXG4gIGNvbnN0IHF1aWNrU2NvcmVkID0gbW92ZXNcbiAgICAubWFwKChtb3ZlKSA9PiAoeyBtb3ZlLCBzY29yZTogc2NvcmVCb3RNb3ZlKHN0YXRlLCBtb3ZlLCBkaWZmaWN1bHR5LCBzdHlsZSwgY2hhbGxlbmdlUHJlc3N1cmUsIGZhbHNlKSB9KSlcbiAgICAuc29ydCgoYSwgYikgPT4gYi5zY29yZSAtIGEuc2NvcmUpO1xuICBjb25zdCBsb29rYWhlYWRMaW1pdCA9IGRpZmZpY3VsdHkgPT09ICdoYXJkJyA/IDMyIDogZGlmZmljdWx0eSA9PT0gJ25vcm1hbCcgPyAyNCA6IDA7XG4gIGNvbnN0IHNjb3JlZCA9IHF1aWNrU2NvcmVkXG4gICAgLm1hcCgoaXRlbSwgaW5kZXgpID0+ICh7XG4gICAgICBtb3ZlOiBpdGVtLm1vdmUsXG4gICAgICBzY29yZTpcbiAgICAgICAgaW5kZXggPCBsb29rYWhlYWRMaW1pdFxuICAgICAgICAgID8gc2NvcmVCb3RNb3ZlV2l0aExvb2thaGVhZChzdGF0ZSwgaXRlbS5tb3ZlLCBkaWZmaWN1bHR5LCBzdHlsZSwgY2hhbGxlbmdlUHJlc3N1cmUpXG4gICAgICAgICAgOiBpdGVtLnNjb3JlLFxuICAgIH0pKVxuICAgIC5zb3J0KChhLCBiKSA9PiBiLnNjb3JlIC0gYS5zY29yZSk7XG5cbiAgaWYgKGRpZmZpY3VsdHkgPT09ICdlYXN5Jykge1xuICAgIGNvbnN0IHBsYXlhYmxlID0gc2NvcmVkLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5zY29yZSA+IC0zMDAwKTtcbiAgICByZXR1cm4gcGlja05vaXN5Qm90TW92ZShwbGF5YWJsZS5sZW5ndGggPyBwbGF5YWJsZSA6IHNjb3JlZCwgMC41NSk7XG4gIH1cblxuICBpZiAoZGlmZmljdWx0eSA9PT0gJ25vcm1hbCcpIHtcbiAgICByZXR1cm4gc2NvcmVkWzBdPy5tb3ZlO1xuICB9XG5cbiAgY29uc3Qgd2lubmluZ01vdmUgPSBzY29yZWQuZmluZCgoaXRlbSkgPT4gaXRlbS5zY29yZSA+PSAxMDAwMCk7XG4gIGlmICh3aW5uaW5nTW92ZSkgcmV0dXJuIHdpbm5pbmdNb3ZlLm1vdmU7XG5cbiAgY29uc3Qgb3Bwb25lbnRXaW5uaW5nVGFyZ2V0cyA9IG5ldyBTZXQoXG4gICAgZ2V0SW1tZWRpYXRlV2lubmluZ01vdmVzKHN0YXRlLCBvdGhlckNvbG9yKHN0YXRlLmN1cnJlbnRUdXJuKSkubWFwKChtb3ZlKSA9PiBwb3NpdGlvbktleShtb3ZlLnRvKSksXG4gICk7XG4gIGlmIChvcHBvbmVudFdpbm5pbmdUYXJnZXRzLnNpemUgPiAwKSB7XG4gICAgY29uc3QgYmxvY2tpbmdNb3ZlID0gc2NvcmVkLmZpbmQoXG4gICAgICAoaXRlbSkgPT4gaXRlbS5tb3ZlLmNhcHR1cmVzUGllY2VJZCB8fCBvcHBvbmVudFdpbm5pbmdUYXJnZXRzLmhhcyhwb3NpdGlvbktleShpdGVtLm1vdmUudG8pKSxcbiAgICApO1xuICAgIGlmIChibG9ja2luZ01vdmUpIHJldHVybiBibG9ja2luZ01vdmUubW92ZTtcbiAgfVxuXG4gIGNvbnN0IGNoYWxsZW5nZUNhcHR1cmUgPSBjaG9vc2VDaGFsbGVuZ2VCYXNpY0NhcHR1cmUoc2NvcmVkLCBjaGFsbGVuZ2VQcmVzc3VyZSk7XG4gIGlmIChjaGFsbGVuZ2VDYXB0dXJlKSByZXR1cm4gY2hhbGxlbmdlQ2FwdHVyZTtcblxuICBjb25zdCBjb25zZXJ2YXRpdmVDYXB0dXJlID0gY2hvb3NlQ29uc2VydmF0aXZlSGFyZENhcHR1cmUoc3RhdGUsIHNjb3JlZCk7XG4gIGlmIChjb25zZXJ2YXRpdmVDYXB0dXJlKSByZXR1cm4gY29uc2VydmF0aXZlQ2FwdHVyZTtcblxuICByZXR1cm4gc2NvcmVkWzBdPy5tb3ZlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlDaGVzc2ltYWxzTW92ZShcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIGNhbmRpZGF0ZTogQ2hlc3NpbWFsc01vdmUsXG4pOiBDaGVzc2ltYWxzR2FtZVN0YXRlIHtcbiAgY29uc3QgbGVnYWxNb3ZlID0gZ2V0Q2hlc3NpbWFsc0xlZ2FsTW92ZXMoc3RhdGUsIGNhbmRpZGF0ZS5waWVjZUlkLCBjYW5kaWRhdGUuYW5pbWFsKS5maW5kKChtb3ZlKSA9PlxuICAgIHNhbWVQb3NpdGlvbihtb3ZlLmZyb20sIGNhbmRpZGF0ZS5mcm9tKSAmJiBzYW1lUG9zaXRpb24obW92ZS50bywgY2FuZGlkYXRlLnRvKSxcbiAgKTtcblxuICBpZiAoIWxlZ2FsTW92ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ0hFU1NJTUFMU19JTExFR0FMX01PVkUnKTtcbiAgfVxuXG4gIGNvbnN0IG1vdmVkUGllY2UgPSBhY3RpdmVQaWVjZXMoc3RhdGUpLmZpbmQoKHBpZWNlKSA9PiBwaWVjZS5pZCA9PT0gbGVnYWxNb3ZlLnBpZWNlSWQpO1xuICBpZiAoIW1vdmVkUGllY2UpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NIRVNTSU1BTFNfUElFQ0VfTk9UX0ZPVU5EJyk7XG4gIH1cblxuICBjb25zdCBwaWVjZXMgPSBhY3RpdmVQaWVjZXMoc3RhdGUpLm1hcCgocGllY2UpID0+IHtcbiAgICBpZiAocGllY2UuaWQgPT09IGxlZ2FsTW92ZS5waWVjZUlkKSB7XG4gICAgICByZXR1cm4geyAuLi5waWVjZSwgcG9zaXRpb246IHsgLi4ubGVnYWxNb3ZlLnRvIH0gfTtcbiAgICB9XG4gICAgaWYgKHBpZWNlLmlkID09PSBsZWdhbE1vdmUuY2FwdHVyZXNQaWVjZUlkKSB7XG4gICAgICByZXR1cm4geyAuLi5waWVjZSwgY2FwdHVyZWQ6IHRydWUgfTtcbiAgICB9XG4gICAgcmV0dXJuIHBpZWNlO1xuICB9KTtcblxuICBjb25zdCBwbGF5ZXJzID0ge1xuICAgIC4uLnN0YXRlLnBsYXllcnMsXG4gICAgW21vdmVkUGllY2UuY29sb3JdOiB7XG4gICAgICAuLi5zdGF0ZS5wbGF5ZXJzW21vdmVkUGllY2UuY29sb3JdLFxuICAgICAgY2FyZHM6XG4gICAgICAgIGxlZ2FsTW92ZS5raW5kID09PSAncG93ZXInICYmIGxlZ2FsTW92ZS5hbmltYWxcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgLi4uc3RhdGUucGxheWVyc1ttb3ZlZFBpZWNlLmNvbG9yXS5jYXJkcyxcbiAgICAgICAgICAgICAgW2xlZ2FsTW92ZS5hbmltYWxdOiB7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUucGxheWVyc1ttb3ZlZFBpZWNlLmNvbG9yXS5jYXJkc1tsZWdhbE1vdmUuYW5pbWFsXSxcbiAgICAgICAgICAgICAgICB1c2VkOiB0cnVlLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogc3RhdGUucGxheWVyc1ttb3ZlZFBpZWNlLmNvbG9yXS5jYXJkcyxcbiAgICB9LFxuICB9O1xuXG4gIGNvbnN0IG5leHRTdGF0ZSA9IHJlZnJlc2hDaGVzc2ltYWxzUG93ZXJVbmxvY2tzKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBwaWVjZXMsXG4gICAgcGxheWVycyxcbiAgICBjdXJyZW50VHVybjogb3RoZXJDb2xvcihtb3ZlZFBpZWNlLmNvbG9yKSxcbiAgICBtb3ZlQ291bnQ6IHN0YXRlLm1vdmVDb3VudCArIDEsXG4gICAgbGFzdE1vdmU6IGxlZ2FsTW92ZSxcbiAgfSk7XG5cbiAgY29uc3QgcHJvbW90ZWQgPSBpc1Byb21vdGlvblJvdyhuZXh0U3RhdGUuYm9hcmRTaXplLCBtb3ZlZFBpZWNlLmNvbG9yLCBsZWdhbE1vdmUudG8pO1xuICBjb25zdCBlbmVteVBpZWNlcyA9IGFjdGl2ZVBpZWNlcyhuZXh0U3RhdGUpLmZpbHRlcihcbiAgICAocGllY2UpID0+IHBpZWNlLmNvbG9yICE9PSBtb3ZlZFBpZWNlLmNvbG9yICYmICFwaWVjZS5jYXB0dXJlZCxcbiAgKTtcblxuICBjb25zdCByZXNvbHZlZFN0YXRlID1cbiAgICBwcm9tb3RlZCB8fCBlbmVteVBpZWNlcy5sZW5ndGggPT09IDBcbiAgICAgID8ge1xuICAgICAgICAgIC4uLm5leHRTdGF0ZSxcbiAgICAgICAgICBzdGF0dXM6ICdmaW5pc2hlZCcgYXMgY29uc3QsXG4gICAgICAgICAgd2lubmVyOiBtb3ZlZFBpZWNlLmNvbG9yLFxuICAgICAgICAgIHdpbm5lclJlYXNvbjogcHJvbW90ZWQgPyAoJ3Byb21vdGlvbicgYXMgY29uc3QpIDogKCdlbGltaW5hdGlvbicgYXMgY29uc3QpLFxuICAgICAgICB9XG4gICAgICA6IG5leHRTdGF0ZTtcblxuICByZXR1cm4ge1xuICAgIC4uLnJlc29sdmVkU3RhdGUsXG4gICAgbW92ZUhpc3Rvcnk6IFtcbiAgICAgIC4uLmVuc3VyZU1vdmVIaXN0b3J5KHN0YXRlKSxcbiAgICAgIGNyZWF0ZU1vdmVIaXN0b3J5RW50cnkocmVzb2x2ZWRTdGF0ZSwgbGVnYWxNb3ZlKSxcbiAgICBdLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2hlc3NpbWFsc1Jldmlld1N0YXRlKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgZW50cnk6IENoZXNzaW1hbHNNb3ZlSGlzdG9yeUVudHJ5LFxuKTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSB7XG4gIGNvbnN0IGJhc2VTdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSA9IHsgLi4uc3RhdGUgfTtcbiAgZGVsZXRlIGJhc2VTdGF0ZS5sYXN0TW92ZTtcbiAgZGVsZXRlIGJhc2VTdGF0ZS53aW5uZXI7XG4gIGRlbGV0ZSBiYXNlU3RhdGUud2lubmVyUmVhc29uO1xuICByZXR1cm4ge1xuICAgIC4uLmJhc2VTdGF0ZSxcbiAgICBzdGF0dXM6IGVudHJ5LnN0YXR1cyxcbiAgICBjdXJyZW50VHVybjogZW50cnkuY3VycmVudFR1cm4sXG4gICAgcGllY2VzOiBjbG9uZVBpZWNlcyhlbnRyeS5waWVjZXMpLFxuICAgIG1vdmVDb3VudDogZW50cnkubW92ZU51bWJlcixcbiAgICAuLi4oZW50cnkud2lubmVyID8geyB3aW5uZXI6IGVudHJ5Lndpbm5lciB9IDoge30pLFxuICAgIC4uLihlbnRyeS53aW5uZXJSZWFzb24gPyB7IHdpbm5lclJlYXNvbjogZW50cnkud2lubmVyUmVhc29uIH0gOiB7fSksXG4gICAgLi4uKGVudHJ5Lm1vdmUgPyB7IGxhc3RNb3ZlOiBzYW5pdGl6ZU1vdmUoZW50cnkubW92ZSkgfSA6IHt9KSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlTW92ZUhpc3RvcnlFbnRyeShcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIG1vdmU/OiBDaGVzc2ltYWxzTW92ZSxcbik6IENoZXNzaW1hbHNNb3ZlSGlzdG9yeUVudHJ5IHtcbiAgcmV0dXJuIHtcbiAgICBtb3ZlTnVtYmVyOiBzdGF0ZS5tb3ZlQ291bnQsXG4gICAgcGllY2VzOiBjbG9uZVBpZWNlcyhzdGF0ZS5waWVjZXMpLFxuICAgIGN1cnJlbnRUdXJuOiBzdGF0ZS5jdXJyZW50VHVybixcbiAgICBzdGF0dXM6IHN0YXRlLnN0YXR1cyxcbiAgICAuLi4obW92ZSA/IHsgbW92ZTogc2FuaXRpemVNb3ZlKG1vdmUpIH0gOiB7fSksXG4gICAgLi4uKHN0YXRlLndpbm5lciA/IHsgd2lubmVyOiBzdGF0ZS53aW5uZXIgfSA6IHt9KSxcbiAgICAuLi4oc3RhdGUud2lubmVyUmVhc29uID8geyB3aW5uZXJSZWFzb246IHN0YXRlLndpbm5lclJlYXNvbiB9IDoge30pLFxuICB9O1xufVxuXG5mdW5jdGlvbiBlbnN1cmVNb3ZlSGlzdG9yeShzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IENoZXNzaW1hbHNNb3ZlSGlzdG9yeUVudHJ5W10ge1xuICBpZiAoc3RhdGUubW92ZUhpc3Rvcnk/Lmxlbmd0aCkgcmV0dXJuIHN0YXRlLm1vdmVIaXN0b3J5Lm1hcChjbG9uZU1vdmVIaXN0b3J5RW50cnkpO1xuICByZXR1cm4gW2NyZWF0ZU1vdmVIaXN0b3J5RW50cnkoc3RhdGUpXTtcbn1cblxuZnVuY3Rpb24gY2xvbmVNb3ZlSGlzdG9yeUVudHJ5KGVudHJ5OiBDaGVzc2ltYWxzTW92ZUhpc3RvcnlFbnRyeSk6IENoZXNzaW1hbHNNb3ZlSGlzdG9yeUVudHJ5IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5lbnRyeSxcbiAgICBwaWVjZXM6IGNsb25lUGllY2VzKGVudHJ5LnBpZWNlcyksXG4gICAgLi4uKGVudHJ5Lm1vdmUgPyB7IG1vdmU6IHNhbml0aXplTW92ZShlbnRyeS5tb3ZlKSB9IDoge30pLFxuICB9O1xufVxuXG5mdW5jdGlvbiBjbG9uZVBpZWNlcyhwaWVjZXM6IENoZXNzaW1hbHNQaWVjZVtdKTogQ2hlc3NpbWFsc1BpZWNlW10ge1xuICByZXR1cm4gcGllY2VzLm1hcCgocGllY2UpID0+ICh7XG4gICAgLi4ucGllY2UsXG4gICAgcG9zaXRpb246IHsgLi4ucGllY2UucG9zaXRpb24gfSxcbiAgfSkpO1xufVxuXG5mdW5jdGlvbiBzYW5pdGl6ZU1vdmUobW92ZTogQ2hlc3NpbWFsc01vdmUpOiBDaGVzc2ltYWxzTW92ZSB7XG4gIHJldHVybiB7XG4gICAgcGllY2VJZDogbW92ZS5waWVjZUlkLFxuICAgIGZyb206IHsgLi4ubW92ZS5mcm9tIH0sXG4gICAgdG86IHsgLi4ubW92ZS50byB9LFxuICAgIGtpbmQ6IG1vdmUua2luZCxcbiAgICAuLi4obW92ZS5hbmltYWwgPyB7IGFuaW1hbDogbW92ZS5hbmltYWwgfSA6IHt9KSxcbiAgICAuLi4obW92ZS5jYXB0dXJlc1BpZWNlSWQgPyB7IGNhcHR1cmVzUGllY2VJZDogbW92ZS5jYXB0dXJlc1BpZWNlSWQgfSA6IHt9KSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc2lnbkNoZXNzaW1hbHNHYW1lKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcixcbik6IENoZXNzaW1hbHNHYW1lU3RhdGUge1xuICBjb25zdCByZXNpZ25lZFN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIHN0YXR1czogJ2ZpbmlzaGVkJyxcbiAgICB3aW5uZXI6IG90aGVyQ29sb3IoY29sb3IpLFxuICAgIHdpbm5lclJlYXNvbjogJ3Jlc2lnbmF0aW9uJyxcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIC4uLnJlc2lnbmVkU3RhdGUsXG4gICAgbW92ZUhpc3Rvcnk6IFtcbiAgICAgIC4uLmVuc3VyZU1vdmVIaXN0b3J5KHN0YXRlKSxcbiAgICAgIGNyZWF0ZU1vdmVIaXN0b3J5RW50cnkocmVzaWduZWRTdGF0ZSksXG4gICAgXSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvc2l0aW9uS2V5KHBvc2l0aW9uOiBDaGVzc2ltYWxzUG9zaXRpb24pOiBzdHJpbmcge1xuICByZXR1cm4gYCR7cG9zaXRpb24ucm93fToke3Bvc2l0aW9uLmNvbH1gO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVDYXJkcygpIHtcbiAgcmV0dXJuIEFOSU1BTFMucmVkdWNlKFxuICAgIChjYXJkcywgdHlwZSkgPT4gKHtcbiAgICAgIC4uLmNhcmRzLFxuICAgICAgW3R5cGVdOiB7IHR5cGUsIHVzZWQ6IGZhbHNlIH0sXG4gICAgfSksXG4gICAge30gYXMgUmVjb3JkPENoZXNzaW1hbHNBbmltYWxUeXBlLCB7IHR5cGU6IENoZXNzaW1hbHNBbmltYWxUeXBlOyB1c2VkOiBib29sZWFuIH0+LFxuICApO1xufVxuXG5mdW5jdGlvbiBhY3RpdmVQaWVjZXMoc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiBDaGVzc2ltYWxzUGllY2VbXSB7XG4gIHJldHVybiBzdGF0ZS5waWVjZXMuZmlsdGVyKChwaWVjZSk6IHBpZWNlIGlzIENoZXNzaW1hbHNQaWVjZSA9PiAhIXBpZWNlKTtcbn1cblxuZnVuY3Rpb24gZ2V0QmFzaWNNb3ZlcyhzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgcGllY2U6IENoZXNzaW1hbHNQaWVjZSk6IENoZXNzaW1hbHNNb3ZlW10ge1xuICBjb25zdCBkaXJlY3Rpb24gPSBwaWVjZS5jb2xvciA9PT0gJ3doaXRlJyA/IC0xIDogMTtcbiAgY29uc3QgbW92ZXM6IENoZXNzaW1hbHNNb3ZlW10gPSBbXTtcbiAgY29uc3QgZm9yd2FyZCA9IHsgcm93OiBwaWVjZS5wb3NpdGlvbi5yb3cgKyBkaXJlY3Rpb24sIGNvbDogcGllY2UucG9zaXRpb24uY29sIH07XG5cbiAgaWYgKGlzSW5zaWRlQm9hcmQoc3RhdGUuYm9hcmRTaXplLCBmb3J3YXJkKSAmJiAhZ2V0Q2hlc3NpbWFsc1BpZWNlQXQoc3RhdGUsIGZvcndhcmQpKSB7XG4gICAgbW92ZXMucHVzaCh7XG4gICAgICBwaWVjZUlkOiBwaWVjZS5pZCxcbiAgICAgIGZyb206IHsgLi4ucGllY2UucG9zaXRpb24gfSxcbiAgICAgIHRvOiBmb3J3YXJkLFxuICAgICAga2luZDogJ2Jhc2ljJyxcbiAgICB9KTtcbiAgfVxuXG4gIGZvciAoY29uc3QgY29sT2Zmc2V0IG9mIFstMSwgMV0pIHtcbiAgICBjb25zdCB0YXJnZXQgPSB7IHJvdzogcGllY2UucG9zaXRpb24ucm93ICsgZGlyZWN0aW9uLCBjb2w6IHBpZWNlLnBvc2l0aW9uLmNvbCArIGNvbE9mZnNldCB9O1xuICAgIGNvbnN0IHRhcmdldFBpZWNlID0gZ2V0Q2hlc3NpbWFsc1BpZWNlQXQoc3RhdGUsIHRhcmdldCk7XG4gICAgaWYgKFxuICAgICAgaXNJbnNpZGVCb2FyZChzdGF0ZS5ib2FyZFNpemUsIHRhcmdldCkgJiZcbiAgICAgIHRhcmdldFBpZWNlICYmXG4gICAgICB0YXJnZXRQaWVjZS5jb2xvciAhPT0gcGllY2UuY29sb3IgJiZcbiAgICAgICFpc1Byb21vdGlvblJvdyhzdGF0ZS5ib2FyZFNpemUsIHBpZWNlLmNvbG9yLCB0YXJnZXQpXG4gICAgKSB7XG4gICAgICBtb3Zlcy5wdXNoKHtcbiAgICAgICAgcGllY2VJZDogcGllY2UuaWQsXG4gICAgICAgIGZyb206IHsgLi4ucGllY2UucG9zaXRpb24gfSxcbiAgICAgICAgdG86IHRhcmdldCxcbiAgICAgICAga2luZDogJ2Jhc2ljJyxcbiAgICAgICAgY2FwdHVyZXNQaWVjZUlkOiB0YXJnZXRQaWVjZS5pZCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtb3Zlcztcbn1cblxuZnVuY3Rpb24gZ2V0UG93ZXJNb3ZlcyhcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIHBpZWNlOiBDaGVzc2ltYWxzUGllY2UsXG4gIGFuaW1hbDogQ2hlc3NpbWFsc0FuaW1hbFR5cGUsXG4pOiBDaGVzc2ltYWxzTW92ZVtdIHtcbiAgaWYgKGFuaW1hbCA9PT0gJ2thbmdhcm9vJykge1xuICAgIHJldHVybiBnZXRLYW5nYXJvb01vdmVzKHN0YXRlLCBwaWVjZSk7XG4gIH1cblxuICBjb25zdCBkaXJlY3Rpb25zID0gZ2V0UG93ZXJEaXJlY3Rpb25zKGFuaW1hbCk7XG4gIGNvbnN0IG1vdmVzOiBDaGVzc2ltYWxzTW92ZVtdID0gW107XG5cbiAgZm9yIChjb25zdCBkaXJlY3Rpb24gb2YgZGlyZWN0aW9ucykge1xuICAgIGZvciAobGV0IGRpc3RhbmNlID0gMTsgZGlzdGFuY2UgPCBzdGF0ZS5ib2FyZFNpemU7IGRpc3RhbmNlICs9IDEpIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IHtcbiAgICAgICAgcm93OiBwaWVjZS5wb3NpdGlvbi5yb3cgKyBkaXJlY3Rpb24ucm93ICogZGlzdGFuY2UsXG4gICAgICAgIGNvbDogcGllY2UucG9zaXRpb24uY29sICsgZGlyZWN0aW9uLmNvbCAqIGRpc3RhbmNlLFxuICAgICAgfTtcbiAgICAgIGlmICghaXNJbnNpZGVCb2FyZChzdGF0ZS5ib2FyZFNpemUsIHRhcmdldCkpIGJyZWFrO1xuICAgICAgaWYgKGlzUHJvbW90aW9uUm93KHN0YXRlLmJvYXJkU2l6ZSwgcGllY2UuY29sb3IsIHRhcmdldCkpIGJyZWFrO1xuXG4gICAgICBjb25zdCB0YXJnZXRQaWVjZSA9IGdldENoZXNzaW1hbHNQaWVjZUF0KHN0YXRlLCB0YXJnZXQpO1xuICAgICAgaWYgKHRhcmdldFBpZWNlPy5jb2xvciA9PT0gcGllY2UuY29sb3IpIGJyZWFrO1xuXG4gICAgICBtb3Zlcy5wdXNoKHtcbiAgICAgICAgcGllY2VJZDogcGllY2UuaWQsXG4gICAgICAgIGZyb206IHsgLi4ucGllY2UucG9zaXRpb24gfSxcbiAgICAgICAgdG86IHRhcmdldCxcbiAgICAgICAga2luZDogJ3Bvd2VyJyxcbiAgICAgICAgYW5pbWFsLFxuICAgICAgICAuLi4odGFyZ2V0UGllY2UgPyB7IGNhcHR1cmVzUGllY2VJZDogdGFyZ2V0UGllY2UuaWQgfSA6IHt9KSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGFyZ2V0UGllY2UpIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtb3Zlcztcbn1cblxuZnVuY3Rpb24gZ2V0S2FuZ2Fyb29Nb3ZlcyhzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgcGllY2U6IENoZXNzaW1hbHNQaWVjZSk6IENoZXNzaW1hbHNNb3ZlW10ge1xuICBjb25zdCBtb3ZlczogQ2hlc3NpbWFsc01vdmVbXSA9IFtdO1xuICBjb25zdCBqdW1wcyA9IFtcbiAgICB7IHJvdzogLTIsIGNvbDogLTEgfSxcbiAgICB7IHJvdzogLTIsIGNvbDogMSB9LFxuICAgIHsgcm93OiAtMSwgY29sOiAtMiB9LFxuICAgIHsgcm93OiAtMSwgY29sOiAyIH0sXG4gICAgeyByb3c6IDEsIGNvbDogLTIgfSxcbiAgICB7IHJvdzogMSwgY29sOiAyIH0sXG4gICAgeyByb3c6IDIsIGNvbDogLTEgfSxcbiAgICB7IHJvdzogMiwgY29sOiAxIH0sXG4gIF07XG5cbiAgZm9yIChjb25zdCBqdW1wIG9mIGp1bXBzKSB7XG4gICAgY29uc3QgdGFyZ2V0ID0ge1xuICAgICAgcm93OiBwaWVjZS5wb3NpdGlvbi5yb3cgKyBqdW1wLnJvdyxcbiAgICAgIGNvbDogcGllY2UucG9zaXRpb24uY29sICsganVtcC5jb2wsXG4gICAgfTtcbiAgICBpZiAoIWlzSW5zaWRlQm9hcmQoc3RhdGUuYm9hcmRTaXplLCB0YXJnZXQpKSBjb250aW51ZTtcbiAgICBpZiAoaXNQcm9tb3Rpb25Sb3coc3RhdGUuYm9hcmRTaXplLCBwaWVjZS5jb2xvciwgdGFyZ2V0KSkgY29udGludWU7XG5cbiAgICBjb25zdCB0YXJnZXRQaWVjZSA9IGdldENoZXNzaW1hbHNQaWVjZUF0KHN0YXRlLCB0YXJnZXQpO1xuICAgIGlmICh0YXJnZXRQaWVjZT8uY29sb3IgPT09IHBpZWNlLmNvbG9yKSBjb250aW51ZTtcblxuICAgIG1vdmVzLnB1c2goe1xuICAgICAgcGllY2VJZDogcGllY2UuaWQsXG4gICAgICBmcm9tOiB7IC4uLnBpZWNlLnBvc2l0aW9uIH0sXG4gICAgICB0bzogdGFyZ2V0LFxuICAgICAga2luZDogJ3Bvd2VyJyxcbiAgICAgIGFuaW1hbDogJ2thbmdhcm9vJyxcbiAgICAgIC4uLih0YXJnZXRQaWVjZSA/IHsgY2FwdHVyZXNQaWVjZUlkOiB0YXJnZXRQaWVjZS5pZCB9IDoge30pLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG1vdmVzO1xufVxuXG5mdW5jdGlvbiBzY29yZUJvdE1vdmUoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBtb3ZlOiBDaGVzc2ltYWxzTW92ZSxcbiAgZGlmZmljdWx0eTogQ2hlc3NpbWFsc0JvdERpZmZpY3VsdHksXG4gIHN0eWxlOiBDaGVzc2ltYWxzQm90U3R5bGUsXG4gIGNoYWxsZW5nZVByZXNzdXJlID0gMCxcbiAgaW5jbHVkZVRhY3RpY2FsUHJlc3N1cmUgPSB0cnVlLFxuKTogbnVtYmVyIHtcbiAgY29uc3QgY29sb3IgPSBzdGF0ZS5jdXJyZW50VHVybjtcbiAgY29uc3QgdGFyZ2V0UGllY2UgPSBtb3ZlLmNhcHR1cmVzUGllY2VJZFxuICAgID8gYWN0aXZlUGllY2VzKHN0YXRlKS5maW5kKChwaWVjZSkgPT4gcGllY2UuaWQgPT09IG1vdmUuY2FwdHVyZXNQaWVjZUlkKVxuICAgIDogdW5kZWZpbmVkO1xuICBjb25zdCBhZHZhbmNlbWVudCA9XG4gICAgY29sb3IgPT09ICd3aGl0ZScgPyBzdGF0ZS5ib2FyZFNpemUgLSAxIC0gbW92ZS50by5yb3cgOiBtb3ZlLnRvLnJvdztcbiAgbGV0IHNjb3JlID0gYWR2YW5jZW1lbnQgKiAyNCAqIHN0eWxlLmFkdmFuY2VtZW50O1xuICBjb25zdCBzdGVwc1RvUHJvbW90aW9uID1cbiAgICBjb2xvciA9PT0gJ3doaXRlJyA/IG1vdmUudG8ucm93IDogc3RhdGUuYm9hcmRTaXplIC0gMSAtIG1vdmUudG8ucm93O1xuICBzY29yZSArPSBNYXRoLm1heCgwLCBzdGF0ZS5ib2FyZFNpemUgLSAxIC0gc3RlcHNUb1Byb21vdGlvbikgKiAxMCAqIGNoYWxsZW5nZVByZXNzdXJlICogc3R5bGUuYWR2YW5jZW1lbnQ7XG5cbiAgaWYgKG1vdmUua2luZCA9PT0gJ2Jhc2ljJyAmJiBpc1Byb21vdGlvblJvdyhzdGF0ZS5ib2FyZFNpemUsIGNvbG9yLCBtb3ZlLnRvKSkge1xuICAgIHNjb3JlICs9IDEwMDAwICsgMjUwMCAqIGNoYWxsZW5nZVByZXNzdXJlO1xuICB9XG4gIGlmICh0YXJnZXRQaWVjZSkge1xuICAgIHNjb3JlICs9ICg1MjAgKyAxODAgKiBjaGFsbGVuZ2VQcmVzc3VyZSkgKiBzdHlsZS5jYXB0dXJlO1xuICAgIGlmIChtb3ZlLmtpbmQgPT09ICdiYXNpYycpIHNjb3JlICs9IDE2MCAqIGNoYWxsZW5nZVByZXNzdXJlICogc3R5bGUuY2FwdHVyZTtcbiAgICBjb25zdCB0YXJnZXRBZHZhbmNlbWVudCA9XG4gICAgICB0YXJnZXRQaWVjZS5jb2xvciA9PT0gJ3doaXRlJ1xuICAgICAgICA/IHN0YXRlLmJvYXJkU2l6ZSAtIDEgLSB0YXJnZXRQaWVjZS5wb3NpdGlvbi5yb3dcbiAgICAgICAgOiB0YXJnZXRQaWVjZS5wb3NpdGlvbi5yb3c7XG4gICAgc2NvcmUgKz0gdGFyZ2V0QWR2YW5jZW1lbnQgKiAoMTYgKyA4ICogY2hhbGxlbmdlUHJlc3N1cmUpICogc3R5bGUuY2FwdHVyZTtcbiAgfVxuICBpZiAobW92ZS5raW5kID09PSAncG93ZXInKSB7XG4gICAgc2NvcmUgKz0gKHRhcmdldFBpZWNlID8gMTIwIDogZGlmZmljdWx0eSA9PT0gJ2hhcmQnID8gLTYwIC0gMTcwICogY2hhbGxlbmdlUHJlc3N1cmUgOiAtMzApICogc3R5bGUucG93ZXI7XG4gIH1cbiAgaWYgKG1vdmUuYW5pbWFsID09PSAnbGlvbicpIHNjb3JlIC09IDIwICogc3R5bGUucG93ZXI7XG4gIGlmIChtb3ZlLmFuaW1hbCA9PT0gJ2thbmdhcm9vJykgc2NvcmUgKz0gMTQgKiBzdHlsZS5wb3dlcjtcbiAgaWYgKHdvdWxkVW5sb2NrUG93ZXIoc3RhdGUsIGNvbG9yLCBtb3ZlLnRvKSkgc2NvcmUgKz0gOTAgKiBzdHlsZS51bmxvY2s7XG4gIGlmIChpbmNsdWRlVGFjdGljYWxQcmVzc3VyZSAmJiBzdGF0ZS5ib2FyZFNpemUgPD0gNikge1xuICAgIHNjb3JlICs9IGNvdW50UG93ZXJSZWFjaEFmdGVyTW92ZShzdGF0ZSwgbW92ZSwgY29sb3IpICogKGRpZmZpY3VsdHkgPT09ICdoYXJkJyA/IDggOiA0KSAqIHN0eWxlLm1vYmlsaXR5O1xuICAgIHNjb3JlICs9IGNvdW50UHJvdGVjdGVkVGhyZWF0c0FmdGVyTW92ZShzdGF0ZSwgbW92ZSwgY29sb3IpICogKGRpZmZpY3VsdHkgPT09ICdoYXJkJyA/IDM2IDogMTgpICogc3R5bGUudHJhcDtcbiAgICBzY29yZSArPSBzY29yZUVuZGdhbWVQcmVzc3VyZShzdGF0ZSwgbW92ZSwgY29sb3IpICogc3R5bGUuZW5kZ2FtZTtcbiAgfSBlbHNlIHtcbiAgICBzY29yZSArPSBzY29yZUVuZGdhbWVQcmVzc3VyZShzdGF0ZSwgbW92ZSwgY29sb3IpICogc3R5bGUuZW5kZ2FtZTtcbiAgfVxuICBpZiAoZGlmZmljdWx0eSA9PT0gJ2hhcmQnICYmIGlzU3F1YXJlVnVsbmVyYWJsZUFmdGVyTW92ZShzdGF0ZSwgbW92ZSkpIHtcbiAgICBzY29yZSAtPSAodGFyZ2V0UGllY2UgPyA4MCA6IDE0MCkgKiBzdHlsZS5zYWZldHk7XG4gIH1cbiAgc2NvcmUgKz0gKE1hdGgucmFuZG9tKCkgLSAwLjUpICogc3R5bGUucmFuZG9tbmVzcztcblxuICByZXR1cm4gc2NvcmU7XG59XG5cbmZ1bmN0aW9uIHNjb3JlQm90TW92ZVdpdGhMb29rYWhlYWQoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBtb3ZlOiBDaGVzc2ltYWxzTW92ZSxcbiAgZGlmZmljdWx0eTogQ2hlc3NpbWFsc0JvdERpZmZpY3VsdHksXG4gIHN0eWxlOiBDaGVzc2ltYWxzQm90U3R5bGUsXG4gIGNoYWxsZW5nZVByZXNzdXJlID0gMCxcbik6IG51bWJlciB7XG4gIGxldCBzY29yZSA9IHNjb3JlQm90TW92ZShzdGF0ZSwgbW92ZSwgZGlmZmljdWx0eSwgc3R5bGUsIGNoYWxsZW5nZVByZXNzdXJlKTtcblxuICB0cnkge1xuICAgIGNvbnN0IGFmdGVyTW92ZSA9IGFwcGx5Q2hlc3NpbWFsc01vdmUoc3RhdGUsIG1vdmUpO1xuICAgIGlmIChhZnRlck1vdmUuc3RhdHVzID09PSAnZmluaXNoZWQnKSByZXR1cm4gc2NvcmUgKyA1MDAwO1xuXG4gICAgY29uc3Qgb3Bwb25lbnRNb3ZlcyA9IGdldENoZXNzaW1hbHNBbGxMZWdhbE1vdmVzKGFmdGVyTW92ZSk7XG4gICAgY29uc3Qgb3Bwb25lbnRJbW1lZGlhdGVXaW4gPSBvcHBvbmVudE1vdmVzLnNvbWUoXG4gICAgICAob3Bwb25lbnRNb3ZlKSA9PlxuICAgICAgICBvcHBvbmVudE1vdmUua2luZCA9PT0gJ2Jhc2ljJyAmJlxuICAgICAgICBpc1Byb21vdGlvblJvdyhhZnRlck1vdmUuYm9hcmRTaXplLCBhZnRlck1vdmUuY3VycmVudFR1cm4sIG9wcG9uZW50TW92ZS50byksXG4gICAgKTtcbiAgICBpZiAob3Bwb25lbnRJbW1lZGlhdGVXaW4pIHtcbiAgICAgIHNjb3JlIC09IChkaWZmaWN1bHR5ID09PSAnZWFzeScgPyAxODAwIDogZGlmZmljdWx0eSA9PT0gJ25vcm1hbCcgPyA1MjAwIDogODAwMCArIDQyMDAgKiBjaGFsbGVuZ2VQcmVzc3VyZSkgKiBzdHlsZS5zYWZldHk7XG4gICAgfVxuXG4gICAgY29uc3QgbW92ZWRQaWVjZSA9IGFmdGVyTW92ZS5waWVjZXMuZmluZCgocGllY2UpID0+IHBpZWNlLmlkID09PSBtb3ZlLnBpZWNlSWQgJiYgIXBpZWNlLmNhcHR1cmVkKTtcbiAgICBpZiAobW92ZWRQaWVjZSkge1xuICAgICAgY29uc3QgY2FuQ2FwdHVyZU1vdmVkUGllY2UgPSBvcHBvbmVudE1vdmVzLnNvbWUoKG9wcG9uZW50TW92ZSkgPT4gb3Bwb25lbnRNb3ZlLmNhcHR1cmVzUGllY2VJZCA9PT0gbW92ZS5waWVjZUlkKTtcbiAgICAgIGlmIChjYW5DYXB0dXJlTW92ZWRQaWVjZSkge1xuICAgICAgICBzY29yZSAtPSAobW92ZS5jYXB0dXJlc1BpZWNlSWQgPyAxODAgOiBkaWZmaWN1bHR5ID09PSAnZWFzeScgPyAxMjAgOiBkaWZmaWN1bHR5ID09PSAnbm9ybWFsJyA/IDM2MCA6IDU2MClcbiAgICAgICAgICAqIHN0eWxlLnNhZmV0eVxuICAgICAgICAgICogKDEgKyBjaGFsbGVuZ2VQcmVzc3VyZSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNlbnRlciA9IChhZnRlck1vdmUuYm9hcmRTaXplIC0gMSkgLyAyO1xuICAgICAgY29uc3QgY2VudGVyQ29udHJvbCA9IE1hdGgubWF4KDAsIGFmdGVyTW92ZS5ib2FyZFNpemUgLyAyIC0gTWF0aC5hYnMobW92ZWRQaWVjZS5wb3NpdGlvbi5jb2wgLSBjZW50ZXIpKTtcbiAgICAgIHNjb3JlICs9IGNlbnRlckNvbnRyb2wgKiAoZGlmZmljdWx0eSA9PT0gJ2hhcmQnID8gMTggOiAxMCkgKiBzdHlsZS5jZW50ZXI7XG4gICAgfVxuXG4gICAgY29uc3Qgb3Bwb25lbnRCZXN0UmVwbHkgPSBvcHBvbmVudE1vdmVzXG4gICAgICAubWFwKChvcHBvbmVudE1vdmUpID0+IHNjb3JlQm90TW92ZShhZnRlck1vdmUsIG9wcG9uZW50TW92ZSwgZGlmZmljdWx0eSwgc3R5bGUsIGNoYWxsZW5nZVByZXNzdXJlLCBmYWxzZSkpXG4gICAgICAuc29ydCgoYSwgYikgPT4gYiAtIGEpWzBdO1xuXG4gICAgaWYgKG9wcG9uZW50QmVzdFJlcGx5KSB7XG4gICAgICBjb25zdCByZXBseVdlaWdodCA9IGRpZmZpY3VsdHkgPT09ICdlYXN5JyA/IDAuMTIgOiBkaWZmaWN1bHR5ID09PSAnbm9ybWFsJyA/IDAuMzIgKyAwLjA4ICogY2hhbGxlbmdlUHJlc3N1cmUgOiAwLjQ4ICsgMC4xNiAqIGNoYWxsZW5nZVByZXNzdXJlO1xuICAgICAgc2NvcmUgLT0gb3Bwb25lbnRCZXN0UmVwbHkgKiByZXBseVdlaWdodCAqIHN0eWxlLnJlcGx5O1xuICAgIH1cbiAgfSBjYXRjaCB7XG4gICAgc2NvcmUgLT0gMTAwMDtcbiAgfVxuXG4gIHJldHVybiBzY29yZTtcbn1cblxuZnVuY3Rpb24gZ2V0Q2hhbGxlbmdlUHJlc3N1cmUocm91bmQ/OiBudW1iZXIpOiBudW1iZXIge1xuICBpZiAoIXJvdW5kIHx8IHJvdW5kIDw9IDIpIHJldHVybiAwO1xuICByZXR1cm4gTWF0aC5taW4oMSwgTWF0aC5tYXgoMCwgKHJvdW5kIC0gMikgLyA2KSk7XG59XG5cbmZ1bmN0aW9uIHR1bmVCb3RTdHlsZShcbiAgc3R5bGU6IENoZXNzaW1hbHNCb3RTdHlsZSxcbiAgZGlmZmljdWx0eTogQ2hlc3NpbWFsc0JvdERpZmZpY3VsdHksXG4gIGNoYWxsZW5nZVByZXNzdXJlOiBudW1iZXIsXG4pOiBDaGVzc2ltYWxzQm90U3R5bGUge1xuICBpZiAoIWNoYWxsZW5nZVByZXNzdXJlKSByZXR1cm4gc3R5bGU7XG4gIGNvbnN0IHByZXNzdXJlID0gZGlmZmljdWx0eSA9PT0gJ2Vhc3knID8gY2hhbGxlbmdlUHJlc3N1cmUgKiAwLjQ1IDogY2hhbGxlbmdlUHJlc3N1cmU7XG4gIHJldHVybiB7XG4gICAgLi4uc3R5bGUsXG4gICAgY2FwdHVyZTogc3R5bGUuY2FwdHVyZSAqICgxICsgcHJlc3N1cmUgKiAwLjI4KSxcbiAgICBzYWZldHk6IHN0eWxlLnNhZmV0eSAqICgxICsgcHJlc3N1cmUgKiAwLjM0KSxcbiAgICByZXBseTogc3R5bGUucmVwbHkgKiAoMSArIHByZXNzdXJlICogMC4yMiksXG4gICAgY2VudGVyOiBzdHlsZS5jZW50ZXIgKiAoMSArIHByZXNzdXJlICogMC4xMiksXG4gICAgcmFuZG9tbmVzczogc3R5bGUucmFuZG9tbmVzcyAqICgxIC0gcHJlc3N1cmUgKiAwLjY1KSxcbiAgICBzcHJlYWQ6IHN0eWxlLnNwcmVhZCAqICgxIC0gcHJlc3N1cmUgKiAwLjM1KSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY2hvb3NlQ2hhbGxlbmdlQmFzaWNDYXB0dXJlKFxuICBzY29yZWQ6IHsgbW92ZTogQ2hlc3NpbWFsc01vdmU7IHNjb3JlOiBudW1iZXIgfVtdLFxuICBjaGFsbGVuZ2VQcmVzc3VyZTogbnVtYmVyLFxuKTogQ2hlc3NpbWFsc01vdmUgfCB1bmRlZmluZWQge1xuICBpZiAoY2hhbGxlbmdlUHJlc3N1cmUgPCAwLjUpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgY29uc3QgYmVzdCA9IHNjb3JlZFswXTtcbiAgY29uc3QgYmVzdEJhc2ljQ2FwdHVyZSA9IHNjb3JlZC5maW5kKChpdGVtKSA9PiBpdGVtLm1vdmUua2luZCA9PT0gJ2Jhc2ljJyAmJiBpdGVtLm1vdmUuY2FwdHVyZXNQaWVjZUlkKTtcbiAgaWYgKCFiZXN0IHx8ICFiZXN0QmFzaWNDYXB0dXJlKSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAoYmVzdC5tb3ZlLmtpbmQgPT09ICdiYXNpYycgJiYgYmVzdC5tb3ZlLmNhcHR1cmVzUGllY2VJZCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBjb25zdCB0b2xlcmFuY2UgPSBiZXN0Lm1vdmUua2luZCA9PT0gJ3Bvd2VyJyAmJiAhYmVzdC5tb3ZlLmNhcHR1cmVzUGllY2VJZCA/IDE4MDAgOiA5MDA7XG4gIHJldHVybiBiZXN0LnNjb3JlIC0gYmVzdEJhc2ljQ2FwdHVyZS5zY29yZSA8PSB0b2xlcmFuY2UgPyBiZXN0QmFzaWNDYXB0dXJlLm1vdmUgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGNvdW50UG93ZXJSZWFjaEFmdGVyTW92ZShcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIG1vdmU6IENoZXNzaW1hbHNNb3ZlLFxuICBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yLFxuKTogbnVtYmVyIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBhZnRlck1vdmUgPSBhcHBseUNoZXNzaW1hbHNNb3ZlKHN0YXRlLCBtb3ZlKTtcbiAgICBjb25zdCBldmFsdWF0aW9uU3RhdGUgPSB7IC4uLmFmdGVyTW92ZSwgY3VycmVudFR1cm46IGNvbG9yIH07XG4gICAgcmV0dXJuIGdldENoZXNzaW1hbHNBbGxMZWdhbE1vdmVzKGV2YWx1YXRpb25TdGF0ZSwgY29sb3IpLmZpbHRlcigobmV4dE1vdmUpID0+IG5leHRNb3ZlLmtpbmQgPT09ICdwb3dlcicpLmxlbmd0aDtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuZnVuY3Rpb24gY291bnRQcm90ZWN0ZWRUaHJlYXRzQWZ0ZXJNb3ZlKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgbW92ZTogQ2hlc3NpbWFsc01vdmUsXG4gIGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IsXG4pOiBudW1iZXIge1xuICB0cnkge1xuICAgIGNvbnN0IGFmdGVyTW92ZSA9IGFwcGx5Q2hlc3NpbWFsc01vdmUoc3RhdGUsIG1vdmUpO1xuICAgIGNvbnN0IGV2YWx1YXRpb25TdGF0ZSA9IHsgLi4uYWZ0ZXJNb3ZlLCBjdXJyZW50VHVybjogY29sb3IgfTtcbiAgICBjb25zdCBvdXJNb3ZlcyA9IGdldENoZXNzaW1hbHNBbGxMZWdhbE1vdmVzKGV2YWx1YXRpb25TdGF0ZSwgY29sb3IpO1xuICAgIGNvbnN0IGVuZW15UGllY2VzID0gYWN0aXZlUGllY2VzKGFmdGVyTW92ZSkuZmlsdGVyKChwaWVjZSkgPT4gcGllY2UuY29sb3IgIT09IGNvbG9yICYmICFwaWVjZS5jYXB0dXJlZCk7XG4gICAgcmV0dXJuIGVuZW15UGllY2VzLmZpbHRlcigocGllY2UpID0+XG4gICAgICBvdXJNb3Zlcy5zb21lKChuZXh0TW92ZSkgPT4gbmV4dE1vdmUuY2FwdHVyZXNQaWVjZUlkID09PSBwaWVjZS5pZCksXG4gICAgKS5sZW5ndGg7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNjb3JlRW5kZ2FtZVByZXNzdXJlKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgbW92ZTogQ2hlc3NpbWFsc01vdmUsXG4gIGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IsXG4pOiBudW1iZXIge1xuICBjb25zdCByZW1haW5pbmdFbmVteVBpZWNlcyA9IGFjdGl2ZVBpZWNlcyhzdGF0ZSkuZmlsdGVyKChwaWVjZSkgPT4gcGllY2UuY29sb3IgIT09IGNvbG9yICYmICFwaWVjZS5jYXB0dXJlZCkubGVuZ3RoO1xuICBjb25zdCB1cmdlbmN5ID0gcmVtYWluaW5nRW5lbXlQaWVjZXMgPD0gTWF0aC5tYXgoMiwgTWF0aC5mbG9vcihzdGF0ZS5ib2FyZFNpemUgLyAyKSkgPyAxLjYgOiAxO1xuICBjb25zdCBkaXN0YW5jZVRvUHJvbW90aW9uID1cbiAgICBjb2xvciA9PT0gJ3doaXRlJyA/IG1vdmUudG8ucm93IDogc3RhdGUuYm9hcmRTaXplIC0gMSAtIG1vdmUudG8ucm93O1xuICByZXR1cm4gTWF0aC5tYXgoMCwgc3RhdGUuYm9hcmRTaXplIC0gZGlzdGFuY2VUb1Byb21vdGlvbikgKiAxNCAqIHVyZ2VuY3k7XG59XG5cbmZ1bmN0aW9uIGNob29zZUNvbnNlcnZhdGl2ZUhhcmRDYXB0dXJlKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgc2NvcmVkOiB7IG1vdmU6IENoZXNzaW1hbHNNb3ZlOyBzY29yZTogbnVtYmVyIH1bXSxcbik6IENoZXNzaW1hbHNNb3ZlIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHN0YXRlLmJvYXJkU2l6ZSAhPT0gOCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBjb25zdCBiZXN0ID0gc2NvcmVkWzBdO1xuICBpZiAoIWJlc3QgfHwgYmVzdC5tb3ZlLmtpbmQgIT09ICdwb3dlcicgfHwgIWJlc3QubW92ZS5jYXB0dXJlc1BpZWNlSWQgfHwgYmVzdC5zY29yZSA+PSAxMDAwMCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBiZXN0QmFzaWNDYXB0dXJlID0gc2NvcmVkLmZpbmQoKGl0ZW0pID0+IGl0ZW0ubW92ZS5raW5kID09PSAnYmFzaWMnICYmIGl0ZW0ubW92ZS5jYXB0dXJlc1BpZWNlSWQpO1xuICBpZiAoIWJlc3RCYXNpY0NhcHR1cmUpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIGJlc3Quc2NvcmUgLSBiZXN0QmFzaWNDYXB0dXJlLnNjb3JlIDw9IDY1MCA/IGJlc3RCYXNpY0NhcHR1cmUubW92ZSA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gcGlja05vaXN5Qm90TW92ZShcbiAgc2NvcmVkOiBBcnJheTx7IG1vdmU6IENoZXNzaW1hbHNNb3ZlOyBzY29yZTogbnVtYmVyIH0+LFxuICBzcHJlYWQ6IG51bWJlcixcbik6IENoZXNzaW1hbHNNb3ZlIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHNjb3JlZC5sZW5ndGggPT09IDApIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IHBvb2xTaXplID0gTWF0aC5tYXgoMSwgTWF0aC5jZWlsKHNjb3JlZC5sZW5ndGggKiBzcHJlYWQpKTtcbiAgY29uc3QgcG9vbCA9IHNjb3JlZC5zbGljZSgwLCBwb29sU2l6ZSk7XG4gIGNvbnN0IHRvcFNjb3JlID0gcG9vbFswXT8uc2NvcmUgPz8gMDtcbiAgY29uc3Qgd2VpZ2h0ZWQgPSBwb29sLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICBjb25zdCByZWxhdGl2ZSA9IE1hdGgubWF4KDAsIGl0ZW0uc2NvcmUgLSB0b3BTY29yZSArIDEyMDApO1xuICAgIGNvbnN0IHdlaWdodCA9IE1hdGgubWF4KDEsIHJlbGF0aXZlIC8gMTIwICsgKHBvb2wubGVuZ3RoIC0gaW5kZXgpICogMik7XG4gICAgcmV0dXJuIHsgLi4uaXRlbSwgd2VpZ2h0IH07XG4gIH0pO1xuICBjb25zdCB0b3RhbFdlaWdodCA9IHdlaWdodGVkLnJlZHVjZSgodG90YWwsIGl0ZW0pID0+IHRvdGFsICsgaXRlbS53ZWlnaHQsIDApO1xuICBsZXQgY3Vyc29yID0gTWF0aC5yYW5kb20oKSAqIHRvdGFsV2VpZ2h0O1xuICBmb3IgKGNvbnN0IGl0ZW0gb2Ygd2VpZ2h0ZWQpIHtcbiAgICBjdXJzb3IgLT0gaXRlbS53ZWlnaHQ7XG4gICAgaWYgKGN1cnNvciA8PSAwKSByZXR1cm4gaXRlbS5tb3ZlO1xuICB9XG4gIHJldHVybiBwb29sWzBdPy5tb3ZlO1xufVxuXG5mdW5jdGlvbiBnZXRJbW1lZGlhdGVXaW5uaW5nTW92ZXMoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yLFxuKTogQ2hlc3NpbWFsc01vdmVbXSB7XG4gIHJldHVybiBnZXRDaGVzc2ltYWxzQWxsTGVnYWxNb3ZlcyhzdGF0ZSwgY29sb3IpLmZpbHRlcihcbiAgICAobW92ZSkgPT4gbW92ZS5raW5kID09PSAnYmFzaWMnICYmIGlzUHJvbW90aW9uUm93KHN0YXRlLmJvYXJkU2l6ZSwgY29sb3IsIG1vdmUudG8pLFxuICApO1xufVxuXG5mdW5jdGlvbiB3b3VsZFVubG9ja1Bvd2VyKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcixcbiAgcG9zaXRpb246IENoZXNzaW1hbHNQb3NpdGlvbixcbik6IGJvb2xlYW4ge1xuICBpZiAoc3RhdGUucGxheWVyc1tjb2xvcl0ucG93ZXJVbmxvY2tlZCkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBjZW50ZXJUb3AgPSBzdGF0ZS5ib2FyZFNpemUgLyAyIC0gMTtcbiAgY29uc3QgY2VudGVyQm90dG9tID0gc3RhdGUuYm9hcmRTaXplIC8gMjtcbiAgcmV0dXJuIGNvbG9yID09PSAnd2hpdGUnID8gcG9zaXRpb24ucm93IDw9IGNlbnRlclRvcCA6IHBvc2l0aW9uLnJvdyA+PSBjZW50ZXJCb3R0b207XG59XG5cbmZ1bmN0aW9uIGlzU3F1YXJlVnVsbmVyYWJsZUFmdGVyTW92ZShzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgbW92ZTogQ2hlc3NpbWFsc01vdmUpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBhZnRlck1vdmUgPSBhcHBseUNoZXNzaW1hbHNNb3ZlKHN0YXRlLCBtb3ZlKTtcbiAgICBpZiAoYWZ0ZXJNb3ZlLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBnZXRDaGVzc2ltYWxzQWxsTGVnYWxNb3ZlcyhhZnRlck1vdmUpLnNvbWUoKGVuZW15TW92ZSkgPT5cbiAgICAgIHNhbWVQb3NpdGlvbihlbmVteU1vdmUudG8sIG1vdmUudG8pICYmICEhZW5lbXlNb3ZlLmNhcHR1cmVzUGllY2VJZCxcbiAgICApO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0UG93ZXJEaXJlY3Rpb25zKGFuaW1hbDogQ2hlc3NpbWFsc0FuaW1hbFR5cGUpOiBDaGVzc2ltYWxzUG9zaXRpb25bXSB7XG4gIGlmIChhbmltYWwgPT09ICdlYWdsZScpIHtcbiAgICByZXR1cm4gW1xuICAgICAgeyByb3c6IC0xLCBjb2w6IC0xIH0sXG4gICAgICB7IHJvdzogLTEsIGNvbDogMSB9LFxuICAgICAgeyByb3c6IDEsIGNvbDogLTEgfSxcbiAgICAgIHsgcm93OiAxLCBjb2w6IDEgfSxcbiAgICBdO1xuICB9XG4gIGlmIChhbmltYWwgPT09ICdidWxsJykge1xuICAgIHJldHVybiBbXG4gICAgICB7IHJvdzogLTEsIGNvbDogMCB9LFxuICAgICAgeyByb3c6IDEsIGNvbDogMCB9LFxuICAgICAgeyByb3c6IDAsIGNvbDogLTEgfSxcbiAgICAgIHsgcm93OiAwLCBjb2w6IDEgfSxcbiAgICBdO1xuICB9XG4gIHJldHVybiBbXG4gICAgeyByb3c6IC0xLCBjb2w6IC0xIH0sXG4gICAgeyByb3c6IC0xLCBjb2w6IDAgfSxcbiAgICB7IHJvdzogLTEsIGNvbDogMSB9LFxuICAgIHsgcm93OiAwLCBjb2w6IC0xIH0sXG4gICAgeyByb3c6IDAsIGNvbDogMSB9LFxuICAgIHsgcm93OiAxLCBjb2w6IC0xIH0sXG4gICAgeyByb3c6IDEsIGNvbDogMCB9LFxuICAgIHsgcm93OiAxLCBjb2w6IDEgfSxcbiAgXTtcbn1cblxuZnVuY3Rpb24gcmVmcmVzaENoZXNzaW1hbHNQb3dlclVubG9ja3Moc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiBDaGVzc2ltYWxzR2FtZVN0YXRlIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBwbGF5ZXJzOiB7XG4gICAgICB3aGl0ZToge1xuICAgICAgICAuLi5zdGF0ZS5wbGF5ZXJzLndoaXRlLFxuICAgICAgICBwb3dlclVubG9ja2VkOlxuICAgICAgICAgIHN0YXRlLnBsYXllcnMud2hpdGUucG93ZXJVbmxvY2tlZCB8fFxuICAgICAgICAgIGhhc0Nyb3NzZWRDZW50ZXIoc3RhdGUsICd3aGl0ZScpIHx8XG4gICAgICAgICAgaGFzRW5lbXlFbnRlcmVkSG9tZShzdGF0ZSwgJ3doaXRlJyksXG4gICAgICB9LFxuICAgICAgYmxhY2s6IHtcbiAgICAgICAgLi4uc3RhdGUucGxheWVycy5ibGFjayxcbiAgICAgICAgcG93ZXJVbmxvY2tlZDpcbiAgICAgICAgICBzdGF0ZS5wbGF5ZXJzLmJsYWNrLnBvd2VyVW5sb2NrZWQgfHxcbiAgICAgICAgICBoYXNDcm9zc2VkQ2VudGVyKHN0YXRlLCAnYmxhY2snKSB8fFxuICAgICAgICAgIGhhc0VuZW15RW50ZXJlZEhvbWUoc3RhdGUsICdibGFjaycpLFxuICAgICAgfSxcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBoYXNDcm9zc2VkQ2VudGVyKHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yKTogYm9vbGVhbiB7XG4gIGNvbnN0IGNlbnRlclRvcCA9IHN0YXRlLmJvYXJkU2l6ZSAvIDIgLSAxO1xuICBjb25zdCBjZW50ZXJCb3R0b20gPSBzdGF0ZS5ib2FyZFNpemUgLyAyO1xuICByZXR1cm4gYWN0aXZlUGllY2VzKHN0YXRlKS5zb21lKChwaWVjZSkgPT4ge1xuICAgIGlmIChwaWVjZS5jb2xvciAhPT0gY29sb3IgfHwgcGllY2UuY2FwdHVyZWQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gY29sb3IgPT09ICd3aGl0ZScgPyBwaWVjZS5wb3NpdGlvbi5yb3cgPD0gY2VudGVyVG9wIDogcGllY2UucG9zaXRpb24ucm93ID49IGNlbnRlckJvdHRvbTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGhhc0VuZW15RW50ZXJlZEhvbWUoc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IpOiBib29sZWFuIHtcbiAgY29uc3QgY2VudGVyVG9wID0gc3RhdGUuYm9hcmRTaXplIC8gMiAtIDE7XG4gIGNvbnN0IGNlbnRlckJvdHRvbSA9IHN0YXRlLmJvYXJkU2l6ZSAvIDI7XG4gIGNvbnN0IGVuZW15ID0gb3RoZXJDb2xvcihjb2xvcik7XG4gIHJldHVybiBhY3RpdmVQaWVjZXMoc3RhdGUpLnNvbWUoKHBpZWNlKSA9PiB7XG4gICAgaWYgKHBpZWNlLmNvbG9yICE9PSBlbmVteSB8fCBwaWVjZS5jYXB0dXJlZCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBjb2xvciA9PT0gJ3doaXRlJyA/IHBpZWNlLnBvc2l0aW9uLnJvdyA+PSBjZW50ZXJCb3R0b20gOiBwaWVjZS5wb3NpdGlvbi5yb3cgPD0gY2VudGVyVG9wO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gaXNQcm9tb3Rpb25Sb3coXG4gIGJvYXJkU2l6ZTogQ2hlc3NpbWFsc0JvYXJkU2l6ZSxcbiAgY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcixcbiAgcG9zaXRpb246IENoZXNzaW1hbHNQb3NpdGlvbixcbik6IGJvb2xlYW4ge1xuICByZXR1cm4gY29sb3IgPT09ICd3aGl0ZScgPyBwb3NpdGlvbi5yb3cgPT09IDAgOiBwb3NpdGlvbi5yb3cgPT09IGJvYXJkU2l6ZSAtIDE7XG59XG5cbmZ1bmN0aW9uIGlzSW5zaWRlQm9hcmQoYm9hcmRTaXplOiBDaGVzc2ltYWxzQm9hcmRTaXplLCBwb3NpdGlvbjogQ2hlc3NpbWFsc1Bvc2l0aW9uKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgcG9zaXRpb24ucm93ID49IDAgJiYgcG9zaXRpb24ucm93IDwgYm9hcmRTaXplICYmIHBvc2l0aW9uLmNvbCA+PSAwICYmIHBvc2l0aW9uLmNvbCA8IGJvYXJkU2l6ZVxuICApO1xufVxuXG5mdW5jdGlvbiBzYW1lUG9zaXRpb24oYTogQ2hlc3NpbWFsc1Bvc2l0aW9uLCBiOiBDaGVzc2ltYWxzUG9zaXRpb24pOiBib29sZWFuIHtcbiAgcmV0dXJuIGEucm93ID09PSBiLnJvdyAmJiBhLmNvbCA9PT0gYi5jb2w7XG59XG5cbmZ1bmN0aW9uIG90aGVyQ29sb3IoY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcik6IENoZXNzaW1hbHNQbGF5ZXJDb2xvciB7XG4gIHJldHVybiBjb2xvciA9PT0gJ3doaXRlJyA/ICdibGFjaycgOiAnd2hpdGUnO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMb2NhbElkKCk6IHN0cmluZyB7XG4gIHJldHVybiBgbG9jYWwtJHtEYXRlLm5vdygpLnRvU3RyaW5nKDM2KX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCA4KX1gO1xufVxuIl19