valtech-components 4.0.540 → 4.0.542

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 (66) hide show
  1. package/esm2022/lib/components/molecules/picker-v2/picker-v2.component.mjs +8 -4
  2. package/esm2022/lib/components/organisms/bottom-nav/side-nav-adapter.mjs +11 -0
  3. package/esm2022/lib/components/organisms/mini-games/bubble-blitz-game.component.mjs +3 -3
  4. package/esm2022/lib/components/organisms/mini-games/chessimals-challenge-progress.service.mjs +45 -6
  5. package/esm2022/lib/components/organisms/mini-games/chessimals-engine.mjs +18 -1
  6. package/esm2022/lib/components/organisms/mini-games/chessimals-game.component.mjs +804 -801
  7. package/esm2022/lib/components/organisms/mini-games/christianity-game.component.mjs +3 -3
  8. package/esm2022/lib/components/organisms/mini-games/memory-game.component.mjs +3 -3
  9. package/esm2022/lib/components/organisms/mini-games/mini-games-menu.component.mjs +3 -3
  10. package/esm2022/lib/components/organisms/mini-games/mini-games.i18n.mjs +97 -9
  11. package/esm2022/lib/components/organisms/mini-games/retro-audio.service.mjs +27 -1
  12. package/esm2022/lib/components/organisms/mini-games/simon-game.component.mjs +3 -3
  13. package/esm2022/lib/components/organisms/mini-games/types.mjs +1 -1
  14. package/esm2022/lib/components/organisms/toolbar/toolbar.component.mjs +3 -3
  15. package/esm2022/lib/components/organisms/toolbar/types.mjs +1 -1
  16. package/esm2022/lib/services/forms/form-schema-builder.service.mjs +84 -1
  17. package/esm2022/lib/services/forms/types.mjs +8 -2
  18. package/esm2022/lib/version.mjs +2 -2
  19. package/esm2022/mini-games/public-api.mjs +2 -8
  20. package/esm2022/public-api.mjs +4 -1
  21. package/fesm2022/valtech-components-mini-games.mjs +1 -7
  22. package/fesm2022/valtech-components-mini-games.mjs.map +1 -1
  23. package/fesm2022/valtech-components.mjs +1107 -829
  24. package/fesm2022/valtech-components.mjs.map +1 -1
  25. package/lib/components/molecules/picker-v2/picker-v2.component.d.ts +2 -2
  26. package/lib/components/organisms/bottom-nav/side-nav-adapter.d.ts +7 -0
  27. package/lib/components/organisms/mini-games/chessimals-challenge-progress.service.d.ts +4 -0
  28. package/lib/components/organisms/mini-games/chessimals-game.component.d.ts +32 -1
  29. package/lib/components/organisms/mini-games/retro-audio.service.d.ts +2 -0
  30. package/lib/components/organisms/mini-games/types.d.ts +2 -0
  31. package/lib/components/organisms/toolbar/types.d.ts +2 -0
  32. package/lib/services/forms/form-schema-builder.service.d.ts +15 -1
  33. package/lib/services/forms/types.d.ts +4 -0
  34. package/lib/version.d.ts +1 -1
  35. package/package.json +1 -1
  36. package/public-api.d.ts +2 -0
  37. package/src/lib/assets/games/README.md +149 -0
  38. package/src/lib/assets/games/chessimals/brand/README.md +23 -0
  39. package/src/lib/assets/games/chessimals/brand/chessimals-app-icon-192.png +0 -0
  40. package/src/lib/assets/games/chessimals/brand/chessimals-app-icon-512.png +0 -0
  41. package/src/lib/assets/games/chessimals/brand/chessimals-app-icon-capacitor.png +0 -0
  42. package/src/lib/assets/games/chessimals/brand/chessimals-app-icon.png +0 -0
  43. package/src/lib/assets/games/chessimals/brand/chessimals-emblem.png +0 -0
  44. package/src/lib/assets/games/chessimals/brand/chessimals-favicon.png +0 -0
  45. package/src/lib/assets/games/chessimals/brand/chessimals-wordmark.png +0 -0
  46. package/src/lib/assets/games/chessimals/challenge-avatars/ambusher.png +0 -0
  47. package/src/lib/assets/games/chessimals/challenge-avatars/endgame.png +0 -0
  48. package/src/lib/assets/games/chessimals/challenge-avatars/explorer.png +0 -0
  49. package/src/lib/assets/games/chessimals/challenge-avatars/guardian.png +0 -0
  50. package/src/lib/assets/games/chessimals/challenge-avatars/hunter.png +0 -0
  51. package/src/lib/assets/games/chessimals/challenge-avatars/impulsive.png +0 -0
  52. package/src/lib/assets/games/chessimals/challenge-avatars/jumper.png +0 -0
  53. package/src/lib/assets/games/chessimals/challenge-avatars/locksmith.png +0 -0
  54. package/src/lib/assets/games/chessimals/challenge-avatars/matriarch.png +0 -0
  55. package/src/lib/assets/games/chessimals/challenge-avatars/oracle.png +0 -0
  56. package/src/lib/assets/games/chessimals/challenge-avatars/predator.png +0 -0
  57. package/src/lib/assets/games/chessimals/challenge-avatars/runner.png +0 -0
  58. package/src/lib/assets/games/chessimals/challenge-avatars/sentinel.png +0 -0
  59. package/src/lib/assets/games/chessimals/challenge-avatars/sprinter.png +0 -0
  60. package/src/lib/assets/games/chessimals/challenge-avatars/storm.png +0 -0
  61. package/src/lib/assets/games/chessimals/challenge-avatars/strategist.png +0 -0
  62. package/src/lib/assets/games/chessimals/powers/README.md +12 -0
  63. package/src/lib/assets/games/chessimals/powers/bull-power.png +0 -0
  64. package/src/lib/assets/games/chessimals/powers/eagle-power.png +0 -0
  65. package/src/lib/assets/games/chessimals/powers/kangaroo-power.png +0 -0
  66. package/src/lib/assets/games/chessimals/powers/lion-power.png +0 -0
