diff --git a/README.md b/README.md index 214b109..0a8b03a 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ $ git-velocity serve --port 8080 ### 🎮 Gamification Engine - **Scoring System**: Earn points for every contribution -- **93 Achievements**: Tiered progression from "First Steps" to "Code Warrior" +- **95 Achievements**: Tiered progression from "First Steps" to "Code Warrior" - **Leaderboards**: Compete with your team - **Tier Progression**: Multiple tiers per achievement category - **Activity Patterns**: Track early bird, night owl, weekend, and out-of-hours commits @@ -223,7 +223,7 @@ jobs: ## 🏆 Achievements -Git Velocity includes **93 hardcoded achievements** across 18 categories with multiple progression tiers. Achievements cannot be modified via configuration to prevent manipulation. +Git Velocity includes **95 hardcoded achievements** across 20 categories with multiple progression tiers. Achievements cannot be modified via configuration to prevent manipulation. ### Achievement Categories @@ -249,6 +249,8 @@ Git Velocity includes **93 hardcoded achievements** across 18 categories with mu | **Midnight** | 5, 10, 25, 50 | Commits between midnight-4am | | **Weekend** | 5, 10, 25, 50 | Weekend commits | | **Out of Hours** | 10, 25, 50, 100 | Commits outside 9am-5pm | +| **Documentation** | 100, 500, 1K, 2.5K, 5K | Comment/doc lines added | +| **Comment Cleanup** | 50, 200, 500, 1K, 2.5K | Outdated comments removed | ### Example Achievements @@ -261,6 +263,10 @@ Git Velocity includes **93 hardcoded achievements** across 18 categories with mu | 🏢 Full Work Week | 5 consecutive weekday streak | | 🌙 Night Owl | 50 commits after 9pm | | ♾️ Time Bender | 100 commits outside 9am-5pm | +| 📚 Documentation Hero | Added 1000 lines of comments/docs | +| 🏛️ Code Historian | Added 5000 lines of comments/docs | +| ✂️ Comment Trimmer | Removed 50 outdated comment lines | +| 💀 Dead Code Hunter | Removed 500 outdated comment lines | ## ⚙️ Configuration diff --git a/internal/aggregator/aggregator.go b/internal/aggregator/aggregator.go index a9b11f1..0fc23e2 100644 --- a/internal/aggregator/aggregator.go +++ b/internal/aggregator/aggregator.go @@ -139,6 +139,8 @@ func (a *Aggregator) Aggregate(data *models.RawData, dateRange *config.ParsedDat cm.LinesDeleted += commit.Deletions cm.MeaningfulLinesAdded += commit.MeaningfulAdditions cm.MeaningfulLinesDeleted += commit.MeaningfulDeletions + cm.CommentLinesAdded += commit.CommentAdditions + cm.CommentLinesDeleted += commit.CommentDeletions cm.FilesChanged += commit.FilesChanged // Update per-repo contributor stats @@ -148,6 +150,8 @@ func (a *Aggregator) Aggregate(data *models.RawData, dateRange *config.ParsedDat rcm.LinesDeleted += commit.Deletions rcm.MeaningfulLinesAdded += commit.MeaningfulAdditions rcm.MeaningfulLinesDeleted += commit.MeaningfulDeletions + rcm.CommentLinesAdded += commit.CommentAdditions + rcm.CommentLinesDeleted += commit.CommentDeletions rcm.FilesChanged += commit.FilesChanged // Track activity patterns based on commit time diff --git a/internal/config/schema.go b/internal/config/schema.go index 88c8881..21f6295 100644 --- a/internal/config/schema.go +++ b/internal/config/schema.go @@ -357,5 +357,19 @@ func defaultAchievements() []AchievementConfig { {ID: "ooh-25", Name: "Flexible Schedule", Description: "25 commits outside 9am-5pm", Icon: "fa-user-clock", Condition: AchievementCondition{Type: "out_of_hours_count", Threshold: 25}}, {ID: "ooh-50", Name: "Off-Hours Hero", Description: "50 commits outside 9am-5pm", Icon: "fa-hourglass-half", Condition: AchievementCondition{Type: "out_of_hours_count", Threshold: 50}}, {ID: "ooh-100", Name: "Time Bender", Description: "100 commits outside 9am-5pm", Icon: "fa-infinity", Condition: AchievementCondition{Type: "out_of_hours_count", Threshold: 100}}, + + // ===== DOCUMENTATION & COMMENTS ADDED (Tiers: 100, 500, 1000, 2500, 5000) ===== + {ID: "docs-100", Name: "Documenter", Description: "Added 100 lines of comments/docs", Icon: "fa-file-lines", Condition: AchievementCondition{Type: "comment_lines_added", Threshold: 100}}, + {ID: "docs-500", Name: "Technical Writer", Description: "Added 500 lines of comments/docs", Icon: "fa-book", Condition: AchievementCondition{Type: "comment_lines_added", Threshold: 500}}, + {ID: "docs-1000", Name: "Documentation Hero", Description: "Added 1000 lines of comments/docs", Icon: "fa-book-open", Condition: AchievementCondition{Type: "comment_lines_added", Threshold: 1000}}, + {ID: "docs-2500", Name: "Knowledge Keeper", Description: "Added 2500 lines of comments/docs", Icon: "fa-scroll", Condition: AchievementCondition{Type: "comment_lines_added", Threshold: 2500}}, + {ID: "docs-5000", Name: "Code Historian", Description: "Added 5000 lines of comments/docs", Icon: "fa-landmark", Condition: AchievementCondition{Type: "comment_lines_added", Threshold: 5000}}, + + // ===== COMMENT CLEANUP (Tiers: 50, 200, 500, 1000, 2500) ===== + {ID: "docs-del-50", Name: "Comment Trimmer", Description: "Removed 50 lines of outdated comments", Icon: "fa-scissors", Condition: AchievementCondition{Type: "comment_lines_deleted", Threshold: 50}}, + {ID: "docs-del-200", Name: "Cleanup Crew", Description: "Removed 200 lines of outdated comments", Icon: "fa-broom", Condition: AchievementCondition{Type: "comment_lines_deleted", Threshold: 200}}, + {ID: "docs-del-500", Name: "Dead Code Hunter", Description: "Removed 500 lines of outdated comments", Icon: "fa-skull-crossbones", Condition: AchievementCondition{Type: "comment_lines_deleted", Threshold: 500}}, + {ID: "docs-del-1000", Name: "Comment Surgeon", Description: "Removed 1000 lines of outdated comments", Icon: "fa-scalpel", Condition: AchievementCondition{Type: "comment_lines_deleted", Threshold: 1000}}, + {ID: "docs-del-2500", Name: "Noise Eliminator", Description: "Removed 2500 lines of outdated comments", Icon: "fa-volume-xmark", Condition: AchievementCondition{Type: "comment_lines_deleted", Threshold: 2500}}, } } diff --git a/internal/domain/models/commit.go b/internal/domain/models/commit.go index d3aa987..7ce7146 100644 --- a/internal/domain/models/commit.go +++ b/internal/domain/models/commit.go @@ -19,6 +19,10 @@ type Commit struct { MeaningfulAdditions int `json:"meaningful_additions"` MeaningfulDeletions int `json:"meaningful_deletions"` + // Comment line counts + CommentAdditions int `json:"comment_additions"` + CommentDeletions int `json:"comment_deletions"` + // Derived fields HasTests bool `json:"has_tests"` } diff --git a/internal/domain/models/metrics.go b/internal/domain/models/metrics.go index 040ab9e..8abef28 100644 --- a/internal/domain/models/metrics.go +++ b/internal/domain/models/metrics.go @@ -27,6 +27,10 @@ type ContributorMetrics struct { MeaningfulLinesAdded int `json:"meaningful_lines_added"` MeaningfulLinesDeleted int `json:"meaningful_lines_deleted"` + // Comment and documentation line counts + CommentLinesAdded int `json:"comment_lines_added"` + CommentLinesDeleted int `json:"comment_lines_deleted"` + // PR metrics PRsOpened int `json:"prs_opened"` PRsMerged int `json:"prs_merged"` diff --git a/internal/domain/scoring/calculator.go b/internal/domain/scoring/calculator.go index fb04527..778243c 100644 --- a/internal/domain/scoring/calculator.go +++ b/internal/domain/scoring/calculator.go @@ -42,6 +42,8 @@ func (c *Calculator) Calculate(metrics *models.GlobalMetrics) *models.GlobalMetr existing.LinesDeleted += cm.LinesDeleted existing.MeaningfulLinesAdded += cm.MeaningfulLinesAdded existing.MeaningfulLinesDeleted += cm.MeaningfulLinesDeleted + existing.CommentLinesAdded += cm.CommentLinesAdded + existing.CommentLinesDeleted += cm.CommentLinesDeleted existing.PRsOpened += cm.PRsOpened existing.PRsMerged += cm.PRsMerged existing.ReviewsGiven += cm.ReviewsGiven @@ -257,6 +259,11 @@ func (c *Calculator) checkAchievements(cm *models.ContributorMetrics) []string { earned = float64(cm.OutOfHoursCount) >= ach.Condition.Threshold case "work_week_streak": earned = float64(cm.WorkWeekStreak) >= ach.Condition.Threshold + // Documentation & comments + case "comment_lines_added": + earned = float64(cm.CommentLinesAdded) >= ach.Condition.Threshold + case "comment_lines_deleted": + earned = float64(cm.CommentLinesDeleted) >= ach.Condition.Threshold } if earned { diff --git a/internal/domain/scoring/calculator_test.go b/internal/domain/scoring/calculator_test.go index 156332e..f805ab5 100644 --- a/internal/domain/scoring/calculator_test.go +++ b/internal/domain/scoring/calculator_test.go @@ -878,3 +878,128 @@ func TestCalculator_MeaningfulLinesScoring(t *testing.T) { assert.Equal(t, 50, contributor.Score.Total) }) } + +func TestCalculator_CommentLinesAchievements(t *testing.T) { + t.Parallel() + + t.Run("earns documentation achievements for adding comments", func(t *testing.T) { + t.Parallel() + + cfg := config.DefaultConfig() + cfg.Scoring.Enabled = true + calc := NewCalculator(cfg) + + metrics := &models.GlobalMetrics{ + Repositories: []models.RepositoryMetrics{ + { + FullName: "owner/repo", + Contributors: []models.ContributorMetrics{ + { + Login: "documenter", + CommitCount: 10, + CommentLinesAdded: 1500, // Should earn docs-100, docs-500, docs-1000 + CommentLinesDeleted: 100, // Should earn docs-del-50 + RepositoriesContributed: []string{"owner/repo"}, + }, + }, + }, + }, + } + + result := calc.Calculate(metrics) + + contributor := result.Repositories[0].Contributors[0] + // Should have documentation achievements + assert.Contains(t, contributor.Achievements, "docs-100", "Should earn docs-100 for 100+ comment lines") + assert.Contains(t, contributor.Achievements, "docs-500", "Should earn docs-500 for 500+ comment lines") + assert.Contains(t, contributor.Achievements, "docs-1000", "Should earn docs-1000 for 1000+ comment lines") + assert.NotContains(t, contributor.Achievements, "docs-2500", "Should not earn docs-2500 for <2500 comment lines") + // Should have comment cleanup achievement + assert.Contains(t, contributor.Achievements, "docs-del-50", "Should earn docs-del-50 for 50+ comment deletions") + assert.NotContains(t, contributor.Achievements, "docs-del-200", "Should not earn docs-del-200 for <200 deletions") + }) + + t.Run("earns all documentation deletion achievements", func(t *testing.T) { + t.Parallel() + + cfg := config.DefaultConfig() + cfg.Scoring.Enabled = true + calc := NewCalculator(cfg) + + metrics := &models.GlobalMetrics{ + Repositories: []models.RepositoryMetrics{ + { + FullName: "owner/repo", + Contributors: []models.ContributorMetrics{ + { + Login: "cleanup-expert", + CommitCount: 50, + CommentLinesAdded: 100, + CommentLinesDeleted: 3000, // Should earn all deletion tiers + RepositoriesContributed: []string{"owner/repo"}, + }, + }, + }, + }, + } + + result := calc.Calculate(metrics) + + contributor := result.Repositories[0].Contributors[0] + // Should have all comment cleanup achievements + assert.Contains(t, contributor.Achievements, "docs-del-50") + assert.Contains(t, contributor.Achievements, "docs-del-200") + assert.Contains(t, contributor.Achievements, "docs-del-500") + assert.Contains(t, contributor.Achievements, "docs-del-1000") + assert.Contains(t, contributor.Achievements, "docs-del-2500") + }) + + t.Run("aggregates comment lines across multiple repositories", func(t *testing.T) { + t.Parallel() + + cfg := config.DefaultConfig() + cfg.Scoring.Enabled = true + calc := NewCalculator(cfg) + + metrics := &models.GlobalMetrics{ + Repositories: []models.RepositoryMetrics{ + { + FullName: "owner/repo1", + Contributors: []models.ContributorMetrics{ + { + Login: "multi-repo-doc", + CommitCount: 5, + CommentLinesAdded: 300, + CommentLinesDeleted: 30, + RepositoriesContributed: []string{"owner/repo1"}, + }, + }, + }, + { + FullName: "owner/repo2", + Contributors: []models.ContributorMetrics{ + { + Login: "multi-repo-doc", + CommitCount: 5, + CommentLinesAdded: 300, + CommentLinesDeleted: 30, + RepositoriesContributed: []string{"owner/repo2"}, + }, + }, + }, + }, + } + + result := calc.Calculate(metrics) + + // Check leaderboard entry (aggregated) + require.Len(t, result.Leaderboard, 1) + entry := result.Leaderboard[0] + // Aggregated: 300 + 300 = 600 comment lines added, 30 + 30 = 60 deleted + assert.Contains(t, entry.Achievements, "docs-100") + assert.Contains(t, entry.Achievements, "docs-500") + assert.NotContains(t, entry.Achievements, "docs-1000", "600 < 1000") + assert.Contains(t, entry.Achievements, "docs-del-50") + assert.NotContains(t, entry.Achievements, "docs-del-200", "60 < 200") + }) +} diff --git a/internal/generator/site/dist/assets/index-8XjWwD9J.css b/internal/generator/site/dist/assets/index-8XjWwD9J.css new file mode 100644 index 0000000..1019bc3 --- /dev/null +++ b/internal/generator/site/dist/assets/index-8XjWwD9J.css @@ -0,0 +1 @@ +@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-500:oklch(63.7% .237 25.331);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-amber-500:oklch(76.9% .188 70.08);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-teal-500:oklch(70.4% .14 182.503);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-500:oklch(71.5% .143 215.221);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-indigo-500:oklch(58.5% .233 277.117);--color-violet-500:oklch(60.6% .25 292.717);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-300:oklch(82.7% .119 306.383);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-600:oklch(55.8% .288 302.321);--color-purple-800:oklch(43.8% .218 303.724);--color-purple-900:oklch(38.1% .176 304.987);--color-fuchsia-600:oklch(59.1% .293 322.896);--color-pink-500:oklch(65.6% .241 354.308);--color-rose-500:oklch(64.5% .246 16.439);--color-rose-600:oklch(58.6% .253 17.585);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-stone-400:oklch(70.9% .01 56.259);--color-stone-500:oklch(55.3% .013 58.071);--color-white:#fff;--spacing:.25rem;--container-2xl:42rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--text-6xl:3.75rem;--text-6xl--line-height:1;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wider:.05em;--leading-tight:1.25;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--drop-shadow-sm:0 1px 2px #00000026;--ease-out:cubic-bezier(0,0,.2,1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-primary-100:#fce7f3;--color-primary-300:#f9a8d4;--color-primary-400:#f472b6;--color-primary-500:#ec4899;--color-primary-600:#db2777;--color-primary-700:#be185d;--color-primary-900:#831843;--color-accent-400:#c084fc;--color-accent-500:#a855f7;--color-accent-600:#9333ea;--animate-fade-in-up:fadeInUp .6s ease-out}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.-top-1{top:calc(var(--spacing)*-1)}.top-0{top:calc(var(--spacing)*0)}.top-full{top:100%}.-right-1{right:calc(var(--spacing)*-1)}.bottom-full{bottom:100%}.left-1\/2{left:50%}.z-50{z-index:50}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mx-1{margin-inline:calc(var(--spacing)*1)}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-1\.5{margin-top:calc(var(--spacing)*1.5)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-16{margin-top:calc(var(--spacing)*16)}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-2{margin-right:calc(var(--spacing)*2)}.mr-3{margin-right:calc(var(--spacing)*3)}.mr-4{margin-right:calc(var(--spacing)*4)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.ml-0\.5{margin-left:calc(var(--spacing)*.5)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left:calc(var(--spacing)*2)}.btn-primary{background-image:linear-gradient(to right,var(--color-primary-500),var(--color-accent-500));color:#fff;border-radius:.5rem;align-items:center;padding:.75rem 1.5rem;font-weight:500;transition:all .2s;display:inline-flex;box-shadow:0 10px 40px -10px #00000026}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-11{height:calc(var(--spacing)*11)}.h-14{height:calc(var(--spacing)*14)}.h-16{height:calc(var(--spacing)*16)}.h-32{height:calc(var(--spacing)*32)}.h-full{height:100%}.min-h-\[60vh\]{min-height:60vh}.min-h-screen{min-height:100vh}.w-1\.5{width:calc(var(--spacing)*1.5)}.w-3{width:calc(var(--spacing)*3)}.w-4{width:calc(var(--spacing)*4)}.w-6{width:calc(var(--spacing)*6)}.w-8{width:calc(var(--spacing)*8)}.w-9{width:calc(var(--spacing)*9)}.w-10{width:calc(var(--spacing)*10)}.w-11{width:calc(var(--spacing)*11)}.w-14{width:calc(var(--spacing)*14)}.w-16{width:calc(var(--spacing)*16)}.w-32{width:calc(var(--spacing)*32)}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-\[280px\]{max-width:280px}.flex-1{flex:1}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.animate-fade-in-up{animation:.6s ease-out fadeInUp;animation:var(--animate-fade-in-up)}.cursor-pointer{cursor:pointer}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*1)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*3)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*4)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-6>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*6)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-gray-200>:not(:last-child)){border-color:var(--color-gray-200)}.overflow-hidden{overflow:hidden}.scroll-smooth{scroll-behavior:smooth}.card{border-radius:.75rem;padding:1.5rem}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-\[6px\]{border-style:var(--tw-border-style);border-width:6px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-transparent{border-color:#0000}.border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.border-white\/10{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.border-t-gray-900{border-top-color:var(--color-gray-900)}.glass{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background-color:#ffffffb3;border:1px solid #fff3}.bg-blue-500{background-color:var(--color-blue-500)}.bg-cyan-500{background-color:var(--color-cyan-500)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-300{background-color:var(--color-gray-300)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-500{background-color:var(--color-green-500)}.bg-orange-500{background-color:var(--color-orange-500)}.bg-pink-500{background-color:var(--color-pink-500)}.bg-purple-100{background-color:var(--color-purple-100)}.bg-purple-500{background-color:var(--color-purple-500)}.bg-red-500{background-color:var(--color-red-500)}.bg-stone-500{background-color:var(--color-stone-500)}.bg-violet-500{background-color:var(--color-violet-500)}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.gradient-text{background-image:linear-gradient(to right,var(--color-primary-400),var(--color-accent-400));color:#0000;-webkit-background-clip:text;background-clip:text}.score-card{background-image:linear-gradient(90deg,#f472b61a,#c084fc1a);border:1px solid #f472b633}.rank-1{background-image:linear-gradient(90deg,#facc15,#f59e0b)}.rank-2{background-image:linear-gradient(90deg,#94a3b8,#64748b)}.rank-3{background-image:linear-gradient(90deg,#d97706,#b45309)}.from-blue-400{--tw-gradient-from:var(--color-blue-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-cyan-400{--tw-gradient-from:var(--color-cyan-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-emerald-400{--tw-gradient-from:var(--color-emerald-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-gray-50{--tw-gradient-from:var(--color-gray-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-gray-400{--tw-gradient-from:var(--color-gray-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-green-400{--tw-gradient-from:var(--color-green-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-orange-400{--tw-gradient-from:var(--color-orange-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-pink-500{--tw-gradient-from:var(--color-pink-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-primary-500{--tw-gradient-from:var(--color-primary-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-purple-400{--tw-gradient-from:var(--color-purple-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-red-500{--tw-gradient-from:var(--color-red-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-stone-400{--tw-gradient-from:var(--color-stone-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-violet-500{--tw-gradient-from:var(--color-violet-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-yellow-400{--tw-gradient-from:var(--color-yellow-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-accent-500{--tw-gradient-to:var(--color-accent-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-amber-500{--tw-gradient-to:var(--color-amber-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-cyan-500{--tw-gradient-to:var(--color-cyan-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-emerald-500{--tw-gradient-to:var(--color-emerald-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-fuchsia-600{--tw-gradient-to:var(--color-fuchsia-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-gray-100{--tw-gradient-to:var(--color-gray-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-gray-500{--tw-gradient-to:var(--color-gray-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-indigo-500{--tw-gradient-to:var(--color-indigo-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-purple-600{--tw-gradient-to:var(--color-purple-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-red-500{--tw-gradient-to:var(--color-red-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-rose-600{--tw-gradient-to:var(--color-rose-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-stone-500{--tw-gradient-to:var(--color-stone-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-teal-500{--tw-gradient-to:var(--color-teal-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-violet-500{--tw-gradient-to:var(--color-violet-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.p-0{padding:calc(var(--spacing)*0)}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-4{padding-block:calc(var(--spacing)*4)}.py-8{padding-block:calc(var(--spacing)*8)}.py-12{padding-block:calc(var(--spacing)*12)}.py-16{padding-block:calc(var(--spacing)*16)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-4{padding-top:calc(var(--spacing)*4)}.pr-1{padding-right:calc(var(--spacing)*1)}.pr-10{padding-right:calc(var(--spacing)*10)}.pr-25{padding-right:calc(var(--spacing)*25)}.pr-50{padding-right:calc(var(--spacing)*50)}.pr-100{padding-right:calc(var(--spacing)*100)}.pr-250{padding-right:calc(var(--spacing)*250)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.nav-link-active{color:var(--color-primary-500);font-weight:500}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-nowrap{white-space:nowrap}.nav-link{color:#374151;transition:color .2s}.text-accent-500{color:var(--color-accent-500)}.text-amber-500{color:var(--color-amber-500)}.text-blue-500{color:var(--color-blue-500)}.text-cyan-500{color:var(--color-cyan-500)}.text-emerald-500{color:var(--color-emerald-500)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-green-500{color:var(--color-green-500)}.text-indigo-500{color:var(--color-indigo-500)}.text-orange-500{color:var(--color-orange-500)}.text-pink-500{color:var(--color-pink-500)}.text-primary-500{color:var(--color-primary-500)}.text-purple-400{color:var(--color-purple-400)}.text-purple-500{color:var(--color-purple-500)}.text-purple-800{color:var(--color-purple-800)}.text-red-500{color:var(--color-red-500)}.text-rose-500{color:var(--color-rose-500)}.text-white{color:var(--color-white)}.text-yellow-500{color:var(--color-yellow-500)}.uppercase{text-transform:uppercase}.opacity-0{opacity:0}.opacity-50{opacity:.5}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-modern{box-shadow:0 10px 40px -10px #00000026}.ring-transparent{--tw-ring-color:transparent}.ring-yellow-400{--tw-ring-color:var(--color-yellow-400)}.drop-shadow-sm{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-sm));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}@media(hover:hover){.group-hover\:text-primary-500:is(:where(.group):hover *){color:var(--color-primary-500)}.group-hover\:ring-primary-500:is(:where(.group):hover *){--tw-ring-color:var(--color-primary-500)}.group-hover\/badge\:opacity-100:is(:where(.group\/badge):hover *){opacity:1}.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:bg-gray-200:hover{background-color:var(--color-gray-200)}.hover\:bg-primary-100:hover{background-color:var(--color-primary-100)}.hover\:text-primary-500:hover{color:var(--color-primary-500)}.hover\:text-primary-600:hover{color:var(--color-primary-600)}.hover\:text-primary-700:hover{color:var(--color-primary-700)}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:ring-primary-500:focus{--tw-ring-color:var(--color-primary-500)}@media(min-width:40rem){.sm\:table-cell{display:table-cell}.sm\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}@media(min-width:48rem){.md\:flex{display:flex}.md\:hidden{display:none}.md\:table-cell{display:table-cell}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:justify-start{justify-content:flex-start}:where(.md\:space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*0)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*0)*calc(1 - var(--tw-space-y-reverse)))}:where(.md\:space-x-8>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*8)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-x-reverse)))}.md\:text-left{text-align:left}.md\:text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}}@media(min-width:64rem){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}}@media(prefers-color-scheme:dark){:where(.dark\:divide-gray-700>:not(:last-child)),.dark\:border-gray-700{border-color:var(--color-gray-700)}.dark\:border-t-gray-800{border-top-color:var(--color-gray-800)}.dark\:bg-gray-600{background-color:var(--color-gray-600)}.dark\:bg-gray-700{background-color:var(--color-gray-700)}.dark\:bg-gray-800{background-color:var(--color-gray-800)}.dark\:bg-gray-800\/50{background-color:#1e293980}@supports (color:color-mix(in lab,red,red)){.dark\:bg-gray-800\/50{background-color:color-mix(in oklab,var(--color-gray-800)50%,transparent)}}.dark\:bg-purple-900\/30{background-color:#59168b4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-purple-900\/30{background-color:color-mix(in oklab,var(--color-purple-900)30%,transparent)}}.dark\:from-gray-900{--tw-gradient-from:var(--color-gray-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.dark\:to-gray-800{--tw-gradient-to:var(--color-gray-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.dark\:text-gray-200{color:var(--color-gray-200)}.dark\:text-gray-300{color:var(--color-gray-300)}.dark\:text-gray-400{color:var(--color-gray-400)}.dark\:text-gray-500{color:var(--color-gray-500)}.dark\:text-gray-600{color:var(--color-gray-600)}.dark\:text-purple-300{color:var(--color-purple-300)}.dark\:text-white{color:var(--color-white)}@media(hover:hover){.dark\:hover\:bg-gray-700:hover{background-color:var(--color-gray-700)}.dark\:hover\:bg-gray-800:hover{background-color:var(--color-gray-800)}.dark\:hover\:bg-gray-800\/30:hover{background-color:#1e29394d}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-gray-800\/30:hover{background-color:color-mix(in oklab,var(--color-gray-800)30%,transparent)}}.dark\:hover\:bg-primary-900\/30:hover{background-color:#8318434d}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-primary-900\/30:hover{background-color:color-mix(in oklab,var(--color-primary-900)30%,transparent)}}.dark\:hover\:text-primary-300:hover{color:var(--color-primary-300)}}}}.dark .glass{background-color:#111827b3;border-color:#ffffff1a}.dark .shadow-modern{box-shadow:0 10px 40px -10px #0006}.dark .score-card{background-image:linear-gradient(90deg,#f472b60d,#c084fc0d);border-color:#f472b61a}.btn-primary:hover{background-image:linear-gradient(to right,var(--color-primary-600),var(--color-accent-600))}.nav-link:hover{color:var(--color-primary-500)}.dark .nav-link{color:#e5e7eb}.dark .nav-link:hover{color:var(--color-primary-400)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.velocity-chart[data-v-401bbb13]{position:relative;width:100%} diff --git a/internal/generator/site/dist/assets/index-C2QviOxm.js b/internal/generator/site/dist/assets/index-C2QviOxm.js deleted file mode 100644 index e8660df..0000000 --- a/internal/generator/site/dist/assets/index-C2QviOxm.js +++ /dev/null @@ -1 +0,0 @@ -import{C as rr,r as $i}from"./chart-Bcjh2pZL.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const o of r)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function n(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function s(r){if(r.ep)return;r.ep=!0;const o=n(r);fetch(r.href,o)}})();function Is(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const ue={},qt=[],rt=()=>{},Xr=()=>!1,Vn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Ns=e=>e.startsWith("onUpdate:"),Pe=Object.assign,Ms=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Pi=Object.prototype.hasOwnProperty,re=(e,t)=>Pi.call(e,t),U=Array.isArray,Kt=e=>kn(e)==="[object Map]",Bn=e=>kn(e)==="[object Set]",or=e=>kn(e)==="[object Date]",K=e=>typeof e=="function",pe=e=>typeof e=="string",Ke=e=>typeof e=="symbol",fe=e=>e!==null&&typeof e=="object",Zr=e=>(fe(e)||K(e))&&K(e.then)&&K(e.catch),eo=Object.prototype.toString,kn=e=>eo.call(e),Ti=e=>kn(e).slice(8,-1),to=e=>kn(e)==="[object Object]",Ds=e=>pe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,ln=Is(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Hn=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},Oi=/-\w/g,Ge=Hn(e=>e.replace(Oi,t=>t.slice(1).toUpperCase())),Ii=/\B([A-Z])/g,Lt=Hn(e=>e.replace(Ii,"-$1").toLowerCase()),Un=Hn(e=>e.charAt(0).toUpperCase()+e.slice(1)),ns=Hn(e=>e?`on${Un(e)}`:""),Rt=(e,t)=>!Object.is(e,t),Pn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},Ni=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let ir;const Gn=()=>ir||(ir=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function St(e){if(U(e)){const t={};for(let n=0;n{if(n){const s=n.split(Di);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function J(e){let t="";if(pe(e))t=e;else if(U(e))for(let n=0;nqn(n,t))}const oo=e=>!!(e&&e.__v_isRef===!0),R=e=>pe(e)?e:e==null?"":U(e)||fe(e)&&(e.toString===eo||!K(e.toString))?oo(e)?R(e.value):JSON.stringify(e,io,2):String(e),io=(e,t)=>oo(t)?io(e,t.value):Kt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],o)=>(n[ss(s,o)+" =>"]=r,n),{})}:Bn(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>ss(n))}:Ke(t)?ss(t):fe(t)&&!U(t)&&!to(t)?String(t):t,ss=(e,t="")=>{var n;return Ke(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};let Le;class Hi{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=Le,!t&&Le&&(this.index=(Le.scopes||(Le.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0&&(Le=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n0)return;if(cn){let t=cn;for(cn=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;an;){let t=an;for(an=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function uo(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function fo(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),Fs(s),Gi(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function vs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(ho(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function ho(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===gn)||(e.globalVersion=gn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!vs(e))))return;e.flags|=2;const t=e.dep,n=he,s=qe;he=e,qe=!0;try{uo(e);const r=e.fn(e._value);(t.version===0||Rt(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{he=n,qe=s,fo(e),e.flags&=-3}}function Fs(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let o=n.computed.deps;o;o=o.nextDep)Fs(o,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Gi(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let qe=!0;const mo=[];function dt(){mo.push(qe),qe=!1}function ht(){const e=mo.pop();qe=e===void 0?!0:e}function lr(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=he;he=void 0;try{t()}finally{he=n}}}let gn=0;class qi{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Vs{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!he||!qe||he===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==he)n=this.activeLink=new qi(he,this),he.deps?(n.prevDep=he.depsTail,he.depsTail.nextDep=n,he.depsTail=n):he.deps=he.depsTail=n,go(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=he.depsTail,n.nextDep=void 0,he.depsTail.nextDep=n,he.depsTail=n,he.deps===n&&(he.deps=s)}return n}trigger(t){this.version++,gn++,this.notify(t)}notify(t){Ls();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{js()}}}function go(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)go(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const xs=new WeakMap,Nt=Symbol(""),bs=Symbol(""),pn=Symbol("");function Se(e,t,n){if(qe&&he){let s=xs.get(e);s||xs.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new Vs),r.map=s,r.key=n),r.track()}}function ut(e,t,n,s,r,o){const i=xs.get(e);if(!i){gn++;return}const l=a=>{a&&a.trigger()};if(Ls(),t==="clear")i.forEach(l);else{const a=U(e),u=a&&Ds(n);if(a&&n==="length"){const c=Number(s);i.forEach((h,g)=>{(g==="length"||g===pn||!Ke(g)&&g>=c)&&l(h)})}else switch((n!==void 0||i.has(void 0))&&l(i.get(n)),u&&l(i.get(pn)),t){case"add":a?u&&l(i.get("length")):(l(i.get(Nt)),Kt(e)&&l(i.get(bs)));break;case"delete":a||(l(i.get(Nt)),Kt(e)&&l(i.get(bs)));break;case"set":Kt(e)&&l(i.get(Nt));break}}js()}function Ht(e){const t=se(e);return t===e?t:(Se(t,"iterate",pn),He(e)?t:t.map(We))}function Kn(e){return Se(e=se(e),"iterate",pn),e}function _t(e,t){return mt(e)?Mt(e)?Yt(We(t)):Yt(t):We(t)}const Ki={__proto__:null,[Symbol.iterator](){return os(this,Symbol.iterator,e=>_t(this,e))},concat(...e){return Ht(this).concat(...e.map(t=>U(t)?Ht(t):t))},entries(){return os(this,"entries",e=>(e[1]=_t(this,e[1]),e))},every(e,t){return lt(this,"every",e,t,void 0,arguments)},filter(e,t){return lt(this,"filter",e,t,n=>n.map(s=>_t(this,s)),arguments)},find(e,t){return lt(this,"find",e,t,n=>_t(this,n),arguments)},findIndex(e,t){return lt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return lt(this,"findLast",e,t,n=>_t(this,n),arguments)},findLastIndex(e,t){return lt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return lt(this,"forEach",e,t,void 0,arguments)},includes(...e){return is(this,"includes",e)},indexOf(...e){return is(this,"indexOf",e)},join(e){return Ht(this).join(e)},lastIndexOf(...e){return is(this,"lastIndexOf",e)},map(e,t){return lt(this,"map",e,t,void 0,arguments)},pop(){return nn(this,"pop")},push(...e){return nn(this,"push",e)},reduce(e,...t){return ar(this,"reduce",e,t)},reduceRight(e,...t){return ar(this,"reduceRight",e,t)},shift(){return nn(this,"shift")},some(e,t){return lt(this,"some",e,t,void 0,arguments)},splice(...e){return nn(this,"splice",e)},toReversed(){return Ht(this).toReversed()},toSorted(e){return Ht(this).toSorted(e)},toSpliced(...e){return Ht(this).toSpliced(...e)},unshift(...e){return nn(this,"unshift",e)},values(){return os(this,"values",e=>_t(this,e))}};function os(e,t,n){const s=Kn(e),r=s[t]();return s!==e&&!He(e)&&(r._next=r.next,r.next=()=>{const o=r._next();return o.done||(o.value=n(o.value)),o}),r}const Wi=Array.prototype;function lt(e,t,n,s,r,o){const i=Kn(e),l=i!==e&&!He(e),a=i[t];if(a!==Wi[t]){const h=a.apply(e,o);return l?We(h):h}let u=n;i!==e&&(l?u=function(h,g){return n.call(this,_t(e,h),g,e)}:n.length>2&&(u=function(h,g){return n.call(this,h,g,e)}));const c=a.call(i,u,s);return l&&r?r(c):c}function ar(e,t,n,s){const r=Kn(e);let o=n;return r!==e&&(He(e)?n.length>3&&(o=function(i,l,a){return n.call(this,i,l,a,e)}):o=function(i,l,a){return n.call(this,i,_t(e,l),a,e)}),r[t](o,...s)}function is(e,t,n){const s=se(e);Se(s,"iterate",pn);const r=s[t](...n);return(r===-1||r===!1)&&Us(n[0])?(n[0]=se(n[0]),s[t](...n)):r}function nn(e,t,n=[]){dt(),Ls();const s=se(e)[t].apply(e,n);return js(),ht(),s}const zi=Is("__proto__,__v_isRef,__isVue"),po=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ke));function Ji(e){Ke(e)||(e=String(e));const t=se(this);return Se(t,"has",e),t.hasOwnProperty(e)}class yo{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return o;if(n==="__v_raw")return s===(r?o?ol:_o:o?bo:xo).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const i=U(t);if(!r){let a;if(i&&(a=Ki[n]))return a;if(n==="hasOwnProperty")return Ji}const l=Reflect.get(t,n,Ae(t)?t:s);if((Ke(n)?po.has(n):zi(n))||(r||Se(t,"get",n),o))return l;if(Ae(l)){const a=i&&Ds(n)?l:l.value;return r&&fe(a)?ws(a):a}return fe(l)?r?ws(l):Wn(l):l}}class vo extends yo{constructor(t=!1){super(!1,t)}set(t,n,s,r){let o=t[n];const i=U(t)&&Ds(n);if(!this._isShallow){const u=mt(o);if(!He(s)&&!mt(s)&&(o=se(o),s=se(s)),!i&&Ae(o)&&!Ae(s))return u||(o.value=s),!0}const l=i?Number(n)e,En=e=>Reflect.getPrototypeOf(e);function el(e,t,n){return function(...s){const r=this.__v_raw,o=se(r),i=Kt(o),l=e==="entries"||e===Symbol.iterator&&i,a=e==="keys"&&i,u=r[e](...s),c=n?_s:t?Yt:We;return!t&&Se(o,"iterate",a?bs:Nt),{next(){const{value:h,done:g}=u.next();return g?{value:h,done:g}:{value:l?[c(h[0]),c(h[1])]:c(h),done:g}},[Symbol.iterator](){return this}}}}function An(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function tl(e,t){const n={get(r){const o=this.__v_raw,i=se(o),l=se(r);e||(Rt(r,l)&&Se(i,"get",r),Se(i,"get",l));const{has:a}=En(i),u=t?_s:e?Yt:We;if(a.call(i,r))return u(o.get(r));if(a.call(i,l))return u(o.get(l));o!==i&&o.get(r)},get size(){const r=this.__v_raw;return!e&&Se(se(r),"iterate",Nt),r.size},has(r){const o=this.__v_raw,i=se(o),l=se(r);return e||(Rt(r,l)&&Se(i,"has",r),Se(i,"has",l)),r===l?o.has(r):o.has(r)||o.has(l)},forEach(r,o){const i=this,l=i.__v_raw,a=se(l),u=t?_s:e?Yt:We;return!e&&Se(a,"iterate",Nt),l.forEach((c,h)=>r.call(o,u(c),u(h),i))}};return Pe(n,e?{add:An("add"),set:An("set"),delete:An("delete"),clear:An("clear")}:{add(r){!t&&!He(r)&&!mt(r)&&(r=se(r));const o=se(this);return En(o).has.call(o,r)||(o.add(r),ut(o,"add",r,r)),this},set(r,o){!t&&!He(o)&&!mt(o)&&(o=se(o));const i=se(this),{has:l,get:a}=En(i);let u=l.call(i,r);u||(r=se(r),u=l.call(i,r));const c=a.call(i,r);return i.set(r,o),u?Rt(o,c)&&ut(i,"set",r,o):ut(i,"add",r,o),this},delete(r){const o=se(this),{has:i,get:l}=En(o);let a=i.call(o,r);a||(r=se(r),a=i.call(o,r)),l&&l.call(o,r);const u=o.delete(r);return a&&ut(o,"delete",r,void 0),u},clear(){const r=se(this),o=r.size!==0,i=r.clear();return o&&ut(r,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=el(r,e,t)}),n}function Bs(e,t){const n=tl(e,t);return(s,r,o)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(re(n,r)&&r in s?n:s,r,o)}const nl={get:Bs(!1,!1)},sl={get:Bs(!1,!0)},rl={get:Bs(!0,!1)};const xo=new WeakMap,bo=new WeakMap,_o=new WeakMap,ol=new WeakMap;function il(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ll(e){return e.__v_skip||!Object.isExtensible(e)?0:il(Ti(e))}function Wn(e){return mt(e)?e:Hs(e,!1,Qi,nl,xo)}function wo(e){return Hs(e,!1,Zi,sl,bo)}function ws(e){return Hs(e,!0,Xi,rl,_o)}function Hs(e,t,n,s,r){if(!fe(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=ll(e);if(o===0)return e;const i=r.get(e);if(i)return i;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function Mt(e){return mt(e)?Mt(e.__v_raw):!!(e&&e.__v_isReactive)}function mt(e){return!!(e&&e.__v_isReadonly)}function He(e){return!!(e&&e.__v_isShallow)}function Us(e){return e?!!e.__v_raw:!1}function se(e){const t=e&&e.__v_raw;return t?se(t):e}function al(e){return!re(e,"__v_skip")&&Object.isExtensible(e)&&no(e,"__v_skip",!0),e}const We=e=>fe(e)?Wn(e):e,Yt=e=>fe(e)?ws(e):e;function Ae(e){return e?e.__v_isRef===!0:!1}function ke(e){return ko(e,!1)}function cl(e){return ko(e,!0)}function ko(e,t){return Ae(e)?e:new ul(e,t)}class ul{constructor(t,n){this.dep=new Vs,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:se(t),this._value=n?t:We(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||He(t)||mt(t);t=s?t:se(t),Rt(t,n)&&(this._rawValue=t,this._value=s?t:We(t),this.dep.trigger())}}function O(e){return Ae(e)?e.value:e}const fl={get:(e,t,n)=>t==="__v_raw"?e:O(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return Ae(r)&&!Ae(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Co(e){return Mt(e)?e:new Proxy(e,fl)}class dl{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Vs(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=gn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&he!==this)return co(this,!0),!0}get value(){const t=this.dep.track();return ho(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function hl(e,t,n=!1){let s,r;return K(e)?s=e:(s=e.get,r=e.set),new dl(s,r,n)}const $n={},In=new WeakMap;let Tt;function ml(e,t=!1,n=Tt){if(n){let s=In.get(n);s||In.set(n,s=[]),s.push(e)}}function gl(e,t,n=ue){const{immediate:s,deep:r,once:o,scheduler:i,augmentJob:l,call:a}=n,u=L=>r?L:He(L)||r===!1||r===0?ft(L,1):ft(L);let c,h,g,y,S=!1,I=!1;if(Ae(e)?(h=()=>e.value,S=He(e)):Mt(e)?(h=()=>u(e),S=!0):U(e)?(I=!0,S=e.some(L=>Mt(L)||He(L)),h=()=>e.map(L=>{if(Ae(L))return L.value;if(Mt(L))return u(L);if(K(L))return a?a(L,2):L()})):K(e)?t?h=a?()=>a(e,2):e:h=()=>{if(g){dt();try{g()}finally{ht()}}const L=Tt;Tt=c;try{return a?a(e,3,[y]):e(y)}finally{Tt=L}}:h=rt,t&&r){const L=h,ee=r===!0?1/0:r;h=()=>ft(L(),ee)}const q=Ui(),j=()=>{c.stop(),q&&q.active&&Ms(q.effects,c)};if(o&&t){const L=t;t=(...ee)=>{L(...ee),j()}}let D=I?new Array(e.length).fill($n):$n;const V=L=>{if(!(!(c.flags&1)||!c.dirty&&!L))if(t){const ee=c.run();if(r||S||(I?ee.some((ye,me)=>Rt(ye,D[me])):Rt(ee,D))){g&&g();const ye=Tt;Tt=c;try{const me=[ee,D===$n?void 0:I&&D[0]===$n?[]:D,y];D=ee,a?a(t,3,me):t(...me)}finally{Tt=ye}}}else c.run()};return l&&l(V),c=new lo(h),c.scheduler=i?()=>i(V,!1):V,y=L=>ml(L,!1,c),g=c.onStop=()=>{const L=In.get(c);if(L){if(a)a(L,4);else for(const ee of L)ee();In.delete(c)}},t?s?V(!0):D=c.run():i?i(V.bind(null,!0),!0):c.run(),j.pause=c.pause.bind(c),j.resume=c.resume.bind(c),j.stop=j,j}function ft(e,t=1/0,n){if(t<=0||!fe(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,Ae(e))ft(e.value,t,n);else if(U(e))for(let s=0;s{ft(s,t,n)});else if(to(e)){for(const s in e)ft(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&ft(e[s],t,n)}return e}function Cn(e,t,n,s){try{return s?e(...s):e()}catch(r){zn(r,t,n)}}function ot(e,t,n,s){if(K(e)){const r=Cn(e,t,n,s);return r&&Zr(r)&&r.catch(o=>{zn(o,t,n)}),r}if(U(e)){const r=[];for(let o=0;o>>1,r=Ie[s],o=yn(r);o=yn(n)?Ie.push(e):Ie.splice(yl(t),0,e),e.flags|=1,Eo()}}function Eo(){Nn||(Nn=Ro.then($o))}function vl(e){U(e)?Wt.push(...e):wt&&e.id===-1?wt.splice(Ut+1,0,e):e.flags&1||(Wt.push(e),e.flags|=1),Eo()}function cr(e,t,n=nt+1){for(;nyn(n)-yn(s));if(Wt.length=0,wt){wt.push(...t);return}for(wt=t,Ut=0;Ute.id==null?e.flags&2?-1:1/0:e.id;function $o(e){try{for(nt=0;nt{s._d&&jn(-1);const o=Mn(t);let i;try{i=e(...r)}finally{Mn(o),s._d&&jn(1)}return i};return s._n=!0,s._c=!0,s._d=!0,s}function xl(e,t){if(we===null)return e;const n=Xn(we),s=e.dirs||(e.dirs=[]);for(let r=0;re.__isTeleport,wl=Symbol("_leaveCb");function qs(e,t){e.shapeFlag&6&&e.component?(e.transition=t,qs(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function To(e,t){return K(e)?Pe({name:e.name},t,{setup:e}):e}function Oo(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}const Dn=new WeakMap;function un(e,t,n,s,r=!1){if(U(e)){e.forEach((S,I)=>un(S,t&&(U(t)?t[I]:t),n,s,r));return}if(zt(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&un(e,t,n,s.component.subTree);return}const o=s.shapeFlag&4?Xn(s.component):s.el,i=r?null:o,{i:l,r:a}=e,u=t&&t.r,c=l.refs===ue?l.refs={}:l.refs,h=l.setupState,g=se(h),y=h===ue?Xr:S=>re(g,S);if(u!=null&&u!==a){if(ur(t),pe(u))c[u]=null,y(u)&&(h[u]=null);else if(Ae(u)){u.value=null;const S=t;S.k&&(c[S.k]=null)}}if(K(a))Cn(a,l,12,[i,c]);else{const S=pe(a),I=Ae(a);if(S||I){const q=()=>{if(e.f){const j=S?y(a)?h[a]:c[a]:a.value;if(r)U(j)&&Ms(j,o);else if(U(j))j.includes(o)||j.push(o);else if(S)c[a]=[o],y(a)&&(h[a]=c[a]);else{const D=[o];a.value=D,e.k&&(c[e.k]=D)}}else S?(c[a]=i,y(a)&&(h[a]=i)):I&&(a.value=i,e.k&&(c[e.k]=i))};if(i){const j=()=>{q(),Dn.delete(e)};j.id=-1,Dn.set(e,j),Fe(j,n)}else ur(e),q()}}}function ur(e){const t=Dn.get(e);t&&(t.flags|=8,Dn.delete(e))}Gn().requestIdleCallback;Gn().cancelIdleCallback;const zt=e=>!!e.type.__asyncLoader,Io=e=>e.type.__isKeepAlive;function kl(e,t){No(e,"a",t)}function Cl(e,t){No(e,"da",t)}function No(e,t,n=Ee){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Jn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Io(r.parent.vnode)&&Rl(s,t,n,r),r=r.parent}}function Rl(e,t,n,s){const r=Jn(t,e,s,!0);Mo(()=>{Ms(s[t],r)},n)}function Jn(e,t,n=Ee,s=!1){if(n){const r=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{dt();const l=Rn(n),a=ot(t,n,e,i);return l(),ht(),a});return s?r.unshift(o):r.push(o),o}}const pt=e=>(t,n=Ee)=>{(!bn||e==="sp")&&Jn(e,(...s)=>t(...s),n)},Sl=pt("bm"),jt=pt("m"),El=pt("bu"),Al=pt("u"),$l=pt("bum"),Mo=pt("um"),Pl=pt("sp"),Tl=pt("rtg"),Ol=pt("rtc");function Il(e,t=Ee){Jn("ec",e,t)}const Do="components";function Nl(e,t){return jo(Do,e,!0,t)||e}const Lo=Symbol.for("v-ndc");function Ml(e){return pe(e)?jo(Do,e,!1)||e:e||Lo}function jo(e,t,n=!0,s=!1){const r=we||Ee;if(r){const o=r.type;{const l=ka(o,!1);if(l&&(l===t||l===Ge(t)||l===Un(Ge(t))))return o}const i=fr(r[e]||o[e],t)||fr(r.appContext[e],t);return!i&&s?o:i}}function fr(e,t){return e&&(e[t]||e[Ge(t)]||e[Un(Ge(t))])}function xe(e,t,n,s){let r;const o=n,i=U(e);if(i||pe(e)){const l=i&&Mt(e);let a=!1,u=!1;l&&(a=!He(e),u=mt(e),e=Kn(e)),r=new Array(e.length);for(let c=0,h=e.length;ct(l,a,void 0,o));else{const l=Object.keys(e);r=new Array(l.length);for(let a=0,u=l.length;a0;return t!=="default"&&(n.name=t),v(),ie(Y,null,[N("slot",n,s&&s())],u?-2:64)}let o=e[t];o&&o._c&&(o._d=!1),v();const i=o&&Fo(o(n)),l=n.key||i&&i.key,a=ie(Y,{key:(l&&!Ke(l)?l:`_${t}`)+(!i&&s?"_fb":"")},i||(s?s():[]),i&&e._===1?64:-2);return a.scopeId&&(a.slotScopeIds=[a.scopeId+"-s"]),o&&o._c&&(o._d=!0),a}function Fo(e){return e.some(t=>xn(t)?!(t.type===gt||t.type===Y&&!Fo(t.children)):!0)?e:null}const ks=e=>e?oi(e)?Xn(e):ks(e.parent):null,fn=Pe(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>ks(e.parent),$root:e=>ks(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Bo(e),$forceUpdate:e=>e.f||(e.f=()=>{Gs(e.update)}),$nextTick:e=>e.n||(e.n=So.bind(e.proxy)),$watch:e=>Kl.bind(e)}),ls=(e,t)=>e!==ue&&!e.__isScriptSetup&&re(e,t),Dl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:o,accessCache:i,type:l,appContext:a}=e;if(t[0]!=="$"){const g=i[t];if(g!==void 0)switch(g){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return o[t]}else{if(ls(s,t))return i[t]=1,s[t];if(r!==ue&&re(r,t))return i[t]=2,r[t];if(re(o,t))return i[t]=3,o[t];if(n!==ue&&re(n,t))return i[t]=4,n[t];Cs&&(i[t]=0)}}const u=fn[t];let c,h;if(u)return t==="$attrs"&&Se(e.attrs,"get",""),u(e);if((c=l.__cssModules)&&(c=c[t]))return c;if(n!==ue&&re(n,t))return i[t]=4,n[t];if(h=a.config.globalProperties,re(h,t))return h[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:o}=e;return ls(r,t)?(r[t]=n,!0):s!==ue&&re(s,t)?(s[t]=n,!0):re(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,props:o,type:i}},l){let a;return!!(n[l]||e!==ue&&l[0]!=="$"&&re(e,l)||ls(t,l)||re(o,l)||re(s,l)||re(fn,l)||re(r.config.globalProperties,l)||(a=i.__cssModules)&&a[l])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:re(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function dr(e){return U(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Cs=!0;function Ll(e){const t=Bo(e),n=e.proxy,s=e.ctx;Cs=!1,t.beforeCreate&&hr(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:i,watch:l,provide:a,inject:u,created:c,beforeMount:h,mounted:g,beforeUpdate:y,updated:S,activated:I,deactivated:q,beforeDestroy:j,beforeUnmount:D,destroyed:V,unmounted:L,render:ee,renderTracked:ye,renderTriggered:me,errorCaptured:Ce,serverPrefetch:yt,expose:Je,inheritAttrs:vt,components:Et,directives:Ye,filters:en}=t;if(u&&jl(u,s,null),i)for(const ae in i){const te=i[ae];K(te)&&(s[ae]=te.bind(n))}if(r){const ae=r.call(n,n);fe(ae)&&(e.data=Wn(ae))}if(Cs=!0,o)for(const ae in o){const te=o[ae],it=K(te)?te.bind(n,n):K(te.get)?te.get.bind(n,n):rt,xt=!K(te)&&K(te.set)?te.set.bind(n):rt,Qe=oe({get:it,set:xt});Object.defineProperty(s,ae,{enumerable:!0,configurable:!0,get:()=>Qe.value,set:Ne=>Qe.value=Ne})}if(l)for(const ae in l)Vo(l[ae],s,n,ae);if(a){const ae=K(a)?a.call(n):a;Reflect.ownKeys(ae).forEach(te=>{dn(te,ae[te])})}c&&hr(c,e,"c");function be(ae,te){U(te)?te.forEach(it=>ae(it.bind(n))):te&&ae(te.bind(n))}if(be(Sl,h),be(jt,g),be(El,y),be(Al,S),be(kl,I),be(Cl,q),be(Il,Ce),be(Ol,ye),be(Tl,me),be($l,D),be(Mo,L),be(Pl,yt),U(Je))if(Je.length){const ae=e.exposed||(e.exposed={});Je.forEach(te=>{Object.defineProperty(ae,te,{get:()=>n[te],set:it=>n[te]=it,enumerable:!0})})}else e.exposed||(e.exposed={});ee&&e.render===rt&&(e.render=ee),vt!=null&&(e.inheritAttrs=vt),Et&&(e.components=Et),Ye&&(e.directives=Ye),yt&&Oo(e)}function jl(e,t,n=rt){U(e)&&(e=Rs(e));for(const s in e){const r=e[s];let o;fe(r)?"default"in r?o=$e(r.from||s,r.default,!0):o=$e(r.from||s):o=$e(r),Ae(o)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[s]=o}}function hr(e,t,n){ot(U(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Vo(e,t,n,s){let r=s.includes(".")?Go(n,s):()=>n[s];if(pe(e)){const o=t[e];K(o)&&Ue(r,o)}else if(K(e))Ue(r,e.bind(n));else if(fe(e))if(U(e))e.forEach(o=>Vo(o,t,n,s));else{const o=K(e.handler)?e.handler.bind(n):t[e.handler];K(o)&&Ue(r,o,e)}}function Bo(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let a;return l?a=l:!r.length&&!n&&!s?a=t:(a={},r.length&&r.forEach(u=>Ln(a,u,i,!0)),Ln(a,t,i)),fe(t)&&o.set(t,a),a}function Ln(e,t,n,s=!1){const{mixins:r,extends:o}=t;o&&Ln(e,o,n,!0),r&&r.forEach(i=>Ln(e,i,n,!0));for(const i in t)if(!(s&&i==="expose")){const l=Fl[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const Fl={data:mr,props:gr,emits:gr,methods:on,computed:on,beforeCreate:Te,created:Te,beforeMount:Te,mounted:Te,beforeUpdate:Te,updated:Te,beforeDestroy:Te,beforeUnmount:Te,destroyed:Te,unmounted:Te,activated:Te,deactivated:Te,errorCaptured:Te,serverPrefetch:Te,components:on,directives:on,watch:Bl,provide:mr,inject:Vl};function mr(e,t){return t?e?function(){return Pe(K(e)?e.call(this,this):e,K(t)?t.call(this,this):t)}:t:e}function Vl(e,t){return on(Rs(e),Rs(t))}function Rs(e){if(U(e)){const t={};for(let n=0;n1)return n&&K(t)?t.call(s&&s.proxy):t}}const Gl=Symbol.for("v-scx"),ql=()=>$e(Gl);function Ue(e,t,n){return Uo(e,t,n)}function Uo(e,t,n=ue){const{immediate:s,deep:r,flush:o,once:i}=n,l=Pe({},n),a=t&&s||!t&&o!=="post";let u;if(bn){if(o==="sync"){const y=ql();u=y.__watcherHandles||(y.__watcherHandles=[])}else if(!a){const y=()=>{};return y.stop=rt,y.resume=rt,y.pause=rt,y}}const c=Ee;l.call=(y,S,I)=>ot(y,c,S,I);let h=!1;o==="post"?l.scheduler=y=>{Fe(y,c&&c.suspense)}:o!=="sync"&&(h=!0,l.scheduler=(y,S)=>{S?y():Gs(y)}),l.augmentJob=y=>{t&&(y.flags|=4),h&&(y.flags|=2,c&&(y.id=c.uid,y.i=c))};const g=gl(e,t,l);return bn&&(u?u.push(g):a&&g()),g}function Kl(e,t,n){const s=this.proxy,r=pe(e)?e.includes(".")?Go(s,e):()=>s[e]:e.bind(s,s);let o;K(t)?o=t:(o=t.handler,n=t);const i=Rn(this),l=Uo(r,o.bind(s),n);return i(),l}function Go(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;rt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Ge(t)}Modifiers`]||e[`${Lt(t)}Modifiers`];function zl(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||ue;let r=n;const o=t.startsWith("update:"),i=o&&Wl(s,t.slice(7));i&&(i.trim&&(r=n.map(c=>pe(c)?c.trim():c)),i.number&&(r=n.map(Ni)));let l,a=s[l=ns(t)]||s[l=ns(Ge(t))];!a&&o&&(a=s[l=ns(Lt(t))]),a&&ot(a,e,6,r);const u=s[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,ot(u,e,6,r)}}const Jl=new WeakMap;function qo(e,t,n=!1){const s=n?Jl:t.emitsCache,r=s.get(e);if(r!==void 0)return r;const o=e.emits;let i={},l=!1;if(!K(e)){const a=u=>{const c=qo(u,t,!0);c&&(l=!0,Pe(i,c))};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!o&&!l?(fe(e)&&s.set(e,null),null):(U(o)?o.forEach(a=>i[a]=null):Pe(i,o),fe(e)&&s.set(e,i),i)}function Yn(e,t){return!e||!Vn(t)?!1:(t=t.slice(2).replace(/Once$/,""),re(e,t[0].toLowerCase()+t.slice(1))||re(e,Lt(t))||re(e,t))}function pr(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[o],slots:i,attrs:l,emit:a,render:u,renderCache:c,props:h,data:g,setupState:y,ctx:S,inheritAttrs:I}=e,q=Mn(e);let j,D;try{if(n.shapeFlag&4){const L=r||s,ee=L;j=st(u.call(ee,L,c,h,y,g,S)),D=l}else{const L=t;j=st(L.length>1?L(h,{attrs:l,slots:i,emit:a}):L(h,null)),D=t.props?l:Yl(l)}}catch(L){hn.length=0,zn(L,e,1),j=N(gt)}let V=j;if(D&&I!==!1){const L=Object.keys(D),{shapeFlag:ee}=V;L.length&&ee&7&&(o&&L.some(Ns)&&(D=Ql(D,o)),V=Qt(V,D,!1,!0))}return n.dirs&&(V=Qt(V,null,!1,!0),V.dirs=V.dirs?V.dirs.concat(n.dirs):n.dirs),n.transition&&qs(V,n.transition),j=V,Mn(q),j}const Yl=e=>{let t;for(const n in e)(n==="class"||n==="style"||Vn(n))&&((t||(t={}))[n]=e[n]);return t},Ql=(e,t)=>{const n={};for(const s in e)(!Ns(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Xl(e,t,n){const{props:s,children:r,component:o}=e,{props:i,children:l,patchFlag:a}=t,u=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&a>=0){if(a&1024)return!0;if(a&16)return s?yr(s,i,u):!!i;if(a&8){const c=t.dynamicProps;for(let h=0;hObject.create(Ko),zo=e=>Object.getPrototypeOf(e)===Ko;function ea(e,t,n,s=!1){const r={},o=Wo();e.propsDefaults=Object.create(null),Jo(e,t,r,o);for(const i in e.propsOptions[0])i in r||(r[i]=void 0);n?e.props=s?r:wo(r):e.type.props?e.props=r:e.props=o,e.attrs=o}function ta(e,t,n,s){const{props:r,attrs:o,vnode:{patchFlag:i}}=e,l=se(r),[a]=e.propsOptions;let u=!1;if((s||i>0)&&!(i&16)){if(i&8){const c=e.vnode.dynamicProps;for(let h=0;h{a=!0;const[g,y]=Yo(h,t,!0);Pe(i,g),y&&l.push(...y)};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!o&&!a)return fe(e)&&s.set(e,qt),qt;if(U(o))for(let c=0;ce==="_"||e==="_ctx"||e==="$stable",Ws=e=>U(e)?e.map(st):[st(e)],sa=(e,t,n)=>{if(t._n)return t;const s=Z((...r)=>Ws(t(...r)),n);return s._c=!1,s},Qo=(e,t,n)=>{const s=e._ctx;for(const r in e){if(Ks(r))continue;const o=e[r];if(K(o))t[r]=sa(r,o,s);else if(o!=null){const i=Ws(o);t[r]=()=>i}}},Xo=(e,t)=>{const n=Ws(t);e.slots.default=()=>n},Zo=(e,t,n)=>{for(const s in t)(n||!Ks(s))&&(e[s]=t[s])},ra=(e,t,n)=>{const s=e.slots=Wo();if(e.vnode.shapeFlag&32){const r=t._;r?(Zo(s,t,n),n&&no(s,"_",r,!0)):Qo(t,s)}else t&&Xo(e,t)},oa=(e,t,n)=>{const{vnode:s,slots:r}=e;let o=!0,i=ue;if(s.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:Zo(r,t,n):(o=!t.$stable,Qo(t,r)),i=t}else t&&(Xo(e,t),i={default:1});if(o)for(const l in r)!Ks(l)&&i[l]==null&&delete r[l]},Fe=ua;function ia(e){return la(e)}function la(e,t){const n=Gn();n.__VUE__=!0;const{insert:s,remove:r,patchProp:o,createElement:i,createText:l,createComment:a,setText:u,setElementText:c,parentNode:h,nextSibling:g,setScopeId:y=rt,insertStaticContent:S}=e,I=(d,m,p,b=null,w=null,x=null,$=void 0,A=null,E=!!m.dynamicChildren)=>{if(d===m)return;d&&!sn(d,m)&&(b=_(d),Ne(d,w,x,!0),d=null),m.patchFlag===-2&&(E=!1,m.dynamicChildren=null);const{type:C,ref:H,shapeFlag:T}=m;switch(C){case Qn:q(d,m,p,b);break;case gt:j(d,m,p,b);break;case cs:d==null&&D(m,p,b,$);break;case Y:Et(d,m,p,b,w,x,$,A,E);break;default:T&1?ee(d,m,p,b,w,x,$,A,E):T&6?Ye(d,m,p,b,w,x,$,A,E):(T&64||T&128)&&C.process(d,m,p,b,w,x,$,A,E,F)}H!=null&&w?un(H,d&&d.ref,x,m||d,!m):H==null&&d&&d.ref!=null&&un(d.ref,null,x,d,!0)},q=(d,m,p,b)=>{if(d==null)s(m.el=l(m.children),p,b);else{const w=m.el=d.el;m.children!==d.children&&u(w,m.children)}},j=(d,m,p,b)=>{d==null?s(m.el=a(m.children||""),p,b):m.el=d.el},D=(d,m,p,b)=>{[d.el,d.anchor]=S(d.children,m,p,b,d.el,d.anchor)},V=({el:d,anchor:m},p,b)=>{let w;for(;d&&d!==m;)w=g(d),s(d,p,b),d=w;s(m,p,b)},L=({el:d,anchor:m})=>{let p;for(;d&&d!==m;)p=g(d),r(d),d=p;r(m)},ee=(d,m,p,b,w,x,$,A,E)=>{if(m.type==="svg"?$="svg":m.type==="math"&&($="mathml"),d==null)ye(m,p,b,w,x,$,A,E);else{const C=d.el&&d.el._isVueCE?d.el:null;try{C&&C._beginPatch(),yt(d,m,w,x,$,A,E)}finally{C&&C._endPatch()}}},ye=(d,m,p,b,w,x,$,A)=>{let E,C;const{props:H,shapeFlag:T,transition:B,dirs:G}=d;if(E=d.el=i(d.type,x,H&&H.is,H),T&8?c(E,d.children):T&16&&Ce(d.children,E,null,b,w,as(d,x),$,A),G&&$t(d,null,b,"created"),me(E,d,d.scopeId,$,b),H){for(const de in H)de!=="value"&&!ln(de)&&o(E,de,null,H[de],x,b);"value"in H&&o(E,"value",null,H.value,x),(C=H.onVnodeBeforeMount)&&tt(C,b,d)}G&&$t(d,null,b,"beforeMount");const X=aa(w,B);X&&B.beforeEnter(E),s(E,m,p),((C=H&&H.onVnodeMounted)||X||G)&&Fe(()=>{C&&tt(C,b,d),X&&B.enter(E),G&&$t(d,null,b,"mounted")},w)},me=(d,m,p,b,w)=>{if(p&&y(d,p),b)for(let x=0;x{for(let C=E;C{const A=m.el=d.el;let{patchFlag:E,dynamicChildren:C,dirs:H}=m;E|=d.patchFlag&16;const T=d.props||ue,B=m.props||ue;let G;if(p&&Pt(p,!1),(G=B.onVnodeBeforeUpdate)&&tt(G,p,m,d),H&&$t(m,d,p,"beforeUpdate"),p&&Pt(p,!0),(T.innerHTML&&B.innerHTML==null||T.textContent&&B.textContent==null)&&c(A,""),C?Je(d.dynamicChildren,C,A,p,b,as(m,w),x):$||te(d,m,A,null,p,b,as(m,w),x,!1),E>0){if(E&16)vt(A,T,B,p,w);else if(E&2&&T.class!==B.class&&o(A,"class",null,B.class,w),E&4&&o(A,"style",T.style,B.style,w),E&8){const X=m.dynamicProps;for(let de=0;de{G&&tt(G,p,m,d),H&&$t(m,d,p,"updated")},b)},Je=(d,m,p,b,w,x,$)=>{for(let A=0;A{if(m!==p){if(m!==ue)for(const x in m)!ln(x)&&!(x in p)&&o(d,x,m[x],null,w,b);for(const x in p){if(ln(x))continue;const $=p[x],A=m[x];$!==A&&x!=="value"&&o(d,x,A,$,w,b)}"value"in p&&o(d,"value",m.value,p.value,w)}},Et=(d,m,p,b,w,x,$,A,E)=>{const C=m.el=d?d.el:l(""),H=m.anchor=d?d.anchor:l("");let{patchFlag:T,dynamicChildren:B,slotScopeIds:G}=m;G&&(A=A?A.concat(G):G),d==null?(s(C,p,b),s(H,p,b),Ce(m.children||[],p,H,w,x,$,A,E)):T>0&&T&64&&B&&d.dynamicChildren?(Je(d.dynamicChildren,B,p,w,x,$,A),(m.key!=null||w&&m===w.subTree)&&ei(d,m,!0)):te(d,m,p,H,w,x,$,A,E)},Ye=(d,m,p,b,w,x,$,A,E)=>{m.slotScopeIds=A,d==null?m.shapeFlag&512?w.ctx.activate(m,p,b,$,E):en(m,p,b,w,x,$,E):Ft(d,m,E)},en=(d,m,p,b,w,x,$)=>{const A=d.component=ya(d,b,w);if(Io(d)&&(A.ctx.renderer=F),xa(A,!1,$),A.asyncDep){if(w&&w.registerDep(A,be,$),!d.el){const E=A.subTree=N(gt);j(null,E,m,p),d.placeholder=E.el}}else be(A,d,m,p,w,x,$)},Ft=(d,m,p)=>{const b=m.component=d.component;if(Xl(d,m,p))if(b.asyncDep&&!b.asyncResolved){ae(b,m,p);return}else b.next=m,b.update();else m.el=d.el,b.vnode=m},be=(d,m,p,b,w,x,$)=>{const A=()=>{if(d.isMounted){let{next:T,bu:B,u:G,parent:X,vnode:de}=d;{const Ze=ti(d);if(Ze){T&&(T.el=de.el,ae(d,T,$)),Ze.asyncDep.then(()=>{d.isUnmounted||A()});return}}let le=T,Me;Pt(d,!1),T?(T.el=de.el,ae(d,T,$)):T=de,B&&Pn(B),(Me=T.props&&T.props.onVnodeBeforeUpdate)&&tt(Me,X,T,de),Pt(d,!0);const De=pr(d),Xe=d.subTree;d.subTree=De,I(Xe,De,h(Xe.el),_(Xe),d,w,x),T.el=De.el,le===null&&Zl(d,De.el),G&&Fe(G,w),(Me=T.props&&T.props.onVnodeUpdated)&&Fe(()=>tt(Me,X,T,de),w)}else{let T;const{el:B,props:G}=m,{bm:X,m:de,parent:le,root:Me,type:De}=d,Xe=zt(m);Pt(d,!1),X&&Pn(X),!Xe&&(T=G&&G.onVnodeBeforeMount)&&tt(T,le,m),Pt(d,!0);{Me.ce&&Me.ce._def.shadowRoot!==!1&&Me.ce._injectChildStyle(De);const Ze=d.subTree=pr(d);I(null,Ze,p,b,d,w,x),m.el=Ze.el}if(de&&Fe(de,w),!Xe&&(T=G&&G.onVnodeMounted)){const Ze=m;Fe(()=>tt(T,le,Ze),w)}(m.shapeFlag&256||le&&zt(le.vnode)&&le.vnode.shapeFlag&256)&&d.a&&Fe(d.a,w),d.isMounted=!0,m=p=b=null}};d.scope.on();const E=d.effect=new lo(A);d.scope.off();const C=d.update=E.run.bind(E),H=d.job=E.runIfDirty.bind(E);H.i=d,H.id=d.uid,E.scheduler=()=>Gs(H),Pt(d,!0),C()},ae=(d,m,p)=>{m.component=d;const b=d.vnode.props;d.vnode=m,d.next=null,ta(d,m.props,b,p),oa(d,m.children,p),dt(),cr(d),ht()},te=(d,m,p,b,w,x,$,A,E=!1)=>{const C=d&&d.children,H=d?d.shapeFlag:0,T=m.children,{patchFlag:B,shapeFlag:G}=m;if(B>0){if(B&128){xt(C,T,p,b,w,x,$,A,E);return}else if(B&256){it(C,T,p,b,w,x,$,A,E);return}}G&8?(H&16&&Be(C,w,x),T!==C&&c(p,T)):H&16?G&16?xt(C,T,p,b,w,x,$,A,E):Be(C,w,x,!0):(H&8&&c(p,""),G&16&&Ce(T,p,b,w,x,$,A,E))},it=(d,m,p,b,w,x,$,A,E)=>{d=d||qt,m=m||qt;const C=d.length,H=m.length,T=Math.min(C,H);let B;for(B=0;BH?Be(d,w,x,!0,!1,T):Ce(m,p,b,w,x,$,A,E,T)},xt=(d,m,p,b,w,x,$,A,E)=>{let C=0;const H=m.length;let T=d.length-1,B=H-1;for(;C<=T&&C<=B;){const G=d[C],X=m[C]=E?kt(m[C]):st(m[C]);if(sn(G,X))I(G,X,p,null,w,x,$,A,E);else break;C++}for(;C<=T&&C<=B;){const G=d[T],X=m[B]=E?kt(m[B]):st(m[B]);if(sn(G,X))I(G,X,p,null,w,x,$,A,E);else break;T--,B--}if(C>T){if(C<=B){const G=B+1,X=GB)for(;C<=T;)Ne(d[C],w,x,!0),C++;else{const G=C,X=C,de=new Map;for(C=X;C<=B;C++){const je=m[C]=E?kt(m[C]):st(m[C]);je.key!=null&&de.set(je.key,C)}let le,Me=0;const De=B-X+1;let Xe=!1,Ze=0;const tn=new Array(De);for(C=0;C=De){Ne(je,w,x,!0);continue}let et;if(je.key!=null)et=de.get(je.key);else for(le=X;le<=B;le++)if(tn[le-X]===0&&sn(je,m[le])){et=le;break}et===void 0?Ne(je,w,x,!0):(tn[et-X]=C+1,et>=Ze?Ze=et:Xe=!0,I(je,m[et],p,null,w,x,$,A,E),Me++)}const tr=Xe?ca(tn):qt;for(le=tr.length-1,C=De-1;C>=0;C--){const je=X+C,et=m[je],nr=m[je+1],sr=je+1{const{el:x,type:$,transition:A,children:E,shapeFlag:C}=d;if(C&6){Qe(d.component.subTree,m,p,b);return}if(C&128){d.suspense.move(m,p,b);return}if(C&64){$.move(d,m,p,F);return}if($===Y){s(x,m,p);for(let T=0;TA.enter(x),w);else{const{leave:T,delayLeave:B,afterLeave:G}=A,X=()=>{d.ctx.isUnmounted?r(x):s(x,m,p)},de=()=>{x._isLeaving&&x[wl](!0),T(x,()=>{X(),G&&G()})};B?B(x,X,de):de()}else s(x,m,p)},Ne=(d,m,p,b=!1,w=!1)=>{const{type:x,props:$,ref:A,children:E,dynamicChildren:C,shapeFlag:H,patchFlag:T,dirs:B,cacheIndex:G}=d;if(T===-2&&(w=!1),A!=null&&(dt(),un(A,null,p,d,!0),ht()),G!=null&&(m.renderCache[G]=void 0),H&256){m.ctx.deactivate(d);return}const X=H&1&&B,de=!zt(d);let le;if(de&&(le=$&&$.onVnodeBeforeUnmount)&&tt(le,m,d),H&6)At(d.component,p,b);else{if(H&128){d.suspense.unmount(p,b);return}X&&$t(d,null,m,"beforeUnmount"),H&64?d.type.remove(d,m,p,F,b):C&&!C.hasOnce&&(x!==Y||T>0&&T&64)?Be(C,m,p,!1,!0):(x===Y&&T&384||!w&&H&16)&&Be(E,m,p),b&&Vt(d)}(de&&(le=$&&$.onVnodeUnmounted)||X)&&Fe(()=>{le&&tt(le,m,d),X&&$t(d,null,m,"unmounted")},p)},Vt=d=>{const{type:m,el:p,anchor:b,transition:w}=d;if(m===Y){Bt(p,b);return}if(m===cs){L(d);return}const x=()=>{r(p),w&&!w.persisted&&w.afterLeave&&w.afterLeave()};if(d.shapeFlag&1&&w&&!w.persisted){const{leave:$,delayLeave:A}=w,E=()=>$(p,x);A?A(d.el,x,E):E()}else x()},Bt=(d,m)=>{let p;for(;d!==m;)p=g(d),r(d),d=p;r(m)},At=(d,m,p)=>{const{bum:b,scope:w,job:x,subTree:$,um:A,m:E,a:C}=d;xr(E),xr(C),b&&Pn(b),w.stop(),x&&(x.flags|=8,Ne($,d,m,p)),A&&Fe(A,m),Fe(()=>{d.isUnmounted=!0},m)},Be=(d,m,p,b=!1,w=!1,x=0)=>{for(let $=x;${if(d.shapeFlag&6)return _(d.component.subTree);if(d.shapeFlag&128)return d.suspense.next();const m=g(d.anchor||d.el),p=m&&m[bl];return p?g(p):m};let M=!1;const P=(d,m,p)=>{d==null?m._vnode&&Ne(m._vnode,null,null,!0):I(m._vnode||null,d,m,null,null,null,p),m._vnode=d,M||(M=!0,cr(),Ao(),M=!1)},F={p:I,um:Ne,m:Qe,r:Vt,mt:en,mc:Ce,pc:te,pbc:Je,n:_,o:e};return{render:P,hydrate:void 0,createApp:Ul(P)}}function as({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function Pt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function aa(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function ei(e,t,n=!1){const s=e.children,r=t.children;if(U(s)&&U(r))for(let o=0;o>1,e[n[l]]0&&(t[s]=n[o-1]),n[o]=s)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function ti(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:ti(t)}function xr(e){if(e)for(let t=0;te.__isSuspense;function ua(e,t){t&&t.pendingBranch?U(e)?t.effects.push(...e):t.effects.push(e):vl(e)}const Y=Symbol.for("v-fgt"),Qn=Symbol.for("v-txt"),gt=Symbol.for("v-cmt"),cs=Symbol.for("v-stc"),hn=[];let Ve=null;function v(e=!1){hn.push(Ve=e?null:[])}function fa(){hn.pop(),Ve=hn[hn.length-1]||null}let vn=1;function jn(e,t=!1){vn+=e,e<0&&Ve&&t&&(Ve.hasOnce=!0)}function si(e){return e.dynamicChildren=vn>0?Ve||qt:null,fa(),vn>0&&Ve&&Ve.push(e),e}function k(e,t,n,s,r,o){return si(f(e,t,n,s,r,o,!0))}function ie(e,t,n,s,r){return si(N(e,t,n,s,r,!0))}function xn(e){return e?e.__v_isVNode===!0:!1}function sn(e,t){return e.type===t.type&&e.key===t.key}const ri=({key:e})=>e??null,Tn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?pe(e)||Ae(e)||K(e)?{i:we,r:e,k:t,f:!!n}:e:null);function f(e,t=null,n=null,s=0,r=null,o=e===Y?0:1,i=!1,l=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ri(t),ref:t&&Tn(t),scopeId:Po,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:we};return l?(zs(a,n),o&128&&e.normalize(a)):n&&(a.shapeFlag|=pe(n)?8:16),vn>0&&!i&&Ve&&(a.patchFlag>0||o&6)&&a.patchFlag!==32&&Ve.push(a),a}const N=da;function da(e,t=null,n=null,s=0,r=null,o=!1){if((!e||e===Lo)&&(e=gt),xn(e)){const l=Qt(e,t,!0);return n&&zs(l,n),vn>0&&!o&&Ve&&(l.shapeFlag&6?Ve[Ve.indexOf(e)]=l:Ve.push(l)),l.patchFlag=-2,l}if(Ca(e)&&(e=e.__vccOpts),t){t=ha(t);let{class:l,style:a}=t;l&&!pe(l)&&(t.class=J(l)),fe(a)&&(Us(a)&&!U(a)&&(a=Pe({},a)),t.style=St(a))}const i=pe(e)?1:ni(e)?128:_l(e)?64:fe(e)?4:K(e)?2:0;return f(e,t,n,s,r,i,o,!0)}function ha(e){return e?Us(e)||zo(e)?Pe({},e):e:null}function Qt(e,t,n=!1,s=!1){const{props:r,ref:o,patchFlag:i,children:l,transition:a}=e,u=t?ma(r||{},t):r,c={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&ri(u),ref:t&&t.ref?n&&o?U(o)?o.concat(Tn(t)):[o,Tn(t)]:Tn(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Y?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:a,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Qt(e.ssContent),ssFallback:e.ssFallback&&Qt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return a&&s&&qs(c,a.clone(c)),c}function ce(e=" ",t=0){return N(Qn,null,e,t)}function W(e="",t=!1){return t?(v(),ie(gt,null,e)):N(gt,null,e)}function st(e){return e==null||typeof e=="boolean"?N(gt):U(e)?N(Y,null,e.slice()):xn(e)?kt(e):N(Qn,null,String(e))}function kt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Qt(e)}function zs(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(U(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),zs(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!zo(t)?t._ctx=we:r===3&&we&&(we.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else K(t)?(t={default:t,_ctx:we},n=32):(t=String(t),s&64?(n=16,t=[ce(t)]):n=8);e.children=t,e.shapeFlag|=n}function ma(...e){const t={};for(let n=0;nEe||we;let Fn,Es;{const e=Gn(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),o=>{r.length>1?r.forEach(i=>i(o)):r[0](o)}};Fn=t("__VUE_INSTANCE_SETTERS__",n=>Ee=n),Es=t("__VUE_SSR_SETTERS__",n=>bn=n)}const Rn=e=>{const t=Ee;return Fn(e),e.scope.on(),()=>{e.scope.off(),Fn(t)}},br=()=>{Ee&&Ee.scope.off(),Fn(null)};function oi(e){return e.vnode.shapeFlag&4}let bn=!1;function xa(e,t=!1,n=!1){t&&Es(t);const{props:s,children:r}=e.vnode,o=oi(e);ea(e,s,o,t),ra(e,r,n||t);const i=o?ba(e,t):void 0;return t&&Es(!1),i}function ba(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Dl);const{setup:s}=n;if(s){dt();const r=e.setupContext=s.length>1?wa(e):null,o=Rn(e),i=Cn(s,e,0,[e.props,r]),l=Zr(i);if(ht(),o(),(l||e.sp)&&!zt(e)&&Oo(e),l){if(i.then(br,br),t)return i.then(a=>{_r(e,a)}).catch(a=>{zn(a,e,0)});e.asyncDep=i}else _r(e,i)}else ii(e)}function _r(e,t,n){K(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:fe(t)&&(e.setupState=Co(t)),ii(e)}function ii(e,t,n){const s=e.type;e.render||(e.render=s.render||rt);{const r=Rn(e);dt();try{Ll(e)}finally{ht(),r()}}}const _a={get(e,t){return Se(e,"get",""),e[t]}};function wa(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,_a),slots:e.slots,emit:e.emit,expose:t}}function Xn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Co(al(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in fn)return fn[n](e)},has(t,n){return n in t||n in fn}})):e.proxy}function ka(e,t=!0){return K(e)?e.displayName||e.name:e.name||t&&e.__name}function Ca(e){return K(e)&&"__vccOpts"in e}const oe=(e,t)=>hl(e,t,bn);function li(e,t,n){try{jn(-1);const s=arguments.length;return s===2?fe(t)&&!U(t)?xn(t)?N(e,null,[t]):N(e,t):N(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&xn(n)&&(n=[n]),N(e,t,n))}finally{jn(1)}}const Ra="3.5.25";let As;const wr=typeof window<"u"&&window.trustedTypes;if(wr)try{As=wr.createPolicy("vue",{createHTML:e=>e})}catch{}const ai=As?e=>As.createHTML(e):e=>e,Sa="http://www.w3.org/2000/svg",Ea="http://www.w3.org/1998/Math/MathML",ct=typeof document<"u"?document:null,kr=ct&&ct.createElement("template"),Aa={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?ct.createElementNS(Sa,e):t==="mathml"?ct.createElementNS(Ea,e):n?ct.createElement(e,{is:n}):ct.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>ct.createTextNode(e),createComment:e=>ct.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>ct.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,o){const i=n?n.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===o||!(r=r.nextSibling)););else{kr.innerHTML=ai(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=kr.content;if(s==="svg"||s==="mathml"){const a=l.firstChild;for(;a.firstChild;)l.appendChild(a.firstChild);l.removeChild(a)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},$a=Symbol("_vtc");function Pa(e,t,n){const s=e[$a];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Cr=Symbol("_vod"),Ta=Symbol("_vsh"),Oa=Symbol(""),Ia=/(?:^|;)\s*display\s*:/;function Na(e,t,n){const s=e.style,r=pe(n);let o=!1;if(n&&!r){if(t)if(pe(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&On(s,l,"")}else for(const i in t)n[i]==null&&On(s,i,"");for(const i in n)i==="display"&&(o=!0),On(s,i,n[i])}else if(r){if(t!==n){const i=s[Oa];i&&(n+=";"+i),s.cssText=n,o=Ia.test(n)}}else t&&e.removeAttribute("style");Cr in e&&(e[Cr]=o?s.display:"",e[Ta]&&(s.display="none"))}const Rr=/\s*!important$/;function On(e,t,n){if(U(n))n.forEach(s=>On(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Ma(e,t);Rr.test(n)?e.setProperty(Lt(s),n.replace(Rr,""),"important"):e[s]=n}}const Sr=["Webkit","Moz","ms"],us={};function Ma(e,t){const n=us[t];if(n)return n;let s=Ge(t);if(s!=="filter"&&s in e)return us[t]=s;s=Un(s);for(let r=0;rfs||(Fa.then(()=>fs=0),fs=Date.now());function Ba(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;ot(Ha(s,n.value),t,5,[s])};return n.value=e,n.attached=Va(),n}function Ha(e,t){if(U(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Or=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Ua=(e,t,n,s,r,o)=>{const i=r==="svg";t==="class"?Pa(e,s,i):t==="style"?Na(e,n,s):Vn(t)?Ns(t)||La(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Ga(e,t,s,i))?($r(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Ar(e,t,s,i,o,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!pe(s))?$r(e,Ge(t),s,o,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Ar(e,t,s,i))};function Ga(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Or(t)&&K(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Or(t)&&pe(n)?!1:t in e}const Ir=e=>{const t=e.props["onUpdate:modelValue"]||!1;return U(t)?n=>Pn(t,n):t},ds=Symbol("_assign"),qa={deep:!0,created(e,t,n){e[ds]=Ir(n),ci(e,"change",()=>{const s=e._modelValue,r=Ka(e),o=e.checked,i=e[ds];if(U(s)){const l=ro(s,r),a=l!==-1;if(o&&!a)i(s.concat(r));else if(!o&&a){const u=[...s];u.splice(l,1),i(u)}}else if(Bn(s)){const l=new Set(s);o?l.add(r):l.delete(r),i(l)}else i(ui(e,o))})},mounted:Nr,beforeUpdate(e,t,n){e[ds]=Ir(n),Nr(e,t,n)}};function Nr(e,{value:t,oldValue:n},s){e._modelValue=t;let r;if(U(t))r=ro(t,s.props.value)>-1;else if(Bn(t))r=t.has(s.props.value);else{if(t===n)return;r=qn(t,ui(e,!0))}e.checked!==r&&(e.checked=r)}function Ka(e){return"_value"in e?e._value:e.value}function ui(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const Wa=["ctrl","shift","alt","meta"],za={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Wa.some(n=>e[`${n}Key`]&&!t.includes(n))},Js=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=((r,...o)=>{for(let i=0;i{const t=Ya().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Za(s);if(!r)return;const o=t._component;!K(o)&&!o.render&&!o.template&&(o.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const i=n(r,!1,Xa(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),i},t});function Xa(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Za(e){return pe(e)?document.querySelector(e):e}const Gt=typeof document<"u";function fi(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function ec(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&fi(e.default)}const ne=Object.assign;function hs(e,t){const n={};for(const s in t){const r=t[s];n[s]=ze(r)?r.map(e):e(r)}return n}const mn=()=>{},ze=Array.isArray;function Dr(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}const di=/#/g,tc=/&/g,nc=/\//g,sc=/=/g,rc=/\?/g,hi=/\+/g,oc=/%5B/g,ic=/%5D/g,mi=/%5E/g,lc=/%60/g,gi=/%7B/g,ac=/%7C/g,pi=/%7D/g,cc=/%20/g;function Ys(e){return e==null?"":encodeURI(""+e).replace(ac,"|").replace(oc,"[").replace(ic,"]")}function uc(e){return Ys(e).replace(gi,"{").replace(pi,"}").replace(mi,"^")}function $s(e){return Ys(e).replace(hi,"%2B").replace(cc,"+").replace(di,"%23").replace(tc,"%26").replace(lc,"`").replace(gi,"{").replace(pi,"}").replace(mi,"^")}function fc(e){return $s(e).replace(sc,"%3D")}function dc(e){return Ys(e).replace(di,"%23").replace(rc,"%3F")}function hc(e){return dc(e).replace(nc,"%2F")}function _n(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const mc=/\/$/,gc=e=>e.replace(mc,"");function ms(e,t,n="/"){let s,r={},o="",i="";const l=t.indexOf("#");let a=t.indexOf("?");return a=l>=0&&a>l?-1:a,a>=0&&(s=t.slice(0,a),o=t.slice(a,l>0?l:t.length),r=e(o.slice(1))),l>=0&&(s=s||t.slice(0,l),i=t.slice(l,t.length)),s=xc(s??t,n),{fullPath:s+o+i,path:s,query:r,hash:_n(i)}}function pc(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Lr(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function yc(e,t,n){const s=t.matched.length-1,r=n.matched.length-1;return s>-1&&s===r&&Xt(t.matched[s],n.matched[r])&&yi(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Xt(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function yi(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!vc(e[n],t[n]))return!1;return!0}function vc(e,t){return ze(e)?jr(e,t):ze(t)?jr(t,e):e===t}function jr(e,t){return ze(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function xc(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),s=e.split("/"),r=s[s.length-1];(r===".."||r===".")&&s.push("");let o=n.length-1,i,l;for(i=0;i1&&o--;else break;return n.slice(0,o).join("/")+"/"+s.slice(i).join("/")}const bt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};let Ps=(function(e){return e.pop="pop",e.push="push",e})({}),gs=(function(e){return e.back="back",e.forward="forward",e.unknown="",e})({});function bc(e){if(!e)if(Gt){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),gc(e)}const _c=/^[^#]+#/;function wc(e,t){return e.replace(_c,"#")+t}function kc(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const Zn=()=>({left:window.scrollX,top:window.scrollY});function Cc(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#"),r=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!r)return;t=kc(r,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Fr(e,t){return(history.state?history.state.position-t:-1)+e}const Ts=new Map;function Rc(e,t){Ts.set(e,t)}function Sc(e){const t=Ts.get(e);return Ts.delete(e),t}function Ec(e){return typeof e=="string"||e&&typeof e=="object"}function vi(e){return typeof e=="string"||typeof e=="symbol"}let ge=(function(e){return e[e.MATCHER_NOT_FOUND=1]="MATCHER_NOT_FOUND",e[e.NAVIGATION_GUARD_REDIRECT=2]="NAVIGATION_GUARD_REDIRECT",e[e.NAVIGATION_ABORTED=4]="NAVIGATION_ABORTED",e[e.NAVIGATION_CANCELLED=8]="NAVIGATION_CANCELLED",e[e.NAVIGATION_DUPLICATED=16]="NAVIGATION_DUPLICATED",e})({});const xi=Symbol("");ge.MATCHER_NOT_FOUND+"",ge.NAVIGATION_GUARD_REDIRECT+"",ge.NAVIGATION_ABORTED+"",ge.NAVIGATION_CANCELLED+"",ge.NAVIGATION_DUPLICATED+"";function Zt(e,t){return ne(new Error,{type:e,[xi]:!0},t)}function at(e,t){return e instanceof Error&&xi in e&&(t==null||!!(e.type&t))}const Ac=["params","query","hash"];function $c(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;const t={};for(const n of Ac)n in e&&(t[n]=e[n]);return JSON.stringify(t,null,2)}function Pc(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;sr&&$s(r)):[s&&$s(s)]).forEach(r=>{r!==void 0&&(t+=(t.length?"&":"")+n,r!=null&&(t+="="+r))})}return t}function Tc(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=ze(s)?s.map(r=>r==null?null:""+r):s==null?s:""+s)}return t}const Oc=Symbol(""),Br=Symbol(""),Qs=Symbol(""),Xs=Symbol(""),Os=Symbol("");function rn(){let e=[];function t(s){return e.push(s),()=>{const r=e.indexOf(s);r>-1&&e.splice(r,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Ct(e,t,n,s,r,o=i=>i()){const i=s&&(s.enterCallbacks[r]=s.enterCallbacks[r]||[]);return()=>new Promise((l,a)=>{const u=g=>{g===!1?a(Zt(ge.NAVIGATION_ABORTED,{from:n,to:t})):g instanceof Error?a(g):Ec(g)?a(Zt(ge.NAVIGATION_GUARD_REDIRECT,{from:t,to:g})):(i&&s.enterCallbacks[r]===i&&typeof g=="function"&&i.push(g),l())},c=o(()=>e.call(s&&s.instances[r],t,n,u));let h=Promise.resolve(c);e.length<3&&(h=h.then(u)),h.catch(g=>a(g))})}function ps(e,t,n,s,r=o=>o()){const o=[];for(const i of e)for(const l in i.components){let a=i.components[l];if(!(t!=="beforeRouteEnter"&&!i.instances[l]))if(fi(a)){const u=(a.__vccOpts||a)[t];u&&o.push(Ct(u,n,s,i,l,r))}else{let u=a();o.push(()=>u.then(c=>{if(!c)throw new Error(`Couldn't resolve component "${l}" at "${i.path}"`);const h=ec(c)?c.default:c;i.mods[l]=c,i.components[l]=h;const g=(h.__vccOpts||h)[t];return g&&Ct(g,n,s,i,l,r)()}))}}return o}function Ic(e,t){const n=[],s=[],r=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;iXt(u,l))?s.push(l):n.push(l));const a=e.matched[i];a&&(t.matched.find(u=>Xt(u,a))||r.push(a))}return[n,s,r]}let Nc=()=>location.protocol+"//"+location.host;function bi(e,t){const{pathname:n,search:s,hash:r}=t,o=e.indexOf("#");if(o>-1){let i=r.includes(e.slice(o))?e.slice(o).length:1,l=r.slice(i);return l[0]!=="/"&&(l="/"+l),Lr(l,"")}return Lr(n,e)+s+r}function Mc(e,t,n,s){let r=[],o=[],i=null;const l=({state:g})=>{const y=bi(e,location),S=n.value,I=t.value;let q=0;if(g){if(n.value=y,t.value=g,i&&i===S){i=null;return}q=I?g.position-I.position:0}else s(y);r.forEach(j=>{j(n.value,S,{delta:q,type:Ps.pop,direction:q?q>0?gs.forward:gs.back:gs.unknown})})};function a(){i=n.value}function u(g){r.push(g);const y=()=>{const S=r.indexOf(g);S>-1&&r.splice(S,1)};return o.push(y),y}function c(){if(document.visibilityState==="hidden"){const{history:g}=window;if(!g.state)return;g.replaceState(ne({},g.state,{scroll:Zn()}),"")}}function h(){for(const g of o)g();o=[],window.removeEventListener("popstate",l),window.removeEventListener("pagehide",c),document.removeEventListener("visibilitychange",c)}return window.addEventListener("popstate",l),window.addEventListener("pagehide",c),document.addEventListener("visibilitychange",c),{pauseListeners:a,listen:u,destroy:h}}function Hr(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?Zn():null}}function Dc(e){const{history:t,location:n}=window,s={value:bi(e,n)},r={value:t.state};r.value||o(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(a,u,c){const h=e.indexOf("#"),g=h>-1?(n.host&&document.querySelector("base")?e:e.slice(h))+a:Nc()+e+a;try{t[c?"replaceState":"pushState"](u,"",g),r.value=u}catch(y){console.error(y),n[c?"replace":"assign"](g)}}function i(a,u){o(a,ne({},t.state,Hr(r.value.back,a,r.value.forward,!0),u,{position:r.value.position}),!0),s.value=a}function l(a,u){const c=ne({},r.value,t.state,{forward:a,scroll:Zn()});o(c.current,c,!0),o(a,ne({},Hr(s.value,a,null),{position:c.position+1},u),!1),s.value=a}return{location:s,state:r,push:l,replace:i}}function Lc(e){e=bc(e);const t=Dc(e),n=Mc(e,t.state,t.location,t.replace);function s(o,i=!0){i||n.pauseListeners(),history.go(o)}const r=ne({location:"",base:e,go:s,createHref:wc.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}function jc(e){return e=location.host?e||location.pathname+location.search:"",e.includes("#")||(e+="#"),Lc(e)}let Ot=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e})({});var ve=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e})(ve||{});const Fc={type:Ot.Static,value:""},Vc=/[a-zA-Z0-9_]/;function Bc(e){if(!e)return[[]];if(e==="/")return[[Fc]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(y){throw new Error(`ERR (${n})/"${u}": ${y}`)}let n=ve.Static,s=n;const r=[];let o;function i(){o&&r.push(o),o=[]}let l=0,a,u="",c="";function h(){u&&(n===ve.Static?o.push({type:Ot.Static,value:u}):n===ve.Param||n===ve.ParamRegExp||n===ve.ParamRegExpEnd?(o.length>1&&(a==="*"||a==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),o.push({type:Ot.Param,value:u,regexp:c,repeatable:a==="*"||a==="+",optional:a==="*"||a==="?"})):t("Invalid state to consume buffer"),u="")}function g(){u+=a}for(;lt.length?t.length===1&&t[0]===Oe.Static+Oe.Segment?1:-1:0}function _i(e,t){let n=0;const s=e.score,r=t.score;for(;n0&&t[t.length-1]<0}const Kc={strict:!1,end:!0,sensitive:!1};function Wc(e,t,n){const s=Gc(Bc(e.path),n),r=ne(s,{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function zc(e,t){const n=[],s=new Map;t=Dr(Kc,t);function r(h){return s.get(h)}function o(h,g,y){const S=!y,I=Kr(h);I.aliasOf=y&&y.record;const q=Dr(t,h),j=[I];if("alias"in h){const L=typeof h.alias=="string"?[h.alias]:h.alias;for(const ee of L)j.push(Kr(ne({},I,{components:y?y.record.components:I.components,path:ee,aliasOf:y?y.record:I})))}let D,V;for(const L of j){const{path:ee}=L;if(g&&ee[0]!=="/"){const ye=g.record.path,me=ye[ye.length-1]==="/"?"":"/";L.path=g.record.path+(ee&&me+ee)}if(D=Wc(L,g,q),y?y.alias.push(D):(V=V||D,V!==D&&V.alias.push(D),S&&h.name&&!Wr(D)&&i(h.name)),wi(D)&&a(D),I.children){const ye=I.children;for(let me=0;me{i(V)}:mn}function i(h){if(vi(h)){const g=s.get(h);g&&(s.delete(h),n.splice(n.indexOf(g),1),g.children.forEach(i),g.alias.forEach(i))}else{const g=n.indexOf(h);g>-1&&(n.splice(g,1),h.record.name&&s.delete(h.record.name),h.children.forEach(i),h.alias.forEach(i))}}function l(){return n}function a(h){const g=Qc(h,n);n.splice(g,0,h),h.record.name&&!Wr(h)&&s.set(h.record.name,h)}function u(h,g){let y,S={},I,q;if("name"in h&&h.name){if(y=s.get(h.name),!y)throw Zt(ge.MATCHER_NOT_FOUND,{location:h});q=y.record.name,S=ne(qr(g.params,y.keys.filter(V=>!V.optional).concat(y.parent?y.parent.keys.filter(V=>V.optional):[]).map(V=>V.name)),h.params&&qr(h.params,y.keys.map(V=>V.name))),I=y.stringify(S)}else if(h.path!=null)I=h.path,y=n.find(V=>V.re.test(I)),y&&(S=y.parse(I),q=y.record.name);else{if(y=g.name?s.get(g.name):n.find(V=>V.re.test(g.path)),!y)throw Zt(ge.MATCHER_NOT_FOUND,{location:h,currentLocation:g});q=y.record.name,S=ne({},g.params,h.params),I=y.stringify(S)}const j=[];let D=y;for(;D;)j.unshift(D.record),D=D.parent;return{name:q,path:I,params:S,matched:j,meta:Yc(j)}}e.forEach(h=>o(h));function c(){n.length=0,s.clear()}return{addRoute:o,resolve:u,removeRoute:i,clearRoutes:c,getRoutes:l,getRecordMatcher:r}}function qr(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function Kr(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Jc(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Jc(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function Wr(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Yc(e){return e.reduce((t,n)=>ne(t,n.meta),{})}function Qc(e,t){let n=0,s=t.length;for(;n!==s;){const o=n+s>>1;_i(e,t[o])<0?s=o:n=o+1}const r=Xc(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function Xc(e){let t=e;for(;t=t.parent;)if(wi(t)&&_i(e,t)===0)return t}function wi({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function zr(e){const t=$e(Qs),n=$e(Xs),s=oe(()=>{const a=O(e.to);return t.resolve(a)}),r=oe(()=>{const{matched:a}=s.value,{length:u}=a,c=a[u-1],h=n.matched;if(!c||!h.length)return-1;const g=h.findIndex(Xt.bind(null,c));if(g>-1)return g;const y=Jr(a[u-2]);return u>1&&Jr(c)===y&&h[h.length-1].path!==y?h.findIndex(Xt.bind(null,a[u-2])):g}),o=oe(()=>r.value>-1&&nu(n.params,s.value.params)),i=oe(()=>r.value>-1&&r.value===n.matched.length-1&&yi(n.params,s.value.params));function l(a={}){if(tu(a)){const u=t[O(e.replace)?"replace":"push"](O(e.to)).catch(mn);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>u),u}return Promise.resolve()}return{route:s,href:oe(()=>s.value.href),isActive:o,isExactActive:i,navigate:l}}function Zc(e){return e.length===1?e[0]:e}const eu=To({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:zr,setup(e,{slots:t}){const n=Wn(zr(e)),{options:s}=$e(Qs),r=oe(()=>({[Yr(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[Yr(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&Zc(t.default(n));return e.custom?o:li("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},o)}}}),Re=eu;function tu(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function nu(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!ze(r)||r.length!==s.length||s.some((o,i)=>o!==r[i]))return!1}return!0}function Jr(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Yr=(e,t,n)=>e??t??n,su=To({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=$e(Os),r=oe(()=>e.route||s.value),o=$e(Br,0),i=oe(()=>{let u=O(o);const{matched:c}=r.value;let h;for(;(h=c[u])&&!h.components;)u++;return u}),l=oe(()=>r.value.matched[i.value]);dn(Br,oe(()=>i.value+1)),dn(Oc,l),dn(Os,r);const a=ke();return Ue(()=>[a.value,l.value,e.name],([u,c,h],[g,y,S])=>{c&&(c.instances[h]=u,y&&y!==c&&u&&u===g&&(c.leaveGuards.size||(c.leaveGuards=y.leaveGuards),c.updateGuards.size||(c.updateGuards=y.updateGuards))),u&&c&&(!y||!Xt(c,y)||!g)&&(c.enterCallbacks[h]||[]).forEach(I=>I(u))},{flush:"post"}),()=>{const u=r.value,c=e.name,h=l.value,g=h&&h.components[c];if(!g)return Qr(n.default,{Component:g,route:u});const y=h.props[c],S=y?y===!0?u.params:typeof y=="function"?y(u):y:null,q=li(g,ne({},S,t,{onVnodeUnmounted:j=>{j.component.isUnmounted&&(h.instances[c]=null)},ref:a}));return Qr(n.default,{Component:q,route:u})||q}}});function Qr(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const ru=su;function ou(e){const t=zc(e.routes,e),n=e.parseQuery||Pc,s=e.stringifyQuery||Vr,r=e.history,o=rn(),i=rn(),l=rn(),a=cl(bt);let u=bt;Gt&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const c=hs.bind(null,_=>""+_),h=hs.bind(null,hc),g=hs.bind(null,_n);function y(_,M){let P,F;return vi(_)?(P=t.getRecordMatcher(_),F=M):F=_,t.addRoute(F,P)}function S(_){const M=t.getRecordMatcher(_);M&&t.removeRoute(M)}function I(){return t.getRoutes().map(_=>_.record)}function q(_){return!!t.getRecordMatcher(_)}function j(_,M){if(M=ne({},M||a.value),typeof _=="string"){const p=ms(n,_,M.path),b=t.resolve({path:p.path},M),w=r.createHref(p.fullPath);return ne(p,b,{params:g(b.params),hash:_n(p.hash),redirectedFrom:void 0,href:w})}let P;if(_.path!=null)P=ne({},_,{path:ms(n,_.path,M.path).path});else{const p=ne({},_.params);for(const b in p)p[b]==null&&delete p[b];P=ne({},_,{params:h(p)}),M.params=h(M.params)}const F=t.resolve(P,M),Q=_.hash||"";F.params=c(g(F.params));const d=pc(s,ne({},_,{hash:uc(Q),path:F.path})),m=r.createHref(d);return ne({fullPath:d,hash:Q,query:s===Vr?Tc(_.query):_.query||{}},F,{redirectedFrom:void 0,href:m})}function D(_){return typeof _=="string"?ms(n,_,a.value.path):ne({},_)}function V(_,M){if(u!==_)return Zt(ge.NAVIGATION_CANCELLED,{from:M,to:_})}function L(_){return me(_)}function ee(_){return L(ne(D(_),{replace:!0}))}function ye(_,M){const P=_.matched[_.matched.length-1];if(P&&P.redirect){const{redirect:F}=P;let Q=typeof F=="function"?F(_,M):F;return typeof Q=="string"&&(Q=Q.includes("?")||Q.includes("#")?Q=D(Q):{path:Q},Q.params={}),ne({query:_.query,hash:_.hash,params:Q.path!=null?{}:_.params},Q)}}function me(_,M){const P=u=j(_),F=a.value,Q=_.state,d=_.force,m=_.replace===!0,p=ye(P,F);if(p)return me(ne(D(p),{state:typeof p=="object"?ne({},Q,p.state):Q,force:d,replace:m}),M||P);const b=P;b.redirectedFrom=M;let w;return!d&&yc(s,F,P)&&(w=Zt(ge.NAVIGATION_DUPLICATED,{to:b,from:F}),Qe(F,F,!0,!1)),(w?Promise.resolve(w):Je(b,F)).catch(x=>at(x)?at(x,ge.NAVIGATION_GUARD_REDIRECT)?x:xt(x):te(x,b,F)).then(x=>{if(x){if(at(x,ge.NAVIGATION_GUARD_REDIRECT))return me(ne({replace:m},D(x.to),{state:typeof x.to=="object"?ne({},Q,x.to.state):Q,force:d}),M||b)}else x=Et(b,F,!0,m,Q);return vt(b,F,x),x})}function Ce(_,M){const P=V(_,M);return P?Promise.reject(P):Promise.resolve()}function yt(_){const M=Bt.values().next().value;return M&&typeof M.runWithContext=="function"?M.runWithContext(_):_()}function Je(_,M){let P;const[F,Q,d]=Ic(_,M);P=ps(F.reverse(),"beforeRouteLeave",_,M);for(const p of F)p.leaveGuards.forEach(b=>{P.push(Ct(b,_,M))});const m=Ce.bind(null,_,M);return P.push(m),Be(P).then(()=>{P=[];for(const p of o.list())P.push(Ct(p,_,M));return P.push(m),Be(P)}).then(()=>{P=ps(Q,"beforeRouteUpdate",_,M);for(const p of Q)p.updateGuards.forEach(b=>{P.push(Ct(b,_,M))});return P.push(m),Be(P)}).then(()=>{P=[];for(const p of d)if(p.beforeEnter)if(ze(p.beforeEnter))for(const b of p.beforeEnter)P.push(Ct(b,_,M));else P.push(Ct(p.beforeEnter,_,M));return P.push(m),Be(P)}).then(()=>(_.matched.forEach(p=>p.enterCallbacks={}),P=ps(d,"beforeRouteEnter",_,M,yt),P.push(m),Be(P))).then(()=>{P=[];for(const p of i.list())P.push(Ct(p,_,M));return P.push(m),Be(P)}).catch(p=>at(p,ge.NAVIGATION_CANCELLED)?p:Promise.reject(p))}function vt(_,M,P){l.list().forEach(F=>yt(()=>F(_,M,P)))}function Et(_,M,P,F,Q){const d=V(_,M);if(d)return d;const m=M===bt,p=Gt?history.state:{};P&&(F||m?r.replace(_.fullPath,ne({scroll:m&&p&&p.scroll},Q)):r.push(_.fullPath,Q)),a.value=_,Qe(_,M,P,m),xt()}let Ye;function en(){Ye||(Ye=r.listen((_,M,P)=>{if(!At.listening)return;const F=j(_),Q=ye(F,At.currentRoute.value);if(Q){me(ne(Q,{replace:!0,force:!0}),F).catch(mn);return}u=F;const d=a.value;Gt&&Rc(Fr(d.fullPath,P.delta),Zn()),Je(F,d).catch(m=>at(m,ge.NAVIGATION_ABORTED|ge.NAVIGATION_CANCELLED)?m:at(m,ge.NAVIGATION_GUARD_REDIRECT)?(me(ne(D(m.to),{force:!0}),F).then(p=>{at(p,ge.NAVIGATION_ABORTED|ge.NAVIGATION_DUPLICATED)&&!P.delta&&P.type===Ps.pop&&r.go(-1,!1)}).catch(mn),Promise.reject()):(P.delta&&r.go(-P.delta,!1),te(m,F,d))).then(m=>{m=m||Et(F,d,!1),m&&(P.delta&&!at(m,ge.NAVIGATION_CANCELLED)?r.go(-P.delta,!1):P.type===Ps.pop&&at(m,ge.NAVIGATION_ABORTED|ge.NAVIGATION_DUPLICATED)&&r.go(-1,!1)),vt(F,d,m)}).catch(mn)}))}let Ft=rn(),be=rn(),ae;function te(_,M,P){xt(_);const F=be.list();return F.length?F.forEach(Q=>Q(_,M,P)):console.error(_),Promise.reject(_)}function it(){return ae&&a.value!==bt?Promise.resolve():new Promise((_,M)=>{Ft.add([_,M])})}function xt(_){return ae||(ae=!_,en(),Ft.list().forEach(([M,P])=>_?P(_):M()),Ft.reset()),_}function Qe(_,M,P,F){const{scrollBehavior:Q}=e;if(!Gt||!Q)return Promise.resolve();const d=!P&&Sc(Fr(_.fullPath,0))||(F||!P)&&history.state&&history.state.scroll||null;return So().then(()=>Q(_,M,d)).then(m=>m&&Cc(m)).catch(m=>te(m,_,M))}const Ne=_=>r.go(_);let Vt;const Bt=new Set,At={currentRoute:a,listening:!0,addRoute:y,removeRoute:S,clearRoutes:t.clearRoutes,hasRoute:q,getRoutes:I,resolve:j,options:e,push:L,replace:ee,go:Ne,back:()=>Ne(-1),forward:()=>Ne(1),beforeEach:o.add,beforeResolve:i.add,afterEach:l.add,onError:be.add,isReady:it,install(_){_.component("RouterLink",Re),_.component("RouterView",ru),_.config.globalProperties.$router=At,Object.defineProperty(_.config.globalProperties,"$route",{enumerable:!0,get:()=>O(a)}),Gt&&!Vt&&a.value===bt&&(Vt=!0,L(r.location).catch(F=>{}));const M={};for(const F in bt)Object.defineProperty(M,F,{get:()=>a.value[F],enumerable:!0});_.provide(Qs,At),_.provide(Xs,wo(M)),_.provide(Os,a);const P=_.unmount;Bt.add(_),_.unmount=function(){Bt.delete(_),Bt.size<1&&(u=bt,Ye&&Ye(),Ye=null,a.value=bt,Vt=!1,ae=!1),P()}}};function Be(_){return _.reduce((M,P)=>M.then(()=>yt(P)),Promise.resolve())}return At}function es(e){return $e(Xs)}const iu=["aria-label"],lu={key:0,class:"fas fa-moon text-purple-400"},au={key:1,class:"fas fa-sun text-yellow-500"},cu={__name:"ThemeToggle",setup(e){const t=ke(!1);jt(()=>{const r=localStorage.getItem("theme"),o=window.matchMedia("(prefers-color-scheme: dark)").matches;t.value=r==="dark"||!r&&o,n(),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",i=>{localStorage.getItem("theme")||(t.value=i.matches,n())})}),Ue(t,()=>{n(),localStorage.setItem("theme",t.value?"dark":"light")});function n(){t.value?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")}function s(){t.value=!t.value}return(r,o)=>(v(),k("button",{onClick:s,class:"p-2 rounded-lg hover:bg-gray-200 dark:hover:bg-gray-700 transition","aria-label":t.value?"Switch to light mode":"Switch to dark mode"},[t.value?(v(),k("i",lu)):(v(),k("i",au))],8,iu))}},uu={class:"sticky top-0 z-50 glass shadow-modern"},fu={class:"container mx-auto px-4"},du={class:"flex items-center justify-between h-16"},hu={class:"hidden md:flex items-center space-x-6"},mu={class:"flex items-center space-x-4"},gu={key:0,class:"md:hidden py-4 border-t border-gray-200 dark:border-gray-700"},pu={class:"flex flex-col space-y-3"},yu={__name:"Navbar",setup(e){const t=es(),n=$e("globalData"),s=ke(!1),r=oe(()=>n.value?.Repositories||[]);return(o,i)=>(v(),k("nav",uu,[f("div",fu,[f("div",du,[N(O(Re),{to:"/",class:"flex items-center space-x-2"},{default:Z(()=>[...i[4]||(i[4]=[f("i",{class:"fas fa-rocket text-2xl gradient-text"},null,-1),f("span",{class:"text-xl font-bold gradient-text"},"Git Velocity",-1)])]),_:1}),f("div",hu,[N(O(Re),{to:"/",class:J(O(t).path==="/"?"nav-link-active":"nav-link")},{default:Z(()=>[...i[5]||(i[5]=[ce(" Dashboard ",-1)])]),_:1},8,["class"]),N(O(Re),{to:"/leaderboard",class:J(O(t).path==="/leaderboard"?"nav-link-active":"nav-link")},{default:Z(()=>[...i[6]||(i[6]=[ce(" Leaderboard ",-1)])]),_:1},8,["class"]),(v(!0),k(Y,null,xe(r.value,l=>(v(),ie(O(Re),{key:`${l.Owner}/${l.Name}`,to:`/repos/${l.Owner}/${l.Name}`,class:J(O(t).path.includes(`/repos/${l.Owner}/${l.Name}`)?"nav-link-active":"nav-link")},{default:Z(()=>[ce(R(l.Name),1)]),_:2},1032,["to","class"]))),128))]),f("div",mu,[N(cu),f("button",{onClick:i[0]||(i[0]=l=>s.value=!s.value),class:"md:hidden p-2 rounded-lg hover:bg-gray-200 dark:hover:bg-gray-700 transition"},[...i[7]||(i[7]=[f("i",{class:"fas fa-bars text-gray-700 dark:text-gray-200"},null,-1)])])])]),s.value?(v(),k("div",gu,[f("div",pu,[N(O(Re),{to:"/",onClick:i[1]||(i[1]=l=>s.value=!1),class:J(O(t).path==="/"?"nav-link-active":"nav-link")},{default:Z(()=>[...i[8]||(i[8]=[ce(" Dashboard ",-1)])]),_:1},8,["class"]),N(O(Re),{to:"/leaderboard",onClick:i[2]||(i[2]=l=>s.value=!1),class:J(O(t).path==="/leaderboard"?"nav-link-active":"nav-link")},{default:Z(()=>[...i[9]||(i[9]=[ce(" Leaderboard ",-1)])]),_:1},8,["class"]),(v(!0),k(Y,null,xe(r.value,l=>(v(),ie(O(Re),{key:`${l.Owner}/${l.Name}`,to:`/repos/${l.Owner}/${l.Name}`,onClick:i[3]||(i[3]=a=>s.value=!1),class:J(O(t).path.includes(`/repos/${l.Owner}/${l.Name}`)?"nav-link-active":"nav-link")},{default:Z(()=>[ce(R(l.Name),1)]),_:2},1032,["to","class"]))),128))])])):W("",!0)])]))}},vu={class:"py-8 px-4 mt-16 border-t border-gray-200 dark:border-gray-700"},xu={class:"container mx-auto text-center"},bu={key:0,class:"text-sm text-gray-400 dark:text-gray-500 mt-2"},_u={__name:"Footer",setup(e){const t=$e("globalData"),n=oe(()=>t.value?.GeneratedAt?new Date(t.value.GeneratedAt).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}):"");return(s,r)=>(v(),k("footer",vu,[f("div",xu,[r[0]||(r[0]=f("p",{class:"text-gray-500 dark:text-gray-400"},[ce(" Generated by "),f("a",{href:"https://github.com/lukaszraczylo/git-velocity",class:"text-primary-500 hover:text-primary-600",target:"_blank",rel:"noopener noreferrer"}," Git Velocity ")],-1)),n.value?(v(),k("p",bu,R(n.value),1)):W("",!0)])]))}},wu={class:"min-h-screen flex flex-col"},ku={class:"flex-1"},Cu={key:0,class:"flex items-center justify-center min-h-[60vh]"},Ru={key:1,class:"flex items-center justify-center min-h-[60vh]"},Su={class:"text-center"},Eu={class:"text-gray-600 dark:text-gray-400"},Au={__name:"App",setup(e){const t=ke(null),n=ke(!0),s=ke(null);return dn("globalData",t),jt(async()=>{try{const r=await fetch("./data/global.json");if(!r.ok)throw new Error("Failed to load data");t.value=await r.json()}catch(r){s.value=r.message}finally{n.value=!1}}),(r,o)=>{const i=Nl("router-view");return v(),k("div",wu,[N(yu),f("main",ku,[n.value?(v(),k("div",Cu,[...o[0]||(o[0]=[f("div",{class:"text-center"},[f("i",{class:"fas fa-spinner fa-spin text-4xl text-primary-500 mb-4"}),f("p",{class:"text-gray-600 dark:text-gray-400"},"Loading dashboard...")],-1)])])):s.value?(v(),k("div",Ru,[f("div",Su,[o[1]||(o[1]=f("i",{class:"fas fa-exclamation-triangle text-4xl text-red-500 mb-4"},null,-1)),f("p",Eu,R(s.value),1)])])):(v(),ie(i,{key:2}))]),N(_u)])}}};function z(e){return e==null?"0":e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":String(e)}function $u(e){return e==null?"-":e<1?Math.round(e*60)+"m":e<24?e.toFixed(1)+"h":(e/24).toFixed(1)+"d"}function ys(e){return e?new Date(e).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}):""}function Pu(e){return e==null?"0%":e.toFixed(1)+"%"}function ki(e){return e?e.toLowerCase().replace(/\s+/g,"-").replace(/_/g,"-").replace(/[^a-z0-9-]/g,""):""}const Tu={class:"flex items-center justify-between"},Ou={class:"text-sm text-gray-500 dark:text-gray-400 mt-1"},_e={__name:"StatCard",props:{value:{type:[Number,String],required:!0},label:{type:String,required:!0},icon:{type:String,default:""},iconColor:{type:String,default:"text-gray-500"},valueClass:{type:String,default:"gradient-text"},delay:{type:String,default:"0s"}},setup(e){return(t,n)=>(v(),k("div",{class:"card animate-fade-in-up",style:St({animationDelay:e.delay})},[f("div",Tu,[f("div",null,[f("div",{class:J(["text-3xl font-bold",e.valueClass])},R(typeof e.value=="number"?O(z)(e.value):e.value),3),f("div",Ou,R(e.label),1)]),e.icon?(v(),k("div",{key:0,class:J(["text-3xl opacity-50",e.iconColor])},[f("i",{class:J(e.icon)},null,2)],2)):W("",!0)])],4))}},Iu=["src","alt"],Sn={__name:"Avatar",props:{src:{type:String,default:""},name:{type:String,required:!0},size:{type:String,default:"md"}},setup(e){const t=e,n={sm:"w-8 h-8 text-xs",md:"w-10 h-10 text-sm",lg:"w-14 h-14 text-xl",xl:"w-16 h-16 text-2xl","2xl":"w-32 h-32 text-4xl"},s=oe(()=>t.name.charAt(0).toUpperCase()),r=oe(()=>n[t.size]||n.md);return(o,i)=>e.src?(v(),k("img",{key:0,src:e.src,alt:e.name,class:J([r.value,"rounded-full"])},null,10,Iu)):(v(),k("div",{key:1,class:J([r.value,"rounded-full bg-gradient-to-br from-primary-500 to-accent-500 flex items-center justify-center text-white font-bold"])},R(s.value),3))}},Ci={__name:"RankBadge",props:{rank:{type:Number,required:!0},size:{type:String,default:"md"}},setup(e){const t=e,n={sm:"w-6 h-6 text-xs",md:"w-8 h-8 text-sm"},s=oe(()=>t.rank===1?"rank-1":t.rank===2?"rank-2":t.rank===3?"rank-3":"bg-gray-200 dark:bg-gray-700 text-gray-600 dark:text-gray-300"),r=oe(()=>n[t.size]||n.md);return(o,i)=>(v(),k("span",{class:J([[r.value,s.value,{"text-white":e.rank<=3}],"inline-flex items-center justify-center rounded-full font-bold"])},R(e.rank),3))}},Nu={class:"inline-flex flex-col items-center gap-2"},Mu=["title"],Du={class:"absolute bottom-full left-1/2 -translate-x-1/2 mb-3 px-3 py-2 bg-gray-900 dark:bg-gray-800 text-white text-xs rounded-xl opacity-0 group-hover/badge:opacity-100 transition-all duration-200 pointer-events-none whitespace-nowrap z-50 shadow-xl border border-white/10"},Lu={class:"font-bold text-sm"},ju={class:"text-gray-300 text-[11px] mt-0.5"},Fu={key:0,class:"text-[11px] font-medium text-gray-600 dark:text-gray-400 text-center leading-tight",style:{"max-width":"72px","word-wrap":"break-word"}},wn={__name:"AchievementBadge",props:{achievementId:{type:String,required:!0},size:{type:String,default:"md"},showLabel:{type:Boolean,default:!1}},setup(e){const t={1:"from-stone-400 to-stone-500",2:"from-green-400 to-emerald-500",3:"from-blue-400 to-indigo-500",4:"from-purple-400 to-violet-500",5:"from-yellow-400 to-amber-500",6:"from-orange-400 to-red-500",7:"from-red-500 to-rose-600",8:"from-pink-500 to-fuchsia-600",9:"from-cyan-400 to-teal-500",10:"from-emerald-400 to-cyan-500",11:"from-violet-500 to-purple-600"},n=l=>{const a=[1,10,25,50,100,250,500,1e3,5e3,1e4,25e3];for(let u=a.length-1;u>=0;u--)if(l>=a[u])return u+1;return 1},s=l=>{const a=l.match(/(\d+)$/);return a?parseInt(a[1],10):l==="first-commit"||l==="pr-opener"||l==="reviewer"?1:50},r={"first-commit":{name:"Hello World",description:"Made your first commit",icon:"fa-baby"},"commit-10":{name:"Seedling",description:"Made 10 commits",icon:"fa-seedling"},"commit-25":{name:"Momentum",description:"Made 25 commits",icon:"fa-wind"},"commit-50":{name:"Trailblazer",description:"Made 50 commits",icon:"fa-hiking"},"commit-100":{name:"Centurion",description:"Made 100 commits",icon:"fa-shield-halved"},"commit-250":{name:"Relentless",description:"Made 250 commits",icon:"fa-bolt-lightning"},"commit-500":{name:"Unstoppable",description:"Made 500 commits",icon:"fa-meteor"},"commit-1000":{name:"Grandmaster",description:"Made 1000 commits",icon:"fa-chess-king"},"commit-5000":{name:"Titan",description:"Made 5000 commits",icon:"fa-mountain-sun"},"commit-10000":{name:"Immortal",description:"Made 10000 commits",icon:"fa-dragon"},"commit-25000":{name:"Ascended",description:"Made 25000 commits",icon:"fa-infinity"},"pr-opener":{name:"First Blood",description:"Opened your first pull request",icon:"fa-flag-checkered"},"pr-10":{name:"Collaborator",description:"Opened 10 pull requests",icon:"fa-handshake"},"pr-25":{name:"Integrator",description:"Opened 25 pull requests",icon:"fa-code-branch"},"pr-50":{name:"Architect",description:"Opened 50 pull requests",icon:"fa-building"},"pr-100":{name:"Vanguard",description:"Opened 100 pull requests",icon:"fa-rocket"},reviewer:{name:"Watchful Eye",description:"Reviewed your first pull request",icon:"fa-eye"},"reviewer-10":{name:"Sentinel",description:"Reviewed 10 pull requests",icon:"fa-shield"},"reviewer-25":{name:"Gatekeeper",description:"Reviewed 25 pull requests",icon:"fa-dungeon"},"reviewer-50":{name:"Oracle",description:"Reviewed 50 pull requests",icon:"fa-hat-wizard"},"reviewer-100":{name:"Sage",description:"Reviewed 100 pull requests",icon:"fa-book-skull"},"speed-demon":{name:"Lightning Rod",description:"Average review response under 1 hour",icon:"fa-bolt"},"quick-responder":{name:"Flash",description:"Average review response under 4 hours",icon:"fa-gauge-high"},commentator:{name:"Wordsmith",description:"Left 50 PR review comments",icon:"fa-feather-pointed"},"lines-1000":{name:"Scribe",description:"Added 1000 lines of code",icon:"fa-scroll"},"lines-10000":{name:"Novelist",description:"Added 10000 lines of code",icon:"fa-book"},"lines-100000":{name:"Encyclopedia",description:"Added 100000 lines of code",icon:"fa-landmark"},cleaner:{name:"Pruner",description:"Deleted 1000 lines of code",icon:"fa-scissors"},refactorer:{name:"Surgeon",description:"Deleted 10000 lines of code",icon:"fa-syringe"},annihilator:{name:"Annihilator",description:"Deleted 100000 lines of code",icon:"fa-explosion"},"multi-repo":{name:"Nomad",description:"Contributed to 5 repositories",icon:"fa-compass"},"multi-repo-10":{name:"Explorer",description:"Contributed to 10 repositories",icon:"fa-map"},"team-player":{name:"Ambassador",description:"Reviewed PRs from 10 different contributors",icon:"fa-users"},"team-player-25":{name:"Diplomat",description:"Reviewed PRs from 25 different contributors",icon:"fa-globe"},"big-pr":{name:"Heavyweight",description:"Merged a PR with 1000+ lines",icon:"fa-dumbbell"},"mega-pr":{name:"Colossus",description:"Merged a PR with 5000+ lines",icon:"fa-monument"},"small-pr-10":{name:"Minimalist",description:"Merged 10 PRs under 100 lines",icon:"fa-compress"},"small-pr-50":{name:"Atomic",description:"Merged 50 PRs under 100 lines",icon:"fa-atom"},"perfect-pr-5":{name:"Sharpshooter",description:"5 PRs merged without changes requested",icon:"fa-bullseye"},"perfect-pr-25":{name:"Perfectionist",description:"25 PRs merged without changes requested",icon:"fa-gem"},"perfect-pr-100":{name:"Immaculate",description:"100 PRs merged without changes requested",icon:"fa-crown"},"streak-7":{name:"Hot Streak",description:"7 day contribution streak",icon:"fa-fire"},"streak-30":{name:"Ironclad",description:"30 day contribution streak",icon:"fa-link"},"streak-90":{name:"Unbreakable",description:"90 day contribution streak",icon:"fa-diamond"},"early-bird":{name:"Dawn Patrol",description:"50 commits before 9am",icon:"fa-sun"},"night-owl":{name:"Nighthawk",description:"50 commits after 9pm",icon:"fa-moon"},nosferatu:{name:"Vampire",description:"25 commits between midnight and 4am",icon:"fa-ghost"},"weekend-warrior":{name:"No Days Off",description:"25 weekend commits",icon:"fa-calendar-xmark"},"active-30":{name:"Reliable",description:"Active on 30 different days",icon:"fa-calendar-check"},"active-100":{name:"Stalwart",description:"Active on 100 different days",icon:"fa-tower-observation"},"active-365":{name:"Eternal",description:"Active on 365 different days",icon:"fa-sun-plant-wilt"}},o=l=>{const a=r[l]||{name:l,description:"",icon:"fa-medal"},u=s(l),c=n(u),h=t[c]||"from-gray-400 to-gray-500";return{...a,gradient:h,tier:c,threshold:u}},i={sm:{wrapper:"w-9 h-9",icon:"text-sm",radius:"rounded-lg"},md:{wrapper:"w-11 h-11",icon:"text-base",radius:"rounded-xl"},lg:{wrapper:"w-14 h-14",icon:"text-lg",radius:"rounded-xl"}};return(l,a)=>(v(),k("div",Nu,[f("div",{class:"relative group/badge",title:o(e.achievementId).name},[f("div",{class:J(["flex items-center justify-center bg-gradient-to-br shadow-lg hover:scale-105 hover:shadow-xl transition-all duration-200 cursor-pointer",[i[e.size].wrapper,i[e.size].radius,o(e.achievementId).gradient]])},[f("i",{class:J(["fas text-white drop-shadow-sm",[o(e.achievementId).icon,i[e.size].icon]])},null,2)],2),f("div",Du,[f("div",Lu,R(o(e.achievementId).name),1),f("div",ju,R(o(e.achievementId).description),1),a[0]||(a[0]=f("div",{class:"absolute top-full left-1/2 -translate-x-1/2 border-[6px] border-transparent border-t-gray-900 dark:border-t-gray-800"},null,-1))])],8,Mu),e.showLabel?(v(),k("span",Fu,R(o(e.achievementId).name),1)):W("",!0)]))}},Vu={class:"flex items-center space-x-4"},Bu={class:"relative"},Hu={class:"flex-1"},Uu={class:"font-semibold text-gray-800 dark:text-white group-hover:text-primary-500 transition-colors"},Gu={class:"text-sm text-gray-500 dark:text-gray-400"},qu={key:0,class:"text-xs text-accent-500"},Ku={class:"text-right"},Wu={class:"text-2xl font-bold gradient-text"},zu={key:0,class:"mt-4 flex flex-wrap gap-1.5"},Ju={key:0,class:"inline-flex items-center justify-center w-8 h-8 rounded-lg bg-gray-200 dark:bg-gray-700 text-gray-600 dark:text-gray-300 text-xs font-bold"},Yu={__name:"ContributorCard",props:{contributor:{type:Object,required:!0},rank:{type:Number,default:0},showRank:{type:Boolean,default:!0},featured:{type:Boolean,default:!1}},setup(e){return(t,n)=>(v(),ie(O(Re),{to:{name:"contributor",params:{login:e.contributor.login}},class:J(["card animate-fade-in-up block cursor-pointer hover:shadow-lg transition-shadow",e.featured&&e.rank===1?"ring-2 ring-yellow-400":""])},{default:Z(()=>[f("div",Vu,[f("div",Bu,[N(Sn,{src:e.contributor.avatar_url,name:e.contributor.login,size:e.featured?"xl":"lg"},null,8,["src","name","size"]),e.showRank&&e.rank>0?(v(),ie(Ci,{key:0,rank:e.rank,size:"sm",class:"absolute -top-1 -right-1"},null,8,["rank"])):W("",!0)]),f("div",Hu,[f("h3",Uu,R(e.contributor.name||e.contributor.login),1),f("p",Gu,[f("span",{class:"hover:text-primary-500 transition-colors",onClick:n[0]||(n[0]=Js(s=>t.window.open(`https://github.com/${e.contributor.login}`,"_blank"),["stop","prevent"]))},[ce(" @"+R(e.contributor.login)+" ",1),n[1]||(n[1]=f("i",{class:"fas fa-external-link-alt text-xs ml-0.5 opacity-50"},null,-1))])]),e.contributor.team?(v(),k("p",qu,R(e.contributor.team),1)):W("",!0)]),f("div",Ku,[f("div",Wu,R(O(z)(e.contributor.score?.total||e.contributor.score||0)),1),n[2]||(n[2]=f("div",{class:"text-xs text-gray-500 dark:text-gray-400"},"points",-1))])]),e.contributor.achievements?.length?(v(),k("div",zu,[(v(!0),k(Y,null,xe(e.contributor.achievements.slice(0,6),s=>(v(),ie(wn,{key:s,"achievement-id":s,size:"sm"},null,8,["achievement-id"]))),128)),e.contributor.achievements.length>6?(v(),k("span",Ju," +"+R(e.contributor.achievements.length-6),1)):W("",!0)])):W("",!0)]),_:1},8,["to","class"]))}},Qu={class:"flex items-center justify-between mb-4"},Xu={class:"font-semibold text-gray-800 dark:text-white group-hover:text-primary-500 transition"},Zu={class:"text-sm text-gray-500 dark:text-gray-400 mb-4"},ef={class:"grid grid-cols-3 gap-4 text-center"},tf={class:"text-lg font-semibold text-gray-800 dark:text-white"},nf={class:"text-lg font-semibold text-gray-800 dark:text-white"},sf={class:"text-lg font-semibold text-gray-800 dark:text-white"},rf={__name:"RepoCard",props:{repo:{type:Object,required:!0}},setup(e){return(t,n)=>(v(),ie(O(Re),{to:`/repos/${e.repo.owner}/${e.repo.name}`,class:"card hover:shadow-lg transition group"},{default:Z(()=>[f("div",Qu,[f("h3",Xu,R(e.repo.name),1),n[0]||(n[0]=f("i",{class:"fas fa-arrow-right text-gray-400 group-hover:text-primary-500 transition"},null,-1))]),f("p",Zu,R(e.repo.owner)+"/"+R(e.repo.name),1),f("div",ef,[f("div",null,[f("div",tf,R(O(z)(e.repo.total_commits)),1),n[1]||(n[1]=f("div",{class:"text-xs text-gray-500 dark:text-gray-400"},"Commits",-1))]),f("div",null,[f("div",nf,R(O(z)(e.repo.total_prs)),1),n[2]||(n[2]=f("div",{class:"text-xs text-gray-500 dark:text-gray-400"},"PRs",-1))]),f("div",null,[f("div",sf,R(e.repo.active_contributors),1),n[3]||(n[3]=f("div",{class:"text-xs text-gray-500 dark:text-gray-400"},"Contributors",-1))])])]),_:1},8,["to"]))}},of={class:"flex items-center justify-between mb-4"},lf={class:"font-semibold text-gray-800 dark:text-white group-hover:text-primary-500 transition"},af={class:"flex items-center space-x-2 mb-4"},cf={key:0,class:"w-8 h-8 rounded-full bg-gray-200 dark:bg-gray-700 flex items-center justify-center text-gray-600 dark:text-gray-300 text-xs font-bold"},uf={class:"grid grid-cols-2 gap-4 text-center"},ff={class:"text-lg font-semibold gradient-text"},df={class:"text-lg font-semibold text-gray-800 dark:text-white"},hf={__name:"TeamCard",props:{team:{type:Object,required:!0}},setup(e){return(t,n)=>(v(),ie(O(Re),{to:`/teams/${O(ki)(e.team.name)}`,class:"card hover:shadow-lg transition group"},{default:Z(()=>[f("div",of,[f("h3",lf,R(e.team.name),1),f("span",{class:"w-3 h-3 rounded-full",style:St({backgroundColor:e.team.color||"#8b5cf6"})},null,4)]),f("div",af,[(v(!0),k(Y,null,xe((e.team.members||[]).slice(0,5),(s,r)=>(v(),ie(Sn,{key:s,name:s,size:"sm"},null,8,["name"]))),128)),(e.team.members?.length||0)>5?(v(),k("span",cf," +"+R(e.team.members.length-5),1)):W("",!0)]),f("div",uf,[f("div",null,[f("div",ff,R(O(z)(e.team.total_score)),1),n[0]||(n[0]=f("div",{class:"text-xs text-gray-500 dark:text-gray-400"},"Total Score",-1))]),f("div",null,[f("div",df,R(e.team.members?.length||0),1),n[1]||(n[1]=f("div",{class:"text-xs text-gray-500 dark:text-gray-400"},"Members",-1))])])]),_:1},8,["to"]))}},mf={class:"text-2xl font-bold text-gray-800 dark:text-white mb-6"},It={__name:"SectionHeader",props:{title:{type:String,required:!0},icon:{type:String,default:""},iconColor:{type:String,default:"text-primary-500"}},setup(e){return(t,n)=>(v(),k("h2",mf,[e.icon?(v(),k("i",{key:0,class:J([[e.icon,e.iconColor],"mr-2"])},null,2)):W("",!0),ce(R(e.title)+" ",1),Dt(t.$slots,"suffix")]))}},gf=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},pf={key:0,class:"flex items-center justify-center h-full"},yf={__name:"VelocityChart",props:{timeline:{type:Object,required:!0},height:{type:String,default:"300px"},showScore:{type:Boolean,default:!1}},setup(e){rr.register(...$i);const t=e,n=ke(null);let s=null;const r=oe(()=>t.timeline?.series?t.timeline.series.filter(u=>t.showScore||u.name!=="Score"):[]),o=oe(()=>!t.timeline?.labels||!r.value.length?{labels:[],datasets:[]}:{labels:t.timeline.labels,datasets:r.value.map(u=>({label:u.name,data:u.data,borderColor:u.color,backgroundColor:u.color+"20",fill:!0,tension:.4,pointRadius:3,pointHoverRadius:5}))}),i={responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:{legend:{position:"top",labels:{usePointStyle:!0,padding:20,font:{size:12}}},tooltip:{backgroundColor:"rgba(0, 0, 0, 0.8)",padding:12,titleFont:{size:14},bodyFont:{size:13},callbacks:{label:u=>`${u.dataset.label}: ${u.parsed.y.toLocaleString()}`}}},scales:{x:{grid:{display:!1},ticks:{font:{size:11}}},y:{beginAtZero:!0,grid:{color:"rgba(0, 0, 0, 0.05)"},ticks:{font:{size:11},callback:u=>u>=1e3?(u/1e3).toFixed(1)+"k":u}}}};function l(){if(!n.value||!o.value.labels.length)return;s&&s.destroy();const u=n.value.getContext("2d");s=new rr(u,{type:"line",data:o.value,options:i})}function a(){s?(s.data=o.value,s.update()):l()}return jt(()=>{l()}),Ue(()=>t.timeline,()=>{a()},{deep:!0}),Ue(()=>t.showScore,()=>{a()}),(u,c)=>(v(),k("div",{class:"velocity-chart",style:St({height:e.height})},[f("canvas",{ref_key:"chartRef",ref:n},null,512),e.timeline?.labels?.length?W("",!0):(v(),k("div",pf,[...c[0]||(c[0]=[f("p",{class:"text-gray-400"},"No velocity data available",-1)])]))],4))}},vf=gf(yf,[["__scopeId","data-v-401bbb13"]]),xf={class:"py-16 px-4"},bf={class:"container mx-auto text-center animate-fade-in-up"},_f={class:"flex flex-col items-center space-y-2 mt-4 text-sm text-gray-500 dark:text-gray-400"},wf={key:0},kf={key:0},Cf={key:1},Rf={key:2},Sf={key:1},Ef={key:0,class:"py-8 px-4"},Af={class:"container mx-auto"},$f={class:"card"},Pf={class:"flex items-center justify-between mb-6"},Tf={class:"flex items-center space-x-2 text-sm text-gray-600 dark:text-gray-400 cursor-pointer"},Of={class:"py-8 px-4"},If={class:"container mx-auto"},Nf={class:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-4"},Mf={class:"py-8 px-4"},Df={class:"container mx-auto"},Lf={class:"grid md:grid-cols-3 gap-6"},jf={class:"mt-6 text-center"},Ff={class:"py-8 px-4"},Vf={class:"container mx-auto"},Bf={class:"grid md:grid-cols-2 lg:grid-cols-3 gap-6"},Hf={key:1,class:"py-8 px-4"},Uf={class:"container mx-auto"},Gf={class:"grid md:grid-cols-2 lg:grid-cols-3 gap-6"},qf={__name:"Dashboard",setup(e){const t=$e("globalData"),n=oe(()=>t.value||{}),s=oe(()=>n.value.leaderboard?.slice(0,3)||[]),r=oe(()=>n.value.repositories||[]),o=oe(()=>n.value.teams||[]),i=oe(()=>n.value.velocity_timeline),l=ke(!1);return(a,u)=>(v(),k("div",null,[f("header",xf,[f("div",bf,[u[4]||(u[4]=f("h1",{class:"text-4xl md:text-6xl font-bold mb-4"},[f("span",{class:"gradient-text"},"Git Velocity")],-1)),u[5]||(u[5]=f("p",{class:"text-xl text-gray-600 dark:text-gray-300 max-w-2xl mx-auto"}," Celebrate your team's achievements and contributions with beautiful insights. ",-1)),f("div",_f,[n.value.period?.start||n.value.period?.end?(v(),k("p",wf,[u[1]||(u[1]=f("i",{class:"fas fa-calendar-alt mr-1 text-primary-500"},null,-1)),u[2]||(u[2]=f("span",{class:"font-medium"},"Period:",-1)),n.value.period.start?(v(),k("span",kf,R(O(ys)(n.value.period.start)),1)):W("",!0),n.value.period.start&&n.value.period.end?(v(),k("span",Cf," — ")):W("",!0),n.value.period.end?(v(),k("span",Rf,R(O(ys)(n.value.period.end)),1)):W("",!0)])):W("",!0),n.value.generated_at?(v(),k("p",Sf,[u[3]||(u[3]=f("i",{class:"fas fa-clock mr-1"},null,-1)),ce(" Generated on "+R(O(ys)(n.value.generated_at)),1)])):W("",!0)])])]),i.value?(v(),k("section",Ef,[f("div",Af,[f("div",$f,[f("div",Pf,[N(It,{title:"Velocity Timeline",icon:"fas fa-chart-line","icon-color":"text-primary-500"}),f("label",Tf,[xl(f("input",{type:"checkbox","onUpdate:modelValue":u[0]||(u[0]=c=>l.value=c),class:"rounded border-gray-300 text-primary-500 focus:ring-primary-500"},null,512),[[qa,l.value]]),u[6]||(u[6]=f("span",null,"Show Score",-1))])]),N(vf,{timeline:i.value,"show-score":l.value,height:"320px"},null,8,["timeline","show-score"])])])])):W("",!0),f("section",Of,[f("div",If,[f("div",Nf,[N(_e,{value:n.value.total_contributors||0,label:"Contributors",delay:"0s"},null,8,["value"]),N(_e,{value:n.value.total_commits||0,label:"Commits",delay:"0.1s"},null,8,["value"]),N(_e,{value:n.value.total_prs||0,label:"Pull Requests",delay:"0.2s"},null,8,["value"]),N(_e,{value:n.value.total_reviews||0,label:"Reviews",delay:"0.3s"},null,8,["value"]),N(_e,{value:"+"+O(z)(n.value.total_lines_added||0),label:"Lines Added","value-class":"text-green-500",delay:"0.4s"},null,8,["value"]),N(_e,{value:"-"+O(z)(n.value.total_lines_deleted||0),label:"Lines Deleted","value-class":"text-red-500",delay:"0.5s"},null,8,["value"])])])]),f("section",Mf,[f("div",Df,[N(It,{title:"Top Contributors",icon:"fas fa-trophy","icon-color":"text-yellow-500"}),f("div",Lf,[(v(!0),k(Y,null,xe(s.value,(c,h)=>(v(),ie(Yu,{key:c.login,contributor:c,rank:h+1,featured:""},null,8,["contributor","rank"]))),128))]),f("div",jf,[N(O(Re),{to:"/leaderboard",class:"btn-primary"},{default:Z(()=>[...u[7]||(u[7]=[ce(" View Full Leaderboard ",-1),f("i",{class:"fas fa-arrow-right ml-2"},null,-1)])]),_:1})])])]),f("section",Ff,[f("div",Vf,[N(It,{title:"Repositories",icon:"fas fa-code-branch","icon-color":"text-accent-500"}),f("div",Bf,[(v(!0),k(Y,null,xe(r.value,c=>(v(),ie(rf,{key:`${c.owner}/${c.name}`,repo:c},null,8,["repo"]))),128))])])]),o.value.length?(v(),k("section",Hf,[f("div",Uf,[N(It,{title:"Teams",icon:"fas fa-users","icon-color":"text-blue-500"}),f("div",Gf,[(v(!0),k(Y,null,xe(o.value,c=>(v(),ie(hf,{key:c.name,team:c},null,8,["team"]))),128))])])])):W("",!0)]))}},Kf={class:"flex items-center space-x-2 text-sm text-gray-500 dark:text-gray-400 mb-6"},Wf={key:2,class:"fas fa-chevron-right text-xs"},zf={__name:"Breadcrumb",props:{items:{type:Array,required:!0}},setup(e){return(t,n)=>(v(),k("div",Kf,[(v(!0),k(Y,null,xe(e.items,(s,r)=>(v(),k(Y,{key:r},[s.to?(v(),ie(O(Re),{key:0,to:s.to,class:"hover:text-primary-500"},{default:Z(()=>[ce(R(s.label),1)]),_:2},1032,["to"])):(v(),k("span",{key:1,class:J(r===e.items.length-1?"text-gray-800 dark:text-white":"")},R(s.label),3)),r[]},centered:{type:Boolean,default:!1}},setup(e){return(t,n)=>(v(),k("header",Jf,[f("div",{class:J(["container mx-auto",{"text-center":e.centered}])},[e.breadcrumbs.length?(v(),ie(zf,{key:0,items:e.breadcrumbs},null,8,["items"])):W("",!0),f("div",{class:J(["flex items-center",e.centered?"justify-center":""])},[Dt(t.$slots,"prefix"),f("h1",Yf,[e.icon?(v(),k("i",{key:0,class:J([[e.icon,e.iconColor],"mr-3"])},null,2)):W("",!0),f("span",Qf,R(e.title),1)])],2),e.subtitle||t.$slots.subtitle?(v(),k("p",Xf,[Dt(t.$slots,"subtitle",{},()=>[ce(R(e.subtitle),1)])])):W("",!0),Dt(t.$slots,"extra")],2)]))}},Zf={class:"card overflow-hidden p-0"},ed={class:"w-full"},td={class:"bg-gray-50 dark:bg-gray-800/50"},nd={class:"divide-y divide-gray-200 dark:divide-gray-700"},sd=["onClick"],rd={key:0,class:"text-center py-12"},od={class:"text-gray-500 dark:text-gray-400"},Ri={__name:"DataTable",props:{columns:{type:Array,required:!0},items:{type:Array,default:()=>[]},emptyIcon:{type:String,default:"fas fa-inbox"},emptyMessage:{type:String,default:"No data found"},rowClass:{type:String,default:"hover:bg-gray-50 dark:hover:bg-gray-800/30 transition"},clickableRows:{type:Boolean,default:!1}},emits:["row-click"],setup(e){const t=n=>{switch(n){case"center":return"text-center";case"right":return"text-right";default:return"text-left"}};return(n,s)=>(v(),k("div",Zf,[f("table",ed,[f("thead",td,[f("tr",null,[(v(!0),k(Y,null,xe(e.columns,r=>(v(),k("th",{key:r.key,class:J(["px-6 py-4 text-xs font-semibold text-gray-500 dark:text-gray-400 uppercase tracking-wider",t(r.align),r.headerClass])},R(r.label),3))),128))])]),f("tbody",nd,[(v(!0),k(Y,null,xe(e.items,(r,o)=>(v(),k("tr",{key:r.id||r.login||o,class:J([e.rowClass,{"cursor-pointer":e.clickableRows}]),onClick:i=>e.clickableRows&&n.$emit("row-click",r)},[(v(!0),k(Y,null,xe(e.columns,i=>(v(),k("td",{key:i.key,class:J(["px-6 py-4",t(i.align),i.class])},[Dt(n.$slots,i.key,{item:r,index:o},()=>[ce(R(r[i.key]),1)])],2))),128))],10,sd))),128))])]),e.items.length?W("",!0):(v(),k("div",rd,[f("i",{class:J([e.emptyIcon,"text-4xl text-gray-300 dark:text-gray-600 mb-4"])},null,2),f("p",od,R(e.emptyMessage),1)]))]))}},id={class:"font-medium text-gray-800 dark:text-white group-hover:text-primary-500 transition-colors"},ld={class:"text-sm"},ad=["href"],cd={key:1,class:"text-gray-500 dark:text-gray-400"},Si={__name:"ContributorRow",props:{contributor:{type:Object,required:!0},showGithubLink:{type:Boolean,default:!1},columns:{type:Array,default:()=>["commits","prs","reviews","lines","score"]}},setup(e){return(t,n)=>(v(),ie(O(Re),{to:{name:"contributor",params:{login:e.contributor.login}},class:"flex items-center space-x-3"},{default:Z(()=>[N(Sn,{src:e.contributor.avatar_url,name:e.contributor.login,class:"ring-2 ring-transparent group-hover:ring-primary-500 transition-all"},null,8,["src","name"]),f("div",null,[f("div",id,R(e.contributor.name||e.contributor.login),1),f("div",ld,[e.showGithubLink?(v(),k("a",{key:0,href:`https://github.com/${e.contributor.login}`,target:"_blank",rel:"noopener noreferrer",class:"text-gray-500 dark:text-gray-400 hover:text-primary-500 transition-colors",onClick:n[0]||(n[0]=Js(()=>{},["stop"]))},[ce(" @"+R(e.contributor.login)+" ",1),n[1]||(n[1]=f("i",{class:"fas fa-external-link-alt text-xs ml-1 opacity-50"},null,-1))],8,ad)):(v(),k("span",cd," @"+R(e.contributor.login),1))])])]),_:1},8,["to"]))}},ud={class:"py-8 px-4"},fd={class:"container mx-auto max-w-5xl"},dd={class:"flex flex-wrap gap-1.5 max-w-[180px]"},hd={key:0,class:"text-gray-400 text-sm"},md={class:"hidden md:table-cell"},gd={key:0,class:"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-purple-100 dark:bg-purple-900/30 text-purple-800 dark:text-purple-300"},pd={key:1,class:"text-gray-400"},yd={class:"hidden sm:table-cell"},vd={key:0,class:"text-sm text-gray-600 dark:text-gray-300"},xd={key:1,class:"text-gray-400"},bd={class:"text-lg font-bold gradient-text"},_d={__name:"Leaderboard",setup(e){const t=$e("globalData"),n=oe(()=>t.value?.leaderboard||[]),s=[{key:"rank",label:"Rank",align:"left"},{key:"contributor",label:"Contributor",align:"left"},{key:"achievements",label:"Achievements",align:"left"},{key:"team",label:"Team",align:"left",headerClass:"hidden md:table-cell"},{key:"category",label:"Best At",align:"left",headerClass:"hidden sm:table-cell"},{key:"score",label:"Score",align:"right"}],r=o=>({Commits:"fas fa-code-commit text-green-500",PRs:"fas fa-code-pull-request text-blue-500",Reviews:"fas fa-eye text-purple-500",Comments:"fas fa-comment text-orange-500"})[o]||"";return(o,i)=>(v(),k("div",null,[N(ts,{title:"Leaderboard",subtitle:"Top contributors ranked by their velocity score",icon:"fas fa-trophy","icon-color":"text-yellow-500",centered:""}),f("section",ud,[f("div",fd,[N(Ri,{columns:s,items:n.value,"empty-icon":"fas fa-users","empty-message":"No contributors found","row-class":"hover:bg-gray-50 dark:hover:bg-gray-800/30 transition group"},{rank:Z(({item:l})=>[N(Ci,{rank:l.rank},null,8,["rank"])]),contributor:Z(({item:l})=>[N(Si,{contributor:l,"show-github-link":""},null,8,["contributor"])]),achievements:Z(({item:l})=>[f("div",dd,[(v(!0),k(Y,null,xe((l.achievements||[]).slice(0,6),a=>(v(),ie(wn,{key:a,"achievement-id":a,size:"sm"},null,8,["achievement-id"]))),128)),(l.achievements||[]).length?W("",!0):(v(),k("span",hd,"-"))])]),team:Z(({item:l})=>[f("td",md,[l.team?(v(),k("span",gd,R(l.team),1)):(v(),k("span",pd,"-"))])]),category:Z(({item:l})=>[f("td",yd,[l.top_category?(v(),k("span",vd,[f("i",{class:J([r(l.top_category),"mr-1"])},null,2),ce(" "+R(l.top_category),1)])):(v(),k("span",xd,"-"))])]),score:Z(({item:l})=>[f("span",bd,R(O(z)(l.score)),1)]),_:1},8,["items"])])])]))}},wd={class:"flex items-center justify-center min-h-[60vh]"},kd={class:"text-center"},Cd={class:"text-gray-600 dark:text-gray-400"},Zs={__name:"LoadingState",props:{message:{type:String,default:"Loading..."}},setup(e){return(t,n)=>(v(),k("div",wd,[f("div",kd,[n[0]||(n[0]=f("i",{class:"fas fa-spinner fa-spin text-4xl text-primary-500 mb-4"},null,-1)),f("p",Cd,R(e.message),1)])]))}},Rd={class:"flex items-center justify-center min-h-[60vh]"},Sd={class:"text-center"},Ed={class:"text-gray-600 dark:text-gray-400"},er={__name:"ErrorState",props:{message:{type:String,default:"An error occurred"},icon:{type:String,default:"fas fa-exclamation-triangle"}},setup(e){return(t,n)=>(v(),k("div",Rd,[f("div",Sd,[f("i",{class:J([e.icon,"text-4xl text-red-500 mb-4"])},null,2),f("p",Ed,R(e.message),1),Dt(t.$slots,"actions")])]))}},Ad=["href"],$d={key:0,class:"fas fa-external-link-alt text-xs ml-1 opacity-50"},Ei={__name:"GithubLink",props:{url:{type:String,required:!0},label:{type:String,default:""},showIcon:{type:Boolean,default:!0}},setup(e){return(t,n)=>(v(),k("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",class:"hover:text-primary-500 transition-colors",onClick:n[0]||(n[0]=Js(()=>{},["stop"]))},[Dt(t.$slots,"default",{},()=>[ce(R(e.label),1)]),e.showIcon?(v(),k("i",$d)):W("",!0)],8,Ad))}},Pd={class:"py-8 px-4"},Td={class:"container mx-auto"},Od={class:"grid grid-cols-2 md:grid-cols-4 gap-4"},Id={class:"py-8 px-4"},Nd={class:"container mx-auto"},Md={class:"text-gray-800 dark:text-white"},Dd={class:"text-gray-800 dark:text-white"},Ld={class:"text-gray-800 dark:text-white"},jd={class:"text-green-500"},Fd={class:"text-red-500"},Vd={class:"text-lg font-bold gradient-text"},Bd={__name:"Repository",setup(e){const t=es(),n=ke(null),s=ke(!0),r=ke(null),o=oe(()=>[{label:"Dashboard",to:"/"},{label:"Repositories"},{label:n.value?.name||t.params.name}]),i=[{key:"contributor",label:"Contributor",align:"left"},{key:"commits",label:"Commits",align:"center"},{key:"prs",label:"PRs",align:"center"},{key:"reviews",label:"Reviews",align:"center"},{key:"lines",label:"Lines +/-",align:"center"},{key:"score",label:"Score",align:"right"}];async function l(){s.value=!0,r.value=null;try{const a=await fetch(`./data/repos/${t.params.owner}/${t.params.name}/metrics.json`);if(!a.ok)throw new Error("Repository not found");n.value=await a.json()}catch(a){r.value=a.message}finally{s.value=!1}}return jt(l),Ue(()=>t.params,l),(a,u)=>(v(),k("div",null,[s.value?(v(),ie(Zs,{key:0,message:"Loading repository..."})):r.value?(v(),ie(er,{key:1,message:r.value},null,8,["message"])):n.value?(v(),k(Y,{key:2},[N(ts,{title:n.value.name,icon:"fas fa-code-branch","icon-color":"text-accent-500",breadcrumbs:o.value},{subtitle:Z(()=>[N(Ei,{url:`https://github.com/${n.value.owner}/${n.value.name}`},{default:Z(()=>[ce(R(n.value.owner)+"/"+R(n.value.name),1)]),_:1},8,["url"])]),_:1},8,["title","breadcrumbs"]),f("section",Pd,[f("div",Td,[f("div",Od,[N(_e,{value:n.value.total_commits,label:"Commits",icon:"fas fa-code-commit","icon-color":"text-green-500"},null,8,["value"]),N(_e,{value:n.value.total_prs,label:"Pull Requests",icon:"fas fa-code-pull-request","icon-color":"text-blue-500"},null,8,["value"]),N(_e,{value:n.value.total_reviews,label:"Reviews",icon:"fas fa-eye","icon-color":"text-purple-500"},null,8,["value"]),N(_e,{value:n.value.active_contributors,label:"Contributors",icon:"fas fa-users","icon-color":"text-orange-500"},null,8,["value"])])])]),f("section",Id,[f("div",Nd,[N(It,{title:"Contributors",icon:"fas fa-users","icon-color":"text-blue-500"}),N(Ri,{columns:i,items:n.value.contributors,"empty-icon":"fas fa-users","empty-message":"No contributors found","row-class":"hover:bg-gray-50 dark:hover:bg-gray-800/30 transition group"},{contributor:Z(({item:c})=>[N(Si,{contributor:c},null,8,["contributor"])]),commits:Z(({item:c})=>[f("span",Md,R(O(z)(c.commit_count)),1)]),prs:Z(({item:c})=>[f("span",Dd,R(O(z)(c.prs_opened)),1)]),reviews:Z(({item:c})=>[f("span",Ld,R(O(z)(c.reviews_given)),1)]),lines:Z(({item:c})=>[f("span",jd,"+"+R(O(z)(c.lines_added)),1),u[0]||(u[0]=f("span",{class:"text-gray-400 mx-1"},"/",-1)),f("span",Fd,"-"+R(O(z)(c.lines_deleted)),1)]),score:Z(({item:c})=>[f("span",Vd,R(O(z)(c.score?.total||0)),1)]),_:1},8,["items"])])])],64)):W("",!0)]))}},Hd={class:"flex items-center space-x-4 mb-4"},Ud={class:"font-semibold text-gray-800 dark:text-white"},Gd={class:"text-sm text-gray-500 dark:text-gray-400"},qd={class:"grid grid-cols-3 gap-4 text-center mb-4"},Kd={class:"text-lg font-semibold text-gray-800 dark:text-white"},Wd={class:"text-lg font-semibold text-gray-800 dark:text-white"},zd={class:"text-lg font-semibold text-gray-800 dark:text-white"},Jd={class:"flex items-center justify-between pt-4 border-t border-gray-200 dark:border-gray-700"},Yd={class:"text-xl font-bold gradient-text"},Qd={key:0,class:"mt-4 flex flex-wrap gap-2"},Xd={key:0,class:"inline-flex items-center justify-center w-8 h-8 rounded-lg bg-gray-200 dark:bg-gray-700 text-gray-600 dark:text-gray-300 text-xs font-bold"},Zd={__name:"MemberCard",props:{member:{type:Object,required:!0},linkToProfile:{type:Boolean,default:!0}},setup(e){return(t,n)=>(v(),ie(Ml(e.linkToProfile?O(Re):"div"),{to:e.linkToProfile?{name:"contributor",params:{login:e.member.login}}:void 0,class:J(["card block",{"hover:shadow-lg transition cursor-pointer":e.linkToProfile}])},{default:Z(()=>[f("div",Hd,[N(Sn,{src:e.member.avatar_url,name:e.member.login,size:"lg"},null,8,["src","name"]),f("div",null,[f("h3",Ud,R(e.member.name||e.member.login),1),f("p",Gd,"@"+R(e.member.login),1)])]),f("div",qd,[f("div",null,[f("div",Kd,R(O(z)(e.member.commit_count)),1),n[0]||(n[0]=f("div",{class:"text-xs text-gray-500 dark:text-gray-400"},"Commits",-1))]),f("div",null,[f("div",Wd,R(O(z)(e.member.prs_opened)),1),n[1]||(n[1]=f("div",{class:"text-xs text-gray-500 dark:text-gray-400"},"PRs",-1))]),f("div",null,[f("div",zd,R(O(z)(e.member.reviews_given)),1),n[2]||(n[2]=f("div",{class:"text-xs text-gray-500 dark:text-gray-400"},"Reviews",-1))])]),f("div",Jd,[n[3]||(n[3]=f("span",{class:"text-sm text-gray-500 dark:text-gray-400"},"Score",-1)),f("span",Yd,R(O(z)(e.member.score?.total||0)),1)]),e.member.achievements?.length?(v(),k("div",Qd,[(v(!0),k(Y,null,xe(e.member.achievements.slice(0,4),s=>(v(),ie(wn,{key:s,"achievement-id":s,size:"sm"},null,8,["achievement-id"]))),128)),e.member.achievements.length>4?(v(),k("span",Xd," +"+R(e.member.achievements.length-4),1)):W("",!0)])):W("",!0)]),_:1},8,["to","class"]))}},eh={class:"py-8 px-4"},th={class:"container mx-auto"},nh={class:"grid grid-cols-2 md:grid-cols-4 gap-4"},sh={class:"py-8 px-4"},rh={class:"container mx-auto"},oh={class:"grid md:grid-cols-2 lg:grid-cols-3 gap-6"},ih={__name:"Team",setup(e){const t=es(),n=$e("globalData"),s=ke(null),r=ke(!0),o=ke(null),i=oe(()=>[{label:"Dashboard",to:"/"},{label:"Teams"},{label:s.value?.name||t.params.slug}]);function l(){r.value=!0,o.value=null;const u=(n.value?.teams||[]).find(c=>ki(c.name)===t.params.slug);u?s.value=u:o.value="Team not found",r.value=!1}return jt(l),Ue(()=>t.params,l),Ue(n,l),(a,u)=>(v(),k("div",null,[r.value?(v(),ie(Zs,{key:0,message:"Loading team..."})):o.value?(v(),ie(er,{key:1,message:o.value},null,8,["message"])):s.value?(v(),k(Y,{key:2},[N(ts,{title:s.value.name,breadcrumbs:i.value,subtitle:`${s.value.members?.length||0} team members`},{prefix:Z(()=>[f("div",{class:"w-4 h-4 rounded-full mr-4",style:St({backgroundColor:s.value.color||"#8b5cf6"})},null,4)]),_:1},8,["title","breadcrumbs","subtitle"]),f("section",eh,[f("div",th,[f("div",nh,[N(_e,{value:s.value.total_score,label:"Total Score",icon:"fas fa-star","icon-color":"text-yellow-500"},null,8,["value"]),N(_e,{value:s.value.aggregated_metrics?.commit_count||0,label:"Commits",icon:"fas fa-code-commit","icon-color":"text-green-500"},null,8,["value"]),N(_e,{value:s.value.aggregated_metrics?.prs_merged||0,label:"PRs Merged",icon:"fas fa-code-merge","icon-color":"text-purple-500"},null,8,["value"]),N(_e,{value:s.value.aggregated_metrics?.reviews_given||0,label:"Reviews",icon:"fas fa-eye","icon-color":"text-blue-500"},null,8,["value"])])])]),f("section",sh,[f("div",rh,[N(It,{title:"Team Members",icon:"fas fa-users","icon-color":"text-blue-500"}),f("div",oh,[(v(!0),k(Y,null,xe(s.value.member_metrics,c=>(v(),ie(Zd,{key:c.login,member:c},null,8,["member"]))),128))])])])],64)):W("",!0)]))}},lh={class:"space-y-3"},ah={class:"flex items-start justify-between mb-3"},ch={class:"flex items-center space-x-3"},uh={class:"text-sm font-semibold text-gray-800 dark:text-white"},fh={class:"flex items-center space-x-2 text-xs text-gray-500 dark:text-gray-400"},dh={class:"font-medium"},hh={class:"text-right"},mh={class:"text-gray-500 dark:text-gray-400 font-medium"},gh={class:"text-xs text-gray-500 dark:text-gray-400 mt-0.5"},ph={class:"h-2.5 bg-gray-200 dark:bg-gray-700 rounded-full overflow-hidden"},yh={class:"flex items-center justify-between mt-1.5"},vh={class:"flex items-center space-x-1"},xh=["title"],bh={key:0,class:"text-[10px] text-gray-400"},_h={key:0,class:"text-center text-xs text-gray-500 dark:text-gray-400 pt-2"},wh={key:1,class:"text-center py-8 text-gray-500 dark:text-gray-400"},kh={__name:"AchievementProgress",props:{contributor:{type:Object,required:!0},showEarned:{type:Boolean,default:!1},maxDisplay:{type:Number,default:6}},setup(e){const t=e,n=[1,10,25,50,100,250,500,1e3,5e3,1e4,25e3],s={1:"from-stone-400 to-stone-500",2:"from-green-400 to-emerald-500",3:"from-blue-400 to-indigo-500",4:"from-purple-400 to-violet-500",5:"from-yellow-400 to-amber-500",6:"from-orange-400 to-red-500",7:"from-red-500 to-rose-600",8:"from-pink-500 to-fuchsia-600",9:"from-cyan-400 to-teal-500",10:"from-emerald-400 to-cyan-500",11:"from-violet-500 to-purple-600"},r={1:"bg-stone-500",2:"bg-green-500",3:"bg-blue-500",4:"bg-purple-500",5:"bg-yellow-500",6:"bg-orange-500",7:"bg-red-500",8:"bg-pink-500",9:"bg-cyan-500",10:"bg-emerald-500",11:"bg-violet-500"},o=[{category:"Commits",icon:"fa-code-commit",iconColor:"text-green-500",getValue:c=>c.commit_count||0,achievements:[{id:"first-commit",threshold:1,name:"First Steps"},{id:"commit-10",threshold:10,name:"Getting Started"},{id:"commit-25",threshold:25,name:"Warming Up"},{id:"commit-50",threshold:50,name:"On A Roll"},{id:"commit-100",threshold:100,name:"Committed"},{id:"commit-250",threshold:250,name:"Dedicated"},{id:"commit-500",threshold:500,name:"Code Machine"},{id:"commit-1000",threshold:1e3,name:"Code Warrior"},{id:"commit-5000",threshold:5e3,name:"Legendary"},{id:"commit-10000",threshold:1e4,name:"Mythical"},{id:"commit-25000",threshold:25e3,name:"Transcendent"}]},{category:"Pull Requests",icon:"fa-code-pull-request",iconColor:"text-blue-500",getValue:c=>c.prs_opened||0,achievements:[{id:"pr-opener",threshold:1,name:"PR Pioneer"},{id:"pr-10",threshold:10,name:"Pull Request Pro"},{id:"pr-25",threshold:25,name:"PR Regular"},{id:"pr-50",threshold:50,name:"Merge Master"},{id:"pr-100",threshold:100,name:"PR Champion"}]},{category:"Reviews",icon:"fa-eye",iconColor:"text-purple-500",getValue:c=>c.reviews_given||0,achievements:[{id:"reviewer",threshold:1,name:"Code Reviewer"},{id:"reviewer-10",threshold:10,name:"Review Starter"},{id:"reviewer-25",threshold:25,name:"Review Regular"},{id:"reviewer-50",threshold:50,name:"Review Expert"},{id:"reviewer-100",threshold:100,name:"Review Guru"}]},{category:"Lines Added",icon:"fa-plus",iconColor:"text-emerald-500",getValue:c=>c.lines_added||0,achievements:[{id:"lines-1000",threshold:1e3,name:"Thousand Lines"},{id:"lines-10000",threshold:1e4,name:"Ten Thousand"}]},{category:"Lines Deleted",icon:"fa-minus",iconColor:"text-red-500",getValue:c=>c.lines_deleted||0,achievements:[{id:"cleaner",threshold:1e3,name:"Code Cleaner"},{id:"refactorer",threshold:1e4,name:"Refactoring Champion"}]},{category:"Small PRs",icon:"fa-compress",iconColor:"text-cyan-500",getValue:c=>c.small_pr_count||0,achievements:[{id:"small-pr-10",threshold:10,name:"Small PR Advocate"},{id:"small-pr-50",threshold:50,name:"Atomic Commits Hero"}]},{category:"Perfect PRs",icon:"fa-gem",iconColor:"text-pink-500",getValue:c=>c.perfect_prs||0,achievements:[{id:"perfect-pr-5",threshold:5,name:"Clean Code"},{id:"perfect-pr-25",threshold:25,name:"Flawless"}]},{category:"Active Days",icon:"fa-calendar-check",iconColor:"text-orange-500",getValue:c=>c.active_days||0,achievements:[{id:"active-30",threshold:30,name:"Consistent Contributor"},{id:"active-100",threshold:100,name:"Dedicated Developer"}]},{category:"Streak",icon:"fa-fire",iconColor:"text-amber-500",getValue:c=>c.longest_streak||0,achievements:[{id:"streak-7",threshold:7,name:"Week Warrior"},{id:"streak-30",threshold:30,name:"Month Master"}]}],i=c=>{for(let h=n.length-1;h>=0;h--)if(c>=n[h])return h+1;return 1},l=c=>c.map(h=>({threshold:h.threshold,name:h.name,tier:i(h.threshold)})),a=oe(()=>{const c=new Set(t.contributor.achievements||[]),h=[];for(const g of o){const y=g.getValue(t.contributor);let S=null,I=null;const q=l(g.achievements);for(const Ce of g.achievements)y>=Ce.threshold?I=Ce:S||(S=Ce);if(!S)continue;const j=I?I.threshold:0,D=S.threshold-j,V=y-j,L=Math.min(100,Math.max(0,Math.round(V/D*100))),ee=i(S.threshold),ye=q.findIndex(Ce=>Ce.threshold===S.threshold),me=q.length;h.push({category:g.category,icon:g.icon,iconColor:g.iconColor,currentValue:y,target:S.threshold,name:S.name,id:S.id,progress:L,tier:ee,tierIndex:ye+1,totalTiers:me,allTiers:q,gradient:s[ee],progressColor:r[ee],isClose:L>=75,remaining:S.threshold-y,isEarned:c.has(S.id)})}return h.sort((g,y)=>y.progress-g.progress),h.slice(0,t.maxDisplay)}),u=oe(()=>{new Set(t.contributor.achievements||[]);let c=0;for(const h of o){const g=h.getValue(t.contributor);for(const y of h.achievements)g(v(),k("div",lh,[(v(!0),k(Y,null,xe(a.value,g=>(v(),k("div",{key:g.id,class:"bg-gray-50 dark:bg-gray-800/50 rounded-xl p-4 hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors"},[f("div",ah,[f("div",ch,[f("div",{class:J(["w-10 h-10 rounded-lg bg-gradient-to-br flex items-center justify-center shadow-md",g.gradient])},[f("i",{class:J(["fas text-white text-sm",g.icon])},null,2)],2),f("div",null,[f("div",uh,R(g.name),1),f("div",fh,[f("span",null,R(g.category),1),h[0]||(h[0]=f("span",{class:"text-gray-300 dark:text-gray-600"},"•",-1)),f("span",dh,"Tier "+R(g.tierIndex)+"/"+R(g.totalTiers),1)])])]),f("div",hh,[f("div",{class:J(["text-sm font-bold",g.isClose?"text-green-500":"text-gray-700 dark:text-gray-200"])},[ce(R(O(z)(g.currentValue))+" ",1),h[1]||(h[1]=f("span",{class:"text-gray-400 dark:text-gray-500 font-normal"},"/",-1)),f("span",mh,R(O(z)(g.target)),1)],2),f("div",gh,R(g.remaining>0?`${O(z)(g.remaining)} to go`:"Ready to claim!"),1)])]),f("div",ph,[f("div",{class:J(["h-full rounded-full transition-all duration-500 ease-out",g.progressColor]),style:St({width:`${g.progress}%`})},null,6)]),f("div",yh,[f("div",vh,[(v(!0),k(Y,null,xe(g.allTiers.slice(0,5),(y,S)=>(v(),k("span",{key:y.threshold,class:J(["w-1.5 h-1.5 rounded-full",S5?(v(),k("span",bh,"+"+R(g.totalTiers-5),1)):W("",!0)]),f("span",{class:J(["text-xs font-semibold",g.isClose?"text-green-500":"text-gray-400 dark:text-gray-500"])},R(g.progress)+"% ",3)])]))),128)),u.value>0?(v(),k("div",_h," +"+R(u.value)+" more achievements to unlock ",1)):W("",!0),a.value.length?W("",!0):(v(),k("div",wh,[...h[2]||(h[2]=[f("div",{class:"w-16 h-16 mx-auto mb-3 rounded-2xl bg-gradient-to-br from-yellow-400 to-amber-500 flex items-center justify-center shadow-lg"},[f("i",{class:"fas fa-trophy text-2xl text-white"})],-1),f("p",{class:"font-medium text-gray-700 dark:text-gray-300"},"All achievements unlocked!",-1),f("p",{class:"text-sm mt-1"},"You're a legend!",-1)])]))]))}},Ch={class:"py-12 px-4"},Rh={class:"container mx-auto"},Sh={class:"flex flex-col md:flex-row items-center md:items-start space-y-4 md:space-y-0 md:space-x-8"},Eh={class:"text-center md:text-left"},Ah={class:"text-4xl font-bold gradient-text"},$h={class:"text-xl text-gray-500 dark:text-gray-400 mt-1"},Ph={class:"flex items-center justify-center md:justify-start space-x-4 mt-4"},Th={class:"score-card rounded-lg px-4 py-2"},Oh={class:"text-2xl font-bold gradient-text ml-2"},Ih={key:0,class:"text-sm text-gray-500 dark:text-gray-400"},Nh={key:0},Mh={key:0,class:"mt-6 flex flex-wrap justify-center md:justify-start gap-3"},Dh={class:"py-8 px-4"},Lh={class:"container mx-auto"},jh={class:"grid grid-cols-2 md:grid-cols-4 gap-4"},Fh={class:"py-8 px-4"},Vh={class:"container mx-auto"},Bh={class:"grid md:grid-cols-2 gap-6"},Hh={class:"card"},Uh={class:"space-y-4"},Gh={class:"flex items-center justify-between"},qh={class:"text-green-500 font-semibold"},Kh={class:"flex items-center justify-between"},Wh={class:"text-red-500 font-semibold"},zh={class:"flex items-center justify-between"},Jh={class:"text-gray-800 dark:text-white font-semibold"},Yh={key:0,class:"flex items-center justify-between"},Qh={class:"text-gray-800 dark:text-white font-semibold"},Xh={class:"card"},Zh={class:"space-y-4"},em={class:"flex items-center justify-between"},tm={class:"text-gray-800 dark:text-white font-semibold"},nm={class:"flex items-center justify-between"},sm={class:"text-green-500 font-semibold"},rm={class:"flex items-center justify-between"},om={class:"text-orange-500 font-semibold"},im={class:"flex items-center justify-between"},lm={class:"text-gray-800 dark:text-white font-semibold"},am={key:0,class:"flex items-center justify-between"},cm={class:"text-gray-800 dark:text-white font-semibold"},um={key:0,class:"py-8 px-4"},fm={class:"container mx-auto"},dm={class:"card"},hm={class:"grid grid-cols-2 md:grid-cols-5 gap-4"},mm={class:"text-center p-4 rounded-lg bg-gray-50 dark:bg-gray-800/50"},gm={class:"text-2xl font-bold text-green-500"},pm={class:"text-center p-4 rounded-lg bg-gray-50 dark:bg-gray-800/50"},ym={class:"text-2xl font-bold text-blue-500"},vm={class:"text-center p-4 rounded-lg bg-gray-50 dark:bg-gray-800/50"},xm={class:"text-2xl font-bold text-purple-500"},bm={class:"text-center p-4 rounded-lg bg-gray-50 dark:bg-gray-800/50"},_m={class:"text-2xl font-bold text-orange-500"},wm={class:"text-center p-4 rounded-lg bg-gray-50 dark:bg-gray-800/50"},km={class:"text-2xl font-bold text-yellow-500"},Cm={class:"py-8 px-4"},Rm={class:"container mx-auto"},Sm={class:"grid md:grid-cols-2 gap-6"},Em={key:0,class:"card"},Am={class:"flex items-center justify-between mb-6"},$m={class:"px-2.5 py-1 rounded-full bg-gradient-to-r from-yellow-400 to-amber-500 text-white text-sm font-bold shadow-md"},Pm={class:"grid grid-cols-4 sm:grid-cols-5 gap-3"},Tm={class:"card"},Om={key:1,class:"py-8 px-4"},Im={class:"container mx-auto"},Nm={class:"flex flex-wrap gap-2"},Mm={__name:"Contributor",setup(e){const t=es(),n=$e("globalData"),s=ke(null),r=ke(!0),o=ke(null),i=oe(()=>[{label:"Dashboard",to:"/"},{label:"Contributors"},{label:s.value?.login||t.params.login}]);async function l(){r.value=!0,o.value=null;const a=t.params.login;try{const u=await fetch(`./data/contributors/${a}.json`);if(u.ok){const c=await u.json(),g=(n.value?.leaderboard||[]).find(y=>y.login===a);g&&(c.score={total:g.score,rank:g.rank,breakdown:c.score?.breakdown},c.achievements=g.achievements),s.value=c}else{let h=(n.value?.leaderboard||[]).find(g=>g.login===a);if(!h){const g=n.value?.repositories||[];for(const y of g){const S=y.contributors?.find(I=>I.login===a);if(S){h=S;break}}}h?s.value=h:o.value="Contributor not found"}}catch(u){o.value=`Failed to load contributor: ${u.message}`}r.value=!1}return jt(l),Ue(()=>t.params,l),Ue(n,l),(a,u)=>(v(),k("div",null,[r.value?(v(),ie(Zs,{key:0,message:"Loading contributor..."})):o.value?(v(),ie(er,{key:1,message:o.value},null,8,["message"])):s.value?(v(),k(Y,{key:2},[f("header",Ch,[f("div",Rh,[N(ts,{breadcrumbs:i.value,title:""},null,8,["breadcrumbs"]),f("div",Sh,[N(Sn,{src:s.value.avatar_url,name:s.value.login,size:"2xl",class:"shadow-modern"},null,8,["src","name"]),f("div",Eh,[f("h1",Ah,R(s.value.name||s.value.login),1),f("p",$h,[N(Ei,{url:`https://github.com/${s.value.login}`},{default:Z(()=>[ce(" @"+R(s.value.login),1)]),_:1},8,["url"])]),f("div",Ph,[f("div",Th,[u[0]||(u[0]=f("span",{class:"text-sm text-gray-500 dark:text-gray-400"},"Score:",-1)),f("span",Oh,R(O(z)(s.value.score?.total||s.value.score||0)),1)]),s.value.score?.rank?(v(),k("div",Ih,[ce(" Rank #"+R(s.value.score.rank)+" ",1),s.value.score?.percentile_rank?(v(),k("span",Nh," (Top "+R(O(Pu)(s.value.score.percentile_rank))+") ",1)):W("",!0)])):W("",!0)]),s.value.achievements?.length?(v(),k("div",Mh,[(v(!0),k(Y,null,xe(s.value.achievements,c=>(v(),ie(wn,{key:c,"achievement-id":c,size:"lg","show-label":""},null,8,["achievement-id"]))),128))])):W("",!0)])])])]),f("section",Dh,[f("div",Lh,[f("div",jh,[N(_e,{value:s.value.commit_count||0,label:"Commits",icon:"fas fa-code-commit","icon-color":"text-green-500"},null,8,["value"]),N(_e,{value:s.value.prs_opened||0,label:"PRs Opened",icon:"fas fa-code-pull-request","icon-color":"text-blue-500"},null,8,["value"]),N(_e,{value:s.value.prs_merged||0,label:"PRs Merged",icon:"fas fa-code-merge","icon-color":"text-purple-500"},null,8,["value"]),N(_e,{value:s.value.reviews_given||0,label:"Reviews Given",icon:"fas fa-eye","icon-color":"text-orange-500"},null,8,["value"])])])]),f("section",Fh,[f("div",Vh,[f("div",Bh,[f("div",Hh,[u[5]||(u[5]=f("h3",{class:"text-lg font-semibold text-gray-800 dark:text-white mb-4"},[f("i",{class:"fas fa-code text-green-500 mr-2"}),ce("Code Contributions ")],-1)),f("div",Uh,[f("div",Gh,[u[1]||(u[1]=f("span",{class:"text-gray-600 dark:text-gray-300"},"Lines Added",-1)),f("span",qh," +"+R(O(z)(s.value.lines_added||0)),1)]),f("div",Kh,[u[2]||(u[2]=f("span",{class:"text-gray-600 dark:text-gray-300"},"Lines Deleted",-1)),f("span",Wh," -"+R(O(z)(s.value.lines_deleted||0)),1)]),f("div",zh,[u[3]||(u[3]=f("span",{class:"text-gray-600 dark:text-gray-300"},"Files Changed",-1)),f("span",Jh,R(O(z)(s.value.files_changed||0)),1)]),s.value.avg_pr_size?(v(),k("div",Yh,[u[4]||(u[4]=f("span",{class:"text-gray-600 dark:text-gray-300"},"Avg PR Size",-1)),f("span",Qh,R(O(z)(Math.round(s.value.avg_pr_size)))+" lines ",1)])):W("",!0)])]),f("div",Xh,[u[11]||(u[11]=f("h3",{class:"text-lg font-semibold text-gray-800 dark:text-white mb-4"},[f("i",{class:"fas fa-comments text-purple-500 mr-2"}),ce("Review Activity ")],-1)),f("div",Zh,[f("div",em,[u[6]||(u[6]=f("span",{class:"text-gray-600 dark:text-gray-300"},"Reviews Given",-1)),f("span",tm,R(O(z)(s.value.reviews_given||0)),1)]),f("div",nm,[u[7]||(u[7]=f("span",{class:"text-gray-600 dark:text-gray-300"},"Approvals",-1)),f("span",sm,R(O(z)(s.value.approvals_given||0)),1)]),f("div",rm,[u[8]||(u[8]=f("span",{class:"text-gray-600 dark:text-gray-300"},"Changes Requested",-1)),f("span",om,R(O(z)(s.value.changes_requested||0)),1)]),f("div",im,[u[9]||(u[9]=f("span",{class:"text-gray-600 dark:text-gray-300"},"Review Comments",-1)),f("span",lm,R(O(z)(s.value.review_comments||0)),1)]),s.value.avg_review_time_hours?(v(),k("div",am,[u[10]||(u[10]=f("span",{class:"text-gray-600 dark:text-gray-300"},"Avg Review Time",-1)),f("span",cm,R(O($u)(s.value.avg_review_time_hours)),1)])):W("",!0)])])])])]),s.value.score?.breakdown?(v(),k("section",um,[f("div",fm,[f("div",dm,[u[17]||(u[17]=f("h3",{class:"text-lg font-semibold text-gray-800 dark:text-white mb-4"},[f("i",{class:"fas fa-chart-pie gradient-text mr-2"}),ce("Score Breakdown ")],-1)),f("div",hm,[f("div",mm,[f("div",gm,R(O(z)(s.value.score.breakdown.commits||0)),1),u[12]||(u[12]=f("div",{class:"text-xs text-gray-500 dark:text-gray-400 mt-1"},"Commits",-1))]),f("div",pm,[f("div",ym,R(O(z)(s.value.score.breakdown.prs||0)),1),u[13]||(u[13]=f("div",{class:"text-xs text-gray-500 dark:text-gray-400 mt-1"},"PRs",-1))]),f("div",vm,[f("div",xm,R(O(z)(s.value.score.breakdown.reviews||0)),1),u[14]||(u[14]=f("div",{class:"text-xs text-gray-500 dark:text-gray-400 mt-1"},"Reviews",-1))]),f("div",bm,[f("div",_m,R(O(z)(s.value.score.breakdown.line_changes||0)),1),u[15]||(u[15]=f("div",{class:"text-xs text-gray-500 dark:text-gray-400 mt-1"},"Line Changes",-1))]),f("div",wm,[f("div",km,R(O(z)(s.value.score.breakdown.response_bonus||0)),1),u[16]||(u[16]=f("div",{class:"text-xs text-gray-500 dark:text-gray-400 mt-1"},"Response Bonus",-1))])])])])])):W("",!0),f("section",Cm,[f("div",Rm,[f("div",Sm,[s.value.achievements?.length?(v(),k("div",Em,[f("div",Am,[u[18]||(u[18]=f("h3",{class:"text-lg font-semibold text-gray-800 dark:text-white"},[f("i",{class:"fas fa-award gradient-text mr-2"}),ce("Achievements Earned ")],-1)),f("span",$m,R(s.value.achievements.length),1)]),f("div",Pm,[(v(!0),k(Y,null,xe(s.value.achievements,c=>(v(),k("div",{key:c,class:"flex flex-col items-center p-2 rounded-xl bg-gray-50 dark:bg-gray-800/50 hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors"},[N(wn,{"achievement-id":c,size:"md","show-label":""},null,8,["achievement-id"])]))),128))])])):W("",!0),f("div",Tm,[u[19]||(u[19]=f("h3",{class:"text-lg font-semibold text-gray-800 dark:text-white mb-6"},[f("i",{class:"fas fa-chart-line text-primary-500 mr-2"}),ce("Next Achievements ")],-1)),N(kh,{contributor:s.value,"max-display":6},null,8,["contributor"])])])])]),s.value.repositories_contributed?.length?(v(),k("section",Om,[f("div",Im,[N(It,{title:`Contributed to ${s.value.repositories_contributed.length} Repositories`,icon:"fas fa-folder-tree","icon-color":"text-blue-500"},null,8,["title"]),f("div",Nm,[(v(!0),k(Y,null,xe(s.value.repositories_contributed,c=>(v(),ie(O(Re),{key:c,to:`/repos/${c}`,class:"inline-flex items-center px-3 py-1.5 rounded-full text-sm bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-300 hover:bg-primary-100 dark:hover:bg-primary-900/30 hover:text-primary-700 dark:hover:text-primary-300 transition-colors"},{default:Z(()=>[u[20]||(u[20]=f("i",{class:"fas fa-code-branch text-gray-400 mr-2"},null,-1)),ce(" "+R(c),1)]),_:2},1032,["to"]))),128))])])])):W("",!0)],64)):W("",!0)]))}},Dm=[{path:"/",name:"dashboard",component:qf},{path:"/leaderboard",name:"leaderboard",component:_d},{path:"/repos/:owner/:name",name:"repository",component:Bd},{path:"/teams/:slug",name:"team",component:ih},{path:"/contributors/:login",name:"contributor",component:Mm}],Lm=ou({history:jc(),routes:Dm,scrollBehavior(){return{top:0}}}),Ai=Qa(Au);Ai.use(Lm);Ai.mount("#app"); diff --git a/internal/generator/site/dist/assets/index-CmyGiR94.css b/internal/generator/site/dist/assets/index-CmyGiR94.css deleted file mode 100644 index 8805297..0000000 --- a/internal/generator/site/dist/assets/index-CmyGiR94.css +++ /dev/null @@ -1 +0,0 @@ -@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-500:oklch(63.7% .237 25.331);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-amber-500:oklch(76.9% .188 70.08);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-teal-500:oklch(70.4% .14 182.503);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-500:oklch(71.5% .143 215.221);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-indigo-500:oklch(58.5% .233 277.117);--color-violet-500:oklch(60.6% .25 292.717);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-300:oklch(82.7% .119 306.383);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-600:oklch(55.8% .288 302.321);--color-purple-800:oklch(43.8% .218 303.724);--color-purple-900:oklch(38.1% .176 304.987);--color-fuchsia-600:oklch(59.1% .293 322.896);--color-pink-500:oklch(65.6% .241 354.308);--color-rose-600:oklch(58.6% .253 17.585);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-stone-400:oklch(70.9% .01 56.259);--color-stone-500:oklch(55.3% .013 58.071);--color-white:#fff;--spacing:.25rem;--container-2xl:42rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--text-6xl:3.75rem;--text-6xl--line-height:1;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wider:.05em;--leading-tight:1.25;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--drop-shadow-sm:0 1px 2px #00000026;--ease-out:cubic-bezier(0,0,.2,1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-primary-100:#fce7f3;--color-primary-300:#f9a8d4;--color-primary-400:#f472b6;--color-primary-500:#ec4899;--color-primary-600:#db2777;--color-primary-700:#be185d;--color-primary-900:#831843;--color-accent-400:#c084fc;--color-accent-500:#a855f7;--color-accent-600:#9333ea;--animate-fade-in-up:fadeInUp .6s ease-out}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.-top-1{top:calc(var(--spacing)*-1)}.top-0{top:calc(var(--spacing)*0)}.top-full{top:100%}.-right-1{right:calc(var(--spacing)*-1)}.bottom-full{bottom:100%}.left-1\/2{left:50%}.z-50{z-index:50}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mx-1{margin-inline:calc(var(--spacing)*1)}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-1\.5{margin-top:calc(var(--spacing)*1.5)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-16{margin-top:calc(var(--spacing)*16)}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-2{margin-right:calc(var(--spacing)*2)}.mr-3{margin-right:calc(var(--spacing)*3)}.mr-4{margin-right:calc(var(--spacing)*4)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.ml-0\.5{margin-left:calc(var(--spacing)*.5)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left:calc(var(--spacing)*2)}.btn-primary{background-image:linear-gradient(to right,var(--color-primary-500),var(--color-accent-500));color:#fff;border-radius:.5rem;align-items:center;padding:.75rem 1.5rem;font-weight:500;transition:all .2s;display:inline-flex;box-shadow:0 10px 40px -10px #00000026}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-11{height:calc(var(--spacing)*11)}.h-14{height:calc(var(--spacing)*14)}.h-16{height:calc(var(--spacing)*16)}.h-32{height:calc(var(--spacing)*32)}.h-full{height:100%}.min-h-\[60vh\]{min-height:60vh}.min-h-screen{min-height:100vh}.w-1\.5{width:calc(var(--spacing)*1.5)}.w-3{width:calc(var(--spacing)*3)}.w-4{width:calc(var(--spacing)*4)}.w-6{width:calc(var(--spacing)*6)}.w-8{width:calc(var(--spacing)*8)}.w-9{width:calc(var(--spacing)*9)}.w-10{width:calc(var(--spacing)*10)}.w-11{width:calc(var(--spacing)*11)}.w-14{width:calc(var(--spacing)*14)}.w-16{width:calc(var(--spacing)*16)}.w-32{width:calc(var(--spacing)*32)}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-\[180px\]{max-width:180px}.flex-1{flex:1}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.animate-fade-in-up{animation:.6s ease-out fadeInUp;animation:var(--animate-fade-in-up)}.cursor-pointer{cursor:pointer}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*1)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*3)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*4)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-6>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*6)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-gray-200>:not(:last-child)){border-color:var(--color-gray-200)}.overflow-hidden{overflow:hidden}.scroll-smooth{scroll-behavior:smooth}.card{border-radius:.75rem;padding:1.5rem}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-\[6px\]{border-style:var(--tw-border-style);border-width:6px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-transparent{border-color:#0000}.border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.border-white\/10{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.border-t-gray-900{border-top-color:var(--color-gray-900)}.glass{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background-color:#ffffffb3;border:1px solid #fff3}.bg-blue-500{background-color:var(--color-blue-500)}.bg-cyan-500{background-color:var(--color-cyan-500)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-300{background-color:var(--color-gray-300)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-500{background-color:var(--color-green-500)}.bg-orange-500{background-color:var(--color-orange-500)}.bg-pink-500{background-color:var(--color-pink-500)}.bg-purple-100{background-color:var(--color-purple-100)}.bg-purple-500{background-color:var(--color-purple-500)}.bg-red-500{background-color:var(--color-red-500)}.bg-stone-500{background-color:var(--color-stone-500)}.bg-violet-500{background-color:var(--color-violet-500)}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.gradient-text{background-image:linear-gradient(to right,var(--color-primary-400),var(--color-accent-400));color:#0000;-webkit-background-clip:text;background-clip:text}.score-card{background-image:linear-gradient(90deg,#f472b61a,#c084fc1a);border:1px solid #f472b633}.rank-1{background-image:linear-gradient(90deg,#facc15,#f59e0b)}.rank-2{background-image:linear-gradient(90deg,#94a3b8,#64748b)}.rank-3{background-image:linear-gradient(90deg,#d97706,#b45309)}.from-blue-400{--tw-gradient-from:var(--color-blue-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-cyan-400{--tw-gradient-from:var(--color-cyan-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-emerald-400{--tw-gradient-from:var(--color-emerald-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-gray-50{--tw-gradient-from:var(--color-gray-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-gray-400{--tw-gradient-from:var(--color-gray-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-green-400{--tw-gradient-from:var(--color-green-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-orange-400{--tw-gradient-from:var(--color-orange-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-pink-500{--tw-gradient-from:var(--color-pink-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-primary-500{--tw-gradient-from:var(--color-primary-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-purple-400{--tw-gradient-from:var(--color-purple-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-red-500{--tw-gradient-from:var(--color-red-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-stone-400{--tw-gradient-from:var(--color-stone-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-violet-500{--tw-gradient-from:var(--color-violet-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-yellow-400{--tw-gradient-from:var(--color-yellow-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-accent-500{--tw-gradient-to:var(--color-accent-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-amber-500{--tw-gradient-to:var(--color-amber-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-cyan-500{--tw-gradient-to:var(--color-cyan-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-emerald-500{--tw-gradient-to:var(--color-emerald-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-fuchsia-600{--tw-gradient-to:var(--color-fuchsia-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-gray-100{--tw-gradient-to:var(--color-gray-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-gray-500{--tw-gradient-to:var(--color-gray-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-indigo-500{--tw-gradient-to:var(--color-indigo-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-purple-600{--tw-gradient-to:var(--color-purple-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-red-500{--tw-gradient-to:var(--color-red-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-rose-600{--tw-gradient-to:var(--color-rose-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-stone-500{--tw-gradient-to:var(--color-stone-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-teal-500{--tw-gradient-to:var(--color-teal-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-violet-500{--tw-gradient-to:var(--color-violet-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.p-0{padding:calc(var(--spacing)*0)}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-4{padding-block:calc(var(--spacing)*4)}.py-8{padding-block:calc(var(--spacing)*8)}.py-12{padding-block:calc(var(--spacing)*12)}.py-16{padding-block:calc(var(--spacing)*16)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-4{padding-top:calc(var(--spacing)*4)}.pr-10{padding-right:calc(var(--spacing)*10)}.pr-25{padding-right:calc(var(--spacing)*25)}.pr-50{padding-right:calc(var(--spacing)*50)}.pr-100{padding-right:calc(var(--spacing)*100)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.nav-link-active{color:var(--color-primary-500);font-weight:500}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-nowrap{white-space:nowrap}.nav-link{color:#374151;transition:color .2s}.text-accent-500{color:var(--color-accent-500)}.text-amber-500{color:var(--color-amber-500)}.text-blue-500{color:var(--color-blue-500)}.text-cyan-500{color:var(--color-cyan-500)}.text-emerald-500{color:var(--color-emerald-500)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-green-500{color:var(--color-green-500)}.text-orange-500{color:var(--color-orange-500)}.text-pink-500{color:var(--color-pink-500)}.text-primary-500{color:var(--color-primary-500)}.text-purple-400{color:var(--color-purple-400)}.text-purple-500{color:var(--color-purple-500)}.text-purple-800{color:var(--color-purple-800)}.text-red-500{color:var(--color-red-500)}.text-white{color:var(--color-white)}.text-yellow-500{color:var(--color-yellow-500)}.uppercase{text-transform:uppercase}.opacity-0{opacity:0}.opacity-50{opacity:.5}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-modern{box-shadow:0 10px 40px -10px #00000026}.ring-transparent{--tw-ring-color:transparent}.ring-yellow-400{--tw-ring-color:var(--color-yellow-400)}.drop-shadow-sm{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-sm));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}@media(hover:hover){.group-hover\:text-primary-500:is(:where(.group):hover *){color:var(--color-primary-500)}.group-hover\:ring-primary-500:is(:where(.group):hover *){--tw-ring-color:var(--color-primary-500)}.group-hover\/badge\:opacity-100:is(:where(.group\/badge):hover *){opacity:1}.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:bg-gray-200:hover{background-color:var(--color-gray-200)}.hover\:bg-primary-100:hover{background-color:var(--color-primary-100)}.hover\:text-primary-500:hover{color:var(--color-primary-500)}.hover\:text-primary-600:hover{color:var(--color-primary-600)}.hover\:text-primary-700:hover{color:var(--color-primary-700)}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:ring-primary-500:focus{--tw-ring-color:var(--color-primary-500)}@media(min-width:40rem){.sm\:table-cell{display:table-cell}.sm\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}@media(min-width:48rem){.md\:flex{display:flex}.md\:hidden{display:none}.md\:table-cell{display:table-cell}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:justify-start{justify-content:flex-start}:where(.md\:space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*0)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*0)*calc(1 - var(--tw-space-y-reverse)))}:where(.md\:space-x-8>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*8)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-x-reverse)))}.md\:text-left{text-align:left}.md\:text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}}@media(min-width:64rem){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}}@media(prefers-color-scheme:dark){:where(.dark\:divide-gray-700>:not(:last-child)),.dark\:border-gray-700{border-color:var(--color-gray-700)}.dark\:border-t-gray-800{border-top-color:var(--color-gray-800)}.dark\:bg-gray-600{background-color:var(--color-gray-600)}.dark\:bg-gray-700{background-color:var(--color-gray-700)}.dark\:bg-gray-800{background-color:var(--color-gray-800)}.dark\:bg-gray-800\/50{background-color:#1e293980}@supports (color:color-mix(in lab,red,red)){.dark\:bg-gray-800\/50{background-color:color-mix(in oklab,var(--color-gray-800)50%,transparent)}}.dark\:bg-purple-900\/30{background-color:#59168b4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-purple-900\/30{background-color:color-mix(in oklab,var(--color-purple-900)30%,transparent)}}.dark\:from-gray-900{--tw-gradient-from:var(--color-gray-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.dark\:to-gray-800{--tw-gradient-to:var(--color-gray-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.dark\:text-gray-200{color:var(--color-gray-200)}.dark\:text-gray-300{color:var(--color-gray-300)}.dark\:text-gray-400{color:var(--color-gray-400)}.dark\:text-gray-500{color:var(--color-gray-500)}.dark\:text-gray-600{color:var(--color-gray-600)}.dark\:text-purple-300{color:var(--color-purple-300)}.dark\:text-white{color:var(--color-white)}@media(hover:hover){.dark\:hover\:bg-gray-700:hover{background-color:var(--color-gray-700)}.dark\:hover\:bg-gray-800:hover{background-color:var(--color-gray-800)}.dark\:hover\:bg-gray-800\/30:hover{background-color:#1e29394d}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-gray-800\/30:hover{background-color:color-mix(in oklab,var(--color-gray-800)30%,transparent)}}.dark\:hover\:bg-primary-900\/30:hover{background-color:#8318434d}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-primary-900\/30:hover{background-color:color-mix(in oklab,var(--color-primary-900)30%,transparent)}}.dark\:hover\:text-primary-300:hover{color:var(--color-primary-300)}}}}.dark .glass{background-color:#111827b3;border-color:#ffffff1a}.dark .shadow-modern{box-shadow:0 10px 40px -10px #0006}.dark .score-card{background-image:linear-gradient(90deg,#f472b60d,#c084fc0d);border-color:#f472b61a}.btn-primary:hover{background-image:linear-gradient(to right,var(--color-primary-600),var(--color-accent-600))}.nav-link:hover{color:var(--color-primary-500)}.dark .nav-link{color:#e5e7eb}.dark .nav-link:hover{color:var(--color-primary-400)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.velocity-chart[data-v-401bbb13]{position:relative;width:100%} diff --git a/internal/generator/site/dist/assets/index-R3eb927Q.js b/internal/generator/site/dist/assets/index-R3eb927Q.js new file mode 100644 index 0000000..cb59ecf --- /dev/null +++ b/internal/generator/site/dist/assets/index-R3eb927Q.js @@ -0,0 +1 @@ +import{C as rr,r as Oi}from"./chart-Bcjh2pZL.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const o of r)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function n(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function s(r){if(r.ep)return;r.ep=!0;const o=n(r);fetch(r.href,o)}})();function Is(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const ue={},qt=[],rt=()=>{},Xr=()=>!1,Vn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Ns=e=>e.startsWith("onUpdate:"),$e=Object.assign,Ms=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ii=Object.prototype.hasOwnProperty,re=(e,t)=>Ii.call(e,t),U=Array.isArray,Wt=e=>kn(e)==="[object Map]",Hn=e=>kn(e)==="[object Set]",or=e=>kn(e)==="[object Date]",K=e=>typeof e=="function",pe=e=>typeof e=="string",We=e=>typeof e=="symbol",de=e=>e!==null&&typeof e=="object",Zr=e=>(de(e)||K(e))&&K(e.then)&&K(e.catch),eo=Object.prototype.toString,kn=e=>eo.call(e),Ni=e=>kn(e).slice(8,-1),to=e=>kn(e)==="[object Object]",Ds=e=>pe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,ln=Is(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Bn=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},Mi=/-\w/g,Ge=Bn(e=>e.replace(Mi,t=>t.slice(1).toUpperCase())),Di=/\B([A-Z])/g,Lt=Bn(e=>e.replace(Di,"-$1").toLowerCase()),Un=Bn(e=>e.charAt(0).toUpperCase()+e.slice(1)),ns=Bn(e=>e?`on${Un(e)}`:""),Ct=(e,t)=>!Object.is(e,t),$n=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},Li=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let ir;const Gn=()=>ir||(ir=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function St(e){if(U(e)){const t={};for(let n=0;n{if(n){const s=n.split(Fi);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function J(e){let t="";if(pe(e))t=e;else if(U(e))for(let n=0;nqn(n,t))}const oo=e=>!!(e&&e.__v_isRef===!0),k=e=>pe(e)?e:e==null?"":U(e)||de(e)&&(e.toString===eo||!K(e.toString))?oo(e)?k(e.value):JSON.stringify(e,io,2):String(e),io=(e,t)=>oo(t)?io(e,t.value):Wt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],o)=>(n[ss(s,o)+" =>"]=r,n),{})}:Hn(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>ss(n))}:We(t)?ss(t):de(t)&&!U(t)&&!to(t)?String(t):t,ss=(e,t="")=>{var n;return We(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};let Le;class qi{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=Le,!t&&Le&&(this.index=(Le.scopes||(Le.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0&&(Le=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n0)return;if(cn){let t=cn;for(cn=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;an;){let t=an;for(an=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function uo(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function fo(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),Fs(s),Ki(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function ys(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(mo(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function mo(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===gn)||(e.globalVersion=gn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!ys(e))))return;e.flags|=2;const t=e.dep,n=me,s=qe;me=e,qe=!0;try{uo(e);const r=e.fn(e._value);(t.version===0||Ct(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{me=n,qe=s,fo(e),e.flags&=-3}}function Fs(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let o=n.computed.deps;o;o=o.nextDep)Fs(o,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Ki(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let qe=!0;const ho=[];function ft(){ho.push(qe),qe=!1}function mt(){const e=ho.pop();qe=e===void 0?!0:e}function lr(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=me;me=void 0;try{t()}finally{me=n}}}let gn=0;class zi{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Vs{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!me||!qe||me===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==me)n=this.activeLink=new zi(me,this),me.deps?(n.prevDep=me.depsTail,me.depsTail.nextDep=n,me.depsTail=n):me.deps=me.depsTail=n,go(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=me.depsTail,n.nextDep=void 0,me.depsTail.nextDep=n,me.depsTail=n,me.deps===n&&(me.deps=s)}return n}trigger(t){this.version++,gn++,this.notify(t)}notify(t){Ls();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{js()}}}function go(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)go(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const xs=new WeakMap,Nt=Symbol(""),bs=Symbol(""),pn=Symbol("");function Se(e,t,n){if(qe&&me){let s=xs.get(e);s||xs.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new Vs),r.map=s,r.key=n),r.track()}}function ut(e,t,n,s,r,o){const i=xs.get(e);if(!i){gn++;return}const l=a=>{a&&a.trigger()};if(Ls(),t==="clear")i.forEach(l);else{const a=U(e),c=a&&Ds(n);if(a&&n==="length"){const u=Number(s);i.forEach((m,g)=>{(g==="length"||g===pn||!We(g)&&g>=u)&&l(m)})}else switch((n!==void 0||i.has(void 0))&&l(i.get(n)),c&&l(i.get(pn)),t){case"add":a?c&&l(i.get("length")):(l(i.get(Nt)),Wt(e)&&l(i.get(bs)));break;case"delete":a||(l(i.get(Nt)),Wt(e)&&l(i.get(bs)));break;case"set":Wt(e)&&l(i.get(Nt));break}}js()}function Bt(e){const t=se(e);return t===e?t:(Se(t,"iterate",pn),Be(e)?t:t.map(Ke))}function Wn(e){return Se(e=se(e),"iterate",pn),e}function _t(e,t){return ht(e)?Mt(e)?Qt(Ke(t)):Qt(t):Ke(t)}const Ji={__proto__:null,[Symbol.iterator](){return os(this,Symbol.iterator,e=>_t(this,e))},concat(...e){return Bt(this).concat(...e.map(t=>U(t)?Bt(t):t))},entries(){return os(this,"entries",e=>(e[1]=_t(this,e[1]),e))},every(e,t){return lt(this,"every",e,t,void 0,arguments)},filter(e,t){return lt(this,"filter",e,t,n=>n.map(s=>_t(this,s)),arguments)},find(e,t){return lt(this,"find",e,t,n=>_t(this,n),arguments)},findIndex(e,t){return lt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return lt(this,"findLast",e,t,n=>_t(this,n),arguments)},findLastIndex(e,t){return lt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return lt(this,"forEach",e,t,void 0,arguments)},includes(...e){return is(this,"includes",e)},indexOf(...e){return is(this,"indexOf",e)},join(e){return Bt(this).join(e)},lastIndexOf(...e){return is(this,"lastIndexOf",e)},map(e,t){return lt(this,"map",e,t,void 0,arguments)},pop(){return nn(this,"pop")},push(...e){return nn(this,"push",e)},reduce(e,...t){return ar(this,"reduce",e,t)},reduceRight(e,...t){return ar(this,"reduceRight",e,t)},shift(){return nn(this,"shift")},some(e,t){return lt(this,"some",e,t,void 0,arguments)},splice(...e){return nn(this,"splice",e)},toReversed(){return Bt(this).toReversed()},toSorted(e){return Bt(this).toSorted(e)},toSpliced(...e){return Bt(this).toSpliced(...e)},unshift(...e){return nn(this,"unshift",e)},values(){return os(this,"values",e=>_t(this,e))}};function os(e,t,n){const s=Wn(e),r=s[t]();return s!==e&&!Be(e)&&(r._next=r.next,r.next=()=>{const o=r._next();return o.done||(o.value=n(o.value)),o}),r}const Qi=Array.prototype;function lt(e,t,n,s,r,o){const i=Wn(e),l=i!==e&&!Be(e),a=i[t];if(a!==Qi[t]){const m=a.apply(e,o);return l?Ke(m):m}let c=n;i!==e&&(l?c=function(m,g){return n.call(this,_t(e,m),g,e)}:n.length>2&&(c=function(m,g){return n.call(this,m,g,e)}));const u=a.call(i,c,s);return l&&r?r(u):u}function ar(e,t,n,s){const r=Wn(e);let o=n;return r!==e&&(Be(e)?n.length>3&&(o=function(i,l,a){return n.call(this,i,l,a,e)}):o=function(i,l,a){return n.call(this,i,_t(e,l),a,e)}),r[t](o,...s)}function is(e,t,n){const s=se(e);Se(s,"iterate",pn);const r=s[t](...n);return(r===-1||r===!1)&&Us(n[0])?(n[0]=se(n[0]),s[t](...n)):r}function nn(e,t,n=[]){ft(),Ls();const s=se(e)[t].apply(e,n);return js(),mt(),s}const Yi=Is("__proto__,__v_isRef,__isVue"),po=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(We));function Xi(e){We(e)||(e=String(e));const t=se(this);return Se(t,"has",e),t.hasOwnProperty(e)}class vo{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return o;if(n==="__v_raw")return s===(r?o?al:_o:o?bo:xo).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const i=U(t);if(!r){let a;if(i&&(a=Ji[n]))return a;if(n==="hasOwnProperty")return Xi}const l=Reflect.get(t,n,Ee(t)?t:s);if((We(n)?po.has(n):Yi(n))||(r||Se(t,"get",n),o))return l;if(Ee(l)){const a=i&&Ds(n)?l:l.value;return r&&de(a)?ws(a):a}return de(l)?r?ws(l):Kn(l):l}}class yo extends vo{constructor(t=!1){super(!1,t)}set(t,n,s,r){let o=t[n];const i=U(t)&&Ds(n);if(!this._isShallow){const c=ht(o);if(!Be(s)&&!ht(s)&&(o=se(o),s=se(s)),!i&&Ee(o)&&!Ee(s))return c||(o.value=s),!0}const l=i?Number(n)e,An=e=>Reflect.getPrototypeOf(e);function sl(e,t,n){return function(...s){const r=this.__v_raw,o=se(r),i=Wt(o),l=e==="entries"||e===Symbol.iterator&&i,a=e==="keys"&&i,c=r[e](...s),u=n?_s:t?Qt:Ke;return!t&&Se(o,"iterate",a?bs:Nt),{next(){const{value:m,done:g}=c.next();return g?{value:m,done:g}:{value:l?[u(m[0]),u(m[1])]:u(m),done:g}},[Symbol.iterator](){return this}}}}function En(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function rl(e,t){const n={get(r){const o=this.__v_raw,i=se(o),l=se(r);e||(Ct(r,l)&&Se(i,"get",r),Se(i,"get",l));const{has:a}=An(i),c=t?_s:e?Qt:Ke;if(a.call(i,r))return c(o.get(r));if(a.call(i,l))return c(o.get(l));o!==i&&o.get(r)},get size(){const r=this.__v_raw;return!e&&Se(se(r),"iterate",Nt),r.size},has(r){const o=this.__v_raw,i=se(o),l=se(r);return e||(Ct(r,l)&&Se(i,"has",r),Se(i,"has",l)),r===l?o.has(r):o.has(r)||o.has(l)},forEach(r,o){const i=this,l=i.__v_raw,a=se(l),c=t?_s:e?Qt:Ke;return!e&&Se(a,"iterate",Nt),l.forEach((u,m)=>r.call(o,c(u),c(m),i))}};return $e(n,e?{add:En("add"),set:En("set"),delete:En("delete"),clear:En("clear")}:{add(r){!t&&!Be(r)&&!ht(r)&&(r=se(r));const o=se(this);return An(o).has.call(o,r)||(o.add(r),ut(o,"add",r,r)),this},set(r,o){!t&&!Be(o)&&!ht(o)&&(o=se(o));const i=se(this),{has:l,get:a}=An(i);let c=l.call(i,r);c||(r=se(r),c=l.call(i,r));const u=a.call(i,r);return i.set(r,o),c?Ct(o,u)&&ut(i,"set",r,o):ut(i,"add",r,o),this},delete(r){const o=se(this),{has:i,get:l}=An(o);let a=i.call(o,r);a||(r=se(r),a=i.call(o,r)),l&&l.call(o,r);const c=o.delete(r);return a&&ut(o,"delete",r,void 0),c},clear(){const r=se(this),o=r.size!==0,i=r.clear();return o&&ut(r,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=sl(r,e,t)}),n}function Hs(e,t){const n=rl(e,t);return(s,r,o)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(re(n,r)&&r in s?n:s,r,o)}const ol={get:Hs(!1,!1)},il={get:Hs(!1,!0)},ll={get:Hs(!0,!1)};const xo=new WeakMap,bo=new WeakMap,_o=new WeakMap,al=new WeakMap;function cl(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ul(e){return e.__v_skip||!Object.isExtensible(e)?0:cl(Ni(e))}function Kn(e){return ht(e)?e:Bs(e,!1,el,ol,xo)}function wo(e){return Bs(e,!1,nl,il,bo)}function ws(e){return Bs(e,!0,tl,ll,_o)}function Bs(e,t,n,s,r){if(!de(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=ul(e);if(o===0)return e;const i=r.get(e);if(i)return i;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function Mt(e){return ht(e)?Mt(e.__v_raw):!!(e&&e.__v_isReactive)}function ht(e){return!!(e&&e.__v_isReadonly)}function Be(e){return!!(e&&e.__v_isShallow)}function Us(e){return e?!!e.__v_raw:!1}function se(e){const t=e&&e.__v_raw;return t?se(t):e}function dl(e){return!re(e,"__v_skip")&&Object.isExtensible(e)&&no(e,"__v_skip",!0),e}const Ke=e=>de(e)?Kn(e):e,Qt=e=>de(e)?ws(e):e;function Ee(e){return e?e.__v_isRef===!0:!1}function ke(e){return ko(e,!1)}function fl(e){return ko(e,!0)}function ko(e,t){return Ee(e)?e:new ml(e,t)}class ml{constructor(t,n){this.dep=new Vs,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:se(t),this._value=n?t:Ke(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Be(t)||ht(t);t=s?t:se(t),Ct(t,n)&&(this._rawValue=t,this._value=s?t:Ke(t),this.dep.trigger())}}function P(e){return Ee(e)?e.value:e}const hl={get:(e,t,n)=>t==="__v_raw"?e:P(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return Ee(r)&&!Ee(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Ro(e){return Mt(e)?e:new Proxy(e,hl)}class gl{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Vs(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=gn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&me!==this)return co(this,!0),!0}get value(){const t=this.dep.track();return mo(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function pl(e,t,n=!1){let s,r;return K(e)?s=e:(s=e.get,r=e.set),new gl(s,r,n)}const Pn={},In=new WeakMap;let Tt;function vl(e,t=!1,n=Tt){if(n){let s=In.get(n);s||In.set(n,s=[]),s.push(e)}}function yl(e,t,n=ue){const{immediate:s,deep:r,once:o,scheduler:i,augmentJob:l,call:a}=n,c=L=>r?L:Be(L)||r===!1||r===0?dt(L,1):dt(L);let u,m,g,v,S=!1,I=!1;if(Ee(e)?(m=()=>e.value,S=Be(e)):Mt(e)?(m=()=>c(e),S=!0):U(e)?(I=!0,S=e.some(L=>Mt(L)||Be(L)),m=()=>e.map(L=>{if(Ee(L))return L.value;if(Mt(L))return c(L);if(K(L))return a?a(L,2):L()})):K(e)?t?m=a?()=>a(e,2):e:m=()=>{if(g){ft();try{g()}finally{mt()}}const L=Tt;Tt=u;try{return a?a(e,3,[v]):e(v)}finally{Tt=L}}:m=rt,t&&r){const L=m,ee=r===!0?1/0:r;m=()=>dt(L(),ee)}const W=Wi(),j=()=>{u.stop(),W&&W.active&&Ms(W.effects,u)};if(o&&t){const L=t;t=(...ee)=>{L(...ee),j()}}let D=I?new Array(e.length).fill(Pn):Pn;const V=L=>{if(!(!(u.flags&1)||!u.dirty&&!L))if(t){const ee=u.run();if(r||S||(I?ee.some((ve,he)=>Ct(ve,D[he])):Ct(ee,D))){g&&g();const ve=Tt;Tt=u;try{const he=[ee,D===Pn?void 0:I&&D[0]===Pn?[]:D,v];D=ee,a?a(t,3,he):t(...he)}finally{Tt=ve}}}else u.run()};return l&&l(V),u=new lo(m),u.scheduler=i?()=>i(V,!1):V,v=L=>vl(L,!1,u),g=u.onStop=()=>{const L=In.get(u);if(L){if(a)a(L,4);else for(const ee of L)ee();In.delete(u)}},t?s?V(!0):D=u.run():i?i(V.bind(null,!0),!0):u.run(),j.pause=u.pause.bind(u),j.resume=u.resume.bind(u),j.stop=j,j}function dt(e,t=1/0,n){if(t<=0||!de(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,Ee(e))dt(e.value,t,n);else if(U(e))for(let s=0;s{dt(s,t,n)});else if(to(e)){for(const s in e)dt(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&dt(e[s],t,n)}return e}function Rn(e,t,n,s){try{return s?e(...s):e()}catch(r){zn(r,t,n)}}function ot(e,t,n,s){if(K(e)){const r=Rn(e,t,n,s);return r&&Zr(r)&&r.catch(o=>{zn(o,t,n)}),r}if(U(e)){const r=[];for(let o=0;o>>1,r=Ie[s],o=vn(r);o=vn(n)?Ie.push(e):Ie.splice(bl(t),0,e),e.flags|=1,Ao()}}function Ao(){Nn||(Nn=Co.then(Po))}function _l(e){U(e)?Kt.push(...e):wt&&e.id===-1?wt.splice(Ut+1,0,e):e.flags&1||(Kt.push(e),e.flags|=1),Ao()}function cr(e,t,n=nt+1){for(;nvn(n)-vn(s));if(Kt.length=0,wt){wt.push(...t);return}for(wt=t,Ut=0;Ute.id==null?e.flags&2?-1:1/0:e.id;function Po(e){try{for(nt=0;nt{s._d&&jn(-1);const o=Mn(t);let i;try{i=e(...r)}finally{Mn(o),s._d&&jn(1)}return i};return s._n=!0,s._c=!0,s._d=!0,s}function wl(e,t){if(we===null)return e;const n=Xn(we),s=e.dirs||(e.dirs=[]);for(let r=0;re.__isTeleport,Cl=Symbol("_leaveCb");function qs(e,t){e.shapeFlag&6&&e.component?(e.transition=t,qs(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function To(e,t){return K(e)?$e({name:e.name},t,{setup:e}):e}function Oo(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}const Dn=new WeakMap;function un(e,t,n,s,r=!1){if(U(e)){e.forEach((S,I)=>un(S,t&&(U(t)?t[I]:t),n,s,r));return}if(zt(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&un(e,t,n,s.component.subTree);return}const o=s.shapeFlag&4?Xn(s.component):s.el,i=r?null:o,{i:l,r:a}=e,c=t&&t.r,u=l.refs===ue?l.refs={}:l.refs,m=l.setupState,g=se(m),v=m===ue?Xr:S=>re(g,S);if(c!=null&&c!==a){if(ur(t),pe(c))u[c]=null,v(c)&&(m[c]=null);else if(Ee(c)){c.value=null;const S=t;S.k&&(u[S.k]=null)}}if(K(a))Rn(a,l,12,[i,u]);else{const S=pe(a),I=Ee(a);if(S||I){const W=()=>{if(e.f){const j=S?v(a)?m[a]:u[a]:a.value;if(r)U(j)&&Ms(j,o);else if(U(j))j.includes(o)||j.push(o);else if(S)u[a]=[o],v(a)&&(m[a]=u[a]);else{const D=[o];a.value=D,e.k&&(u[e.k]=D)}}else S?(u[a]=i,v(a)&&(m[a]=i)):I&&(a.value=i,e.k&&(u[e.k]=i))};if(i){const j=()=>{W(),Dn.delete(e)};j.id=-1,Dn.set(e,j),Fe(j,n)}else ur(e),W()}}}function ur(e){const t=Dn.get(e);t&&(t.flags|=8,Dn.delete(e))}Gn().requestIdleCallback;Gn().cancelIdleCallback;const zt=e=>!!e.type.__asyncLoader,Io=e=>e.type.__isKeepAlive;function Sl(e,t){No(e,"a",t)}function Al(e,t){No(e,"da",t)}function No(e,t,n=Ae){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Jn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Io(r.parent.vnode)&&El(s,t,n,r),r=r.parent}}function El(e,t,n,s){const r=Jn(t,e,s,!0);Mo(()=>{Ms(s[t],r)},n)}function Jn(e,t,n=Ae,s=!1){if(n){const r=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{ft();const l=Cn(n),a=ot(t,n,e,i);return l(),mt(),a});return s?r.unshift(o):r.push(o),o}}const pt=e=>(t,n=Ae)=>{(!bn||e==="sp")&&Jn(e,(...s)=>t(...s),n)},Pl=pt("bm"),jt=pt("m"),$l=pt("bu"),Tl=pt("u"),Ol=pt("bum"),Mo=pt("um"),Il=pt("sp"),Nl=pt("rtg"),Ml=pt("rtc");function Dl(e,t=Ae){Jn("ec",e,t)}const Do="components";function Ll(e,t){return jo(Do,e,!0,t)||e}const Lo=Symbol.for("v-ndc");function jl(e){return pe(e)?jo(Do,e,!1)||e:e||Lo}function jo(e,t,n=!0,s=!1){const r=we||Ae;if(r){const o=r.type;{const l=Sa(o,!1);if(l&&(l===t||l===Ge(t)||l===Un(Ge(t))))return o}const i=dr(r[e]||o[e],t)||dr(r.appContext[e],t);return!i&&s?o:i}}function dr(e,t){return e&&(e[t]||e[Ge(t)]||e[Un(Ge(t))])}function xe(e,t,n,s){let r;const o=n,i=U(e);if(i||pe(e)){const l=i&&Mt(e);let a=!1,c=!1;l&&(a=!Be(e),c=ht(e),e=Wn(e)),r=new Array(e.length);for(let u=0,m=e.length;ut(l,a,void 0,o));else{const l=Object.keys(e);r=new Array(l.length);for(let a=0,c=l.length;a0;return t!=="default"&&(n.name=t),y(),ie(Q,null,[N("slot",n,s&&s())],c?-2:64)}let o=e[t];o&&o._c&&(o._d=!1),y();const i=o&&Fo(o(n)),l=n.key||i&&i.key,a=ie(Q,{key:(l&&!We(l)?l:`_${t}`)+(!i&&s?"_fb":"")},i||(s?s():[]),i&&e._===1?64:-2);return a.scopeId&&(a.slotScopeIds=[a.scopeId+"-s"]),o&&o._c&&(o._d=!0),a}function Fo(e){return e.some(t=>xn(t)?!(t.type===gt||t.type===Q&&!Fo(t.children)):!0)?e:null}const ks=e=>e?oi(e)?Xn(e):ks(e.parent):null,dn=$e(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>ks(e.parent),$root:e=>ks(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Ho(e),$forceUpdate:e=>e.f||(e.f=()=>{Gs(e.update)}),$nextTick:e=>e.n||(e.n=So.bind(e.proxy)),$watch:e=>Jl.bind(e)}),ls=(e,t)=>e!==ue&&!e.__isScriptSetup&&re(e,t),Fl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:o,accessCache:i,type:l,appContext:a}=e;if(t[0]!=="$"){const g=i[t];if(g!==void 0)switch(g){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return o[t]}else{if(ls(s,t))return i[t]=1,s[t];if(r!==ue&&re(r,t))return i[t]=2,r[t];if(re(o,t))return i[t]=3,o[t];if(n!==ue&&re(n,t))return i[t]=4,n[t];Rs&&(i[t]=0)}}const c=dn[t];let u,m;if(c)return t==="$attrs"&&Se(e.attrs,"get",""),c(e);if((u=l.__cssModules)&&(u=u[t]))return u;if(n!==ue&&re(n,t))return i[t]=4,n[t];if(m=a.config.globalProperties,re(m,t))return m[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:o}=e;return ls(r,t)?(r[t]=n,!0):s!==ue&&re(s,t)?(s[t]=n,!0):re(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,props:o,type:i}},l){let a;return!!(n[l]||e!==ue&&l[0]!=="$"&&re(e,l)||ls(t,l)||re(o,l)||re(s,l)||re(dn,l)||re(r.config.globalProperties,l)||(a=i.__cssModules)&&a[l])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:re(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function fr(e){return U(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Rs=!0;function Vl(e){const t=Ho(e),n=e.proxy,s=e.ctx;Rs=!1,t.beforeCreate&&mr(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:i,watch:l,provide:a,inject:c,created:u,beforeMount:m,mounted:g,beforeUpdate:v,updated:S,activated:I,deactivated:W,beforeDestroy:j,beforeUnmount:D,destroyed:V,unmounted:L,render:ee,renderTracked:ve,renderTriggered:he,errorCaptured:Re,serverPrefetch:vt,expose:Je,inheritAttrs:yt,components:At,directives:Qe,filters:en}=t;if(c&&Hl(c,s,null),i)for(const ae in i){const te=i[ae];K(te)&&(s[ae]=te.bind(n))}if(r){const ae=r.call(n,n);de(ae)&&(e.data=Kn(ae))}if(Rs=!0,o)for(const ae in o){const te=o[ae],it=K(te)?te.bind(n,n):K(te.get)?te.get.bind(n,n):rt,xt=!K(te)&&K(te.set)?te.set.bind(n):rt,Ye=oe({get:it,set:xt});Object.defineProperty(s,ae,{enumerable:!0,configurable:!0,get:()=>Ye.value,set:Ne=>Ye.value=Ne})}if(l)for(const ae in l)Vo(l[ae],s,n,ae);if(a){const ae=K(a)?a.call(n):a;Reflect.ownKeys(ae).forEach(te=>{fn(te,ae[te])})}u&&mr(u,e,"c");function be(ae,te){U(te)?te.forEach(it=>ae(it.bind(n))):te&&ae(te.bind(n))}if(be(Pl,m),be(jt,g),be($l,v),be(Tl,S),be(Sl,I),be(Al,W),be(Dl,Re),be(Ml,ve),be(Nl,he),be(Ol,D),be(Mo,L),be(Il,vt),U(Je))if(Je.length){const ae=e.exposed||(e.exposed={});Je.forEach(te=>{Object.defineProperty(ae,te,{get:()=>n[te],set:it=>n[te]=it,enumerable:!0})})}else e.exposed||(e.exposed={});ee&&e.render===rt&&(e.render=ee),yt!=null&&(e.inheritAttrs=yt),At&&(e.components=At),Qe&&(e.directives=Qe),vt&&Oo(e)}function Hl(e,t,n=rt){U(e)&&(e=Cs(e));for(const s in e){const r=e[s];let o;de(r)?"default"in r?o=Pe(r.from||s,r.default,!0):o=Pe(r.from||s):o=Pe(r),Ee(o)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[s]=o}}function mr(e,t,n){ot(U(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Vo(e,t,n,s){let r=s.includes(".")?Go(n,s):()=>n[s];if(pe(e)){const o=t[e];K(o)&&Ue(r,o)}else if(K(e))Ue(r,e.bind(n));else if(de(e))if(U(e))e.forEach(o=>Vo(o,t,n,s));else{const o=K(e.handler)?e.handler.bind(n):t[e.handler];K(o)&&Ue(r,o,e)}}function Ho(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let a;return l?a=l:!r.length&&!n&&!s?a=t:(a={},r.length&&r.forEach(c=>Ln(a,c,i,!0)),Ln(a,t,i)),de(t)&&o.set(t,a),a}function Ln(e,t,n,s=!1){const{mixins:r,extends:o}=t;o&&Ln(e,o,n,!0),r&&r.forEach(i=>Ln(e,i,n,!0));for(const i in t)if(!(s&&i==="expose")){const l=Bl[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const Bl={data:hr,props:gr,emits:gr,methods:on,computed:on,beforeCreate:Te,created:Te,beforeMount:Te,mounted:Te,beforeUpdate:Te,updated:Te,beforeDestroy:Te,beforeUnmount:Te,destroyed:Te,unmounted:Te,activated:Te,deactivated:Te,errorCaptured:Te,serverPrefetch:Te,components:on,directives:on,watch:Gl,provide:hr,inject:Ul};function hr(e,t){return t?e?function(){return $e(K(e)?e.call(this,this):e,K(t)?t.call(this,this):t)}:t:e}function Ul(e,t){return on(Cs(e),Cs(t))}function Cs(e){if(U(e)){const t={};for(let n=0;n1)return n&&K(t)?t.call(s&&s.proxy):t}}const Kl=Symbol.for("v-scx"),zl=()=>Pe(Kl);function Ue(e,t,n){return Uo(e,t,n)}function Uo(e,t,n=ue){const{immediate:s,deep:r,flush:o,once:i}=n,l=$e({},n),a=t&&s||!t&&o!=="post";let c;if(bn){if(o==="sync"){const v=zl();c=v.__watcherHandles||(v.__watcherHandles=[])}else if(!a){const v=()=>{};return v.stop=rt,v.resume=rt,v.pause=rt,v}}const u=Ae;l.call=(v,S,I)=>ot(v,u,S,I);let m=!1;o==="post"?l.scheduler=v=>{Fe(v,u&&u.suspense)}:o!=="sync"&&(m=!0,l.scheduler=(v,S)=>{S?v():Gs(v)}),l.augmentJob=v=>{t&&(v.flags|=4),m&&(v.flags|=2,u&&(v.id=u.uid,v.i=u))};const g=yl(e,t,l);return bn&&(c?c.push(g):a&&g()),g}function Jl(e,t,n){const s=this.proxy,r=pe(e)?e.includes(".")?Go(s,e):()=>s[e]:e.bind(s,s);let o;K(t)?o=t:(o=t.handler,n=t);const i=Cn(this),l=Uo(r,o.bind(s),n);return i(),l}function Go(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;rt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Ge(t)}Modifiers`]||e[`${Lt(t)}Modifiers`];function Yl(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||ue;let r=n;const o=t.startsWith("update:"),i=o&&Ql(s,t.slice(7));i&&(i.trim&&(r=n.map(u=>pe(u)?u.trim():u)),i.number&&(r=n.map(Li)));let l,a=s[l=ns(t)]||s[l=ns(Ge(t))];!a&&o&&(a=s[l=ns(Lt(t))]),a&&ot(a,e,6,r);const c=s[l+"Once"];if(c){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,ot(c,e,6,r)}}const Xl=new WeakMap;function qo(e,t,n=!1){const s=n?Xl:t.emitsCache,r=s.get(e);if(r!==void 0)return r;const o=e.emits;let i={},l=!1;if(!K(e)){const a=c=>{const u=qo(c,t,!0);u&&(l=!0,$e(i,u))};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!o&&!l?(de(e)&&s.set(e,null),null):(U(o)?o.forEach(a=>i[a]=null):$e(i,o),de(e)&&s.set(e,i),i)}function Qn(e,t){return!e||!Vn(t)?!1:(t=t.slice(2).replace(/Once$/,""),re(e,t[0].toLowerCase()+t.slice(1))||re(e,Lt(t))||re(e,t))}function pr(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[o],slots:i,attrs:l,emit:a,render:c,renderCache:u,props:m,data:g,setupState:v,ctx:S,inheritAttrs:I}=e,W=Mn(e);let j,D;try{if(n.shapeFlag&4){const L=r||s,ee=L;j=st(c.call(ee,L,u,m,v,g,S)),D=l}else{const L=t;j=st(L.length>1?L(m,{attrs:l,slots:i,emit:a}):L(m,null)),D=t.props?l:Zl(l)}}catch(L){mn.length=0,zn(L,e,1),j=N(gt)}let V=j;if(D&&I!==!1){const L=Object.keys(D),{shapeFlag:ee}=V;L.length&&ee&7&&(o&&L.some(Ns)&&(D=ea(D,o)),V=Yt(V,D,!1,!0))}return n.dirs&&(V=Yt(V,null,!1,!0),V.dirs=V.dirs?V.dirs.concat(n.dirs):n.dirs),n.transition&&qs(V,n.transition),j=V,Mn(W),j}const Zl=e=>{let t;for(const n in e)(n==="class"||n==="style"||Vn(n))&&((t||(t={}))[n]=e[n]);return t},ea=(e,t)=>{const n={};for(const s in e)(!Ns(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function ta(e,t,n){const{props:s,children:r,component:o}=e,{props:i,children:l,patchFlag:a}=t,c=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&a>=0){if(a&1024)return!0;if(a&16)return s?vr(s,i,c):!!i;if(a&8){const u=t.dynamicProps;for(let m=0;mObject.create(Wo),zo=e=>Object.getPrototypeOf(e)===Wo;function sa(e,t,n,s=!1){const r={},o=Ko();e.propsDefaults=Object.create(null),Jo(e,t,r,o);for(const i in e.propsOptions[0])i in r||(r[i]=void 0);n?e.props=s?r:wo(r):e.type.props?e.props=r:e.props=o,e.attrs=o}function ra(e,t,n,s){const{props:r,attrs:o,vnode:{patchFlag:i}}=e,l=se(r),[a]=e.propsOptions;let c=!1;if((s||i>0)&&!(i&16)){if(i&8){const u=e.vnode.dynamicProps;for(let m=0;m{a=!0;const[g,v]=Qo(m,t,!0);$e(i,g),v&&l.push(...v)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!o&&!a)return de(e)&&s.set(e,qt),qt;if(U(o))for(let u=0;ue==="_"||e==="_ctx"||e==="$stable",Ks=e=>U(e)?e.map(st):[st(e)],ia=(e,t,n)=>{if(t._n)return t;const s=Z((...r)=>Ks(t(...r)),n);return s._c=!1,s},Yo=(e,t,n)=>{const s=e._ctx;for(const r in e){if(Ws(r))continue;const o=e[r];if(K(o))t[r]=ia(r,o,s);else if(o!=null){const i=Ks(o);t[r]=()=>i}}},Xo=(e,t)=>{const n=Ks(t);e.slots.default=()=>n},Zo=(e,t,n)=>{for(const s in t)(n||!Ws(s))&&(e[s]=t[s])},la=(e,t,n)=>{const s=e.slots=Ko();if(e.vnode.shapeFlag&32){const r=t._;r?(Zo(s,t,n),n&&no(s,"_",r,!0)):Yo(t,s)}else t&&Xo(e,t)},aa=(e,t,n)=>{const{vnode:s,slots:r}=e;let o=!0,i=ue;if(s.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:Zo(r,t,n):(o=!t.$stable,Yo(t,r)),i=t}else t&&(Xo(e,t),i={default:1});if(o)for(const l in r)!Ws(l)&&i[l]==null&&delete r[l]},Fe=ma;function ca(e){return ua(e)}function ua(e,t){const n=Gn();n.__VUE__=!0;const{insert:s,remove:r,patchProp:o,createElement:i,createText:l,createComment:a,setText:c,setElementText:u,parentNode:m,nextSibling:g,setScopeId:v=rt,insertStaticContent:S}=e,I=(f,h,p,b=null,w=null,x=null,$=void 0,E=null,A=!!h.dynamicChildren)=>{if(f===h)return;f&&!sn(f,h)&&(b=_(f),Ne(f,w,x,!0),f=null),h.patchFlag===-2&&(A=!1,h.dynamicChildren=null);const{type:C,ref:B,shapeFlag:O}=h;switch(C){case Yn:W(f,h,p,b);break;case gt:j(f,h,p,b);break;case cs:f==null&&D(h,p,b,$);break;case Q:At(f,h,p,b,w,x,$,E,A);break;default:O&1?ee(f,h,p,b,w,x,$,E,A):O&6?Qe(f,h,p,b,w,x,$,E,A):(O&64||O&128)&&C.process(f,h,p,b,w,x,$,E,A,F)}B!=null&&w?un(B,f&&f.ref,x,h||f,!h):B==null&&f&&f.ref!=null&&un(f.ref,null,x,f,!0)},W=(f,h,p,b)=>{if(f==null)s(h.el=l(h.children),p,b);else{const w=h.el=f.el;h.children!==f.children&&c(w,h.children)}},j=(f,h,p,b)=>{f==null?s(h.el=a(h.children||""),p,b):h.el=f.el},D=(f,h,p,b)=>{[f.el,f.anchor]=S(f.children,h,p,b,f.el,f.anchor)},V=({el:f,anchor:h},p,b)=>{let w;for(;f&&f!==h;)w=g(f),s(f,p,b),f=w;s(h,p,b)},L=({el:f,anchor:h})=>{let p;for(;f&&f!==h;)p=g(f),r(f),f=p;r(h)},ee=(f,h,p,b,w,x,$,E,A)=>{if(h.type==="svg"?$="svg":h.type==="math"&&($="mathml"),f==null)ve(h,p,b,w,x,$,E,A);else{const C=f.el&&f.el._isVueCE?f.el:null;try{C&&C._beginPatch(),vt(f,h,w,x,$,E,A)}finally{C&&C._endPatch()}}},ve=(f,h,p,b,w,x,$,E)=>{let A,C;const{props:B,shapeFlag:O,transition:H,dirs:G}=f;if(A=f.el=i(f.type,x,B&&B.is,B),O&8?u(A,f.children):O&16&&Re(f.children,A,null,b,w,as(f,x),$,E),G&&Pt(f,null,b,"created"),he(A,f,f.scopeId,$,b),B){for(const fe in B)fe!=="value"&&!ln(fe)&&o(A,fe,null,B[fe],x,b);"value"in B&&o(A,"value",null,B.value,x),(C=B.onVnodeBeforeMount)&&tt(C,b,f)}G&&Pt(f,null,b,"beforeMount");const X=da(w,H);X&&H.beforeEnter(A),s(A,h,p),((C=B&&B.onVnodeMounted)||X||G)&&Fe(()=>{C&&tt(C,b,f),X&&H.enter(A),G&&Pt(f,null,b,"mounted")},w)},he=(f,h,p,b,w)=>{if(p&&v(f,p),b)for(let x=0;x{for(let C=A;C{const E=h.el=f.el;let{patchFlag:A,dynamicChildren:C,dirs:B}=h;A|=f.patchFlag&16;const O=f.props||ue,H=h.props||ue;let G;if(p&&$t(p,!1),(G=H.onVnodeBeforeUpdate)&&tt(G,p,h,f),B&&Pt(h,f,p,"beforeUpdate"),p&&$t(p,!0),(O.innerHTML&&H.innerHTML==null||O.textContent&&H.textContent==null)&&u(E,""),C?Je(f.dynamicChildren,C,E,p,b,as(h,w),x):$||te(f,h,E,null,p,b,as(h,w),x,!1),A>0){if(A&16)yt(E,O,H,p,w);else if(A&2&&O.class!==H.class&&o(E,"class",null,H.class,w),A&4&&o(E,"style",O.style,H.style,w),A&8){const X=h.dynamicProps;for(let fe=0;fe{G&&tt(G,p,h,f),B&&Pt(h,f,p,"updated")},b)},Je=(f,h,p,b,w,x,$)=>{for(let E=0;E{if(h!==p){if(h!==ue)for(const x in h)!ln(x)&&!(x in p)&&o(f,x,h[x],null,w,b);for(const x in p){if(ln(x))continue;const $=p[x],E=h[x];$!==E&&x!=="value"&&o(f,x,E,$,w,b)}"value"in p&&o(f,"value",h.value,p.value,w)}},At=(f,h,p,b,w,x,$,E,A)=>{const C=h.el=f?f.el:l(""),B=h.anchor=f?f.anchor:l("");let{patchFlag:O,dynamicChildren:H,slotScopeIds:G}=h;G&&(E=E?E.concat(G):G),f==null?(s(C,p,b),s(B,p,b),Re(h.children||[],p,B,w,x,$,E,A)):O>0&&O&64&&H&&f.dynamicChildren?(Je(f.dynamicChildren,H,p,w,x,$,E),(h.key!=null||w&&h===w.subTree)&&ei(f,h,!0)):te(f,h,p,B,w,x,$,E,A)},Qe=(f,h,p,b,w,x,$,E,A)=>{h.slotScopeIds=E,f==null?h.shapeFlag&512?w.ctx.activate(h,p,b,$,A):en(h,p,b,w,x,$,A):Ft(f,h,A)},en=(f,h,p,b,w,x,$)=>{const E=f.component=ba(f,b,w);if(Io(f)&&(E.ctx.renderer=F),wa(E,!1,$),E.asyncDep){if(w&&w.registerDep(E,be,$),!f.el){const A=E.subTree=N(gt);j(null,A,h,p),f.placeholder=A.el}}else be(E,f,h,p,w,x,$)},Ft=(f,h,p)=>{const b=h.component=f.component;if(ta(f,h,p))if(b.asyncDep&&!b.asyncResolved){ae(b,h,p);return}else b.next=h,b.update();else h.el=f.el,b.vnode=h},be=(f,h,p,b,w,x,$)=>{const E=()=>{if(f.isMounted){let{next:O,bu:H,u:G,parent:X,vnode:fe}=f;{const Ze=ti(f);if(Ze){O&&(O.el=fe.el,ae(f,O,$)),Ze.asyncDep.then(()=>{f.isUnmounted||E()});return}}let le=O,Me;$t(f,!1),O?(O.el=fe.el,ae(f,O,$)):O=fe,H&&$n(H),(Me=O.props&&O.props.onVnodeBeforeUpdate)&&tt(Me,X,O,fe),$t(f,!0);const De=pr(f),Xe=f.subTree;f.subTree=De,I(Xe,De,m(Xe.el),_(Xe),f,w,x),O.el=De.el,le===null&&na(f,De.el),G&&Fe(G,w),(Me=O.props&&O.props.onVnodeUpdated)&&Fe(()=>tt(Me,X,O,fe),w)}else{let O;const{el:H,props:G}=h,{bm:X,m:fe,parent:le,root:Me,type:De}=f,Xe=zt(h);$t(f,!1),X&&$n(X),!Xe&&(O=G&&G.onVnodeBeforeMount)&&tt(O,le,h),$t(f,!0);{Me.ce&&Me.ce._def.shadowRoot!==!1&&Me.ce._injectChildStyle(De);const Ze=f.subTree=pr(f);I(null,Ze,p,b,f,w,x),h.el=Ze.el}if(fe&&Fe(fe,w),!Xe&&(O=G&&G.onVnodeMounted)){const Ze=h;Fe(()=>tt(O,le,Ze),w)}(h.shapeFlag&256||le&&zt(le.vnode)&&le.vnode.shapeFlag&256)&&f.a&&Fe(f.a,w),f.isMounted=!0,h=p=b=null}};f.scope.on();const A=f.effect=new lo(E);f.scope.off();const C=f.update=A.run.bind(A),B=f.job=A.runIfDirty.bind(A);B.i=f,B.id=f.uid,A.scheduler=()=>Gs(B),$t(f,!0),C()},ae=(f,h,p)=>{h.component=f;const b=f.vnode.props;f.vnode=h,f.next=null,ra(f,h.props,b,p),aa(f,h.children,p),ft(),cr(f),mt()},te=(f,h,p,b,w,x,$,E,A=!1)=>{const C=f&&f.children,B=f?f.shapeFlag:0,O=h.children,{patchFlag:H,shapeFlag:G}=h;if(H>0){if(H&128){xt(C,O,p,b,w,x,$,E,A);return}else if(H&256){it(C,O,p,b,w,x,$,E,A);return}}G&8?(B&16&&He(C,w,x),O!==C&&u(p,O)):B&16?G&16?xt(C,O,p,b,w,x,$,E,A):He(C,w,x,!0):(B&8&&u(p,""),G&16&&Re(O,p,b,w,x,$,E,A))},it=(f,h,p,b,w,x,$,E,A)=>{f=f||qt,h=h||qt;const C=f.length,B=h.length,O=Math.min(C,B);let H;for(H=0;HB?He(f,w,x,!0,!1,O):Re(h,p,b,w,x,$,E,A,O)},xt=(f,h,p,b,w,x,$,E,A)=>{let C=0;const B=h.length;let O=f.length-1,H=B-1;for(;C<=O&&C<=H;){const G=f[C],X=h[C]=A?kt(h[C]):st(h[C]);if(sn(G,X))I(G,X,p,null,w,x,$,E,A);else break;C++}for(;C<=O&&C<=H;){const G=f[O],X=h[H]=A?kt(h[H]):st(h[H]);if(sn(G,X))I(G,X,p,null,w,x,$,E,A);else break;O--,H--}if(C>O){if(C<=H){const G=H+1,X=GH)for(;C<=O;)Ne(f[C],w,x,!0),C++;else{const G=C,X=C,fe=new Map;for(C=X;C<=H;C++){const je=h[C]=A?kt(h[C]):st(h[C]);je.key!=null&&fe.set(je.key,C)}let le,Me=0;const De=H-X+1;let Xe=!1,Ze=0;const tn=new Array(De);for(C=0;C=De){Ne(je,w,x,!0);continue}let et;if(je.key!=null)et=fe.get(je.key);else for(le=X;le<=H;le++)if(tn[le-X]===0&&sn(je,h[le])){et=le;break}et===void 0?Ne(je,w,x,!0):(tn[et-X]=C+1,et>=Ze?Ze=et:Xe=!0,I(je,h[et],p,null,w,x,$,E,A),Me++)}const tr=Xe?fa(tn):qt;for(le=tr.length-1,C=De-1;C>=0;C--){const je=X+C,et=h[je],nr=h[je+1],sr=je+1{const{el:x,type:$,transition:E,children:A,shapeFlag:C}=f;if(C&6){Ye(f.component.subTree,h,p,b);return}if(C&128){f.suspense.move(h,p,b);return}if(C&64){$.move(f,h,p,F);return}if($===Q){s(x,h,p);for(let O=0;OE.enter(x),w);else{const{leave:O,delayLeave:H,afterLeave:G}=E,X=()=>{f.ctx.isUnmounted?r(x):s(x,h,p)},fe=()=>{x._isLeaving&&x[Cl](!0),O(x,()=>{X(),G&&G()})};H?H(x,X,fe):fe()}else s(x,h,p)},Ne=(f,h,p,b=!1,w=!1)=>{const{type:x,props:$,ref:E,children:A,dynamicChildren:C,shapeFlag:B,patchFlag:O,dirs:H,cacheIndex:G}=f;if(O===-2&&(w=!1),E!=null&&(ft(),un(E,null,p,f,!0),mt()),G!=null&&(h.renderCache[G]=void 0),B&256){h.ctx.deactivate(f);return}const X=B&1&&H,fe=!zt(f);let le;if(fe&&(le=$&&$.onVnodeBeforeUnmount)&&tt(le,h,f),B&6)Et(f.component,p,b);else{if(B&128){f.suspense.unmount(p,b);return}X&&Pt(f,null,h,"beforeUnmount"),B&64?f.type.remove(f,h,p,F,b):C&&!C.hasOnce&&(x!==Q||O>0&&O&64)?He(C,h,p,!1,!0):(x===Q&&O&384||!w&&B&16)&&He(A,h,p),b&&Vt(f)}(fe&&(le=$&&$.onVnodeUnmounted)||X)&&Fe(()=>{le&&tt(le,h,f),X&&Pt(f,null,h,"unmounted")},p)},Vt=f=>{const{type:h,el:p,anchor:b,transition:w}=f;if(h===Q){Ht(p,b);return}if(h===cs){L(f);return}const x=()=>{r(p),w&&!w.persisted&&w.afterLeave&&w.afterLeave()};if(f.shapeFlag&1&&w&&!w.persisted){const{leave:$,delayLeave:E}=w,A=()=>$(p,x);E?E(f.el,x,A):A()}else x()},Ht=(f,h)=>{let p;for(;f!==h;)p=g(f),r(f),f=p;r(h)},Et=(f,h,p)=>{const{bum:b,scope:w,job:x,subTree:$,um:E,m:A,a:C}=f;xr(A),xr(C),b&&$n(b),w.stop(),x&&(x.flags|=8,Ne($,f,h,p)),E&&Fe(E,h),Fe(()=>{f.isUnmounted=!0},h)},He=(f,h,p,b=!1,w=!1,x=0)=>{for(let $=x;${if(f.shapeFlag&6)return _(f.component.subTree);if(f.shapeFlag&128)return f.suspense.next();const h=g(f.anchor||f.el),p=h&&h[kl];return p?g(p):h};let M=!1;const T=(f,h,p)=>{f==null?h._vnode&&Ne(h._vnode,null,null,!0):I(h._vnode||null,f,h,null,null,null,p),h._vnode=f,M||(M=!0,cr(),Eo(),M=!1)},F={p:I,um:Ne,m:Ye,r:Vt,mt:en,mc:Re,pc:te,pbc:Je,n:_,o:e};return{render:T,hydrate:void 0,createApp:Wl(T)}}function as({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function $t({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function da(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function ei(e,t,n=!1){const s=e.children,r=t.children;if(U(s)&&U(r))for(let o=0;o>1,e[n[l]]0&&(t[s]=n[o-1]),n[o]=s)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function ti(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:ti(t)}function xr(e){if(e)for(let t=0;te.__isSuspense;function ma(e,t){t&&t.pendingBranch?U(e)?t.effects.push(...e):t.effects.push(e):_l(e)}const Q=Symbol.for("v-fgt"),Yn=Symbol.for("v-txt"),gt=Symbol.for("v-cmt"),cs=Symbol.for("v-stc"),mn=[];let Ve=null;function y(e=!1){mn.push(Ve=e?null:[])}function ha(){mn.pop(),Ve=mn[mn.length-1]||null}let yn=1;function jn(e,t=!1){yn+=e,e<0&&Ve&&t&&(Ve.hasOnce=!0)}function si(e){return e.dynamicChildren=yn>0?Ve||qt:null,ha(),yn>0&&Ve&&Ve.push(e),e}function R(e,t,n,s,r,o){return si(d(e,t,n,s,r,o,!0))}function ie(e,t,n,s,r){return si(N(e,t,n,s,r,!0))}function xn(e){return e?e.__v_isVNode===!0:!1}function sn(e,t){return e.type===t.type&&e.key===t.key}const ri=({key:e})=>e??null,Tn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?pe(e)||Ee(e)||K(e)?{i:we,r:e,k:t,f:!!n}:e:null);function d(e,t=null,n=null,s=0,r=null,o=e===Q?0:1,i=!1,l=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ri(t),ref:t&&Tn(t),scopeId:$o,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:we};return l?(zs(a,n),o&128&&e.normalize(a)):n&&(a.shapeFlag|=pe(n)?8:16),yn>0&&!i&&Ve&&(a.patchFlag>0||o&6)&&a.patchFlag!==32&&Ve.push(a),a}const N=ga;function ga(e,t=null,n=null,s=0,r=null,o=!1){if((!e||e===Lo)&&(e=gt),xn(e)){const l=Yt(e,t,!0);return n&&zs(l,n),yn>0&&!o&&Ve&&(l.shapeFlag&6?Ve[Ve.indexOf(e)]=l:Ve.push(l)),l.patchFlag=-2,l}if(Aa(e)&&(e=e.__vccOpts),t){t=pa(t);let{class:l,style:a}=t;l&&!pe(l)&&(t.class=J(l)),de(a)&&(Us(a)&&!U(a)&&(a=$e({},a)),t.style=St(a))}const i=pe(e)?1:ni(e)?128:Rl(e)?64:de(e)?4:K(e)?2:0;return d(e,t,n,s,r,i,o,!0)}function pa(e){return e?Us(e)||zo(e)?$e({},e):e:null}function Yt(e,t,n=!1,s=!1){const{props:r,ref:o,patchFlag:i,children:l,transition:a}=e,c=t?va(r||{},t):r,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:c,key:c&&ri(c),ref:t&&t.ref?n&&o?U(o)?o.concat(Tn(t)):[o,Tn(t)]:Tn(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Q?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:a,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Yt(e.ssContent),ssFallback:e.ssFallback&&Yt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return a&&s&&qs(u,a.clone(u)),u}function ce(e=" ",t=0){return N(Yn,null,e,t)}function q(e="",t=!1){return t?(y(),ie(gt,null,e)):N(gt,null,e)}function st(e){return e==null||typeof e=="boolean"?N(gt):U(e)?N(Q,null,e.slice()):xn(e)?kt(e):N(Yn,null,String(e))}function kt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Yt(e)}function zs(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(U(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),zs(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!zo(t)?t._ctx=we:r===3&&we&&(we.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else K(t)?(t={default:t,_ctx:we},n=32):(t=String(t),s&64?(n=16,t=[ce(t)]):n=8);e.children=t,e.shapeFlag|=n}function va(...e){const t={};for(let n=0;nAe||we;let Fn,As;{const e=Gn(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),o=>{r.length>1?r.forEach(i=>i(o)):r[0](o)}};Fn=t("__VUE_INSTANCE_SETTERS__",n=>Ae=n),As=t("__VUE_SSR_SETTERS__",n=>bn=n)}const Cn=e=>{const t=Ae;return Fn(e),e.scope.on(),()=>{e.scope.off(),Fn(t)}},br=()=>{Ae&&Ae.scope.off(),Fn(null)};function oi(e){return e.vnode.shapeFlag&4}let bn=!1;function wa(e,t=!1,n=!1){t&&As(t);const{props:s,children:r}=e.vnode,o=oi(e);sa(e,s,o,t),la(e,r,n||t);const i=o?ka(e,t):void 0;return t&&As(!1),i}function ka(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Fl);const{setup:s}=n;if(s){ft();const r=e.setupContext=s.length>1?Ca(e):null,o=Cn(e),i=Rn(s,e,0,[e.props,r]),l=Zr(i);if(mt(),o(),(l||e.sp)&&!zt(e)&&Oo(e),l){if(i.then(br,br),t)return i.then(a=>{_r(e,a)}).catch(a=>{zn(a,e,0)});e.asyncDep=i}else _r(e,i)}else ii(e)}function _r(e,t,n){K(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:de(t)&&(e.setupState=Ro(t)),ii(e)}function ii(e,t,n){const s=e.type;e.render||(e.render=s.render||rt);{const r=Cn(e);ft();try{Vl(e)}finally{mt(),r()}}}const Ra={get(e,t){return Se(e,"get",""),e[t]}};function Ca(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Ra),slots:e.slots,emit:e.emit,expose:t}}function Xn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Ro(dl(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in dn)return dn[n](e)},has(t,n){return n in t||n in dn}})):e.proxy}function Sa(e,t=!0){return K(e)?e.displayName||e.name:e.name||t&&e.__name}function Aa(e){return K(e)&&"__vccOpts"in e}const oe=(e,t)=>pl(e,t,bn);function li(e,t,n){try{jn(-1);const s=arguments.length;return s===2?de(t)&&!U(t)?xn(t)?N(e,null,[t]):N(e,t):N(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&xn(n)&&(n=[n]),N(e,t,n))}finally{jn(1)}}const Ea="3.5.25";let Es;const wr=typeof window<"u"&&window.trustedTypes;if(wr)try{Es=wr.createPolicy("vue",{createHTML:e=>e})}catch{}const ai=Es?e=>Es.createHTML(e):e=>e,Pa="http://www.w3.org/2000/svg",$a="http://www.w3.org/1998/Math/MathML",ct=typeof document<"u"?document:null,kr=ct&&ct.createElement("template"),Ta={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?ct.createElementNS(Pa,e):t==="mathml"?ct.createElementNS($a,e):n?ct.createElement(e,{is:n}):ct.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>ct.createTextNode(e),createComment:e=>ct.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>ct.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,o){const i=n?n.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===o||!(r=r.nextSibling)););else{kr.innerHTML=ai(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=kr.content;if(s==="svg"||s==="mathml"){const a=l.firstChild;for(;a.firstChild;)l.appendChild(a.firstChild);l.removeChild(a)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Oa=Symbol("_vtc");function Ia(e,t,n){const s=e[Oa];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Rr=Symbol("_vod"),Na=Symbol("_vsh"),Ma=Symbol(""),Da=/(?:^|;)\s*display\s*:/;function La(e,t,n){const s=e.style,r=pe(n);let o=!1;if(n&&!r){if(t)if(pe(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&On(s,l,"")}else for(const i in t)n[i]==null&&On(s,i,"");for(const i in n)i==="display"&&(o=!0),On(s,i,n[i])}else if(r){if(t!==n){const i=s[Ma];i&&(n+=";"+i),s.cssText=n,o=Da.test(n)}}else t&&e.removeAttribute("style");Rr in e&&(e[Rr]=o?s.display:"",e[Na]&&(s.display="none"))}const Cr=/\s*!important$/;function On(e,t,n){if(U(n))n.forEach(s=>On(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=ja(e,t);Cr.test(n)?e.setProperty(Lt(s),n.replace(Cr,""),"important"):e[s]=n}}const Sr=["Webkit","Moz","ms"],us={};function ja(e,t){const n=us[t];if(n)return n;let s=Ge(t);if(s!=="filter"&&s in e)return us[t]=s;s=Un(s);for(let r=0;rds||(Ba.then(()=>ds=0),ds=Date.now());function Ga(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;ot(qa(s,n.value),t,5,[s])};return n.value=e,n.attached=Ua(),n}function qa(e,t){if(U(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Or=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Wa=(e,t,n,s,r,o)=>{const i=r==="svg";t==="class"?Ia(e,s,i):t==="style"?La(e,n,s):Vn(t)?Ns(t)||Va(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Ka(e,t,s,i))?(Pr(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Er(e,t,s,i,o,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!pe(s))?Pr(e,Ge(t),s,o,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Er(e,t,s,i))};function Ka(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Or(t)&&K(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Or(t)&&pe(n)?!1:t in e}const Ir=e=>{const t=e.props["onUpdate:modelValue"]||!1;return U(t)?n=>$n(t,n):t},fs=Symbol("_assign"),za={deep:!0,created(e,t,n){e[fs]=Ir(n),ci(e,"change",()=>{const s=e._modelValue,r=Ja(e),o=e.checked,i=e[fs];if(U(s)){const l=ro(s,r),a=l!==-1;if(o&&!a)i(s.concat(r));else if(!o&&a){const c=[...s];c.splice(l,1),i(c)}}else if(Hn(s)){const l=new Set(s);o?l.add(r):l.delete(r),i(l)}else i(ui(e,o))})},mounted:Nr,beforeUpdate(e,t,n){e[fs]=Ir(n),Nr(e,t,n)}};function Nr(e,{value:t,oldValue:n},s){e._modelValue=t;let r;if(U(t))r=ro(t,s.props.value)>-1;else if(Hn(t))r=t.has(s.props.value);else{if(t===n)return;r=qn(t,ui(e,!0))}e.checked!==r&&(e.checked=r)}function Ja(e){return"_value"in e?e._value:e.value}function ui(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const Qa=["ctrl","shift","alt","meta"],Ya={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Qa.some(n=>e[`${n}Key`]&&!t.includes(n))},Js=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=((r,...o)=>{for(let i=0;i{const t=Za().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=nc(s);if(!r)return;const o=t._component;!K(o)&&!o.render&&!o.template&&(o.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const i=n(r,!1,tc(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),i},t});function tc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function nc(e){return pe(e)?document.querySelector(e):e}const Gt=typeof document<"u";function di(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function sc(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&di(e.default)}const ne=Object.assign;function ms(e,t){const n={};for(const s in t){const r=t[s];n[s]=ze(r)?r.map(e):e(r)}return n}const hn=()=>{},ze=Array.isArray;function Dr(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}const fi=/#/g,rc=/&/g,oc=/\//g,ic=/=/g,lc=/\?/g,mi=/\+/g,ac=/%5B/g,cc=/%5D/g,hi=/%5E/g,uc=/%60/g,gi=/%7B/g,dc=/%7C/g,pi=/%7D/g,fc=/%20/g;function Qs(e){return e==null?"":encodeURI(""+e).replace(dc,"|").replace(ac,"[").replace(cc,"]")}function mc(e){return Qs(e).replace(gi,"{").replace(pi,"}").replace(hi,"^")}function Ps(e){return Qs(e).replace(mi,"%2B").replace(fc,"+").replace(fi,"%23").replace(rc,"%26").replace(uc,"`").replace(gi,"{").replace(pi,"}").replace(hi,"^")}function hc(e){return Ps(e).replace(ic,"%3D")}function gc(e){return Qs(e).replace(fi,"%23").replace(lc,"%3F")}function pc(e){return gc(e).replace(oc,"%2F")}function _n(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const vc=/\/$/,yc=e=>e.replace(vc,"");function hs(e,t,n="/"){let s,r={},o="",i="";const l=t.indexOf("#");let a=t.indexOf("?");return a=l>=0&&a>l?-1:a,a>=0&&(s=t.slice(0,a),o=t.slice(a,l>0?l:t.length),r=e(o.slice(1))),l>=0&&(s=s||t.slice(0,l),i=t.slice(l,t.length)),s=wc(s??t,n),{fullPath:s+o+i,path:s,query:r,hash:_n(i)}}function xc(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Lr(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function bc(e,t,n){const s=t.matched.length-1,r=n.matched.length-1;return s>-1&&s===r&&Xt(t.matched[s],n.matched[r])&&vi(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Xt(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function vi(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!_c(e[n],t[n]))return!1;return!0}function _c(e,t){return ze(e)?jr(e,t):ze(t)?jr(t,e):e===t}function jr(e,t){return ze(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function wc(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),s=e.split("/"),r=s[s.length-1];(r===".."||r===".")&&s.push("");let o=n.length-1,i,l;for(i=0;i1&&o--;else break;return n.slice(0,o).join("/")+"/"+s.slice(i).join("/")}const bt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};let $s=(function(e){return e.pop="pop",e.push="push",e})({}),gs=(function(e){return e.back="back",e.forward="forward",e.unknown="",e})({});function kc(e){if(!e)if(Gt){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),yc(e)}const Rc=/^[^#]+#/;function Cc(e,t){return e.replace(Rc,"#")+t}function Sc(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const Zn=()=>({left:window.scrollX,top:window.scrollY});function Ac(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#"),r=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!r)return;t=Sc(r,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Fr(e,t){return(history.state?history.state.position-t:-1)+e}const Ts=new Map;function Ec(e,t){Ts.set(e,t)}function Pc(e){const t=Ts.get(e);return Ts.delete(e),t}function $c(e){return typeof e=="string"||e&&typeof e=="object"}function yi(e){return typeof e=="string"||typeof e=="symbol"}let ge=(function(e){return e[e.MATCHER_NOT_FOUND=1]="MATCHER_NOT_FOUND",e[e.NAVIGATION_GUARD_REDIRECT=2]="NAVIGATION_GUARD_REDIRECT",e[e.NAVIGATION_ABORTED=4]="NAVIGATION_ABORTED",e[e.NAVIGATION_CANCELLED=8]="NAVIGATION_CANCELLED",e[e.NAVIGATION_DUPLICATED=16]="NAVIGATION_DUPLICATED",e})({});const xi=Symbol("");ge.MATCHER_NOT_FOUND+"",ge.NAVIGATION_GUARD_REDIRECT+"",ge.NAVIGATION_ABORTED+"",ge.NAVIGATION_CANCELLED+"",ge.NAVIGATION_DUPLICATED+"";function Zt(e,t){return ne(new Error,{type:e,[xi]:!0},t)}function at(e,t){return e instanceof Error&&xi in e&&(t==null||!!(e.type&t))}const Tc=["params","query","hash"];function Oc(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;const t={};for(const n of Tc)n in e&&(t[n]=e[n]);return JSON.stringify(t,null,2)}function Ic(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;sr&&Ps(r)):[s&&Ps(s)]).forEach(r=>{r!==void 0&&(t+=(t.length?"&":"")+n,r!=null&&(t+="="+r))})}return t}function Nc(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=ze(s)?s.map(r=>r==null?null:""+r):s==null?s:""+s)}return t}const Mc=Symbol(""),Hr=Symbol(""),Ys=Symbol(""),Xs=Symbol(""),Os=Symbol("");function rn(){let e=[];function t(s){return e.push(s),()=>{const r=e.indexOf(s);r>-1&&e.splice(r,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Rt(e,t,n,s,r,o=i=>i()){const i=s&&(s.enterCallbacks[r]=s.enterCallbacks[r]||[]);return()=>new Promise((l,a)=>{const c=g=>{g===!1?a(Zt(ge.NAVIGATION_ABORTED,{from:n,to:t})):g instanceof Error?a(g):$c(g)?a(Zt(ge.NAVIGATION_GUARD_REDIRECT,{from:t,to:g})):(i&&s.enterCallbacks[r]===i&&typeof g=="function"&&i.push(g),l())},u=o(()=>e.call(s&&s.instances[r],t,n,c));let m=Promise.resolve(u);e.length<3&&(m=m.then(c)),m.catch(g=>a(g))})}function ps(e,t,n,s,r=o=>o()){const o=[];for(const i of e)for(const l in i.components){let a=i.components[l];if(!(t!=="beforeRouteEnter"&&!i.instances[l]))if(di(a)){const c=(a.__vccOpts||a)[t];c&&o.push(Rt(c,n,s,i,l,r))}else{let c=a();o.push(()=>c.then(u=>{if(!u)throw new Error(`Couldn't resolve component "${l}" at "${i.path}"`);const m=sc(u)?u.default:u;i.mods[l]=u,i.components[l]=m;const g=(m.__vccOpts||m)[t];return g&&Rt(g,n,s,i,l,r)()}))}}return o}function Dc(e,t){const n=[],s=[],r=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;iXt(c,l))?s.push(l):n.push(l));const a=e.matched[i];a&&(t.matched.find(c=>Xt(c,a))||r.push(a))}return[n,s,r]}let Lc=()=>location.protocol+"//"+location.host;function bi(e,t){const{pathname:n,search:s,hash:r}=t,o=e.indexOf("#");if(o>-1){let i=r.includes(e.slice(o))?e.slice(o).length:1,l=r.slice(i);return l[0]!=="/"&&(l="/"+l),Lr(l,"")}return Lr(n,e)+s+r}function jc(e,t,n,s){let r=[],o=[],i=null;const l=({state:g})=>{const v=bi(e,location),S=n.value,I=t.value;let W=0;if(g){if(n.value=v,t.value=g,i&&i===S){i=null;return}W=I?g.position-I.position:0}else s(v);r.forEach(j=>{j(n.value,S,{delta:W,type:$s.pop,direction:W?W>0?gs.forward:gs.back:gs.unknown})})};function a(){i=n.value}function c(g){r.push(g);const v=()=>{const S=r.indexOf(g);S>-1&&r.splice(S,1)};return o.push(v),v}function u(){if(document.visibilityState==="hidden"){const{history:g}=window;if(!g.state)return;g.replaceState(ne({},g.state,{scroll:Zn()}),"")}}function m(){for(const g of o)g();o=[],window.removeEventListener("popstate",l),window.removeEventListener("pagehide",u),document.removeEventListener("visibilitychange",u)}return window.addEventListener("popstate",l),window.addEventListener("pagehide",u),document.addEventListener("visibilitychange",u),{pauseListeners:a,listen:c,destroy:m}}function Br(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?Zn():null}}function Fc(e){const{history:t,location:n}=window,s={value:bi(e,n)},r={value:t.state};r.value||o(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(a,c,u){const m=e.indexOf("#"),g=m>-1?(n.host&&document.querySelector("base")?e:e.slice(m))+a:Lc()+e+a;try{t[u?"replaceState":"pushState"](c,"",g),r.value=c}catch(v){console.error(v),n[u?"replace":"assign"](g)}}function i(a,c){o(a,ne({},t.state,Br(r.value.back,a,r.value.forward,!0),c,{position:r.value.position}),!0),s.value=a}function l(a,c){const u=ne({},r.value,t.state,{forward:a,scroll:Zn()});o(u.current,u,!0),o(a,ne({},Br(s.value,a,null),{position:u.position+1},c),!1),s.value=a}return{location:s,state:r,push:l,replace:i}}function Vc(e){e=kc(e);const t=Fc(e),n=jc(e,t.state,t.location,t.replace);function s(o,i=!0){i||n.pauseListeners(),history.go(o)}const r=ne({location:"",base:e,go:s,createHref:Cc.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}function Hc(e){return e=location.host?e||location.pathname+location.search:"",e.includes("#")||(e+="#"),Vc(e)}let Ot=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e})({});var ye=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e})(ye||{});const Bc={type:Ot.Static,value:""},Uc=/[a-zA-Z0-9_]/;function Gc(e){if(!e)return[[]];if(e==="/")return[[Bc]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(v){throw new Error(`ERR (${n})/"${c}": ${v}`)}let n=ye.Static,s=n;const r=[];let o;function i(){o&&r.push(o),o=[]}let l=0,a,c="",u="";function m(){c&&(n===ye.Static?o.push({type:Ot.Static,value:c}):n===ye.Param||n===ye.ParamRegExp||n===ye.ParamRegExpEnd?(o.length>1&&(a==="*"||a==="+")&&t(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),o.push({type:Ot.Param,value:c,regexp:u,repeatable:a==="*"||a==="+",optional:a==="*"||a==="?"})):t("Invalid state to consume buffer"),c="")}function g(){c+=a}for(;lt.length?t.length===1&&t[0]===Oe.Static+Oe.Segment?1:-1:0}function _i(e,t){let n=0;const s=e.score,r=t.score;for(;n0&&t[t.length-1]<0}const Jc={strict:!1,end:!0,sensitive:!1};function Qc(e,t,n){const s=Kc(Gc(e.path),n),r=ne(s,{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function Yc(e,t){const n=[],s=new Map;t=Dr(Jc,t);function r(m){return s.get(m)}function o(m,g,v){const S=!v,I=Wr(m);I.aliasOf=v&&v.record;const W=Dr(t,m),j=[I];if("alias"in m){const L=typeof m.alias=="string"?[m.alias]:m.alias;for(const ee of L)j.push(Wr(ne({},I,{components:v?v.record.components:I.components,path:ee,aliasOf:v?v.record:I})))}let D,V;for(const L of j){const{path:ee}=L;if(g&&ee[0]!=="/"){const ve=g.record.path,he=ve[ve.length-1]==="/"?"":"/";L.path=g.record.path+(ee&&he+ee)}if(D=Qc(L,g,W),v?v.alias.push(D):(V=V||D,V!==D&&V.alias.push(D),S&&m.name&&!Kr(D)&&i(m.name)),wi(D)&&a(D),I.children){const ve=I.children;for(let he=0;he{i(V)}:hn}function i(m){if(yi(m)){const g=s.get(m);g&&(s.delete(m),n.splice(n.indexOf(g),1),g.children.forEach(i),g.alias.forEach(i))}else{const g=n.indexOf(m);g>-1&&(n.splice(g,1),m.record.name&&s.delete(m.record.name),m.children.forEach(i),m.alias.forEach(i))}}function l(){return n}function a(m){const g=eu(m,n);n.splice(g,0,m),m.record.name&&!Kr(m)&&s.set(m.record.name,m)}function c(m,g){let v,S={},I,W;if("name"in m&&m.name){if(v=s.get(m.name),!v)throw Zt(ge.MATCHER_NOT_FOUND,{location:m});W=v.record.name,S=ne(qr(g.params,v.keys.filter(V=>!V.optional).concat(v.parent?v.parent.keys.filter(V=>V.optional):[]).map(V=>V.name)),m.params&&qr(m.params,v.keys.map(V=>V.name))),I=v.stringify(S)}else if(m.path!=null)I=m.path,v=n.find(V=>V.re.test(I)),v&&(S=v.parse(I),W=v.record.name);else{if(v=g.name?s.get(g.name):n.find(V=>V.re.test(g.path)),!v)throw Zt(ge.MATCHER_NOT_FOUND,{location:m,currentLocation:g});W=v.record.name,S=ne({},g.params,m.params),I=v.stringify(S)}const j=[];let D=v;for(;D;)j.unshift(D.record),D=D.parent;return{name:W,path:I,params:S,matched:j,meta:Zc(j)}}e.forEach(m=>o(m));function u(){n.length=0,s.clear()}return{addRoute:o,resolve:c,removeRoute:i,clearRoutes:u,getRoutes:l,getRecordMatcher:r}}function qr(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function Wr(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Xc(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Xc(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function Kr(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Zc(e){return e.reduce((t,n)=>ne(t,n.meta),{})}function eu(e,t){let n=0,s=t.length;for(;n!==s;){const o=n+s>>1;_i(e,t[o])<0?s=o:n=o+1}const r=tu(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function tu(e){let t=e;for(;t=t.parent;)if(wi(t)&&_i(e,t)===0)return t}function wi({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function zr(e){const t=Pe(Ys),n=Pe(Xs),s=oe(()=>{const a=P(e.to);return t.resolve(a)}),r=oe(()=>{const{matched:a}=s.value,{length:c}=a,u=a[c-1],m=n.matched;if(!u||!m.length)return-1;const g=m.findIndex(Xt.bind(null,u));if(g>-1)return g;const v=Jr(a[c-2]);return c>1&&Jr(u)===v&&m[m.length-1].path!==v?m.findIndex(Xt.bind(null,a[c-2])):g}),o=oe(()=>r.value>-1&&ou(n.params,s.value.params)),i=oe(()=>r.value>-1&&r.value===n.matched.length-1&&vi(n.params,s.value.params));function l(a={}){if(ru(a)){const c=t[P(e.replace)?"replace":"push"](P(e.to)).catch(hn);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>c),c}return Promise.resolve()}return{route:s,href:oe(()=>s.value.href),isActive:o,isExactActive:i,navigate:l}}function nu(e){return e.length===1?e[0]:e}const su=To({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:zr,setup(e,{slots:t}){const n=Kn(zr(e)),{options:s}=Pe(Ys),r=oe(()=>({[Qr(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[Qr(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&nu(t.default(n));return e.custom?o:li("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},o)}}}),Ce=su;function ru(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function ou(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!ze(r)||r.length!==s.length||s.some((o,i)=>o!==r[i]))return!1}return!0}function Jr(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Qr=(e,t,n)=>e??t??n,iu=To({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=Pe(Os),r=oe(()=>e.route||s.value),o=Pe(Hr,0),i=oe(()=>{let c=P(o);const{matched:u}=r.value;let m;for(;(m=u[c])&&!m.components;)c++;return c}),l=oe(()=>r.value.matched[i.value]);fn(Hr,oe(()=>i.value+1)),fn(Mc,l),fn(Os,r);const a=ke();return Ue(()=>[a.value,l.value,e.name],([c,u,m],[g,v,S])=>{u&&(u.instances[m]=c,v&&v!==u&&c&&c===g&&(u.leaveGuards.size||(u.leaveGuards=v.leaveGuards),u.updateGuards.size||(u.updateGuards=v.updateGuards))),c&&u&&(!v||!Xt(u,v)||!g)&&(u.enterCallbacks[m]||[]).forEach(I=>I(c))},{flush:"post"}),()=>{const c=r.value,u=e.name,m=l.value,g=m&&m.components[u];if(!g)return Yr(n.default,{Component:g,route:c});const v=m.props[u],S=v?v===!0?c.params:typeof v=="function"?v(c):v:null,W=li(g,ne({},S,t,{onVnodeUnmounted:j=>{j.component.isUnmounted&&(m.instances[u]=null)},ref:a}));return Yr(n.default,{Component:W,route:c})||W}}});function Yr(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const lu=iu;function au(e){const t=Yc(e.routes,e),n=e.parseQuery||Ic,s=e.stringifyQuery||Vr,r=e.history,o=rn(),i=rn(),l=rn(),a=fl(bt);let c=bt;Gt&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=ms.bind(null,_=>""+_),m=ms.bind(null,pc),g=ms.bind(null,_n);function v(_,M){let T,F;return yi(_)?(T=t.getRecordMatcher(_),F=M):F=_,t.addRoute(F,T)}function S(_){const M=t.getRecordMatcher(_);M&&t.removeRoute(M)}function I(){return t.getRoutes().map(_=>_.record)}function W(_){return!!t.getRecordMatcher(_)}function j(_,M){if(M=ne({},M||a.value),typeof _=="string"){const p=hs(n,_,M.path),b=t.resolve({path:p.path},M),w=r.createHref(p.fullPath);return ne(p,b,{params:g(b.params),hash:_n(p.hash),redirectedFrom:void 0,href:w})}let T;if(_.path!=null)T=ne({},_,{path:hs(n,_.path,M.path).path});else{const p=ne({},_.params);for(const b in p)p[b]==null&&delete p[b];T=ne({},_,{params:m(p)}),M.params=m(M.params)}const F=t.resolve(T,M),Y=_.hash||"";F.params=u(g(F.params));const f=xc(s,ne({},_,{hash:mc(Y),path:F.path})),h=r.createHref(f);return ne({fullPath:f,hash:Y,query:s===Vr?Nc(_.query):_.query||{}},F,{redirectedFrom:void 0,href:h})}function D(_){return typeof _=="string"?hs(n,_,a.value.path):ne({},_)}function V(_,M){if(c!==_)return Zt(ge.NAVIGATION_CANCELLED,{from:M,to:_})}function L(_){return he(_)}function ee(_){return L(ne(D(_),{replace:!0}))}function ve(_,M){const T=_.matched[_.matched.length-1];if(T&&T.redirect){const{redirect:F}=T;let Y=typeof F=="function"?F(_,M):F;return typeof Y=="string"&&(Y=Y.includes("?")||Y.includes("#")?Y=D(Y):{path:Y},Y.params={}),ne({query:_.query,hash:_.hash,params:Y.path!=null?{}:_.params},Y)}}function he(_,M){const T=c=j(_),F=a.value,Y=_.state,f=_.force,h=_.replace===!0,p=ve(T,F);if(p)return he(ne(D(p),{state:typeof p=="object"?ne({},Y,p.state):Y,force:f,replace:h}),M||T);const b=T;b.redirectedFrom=M;let w;return!f&&bc(s,F,T)&&(w=Zt(ge.NAVIGATION_DUPLICATED,{to:b,from:F}),Ye(F,F,!0,!1)),(w?Promise.resolve(w):Je(b,F)).catch(x=>at(x)?at(x,ge.NAVIGATION_GUARD_REDIRECT)?x:xt(x):te(x,b,F)).then(x=>{if(x){if(at(x,ge.NAVIGATION_GUARD_REDIRECT))return he(ne({replace:h},D(x.to),{state:typeof x.to=="object"?ne({},Y,x.to.state):Y,force:f}),M||b)}else x=At(b,F,!0,h,Y);return yt(b,F,x),x})}function Re(_,M){const T=V(_,M);return T?Promise.reject(T):Promise.resolve()}function vt(_){const M=Ht.values().next().value;return M&&typeof M.runWithContext=="function"?M.runWithContext(_):_()}function Je(_,M){let T;const[F,Y,f]=Dc(_,M);T=ps(F.reverse(),"beforeRouteLeave",_,M);for(const p of F)p.leaveGuards.forEach(b=>{T.push(Rt(b,_,M))});const h=Re.bind(null,_,M);return T.push(h),He(T).then(()=>{T=[];for(const p of o.list())T.push(Rt(p,_,M));return T.push(h),He(T)}).then(()=>{T=ps(Y,"beforeRouteUpdate",_,M);for(const p of Y)p.updateGuards.forEach(b=>{T.push(Rt(b,_,M))});return T.push(h),He(T)}).then(()=>{T=[];for(const p of f)if(p.beforeEnter)if(ze(p.beforeEnter))for(const b of p.beforeEnter)T.push(Rt(b,_,M));else T.push(Rt(p.beforeEnter,_,M));return T.push(h),He(T)}).then(()=>(_.matched.forEach(p=>p.enterCallbacks={}),T=ps(f,"beforeRouteEnter",_,M,vt),T.push(h),He(T))).then(()=>{T=[];for(const p of i.list())T.push(Rt(p,_,M));return T.push(h),He(T)}).catch(p=>at(p,ge.NAVIGATION_CANCELLED)?p:Promise.reject(p))}function yt(_,M,T){l.list().forEach(F=>vt(()=>F(_,M,T)))}function At(_,M,T,F,Y){const f=V(_,M);if(f)return f;const h=M===bt,p=Gt?history.state:{};T&&(F||h?r.replace(_.fullPath,ne({scroll:h&&p&&p.scroll},Y)):r.push(_.fullPath,Y)),a.value=_,Ye(_,M,T,h),xt()}let Qe;function en(){Qe||(Qe=r.listen((_,M,T)=>{if(!Et.listening)return;const F=j(_),Y=ve(F,Et.currentRoute.value);if(Y){he(ne(Y,{replace:!0,force:!0}),F).catch(hn);return}c=F;const f=a.value;Gt&&Ec(Fr(f.fullPath,T.delta),Zn()),Je(F,f).catch(h=>at(h,ge.NAVIGATION_ABORTED|ge.NAVIGATION_CANCELLED)?h:at(h,ge.NAVIGATION_GUARD_REDIRECT)?(he(ne(D(h.to),{force:!0}),F).then(p=>{at(p,ge.NAVIGATION_ABORTED|ge.NAVIGATION_DUPLICATED)&&!T.delta&&T.type===$s.pop&&r.go(-1,!1)}).catch(hn),Promise.reject()):(T.delta&&r.go(-T.delta,!1),te(h,F,f))).then(h=>{h=h||At(F,f,!1),h&&(T.delta&&!at(h,ge.NAVIGATION_CANCELLED)?r.go(-T.delta,!1):T.type===$s.pop&&at(h,ge.NAVIGATION_ABORTED|ge.NAVIGATION_DUPLICATED)&&r.go(-1,!1)),yt(F,f,h)}).catch(hn)}))}let Ft=rn(),be=rn(),ae;function te(_,M,T){xt(_);const F=be.list();return F.length?F.forEach(Y=>Y(_,M,T)):console.error(_),Promise.reject(_)}function it(){return ae&&a.value!==bt?Promise.resolve():new Promise((_,M)=>{Ft.add([_,M])})}function xt(_){return ae||(ae=!_,en(),Ft.list().forEach(([M,T])=>_?T(_):M()),Ft.reset()),_}function Ye(_,M,T,F){const{scrollBehavior:Y}=e;if(!Gt||!Y)return Promise.resolve();const f=!T&&Pc(Fr(_.fullPath,0))||(F||!T)&&history.state&&history.state.scroll||null;return So().then(()=>Y(_,M,f)).then(h=>h&&Ac(h)).catch(h=>te(h,_,M))}const Ne=_=>r.go(_);let Vt;const Ht=new Set,Et={currentRoute:a,listening:!0,addRoute:v,removeRoute:S,clearRoutes:t.clearRoutes,hasRoute:W,getRoutes:I,resolve:j,options:e,push:L,replace:ee,go:Ne,back:()=>Ne(-1),forward:()=>Ne(1),beforeEach:o.add,beforeResolve:i.add,afterEach:l.add,onError:be.add,isReady:it,install(_){_.component("RouterLink",Ce),_.component("RouterView",lu),_.config.globalProperties.$router=Et,Object.defineProperty(_.config.globalProperties,"$route",{enumerable:!0,get:()=>P(a)}),Gt&&!Vt&&a.value===bt&&(Vt=!0,L(r.location).catch(F=>{}));const M={};for(const F in bt)Object.defineProperty(M,F,{get:()=>a.value[F],enumerable:!0});_.provide(Ys,Et),_.provide(Xs,wo(M)),_.provide(Os,a);const T=_.unmount;Ht.add(_),_.unmount=function(){Ht.delete(_),Ht.size<1&&(c=bt,Qe&&Qe(),Qe=null,a.value=bt,Vt=!1,ae=!1),T()}}};function He(_){return _.reduce((M,T)=>M.then(()=>vt(T)),Promise.resolve())}return Et}function es(e){return Pe(Xs)}const cu=["aria-label"],uu={key:0,class:"fas fa-moon text-purple-400"},du={key:1,class:"fas fa-sun text-yellow-500"},fu={__name:"ThemeToggle",setup(e){const t=ke(!1);jt(()=>{const r=localStorage.getItem("theme"),o=window.matchMedia("(prefers-color-scheme: dark)").matches;t.value=r==="dark"||!r&&o,n(),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",i=>{localStorage.getItem("theme")||(t.value=i.matches,n())})}),Ue(t,()=>{n(),localStorage.setItem("theme",t.value?"dark":"light")});function n(){t.value?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")}function s(){t.value=!t.value}return(r,o)=>(y(),R("button",{onClick:s,class:"p-2 rounded-lg hover:bg-gray-200 dark:hover:bg-gray-700 transition","aria-label":t.value?"Switch to light mode":"Switch to dark mode"},[t.value?(y(),R("i",uu)):(y(),R("i",du))],8,cu))}},mu={class:"sticky top-0 z-50 glass shadow-modern"},hu={class:"container mx-auto px-4"},gu={class:"flex items-center justify-between h-16"},pu={class:"hidden md:flex items-center space-x-6"},vu={class:"flex items-center space-x-4"},yu={key:0,class:"md:hidden py-4 border-t border-gray-200 dark:border-gray-700"},xu={class:"flex flex-col space-y-3"},bu={__name:"Navbar",setup(e){const t=es(),n=Pe("globalData"),s=ke(!1),r=oe(()=>n.value?.Repositories||[]);return(o,i)=>(y(),R("nav",mu,[d("div",hu,[d("div",gu,[N(P(Ce),{to:"/",class:"flex items-center space-x-2"},{default:Z(()=>[...i[4]||(i[4]=[d("i",{class:"fas fa-rocket text-2xl gradient-text"},null,-1),d("span",{class:"text-xl font-bold gradient-text"},"Git Velocity",-1)])]),_:1}),d("div",pu,[N(P(Ce),{to:"/",class:J(P(t).path==="/"?"nav-link-active":"nav-link")},{default:Z(()=>[...i[5]||(i[5]=[ce(" Dashboard ",-1)])]),_:1},8,["class"]),N(P(Ce),{to:"/leaderboard",class:J(P(t).path==="/leaderboard"?"nav-link-active":"nav-link")},{default:Z(()=>[...i[6]||(i[6]=[ce(" Leaderboard ",-1)])]),_:1},8,["class"]),(y(!0),R(Q,null,xe(r.value,l=>(y(),ie(P(Ce),{key:`${l.Owner}/${l.Name}`,to:`/repos/${l.Owner}/${l.Name}`,class:J(P(t).path.includes(`/repos/${l.Owner}/${l.Name}`)?"nav-link-active":"nav-link")},{default:Z(()=>[ce(k(l.Name),1)]),_:2},1032,["to","class"]))),128))]),d("div",vu,[N(fu),d("button",{onClick:i[0]||(i[0]=l=>s.value=!s.value),class:"md:hidden p-2 rounded-lg hover:bg-gray-200 dark:hover:bg-gray-700 transition"},[...i[7]||(i[7]=[d("i",{class:"fas fa-bars text-gray-700 dark:text-gray-200"},null,-1)])])])]),s.value?(y(),R("div",yu,[d("div",xu,[N(P(Ce),{to:"/",onClick:i[1]||(i[1]=l=>s.value=!1),class:J(P(t).path==="/"?"nav-link-active":"nav-link")},{default:Z(()=>[...i[8]||(i[8]=[ce(" Dashboard ",-1)])]),_:1},8,["class"]),N(P(Ce),{to:"/leaderboard",onClick:i[2]||(i[2]=l=>s.value=!1),class:J(P(t).path==="/leaderboard"?"nav-link-active":"nav-link")},{default:Z(()=>[...i[9]||(i[9]=[ce(" Leaderboard ",-1)])]),_:1},8,["class"]),(y(!0),R(Q,null,xe(r.value,l=>(y(),ie(P(Ce),{key:`${l.Owner}/${l.Name}`,to:`/repos/${l.Owner}/${l.Name}`,onClick:i[3]||(i[3]=a=>s.value=!1),class:J(P(t).path.includes(`/repos/${l.Owner}/${l.Name}`)?"nav-link-active":"nav-link")},{default:Z(()=>[ce(k(l.Name),1)]),_:2},1032,["to","class"]))),128))])])):q("",!0)])]))}},_u={class:"py-8 px-4 mt-16 border-t border-gray-200 dark:border-gray-700"},wu={class:"container mx-auto text-center"},ku={key:0,class:"text-sm text-gray-400 dark:text-gray-500 mt-2"},Ru={__name:"Footer",setup(e){const t=Pe("globalData"),n=oe(()=>t.value?.GeneratedAt?new Date(t.value.GeneratedAt).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}):"");return(s,r)=>(y(),R("footer",_u,[d("div",wu,[r[0]||(r[0]=d("p",{class:"text-gray-500 dark:text-gray-400"},[ce(" Generated by "),d("a",{href:"https://github.com/lukaszraczylo/git-velocity",class:"text-primary-500 hover:text-primary-600",target:"_blank",rel:"noopener noreferrer"}," Git Velocity ")],-1)),n.value?(y(),R("p",ku,k(n.value),1)):q("",!0)])]))}},Cu={class:"min-h-screen flex flex-col"},Su={class:"flex-1"},Au={key:0,class:"flex items-center justify-center min-h-[60vh]"},Eu={key:1,class:"flex items-center justify-center min-h-[60vh]"},Pu={class:"text-center"},$u={class:"text-gray-600 dark:text-gray-400"},Tu={__name:"App",setup(e){const t=ke(null),n=ke(!0),s=ke(null);return fn("globalData",t),jt(async()=>{try{const r=await fetch("./data/global.json");if(!r.ok)throw new Error("Failed to load data");t.value=await r.json()}catch(r){s.value=r.message}finally{n.value=!1}}),(r,o)=>{const i=Ll("router-view");return y(),R("div",Cu,[N(bu),d("main",Su,[n.value?(y(),R("div",Au,[...o[0]||(o[0]=[d("div",{class:"text-center"},[d("i",{class:"fas fa-spinner fa-spin text-4xl text-primary-500 mb-4"}),d("p",{class:"text-gray-600 dark:text-gray-400"},"Loading dashboard...")],-1)])])):s.value?(y(),R("div",Eu,[d("div",Pu,[o[1]||(o[1]=d("i",{class:"fas fa-exclamation-triangle text-4xl text-red-500 mb-4"},null,-1)),d("p",$u,k(s.value),1)])])):(y(),ie(i,{key:2}))]),N(Ru)])}}};function z(e){return e==null?"0":e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":String(e)}function Ou(e){return e==null?"-":e<1?Math.round(e*60)+"m":e<24?e.toFixed(1)+"h":(e/24).toFixed(1)+"d"}function vs(e){return e?new Date(e).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}):""}function Iu(e){return e==null?"0%":e.toFixed(1)+"%"}function ki(e){return e?e.toLowerCase().replace(/\s+/g,"-").replace(/_/g,"-").replace(/[^a-z0-9-]/g,""):""}const Nu={class:"flex items-center justify-between"},Mu={class:"text-sm text-gray-500 dark:text-gray-400 mt-1"},_e={__name:"StatCard",props:{value:{type:[Number,String],required:!0},label:{type:String,required:!0},icon:{type:String,default:""},iconColor:{type:String,default:"text-gray-500"},valueClass:{type:String,default:"gradient-text"},delay:{type:String,default:"0s"}},setup(e){return(t,n)=>(y(),R("div",{class:"card animate-fade-in-up",style:St({animationDelay:e.delay})},[d("div",Nu,[d("div",null,[d("div",{class:J(["text-3xl font-bold",e.valueClass])},k(typeof e.value=="number"?P(z)(e.value):e.value),3),d("div",Mu,k(e.label),1)]),e.icon?(y(),R("div",{key:0,class:J(["text-3xl opacity-50",e.iconColor])},[d("i",{class:J(e.icon)},null,2)],2)):q("",!0)])],4))}},Du=["src","alt"],Sn={__name:"Avatar",props:{src:{type:String,default:""},name:{type:String,required:!0},size:{type:String,default:"md"}},setup(e){const t=e,n={sm:"w-8 h-8 text-xs",md:"w-10 h-10 text-sm",lg:"w-14 h-14 text-xl",xl:"w-16 h-16 text-2xl","2xl":"w-32 h-32 text-4xl"},s=oe(()=>t.name.charAt(0).toUpperCase()),r=oe(()=>n[t.size]||n.md);return(o,i)=>e.src?(y(),R("img",{key:0,src:e.src,alt:e.name,class:J([r.value,"rounded-full"])},null,10,Du)):(y(),R("div",{key:1,class:J([r.value,"rounded-full bg-gradient-to-br from-primary-500 to-accent-500 flex items-center justify-center text-white font-bold"])},k(s.value),3))}},Ri={__name:"RankBadge",props:{rank:{type:Number,required:!0},size:{type:String,default:"md"}},setup(e){const t=e,n={sm:"w-6 h-6 text-xs",md:"w-8 h-8 text-sm"},s=oe(()=>t.rank===1?"rank-1":t.rank===2?"rank-2":t.rank===3?"rank-3":"bg-gray-200 dark:bg-gray-700 text-gray-600 dark:text-gray-300"),r=oe(()=>n[t.size]||n.md);return(o,i)=>(y(),R("span",{class:J([[r.value,s.value,{"text-white":e.rank<=3}],"inline-flex items-center justify-center rounded-full font-bold"])},k(e.rank),3))}},Lu={class:"inline-flex flex-col items-center gap-2"},ju=["title"],Fu={class:"absolute bottom-full left-1/2 -translate-x-1/2 mb-3 px-3 py-2 bg-gray-900 dark:bg-gray-800 text-white text-xs rounded-xl opacity-0 group-hover/badge:opacity-100 transition-all duration-200 pointer-events-none whitespace-nowrap z-50 shadow-xl border border-white/10"},Vu={class:"font-bold text-sm"},Hu={class:"text-gray-300 text-[11px] mt-0.5"},Bu={key:0,class:"text-[11px] font-medium text-gray-600 dark:text-gray-400 text-center leading-tight",style:{"max-width":"72px","word-wrap":"break-word"}},wn={__name:"AchievementBadge",props:{achievementId:{type:String,required:!0},size:{type:String,default:"md"},showLabel:{type:Boolean,default:!1}},setup(e){const t={1:"from-stone-400 to-stone-500",2:"from-green-400 to-emerald-500",3:"from-blue-400 to-indigo-500",4:"from-purple-400 to-violet-500",5:"from-yellow-400 to-amber-500",6:"from-orange-400 to-red-500",7:"from-red-500 to-rose-600",8:"from-pink-500 to-fuchsia-600",9:"from-cyan-400 to-teal-500",10:"from-emerald-400 to-cyan-500",11:"from-violet-500 to-purple-600"},n=l=>{const a=[1,10,25,50,100,250,500,1e3,5e3,1e4,25e3];for(let c=a.length-1;c>=0;c--)if(l>=a[c])return c+1;return 1},s=l=>{const a=l.match(/(\d+)$/);return a?parseInt(a[1],10):50},r={"commit-1":{name:"First Steps",description:"Made your first commit",icon:"fa-baby"},"commit-10":{name:"Getting Started",description:"Made 10 commits",icon:"fa-seedling"},"commit-50":{name:"Contributor",description:"Made 50 commits",icon:"fa-code"},"commit-100":{name:"Committed",description:"Made 100 commits",icon:"fa-fire"},"commit-500":{name:"Code Machine",description:"Made 500 commits",icon:"fa-robot"},"commit-1000":{name:"Code Warrior",description:"Made 1000 commits",icon:"fa-crown"},"pr-1":{name:"PR Pioneer",description:"Opened your first pull request",icon:"fa-code-pull-request"},"pr-10":{name:"PR Regular",description:"Opened 10 pull requests",icon:"fa-code-branch"},"pr-25":{name:"PR Pro",description:"Opened 25 pull requests",icon:"fa-code-compare"},"pr-50":{name:"Merge Master",description:"Opened 50 pull requests",icon:"fa-code-merge"},"pr-100":{name:"PR Champion",description:"Opened 100 pull requests",icon:"fa-trophy"},"pr-250":{name:"PR Legend",description:"Opened 250 pull requests",icon:"fa-medal"},"review-1":{name:"First Review",description:"Reviewed your first pull request",icon:"fa-magnifying-glass"},"review-10":{name:"Reviewer",description:"Reviewed 10 pull requests",icon:"fa-eye"},"review-25":{name:"Review Regular",description:"Reviewed 25 pull requests",icon:"fa-glasses"},"review-50":{name:"Review Expert",description:"Reviewed 50 pull requests",icon:"fa-user-check"},"review-100":{name:"Review Guru",description:"Reviewed 100 pull requests",icon:"fa-user-graduate"},"review-250":{name:"Review Master",description:"Reviewed 250 pull requests",icon:"fa-award"},"comment-10":{name:"Commentator",description:"Left 10 PR review comments",icon:"fa-comment"},"comment-50":{name:"Feedback Giver",description:"Left 50 PR review comments",icon:"fa-comments"},"comment-100":{name:"Code Critic",description:"Left 100 PR review comments",icon:"fa-comment-dots"},"comment-250":{name:"Feedback Expert",description:"Left 250 PR review comments",icon:"fa-message"},"comment-500":{name:"Comment Champion",description:"Left 500 PR review comments",icon:"fa-scroll"},"lines-added-100":{name:"First Hundred",description:"Added 100 lines of code",icon:"fa-plus"},"lines-added-1000":{name:"Thousand Lines",description:"Added 1000 lines of code",icon:"fa-layer-group"},"lines-added-5000":{name:"Five Thousand",description:"Added 5000 lines of code",icon:"fa-cubes"},"lines-added-10000":{name:"Ten Thousand",description:"Added 10000 lines of code",icon:"fa-mountain"},"lines-added-50000":{name:"Code Mountain",description:"Added 50000 lines of code",icon:"fa-mountain-sun"},"lines-deleted-100":{name:"Tidying Up",description:"Deleted 100 lines of code",icon:"fa-eraser"},"lines-deleted-500":{name:"Spring Cleaning",description:"Deleted 500 lines of code",icon:"fa-broom"},"lines-deleted-1000":{name:"Code Cleaner",description:"Deleted 1000 lines of code",icon:"fa-trash-can"},"lines-deleted-5000":{name:"Refactoring Hero",description:"Deleted 5000 lines of code",icon:"fa-recycle"},"lines-deleted-10000":{name:"Deletion Master",description:"Deleted 10000 lines of code",icon:"fa-dumpster-fire"},"review-time-24h":{name:"Same Day Reviewer",description:"Average review response under 24 hours",icon:"fa-clock"},"review-time-4h":{name:"Quick Responder",description:"Average review response under 4 hours",icon:"fa-stopwatch"},"review-time-1h":{name:"Speed Demon",description:"Average review response under 1 hour",icon:"fa-bolt"},"repo-2":{name:"Multi-Repo",description:"Contributed to 2 repositories",icon:"fa-folder"},"repo-5":{name:"Repo Explorer",description:"Contributed to 5 repositories",icon:"fa-folder-tree"},"repo-10":{name:"Repo Master",description:"Contributed to 10 repositories",icon:"fa-network-wired"},"reviewees-3":{name:"Helpful Colleague",description:"Reviewed PRs from 3 different contributors",icon:"fa-user-group"},"reviewees-10":{name:"Team Player",description:"Reviewed PRs from 10 different contributors",icon:"fa-people-group"},"reviewees-25":{name:"Community Pillar",description:"Reviewed PRs from 25 different contributors",icon:"fa-people-roof"},"large-pr-500":{name:"Big Change",description:"Merged a PR with 500+ lines changed",icon:"fa-expand"},"large-pr-1000":{name:"Heavy Lifter",description:"Merged a PR with 1000+ lines changed",icon:"fa-weight-hanging"},"large-pr-5000":{name:"Mega Merge",description:"Merged a PR with 5000+ lines changed",icon:"fa-dumbbell"},"small-pr-5":{name:"Small Changes",description:"Merged 5 PRs under 100 lines",icon:"fa-compress"},"small-pr-10":{name:"Small PR Advocate",description:"Merged 10 PRs under 100 lines",icon:"fa-minimize"},"small-pr-25":{name:"Atomic Commits",description:"Merged 25 PRs under 100 lines",icon:"fa-atom"},"small-pr-50":{name:"Micro PR Master",description:"Merged 50 PRs under 100 lines",icon:"fa-microchip"},"perfect-pr-1":{name:"First Try",description:"1 PR merged without changes requested",icon:"fa-check"},"perfect-pr-5":{name:"Clean Code",description:"5 PRs merged without changes requested",icon:"fa-check-double"},"perfect-pr-10":{name:"Quality Author",description:"10 PRs merged without changes requested",icon:"fa-circle-check"},"perfect-pr-25":{name:"Flawless",description:"25 PRs merged without changes requested",icon:"fa-gem"},"active-7":{name:"Week Active",description:"Active on 7 different days",icon:"fa-calendar-day"},"active-30":{name:"Month Active",description:"Active on 30 different days",icon:"fa-calendar-week"},"active-60":{name:"Consistent Contributor",description:"Active on 60 different days",icon:"fa-chart-line"},"active-100":{name:"Dedicated Developer",description:"Active on 100 different days",icon:"fa-fire-flame-curved"},"streak-3":{name:"Getting Rolling",description:"3 day contribution streak",icon:"fa-forward"},"streak-7":{name:"Week Warrior",description:"7 day contribution streak",icon:"fa-calendar-week"},"streak-14":{name:"Two Week Streak",description:"14 day contribution streak",icon:"fa-fire"},"streak-30":{name:"Month Master",description:"30 day contribution streak",icon:"fa-calendar-check"},"workweek-3":{name:"Work Week Start",description:"3 consecutive weekday streak",icon:"fa-briefcase"},"workweek-5":{name:"Full Work Week",description:"5 consecutive weekday streak",icon:"fa-building"},"workweek-10":{name:"Two Week Grind",description:"10 consecutive weekday streak",icon:"fa-business-time"},"workweek-20":{name:"Month of Mondays",description:"20 consecutive weekday streak",icon:"fa-landmark"},"earlybird-10":{name:"Early Riser",description:"10 commits before 9am",icon:"fa-mug-hot"},"earlybird-25":{name:"Morning Person",description:"25 commits before 9am",icon:"fa-cloud-sun"},"earlybird-50":{name:"Early Bird",description:"50 commits before 9am",icon:"fa-sun"},"earlybird-100":{name:"Dawn Warrior",description:"100 commits before 9am",icon:"fa-sunrise"},"nightowl-10":{name:"Late Worker",description:"10 commits after 9pm",icon:"fa-cloud-moon"},"nightowl-25":{name:"Evening Coder",description:"25 commits after 9pm",icon:"fa-moon"},"nightowl-50":{name:"Night Owl",description:"50 commits after 9pm",icon:"fa-star"},"nightowl-100":{name:"Nocturnal",description:"100 commits after 9pm",icon:"fa-star-and-crescent"},"midnight-5":{name:"Night Shift",description:"5 commits between midnight and 4am",icon:"fa-ghost"},"midnight-10":{name:"Insomniac",description:"10 commits between midnight and 4am",icon:"fa-bed"},"midnight-25":{name:"Nosferatu",description:"25 commits between midnight and 4am",icon:"fa-skull"},"midnight-50":{name:"Vampire Coder",description:"50 commits between midnight and 4am",icon:"fa-skull-crossbones"},"weekend-5":{name:"Weekend Work",description:"5 weekend commits",icon:"fa-couch"},"weekend-10":{name:"Weekend Regular",description:"10 weekend commits",icon:"fa-house-laptop"},"weekend-25":{name:"Weekend Warrior",description:"25 weekend commits",icon:"fa-gamepad"},"weekend-50":{name:"No Days Off",description:"50 weekend commits",icon:"fa-person-running"},"ooh-10":{name:"Extra Hours",description:"10 commits outside 9am-5pm",icon:"fa-clock-rotate-left"},"ooh-25":{name:"Flexible Schedule",description:"25 commits outside 9am-5pm",icon:"fa-user-clock"},"ooh-50":{name:"Off-Hours Hero",description:"50 commits outside 9am-5pm",icon:"fa-hourglass-half"},"ooh-100":{name:"Time Bender",description:"100 commits outside 9am-5pm",icon:"fa-infinity"},"docs-100":{name:"Documenter",description:"Added 100 lines of comments/docs",icon:"fa-file-lines"},"docs-500":{name:"Technical Writer",description:"Added 500 lines of comments/docs",icon:"fa-book"},"docs-1000":{name:"Documentation Hero",description:"Added 1000 lines of comments/docs",icon:"fa-book-open"},"docs-2500":{name:"Knowledge Keeper",description:"Added 2500 lines of comments/docs",icon:"fa-scroll"},"docs-5000":{name:"Code Historian",description:"Added 5000 lines of comments/docs",icon:"fa-landmark"},"docs-del-50":{name:"Comment Trimmer",description:"Removed 50 lines of outdated comments",icon:"fa-scissors"},"docs-del-200":{name:"Cleanup Crew",description:"Removed 200 lines of outdated comments",icon:"fa-broom"},"docs-del-500":{name:"Dead Code Hunter",description:"Removed 500 lines of outdated comments",icon:"fa-skull-crossbones"},"docs-del-1000":{name:"Comment Surgeon",description:"Removed 1000 lines of outdated comments",icon:"fa-user-doctor"},"docs-del-2500":{name:"Noise Eliminator",description:"Removed 2500 lines of outdated comments",icon:"fa-volume-xmark"}},o=l=>{const a=r[l]||{name:l,description:"",icon:"fa-medal"},c=s(l),u=n(c),m=t[u]||"from-gray-400 to-gray-500";return{...a,gradient:m,tier:u,threshold:c}},i={sm:{wrapper:"w-9 h-9",icon:"text-sm",radius:"rounded-lg"},md:{wrapper:"w-11 h-11",icon:"text-base",radius:"rounded-xl"},lg:{wrapper:"w-14 h-14",icon:"text-lg",radius:"rounded-xl"}};return(l,a)=>(y(),R("div",Lu,[d("div",{class:"relative group/badge",title:o(e.achievementId).name},[d("div",{class:J(["flex items-center justify-center bg-gradient-to-br shadow-lg hover:scale-105 hover:shadow-xl transition-all duration-200 cursor-pointer",[i[e.size].wrapper,i[e.size].radius,o(e.achievementId).gradient]])},[d("i",{class:J(["fas text-white drop-shadow-sm",[o(e.achievementId).icon,i[e.size].icon]])},null,2)],2),d("div",Fu,[d("div",Vu,k(o(e.achievementId).name),1),d("div",Hu,k(o(e.achievementId).description),1),a[0]||(a[0]=d("div",{class:"absolute top-full left-1/2 -translate-x-1/2 border-[6px] border-transparent border-t-gray-900 dark:border-t-gray-800"},null,-1))])],8,ju),e.showLabel?(y(),R("span",Bu,k(o(e.achievementId).name),1)):q("",!0)]))}},Uu={class:"flex items-center space-x-4"},Gu={class:"relative"},qu={class:"flex-1"},Wu={class:"font-semibold text-gray-800 dark:text-white group-hover:text-primary-500 transition-colors"},Ku={class:"text-sm text-gray-500 dark:text-gray-400"},zu={key:0,class:"text-xs text-accent-500"},Ju={class:"text-right"},Qu={class:"text-2xl font-bold gradient-text"},Yu={key:0,class:"mt-4 flex flex-wrap gap-1.5"},Xu={key:0,class:"inline-flex items-center justify-center w-8 h-8 rounded-lg bg-gray-200 dark:bg-gray-700 text-gray-600 dark:text-gray-300 text-xs font-bold"},Zu={__name:"ContributorCard",props:{contributor:{type:Object,required:!0},rank:{type:Number,default:0},showRank:{type:Boolean,default:!0},featured:{type:Boolean,default:!1}},setup(e){return(t,n)=>(y(),ie(P(Ce),{to:{name:"contributor",params:{login:e.contributor.login}},class:J(["card animate-fade-in-up block cursor-pointer hover:shadow-lg transition-shadow",e.featured&&e.rank===1?"ring-2 ring-yellow-400":""])},{default:Z(()=>[d("div",Uu,[d("div",Gu,[N(Sn,{src:e.contributor.avatar_url,name:e.contributor.login,size:e.featured?"xl":"lg"},null,8,["src","name","size"]),e.showRank&&e.rank>0?(y(),ie(Ri,{key:0,rank:e.rank,size:"sm",class:"absolute -top-1 -right-1"},null,8,["rank"])):q("",!0)]),d("div",qu,[d("h3",Wu,k(e.contributor.name||e.contributor.login),1),d("p",Ku,[d("span",{class:"hover:text-primary-500 transition-colors",onClick:n[0]||(n[0]=Js(s=>t.window.open(`https://github.com/${e.contributor.login}`,"_blank"),["stop","prevent"]))},[ce(" @"+k(e.contributor.login)+" ",1),n[1]||(n[1]=d("i",{class:"fas fa-external-link-alt text-xs ml-0.5 opacity-50"},null,-1))])]),e.contributor.team?(y(),R("p",zu,k(e.contributor.team),1)):q("",!0)]),d("div",Ju,[d("div",Qu,k(P(z)(e.contributor.score?.total||e.contributor.score||0)),1),n[2]||(n[2]=d("div",{class:"text-xs text-gray-500 dark:text-gray-400"},"points",-1))])]),e.contributor.achievements?.length?(y(),R("div",Yu,[(y(!0),R(Q,null,xe(e.contributor.achievements.slice(0,6),s=>(y(),ie(wn,{key:s,"achievement-id":s,size:"sm"},null,8,["achievement-id"]))),128)),e.contributor.achievements.length>6?(y(),R("span",Xu," +"+k(e.contributor.achievements.length-6),1)):q("",!0)])):q("",!0)]),_:1},8,["to","class"]))}},ed={class:"flex items-center justify-between mb-4"},td={class:"font-semibold text-gray-800 dark:text-white group-hover:text-primary-500 transition"},nd={class:"text-sm text-gray-500 dark:text-gray-400 mb-4"},sd={class:"grid grid-cols-3 gap-4 text-center"},rd={class:"text-lg font-semibold text-gray-800 dark:text-white"},od={class:"text-lg font-semibold text-gray-800 dark:text-white"},id={class:"text-lg font-semibold text-gray-800 dark:text-white"},ld={__name:"RepoCard",props:{repo:{type:Object,required:!0}},setup(e){return(t,n)=>(y(),ie(P(Ce),{to:`/repos/${e.repo.owner}/${e.repo.name}`,class:"card hover:shadow-lg transition group"},{default:Z(()=>[d("div",ed,[d("h3",td,k(e.repo.name),1),n[0]||(n[0]=d("i",{class:"fas fa-arrow-right text-gray-400 group-hover:text-primary-500 transition"},null,-1))]),d("p",nd,k(e.repo.owner)+"/"+k(e.repo.name),1),d("div",sd,[d("div",null,[d("div",rd,k(P(z)(e.repo.total_commits)),1),n[1]||(n[1]=d("div",{class:"text-xs text-gray-500 dark:text-gray-400"},"Commits",-1))]),d("div",null,[d("div",od,k(P(z)(e.repo.total_prs)),1),n[2]||(n[2]=d("div",{class:"text-xs text-gray-500 dark:text-gray-400"},"PRs",-1))]),d("div",null,[d("div",id,k(e.repo.active_contributors),1),n[3]||(n[3]=d("div",{class:"text-xs text-gray-500 dark:text-gray-400"},"Contributors",-1))])])]),_:1},8,["to"]))}},ad={class:"flex items-center justify-between mb-4"},cd={class:"font-semibold text-gray-800 dark:text-white group-hover:text-primary-500 transition"},ud={class:"flex items-center space-x-2 mb-4"},dd={key:0,class:"w-8 h-8 rounded-full bg-gray-200 dark:bg-gray-700 flex items-center justify-center text-gray-600 dark:text-gray-300 text-xs font-bold"},fd={class:"grid grid-cols-2 gap-4 text-center"},md={class:"text-lg font-semibold gradient-text"},hd={class:"text-lg font-semibold text-gray-800 dark:text-white"},gd={__name:"TeamCard",props:{team:{type:Object,required:!0}},setup(e){return(t,n)=>(y(),ie(P(Ce),{to:`/teams/${P(ki)(e.team.name)}`,class:"card hover:shadow-lg transition group"},{default:Z(()=>[d("div",ad,[d("h3",cd,k(e.team.name),1),d("span",{class:"w-3 h-3 rounded-full",style:St({backgroundColor:e.team.color||"#8b5cf6"})},null,4)]),d("div",ud,[(y(!0),R(Q,null,xe((e.team.members||[]).slice(0,5),(s,r)=>(y(),ie(Sn,{key:s,name:s,size:"sm"},null,8,["name"]))),128)),(e.team.members?.length||0)>5?(y(),R("span",dd," +"+k(e.team.members.length-5),1)):q("",!0)]),d("div",fd,[d("div",null,[d("div",md,k(P(z)(e.team.total_score)),1),n[0]||(n[0]=d("div",{class:"text-xs text-gray-500 dark:text-gray-400"},"Total Score",-1))]),d("div",null,[d("div",hd,k(e.team.members?.length||0),1),n[1]||(n[1]=d("div",{class:"text-xs text-gray-500 dark:text-gray-400"},"Members",-1))])])]),_:1},8,["to"]))}},pd={class:"text-2xl font-bold text-gray-800 dark:text-white mb-6"},It={__name:"SectionHeader",props:{title:{type:String,required:!0},icon:{type:String,default:""},iconColor:{type:String,default:"text-primary-500"}},setup(e){return(t,n)=>(y(),R("h2",pd,[e.icon?(y(),R("i",{key:0,class:J([[e.icon,e.iconColor],"mr-2"])},null,2)):q("",!0),ce(k(e.title)+" ",1),Dt(t.$slots,"suffix")]))}},vd=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},yd={key:0,class:"flex items-center justify-center h-full"},xd={__name:"VelocityChart",props:{timeline:{type:Object,required:!0},height:{type:String,default:"300px"},showScore:{type:Boolean,default:!1}},setup(e){rr.register(...Oi);const t=e,n=ke(null);let s=null;const r=oe(()=>t.timeline?.series?t.timeline.series.filter(c=>t.showScore||c.name!=="Score"):[]),o=oe(()=>!t.timeline?.labels||!r.value.length?{labels:[],datasets:[]}:{labels:t.timeline.labels,datasets:r.value.map(c=>({label:c.name,data:c.data,borderColor:c.color,backgroundColor:c.color+"20",fill:!0,tension:.4,pointRadius:3,pointHoverRadius:5}))}),i={responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:{legend:{position:"top",labels:{usePointStyle:!0,padding:20,font:{size:12}}},tooltip:{backgroundColor:"rgba(0, 0, 0, 0.8)",padding:12,titleFont:{size:14},bodyFont:{size:13},callbacks:{label:c=>`${c.dataset.label}: ${c.parsed.y.toLocaleString()}`}}},scales:{x:{grid:{display:!1},ticks:{font:{size:11}}},y:{beginAtZero:!0,grid:{color:"rgba(0, 0, 0, 0.05)"},ticks:{font:{size:11},callback:c=>c>=1e3?(c/1e3).toFixed(1)+"k":c}}}};function l(){if(!n.value||!o.value.labels.length)return;s&&s.destroy();const c=n.value.getContext("2d");s=new rr(c,{type:"line",data:o.value,options:i})}function a(){s?(s.data=o.value,s.update()):l()}return jt(()=>{l()}),Ue(()=>t.timeline,()=>{a()},{deep:!0}),Ue(()=>t.showScore,()=>{a()}),(c,u)=>(y(),R("div",{class:"velocity-chart",style:St({height:e.height})},[d("canvas",{ref_key:"chartRef",ref:n},null,512),e.timeline?.labels?.length?q("",!0):(y(),R("div",yd,[...u[0]||(u[0]=[d("p",{class:"text-gray-400"},"No velocity data available",-1)])]))],4))}},bd=vd(xd,[["__scopeId","data-v-401bbb13"]]),_d={class:"py-16 px-4"},wd={class:"container mx-auto text-center animate-fade-in-up"},kd={class:"flex flex-col items-center space-y-2 mt-4 text-sm text-gray-500 dark:text-gray-400"},Rd={key:0},Cd={key:0},Sd={key:1},Ad={key:2},Ed={key:1},Pd={key:0,class:"py-8 px-4"},$d={class:"container mx-auto"},Td={class:"card"},Od={class:"flex items-center justify-between mb-6"},Id={class:"flex items-center space-x-2 text-sm text-gray-600 dark:text-gray-400 cursor-pointer"},Nd={class:"py-8 px-4"},Md={class:"container mx-auto"},Dd={class:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-4"},Ld={class:"py-8 px-4"},jd={class:"container mx-auto"},Fd={class:"grid md:grid-cols-3 gap-6"},Vd={class:"mt-6 text-center"},Hd={class:"py-8 px-4"},Bd={class:"container mx-auto"},Ud={class:"grid md:grid-cols-2 lg:grid-cols-3 gap-6"},Gd={key:1,class:"py-8 px-4"},qd={class:"container mx-auto"},Wd={class:"grid md:grid-cols-2 lg:grid-cols-3 gap-6"},Kd={__name:"Dashboard",setup(e){const t=Pe("globalData"),n=oe(()=>t.value||{}),s=oe(()=>n.value.leaderboard?.slice(0,3)||[]),r=oe(()=>n.value.repositories||[]),o=oe(()=>n.value.teams||[]),i=oe(()=>n.value.velocity_timeline),l=ke(!1);return(a,c)=>(y(),R("div",null,[d("header",_d,[d("div",wd,[c[4]||(c[4]=d("h1",{class:"text-4xl md:text-6xl font-bold mb-4"},[d("span",{class:"gradient-text"},"Git Velocity")],-1)),c[5]||(c[5]=d("p",{class:"text-xl text-gray-600 dark:text-gray-300 max-w-2xl mx-auto"}," Celebrate your team's achievements and contributions with beautiful insights. ",-1)),d("div",kd,[n.value.period?.start||n.value.period?.end?(y(),R("p",Rd,[c[1]||(c[1]=d("i",{class:"fas fa-calendar-alt mr-1 text-primary-500"},null,-1)),c[2]||(c[2]=d("span",{class:"font-medium"},"Period:",-1)),n.value.period.start?(y(),R("span",Cd,k(P(vs)(n.value.period.start)),1)):q("",!0),n.value.period.start&&n.value.period.end?(y(),R("span",Sd," — ")):q("",!0),n.value.period.end?(y(),R("span",Ad,k(P(vs)(n.value.period.end)),1)):q("",!0)])):q("",!0),n.value.generated_at?(y(),R("p",Ed,[c[3]||(c[3]=d("i",{class:"fas fa-clock mr-1"},null,-1)),ce(" Generated on "+k(P(vs)(n.value.generated_at)),1)])):q("",!0)])])]),i.value?(y(),R("section",Pd,[d("div",$d,[d("div",Td,[d("div",Od,[N(It,{title:"Velocity Timeline",icon:"fas fa-chart-line","icon-color":"text-primary-500"}),d("label",Id,[wl(d("input",{type:"checkbox","onUpdate:modelValue":c[0]||(c[0]=u=>l.value=u),class:"rounded border-gray-300 text-primary-500 focus:ring-primary-500"},null,512),[[za,l.value]]),c[6]||(c[6]=d("span",null,"Show Score",-1))])]),N(bd,{timeline:i.value,"show-score":l.value,height:"320px"},null,8,["timeline","show-score"])])])])):q("",!0),d("section",Nd,[d("div",Md,[d("div",Dd,[N(_e,{value:n.value.total_contributors||0,label:"Contributors",delay:"0s"},null,8,["value"]),N(_e,{value:n.value.total_commits||0,label:"Commits",delay:"0.1s"},null,8,["value"]),N(_e,{value:n.value.total_prs||0,label:"Pull Requests",delay:"0.2s"},null,8,["value"]),N(_e,{value:n.value.total_reviews||0,label:"Reviews",delay:"0.3s"},null,8,["value"]),N(_e,{value:"+"+P(z)(n.value.total_lines_added||0),label:"Lines Added","value-class":"text-green-500",delay:"0.4s"},null,8,["value"]),N(_e,{value:"-"+P(z)(n.value.total_lines_deleted||0),label:"Lines Deleted","value-class":"text-red-500",delay:"0.5s"},null,8,["value"])])])]),d("section",Ld,[d("div",jd,[N(It,{title:"Top Contributors",icon:"fas fa-trophy","icon-color":"text-yellow-500"}),d("div",Fd,[(y(!0),R(Q,null,xe(s.value,(u,m)=>(y(),ie(Zu,{key:u.login,contributor:u,rank:m+1,featured:""},null,8,["contributor","rank"]))),128))]),d("div",Vd,[N(P(Ce),{to:"/leaderboard",class:"btn-primary"},{default:Z(()=>[...c[7]||(c[7]=[ce(" View Full Leaderboard ",-1),d("i",{class:"fas fa-arrow-right ml-2"},null,-1)])]),_:1})])])]),d("section",Hd,[d("div",Bd,[N(It,{title:"Repositories",icon:"fas fa-code-branch","icon-color":"text-accent-500"}),d("div",Ud,[(y(!0),R(Q,null,xe(r.value,u=>(y(),ie(ld,{key:`${u.owner}/${u.name}`,repo:u},null,8,["repo"]))),128))])])]),o.value.length?(y(),R("section",Gd,[d("div",qd,[N(It,{title:"Teams",icon:"fas fa-users","icon-color":"text-blue-500"}),d("div",Wd,[(y(!0),R(Q,null,xe(o.value,u=>(y(),ie(gd,{key:u.name,team:u},null,8,["team"]))),128))])])])):q("",!0)]))}},zd={class:"flex items-center space-x-2 text-sm text-gray-500 dark:text-gray-400 mb-6"},Jd={key:2,class:"fas fa-chevron-right text-xs"},Qd={__name:"Breadcrumb",props:{items:{type:Array,required:!0}},setup(e){return(t,n)=>(y(),R("div",zd,[(y(!0),R(Q,null,xe(e.items,(s,r)=>(y(),R(Q,{key:r},[s.to?(y(),ie(P(Ce),{key:0,to:s.to,class:"hover:text-primary-500"},{default:Z(()=>[ce(k(s.label),1)]),_:2},1032,["to"])):(y(),R("span",{key:1,class:J(r===e.items.length-1?"text-gray-800 dark:text-white":"")},k(s.label),3)),r[]},centered:{type:Boolean,default:!1}},setup(e){return(t,n)=>(y(),R("header",Yd,[d("div",{class:J(["container mx-auto",{"text-center":e.centered}])},[e.breadcrumbs.length?(y(),ie(Qd,{key:0,items:e.breadcrumbs},null,8,["items"])):q("",!0),d("div",{class:J(["flex items-center",e.centered?"justify-center":""])},[Dt(t.$slots,"prefix"),d("h1",Xd,[e.icon?(y(),R("i",{key:0,class:J([[e.icon,e.iconColor],"mr-3"])},null,2)):q("",!0),d("span",Zd,k(e.title),1)])],2),e.subtitle||t.$slots.subtitle?(y(),R("p",ef,[Dt(t.$slots,"subtitle",{},()=>[ce(k(e.subtitle),1)])])):q("",!0),Dt(t.$slots,"extra")],2)]))}},tf={class:"card overflow-hidden p-0"},nf={class:"w-full"},sf={class:"bg-gray-50 dark:bg-gray-800/50"},rf={class:"divide-y divide-gray-200 dark:divide-gray-700"},of=["onClick"],lf={key:0,class:"text-center py-12"},af={class:"text-gray-500 dark:text-gray-400"},Ci={__name:"DataTable",props:{columns:{type:Array,required:!0},items:{type:Array,default:()=>[]},emptyIcon:{type:String,default:"fas fa-inbox"},emptyMessage:{type:String,default:"No data found"},rowClass:{type:String,default:"hover:bg-gray-50 dark:hover:bg-gray-800/30 transition"},clickableRows:{type:Boolean,default:!1}},emits:["row-click"],setup(e){const t=n=>{switch(n){case"center":return"text-center";case"right":return"text-right";default:return"text-left"}};return(n,s)=>(y(),R("div",tf,[d("table",nf,[d("thead",sf,[d("tr",null,[(y(!0),R(Q,null,xe(e.columns,r=>(y(),R("th",{key:r.key,class:J(["px-6 py-4 text-xs font-semibold text-gray-500 dark:text-gray-400 uppercase tracking-wider",t(r.align),r.headerClass])},k(r.label),3))),128))])]),d("tbody",rf,[(y(!0),R(Q,null,xe(e.items,(r,o)=>(y(),R("tr",{key:r.id||r.login||o,class:J([e.rowClass,{"cursor-pointer":e.clickableRows}]),onClick:i=>e.clickableRows&&n.$emit("row-click",r)},[(y(!0),R(Q,null,xe(e.columns,i=>(y(),R("td",{key:i.key,class:J(["px-6 py-4",t(i.align),i.class])},[Dt(n.$slots,i.key,{item:r,index:o},()=>[ce(k(r[i.key]),1)])],2))),128))],10,of))),128))])]),e.items.length?q("",!0):(y(),R("div",lf,[d("i",{class:J([e.emptyIcon,"text-4xl text-gray-300 dark:text-gray-600 mb-4"])},null,2),d("p",af,k(e.emptyMessage),1)]))]))}},cf={class:"font-medium text-gray-800 dark:text-white group-hover:text-primary-500 transition-colors"},uf={class:"text-sm"},df=["href"],ff={key:1,class:"text-gray-500 dark:text-gray-400"},Si={__name:"ContributorRow",props:{contributor:{type:Object,required:!0},showGithubLink:{type:Boolean,default:!1},columns:{type:Array,default:()=>["commits","prs","reviews","lines","score"]}},setup(e){return(t,n)=>(y(),ie(P(Ce),{to:{name:"contributor",params:{login:e.contributor.login}},class:"flex items-center space-x-3"},{default:Z(()=>[N(Sn,{src:e.contributor.avatar_url,name:e.contributor.login,class:"ring-2 ring-transparent group-hover:ring-primary-500 transition-all"},null,8,["src","name"]),d("div",null,[d("div",cf,k(e.contributor.name||e.contributor.login),1),d("div",uf,[e.showGithubLink?(y(),R("a",{key:0,href:`https://github.com/${e.contributor.login}`,target:"_blank",rel:"noopener noreferrer",class:"text-gray-500 dark:text-gray-400 hover:text-primary-500 transition-colors",onClick:n[0]||(n[0]=Js(()=>{},["stop"]))},[ce(" @"+k(e.contributor.login)+" ",1),n[1]||(n[1]=d("i",{class:"fas fa-external-link-alt text-xs ml-1 opacity-50"},null,-1))],8,df)):(y(),R("span",ff," @"+k(e.contributor.login),1))])])]),_:1},8,["to"]))}},Ai={commit:["commit-1","commit-10","commit-50","commit-100","commit-500","commit-1000"],pr:["pr-1","pr-10","pr-25","pr-50","pr-100","pr-250"],review:["review-1","review-10","review-25","review-50","review-100","review-250"],comment:["comment-10","comment-50","comment-100","comment-250","comment-500"],"lines-added":["lines-added-100","lines-added-1000","lines-added-5000","lines-added-10000","lines-added-50000"],"lines-deleted":["lines-deleted-100","lines-deleted-500","lines-deleted-1000","lines-deleted-5000","lines-deleted-10000"],"review-time":["review-time-24h","review-time-4h","review-time-1h"],repo:["repo-2","repo-5","repo-10"],reviewees:["reviewees-3","reviewees-10","reviewees-25"],"large-pr":["large-pr-500","large-pr-1000","large-pr-5000"],"small-pr":["small-pr-5","small-pr-10","small-pr-25","small-pr-50"],"perfect-pr":["perfect-pr-1","perfect-pr-5","perfect-pr-10","perfect-pr-25"],active:["active-7","active-30","active-60","active-100"],streak:["streak-3","streak-7","streak-14","streak-30"],workweek:["workweek-3","workweek-5","workweek-10","workweek-20"],earlybird:["earlybird-10","earlybird-25","earlybird-50","earlybird-100"],nightowl:["nightowl-10","nightowl-25","nightowl-50","nightowl-100"],midnight:["midnight-5","midnight-10","midnight-25","midnight-50"],weekend:["weekend-5","weekend-10","weekend-25","weekend-50"],ooh:["ooh-10","ooh-25","ooh-50","ooh-100"],docs:["docs-100","docs-500","docs-1000","docs-2500","docs-5000"],"docs-del":["docs-del-50","docs-del-200","docs-del-500","docs-del-1000","docs-del-2500"]};function Ei(e){for(const[t,n]of Object.entries(Ai))if(n.includes(e))return t;return null}function mf(e){const t=Ei(e);return t?Ai[t].indexOf(e):-1}function Pi(e){if(!e||!e.length)return[];const t={};for(const n of e){const s=Ei(n);if(!s){t[n]={id:n,tier:-1};continue}const r=mf(n);(!t[s]||r>t[s].tier)&&(t[s]={id:n,tier:r})}return Object.values(t).sort((n,s)=>s.tier-n.tier).map(n=>n.id)}const hf={class:"py-8 px-4"},gf={class:"container mx-auto max-w-5xl"},pf={class:"flex flex-wrap gap-1.5 max-w-[280px]"},vf={key:0,class:"text-gray-400 text-sm"},yf={class:"hidden md:table-cell"},xf={key:0,class:"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-purple-100 dark:bg-purple-900/30 text-purple-800 dark:text-purple-300"},bf={key:1,class:"text-gray-400"},_f={class:"hidden sm:table-cell"},wf={key:0,class:"text-sm text-gray-600 dark:text-gray-300"},kf={key:1,class:"text-gray-400"},Rf={class:"text-lg font-bold gradient-text"},Cf={__name:"Leaderboard",setup(e){const t=Pe("globalData"),n=oe(()=>t.value?.leaderboard||[]),s=[{key:"rank",label:"Rank",align:"left"},{key:"contributor",label:"Contributor",align:"left"},{key:"achievements",label:"Achievements",align:"left"},{key:"team",label:"Team",align:"left",headerClass:"hidden md:table-cell"},{key:"category",label:"Best At",align:"left",headerClass:"hidden sm:table-cell"},{key:"score",label:"Score",align:"right"}],r=o=>({Commits:"fas fa-code-commit text-green-500",PRs:"fas fa-code-pull-request text-blue-500",Reviews:"fas fa-eye text-purple-500",Comments:"fas fa-comment text-orange-500"})[o]||"";return(o,i)=>(y(),R("div",null,[N(ts,{title:"Leaderboard",subtitle:"Top contributors ranked by their velocity score",icon:"fas fa-trophy","icon-color":"text-yellow-500",centered:""}),d("section",hf,[d("div",gf,[N(Ci,{columns:s,items:n.value,"empty-icon":"fas fa-users","empty-message":"No contributors found","row-class":"hover:bg-gray-50 dark:hover:bg-gray-800/30 transition group"},{rank:Z(({item:l})=>[N(Ri,{rank:l.rank},null,8,["rank"])]),contributor:Z(({item:l})=>[N(Si,{contributor:l,"show-github-link":""},null,8,["contributor"])]),achievements:Z(({item:l})=>[d("div",pf,[(y(!0),R(Q,null,xe(P(Pi)(l.achievements),a=>(y(),ie(wn,{key:a,"achievement-id":a,size:"sm"},null,8,["achievement-id"]))),128)),(l.achievements||[]).length?q("",!0):(y(),R("span",vf,"-"))])]),team:Z(({item:l})=>[d("td",yf,[l.team?(y(),R("span",xf,k(l.team),1)):(y(),R("span",bf,"-"))])]),category:Z(({item:l})=>[d("td",_f,[l.top_category?(y(),R("span",wf,[d("i",{class:J([r(l.top_category),"mr-1"])},null,2),ce(" "+k(l.top_category),1)])):(y(),R("span",kf,"-"))])]),score:Z(({item:l})=>[d("span",Rf,k(P(z)(l.score)),1)]),_:1},8,["items"])])])]))}},Sf={class:"flex items-center justify-center min-h-[60vh]"},Af={class:"text-center"},Ef={class:"text-gray-600 dark:text-gray-400"},Zs={__name:"LoadingState",props:{message:{type:String,default:"Loading..."}},setup(e){return(t,n)=>(y(),R("div",Sf,[d("div",Af,[n[0]||(n[0]=d("i",{class:"fas fa-spinner fa-spin text-4xl text-primary-500 mb-4"},null,-1)),d("p",Ef,k(e.message),1)])]))}},Pf={class:"flex items-center justify-center min-h-[60vh]"},$f={class:"text-center"},Tf={class:"text-gray-600 dark:text-gray-400"},er={__name:"ErrorState",props:{message:{type:String,default:"An error occurred"},icon:{type:String,default:"fas fa-exclamation-triangle"}},setup(e){return(t,n)=>(y(),R("div",Pf,[d("div",$f,[d("i",{class:J([e.icon,"text-4xl text-red-500 mb-4"])},null,2),d("p",Tf,k(e.message),1),Dt(t.$slots,"actions")])]))}},Of=["href"],If={key:0,class:"fas fa-external-link-alt text-xs ml-1 opacity-50"},$i={__name:"GithubLink",props:{url:{type:String,required:!0},label:{type:String,default:""},showIcon:{type:Boolean,default:!0}},setup(e){return(t,n)=>(y(),R("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",class:"hover:text-primary-500 transition-colors",onClick:n[0]||(n[0]=Js(()=>{},["stop"]))},[Dt(t.$slots,"default",{},()=>[ce(k(e.label),1)]),e.showIcon?(y(),R("i",If)):q("",!0)],8,Of))}},Nf={class:"py-8 px-4"},Mf={class:"container mx-auto"},Df={class:"grid grid-cols-2 md:grid-cols-4 gap-4"},Lf={class:"py-8 px-4"},jf={class:"container mx-auto"},Ff={class:"text-gray-800 dark:text-white"},Vf={class:"text-gray-800 dark:text-white"},Hf={class:"text-gray-800 dark:text-white"},Bf={class:"text-green-500"},Uf={class:"text-red-500"},Gf={class:"text-lg font-bold gradient-text"},qf={__name:"Repository",setup(e){const t=es(),n=ke(null),s=ke(!0),r=ke(null),o=oe(()=>[{label:"Dashboard",to:"/"},{label:"Repositories"},{label:n.value?.name||t.params.name}]),i=[{key:"contributor",label:"Contributor",align:"left"},{key:"commits",label:"Commits",align:"center"},{key:"prs",label:"PRs",align:"center"},{key:"reviews",label:"Reviews",align:"center"},{key:"lines",label:"Lines +/-",align:"center"},{key:"score",label:"Score",align:"right"}];async function l(){s.value=!0,r.value=null;try{const a=await fetch(`./data/repos/${t.params.owner}/${t.params.name}/metrics.json`);if(!a.ok)throw new Error("Repository not found");n.value=await a.json()}catch(a){r.value=a.message}finally{s.value=!1}}return jt(l),Ue(()=>t.params,l),(a,c)=>(y(),R("div",null,[s.value?(y(),ie(Zs,{key:0,message:"Loading repository..."})):r.value?(y(),ie(er,{key:1,message:r.value},null,8,["message"])):n.value?(y(),R(Q,{key:2},[N(ts,{title:n.value.name,icon:"fas fa-code-branch","icon-color":"text-accent-500",breadcrumbs:o.value},{subtitle:Z(()=>[N($i,{url:`https://github.com/${n.value.owner}/${n.value.name}`},{default:Z(()=>[ce(k(n.value.owner)+"/"+k(n.value.name),1)]),_:1},8,["url"])]),_:1},8,["title","breadcrumbs"]),d("section",Nf,[d("div",Mf,[d("div",Df,[N(_e,{value:n.value.total_commits,label:"Commits",icon:"fas fa-code-commit","icon-color":"text-green-500"},null,8,["value"]),N(_e,{value:n.value.total_prs,label:"Pull Requests",icon:"fas fa-code-pull-request","icon-color":"text-blue-500"},null,8,["value"]),N(_e,{value:n.value.total_reviews,label:"Reviews",icon:"fas fa-eye","icon-color":"text-purple-500"},null,8,["value"]),N(_e,{value:n.value.active_contributors,label:"Contributors",icon:"fas fa-users","icon-color":"text-orange-500"},null,8,["value"])])])]),d("section",Lf,[d("div",jf,[N(It,{title:"Contributors",icon:"fas fa-users","icon-color":"text-blue-500"}),N(Ci,{columns:i,items:n.value.contributors,"empty-icon":"fas fa-users","empty-message":"No contributors found","row-class":"hover:bg-gray-50 dark:hover:bg-gray-800/30 transition group"},{contributor:Z(({item:u})=>[N(Si,{contributor:u},null,8,["contributor"])]),commits:Z(({item:u})=>[d("span",Ff,k(P(z)(u.commit_count)),1)]),prs:Z(({item:u})=>[d("span",Vf,k(P(z)(u.prs_opened)),1)]),reviews:Z(({item:u})=>[d("span",Hf,k(P(z)(u.reviews_given)),1)]),lines:Z(({item:u})=>[d("span",Bf,"+"+k(P(z)(u.lines_added)),1),c[0]||(c[0]=d("span",{class:"text-gray-400 mx-1"},"/",-1)),d("span",Uf,"-"+k(P(z)(u.lines_deleted)),1)]),score:Z(({item:u})=>[d("span",Gf,k(P(z)(u.score?.total||0)),1)]),_:1},8,["items"])])])],64)):q("",!0)]))}},Wf={class:"flex items-center space-x-4 mb-4"},Kf={class:"font-semibold text-gray-800 dark:text-white"},zf={class:"text-sm text-gray-500 dark:text-gray-400"},Jf={class:"grid grid-cols-3 gap-4 text-center mb-4"},Qf={class:"text-lg font-semibold text-gray-800 dark:text-white"},Yf={class:"text-lg font-semibold text-gray-800 dark:text-white"},Xf={class:"text-lg font-semibold text-gray-800 dark:text-white"},Zf={class:"flex items-center justify-between pt-4 border-t border-gray-200 dark:border-gray-700"},e0={class:"text-xl font-bold gradient-text"},t0={key:0,class:"mt-4 flex flex-wrap gap-2"},n0={key:0,class:"inline-flex items-center justify-center w-8 h-8 rounded-lg bg-gray-200 dark:bg-gray-700 text-gray-600 dark:text-gray-300 text-xs font-bold"},s0={__name:"MemberCard",props:{member:{type:Object,required:!0},linkToProfile:{type:Boolean,default:!0}},setup(e){return(t,n)=>(y(),ie(jl(e.linkToProfile?P(Ce):"div"),{to:e.linkToProfile?{name:"contributor",params:{login:e.member.login}}:void 0,class:J(["card block",{"hover:shadow-lg transition cursor-pointer":e.linkToProfile}])},{default:Z(()=>[d("div",Wf,[N(Sn,{src:e.member.avatar_url,name:e.member.login,size:"lg"},null,8,["src","name"]),d("div",null,[d("h3",Kf,k(e.member.name||e.member.login),1),d("p",zf,"@"+k(e.member.login),1)])]),d("div",Jf,[d("div",null,[d("div",Qf,k(P(z)(e.member.commit_count)),1),n[0]||(n[0]=d("div",{class:"text-xs text-gray-500 dark:text-gray-400"},"Commits",-1))]),d("div",null,[d("div",Yf,k(P(z)(e.member.prs_opened)),1),n[1]||(n[1]=d("div",{class:"text-xs text-gray-500 dark:text-gray-400"},"PRs",-1))]),d("div",null,[d("div",Xf,k(P(z)(e.member.reviews_given)),1),n[2]||(n[2]=d("div",{class:"text-xs text-gray-500 dark:text-gray-400"},"Reviews",-1))])]),d("div",Zf,[n[3]||(n[3]=d("span",{class:"text-sm text-gray-500 dark:text-gray-400"},"Score",-1)),d("span",e0,k(P(z)(e.member.score?.total||0)),1)]),e.member.achievements?.length?(y(),R("div",t0,[(y(!0),R(Q,null,xe(e.member.achievements.slice(0,4),s=>(y(),ie(wn,{key:s,"achievement-id":s,size:"sm"},null,8,["achievement-id"]))),128)),e.member.achievements.length>4?(y(),R("span",n0," +"+k(e.member.achievements.length-4),1)):q("",!0)])):q("",!0)]),_:1},8,["to","class"]))}},r0={class:"py-8 px-4"},o0={class:"container mx-auto"},i0={class:"grid grid-cols-2 md:grid-cols-4 gap-4"},l0={class:"py-8 px-4"},a0={class:"container mx-auto"},c0={class:"grid md:grid-cols-2 lg:grid-cols-3 gap-6"},u0={__name:"Team",setup(e){const t=es(),n=Pe("globalData"),s=ke(null),r=ke(!0),o=ke(null),i=oe(()=>[{label:"Dashboard",to:"/"},{label:"Teams"},{label:s.value?.name||t.params.slug}]);function l(){r.value=!0,o.value=null;const c=(n.value?.teams||[]).find(u=>ki(u.name)===t.params.slug);c?s.value=c:o.value="Team not found",r.value=!1}return jt(l),Ue(()=>t.params,l),Ue(n,l),(a,c)=>(y(),R("div",null,[r.value?(y(),ie(Zs,{key:0,message:"Loading team..."})):o.value?(y(),ie(er,{key:1,message:o.value},null,8,["message"])):s.value?(y(),R(Q,{key:2},[N(ts,{title:s.value.name,breadcrumbs:i.value,subtitle:`${s.value.members?.length||0} team members`},{prefix:Z(()=>[d("div",{class:"w-4 h-4 rounded-full mr-4",style:St({backgroundColor:s.value.color||"#8b5cf6"})},null,4)]),_:1},8,["title","breadcrumbs","subtitle"]),d("section",r0,[d("div",o0,[d("div",i0,[N(_e,{value:s.value.total_score,label:"Total Score",icon:"fas fa-star","icon-color":"text-yellow-500"},null,8,["value"]),N(_e,{value:s.value.aggregated_metrics?.commit_count||0,label:"Commits",icon:"fas fa-code-commit","icon-color":"text-green-500"},null,8,["value"]),N(_e,{value:s.value.aggregated_metrics?.prs_merged||0,label:"PRs Merged",icon:"fas fa-code-merge","icon-color":"text-purple-500"},null,8,["value"]),N(_e,{value:s.value.aggregated_metrics?.reviews_given||0,label:"Reviews",icon:"fas fa-eye","icon-color":"text-blue-500"},null,8,["value"])])])]),d("section",l0,[d("div",a0,[N(It,{title:"Team Members",icon:"fas fa-users","icon-color":"text-blue-500"}),d("div",c0,[(y(!0),R(Q,null,xe(s.value.member_metrics,u=>(y(),ie(s0,{key:u.login,member:u},null,8,["member"]))),128))])])])],64)):q("",!0)]))}},d0={class:"space-y-3"},f0={class:"flex items-start justify-between mb-3"},m0={class:"flex items-center space-x-3"},h0={class:"text-sm font-semibold text-gray-800 dark:text-white"},g0={class:"flex items-center space-x-2 text-xs text-gray-500 dark:text-gray-400"},p0={class:"font-medium"},v0={class:"text-right"},y0={class:"text-gray-500 dark:text-gray-400 font-medium"},x0={class:"text-xs text-gray-500 dark:text-gray-400 mt-0.5"},b0={class:"h-2.5 bg-gray-200 dark:bg-gray-700 rounded-full overflow-hidden"},_0={class:"flex items-center justify-between mt-1.5"},w0={class:"flex items-center space-x-1"},k0=["title"],R0={key:0,class:"text-[10px] text-gray-400"},C0={key:0,class:"text-center text-xs text-gray-500 dark:text-gray-400 pt-2"},S0={key:1,class:"text-center py-8 text-gray-500 dark:text-gray-400"},A0={__name:"AchievementProgress",props:{contributor:{type:Object,required:!0},showEarned:{type:Boolean,default:!1},maxDisplay:{type:Number,default:6}},setup(e){const t=e,n=[1,10,25,50,100,250,500,1e3,5e3,1e4,25e3],s={1:"from-stone-400 to-stone-500",2:"from-green-400 to-emerald-500",3:"from-blue-400 to-indigo-500",4:"from-purple-400 to-violet-500",5:"from-yellow-400 to-amber-500",6:"from-orange-400 to-red-500",7:"from-red-500 to-rose-600",8:"from-pink-500 to-fuchsia-600",9:"from-cyan-400 to-teal-500",10:"from-emerald-400 to-cyan-500",11:"from-violet-500 to-purple-600"},r={1:"bg-stone-500",2:"bg-green-500",3:"bg-blue-500",4:"bg-purple-500",5:"bg-yellow-500",6:"bg-orange-500",7:"bg-red-500",8:"bg-pink-500",9:"bg-cyan-500",10:"bg-emerald-500",11:"bg-violet-500"},o=[{category:"Commits",icon:"fa-code-commit",iconColor:"text-green-500",getValue:u=>u.commit_count||0,achievements:[{id:"first-commit",threshold:1,name:"First Steps"},{id:"commit-10",threshold:10,name:"Getting Started"},{id:"commit-25",threshold:25,name:"Warming Up"},{id:"commit-50",threshold:50,name:"On A Roll"},{id:"commit-100",threshold:100,name:"Committed"},{id:"commit-250",threshold:250,name:"Dedicated"},{id:"commit-500",threshold:500,name:"Code Machine"},{id:"commit-1000",threshold:1e3,name:"Code Warrior"},{id:"commit-5000",threshold:5e3,name:"Legendary"},{id:"commit-10000",threshold:1e4,name:"Mythical"},{id:"commit-25000",threshold:25e3,name:"Transcendent"}]},{category:"Pull Requests",icon:"fa-code-pull-request",iconColor:"text-blue-500",getValue:u=>u.prs_opened||0,achievements:[{id:"pr-opener",threshold:1,name:"PR Pioneer"},{id:"pr-10",threshold:10,name:"Pull Request Pro"},{id:"pr-25",threshold:25,name:"PR Regular"},{id:"pr-50",threshold:50,name:"Merge Master"},{id:"pr-100",threshold:100,name:"PR Champion"}]},{category:"Reviews",icon:"fa-eye",iconColor:"text-purple-500",getValue:u=>u.reviews_given||0,achievements:[{id:"reviewer",threshold:1,name:"Code Reviewer"},{id:"reviewer-10",threshold:10,name:"Review Starter"},{id:"reviewer-25",threshold:25,name:"Review Regular"},{id:"reviewer-50",threshold:50,name:"Review Expert"},{id:"reviewer-100",threshold:100,name:"Review Guru"}]},{category:"Lines Added",icon:"fa-plus",iconColor:"text-emerald-500",getValue:u=>u.lines_added||0,achievements:[{id:"lines-1000",threshold:1e3,name:"Thousand Lines"},{id:"lines-10000",threshold:1e4,name:"Ten Thousand"}]},{category:"Lines Deleted",icon:"fa-minus",iconColor:"text-red-500",getValue:u=>u.lines_deleted||0,achievements:[{id:"cleaner",threshold:1e3,name:"Code Cleaner"},{id:"refactorer",threshold:1e4,name:"Refactoring Champion"}]},{category:"Small PRs",icon:"fa-compress",iconColor:"text-cyan-500",getValue:u=>u.small_pr_count||0,achievements:[{id:"small-pr-10",threshold:10,name:"Small PR Advocate"},{id:"small-pr-50",threshold:50,name:"Atomic Commits Hero"}]},{category:"Perfect PRs",icon:"fa-gem",iconColor:"text-pink-500",getValue:u=>u.perfect_prs||0,achievements:[{id:"perfect-pr-5",threshold:5,name:"Clean Code"},{id:"perfect-pr-25",threshold:25,name:"Flawless"}]},{category:"Active Days",icon:"fa-calendar-check",iconColor:"text-orange-500",getValue:u=>u.active_days||0,achievements:[{id:"active-30",threshold:30,name:"Consistent Contributor"},{id:"active-100",threshold:100,name:"Dedicated Developer"}]},{category:"Streak",icon:"fa-fire",iconColor:"text-amber-500",getValue:u=>u.longest_streak||0,achievements:[{id:"streak-7",threshold:7,name:"Week Warrior"},{id:"streak-30",threshold:30,name:"Month Master"}]}],i=u=>{for(let m=n.length-1;m>=0;m--)if(u>=n[m])return m+1;return 1},l=u=>u.map(m=>({threshold:m.threshold,name:m.name,tier:i(m.threshold)})),a=oe(()=>{const u=new Set(t.contributor.achievements||[]),m=[];for(const g of o){const v=g.getValue(t.contributor);let S=null,I=null;const W=l(g.achievements);for(const Re of g.achievements)v>=Re.threshold?I=Re:S||(S=Re);if(!S)continue;const j=I?I.threshold:0,D=S.threshold-j,V=v-j,L=Math.min(100,Math.max(0,Math.round(V/D*100))),ee=i(S.threshold),ve=W.findIndex(Re=>Re.threshold===S.threshold),he=W.length;m.push({category:g.category,icon:g.icon,iconColor:g.iconColor,currentValue:v,target:S.threshold,name:S.name,id:S.id,progress:L,tier:ee,tierIndex:ve+1,totalTiers:he,allTiers:W,gradient:s[ee],progressColor:r[ee],isClose:L>=75,remaining:S.threshold-v,isEarned:u.has(S.id)})}return m.sort((g,v)=>v.progress-g.progress),m.slice(0,t.maxDisplay)}),c=oe(()=>{new Set(t.contributor.achievements||[]);let u=0;for(const m of o){const g=m.getValue(t.contributor);for(const v of m.achievements)g(y(),R("div",d0,[(y(!0),R(Q,null,xe(a.value,g=>(y(),R("div",{key:g.id,class:"bg-gray-50 dark:bg-gray-800/50 rounded-xl p-4 hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors"},[d("div",f0,[d("div",m0,[d("div",{class:J(["w-10 h-10 rounded-lg bg-gradient-to-br flex items-center justify-center shadow-md",g.gradient])},[d("i",{class:J(["fas text-white text-sm",g.icon])},null,2)],2),d("div",null,[d("div",h0,k(g.name),1),d("div",g0,[d("span",null,k(g.category),1),m[0]||(m[0]=d("span",{class:"text-gray-300 dark:text-gray-600"},"•",-1)),d("span",p0,"Tier "+k(g.tierIndex)+"/"+k(g.totalTiers),1)])])]),d("div",v0,[d("div",{class:J(["text-sm font-bold",g.isClose?"text-green-500":"text-gray-700 dark:text-gray-200"])},[ce(k(P(z)(g.currentValue))+" ",1),m[1]||(m[1]=d("span",{class:"text-gray-400 dark:text-gray-500 font-normal"},"/",-1)),d("span",y0,k(P(z)(g.target)),1)],2),d("div",x0,k(g.remaining>0?`${P(z)(g.remaining)} to go`:"Ready to claim!"),1)])]),d("div",b0,[d("div",{class:J(["h-full rounded-full transition-all duration-500 ease-out",g.progressColor]),style:St({width:`${g.progress}%`})},null,6)]),d("div",_0,[d("div",w0,[(y(!0),R(Q,null,xe(g.allTiers.slice(0,5),(v,S)=>(y(),R("span",{key:v.threshold,class:J(["w-1.5 h-1.5 rounded-full",S5?(y(),R("span",R0,"+"+k(g.totalTiers-5),1)):q("",!0)]),d("span",{class:J(["text-xs font-semibold",g.isClose?"text-green-500":"text-gray-400 dark:text-gray-500"])},k(g.progress)+"% ",3)])]))),128)),c.value>0?(y(),R("div",C0," +"+k(c.value)+" more achievements to unlock ",1)):q("",!0),a.value.length?q("",!0):(y(),R("div",S0,[...m[2]||(m[2]=[d("div",{class:"w-16 h-16 mx-auto mb-3 rounded-2xl bg-gradient-to-br from-yellow-400 to-amber-500 flex items-center justify-center shadow-lg"},[d("i",{class:"fas fa-trophy text-2xl text-white"})],-1),d("p",{class:"font-medium text-gray-700 dark:text-gray-300"},"All achievements unlocked!",-1),d("p",{class:"text-sm mt-1"},"You're a legend!",-1)])]))]))}},E0={class:"py-12 px-4"},P0={class:"container mx-auto"},$0={class:"flex flex-col md:flex-row items-center md:items-start space-y-4 md:space-y-0 md:space-x-8"},T0={class:"text-center md:text-left"},O0={class:"text-4xl font-bold gradient-text"},I0={class:"text-xl text-gray-500 dark:text-gray-400 mt-1"},N0={class:"flex items-center justify-center md:justify-start space-x-4 mt-4"},M0={class:"score-card rounded-lg px-4 py-2"},D0={class:"text-2xl font-bold gradient-text ml-2"},L0={key:0,class:"text-sm text-gray-500 dark:text-gray-400"},j0={key:0},F0={key:0,class:"mt-6 flex flex-wrap justify-center md:justify-start gap-3"},V0={class:"py-8 px-4"},H0={class:"container mx-auto"},B0={class:"grid grid-cols-2 md:grid-cols-4 gap-4"},U0={class:"py-8 px-4"},G0={class:"container mx-auto"},q0={class:"grid md:grid-cols-2 gap-6"},W0={class:"card"},K0={class:"space-y-4"},z0={class:"flex items-center justify-between"},J0={class:"text-green-500 font-semibold"},Q0={class:"flex items-center justify-between"},Y0={class:"text-red-500 font-semibold"},X0={key:0,class:"flex items-center justify-between"},Z0={class:"text-emerald-500 font-semibold"},em={key:1,class:"flex items-center justify-between"},tm={class:"text-rose-500 font-semibold"},nm={key:2,class:"flex items-center justify-between"},sm={class:"text-cyan-500 font-semibold"},rm={key:3,class:"flex items-center justify-between"},om={class:"text-amber-500 font-semibold"},im={class:"flex items-center justify-between"},lm={class:"text-gray-800 dark:text-white font-semibold"},am={key:4,class:"flex items-center justify-between"},cm={class:"text-gray-800 dark:text-white font-semibold"},um={class:"card"},dm={class:"space-y-4"},fm={class:"flex items-center justify-between"},mm={class:"text-gray-800 dark:text-white font-semibold"},hm={class:"flex items-center justify-between"},gm={class:"text-green-500 font-semibold"},pm={class:"flex items-center justify-between"},vm={class:"text-orange-500 font-semibold"},ym={class:"flex items-center justify-between"},xm={class:"text-gray-800 dark:text-white font-semibold"},bm={key:0,class:"flex items-center justify-between"},_m={class:"text-gray-800 dark:text-white font-semibold"},wm={key:0,class:"py-8 px-4"},km={class:"container mx-auto"},Rm={class:"card"},Cm={class:"grid grid-cols-2 md:grid-cols-4 lg:grid-cols-7 gap-4"},Sm={class:"text-center p-4 rounded-lg bg-gray-50 dark:bg-gray-800/50"},Am={class:"text-2xl font-bold text-green-500"},Em={class:"text-xs text-gray-400 dark:text-gray-500"},Pm={class:"text-center p-4 rounded-lg bg-gray-50 dark:bg-gray-800/50"},$m={class:"text-2xl font-bold text-blue-500"},Tm={class:"text-xs text-gray-400 dark:text-gray-500"},Om={class:"text-center p-4 rounded-lg bg-gray-50 dark:bg-gray-800/50"},Im={class:"text-2xl font-bold text-purple-500"},Nm={class:"text-xs text-gray-400 dark:text-gray-500"},Mm={class:"text-center p-4 rounded-lg bg-gray-50 dark:bg-gray-800/50"},Dm={class:"text-2xl font-bold text-pink-500"},Lm={class:"text-xs text-gray-400 dark:text-gray-500"},jm={class:"text-center p-4 rounded-lg bg-gray-50 dark:bg-gray-800/50"},Fm={class:"text-2xl font-bold text-orange-500"},Vm={class:"text-center p-4 rounded-lg bg-gray-50 dark:bg-gray-800/50"},Hm={class:"text-2xl font-bold text-yellow-500"},Bm={class:"text-center p-4 rounded-lg bg-gray-50 dark:bg-gray-800/50"},Um={class:"text-2xl font-bold text-indigo-500"},Gm={class:"text-xs text-gray-400 dark:text-gray-500"},qm={class:"py-8 px-4"},Wm={class:"container mx-auto"},Km={class:"grid md:grid-cols-2 gap-6"},zm={key:0,class:"card"},Jm={class:"flex items-center justify-between mb-6"},Qm={class:"px-2.5 py-1 rounded-full bg-gradient-to-r from-yellow-400 to-amber-500 text-white text-sm font-bold shadow-md"},Ym={class:"grid grid-cols-4 sm:grid-cols-5 gap-3"},Xm={class:"card"},Zm={key:1,class:"py-8 px-4"},eh={class:"container mx-auto"},th={class:"flex flex-wrap gap-2"},nh={__name:"Contributor",setup(e){const t=es(),n=Pe("globalData"),s=ke(null),r=ke(!0),o=ke(null),i=oe(()=>[{label:"Dashboard",to:"/"},{label:"Contributors"},{label:s.value?.login||t.params.login}]);async function l(){r.value=!0,o.value=null;const a=t.params.login;try{const c=await fetch(`./data/contributors/${a}.json`);if(c.ok){const u=await c.json(),g=(n.value?.leaderboard||[]).find(v=>v.login===a);g&&(u.score={total:g.score,rank:g.rank,breakdown:u.score?.breakdown},u.achievements=g.achievements),s.value=u}else{let m=(n.value?.leaderboard||[]).find(g=>g.login===a);if(!m){const g=n.value?.repositories||[];for(const v of g){const S=v.contributors?.find(I=>I.login===a);if(S){m=S;break}}}m?s.value=m:o.value="Contributor not found"}}catch(c){o.value=`Failed to load contributor: ${c.message}`}r.value=!1}return jt(l),Ue(()=>t.params,l),Ue(n,l),(a,c)=>(y(),R("div",null,[r.value?(y(),ie(Zs,{key:0,message:"Loading contributor..."})):o.value?(y(),ie(er,{key:1,message:o.value},null,8,["message"])):s.value?(y(),R(Q,{key:2},[d("header",E0,[d("div",P0,[N(ts,{breadcrumbs:i.value,title:""},null,8,["breadcrumbs"]),d("div",$0,[N(Sn,{src:s.value.avatar_url,name:s.value.login,size:"2xl",class:"shadow-modern"},null,8,["src","name"]),d("div",T0,[d("h1",O0,k(s.value.name||s.value.login),1),d("p",I0,[N($i,{url:`https://github.com/${s.value.login}`},{default:Z(()=>[ce(" @"+k(s.value.login),1)]),_:1},8,["url"])]),d("div",N0,[d("div",M0,[c[0]||(c[0]=d("span",{class:"text-sm text-gray-500 dark:text-gray-400"},"Score:",-1)),d("span",D0,k(P(z)(s.value.score?.total||s.value.score||0)),1)]),s.value.score?.rank?(y(),R("div",L0,[ce(" Rank #"+k(s.value.score.rank)+" ",1),s.value.score?.percentile_rank?(y(),R("span",j0," (Top "+k(P(Iu)(s.value.score.percentile_rank))+") ",1)):q("",!0)])):q("",!0)]),s.value.achievements?.length?(y(),R("div",F0,[(y(!0),R(Q,null,xe(P(Pi)(s.value.achievements),u=>(y(),ie(wn,{key:u,"achievement-id":u,size:"lg","show-label":""},null,8,["achievement-id"]))),128))])):q("",!0)])])])]),d("section",V0,[d("div",H0,[d("div",B0,[N(_e,{value:s.value.commit_count||0,label:"Commits",icon:"fas fa-code-commit","icon-color":"text-green-500"},null,8,["value"]),N(_e,{value:s.value.prs_opened||0,label:"PRs Opened",icon:"fas fa-code-pull-request","icon-color":"text-blue-500"},null,8,["value"]),N(_e,{value:s.value.prs_merged||0,label:"PRs Merged",icon:"fas fa-code-merge","icon-color":"text-purple-500"},null,8,["value"]),N(_e,{value:s.value.reviews_given||0,label:"Reviews Given",icon:"fas fa-eye","icon-color":"text-orange-500"},null,8,["value"])])])]),d("section",U0,[d("div",G0,[d("div",q0,[d("div",W0,[c[9]||(c[9]=d("h3",{class:"text-lg font-semibold text-gray-800 dark:text-white mb-4"},[d("i",{class:"fas fa-code text-green-500 mr-2"}),ce("Code Contributions ")],-1)),d("div",K0,[d("div",z0,[c[1]||(c[1]=d("span",{class:"text-gray-600 dark:text-gray-300"},"Lines Added",-1)),d("span",J0," +"+k(P(z)(s.value.lines_added||0)),1)]),d("div",Q0,[c[2]||(c[2]=d("span",{class:"text-gray-600 dark:text-gray-300"},"Lines Deleted",-1)),d("span",Y0," -"+k(P(z)(s.value.lines_deleted||0)),1)]),s.value.meaningful_lines_added!==void 0?(y(),R("div",X0,[c[3]||(c[3]=d("span",{class:"text-gray-600 dark:text-gray-300"},"Meaningful Lines Added",-1)),d("span",Z0," +"+k(P(z)(s.value.meaningful_lines_added||0)),1)])):q("",!0),s.value.meaningful_lines_deleted!==void 0?(y(),R("div",em,[c[4]||(c[4]=d("span",{class:"text-gray-600 dark:text-gray-300"},"Meaningful Lines Deleted",-1)),d("span",tm," -"+k(P(z)(s.value.meaningful_lines_deleted||0)),1)])):q("",!0),s.value.comment_lines_added!==void 0?(y(),R("div",nm,[c[5]||(c[5]=d("span",{class:"text-gray-600 dark:text-gray-300"},"Comment Lines Added",-1)),d("span",sm," +"+k(P(z)(s.value.comment_lines_added||0)),1)])):q("",!0),s.value.comment_lines_deleted!==void 0?(y(),R("div",rm,[c[6]||(c[6]=d("span",{class:"text-gray-600 dark:text-gray-300"},"Comment Lines Deleted",-1)),d("span",om," -"+k(P(z)(s.value.comment_lines_deleted||0)),1)])):q("",!0),d("div",im,[c[7]||(c[7]=d("span",{class:"text-gray-600 dark:text-gray-300"},"Files Changed",-1)),d("span",lm,k(P(z)(s.value.files_changed||0)),1)]),s.value.avg_pr_size?(y(),R("div",am,[c[8]||(c[8]=d("span",{class:"text-gray-600 dark:text-gray-300"},"Avg PR Size",-1)),d("span",cm,k(P(z)(Math.round(s.value.avg_pr_size)))+" lines ",1)])):q("",!0)])]),d("div",um,[c[15]||(c[15]=d("h3",{class:"text-lg font-semibold text-gray-800 dark:text-white mb-4"},[d("i",{class:"fas fa-comments text-purple-500 mr-2"}),ce("Review Activity ")],-1)),d("div",dm,[d("div",fm,[c[10]||(c[10]=d("span",{class:"text-gray-600 dark:text-gray-300"},"Reviews Given",-1)),d("span",mm,k(P(z)(s.value.reviews_given||0)),1)]),d("div",hm,[c[11]||(c[11]=d("span",{class:"text-gray-600 dark:text-gray-300"},"Approvals",-1)),d("span",gm,k(P(z)(s.value.approvals_given||0)),1)]),d("div",pm,[c[12]||(c[12]=d("span",{class:"text-gray-600 dark:text-gray-300"},"Changes Requested",-1)),d("span",vm,k(P(z)(s.value.changes_requested||0)),1)]),d("div",ym,[c[13]||(c[13]=d("span",{class:"text-gray-600 dark:text-gray-300"},"Review Comments",-1)),d("span",xm,k(P(z)(s.value.review_comments||0)),1)]),s.value.avg_review_time_hours?(y(),R("div",bm,[c[14]||(c[14]=d("span",{class:"text-gray-600 dark:text-gray-300"},"Avg Review Time",-1)),d("span",_m,k(P(Ou)(s.value.avg_review_time_hours)),1)])):q("",!0)])])])])]),s.value.score?.breakdown?(y(),R("section",wm,[d("div",km,[d("div",Rm,[c[25]||(c[25]=d("h3",{class:"text-lg font-semibold text-gray-800 dark:text-white mb-4"},[d("i",{class:"fas fa-chart-pie gradient-text mr-2"}),ce("Score Breakdown ")],-1)),d("div",Cm,[d("div",Sm,[d("div",Am,k(P(z)(s.value.score.breakdown.commits||0)),1),c[16]||(c[16]=d("div",{class:"text-xs text-gray-500 dark:text-gray-400 mt-1"},"Commits",-1)),d("div",Em,k(s.value.commit_count||0)+" × 10 pts",1)]),d("div",Pm,[d("div",$m,k(P(z)(s.value.score.breakdown.prs||0)),1),c[17]||(c[17]=d("div",{class:"text-xs text-gray-500 dark:text-gray-400 mt-1"},"PRs",-1)),d("div",Tm,k(s.value.prs_opened||0)+" opened + "+k(s.value.prs_merged||0)+" merged",1)]),d("div",Om,[d("div",Im,k(P(z)(s.value.score.breakdown.reviews||0)),1),c[18]||(c[18]=d("div",{class:"text-xs text-gray-500 dark:text-gray-400 mt-1"},"Reviews",-1)),d("div",Nm,k(s.value.reviews_given||0)+" × 30 pts",1)]),d("div",Mm,[d("div",Dm,k(P(z)(s.value.score.breakdown.comments||0)),1),c[19]||(c[19]=d("div",{class:"text-xs text-gray-500 dark:text-gray-400 mt-1"},"Comments",-1)),d("div",Lm,k(s.value.review_comments||0)+" × 5 pts",1)]),d("div",jm,[d("div",Fm,k(P(z)(s.value.score.breakdown.line_changes||0)),1),c[20]||(c[20]=d("div",{class:"text-xs text-gray-500 dark:text-gray-400 mt-1"},"Line Changes",-1)),c[21]||(c[21]=d("div",{class:"text-xs text-gray-400 dark:text-gray-500"},"meaningful lines × 0.1 pts",-1))]),d("div",Vm,[d("div",Hm,k(P(z)(s.value.score.breakdown.response_bonus||0)),1),c[22]||(c[22]=d("div",{class:"text-xs text-gray-500 dark:text-gray-400 mt-1"},"Response Bonus",-1)),c[23]||(c[23]=d("div",{class:"text-xs text-gray-400 dark:text-gray-500"},"fast review bonus",-1))]),d("div",Bm,[d("div",Um,k(P(z)(s.value.score.breakdown.out_of_hours||0)),1),c[24]||(c[24]=d("div",{class:"text-xs text-gray-500 dark:text-gray-400 mt-1"},"Out of Hours",-1)),d("div",Gm,k(s.value.out_of_hours_count||0)+" × 2 pts",1)])])])])])):q("",!0),d("section",qm,[d("div",Wm,[d("div",Km,[s.value.achievements?.length?(y(),R("div",zm,[d("div",Jm,[c[26]||(c[26]=d("h3",{class:"text-lg font-semibold text-gray-800 dark:text-white"},[d("i",{class:"fas fa-award gradient-text mr-2"}),ce("Achievements Earned ")],-1)),d("span",Qm,k(s.value.achievements.length),1)]),d("div",Ym,[(y(!0),R(Q,null,xe(s.value.achievements,u=>(y(),R("div",{key:u,class:"flex flex-col items-center p-2 rounded-xl bg-gray-50 dark:bg-gray-800/50 hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors"},[N(wn,{"achievement-id":u,size:"md","show-label":""},null,8,["achievement-id"])]))),128))])])):q("",!0),d("div",Xm,[c[27]||(c[27]=d("h3",{class:"text-lg font-semibold text-gray-800 dark:text-white mb-6"},[d("i",{class:"fas fa-chart-line text-primary-500 mr-2"}),ce("Next Achievements ")],-1)),N(A0,{contributor:s.value,"max-display":6},null,8,["contributor"])])])])]),s.value.repositories_contributed?.length?(y(),R("section",Zm,[d("div",eh,[N(It,{title:`Contributed to ${s.value.repositories_contributed.length} Repositories`,icon:"fas fa-folder-tree","icon-color":"text-blue-500"},null,8,["title"]),d("div",th,[(y(!0),R(Q,null,xe(s.value.repositories_contributed,u=>(y(),ie(P(Ce),{key:u,to:`/repos/${u}`,class:"inline-flex items-center px-3 py-1.5 rounded-full text-sm bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-300 hover:bg-primary-100 dark:hover:bg-primary-900/30 hover:text-primary-700 dark:hover:text-primary-300 transition-colors"},{default:Z(()=>[c[28]||(c[28]=d("i",{class:"fas fa-code-branch text-gray-400 mr-2"},null,-1)),ce(" "+k(u),1)]),_:2},1032,["to"]))),128))])])])):q("",!0)],64)):q("",!0)]))}},sh=[{path:"/",name:"dashboard",component:Kd},{path:"/leaderboard",name:"leaderboard",component:Cf},{path:"/repos/:owner/:name",name:"repository",component:qf},{path:"/teams/:slug",name:"team",component:u0},{path:"/contributors/:login",name:"contributor",component:nh}],rh=au({history:Hc(),routes:sh,scrollBehavior(){return{top:0}}}),Ti=ec(Tu);Ti.use(rh);Ti.mount("#app"); diff --git a/internal/generator/site/dist/index.html b/internal/generator/site/dist/index.html index 3ed787e..8b87645 100644 --- a/internal/generator/site/dist/index.html +++ b/internal/generator/site/dist/index.html @@ -8,9 +8,9 @@ - + - +
diff --git a/internal/git/repository.go b/internal/git/repository.go index d6aaa54..caf2d14 100644 --- a/internal/git/repository.go +++ b/internal/git/repository.go @@ -217,6 +217,8 @@ func (r *Repository) FetchCommits(ctx context.Context, owner, name string, since Deletions: stats.Deletions, MeaningfulAdditions: stats.MeaningfulAdditions, MeaningfulDeletions: stats.MeaningfulDeletions, + CommentAdditions: stats.CommentAdditions, + CommentDeletions: stats.CommentDeletions, FilesChanged: stats.FilesChanged, Repository: fmt.Sprintf("%s/%s", owner, name), URL: fmt.Sprintf("https://github.com/%s/%s/commit/%s", owner, name, c.Hash.String()), @@ -245,6 +247,8 @@ type commitStats struct { Deletions int MeaningfulAdditions int MeaningfulDeletions int + CommentAdditions int + CommentDeletions int FilesChanged int HasTests bool } @@ -327,6 +331,8 @@ func (r *Repository) getCommitStats(c *object.Commit, testPatterns []string) com stats.Additions++ if diff.IsMeaningfulLine(line) { stats.MeaningfulAdditions++ + } else if diff.IsCommentLine(line) && !diff.IsWhitespaceLine(line) { + stats.CommentAdditions++ } } case 2: // Delete @@ -334,6 +340,8 @@ func (r *Repository) getCommitStats(c *object.Commit, testPatterns []string) com stats.Deletions++ if diff.IsMeaningfulLine(line) { stats.MeaningfulDeletions++ + } else if diff.IsCommentLine(line) && !diff.IsWhitespaceLine(line) { + stats.CommentDeletions++ } } } diff --git a/internal/github/client.go b/internal/github/client.go index 71a127c..f8317d0 100644 --- a/internal/github/client.go +++ b/internal/github/client.go @@ -727,9 +727,10 @@ func convertCommit(c *github.RepositoryCommit, owner, repo string) models.Commit } filesChanged = len(c.Files) - // Detect if commit includes tests and calculate meaningful line counts + // Detect if commit includes tests and calculate meaningful/comment line counts hasTests := false var meaningfulAdditions, meaningfulDeletions int + var commentAdditions, commentDeletions int for _, f := range c.Files { filename := f.GetFilename() @@ -749,12 +750,14 @@ func convertCommit(c *github.RepositoryCommit, owner, repo string) models.Commit continue } - // Analyze file patch to get meaningful line counts + // Analyze file patch to get meaningful and comment line counts patch := f.GetPatch() if patch != "" { stats := diff.AnalyzePatch(patch) meaningfulAdditions += stats.MeaningfulAdditions meaningfulDeletions += stats.MeaningfulDeletions + commentAdditions += stats.CommentAdditions + commentDeletions += stats.CommentDeletions } } @@ -773,6 +776,8 @@ func convertCommit(c *github.RepositoryCommit, owner, repo string) models.Commit Deletions: deletions, MeaningfulAdditions: meaningfulAdditions, MeaningfulDeletions: meaningfulDeletions, + CommentAdditions: commentAdditions, + CommentDeletions: commentDeletions, FilesChanged: filesChanged, Repository: fmt.Sprintf("%s/%s", owner, repo), URL: c.GetHTMLURL(), diff --git a/web/src/components/AchievementBadge.vue b/web/src/components/AchievementBadge.vue index 288481d..4ca8d90 100644 --- a/web/src/components/AchievementBadge.vue +++ b/web/src/components/AchievementBadge.vue @@ -29,97 +29,153 @@ const getTierFromThreshold = (threshold) => { return 1 } -// Extract threshold from achievement ID (e.g., "commit-100" -> 100) +// Extract threshold from achievement ID (e.g., "commit-100" -> 100, "docs-del-50" -> 50) const extractThreshold = (id) => { const match = id.match(/(\d+)$/) if (match) return parseInt(match[1], 10) - // Special cases for non-numeric achievements - if (id === 'first-commit' || id === 'pr-opener' || id === 'reviewer') return 1 return 50 // Default for special achievements } -// Achievement definitions matching the Go backend +// Achievement definitions matching the Go backend (internal/config/schema.go) const achievements = { - // Commit achievements - Journey from apprentice to legend - 'first-commit': { name: 'Hello World', description: 'Made your first commit', icon: 'fa-baby' }, - 'commit-10': { name: 'Seedling', description: 'Made 10 commits', icon: 'fa-seedling' }, - 'commit-25': { name: 'Momentum', description: 'Made 25 commits', icon: 'fa-wind' }, - 'commit-50': { name: 'Trailblazer', description: 'Made 50 commits', icon: 'fa-hiking' }, - 'commit-100': { name: 'Centurion', description: 'Made 100 commits', icon: 'fa-shield-halved' }, - 'commit-250': { name: 'Relentless', description: 'Made 250 commits', icon: 'fa-bolt-lightning' }, - 'commit-500': { name: 'Unstoppable', description: 'Made 500 commits', icon: 'fa-meteor' }, - 'commit-1000': { name: 'Grandmaster', description: 'Made 1000 commits', icon: 'fa-chess-king' }, - 'commit-5000': { name: 'Titan', description: 'Made 5000 commits', icon: 'fa-mountain-sun' }, - 'commit-10000': { name: 'Immortal', description: 'Made 10000 commits', icon: 'fa-dragon' }, - 'commit-25000': { name: 'Ascended', description: 'Made 25000 commits', icon: 'fa-infinity' }, + // ===== COMMIT COUNT (Tiers: 1, 10, 50, 100, 500, 1000) ===== + 'commit-1': { name: 'First Steps', description: 'Made your first commit', icon: 'fa-baby' }, + 'commit-10': { name: 'Getting Started', description: 'Made 10 commits', icon: 'fa-seedling' }, + 'commit-50': { name: 'Contributor', description: 'Made 50 commits', icon: 'fa-code' }, + 'commit-100': { name: 'Committed', description: 'Made 100 commits', icon: 'fa-fire' }, + 'commit-500': { name: 'Code Machine', description: 'Made 500 commits', icon: 'fa-robot' }, + 'commit-1000': { name: 'Code Warrior', description: 'Made 1000 commits', icon: 'fa-crown' }, - // PR achievements - The art of collaboration - 'pr-opener': { name: 'First Blood', description: 'Opened your first pull request', icon: 'fa-flag-checkered' }, - 'pr-10': { name: 'Collaborator', description: 'Opened 10 pull requests', icon: 'fa-handshake' }, - 'pr-25': { name: 'Integrator', description: 'Opened 25 pull requests', icon: 'fa-code-branch' }, - 'pr-50': { name: 'Architect', description: 'Opened 50 pull requests', icon: 'fa-building' }, - 'pr-100': { name: 'Vanguard', description: 'Opened 100 pull requests', icon: 'fa-rocket' }, + // ===== PR OPENED (Tiers: 1, 10, 25, 50, 100, 250) ===== + 'pr-1': { name: 'PR Pioneer', description: 'Opened your first pull request', icon: 'fa-code-pull-request' }, + 'pr-10': { name: 'PR Regular', description: 'Opened 10 pull requests', icon: 'fa-code-branch' }, + 'pr-25': { name: 'PR Pro', description: 'Opened 25 pull requests', icon: 'fa-code-compare' }, + 'pr-50': { name: 'Merge Master', description: 'Opened 50 pull requests', icon: 'fa-code-merge' }, + 'pr-100': { name: 'PR Champion', description: 'Opened 100 pull requests', icon: 'fa-trophy' }, + 'pr-250': { name: 'PR Legend', description: 'Opened 250 pull requests', icon: 'fa-medal' }, - // Review achievements - The guardian path - 'reviewer': { name: 'Watchful Eye', description: 'Reviewed your first pull request', icon: 'fa-eye' }, - 'reviewer-10': { name: 'Sentinel', description: 'Reviewed 10 pull requests', icon: 'fa-shield' }, - 'reviewer-25': { name: 'Gatekeeper', description: 'Reviewed 25 pull requests', icon: 'fa-dungeon' }, - 'reviewer-50': { name: 'Oracle', description: 'Reviewed 50 pull requests', icon: 'fa-hat-wizard' }, - 'reviewer-100': { name: 'Sage', description: 'Reviewed 100 pull requests', icon: 'fa-book-skull' }, + // ===== REVIEWS (Tiers: 1, 10, 25, 50, 100, 250) ===== + 'review-1': { name: 'First Review', description: 'Reviewed your first pull request', icon: 'fa-magnifying-glass' }, + 'review-10': { name: 'Reviewer', description: 'Reviewed 10 pull requests', icon: 'fa-eye' }, + 'review-25': { name: 'Review Regular', description: 'Reviewed 25 pull requests', icon: 'fa-glasses' }, + 'review-50': { name: 'Review Expert', description: 'Reviewed 50 pull requests', icon: 'fa-user-check' }, + 'review-100': { name: 'Review Guru', description: 'Reviewed 100 pull requests', icon: 'fa-user-graduate' }, + 'review-250': { name: 'Review Master', description: 'Reviewed 250 pull requests', icon: 'fa-award' }, - // Speed achievements - Time is of the essence - 'speed-demon': { name: 'Lightning Rod', description: 'Average review response under 1 hour', icon: 'fa-bolt' }, - 'quick-responder': { name: 'Flash', description: 'Average review response under 4 hours', icon: 'fa-gauge-high' }, + // ===== REVIEW COMMENTS (Tiers: 10, 50, 100, 250, 500) ===== + 'comment-10': { name: 'Commentator', description: 'Left 10 PR review comments', icon: 'fa-comment' }, + 'comment-50': { name: 'Feedback Giver', description: 'Left 50 PR review comments', icon: 'fa-comments' }, + 'comment-100': { name: 'Code Critic', description: 'Left 100 PR review comments', icon: 'fa-comment-dots' }, + 'comment-250': { name: 'Feedback Expert', description: 'Left 250 PR review comments', icon: 'fa-message' }, + 'comment-500': { name: 'Comment Champion', description: 'Left 500 PR review comments', icon: 'fa-scroll' }, - // Comment achievements - 'commentator': { name: 'Wordsmith', description: 'Left 50 PR review comments', icon: 'fa-feather-pointed' }, + // ===== LINES ADDED (Tiers: 100, 1000, 5000, 10000, 50000) ===== + 'lines-added-100': { name: 'First Hundred', description: 'Added 100 lines of code', icon: 'fa-plus' }, + 'lines-added-1000': { name: 'Thousand Lines', description: 'Added 1000 lines of code', icon: 'fa-layer-group' }, + 'lines-added-5000': { name: 'Five Thousand', description: 'Added 5000 lines of code', icon: 'fa-cubes' }, + 'lines-added-10000': { name: 'Ten Thousand', description: 'Added 10000 lines of code', icon: 'fa-mountain' }, + 'lines-added-50000': { name: 'Code Mountain', description: 'Added 50000 lines of code', icon: 'fa-mountain-sun' }, - // Lines of code achievements - Volume mastery - 'lines-1000': { name: 'Scribe', description: 'Added 1000 lines of code', icon: 'fa-scroll' }, - 'lines-10000': { name: 'Novelist', description: 'Added 10000 lines of code', icon: 'fa-book' }, - 'lines-100000': { name: 'Encyclopedia', description: 'Added 100000 lines of code', icon: 'fa-landmark' }, + // ===== LINES DELETED (Tiers: 100, 500, 1000, 5000, 10000) ===== + 'lines-deleted-100': { name: 'Tidying Up', description: 'Deleted 100 lines of code', icon: 'fa-eraser' }, + 'lines-deleted-500': { name: 'Spring Cleaning', description: 'Deleted 500 lines of code', icon: 'fa-broom' }, + 'lines-deleted-1000': { name: 'Code Cleaner', description: 'Deleted 1000 lines of code', icon: 'fa-trash-can' }, + 'lines-deleted-5000': { name: 'Refactoring Hero', description: 'Deleted 5000 lines of code', icon: 'fa-recycle' }, + 'lines-deleted-10000': { name: 'Deletion Master', description: 'Deleted 10000 lines of code', icon: 'fa-dumpster-fire' }, - // Deletion achievements - The minimalist way - 'cleaner': { name: 'Pruner', description: 'Deleted 1000 lines of code', icon: 'fa-scissors' }, - 'refactorer': { name: 'Surgeon', description: 'Deleted 10000 lines of code', icon: 'fa-syringe' }, - 'annihilator': { name: 'Annihilator', description: 'Deleted 100000 lines of code', icon: 'fa-explosion' }, + // ===== REVIEW RESPONSE TIME (Tiers: 24h, 4h, 1h) ===== + 'review-time-24h': { name: 'Same Day Reviewer', description: 'Average review response under 24 hours', icon: 'fa-clock' }, + 'review-time-4h': { name: 'Quick Responder', description: 'Average review response under 4 hours', icon: 'fa-stopwatch' }, + 'review-time-1h': { name: 'Speed Demon', description: 'Average review response under 1 hour', icon: 'fa-bolt' }, - // Multi-repo achievements - The wanderer - 'multi-repo': { name: 'Nomad', description: 'Contributed to 5 repositories', icon: 'fa-compass' }, - 'multi-repo-10': { name: 'Explorer', description: 'Contributed to 10 repositories', icon: 'fa-map' }, + // ===== MULTI-REPO (Tiers: 2, 5, 10) ===== + 'repo-2': { name: 'Multi-Repo', description: 'Contributed to 2 repositories', icon: 'fa-folder' }, + 'repo-5': { name: 'Repo Explorer', description: 'Contributed to 5 repositories', icon: 'fa-folder-tree' }, + 'repo-10': { name: 'Repo Master', description: 'Contributed to 10 repositories', icon: 'fa-network-wired' }, - // Team collaboration - Social butterfly - 'team-player': { name: 'Ambassador', description: 'Reviewed PRs from 10 different contributors', icon: 'fa-users' }, - 'team-player-25': { name: 'Diplomat', description: 'Reviewed PRs from 25 different contributors', icon: 'fa-globe' }, + // ===== UNIQUE REVIEWEES (Tiers: 3, 10, 25) ===== + 'reviewees-3': { name: 'Helpful Colleague', description: 'Reviewed PRs from 3 different contributors', icon: 'fa-user-group' }, + 'reviewees-10': { name: 'Team Player', description: 'Reviewed PRs from 10 different contributors', icon: 'fa-people-group' }, + 'reviewees-25': { name: 'Community Pillar', description: 'Reviewed PRs from 25 different contributors', icon: 'fa-people-roof' }, - // PR size achievements - Go big or go home - 'big-pr': { name: 'Heavyweight', description: 'Merged a PR with 1000+ lines', icon: 'fa-dumbbell' }, - 'mega-pr': { name: 'Colossus', description: 'Merged a PR with 5000+ lines', icon: 'fa-monument' }, + // ===== PR SIZE - LARGE (Tiers: 500, 1000, 5000) ===== + 'large-pr-500': { name: 'Big Change', description: 'Merged a PR with 500+ lines changed', icon: 'fa-expand' }, + 'large-pr-1000': { name: 'Heavy Lifter', description: 'Merged a PR with 1000+ lines changed', icon: 'fa-weight-hanging' }, + 'large-pr-5000': { name: 'Mega Merge', description: 'Merged a PR with 5000+ lines changed', icon: 'fa-dumbbell' }, - // Small PR achievements - Precision strikes - 'small-pr-10': { name: 'Minimalist', description: 'Merged 10 PRs under 100 lines', icon: 'fa-compress' }, - 'small-pr-50': { name: 'Atomic', description: 'Merged 50 PRs under 100 lines', icon: 'fa-atom' }, + // ===== SMALL PRs (Tiers: 5, 10, 25, 50) ===== + 'small-pr-5': { name: 'Small Changes', description: 'Merged 5 PRs under 100 lines', icon: 'fa-compress' }, + 'small-pr-10': { name: 'Small PR Advocate', description: 'Merged 10 PRs under 100 lines', icon: 'fa-minimize' }, + 'small-pr-25': { name: 'Atomic Commits', description: 'Merged 25 PRs under 100 lines', icon: 'fa-atom' }, + 'small-pr-50': { name: 'Micro PR Master', description: 'Merged 50 PRs under 100 lines', icon: 'fa-microchip' }, - // Perfect PR achievements - Flawless execution - 'perfect-pr-5': { name: 'Sharpshooter', description: '5 PRs merged without changes requested', icon: 'fa-bullseye' }, - 'perfect-pr-25': { name: 'Perfectionist', description: '25 PRs merged without changes requested', icon: 'fa-gem' }, - 'perfect-pr-100': { name: 'Immaculate', description: '100 PRs merged without changes requested', icon: 'fa-crown' }, + // ===== PERFECT PRs (Tiers: 1, 5, 10, 25) ===== + 'perfect-pr-1': { name: 'First Try', description: '1 PR merged without changes requested', icon: 'fa-check' }, + 'perfect-pr-5': { name: 'Clean Code', description: '5 PRs merged without changes requested', icon: 'fa-check-double' }, + 'perfect-pr-10': { name: 'Quality Author', description: '10 PRs merged without changes requested', icon: 'fa-circle-check' }, + 'perfect-pr-25': { name: 'Flawless', description: '25 PRs merged without changes requested', icon: 'fa-gem' }, - // Streak achievements - Consistency is key - 'streak-7': { name: 'Hot Streak', description: '7 day contribution streak', icon: 'fa-fire' }, - 'streak-30': { name: 'Ironclad', description: '30 day contribution streak', icon: 'fa-link' }, - 'streak-90': { name: 'Unbreakable', description: '90 day contribution streak', icon: 'fa-diamond' }, + // ===== ACTIVE DAYS (Tiers: 7, 30, 60, 100) ===== + 'active-7': { name: 'Week Active', description: 'Active on 7 different days', icon: 'fa-calendar-day' }, + 'active-30': { name: 'Month Active', description: 'Active on 30 different days', icon: 'fa-calendar-week' }, + 'active-60': { name: 'Consistent Contributor', description: 'Active on 60 different days', icon: 'fa-chart-line' }, + 'active-100': { name: 'Dedicated Developer', description: 'Active on 100 different days', icon: 'fa-fire-flame-curved' }, - // Time-based achievements - When you code matters - 'early-bird': { name: 'Dawn Patrol', description: '50 commits before 9am', icon: 'fa-sun' }, - 'night-owl': { name: 'Nighthawk', description: '50 commits after 9pm', icon: 'fa-moon' }, - 'nosferatu': { name: 'Vampire', description: '25 commits between midnight and 4am', icon: 'fa-ghost' }, - 'weekend-warrior': { name: 'No Days Off', description: '25 weekend commits', icon: 'fa-calendar-xmark' }, + // ===== LONGEST STREAK (Tiers: 3, 7, 14, 30) ===== + 'streak-3': { name: 'Getting Rolling', description: '3 day contribution streak', icon: 'fa-forward' }, + 'streak-7': { name: 'Week Warrior', description: '7 day contribution streak', icon: 'fa-calendar-week' }, + 'streak-14': { name: 'Two Week Streak', description: '14 day contribution streak', icon: 'fa-fire' }, + 'streak-30': { name: 'Month Master', description: '30 day contribution streak', icon: 'fa-calendar-check' }, - // Activity achievements - Showing up matters - 'active-30': { name: 'Reliable', description: 'Active on 30 different days', icon: 'fa-calendar-check' }, - 'active-100': { name: 'Stalwart', description: 'Active on 100 different days', icon: 'fa-tower-observation' }, - 'active-365': { name: 'Eternal', description: 'Active on 365 different days', icon: 'fa-sun-plant-wilt' } + // ===== WORK WEEK STREAK (Tiers: 3, 5, 10, 20) ===== + 'workweek-3': { name: 'Work Week Start', description: '3 consecutive weekday streak', icon: 'fa-briefcase' }, + 'workweek-5': { name: 'Full Work Week', description: '5 consecutive weekday streak', icon: 'fa-building' }, + 'workweek-10': { name: 'Two Week Grind', description: '10 consecutive weekday streak', icon: 'fa-business-time' }, + 'workweek-20': { name: 'Month of Mondays', description: '20 consecutive weekday streak', icon: 'fa-landmark' }, + + // ===== EARLY BIRD (Tiers: 10, 25, 50, 100) ===== + 'earlybird-10': { name: 'Early Riser', description: '10 commits before 9am', icon: 'fa-mug-hot' }, + 'earlybird-25': { name: 'Morning Person', description: '25 commits before 9am', icon: 'fa-cloud-sun' }, + 'earlybird-50': { name: 'Early Bird', description: '50 commits before 9am', icon: 'fa-sun' }, + 'earlybird-100': { name: 'Dawn Warrior', description: '100 commits before 9am', icon: 'fa-sunrise' }, + + // ===== NIGHT OWL (Tiers: 10, 25, 50, 100) ===== + 'nightowl-10': { name: 'Late Worker', description: '10 commits after 9pm', icon: 'fa-cloud-moon' }, + 'nightowl-25': { name: 'Evening Coder', description: '25 commits after 9pm', icon: 'fa-moon' }, + 'nightowl-50': { name: 'Night Owl', description: '50 commits after 9pm', icon: 'fa-star' }, + 'nightowl-100': { name: 'Nocturnal', description: '100 commits after 9pm', icon: 'fa-star-and-crescent' }, + + // ===== MIDNIGHT CODER (Tiers: 5, 10, 25, 50) ===== + 'midnight-5': { name: 'Night Shift', description: '5 commits between midnight and 4am', icon: 'fa-ghost' }, + 'midnight-10': { name: 'Insomniac', description: '10 commits between midnight and 4am', icon: 'fa-bed' }, + 'midnight-25': { name: 'Nosferatu', description: '25 commits between midnight and 4am', icon: 'fa-skull' }, + 'midnight-50': { name: 'Vampire Coder', description: '50 commits between midnight and 4am', icon: 'fa-skull-crossbones' }, + + // ===== WEEKEND WARRIOR (Tiers: 5, 10, 25, 50) ===== + 'weekend-5': { name: 'Weekend Work', description: '5 weekend commits', icon: 'fa-couch' }, + 'weekend-10': { name: 'Weekend Regular', description: '10 weekend commits', icon: 'fa-house-laptop' }, + 'weekend-25': { name: 'Weekend Warrior', description: '25 weekend commits', icon: 'fa-gamepad' }, + 'weekend-50': { name: 'No Days Off', description: '50 weekend commits', icon: 'fa-person-running' }, + + // ===== OUT OF HOURS (Tiers: 10, 25, 50, 100) ===== + 'ooh-10': { name: 'Extra Hours', description: '10 commits outside 9am-5pm', icon: 'fa-clock-rotate-left' }, + 'ooh-25': { name: 'Flexible Schedule', description: '25 commits outside 9am-5pm', icon: 'fa-user-clock' }, + 'ooh-50': { name: 'Off-Hours Hero', description: '50 commits outside 9am-5pm', icon: 'fa-hourglass-half' }, + 'ooh-100': { name: 'Time Bender', description: '100 commits outside 9am-5pm', icon: 'fa-infinity' }, + + // ===== DOCUMENTATION & COMMENTS ADDED (Tiers: 100, 500, 1000, 2500, 5000) ===== + 'docs-100': { name: 'Documenter', description: 'Added 100 lines of comments/docs', icon: 'fa-file-lines' }, + 'docs-500': { name: 'Technical Writer', description: 'Added 500 lines of comments/docs', icon: 'fa-book' }, + 'docs-1000': { name: 'Documentation Hero', description: 'Added 1000 lines of comments/docs', icon: 'fa-book-open' }, + 'docs-2500': { name: 'Knowledge Keeper', description: 'Added 2500 lines of comments/docs', icon: 'fa-scroll' }, + 'docs-5000': { name: 'Code Historian', description: 'Added 5000 lines of comments/docs', icon: 'fa-landmark' }, + + // ===== COMMENT CLEANUP (Tiers: 50, 200, 500, 1000, 2500) ===== + 'docs-del-50': { name: 'Comment Trimmer', description: 'Removed 50 lines of outdated comments', icon: 'fa-scissors' }, + 'docs-del-200': { name: 'Cleanup Crew', description: 'Removed 200 lines of outdated comments', icon: 'fa-broom' }, + 'docs-del-500': { name: 'Dead Code Hunter', description: 'Removed 500 lines of outdated comments', icon: 'fa-skull-crossbones' }, + 'docs-del-1000': { name: 'Comment Surgeon', description: 'Removed 1000 lines of outdated comments', icon: 'fa-user-doctor' }, + 'docs-del-2500': { name: 'Noise Eliminator', description: 'Removed 2500 lines of outdated comments', icon: 'fa-volume-xmark' }, } const getAchievement = (id) => { diff --git a/web/src/composables/achievements.js b/web/src/composables/achievements.js new file mode 100644 index 0000000..f28a259 --- /dev/null +++ b/web/src/composables/achievements.js @@ -0,0 +1,137 @@ +// Achievement category mappings and utilities + +// Define achievement categories and their tier ordering (highest tier last) +const achievementCategories = { + // Commits + 'commit': ['commit-1', 'commit-10', 'commit-50', 'commit-100', 'commit-500', 'commit-1000'], + // PRs opened + 'pr': ['pr-1', 'pr-10', 'pr-25', 'pr-50', 'pr-100', 'pr-250'], + // Reviews + 'review': ['review-1', 'review-10', 'review-25', 'review-50', 'review-100', 'review-250'], + // Review comments + 'comment': ['comment-10', 'comment-50', 'comment-100', 'comment-250', 'comment-500'], + // Lines added + 'lines-added': ['lines-added-100', 'lines-added-1000', 'lines-added-5000', 'lines-added-10000', 'lines-added-50000'], + // Lines deleted + 'lines-deleted': ['lines-deleted-100', 'lines-deleted-500', 'lines-deleted-1000', 'lines-deleted-5000', 'lines-deleted-10000'], + // Review time + 'review-time': ['review-time-24h', 'review-time-4h', 'review-time-1h'], + // Multi-repo + 'repo': ['repo-2', 'repo-5', 'repo-10'], + // Unique reviewees + 'reviewees': ['reviewees-3', 'reviewees-10', 'reviewees-25'], + // Large PRs + 'large-pr': ['large-pr-500', 'large-pr-1000', 'large-pr-5000'], + // Small PRs + 'small-pr': ['small-pr-5', 'small-pr-10', 'small-pr-25', 'small-pr-50'], + // Perfect PRs + 'perfect-pr': ['perfect-pr-1', 'perfect-pr-5', 'perfect-pr-10', 'perfect-pr-25'], + // Active days + 'active': ['active-7', 'active-30', 'active-60', 'active-100'], + // Streaks + 'streak': ['streak-3', 'streak-7', 'streak-14', 'streak-30'], + // Work week streaks + 'workweek': ['workweek-3', 'workweek-5', 'workweek-10', 'workweek-20'], + // Early bird + 'earlybird': ['earlybird-10', 'earlybird-25', 'earlybird-50', 'earlybird-100'], + // Night owl + 'nightowl': ['nightowl-10', 'nightowl-25', 'nightowl-50', 'nightowl-100'], + // Midnight coder + 'midnight': ['midnight-5', 'midnight-10', 'midnight-25', 'midnight-50'], + // Weekend warrior + 'weekend': ['weekend-5', 'weekend-10', 'weekend-25', 'weekend-50'], + // Out of hours + 'ooh': ['ooh-10', 'ooh-25', 'ooh-50', 'ooh-100'], + // Documentation added + 'docs': ['docs-100', 'docs-500', 'docs-1000', 'docs-2500', 'docs-5000'], + // Documentation deleted + 'docs-del': ['docs-del-50', 'docs-del-200', 'docs-del-500', 'docs-del-1000', 'docs-del-2500'], +} + +// Get the category for an achievement ID +export function getAchievementCategory(achievementId) { + for (const [category, tiers] of Object.entries(achievementCategories)) { + if (tiers.includes(achievementId)) { + return category + } + } + return null +} + +// Get the tier index within a category (higher = better) +export function getAchievementTier(achievementId) { + const category = getAchievementCategory(achievementId) + if (!category) return -1 + return achievementCategories[category].indexOf(achievementId) +} + +/** + * Filter achievements to show only the highest tier in each category + * @param {string[]} achievements - Array of achievement IDs + * @returns {string[]} - Filtered array with only highest tier per category + */ +export function getHighestTierAchievements(achievements) { + if (!achievements || !achievements.length) return [] + + // Group achievements by category, keeping only the highest tier + const highestByCategory = {} + + for (const achievementId of achievements) { + const category = getAchievementCategory(achievementId) + if (!category) { + // Unknown achievement, keep it + highestByCategory[achievementId] = { id: achievementId, tier: -1 } + continue + } + + const tier = getAchievementTier(achievementId) + + if (!highestByCategory[category] || tier > highestByCategory[category].tier) { + highestByCategory[category] = { id: achievementId, tier } + } + } + + // Return just the achievement IDs, sorted by tier (highest first) + return Object.values(highestByCategory) + .sort((a, b) => b.tier - a.tier) + .map(item => item.id) +} + +/** + * Get a priority score for sorting achievements (higher = more impressive) + * Categories are weighted to show most impressive achievements first + */ +const categoryPriority = { + 'commit': 10, + 'pr': 9, + 'review': 8, + 'lines-added': 7, + 'perfect-pr': 6, + 'streak': 5, + 'active': 4, + 'review-time': 3, + 'docs': 2, +} + +export function getAchievementPriority(achievementId) { + const category = getAchievementCategory(achievementId) + const basePriority = categoryPriority[category] || 0 + const tier = getAchievementTier(achievementId) + // Combine category priority with tier (tier adds 0.1 per level) + return basePriority + (tier * 0.1) +} + +/** + * Get highest tier achievements, sorted by importance + * @param {string[]} achievements - Array of achievement IDs + * @param {number} limit - Maximum number to return + * @returns {string[]} - Filtered and sorted array + */ +export function getTopAchievements(achievements, limit = 6) { + const highest = getHighestTierAchievements(achievements) + + // Sort by priority (most impressive first) + highest.sort((a, b) => getAchievementPriority(b) - getAchievementPriority(a)) + + return highest.slice(0, limit) +} diff --git a/web/src/views/Contributor.vue b/web/src/views/Contributor.vue index 1c87341..d34a1d1 100644 --- a/web/src/views/Contributor.vue +++ b/web/src/views/Contributor.vue @@ -11,6 +11,7 @@ import AchievementProgress from '../components/AchievementProgress.vue' import SectionHeader from '../components/SectionHeader.vue' import GithubLink from '../components/GithubLink.vue' import { formatNumber, formatPercent, formatDuration } from '../composables/formatters' +import { getHighestTierAchievements } from '../composables/achievements' const route = useRoute() const globalData = inject('globalData') @@ -127,7 +128,7 @@ watch(globalData, loadContributor)
+
+ Meaningful Lines Added + + +{{ formatNumber(contributor.meaningful_lines_added || 0) }} + +
+
+ Meaningful Lines Deleted + + -{{ formatNumber(contributor.meaningful_lines_deleted || 0) }} + +
+
+ Comment Lines Added + + +{{ formatNumber(contributor.comment_lines_added || 0) }} + +
+
+ Comment Lines Deleted + + -{{ formatNumber(contributor.comment_lines_deleted || 0) }} + +
Files Changed @@ -260,36 +285,55 @@ watch(globalData, loadContributor) Score Breakdown -
+
{{ formatNumber(contributor.score.breakdown.commits || 0) }}
Commits
+
{{ contributor.commit_count || 0 }} × 10 pts
{{ formatNumber(contributor.score.breakdown.prs || 0) }}
PRs
+
{{ contributor.prs_opened || 0 }} opened + {{ contributor.prs_merged || 0 }} merged
{{ formatNumber(contributor.score.breakdown.reviews || 0) }}
Reviews
+
{{ contributor.reviews_given || 0 }} × 30 pts
+
+
+
+ {{ formatNumber(contributor.score.breakdown.comments || 0) }} +
+
Comments
+
{{ contributor.review_comments || 0 }} × 5 pts
{{ formatNumber(contributor.score.breakdown.line_changes || 0) }}
Line Changes
+
meaningful lines × 0.1 pts
{{ formatNumber(contributor.score.breakdown.response_bonus || 0) }}
Response Bonus
+
fast review bonus
+
+
+
+ {{ formatNumber(contributor.score.breakdown.out_of_hours || 0) }} +
+
Out of Hours
+
{{ contributor.out_of_hours_count || 0 }} × 2 pts
diff --git a/web/src/views/Leaderboard.vue b/web/src/views/Leaderboard.vue index 1dc6001..1a20ad7 100644 --- a/web/src/views/Leaderboard.vue +++ b/web/src/views/Leaderboard.vue @@ -6,6 +6,7 @@ import ContributorRow from '../components/ContributorRow.vue' import RankBadge from '../components/RankBadge.vue' import AchievementBadge from '../components/AchievementBadge.vue' import { formatNumber } from '../composables/formatters' +import { getHighestTierAchievements } from '../composables/achievements' const globalData = inject('globalData') const leaderboard = computed(() => globalData.value?.leaderboard || []) @@ -59,9 +60,9 @@ const categoryIcon = (category) => {