@@ -547,7 +547,7 @@ export class MemoryGameComponent {
547
547
  />
548
548
  </ng-template>
549
549
  </ion-modal>
550
- `, isInline: true, styles: [":host{display:block;min-height:100%;--memory-panel: var(--ion-card-background, #ffffff);--memory-panel-strong: #f8f6fb;--memory-border: var(--ion-border-color, #e7e4ea);--memory-text: var(--ion-color-dark, #2f2a3a);--memory-muted: var(--ion-color-medium, #6f6a7a);--memory-soft: rgba(var(--ion-color-primary-rgb, 255, 0, 178), .08);--memory-row: rgba(var(--ion-color-dark-rgb, 47, 42, 58), .04);--memory-primary: var(--ion-color-primary, #ff00b2);--memory-secondary: var(--ion-color-tertiary, #6a2de2)}:host-context(html.ion-palette-dark),:host-context([data-theme=\"dark\"]){--memory-panel: #231f2d;--memory-panel-strong: #2f2939;--memory-border: rgba(255, 255, 255, .13);--memory-text: #fff8ff;--memory-muted: rgba(255, 248, 255, .68);--memory-soft: rgba(255, 255, 255, .045);--memory-row: rgba(255, 255, 255, .055)}.memory-shell{min-height:calc(100vh - 120px);display:flex;flex-direction:column;gap:20px;padding:18px 0 32px;color:var(--memory-text)}.memory-hero{position:relative;overflow:hidden;border-radius:28px;padding:clamp(28px,8vw,52px) 20px;text-align:center;color:#fff;background:radial-gradient(circle at 18% 20%,rgba(255,255,255,.32),transparent 24%),linear-gradient(135deg,var(--memory-primary),var(--memory-secondary));box-shadow:0 24px 70px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.25)}.memory-hero:after{content:\"\";position:absolute;inset:auto -20% -42%;height:55%;background:repeating-linear-gradient(90deg,rgba(255,255,255,.18) 0 10px,transparent 10px 20px);opacity:.18;transform:rotate(-4deg)}.memory-hero__badge{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:#ffffff29;font-size:.78rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.memory-hero h1{margin:14px 0 6px;font-size:clamp(2.25rem,9vw,3.625rem);line-height:.95;font-weight:900}.memory-hero p{max-width:520px;margin:0 auto;font-size:clamp(1rem,3vw,1.25rem);line-height:1.35;opacity:.88}.memory-panel,.memory-game{border:1px solid var(--memory-border);border-radius:24px;padding:clamp(16px,4vw,28px);background:var(--memory-panel);box-shadow:inset 0 1px #ffffff08}.memory-options{display:grid;gap:14px}.memory-howto{display:grid;gap:6px;padding:16px;border:1px solid var(--memory-border);border-radius:20px;background:var(--memory-soft)}.memory-options h2,.memory-howto h2,.memory-leaderboard h2{margin:8px 0 0;color:var(--memory-text);font-size:1.25rem;font-weight:900}.memory-howto h2,.memory-leaderboard h2{margin:0}.memory-howto p,.memory-leaderboard p{margin:0;color:var(--memory-muted);font-size:1rem;line-height:1.45}.memory-profiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.memory-profiles button,.memory-secondary{border:1px solid var(--memory-border);border-radius:999px;background:transparent;color:var(--memory-text);font:inherit;font-weight:850}.memory-profiles button{min-height:92px;display:grid;align-content:center;gap:5px;padding:12px 18px;text-align:center}.memory-profiles button.is-selected{border-color:var(--memory-primary);background:rgba(var(--ion-color-primary-rgb, 255, 0, 178),.12);color:var(--memory-primary)}.memory-profiles strong{font-size:1.02rem}.memory-profiles small{color:var(--memory-muted);font-size:.88rem;line-height:1.25}.memory-profiles button.is-selected small{color:inherit}.memory-primary{min-height:58px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:999px;background:var(--memory-primary);color:var(--ion-color-primary-contrast, #fff);font:inherit;font-weight:900;box-shadow:0 18px 45px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.28)}.memory-primary ion-icon{flex:0 0 auto;width:1.25em;height:1.25em;font-size:1.25em;line-height:1}.memory-score{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:16px}.memory-score span{border-radius:18px;padding:12px;background:var(--memory-row);text-align:center}.memory-score small,.memory-win p{color:var(--memory-muted)}.memory-score small{display:block;font-size:.72rem;font-weight:850;text-transform:uppercase;letter-spacing:.08em}.memory-score strong{display:block;color:var(--memory-text);font-size:1.35rem;font-weight:950}.memory-board{display:grid;grid-template-columns:repeat(4,minmax(58px,1fr));gap:clamp(8px,2vw,12px)}.memory-board--kid,.memory-board--classic{grid-template-columns:repeat(4,minmax(58px,1fr))}.memory-board--ninja{grid-template-columns:repeat(8,minmax(40px,1fr))}.memory-card{position:relative;aspect-ratio:1;border:0;border-radius:clamp(14px,4vw,22px);background:transparent;perspective:800px;font-size:clamp(24px,7vw,42px)}.memory-card__back,.memory-card__front{position:absolute;inset:0;display:grid;place-items:center;border-radius:inherit;backface-visibility:hidden;transition:transform .28s ease,box-shadow .2s ease,opacity .2s ease}.memory-card__back{background:radial-gradient(circle at 32% 28%,rgba(255,255,255,.3),transparent 24%),linear-gradient(135deg,var(--memory-secondary),var(--memory-primary));color:#fff;font-weight:950;box-shadow:0 10px 24px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.2)}.memory-card__front{transform:rotateY(180deg);border:1px solid var(--memory-border);background:var(--memory-panel-strong)}.memory-card.is-flipped .memory-card__back{transform:rotateY(180deg)}.memory-card.is-flipped .memory-card__front{transform:rotateY(360deg)}.memory-card.is-matched .memory-card__front{box-shadow:inset 0 0 0 3px var(--memory-primary)}.memory-win{position:relative;overflow:hidden;margin-top:16px;padding:16px;border-radius:20px;background:rgba(var(--ion-color-success-rgb, 45, 211, 111),.12);text-align:center}.memory-win ion-icon{display:block;margin:0 auto 8px;color:var(--ion-color-success, #2dd36f);font-size:2rem}.memory-win strong{color:var(--memory-text);font-size:1.35rem;font-weight:950}.memory-win p{margin:4px 0 0}.memory-result{position:relative;z-index:1;display:inline-flex;align-items:center;gap:10px;margin-top:12px;padding:10px 14px;border-radius:999px;background:#ffffffb8;color:#2f2a3a}:host-context(html.ion-palette-dark) .memory-result,:host-context([data-theme=\"dark\"]) .memory-result{background:#ffffff1a;color:var(--memory-text)}.memory-result>span{display:grid;place-items:center;width:38px;height:38px;border-radius:999px;background:var(--player-color, var(--memory-primary));font-size:1.3rem}.memory-result div{display:grid;text-align:left}.memory-result small{color:var(--memory-muted);font-weight:800}.memory-confetti span{position:absolute;top:-16px;left:8%;width:9px;height:16px;border-radius:4px;background:var(--memory-primary);opacity:0;animation:memory-confetti-fall 1.5s ease-out forwards;transform:rotate(20deg)}.memory-confetti span:nth-child(2n){background:var(--memory-secondary);animation-delay:.08s;left:20%}.memory-confetti span:nth-child(3n){background:#ffcf3f;animation-delay:.16s;left:38%}.memory-confetti span:nth-child(4n){background:#2dd36f;animation-delay:.24s;left:55%}.memory-confetti span:nth-child(5n){left:72%}.memory-confetti span:nth-child(6n){left:86%}.memory-win--failed{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.memory-actions{position:sticky;bottom:10px;z-index:2;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:16px;padding-top:10px;background:linear-gradient(to bottom,transparent,var(--memory-panel) 28%)}.memory-menu-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:10px}.memory-secondary{min-height:58px}.memory-leaderboard{display:grid;gap:12px;border:1px solid var(--memory-border);border-radius:24px;padding:clamp(16px,4vw,22px);background:var(--memory-panel)}.memory-leaderboard__title{display:flex;align-items:center;gap:10px}.memory-leaderboard__title ion-icon{color:var(--memory-primary);font-size:1.4rem}.memory-leaderboard ol{display:grid;gap:8px;margin:0;padding:0;list-style:none}.memory-leaderboard li{display:grid;grid-template-columns:38px 1fr;gap:2px 10px;align-items:center;padding:12px;border-radius:16px;background:var(--memory-row)}.memory-leaderboard li>span{grid-row:span 2;display:grid;place-items:center;width:34px;height:34px;border-radius:999px;background:rgba(var(--ion-color-primary-rgb, 255, 0, 178),.18);color:var(--memory-primary);font-weight:950}.memory-leaderboard strong{color:var(--memory-text);font-size:.98rem}.memory-leaderboard small{color:var(--memory-muted);font-size:.88rem}.memory-player{display:grid;gap:12px;padding:14px;border:1px solid var(--memory-border);border-radius:22px;background:var(--memory-soft)}.memory-player h2,.memory-player p{margin:0}.memory-player p{color:var(--memory-muted)}.memory-player label{display:grid;gap:6px;font-weight:850}.memory-player input{width:100%;min-height:52px;border:1px solid var(--memory-border);border-radius:999px;padding:0 18px;background:var(--memory-panel);color:var(--memory-text);font:inherit;font-weight:850}.memory-avatar-list,.memory-color-list{display:flex;flex-wrap:wrap;gap:8px}.memory-avatar-list button,.memory-color-list button{display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--memory-border);border-radius:999px;background:var(--memory-panel);color:var(--memory-text);font-size:1.15rem}.memory-avatar-list button.is-selected,.memory-color-list button.is-selected{border-color:var(--memory-primary);box-shadow:0 0 0 3px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.14)}.memory-color-list button{background:var(--player-color)}@keyframes memory-confetti-fall{0%{opacity:0;transform:translateY(0) rotate(0)}18%{opacity:1}to{opacity:0;transform:translateY(170px) rotate(300deg)}}@media (max-width: 520px){.memory-score{grid-template-columns:repeat(2,1fr)}.memory-board--ninja{grid-template-columns:repeat(4,minmax(54px,1fr))}.memory-actions,.memory-menu-actions,.memory-profiles{grid-template-columns:1fr}}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: ModalLayoutComponent, selector: "val-modal-layout", inputs: ["title", "subtitle", "closeLabel", "showClose", "actions", "actionsAlign", "footer", "footerClass"], outputs: ["close", "actionClick"] }] }); }
550
+ `, isInline: true, styles: [":host{display:block;min-height:100%;font-size:var(--val-mini-games-font-size, 1rem);--memory-panel: var(--ion-card-background, #ffffff);--memory-panel-strong: #f8f6fb;--memory-border: var(--ion-border-color, #e7e4ea);--memory-text: var(--ion-color-dark, #2f2a3a);--memory-muted: var(--ion-color-medium, #6f6a7a);--memory-soft: rgba(var(--ion-color-primary-rgb, 255, 0, 178), .08);--memory-row: rgba(var(--ion-color-dark-rgb, 47, 42, 58), .04);--memory-primary: var(--ion-color-primary, #ff00b2);--memory-secondary: var(--ion-color-tertiary, #6a2de2)}:host-context(body.font-small){--val-mini-games-font-size: .875rem}:host-context(body.font-large){--val-mini-games-font-size: 1.1875rem}:host-context(html.ion-palette-dark),:host-context([data-theme=\"dark\"]){--memory-panel: #231f2d;--memory-panel-strong: #2f2939;--memory-border: rgba(255, 255, 255, .13);--memory-text: #fff8ff;--memory-muted: rgba(255, 248, 255, .68);--memory-soft: rgba(255, 255, 255, .045);--memory-row: rgba(255, 255, 255, .055)}.memory-shell{min-height:calc(100vh - 120px);display:flex;flex-direction:column;gap:20px;padding:18px 0 32px;color:var(--memory-text)}.memory-hero{position:relative;overflow:hidden;border-radius:28px;padding:clamp(28px,8vw,52px) 20px;text-align:center;color:#fff;background:radial-gradient(circle at 18% 20%,rgba(255,255,255,.32),transparent 24%),linear-gradient(135deg,var(--memory-primary),var(--memory-secondary));box-shadow:0 24px 70px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.25)}.memory-hero:after{content:\"\";position:absolute;inset:auto -20% -42%;height:55%;background:repeating-linear-gradient(90deg,rgba(255,255,255,.18) 0 10px,transparent 10px 20px);opacity:.18;transform:rotate(-4deg)}.memory-hero__badge{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:#ffffff29;font-size:.78rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.memory-hero h1{margin:14px 0 6px;font-size:clamp(2.25rem,9vw,3.625rem);line-height:.95;font-weight:900}.memory-hero p{max-width:520px;margin:0 auto;font-size:clamp(1rem,3vw,1.25rem);line-height:1.35;opacity:.88}.memory-panel,.memory-game{border:1px solid var(--memory-border);border-radius:24px;padding:clamp(16px,4vw,28px);background:var(--memory-panel);box-shadow:inset 0 1px #ffffff08}.memory-options{display:grid;gap:14px}.memory-howto{display:grid;gap:6px;padding:16px;border:1px solid var(--memory-border);border-radius:20px;background:var(--memory-soft)}.memory-options h2,.memory-howto h2,.memory-leaderboard h2{margin:8px 0 0;color:var(--memory-text);font-size:1.25rem;font-weight:900}.memory-howto h2,.memory-leaderboard h2{margin:0}.memory-howto p,.memory-leaderboard p{margin:0;color:var(--memory-muted);font-size:1rem;line-height:1.45}.memory-profiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.memory-profiles button,.memory-secondary{border:1px solid var(--memory-border);border-radius:999px;background:transparent;color:var(--memory-text);font:inherit;font-weight:850}.memory-profiles button{min-height:92px;display:grid;align-content:center;gap:5px;padding:12px 18px;text-align:center}.memory-profiles button.is-selected{border-color:var(--memory-primary);background:rgba(var(--ion-color-primary-rgb, 255, 0, 178),.12);color:var(--memory-primary)}.memory-profiles strong{font-size:1.02rem}.memory-profiles small{color:var(--memory-muted);font-size:.88rem;line-height:1.25}.memory-profiles button.is-selected small{color:inherit}.memory-primary{min-height:58px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:999px;background:var(--memory-primary);color:var(--ion-color-primary-contrast, #fff);font:inherit;font-weight:900;box-shadow:0 18px 45px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.28)}.memory-primary ion-icon{flex:0 0 auto;width:1.25em;height:1.25em;font-size:1.25em;line-height:1}.memory-score{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:16px}.memory-score span{border-radius:18px;padding:12px;background:var(--memory-row);text-align:center}.memory-score small,.memory-win p{color:var(--memory-muted)}.memory-score small{display:block;font-size:.72rem;font-weight:850;text-transform:uppercase;letter-spacing:.08em}.memory-score strong{display:block;color:var(--memory-text);font-size:1.35rem;font-weight:950}.memory-board{display:grid;grid-template-columns:repeat(4,minmax(58px,1fr));gap:clamp(8px,2vw,12px)}.memory-board--kid,.memory-board--classic{grid-template-columns:repeat(4,minmax(58px,1fr))}.memory-board--ninja{grid-template-columns:repeat(8,minmax(40px,1fr))}.memory-card{position:relative;aspect-ratio:1;border:0;border-radius:clamp(14px,4vw,22px);background:transparent;perspective:800px;font-size:clamp(24px,7vw,42px)}.memory-card__back,.memory-card__front{position:absolute;inset:0;display:grid;place-items:center;border-radius:inherit;backface-visibility:hidden;transition:transform .28s ease,box-shadow .2s ease,opacity .2s ease}.memory-card__back{background:radial-gradient(circle at 32% 28%,rgba(255,255,255,.3),transparent 24%),linear-gradient(135deg,var(--memory-secondary),var(--memory-primary));color:#fff;font-weight:950;box-shadow:0 10px 24px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.2)}.memory-card__front{transform:rotateY(180deg);border:1px solid var(--memory-border);background:var(--memory-panel-strong)}.memory-card.is-flipped .memory-card__back{transform:rotateY(180deg)}.memory-card.is-flipped .memory-card__front{transform:rotateY(360deg)}.memory-card.is-matched .memory-card__front{box-shadow:inset 0 0 0 3px var(--memory-primary)}.memory-win{position:relative;overflow:hidden;margin-top:16px;padding:16px;border-radius:20px;background:rgba(var(--ion-color-success-rgb, 45, 211, 111),.12);text-align:center}.memory-win ion-icon{display:block;margin:0 auto 8px;color:var(--ion-color-success, #2dd36f);font-size:2rem}.memory-win strong{color:var(--memory-text);font-size:1.35rem;font-weight:950}.memory-win p{margin:4px 0 0}.memory-result{position:relative;z-index:1;display:inline-flex;align-items:center;gap:10px;margin-top:12px;padding:10px 14px;border-radius:999px;background:#ffffffb8;color:#2f2a3a}:host-context(html.ion-palette-dark) .memory-result,:host-context([data-theme=\"dark\"]) .memory-result{background:#ffffff1a;color:var(--memory-text)}.memory-result>span{display:grid;place-items:center;width:38px;height:38px;border-radius:999px;background:var(--player-color, var(--memory-primary));font-size:1.3rem}.memory-result div{display:grid;text-align:left}.memory-result small{color:var(--memory-muted);font-weight:800}.memory-confetti span{position:absolute;top:-16px;left:8%;width:9px;height:16px;border-radius:4px;background:var(--memory-primary);opacity:0;animation:memory-confetti-fall 1.5s ease-out forwards;transform:rotate(20deg)}.memory-confetti span:nth-child(2n){background:var(--memory-secondary);animation-delay:.08s;left:20%}.memory-confetti span:nth-child(3n){background:#ffcf3f;animation-delay:.16s;left:38%}.memory-confetti span:nth-child(4n){background:#2dd36f;animation-delay:.24s;left:55%}.memory-confetti span:nth-child(5n){left:72%}.memory-confetti span:nth-child(6n){left:86%}.memory-win--failed{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.memory-actions{position:sticky;bottom:10px;z-index:2;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:16px;padding-top:10px;background:linear-gradient(to bottom,transparent,var(--memory-panel) 28%)}.memory-menu-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:10px}.memory-secondary{min-height:58px}.memory-leaderboard{display:grid;gap:12px;border:1px solid var(--memory-border);border-radius:24px;padding:clamp(16px,4vw,22px);background:var(--memory-panel)}.memory-leaderboard__title{display:flex;align-items:center;gap:10px}.memory-leaderboard__title ion-icon{color:var(--memory-primary);font-size:1.4rem}.memory-leaderboard ol{display:grid;gap:8px;margin:0;padding:0;list-style:none}.memory-leaderboard li{display:grid;grid-template-columns:38px 1fr;gap:2px 10px;align-items:center;padding:12px;border-radius:16px;background:var(--memory-row)}.memory-leaderboard li>span{grid-row:span 2;display:grid;place-items:center;width:34px;height:34px;border-radius:999px;background:rgba(var(--ion-color-primary-rgb, 255, 0, 178),.18);color:var(--memory-primary);font-weight:950}.memory-leaderboard strong{color:var(--memory-text);font-size:.98rem}.memory-leaderboard small{color:var(--memory-muted);font-size:.88rem}.memory-player{display:grid;gap:12px;padding:14px;border:1px solid var(--memory-border);border-radius:22px;background:var(--memory-soft)}.memory-player h2,.memory-player p{margin:0}.memory-player p{color:var(--memory-muted)}.memory-player label{display:grid;gap:6px;font-weight:850}.memory-player input{width:100%;min-height:52px;border:1px solid var(--memory-border);border-radius:999px;padding:0 18px;background:var(--memory-panel);color:var(--memory-text);font:inherit;font-weight:850}.memory-avatar-list,.memory-color-list{display:flex;flex-wrap:wrap;gap:8px}.memory-avatar-list button,.memory-color-list button{display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--memory-border);border-radius:999px;background:var(--memory-panel);color:var(--memory-text);font-size:1.15rem}.memory-avatar-list button.is-selected,.memory-color-list button.is-selected{border-color:var(--memory-primary);box-shadow:0 0 0 3px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.14)}.memory-color-list button{background:var(--player-color)}@keyframes memory-confetti-fall{0%{opacity:0;transform:translateY(0) rotate(0)}18%{opacity:1}to{opacity:0;transform:translateY(170px) rotate(300deg)}}@media (max-width: 520px){.memory-score{grid-template-columns:repeat(2,1fr)}.memory-board--ninja{grid-template-columns:repeat(4,minmax(54px,1fr))}.memory-actions,.memory-menu-actions,.memory-profiles{grid-template-columns:1fr}}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: ModalLayoutComponent, selector: "val-modal-layout", inputs: ["title", "subtitle", "closeLabel", "showClose", "actions", "actionsAlign", "footer", "footerClass"], outputs: ["close", "actionClick"] }] }); }
551
551
  }
552
552
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MemoryGameComponent, decorators: [{
553
553
  type: Component,
@@ -705,8 +705,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
705
705
  />
706
706
  </ng-template>
707
707
  </ion-modal>
708
- `, styles: [":host{display:block;min-height:100%;--memory-panel: var(--ion-card-background, #ffffff);--memory-panel-strong: #f8f6fb;--memory-border: var(--ion-border-color, #e7e4ea);--memory-text: var(--ion-color-dark, #2f2a3a);--memory-muted: var(--ion-color-medium, #6f6a7a);--memory-soft: rgba(var(--ion-color-primary-rgb, 255, 0, 178), .08);--memory-row: rgba(var(--ion-color-dark-rgb, 47, 42, 58), .04);--memory-primary: var(--ion-color-primary, #ff00b2);--memory-secondary: var(--ion-color-tertiary, #6a2de2)}:host-context(html.ion-palette-dark),:host-context([data-theme=\"dark\"]){--memory-panel: #231f2d;--memory-panel-strong: #2f2939;--memory-border: rgba(255, 255, 255, .13);--memory-text: #fff8ff;--memory-muted: rgba(255, 248, 255, .68);--memory-soft: rgba(255, 255, 255, .045);--memory-row: rgba(255, 255, 255, .055)}.memory-shell{min-height:calc(100vh - 120px);display:flex;flex-direction:column;gap:20px;padding:18px 0 32px;color:var(--memory-text)}.memory-hero{position:relative;overflow:hidden;border-radius:28px;padding:clamp(28px,8vw,52px) 20px;text-align:center;color:#fff;background:radial-gradient(circle at 18% 20%,rgba(255,255,255,.32),transparent 24%),linear-gradient(135deg,var(--memory-primary),var(--memory-secondary));box-shadow:0 24px 70px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.25)}.memory-hero:after{content:\"\";position:absolute;inset:auto -20% -42%;height:55%;background:repeating-linear-gradient(90deg,rgba(255,255,255,.18) 0 10px,transparent 10px 20px);opacity:.18;transform:rotate(-4deg)}.memory-hero__badge{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:#ffffff29;font-size:.78rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.memory-hero h1{margin:14px 0 6px;font-size:clamp(2.25rem,9vw,3.625rem);line-height:.95;font-weight:900}.memory-hero p{max-width:520px;margin:0 auto;font-size:clamp(1rem,3vw,1.25rem);line-height:1.35;opacity:.88}.memory-panel,.memory-game{border:1px solid var(--memory-border);border-radius:24px;padding:clamp(16px,4vw,28px);background:var(--memory-panel);box-shadow:inset 0 1px #ffffff08}.memory-options{display:grid;gap:14px}.memory-howto{display:grid;gap:6px;padding:16px;border:1px solid var(--memory-border);border-radius:20px;background:var(--memory-soft)}.memory-options h2,.memory-howto h2,.memory-leaderboard h2{margin:8px 0 0;color:var(--memory-text);font-size:1.25rem;font-weight:900}.memory-howto h2,.memory-leaderboard h2{margin:0}.memory-howto p,.memory-leaderboard p{margin:0;color:var(--memory-muted);font-size:1rem;line-height:1.45}.memory-profiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.memory-profiles button,.memory-secondary{border:1px solid var(--memory-border);border-radius:999px;background:transparent;color:var(--memory-text);font:inherit;font-weight:850}.memory-profiles button{min-height:92px;display:grid;align-content:center;gap:5px;padding:12px 18px;text-align:center}.memory-profiles button.is-selected{border-color:var(--memory-primary);background:rgba(var(--ion-color-primary-rgb, 255, 0, 178),.12);color:var(--memory-primary)}.memory-profiles strong{font-size:1.02rem}.memory-profiles small{color:var(--memory-muted);font-size:.88rem;line-height:1.25}.memory-profiles button.is-selected small{color:inherit}.memory-primary{min-height:58px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:999px;background:var(--memory-primary);color:var(--ion-color-primary-contrast, #fff);font:inherit;font-weight:900;box-shadow:0 18px 45px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.28)}.memory-primary ion-icon{flex:0 0 auto;width:1.25em;height:1.25em;font-size:1.25em;line-height:1}.memory-score{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:16px}.memory-score span{border-radius:18px;padding:12px;background:var(--memory-row);text-align:center}.memory-score small,.memory-win p{color:var(--memory-muted)}.memory-score small{display:block;font-size:.72rem;font-weight:850;text-transform:uppercase;letter-spacing:.08em}.memory-score strong{display:block;color:var(--memory-text);font-size:1.35rem;font-weight:950}.memory-board{display:grid;grid-template-columns:repeat(4,minmax(58px,1fr));gap:clamp(8px,2vw,12px)}.memory-board--kid,.memory-board--classic{grid-template-columns:repeat(4,minmax(58px,1fr))}.memory-board--ninja{grid-template-columns:repeat(8,minmax(40px,1fr))}.memory-card{position:relative;aspect-ratio:1;border:0;border-radius:clamp(14px,4vw,22px);background:transparent;perspective:800px;font-size:clamp(24px,7vw,42px)}.memory-card__back,.memory-card__front{position:absolute;inset:0;display:grid;place-items:center;border-radius:inherit;backface-visibility:hidden;transition:transform .28s ease,box-shadow .2s ease,opacity .2s ease}.memory-card__back{background:radial-gradient(circle at 32% 28%,rgba(255,255,255,.3),transparent 24%),linear-gradient(135deg,var(--memory-secondary),var(--memory-primary));color:#fff;font-weight:950;box-shadow:0 10px 24px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.2)}.memory-card__front{transform:rotateY(180deg);border:1px solid var(--memory-border);background:var(--memory-panel-strong)}.memory-card.is-flipped .memory-card__back{transform:rotateY(180deg)}.memory-card.is-flipped .memory-card__front{transform:rotateY(360deg)}.memory-card.is-matched .memory-card__front{box-shadow:inset 0 0 0 3px var(--memory-primary)}.memory-win{position:relative;overflow:hidden;margin-top:16px;padding:16px;border-radius:20px;background:rgba(var(--ion-color-success-rgb, 45, 211, 111),.12);text-align:center}.memory-win ion-icon{display:block;margin:0 auto 8px;color:var(--ion-color-success, #2dd36f);font-size:2rem}.memory-win strong{color:var(--memory-text);font-size:1.35rem;font-weight:950}.memory-win p{margin:4px 0 0}.memory-result{position:relative;z-index:1;display:inline-flex;align-items:center;gap:10px;margin-top:12px;padding:10px 14px;border-radius:999px;background:#ffffffb8;color:#2f2a3a}:host-context(html.ion-palette-dark) .memory-result,:host-context([data-theme=\"dark\"]) .memory-result{background:#ffffff1a;color:var(--memory-text)}.memory-result>span{display:grid;place-items:center;width:38px;height:38px;border-radius:999px;background:var(--player-color, var(--memory-primary));font-size:1.3rem}.memory-result div{display:grid;text-align:left}.memory-result small{color:var(--memory-muted);font-weight:800}.memory-confetti span{position:absolute;top:-16px;left:8%;width:9px;height:16px;border-radius:4px;background:var(--memory-primary);opacity:0;animation:memory-confetti-fall 1.5s ease-out forwards;transform:rotate(20deg)}.memory-confetti span:nth-child(2n){background:var(--memory-secondary);animation-delay:.08s;left:20%}.memory-confetti span:nth-child(3n){background:#ffcf3f;animation-delay:.16s;left:38%}.memory-confetti span:nth-child(4n){background:#2dd36f;animation-delay:.24s;left:55%}.memory-confetti span:nth-child(5n){left:72%}.memory-confetti span:nth-child(6n){left:86%}.memory-win--failed{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.memory-actions{position:sticky;bottom:10px;z-index:2;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:16px;padding-top:10px;background:linear-gradient(to bottom,transparent,var(--memory-panel) 28%)}.memory-menu-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:10px}.memory-secondary{min-height:58px}.memory-leaderboard{display:grid;gap:12px;border:1px solid var(--memory-border);border-radius:24px;padding:clamp(16px,4vw,22px);background:var(--memory-panel)}.memory-leaderboard__title{display:flex;align-items:center;gap:10px}.memory-leaderboard__title ion-icon{color:var(--memory-primary);font-size:1.4rem}.memory-leaderboard ol{display:grid;gap:8px;margin:0;padding:0;list-style:none}.memory-leaderboard li{display:grid;grid-template-columns:38px 1fr;gap:2px 10px;align-items:center;padding:12px;border-radius:16px;background:var(--memory-row)}.memory-leaderboard li>span{grid-row:span 2;display:grid;place-items:center;width:34px;height:34px;border-radius:999px;background:rgba(var(--ion-color-primary-rgb, 255, 0, 178),.18);color:var(--memory-primary);font-weight:950}.memory-leaderboard strong{color:var(--memory-text);font-size:.98rem}.memory-leaderboard small{color:var(--memory-muted);font-size:.88rem}.memory-player{display:grid;gap:12px;padding:14px;border:1px solid var(--memory-border);border-radius:22px;background:var(--memory-soft)}.memory-player h2,.memory-player p{margin:0}.memory-player p{color:var(--memory-muted)}.memory-player label{display:grid;gap:6px;font-weight:850}.memory-player input{width:100%;min-height:52px;border:1px solid var(--memory-border);border-radius:999px;padding:0 18px;background:var(--memory-panel);color:var(--memory-text);font:inherit;font-weight:850}.memory-avatar-list,.memory-color-list{display:flex;flex-wrap:wrap;gap:8px}.memory-avatar-list button,.memory-color-list button{display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--memory-border);border-radius:999px;background:var(--memory-panel);color:var(--memory-text);font-size:1.15rem}.memory-avatar-list button.is-selected,.memory-color-list button.is-selected{border-color:var(--memory-primary);box-shadow:0 0 0 3px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.14)}.memory-color-list button{background:var(--player-color)}@keyframes memory-confetti-fall{0%{opacity:0;transform:translateY(0) rotate(0)}18%{opacity:1}to{opacity:0;transform:translateY(170px) rotate(300deg)}}@media (max-width: 520px){.memory-score{grid-template-columns:repeat(2,1fr)}.memory-board--ninja{grid-template-columns:repeat(4,minmax(54px,1fr))}.memory-actions,.memory-menu-actions,.memory-profiles{grid-template-columns:1fr}}\n"] }]
708
+ `, styles: [":host{display:block;min-height:100%;font-size:var(--val-mini-games-font-size, 1rem);--memory-panel: var(--ion-card-background, #ffffff);--memory-panel-strong: #f8f6fb;--memory-border: var(--ion-border-color, #e7e4ea);--memory-text: var(--ion-color-dark, #2f2a3a);--memory-muted: var(--ion-color-medium, #6f6a7a);--memory-soft: rgba(var(--ion-color-primary-rgb, 255, 0, 178), .08);--memory-row: rgba(var(--ion-color-dark-rgb, 47, 42, 58), .04);--memory-primary: var(--ion-color-primary, #ff00b2);--memory-secondary: var(--ion-color-tertiary, #6a2de2)}:host-context(body.font-small){--val-mini-games-font-size: .875rem}:host-context(body.font-large){--val-mini-games-font-size: 1.1875rem}:host-context(html.ion-palette-dark),:host-context([data-theme=\"dark\"]){--memory-panel: #231f2d;--memory-panel-strong: #2f2939;--memory-border: rgba(255, 255, 255, .13);--memory-text: #fff8ff;--memory-muted: rgba(255, 248, 255, .68);--memory-soft: rgba(255, 255, 255, .045);--memory-row: rgba(255, 255, 255, .055)}.memory-shell{min-height:calc(100vh - 120px);display:flex;flex-direction:column;gap:20px;padding:18px 0 32px;color:var(--memory-text)}.memory-hero{position:relative;overflow:hidden;border-radius:28px;padding:clamp(28px,8vw,52px) 20px;text-align:center;color:#fff;background:radial-gradient(circle at 18% 20%,rgba(255,255,255,.32),transparent 24%),linear-gradient(135deg,var(--memory-primary),var(--memory-secondary));box-shadow:0 24px 70px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.25)}.memory-hero:after{content:\"\";position:absolute;inset:auto -20% -42%;height:55%;background:repeating-linear-gradient(90deg,rgba(255,255,255,.18) 0 10px,transparent 10px 20px);opacity:.18;transform:rotate(-4deg)}.memory-hero__badge{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:#ffffff29;font-size:.78rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.memory-hero h1{margin:14px 0 6px;font-size:clamp(2.25rem,9vw,3.625rem);line-height:.95;font-weight:900}.memory-hero p{max-width:520px;margin:0 auto;font-size:clamp(1rem,3vw,1.25rem);line-height:1.35;opacity:.88}.memory-panel,.memory-game{border:1px solid var(--memory-border);border-radius:24px;padding:clamp(16px,4vw,28px);background:var(--memory-panel);box-shadow:inset 0 1px #ffffff08}.memory-options{display:grid;gap:14px}.memory-howto{display:grid;gap:6px;padding:16px;border:1px solid var(--memory-border);border-radius:20px;background:var(--memory-soft)}.memory-options h2,.memory-howto h2,.memory-leaderboard h2{margin:8px 0 0;color:var(--memory-text);font-size:1.25rem;font-weight:900}.memory-howto h2,.memory-leaderboard h2{margin:0}.memory-howto p,.memory-leaderboard p{margin:0;color:var(--memory-muted);font-size:1rem;line-height:1.45}.memory-profiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.memory-profiles button,.memory-secondary{border:1px solid var(--memory-border);border-radius:999px;background:transparent;color:var(--memory-text);font:inherit;font-weight:850}.memory-profiles button{min-height:92px;display:grid;align-content:center;gap:5px;padding:12px 18px;text-align:center}.memory-profiles button.is-selected{border-color:var(--memory-primary);background:rgba(var(--ion-color-primary-rgb, 255, 0, 178),.12);color:var(--memory-primary)}.memory-profiles strong{font-size:1.02rem}.memory-profiles small{color:var(--memory-muted);font-size:.88rem;line-height:1.25}.memory-profiles button.is-selected small{color:inherit}.memory-primary{min-height:58px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:999px;background:var(--memory-primary);color:var(--ion-color-primary-contrast, #fff);font:inherit;font-weight:900;box-shadow:0 18px 45px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.28)}.memory-primary ion-icon{flex:0 0 auto;width:1.25em;height:1.25em;font-size:1.25em;line-height:1}.memory-score{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:16px}.memory-score span{border-radius:18px;padding:12px;background:var(--memory-row);text-align:center}.memory-score small,.memory-win p{color:var(--memory-muted)}.memory-score small{display:block;font-size:.72rem;font-weight:850;text-transform:uppercase;letter-spacing:.08em}.memory-score strong{display:block;color:var(--memory-text);font-size:1.35rem;font-weight:950}.memory-board{display:grid;grid-template-columns:repeat(4,minmax(58px,1fr));gap:clamp(8px,2vw,12px)}.memory-board--kid,.memory-board--classic{grid-template-columns:repeat(4,minmax(58px,1fr))}.memory-board--ninja{grid-template-columns:repeat(8,minmax(40px,1fr))}.memory-card{position:relative;aspect-ratio:1;border:0;border-radius:clamp(14px,4vw,22px);background:transparent;perspective:800px;font-size:clamp(24px,7vw,42px)}.memory-card__back,.memory-card__front{position:absolute;inset:0;display:grid;place-items:center;border-radius:inherit;backface-visibility:hidden;transition:transform .28s ease,box-shadow .2s ease,opacity .2s ease}.memory-card__back{background:radial-gradient(circle at 32% 28%,rgba(255,255,255,.3),transparent 24%),linear-gradient(135deg,var(--memory-secondary),var(--memory-primary));color:#fff;font-weight:950;box-shadow:0 10px 24px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.2)}.memory-card__front{transform:rotateY(180deg);border:1px solid var(--memory-border);background:var(--memory-panel-strong)}.memory-card.is-flipped .memory-card__back{transform:rotateY(180deg)}.memory-card.is-flipped .memory-card__front{transform:rotateY(360deg)}.memory-card.is-matched .memory-card__front{box-shadow:inset 0 0 0 3px var(--memory-primary)}.memory-win{position:relative;overflow:hidden;margin-top:16px;padding:16px;border-radius:20px;background:rgba(var(--ion-color-success-rgb, 45, 211, 111),.12);text-align:center}.memory-win ion-icon{display:block;margin:0 auto 8px;color:var(--ion-color-success, #2dd36f);font-size:2rem}.memory-win strong{color:var(--memory-text);font-size:1.35rem;font-weight:950}.memory-win p{margin:4px 0 0}.memory-result{position:relative;z-index:1;display:inline-flex;align-items:center;gap:10px;margin-top:12px;padding:10px 14px;border-radius:999px;background:#ffffffb8;color:#2f2a3a}:host-context(html.ion-palette-dark) .memory-result,:host-context([data-theme=\"dark\"]) .memory-result{background:#ffffff1a;color:var(--memory-text)}.memory-result>span{display:grid;place-items:center;width:38px;height:38px;border-radius:999px;background:var(--player-color, var(--memory-primary));font-size:1.3rem}.memory-result div{display:grid;text-align:left}.memory-result small{color:var(--memory-muted);font-weight:800}.memory-confetti span{position:absolute;top:-16px;left:8%;width:9px;height:16px;border-radius:4px;background:var(--memory-primary);opacity:0;animation:memory-confetti-fall 1.5s ease-out forwards;transform:rotate(20deg)}.memory-confetti span:nth-child(2n){background:var(--memory-secondary);animation-delay:.08s;left:20%}.memory-confetti span:nth-child(3n){background:#ffcf3f;animation-delay:.16s;left:38%}.memory-confetti span:nth-child(4n){background:#2dd36f;animation-delay:.24s;left:55%}.memory-confetti span:nth-child(5n){left:72%}.memory-confetti span:nth-child(6n){left:86%}.memory-win--failed{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.memory-actions{position:sticky;bottom:10px;z-index:2;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:16px;padding-top:10px;background:linear-gradient(to bottom,transparent,var(--memory-panel) 28%)}.memory-menu-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:10px}.memory-secondary{min-height:58px}.memory-leaderboard{display:grid;gap:12px;border:1px solid var(--memory-border);border-radius:24px;padding:clamp(16px,4vw,22px);background:var(--memory-panel)}.memory-leaderboard__title{display:flex;align-items:center;gap:10px}.memory-leaderboard__title ion-icon{color:var(--memory-primary);font-size:1.4rem}.memory-leaderboard ol{display:grid;gap:8px;margin:0;padding:0;list-style:none}.memory-leaderboard li{display:grid;grid-template-columns:38px 1fr;gap:2px 10px;align-items:center;padding:12px;border-radius:16px;background:var(--memory-row)}.memory-leaderboard li>span{grid-row:span 2;display:grid;place-items:center;width:34px;height:34px;border-radius:999px;background:rgba(var(--ion-color-primary-rgb, 255, 0, 178),.18);color:var(--memory-primary);font-weight:950}.memory-leaderboard strong{color:var(--memory-text);font-size:.98rem}.memory-leaderboard small{color:var(--memory-muted);font-size:.88rem}.memory-player{display:grid;gap:12px;padding:14px;border:1px solid var(--memory-border);border-radius:22px;background:var(--memory-soft)}.memory-player h2,.memory-player p{margin:0}.memory-player p{color:var(--memory-muted)}.memory-player label{display:grid;gap:6px;font-weight:850}.memory-player input{width:100%;min-height:52px;border:1px solid var(--memory-border);border-radius:999px;padding:0 18px;background:var(--memory-panel);color:var(--memory-text);font:inherit;font-weight:850}.memory-avatar-list,.memory-color-list{display:flex;flex-wrap:wrap;gap:8px}.memory-avatar-list button,.memory-color-list button{display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--memory-border);border-radius:999px;background:var(--memory-panel);color:var(--memory-text);font-size:1.15rem}.memory-avatar-list button.is-selected,.memory-color-list button.is-selected{border-color:var(--memory-primary);box-shadow:0 0 0 3px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.14)}.memory-color-list button{background:var(--player-color)}@keyframes memory-confetti-fall{0%{opacity:0;transform:translateY(0) rotate(0)}18%{opacity:1}to{opacity:0;transform:translateY(170px) rotate(300deg)}}@media (max-width: 520px){.memory-score{grid-template-columns:repeat(2,1fr)}.memory-board--ninja{grid-template-columns:repeat(4,minmax(54px,1fr))}.memory-actions,.memory-menu-actions,.memory-profiles{grid-template-columns:1fr}}\n"] }]
709
709
  }], ctorParameters: () => [], propDecorators: { miniGamesRoute: [{
710
710
  type: Input
711
711
  }] } });
712
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LWdhbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9taW5pLWdhbWVzL21lbW9yeS1nYW1lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsY0FBYyxFQUNkLGFBQWEsR0FDZCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scURBQXFELENBQUM7O0FBRzNGLFFBQVEsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0FBRWpFLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUs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QUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxLQUFLLElBQUksU0FBUyxDQUFDLENBQUM7UUFDNUYsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN0RixrQkFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDckMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdEYsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDckMsTUFBTSxHQUFHLEdBQUcsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUN6QixPQUFPLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbEQsQ0FBQyxDQUFDLENBQUM7UUFDTSxnQkFBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1RyxrQkFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FDckMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUks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O3dEQXdsQlEsY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSW9uSWNvbiwgSW9uTW9kYWwgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHtcbiAgbXVzaWNhbE5vdGVzT3V0bGluZSxcbiAgcmVmcmVzaE91dGxpbmUsXG4gIHRyb3BoeU91dGxpbmUsXG59IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IE1JTklfR0FNRVNfSTE4TiB9IGZyb20gJy4vbWluaS1nYW1lcy5pMThuJztcbmltcG9ydCB7IE1pbmlHYW1lUGxheWVyUHJvZmlsZVNlcnZpY2UgfSBmcm9tICcuL21pbmktZ2FtZS1wbGF5ZXItcHJvZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJldHJvQXVkaW9TZXJ2aWNlIH0gZnJvbSAnLi9yZXRyby1hdWRpby5zZXJ2aWNlJztcbmltcG9ydCB7IE1lbW9yeUdhbWVDYXJkLCBNZW1vcnlHYW1lRGlmZmljdWx0eSwgTWVtb3J5R2FtZU1vZGUsIE1lbW9yeUdhbWVQcm9maWxlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBNb2RhbExheW91dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9tb2RhbC1sYXlvdXQvbW9kYWwtbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuYWRkSWNvbnMoeyBtdXNpY2FsTm90ZXNPdXRsaW5lLCByZWZyZXNoT3V0bGluZSwgdHJvcGh5T3V0bGluZSB9KTtcblxuY29uc3QgU1lNQk9MUyA9IFsn4q2QJywgJ/CfmoAnLCAn8J+OtScsICfimqEnLCAn8J+MmScsICfwn5KOJywgJ/CfjognLCAn8J+NgCcsICfwn6epJywgJ/CfjrInLCAn8J+MiCcsICfwn5SlJywgJ/CfjZMnLCAn8J+mhCcsICfwn46BJywgJ+KYgO+4jyddO1xuXG5jb25zdCBQUk9GSUxFX0NPTkZJRzogUmVjb3JkPFxuICBNZW1vcnlHYW1lUHJvZmlsZSxcbiAge1xuICAgIHBhaXJzOiBudW1iZXI7XG4gICAgdGltZWRTZWNvbmRzPzogbnVtYmVyO1xuICAgIG1pc21hdGNoRGVsYXk6IG51bWJlcjtcbiAgICBib2FyZENsYXNzOiBzdHJpbmc7XG4gIH1cbj4gPSB7XG4gIGtpZDoge1xuICAgIHBhaXJzOiA0LFxuICAgIG1pc21hdGNoRGVsYXk6IDE0MDAsXG4gICAgYm9hcmRDbGFzczogJ21lbW9yeS1ib2FyZC0ta2lkJyxcbiAgfSxcbiAgY2xhc3NpYzoge1xuICAgIHBhaXJzOiA4LFxuICAgIG1pc21hdGNoRGVsYXk6IDkwMCxcbiAgICBib2FyZENsYXNzOiAnbWVtb3J5LWJvYXJkLS1jbGFzc2ljJyxcbiAgfSxcbiAgbmluamE6IHtcbiAgICBwYWlyczogMTYsXG4gICAgdGltZWRTZWNvbmRzOiAxNTAsXG4gICAgbWlzbWF0Y2hEZWxheTogNTYwLFxuICAgIGJvYXJkQ2xhc3M6ICdtZW1vcnktYm9hcmQtLW5pbmphJyxcbiAgfSxcbn07XG5cbnR5cGUgTWVtb3J5R2FtZVBoYXNlID0gJ2hvbWUnIHwgJ3BsYXlpbmcnIHwgJ3dvbicgfCAnbG9zdCc7XG5cbmludGVyZmFjZSBNZW1vcnlMZWFkZXJib2FyZEVudHJ5IHtcbiAgaWQ6IHN0cmluZztcbiAgcHJvZmlsZT86IE1lbW9yeUdhbWVQcm9maWxlO1xuICBwbGF5ZXJOYW1lPzogc3RyaW5nO1xuICBwbGF5ZXJBdmF0YXI/OiBzdHJpbmc7XG4gIG1lZGFsPzogTWVtb3J5TWVkYWw7XG4gIGRpZmZpY3VsdHk6IE1lbW9yeUdhbWVEaWZmaWN1bHR5O1xuICBtb2RlOiBNZW1vcnlHYW1lTW9kZTtcbiAgYXR0ZW1wdHM6IG51bWJlcjtcbiAgc2Vjb25kczogbnVtYmVyO1xuICBjb21wbGV0ZWRBdDogc3RyaW5nO1xufVxuXG5jb25zdCBMRUFERVJCT0FSRF9LRVkgPSAndmFsLW1pbmktZ2FtZXMtbWVtb3J5LWxlYWRlcmJvYXJkOnYxJztcblxudHlwZSBNZW1vcnlNZWRhbCA9ICdnb2xkJyB8ICdzaWx2ZXInIHwgJ2Jyb256ZScgfCAnc3BhcmsnO1xudHlwZSBNZW1vcnlDb25maXJtQWN0aW9uID0gJ3Jlc3RhcnQnIHwgJ21vZGUnIHwgJ2dhbWVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLW1lbW9yeS1nYW1lJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0lvbkljb24sIElvbk1vZGFsLCBNb2RhbExheW91dENvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPG1haW4gY2xhc3M9XCJtZW1vcnktc2hlbGxcIj5cbiAgICAgIEBpZiAocGhhc2UoKSA9PT0gJ2hvbWUnKSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwibWVtb3J5LWhlcm9cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LWhlcm9fX2JhZGdlXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cIm11c2ljYWwtbm90ZXMtb3V0bGluZVwiIC8+XG4gICAgICAgICAgICB7eyB0KCdtZW1vcnlUaXRsZScpIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGgxPnt7IHQoJ2hvbWVUaXRsZScpIH19PC9oMT5cbiAgICAgICAgICA8cD57eyB0KCdob21lU3VidGl0bGUnKSB9fTwvcD5cbiAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwibWVtb3J5LXBhbmVsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS1vcHRpb25zXCI+XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cIm1lbW9yeS1ob3d0b1wiPlxuICAgICAgICAgICAgICA8aDI+e3sgdCgnaW5zdHJ1Y3Rpb25zVGl0bGUnKSB9fTwvaDI+XG4gICAgICAgICAgICAgIDxwPnt7IHQoJ2luc3RydWN0aW9uc0JvZHknKSB9fTwvcD5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgPGgyPnt7IHQoJ3Byb2ZpbGVUaXRsZScpIH19PC9oMj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW1vcnktcHJvZmlsZXNcIiByb2xlPVwicmFkaW9ncm91cFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgncHJvZmlsZVRpdGxlJylcIj5cbiAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBwcm9maWxlczsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cInByb2ZpbGUoKSA9PT0gaXRlbVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UHJvZmlsZShpdGVtKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KGl0ZW0pIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdChpdGVtICsgJ0Rlc2NyaXB0aW9uJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1lbW9yeS1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzdGFydCgpXCI+e3sgdCgnc3RhcnRHYW1lJykgfX08L2J1dHRvbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW1vcnktbWVudS1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtZW1vcnktc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXF1ZXN0Q2hhbmdlR2FtZSgpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnY2hhbmdlR2FtZScpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cIm1lbW9yeS1nYW1lXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS1zY29yZVwiPlxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdhdHRlbXB0cycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyBhdHRlbXB0cygpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ3BhaXJzJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IG1hdGNoZWRQYWlycygpIH19L3t7IHBhaXJDb3VudCgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IHQodGltZUxhYmVsKCkpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyBmb3JtYXR0ZWRUaW1lKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnc3RyZWFrJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHN0cmVhaygpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LWJvYXJkXCIgW2NsYXNzXT1cImJvYXJkQ2xhc3MoKVwiPlxuICAgICAgICAgICAgQGZvciAoY2FyZCBvZiBjYXJkcygpOyB0cmFjayBjYXJkLmlkKSB7XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1lbW9yeS1jYXJkXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtZmxpcHBlZF09XCJjYXJkLmZsaXBwZWQgfHwgY2FyZC5tYXRjaGVkXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtbWF0Y2hlZF09XCJjYXJkLm1hdGNoZWRcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjYXJkLm1hdGNoZWQgfHwgbG9ja0JvYXJkKCkgfHwgZmFpbGVkKClcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJmbGlwKGNhcmQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVtb3J5LWNhcmRfX2JhY2tcIj4/PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVtb3J5LWNhcmRfX2Zyb250XCI+e3sgY2FyZC5zeW1ib2wgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgQGlmIChwaGFzZSgpID09PSAnd29uJykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS13aW5cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS1jb25mZXR0aVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKHBpZWNlIG9mIGNvbmZldHRpUGllY2VzOyB0cmFjayBwaWVjZSkge1xuICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidHJvcGh5LW91dGxpbmVcIiAvPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ3dpblRpdGxlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHA+e3sgd2luQm9keSgpIH19PC9wPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LXJlc3VsdFwiIFtzdHlsZS4tLXBsYXllci1jb2xvcl09XCJhY3RpdmVQbGF5ZXJDb2xvcigpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgYWN0aXZlUGxheWVyQXZhdGFyKCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBwbGF5ZXJOYW1lKCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBtZWRhbEljb24ocmVzdWx0TWVkYWwoKSkgfX0ge3sgdChyZXN1bHRNZWRhbCgpKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAocGhhc2UoKSA9PT0gJ2xvc3QnKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LXdpbiBtZW1vcnktd2luLS1mYWlsZWRcIj5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdsb3NlVGl0bGUnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8cD57eyB0KCdsb3NlQm9keScpIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS1hY3Rpb25zXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWVtb3J5LXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdENoYW5nZU1vZGUoKVwiPnt7IHQoJ2JhY2tUb1NldHVwJykgfX08L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtZW1vcnktc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXF1ZXN0Q2hhbmdlR2FtZSgpXCI+e3sgdCgnY2hhbmdlR2FtZScpIH19PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWVtb3J5LXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RSZXN0YXJ0R2FtZSgpXCI+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwicmVmcmVzaC1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAge3sgdCgncmVzdGFydCcpIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfVxuXG4gICAgICA8c2VjdGlvbiBjbGFzcz1cIm1lbW9yeS1sZWFkZXJib2FyZFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LWxlYWRlcmJvYXJkX190aXRsZVwiPlxuICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidHJvcGh5LW91dGxpbmVcIiAvPlxuICAgICAgICAgIDxoMj57eyBsZWFkZXJib2FyZEhlYWRpbmcoKSB9fTwvaDI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBAaWYgKHByb2ZpbGVMZWFkZXJib2FyZCgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIDxwPnt7IHQoJ2xlYWRlcmJvYXJkRW1wdHknKSB9fTwvcD5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPG9sPlxuICAgICAgICAgICAgQGZvciAoZW50cnkgb2YgcHJvZmlsZUxlYWRlcmJvYXJkKCk7IHRyYWNrIGVudHJ5LmlkOyBsZXQgaW5kZXggPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGluZGV4ICsgMSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGxlYWRlcmJvYXJkVGl0bGUoZW50cnkpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IGxlYWRlcmJvYXJkTGluZShlbnRyeSkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvb2w+XG4gICAgICAgIH1cbiAgICAgIDwvc2VjdGlvbj5cbiAgICA8L21haW4+XG5cbiAgICA8aW9uLW1vZGFsXG4gICAgICBbaXNPcGVuXT1cIiEhY29uZmlybUFjdGlvbigpXCJcbiAgICAgIGNzc0NsYXNzPVwidmFsLW1vZGFsLWFkYXB0aXZlXCJcbiAgICAgIChkaWREaXNtaXNzKT1cImhhbmRsZUNvbmZpcm1Nb2RhbERpc21pc3NlZCgpXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgIDx2YWwtbW9kYWwtbGF5b3V0XG4gICAgICAgICAgW3RpdGxlXT1cImNvbmZpcm1UaXRsZSgpXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwiY29uZmlybUJvZHkoKVwiXG4gICAgICAgICAgW2Nsb3NlTGFiZWxdPVwidCgnY2xvc2UnKVwiXG4gICAgICAgICAgW2FjdGlvbnNdPVwiY29uZmlybUFjdGlvbnMoKVwiXG4gICAgICAgICAgYWN0aW9uc0FsaWduPVwiZW5kXCJcbiAgICAgICAgICAoY2xvc2UpPVwiY2xvc2VDb25maXJtTW9kYWwoKVwiXG4gICAgICAgICAgKGFjdGlvbkNsaWNrKT1cImNvbmZpcm1QZW5kaW5nQWN0aW9uKCRldmVudC5hY3Rpb24/LnRva2VuKVwiXG4gICAgICAgIC8+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgICAgICAtLW1lbW9yeS1wYW5lbDogdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgI2ZmZmZmZik7XG4gICAgICAgIC0tbWVtb3J5LXBhbmVsLXN0cm9uZzogI2Y4ZjZmYjtcbiAgICAgICAgLS1tZW1vcnktYm9yZGVyOiB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCAjZTdlNGVhKTtcbiAgICAgICAgLS1tZW1vcnktdGV4dDogdmFyKC0taW9uLWNvbG9yLWRhcmssICMyZjJhM2EpO1xuICAgICAgICAtLW1lbW9yeS1tdXRlZDogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzZmNmE3YSk7XG4gICAgICAgIC0tbWVtb3J5LXNvZnQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMDgpO1xuICAgICAgICAtLW1lbW9yeS1yb3c6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhcmstcmdiLCA0NywgNDIsIDU4KSwgMC4wNCk7XG4gICAgICAgIC0tbWVtb3J5LXByaW1hcnk6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LCAjZmYwMGIyKTtcbiAgICAgICAgLS1tZW1vcnktc2Vjb25kYXJ5OiB2YXIoLS1pb24tY29sb3ItdGVydGlhcnksICM2YTJkZTIpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyayksXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIHtcbiAgICAgICAgLS1tZW1vcnktcGFuZWw6ICMyMzFmMmQ7XG4gICAgICAgIC0tbWVtb3J5LXBhbmVsLXN0cm9uZzogIzJmMjkzOTtcbiAgICAgICAgLS1tZW1vcnktYm9yZGVyOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTMpO1xuICAgICAgICAtLW1lbW9yeS10ZXh0OiAjZmZmOGZmO1xuICAgICAgICAtLW1lbW9yeS1tdXRlZDogcmdiYSgyNTUsIDI0OCwgMjU1LCAwLjY4KTtcbiAgICAgICAgLS1tZW1vcnktc29mdDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA0NSk7XG4gICAgICAgIC0tbWVtb3J5LXJvdzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1NSk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktc2hlbGwge1xuICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoIC0gMTIwcHgpO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDIwcHg7XG4gICAgICAgIHBhZGRpbmc6IDE4cHggMCAzMnB4O1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXRleHQpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWhlcm8ge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDI4cHg7XG4gICAgICAgIHBhZGRpbmc6IGNsYW1wKDI4cHgsIDh2dywgNTJweCkgMjBweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE4JSAyMCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zMiksIHRyYW5zcGFyZW50IDI0JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tbWVtb3J5LXByaW1hcnkpLCB2YXIoLS1tZW1vcnktc2Vjb25kYXJ5KSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMjRweCA3MHB4IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMjUpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWhlcm86OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogYXV0byAtMjAlIC00MiUgLTIwJTtcbiAgICAgICAgaGVpZ2h0OiA1NSU7XG4gICAgICAgIGJhY2tncm91bmQ6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoXG4gICAgICAgICAgOTBkZWcsXG4gICAgICAgICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE4KSAwIDEwcHgsXG4gICAgICAgICAgdHJhbnNwYXJlbnQgMTBweCAyMHB4XG4gICAgICAgICk7XG4gICAgICAgIG9wYWNpdHk6IDAuMTg7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00ZGVnKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1oZXJvX19iYWRnZSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgICAgcGFkZGluZzogNnB4IDEycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTYpO1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktaGVybyBoMSB7XG4gICAgICAgIG1hcmdpbjogMTRweCAwIDZweDtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgyLjI1cmVtLCA5dncsIDMuNjI1cmVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDAuOTU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktaGVybyBwIHtcbiAgICAgICAgbWF4LXdpZHRoOiA1MjBweDtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMXJlbSwgM3Z3LCAxLjI1cmVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICAgIG9wYWNpdHk6IDAuODg7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcGFuZWwsXG4gICAgICAubWVtb3J5LWdhbWUge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1tZW1vcnktYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMjRweDtcbiAgICAgICAgcGFkZGluZzogY2xhbXAoMTZweCwgNHZ3LCAyOHB4KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbWVtb3J5LXBhbmVsKTtcbiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDMpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LW9wdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDE0cHg7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktaG93dG8ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgICAgcGFkZGluZzogMTZweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbWVtb3J5LWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1vcHRpb25zIGgyLFxuICAgICAgLm1lbW9yeS1ob3d0byBoMixcbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmQgaDIge1xuICAgICAgICBtYXJnaW46IDhweCAwIDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1ob3d0byBoMixcbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmQgaDIge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktaG93dG8gcCxcbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmQgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDU7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcHJvZmlsZXMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXByb2ZpbGVzIGJ1dHRvbixcbiAgICAgIC5tZW1vcnktc2Vjb25kYXJ5IHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbWVtb3J5LWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDg1MDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wcm9maWxlcyBidXR0b24ge1xuICAgICAgICBtaW4taGVpZ2h0OiA5MnB4O1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogNXB4O1xuICAgICAgICBwYWRkaW5nOiAxMnB4IDE4cHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wcm9maWxlcyBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLW1lbW9yeS1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4xMik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktcHJpbWFyeSk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcHJvZmlsZXMgc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjAycmVtO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXByb2ZpbGVzIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44OHJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjU7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcHJvZmlsZXMgYnV0dG9uLmlzLXNlbGVjdGVkIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcHJpbWFyeSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDU4cHg7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LWNvbnRyYXN0LCAjZmZmKTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxOHB4IDQ1cHggcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4yOCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcHJpbWFyeSBpb24taWNvbiB7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICB3aWR0aDogMS4yNWVtO1xuICAgICAgICBoZWlnaHQ6IDEuMjVlbTtcbiAgICAgICAgZm9udC1zaXplOiAxLjI1ZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXNjb3JlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgMWZyKTtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktc2NvcmUgc3BhbiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE4cHg7XG4gICAgICAgIHBhZGRpbmc6IDEycHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1yb3cpO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktc2NvcmUgc21hbGwsXG4gICAgICAubWVtb3J5LXdpbiBwIHtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS1tdXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktc2NvcmUgc21hbGwge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgZm9udC1zaXplOiAwLjcycmVtO1xuICAgICAgICBmb250LXdlaWdodDogODUwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXNjb3JlIHN0cm9uZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDEuMzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktYm9hcmQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoNThweCwgMWZyKSk7XG4gICAgICAgIGdhcDogY2xhbXAoOHB4LCAydncsIDEycHgpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWJvYXJkLS1raWQge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoNThweCwgMWZyKSk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktYm9hcmQtLWNsYXNzaWMge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoNThweCwgMWZyKSk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktYm9hcmQtLW5pbmphIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoOCwgbWlubWF4KDQwcHgsIDFmcikpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNhcmQge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGFzcGVjdC1yYXRpbzogMTtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiBjbGFtcCgxNHB4LCA0dncsIDIycHgpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgcGVyc3BlY3RpdmU6IDgwMHB4O1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDI0cHgsIDd2dywgNDJweCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY2FyZF9fYmFjayxcbiAgICAgIC5tZW1vcnktY2FyZF9fZnJvbnQge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xuICAgICAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjI4cyBlYXNlLCBib3gtc2hhZG93IDAuMnMgZWFzZSwgb3BhY2l0eSAwLjJzIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY2FyZF9fYmFjayB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzMiUgMjglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyksIHRyYW5zcGFyZW50IDI0JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tbWVtb3J5LXNlY29uZGFyeSksIHZhcigtLW1lbW9yeS1wcmltYXJ5KSk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBib3gtc2hhZG93OiAwIDEwcHggMjRweCByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgMjU1LCAwLCAxNzgpLCAwLjIpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNhcmRfX2Zyb250IHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW1lbW9yeS1ib3JkZXIpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktcGFuZWwtc3Ryb25nKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jYXJkLmlzLWZsaXBwZWQgLm1lbW9yeS1jYXJkX19iYWNrIHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY2FyZC5pcy1mbGlwcGVkIC5tZW1vcnktY2FyZF9fZnJvbnQge1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZVkoMzYwZGVnKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jYXJkLmlzLW1hdGNoZWQgLm1lbW9yeS1jYXJkX19mcm9udCB7XG4gICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDNweCB2YXIoLS1tZW1vcnktcHJpbWFyeSk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktd2luIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBtYXJnaW4tdG9wOiAxNnB4O1xuICAgICAgICBwYWRkaW5nOiAxNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLXJnYiwgNDUsIDIxMSwgMTExKSwgMC4xMik7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS13aW4gaW9uLWljb24ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luOiAwIGF1dG8gOHB4O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MsICMyZGQzNmYpO1xuICAgICAgICBmb250LXNpemU6IDJyZW07XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktd2luIHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4zNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS13aW4gcCB7XG4gICAgICAgIG1hcmdpbjogNHB4IDAgMDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1yZXN1bHQge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDEycHg7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggMTRweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43Mik7XG4gICAgICAgIGNvbG9yOiAjMmYyYTNhO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLm1lbW9yeS1yZXN1bHQsXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5tZW1vcnktcmVzdWx0IHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXRleHQpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXJlc3VsdCA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMzhweDtcbiAgICAgICAgaGVpZ2h0OiAzOHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcGxheWVyLWNvbG9yLCB2YXIoLS1tZW1vcnktcHJpbWFyeSkpO1xuICAgICAgICBmb250LXNpemU6IDEuM3JlbTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1yZXN1bHQgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1yZXN1bHQgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LW11dGVkKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jb25mZXR0aSBzcGFuIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IC0xNnB4O1xuICAgICAgICBsZWZ0OiA4JTtcbiAgICAgICAgd2lkdGg6IDlweDtcbiAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1wcmltYXJ5KTtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgYW5pbWF0aW9uOiBtZW1vcnktY29uZmV0dGktZmFsbCAxLjVzIGVhc2Utb3V0IGZvcndhcmRzO1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgyMGRlZyk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY29uZmV0dGkgc3BhbjpudGgtY2hpbGQoMm4pIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbWVtb3J5LXNlY29uZGFyeSk7XG4gICAgICAgIGFuaW1hdGlvbi1kZWxheTogMC4wOHM7XG4gICAgICAgIGxlZnQ6IDIwJTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jb25mZXR0aSBzcGFuOm50aC1jaGlsZCgzbikge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZjZjNmO1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDAuMTZzO1xuICAgICAgICBsZWZ0OiAzOCU7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY29uZmV0dGkgc3BhbjpudGgtY2hpbGQoNG4pIHtcbiAgICAgICAgYmFja2dyb3VuZDogIzJkZDM2ZjtcbiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAwLjI0cztcbiAgICAgICAgbGVmdDogNTUlO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNvbmZldHRpIHNwYW46bnRoLWNoaWxkKDVuKSB7XG4gICAgICAgIGxlZnQ6IDcyJTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jb25mZXR0aSBzcGFuOm50aC1jaGlsZCg2bikge1xuICAgICAgICBsZWZ0OiA4NiU7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktd2luLS1mYWlsZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuMTIpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWFjdGlvbnMge1xuICAgICAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgICAgICBib3R0b206IDEwcHg7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAxNnB4O1xuICAgICAgICBwYWRkaW5nLXRvcDogMTBweDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgdHJhbnNwYXJlbnQsIHZhcigtLW1lbW9yeS1wYW5lbCkgMjglKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1tZW51LWFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDlyZW0sIDFmcikpO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktc2Vjb25kYXJ5IHtcbiAgICAgICAgbWluLWhlaWdodDogNThweDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1sZWFkZXJib2FyZCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbWVtb3J5LWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDI0cHg7XG4gICAgICAgIHBhZGRpbmc6IGNsYW1wKDE2cHgsIDR2dywgMjJweCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmRfX3RpdGxlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWxlYWRlcmJvYXJkX190aXRsZSBpb24taWNvbiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS40cmVtO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWxlYWRlcmJvYXJkIG9sIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1sZWFkZXJib2FyZCBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMzhweCAxZnI7XG4gICAgICAgIGdhcDogMnB4IDEwcHg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDEycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1yb3cpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWxlYWRlcmJvYXJkIGxpID4gc3BhbiB7XG4gICAgICAgIGdyaWQtcm93OiBzcGFuIDI7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAzNHB4O1xuICAgICAgICBoZWlnaHQ6IDM0cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgMjU1LCAwLCAxNzgpLCAwLjE4KTtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS1wcmltYXJ5KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1sZWFkZXJib2FyZCBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDAuOThyZW07XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmQgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg4cmVtO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXBsYXllciB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgcGFkZGluZzogMTRweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbWVtb3J5LWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIycHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wbGF5ZXIgaDIsXG4gICAgICAubWVtb3J5LXBsYXllciBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXBsYXllciBwIHtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS1tdXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcGxheWVyIGxhYmVsIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4NTA7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcGxheWVyIGlucHV0IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDUycHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW1lbW9yeS1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMCAxOHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogODUwO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWF2YXRhci1saXN0LFxuICAgICAgLm1lbW9yeS1jb2xvci1saXN0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1hdmF0YXItbGlzdCBidXR0b24sXG4gICAgICAubWVtb3J5LWNvbG9yLWxpc3QgYnV0dG9uIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDQ0cHg7XG4gICAgICAgIGhlaWdodDogNDRweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbWVtb3J5LWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDEuMTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktYXZhdGFyLWxpc3QgYnV0dG9uLmlzLXNlbGVjdGVkLFxuICAgICAgLm1lbW9yeS1jb2xvci1saXN0IGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tbWVtb3J5LXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4xNCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY29sb3ItbGlzdCBidXR0b24ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wbGF5ZXItY29sb3IpO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIG1lbW9yeS1jb25mZXR0aS1mYWxsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHJvdGF0ZSgwZGVnKTtcbiAgICAgICAgfVxuICAgICAgICAxOCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTcwcHgpIHJvdGF0ZSgzMDBkZWcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1MjBweCkge1xuICAgICAgICAubWVtb3J5LXNjb3JlIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLm1lbW9yeS1ib2FyZC0tbmluamEge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCg1NHB4LCAxZnIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5tZW1vcnktYWN0aW9ucyxcbiAgICAgICAgLm1lbW9yeS1tZW51LWFjdGlvbnMsXG4gICAgICAgIC5tZW1vcnktcHJvZmlsZXMge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVtb3J5R2FtZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGxheWVyUHJvZmlsZXMgPSBpbmplY3QoTWluaUdhbWVQbGF5ZXJQcm9maWxlU2VydmljZSk7XG4gIHJlYWRvbmx5IGF1ZGlvID0gaW5qZWN0KFJldHJvQXVkaW9TZXJ2aWNlKTtcblxuICBASW5wdXQoKSBtaW5pR2FtZXNSb3V0ZSA9ICcvbWluaS1nYW1lcyc7XG5cbiAgcmVhZG9ubHkgcHJvZmlsZXM6IE1lbW9yeUdhbWVQcm9maWxlW10gPSBbJ2tpZCcsICdjbGFzc2ljJywgJ25pbmphJ107XG4gIHJlYWRvbmx5IGNvbmZldHRpUGllY2VzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogMTQgfSwgKF8sIGluZGV4KSA9PiBpbmRleCk7XG5cbiAgcmVhZG9ubHkgcGhhc2UgPSBzaWduYWw8TWVtb3J5R2FtZVBoYXNlPignaG9tZScpO1xuICByZWFkb25seSBwcm9maWxlID0gc2lnbmFsPE1lbW9yeUdhbWVQcm9maWxlPigna2lkJyk7XG4gIHJlYWRvbmx5IGRpZmZpY3VsdHkgPSBzaWduYWw8TWVtb3J5R2FtZURpZmZpY3VsdHk+KCdlYXN5Jyk7XG4gIHJlYWRvbmx5IG1vZGUgPSBzaWduYWw8TWVtb3J5R2FtZU1vZGU+KCdjbGFzc2ljJyk7XG4gIHJlYWRvbmx5IHBsYXlpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBjYXJkcyA9IHNpZ25hbDxNZW1vcnlHYW1lQ2FyZFtdPihbXSk7XG4gIHJlYWRvbmx5IGF0dGVtcHRzID0gc2lnbmFsKDApO1xuICByZWFkb25seSBzdHJlYWsgPSBzaWduYWwoMCk7XG4gIHJlYWRvbmx5IGJlc3RTdHJlYWsgPSBzaWduYWwoMCk7XG4gIHJlYWRvbmx5IGVsYXBzZWQgPSBzaWduYWwoMCk7XG4gIHJlYWRvbmx5IHJlbWFpbmluZyA9IHNpZ25hbCgwKTtcbiAgcmVhZG9ubHkgZmFpbGVkID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbG9ja0JvYXJkID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbGVhZGVyYm9hcmQgPSBzaWduYWw8TWVtb3J5TGVhZGVyYm9hcmRFbnRyeVtdPih0aGlzLnJlYWRMZWFkZXJib2FyZCgpKTtcbiAgcmVhZG9ubHkgY29uZmlybUFjdGlvbiA9IHNpZ25hbDxNZW1vcnlDb25maXJtQWN0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpcm1lZEFjdGlvbiA9IHNpZ25hbDxNZW1vcnlDb25maXJtQWN0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIHByaXZhdGUgdGltZXI/OiBudW1iZXI7XG4gIHByaXZhdGUgZmlyc3RQaWNrPzogTWVtb3J5R2FtZUNhcmQ7XG5cbiAgcmVhZG9ubHkgcHJvZmlsZUNvbmZpZyA9IGNvbXB1dGVkKCgpID0+IFBST0ZJTEVfQ09ORklHW3RoaXMucHJvZmlsZSgpXSk7XG4gIHJlYWRvbmx5IHBhaXJDb3VudCA9IGNvbXB1dGVkKCgpID0+IHRoaXMucHJvZmlsZUNvbmZpZygpLnBhaXJzKTtcbiAgcmVhZG9ubHkgYm9hcmRDbGFzcyA9IGNvbXB1dGVkKCgpID0+IGBtZW1vcnktYm9hcmQgJHt0aGlzLnByb2ZpbGVDb25maWcoKS5ib2FyZENsYXNzfWApO1xuICByZWFkb25seSBwcm9maWxlTGVhZGVyYm9hcmQgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMubGVhZGVyYm9hcmQoKVxuICAgICAgLmZpbHRlcigoZW50cnkpID0+IHRoaXMuZW50cnlQcm9maWxlKGVudHJ5KSA9PT0gdGhpcy5wcm9maWxlKCkpXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS5zZWNvbmRzIC0gYi5zZWNvbmRzIHx8IGEuYXR0ZW1wdHMgLSBiLmF0dGVtcHRzKVxuICAgICAgLnNsaWNlKDAsIDUpXG4gICk7XG4gIHJlYWRvbmx5IG1hdGNoZWRQYWlycyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY2FyZHMoKS5maWx0ZXIoKGNhcmQpID0+IGNhcmQubWF0Y2hlZCkubGVuZ3RoIC8gMik7XG4gIHJlYWRvbmx5IHdvbiA9IGNvbXB1dGVkKFxuICAgICgpID0+ICF0aGlzLmZhaWxlZCgpICYmIHRoaXMucGxheWluZygpICYmIHRoaXMuY2FyZHMoKS5sZW5ndGggPiAwICYmIHRoaXMubWF0Y2hlZFBhaXJzKCkgPT09IHRoaXMucGFpckNvdW50KClcbiAgKTtcbiAgcmVhZG9ubHkgcGxheWVyTmFtZSA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5wbGF5ZXJQcm9maWxlcy5kaXNwbGF5TmFtZSh0aGlzLnBsYXllclByb2ZpbGVzLmFjdGl2ZVByb2ZpbGUoKSwgdGhpcy50KCdkZWZhdWx0UGxheWVyTmFtZScpKVxuICApO1xuICByZWFkb25seSBhY3RpdmVQbGF5ZXJBdmF0YXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnBsYXllclByb2ZpbGVzLmFjdGl2ZVByb2ZpbGUoKT8uYXZhdGFyID8/ICfwn4yfJyk7XG4gIHJlYWRvbmx5IGFjdGl2ZVBsYXllckNvbG9yID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wbGF5ZXJQcm9maWxlcy5hY3RpdmVQcm9maWxlKCk/LmNvbG9yID8/ICcjZmYwMGIyJyk7XG4gIHJlYWRvbmx5IHRpbWVMYWJlbCA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLnByb2ZpbGVDb25maWcoKS50aW1lZFNlY29uZHMgPyAndGltZUxlZnQnIDogJ3RpbWUnKSk7XG4gIHJlYWRvbmx5IGZvcm1hdHRlZFRpbWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc2Vjb25kcyA9IHRoaXMucHJvZmlsZUNvbmZpZygpLnRpbWVkU2Vjb25kcyA/IHRoaXMucmVtYWluaW5nKCkgOiB0aGlzLmVsYXBzZWQoKTtcbiAgICBjb25zdCBtaW4gPSBNYXRoLmZsb29yKHNlY29uZHMgLyA2MCk7XG4gICAgY29uc3Qgc2VjID0gc2Vjb25kcyAlIDYwO1xuICAgIHJldHVybiBgJHttaW59OiR7U3RyaW5nKHNlYykucGFkU3RhcnQoMiwgJzAnKX1gO1xuICB9KTtcbiAgcmVhZG9ubHkgcmVzdWx0TWVkYWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNhbGN1bGF0ZU1lZGFsKHRoaXMuYXR0ZW1wdHMoKSwgdGhpcy5yZXN1bHRTZWNvbmRzKCksIHRoaXMuYmVzdFN0cmVhaygpKSk7XG4gIHJlYWRvbmx5IHJlc3VsdFNlY29uZHMgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMucHJvZmlsZUNvbmZpZygpLnRpbWVkU2Vjb25kcyA/IHRoaXMucHJvZmlsZUNvbmZpZygpLnRpbWVkU2Vjb25kcyAtIHRoaXMucmVtYWluaW5nKCkgOiB0aGlzLmVsYXBzZWQoKVxuICApO1xuICByZWFkb25seSB3aW5Cb2R5ID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnQoJ3dpbkJvZHknKVxuICAgICAgLnJlcGxhY2UoJ3thdHRlbXB0c30nLCBTdHJpbmcodGhpcy5hdHRlbXB0cygpKSlcbiAgICAgIC5yZXBsYWNlKCd7dGltZX0nLCB0aGlzLmZvcm1hdFNlY29uZHModGhpcy5yZXN1bHRTZWNvbmRzKCkpKVxuICAgICAgLnJlcGxhY2UoJ3tzdHJlYWt9JywgU3RyaW5nKHRoaXMuYmVzdFN0cmVhaygpKSlcbiAgKTtcbiAgcmVhZG9ubHkgY29uZmlybVRpdGxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybUFjdGlvbigpO1xuICAgIGlmIChhY3Rpb24gPT09ICdyZXN0YXJ0JykgcmV0dXJuIHRoaXMudCgnY29uZmlybVJlc3RhcnRUaXRsZScpO1xuICAgIGlmIChhY3Rpb24gPT09ICdnYW1lcycpIHJldHVybiB0aGlzLnQoJ2NvbmZpcm1HYW1lc1RpdGxlJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY29uZmlybU1vZGVUaXRsZScpO1xuICB9KTtcbiAgcmVhZG9ubHkgY29uZmlybUJvZHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maXJtQWN0aW9uKCk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc3RhcnQnKSByZXR1cm4gdGhpcy50KCdjb25maXJtUmVzdGFydEJvZHknKTtcbiAgICBpZiAoYWN0aW9uID09PSAnZ2FtZXMnKSByZXR1cm4gdGhpcy50KCdjb25maXJtR2FtZXNCb2R5Jyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY29uZmlybU1vZGVCb2R5Jyk7XG4gIH0pO1xuICByZWFkb25seSBjb25maXJtQWN0aW9ucyA9IGNvbXB1dGVkPEJ1dHRvbk1ldGFkYXRhW10+KCgpID0+IFtcbiAgICB7XG4gICAgICB0ZXh0OiB0aGlzLnQoJ2NhbmNlbCcpLFxuICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgIHN0YXRlOiAnRU5BQkxFRCcsXG4gICAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgdG9rZW46ICdjYW5jZWwnLFxuICAgIH0sXG4gICAge1xuICAgICAgdGV4dDpcbiAgICAgICAgdGhpcy5jb25maXJtQWN0aW9uKCkgPT09ICdyZXN0YXJ0J1xuICAgICAgICAgID8gdGhpcy50KCdyZXN0YXJ0JylcbiAgICAgICAgICA6IHRoaXMuY29uZmlybUFjdGlvbigpID09PSAnZ2FtZXMnXG4gICAgICAgICAgICA/IHRoaXMudCgnY2hhbmdlR2FtZScpXG4gICAgICAgICAgICA6IHRoaXMudCgnYmFja1RvU2V0dXAnKSxcbiAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICBzdGF0ZTogJ0VOQUJMRUQnLFxuICAgICAgZmlsbDogJ291dGxpbmUnLFxuICAgICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgIHRva2VuOiAnY29uZmlybScsXG4gICAgfSxcbiAgXSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pMThuLnJlZ2lzdGVyRGVmYXVsdHMoJ01pbmlHYW1lcycsIE1JTklfR0FNRVNfSTE4Tik7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLmF1ZGlvLnN0YXJ0TWVudU11c2ljKCkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKSwgMCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3BUaW1lcigpO1xuICAgIHRoaXMuYXVkaW8uc3RvcE11c2ljKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCAnTWluaUdhbWVzJyk7XG4gIH1cblxuICBzZWxlY3RQcm9maWxlKHByb2ZpbGU6IE1lbW9yeUdhbWVQcm9maWxlKTogdm9pZCB7XG4gICAgdGhpcy5wcm9maWxlLnNldChwcm9maWxlKTtcbiAgICBpZiAocHJvZmlsZSA9PT0gJ2tpZCcpIHtcbiAgICAgIHRoaXMuZGlmZmljdWx0eS5zZXQoJ2Vhc3knKTtcbiAgICAgIHRoaXMubW9kZS5zZXQoJ3JlbGF4ZWQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHByb2ZpbGUgPT09ICduaW5qYScpIHtcbiAgICAgIHRoaXMuZGlmZmljdWx0eS5zZXQoJ2hhcmQnKTtcbiAgICAgIHRoaXMubW9kZS5zZXQoJ3RpbWVkJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGlmZmljdWx0eS5zZXQoJ21lZGl1bScpO1xuICAgIHRoaXMubW9kZS5zZXQoJ2NsYXNzaWMnKTtcbiAgfVxuXG4gIHN0YXJ0KCk6IHZvaWQge1xuICAgIGNvbnN0IHN5bWJvbHMgPSBTWU1CT0xTLnNsaWNlKDAsIHRoaXMucGFpckNvdW50KCkpO1xuICAgIGNvbnN0IGRlY2sgPSB0aGlzLnNodWZmbGUoWy4uLnN5bWJvbHMsIC4uLnN5bWJvbHNdKS5tYXAoKHN5bWJvbCwgaW5kZXgpID0+ICh7XG4gICAgICBpZDogYCR7c3ltYm9sfS0ke2luZGV4fS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpfWAsXG4gICAgICBzeW1ib2wsXG4gICAgICBtYXRjaGVkOiBmYWxzZSxcbiAgICAgIGZsaXBwZWQ6IGZhbHNlLFxuICAgIH0pKTtcbiAgICB0aGlzLmNhcmRzLnNldChkZWNrKTtcbiAgICB0aGlzLmZpcnN0UGljayA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmF0dGVtcHRzLnNldCgwKTtcbiAgICB0aGlzLnN0cmVhay5zZXQoMCk7XG4gICAgdGhpcy5iZXN0U3RyZWFrLnNldCgwKTtcbiAgICB0aGlzLmVsYXBzZWQuc2V0KDApO1xuICAgIHRoaXMucmVtYWluaW5nLnNldCh0aGlzLnByb2ZpbGVDb25maWcoKS50aW1lZFNlY29uZHMgPz8gMCk7XG4gICAgdGhpcy5mYWlsZWQuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmxvY2tCb2FyZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMucGhhc2Uuc2V0KCdwbGF5aW5nJyk7XG4gICAgdGhpcy5wbGF5aW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLnN0YXJ0VGltZXIoKTtcbiAgICB2b2lkIHRoaXMuYXVkaW8uc3RhcnRHYW1lTXVzaWMoKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICB9XG5cbiAgcmVzZXRUb1NldHVwKCk6IHZvaWQge1xuICAgIHRoaXMucGxheWluZy5zZXQoZmFsc2UpO1xuICAgIHRoaXMuY2FyZHMuc2V0KFtdKTtcbiAgICB0aGlzLmZpcnN0UGljayA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmZhaWxlZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMucGhhc2Uuc2V0KCdob21lJyk7XG4gICAgdGhpcy5zdG9wVGltZXIoKTtcbiAgICB2b2lkIHRoaXMuYXVkaW8uc3RhcnRNZW51TXVzaWMoKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICB9XG5cbiAgcmVxdWVzdFJlc3RhcnRHYW1lKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ3Jlc3RhcnQnKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIHJlcXVlc3RDaGFuZ2VNb2RlKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ21vZGUnKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIHJlcXVlc3RDaGFuZ2VHYW1lKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ2dhbWVzJyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICBjbG9zZUNvbmZpcm1Nb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gIH1cblxuICBoYW5kbGVDb25maXJtTW9kYWxEaXNtaXNzZWQoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybWVkQWN0aW9uKCk7XG4gICAgdGhpcy5jb25maXJtZWRBY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgaWYgKCFhY3Rpb24pIHJldHVybjtcblxuICAgIGlmIChhY3Rpb24gPT09ICdyZXN0YXJ0Jykge1xuICAgICAgdGhpcy5zdGFydCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uID09PSAnbW9kZScpIHtcbiAgICAgIHRoaXMucmVzZXRUb1NldHVwKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChhY3Rpb24gPT09ICdnYW1lcycpIHtcbiAgICAgIHRoaXMucmVzZXRUb0dhbWVzTWVudSgpO1xuICAgIH1cbiAgfVxuXG4gIGNvbmZpcm1QZW5kaW5nQWN0aW9uKHRva2VuPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRva2VuICE9PSAnY29uZmlybScpIHtcbiAgICAgIHRoaXMuY2xvc2VDb25maXJtTW9kYWwoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maXJtQWN0aW9uKCk7XG4gICAgdGhpcy5jb25maXJtZWRBY3Rpb24uc2V0KGFjdGlvbik7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICB9XG5cbiAgZmxpcChjYXJkOiBNZW1vcnlHYW1lQ2FyZCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxvY2tCb2FyZCgpIHx8IGNhcmQuZmxpcHBlZCB8fCBjYXJkLm1hdGNoZWQgfHwgdGhpcy53b24oKSB8fCB0aGlzLmZhaWxlZCgpKSByZXR1cm47XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgdGhpcy5jYXJkcy51cGRhdGUoKGNhcmRzKSA9PiBjYXJkcy5tYXAoKGl0ZW0pID0+IChpdGVtLmlkID09PSBjYXJkLmlkID8geyAuLi5pdGVtLCBmbGlwcGVkOiB0cnVlIH0gOiBpdGVtKSkpO1xuICAgIGNvbnN0IHVwZGF0ZWQgPSB0aGlzLmNhcmRzKCkuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gY2FyZC5pZCk7XG4gICAgaWYgKCF1cGRhdGVkKSByZXR1cm47XG4gICAgaWYgKCF0aGlzLmZpcnN0UGljaykge1xuICAgICAgdGhpcy5maXJzdFBpY2sgPSB1cGRhdGVkO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYXR0ZW1wdHMudXBkYXRlKCh2YWx1ZSkgPT4gdmFsdWUgKyAxKTtcbiAgICBjb25zdCBmaXJzdCA9IHRoaXMuZmlyc3RQaWNrO1xuICAgIHRoaXMuZmlyc3RQaWNrID0gdW5kZWZpbmVkO1xuICAgIGlmIChmaXJzdC5zeW1ib2wgPT09IHVwZGF0ZWQuc3ltYm9sKSB7XG4gICAgICB0aGlzLnN0cmVhay51cGRhdGUoKHZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IG5leHQgPSB2YWx1ZSArIDE7XG4gICAgICAgIHRoaXMuYmVzdFN0cmVhay51cGRhdGUoKGJlc3QpID0+IE1hdGgubWF4KGJlc3QsIG5leHQpKTtcbiAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuY2FyZHMudXBkYXRlKChjYXJkcykgPT5cbiAgICAgICAgY2FyZHMubWFwKChpdGVtKSA9PiAoaXRlbS5pZCA9PT0gZmlyc3QuaWQgfHwgaXRlbS5pZCA9PT0gdXBkYXRlZC5pZCA/IHsgLi4uaXRlbSwgbWF0Y2hlZDogdHJ1ZSB9IDogaXRlbSkpXG4gICAgICApO1xuICAgICAgdGhpcy5hdWRpby5tYXRjaCgpO1xuICAgICAgaWYgKHRoaXMuY2FyZHMoKS5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0ubWF0Y2hlZCkubGVuZ3RoID09PSB0aGlzLmNhcmRzKCkubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuc3RvcFRpbWVyKCk7XG4gICAgICAgIHRoaXMucGhhc2Uuc2V0KCd3b24nKTtcbiAgICAgICAgdGhpcy5zYXZlU2NvcmUoKTtcbiAgICAgICAgdGhpcy5hdWRpby53aW4oKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvY2tCb2FyZC5zZXQodHJ1ZSk7XG4gICAgdGhpcy5zdHJlYWsuc2V0KDApO1xuICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY2FyZHMudXBkYXRlKChjYXJkcykgPT5cbiAgICAgICAgY2FyZHMubWFwKChpdGVtKSA9PiAoaXRlbS5pZCA9PT0gZmlyc3QuaWQgfHwgaXRlbS5pZCA9PT0gdXBkYXRlZC5pZCA/IHsgLi4uaXRlbSwgZmxpcHBlZDogZmFsc2UgfSA6IGl0ZW0pKVxuICAgICAgKTtcbiAgICAgIHRoaXMubG9ja0JvYXJkLnNldChmYWxzZSk7XG4gICAgfSwgdGhpcy5wcm9maWxlQ29uZmlnKCkubWlzbWF0Y2hEZWxheSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0VGltZXIoKTogdm9pZCB7XG4gICAgdGhpcy5zdG9wVGltZXIoKTtcbiAgICB0aGlzLnRpbWVyID0gd2luZG93LnNldEludGVydmFsKCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5wcm9maWxlQ29uZmlnKCkudGltZWRTZWNvbmRzKSB7XG4gICAgICAgIHRoaXMuZWxhcHNlZC51cGRhdGUoKHZhbHVlKSA9PiB2YWx1ZSArIDEpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnJlbWFpbmluZy51cGRhdGUoKHZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IG5leHQgPSBNYXRoLm1heCgwLCB2YWx1ZSAtIDEpO1xuICAgICAgICBpZiAobmV4dCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMuZmFpbGVkLnNldCh0cnVlKTtcbiAgICAgICAgICB0aGlzLnBoYXNlLnNldCgnbG9zdCcpO1xuICAgICAgICAgIHRoaXMuc3RvcFRpbWVyKCk7XG4gICAgICAgICAgdGhpcy5hdWRpby5sb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICB9KTtcbiAgICB9LCAxMDAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RvcFRpbWVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRpbWVyKSB7XG4gICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVyKTtcbiAgICAgIHRoaXMudGltZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNldFRvR2FtZXNNZW51KCk6IHZvaWQge1xuICAgIHRoaXMucmVzZXRUb1NldHVwKCk7XG4gICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMubWluaUdhbWVzQmFzZVJvdXRlKCkpLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gIH1cblxuICBwcml2YXRlIG1pbmlHYW1lc0Jhc2VSb3V0ZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJvdXRlID0gKHRoaXMubWluaUdhbWVzUm91dGUgfHwgJy9taW5pLWdhbWVzJykudHJpbSgpO1xuICAgIHJldHVybiBgLyR7cm91dGUucmVwbGFjZSgvXlxcLyt8XFwvKyQvZywgJycpIHx8ICdtaW5pLWdhbWVzJ31gO1xuICB9XG5cbiAgcHJpdmF0ZSBzaHVmZmxlPFQ+KGl0ZW1zOiBUW10pOiBUW10ge1xuICAgIGNvbnN0IGNvcHkgPSBbLi4uaXRlbXNdO1xuICAgIGZvciAobGV0IGkgPSBjb3B5Lmxlbmd0aCAtIDE7IGkgPiAwOyBpIC09IDEpIHtcbiAgICAgIGNvbnN0IGogPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAoaSArIDEpKTtcbiAgICAgIFtjb3B5W2ldLCBjb3B5W2pdXSA9IFtjb3B5W2pdLCBjb3B5W2ldXTtcbiAgICB9XG4gICAgcmV0dXJuIGNvcHk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbGVhZGVyYm9hcmRMaW5lKGVudHJ5OiBNZW1vcnlMZWFkZXJib2FyZEVudHJ5KTogc3RyaW5nIHtcbiAgICBjb25zdCBtb3ZlcyA9IHRoaXMudCgnbGVhZGVyYm9hcmRNb3ZlcycpLnJlcGxhY2UoJ3ttb3Zlc30nLCBTdHJpbmcoZW50cnkuYXR0ZW1wdHMpKTtcbiAgICBjb25zdCB0aW1lID0gdGhpcy50KCdsZWFkZXJib2FyZFRpbWUnKS5yZXBsYWNlKCd7dGltZX0nLCB0aGlzLmZvcm1hdFNlY29uZHMoZW50cnkuc2Vjb25kcykpO1xuICAgIHJldHVybiBgJHttb3Zlc30gwrcgJHt0aW1lfWA7XG4gIH1cblxuICBwcm90ZWN0ZWQgbGVhZGVyYm9hcmRUaXRsZShlbnRyeTogTWVtb3J5TGVhZGVyYm9hcmRFbnRyeSk6IHN0cmluZyB7XG4gICAgY29uc3QgbmFtZSA9IGVudHJ5LnBsYXllck5hbWUgfHwgdGhpcy50KCdkZWZhdWx0UGxheWVyTmFtZScpO1xuICAgIGlmIChlbnRyeS5wcm9maWxlKSByZXR1cm4gYCR7ZW50cnkucGxheWVyQXZhdGFyIHx8ICfirZAnfSAke25hbWV9IMK3ICR7dGhpcy50KGVudHJ5LnByb2ZpbGUpfWA7XG4gICAgcmV0dXJuIGAke3RoaXMudChlbnRyeS5kaWZmaWN1bHR5KX0gwrcgJHt0aGlzLnQoZW50cnkubW9kZSl9YDtcbiAgfVxuXG4gIHByb3RlY3RlZCBsZWFkZXJib2FyZEhlYWRpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50KCdsZWFkZXJib2FyZFByb2ZpbGVUaXRsZScpLnJlcGxhY2UoJ3twcm9maWxlfScsIHRoaXMudCh0aGlzLnByb2ZpbGUoKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzYXZlU2NvcmUoKTogdm9pZCB7XG4gICAgY29uc3QgbWVkYWwgPSB0aGlzLmNhbGN1bGF0ZU1lZGFsKHRoaXMuYXR0ZW1wdHMoKSwgdGhpcy5yZXN1bHRTZWNvbmRzKCksIHRoaXMuYmVzdFN0cmVhaygpKTtcbiAgICBjb25zdCBlbnRyeTogTWVtb3J5TGVhZGVyYm9hcmRFbnRyeSA9IHtcbiAgICAgIGlkOiBgJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpfWAsXG4gICAgICBwcm9maWxlOiB0aGlzLnByb2ZpbGUoKSxcbiAgICAgIHBsYXllck5hbWU6IHRoaXMucGxheWVyTmFtZSgpLFxuICAgICAgcGxheWVyQXZhdGFyOiB0aGlzLmFjdGl2ZVBsYXllckF2YXRhcigpLFxuICAgICAgbWVkYWwsXG4gICAgICBkaWZmaWN1bHR5OiB0aGlzLmRpZmZpY3VsdHkoKSxcbiAgICAgIG1vZGU6IHRoaXMubW9kZSgpLFxuICAgICAgYXR0ZW1wdHM6IHRoaXMuYXR0ZW1wdHMoKSxcbiAgICAgIHNlY29uZHM6IHRoaXMucmVzdWx0U2Vjb25kcygpLFxuICAgICAgY29tcGxldGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB9O1xuICAgIGNvbnN0IG5leHQgPSB0aGlzLmxpbWl0TGVhZGVyYm9hcmQoWy4uLnRoaXMubGVhZGVyYm9hcmQoKSwgZW50cnldKTtcbiAgICB0aGlzLmxlYWRlcmJvYXJkLnNldChuZXh0KTtcbiAgICB0cnkge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTEVBREVSQk9BUkRfS0VZLCBKU09OLnN0cmluZ2lmeShuZXh0KSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBsb2NhbFN0b3JhZ2UgcHVlZGUgbm8gZXN0YXIgZGlzcG9uaWJsZSBlbiBTU1IvdGVzdHMuXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZWFkTGVhZGVyYm9hcmQoKTogTWVtb3J5TGVhZGVyYm9hcmRFbnRyeVtdIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmF3ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTEVBREVSQk9BUkRfS0VZKTtcbiAgICAgIGlmICghcmF3KSByZXR1cm4gW107XG4gICAgICBjb25zdCBlbnRyaWVzID0gSlNPTi5wYXJzZShyYXcpIGFzIE1lbW9yeUxlYWRlcmJvYXJkRW50cnlbXTtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShlbnRyaWVzKSkgcmV0dXJuIFtdO1xuICAgICAgcmV0dXJuIHRoaXMubGltaXRMZWFkZXJib2FyZChcbiAgICAgICAgZW50cmllcy5maWx0ZXIoKGVudHJ5KSA9PiBlbnRyeT8uZGlmZmljdWx0eSAmJiBlbnRyeT8ubW9kZSAmJiBOdW1iZXIuaXNGaW5pdGUoZW50cnk/LmF0dGVtcHRzKSlcbiAgICAgICk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsaW1pdExlYWRlcmJvYXJkKGVudHJpZXM6IE1lbW9yeUxlYWRlcmJvYXJkRW50cnlbXSk6IE1lbW9yeUxlYWRlcmJvYXJkRW50cnlbXSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZmlsZXMuZmxhdE1hcCgocHJvZmlsZSkgPT5cbiAgICAgIGVudHJpZXNcbiAgICAgICAgLmZpbHRlcigoZW50cnkpID0+IHRoaXMuZW50cnlQcm9maWxlKGVudHJ5KSA9PT0gcHJvZmlsZSlcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuc2Vjb25kcyAtIGIuc2Vjb25kcyB8fCBhLmF0dGVtcHRzIC0gYi5hdHRlbXB0cylcbiAgICAgICAgLnNsaWNlKDAsIDUpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZW50cnlQcm9maWxlKGVudHJ5OiBNZW1vcnlMZWFkZXJib2FyZEVudHJ5KTogTWVtb3J5R2FtZVByb2ZpbGUge1xuICAgIGlmIChlbnRyeS5wcm9maWxlKSByZXR1cm4gZW50cnkucHJvZmlsZTtcbiAgICBpZiAoZW50cnkubW9kZSA9PT0gJ3RpbWVkJyB8fCBlbnRyeS5kaWZmaWN1bHR5ID09PSAnaGFyZCcpIHJldHVybiAnbmluamEnO1xuICAgIGlmIChlbnRyeS5tb2RlID09PSAncmVsYXhlZCcgfHwgZW50cnkuZGlmZmljdWx0eSA9PT0gJ2Vhc3knKSByZXR1cm4gJ2tpZCc7XG4gICAgcmV0dXJuICdjbGFzc2ljJztcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlTWVkYWwoYXR0ZW1wdHM6IG51bWJlciwgc2Vjb25kczogbnVtYmVyLCBiZXN0U3RyZWFrOiBudW1iZXIpOiBNZW1vcnlNZWRhbCB7XG4gICAgY29uc3QgcGFpcnMgPSB0aGlzLnBhaXJDb3VudCgpO1xuICAgIGNvbnN0IHBlcmZlY3Rpc2ggPSBhdHRlbXB0cyA8PSBwYWlycyArIE1hdGguY2VpbChwYWlycyAqIDAuMzUpO1xuICAgIGNvbnN0IHNvbGlkID0gYXR0ZW1wdHMgPD0gcGFpcnMgKiAyO1xuICAgIGNvbnN0IGZhc3QgPSAhdGhpcy5wcm9maWxlQ29uZmlnKCkudGltZWRTZWNvbmRzIHx8IHNlY29uZHMgPD0gTWF0aC5tYXgoMzAsIHBhaXJzICogOCk7XG4gICAgaWYgKHBlcmZlY3Rpc2ggJiYgZmFzdCAmJiBiZXN0U3RyZWFrID49IE1hdGguY2VpbChwYWlycyAqIDAuNDUpKSByZXR1cm4gJ2dvbGQnO1xuICAgIGlmIChzb2xpZCAmJiBiZXN0U3RyZWFrID49IE1hdGguY2VpbChwYWlycyAqIDAuMjUpKSByZXR1cm4gJ3NpbHZlcic7XG4gICAgaWYgKHNvbGlkKSByZXR1cm4gJ2Jyb256ZSc7XG4gICAgcmV0dXJuICdzcGFyayc7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWVkYWxJY29uKG1lZGFsOiBNZW1vcnlNZWRhbCk6IHN0cmluZyB7XG4gICAgaWYgKG1lZGFsID09PSAnZ29sZCcpIHJldHVybiAn8J+lhyc7XG4gICAgaWYgKG1lZGFsID09PSAnc2lsdmVyJykgcmV0dXJuICfwn6WIJztcbiAgICBpZiAobWVkYWwgPT09ICdicm9uemUnKSByZXR1cm4gJ/CfpYknO1xuICAgIHJldHVybiAn4pyoJztcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0U2Vjb25kcyhzZWNvbmRzOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1pbiA9IE1hdGguZmxvb3Ioc2Vjb25kcyAvIDYwKTtcbiAgICBjb25zdCBzZWMgPSBzZWNvbmRzICUgNjA7XG4gICAgcmV0dXJuIGAke21pbn06JHtTdHJpbmcoc2VjKS5wYWRTdGFydCgyLCAnMCcpfWA7XG4gIH1cbn1cbiJdfQ==
712
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LWdhbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9taW5pLWdhbWVzL21lbW9yeS1nYW1lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsY0FBYyxFQUNkLGFBQWEsR0FDZCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scURBQXFELENBQUM7O0FBRzNGLFFBQVEsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0FBRWpFLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUs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QUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxLQUFLLElBQUksU0FBUyxDQUFDLENBQUM7UUFDNUYsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN0RixrQkFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDckMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdEYsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDckMsTUFBTSxHQUFHLEdBQUcsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUN6QixPQUFPLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbEQsQ0FBQyxDQUFDLENBQUM7UUFDTSxnQkFBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1RyxrQkFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FDckMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUks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O3dEQWltQlEsY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSW9uSWNvbiwgSW9uTW9kYWwgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHtcbiAgbXVzaWNhbE5vdGVzT3V0bGluZSxcbiAgcmVmcmVzaE91dGxpbmUsXG4gIHRyb3BoeU91dGxpbmUsXG59IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IE1JTklfR0FNRVNfSTE4TiB9IGZyb20gJy4vbWluaS1nYW1lcy5pMThuJztcbmltcG9ydCB7IE1pbmlHYW1lUGxheWVyUHJvZmlsZVNlcnZpY2UgfSBmcm9tICcuL21pbmktZ2FtZS1wbGF5ZXItcHJvZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJldHJvQXVkaW9TZXJ2aWNlIH0gZnJvbSAnLi9yZXRyby1hdWRpby5zZXJ2aWNlJztcbmltcG9ydCB7IE1lbW9yeUdhbWVDYXJkLCBNZW1vcnlHYW1lRGlmZmljdWx0eSwgTWVtb3J5R2FtZU1vZGUsIE1lbW9yeUdhbWVQcm9maWxlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBNb2RhbExheW91dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9tb2RhbC1sYXlvdXQvbW9kYWwtbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuYWRkSWNvbnMoeyBtdXNpY2FsTm90ZXNPdXRsaW5lLCByZWZyZXNoT3V0bGluZSwgdHJvcGh5T3V0bGluZSB9KTtcblxuY29uc3QgU1lNQk9MUyA9IFsn4q2QJywgJ/CfmoAnLCAn8J+OtScsICfimqEnLCAn8J+MmScsICfwn5KOJywgJ/CfjognLCAn8J+NgCcsICfwn6epJywgJ/CfjrInLCAn8J+MiCcsICfwn5SlJywgJ/CfjZMnLCAn8J+mhCcsICfwn46BJywgJ+KYgO+4jyddO1xuXG5jb25zdCBQUk9GSUxFX0NPTkZJRzogUmVjb3JkPFxuICBNZW1vcnlHYW1lUHJvZmlsZSxcbiAge1xuICAgIHBhaXJzOiBudW1iZXI7XG4gICAgdGltZWRTZWNvbmRzPzogbnVtYmVyO1xuICAgIG1pc21hdGNoRGVsYXk6IG51bWJlcjtcbiAgICBib2FyZENsYXNzOiBzdHJpbmc7XG4gIH1cbj4gPSB7XG4gIGtpZDoge1xuICAgIHBhaXJzOiA0LFxuICAgIG1pc21hdGNoRGVsYXk6IDE0MDAsXG4gICAgYm9hcmRDbGFzczogJ21lbW9yeS1ib2FyZC0ta2lkJyxcbiAgfSxcbiAgY2xhc3NpYzoge1xuICAgIHBhaXJzOiA4LFxuICAgIG1pc21hdGNoRGVsYXk6IDkwMCxcbiAgICBib2FyZENsYXNzOiAnbWVtb3J5LWJvYXJkLS1jbGFzc2ljJyxcbiAgfSxcbiAgbmluamE6IHtcbiAgICBwYWlyczogMTYsXG4gICAgdGltZWRTZWNvbmRzOiAxNTAsXG4gICAgbWlzbWF0Y2hEZWxheTogNTYwLFxuICAgIGJvYXJkQ2xhc3M6ICdtZW1vcnktYm9hcmQtLW5pbmphJyxcbiAgfSxcbn07XG5cbnR5cGUgTWVtb3J5R2FtZVBoYXNlID0gJ2hvbWUnIHwgJ3BsYXlpbmcnIHwgJ3dvbicgfCAnbG9zdCc7XG5cbmludGVyZmFjZSBNZW1vcnlMZWFkZXJib2FyZEVudHJ5IHtcbiAgaWQ6IHN0cmluZztcbiAgcHJvZmlsZT86IE1lbW9yeUdhbWVQcm9maWxlO1xuICBwbGF5ZXJOYW1lPzogc3RyaW5nO1xuICBwbGF5ZXJBdmF0YXI/OiBzdHJpbmc7XG4gIG1lZGFsPzogTWVtb3J5TWVkYWw7XG4gIGRpZmZpY3VsdHk6IE1lbW9yeUdhbWVEaWZmaWN1bHR5O1xuICBtb2RlOiBNZW1vcnlHYW1lTW9kZTtcbiAgYXR0ZW1wdHM6IG51bWJlcjtcbiAgc2Vjb25kczogbnVtYmVyO1xuICBjb21wbGV0ZWRBdDogc3RyaW5nO1xufVxuXG5jb25zdCBMRUFERVJCT0FSRF9LRVkgPSAndmFsLW1pbmktZ2FtZXMtbWVtb3J5LWxlYWRlcmJvYXJkOnYxJztcblxudHlwZSBNZW1vcnlNZWRhbCA9ICdnb2xkJyB8ICdzaWx2ZXInIHwgJ2Jyb256ZScgfCAnc3BhcmsnO1xudHlwZSBNZW1vcnlDb25maXJtQWN0aW9uID0gJ3Jlc3RhcnQnIHwgJ21vZGUnIHwgJ2dhbWVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLW1lbW9yeS1nYW1lJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0lvbkljb24sIElvbk1vZGFsLCBNb2RhbExheW91dENvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPG1haW4gY2xhc3M9XCJtZW1vcnktc2hlbGxcIj5cbiAgICAgIEBpZiAocGhhc2UoKSA9PT0gJ2hvbWUnKSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwibWVtb3J5LWhlcm9cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LWhlcm9fX2JhZGdlXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cIm11c2ljYWwtbm90ZXMtb3V0bGluZVwiIC8+XG4gICAgICAgICAgICB7eyB0KCdtZW1vcnlUaXRsZScpIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGgxPnt7IHQoJ2hvbWVUaXRsZScpIH19PC9oMT5cbiAgICAgICAgICA8cD57eyB0KCdob21lU3VidGl0bGUnKSB9fTwvcD5cbiAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwibWVtb3J5LXBhbmVsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS1vcHRpb25zXCI+XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cIm1lbW9yeS1ob3d0b1wiPlxuICAgICAgICAgICAgICA8aDI+e3sgdCgnaW5zdHJ1Y3Rpb25zVGl0bGUnKSB9fTwvaDI+XG4gICAgICAgICAgICAgIDxwPnt7IHQoJ2luc3RydWN0aW9uc0JvZHknKSB9fTwvcD5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgPGgyPnt7IHQoJ3Byb2ZpbGVUaXRsZScpIH19PC9oMj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW1vcnktcHJvZmlsZXNcIiByb2xlPVwicmFkaW9ncm91cFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgncHJvZmlsZVRpdGxlJylcIj5cbiAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBwcm9maWxlczsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cInByb2ZpbGUoKSA9PT0gaXRlbVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UHJvZmlsZShpdGVtKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KGl0ZW0pIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdChpdGVtICsgJ0Rlc2NyaXB0aW9uJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1lbW9yeS1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzdGFydCgpXCI+e3sgdCgnc3RhcnRHYW1lJykgfX08L2J1dHRvbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW1vcnktbWVudS1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtZW1vcnktc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXF1ZXN0Q2hhbmdlR2FtZSgpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnY2hhbmdlR2FtZScpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cIm1lbW9yeS1nYW1lXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS1zY29yZVwiPlxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdhdHRlbXB0cycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyBhdHRlbXB0cygpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ3BhaXJzJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IG1hdGNoZWRQYWlycygpIH19L3t7IHBhaXJDb3VudCgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IHQodGltZUxhYmVsKCkpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyBmb3JtYXR0ZWRUaW1lKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnc3RyZWFrJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHN0cmVhaygpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LWJvYXJkXCIgW2NsYXNzXT1cImJvYXJkQ2xhc3MoKVwiPlxuICAgICAgICAgICAgQGZvciAoY2FyZCBvZiBjYXJkcygpOyB0cmFjayBjYXJkLmlkKSB7XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1lbW9yeS1jYXJkXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtZmxpcHBlZF09XCJjYXJkLmZsaXBwZWQgfHwgY2FyZC5tYXRjaGVkXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtbWF0Y2hlZF09XCJjYXJkLm1hdGNoZWRcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjYXJkLm1hdGNoZWQgfHwgbG9ja0JvYXJkKCkgfHwgZmFpbGVkKClcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJmbGlwKGNhcmQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVtb3J5LWNhcmRfX2JhY2tcIj4/PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVtb3J5LWNhcmRfX2Zyb250XCI+e3sgY2FyZC5zeW1ib2wgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgQGlmIChwaGFzZSgpID09PSAnd29uJykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS13aW5cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS1jb25mZXR0aVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKHBpZWNlIG9mIGNvbmZldHRpUGllY2VzOyB0cmFjayBwaWVjZSkge1xuICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidHJvcGh5LW91dGxpbmVcIiAvPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ3dpblRpdGxlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHA+e3sgd2luQm9keSgpIH19PC9wPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LXJlc3VsdFwiIFtzdHlsZS4tLXBsYXllci1jb2xvcl09XCJhY3RpdmVQbGF5ZXJDb2xvcigpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgYWN0aXZlUGxheWVyQXZhdGFyKCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBwbGF5ZXJOYW1lKCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBtZWRhbEljb24ocmVzdWx0TWVkYWwoKSkgfX0ge3sgdChyZXN1bHRNZWRhbCgpKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAocGhhc2UoKSA9PT0gJ2xvc3QnKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LXdpbiBtZW1vcnktd2luLS1mYWlsZWRcIj5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdsb3NlVGl0bGUnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8cD57eyB0KCdsb3NlQm9keScpIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS1hY3Rpb25zXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWVtb3J5LXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdENoYW5nZU1vZGUoKVwiPnt7IHQoJ2JhY2tUb1NldHVwJykgfX08L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtZW1vcnktc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXF1ZXN0Q2hhbmdlR2FtZSgpXCI+e3sgdCgnY2hhbmdlR2FtZScpIH19PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWVtb3J5LXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RSZXN0YXJ0R2FtZSgpXCI+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwicmVmcmVzaC1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAge3sgdCgncmVzdGFydCcpIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfVxuXG4gICAgICA8c2VjdGlvbiBjbGFzcz1cIm1lbW9yeS1sZWFkZXJib2FyZFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LWxlYWRlcmJvYXJkX190aXRsZVwiPlxuICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidHJvcGh5LW91dGxpbmVcIiAvPlxuICAgICAgICAgIDxoMj57eyBsZWFkZXJib2FyZEhlYWRpbmcoKSB9fTwvaDI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBAaWYgKHByb2ZpbGVMZWFkZXJib2FyZCgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIDxwPnt7IHQoJ2xlYWRlcmJvYXJkRW1wdHknKSB9fTwvcD5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPG9sPlxuICAgICAgICAgICAgQGZvciAoZW50cnkgb2YgcHJvZmlsZUxlYWRlcmJvYXJkKCk7IHRyYWNrIGVudHJ5LmlkOyBsZXQgaW5kZXggPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGluZGV4ICsgMSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGxlYWRlcmJvYXJkVGl0bGUoZW50cnkpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IGxlYWRlcmJvYXJkTGluZShlbnRyeSkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvb2w+XG4gICAgICAgIH1cbiAgICAgIDwvc2VjdGlvbj5cbiAgICA8L21haW4+XG5cbiAgICA8aW9uLW1vZGFsXG4gICAgICBbaXNPcGVuXT1cIiEhY29uZmlybUFjdGlvbigpXCJcbiAgICAgIGNzc0NsYXNzPVwidmFsLW1vZGFsLWFkYXB0aXZlXCJcbiAgICAgIChkaWREaXNtaXNzKT1cImhhbmRsZUNvbmZpcm1Nb2RhbERpc21pc3NlZCgpXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgIDx2YWwtbW9kYWwtbGF5b3V0XG4gICAgICAgICAgW3RpdGxlXT1cImNvbmZpcm1UaXRsZSgpXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwiY29uZmlybUJvZHkoKVwiXG4gICAgICAgICAgW2Nsb3NlTGFiZWxdPVwidCgnY2xvc2UnKVwiXG4gICAgICAgICAgW2FjdGlvbnNdPVwiY29uZmlybUFjdGlvbnMoKVwiXG4gICAgICAgICAgYWN0aW9uc0FsaWduPVwiZW5kXCJcbiAgICAgICAgICAoY2xvc2UpPVwiY2xvc2VDb25maXJtTW9kYWwoKVwiXG4gICAgICAgICAgKGFjdGlvbkNsaWNrKT1cImNvbmZpcm1QZW5kaW5nQWN0aW9uKCRldmVudC5hY3Rpb24/LnRva2VuKVwiXG4gICAgICAgIC8+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXZhbC1taW5pLWdhbWVzLWZvbnQtc2l6ZSwgMXJlbSk7XG4gICAgICAgIC0tbWVtb3J5LXBhbmVsOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCAjZmZmZmZmKTtcbiAgICAgICAgLS1tZW1vcnktcGFuZWwtc3Ryb25nOiAjZjhmNmZiO1xuICAgICAgICAtLW1lbW9yeS1ib3JkZXI6IHZhcigtLWlvbi1ib3JkZXItY29sb3IsICNlN2U0ZWEpO1xuICAgICAgICAtLW1lbW9yeS10ZXh0OiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzJmMmEzYSk7XG4gICAgICAgIC0tbWVtb3J5LW11dGVkOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjNmY2YTdhKTtcbiAgICAgICAgLS1tZW1vcnktc29mdDogcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4wOCk7XG4gICAgICAgIC0tbWVtb3J5LXJvdzogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFyay1yZ2IsIDQ3LCA0MiwgNTgpLCAwLjA0KTtcbiAgICAgICAgLS1tZW1vcnktcHJpbWFyeTogdmFyKC0taW9uLWNvbG9yLXByaW1hcnksICNmZjAwYjIpO1xuICAgICAgICAtLW1lbW9yeS1zZWNvbmRhcnk6IHZhcigtLWlvbi1jb2xvci10ZXJ0aWFyeSwgIzZhMmRlMik7XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoYm9keS5mb250LXNtYWxsKSB7XG4gICAgICAgIC0tdmFsLW1pbmktZ2FtZXMtZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChib2R5LmZvbnQtbGFyZ2UpIHtcbiAgICAgICAgLS12YWwtbWluaS1nYW1lcy1mb250LXNpemU6IDEuMTg3NXJlbTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSB7XG4gICAgICAgIC0tbWVtb3J5LXBhbmVsOiAjMjMxZjJkO1xuICAgICAgICAtLW1lbW9yeS1wYW5lbC1zdHJvbmc6ICMyZjI5Mzk7XG4gICAgICAgIC0tbWVtb3J5LWJvcmRlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEzKTtcbiAgICAgICAgLS1tZW1vcnktdGV4dDogI2ZmZjhmZjtcbiAgICAgICAgLS1tZW1vcnktbXV0ZWQ6IHJnYmEoMjU1LCAyNDgsIDI1NSwgMC42OCk7XG4gICAgICAgIC0tbWVtb3J5LXNvZnQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNDUpO1xuICAgICAgICAtLW1lbW9yeS1yb3c6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNTUpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXNoZWxsIHtcbiAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCAtIDEyMHB4KTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAyMHB4O1xuICAgICAgICBwYWRkaW5nOiAxOHB4IDAgMzJweDtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1oZXJvIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyOHB4O1xuICAgICAgICBwYWRkaW5nOiBjbGFtcCgyOHB4LCA4dncsIDUycHgpIDIwcHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAxOCUgMjAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzIpLCB0cmFuc3BhcmVudCAyNCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLW1lbW9yeS1wcmltYXJ5KSwgdmFyKC0tbWVtb3J5LXNlY29uZGFyeSkpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDI0cHggNzBweCByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgMjU1LCAwLCAxNzgpLCAwLjI1KTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1oZXJvOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IGF1dG8gLTIwJSAtNDIlIC0yMCU7XG4gICAgICAgIGhlaWdodDogNTUlO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KFxuICAgICAgICAgIDkwZGVnLFxuICAgICAgICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xOCkgMCAxMHB4LFxuICAgICAgICAgIHRyYW5zcGFyZW50IDEwcHggMjBweFxuICAgICAgICApO1xuICAgICAgICBvcGFjaXR5OiAwLjE4O1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNGRlZyk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktaGVyb19fYmFkZ2Uge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgIHBhZGRpbmc6IDZweCAxMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE2KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWhlcm8gaDEge1xuICAgICAgICBtYXJnaW46IDE0cHggMCA2cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMi4yNXJlbSwgOXZ3LCAzLjYyNXJlbSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAwLjk1O1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWhlcm8gcCB7XG4gICAgICAgIG1heC13aWR0aDogNTIwcHg7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDFyZW0sIDN2dywgMS4yNXJlbSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICAgICAgICBvcGFjaXR5OiAwLjg4O1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXBhbmVsLFxuICAgICAgLm1lbW9yeS1nYW1lIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbWVtb3J5LWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDI0cHg7XG4gICAgICAgIHBhZGRpbmc6IGNsYW1wKDE2cHgsIDR2dywgMjhweCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1wYW5lbCk7XG4gICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjAzKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1vcHRpb25zIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAxNHB4O1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWhvd3RvIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgIHBhZGRpbmc6IDE2cHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW1lbW9yeS1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktb3B0aW9ucyBoMixcbiAgICAgIC5tZW1vcnktaG93dG8gaDIsXG4gICAgICAubWVtb3J5LWxlYWRlcmJvYXJkIGgyIHtcbiAgICAgICAgbWFyZ2luOiA4cHggMCAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktaG93dG8gaDIsXG4gICAgICAubWVtb3J5LWxlYWRlcmJvYXJkIGgyIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWhvd3RvIHAsXG4gICAgICAubWVtb3J5LWxlYWRlcmJvYXJkIHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ1O1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXByb2ZpbGVzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wcm9maWxlcyBidXR0b24sXG4gICAgICAubWVtb3J5LXNlY29uZGFyeSB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW1lbW9yeS1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4NTA7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcHJvZmlsZXMgYnV0dG9uIHtcbiAgICAgICAgbWluLWhlaWdodDogOTJweDtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IDVweDtcbiAgICAgICAgcGFkZGluZzogMTJweCAxOHB4O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcHJvZmlsZXMgYnV0dG9uLmlzLXNlbGVjdGVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1tZW1vcnktcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMTIpO1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXByaW1hcnkpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXByb2ZpbGVzIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4wMnJlbTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wcm9maWxlcyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuODhyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXByb2ZpbGVzIGJ1dHRvbi5pcy1zZWxlY3RlZCBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXByaW1hcnkge1xuICAgICAgICBtaW4taGVpZ2h0OiA1OHB4O1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1jb250cmFzdCwgI2ZmZik7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMThweCA0NXB4IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMjgpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXByaW1hcnkgaW9uLWljb24ge1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgd2lkdGg6IDEuMjVlbTtcbiAgICAgICAgaGVpZ2h0OiAxLjI1ZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMS4yNWVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1zY29yZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIDFmcik7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXNjb3JlIHNwYW4ge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxOHB4O1xuICAgICAgICBwYWRkaW5nOiAxMnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktcm93KTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXNjb3JlIHNtYWxsLFxuICAgICAgLm1lbW9yeS13aW4gcCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktbXV0ZWQpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXNjb3JlIHNtYWxsIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDg1MDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDhlbTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1zY29yZSBzdHJvbmcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxLjM1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWJvYXJkIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDU4cHgsIDFmcikpO1xuICAgICAgICBnYXA6IGNsYW1wKDhweCwgMnZ3LCAxMnB4KTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1ib2FyZC0ta2lkIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDU4cHgsIDFmcikpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWJvYXJkLS1jbGFzc2ljIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDU4cHgsIDFmcikpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWJvYXJkLS1uaW5qYSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDgsIG1pbm1heCg0MHB4LCAxZnIpKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jYXJkIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBhc3BlY3QtcmF0aW86IDE7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogY2xhbXAoMTRweCwgNHZ3LCAyMnB4KTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIHBlcnNwZWN0aXZlOiA4MDBweDtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgyNHB4LCA3dncsIDQycHgpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNhcmRfX2JhY2ssXG4gICAgICAubWVtb3J5LWNhcmRfX2Zyb250IHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDtcbiAgICAgICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4yOHMgZWFzZSwgYm94LXNoYWRvdyAwLjJzIGVhc2UsIG9wYWNpdHkgMC4ycyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNhcmRfX2JhY2sge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMzIlIDI4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpLCB0cmFuc3BhcmVudCAyNCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLW1lbW9yeS1zZWNvbmRhcnkpLCB2YXIoLS1tZW1vcnktcHJpbWFyeSkpO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxMHB4IDI0cHggcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4yKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jYXJkX19mcm9udCB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1tZW1vcnktYm9yZGVyKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbWVtb3J5LXBhbmVsLXN0cm9uZyk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY2FyZC5pcy1mbGlwcGVkIC5tZW1vcnktY2FyZF9fYmFjayB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNhcmQuaXMtZmxpcHBlZCAubWVtb3J5LWNhcmRfX2Zyb250IHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGVZKDM2MGRlZyk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY2FyZC5pcy1tYXRjaGVkIC5tZW1vcnktY2FyZF9fZnJvbnQge1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAzcHggdmFyKC0tbWVtb3J5LXByaW1hcnkpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXdpbiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgbWFyZ2luLXRvcDogMTZweDtcbiAgICAgICAgcGFkZGluZzogMTZweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3Itc3VjY2Vzcy1yZ2IsIDQ1LCAyMTEsIDExMSksIDAuMTIpO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktd2luIGlvbi1pY29uIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvIDhweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLCAjMmRkMzZmKTtcbiAgICAgICAgZm9udC1zaXplOiAycmVtO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXdpbiBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDEuMzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktd2luIHAge1xuICAgICAgICBtYXJnaW46IDRweCAwIDA7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcmVzdWx0IHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAxMnB4O1xuICAgICAgICBwYWRkaW5nOiAxMHB4IDE0cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzIpO1xuICAgICAgICBjb2xvcjogIzJmMmEzYTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5tZW1vcnktcmVzdWx0LFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAubWVtb3J5LXJlc3VsdCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1yZXN1bHQgPiBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDM4cHg7XG4gICAgICAgIGhlaWdodDogMzhweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXBsYXllci1jb2xvciwgdmFyKC0tbWVtb3J5LXByaW1hcnkpKTtcbiAgICAgICAgZm9udC1zaXplOiAxLjNyZW07XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcmVzdWx0IGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcmVzdWx0IHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS1tdXRlZCk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY29uZmV0dGkgc3BhbiB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAtMTZweDtcbiAgICAgICAgbGVmdDogOCU7XG4gICAgICAgIHdpZHRoOiA5cHg7XG4gICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktcHJpbWFyeSk7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIGFuaW1hdGlvbjogbWVtb3J5LWNvbmZldHRpLWZhbGwgMS41cyBlYXNlLW91dCBmb3J3YXJkcztcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMjBkZWcpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNvbmZldHRpIHNwYW46bnRoLWNoaWxkKDJuKSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1zZWNvbmRhcnkpO1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDAuMDhzO1xuICAgICAgICBsZWZ0OiAyMCU7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY29uZmV0dGkgc3BhbjpudGgtY2hpbGQoM24pIHtcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmY2YzZjtcbiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAwLjE2cztcbiAgICAgICAgbGVmdDogMzglO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNvbmZldHRpIHNwYW46bnRoLWNoaWxkKDRuKSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICMyZGQzNmY7XG4gICAgICAgIGFuaW1hdGlvbi1kZWxheTogMC4yNHM7XG4gICAgICAgIGxlZnQ6IDU1JTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jb25mZXR0aSBzcGFuOm50aC1jaGlsZCg1bikge1xuICAgICAgICBsZWZ0OiA3MiU7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY29uZmV0dGkgc3BhbjpudGgtY2hpbGQoNm4pIHtcbiAgICAgICAgbGVmdDogODYlO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXdpbi0tZmFpbGVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjEyKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1hY3Rpb25zIHtcbiAgICAgICAgcG9zaXRpb246IHN0aWNreTtcbiAgICAgICAgYm90dG9tOiAxMHB4O1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgbWFyZ2luLXRvcDogMTZweDtcbiAgICAgICAgcGFkZGluZy10b3A6IDEwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHRyYW5zcGFyZW50LCB2YXIoLS1tZW1vcnktcGFuZWwpIDI4JSk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktbWVudS1hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCg5cmVtLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXNlY29uZGFyeSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDU4cHg7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDEycHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW1lbW9yeS1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyNHB4O1xuICAgICAgICBwYWRkaW5nOiBjbGFtcCgxNnB4LCA0dncsIDIycHgpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWxlYWRlcmJvYXJkX190aXRsZSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1sZWFkZXJib2FyZF9fdGl0bGUgaW9uLWljb24ge1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXByaW1hcnkpO1xuICAgICAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1sZWFkZXJib2FyZCBvbCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmQgbGkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDM4cHggMWZyO1xuICAgICAgICBnYXA6IDJweCAxMHB4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAxMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktcm93KTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1sZWFkZXJib2FyZCBsaSA+IHNwYW4ge1xuICAgICAgICBncmlkLXJvdzogc3BhbiAyO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMzRweDtcbiAgICAgICAgaGVpZ2h0OiAzNHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4xOCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmQgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjk4cmVtO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWxlYWRlcmJvYXJkIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44OHJlbTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wbGF5ZXIge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDEycHg7XG4gICAgICAgIHBhZGRpbmc6IDE0cHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW1lbW9yeS1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcGxheWVyIGgyLFxuICAgICAgLm1lbW9yeS1wbGF5ZXIgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wbGF5ZXIgcCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktbXV0ZWQpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXBsYXllciBsYWJlbCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgICBmb250LXdlaWdodDogODUwO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXBsYXllciBpbnB1dCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtaW4taGVpZ2h0OiA1MnB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1tZW1vcnktYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAgMThweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbWVtb3J5LXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDg1MDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1hdmF0YXItbGlzdCxcbiAgICAgIC5tZW1vcnktY29sb3ItbGlzdCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktYXZhdGFyLWxpc3QgYnV0dG9uLFxuICAgICAgLm1lbW9yeS1jb2xvci1saXN0IGJ1dHRvbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiA0NHB4O1xuICAgICAgICBoZWlnaHQ6IDQ0cHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW1lbW9yeS1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbWVtb3J5LXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxLjE1cmVtO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWF2YXRhci1saXN0IGJ1dHRvbi5pcy1zZWxlY3RlZCxcbiAgICAgIC5tZW1vcnktY29sb3ItbGlzdCBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLW1lbW9yeS1wcmltYXJ5KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMTQpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNvbG9yLWxpc3QgYnV0dG9uIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcGxheWVyLWNvbG9yKTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBtZW1vcnktY29uZmV0dGktZmFsbCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSByb3RhdGUoMGRlZyk7XG4gICAgICAgIH1cbiAgICAgICAgMTglIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDE3MHB4KSByb3RhdGUoMzAwZGVnKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogNTIwcHgpIHtcbiAgICAgICAgLm1lbW9yeS1zY29yZSB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5tZW1vcnktYm9hcmQtLW5pbmphIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoNTRweCwgMWZyKSk7XG4gICAgICAgIH1cblxuICAgICAgICAubWVtb3J5LWFjdGlvbnMsXG4gICAgICAgIC5tZW1vcnktbWVudS1hY3Rpb25zLFxuICAgICAgICAubWVtb3J5LXByb2ZpbGVzIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1lbW9yeUdhbWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsYXllclByb2ZpbGVzID0gaW5qZWN0KE1pbmlHYW1lUGxheWVyUHJvZmlsZVNlcnZpY2UpO1xuICByZWFkb25seSBhdWRpbyA9IGluamVjdChSZXRyb0F1ZGlvU2VydmljZSk7XG5cbiAgQElucHV0KCkgbWluaUdhbWVzUm91dGUgPSAnL21pbmktZ2FtZXMnO1xuXG4gIHJlYWRvbmx5IHByb2ZpbGVzOiBNZW1vcnlHYW1lUHJvZmlsZVtdID0gWydraWQnLCAnY2xhc3NpYycsICduaW5qYSddO1xuICByZWFkb25seSBjb25mZXR0aVBpZWNlcyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDE0IH0sIChfLCBpbmRleCkgPT4gaW5kZXgpO1xuXG4gIHJlYWRvbmx5IHBoYXNlID0gc2lnbmFsPE1lbW9yeUdhbWVQaGFzZT4oJ2hvbWUnKTtcbiAgcmVhZG9ubHkgcHJvZmlsZSA9IHNpZ25hbDxNZW1vcnlHYW1lUHJvZmlsZT4oJ2tpZCcpO1xuICByZWFkb25seSBkaWZmaWN1bHR5ID0gc2lnbmFsPE1lbW9yeUdhbWVEaWZmaWN1bHR5PignZWFzeScpO1xuICByZWFkb25seSBtb2RlID0gc2lnbmFsPE1lbW9yeUdhbWVNb2RlPignY2xhc3NpYycpO1xuICByZWFkb25seSBwbGF5aW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgY2FyZHMgPSBzaWduYWw8TWVtb3J5R2FtZUNhcmRbXT4oW10pO1xuICByZWFkb25seSBhdHRlbXB0cyA9IHNpZ25hbCgwKTtcbiAgcmVhZG9ubHkgc3RyZWFrID0gc2lnbmFsKDApO1xuICByZWFkb25seSBiZXN0U3RyZWFrID0gc2lnbmFsKDApO1xuICByZWFkb25seSBlbGFwc2VkID0gc2lnbmFsKDApO1xuICByZWFkb25seSByZW1haW5pbmcgPSBzaWduYWwoMCk7XG4gIHJlYWRvbmx5IGZhaWxlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGxvY2tCb2FyZCA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGxlYWRlcmJvYXJkID0gc2lnbmFsPE1lbW9yeUxlYWRlcmJvYXJkRW50cnlbXT4odGhpcy5yZWFkTGVhZGVyYm9hcmQoKSk7XG4gIHJlYWRvbmx5IGNvbmZpcm1BY3Rpb24gPSBzaWduYWw8TWVtb3J5Q29uZmlybUFjdGlvbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maXJtZWRBY3Rpb24gPSBzaWduYWw8TWVtb3J5Q29uZmlybUFjdGlvbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBwcml2YXRlIHRpbWVyPzogbnVtYmVyO1xuICBwcml2YXRlIGZpcnN0UGljaz86IE1lbW9yeUdhbWVDYXJkO1xuXG4gIHJlYWRvbmx5IHByb2ZpbGVDb25maWcgPSBjb21wdXRlZCgoKSA9PiBQUk9GSUxFX0NPTkZJR1t0aGlzLnByb2ZpbGUoKV0pO1xuICByZWFkb25seSBwYWlyQ291bnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnByb2ZpbGVDb25maWcoKS5wYWlycyk7XG4gIHJlYWRvbmx5IGJvYXJkQ2xhc3MgPSBjb21wdXRlZCgoKSA9PiBgbWVtb3J5LWJvYXJkICR7dGhpcy5wcm9maWxlQ29uZmlnKCkuYm9hcmRDbGFzc31gKTtcbiAgcmVhZG9ubHkgcHJvZmlsZUxlYWRlcmJvYXJkID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmxlYWRlcmJvYXJkKClcbiAgICAgIC5maWx0ZXIoKGVudHJ5KSA9PiB0aGlzLmVudHJ5UHJvZmlsZShlbnRyeSkgPT09IHRoaXMucHJvZmlsZSgpKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGEuc2Vjb25kcyAtIGIuc2Vjb25kcyB8fCBhLmF0dGVtcHRzIC0gYi5hdHRlbXB0cylcbiAgICAgIC5zbGljZSgwLCA1KVxuICApO1xuICByZWFkb25seSBtYXRjaGVkUGFpcnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNhcmRzKCkuZmlsdGVyKChjYXJkKSA9PiBjYXJkLm1hdGNoZWQpLmxlbmd0aCAvIDIpO1xuICByZWFkb25seSB3b24gPSBjb21wdXRlZChcbiAgICAoKSA9PiAhdGhpcy5mYWlsZWQoKSAmJiB0aGlzLnBsYXlpbmcoKSAmJiB0aGlzLmNhcmRzKCkubGVuZ3RoID4gMCAmJiB0aGlzLm1hdGNoZWRQYWlycygpID09PSB0aGlzLnBhaXJDb3VudCgpXG4gICk7XG4gIHJlYWRvbmx5IHBsYXllck5hbWUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMucGxheWVyUHJvZmlsZXMuZGlzcGxheU5hbWUodGhpcy5wbGF5ZXJQcm9maWxlcy5hY3RpdmVQcm9maWxlKCksIHRoaXMudCgnZGVmYXVsdFBsYXllck5hbWUnKSlcbiAgKTtcbiAgcmVhZG9ubHkgYWN0aXZlUGxheWVyQXZhdGFyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wbGF5ZXJQcm9maWxlcy5hY3RpdmVQcm9maWxlKCk/LmF2YXRhciA/PyAn8J+MnycpO1xuICByZWFkb25seSBhY3RpdmVQbGF5ZXJDb2xvciA9IGNvbXB1dGVkKCgpID0+IHRoaXMucGxheWVyUHJvZmlsZXMuYWN0aXZlUHJvZmlsZSgpPy5jb2xvciA/PyAnI2ZmMDBiMicpO1xuICByZWFkb25seSB0aW1lTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5wcm9maWxlQ29uZmlnKCkudGltZWRTZWNvbmRzID8gJ3RpbWVMZWZ0JyA6ICd0aW1lJykpO1xuICByZWFkb25seSBmb3JtYXR0ZWRUaW1lID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHNlY29uZHMgPSB0aGlzLnByb2ZpbGVDb25maWcoKS50aW1lZFNlY29uZHMgPyB0aGlzLnJlbWFpbmluZygpIDogdGhpcy5lbGFwc2VkKCk7XG4gICAgY29uc3QgbWluID0gTWF0aC5mbG9vcihzZWNvbmRzIC8gNjApO1xuICAgIGNvbnN0IHNlYyA9IHNlY29uZHMgJSA2MDtcbiAgICByZXR1cm4gYCR7bWlufToke1N0cmluZyhzZWMpLnBhZFN0YXJ0KDIsICcwJyl9YDtcbiAgfSk7XG4gIHJlYWRvbmx5IHJlc3VsdE1lZGFsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jYWxjdWxhdGVNZWRhbCh0aGlzLmF0dGVtcHRzKCksIHRoaXMucmVzdWx0U2Vjb25kcygpLCB0aGlzLmJlc3RTdHJlYWsoKSkpO1xuICByZWFkb25seSByZXN1bHRTZWNvbmRzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnByb2ZpbGVDb25maWcoKS50aW1lZFNlY29uZHMgPyB0aGlzLnByb2ZpbGVDb25maWcoKS50aW1lZFNlY29uZHMgLSB0aGlzLnJlbWFpbmluZygpIDogdGhpcy5lbGFwc2VkKClcbiAgKTtcbiAgcmVhZG9ubHkgd2luQm9keSA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy50KCd3aW5Cb2R5JylcbiAgICAgIC5yZXBsYWNlKCd7YXR0ZW1wdHN9JywgU3RyaW5nKHRoaXMuYXR0ZW1wdHMoKSkpXG4gICAgICAucmVwbGFjZSgne3RpbWV9JywgdGhpcy5mb3JtYXRTZWNvbmRzKHRoaXMucmVzdWx0U2Vjb25kcygpKSlcbiAgICAgIC5yZXBsYWNlKCd7c3RyZWFrfScsIFN0cmluZyh0aGlzLmJlc3RTdHJlYWsoKSkpXG4gICk7XG4gIHJlYWRvbmx5IGNvbmZpcm1UaXRsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmNvbmZpcm1BY3Rpb24oKTtcbiAgICBpZiAoYWN0aW9uID09PSAncmVzdGFydCcpIHJldHVybiB0aGlzLnQoJ2NvbmZpcm1SZXN0YXJ0VGl0bGUnKTtcbiAgICBpZiAoYWN0aW9uID09PSAnZ2FtZXMnKSByZXR1cm4gdGhpcy50KCdjb25maXJtR2FtZXNUaXRsZScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NvbmZpcm1Nb2RlVGl0bGUnKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGNvbmZpcm1Cb2R5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybUFjdGlvbigpO1xuICAgIGlmIChhY3Rpb24gPT09ICdyZXN0YXJ0JykgcmV0dXJuIHRoaXMudCgnY29uZmlybVJlc3RhcnRCb2R5Jyk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2dhbWVzJykgcmV0dXJuIHRoaXMudCgnY29uZmlybUdhbWVzQm9keScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NvbmZpcm1Nb2RlQm9keScpO1xuICB9KTtcbiAgcmVhZG9ubHkgY29uZmlybUFjdGlvbnMgPSBjb21wdXRlZDxCdXR0b25NZXRhZGF0YVtdPigoKSA9PiBbXG4gICAge1xuICAgICAgdGV4dDogdGhpcy50KCdjYW5jZWwnKSxcbiAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICBzdGF0ZTogJ0VOQUJMRUQnLFxuICAgICAgZmlsbDogJ291dGxpbmUnLFxuICAgICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgIHRva2VuOiAnY2FuY2VsJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRleHQ6XG4gICAgICAgIHRoaXMuY29uZmlybUFjdGlvbigpID09PSAncmVzdGFydCdcbiAgICAgICAgICA/IHRoaXMudCgncmVzdGFydCcpXG4gICAgICAgICAgOiB0aGlzLmNvbmZpcm1BY3Rpb24oKSA9PT0gJ2dhbWVzJ1xuICAgICAgICAgICAgPyB0aGlzLnQoJ2NoYW5nZUdhbWUnKVxuICAgICAgICAgICAgOiB0aGlzLnQoJ2JhY2tUb1NldHVwJyksXG4gICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICB0b2tlbjogJ2NvbmZpcm0nLFxuICAgIH0sXG4gIF0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaTE4bi5yZWdpc3RlckRlZmF1bHRzKCdNaW5pR2FtZXMnLCBNSU5JX0dBTUVTX0kxOE4pO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5hdWRpby5zdGFydE1lbnVNdXNpYygpLmNhdGNoKCgpID0+IHVuZGVmaW5lZCksIDApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdG9wVGltZXIoKTtcbiAgICB0aGlzLmF1ZGlvLnN0b3BNdXNpYygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgJ01pbmlHYW1lcycpO1xuICB9XG5cbiAgc2VsZWN0UHJvZmlsZShwcm9maWxlOiBNZW1vcnlHYW1lUHJvZmlsZSk6IHZvaWQge1xuICAgIHRoaXMucHJvZmlsZS5zZXQocHJvZmlsZSk7XG4gICAgaWYgKHByb2ZpbGUgPT09ICdraWQnKSB7XG4gICAgICB0aGlzLmRpZmZpY3VsdHkuc2V0KCdlYXN5Jyk7XG4gICAgICB0aGlzLm1vZGUuc2V0KCdyZWxheGVkJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChwcm9maWxlID09PSAnbmluamEnKSB7XG4gICAgICB0aGlzLmRpZmZpY3VsdHkuc2V0KCdoYXJkJyk7XG4gICAgICB0aGlzLm1vZGUuc2V0KCd0aW1lZCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRpZmZpY3VsdHkuc2V0KCdtZWRpdW0nKTtcbiAgICB0aGlzLm1vZGUuc2V0KCdjbGFzc2ljJyk7XG4gIH1cblxuICBzdGFydCgpOiB2b2lkIHtcbiAgICBjb25zdCBzeW1ib2xzID0gU1lNQk9MUy5zbGljZSgwLCB0aGlzLnBhaXJDb3VudCgpKTtcbiAgICBjb25zdCBkZWNrID0gdGhpcy5zaHVmZmxlKFsuLi5zeW1ib2xzLCAuLi5zeW1ib2xzXSkubWFwKChzeW1ib2wsIGluZGV4KSA9PiAoe1xuICAgICAgaWQ6IGAke3N5bWJvbH0tJHtpbmRleH0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKX1gLFxuICAgICAgc3ltYm9sLFxuICAgICAgbWF0Y2hlZDogZmFsc2UsXG4gICAgICBmbGlwcGVkOiBmYWxzZSxcbiAgICB9KSk7XG4gICAgdGhpcy5jYXJkcy5zZXQoZGVjayk7XG4gICAgdGhpcy5maXJzdFBpY2sgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5hdHRlbXB0cy5zZXQoMCk7XG4gICAgdGhpcy5zdHJlYWsuc2V0KDApO1xuICAgIHRoaXMuYmVzdFN0cmVhay5zZXQoMCk7XG4gICAgdGhpcy5lbGFwc2VkLnNldCgwKTtcbiAgICB0aGlzLnJlbWFpbmluZy5zZXQodGhpcy5wcm9maWxlQ29uZmlnKCkudGltZWRTZWNvbmRzID8/IDApO1xuICAgIHRoaXMuZmFpbGVkLnNldChmYWxzZSk7XG4gICAgdGhpcy5sb2NrQm9hcmQuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnBoYXNlLnNldCgncGxheWluZycpO1xuICAgIHRoaXMucGxheWluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5zdGFydFRpbWVyKCk7XG4gICAgdm9pZCB0aGlzLmF1ZGlvLnN0YXJ0R2FtZU11c2ljKCkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgfVxuXG4gIHJlc2V0VG9TZXR1cCgpOiB2b2lkIHtcbiAgICB0aGlzLnBsYXlpbmcuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmNhcmRzLnNldChbXSk7XG4gICAgdGhpcy5maXJzdFBpY2sgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5mYWlsZWQuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnBoYXNlLnNldCgnaG9tZScpO1xuICAgIHRoaXMuc3RvcFRpbWVyKCk7XG4gICAgdm9pZCB0aGlzLmF1ZGlvLnN0YXJ0TWVudU11c2ljKCkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgfVxuXG4gIHJlcXVlc3RSZXN0YXJ0R2FtZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KCdyZXN0YXJ0Jyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICByZXF1ZXN0Q2hhbmdlTW9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KCdtb2RlJyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICByZXF1ZXN0Q2hhbmdlR2FtZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KCdnYW1lcycpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgY2xvc2VDb25maXJtTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICB9XG5cbiAgaGFuZGxlQ29uZmlybU1vZGFsRGlzbWlzc2VkKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmNvbmZpcm1lZEFjdGlvbigpO1xuICAgIHRoaXMuY29uZmlybWVkQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICAgIGlmICghYWN0aW9uKSByZXR1cm47XG5cbiAgICBpZiAoYWN0aW9uID09PSAncmVzdGFydCcpIHtcbiAgICAgIHRoaXMuc3RhcnQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGFjdGlvbiA9PT0gJ21vZGUnKSB7XG4gICAgICB0aGlzLnJlc2V0VG9TZXR1cCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uID09PSAnZ2FtZXMnKSB7XG4gICAgICB0aGlzLnJlc2V0VG9HYW1lc01lbnUoKTtcbiAgICB9XG4gIH1cblxuICBjb25maXJtUGVuZGluZ0FjdGlvbih0b2tlbj86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0b2tlbiAhPT0gJ2NvbmZpcm0nKSB7XG4gICAgICB0aGlzLmNsb3NlQ29uZmlybU1vZGFsKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybUFjdGlvbigpO1xuICAgIHRoaXMuY29uZmlybWVkQWN0aW9uLnNldChhY3Rpb24pO1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIGZsaXAoY2FyZDogTWVtb3J5R2FtZUNhcmQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sb2NrQm9hcmQoKSB8fCBjYXJkLmZsaXBwZWQgfHwgY2FyZC5tYXRjaGVkIHx8IHRoaXMud29uKCkgfHwgdGhpcy5mYWlsZWQoKSkgcmV0dXJuO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIHRoaXMuY2FyZHMudXBkYXRlKChjYXJkcykgPT4gY2FyZHMubWFwKChpdGVtKSA9PiAoaXRlbS5pZCA9PT0gY2FyZC5pZCA/IHsgLi4uaXRlbSwgZmxpcHBlZDogdHJ1ZSB9IDogaXRlbSkpKTtcbiAgICBjb25zdCB1cGRhdGVkID0gdGhpcy5jYXJkcygpLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGNhcmQuaWQpO1xuICAgIGlmICghdXBkYXRlZCkgcmV0dXJuO1xuICAgIGlmICghdGhpcy5maXJzdFBpY2spIHtcbiAgICAgIHRoaXMuZmlyc3RQaWNrID0gdXBkYXRlZDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmF0dGVtcHRzLnVwZGF0ZSgodmFsdWUpID0+IHZhbHVlICsgMSk7XG4gICAgY29uc3QgZmlyc3QgPSB0aGlzLmZpcnN0UGljaztcbiAgICB0aGlzLmZpcnN0UGljayA9IHVuZGVmaW5lZDtcbiAgICBpZiAoZmlyc3Quc3ltYm9sID09PSB1cGRhdGVkLnN5bWJvbCkge1xuICAgICAgdGhpcy5zdHJlYWsudXBkYXRlKCh2YWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCBuZXh0ID0gdmFsdWUgKyAxO1xuICAgICAgICB0aGlzLmJlc3RTdHJlYWsudXBkYXRlKChiZXN0KSA9PiBNYXRoLm1heChiZXN0LCBuZXh0KSk7XG4gICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgfSk7XG4gICAgICB0aGlzLmNhcmRzLnVwZGF0ZSgoY2FyZHMpID0+XG4gICAgICAgIGNhcmRzLm1hcCgoaXRlbSkgPT4gKGl0ZW0uaWQgPT09IGZpcnN0LmlkIHx8IGl0ZW0uaWQgPT09IHVwZGF0ZWQuaWQgPyB7IC4uLml0ZW0sIG1hdGNoZWQ6IHRydWUgfSA6IGl0ZW0pKVxuICAgICAgKTtcbiAgICAgIHRoaXMuYXVkaW8ubWF0Y2goKTtcbiAgICAgIGlmICh0aGlzLmNhcmRzKCkuZmlsdGVyKChpdGVtKSA9PiBpdGVtLm1hdGNoZWQpLmxlbmd0aCA9PT0gdGhpcy5jYXJkcygpLmxlbmd0aCkge1xuICAgICAgICB0aGlzLnN0b3BUaW1lcigpO1xuICAgICAgICB0aGlzLnBoYXNlLnNldCgnd29uJyk7XG4gICAgICAgIHRoaXMuc2F2ZVNjb3JlKCk7XG4gICAgICAgIHRoaXMuYXVkaW8ud2luKCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2NrQm9hcmQuc2V0KHRydWUpO1xuICAgIHRoaXMuc3RyZWFrLnNldCgwKTtcbiAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNhcmRzLnVwZGF0ZSgoY2FyZHMpID0+XG4gICAgICAgIGNhcmRzLm1hcCgoaXRlbSkgPT4gKGl0ZW0uaWQgPT09IGZpcnN0LmlkIHx8IGl0ZW0uaWQgPT09IHVwZGF0ZWQuaWQgPyB7IC4uLml0ZW0sIGZsaXBwZWQ6IGZhbHNlIH0gOiBpdGVtKSlcbiAgICAgICk7XG4gICAgICB0aGlzLmxvY2tCb2FyZC5zZXQoZmFsc2UpO1xuICAgIH0sIHRoaXMucHJvZmlsZUNvbmZpZygpLm1pc21hdGNoRGVsYXkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydFRpbWVyKCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcFRpbWVyKCk7XG4gICAgdGhpcy50aW1lciA9IHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMucHJvZmlsZUNvbmZpZygpLnRpbWVkU2Vjb25kcykge1xuICAgICAgICB0aGlzLmVsYXBzZWQudXBkYXRlKCh2YWx1ZSkgPT4gdmFsdWUgKyAxKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5yZW1haW5pbmcudXBkYXRlKCh2YWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCBuZXh0ID0gTWF0aC5tYXgoMCwgdmFsdWUgLSAxKTtcbiAgICAgICAgaWYgKG5leHQgPT09IDApIHtcbiAgICAgICAgICB0aGlzLmZhaWxlZC5zZXQodHJ1ZSk7XG4gICAgICAgICAgdGhpcy5waGFzZS5zZXQoJ2xvc3QnKTtcbiAgICAgICAgICB0aGlzLnN0b3BUaW1lcigpO1xuICAgICAgICAgIHRoaXMuYXVkaW8ubG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgfSk7XG4gICAgfSwgMTAwMCk7XG4gIH1cblxuICBwcml2YXRlIHN0b3BUaW1lcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50aW1lcikge1xuICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7XG4gICAgICB0aGlzLnRpbWVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRUb0dhbWVzTWVudSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0VG9TZXR1cCgpO1xuICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLm1pbmlHYW1lc0Jhc2VSb3V0ZSgpKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBtaW5pR2FtZXNCYXNlUm91dGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCByb3V0ZSA9ICh0aGlzLm1pbmlHYW1lc1JvdXRlIHx8ICcvbWluaS1nYW1lcycpLnRyaW0oKTtcbiAgICByZXR1cm4gYC8ke3JvdXRlLnJlcGxhY2UoL15cXC8rfFxcLyskL2csICcnKSB8fCAnbWluaS1nYW1lcyd9YDtcbiAgfVxuXG4gIHByaXZhdGUgc2h1ZmZsZTxUPihpdGVtczogVFtdKTogVFtdIHtcbiAgICBjb25zdCBjb3B5ID0gWy4uLml0ZW1zXTtcbiAgICBmb3IgKGxldCBpID0gY29weS5sZW5ndGggLSAxOyBpID4gMDsgaSAtPSAxKSB7XG4gICAgICBjb25zdCBqID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKGkgKyAxKSk7XG4gICAgICBbY29weVtpXSwgY29weVtqXV0gPSBbY29weVtqXSwgY29weVtpXV07XG4gICAgfVxuICAgIHJldHVybiBjb3B5O1xuICB9XG5cbiAgcHJvdGVjdGVkIGxlYWRlcmJvYXJkTGluZShlbnRyeTogTWVtb3J5TGVhZGVyYm9hcmRFbnRyeSk6IHN0cmluZyB7XG4gICAgY29uc3QgbW92ZXMgPSB0aGlzLnQoJ2xlYWRlcmJvYXJkTW92ZXMnKS5yZXBsYWNlKCd7bW92ZXN9JywgU3RyaW5nKGVudHJ5LmF0dGVtcHRzKSk7XG4gICAgY29uc3QgdGltZSA9IHRoaXMudCgnbGVhZGVyYm9hcmRUaW1lJykucmVwbGFjZSgne3RpbWV9JywgdGhpcy5mb3JtYXRTZWNvbmRzKGVudHJ5LnNlY29uZHMpKTtcbiAgICByZXR1cm4gYCR7bW92ZXN9IMK3ICR7dGltZX1gO1xuICB9XG5cbiAgcHJvdGVjdGVkIGxlYWRlcmJvYXJkVGl0bGUoZW50cnk6IE1lbW9yeUxlYWRlcmJvYXJkRW50cnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IG5hbWUgPSBlbnRyeS5wbGF5ZXJOYW1lIHx8IHRoaXMudCgnZGVmYXVsdFBsYXllck5hbWUnKTtcbiAgICBpZiAoZW50cnkucHJvZmlsZSkgcmV0dXJuIGAke2VudHJ5LnBsYXllckF2YXRhciB8fCAn4q2QJ30gJHtuYW1lfSDCtyAke3RoaXMudChlbnRyeS5wcm9maWxlKX1gO1xuICAgIHJldHVybiBgJHt0aGlzLnQoZW50cnkuZGlmZmljdWx0eSl9IMK3ICR7dGhpcy50KGVudHJ5Lm1vZGUpfWA7XG4gIH1cblxuICBwcm90ZWN0ZWQgbGVhZGVyYm9hcmRIZWFkaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudCgnbGVhZGVyYm9hcmRQcm9maWxlVGl0bGUnKS5yZXBsYWNlKCd7cHJvZmlsZX0nLCB0aGlzLnQodGhpcy5wcm9maWxlKCkpKTtcbiAgfVxuXG4gIHByaXZhdGUgc2F2ZVNjb3JlKCk6IHZvaWQge1xuICAgIGNvbnN0IG1lZGFsID0gdGhpcy5jYWxjdWxhdGVNZWRhbCh0aGlzLmF0dGVtcHRzKCksIHRoaXMucmVzdWx0U2Vjb25kcygpLCB0aGlzLmJlc3RTdHJlYWsoKSk7XG4gICAgY29uc3QgZW50cnk6IE1lbW9yeUxlYWRlcmJvYXJkRW50cnkgPSB7XG4gICAgICBpZDogYCR7RGF0ZS5ub3coKX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKX1gLFxuICAgICAgcHJvZmlsZTogdGhpcy5wcm9maWxlKCksXG4gICAgICBwbGF5ZXJOYW1lOiB0aGlzLnBsYXllck5hbWUoKSxcbiAgICAgIHBsYXllckF2YXRhcjogdGhpcy5hY3RpdmVQbGF5ZXJBdmF0YXIoKSxcbiAgICAgIG1lZGFsLFxuICAgICAgZGlmZmljdWx0eTogdGhpcy5kaWZmaWN1bHR5KCksXG4gICAgICBtb2RlOiB0aGlzLm1vZGUoKSxcbiAgICAgIGF0dGVtcHRzOiB0aGlzLmF0dGVtcHRzKCksXG4gICAgICBzZWNvbmRzOiB0aGlzLnJlc3VsdFNlY29uZHMoKSxcbiAgICAgIGNvbXBsZXRlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgfTtcbiAgICBjb25zdCBuZXh0ID0gdGhpcy5saW1pdExlYWRlcmJvYXJkKFsuLi50aGlzLmxlYWRlcmJvYXJkKCksIGVudHJ5XSk7XG4gICAgdGhpcy5sZWFkZXJib2FyZC5zZXQobmV4dCk7XG4gICAgdHJ5IHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKExFQURFUkJPQVJEX0tFWSwgSlNPTi5zdHJpbmdpZnkobmV4dCkpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gbG9jYWxTdG9yYWdlIHB1ZWRlIG5vIGVzdGFyIGRpc3BvbmlibGUgZW4gU1NSL3Rlc3RzLlxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVhZExlYWRlcmJvYXJkKCk6IE1lbW9yeUxlYWRlcmJvYXJkRW50cnlbXSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJhdyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKExFQURFUkJPQVJEX0tFWSk7XG4gICAgICBpZiAoIXJhdykgcmV0dXJuIFtdO1xuICAgICAgY29uc3QgZW50cmllcyA9IEpTT04ucGFyc2UocmF3KSBhcyBNZW1vcnlMZWFkZXJib2FyZEVudHJ5W107XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZW50cmllcykpIHJldHVybiBbXTtcbiAgICAgIHJldHVybiB0aGlzLmxpbWl0TGVhZGVyYm9hcmQoXG4gICAgICAgIGVudHJpZXMuZmlsdGVyKChlbnRyeSkgPT4gZW50cnk/LmRpZmZpY3VsdHkgJiYgZW50cnk/Lm1vZGUgJiYgTnVtYmVyLmlzRmluaXRlKGVudHJ5Py5hdHRlbXB0cykpXG4gICAgICApO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbGltaXRMZWFkZXJib2FyZChlbnRyaWVzOiBNZW1vcnlMZWFkZXJib2FyZEVudHJ5W10pOiBNZW1vcnlMZWFkZXJib2FyZEVudHJ5W10ge1xuICAgIHJldHVybiB0aGlzLnByb2ZpbGVzLmZsYXRNYXAoKHByb2ZpbGUpID0+XG4gICAgICBlbnRyaWVzXG4gICAgICAgIC5maWx0ZXIoKGVudHJ5KSA9PiB0aGlzLmVudHJ5UHJvZmlsZShlbnRyeSkgPT09IHByb2ZpbGUpXG4gICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLnNlY29uZHMgLSBiLnNlY29uZHMgfHwgYS5hdHRlbXB0cyAtIGIuYXR0ZW1wdHMpXG4gICAgICAgIC5zbGljZSgwLCA1KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGVudHJ5UHJvZmlsZShlbnRyeTogTWVtb3J5TGVhZGVyYm9hcmRFbnRyeSk6IE1lbW9yeUdhbWVQcm9maWxlIHtcbiAgICBpZiAoZW50cnkucHJvZmlsZSkgcmV0dXJuIGVudHJ5LnByb2ZpbGU7XG4gICAgaWYgKGVudHJ5Lm1vZGUgPT09ICd0aW1lZCcgfHwgZW50cnkuZGlmZmljdWx0eSA9PT0gJ2hhcmQnKSByZXR1cm4gJ25pbmphJztcbiAgICBpZiAoZW50cnkubW9kZSA9PT0gJ3JlbGF4ZWQnIHx8IGVudHJ5LmRpZmZpY3VsdHkgPT09ICdlYXN5JykgcmV0dXJuICdraWQnO1xuICAgIHJldHVybiAnY2xhc3NpYyc7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZU1lZGFsKGF0dGVtcHRzOiBudW1iZXIsIHNlY29uZHM6IG51bWJlciwgYmVzdFN0cmVhazogbnVtYmVyKTogTWVtb3J5TWVkYWwge1xuICAgIGNvbnN0IHBhaXJzID0gdGhpcy5wYWlyQ291bnQoKTtcbiAgICBjb25zdCBwZXJmZWN0aXNoID0gYXR0ZW1wdHMgPD0gcGFpcnMgKyBNYXRoLmNlaWwocGFpcnMgKiAwLjM1KTtcbiAgICBjb25zdCBzb2xpZCA9IGF0dGVtcHRzIDw9IHBhaXJzICogMjtcbiAgICBjb25zdCBmYXN0ID0gIXRoaXMucHJvZmlsZUNvbmZpZygpLnRpbWVkU2Vjb25kcyB8fCBzZWNvbmRzIDw9IE1hdGgubWF4KDMwLCBwYWlycyAqIDgpO1xuICAgIGlmIChwZXJmZWN0aXNoICYmIGZhc3QgJiYgYmVzdFN0cmVhayA+PSBNYXRoLmNlaWwocGFpcnMgKiAwLjQ1KSkgcmV0dXJuICdnb2xkJztcbiAgICBpZiAoc29saWQgJiYgYmVzdFN0cmVhayA+PSBNYXRoLmNlaWwocGFpcnMgKiAwLjI1KSkgcmV0dXJuICdzaWx2ZXInO1xuICAgIGlmIChzb2xpZCkgcmV0dXJuICdicm9uemUnO1xuICAgIHJldHVybiAnc3BhcmsnO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1lZGFsSWNvbihtZWRhbDogTWVtb3J5TWVkYWwpOiBzdHJpbmcge1xuICAgIGlmIChtZWRhbCA9PT0gJ2dvbGQnKSByZXR1cm4gJ/CfpYcnO1xuICAgIGlmIChtZWRhbCA9PT0gJ3NpbHZlcicpIHJldHVybiAn8J+liCc7XG4gICAgaWYgKG1lZGFsID09PSAnYnJvbnplJykgcmV0dXJuICfwn6WJJztcbiAgICByZXR1cm4gJ+KcqCc7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdFNlY29uZHMoc2Vjb25kczogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBtaW4gPSBNYXRoLmZsb29yKHNlY29uZHMgLyA2MCk7XG4gICAgY29uc3Qgc2VjID0gc2Vjb25kcyAlIDYwO1xuICAgIHJldHVybiBgJHttaW59OiR7U3RyaW5nKHNlYykucGFkU3RhcnQoMiwgJzAnKX1gO1xuICB9XG59XG4iXX0=