From 6c37785ce13af0cc40f9884ac4bc8053218e065a Mon Sep 17 00:00:00 2001 From: Blizzard Date: Sun, 4 Oct 2026 11:45:15 +0800 Subject: [PATCH] Complete admin dashboard with paginated user pet trees and walk relations --- .../admin/dist/assets/index-B39ofd9P.css | 1 + .../admin/dist/assets/index-BQA5NViF.css | 1 - .../admin/dist/assets/index-COwxdvZQ.js | 17 - .../admin/dist/assets/index-DkKuSusU.js | 57 + pets-be/internal/admin/dist/brand-logo.png | Bin 0 -> 89819 bytes pets-be/internal/admin/dist/favicon.svg | 1 - pets-be/internal/admin/dist/icons.svg | 24 - pets-be/internal/admin/dist/index.html | 8 +- pets-be/internal/admin/embed_test.go | 2 +- pets-be/internal/httpapi/admin.go | 428 +++++- pets-be/internal/httpapi/admin_test.go | 231 ++++ pets-be/internal/httpapi/server.go | 4 + pets-be/web/admin/index.html | 4 +- pets-be/web/admin/public/brand-logo.png | Bin 0 -> 89819 bytes pets-be/web/admin/public/favicon.svg | 1 - pets-be/web/admin/public/icons.svg | 24 - pets-be/web/admin/src/App.tsx | 569 ++++---- .../admin/src/components/admin/Details.tsx | 260 ++++ .../admin/src/components/admin/Overview.tsx | 145 +++ .../admin/src/components/admin/Records.tsx | 508 ++++++++ .../web/admin/src/components/admin/common.tsx | 80 ++ .../web/admin/src/components/admin/format.ts | 56 + .../web/admin/src/components/ui/button.tsx | 2 +- .../web/admin/src/components/ui/dialog.tsx | 51 +- pets-be/web/admin/src/index.css | 1158 ++++++++++++++--- pets-be/web/admin/src/lib/api.ts | 124 +- 26 files changed, 3155 insertions(+), 601 deletions(-) create mode 100644 pets-be/internal/admin/dist/assets/index-B39ofd9P.css delete mode 100644 pets-be/internal/admin/dist/assets/index-BQA5NViF.css delete mode 100644 pets-be/internal/admin/dist/assets/index-COwxdvZQ.js create mode 100644 pets-be/internal/admin/dist/assets/index-DkKuSusU.js create mode 100644 pets-be/internal/admin/dist/brand-logo.png delete mode 100644 pets-be/internal/admin/dist/favicon.svg delete mode 100644 pets-be/internal/admin/dist/icons.svg create mode 100644 pets-be/internal/httpapi/admin_test.go create mode 100644 pets-be/web/admin/public/brand-logo.png delete mode 100644 pets-be/web/admin/public/favicon.svg delete mode 100644 pets-be/web/admin/public/icons.svg create mode 100644 pets-be/web/admin/src/components/admin/Details.tsx create mode 100644 pets-be/web/admin/src/components/admin/Overview.tsx create mode 100644 pets-be/web/admin/src/components/admin/Records.tsx create mode 100644 pets-be/web/admin/src/components/admin/common.tsx create mode 100644 pets-be/web/admin/src/components/admin/format.ts diff --git a/pets-be/internal/admin/dist/assets/index-B39ofd9P.css b/pets-be/internal/admin/dist/assets/index-B39ofd9P.css new file mode 100644 index 0000000..a02abbd --- /dev/null +++ b/pets-be/internal/admin/dist/assets/index-B39ofd9P.css @@ -0,0 +1 @@ +*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{line-height:inherit;margin:0}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-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;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}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.left-1\/2{left:50%}.right-4{right:1rem}.top-1\/2{top:50%}.top-4{top:1rem}.z-50{z-index:50}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.h-10{height:2.5rem}.h-4{height:1rem}.h-8{height:2rem}.h-9{height:2.25rem}.w-4{width:1rem}.w-9{width:2.25rem}.w-full{width:100%}.max-w-lg{max-width:32rem}.caption-bottom{caption-side:bottom}.-translate-x-1\/2{--tw-translate-x:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:1s linear infinite spin}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:.5rem}.gap-4{gap:1rem}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.whitespace-nowrap{white-space:nowrap}.rounded-full{border-radius:9999px}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-input{border-color:hsl(var(--input))}.border-transparent{border-color:#0000}.bg-amber-100{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity,1))}.bg-black\/40{background-color:#0006}.bg-card{background-color:hsl(var(--card))}.bg-destructive{background-color:hsl(var(--destructive))}.bg-destructive\/15{background-color:hsl(var(--destructive) / .15)}.bg-emerald-100{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity,1))}.bg-muted{background-color:hsl(var(--muted))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/15{background-color:hsl(var(--primary) / .15)}.bg-secondary{background-color:hsl(var(--secondary))}.p-3{padding:.75rem}.p-6{padding:1.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pt-0{padding-top:0}.text-left{text-align:left}.align-middle{vertical-align:middle}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.leading-none{line-height:1}.tracking-tight{letter-spacing:-.025em}.text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-emerald-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity,1))}.text-foreground{color:hsl(var(--foreground))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.underline-offset-4{text-underline-offset:4px}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.outline{outline-style:solid}.filter{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-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}:root{--background:30 100% 98%;--foreground:20 20% 30%;--card:0 0% 100%;--card-foreground:20 20% 30%;--primary:15 54% 47%;--primary-foreground:0 0% 100%;--secondary:30 100% 94%;--secondary-foreground:20 20% 30%;--muted:30 38% 96%;--muted-foreground:23 16% 46%;--accent:30 100% 94%;--accent-foreground:20 20% 30%;--destructive:0 60% 48%;--destructive-foreground:0 0% 100%;--border:27 36% 88%;--input:27 36% 85%;--ring:15 54% 47%;--radius:.85rem}*{box-sizing:border-box;border-color:hsl(var(--border))}body{color:#604a40;background:#fff9f3;margin:0;font-family:ui-rounded,Hiragino Maru Gothic ProN,PingFang SC,system-ui,sans-serif;font-size:14px}button,input,select{font:inherit}button:focus-visible,a:focus-visible,select:focus-visible{outline-offset:3px;outline:2px solid #b95738}h1,h2,h3,p{margin:0}button{cursor:pointer}button:disabled{cursor:default}strong{font-weight:600}.app-shell{min-height:100vh}.sidebar{z-index:20;background:#fffefd;border-right:1px solid #ece2d8;flex-direction:column;width:238px;padding:28px 16px;display:flex;position:fixed;inset:0 auto 0 0}.brand{align-items:center;gap:12px;padding:0 12px 32px;display:flex}.brand img{border-radius:17px;width:48px;height:48px}.brand strong{letter-spacing:1px;font-size:20px;display:block}.brand small{color:#9d8779;letter-spacing:2px;margin-top:4px;font-size:9px;display:block}.side-caption{color:#9d8779;letter-spacing:1px;margin-bottom:14px;padding:0 15px;font-size:11px}.sidebar nav{gap:7px;display:grid}.nav-item{color:#886c5f;text-align:left;background:0 0;border:none;border-radius:13px;align-items:center;gap:12px;min-height:46px;padding:13px 15px;display:flex}.nav-item:hover{background:#fff5eb}.nav-item.active{color:#b95738;background:#ffeadc;font-weight:600}.nav-dot{background:#b95738;border-radius:50%;width:5px;height:5px;margin-left:auto}.side-note{color:#9b7057;background:#fff6ed;border-radius:18px;margin-top:auto;margin-bottom:24px;padding:22px 18px;font-size:12px;line-height:1.9}.side-note svg{color:#d9956e;margin-bottom:8px}.side-bottom{border-top:1px solid #f0e8e0;justify-content:space-between;align-items:center;padding-top:20px;display:flex}.admin-indicator{color:#886c5f;padding-left:9px;font-size:12px}.content{max-width:1780px;margin-left:238px;padding:32px 38px 24px}.topbar{justify-content:space-between;align-items:center;gap:16px;margin-bottom:26px;display:flex}.eyebrow{color:#9d7965;letter-spacing:1.8px;margin-bottom:9px;font-size:10px;font-weight:600}.topbar h1{letter-spacing:1px;font-size:27px;font-weight:600}.topbar-actions{align-items:center;gap:14px;display:flex}.today-date{color:#9d8779;font-size:12px}.mobile-logout{display:none}.welcome{background:linear-gradient(110deg,#fff0dd,#ffdec7);border:1px solid #ffeadb;border-radius:24px;justify-content:space-between;align-items:center;min-height:180px;padding:32px 36px;display:flex;overflow:hidden}.welcome h2{color:#694c3f;margin:10px 0 13px;font-size:25px;font-weight:600}.welcome p:not(.eyebrow){color:#98745d;font-size:13px}.welcome img{border-radius:32px;width:116px;height:116px;transform:rotate(-8deg);box-shadow:0 8px 30px #a5623615}.stat-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:14px;margin:22px 0;display:grid}.stat-card,.panel{background:#fff;border:1px solid #ece2d8;border-radius:19px;box-shadow:0 6px 28px #604a4004}.stat-card{text-align:left;padding:18px;transition:transform .2s,border-color .2s}.stat-card:hover{border-color:#ddb699;transform:translateY(-3px)}.stat-top{color:#bca89c;justify-content:space-between;align-items:center;margin-bottom:15px;display:flex}.stat-icon{color:#b95738;background:#fff0e2;border-radius:12px;place-items:center;width:38px;height:38px;display:grid}.tint-pets .stat-icon,.tint-tasks .stat-icon{color:#977eae;background:#f1eaf8}.tint-walks .stat-icon,.tint-files .stat-icon{color:#7d96b6;background:#edf2fb}.stat-card>span{color:#886c5f;font-size:12px}.stat-card strong{margin:6px 0;font-size:30px;display:block}.stat-card small{color:#a48d7e;white-space:nowrap;font-size:10px}.overview-grid{grid-template-columns:1.6fr 1fr;gap:20px;display:grid}.panel-heading{justify-content:space-between;align-items:center;padding:24px 25px 0;display:flex}.panel-heading h2,.records-heading h2{font-size:17px;font-weight:600}.panel-heading p,.records-heading p{color:#a18a7c;margin-top:7px;font-size:12px}.panel-heading>svg{color:#c6a28c}.bar-chart{align-items:flex-end;gap:18px;height:232px;padding:28px 26px;display:flex}.chart-column{flex-direction:column;flex:1;align-items:center;gap:8px;min-width:0;height:100%;display:flex}.chart-column>span{color:#9d7965;font-size:12px}.bar-space{flex:1;align-items:flex-end;width:100%;max-width:42px;display:flex}.chart-bar{background:linear-gradient(#f2bc94,#d88760);border-radius:7px 7px 2px 2px;width:100%;transition:height .3s}.chart-column small{color:#a48d7e;font-size:11px}.today dl{margin:0;padding:12px 25px 20px}.today dl>div{border-bottom:1px solid #f2eae4;justify-content:space-between;align-items:center;padding:14px 0;display:flex}.today dl>div:last-child{border:0}.today dt{color:#886c5f;font-size:12px}.today dd{margin:0;font-size:21px}.today dd small{color:#a48d7e;margin-left:5px;font-size:11px}.summary-strip{background:#fff5eb;border:1px dashed #e6d2c2;border-radius:15px;gap:28px;margin-top:20px;padding:18px 22px;display:flex}.summary-strip>div{color:#9d7965;align-items:center;gap:9px;font-size:12px;display:flex}.summary-strip strong{color:#604a40;margin-left:8px}.records{overflow:hidden}.records-heading{justify-content:space-between;align-items:center;padding:24px 26px 16px;display:flex}.per-page{color:#9d7965;background:#fff6ed;border:1px solid #f4e6d8;border-radius:8px;padding:5px 10px;font-size:11px}.toolbar{flex-wrap:wrap;align-items:center;gap:12px;padding:0 26px 22px;display:flex}.search-form{flex:1;align-items:center;gap:8px;max-width:490px;display:flex;position:relative}.search-form>svg{pointer-events:none;color:#a48d7e;position:absolute;left:12px}.search-form input{border-radius:10px;min-width:140px;padding-left:36px}.toolbar select{color:#886c5f;background:#fff;border:1px solid #e6d9cf;border-radius:10px;height:36px;padding:8px 30px 8px 12px;font-size:12px}table{min-width:760px}thead{background:#fffaf6}th{white-space:nowrap;padding:13px 18px!important;font-size:12px!important}td{max-width:360px;font-size:12px;padding:15px 18px!important}td small{color:#a48d7e;margin-top:5px;font-size:10px;display:block}td strong{display:block}.identity{align-items:center;gap:10px;min-width:0;display:flex}.identity strong{color:#604a40;font-size:13px}.identity small{text-overflow:ellipsis;white-space:nowrap;color:#a48d7e;max-width:185px;margin-top:5px;font-size:10px;display:block;overflow:hidden}.avatar{color:#c58d6a;background:#fff1e4;border-radius:12px;flex:none;place-items:center;width:38px;height:38px;display:grid;overflow:hidden}.avatar img{-o-object-fit:cover;object-fit:cover;width:100%;height:100%}.mono{font-family:ui-monospace,SFMono-Regular,monospace}.pet-tags{flex-wrap:wrap;gap:5px;max-width:250px;display:flex}.pet-tags>span{color:#9d6a4e;background:#fff3e8;border-radius:7px;align-items:center;gap:4px;padding:4px 7px;font-size:11px;display:flex}.row-actions{white-space:nowrap;align-items:center;gap:5px;display:flex}.tree-toggle{color:#ad826b;background:#fffaf6;border:1px solid #f0e4da;border-radius:8px;place-items:center;width:28px;height:28px;display:grid}.text-action{color:#b95738;background:0 0;border:none;padding:0}.tree-row td{background:#fffcf9;padding:0 20px 16px 56px!important}.pet-tree{border-left:2px solid #ecd8c8;padding:14px 18px 5px}.tree-heading{color:#9d7965;align-items:center;gap:7px;margin-bottom:14px;font-size:12px;display:flex}.tree-heading strong{display:inline}.tree-heading>span{color:#b29a89;margin-left:auto;font-size:10px}.pet-tree-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px;display:grid}.pet-tree-card{text-align:left;background:#fff;border:1px solid #f0e2d6;border-radius:12px;justify-content:space-between;align-items:center;gap:12px;padding:13px 14px;display:flex}.pet-tree-card:hover{background:#fffaf6;border-color:#deb697}.pet-tree-card .identity{flex:1}.pet-tree-card>svg{color:#bfa390}.pet-tree-card .identity small{font-family:inherit}.tree-message{color:#a48d7e;align-items:center;gap:10px;padding:12px 0;font-size:12px;display:flex}.pagination{color:#9d8779;border-top:1px solid #f0e7df;justify-content:space-between;align-items:center;gap:16px;padding:18px 25px;font-size:12px;display:flex}.pagination>div{align-items:center;gap:15px;display:flex}.pagination button{border-radius:9px}.empty{color:#a48d7e;text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:12px;min-height:230px;padding:35px 20px;display:flex}.empty svg{color:#c9ae9a}.empty h3{color:#8e7160;font-size:15px;font-weight:500}.empty p{font-size:12px;line-height:1.8}.empty.compact{min-height:150px}.error-banner,.notice{color:#a04b31;background:#fff0e7;border:1px solid #f0d7c9;border-radius:12px;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px;padding:12px 15px;font-size:12px;display:flex}.notice{color:#806499;background:#f5f0fb;border-color:#e6dcef;justify-content:flex-start}.notice button{color:inherit;background:0 0;border:none;margin-left:auto}.error-text{color:#a04b31}.page-footer{text-align:center;color:#b49c8b;letter-spacing:1px;padding:24px 0 5px;font-size:10px}.detail-dialog{width:calc(100% - 32px);max-width:700px;max-height:85vh;overflow:auto;border-radius:22px!important;padding:26px!important}.detail-summary{border-bottom:1px solid #f0e7df;justify-content:space-between;align-items:center;gap:10px;padding:14px 0;display:flex}.detail-summary .identity small{max-width:330px}.detail-grid{grid-template-columns:1fr 1fr;gap:20px;margin:7px 0;display:grid}.detail-grid>div{min-width:0}.detail-grid dt{color:#a48d7e;margin-bottom:7px;font-size:11px}.detail-grid dd{overflow-wrap:anywhere;white-space:pre-wrap;margin:0;font-size:13px;line-height:1.8}.dialog-actions{justify-content:flex-end;gap:10px;margin-top:10px;display:flex}.confirm-copy{color:#886c5f;font-size:13px;line-height:1.9}.track{background:#fffaf5;border:1px solid #eee0d4;border-radius:16px;padding:14px}.track svg{border-radius:10px;width:100%;display:block}.track p{color:#a48d7e;text-align:center;padding-top:10px;font-size:10px}.file-preview{-o-object-fit:contain;object-fit:contain;background:#fff8f0;border-radius:12px;width:100%;max-height:260px}.file-link{color:#b95738;align-items:center;gap:5px;font-size:12px;display:flex}.file-name{text-overflow:ellipsis;white-space:nowrap;max-width:220px;overflow:hidden}.login-page{background:radial-gradient(at 15% 20%,#ffead4,#0000 50%),radial-gradient(at 95% 90%,#f1eaf8,#0000 45%),#fff9f3;justify-content:center;align-items:center;gap:100px;min-height:100vh;padding:40px;display:flex}.login-story{max-width:480px}.login-story>img{border-radius:28px;width:94px;height:94px;margin-bottom:30px;transform:rotate(-6deg);box-shadow:0 12px 40px #aa683219}.login-story h1{letter-spacing:2px;font-size:42px;font-weight:600;line-height:1.55}.login-story>p:not(.eyebrow){color:#a0816a;margin-top:20px;font-size:14px;line-height:1.9}.story-tags{gap:20px;margin-top:40px;display:flex}.story-tags>span{color:#b28d72;align-items:center;gap:7px;font-size:12px;display:flex}.login-card{background:#fff;border:1px solid #eee1d6;border-radius:27px;width:400px;padding:35px;box-shadow:0 20px 80px #98694b0b}.login-mark{color:#c07851;background:#fff0e2;border-radius:16px;place-items:center;width:48px;height:48px;margin-bottom:24px;display:grid}.login-card h2{font-size:26px;font-weight:600}.muted{color:#a18a7c;margin:10px 0 28px;font-size:12px;line-height:1.8}.login-card label{color:#8e7160;margin:17px 0 8px;font-size:12px;display:block}.login-card input{border-radius:11px;height:42px}.login-submit{border-radius:11px;height:42px;margin-top:25px}.login-footnote{text-align:center;color:#baa392;margin-top:25px;font-size:10px;display:block}.login-card .error-banner{margin-top:16px;margin-bottom:0;line-height:1.7}@media (width>=1550px){.content{padding-left:52px;padding-right:52px}}@media (width<=1240px){.stat-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.sidebar{width:210px}.content{margin-left:210px;padding:26px}.today-date{display:none}.overview-grid{grid-template-columns:1.4fr 1fr}.login-page{gap:55px}.login-story h1{font-size:35px}}@media (width<=880px){.sidebar{width:76px;padding:22px 9px}.content{margin-left:76px;padding:24px 20px}.brand{padding:0 3px 28px}.brand img{width:45px;height:45px}.brand>div,.side-caption,.nav-item>span,.side-note,.side-bottom{display:none}.nav-item{justify-content:center;padding:13px 0}.mobile-logout{display:inline-flex}.overview-grid{grid-template-columns:1fr}.summary-strip{flex-wrap:wrap;gap:15px}.welcome{min-height:170px;padding:26px}.welcome h2{font-size:22px}.welcome img{width:85px;height:85px}.login-page{gap:35px}.login-story h1{font-size:28px}.story-tags{flex-wrap:wrap;gap:12px}.login-card{width:360px;padding:28px}}@media (width<=620px){.sidebar{width:60px;padding:20px 6px}.brand{padding:0 0 22px}.brand img{width:40px;height:40px}.content{margin-left:60px;padding:20px 12px}.topbar h1{font-size:22px}.topbar-actions{gap:5px}.topbar-actions>button{padding:8px;font-size:11px}.eyebrow{letter-spacing:1px;font-size:9px}.welcome{padding:22px}.welcome img{display:none}.welcome h2{font-size:20px}.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.stat-card{padding:15px}.toolbar{padding:0 14px 18px}.records-heading{padding:22px 15px 18px}.records-heading p{max-width:170px;line-height:1.8}.search-form{flex-basis:100%;max-width:none}.pagination{flex-direction:column;align-items:flex-start;gap:13px;padding:16px 12px}.pagination>div{justify-content:space-between;width:100%}.detail-grid{grid-template-columns:1fr}.detail-summary .identity small{max-width:190px}.login-page{flex-direction:column;gap:22px;padding:25px}.login-story{width:min(400px,100%)}.login-story>img{border-radius:17px;width:54px;height:54px;margin:0 0 10px}.login-story h1{font-size:25px;line-height:1.7}.login-story h1 br,.login-story>p:not(.eyebrow),.story-tags{display:none}.login-card{width:min(400px,100%);padding:28px}.bar-chart{gap:10px;padding-left:20px;padding-right:20px}}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.focus-visible\:outline-none:focus-visible{outline-offset:2px;outline:2px solid #0000}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0}.\[\&_tr\]\:border-b tr{border-bottom-width:1px} diff --git a/pets-be/internal/admin/dist/assets/index-BQA5NViF.css b/pets-be/internal/admin/dist/assets/index-BQA5NViF.css deleted file mode 100644 index 90d4029..0000000 --- a/pets-be/internal/admin/dist/assets/index-BQA5NViF.css +++ /dev/null @@ -1 +0,0 @@ -*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{line-height:inherit;margin:0}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-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;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}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.left-1\/2{left:50%}.right-4{right:1rem}.top-1\/2{top:50%}.top-4{top:1rem}.z-50{z-index:50}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.h-10{height:2.5rem}.h-4{height:1rem}.h-8{height:2rem}.h-9{height:2.25rem}.w-4{width:1rem}.w-9{width:2.25rem}.w-full{width:100%}.max-w-lg{max-width:32rem}.caption-bottom{caption-side:bottom}.-translate-x-1\/2{--tw-translate-x:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:.5rem}.gap-4{gap:1rem}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.whitespace-nowrap{white-space:nowrap}.rounded-full{border-radius:9999px}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-input{border-color:hsl(var(--input))}.border-transparent{border-color:#0000}.bg-amber-100{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity,1))}.bg-black\/40{background-color:#0006}.bg-card{background-color:hsl(var(--card))}.bg-destructive{background-color:hsl(var(--destructive))}.bg-destructive\/15{background-color:hsl(var(--destructive) / .15)}.bg-emerald-100{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity,1))}.bg-muted{background-color:hsl(var(--muted))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/15{background-color:hsl(var(--primary) / .15)}.bg-secondary{background-color:hsl(var(--secondary))}.p-3{padding:.75rem}.p-6{padding:1.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pt-0{padding-top:0}.text-left{text-align:left}.align-middle{vertical-align:middle}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.leading-none{line-height:1}.tracking-tight{letter-spacing:-.025em}.text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-emerald-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity,1))}.text-foreground{color:hsl(var(--foreground))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.underline-offset-4{text-underline-offset:4px}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.outline{outline-style:solid}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}:root{--background:150 18% 97%;--foreground:166 48% 18%;--card:0 0% 100%;--card-foreground:166 48% 18%;--primary:166 58% 21%;--primary-foreground:0 0% 100%;--secondary:145 22% 92%;--secondary-foreground:166 48% 18%;--muted:145 12% 94%;--muted-foreground:150 9% 51%;--accent:145 22% 92%;--accent-foreground:166 48% 18%;--destructive:5 70% 56%;--destructive-foreground:0 0% 100%;--border:145 16% 86%;--input:145 16% 86%;--ring:166 58% 21%;--radius:.8rem}*{border-color:hsl(var(--border))}body{color:#193f37;background:#f6f8f5;margin:0;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif}.app-shell{min-height:100vh;display:flex}.sidebar{color:#fff;background:#194d41;flex-direction:column;flex:none;width:242px;padding:30px 18px;display:flex}.brand{align-items:center;gap:12px;padding:5px 12px 38px;display:flex}.brand>span{background:#e9aa6d;border-radius:16px;padding:8px;font-size:28px}.brand strong{font-size:19px;display:block}.brand small{letter-spacing:.22em;opacity:.56;margin-top:2px;font-size:10px;display:block}.side-caption{color:#9abcb0;letter-spacing:.2em;padding:0 14px;font-size:11px}.sidebar nav{gap:7px;display:grid}.nav-item{color:#c2d9cf;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:13px;align-items:center;gap:13px;padding:13px 15px;display:flex}.nav-item:hover,.nav-item.active{color:#fff;background:#336a5c}.side-bottom{color:#8ab5a4;margin-top:auto;padding:12px;font-size:12px}.side-bottom button{color:#d4e6dc;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;margin-top:18px;display:flex}.content{width:100%;max-width:1500px;padding:40px 48px}.topbar{justify-content:space-between;align-items:center;margin-bottom:28px;display:flex}.eyebrow{letter-spacing:.18em;color:#74a28b;margin:0 0 8px;font-size:11px;font-weight:700}.topbar h1{margin:0;font-size:30px}.hero{color:#fff;background:#194d41;border-radius:27px;justify-content:space-between;align-items:center;min-height:196px;padding:34px 40px;display:flex;overflow:hidden}.hero p{color:#a9d7bc;margin:0 0 10px}.hero h2{margin:0 0 12px;font-size:27px}.hero span{color:#c9e0d3}.hero-paw{text-align:center;background:#edbe8b;border-radius:50%;width:152px;height:152px;font-size:90px;line-height:152px;transform:rotate(-9deg)}.stat-grid{grid-template-columns:repeat(4,1fr);gap:16px;margin-top:22px;display:grid}.stat-card,.table-card{background:#fff;border:1px solid #e7ede7;border-radius:23px;box-shadow:0 12px 40px #214d3f0a}.stat-card{padding:23px}.stat-icon{margin-bottom:16px;font-size:27px}.stat-card span{color:#82988e;font-size:13px;display:block}.stat-card strong{font-size:34px}.table-head{padding:26px 28px 16px}.table-head h2{margin:0;font-size:20px}.table-head p{color:#87998f;font-size:13px}.table-scroll{overflow:auto}table{border-collapse:collapse;width:100%;min-width:800px}th,td{text-align:left;white-space:nowrap;border-top:1px solid #edf0ec;padding:16px 24px;font-size:13px}th{color:#81978b;background:#fbfcfa;font-weight:600}td b{display:block}td small{color:#9aada2;margin-top:3px;font-size:11px;display:block}.mono{color:#71877d;font-size:11px}.pill{border-radius:99px;padding:5px 9px;font-size:11px}.pill.green{color:#258052;background:#e8f5ec}.pill.red{color:#ba6b51;background:#fff0eb}.empty{text-align:center;color:#91a397;padding:55px}.error-banner,.error{color:#a64d37;background:#fff0eb;border-radius:12px;padding:11px}.login-page{background:radial-gradient(circle at 75% 10%,#e9f1e7,#0000 35%),#f6f8f5;place-items:center;min-height:100vh;display:grid}.login-card{background:#fff;border-radius:28px;width:min(420px,100% - 40px);padding:40px;box-shadow:0 25px 70px #204a3a18}.login-mark{background:#e9aa6d;border-radius:19px;place-items:center;width:60px;height:60px;margin-bottom:22px;font-size:30px;display:grid}.login-card h1{margin:0;font-size:30px}.muted{color:#90a198;margin:8px 0 30px}.login-card label{color:#456a5b;gap:7px;margin-bottom:18px;font-size:13px;display:grid}.login-card input{margin-top:2px}.login-card button{margin-top:8px}@media (width<=800px){.sidebar{width:70px;padding:20px 8px}.brand div,.side-caption,.nav-item:not(.active),.nav-item.active{font-size:0}.brand{padding:5px 5px 30px}.nav-item{justify-content:center}.side-bottom{display:none}.content{padding:28px 18px}.stat-grid{grid-template-columns:repeat(2,1fr)}.hero-paw{display:none}}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.focus-visible\:outline-none:focus-visible{outline-offset:2px;outline:2px solid #0000}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0}.\[\&_tr\]\:border-b tr{border-bottom-width:1px} diff --git a/pets-be/internal/admin/dist/assets/index-COwxdvZQ.js b/pets-be/internal/admin/dist/assets/index-COwxdvZQ.js deleted file mode 100644 index 6c606b3..0000000 --- a/pets-be/internal/admin/dist/assets/index-COwxdvZQ.js +++ /dev/null @@ -1,17 +0,0 @@ -var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;li[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,a)=>(a=n==null?{}:e(i(n)),c(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var u=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var ee=Array.isArray;function te(){}var S={H:null,A:null,T:null,S:null},C=Object.prototype.hasOwnProperty;function ne(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function re(e,t){return ne(e.type,t,e.props)}function ie(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function ae(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var oe=/\/+/g;function w(e,t){return typeof e==`object`&&e&&e.key!=null?ae(``+e.key):t.toString(36)}function T(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(te,te):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function se(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,se(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+w(e,0):a,ee(o)?(i=``,c!=null&&(i=c.replace(oe,`$&/`)+`/`),se(o,r,i,``,function(e){return e})):o!=null&&(ie(o)&&(o=re(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(oe,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(ee(e))for(var u=0;u{t.exports=u()})),f=o((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0>>1,a=e[r];if(0>>1;ri(c,n))li(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(li(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m)if(n(c)!==null)m=!0,ee||(ee=!0,ie());else{var t=n(l);t!==null&&w(x,t.startTime-e)}}var ee=!1,te=-1,S=5,C=-1;function ne(){return g?!0:!(e.unstable_now()-Ct&&ne());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&w(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?ie():ee=!1}}}var ie;if(typeof y==`function`)ie=function(){y(re)};else if(typeof MessageChannel<`u`){var ae=new MessageChannel,oe=ae.port2;ae.port1.onmessage=re,ie=function(){oe.postMessage(null)}}else ie=function(){_(re,0)};function w(t,n){te=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(te),te=-1):h=!0,w(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,ee||(ee=!0,ie()))),r},e.unstable_shouldYield=ne,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),p=o(((e,t)=>{t.exports=f()})),m=o((e=>{var t=d();function n(e){var t=`https://react.dev/errors/`+e;if(1{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=m()})),g=o((e=>{var t=p(),n=d(),r=h();function i(e){var t=`https://react.dev/errors/`+e;if(1fe||(e.current=de[fe],de[fe]=null,fe--)}function A(e,t){fe++,de[fe]=e.current,e.current=t}var pe=O(null),j=O(null),me=O(null),he=O(null);function ge(e,t){switch(A(me,t),A(j,e),A(pe,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Vd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Vd(t),e=Hd(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}k(pe),A(pe,e)}function _e(){k(pe),k(j),k(me)}function ve(e){e.memoizedState!==null&&A(he,e);var t=pe.current,n=Hd(t,e.type);t!==n&&(A(j,e),A(pe,n))}function ye(e){j.current===e&&(k(pe),k(j)),he.current===e&&(k(he),Qf._currentValue=ue)}var be,xe;function Se(e){if(be===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);be=t&&t[1]||``,xe=-1)`:-1i||c[r]!==l[i]){var u=` -`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(``)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{Ce=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?Se(n):``}function Te(e,t){switch(e.tag){case 26:case 27:case 5:return Se(e.type);case 16:return Se(`Lazy`);case 13:return e.child!==t&&t!==null?Se(`Suspense Fallback`):Se(`Suspense`);case 19:return Se(`SuspenseList`);case 0:case 15:return we(e.type,!1);case 11:return we(e.type.render,!1);case 1:return we(e.type,!0);case 31:return Se(`Activity`);default:return``}}function Ee(e){try{var t=``,n=null;do t+=Te(e,n),n=e,e=e.return;while(e);return t}catch(e){return` -Error generating stack: `+e.message+` -`+e.stack}}var De=Object.prototype.hasOwnProperty,Oe=t.unstable_scheduleCallback,ke=t.unstable_cancelCallback,Ae=t.unstable_shouldYield,je=t.unstable_requestPaint,Me=t.unstable_now,Ne=t.unstable_getCurrentPriorityLevel,Pe=t.unstable_ImmediatePriority,Fe=t.unstable_UserBlockingPriority,Ie=t.unstable_NormalPriority,Le=t.unstable_LowPriority,Re=t.unstable_IdlePriority,ze=t.log,Be=t.unstable_setDisableYieldValue,Ve=null,He=null;function Ue(e){if(typeof ze==`function`&&Be(e),He&&typeof He.setStrictMode==`function`)try{He.setStrictMode(Ve,e)}catch{}}var We=Math.clz32?Math.clz32:qe,Ge=Math.log,Ke=Math.LN2;function qe(e){return e>>>=0,e===0?32:31-(Ge(e)/Ke|0)|0}var Je=256,Ye=262144,Xe=4194304;function Ze(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Qe(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=Ze(n))):i=Ze(o):i=Ze(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=Ze(n))):i=Ze(o)):i=Ze(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function $e(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function et(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function tt(){var e=Xe;return Xe<<=1,!(Xe&62914560)&&(Xe=4194304),e}function nt(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function rt(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function it(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0`u`||window.document===void 0||window.document.createElement===void 0),fn=!1;if(dn)try{var pn={};Object.defineProperty(pn,"passive",{get:function(){fn=!0}}),window.addEventListener(`test`,pn,pn),window.removeEventListener(`test`,pn,pn)}catch{fn=!1}var mn=null,hn=null,gn=null;function _n(){if(gn)return gn;var e,t=hn,n=t.length,r,i=`value`in mn?mn.value:mn.textContent,a=i.length;for(e=0;e=Yn),Qn=` `,$n=!1;function er(e,t){switch(e){case`keyup`:return qn.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function tr(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var nr=!1;function rr(e,t){switch(e){case`compositionend`:return tr(t);case`keypress`:return t.which===32?($n=!0,Qn):null;case`textInput`:return e=t.data,e===Qn&&$n?null:e;default:return null}}function ir(e,t){if(nr)return e===`compositionend`||!Jn&&er(e,t)?(e=_n(),gn=hn=mn=null,nr=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=Tr(n)}}function Dr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Dr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Or(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=zt(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=zt(e.document)}return t}function kr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var Ar=dn&&`documentMode`in document&&11>=document.documentMode,jr=null,Mr=null,Nr=null,Pr=!1;function Fr(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Pr||jr==null||jr!==zt(r)||(r=jr,`selectionStart`in r&&kr(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Nr&&wr(Nr,r)||(Nr=r,r=Ed(Mr,`onSelect`),0>=o,i-=o,Ei=1<<32-We(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),B&&Oi(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(a,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(a,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(a,h),B&&Oi(a,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return B&&Oi(a,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,a,g,v.value,l),v!==null&&(e&&v.alternate!==null&&h.delete(v.key===null?g:v.key),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(a,e)}),B&&Oi(a,g),u}function b(e,r,o,c){if(typeof o==`object`&&o&&o.type===y&&o.key===null&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case _:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===y){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===ie&&Ea(l)===r.type){n(e,r.sibling),c=a(r,o.props),Na(c,o),c.return=e,e=c;break a}n(e,r);break}else t(e,r);r=r.sibling}o.type===y?(c=pi(o.props.children,e.mode,c,o.key),c.return=e,e=c):(c=fi(o.type,o.key,o.props,null,e.mode,c),Na(c,o),c.return=e,e=c)}return s(e);case v:a:{for(l=o.key;r!==null;){if(r.key===l)if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}else{n(e,r);break}else t(e,r);r=r.sibling}c=gi(o,e.mode,c),c.return=e,e=c}return s(e);case ie:return o=Ea(o),b(e,r,o,c)}if(le(o))return h(e,r,o,c);if(T(o)){if(l=T(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return b(e,r,Ma(o),c);if(o.$$typeof===te)return b(e,r,ta(e,o),c);Pa(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=a(r,o),c.return=e,e=c):(n(e,r),c=mi(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{ja=0;var i=b(e,t,n,r);return Aa=null,i}catch(t){if(t===V||t===Sa)throw t;var a=ci(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var Ia=Fa(!0),La=Fa(!1),Ra=!1;function za(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Ba(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Va(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Ha(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,K&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=ai(e),ii(e,null,n),t}return ti(e,r,t,n),ai(e)}function Ua(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,ot(e,n)}}function Wa(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Ga=!1;function Ka(){if(Ga){var e=fa;if(e!==null)throw e}}function qa(e,t,n,r){Ga=!1;var i=e.updateQueue;Ra=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(Y&f)===f:(r&f)===f){f!==0&&f===da&&(Ga=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var h=e,g=s;f=t;var _=n;switch(g.tag){case 1:if(h=g.payload,typeof h==`function`){d=h.call(_,d,f);break a}d=h;break a;case 3:h.flags=h.flags&-65537|128;case 0:if(h=g.payload,f=typeof h==`function`?h.call(_,d,f):h,f==null)break a;d=m({},d,f);break a;case 2:Ra=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),Gl|=o,e.lanes=o,e.memoizedState=d}}function Ja(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function Ya(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=E.T,s={};E.T=s,Ps(e,!1,t,n);try{var c=i(),l=E.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?Ns(e,t,ha(c,r),pu(e)):Ns(e,t,r,pu(e))}catch(n){Ns(e,t,{then:function(){},status:`rejected`,reason:n},pu())}finally{D.p=a,o!==null&&s.types!==null&&(o.types=s.types),E.T=o}}function Cs(){}function ws(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=Ts(e).queue;Ss(e,a,t,ue,n===null?Cs:function(){return Es(e),n(r)})}function Ts(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:ue,baseState:ue,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Fo,lastRenderedState:ue},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Fo,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function Es(e){var t=Ts(e);t.next===null&&(t=e.alternate.memoizedState),Ns(e,t.next.queue,{},pu())}function Ds(){return ea(Qf)}function Os(){return Ao().memoizedState}function ks(){return Ao().memoizedState}function As(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=pu();e=Va(n);var r=Ha(t,e,n);r!==null&&(hu(r,t,n),Ua(r,t,n)),t={cache:sa()},e.payload=t;return}t=t.return}}function js(e,t,n){var r=pu();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},Fs(e)?Is(t,n):(n=ni(e,t,n,r),n!==null&&(hu(n,e,r),Ls(n,t,r)))}function Ms(e,t,n){Ns(e,t,n,pu())}function Ns(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(Fs(e))Is(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,Cr(s,o))return ti(e,t,i,0),q===null&&ei(),!1}catch{}if(n=ni(e,t,i,r),n!==null)return hu(n,e,r),Ls(n,t,r),!0}return!1}function Ps(e,t,n,r){if(r={lane:2,revertLane:dd(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},Fs(e)){if(t)throw Error(i(479))}else t=ni(e,n,r,2),t!==null&&hu(t,e,2)}function Fs(e){var t=e.alternate;return e===H||t!==null&&t===H}function Is(e,t){mo=po=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Ls(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,ot(e,n)}}var Rs={readContext:ea,use:No,useCallback:bo,useContext:bo,useEffect:bo,useImperativeHandle:bo,useLayoutEffect:bo,useInsertionEffect:bo,useMemo:bo,useReducer:bo,useRef:bo,useState:bo,useDebugValue:bo,useDeferredValue:bo,useTransition:bo,useSyncExternalStore:bo,useId:bo,useHostTransitionStatus:bo,useFormState:bo,useActionState:bo,useOptimistic:bo,useMemoCache:bo,useCacheRefresh:bo};Rs.useEffectEvent=bo;var zs={readContext:ea,use:No,useCallback:function(e,t){return ko().memoizedState=[e,t===void 0?null:t],e},useContext:ea,useEffect:ls,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),ss(4194308,4,hs.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ss(4194308,4,e,t)},useInsertionEffect:function(e,t){ss(4,2,e,t)},useMemo:function(e,t){var n=ko();t=t===void 0?null:t;var r=e();if(ho){Ue(!0);try{e()}finally{Ue(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=ko();if(n!==void 0){var i=n(t);if(ho){Ue(!0);try{n(t)}finally{Ue(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=js.bind(null,H,e),[r.memoizedState,e]},useRef:function(e){var t=ko();return e={current:e},t.memoizedState=e},useState:function(e){e=Go(e);var t=e.queue,n=Ms.bind(null,H,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:_s,useDeferredValue:function(e,t){return bs(ko(),e,t)},useTransition:function(){var e=Go(!1);return e=Ss.bind(null,H,e.queue,!0,!1),ko().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=H,a=ko();if(B){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),q===null)throw Error(i(349));Y&127||Bo(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,ls(Ho.bind(null,r,o,e),[e]),r.flags|=2048,as(9,{destroy:void 0},Vo.bind(null,r,o,n,t),null),n},useId:function(){var e=ko(),t=q.identifierPrefix;if(B){var n=Di,r=Ei;n=(r&~(1<<32-We(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=go++,0<\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(a,{is:r.is}):s.createElement(a)}}o[M]=t,o[N]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(Pd(o,a,r),a){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&Nc(t)}}return W(t),Pc(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&Nc(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=me.current,Bi(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=Ni,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[M]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||Md(e.nodeValue,n)),e||Li(t,!0)}else e=Bd(e).createTextNode(r),e[M]=t,t.stateNode=e}return W(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=Bi(t),n!==null){if(e===null){if(!r)throw Error(i(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(557));e[M]=t}else Vi(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;W(t),e=!1}else n=Hi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(so(t),t):(so(t),null);if(t.flags&128)throw Error(i(558))}return W(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=Bi(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(i(318));if(a=t.memoizedState,a=a===null?null:a.dehydrated,!a)throw Error(i(317));a[M]=t}else Vi(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;W(t),a=!1}else a=Hi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(so(t),t):(so(t),null)}return so(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,a=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(a=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Ic(t,t.updateQueue),W(t),null);case 4:return _e(),e===null&&Sd(t.stateNode.containerInfo),W(t),null;case 10:return Ji(t.type),W(t),null;case 19:if(k(co),r=t.memoizedState,r===null)return W(t),null;if(a=(t.flags&128)!=0,o=r.rendering,o===null)if(a)Lc(r,!1);else{if(Wl!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=lo(e),o!==null){for(t.flags|=128,Lc(r,!1),e=o.updateQueue,t.updateQueue=e,Ic(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)di(n,e),n=n.sibling;return A(co,co.current&1|2),B&&Oi(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Me()>tu&&(t.flags|=128,a=!0,Lc(r,!1),t.lanes=4194304)}else{if(!a)if(e=lo(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,Ic(t,e),Lc(r,!0),r.tail===null&&r.tailMode===`hidden`&&!o.alternate&&!B)return W(t),null}else 2*Me()-r.renderingStartTime>tu&&n!==536870912&&(t.flags|=128,a=!0,Lc(r,!1),t.lanes=4194304);r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}return r.tail===null?(W(t),null):(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Me(),e.sibling=null,n=co.current,A(co,a?n&1|2:n&1),B&&Oi(t,r.treeForkCount),e);case 22:case 23:return so(t),eo(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(W(t),t.subtreeFlags&6&&(t.flags|=8192)):W(t),n=t.updateQueue,n!==null&&Ic(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&k(_a),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),Ji(oa),W(t),null;case 25:return null;case 30:return null}throw Error(i(156,t.tag))}function zc(e,t){switch(ji(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Ji(oa),_e(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return ye(t),null;case 31:if(t.memoizedState!==null){if(so(t),t.alternate===null)throw Error(i(340));Vi()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(so(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));Vi()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return k(co),null;case 4:return _e(),null;case 10:return Ji(t.type),null;case 22:case 23:return so(t),eo(),e!==null&&k(_a),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Ji(oa),null;case 25:return null;default:return null}}function Bc(e,t){switch(ji(t),t.tag){case 3:Ji(oa),_e();break;case 26:case 27:case 5:ye(t);break;case 4:_e();break;case 31:t.memoizedState!==null&&so(t);break;case 13:so(t);break;case 19:k(co);break;case 10:Ji(t.type);break;case 22:case 23:so(t),eo(),e!==null&&k(_a);break;case 24:Ji(oa)}}function Vc(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Z(t,t.return,e)}}function Hc(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Z(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Z(t,t.return,e)}}function Uc(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{Ya(t,n)}catch(t){Z(e,e.return,t)}}}function Wc(e,t,n){n.props=Ks(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Z(e,t,n)}}function Gc(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Z(e,t,n)}}function Kc(e,t){var n=e.ref,r=e.refCleanup;if(n!==null)if(typeof r==`function`)try{r()}catch(n){Z(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Z(e,t,n)}else n.current=null}function qc(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{a:switch(t){case`button`:case`input`:case`select`:case`textarea`:n.autoFocus&&r.focus();break a;case`img`:n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(t){Z(e,e.return,t)}}function Jc(e,t,n){try{var r=e.stateNode;Fd(r,e.type,n,t),r[N]=t}catch(t){Z(e,e.return,t)}}function Yc(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Zd(e.type)||e.tag===4}function Xc(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||Yc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Zd(e.type)||e.flags&2||e.child===null||e.tag===4)continue a;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Zc(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=tn));else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(Zc(e,t,n),e=e.sibling;e!==null;)Zc(e,t,n),e=e.sibling}function Qc(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(Qc(e,t,n),e=e.sibling;e!==null;)Qc(e,t,n),e=e.sibling}function $c(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);Pd(t,r,n),t[M]=e,t[N]=n}catch(t){Z(e,e.return,t)}}var el=!1,tl=!1,nl=!1,rl=typeof WeakSet==`function`?WeakSet:Set,il=null;function al(e,t){if(e=e.containerInfo,Rd=sp,e=Or(e),kr(e)){if(`selectionStart`in e)var n={start:e.selectionStart,end:e.selectionEnd};else a:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var a=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break a}var s=0,c=-1,l=-1,u=0,d=0,f=e,p=null;b:for(;;){for(var m;f!==n||a!==0&&f.nodeType!==3||(c=s+a),f!==o||r!==0&&f.nodeType!==3||(l=s+r),f.nodeType===3&&(s+=f.nodeValue.length),(m=f.firstChild)!==null;)p=f,f=m;for(;;){if(f===e)break b;if(p===n&&++u===a&&(c=s),p===o&&++d===r&&(l=s),(m=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=m}n=c===-1||l===-1?null:{start:c,end:l}}else n=null}n||={start:0,end:0}}else n=null;for(zd={focusedElem:e,selectionRange:n},sp=!1,il=t;il!==null;)if(t=il,e=t.child,t.subtreeFlags&1028&&e!==null)e.return=t,il=e;else for(;il!==null;){switch(t=il,o=t.alternate,e=t.flags,t.tag){case 0:if(e&4&&(e=t.updateQueue,e=e===null?null:e.events,e!==null))for(n=0;n title`))),Pd(o,r,n),o[M]=e,P(o),r=o;break a;case`link`:var s=Vf(`link`,`href`,a).get(r+(n.href||``));if(s){for(var c=0;cg&&(o=g,g=h,h=o);var _=Er(s,h),v=Er(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,E.T=null,n=lu,lu=null;var o=au,s=su;if(iu=0,ou=au=null,su=0,K&6)throw Error(i(331));var c=K;if(K|=4,Pl(o.current),El(o,o.current,s,n),K=c,id(0,!1),He&&typeof He.onPostCommitFiberRoot==`function`)try{He.onPostCommitFiberRoot(Ve,o)}catch{}return!0}finally{D.p=a,E.T=r,Vu(e,t)}}function Wu(e,t,n){t=vi(n,t),t=Qs(e.stateNode,t,2),e=Ha(e,t,2),e!==null&&(rt(e,2),rd(e))}function Z(e,t,n){if(e.tag===3)Wu(e,e,n);else for(;t!==null;){if(t.tag===3){Wu(t,e,n);break}else if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(ru===null||!ru.has(r))){e=vi(n,e),n=$s(2),r=Ha(t,n,2),r!==null&&(ec(n,r,t,e),rt(r,2),rd(r));break}}t=t.return}}function Gu(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new Rl;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(Hl=!0,i.add(n),e=Ku.bind(null,e,t,n),t.then(e,e))}function Ku(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,q===e&&(Y&n)===n&&(Wl===4||Wl===3&&(Y&62914560)===Y&&300>Me()-$l?!(K&2)&&Su(e,0):ql|=n,Yl===Y&&(Yl=0)),rd(e)}function qu(e,t){t===0&&(t=tt()),e=ri(e,t),e!==null&&(rt(e,t),rd(e))}function Ju(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),qu(e,n)}function Yu(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}r!==null&&r.delete(t),qu(e,n)}function Xu(e,t){return Oe(e,t)}var Zu=null,Qu=null,$u=!1,ed=!1,td=!1,nd=0;function rd(e){e!==Qu&&e.next===null&&(Qu===null?Zu=Qu=e:Qu=Qu.next=e),ed=!0,$u||($u=!0,ud())}function id(e,t){if(!td&&ed){td=!0;do for(var n=!1,r=Zu;r!==null;){if(!t)if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-We(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,ld(r,a))}else a=Y,a=Qe(r,r===q?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||$e(r,a)||(n=!0,ld(r,a));r=r.next}while(n);td=!1}}function ad(){od()}function od(){ed=$u=!1;var e=0;nd!==0&&Gd()&&(e=nd);for(var t=Me(),n=null,r=Zu;r!==null;){var i=r.next,a=sd(r,t);a===0?(r.next=null,n===null?Zu=i:n.next=i,i===null&&(Qu=n)):(n=r,(e!==0||a&3)&&(ed=!0)),r=i}iu!==0&&iu!==5||id(e,!1),nd!==0&&(nd=0)}function sd(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&Id(d)&&(c=c.responseEnd,o+=u*(c`u`?null:document;function xf(e,t,n){var r=bf;if(r&&typeof t==`string`&&t){var i=Vt(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),hf.has(i)||(hf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),Pd(t,`link`,e),P(t),r.head.appendChild(t)))}}function Sf(e){_f.D(e),xf(`dns-prefetch`,e,null)}function Cf(e,t){_f.C(e,t),xf(`preconnect`,e,t)}function wf(e,t,n){_f.L(e,t,n);var r=bf;if(r&&e&&t){var i=`link[rel="preload"][as="`+Vt(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+Vt(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+Vt(n.imageSizes)+`"]`)):i+=`[href="`+Vt(e)+`"]`;var a=i;switch(t){case`style`:a=Af(e);break;case`script`:a=Pf(e)}mf.has(a)||(e=m({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),mf.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(jf(a))||t===`script`&&r.querySelector(Ff(a))||(t=r.createElement(`link`),Pd(t,`link`,e),P(t),r.head.appendChild(t)))}}function Tf(e,t){_f.m(e,t);var n=bf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+Vt(r)+`"][href="`+Vt(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Pf(e)}if(!mf.has(a)&&(e=m({rel:`modulepreload`,href:e},t),mf.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(Ff(a)))return}r=n.createElement(`link`),Pd(r,`link`,e),P(r),n.head.appendChild(r)}}}function Ef(e,t,n){_f.S(e,t,n);var r=bf;if(r&&e){var i=Ct(r).hoistableStyles,a=Af(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(jf(a)))s.loading=5;else{e=m({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=mf.get(a))&&Rf(e,n);var c=o=r.createElement(`link`);P(c),Pd(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Lf(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function Df(e,t){_f.X(e,t);var n=bf;if(n&&e){var r=Ct(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=m({src:e,async:!0},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),P(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Of(e,t){_f.M(e,t);var n=bf;if(n&&e){var r=Ct(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=m({src:e,async:!0,type:`module`},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),P(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function kf(e,t,n,r){var a=(a=me.current)?gf(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=Af(n.href),n=Ct(a).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Af(n.href);var o=Ct(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(jf(e)))&&!o._p&&(s.instance=o,s.state.loading=5),mf.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},mf.set(e,n),o||Nf(a,e,n,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=Pf(n),n=Ct(a).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Af(e){return`href="`+Vt(e)+`"`}function jf(e){return`link[rel="stylesheet"][`+e+`]`}function Mf(e){return m({},e,{"data-precedence":e.precedence,precedence:null})}function Nf(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),Pd(t,`link`,n),P(t),e.head.appendChild(t))}function Pf(e){return`[src="`+Vt(e)+`"]`}function Ff(e){return`script[async]`+e}function If(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+Vt(n.href)+`"]`);if(r)return t.instance=r,P(r),r;var a=m({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),P(r),Pd(r,`style`,a),Lf(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Af(n.href);var o=e.querySelector(jf(a));if(o)return t.state.loading|=4,t.instance=o,P(o),o;r=Mf(n),(a=mf.get(a))&&Rf(r,a),o=(e.ownerDocument||e).createElement(`link`),P(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),Pd(o,`link`,r),t.state.loading|=4,Lf(o,n.precedence,e),t.instance=o;case`script`:return o=Pf(n.src),(a=e.querySelector(Ff(o)))?(t.instance=a,P(a),a):(r=n,(a=mf.get(o))&&(r=m({},n),zf(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),P(a),Pd(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Lf(r,n.precedence,e));return t.instance}function Lf(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function Uf(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Wf(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Gf(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Af(r.href),a=t.querySelector(jf(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=Jf.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,P(a);return}a=t.ownerDocument||t,r=Mf(r),(i=mf.get(i))&&Rf(r,i),a=a.createElement(`link`),P(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Pd(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=Jf.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var Kf=0;function qf(e,t){return e.stylesheets&&e.count===0&&Xf(e,e.stylesheets),0Kf?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function Jf(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Xf(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Yf=null;function Xf(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Yf=new Map,t.forEach(Zf,e),Yf=null,Jf.call(e))}function Zf(e,t){if(!(t.state.loading&4)){var n=Yf.get(e);if(n)var r=n.get(null);else{n=new Map,Yf.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=g()})),v=l(d(),1),y=_(),b=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),x=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),ee=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),te=e=>{let t=ee(e);return t.charAt(0).toUpperCase()+t.slice(1)},S={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`},C=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},ne=(0,v.createContext)({}),re=()=>(0,v.useContext)(ne),ie=(0,v.forwardRef)(({color:e,size:t,strokeWidth:n,absoluteStrokeWidth:r,className:i=``,children:a,iconNode:o,...s},c)=>{let{size:l=24,strokeWidth:u=2,absoluteStrokeWidth:d=!1,color:f=`currentColor`,className:p=``}=re()??{},m=r??d?Number(n??u)*24/Number(t??l):n??u;return(0,v.createElement)(`svg`,{ref:c,...S,width:t??l??S.width,height:t??l??S.height,stroke:e??f,strokeWidth:m,className:b(`lucide`,p,i),...!a&&!C(s)&&{"aria-hidden":`true`},...s},[...o.map(([e,t])=>(0,v.createElement)(e,t)),...Array.isArray(a)?a:[a]])}),ae=(e,t)=>{let n=(0,v.forwardRef)(({className:n,...r},i)=>(0,v.createElement)(ie,{ref:i,iconNode:t,className:b(`lucide-${x(te(e))}`,`lucide-${e}`,n),...r}));return n.displayName=te(e),n},oe=ae(`calendar-days`,[[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`,key:`1hopcy`}],[`path`,{d:`M3 10h18`,key:`8toen8`}],[`path`,{d:`M8 14h.01`,key:`6423bh`}],[`path`,{d:`M12 14h.01`,key:`1etili`}],[`path`,{d:`M16 14h.01`,key:`1gbofw`}],[`path`,{d:`M8 18h.01`,key:`lrp35t`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}],[`path`,{d:`M16 18h.01`,key:`kzsmim`}]]),w=ae(`log-out`,[[`path`,{d:`m16 17 5-5-5-5`,key:`1bji2h`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}]]),T=ae(`paw-print`,[[`circle`,{cx:`11`,cy:`4`,r:`2`,key:`vol9p0`}],[`circle`,{cx:`18`,cy:`8`,r:`2`,key:`17gozi`}],[`circle`,{cx:`20`,cy:`16`,r:`2`,key:`1v9bxh`}],[`path`,{d:`M9 10a5 5 0 0 1 5 5v3.5a3.5 3.5 0 0 1-6.84 1.045Q6.52 17.48 4.46 16.84A3.5 3.5 0 0 1 5.5 10Z`,key:`1ydw1z`}]]),se=ae(`refresh-cw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]),ce=ae(`route`,[[`circle`,{cx:`6`,cy:`19`,r:`3`,key:`1kj8tv`}],[`path`,{d:`M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15`,key:`1d8sl`}],[`circle`,{cx:`18`,cy:`5`,r:`3`,key:`gq8acd`}]]),le=ae(`users`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]);function E(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}function D(...e){return t=>{let n=!1,r=e.map(e=>{let r=E(e,t);return!n&&typeof r==`function`&&(n=!0),r});if(n)return()=>{for(let t=0;t{let{children:r,...i}=t,a=null,o=!1,s=[];he(r)&&typeof ye==`function`&&(r=ye(r._payload)),v.Children.forEach(r,e=>{if(j(e)){o=!0;let t=e,n=`child`in t.props?t.props.child:t.props.children;he(n)&&typeof ye==`function`&&(n=ye(n._payload)),a=k(t,n),s.push(a?.props?.children)}else s.push(e)}),a?a=v.cloneElement(a,void 0,s):!o&&v.Children.count(r)===1&&v.isValidElement(r)&&(a=r);let c=a?pe(a):void 0,l=ue(n,c);if(!a){if(r||r===0)throw Error(o?ve(e):_e(e));return r}let u=A(i,a.props??{});return a.type!==v.Fragment&&(u.ref=n?l:c),v.cloneElement(a,u)});return t.displayName=`${e}.Slot`,t}var fe=de(`Slot`),O=Symbol.for(`radix.slottable`),k=(e,t)=>{if(`child`in e.props){let t=e.props.child;return v.isValidElement(t)?v.cloneElement(t,void 0,e.props.children(t.props.children)):null}return v.isValidElement(t)?t:null};function A(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function pe(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function j(e){return v.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===O}var me=Symbol.for(`react.lazy`);function he(e){return typeof e==`object`&&!!e&&`$$typeof`in e&&e.$$typeof===me&&`_payload`in e&&ge(e._payload)}function ge(e){return typeof e==`object`&&!!e&&`then`in e}var _e=e=>`${e} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,ve=e=>`${e} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,ye=v.use;function be(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;ttypeof e==`boolean`?`${e}`:e===0?`0`:e,Ce=xe,we=(e,t)=>n=>{if(t?.variants==null)return Ce(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=Se(t)||Se(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return Ce(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},Te=(e,t)=>{let n=Array(e.length+t.length);for(let t=0;t({classGroupId:e,validator:t}),De=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),Oe=`-`,ke=[],Ae=`arbitrary..`,je=e=>{let t=Pe(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:e=>{if(e.startsWith(`[`)&&e.endsWith(`]`))return Ne(e);let n=e.split(Oe);return Me(n,+(n[0]===``&&n.length>1),t)},getConflictingClassGroupIds:(e,t)=>{if(t){let t=r[e],i=n[e];return t?i?Te(i,t):t:i||ke}return n[e]||ke}}},Me=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;let r=e[t],i=n.nextPart.get(r);if(i){let n=Me(e,t+1,i);if(n)return n}let a=n.validators;if(a===null)return;let o=t===0?e.join(Oe):e.slice(t).join(Oe),s=a.length;for(let e=0;ee.slice(1,-1).indexOf(`:`)===-1?void 0:(()=>{let t=e.slice(1,-1),n=t.indexOf(`:`),r=t.slice(0,n);return r?Ae+r:void 0})(),Pe=e=>{let{theme:t,classGroups:n}=e;return Fe(n,t)},Fe=(e,t)=>{let n=De();for(let r in e){let i=e[r];Ie(i,n,r,t)}return n},Ie=(e,t,n,r)=>{let i=e.length;for(let a=0;a{if(typeof e==`string`){Re(e,t,n);return}if(typeof e==`function`){ze(e,t,n,r);return}Be(e,t,n,r)},Re=(e,t,n)=>{let r=e===``?t:Ve(t,e);r.classGroupId=n},ze=(e,t,n,r)=>{if(He(e)){Ie(e(r),t,n,r);return}t.validators===null&&(t.validators=[]),t.validators.push(Ee(n,e))},Be=(e,t,n,r)=>{let i=Object.entries(e),a=i.length;for(let e=0;e{let n=e,r=t.split(Oe),i=r.length;for(let e=0;e`isThemeGetter`in e&&e.isThemeGetter===!0,Ue=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=Object.create(null),r=Object.create(null),i=(i,a)=>{n[i]=a,t++,t>e&&(t=0,r=n,n=Object.create(null))};return{get(e){let t=n[e];if(t!==void 0)return t;if((t=r[e])!==void 0)return i(e,t),t},set(e,t){e in n?n[e]=t:i(e,t)}}},We=`!`,Ge=`:`,Ke=[],qe=(e,t,n,r,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:r,isExternal:i}),Je=e=>{let{prefix:t,experimentalParseClassName:n}=e,r=e=>{let t=[],n=0,r=0,i=0,a,o=e.length;for(let s=0;si?a-i:void 0;return qe(t,l,c,u)};if(t){let e=t+Ge,n=r;r=t=>t.startsWith(e)?n(t.slice(e.length)):qe(Ke,!1,t,void 0,!0)}if(n){let e=r;r=t=>n({className:t,parseClassName:e})}return r},Ye=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((e,n)=>{t.set(e,1e6+n)}),e=>{let n=[],r=[];for(let i=0;i0&&(r.sort(),n.push(...r),r=[]),n.push(a)):r.push(a)}return r.length>0&&(r.sort(),n.push(...r)),n}},Xe=e=>({cache:Ue(e.cacheSize),parseClassName:Je(e),sortModifiers:Ye(e),postfixLookupClassGroupIds:Ze(e),...je(e)}),Ze=e=>{let t=Object.create(null),n=e.postfixLookupClassGroups;if(n)for(let e=0;e{let{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i,sortModifiers:a,postfixLookupClassGroupIds:o}=t,s=[],c=e.trim().split(Qe),l=``;for(let e=c.length-1;e>=0;--e){let t=c[e],{isExternal:u,modifiers:d,hasImportantModifier:f,baseClassName:p,maybePostfixModifierPosition:m}=n(t);if(u){l=t+(l.length>0?` `+l:l);continue}let h=!!m,g;if(h){g=r(p.substring(0,m));let e=g&&o[g]?r(p):void 0;e&&e!==g&&(g=e,h=!1)}else g=r(p);if(!g){if(!h){l=t+(l.length>0?` `+l:l);continue}if(g=r(p),!g){l=t+(l.length>0?` `+l:l);continue}h=!1}let _=d.length===0?``:d.length===1?d[0]:a(d).join(`:`),v=f?_+We:_,y=v+g;if(s.indexOf(y)>-1)continue;s.push(y);let b=i(g,h);for(let e=0;e0?` `+l:l)}return l},et=(...e)=>{let t=0,n,r,i=``;for(;t{if(typeof e==`string`)return e;let t,n=``;for(let r=0;r{let n,r,i,a,o=o=>(n=Xe(t.reduce((e,t)=>t(e),e())),r=n.cache.get,i=n.cache.set,a=s,s(o)),s=e=>{let t=r(e);if(t)return t;let a=$e(e,n);return i(e,a),a};return a=o,(...e)=>a(et(...e))},rt=[],it=e=>{let t=t=>t[e]||rt;return t.isThemeGetter=!0,t},at=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,ot=/^\((?:(\w[\w-]*):)?(.+)\)$/i,st=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,ct=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,lt=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,ut=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,dt=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,ft=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,M=e=>st.test(e),N=e=>!!e&&!Number.isNaN(Number(e)),pt=e=>!!e&&Number.isInteger(Number(e)),mt=e=>e.endsWith(`%`)&&N(e.slice(0,-1)),ht=e=>ct.test(e),gt=()=>!0,_t=e=>lt.test(e)&&!ut.test(e),vt=()=>!1,yt=e=>dt.test(e),bt=e=>ft.test(e),xt=e=>!P(e)&&!F(e),St=e=>e.startsWith(`@container`)&&(e[10]===`/`&&e[11]!==void 0||e[11]===`s`&&e[16]!==void 0&&e.startsWith(`-size/`,10)||e[11]===`n`&&e[18]!==void 0&&e.startsWith(`-normal/`,10)),Ct=e=>Rt(e,Ht,vt),P=e=>at.test(e),wt=e=>Rt(e,Ut,_t),Tt=e=>Rt(e,Wt,N),Et=e=>Rt(e,Kt,gt),Dt=e=>Rt(e,Gt,vt),Ot=e=>Rt(e,Bt,vt),kt=e=>Rt(e,Vt,bt),At=e=>Rt(e,qt,yt),F=e=>ot.test(e),jt=e=>zt(e,Ut),Mt=e=>zt(e,Gt),Nt=e=>zt(e,Bt),Pt=e=>zt(e,Ht),Ft=e=>zt(e,Vt),It=e=>zt(e,qt,!0),Lt=e=>zt(e,Kt,!0),Rt=(e,t,n)=>{let r=at.exec(e);return r?r[1]?t(r[1]):n(r[2]):!1},zt=(e,t,n=!1)=>{let r=ot.exec(e);return r?r[1]?t(r[1]):n:!1},Bt=e=>e===`position`||e===`percentage`,Vt=e=>e===`image`||e===`url`,Ht=e=>e===`length`||e===`size`||e===`bg-size`,Ut=e=>e===`length`,Wt=e=>e===`number`,Gt=e=>e===`family-name`,Kt=e=>e===`number`||e===`weight`,qt=e=>e===`shadow`,Jt=nt(()=>{let e=it(`color`),t=it(`font`),n=it(`text`),r=it(`font-weight`),i=it(`tracking`),a=it(`leading`),o=it(`breakpoint`),s=it(`container`),c=it(`spacing`),l=it(`radius`),u=it(`shadow`),d=it(`inset-shadow`),f=it(`text-shadow`),p=it(`drop-shadow`),m=it(`blur`),h=it(`perspective`),g=it(`aspect`),_=it(`ease`),v=it(`animate`),y=()=>[`auto`,`avoid`,`all`,`avoid-page`,`page`,`left`,`right`,`column`],b=()=>[`center`,`top`,`bottom`,`left`,`right`,`top-left`,`left-top`,`top-right`,`right-top`,`bottom-right`,`right-bottom`,`bottom-left`,`left-bottom`],x=()=>[...b(),F,P],ee=()=>[`auto`,`hidden`,`clip`,`visible`,`scroll`],te=()=>[`auto`,`contain`,`none`],S=()=>[F,P,c],C=()=>[M,`full`,`auto`,...S()],ne=()=>[pt,`none`,`subgrid`,F,P],re=()=>[`auto`,{span:[`full`,pt,F,P]},pt,F,P],ie=()=>[pt,`auto`,F,P],ae=()=>[`auto`,`min`,`max`,`fr`,F,P],oe=()=>[`start`,`end`,`center`,`between`,`around`,`evenly`,`stretch`,`baseline`,`center-safe`,`end-safe`],w=()=>[`start`,`end`,`center`,`stretch`,`center-safe`,`end-safe`],T=()=>[`auto`,...S()],se=()=>[M,`auto`,`full`,`dvw`,`dvh`,`lvw`,`lvh`,`svw`,`svh`,`min`,`max`,`fit`,...S()],ce=()=>[M,`screen`,`full`,`dvw`,`lvw`,`svw`,`min`,`max`,`fit`,...S()],le=()=>[M,`screen`,`full`,`lh`,`dvh`,`lvh`,`svh`,`min`,`max`,`fit`,...S()],E=()=>[e,F,P],D=()=>[...b(),Nt,Ot,{position:[F,P]}],ue=()=>[`no-repeat`,{repeat:[``,`x`,`y`,`space`,`round`]}],de=()=>[`auto`,`cover`,`contain`,Pt,Ct,{size:[F,P]}],fe=()=>[mt,jt,wt],O=()=>[``,`none`,`full`,l,F,P],k=()=>[``,N,jt,wt],A=()=>[`solid`,`dashed`,`dotted`,`double`],pe=()=>[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],j=()=>[N,mt,Nt,Ot],me=()=>[``,`none`,m,F,P],he=()=>[`none`,N,F,P],ge=()=>[`none`,N,F,P],_e=()=>[N,F,P],ve=()=>[M,`full`,...S()];return{cacheSize:500,theme:{animate:[`spin`,`ping`,`pulse`,`bounce`],aspect:[`video`],blur:[ht],breakpoint:[ht],color:[gt],container:[ht],"drop-shadow":[ht],ease:[`in`,`out`,`in-out`],font:[xt],"font-weight":[`thin`,`extralight`,`light`,`normal`,`medium`,`semibold`,`bold`,`extrabold`,`black`],"inset-shadow":[ht],leading:[`none`,`tight`,`snug`,`normal`,`relaxed`,`loose`],perspective:[`dramatic`,`near`,`normal`,`midrange`,`distant`,`none`],radius:[ht],shadow:[ht],spacing:[`px`,N],text:[ht],"text-shadow":[ht],tracking:[`tighter`,`tight`,`normal`,`wide`,`wider`,`widest`]},classGroups:{aspect:[{aspect:[`auto`,`square`,M,P,F,g]}],container:[`container`],"container-type":[{"@container":[``,`normal`,`size`,F,P]}],"container-named":[St],columns:[{columns:[N,P,F,s]}],"break-after":[{"break-after":y()}],"break-before":[{"break-before":y()}],"break-inside":[{"break-inside":[`auto`,`avoid`,`avoid-page`,`avoid-column`]}],"box-decoration":[{"box-decoration":[`slice`,`clone`]}],box:[{box:[`border`,`content`]}],display:[`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`],sr:[`sr-only`,`not-sr-only`],float:[{float:[`right`,`left`,`none`,`start`,`end`]}],clear:[{clear:[`left`,`right`,`both`,`none`,`start`,`end`]}],isolation:[`isolate`,`isolation-auto`],"object-fit":[{object:[`contain`,`cover`,`fill`,`none`,`scale-down`]}],"object-position":[{object:x()}],overflow:[{overflow:ee()}],"overflow-x":[{"overflow-x":ee()}],"overflow-y":[{"overflow-y":ee()}],overscroll:[{overscroll:te()}],"overscroll-x":[{"overscroll-x":te()}],"overscroll-y":[{"overscroll-y":te()}],position:[`static`,`fixed`,`absolute`,`relative`,`sticky`],inset:[{inset:C()}],"inset-x":[{"inset-x":C()}],"inset-y":[{"inset-y":C()}],start:[{"inset-s":C(),start:C()}],end:[{"inset-e":C(),end:C()}],"inset-bs":[{"inset-bs":C()}],"inset-be":[{"inset-be":C()}],top:[{top:C()}],right:[{right:C()}],bottom:[{bottom:C()}],left:[{left:C()}],visibility:[`visible`,`invisible`,`collapse`],z:[{z:[pt,`auto`,F,P]}],basis:[{basis:[M,`full`,`auto`,s,...S()]}],"flex-direction":[{flex:[`row`,`row-reverse`,`col`,`col-reverse`]}],"flex-wrap":[{flex:[`nowrap`,`wrap`,`wrap-reverse`]}],flex:[{flex:[N,M,`auto`,`initial`,`none`,P]}],grow:[{grow:[``,N,F,P]}],shrink:[{shrink:[``,N,F,P]}],order:[{order:[pt,`first`,`last`,`none`,F,P]}],"grid-cols":[{"grid-cols":ne()}],"col-start-end":[{col:re()}],"col-start":[{"col-start":ie()}],"col-end":[{"col-end":ie()}],"grid-rows":[{"grid-rows":ne()}],"row-start-end":[{row:re()}],"row-start":[{"row-start":ie()}],"row-end":[{"row-end":ie()}],"grid-flow":[{"grid-flow":[`row`,`col`,`dense`,`row-dense`,`col-dense`]}],"auto-cols":[{"auto-cols":ae()}],"auto-rows":[{"auto-rows":ae()}],gap:[{gap:S()}],"gap-x":[{"gap-x":S()}],"gap-y":[{"gap-y":S()}],"justify-content":[{justify:[...oe(),`normal`]}],"justify-items":[{"justify-items":[...w(),`normal`]}],"justify-self":[{"justify-self":[`auto`,...w()]}],"align-content":[{content:[`normal`,...oe()]}],"align-items":[{items:[...w(),{baseline:[``,`last`]}]}],"align-self":[{self:[`auto`,...w(),{baseline:[``,`last`]}]}],"place-content":[{"place-content":oe()}],"place-items":[{"place-items":[...w(),`baseline`]}],"place-self":[{"place-self":[`auto`,...w()]}],p:[{p:S()}],px:[{px:S()}],py:[{py:S()}],ps:[{ps:S()}],pe:[{pe:S()}],pbs:[{pbs:S()}],pbe:[{pbe:S()}],pt:[{pt:S()}],pr:[{pr:S()}],pb:[{pb:S()}],pl:[{pl:S()}],m:[{m:T()}],mx:[{mx:T()}],my:[{my:T()}],ms:[{ms:T()}],me:[{me:T()}],mbs:[{mbs:T()}],mbe:[{mbe:T()}],mt:[{mt:T()}],mr:[{mr:T()}],mb:[{mb:T()}],ml:[{ml:T()}],"space-x":[{"space-x":S()}],"space-x-reverse":[`space-x-reverse`],"space-y":[{"space-y":S()}],"space-y-reverse":[`space-y-reverse`],size:[{size:se()}],"inline-size":[{inline:[`auto`,...ce()]}],"min-inline-size":[{"min-inline":[`auto`,...ce()]}],"max-inline-size":[{"max-inline":[`none`,...ce()]}],"block-size":[{block:[`auto`,...le()]}],"min-block-size":[{"min-block":[`auto`,...le()]}],"max-block-size":[{"max-block":[`none`,...le()]}],w:[{w:[s,`screen`,...se()]}],"min-w":[{"min-w":[s,`screen`,`none`,...se()]}],"max-w":[{"max-w":[s,`screen`,`none`,`prose`,{screen:[o]},...se()]}],h:[{h:[`screen`,`lh`,...se()]}],"min-h":[{"min-h":[`screen`,`lh`,`none`,...se()]}],"max-h":[{"max-h":[`screen`,`lh`,...se()]}],"font-size":[{text:[`base`,n,jt,wt]}],"font-smoothing":[`antialiased`,`subpixel-antialiased`],"font-style":[`italic`,`not-italic`],"font-weight":[{font:[r,Lt,Et]}],"font-stretch":[{"font-stretch":[`ultra-condensed`,`extra-condensed`,`condensed`,`semi-condensed`,`normal`,`semi-expanded`,`expanded`,`extra-expanded`,`ultra-expanded`,mt,P]}],"font-family":[{font:[Mt,Dt,t]}],"font-features":[{"font-features":[P]}],"fvn-normal":[`normal-nums`],"fvn-ordinal":[`ordinal`],"fvn-slashed-zero":[`slashed-zero`],"fvn-figure":[`lining-nums`,`oldstyle-nums`],"fvn-spacing":[`proportional-nums`,`tabular-nums`],"fvn-fraction":[`diagonal-fractions`,`stacked-fractions`],tracking:[{tracking:[i,F,P]}],"line-clamp":[{"line-clamp":[N,`none`,F,Tt]}],leading:[{leading:[a,...S()]}],"list-image":[{"list-image":[`none`,F,P]}],"list-style-position":[{list:[`inside`,`outside`]}],"list-style-type":[{list:[`disc`,`decimal`,`none`,F,P]}],"text-alignment":[{text:[`left`,`center`,`right`,`justify`,`start`,`end`]}],"placeholder-color":[{placeholder:E()}],"text-color":[{text:E()}],"text-decoration":[`underline`,`overline`,`line-through`,`no-underline`],"text-decoration-style":[{decoration:[...A(),`wavy`]}],"text-decoration-thickness":[{decoration:[N,`from-font`,`auto`,F,wt]}],"text-decoration-color":[{decoration:E()}],"underline-offset":[{"underline-offset":[N,`auto`,F,P]}],"text-transform":[`uppercase`,`lowercase`,`capitalize`,`normal-case`],"text-overflow":[`truncate`,`text-ellipsis`,`text-clip`],"text-wrap":[{text:[`wrap`,`nowrap`,`balance`,`pretty`]}],indent:[{indent:S()}],"tab-size":[{tab:[pt,F,P]}],"vertical-align":[{align:[`baseline`,`top`,`middle`,`bottom`,`text-top`,`text-bottom`,`sub`,`super`,F,P]}],whitespace:[{whitespace:[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]}],break:[{break:[`normal`,`words`,`all`,`keep`]}],wrap:[{wrap:[`break-word`,`anywhere`,`normal`]}],hyphens:[{hyphens:[`none`,`manual`,`auto`]}],content:[{content:[`none`,F,P]}],"bg-attachment":[{bg:[`fixed`,`local`,`scroll`]}],"bg-clip":[{"bg-clip":[`border`,`padding`,`content`,`text`]}],"bg-origin":[{"bg-origin":[`border`,`padding`,`content`]}],"bg-position":[{bg:D()}],"bg-repeat":[{bg:ue()}],"bg-size":[{bg:de()}],"bg-image":[{bg:[`none`,{linear:[{to:[`t`,`tr`,`r`,`br`,`b`,`bl`,`l`,`tl`]},pt,F,P],radial:[``,F,P],conic:[pt,F,P]},Ft,kt]}],"bg-color":[{bg:E()}],"gradient-from-pos":[{from:fe()}],"gradient-via-pos":[{via:fe()}],"gradient-to-pos":[{to:fe()}],"gradient-from":[{from:E()}],"gradient-via":[{via:E()}],"gradient-to":[{to:E()}],rounded:[{rounded:O()}],"rounded-s":[{"rounded-s":O()}],"rounded-e":[{"rounded-e":O()}],"rounded-t":[{"rounded-t":O()}],"rounded-r":[{"rounded-r":O()}],"rounded-b":[{"rounded-b":O()}],"rounded-l":[{"rounded-l":O()}],"rounded-ss":[{"rounded-ss":O()}],"rounded-se":[{"rounded-se":O()}],"rounded-ee":[{"rounded-ee":O()}],"rounded-es":[{"rounded-es":O()}],"rounded-tl":[{"rounded-tl":O()}],"rounded-tr":[{"rounded-tr":O()}],"rounded-br":[{"rounded-br":O()}],"rounded-bl":[{"rounded-bl":O()}],"border-w":[{border:k()}],"border-w-x":[{"border-x":k()}],"border-w-y":[{"border-y":k()}],"border-w-s":[{"border-s":k()}],"border-w-e":[{"border-e":k()}],"border-w-bs":[{"border-bs":k()}],"border-w-be":[{"border-be":k()}],"border-w-t":[{"border-t":k()}],"border-w-r":[{"border-r":k()}],"border-w-b":[{"border-b":k()}],"border-w-l":[{"border-l":k()}],"divide-x":[{"divide-x":k()}],"divide-x-reverse":[`divide-x-reverse`],"divide-y":[{"divide-y":k()}],"divide-y-reverse":[`divide-y-reverse`],"border-style":[{border:[...A(),`hidden`,`none`]}],"divide-style":[{divide:[...A(),`hidden`,`none`]}],"border-color":[{border:E()}],"border-color-x":[{"border-x":E()}],"border-color-y":[{"border-y":E()}],"border-color-s":[{"border-s":E()}],"border-color-e":[{"border-e":E()}],"border-color-bs":[{"border-bs":E()}],"border-color-be":[{"border-be":E()}],"border-color-t":[{"border-t":E()}],"border-color-r":[{"border-r":E()}],"border-color-b":[{"border-b":E()}],"border-color-l":[{"border-l":E()}],"divide-color":[{divide:E()}],"outline-style":[{outline:[...A(),`none`,`hidden`]}],"outline-offset":[{"outline-offset":[N,F,P]}],"outline-w":[{outline:[``,N,jt,wt]}],"outline-color":[{outline:E()}],shadow:[{shadow:[``,`none`,u,It,At]}],"shadow-color":[{shadow:E()}],"inset-shadow":[{"inset-shadow":[`none`,d,It,At]}],"inset-shadow-color":[{"inset-shadow":E()}],"ring-w":[{ring:k()}],"ring-w-inset":[`ring-inset`],"ring-color":[{ring:E()}],"ring-offset-w":[{"ring-offset":[N,wt]}],"ring-offset-color":[{"ring-offset":E()}],"inset-ring-w":[{"inset-ring":k()}],"inset-ring-color":[{"inset-ring":E()}],"text-shadow":[{"text-shadow":[`none`,f,It,At]}],"text-shadow-color":[{"text-shadow":E()}],opacity:[{opacity:[N,F,P]}],"mix-blend":[{"mix-blend":[...pe(),`plus-darker`,`plus-lighter`]}],"bg-blend":[{"bg-blend":pe()}],"mask-clip":[{"mask-clip":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]},`mask-no-clip`],"mask-composite":[{mask:[`add`,`subtract`,`intersect`,`exclude`]}],"mask-image-linear-pos":[{"mask-linear":[N]}],"mask-image-linear-from-pos":[{"mask-linear-from":j()}],"mask-image-linear-to-pos":[{"mask-linear-to":j()}],"mask-image-linear-from-color":[{"mask-linear-from":E()}],"mask-image-linear-to-color":[{"mask-linear-to":E()}],"mask-image-t-from-pos":[{"mask-t-from":j()}],"mask-image-t-to-pos":[{"mask-t-to":j()}],"mask-image-t-from-color":[{"mask-t-from":E()}],"mask-image-t-to-color":[{"mask-t-to":E()}],"mask-image-r-from-pos":[{"mask-r-from":j()}],"mask-image-r-to-pos":[{"mask-r-to":j()}],"mask-image-r-from-color":[{"mask-r-from":E()}],"mask-image-r-to-color":[{"mask-r-to":E()}],"mask-image-b-from-pos":[{"mask-b-from":j()}],"mask-image-b-to-pos":[{"mask-b-to":j()}],"mask-image-b-from-color":[{"mask-b-from":E()}],"mask-image-b-to-color":[{"mask-b-to":E()}],"mask-image-l-from-pos":[{"mask-l-from":j()}],"mask-image-l-to-pos":[{"mask-l-to":j()}],"mask-image-l-from-color":[{"mask-l-from":E()}],"mask-image-l-to-color":[{"mask-l-to":E()}],"mask-image-x-from-pos":[{"mask-x-from":j()}],"mask-image-x-to-pos":[{"mask-x-to":j()}],"mask-image-x-from-color":[{"mask-x-from":E()}],"mask-image-x-to-color":[{"mask-x-to":E()}],"mask-image-y-from-pos":[{"mask-y-from":j()}],"mask-image-y-to-pos":[{"mask-y-to":j()}],"mask-image-y-from-color":[{"mask-y-from":E()}],"mask-image-y-to-color":[{"mask-y-to":E()}],"mask-image-radial":[{"mask-radial":[F,P]}],"mask-image-radial-from-pos":[{"mask-radial-from":j()}],"mask-image-radial-to-pos":[{"mask-radial-to":j()}],"mask-image-radial-from-color":[{"mask-radial-from":E()}],"mask-image-radial-to-color":[{"mask-radial-to":E()}],"mask-image-radial-shape":[{"mask-radial":[`circle`,`ellipse`]}],"mask-image-radial-size":[{"mask-radial":[{closest:[`side`,`corner`],farthest:[`side`,`corner`]}]}],"mask-image-radial-pos":[{"mask-radial-at":b()}],"mask-image-conic-pos":[{"mask-conic":[N]}],"mask-image-conic-from-pos":[{"mask-conic-from":j()}],"mask-image-conic-to-pos":[{"mask-conic-to":j()}],"mask-image-conic-from-color":[{"mask-conic-from":E()}],"mask-image-conic-to-color":[{"mask-conic-to":E()}],"mask-mode":[{mask:[`alpha`,`luminance`,`match`]}],"mask-origin":[{"mask-origin":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]}],"mask-position":[{mask:D()}],"mask-repeat":[{mask:ue()}],"mask-size":[{mask:de()}],"mask-type":[{"mask-type":[`alpha`,`luminance`]}],"mask-image":[{mask:[`none`,F,P]}],filter:[{filter:[``,`none`,F,P]}],blur:[{blur:me()}],brightness:[{brightness:[N,F,P]}],contrast:[{contrast:[N,F,P]}],"drop-shadow":[{"drop-shadow":[``,`none`,p,It,At]}],"drop-shadow-color":[{"drop-shadow":E()}],grayscale:[{grayscale:[``,N,F,P]}],"hue-rotate":[{"hue-rotate":[N,F,P]}],invert:[{invert:[``,N,F,P]}],saturate:[{saturate:[N,F,P]}],sepia:[{sepia:[``,N,F,P]}],"backdrop-filter":[{"backdrop-filter":[``,`none`,F,P]}],"backdrop-blur":[{"backdrop-blur":me()}],"backdrop-brightness":[{"backdrop-brightness":[N,F,P]}],"backdrop-contrast":[{"backdrop-contrast":[N,F,P]}],"backdrop-grayscale":[{"backdrop-grayscale":[``,N,F,P]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[N,F,P]}],"backdrop-invert":[{"backdrop-invert":[``,N,F,P]}],"backdrop-opacity":[{"backdrop-opacity":[N,F,P]}],"backdrop-saturate":[{"backdrop-saturate":[N,F,P]}],"backdrop-sepia":[{"backdrop-sepia":[``,N,F,P]}],"border-collapse":[{border:[`collapse`,`separate`]}],"border-spacing":[{"border-spacing":S()}],"border-spacing-x":[{"border-spacing-x":S()}],"border-spacing-y":[{"border-spacing-y":S()}],"table-layout":[{table:[`auto`,`fixed`]}],caption:[{caption:[`top`,`bottom`]}],transition:[{transition:[``,`all`,`colors`,`opacity`,`shadow`,`transform`,`none`,F,P]}],"transition-behavior":[{transition:[`normal`,`discrete`]}],duration:[{duration:[N,`initial`,F,P]}],ease:[{ease:[`linear`,`initial`,_,F,P]}],delay:[{delay:[N,F,P]}],animate:[{animate:[`none`,v,F,P]}],backface:[{backface:[`hidden`,`visible`]}],perspective:[{perspective:[h,F,P]}],"perspective-origin":[{"perspective-origin":x()}],rotate:[{rotate:he()}],"rotate-x":[{"rotate-x":he()}],"rotate-y":[{"rotate-y":he()}],"rotate-z":[{"rotate-z":he()}],scale:[{scale:ge()}],"scale-x":[{"scale-x":ge()}],"scale-y":[{"scale-y":ge()}],"scale-z":[{"scale-z":ge()}],"scale-3d":[`scale-3d`],skew:[{skew:_e()}],"skew-x":[{"skew-x":_e()}],"skew-y":[{"skew-y":_e()}],transform:[{transform:[F,P,``,`none`,`gpu`,`cpu`]}],"transform-origin":[{origin:x()}],"transform-style":[{transform:[`3d`,`flat`]}],translate:[{translate:ve()}],"translate-x":[{"translate-x":ve()}],"translate-y":[{"translate-y":ve()}],"translate-z":[{"translate-z":ve()}],"translate-none":[`translate-none`],zoom:[{zoom:[pt,F,P]}],accent:[{accent:E()}],appearance:[{appearance:[`none`,`auto`]}],"caret-color":[{caret:E()}],"color-scheme":[{scheme:[`normal`,`dark`,`light`,`light-dark`,`only-dark`,`only-light`]}],cursor:[{cursor:[`auto`,`default`,`pointer`,`wait`,`text`,`move`,`help`,`not-allowed`,`none`,`context-menu`,`progress`,`cell`,`crosshair`,`vertical-text`,`alias`,`copy`,`no-drop`,`grab`,`grabbing`,`all-scroll`,`col-resize`,`row-resize`,`n-resize`,`e-resize`,`s-resize`,`w-resize`,`ne-resize`,`nw-resize`,`se-resize`,`sw-resize`,`ew-resize`,`ns-resize`,`nesw-resize`,`nwse-resize`,`zoom-in`,`zoom-out`,F,P]}],"field-sizing":[{"field-sizing":[`fixed`,`content`]}],"pointer-events":[{"pointer-events":[`auto`,`none`]}],resize:[{resize:[`none`,``,`y`,`x`]}],"scroll-behavior":[{scroll:[`auto`,`smooth`]}],"scrollbar-thumb-color":[{"scrollbar-thumb":E()}],"scrollbar-track-color":[{"scrollbar-track":E()}],"scrollbar-gutter":[{"scrollbar-gutter":[`auto`,`stable`,`both`]}],"scrollbar-w":[{scrollbar:[`auto`,`thin`,`none`]}],"scroll-m":[{"scroll-m":S()}],"scroll-mx":[{"scroll-mx":S()}],"scroll-my":[{"scroll-my":S()}],"scroll-ms":[{"scroll-ms":S()}],"scroll-me":[{"scroll-me":S()}],"scroll-mbs":[{"scroll-mbs":S()}],"scroll-mbe":[{"scroll-mbe":S()}],"scroll-mt":[{"scroll-mt":S()}],"scroll-mr":[{"scroll-mr":S()}],"scroll-mb":[{"scroll-mb":S()}],"scroll-ml":[{"scroll-ml":S()}],"scroll-p":[{"scroll-p":S()}],"scroll-px":[{"scroll-px":S()}],"scroll-py":[{"scroll-py":S()}],"scroll-ps":[{"scroll-ps":S()}],"scroll-pe":[{"scroll-pe":S()}],"scroll-pbs":[{"scroll-pbs":S()}],"scroll-pbe":[{"scroll-pbe":S()}],"scroll-pt":[{"scroll-pt":S()}],"scroll-pr":[{"scroll-pr":S()}],"scroll-pb":[{"scroll-pb":S()}],"scroll-pl":[{"scroll-pl":S()}],"snap-align":[{snap:[`start`,`end`,`center`,`align-none`]}],"snap-stop":[{snap:[`normal`,`always`]}],"snap-type":[{snap:[`none`,`x`,`y`,`both`]}],"snap-strictness":[{snap:[`mandatory`,`proximity`]}],touch:[{touch:[`auto`,`none`,`manipulation`]}],"touch-x":[{"touch-pan":[`x`,`left`,`right`]}],"touch-y":[{"touch-pan":[`y`,`up`,`down`]}],"touch-pz":[`touch-pinch-zoom`],select:[{select:[`none`,`text`,`all`,`auto`]}],"will-change":[{"will-change":[`auto`,`scroll`,`contents`,`transform`,F,P]}],fill:[{fill:[`none`,...E()]}],"stroke-w":[{stroke:[N,jt,wt,Tt]}],stroke:[{stroke:[`none`,...E()]}],"forced-color-adjust":[{"forced-color-adjust":[`auto`,`none`]}]},conflictingClassGroups:{"container-named":[`container-type`],overflow:[`overflow-x`,`overflow-y`],overscroll:[`overscroll-x`,`overscroll-y`],inset:[`inset-x`,`inset-y`,`inset-bs`,`inset-be`,`start`,`end`,`top`,`right`,`bottom`,`left`],"inset-x":[`right`,`left`],"inset-y":[`top`,`bottom`],flex:[`basis`,`grow`,`shrink`],gap:[`gap-x`,`gap-y`],p:[`px`,`py`,`ps`,`pe`,`pbs`,`pbe`,`pt`,`pr`,`pb`,`pl`],px:[`pr`,`pl`],py:[`pt`,`pb`],m:[`mx`,`my`,`ms`,`me`,`mbs`,`mbe`,`mt`,`mr`,`mb`,`ml`],mx:[`mr`,`ml`],my:[`mt`,`mb`],size:[`w`,`h`],"font-size":[`leading`],"fvn-normal":[`fvn-ordinal`,`fvn-slashed-zero`,`fvn-figure`,`fvn-spacing`,`fvn-fraction`],"fvn-ordinal":[`fvn-normal`],"fvn-slashed-zero":[`fvn-normal`],"fvn-figure":[`fvn-normal`],"fvn-spacing":[`fvn-normal`],"fvn-fraction":[`fvn-normal`],"line-clamp":[`display`,`overflow`],rounded:[`rounded-s`,`rounded-e`,`rounded-t`,`rounded-r`,`rounded-b`,`rounded-l`,`rounded-ss`,`rounded-se`,`rounded-ee`,`rounded-es`,`rounded-tl`,`rounded-tr`,`rounded-br`,`rounded-bl`],"rounded-s":[`rounded-ss`,`rounded-es`],"rounded-e":[`rounded-se`,`rounded-ee`],"rounded-t":[`rounded-tl`,`rounded-tr`],"rounded-r":[`rounded-tr`,`rounded-br`],"rounded-b":[`rounded-br`,`rounded-bl`],"rounded-l":[`rounded-tl`,`rounded-bl`],"border-spacing":[`border-spacing-x`,`border-spacing-y`],"border-w":[`border-w-x`,`border-w-y`,`border-w-s`,`border-w-e`,`border-w-bs`,`border-w-be`,`border-w-t`,`border-w-r`,`border-w-b`,`border-w-l`],"border-w-x":[`border-w-r`,`border-w-l`],"border-w-y":[`border-w-t`,`border-w-b`],"border-color":[`border-color-x`,`border-color-y`,`border-color-s`,`border-color-e`,`border-color-bs`,`border-color-be`,`border-color-t`,`border-color-r`,`border-color-b`,`border-color-l`],"border-color-x":[`border-color-r`,`border-color-l`],"border-color-y":[`border-color-t`,`border-color-b`],translate:[`translate-x`,`translate-y`,`translate-none`],"translate-none":[`translate`,`translate-x`,`translate-y`,`translate-z`],"scroll-m":[`scroll-mx`,`scroll-my`,`scroll-ms`,`scroll-me`,`scroll-mbs`,`scroll-mbe`,`scroll-mt`,`scroll-mr`,`scroll-mb`,`scroll-ml`],"scroll-mx":[`scroll-mr`,`scroll-ml`],"scroll-my":[`scroll-mt`,`scroll-mb`],"scroll-p":[`scroll-px`,`scroll-py`,`scroll-ps`,`scroll-pe`,`scroll-pbs`,`scroll-pbe`,`scroll-pt`,`scroll-pr`,`scroll-pb`,`scroll-pl`],"scroll-px":[`scroll-pr`,`scroll-pl`],"scroll-py":[`scroll-pt`,`scroll-pb`],touch:[`touch-x`,`touch-y`,`touch-pz`],"touch-x":[`touch`],"touch-y":[`touch`],"touch-pz":[`touch`]},conflictingClassGroupModifiers:{"font-size":[`leading`]},postfixLookupClassGroups:[`container-type`],orderSensitiveModifiers:[`*`,`**`,`after`,`backdrop`,`before`,`details-content`,`file`,`first-letter`,`first-line`,`marker`,`placeholder`,`selection`]}});function Yt(...e){return Jt(xe(e))}var Xt=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),I=o(((e,t)=>{t.exports=Xt()}))(),Zt=we(`inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50`,{variants:{variant:{default:`bg-primary text-primary-foreground hover:bg-primary/90 shadow`,destructive:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,outline:`border border-input bg-card hover:bg-accent hover:text-accent-foreground`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-9 px-4 py-2`,sm:`h-8 rounded-md px-3 text-xs`,lg:`h-10 rounded-md px-8`,icon:`h-9 w-9`}},defaultVariants:{variant:`default`,size:`default`}}),Qt=v.forwardRef(({className:e,variant:t,size:n,asChild:r=!1,...i},a)=>(0,I.jsx)(r?fe:`button`,{className:Yt(Zt({variant:t,size:n,className:e})),ref:a,...i}));Qt.displayName=`Button`;var $t=v.forwardRef(({className:e,type:t,...n},r)=>(0,I.jsx)(`input`,{type:t,ref:r,className:Yt(`flex h-9 w-full rounded-md border border-input bg-card px-3 py-1 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50`,e),...n}));$t.displayName=`Input`;function en(e,t){return function(){return e.apply(t,arguments)}}var{toString:tn}=Object.prototype,{getPrototypeOf:nn}=Object,{iterator:rn,toStringTag:an}=Symbol,on=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),sn=(e,t)=>{let n=e,r=[];for(;n!=null&&n!==Object.prototype;){if(r.indexOf(n)!==-1)return!1;if(r.push(n),on(n,t))return!0;n=nn(n)}return!1},cn=(e,t)=>e!=null&&sn(e,t)?e[t]:void 0,ln=(e=>t=>{let n=tn.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),un=e=>(e=e.toLowerCase(),t=>ln(t)===e),dn=e=>t=>typeof t===e,{isArray:fn}=Array,pn=dn(`undefined`);function mn(e){return e!==null&&!pn(e)&&e.constructor!==null&&!pn(e.constructor)&&vn(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}var hn=un(`ArrayBuffer`);function gn(e){let t;return t=typeof ArrayBuffer<`u`&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&hn(e.buffer),t}var _n=dn(`string`),vn=dn(`function`),yn=dn(`number`),bn=e=>typeof e==`object`&&!!e,xn=e=>e===!0||e===!1,Sn=e=>{if(!bn(e))return!1;let t=nn(e);return(t===null||t===Object.prototype||nn(t)===null)&&!sn(e,an)&&!sn(e,rn)},Cn=e=>{if(!bn(e)||mn(e))return!1;try{return Object.keys(e).length===0&&Object.getPrototypeOf(e)===Object.prototype}catch{return!1}},wn=un(`Date`),Tn=un(`File`),En=e=>!!(e&&e.uri!==void 0),Dn=e=>e&&e.getParts!==void 0,On=un(`Blob`),kn=un(`FileList`),An=e=>bn(e)&&vn(e.pipe);function jn(){return typeof globalThis<`u`?globalThis:typeof self<`u`?self:typeof window<`u`?window:typeof global<`u`?global:{}}var Mn=jn(),Nn=Mn.FormData===void 0?void 0:Mn.FormData,Pn=e=>{if(!e)return!1;if(Nn&&e instanceof Nn)return!0;let t=nn(e);if(!t||t===Object.prototype||!vn(e.append))return!1;let n=ln(e);return n===`formdata`||n===`object`&&vn(e.toString)&&e.toString()===`[object FormData]`},Fn=un(`URLSearchParams`),[In,Ln,Rn,zn]=[`ReadableStream`,`Request`,`Response`,`Headers`].map(un),Bn=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,``);function Vn(e,t,{allOwnKeys:n=!1}={}){if(e==null)return;let r,i;if(typeof e!=`object`&&(e=[e]),fn(e))for(r=0,i=e.length;r0;)if(i=n[r],t===i.toLowerCase())return i;return null}var Un=typeof globalThis<`u`?globalThis:typeof self<`u`?self:typeof window<`u`?window:global,Wn=e=>!pn(e)&&e!==Un;function Gn(...e){let{caseless:t,skipUndefined:n}=Wn(this)&&this||{},r={},i=(e,i)=>{if(i===`__proto__`||i===`constructor`||i===`prototype`)return;let a=t&&typeof i==`string`&&Hn(r,i)||i,o=on(r,a)?r[a]:void 0;Sn(o)&&Sn(e)?r[a]=Gn(o,e):Sn(e)?r[a]=Gn({},e):fn(e)?r[a]=e.slice():(!n||!pn(e))&&(r[a]=e)};for(let t=0,n=e.length;t(Vn(t,(t,r)=>{n&&vn(t)?Object.defineProperty(e,r,{__proto__:null,value:en(t,n),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(e,r,{__proto__:null,value:t,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:r}),e),qn=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),Jn=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),Object.defineProperty(e.prototype,"constructor",{__proto__:null,value:e,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(e,"super",{__proto__:null,value:t.prototype}),n&&Object.assign(e.prototype,n)},Yn=(e,t,n,r)=>{let i,a,o,s={};if(t||={},e==null)return t;do{for(i=Object.getOwnPropertyNames(e),a=i.length;a-->0;)o=i[a],(!r||r(o,e,t))&&!s[o]&&(t[o]=e[o],s[o]=!0);e=n!==!1&&nn(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},Xn=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;let r=e.indexOf(t,n);return r!==-1&&r===n},Zn=e=>{if(!e)return null;if(fn(e))return e;let t=e.length;if(!yn(t))return null;let n=Array(t);for(;t-->0;)n[t]=e[t];return n},Qn=(e=>t=>e&&t instanceof e)(typeof Uint8Array<`u`&&nn(Uint8Array)),$n=(e,t)=>{let n=(e&&e[rn]).call(e),r;for(;(r=n.next())&&!r.done;){let n=r.value;t.call(e,n[0],n[1])}},er=(e,t)=>{let n,r=[];for(;(n=e.exec(t))!==null;)r.push(n);return r},tr=un(`HTMLFormElement`),nr=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(e,t,n){return t.toUpperCase()+n}),{propertyIsEnumerable:rr}=Object.prototype,ir=un(`RegExp`),ar=(e,t)=>{let n=Object.getOwnPropertyDescriptors(e),r={};Vn(n,(n,i)=>{let a;(a=t(n,i,e))!==!1&&(r[i]=a||n)}),Object.defineProperties(e,r)},or=e=>{ar(e,(t,n)=>{if(vn(e)&&[`arguments`,`caller`,`callee`].includes(n))return!1;let r=e[n];if(vn(r)){if(t.enumerable=!1,`writable`in t){t.writable=!1;return}t.set||=()=>{throw Error(`Can not rewrite read-only method '`+n+`'`)}}})},sr=(e,t)=>{let n={},r=e=>{e.forEach(e=>{n[e]=!0})};return fn(e)?r(e):r(String(e).split(t)),n},cr=()=>{},lr=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t;function ur(e){return!!(e&&vn(e.append)&&e[an]===`FormData`&&e[rn])}var dr=e=>{let t=new WeakSet,n=e=>{if(bn(e)){if(t.has(e))return;if(mn(e))return e;if(!(`toJSON`in e)){t.add(e);let r=fn(e)?[]:{};return Vn(e,(e,t)=>{let i=n(e);!pn(i)&&(r[t]=i)}),t.delete(e),r}}return e};return n(e)},fr=un(`AsyncFunction`),pr=e=>e&&(bn(e)||vn(e))&&vn(e.then)&&vn(e.catch),mr=((e,t)=>e?setImmediate:t?((e,t)=>(Un.addEventListener(`message`,({source:n,data:r})=>{n===Un&&r===e&&t.length&&t.shift()()},!1),n=>{t.push(n),Un.postMessage(e,`*`)}))(`axios@${Math.random()}`,[]):e=>setTimeout(e))(typeof setImmediate==`function`,vn(Un.postMessage)),hr=typeof queueMicrotask<`u`?queueMicrotask.bind(Un):typeof process<`u`&&process.nextTick||mr,gr=e=>e!=null&&vn(e[rn]),L={isArray:fn,isArrayBuffer:hn,isBuffer:mn,isFormData:Pn,isArrayBufferView:gn,isString:_n,isNumber:yn,isBoolean:xn,isObject:bn,isPlainObject:Sn,isEmptyObject:Cn,isReadableStream:In,isRequest:Ln,isResponse:Rn,isHeaders:zn,isUndefined:pn,isDate:wn,isFile:Tn,isReactNativeBlob:En,isReactNative:Dn,isBlob:On,isRegExp:ir,isFunction:vn,isStream:An,isURLSearchParams:Fn,isTypedArray:Qn,isFileList:kn,forEach:Vn,merge:Gn,extend:Kn,trim:Bn,stripBOM:qn,inherits:Jn,toFlatObject:Yn,kindOf:ln,kindOfTest:un,endsWith:Xn,toArray:Zn,forEachEntry:$n,matchAll:er,isHTMLForm:tr,hasOwnProperty:on,hasOwnProp:on,hasOwnInPrototypeChain:sn,getSafeProp:cn,reduceDescriptors:ar,freezeMethods:or,toObjectSet:sr,toCamelCase:nr,noop:cr,toFiniteNumber:lr,findKey:Hn,global:Un,isContextDefined:Wn,isSpecCompliantForm:ur,toJSONObject:dr,isAsyncFn:fr,isThenable:pr,setImmediate:mr,asap:hr,isIterable:gr,isSafeIterable:e=>e!=null&&sn(e,rn)&&gr(e)},_r=L.toObjectSet([`age`,`authorization`,`content-length`,`content-type`,`etag`,`expires`,`from`,`host`,`if-modified-since`,`if-unmodified-since`,`last-modified`,`location`,`max-forwards`,`proxy-authorization`,`referer`,`retry-after`,`user-agent`]),vr=e=>{let t={},n,r,i;return e&&e.split(` -`).forEach(function(e){i=e.indexOf(`:`),n=e.substring(0,i).trim().toLowerCase(),r=e.substring(i+1).trim(),!(!n||t[n]&&_r[n])&&(n===`set-cookie`?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+`, `+r:r)}),t};function yr(e){let t=0,n=e.length;for(;tt;){let t=e.charCodeAt(n-1);if(t!==9&&t!==32)break;--n}return t===0&&n===e.length?e:e.slice(t,n)}var br=RegExp(`[\\u0000-\\u0008\\u000a-\\u001f\\u007f]+`,`g`),xr=RegExp(`[^\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+`,`g`);function Sr(e,t){return L.isArray(e)?e.map(e=>Sr(e,t)):yr(String(e).replace(t,``))}var Cr=e=>Sr(e,br),wr=e=>Sr(e,xr);function Tr(e){let t=Object.create(null);return L.forEach(e.toJSON(),(e,n)=>{t[n]=wr(e)}),t}var Er=Symbol(`internals`);function Dr(e){return e&&String(e).trim().toLowerCase()}function Or(e){return e===!1||e==null?e:L.isArray(e)?e.map(Or):Cr(String(e))}function kr(e){let t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g,r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}var Ar=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function jr(e,t,n,r,i){if(L.isFunction(r))return r.call(this,t,n);if(i&&(t=n),L.isString(t)){if(L.isString(r))return t.indexOf(r)!==-1;if(L.isRegExp(r))return r.test(t)}}function Mr(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,t,n)=>t.toUpperCase()+n)}function Nr(e,t){let n=L.toCamelCase(` `+t);[`get`,`set`,`has`].forEach(r=>{Object.defineProperty(e,r+n,{__proto__:null,value:function(e,n,i){return this[r].call(this,t,e,n,i)},configurable:!0})})}var Pr=class{constructor(e){e&&this.set(e)}set(e,t,n){let r=this;function i(e,t,n){let i=Dr(t);if(!i)return;let a=L.findKey(r,i);(!a||r[a]===void 0||n===!0||n===void 0&&r[a]!==!1)&&(r[a||t]=Or(e))}let a=(e,t)=>L.forEach(e,(e,n)=>i(e,n,t));if(L.isPlainObject(e)||e instanceof this.constructor)a(e,t);else if(L.isString(e)&&(e=e.trim())&&!Ar(e))a(vr(e),t);else if(L.isObject(e)&&L.isSafeIterable(e)){let n=Object.create(null),r,i;for(let t of e){if(!L.isArray(t))throw TypeError(`Object iterator must return a key-value pair`);i=t[0],L.hasOwnProp(n,i)?(r=n[i],n[i]=L.isArray(r)?[...r,t[1]]:[r,t[1]]):n[i]=t[1]}a(n,t)}else e!=null&&i(t,e,n);return this}get(e,t){if(e=Dr(e),e){let n=L.findKey(this,e);if(n){let e=this[n];if(!t)return e;if(t===!0)return kr(e);if(L.isFunction(t))return t.call(this,e,n);if(L.isRegExp(t))return t.exec(e);throw TypeError(`parser must be boolean|regexp|function`)}}}has(e,t){if(e=Dr(e),e){let n=L.findKey(this,e);return!!(n&&this[n]!==void 0&&(!t||jr(this,this[n],n,t)))}return!1}delete(e,t){let n=this,r=!1;function i(e){if(e=Dr(e),e){let i=L.findKey(n,e);i&&(!t||jr(n,n[i],i,t))&&(delete n[i],r=!0)}}return L.isArray(e)?e.forEach(i):i(e),r}clear(e){let t=Object.keys(this),n=t.length,r=!1;for(;n--;){let i=t[n];(!e||jr(this,this[i],i,e,!0))&&(delete this[i],r=!0)}return r}normalize(e){let t=this,n={};return L.forEach(this,(r,i)=>{let a=L.findKey(n,i);if(a){t[a]=Or(r),delete t[i];return}let o=e?Mr(i):String(i).trim();o!==i&&delete t[i],t[o]=Or(r),n[o]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){let t=Object.create(null);return L.forEach(this,(n,r)=>{n!=null&&n!==!1&&(t[r]=e&&L.isArray(n)?n.join(`, `):n)}),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,t])=>e+`: `+t).join(` -`)}getSetCookie(){return this.get(`set-cookie`)||[]}get[Symbol.toStringTag](){return`AxiosHeaders`}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){let n=new this(e);return t.forEach(e=>n.set(e)),n}static accessor(e){let t=(this[Er]=this[Er]={accessors:{}}).accessors,n=this.prototype;function r(e){let r=Dr(e);t[r]||(Nr(n,e),t[r]=!0)}return L.isArray(e)?e.forEach(r):r(e),this}};Pr.accessor([`Content-Type`,`Content-Length`,`Accept`,`Accept-Encoding`,`User-Agent`,`Authorization`]),L.reduceDescriptors(Pr.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[n]=e}}}),L.freezeMethods(Pr);var Fr=`[REDACTED ****]`;function Ir(e){if(L.hasOwnProp(e,`toJSON`))return!0;let t=Object.getPrototypeOf(e);for(;t&&t!==Object.prototype;){if(L.hasOwnProp(t,`toJSON`))return!0;t=Object.getPrototypeOf(t)}return!1}function Lr(e,t){let n=new Set(t.map(e=>String(e).toLowerCase())),r=[],i=e=>{if(typeof e!=`object`||!e||L.isBuffer(e))return e;if(r.indexOf(e)!==-1)return;e instanceof Pr&&(e=e.toJSON()),r.push(e);let t;if(L.isArray(e))t=[],e.forEach((e,n)=>{let r=i(e);L.isUndefined(r)||(t[n]=r)});else{if(!L.isPlainObject(e)&&Ir(e))return r.pop(),e;t=Object.create(null);for(let[r,a]of Object.entries(e)){let e=n.has(r.toLowerCase())?Fr:i(a);L.isUndefined(e)||(t[r]=e)}}return r.pop(),t};return i(e)}var R=class e extends Error{static from(t,n,r,i,a,o){let s=new e(t.message,n||t.code,r,i,a);return Object.defineProperty(s,"cause",{__proto__:null,value:t,writable:!0,enumerable:!1,configurable:!0}),s.name=t.name,t.status!=null&&s.status==null&&(s.status=t.status),o&&Object.assign(s,o),s}constructor(e,t,n,r,i){super(e),Object.defineProperty(this,"message",{__proto__:null,value:e,enumerable:!0,writable:!0,configurable:!0}),this.name=`AxiosError`,this.isAxiosError=!0,t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),i&&(this.response=i,this.status=i.status)}toJSON(){let e=this.config,t=e&&L.hasOwnProp(e,`redact`)?e.redact:void 0,n=L.isArray(t)&&t.length>0?Lr(e,t):L.toJSONObject(e);return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:n,code:this.code,status:this.status}}};R.ERR_BAD_OPTION_VALUE=`ERR_BAD_OPTION_VALUE`,R.ERR_BAD_OPTION=`ERR_BAD_OPTION`,R.ECONNABORTED=`ECONNABORTED`,R.ETIMEDOUT=`ETIMEDOUT`,R.ECONNREFUSED=`ECONNREFUSED`,R.ERR_NETWORK=`ERR_NETWORK`,R.ERR_FR_TOO_MANY_REDIRECTS=`ERR_FR_TOO_MANY_REDIRECTS`,R.ERR_DEPRECATED=`ERR_DEPRECATED`,R.ERR_BAD_RESPONSE=`ERR_BAD_RESPONSE`,R.ERR_BAD_REQUEST=`ERR_BAD_REQUEST`,R.ERR_CANCELED=`ERR_CANCELED`,R.ERR_NOT_SUPPORT=`ERR_NOT_SUPPORT`,R.ERR_INVALID_URL=`ERR_INVALID_URL`,R.ERR_FORM_DATA_DEPTH_EXCEEDED=`ERR_FORM_DATA_DEPTH_EXCEEDED`;function Rr(e){return L.isPlainObject(e)||L.isArray(e)}function zr(e){return L.endsWith(e,`[]`)?e.slice(0,-2):e}function Br(e,t,n){return e?e.concat(t).map(function(e,t){return e=zr(e),!n&&t?`[`+e+`]`:e}).join(n?`.`:``):t}function Vr(e){return L.isArray(e)&&!e.some(Rr)}var Hr=L.toFlatObject(L,{},null,function(e){return/^is[A-Z]/.test(e)});function Ur(e,t,n){if(!L.isObject(e))throw TypeError(`target must be an object`);t||=new FormData,n=L.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(e,t){return!L.isUndefined(t[e])});let r=n.metaTokens,i=n.visitor||m,a=n.dots,o=n.indexes,s=n.Blob||typeof Blob<`u`&&Blob,c=n.maxDepth===void 0?100:n.maxDepth,l=s&&L.isSpecCompliantForm(t),u=[];if(!L.isFunction(i))throw TypeError(`visitor must be a function`);function d(e){if(e===null)return``;if(L.isDate(e))return e.toISOString();if(L.isBoolean(e))return e.toString();if(!l&&L.isBlob(e))throw new R(`Blob is not supported. Use a Buffer instead.`);if(L.isArrayBuffer(e)||L.isTypedArray(e)){if(l&&typeof s==`function`)return new s([e]);if(typeof Buffer<`u`)return Buffer.from(e);throw new R(`Blob is not supported. Use a Buffer instead.`,R.ERR_NOT_SUPPORT)}return e}function f(e){if(e>c)throw new R(`Object is too deeply nested (`+e+` levels). Max depth: `+c,R.ERR_FORM_DATA_DEPTH_EXCEEDED)}function p(e,t){if(c===1/0)return JSON.stringify(e);let n=[];return JSON.stringify(e,function(e,r){if(!L.isObject(r))return r;for(;n.length&&n[n.length-1]!==this;)n.pop();return n.push(r),f(t+n.length-1),r})}function m(e,n,i){let s=e;if(L.isReactNative(t)&&L.isReactNativeBlob(e))return t.append(Br(i,n,a),d(e)),!1;if(e&&!i&&typeof e==`object`){if(L.endsWith(n,`{}`))n=r?n:n.slice(0,-2),e=p(e,1);else if(L.isArray(e)&&Vr(e)||(L.isFileList(e)||L.endsWith(n,`[]`))&&(s=L.toArray(e)))return n=zr(n),s.forEach(function(e,r){!(L.isUndefined(e)||e===null)&&t.append(o===!0?Br([n],r,a):o===null?n:n+`[]`,d(e))}),!1}return Rr(e)?!0:(t.append(Br(i,n,a),d(e)),!1)}let h=Object.assign(Hr,{defaultVisitor:m,convertValue:d,isVisitable:Rr});function g(e,n,r=0){if(!L.isUndefined(e)){if(f(r),u.indexOf(e)!==-1)throw Error(`Circular reference detected in `+n.join(`.`));u.push(e),L.forEach(e,function(e,a){(!(L.isUndefined(e)||e===null)&&i.call(t,e,L.isString(a)?a.trim():a,n,h))===!0&&g(e,n?n.concat(a):[a],r+1)}),u.pop()}}if(!L.isObject(e))throw TypeError(`data must be an object`);return g(e),t}function Wr(e){let t={"!":`%21`,"'":`%27`,"(":`%28`,")":`%29`,"~":`%7E`,"%20":`+`};return encodeURIComponent(e).replace(/[!'()~]|%20/g,function(e){return t[e]})}function Gr(e,t){this._pairs=[],e&&Ur(e,this,t)}var Kr=Gr.prototype;Kr.append=function(e,t){this._pairs.push([e,t])},Kr.toString=function(e){let t=e?t=>e.call(this,t,Wr):Wr;return this._pairs.map(function(e){return t(e[0])+`=`+t(e[1])},``).join(`&`)};function qr(e){return encodeURIComponent(e).replace(/%3A/gi,`:`).replace(/%24/g,`$`).replace(/%2C/gi,`,`).replace(/%20/g,`+`)}function Jr(e,t,n){if(!t)return e;e||=``;let r=L.isFunction(n)?{serialize:n}:n,i=L.getSafeProp(r,`encode`)||qr,a=L.getSafeProp(r,`serialize`),o;if(o=a?a(t,r):L.isURLSearchParams(t)?t.toString():new Gr(t,r).toString(i),o){let t=e.indexOf(`#`);t!==-1&&(e=e.slice(0,t)),e+=(e.indexOf(`?`)===-1?`?`:`&`)+o}return e}var Yr=class{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:n?n.synchronous:!1,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&=[]}forEach(e){L.forEach(this.handlers,function(t){t!==null&&e(t)})}},Xr={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0,advertiseZstdAcceptEncoding:!1,validateStatusUndefinedResolves:!0},Zr={isBrowser:!0,classes:{URLSearchParams:typeof URLSearchParams<`u`?URLSearchParams:Gr,FormData:typeof FormData<`u`?FormData:null,Blob:typeof Blob<`u`?Blob:null},protocols:[`http`,`https`,`file`,`blob`,`url`,`data`]},Qr=s({hasBrowserEnv:()=>$r,hasStandardBrowserEnv:()=>ti,hasStandardBrowserWebWorkerEnv:()=>ni,navigator:()=>ei,origin:()=>ri}),$r=typeof window<`u`&&typeof document<`u`,ei=typeof navigator==`object`&&navigator||void 0,ti=$r&&(!ei||[`ReactNative`,`NativeScript`,`NS`].indexOf(ei.product)<0),ni=typeof WorkerGlobalScope<`u`&&self instanceof WorkerGlobalScope&&typeof self.importScripts==`function`,ri=$r&&window.location.href||`http://localhost`,ii={...Qr,...Zr};function ai(e,t){return Ur(e,new ii.classes.URLSearchParams,{visitor:function(e,t,n,r){return ii.isNode&&L.isBuffer(e)?(this.append(t,e.toString(`base64`)),!1):r.defaultVisitor.apply(this,arguments)},...t})}var oi=100;function si(e){if(e>oi)throw new R(`FormData field is too deeply nested (`+e+` levels). Max depth: `+oi,R.ERR_FORM_DATA_DEPTH_EXCEEDED)}function ci(e){let t=[],n=/\w+|\[(\w*)]/g,r;for(;(r=n.exec(e))!==null;)si(t.length),t.push(r[0]===`[]`?``:r[1]||r[0]);return t}function li(e){let t={},n=Object.keys(e),r,i=n.length,a;for(r=0;r=e.length;return a=!a&&L.isArray(r)?r.length:a,s?(L.hasOwnProp(r,a)?r[a]=L.isArray(r[a])?r[a].concat(n):[r[a],n]:r[a]=n,!o):((!L.hasOwnProp(r,a)||!L.isObject(r[a]))&&(r[a]=[]),t(e,n,r[a],i)&&L.isArray(r[a])&&(r[a]=li(r[a])),!o)}if(L.isFormData(e)&&L.isFunction(e.entries)){let n={};return L.forEachEntry(e,(e,r)=>{t(ci(e),r,n,0)}),n}return null}var di=(e,t)=>e!=null&&L.hasOwnProp(e,t)?e[t]:void 0;function fi(e,t,n){if(L.isString(e))try{return(t||JSON.parse)(e),L.trim(e)}catch(e){if(e.name!==`SyntaxError`)throw e}return(n||JSON.stringify)(e)}var pi={transitional:Xr,adapter:[`xhr`,`http`,`fetch`],transformRequest:[function(e,t){let n=t.getContentType()||``,r=n.indexOf(`application/json`)>-1,i=L.isObject(e);if(i&&L.isHTMLForm(e)&&(e=new FormData(e)),L.isFormData(e))return r?JSON.stringify(ui(e)):e;if(L.isArrayBuffer(e)||L.isBuffer(e)||L.isStream(e)||L.isFile(e)||L.isBlob(e)||L.isReadableStream(e))return e;if(L.isArrayBufferView(e))return e.buffer;if(L.isURLSearchParams(e))return t.setContentType(`application/x-www-form-urlencoded;charset=utf-8`,!1),e.toString();let a;if(i){let t=di(this,`formSerializer`);if(n.indexOf(`application/x-www-form-urlencoded`)>-1)return ai(e,t).toString();if((a=L.isFileList(e))||n.indexOf(`multipart/form-data`)>-1){let n=di(this,`env`),r=n&&n.FormData;return Ur(a?{"files[]":e}:e,r&&new r,t)}}return i||r?(t.setContentType(`application/json`,!1),fi(e)):e}],transformResponse:[function(e){let t=di(this,`transitional`)||pi.transitional,n=t&&t.forcedJSONParsing,r=di(this,`responseType`),i=r===`json`;if(L.isResponse(e)||L.isReadableStream(e))return e;if(e&&L.isString(e)&&(n&&!r||i)){let n=!(t&&t.silentJSONParsing)&&i;try{return JSON.parse(e,di(this,`parseReviver`))}catch(e){if(n)throw e.name===`SyntaxError`?R.from(e,R.ERR_BAD_RESPONSE,this,null,di(this,`response`)):e}}return e}],timeout:0,xsrfCookieName:`XSRF-TOKEN`,xsrfHeaderName:`X-XSRF-TOKEN`,maxContentLength:-1,maxBodyLength:-1,env:{FormData:ii.classes.FormData,Blob:ii.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:`application/json, text/plain, */*`,"Content-Type":void 0}}};L.forEach([`delete`,`get`,`head`,`post`,`put`,`patch`,`query`],e=>{pi.headers[e]={}});function mi(e,t){let n=this||pi,r=t||n,i=Pr.from(r.headers),a=r.data;return L.forEach(e,function(e){a=e.call(n,a,i.normalize(),t?t.status:void 0)}),i.normalize(),a}function hi(e){return!!(e&&e.__CANCEL__)}var gi=class extends R{constructor(e,t,n){super(e??`canceled`,R.ERR_CANCELED,t,n),this.name=`CanceledError`,this.__CANCEL__=!0}};function _i(e,t,n){let r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new R(`Request failed with status code `+n.status,n.status>=400&&n.status<500?R.ERR_BAD_REQUEST:R.ERR_BAD_RESPONSE,n.config,n.request,n))}function vi(e){let t=/^([-+\w]{1,25}):(?:\/\/)?/.exec(e);return t&&t[1]||``}function yi(e,t){e||=10;let n=Array(e),r=Array(e),i=0,a=0,o;return t=t===void 0?1e3:t,function(s){let c=Date.now(),l=r[a];o||=c,n[i]=s,r[i]=c;let u=a,d=0;for(;u!==i;)d+=n[u++],u%=e;if(i=(i+1)%e,i===a&&(a=(a+1)%e),c-o{n=r,i=null,a&&=(clearTimeout(a),null),e(...t)};return[(...e)=>{let t=Date.now(),s=t-n;s>=r?o(e,t):(i=e,a||=setTimeout(()=>{a=null,o(i)},r-s))},()=>i&&o(i)]}var xi=(e,t,n=3)=>{let r=0,i=yi(50,250);return bi(n=>{if(!n||typeof n.loaded!=`number`)return;let a=n.loaded,o=n.lengthComputable?n.total:void 0,s=o==null?a:Math.min(a,o),c=Math.max(0,s-r),l=i(c);r=Math.max(r,s),e({loaded:s,total:o,progress:o?s/o:void 0,bytes:c,rate:l||void 0,estimated:l&&o?(o-s)/l:void 0,event:n,lengthComputable:o!=null,[t?`download`:`upload`]:!0})},n)},Si=(e,t)=>{let n=e!=null;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},Ci=e=>(...t)=>L.asap(()=>e(...t)),wi=ii.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,ii.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(ii.origin),ii.navigator&&/(msie|trident)/i.test(ii.navigator.userAgent)):()=>!0,Ti=ii.hasStandardBrowserEnv?{write(e,t,n,r,i,a,o){if(typeof document>`u`)return;let s=[`${e}=${encodeURIComponent(t)}`];L.isNumber(n)&&s.push(`expires=${new Date(n).toUTCString()}`),L.isString(r)&&s.push(`path=${r}`),L.isString(i)&&s.push(`domain=${i}`),a===!0&&s.push(`secure`),L.isString(o)&&s.push(`SameSite=${o}`),document.cookie=s.join(`; `)},read(e){if(typeof document>`u`)return null;let t=document.cookie.split(`;`);for(let n=0;ne instanceof Pr?{...e}:e;function B(e,t){e||={},t||={};let n=Object.create(null);Object.defineProperty(n,"hasOwnProperty",{__proto__:null,value:Object.prototype.hasOwnProperty,enumerable:!1,writable:!0,configurable:!0});function r(e,t,n,r){return L.isPlainObject(e)&&L.isPlainObject(t)?L.merge.call({caseless:r},e,t):L.isPlainObject(t)?L.merge({},t):L.isArray(t)?t.slice():t}function i(e,t,n,i){if(!L.isUndefined(t))return r(e,t,n,i);if(!L.isUndefined(e))return r(void 0,e,n,i)}function a(e,t){if(!L.isUndefined(t))return r(void 0,t)}function o(e,t){if(!L.isUndefined(t))return r(void 0,t);if(!L.isUndefined(e))return r(void 0,e)}function s(n){let r=L.hasOwnProp(t,`transitional`)?t.transitional:void 0;if(!L.isUndefined(r))if(L.isPlainObject(r)){if(L.hasOwnProp(r,n))return r[n]}else return;let i=L.hasOwnProp(e,`transitional`)?e.transitional:void 0;if(L.isPlainObject(i)&&L.hasOwnProp(i,n))return i[n]}function c(n,i,a){if(L.hasOwnProp(t,a))return r(n,i);if(L.hasOwnProp(e,a))return r(void 0,n)}let l={url:a,method:a,data:a,baseURL:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,withXSRFToken:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,beforeRedirect:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,allowedSocketPaths:o,responseEncoding:o,validateStatus:c,headers:(e,t,n)=>i(z(e),z(t),n,!0)};return L.forEach(Object.keys({...e,...t}),function(r){if(r===`__proto__`||r===`constructor`||r===`prototype`)return;let a=L.hasOwnProp(l,r)?l[r]:i,o=a(L.hasOwnProp(e,r)?e[r]:void 0,L.hasOwnProp(t,r)?t[r]:void 0,r);L.isUndefined(o)&&a!==c||(n[r]=o)}),L.hasOwnProp(t,`validateStatus`)&&L.isUndefined(t.validateStatus)&&s(`validateStatusUndefinedResolves`)===!1&&(L.hasOwnProp(e,`validateStatus`)?n.validateStatus=r(void 0,e.validateStatus):delete n.validateStatus),n}var Pi=[`content-type`,`content-length`];function Fi(e,t,n){if(n!==`content-only`){e.set(t);return}Object.entries(t||{}).forEach(([t,n])=>{Pi.includes(t.toLowerCase())&&e.set(t,n)})}var Ii=e=>encodeURIComponent(e).replace(/%([0-9A-F]{2})/gi,(e,t)=>String.fromCharCode(parseInt(t,16)));function Li(e){let t=B({},e),n=e=>L.hasOwnProp(t,e)?t[e]:void 0,r=n(`data`),i=n(`withXSRFToken`),a=n(`xsrfHeaderName`),o=n(`xsrfCookieName`),s=n(`headers`),c=n(`auth`),l=n(`baseURL`),u=n(`allowAbsoluteUrls`),d=n(`url`);if(t.headers=s=Pr.from(s),t.url=Jr(Ni(l,d,u,t),n(`params`),n(`paramsSerializer`)),c){let t=L.getSafeProp(c,`username`)||``,n=L.getSafeProp(c,`password`)||``;try{s.set(`Authorization`,`Basic `+btoa(t+`:`+(n?Ii(n):``)))}catch(t){throw R.from(t,R.ERR_BAD_OPTION_VALUE,e)}}if(L.isFormData(r)&&(ii.hasStandardBrowserEnv||ii.hasStandardBrowserWebWorkerEnv||L.isReactNative(r)?s.setContentType(void 0):L.isFunction(r.getHeaders)&&Fi(s,r.getHeaders(),n(`formDataHeaderPolicy`))),ii.hasStandardBrowserEnv&&(L.isFunction(i)&&(i=i(t)),i===!0||i==null&&wi(t.url))){let e=a&&o&&Ti.read(o);e&&s.set(a,e)}return t}var Ri=typeof XMLHttpRequest<`u`&&function(e){return new Promise(function(t,n){let r=Li(e),i=r.data,a=Pr.from(r.headers).normalize(),{responseType:o,onUploadProgress:s,onDownloadProgress:c}=r,l,u,d,f,p;function m(){f&&f(),p&&p(),r.cancelToken&&r.cancelToken.unsubscribe(l),r.signal&&r.signal.removeEventListener(`abort`,l)}let h=new XMLHttpRequest;h.open(r.method.toUpperCase(),r.url,!0),h.timeout=r.timeout;function g(){if(!h)return;let r=Pr.from(`getAllResponseHeaders`in h&&h.getAllResponseHeaders());_i(function(e){t(e),m()},function(e){n(e),m()},{data:!o||o===`text`||o===`json`?h.responseText:h.response,status:h.status,statusText:h.statusText,headers:r,config:e,request:h}),h=null}`onloadend`in h?h.onloadend=g:h.onreadystatechange=function(){!h||h.readyState!==4||h.status===0&&!(h.responseURL&&h.responseURL.startsWith(`file:`))||setTimeout(g)},h.onabort=function(){h&&=(n(new R(`Request aborted`,R.ECONNABORTED,e,h)),m(),null)},h.onerror=function(t){let r=new R(t&&t.message?t.message:`Network Error`,R.ERR_NETWORK,e,h);r.event=t||null,n(r),m(),h=null},h.ontimeout=function(){let t=r.timeout?`timeout of `+r.timeout+`ms exceeded`:`timeout exceeded`,i=r.transitional||Xr;r.timeoutErrorMessage&&(t=r.timeoutErrorMessage),n(new R(t,i.clarifyTimeoutError?R.ETIMEDOUT:R.ECONNABORTED,e,h)),m(),h=null},i===void 0&&a.setContentType(null),`setRequestHeader`in h&&L.forEach(Tr(a),function(e,t){h.setRequestHeader(t,e)}),L.isUndefined(r.withCredentials)||(h.withCredentials=!!r.withCredentials),o&&o!==`json`&&(h.responseType=r.responseType),c&&([d,p]=xi(c,!0),h.addEventListener(`progress`,d)),s&&h.upload&&([u,f]=xi(s),h.upload.addEventListener(`progress`,u),h.upload.addEventListener(`loadend`,f)),(r.cancelToken||r.signal)&&(l=t=>{h&&=(n(!t||t.type?new gi(null,e,h):t),h.abort(),m(),null)},r.cancelToken&&r.cancelToken.subscribe(l),r.signal&&(r.signal.aborted?l():r.signal.addEventListener(`abort`,l)));let _=vi(r.url);if(_&&!ii.protocols.includes(_)){n(new R(`Unsupported protocol `+_+`:`,R.ERR_BAD_REQUEST,e)),m();return}h.send(i||null)})},zi=(e,t)=>{if(e=e?e.filter(Boolean):[],!t&&!e.length)return;let n=new AbortController,r=!1,i=function(e){if(!r){r=!0,o();let t=e instanceof Error?e:this.reason;n.abort(t instanceof R?t:new gi(t instanceof Error?t.message:t))}},a=t&&setTimeout(()=>{a=null,i(new R(`timeout of ${t}ms exceeded`,R.ETIMEDOUT))},t),o=()=>{e&&=(a&&clearTimeout(a),a=null,e.forEach(e=>{e.unsubscribe?e.unsubscribe(i):e.removeEventListener(`abort`,i)}),null)};e.forEach(e=>e.addEventListener(`abort`,i,{once:!0}));let{signal:s}=n;return s.unsubscribe=()=>L.asap(o),s},Bi=function*(e,t){let n=e.byteLength;if(!t||n{let i=Vi(e,t),a=0,o,s=e=>{o||(o=!0,r&&r(e))};return new ReadableStream({async pull(e){try{let{done:t,value:r}=await i.next();if(t){s(),e.close();return}let o=r.byteLength;n&&n(a+=o),e.enqueue(new Uint8Array(r))}catch(e){throw s(e),e}},cancel(e){return s(e),i.return()}},{highWaterMark:2})},Wi=e=>e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102,Gi=(e,t,n)=>t+2e>=2&&r.charCodeAt(e-2)===37&&r.charCodeAt(e-1)===51&&(r.charCodeAt(e)===68||r.charCodeAt(e)===100);i>=0&&(r.charCodeAt(i)===61?(n++,i--):a(i)&&(n++,i-=3)),n===1&&i>=0&&(r.charCodeAt(i)===61||a(i))&&n++;let o=Math.floor(e/4)*3-(n||0);return o>0?o:0}let i=0;for(let e=0,t=r.length;e=55296&&n<=56319&&e+1=56320&&t<=57343?(i+=4,e++):i+=3}else i+=3}return i}var qi=`1.18.1`,Ji=64*1024,{isFunction:Yi}=L,Xi=e=>encodeURIComponent(e).replace(/%([0-9A-F]{2})/gi,(e,t)=>String.fromCharCode(parseInt(t,16))),Zi=e=>{if(!L.isString(e))return e;try{return decodeURIComponent(e)}catch{return e}},Qi=(e,...t)=>{try{return!!e(...t)}catch{return!1}},$i=e=>{let t=e.indexOf(`://`),n=e;return t!==-1&&(n=n.slice(t+3)),n.includes(`@`)||n.includes(`:`)},ea=e=>{let t=L.global!==void 0&&L.global!==null?L.global:globalThis,{ReadableStream:n,TextEncoder:r}=t;e=L.merge.call({skipUndefined:!0},{Request:t.Request,Response:t.Response},e);let{fetch:i,Request:a,Response:o}=e,s=i?Yi(i):typeof fetch==`function`,c=Yi(a),l=Yi(o);if(!s)return!1;let u=s&&Yi(n),d=s&&(typeof r==`function`?(e=>t=>e.encode(t))(new r):async e=>new Uint8Array(await new a(e).arrayBuffer())),f=c&&u&&Qi(()=>{let e=!1,t=new a(ii.origin,{body:new n,method:`POST`,get duplex(){return e=!0,`half`}}),r=t.headers.has(`Content-Type`);return t.body!=null&&t.body.cancel(),e&&!r}),p=l&&u&&Qi(()=>L.isReadableStream(new o(``).body)),m={stream:p&&(e=>e.body)};s&&[`text`,`arrayBuffer`,`blob`,`formData`,`stream`].forEach(e=>{!m[e]&&(m[e]=(t,n)=>{let r=t&&t[e];if(r)return r.call(t);throw new R(`Response type '${e}' is not supported`,R.ERR_NOT_SUPPORT,n)})});let h=async e=>{if(e==null)return 0;if(L.isBlob(e))return e.size;if(L.isSpecCompliantForm(e))return(await new a(ii.origin,{method:`POST`,body:e}).arrayBuffer()).byteLength;if(L.isArrayBufferView(e)||L.isArrayBuffer(e))return e.byteLength;if(L.isURLSearchParams(e)&&(e+=``),L.isString(e))return(await d(e)).byteLength},g=async(e,t)=>L.toFiniteNumber(e.getContentLength())??h(t);return async e=>{let{url:t,method:n,data:s,signal:l,cancelToken:d,timeout:_,onDownloadProgress:v,onUploadProgress:y,responseType:b,headers:x,withCredentials:ee=`same-origin`,fetchOptions:te,maxContentLength:S,maxBodyLength:C}=Li(e),ne=L.isNumber(S)&&S>-1,re=L.isNumber(C)&&C>-1,ie=t=>L.hasOwnProp(e,t)?e[t]:void 0,ae=i||fetch;b=b?(b+``).toLowerCase():`text`;let oe=zi([l,d&&d.toAbortSignal()],_),w=null,T=oe&&oe.unsubscribe&&(()=>{oe.unsubscribe()}),se,ce=null,le=()=>new R(`Request body larger than maxBodyLength limit`,R.ERR_BAD_REQUEST,e,w);try{let i,l=ie(`auth`);if(l&&(i={username:L.getSafeProp(l,`username`)||``,password:L.getSafeProp(l,`password`)||``}),$i(t)){let e=new URL(t,ii.origin);!i&&(e.username||e.password)&&(i={username:Zi(e.username),password:Zi(e.password)}),(e.username||e.password)&&(e.username=``,e.password=``,t=e.href)}if(i&&(x.delete(`authorization`),x.set(`Authorization`,`Basic `+btoa(Xi((i.username||``)+`:`+(i.password||``))))),ne&&typeof t==`string`&&t.startsWith(`data:`)&&Ki(t)>S)throw new R(`maxContentLength size of `+S+` exceeded`,R.ERR_BAD_RESPONSE,e,w);if(re&&n!==`get`&&n!==`head`){let e=await h(s);if(typeof e==`number`&&isFinite(e)&&(se=e,e>C))throw le()}let d=re&&(L.isReadableStream(s)||L.isStream(s)),_=(e,t,n)=>Ui(e,Ji,e=>{if(re&&e>C)throw ce=le();t&&t(e)},n);if(f&&n!==`get`&&n!==`head`&&(y||d)){if(se??=await g(x,s),se!==0||d){let e=new a(t,{method:`POST`,body:s,duplex:`half`}),n;if(L.isFormData(s)&&(n=e.headers.get(`content-type`))&&x.setContentType(n),e.body){let[t,n]=y&&Si(se,xi(Ci(y)))||[];s=_(e.body,t,n)}}}else if(d&&!c&&u&&n!==`get`&&n!==`head`)s=_(s);else if(d&&c&&!f&&n!==`get`&&n!==`head`)throw new R(`Stream request bodies are not supported by the current fetch implementation`,R.ERR_NOT_SUPPORT,e,w);L.isString(ee)||(ee=ee?`include`:`omit`);let E=c&&`credentials`in a.prototype;if(L.isFormData(s)){let e=x.getContentType();e&&/^multipart\/form-data/i.test(e)&&!/boundary=/i.test(e)&&x.delete(`content-type`)}x.set(`User-Agent`,`axios/`+qi,!1);let D={...te,signal:oe,method:n.toUpperCase(),headers:Tr(x.normalize()),body:s,duplex:`half`,credentials:E?ee:void 0};w=c&&new a(t,D);let ue=await(c?ae(w,te):ae(t,D)),de=Pr.from(ue.headers);if(ne){let t=L.toFiniteNumber(de.getContentLength());if(t!=null&&t>S)throw new R(`maxContentLength size of `+S+` exceeded`,R.ERR_BAD_RESPONSE,e,w)}let fe=p&&(b===`stream`||b===`response`);if(p&&ue.body&&(v||ne||fe&&T)){let t={};[`status`,`statusText`,`headers`].forEach(e=>{t[e]=ue[e]});let n=L.toFiniteNumber(de.getContentLength()),[r,i]=v&&Si(n,xi(Ci(v),!0))||[],a=0;ue=new o(Ui(ue.body,Ji,t=>{if(ne&&(a=t,a>S))throw new R(`maxContentLength size of `+S+` exceeded`,R.ERR_BAD_RESPONSE,e,w);r&&r(t)},()=>{i&&i(),T&&T()}),t)}b||=`text`;let O=await m[L.findKey(m,b)||`text`](ue,e);if(ne&&!p&&!fe){let t;if(O!=null&&(typeof O.byteLength==`number`?t=O.byteLength:typeof O.size==`number`?t=O.size:typeof O==`string`&&(t=typeof r==`function`?new r().encode(O).byteLength:O.length)),typeof t==`number`&&t>S)throw new R(`maxContentLength size of `+S+` exceeded`,R.ERR_BAD_RESPONSE,e,w)}return!fe&&T&&T(),await new Promise((t,n)=>{_i(t,n,{data:O,headers:Pr.from(ue.headers),status:ue.status,statusText:ue.statusText,config:e,request:w})})}catch(t){if(T&&T(),oe&&oe.aborted&&oe.reason instanceof R){let n=oe.reason;throw n.config=e,w&&(n.request=w),t!==n&&Object.defineProperty(n,"cause",{__proto__:null,value:t,writable:!0,enumerable:!1,configurable:!0}),n}if(ce)throw w&&!ce.request&&(ce.request=w),ce;if(t instanceof R)throw w&&!t.request&&(t.request=w),t;if(t&&t.name===`TypeError`&&/Load failed|fetch/i.test(t.message)){let n=new R(`Network Error`,R.ERR_NETWORK,e,w,t&&t.response);throw Object.defineProperty(n,"cause",{__proto__:null,value:t.cause||t,writable:!0,enumerable:!1,configurable:!0}),n}throw R.from(t,t&&t.code,e,w,t&&t.response)}}},ta=new Map,na=e=>{let t=e&&e.env||{},{fetch:n,Request:r,Response:i}=t,a=[r,i,n],o=a.length,s,c,l=ta;for(;o--;)s=a[o],c=l.get(s),c===void 0&&l.set(s,c=o?new Map:ea(t)),l=c;return c};na();var ra={http:null,xhr:Ri,fetch:{get:na}};L.forEach(ra,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{__proto__:null,value:t})}catch{}Object.defineProperty(e,"adapterName",{__proto__:null,value:t})}});var ia=e=>`- ${e}`,aa=e=>L.isFunction(e)||e===null||e===!1;function oa(e,t){e=L.isArray(e)?e:[e];let{length:n}=e,r,i,a={};for(let o=0;o`adapter ${e} `+(t===!1?`is not supported by the environment`:`is not available in the build`));throw new R(`There is no suitable adapter to dispatch the request `+(n?e.length>1?`since : -`+e.map(ia).join(` -`):` `+ia(e[0]):`as no adapter specified`),R.ERR_NOT_SUPPORT)}return i}var sa={getAdapter:oa,adapters:ra};function ca(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new gi(null,e)}function la(e){return ca(e),e.headers=Pr.from(e.headers),e.data=mi.call(e,e.transformRequest),[`post`,`put`,`patch`].indexOf(e.method)!==-1&&e.headers.setContentType(`application/x-www-form-urlencoded`,!1),sa.getAdapter(e.adapter||pi.adapter,e)(e).then(function(t){ca(e),e.response=t;try{t.data=mi.call(e,e.transformResponse,t)}finally{delete e.response}return t.headers=Pr.from(t.headers),t},function(t){if(!hi(t)&&(ca(e),t&&t.response)){e.response=t.response;try{t.response.data=mi.call(e,e.transformResponse,t.response)}finally{delete e.response}t.response.headers=Pr.from(t.response.headers)}return Promise.reject(t)})}var ua={};[`object`,`boolean`,`number`,`function`,`string`,`symbol`].forEach((e,t)=>{ua[e]=function(n){return typeof n===e||`a`+(t<1?`n `:` `)+e}});var da={};ua.transitional=function(e,t,n){function r(e,t){return`[Axios v`+qi+`] Transitional option '`+e+`'`+t+(n?`. `+n:``)}return(n,i,a)=>{if(e===!1)throw new R(r(i,` has been removed`+(t?` in `+t:``)),R.ERR_DEPRECATED);return t&&!da[i]&&(da[i]=!0,console.warn(r(i,` has been deprecated since v`+t+` and will be removed in the near future`))),e?e(n,i,a):!0}},ua.spelling=function(e){return(t,n)=>(console.warn(`${n} is likely a misspelling of ${e}`),!0)};function fa(e,t,n){if(typeof e!=`object`||!e)throw new R(`options must be an object`,R.ERR_BAD_OPTION_VALUE);let r=Object.keys(e),i=r.length;for(;i-->0;){let a=r[i],o=Object.prototype.hasOwnProperty.call(t,a)?t[a]:void 0;if(o){let t=e[a],n=t===void 0||o(t,a,e);if(n!==!0)throw new R(`option `+a+` must be `+n,R.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new R(`Unknown option `+a,R.ERR_BAD_OPTION)}}var pa={assertOptions:fa,validators:ua},ma=pa.validators,ha=class{constructor(e){this.defaults=e||{},this.interceptors={request:new Yr,response:new Yr}}async request(e,t){try{return await this._request(e,t)}catch(e){if(e instanceof Error){let t={};Error.captureStackTrace?Error.captureStackTrace(t):t=Error();let n=(()=>{if(!t.stack)return``;let e=t.stack.indexOf(` -`);return e===-1?``:t.stack.slice(e+1)})();try{if(!e.stack)e.stack=n;else if(n){let t=n.indexOf(` -`),r=t===-1?-1:n.indexOf(` -`,t+1),i=r===-1?``:n.slice(r+1);String(e.stack).endsWith(i)||(e.stack+=` -`+n)}}catch{}}throw e}}_request(e,t){typeof e==`string`?(t||={},t.url=e):t=e||{},t=B(this.defaults,t);let{transitional:n,paramsSerializer:r,headers:i}=t;n!==void 0&&pa.assertOptions(n,{silentJSONParsing:ma.transitional(ma.boolean),forcedJSONParsing:ma.transitional(ma.boolean),clarifyTimeoutError:ma.transitional(ma.boolean),legacyInterceptorReqResOrdering:ma.transitional(ma.boolean),advertiseZstdAcceptEncoding:ma.transitional(ma.boolean),validateStatusUndefinedResolves:ma.transitional(ma.boolean)},!1),r!=null&&(L.isFunction(r)?t.paramsSerializer={serialize:r}:pa.assertOptions(r,{encode:ma.function,serialize:ma.function},!0)),t.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls===void 0?t.allowAbsoluteUrls=!0:t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls),pa.assertOptions(t,{baseUrl:ma.spelling(`baseURL`),withXsrfToken:ma.spelling(`withXSRFToken`)},!0),t.method=(t.method||this.defaults.method||`get`).toLowerCase();let a=i&&L.merge(i.common,i[t.method]);i&&L.forEach([`delete`,`get`,`head`,`post`,`put`,`patch`,`query`,`common`],e=>{delete i[e]}),t.headers=Pr.concat(a,i);let o=[],s=!0;this.interceptors.request.forEach(function(e){if(typeof e.runWhen==`function`&&e.runWhen(t)===!1)return;s&&=e.synchronous;let n=t.transitional||Xr;n&&n.legacyInterceptorReqResOrdering?o.unshift(e.fulfilled,e.rejected):o.push(e.fulfilled,e.rejected)});let c=[];this.interceptors.response.forEach(function(e){c.push(e.fulfilled,e.rejected)});let l,u=0,d;if(!s){let e=[la.bind(this),void 0];for(e.unshift(...o),e.push(...c),d=e.length,l=Promise.resolve(t);u{if(!n._listeners)return;let t=n._listeners.length;for(;t-->0;)n._listeners[t](e);n._listeners=null}),this.promise.then=e=>{let t,r=new Promise(e=>{n.subscribe(e),t=e}).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e(function(e,r,i){n.reason||(n.reason=new gi(e,r,i),t(n.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;let t=this._listeners.indexOf(e);t!==-1&&this._listeners.splice(t,1)}toAbortSignal(){let e=new AbortController,t=t=>{e.abort(t)};return this.subscribe(t),e.signal.unsubscribe=()=>this.unsubscribe(t),e.signal}static source(){let t;return{token:new e(function(e){t=e}),cancel:t}}};function _a(e){return function(t){return e.apply(null,t)}}function va(e){return L.isObject(e)&&e.isAxiosError===!0}var ya={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(ya).forEach(([e,t])=>{ya[t]=e});function ba(e){let t=new ha(e),n=en(ha.prototype.request,t);return L.extend(n,ha.prototype,t,{allOwnKeys:!0}),L.extend(n,t,null,{allOwnKeys:!0}),n.create=function(t){return ba(B(e,t))},n}var V=ba(pi);V.Axios=ha,V.CanceledError=gi,V.CancelToken=ga,V.isCancel=hi,V.VERSION=qi,V.toFormData=Ur,V.AxiosError=R,V.Cancel=V.CanceledError,V.all=function(e){return Promise.all(e)},V.spread=_a,V.isAxiosError=va,V.mergeConfig=B,V.AxiosHeaders=Pr,V.formToJSON=e=>ui(L.isHTMLForm(e)?new FormData(e):e),V.getAdapter=sa.getAdapter,V.HttpStatusCode=ya,V.default=V;var xa=`pets_admin_token`,Sa=()=>localStorage.getItem(xa)||``,Ca=e=>localStorage.setItem(xa,e),wa=()=>localStorage.removeItem(xa),Ta=V.create({baseURL:`/api`});Ta.interceptors.request.use(e=>{let t=Sa();return t&&(e.headers.Authorization=`Bearer ${t}`),e}),Ta.interceptors.response.use(e=>{let t=e.data;if(t?.code===0)return t.data;throw Error(t?.message||`请求失败`)},e=>{throw e.response?.status===401&&wa(),Error(e.response?.data?.message||e.message)});var Ea={login:(e,t)=>Ta.post(`/admin/login`,{username:e,password:t}),stats:()=>Ta.get(`/admin/stats`),users:()=>Ta.get(`/admin/users`),pets:()=>Ta.get(`/admin/pets`),walks:()=>Ta.get(`/admin/walks`),meetups:()=>Ta.get(`/admin/meetups`),setUserDisabled:(e,t)=>Ta.put(`/admin/users/${e}/disabled`,{disabled:t}),setMeetupStatus:(e,t)=>Ta.put(`/admin/meetups/${e}/status`,{status:t})},Da={overview:`总览`,users:`用户`,pets:`宠物`,walks:`遛狗记录`,meetups:`约遛活动`},Oa={overview:T,users:le,pets:T,walks:ce,meetups:oe},ka=e=>e?new Date(e).toLocaleString(`zh-CN`):`—`;function Aa(){let[e,t]=(0,v.useState)(Sa()),[n,r]=(0,v.useState)(`sundynix`),[i,a]=(0,v.useState)(``),[o,s]=(0,v.useState)(`overview`),[c,l]=(0,v.useState)([]),[u,d]=(0,v.useState)({}),[f,p]=(0,v.useState)(``),[m,h]=(0,v.useState)(!1);async function g(){h(!0),p(``);try{o===`overview`?d(await Ea.stats()):l(await Ea[o]())}catch(e){p(e.message)}finally{h(!1)}}(0,v.useEffect)(()=>{e&&g()},[o,e]);async function _(e){e.preventDefault(),h(!0),p(``);try{let e=await Ea.login(n,i);Ca(e.token),t(e.token)}catch(e){p(e.message)}finally{h(!1)}}function y(){wa(),t(``),a(``)}async function b(e){try{await Ea.setUserDisabled(e.id,!e.disabled),await g()}catch(e){p(e.message)}}async function x(e){if(window.confirm(`取消「${e.title}」?`))try{await Ea.setMeetupStatus(e.id,`cancelled`),await g()}catch(e){p(e.message)}}return e?(0,I.jsxs)(`div`,{className:`app-shell`,children:[(0,I.jsxs)(`aside`,{className:`sidebar`,children:[(0,I.jsxs)(`div`,{className:`brand`,children:[(0,I.jsx)(`span`,{children:`🐾`}),(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`strong`,{children:`肉垫计划`}),(0,I.jsx)(`small`,{children:`ADMIN STUDIO`})]})]}),(0,I.jsx)(`p`,{className:`side-caption`,children:`工作台`}),(0,I.jsx)(`nav`,{children:Object.keys(Da).map(e=>{let t=Oa[e];return(0,I.jsxs)(`button`,{className:o===e?`nav-item active`:`nav-item`,onClick:()=>s(e),children:[(0,I.jsx)(t,{size:18}),Da[e]]},e)})}),(0,I.jsxs)(`div`,{className:`side-bottom`,children:[(0,I.jsx)(`span`,{children:`让每次出门都值得记录`}),(0,I.jsxs)(`button`,{onClick:y,children:[(0,I.jsx)(w,{size:16}),` 退出登录`]})]})]}),(0,I.jsxs)(`main`,{className:`content`,children:[(0,I.jsxs)(`header`,{className:`topbar`,children:[(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`p`,{className:`eyebrow`,children:`PAWPRINT DASHBOARD`}),(0,I.jsx)(`h1`,{children:Da[o]})]}),(0,I.jsxs)(Qt,{variant:`outline`,onClick:()=>void g(),disabled:m,children:[(0,I.jsx)(se,{size:16}),` 刷新`]})]}),f&&(0,I.jsx)(`div`,{className:`error-banner`,children:f}),o===`overview`?(0,I.jsxs)(I.Fragment,{children:[(0,I.jsxs)(`div`,{className:`hero`,children:[(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`p`,{children:`每一段陪伴,都有迹可循`}),(0,I.jsx)(`h2`,{children:`你好,铲屎官管理者 👋`}),(0,I.jsx)(`span`,{children:`这里汇总肉垫计划的日常活动。`})]}),(0,I.jsx)(`div`,{className:`hero-paw`,children:`🐕`})]}),(0,I.jsx)(`div`,{className:`stat-grid`,children:[[`users`,`注册用户`,`👥`],[`pets`,`宠物档案`,`🐶`],[`walks`,`遛狗记录`,`🐾`],[`meetups`,`约遛活动`,`🌿`]].map(([e,t,n])=>(0,I.jsxs)(`article`,{className:`stat-card`,children:[(0,I.jsx)(`div`,{className:`stat-icon`,children:n}),(0,I.jsx)(`span`,{children:t}),(0,I.jsx)(`strong`,{children:u[e]??`—`})]},e))})]}):(0,I.jsxs)(`section`,{className:`table-card`,children:[(0,I.jsxs)(`div`,{className:`table-head`,children:[(0,I.jsx)(`h2`,{children:Da[o]}),(0,I.jsxs)(`p`,{children:[`最近 `,c.length,` 条记录`]})]}),(0,I.jsxs)(`div`,{className:`table-scroll`,children:[(0,I.jsxs)(`table`,{children:[(0,I.jsx)(`thead`,{children:(0,I.jsx)(`tr`,{children:o===`users`?(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`th`,{children:`用户`}),(0,I.jsx)(`th`,{children:`注册时间`}),(0,I.jsx)(`th`,{children:`状态`}),(0,I.jsx)(`th`,{children:`操作`})]}):o===`pets`?(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`th`,{children:`宠物`}),(0,I.jsx)(`th`,{children:`品种`}),(0,I.jsx)(`th`,{children:`主人 ID`}),(0,I.jsx)(`th`,{children:`状态`})]}):o===`walks`?(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`th`,{children:`记录 ID`}),(0,I.jsx)(`th`,{children:`用户 ID`}),(0,I.jsx)(`th`,{children:`开始时间`}),(0,I.jsx)(`th`,{children:`距离`}),(0,I.jsx)(`th`,{children:`状态`})]}):(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`th`,{children:`活动`}),(0,I.jsx)(`th`,{children:`地点`}),(0,I.jsx)(`th`,{children:`时间`}),(0,I.jsx)(`th`,{children:`人数`}),(0,I.jsx)(`th`,{children:`状态`}),(0,I.jsx)(`th`,{children:`操作`})]})})}),(0,I.jsx)(`tbody`,{children:c.map(e=>(0,I.jsx)(`tr`,{children:o===`users`?(0,I.jsxs)(I.Fragment,{children:[(0,I.jsxs)(`td`,{children:[(0,I.jsx)(`b`,{children:e.nickname}),(0,I.jsx)(`small`,{children:e.id})]}),(0,I.jsx)(`td`,{children:ka(e.created_at)}),(0,I.jsx)(`td`,{children:(0,I.jsx)(`span`,{className:`pill `+(e.disabled?`red`:`green`),children:e.disabled?`已停用`:`正常`})}),(0,I.jsx)(`td`,{children:(0,I.jsx)(Qt,{variant:`outline`,size:`sm`,onClick:()=>void b(e),children:e.disabled?`启用`:`停用`})})]}):o===`pets`?(0,I.jsxs)(I.Fragment,{children:[(0,I.jsxs)(`td`,{children:[(0,I.jsx)(`b`,{children:e.name}),(0,I.jsx)(`small`,{children:e.id})]}),(0,I.jsx)(`td`,{children:e.breed||e.species}),(0,I.jsx)(`td`,{className:`mono`,children:e.user_id}),(0,I.jsx)(`td`,{children:(0,I.jsx)(`span`,{className:`pill `+(e.archived?`red`:`green`),children:e.archived?`已归档`:`在用`})})]}):o===`walks`?(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`td`,{className:`mono`,children:e.id}),(0,I.jsx)(`td`,{className:`mono`,children:e.user_id}),(0,I.jsx)(`td`,{children:ka(e.started_at)}),(0,I.jsxs)(`td`,{children:[(e.distance_meters/1e3).toFixed(2),` km`]}),(0,I.jsx)(`td`,{children:(0,I.jsx)(`span`,{className:`pill green`,children:e.status})})]}):(0,I.jsxs)(I.Fragment,{children:[(0,I.jsxs)(`td`,{children:[(0,I.jsx)(`b`,{children:e.title}),(0,I.jsx)(`small`,{children:e.id})]}),(0,I.jsx)(`td`,{children:e.place_name}),(0,I.jsx)(`td`,{children:ka(e.starts_at)}),(0,I.jsxs)(`td`,{children:[e.participants,`/`,e.max_people]}),(0,I.jsx)(`td`,{children:(0,I.jsx)(`span`,{className:`pill `+(e.status===`open`?`green`:`red`),children:e.status})}),(0,I.jsx)(`td`,{children:e.status===`open`&&(0,I.jsx)(Qt,{variant:`outline`,size:`sm`,onClick:()=>void x(e),children:`取消`})})]})},e.id))})]}),c.length===0&&(0,I.jsx)(`div`,{className:`empty`,children:`还没有记录,新的足迹会出现在这里 🐾`})]})]})]})]}):(0,I.jsx)(`main`,{className:`login-page`,children:(0,I.jsxs)(`form`,{className:`login-card`,onSubmit:_,children:[(0,I.jsx)(`div`,{className:`login-mark`,children:`🐾`}),(0,I.jsx)(`p`,{className:`eyebrow`,children:`肉垫计划 · 管理端`}),(0,I.jsx)(`h1`,{children:`欢迎回来`}),(0,I.jsx)(`p`,{className:`muted`,children:`照顾每一只小短腿的快乐日常。`}),(0,I.jsxs)(`label`,{children:[`用户名`,(0,I.jsx)($t,{value:n,onChange:e=>r(e.target.value),required:!0})]}),(0,I.jsxs)(`label`,{children:[`密码`,(0,I.jsx)($t,{type:`password`,value:i,onChange:e=>a(e.target.value),required:!0})]}),f&&(0,I.jsx)(`p`,{className:`error`,children:f}),(0,I.jsx)(Qt,{disabled:m,className:`w-full`,children:`登录管理后台`})]})})}(0,y.createRoot)(document.getElementById(`root`)).render((0,I.jsx)(v.StrictMode,{children:(0,I.jsx)(Aa,{})})); \ No newline at end of file diff --git a/pets-be/internal/admin/dist/assets/index-DkKuSusU.js b/pets-be/internal/admin/dist/assets/index-DkKuSusU.js new file mode 100644 index 0000000..b1b2ff8 --- /dev/null +++ b/pets-be/internal/admin/dist/assets/index-DkKuSusU.js @@ -0,0 +1,57 @@ +var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;li[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,a)=>(a=n==null?{}:e(i(n)),c(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var u=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var S=Array.isArray;function C(){}var w={H:null,A:null,T:null,S:null},T=Object.prototype.hasOwnProperty;function ee(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function te(e,t){return ee(e.type,t,e.props)}function ne(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function E(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var re=/\/+/g;function D(e,t){return typeof e==`object`&&e&&e.key!=null?E(``+e.key):t.toString(36)}function O(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(C,C):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function ie(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,ie(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+D(e,0):a,S(o)?(i=``,c!=null&&(i=c.replace(re,`$&/`)+`/`),ie(o,r,i,``,function(e){return e})):o!=null&&(ne(o)&&(o=te(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(re,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(S(e))for(var u=0;u{t.exports=u()})),f=o((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0>>1,a=e[r];if(0>>1;ri(c,n))li(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(li(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m)if(n(c)!==null)m=!0,S||(S=!0,ne());else{var t=n(l);t!==null&&D(x,t.startTime-e)}}var S=!1,C=-1,w=5,T=-1;function ee(){return g?!0:!(e.unstable_now()-Tt&&ee());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&D(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?ne():S=!1}}}var ne;if(typeof y==`function`)ne=function(){y(te)};else if(typeof MessageChannel<`u`){var E=new MessageChannel,re=E.port2;E.port1.onmessage=te,ne=function(){re.postMessage(null)}}else ne=function(){_(te,0)};function D(t,n){C=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(C),C=-1):h=!0,D(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,S||(S=!0,ne()))),r},e.unstable_shouldYield=ee,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),p=o(((e,t)=>{t.exports=f()})),m=o((e=>{var t=d();function n(e){var t=`https://react.dev/errors/`+e;if(1{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=m()})),g=o((e=>{var t=p(),n=d(),r=h();function i(e){var t=`https://react.dev/errors/`+e;if(1le||(e.current=ce[le],ce[le]=null,le--)}function N(e,t){le++,ce[le]=e.current,e.current=t}var ue=j(null),de=j(null),fe=j(null),pe=j(null);function me(e,t){switch(N(fe,t),N(de,e),N(ue,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Vd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Vd(t),e=Hd(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}M(ue),N(ue,e)}function he(){M(ue),M(de),M(fe)}function ge(e){e.memoizedState!==null&&N(pe,e);var t=ue.current,n=Hd(t,e.type);t!==n&&(N(de,e),N(ue,n))}function _e(e){de.current===e&&(M(ue),M(de)),pe.current===e&&(M(pe),Qf._currentValue=se)}var ve,ye;function be(e){if(ve===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);ve=t&&t[1]||``,ye=-1)`:-1i||c[r]!==l[i]){var u=` +`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(``)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{xe=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?be(n):``}function Ce(e,t){switch(e.tag){case 26:case 27:case 5:return be(e.type);case 16:return be(`Lazy`);case 13:return e.child!==t&&t!==null?be(`Suspense Fallback`):be(`Suspense`);case 19:return be(`SuspenseList`);case 0:case 15:return Se(e.type,!1);case 11:return Se(e.type.render,!1);case 1:return Se(e.type,!0);case 31:return be(`Activity`);default:return``}}function we(e){try{var t=``,n=null;do t+=Ce(e,n),n=e,e=e.return;while(e);return t}catch(e){return` +Error generating stack: `+e.message+` +`+e.stack}}var Te=Object.prototype.hasOwnProperty,Ee=t.unstable_scheduleCallback,De=t.unstable_cancelCallback,Oe=t.unstable_shouldYield,ke=t.unstable_requestPaint,Ae=t.unstable_now,je=t.unstable_getCurrentPriorityLevel,Me=t.unstable_ImmediatePriority,Ne=t.unstable_UserBlockingPriority,Pe=t.unstable_NormalPriority,Fe=t.unstable_LowPriority,Ie=t.unstable_IdlePriority,Le=t.log,Re=t.unstable_setDisableYieldValue,ze=null,Be=null;function Ve(e){if(typeof Le==`function`&&Re(e),Be&&typeof Be.setStrictMode==`function`)try{Be.setStrictMode(ze,e)}catch{}}var He=Math.clz32?Math.clz32:Ge,Ue=Math.log,We=Math.LN2;function Ge(e){return e>>>=0,e===0?32:31-(Ue(e)/We|0)|0}var Ke=256,qe=262144,Je=4194304;function Ye(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Xe(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=Ye(n))):i=Ye(o):i=Ye(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=Ye(n))):i=Ye(o)):i=Ye(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function Ze(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Qe(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function $e(){var e=Je;return Je<<=1,!(Je&62914560)&&(Je=4194304),e}function et(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function tt(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function nt(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0`u`||window.document===void 0||window.document.createElement===void 0),dn=!1;if(un)try{var fn={};Object.defineProperty(fn,"passive",{get:function(){dn=!0}}),window.addEventListener(`test`,fn,fn),window.removeEventListener(`test`,fn,fn)}catch{dn=!1}var pn=null,mn=null,hn=null;function gn(){if(hn)return hn;var e,t=mn,n=t.length,r,i=`value`in pn?pn.value:pn.textContent,a=i.length;for(e=0;e=Jn),Zn=` `,Qn=!1;function $n(e,t){switch(e){case`keyup`:return Kn.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function er(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var tr=!1;function nr(e,t){switch(e){case`compositionend`:return er(t);case`keypress`:return t.which===32?(Qn=!0,Zn):null;case`textInput`:return e=t.data,e===Zn&&Qn?null:e;default:return null}}function rr(e,t){if(tr)return e===`compositionend`||!qn&&$n(e,t)?(e=gn(),hn=mn=pn=null,tr=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=Tr(n)}}function Dr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Dr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Or(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=zt(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=zt(e.document)}return t}function kr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var Ar=un&&`documentMode`in document&&11>=document.documentMode,jr=null,Mr=null,Nr=null,Pr=!1;function Fr(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Pr||jr==null||jr!==zt(r)||(r=jr,`selectionStart`in r&&kr(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Nr&&wr(Nr,r)||(Nr=r,r=Ed(Mr,`onSelect`),0>=o,i-=o,Di=1<<32-He(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),z&&ki(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(a,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(a,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(a,h),z&&ki(a,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return z&&ki(a,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,a,g,v.value,l),v!==null&&(e&&v.alternate!==null&&h.delete(v.key===null?g:v.key),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(a,e)}),z&&ki(a,g),u}function b(e,r,o,c){if(typeof o==`object`&&o&&o.type===y&&o.key===null&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case _:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===y){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===ne&&Oa(l)===r.type){n(e,r.sibling),c=a(r,o.props),Fa(c,o),c.return=e,e=c;break a}n(e,r);break}else t(e,r);r=r.sibling}o.type===y?(c=mi(o.props.children,e.mode,c,o.key),c.return=e,e=c):(c=pi(o.type,o.key,o.props,null,e.mode,c),Fa(c,o),c.return=e,e=c)}return s(e);case v:a:{for(l=o.key;r!==null;){if(r.key===l)if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}else{n(e,r);break}else t(e,r);r=r.sibling}c=_i(o,e.mode,c),c.return=e,e=c}return s(e);case ne:return o=Oa(o),b(e,r,o,c)}if(oe(o))return h(e,r,o,c);if(O(o)){if(l=O(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return b(e,r,Pa(o),c);if(o.$$typeof===C)return b(e,r,na(e,o),c);Ia(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=a(r,o),c.return=e,e=c):(n(e,r),c=hi(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{Na=0;var i=b(e,t,n,r);return Ma=null,i}catch(t){if(t===Sa||t===wa)throw t;var a=li(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var Ra=La(!0),za=La(!1),Ba=!1;function Va(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Ha(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Ua(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Wa(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,K&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=oi(e),ai(e,null,n),t}return ni(e,r,t,n),oi(e)}function Ga(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,it(e,n)}}function Ka(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var qa=!1;function Ja(){if(qa){var e=pa;if(e!==null)throw e}}function Ya(e,t,n,r){qa=!1;var i=e.updateQueue;Ba=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(Y&f)===f:(r&f)===f){f!==0&&f===fa&&(qa=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var h=e,g=s;f=t;var _=n;switch(g.tag){case 1:if(h=g.payload,typeof h==`function`){d=h.call(_,d,f);break a}d=h;break a;case 3:h.flags=h.flags&-65537|128;case 0:if(h=g.payload,f=typeof h==`function`?h.call(_,d,f):h,f==null)break a;d=m({},d,f);break a;case 2:Ba=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),Gl|=o,e.lanes=o,e.memoizedState=d}}function Xa(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function Za(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=k.T,s={};k.T=s,Ps(e,!1,t,n);try{var c=i(),l=k.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?Ns(e,t,ga(c,r),pu(e)):Ns(e,t,r,pu(e))}catch(n){Ns(e,t,{then:function(){},status:`rejected`,reason:n},pu())}finally{A.p=a,o!==null&&s.types!==null&&(o.types=s.types),k.T=o}}function Cs(){}function ws(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=Ts(e).queue;Ss(e,a,t,se,n===null?Cs:function(){return Es(e),n(r)})}function Ts(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:se,baseState:se,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Io,lastRenderedState:se},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Io,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function Es(e){var t=Ts(e);t.next===null&&(t=e.alternate.memoizedState),Ns(e,t.next.queue,{},pu())}function Ds(){return ta(Qf)}function Os(){return jo().memoizedState}function ks(){return jo().memoizedState}function As(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=pu();e=Ua(n);var r=Wa(t,e,n);r!==null&&(hu(r,t,n),Ga(r,t,n)),t={cache:ca()},e.payload=t;return}t=t.return}}function js(e,t,n){var r=pu();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},Fs(e)?Is(t,n):(n=ri(e,t,n,r),n!==null&&(hu(n,e,r),Ls(n,t,r)))}function Ms(e,t,n){Ns(e,t,n,pu())}function Ns(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(Fs(e))Is(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,Cr(s,o))return ni(e,t,i,0),q===null&&ti(),!1}catch{}if(n=ri(e,t,i,r),n!==null)return hu(n,e,r),Ls(n,t,r),!0}return!1}function Ps(e,t,n,r){if(r={lane:2,revertLane:dd(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},Fs(e)){if(t)throw Error(i(479))}else t=ri(e,n,r,2),t!==null&&hu(t,e,2)}function Fs(e){var t=e.alternate;return e===B||t!==null&&t===B}function Is(e,t){go=ho=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Ls(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,it(e,n)}}var Rs={readContext:ta,use:Po,useCallback:So,useContext:So,useEffect:So,useImperativeHandle:So,useLayoutEffect:So,useInsertionEffect:So,useMemo:So,useReducer:So,useRef:So,useState:So,useDebugValue:So,useDeferredValue:So,useTransition:So,useSyncExternalStore:So,useId:So,useHostTransitionStatus:So,useFormState:So,useActionState:So,useOptimistic:So,useMemoCache:So,useCacheRefresh:So};Rs.useEffectEvent=So;var zs={readContext:ta,use:Po,useCallback:function(e,t){return Ao().memoizedState=[e,t===void 0?null:t],e},useContext:ta,useEffect:ls,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),ss(4194308,4,hs.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ss(4194308,4,e,t)},useInsertionEffect:function(e,t){ss(4,2,e,t)},useMemo:function(e,t){var n=Ao();t=t===void 0?null:t;var r=e();if(_o){Ve(!0);try{e()}finally{Ve(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=Ao();if(n!==void 0){var i=n(t);if(_o){Ve(!0);try{n(t)}finally{Ve(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=js.bind(null,B,e),[r.memoizedState,e]},useRef:function(e){var t=Ao();return e={current:e},t.memoizedState=e},useState:function(e){e=Ko(e);var t=e.queue,n=Ms.bind(null,B,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:_s,useDeferredValue:function(e,t){return bs(Ao(),e,t)},useTransition:function(){var e=Ko(!1);return e=Ss.bind(null,B,e.queue,!0,!1),Ao().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=B,a=Ao();if(z){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),q===null)throw Error(i(349));Y&127||Vo(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,ls(Uo.bind(null,r,o,e),[e]),r.flags|=2048,as(9,{destroy:void 0},Ho.bind(null,r,o,n,t),null),n},useId:function(){var e=Ao(),t=q.identifierPrefix;if(z){var n=Oi,r=Di;n=(r&~(1<<32-He(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=vo++,0<\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(a,{is:r.is}):s.createElement(a)}}o[dt]=t,o[ft]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(Pd(o,a,r),a){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&Nc(t)}}return W(t),Pc(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&Nc(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=fe.current,Vi(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=Pi,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[dt]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||Md(e.nodeValue,n)),e||Ri(t,!0)}else e=Bd(e).createTextNode(r),e[dt]=t,t.stateNode=e}return W(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=Vi(t),n!==null){if(e===null){if(!r)throw Error(i(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(557));e[dt]=t}else Hi(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;W(t),e=!1}else n=Ui(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(lo(t),t):(lo(t),null);if(t.flags&128)throw Error(i(558))}return W(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=Vi(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(i(318));if(a=t.memoizedState,a=a===null?null:a.dehydrated,!a)throw Error(i(317));a[dt]=t}else Hi(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;W(t),a=!1}else a=Ui(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(lo(t),t):(lo(t),null)}return lo(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,a=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(a=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Ic(t,t.updateQueue),W(t),null);case 4:return he(),e===null&&Sd(t.stateNode.containerInfo),W(t),null;case 10:return Yi(t.type),W(t),null;case 19:if(M(uo),r=t.memoizedState,r===null)return W(t),null;if(a=(t.flags&128)!=0,o=r.rendering,o===null)if(a)Lc(r,!1);else{if(Wl!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=fo(e),o!==null){for(t.flags|=128,Lc(r,!1),e=o.updateQueue,t.updateQueue=e,Ic(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)fi(n,e),n=n.sibling;return N(uo,uo.current&1|2),z&&ki(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Ae()>tu&&(t.flags|=128,a=!0,Lc(r,!1),t.lanes=4194304)}else{if(!a)if(e=fo(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,Ic(t,e),Lc(r,!0),r.tail===null&&r.tailMode===`hidden`&&!o.alternate&&!z)return W(t),null}else 2*Ae()-r.renderingStartTime>tu&&n!==536870912&&(t.flags|=128,a=!0,Lc(r,!1),t.lanes=4194304);r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}return r.tail===null?(W(t),null):(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Ae(),e.sibling=null,n=uo.current,N(uo,a?n&1|2:n&1),z&&ki(t,r.treeForkCount),e);case 22:case 23:return lo(t),no(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(W(t),t.subtreeFlags&6&&(t.flags|=8192)):W(t),n=t.updateQueue,n!==null&&Ic(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&M(va),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),Yi(sa),W(t),null;case 25:return null;case 30:return null}throw Error(i(156,t.tag))}function zc(e,t){switch(Mi(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Yi(sa),he(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return _e(t),null;case 31:if(t.memoizedState!==null){if(lo(t),t.alternate===null)throw Error(i(340));Hi()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(lo(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));Hi()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return M(uo),null;case 4:return he(),null;case 10:return Yi(t.type),null;case 22:case 23:return lo(t),no(),e!==null&&M(va),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Yi(sa),null;case 25:return null;default:return null}}function Bc(e,t){switch(Mi(t),t.tag){case 3:Yi(sa),he();break;case 26:case 27:case 5:_e(t);break;case 4:he();break;case 31:t.memoizedState!==null&&lo(t);break;case 13:lo(t);break;case 19:M(uo);break;case 10:Yi(t.type);break;case 22:case 23:lo(t),no(),e!==null&&M(va);break;case 24:Yi(sa)}}function Vc(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Z(t,t.return,e)}}function Hc(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Z(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Z(t,t.return,e)}}function Uc(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{Za(t,n)}catch(t){Z(e,e.return,t)}}}function Wc(e,t,n){n.props=Ks(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Z(e,t,n)}}function Gc(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Z(e,t,n)}}function Kc(e,t){var n=e.ref,r=e.refCleanup;if(n!==null)if(typeof r==`function`)try{r()}catch(n){Z(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Z(e,t,n)}else n.current=null}function qc(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{a:switch(t){case`button`:case`input`:case`select`:case`textarea`:n.autoFocus&&r.focus();break a;case`img`:n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(t){Z(e,e.return,t)}}function Jc(e,t,n){try{var r=e.stateNode;Fd(r,e.type,n,t),r[ft]=t}catch(t){Z(e,e.return,t)}}function Yc(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Zd(e.type)||e.tag===4}function Xc(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||Yc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Zd(e.type)||e.flags&2||e.child===null||e.tag===4)continue a;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Zc(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=tn));else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(Zc(e,t,n),e=e.sibling;e!==null;)Zc(e,t,n),e=e.sibling}function Qc(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(Qc(e,t,n),e=e.sibling;e!==null;)Qc(e,t,n),e=e.sibling}function $c(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);Pd(t,r,n),t[dt]=e,t[ft]=n}catch(t){Z(e,e.return,t)}}var el=!1,G=!1,tl=!1,nl=typeof WeakSet==`function`?WeakSet:Set,rl=null;function il(e,t){if(e=e.containerInfo,Rd=sp,e=Or(e),kr(e)){if(`selectionStart`in e)var n={start:e.selectionStart,end:e.selectionEnd};else a:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var a=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break a}var s=0,c=-1,l=-1,u=0,d=0,f=e,p=null;b:for(;;){for(var m;f!==n||a!==0&&f.nodeType!==3||(c=s+a),f!==o||r!==0&&f.nodeType!==3||(l=s+r),f.nodeType===3&&(s+=f.nodeValue.length),(m=f.firstChild)!==null;)p=f,f=m;for(;;){if(f===e)break b;if(p===n&&++u===a&&(c=s),p===o&&++d===r&&(l=s),(m=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=m}n=c===-1||l===-1?null:{start:c,end:l}}else n=null}n||={start:0,end:0}}else n=null;for(zd={focusedElem:e,selectionRange:n},sp=!1,rl=t;rl!==null;)if(t=rl,e=t.child,t.subtreeFlags&1028&&e!==null)e.return=t,rl=e;else for(;rl!==null;){switch(t=rl,o=t.alternate,e=t.flags,t.tag){case 0:if(e&4&&(e=t.updateQueue,e=e===null?null:e.events,e!==null))for(n=0;n title`))),Pd(o,r,n),o[dt]=e,wt(o),r=o;break a;case`link`:var s=Vf(`link`,`href`,a).get(r+(n.href||``));if(s){for(var c=0;cg&&(o=g,g=h,h=o);var _=Er(s,h),v=Er(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,k.T=null,n=lu,lu=null;var o=au,s=su;if(iu=0,ou=au=null,su=0,K&6)throw Error(i(331));var c=K;if(K|=4,Pl(o.current),El(o,o.current,s,n),K=c,id(0,!1),Be&&typeof Be.onPostCommitFiberRoot==`function`)try{Be.onPostCommitFiberRoot(ze,o)}catch{}return!0}finally{A.p=a,k.T=r,Vu(e,t)}}function Wu(e,t,n){t=yi(n,t),t=Qs(e.stateNode,t,2),e=Wa(e,t,2),e!==null&&(tt(e,2),rd(e))}function Z(e,t,n){if(e.tag===3)Wu(e,e,n);else for(;t!==null;){if(t.tag===3){Wu(t,e,n);break}else if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(ru===null||!ru.has(r))){e=yi(n,e),n=$s(2),r=Wa(t,n,2),r!==null&&(ec(n,r,t,e),tt(r,2),rd(r));break}}t=t.return}}function Gu(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new Rl;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(Hl=!0,i.add(n),e=Ku.bind(null,e,t,n),t.then(e,e))}function Ku(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,q===e&&(Y&n)===n&&(Wl===4||Wl===3&&(Y&62914560)===Y&&300>Ae()-$l?!(K&2)&&Su(e,0):ql|=n,Yl===Y&&(Yl=0)),rd(e)}function qu(e,t){t===0&&(t=$e()),e=ii(e,t),e!==null&&(tt(e,t),rd(e))}function Ju(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),qu(e,n)}function Yu(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}r!==null&&r.delete(t),qu(e,n)}function Xu(e,t){return Ee(e,t)}var Zu=null,Qu=null,$u=!1,ed=!1,td=!1,nd=0;function rd(e){e!==Qu&&e.next===null&&(Qu===null?Zu=Qu=e:Qu=Qu.next=e),ed=!0,$u||($u=!0,ud())}function id(e,t){if(!td&&ed){td=!0;do for(var n=!1,r=Zu;r!==null;){if(!t)if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-He(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,ld(r,a))}else a=Y,a=Xe(r,r===q?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||Ze(r,a)||(n=!0,ld(r,a));r=r.next}while(n);td=!1}}function ad(){od()}function od(){ed=$u=!1;var e=0;nd!==0&&Gd()&&(e=nd);for(var t=Ae(),n=null,r=Zu;r!==null;){var i=r.next,a=sd(r,t);a===0?(r.next=null,n===null?Zu=i:n.next=i,i===null&&(Qu=n)):(n=r,(e!==0||a&3)&&(ed=!0)),r=i}iu!==0&&iu!==5||id(e,!1),nd!==0&&(nd=0)}function sd(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&Id(d)&&(c=c.responseEnd,o+=u*(c`u`?null:document;function xf(e,t,n){var r=bf;if(r&&typeof t==`string`&&t){var i=Vt(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),hf.has(i)||(hf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),Pd(t,`link`,e),wt(t),r.head.appendChild(t)))}}function Sf(e){_f.D(e),xf(`dns-prefetch`,e,null)}function Cf(e,t){_f.C(e,t),xf(`preconnect`,e,t)}function wf(e,t,n){_f.L(e,t,n);var r=bf;if(r&&e&&t){var i=`link[rel="preload"][as="`+Vt(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+Vt(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+Vt(n.imageSizes)+`"]`)):i+=`[href="`+Vt(e)+`"]`;var a=i;switch(t){case`style`:a=Af(e);break;case`script`:a=Pf(e)}mf.has(a)||(e=m({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),mf.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(jf(a))||t===`script`&&r.querySelector(Ff(a))||(t=r.createElement(`link`),Pd(t,`link`,e),wt(t),r.head.appendChild(t)))}}function Tf(e,t){_f.m(e,t);var n=bf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+Vt(r)+`"][href="`+Vt(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Pf(e)}if(!mf.has(a)&&(e=m({rel:`modulepreload`,href:e},t),mf.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(Ff(a)))return}r=n.createElement(`link`),Pd(r,`link`,e),wt(r),n.head.appendChild(r)}}}function Ef(e,t,n){_f.S(e,t,n);var r=bf;if(r&&e){var i=Ct(r).hoistableStyles,a=Af(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(jf(a)))s.loading=5;else{e=m({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=mf.get(a))&&Rf(e,n);var c=o=r.createElement(`link`);wt(c),Pd(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Lf(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function Df(e,t){_f.X(e,t);var n=bf;if(n&&e){var r=Ct(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=m({src:e,async:!0},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),wt(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Of(e,t){_f.M(e,t);var n=bf;if(n&&e){var r=Ct(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=m({src:e,async:!0,type:`module`},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),wt(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function kf(e,t,n,r){var a=(a=fe.current)?gf(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=Af(n.href),n=Ct(a).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Af(n.href);var o=Ct(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(jf(e)))&&!o._p&&(s.instance=o,s.state.loading=5),mf.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},mf.set(e,n),o||Nf(a,e,n,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=Pf(n),n=Ct(a).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Af(e){return`href="`+Vt(e)+`"`}function jf(e){return`link[rel="stylesheet"][`+e+`]`}function Mf(e){return m({},e,{"data-precedence":e.precedence,precedence:null})}function Nf(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),Pd(t,`link`,n),wt(t),e.head.appendChild(t))}function Pf(e){return`[src="`+Vt(e)+`"]`}function Ff(e){return`script[async]`+e}function If(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+Vt(n.href)+`"]`);if(r)return t.instance=r,wt(r),r;var a=m({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),wt(r),Pd(r,`style`,a),Lf(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Af(n.href);var o=e.querySelector(jf(a));if(o)return t.state.loading|=4,t.instance=o,wt(o),o;r=Mf(n),(a=mf.get(a))&&Rf(r,a),o=(e.ownerDocument||e).createElement(`link`),wt(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),Pd(o,`link`,r),t.state.loading|=4,Lf(o,n.precedence,e),t.instance=o;case`script`:return o=Pf(n.src),(a=e.querySelector(Ff(o)))?(t.instance=a,wt(a),a):(r=n,(a=mf.get(o))&&(r=m({},n),zf(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),wt(a),Pd(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Lf(r,n.precedence,e));return t.instance}function Lf(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function Uf(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Wf(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Gf(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Af(r.href),a=t.querySelector(jf(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=Jf.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,wt(a);return}a=t.ownerDocument||t,r=Mf(r),(i=mf.get(i))&&Rf(r,i),a=a.createElement(`link`),wt(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Pd(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=Jf.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var Kf=0;function qf(e,t){return e.stylesheets&&e.count===0&&Xf(e,e.stylesheets),0Kf?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function Jf(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Xf(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Yf=null;function Xf(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Yf=new Map,t.forEach(Zf,e),Yf=null,Jf.call(e))}function Zf(e,t){if(!(t.state.loading&4)){var n=Yf.get(e);if(n)var r=n.get(null);else{n=new Map,Yf.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=g()})),v=l(d(),1),y=_(),b=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),x=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),S=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),C=e=>{let t=S(e);return t.charAt(0).toUpperCase()+t.slice(1)},w={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`},T=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},ee=(0,v.createContext)({}),te=()=>(0,v.useContext)(ee),ne=(0,v.forwardRef)(({color:e,size:t,strokeWidth:n,absoluteStrokeWidth:r,className:i=``,children:a,iconNode:o,...s},c)=>{let{size:l=24,strokeWidth:u=2,absoluteStrokeWidth:d=!1,color:f=`currentColor`,className:p=``}=te()??{},m=r??d?Number(n??u)*24/Number(t??l):n??u;return(0,v.createElement)(`svg`,{ref:c,...w,width:t??l??w.width,height:t??l??w.height,stroke:e??f,strokeWidth:m,className:b(`lucide`,p,i),...!a&&!T(s)&&{"aria-hidden":`true`},...s},[...o.map(([e,t])=>(0,v.createElement)(e,t)),...Array.isArray(a)?a:[a]])}),E=(e,t)=>{let n=(0,v.forwardRef)(({className:n,...r},i)=>(0,v.createElement)(ne,{ref:i,iconNode:t,className:b(`lucide-${x(C(e))}`,`lucide-${e}`,n),...r}));return n.displayName=C(e),n},re=E(`arrow-up-right`,[[`path`,{d:`M7 7h10v10`,key:`1tivn9`}],[`path`,{d:`M7 17 17 7`,key:`1vkiza`}]]),D=E(`calendar-days`,[[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`,key:`1hopcy`}],[`path`,{d:`M3 10h18`,key:`8toen8`}],[`path`,{d:`M8 14h.01`,key:`6423bh`}],[`path`,{d:`M12 14h.01`,key:`1etili`}],[`path`,{d:`M16 14h.01`,key:`1gbofw`}],[`path`,{d:`M8 18h.01`,key:`lrp35t`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}],[`path`,{d:`M16 18h.01`,key:`kzsmim`}]]),O=E(`check-check`,[[`path`,{d:`M18 6 7 17l-5-5`,key:`116fxf`}],[`path`,{d:`m22 10-7.5 7.5L13 16`,key:`ke71qq`}]]),ie=E(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),ae=E(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]),oe=E(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),k=E(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]),A=E(`files`,[[`path`,{d:`M15 2h-4a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V8`,key:`14sh0y`}],[`path`,{d:`M16.706 2.706A2.4 2.4 0 0 0 15 2v5a1 1 0 0 0 1 1h5a2.4 2.4 0 0 0-.706-1.706z`,key:`1970lx`}],[`path`,{d:`M5 7a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 1.732-1`,key:`l4dndm`}]]),se=E(`inbox`,[[`polyline`,{points:`22 12 16 12 14 15 10 15 8 12 2 12`,key:`o97t9d`}],[`path`,{d:`M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`oot6mr`}]]),ce=E(`layout-dashboard`,[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`,key:`10lvy0`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`,key:`16une8`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`,key:`1hutg5`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`ldoo1y`}]]),le=E(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),j=E(`log-out`,[[`path`,{d:`m16 17 5-5-5-5`,key:`1bji2h`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}]]),M=E(`paw-print`,[[`circle`,{cx:`11`,cy:`4`,r:`2`,key:`vol9p0`}],[`circle`,{cx:`18`,cy:`8`,r:`2`,key:`17gozi`}],[`circle`,{cx:`20`,cy:`16`,r:`2`,key:`1v9bxh`}],[`path`,{d:`M9 10a5 5 0 0 1 5 5v3.5a3.5 3.5 0 0 1-6.84 1.045Q6.52 17.48 4.46 16.84A3.5 3.5 0 0 1 5.5 10Z`,key:`1ydw1z`}]]),N=E(`refresh-cw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]),ue=E(`route`,[[`circle`,{cx:`6`,cy:`19`,r:`3`,key:`1kj8tv`}],[`path`,{d:`M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15`,key:`1d8sl`}],[`circle`,{cx:`18`,cy:`5`,r:`3`,key:`gq8acd`}]]),de=E(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]),fe=E(`user-round`,[[`circle`,{cx:`12`,cy:`8`,r:`5`,key:`1hypcn`}],[`path`,{d:`M20 21a8 8 0 0 0-16 0`,key:`rfgkzh`}]]),pe=E(`users`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]),me=E(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]);function he(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}function ge(...e){return t=>{let n=!1,r=e.map(e=>{let r=he(e,t);return!n&&typeof r==`function`&&(n=!0),r});if(n)return()=>{for(let t=0;t{let{children:r,...i}=t,a=null,o=!1,s=[];Ee(r)&&typeof Ae==`function`&&(r=Ae(r._payload)),v.Children.forEach(r,e=>{if(we(e)){o=!0;let t=e,n=`child`in t.props?t.props.child:t.props.children;Ee(n)&&typeof Ae==`function`&&(n=Ae(n._payload)),a=xe(t,n),s.push(a?.props?.children)}else s.push(e)}),a?a=v.cloneElement(a,void 0,s):!o&&v.Children.count(r)===1&&v.isValidElement(r)&&(a=r);let c=a?Ce(a):void 0,l=_e(n,c);if(!a){if(r||r===0)throw Error(o?ke(e):Oe(e));return r}let u=Se(i,a.props??{});return a.type!==v.Fragment&&(u.ref=n?l:c),v.cloneElement(a,u)});return t.displayName=`${e}.Slot`,t}var ye=ve(`Slot`),be=Symbol.for(`radix.slottable`),xe=(e,t)=>{if(`child`in e.props){let t=e.props.child;return v.isValidElement(t)?v.cloneElement(t,void 0,e.props.children(t.props.children)):null}return v.isValidElement(t)?t:null};function Se(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function Ce(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function we(e){return v.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===be}var Te=Symbol.for(`react.lazy`);function Ee(e){return typeof e==`object`&&!!e&&`$$typeof`in e&&e.$$typeof===Te&&`_payload`in e&&De(e._payload)}function De(e){return typeof e==`object`&&!!e&&`then`in e}var Oe=e=>`${e} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,ke=e=>`${e} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,Ae=v.use;function je(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;ttypeof e==`boolean`?`${e}`:e===0?`0`:e,Pe=Me,Fe=(e,t)=>n=>{if(t?.variants==null)return Pe(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=Ne(t)||Ne(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return Pe(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},Ie=(e,t)=>{let n=Array(e.length+t.length);for(let t=0;t({classGroupId:e,validator:t}),Re=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),ze=`-`,Be=[],Ve=`arbitrary..`,He=e=>{let t=Ge(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:e=>{if(e.startsWith(`[`)&&e.endsWith(`]`))return We(e);let n=e.split(ze);return Ue(n,+(n[0]===``&&n.length>1),t)},getConflictingClassGroupIds:(e,t)=>{if(t){let t=r[e],i=n[e];return t?i?Ie(i,t):t:i||Be}return n[e]||Be}}},Ue=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;let r=e[t],i=n.nextPart.get(r);if(i){let n=Ue(e,t+1,i);if(n)return n}let a=n.validators;if(a===null)return;let o=t===0?e.join(ze):e.slice(t).join(ze),s=a.length;for(let e=0;ee.slice(1,-1).indexOf(`:`)===-1?void 0:(()=>{let t=e.slice(1,-1),n=t.indexOf(`:`),r=t.slice(0,n);return r?Ve+r:void 0})(),Ge=e=>{let{theme:t,classGroups:n}=e;return Ke(n,t)},Ke=(e,t)=>{let n=Re();for(let r in e){let i=e[r];qe(i,n,r,t)}return n},qe=(e,t,n,r)=>{let i=e.length;for(let a=0;a{if(typeof e==`string`){Ye(e,t,n);return}if(typeof e==`function`){Xe(e,t,n,r);return}Ze(e,t,n,r)},Ye=(e,t,n)=>{let r=e===``?t:Qe(t,e);r.classGroupId=n},Xe=(e,t,n,r)=>{if($e(e)){qe(e(r),t,n,r);return}t.validators===null&&(t.validators=[]),t.validators.push(Le(n,e))},Ze=(e,t,n,r)=>{let i=Object.entries(e),a=i.length;for(let e=0;e{let n=e,r=t.split(ze),i=r.length;for(let e=0;e`isThemeGetter`in e&&e.isThemeGetter===!0,et=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=Object.create(null),r=Object.create(null),i=(i,a)=>{n[i]=a,t++,t>e&&(t=0,r=n,n=Object.create(null))};return{get(e){let t=n[e];if(t!==void 0)return t;if((t=r[e])!==void 0)return i(e,t),t},set(e,t){e in n?n[e]=t:i(e,t)}}},tt=`!`,nt=`:`,rt=[],it=(e,t,n,r,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:r,isExternal:i}),at=e=>{let{prefix:t,experimentalParseClassName:n}=e,r=e=>{let t=[],n=0,r=0,i=0,a,o=e.length;for(let s=0;si?a-i:void 0;return it(t,l,c,u)};if(t){let e=t+nt,n=r;r=t=>t.startsWith(e)?n(t.slice(e.length)):it(rt,!1,t,void 0,!0)}if(n){let e=r;r=t=>n({className:t,parseClassName:e})}return r},ot=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((e,n)=>{t.set(e,1e6+n)}),e=>{let n=[],r=[];for(let i=0;i0&&(r.sort(),n.push(...r),r=[]),n.push(a)):r.push(a)}return r.length>0&&(r.sort(),n.push(...r)),n}},st=e=>({cache:et(e.cacheSize),parseClassName:at(e),sortModifiers:ot(e),postfixLookupClassGroupIds:ct(e),...He(e)}),ct=e=>{let t=Object.create(null),n=e.postfixLookupClassGroups;if(n)for(let e=0;e{let{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i,sortModifiers:a,postfixLookupClassGroupIds:o}=t,s=[],c=e.trim().split(lt),l=``;for(let e=c.length-1;e>=0;--e){let t=c[e],{isExternal:u,modifiers:d,hasImportantModifier:f,baseClassName:p,maybePostfixModifierPosition:m}=n(t);if(u){l=t+(l.length>0?` `+l:l);continue}let h=!!m,g;if(h){g=r(p.substring(0,m));let e=g&&o[g]?r(p):void 0;e&&e!==g&&(g=e,h=!1)}else g=r(p);if(!g){if(!h){l=t+(l.length>0?` `+l:l);continue}if(g=r(p),!g){l=t+(l.length>0?` `+l:l);continue}h=!1}let _=d.length===0?``:d.length===1?d[0]:a(d).join(`:`),v=f?_+tt:_,y=v+g;if(s.indexOf(y)>-1)continue;s.push(y);let b=i(g,h);for(let e=0;e0?` `+l:l)}return l},dt=(...e)=>{let t=0,n,r,i=``;for(;t{if(typeof e==`string`)return e;let t,n=``;for(let r=0;r{let n,r,i,a,o=o=>(n=st(t.reduce((e,t)=>t(e),e())),r=n.cache.get,i=n.cache.set,a=s,s(o)),s=e=>{let t=r(e);if(t)return t;let a=ut(e,n);return i(e,a),a};return a=o,(...e)=>a(dt(...e))},mt=[],ht=e=>{let t=t=>t[e]||mt;return t.isThemeGetter=!0,t},gt=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,_t=/^\((?:(\w[\w-]*):)?(.+)\)$/i,vt=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,yt=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,bt=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,xt=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,St=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Ct=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,wt=e=>vt.test(e),P=e=>!!e&&!Number.isNaN(Number(e)),Tt=e=>!!e&&Number.isInteger(Number(e)),Et=e=>e.endsWith(`%`)&&P(e.slice(0,-1)),Dt=e=>yt.test(e),Ot=()=>!0,kt=e=>bt.test(e)&&!xt.test(e),At=()=>!1,jt=e=>St.test(e),Mt=e=>Ct.test(e),Nt=e=>!F(e)&&!I(e),Pt=e=>e.startsWith(`@container`)&&(e[10]===`/`&&e[11]!==void 0||e[11]===`s`&&e[16]!==void 0&&e.startsWith(`-size/`,10)||e[11]===`n`&&e[18]!==void 0&&e.startsWith(`-normal/`,10)),Ft=e=>Xt(e,en,At),F=e=>gt.test(e),It=e=>Xt(e,tn,kt),Lt=e=>Xt(e,nn,P),Rt=e=>Xt(e,an,Ot),zt=e=>Xt(e,rn,At),Bt=e=>Xt(e,Qt,At),Vt=e=>Xt(e,$t,Mt),Ht=e=>Xt(e,on,jt),I=e=>_t.test(e),Ut=e=>Zt(e,tn),Wt=e=>Zt(e,rn),Gt=e=>Zt(e,Qt),Kt=e=>Zt(e,en),qt=e=>Zt(e,$t),Jt=e=>Zt(e,on,!0),Yt=e=>Zt(e,an,!0),Xt=(e,t,n)=>{let r=gt.exec(e);return r?r[1]?t(r[1]):n(r[2]):!1},Zt=(e,t,n=!1)=>{let r=_t.exec(e);return r?r[1]?t(r[1]):n:!1},Qt=e=>e===`position`||e===`percentage`,$t=e=>e===`image`||e===`url`,en=e=>e===`length`||e===`size`||e===`bg-size`,tn=e=>e===`length`,nn=e=>e===`number`,rn=e=>e===`family-name`,an=e=>e===`number`||e===`weight`,on=e=>e===`shadow`,sn=pt(()=>{let e=ht(`color`),t=ht(`font`),n=ht(`text`),r=ht(`font-weight`),i=ht(`tracking`),a=ht(`leading`),o=ht(`breakpoint`),s=ht(`container`),c=ht(`spacing`),l=ht(`radius`),u=ht(`shadow`),d=ht(`inset-shadow`),f=ht(`text-shadow`),p=ht(`drop-shadow`),m=ht(`blur`),h=ht(`perspective`),g=ht(`aspect`),_=ht(`ease`),v=ht(`animate`),y=()=>[`auto`,`avoid`,`all`,`avoid-page`,`page`,`left`,`right`,`column`],b=()=>[`center`,`top`,`bottom`,`left`,`right`,`top-left`,`left-top`,`top-right`,`right-top`,`bottom-right`,`right-bottom`,`bottom-left`,`left-bottom`],x=()=>[...b(),I,F],S=()=>[`auto`,`hidden`,`clip`,`visible`,`scroll`],C=()=>[`auto`,`contain`,`none`],w=()=>[I,F,c],T=()=>[wt,`full`,`auto`,...w()],ee=()=>[Tt,`none`,`subgrid`,I,F],te=()=>[`auto`,{span:[`full`,Tt,I,F]},Tt,I,F],ne=()=>[Tt,`auto`,I,F],E=()=>[`auto`,`min`,`max`,`fr`,I,F],re=()=>[`start`,`end`,`center`,`between`,`around`,`evenly`,`stretch`,`baseline`,`center-safe`,`end-safe`],D=()=>[`start`,`end`,`center`,`stretch`,`center-safe`,`end-safe`],O=()=>[`auto`,...w()],ie=()=>[wt,`auto`,`full`,`dvw`,`dvh`,`lvw`,`lvh`,`svw`,`svh`,`min`,`max`,`fit`,...w()],ae=()=>[wt,`screen`,`full`,`dvw`,`lvw`,`svw`,`min`,`max`,`fit`,...w()],oe=()=>[wt,`screen`,`full`,`lh`,`dvh`,`lvh`,`svh`,`min`,`max`,`fit`,...w()],k=()=>[e,I,F],A=()=>[...b(),Gt,Bt,{position:[I,F]}],se=()=>[`no-repeat`,{repeat:[``,`x`,`y`,`space`,`round`]}],ce=()=>[`auto`,`cover`,`contain`,Kt,Ft,{size:[I,F]}],le=()=>[Et,Ut,It],j=()=>[``,`none`,`full`,l,I,F],M=()=>[``,P,Ut,It],N=()=>[`solid`,`dashed`,`dotted`,`double`],ue=()=>[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],de=()=>[P,Et,Gt,Bt],fe=()=>[``,`none`,m,I,F],pe=()=>[`none`,P,I,F],me=()=>[`none`,P,I,F],he=()=>[P,I,F],ge=()=>[wt,`full`,...w()];return{cacheSize:500,theme:{animate:[`spin`,`ping`,`pulse`,`bounce`],aspect:[`video`],blur:[Dt],breakpoint:[Dt],color:[Ot],container:[Dt],"drop-shadow":[Dt],ease:[`in`,`out`,`in-out`],font:[Nt],"font-weight":[`thin`,`extralight`,`light`,`normal`,`medium`,`semibold`,`bold`,`extrabold`,`black`],"inset-shadow":[Dt],leading:[`none`,`tight`,`snug`,`normal`,`relaxed`,`loose`],perspective:[`dramatic`,`near`,`normal`,`midrange`,`distant`,`none`],radius:[Dt],shadow:[Dt],spacing:[`px`,P],text:[Dt],"text-shadow":[Dt],tracking:[`tighter`,`tight`,`normal`,`wide`,`wider`,`widest`]},classGroups:{aspect:[{aspect:[`auto`,`square`,wt,F,I,g]}],container:[`container`],"container-type":[{"@container":[``,`normal`,`size`,I,F]}],"container-named":[Pt],columns:[{columns:[P,F,I,s]}],"break-after":[{"break-after":y()}],"break-before":[{"break-before":y()}],"break-inside":[{"break-inside":[`auto`,`avoid`,`avoid-page`,`avoid-column`]}],"box-decoration":[{"box-decoration":[`slice`,`clone`]}],box:[{box:[`border`,`content`]}],display:[`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`],sr:[`sr-only`,`not-sr-only`],float:[{float:[`right`,`left`,`none`,`start`,`end`]}],clear:[{clear:[`left`,`right`,`both`,`none`,`start`,`end`]}],isolation:[`isolate`,`isolation-auto`],"object-fit":[{object:[`contain`,`cover`,`fill`,`none`,`scale-down`]}],"object-position":[{object:x()}],overflow:[{overflow:S()}],"overflow-x":[{"overflow-x":S()}],"overflow-y":[{"overflow-y":S()}],overscroll:[{overscroll:C()}],"overscroll-x":[{"overscroll-x":C()}],"overscroll-y":[{"overscroll-y":C()}],position:[`static`,`fixed`,`absolute`,`relative`,`sticky`],inset:[{inset:T()}],"inset-x":[{"inset-x":T()}],"inset-y":[{"inset-y":T()}],start:[{"inset-s":T(),start:T()}],end:[{"inset-e":T(),end:T()}],"inset-bs":[{"inset-bs":T()}],"inset-be":[{"inset-be":T()}],top:[{top:T()}],right:[{right:T()}],bottom:[{bottom:T()}],left:[{left:T()}],visibility:[`visible`,`invisible`,`collapse`],z:[{z:[Tt,`auto`,I,F]}],basis:[{basis:[wt,`full`,`auto`,s,...w()]}],"flex-direction":[{flex:[`row`,`row-reverse`,`col`,`col-reverse`]}],"flex-wrap":[{flex:[`nowrap`,`wrap`,`wrap-reverse`]}],flex:[{flex:[P,wt,`auto`,`initial`,`none`,F]}],grow:[{grow:[``,P,I,F]}],shrink:[{shrink:[``,P,I,F]}],order:[{order:[Tt,`first`,`last`,`none`,I,F]}],"grid-cols":[{"grid-cols":ee()}],"col-start-end":[{col:te()}],"col-start":[{"col-start":ne()}],"col-end":[{"col-end":ne()}],"grid-rows":[{"grid-rows":ee()}],"row-start-end":[{row:te()}],"row-start":[{"row-start":ne()}],"row-end":[{"row-end":ne()}],"grid-flow":[{"grid-flow":[`row`,`col`,`dense`,`row-dense`,`col-dense`]}],"auto-cols":[{"auto-cols":E()}],"auto-rows":[{"auto-rows":E()}],gap:[{gap:w()}],"gap-x":[{"gap-x":w()}],"gap-y":[{"gap-y":w()}],"justify-content":[{justify:[...re(),`normal`]}],"justify-items":[{"justify-items":[...D(),`normal`]}],"justify-self":[{"justify-self":[`auto`,...D()]}],"align-content":[{content:[`normal`,...re()]}],"align-items":[{items:[...D(),{baseline:[``,`last`]}]}],"align-self":[{self:[`auto`,...D(),{baseline:[``,`last`]}]}],"place-content":[{"place-content":re()}],"place-items":[{"place-items":[...D(),`baseline`]}],"place-self":[{"place-self":[`auto`,...D()]}],p:[{p:w()}],px:[{px:w()}],py:[{py:w()}],ps:[{ps:w()}],pe:[{pe:w()}],pbs:[{pbs:w()}],pbe:[{pbe:w()}],pt:[{pt:w()}],pr:[{pr:w()}],pb:[{pb:w()}],pl:[{pl:w()}],m:[{m:O()}],mx:[{mx:O()}],my:[{my:O()}],ms:[{ms:O()}],me:[{me:O()}],mbs:[{mbs:O()}],mbe:[{mbe:O()}],mt:[{mt:O()}],mr:[{mr:O()}],mb:[{mb:O()}],ml:[{ml:O()}],"space-x":[{"space-x":w()}],"space-x-reverse":[`space-x-reverse`],"space-y":[{"space-y":w()}],"space-y-reverse":[`space-y-reverse`],size:[{size:ie()}],"inline-size":[{inline:[`auto`,...ae()]}],"min-inline-size":[{"min-inline":[`auto`,...ae()]}],"max-inline-size":[{"max-inline":[`none`,...ae()]}],"block-size":[{block:[`auto`,...oe()]}],"min-block-size":[{"min-block":[`auto`,...oe()]}],"max-block-size":[{"max-block":[`none`,...oe()]}],w:[{w:[s,`screen`,...ie()]}],"min-w":[{"min-w":[s,`screen`,`none`,...ie()]}],"max-w":[{"max-w":[s,`screen`,`none`,`prose`,{screen:[o]},...ie()]}],h:[{h:[`screen`,`lh`,...ie()]}],"min-h":[{"min-h":[`screen`,`lh`,`none`,...ie()]}],"max-h":[{"max-h":[`screen`,`lh`,...ie()]}],"font-size":[{text:[`base`,n,Ut,It]}],"font-smoothing":[`antialiased`,`subpixel-antialiased`],"font-style":[`italic`,`not-italic`],"font-weight":[{font:[r,Yt,Rt]}],"font-stretch":[{"font-stretch":[`ultra-condensed`,`extra-condensed`,`condensed`,`semi-condensed`,`normal`,`semi-expanded`,`expanded`,`extra-expanded`,`ultra-expanded`,Et,F]}],"font-family":[{font:[Wt,zt,t]}],"font-features":[{"font-features":[F]}],"fvn-normal":[`normal-nums`],"fvn-ordinal":[`ordinal`],"fvn-slashed-zero":[`slashed-zero`],"fvn-figure":[`lining-nums`,`oldstyle-nums`],"fvn-spacing":[`proportional-nums`,`tabular-nums`],"fvn-fraction":[`diagonal-fractions`,`stacked-fractions`],tracking:[{tracking:[i,I,F]}],"line-clamp":[{"line-clamp":[P,`none`,I,Lt]}],leading:[{leading:[a,...w()]}],"list-image":[{"list-image":[`none`,I,F]}],"list-style-position":[{list:[`inside`,`outside`]}],"list-style-type":[{list:[`disc`,`decimal`,`none`,I,F]}],"text-alignment":[{text:[`left`,`center`,`right`,`justify`,`start`,`end`]}],"placeholder-color":[{placeholder:k()}],"text-color":[{text:k()}],"text-decoration":[`underline`,`overline`,`line-through`,`no-underline`],"text-decoration-style":[{decoration:[...N(),`wavy`]}],"text-decoration-thickness":[{decoration:[P,`from-font`,`auto`,I,It]}],"text-decoration-color":[{decoration:k()}],"underline-offset":[{"underline-offset":[P,`auto`,I,F]}],"text-transform":[`uppercase`,`lowercase`,`capitalize`,`normal-case`],"text-overflow":[`truncate`,`text-ellipsis`,`text-clip`],"text-wrap":[{text:[`wrap`,`nowrap`,`balance`,`pretty`]}],indent:[{indent:w()}],"tab-size":[{tab:[Tt,I,F]}],"vertical-align":[{align:[`baseline`,`top`,`middle`,`bottom`,`text-top`,`text-bottom`,`sub`,`super`,I,F]}],whitespace:[{whitespace:[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]}],break:[{break:[`normal`,`words`,`all`,`keep`]}],wrap:[{wrap:[`break-word`,`anywhere`,`normal`]}],hyphens:[{hyphens:[`none`,`manual`,`auto`]}],content:[{content:[`none`,I,F]}],"bg-attachment":[{bg:[`fixed`,`local`,`scroll`]}],"bg-clip":[{"bg-clip":[`border`,`padding`,`content`,`text`]}],"bg-origin":[{"bg-origin":[`border`,`padding`,`content`]}],"bg-position":[{bg:A()}],"bg-repeat":[{bg:se()}],"bg-size":[{bg:ce()}],"bg-image":[{bg:[`none`,{linear:[{to:[`t`,`tr`,`r`,`br`,`b`,`bl`,`l`,`tl`]},Tt,I,F],radial:[``,I,F],conic:[Tt,I,F]},qt,Vt]}],"bg-color":[{bg:k()}],"gradient-from-pos":[{from:le()}],"gradient-via-pos":[{via:le()}],"gradient-to-pos":[{to:le()}],"gradient-from":[{from:k()}],"gradient-via":[{via:k()}],"gradient-to":[{to:k()}],rounded:[{rounded:j()}],"rounded-s":[{"rounded-s":j()}],"rounded-e":[{"rounded-e":j()}],"rounded-t":[{"rounded-t":j()}],"rounded-r":[{"rounded-r":j()}],"rounded-b":[{"rounded-b":j()}],"rounded-l":[{"rounded-l":j()}],"rounded-ss":[{"rounded-ss":j()}],"rounded-se":[{"rounded-se":j()}],"rounded-ee":[{"rounded-ee":j()}],"rounded-es":[{"rounded-es":j()}],"rounded-tl":[{"rounded-tl":j()}],"rounded-tr":[{"rounded-tr":j()}],"rounded-br":[{"rounded-br":j()}],"rounded-bl":[{"rounded-bl":j()}],"border-w":[{border:M()}],"border-w-x":[{"border-x":M()}],"border-w-y":[{"border-y":M()}],"border-w-s":[{"border-s":M()}],"border-w-e":[{"border-e":M()}],"border-w-bs":[{"border-bs":M()}],"border-w-be":[{"border-be":M()}],"border-w-t":[{"border-t":M()}],"border-w-r":[{"border-r":M()}],"border-w-b":[{"border-b":M()}],"border-w-l":[{"border-l":M()}],"divide-x":[{"divide-x":M()}],"divide-x-reverse":[`divide-x-reverse`],"divide-y":[{"divide-y":M()}],"divide-y-reverse":[`divide-y-reverse`],"border-style":[{border:[...N(),`hidden`,`none`]}],"divide-style":[{divide:[...N(),`hidden`,`none`]}],"border-color":[{border:k()}],"border-color-x":[{"border-x":k()}],"border-color-y":[{"border-y":k()}],"border-color-s":[{"border-s":k()}],"border-color-e":[{"border-e":k()}],"border-color-bs":[{"border-bs":k()}],"border-color-be":[{"border-be":k()}],"border-color-t":[{"border-t":k()}],"border-color-r":[{"border-r":k()}],"border-color-b":[{"border-b":k()}],"border-color-l":[{"border-l":k()}],"divide-color":[{divide:k()}],"outline-style":[{outline:[...N(),`none`,`hidden`]}],"outline-offset":[{"outline-offset":[P,I,F]}],"outline-w":[{outline:[``,P,Ut,It]}],"outline-color":[{outline:k()}],shadow:[{shadow:[``,`none`,u,Jt,Ht]}],"shadow-color":[{shadow:k()}],"inset-shadow":[{"inset-shadow":[`none`,d,Jt,Ht]}],"inset-shadow-color":[{"inset-shadow":k()}],"ring-w":[{ring:M()}],"ring-w-inset":[`ring-inset`],"ring-color":[{ring:k()}],"ring-offset-w":[{"ring-offset":[P,It]}],"ring-offset-color":[{"ring-offset":k()}],"inset-ring-w":[{"inset-ring":M()}],"inset-ring-color":[{"inset-ring":k()}],"text-shadow":[{"text-shadow":[`none`,f,Jt,Ht]}],"text-shadow-color":[{"text-shadow":k()}],opacity:[{opacity:[P,I,F]}],"mix-blend":[{"mix-blend":[...ue(),`plus-darker`,`plus-lighter`]}],"bg-blend":[{"bg-blend":ue()}],"mask-clip":[{"mask-clip":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]},`mask-no-clip`],"mask-composite":[{mask:[`add`,`subtract`,`intersect`,`exclude`]}],"mask-image-linear-pos":[{"mask-linear":[P]}],"mask-image-linear-from-pos":[{"mask-linear-from":de()}],"mask-image-linear-to-pos":[{"mask-linear-to":de()}],"mask-image-linear-from-color":[{"mask-linear-from":k()}],"mask-image-linear-to-color":[{"mask-linear-to":k()}],"mask-image-t-from-pos":[{"mask-t-from":de()}],"mask-image-t-to-pos":[{"mask-t-to":de()}],"mask-image-t-from-color":[{"mask-t-from":k()}],"mask-image-t-to-color":[{"mask-t-to":k()}],"mask-image-r-from-pos":[{"mask-r-from":de()}],"mask-image-r-to-pos":[{"mask-r-to":de()}],"mask-image-r-from-color":[{"mask-r-from":k()}],"mask-image-r-to-color":[{"mask-r-to":k()}],"mask-image-b-from-pos":[{"mask-b-from":de()}],"mask-image-b-to-pos":[{"mask-b-to":de()}],"mask-image-b-from-color":[{"mask-b-from":k()}],"mask-image-b-to-color":[{"mask-b-to":k()}],"mask-image-l-from-pos":[{"mask-l-from":de()}],"mask-image-l-to-pos":[{"mask-l-to":de()}],"mask-image-l-from-color":[{"mask-l-from":k()}],"mask-image-l-to-color":[{"mask-l-to":k()}],"mask-image-x-from-pos":[{"mask-x-from":de()}],"mask-image-x-to-pos":[{"mask-x-to":de()}],"mask-image-x-from-color":[{"mask-x-from":k()}],"mask-image-x-to-color":[{"mask-x-to":k()}],"mask-image-y-from-pos":[{"mask-y-from":de()}],"mask-image-y-to-pos":[{"mask-y-to":de()}],"mask-image-y-from-color":[{"mask-y-from":k()}],"mask-image-y-to-color":[{"mask-y-to":k()}],"mask-image-radial":[{"mask-radial":[I,F]}],"mask-image-radial-from-pos":[{"mask-radial-from":de()}],"mask-image-radial-to-pos":[{"mask-radial-to":de()}],"mask-image-radial-from-color":[{"mask-radial-from":k()}],"mask-image-radial-to-color":[{"mask-radial-to":k()}],"mask-image-radial-shape":[{"mask-radial":[`circle`,`ellipse`]}],"mask-image-radial-size":[{"mask-radial":[{closest:[`side`,`corner`],farthest:[`side`,`corner`]}]}],"mask-image-radial-pos":[{"mask-radial-at":b()}],"mask-image-conic-pos":[{"mask-conic":[P]}],"mask-image-conic-from-pos":[{"mask-conic-from":de()}],"mask-image-conic-to-pos":[{"mask-conic-to":de()}],"mask-image-conic-from-color":[{"mask-conic-from":k()}],"mask-image-conic-to-color":[{"mask-conic-to":k()}],"mask-mode":[{mask:[`alpha`,`luminance`,`match`]}],"mask-origin":[{"mask-origin":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]}],"mask-position":[{mask:A()}],"mask-repeat":[{mask:se()}],"mask-size":[{mask:ce()}],"mask-type":[{"mask-type":[`alpha`,`luminance`]}],"mask-image":[{mask:[`none`,I,F]}],filter:[{filter:[``,`none`,I,F]}],blur:[{blur:fe()}],brightness:[{brightness:[P,I,F]}],contrast:[{contrast:[P,I,F]}],"drop-shadow":[{"drop-shadow":[``,`none`,p,Jt,Ht]}],"drop-shadow-color":[{"drop-shadow":k()}],grayscale:[{grayscale:[``,P,I,F]}],"hue-rotate":[{"hue-rotate":[P,I,F]}],invert:[{invert:[``,P,I,F]}],saturate:[{saturate:[P,I,F]}],sepia:[{sepia:[``,P,I,F]}],"backdrop-filter":[{"backdrop-filter":[``,`none`,I,F]}],"backdrop-blur":[{"backdrop-blur":fe()}],"backdrop-brightness":[{"backdrop-brightness":[P,I,F]}],"backdrop-contrast":[{"backdrop-contrast":[P,I,F]}],"backdrop-grayscale":[{"backdrop-grayscale":[``,P,I,F]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[P,I,F]}],"backdrop-invert":[{"backdrop-invert":[``,P,I,F]}],"backdrop-opacity":[{"backdrop-opacity":[P,I,F]}],"backdrop-saturate":[{"backdrop-saturate":[P,I,F]}],"backdrop-sepia":[{"backdrop-sepia":[``,P,I,F]}],"border-collapse":[{border:[`collapse`,`separate`]}],"border-spacing":[{"border-spacing":w()}],"border-spacing-x":[{"border-spacing-x":w()}],"border-spacing-y":[{"border-spacing-y":w()}],"table-layout":[{table:[`auto`,`fixed`]}],caption:[{caption:[`top`,`bottom`]}],transition:[{transition:[``,`all`,`colors`,`opacity`,`shadow`,`transform`,`none`,I,F]}],"transition-behavior":[{transition:[`normal`,`discrete`]}],duration:[{duration:[P,`initial`,I,F]}],ease:[{ease:[`linear`,`initial`,_,I,F]}],delay:[{delay:[P,I,F]}],animate:[{animate:[`none`,v,I,F]}],backface:[{backface:[`hidden`,`visible`]}],perspective:[{perspective:[h,I,F]}],"perspective-origin":[{"perspective-origin":x()}],rotate:[{rotate:pe()}],"rotate-x":[{"rotate-x":pe()}],"rotate-y":[{"rotate-y":pe()}],"rotate-z":[{"rotate-z":pe()}],scale:[{scale:me()}],"scale-x":[{"scale-x":me()}],"scale-y":[{"scale-y":me()}],"scale-z":[{"scale-z":me()}],"scale-3d":[`scale-3d`],skew:[{skew:he()}],"skew-x":[{"skew-x":he()}],"skew-y":[{"skew-y":he()}],transform:[{transform:[I,F,``,`none`,`gpu`,`cpu`]}],"transform-origin":[{origin:x()}],"transform-style":[{transform:[`3d`,`flat`]}],translate:[{translate:ge()}],"translate-x":[{"translate-x":ge()}],"translate-y":[{"translate-y":ge()}],"translate-z":[{"translate-z":ge()}],"translate-none":[`translate-none`],zoom:[{zoom:[Tt,I,F]}],accent:[{accent:k()}],appearance:[{appearance:[`none`,`auto`]}],"caret-color":[{caret:k()}],"color-scheme":[{scheme:[`normal`,`dark`,`light`,`light-dark`,`only-dark`,`only-light`]}],cursor:[{cursor:[`auto`,`default`,`pointer`,`wait`,`text`,`move`,`help`,`not-allowed`,`none`,`context-menu`,`progress`,`cell`,`crosshair`,`vertical-text`,`alias`,`copy`,`no-drop`,`grab`,`grabbing`,`all-scroll`,`col-resize`,`row-resize`,`n-resize`,`e-resize`,`s-resize`,`w-resize`,`ne-resize`,`nw-resize`,`se-resize`,`sw-resize`,`ew-resize`,`ns-resize`,`nesw-resize`,`nwse-resize`,`zoom-in`,`zoom-out`,I,F]}],"field-sizing":[{"field-sizing":[`fixed`,`content`]}],"pointer-events":[{"pointer-events":[`auto`,`none`]}],resize:[{resize:[`none`,``,`y`,`x`]}],"scroll-behavior":[{scroll:[`auto`,`smooth`]}],"scrollbar-thumb-color":[{"scrollbar-thumb":k()}],"scrollbar-track-color":[{"scrollbar-track":k()}],"scrollbar-gutter":[{"scrollbar-gutter":[`auto`,`stable`,`both`]}],"scrollbar-w":[{scrollbar:[`auto`,`thin`,`none`]}],"scroll-m":[{"scroll-m":w()}],"scroll-mx":[{"scroll-mx":w()}],"scroll-my":[{"scroll-my":w()}],"scroll-ms":[{"scroll-ms":w()}],"scroll-me":[{"scroll-me":w()}],"scroll-mbs":[{"scroll-mbs":w()}],"scroll-mbe":[{"scroll-mbe":w()}],"scroll-mt":[{"scroll-mt":w()}],"scroll-mr":[{"scroll-mr":w()}],"scroll-mb":[{"scroll-mb":w()}],"scroll-ml":[{"scroll-ml":w()}],"scroll-p":[{"scroll-p":w()}],"scroll-px":[{"scroll-px":w()}],"scroll-py":[{"scroll-py":w()}],"scroll-ps":[{"scroll-ps":w()}],"scroll-pe":[{"scroll-pe":w()}],"scroll-pbs":[{"scroll-pbs":w()}],"scroll-pbe":[{"scroll-pbe":w()}],"scroll-pt":[{"scroll-pt":w()}],"scroll-pr":[{"scroll-pr":w()}],"scroll-pb":[{"scroll-pb":w()}],"scroll-pl":[{"scroll-pl":w()}],"snap-align":[{snap:[`start`,`end`,`center`,`align-none`]}],"snap-stop":[{snap:[`normal`,`always`]}],"snap-type":[{snap:[`none`,`x`,`y`,`both`]}],"snap-strictness":[{snap:[`mandatory`,`proximity`]}],touch:[{touch:[`auto`,`none`,`manipulation`]}],"touch-x":[{"touch-pan":[`x`,`left`,`right`]}],"touch-y":[{"touch-pan":[`y`,`up`,`down`]}],"touch-pz":[`touch-pinch-zoom`],select:[{select:[`none`,`text`,`all`,`auto`]}],"will-change":[{"will-change":[`auto`,`scroll`,`contents`,`transform`,I,F]}],fill:[{fill:[`none`,...k()]}],"stroke-w":[{stroke:[P,Ut,It,Lt]}],stroke:[{stroke:[`none`,...k()]}],"forced-color-adjust":[{"forced-color-adjust":[`auto`,`none`]}]},conflictingClassGroups:{"container-named":[`container-type`],overflow:[`overflow-x`,`overflow-y`],overscroll:[`overscroll-x`,`overscroll-y`],inset:[`inset-x`,`inset-y`,`inset-bs`,`inset-be`,`start`,`end`,`top`,`right`,`bottom`,`left`],"inset-x":[`right`,`left`],"inset-y":[`top`,`bottom`],flex:[`basis`,`grow`,`shrink`],gap:[`gap-x`,`gap-y`],p:[`px`,`py`,`ps`,`pe`,`pbs`,`pbe`,`pt`,`pr`,`pb`,`pl`],px:[`pr`,`pl`],py:[`pt`,`pb`],m:[`mx`,`my`,`ms`,`me`,`mbs`,`mbe`,`mt`,`mr`,`mb`,`ml`],mx:[`mr`,`ml`],my:[`mt`,`mb`],size:[`w`,`h`],"font-size":[`leading`],"fvn-normal":[`fvn-ordinal`,`fvn-slashed-zero`,`fvn-figure`,`fvn-spacing`,`fvn-fraction`],"fvn-ordinal":[`fvn-normal`],"fvn-slashed-zero":[`fvn-normal`],"fvn-figure":[`fvn-normal`],"fvn-spacing":[`fvn-normal`],"fvn-fraction":[`fvn-normal`],"line-clamp":[`display`,`overflow`],rounded:[`rounded-s`,`rounded-e`,`rounded-t`,`rounded-r`,`rounded-b`,`rounded-l`,`rounded-ss`,`rounded-se`,`rounded-ee`,`rounded-es`,`rounded-tl`,`rounded-tr`,`rounded-br`,`rounded-bl`],"rounded-s":[`rounded-ss`,`rounded-es`],"rounded-e":[`rounded-se`,`rounded-ee`],"rounded-t":[`rounded-tl`,`rounded-tr`],"rounded-r":[`rounded-tr`,`rounded-br`],"rounded-b":[`rounded-br`,`rounded-bl`],"rounded-l":[`rounded-tl`,`rounded-bl`],"border-spacing":[`border-spacing-x`,`border-spacing-y`],"border-w":[`border-w-x`,`border-w-y`,`border-w-s`,`border-w-e`,`border-w-bs`,`border-w-be`,`border-w-t`,`border-w-r`,`border-w-b`,`border-w-l`],"border-w-x":[`border-w-r`,`border-w-l`],"border-w-y":[`border-w-t`,`border-w-b`],"border-color":[`border-color-x`,`border-color-y`,`border-color-s`,`border-color-e`,`border-color-bs`,`border-color-be`,`border-color-t`,`border-color-r`,`border-color-b`,`border-color-l`],"border-color-x":[`border-color-r`,`border-color-l`],"border-color-y":[`border-color-t`,`border-color-b`],translate:[`translate-x`,`translate-y`,`translate-none`],"translate-none":[`translate`,`translate-x`,`translate-y`,`translate-z`],"scroll-m":[`scroll-mx`,`scroll-my`,`scroll-ms`,`scroll-me`,`scroll-mbs`,`scroll-mbe`,`scroll-mt`,`scroll-mr`,`scroll-mb`,`scroll-ml`],"scroll-mx":[`scroll-mr`,`scroll-ml`],"scroll-my":[`scroll-mt`,`scroll-mb`],"scroll-p":[`scroll-px`,`scroll-py`,`scroll-ps`,`scroll-pe`,`scroll-pbs`,`scroll-pbe`,`scroll-pt`,`scroll-pr`,`scroll-pb`,`scroll-pl`],"scroll-px":[`scroll-pr`,`scroll-pl`],"scroll-py":[`scroll-pt`,`scroll-pb`],touch:[`touch-x`,`touch-y`,`touch-pz`],"touch-x":[`touch`],"touch-y":[`touch`],"touch-pz":[`touch`]},conflictingClassGroupModifiers:{"font-size":[`leading`]},postfixLookupClassGroups:[`container-type`],orderSensitiveModifiers:[`*`,`**`,`after`,`backdrop`,`before`,`details-content`,`file`,`first-letter`,`first-line`,`marker`,`placeholder`,`selection`]}});function cn(...e){return sn(Me(e))}var ln=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),L=o(((e,t)=>{t.exports=ln()}))(),un=Fe(`inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50`,{variants:{variant:{default:`bg-primary text-primary-foreground hover:bg-primary/90 shadow`,destructive:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,outline:`border border-input bg-card hover:bg-accent hover:text-accent-foreground`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-9 px-4 py-2`,sm:`h-8 rounded-md px-3 text-xs`,lg:`h-10 rounded-md px-8`,icon:`h-9 w-9`}},defaultVariants:{variant:`default`,size:`default`}}),dn=v.forwardRef(({className:e,variant:t,size:n,asChild:r=!1,...i},a)=>(0,L.jsx)(r?ye:`button`,{className:cn(un({variant:t,size:n,className:e})),ref:a,...i}));dn.displayName=`Button`;var fn=v.forwardRef(({className:e,type:t,...n},r)=>(0,L.jsx)(`input`,{type:t,ref:r,className:cn(`flex h-9 w-full rounded-md border border-input bg-card px-3 py-1 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50`,e),...n}));fn.displayName=`Input`,typeof window<`u`&&window.document&&window.document.createElement;function pn(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),n===!1||!r.defaultPrevented)return t?.(r)}}function mn(e,t=[]){let n=[];function r(t,r){let i=v.createContext(r);i.displayName=t+`Context`;let a=n.length;n=[...n,r];let o=t=>{let{scope:n,children:r,...o}=t,s=n?.[e]?.[a]||i,c=v.useMemo(()=>o,Object.values(o));return(0,L.jsx)(s.Provider,{value:c,children:r})};o.displayName=t+`Provider`;function s(n,o){let s=o?.[e]?.[a]||i,c=v.useContext(s);if(c)return c;if(r!==void 0)return r;throw Error(`\`${n}\` must be used within \`${t}\``)}return[o,s]}let i=()=>{let t=n.map(e=>v.createContext(e));return function(n){let r=n?.[e]||t;return v.useMemo(()=>({[`__scope${e}`]:{...n,[e]:r}}),[n,r])}};return i.scopeName=e,[r,hn(i,...t)]}function hn(...e){let t=e[0];if(e.length===1)return t;let n=()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let r=n.reduce((t,{useScope:n,scopeName:r})=>{let i=n(e)[`__scope${r}`];return{...t,...i}},{});return v.useMemo(()=>({[`__scope${t.scopeName}`]:r}),[r])}};return n.scopeName=t.scopeName,n}var gn=globalThis?.document?v.useLayoutEffect:()=>{},_n=v.useId||(()=>void 0),vn=0;function yn(e){let[t,n]=v.useState(_n());return gn(()=>{e||n(e=>e??String(vn++))},[e]),e||(t?`radix-${t}`:``)}var bn=v.useEffectEvent,xn=v.useInsertionEffect;function Sn(e){if(typeof bn==`function`)return bn(e);let t=v.useRef(()=>{throw Error(`Cannot call an event handler while rendering.`)});return typeof xn==`function`?xn(()=>{t.current=e}):gn(()=>{t.current=e}),v.useMemo(()=>((...e)=>t.current?.(...e)),[])}var Cn=v.useInsertionEffect||gn;function wn({prop:e,defaultProp:t,onChange:n=()=>{},caller:r}){let[i,a,o]=Tn({defaultProp:t,onChange:n}),s=e!==void 0,c=s?e:i;{let t=v.useRef(e!==void 0);v.useEffect(()=>{let e=t.current;e!==s&&console.warn(`${r} is changing from ${e?`controlled`:`uncontrolled`} to ${s?`controlled`:`uncontrolled`}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),t.current=s},[s,r])}return[c,v.useCallback(t=>{if(s){let n=En(t)?t(e):t;n!==e&&o.current?.(n)}else a(t)},[s,e,a,o])]}function Tn({defaultProp:e,onChange:t}){let[n,r]=v.useState(e),i=v.useRef(n),a=v.useRef(t);return Cn(()=>{a.current=t},[t]),v.useEffect(()=>{i.current!==n&&(a.current?.(n),i.current=n)},[n,i]),[n,r,a]}function En(e){return typeof e==`function`}var Dn=l(h(),1),On=[`a`,`button`,`div`,`form`,`h2`,`h3`,`img`,`input`,`label`,`li`,`nav`,`ol`,`p`,`select`,`span`,`svg`,`ul`].reduce((e,t)=>{let n=ve(`Primitive.${t}`),r=v.forwardRef((e,r)=>{let{asChild:i,...a}=e,o=i?n:t;return typeof window<`u`&&(window[Symbol.for(`radix-ui`)]=!0),(0,L.jsx)(o,{...a,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function kn(e,t){e&&Dn.flushSync(()=>e.dispatchEvent(t))}function An(e){let t=v.useRef(e);return v.useEffect(()=>{t.current=e}),v.useMemo(()=>((...e)=>t.current?.(...e)),[])}var jn=`DismissableLayer`,Mn=`dismissableLayer.update`,Nn=`dismissableLayer.pointerDownOutside`,Pn=`dismissableLayer.focusOutside`,Fn,In=v.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set,dismissableSurfaces:new Set}),Ln=v.forwardRef((e,t)=>{let{disableOutsidePointerEvents:n=!1,deferPointerDownOutside:r=!1,onEscapeKeyDown:i,onPointerDownOutside:a,onFocusOutside:o,onInteractOutside:s,onDismiss:c,...l}=e,u=v.useContext(In),[d,f]=v.useState(null),p=d?.ownerDocument??globalThis?.document,[,m]=v.useState({}),h=_e(t,f),g=Array.from(u.layers),[_]=[...u.layersWithOutsidePointerEventsDisabled].slice(-1),y=g.indexOf(_),b=d?g.indexOf(d):-1,x=u.layersWithOutsidePointerEventsDisabled.size>0,S=b>=y,C=v.useRef(!1),w=Vn(e=>{let t=e.target;if(!(t instanceof Node))return;let n=[...u.branches].some(e=>e.contains(t));!S||n||(a?.(e),s?.(e),e.defaultPrevented||c?.())},{ownerDocument:p,deferPointerDownOutside:r,isDeferredPointerDownOutsideRef:C,dismissableSurfaces:u.dismissableSurfaces}),T=Hn(e=>{if(r&&C.current)return;let t=e.target;[...u.branches].some(e=>e.contains(t))||(o?.(e),s?.(e),e.defaultPrevented||c?.())},p),ee=d?b===g.length-1:!1,te=Sn(e=>{e.key===`Escape`&&(i?.(e),!e.defaultPrevented&&c&&(e.preventDefault(),c()))});return v.useEffect(()=>{if(ee)return p.addEventListener(`keydown`,te,{capture:!0}),()=>p.removeEventListener(`keydown`,te,{capture:!0})},[p,ee]),v.useEffect(()=>{if(d)return n&&(u.layersWithOutsidePointerEventsDisabled.size===0&&(Fn=p.body.style.pointerEvents,p.body.style.pointerEvents=`none`),u.layersWithOutsidePointerEventsDisabled.add(d)),u.layers.add(d),Un(),()=>{n&&(u.layersWithOutsidePointerEventsDisabled.delete(d),u.layersWithOutsidePointerEventsDisabled.size===0&&(p.body.style.pointerEvents=Fn))}},[d,p,n,u]),v.useEffect(()=>()=>{d&&(u.layers.delete(d),u.layersWithOutsidePointerEventsDisabled.delete(d),Un())},[d,u]),v.useEffect(()=>{let e=()=>m({});return document.addEventListener(Mn,e),()=>document.removeEventListener(Mn,e)},[]),(0,L.jsx)(On.div,{...l,ref:h,style:{pointerEvents:x?S?`auto`:`none`:void 0,...e.style},onFocusCapture:pn(e.onFocusCapture,T.onFocusCapture),onBlurCapture:pn(e.onBlurCapture,T.onBlurCapture),onPointerDownCapture:pn(e.onPointerDownCapture,w.onPointerDownCapture)})});Ln.displayName=jn;var Rn=`DismissableLayerBranch`,zn=v.forwardRef((e,t)=>{let n=v.useContext(In),r=v.useRef(null),i=_e(t,r);return v.useEffect(()=>{let e=r.current;if(e)return n.branches.add(e),()=>{n.branches.delete(e)}},[n.branches]),(0,L.jsx)(On.div,{...e,ref:i})});zn.displayName=Rn;function Bn(){let e=v.useContext(In),[t,n]=v.useState(null);return v.useEffect(()=>{if(t)return e.dismissableSurfaces.add(t),()=>{e.dismissableSurfaces.delete(t)}},[t,e.dismissableSurfaces]),n}function Vn(e,t){let{ownerDocument:n=globalThis?.document,deferPointerDownOutside:r=!1,isDeferredPointerDownOutsideRef:i,dismissableSurfaces:a}=t,o=An(e),s=v.useRef(!1),c=v.useRef(!1),l=v.useRef(new Map),u=v.useRef(()=>{});return v.useEffect(()=>{function e(){c.current=!1,i.current=!1,l.current.clear()}function t(){return Array.from(l.current.values()).some(Boolean)}function d(e){if(!c.current)return;let t=e.target;t instanceof Node&&[...a].some(e=>e.contains(t))||l.current.set(e.type,!0),e.type===`click`&&window.setTimeout(()=>{c.current&&u.current()},0)}function f(e){c.current&&l.current.set(e.type,!1)}let p=a=>{if(a.target&&!s.current){let s=function(){n.removeEventListener(`click`,u.current);let r=t();e(),r||Wn(Nn,o,d,{discrete:!0})},d={originalEvent:a};c.current=!0,i.current=r&&a.button===0,l.current.clear(),!r||a.button!==0?s():(n.removeEventListener(`click`,u.current),u.current=s,n.addEventListener(`click`,u.current,{once:!0}))}else n.removeEventListener(`click`,u.current),e();s.current=!1},m=[`pointerup`,`mousedown`,`mouseup`,`touchstart`,`touchend`,`click`];for(let e of m)n.addEventListener(e,d,!0),n.addEventListener(e,f);let h=window.setTimeout(()=>{n.addEventListener(`pointerdown`,p)},0);return()=>{window.clearTimeout(h),n.removeEventListener(`pointerdown`,p),n.removeEventListener(`click`,u.current);for(let e of m)n.removeEventListener(e,d,!0),n.removeEventListener(e,f)}},[n,o,r,i,a]),{onPointerDownCapture:()=>s.current=!0}}function Hn(e,t=globalThis?.document){let n=An(e),r=v.useRef(!1);return v.useEffect(()=>{let e=e=>{e.target&&!r.current&&Wn(Pn,n,{originalEvent:e},{discrete:!1})};return t.addEventListener(`focusin`,e),()=>t.removeEventListener(`focusin`,e)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function Un(){let e=new CustomEvent(Mn);document.dispatchEvent(e)}function Wn(e,t,n,{discrete:r}){let i=n.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&i.addEventListener(e,t,{once:!0}),r?kn(i,a):i.dispatchEvent(a)}var Gn=`focusScope.autoFocusOnMount`,Kn=`focusScope.autoFocusOnUnmount`,qn={bubbles:!1,cancelable:!0},Jn=`FocusScope`,Yn=v.forwardRef((e,t)=>{let{loop:n=!1,trapped:r=!1,onMountAutoFocus:i,onUnmountAutoFocus:a,...o}=e,[s,c]=v.useState(null),l=An(i),u=An(a),d=v.useRef(null),f=_e(t,c),p=v.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;v.useEffect(()=>{if(r){let e=function(e){if(p.paused||!s)return;let t=e.target;s.contains(t)?d.current=t:nr(d.current,{select:!0})},t=function(e){if(p.paused||!s)return;let t=e.relatedTarget;t!==null&&(s.contains(t)||nr(d.current,{select:!0}))},n=function(e){if(document.activeElement===document.body)for(let t of e)t.removedNodes.length>0&&nr(s)};document.addEventListener(`focusin`,e),document.addEventListener(`focusout`,t);let r=new MutationObserver(n);return s&&r.observe(s,{childList:!0,subtree:!0}),()=>{document.removeEventListener(`focusin`,e),document.removeEventListener(`focusout`,t),r.disconnect()}}},[r,s,p.paused]),v.useEffect(()=>{if(s){rr.add(p);let e=document.activeElement;if(!s.contains(e)){let t=new CustomEvent(Gn,qn);s.addEventListener(Gn,l),s.dispatchEvent(t),t.defaultPrevented||(Xn(or(Qn(s)),{select:!0}),document.activeElement===e&&nr(s))}return()=>{s.removeEventListener(Gn,l),setTimeout(()=>{let t=new CustomEvent(Kn,qn);s.addEventListener(Kn,u),s.dispatchEvent(t),t.defaultPrevented||nr(e??document.body,{select:!0}),s.removeEventListener(Kn,u),rr.remove(p)},0)}}},[s,l,u,p]);let m=v.useCallback(e=>{if(!n&&!r||p.paused)return;let t=e.key===`Tab`&&!e.altKey&&!e.ctrlKey&&!e.metaKey,i=document.activeElement;if(t&&i){let t=e.currentTarget,[r,a]=Zn(t);r&&a?!e.shiftKey&&i===a?(e.preventDefault(),n&&nr(r,{select:!0})):e.shiftKey&&i===r&&(e.preventDefault(),n&&nr(a,{select:!0})):i===t&&e.preventDefault()}},[n,r,p.paused]);return(0,L.jsx)(On.div,{tabIndex:-1,...o,ref:f,onKeyDown:m})});Yn.displayName=Jn;function Xn(e,{select:t=!1}={}){let n=document.activeElement;for(let r of e)if(nr(r,{select:t}),document.activeElement!==n)return}function Zn(e){let t=Qn(e);return[$n(t,e),$n(t.reverse(),e)]}function Qn(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t=e.tagName===`INPUT`&&e.type===`hidden`;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function $n(e,t){for(let n of e)if(!er(n,{upTo:t}))return n}function er(e,{upTo:t}){if(getComputedStyle(e).visibility===`hidden`)return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display===`none`)return!0;e=e.parentElement}return!1}function tr(e){return e instanceof HTMLInputElement&&`select`in e}function nr(e,{select:t=!1}={}){if(e&&e.focus){let n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&tr(e)&&t&&e.select()}}var rr=ir();function ir(){let e=[];return{add(t){let n=e[0];t!==n&&n?.pause(),e=ar(e,t),e.unshift(t)},remove(t){e=ar(e,t),e[0]?.resume()}}}function ar(e,t){let n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function or(e){return e.filter(e=>e.tagName!==`A`)}var sr=`Portal`,cr=v.forwardRef((e,t)=>{let{container:n,...r}=e,[i,a]=v.useState(!1);gn(()=>a(!0),[]);let o=n||i&&globalThis?.document?.body;return o?Dn.createPortal((0,L.jsx)(On.div,{...r,ref:t}),o):null});cr.displayName=sr;function lr(e,t){return v.useReducer((e,n)=>t[e][n]??e,e)}var ur=e=>{let{present:t,children:n}=e,r=dr(t),i=typeof n==`function`?n({present:r.isPresent}):v.Children.only(n),a=pr(r.ref,hr(i));return typeof n==`function`||r.isPresent?v.cloneElement(i,{ref:a}):null};ur.displayName=`Presence`;function dr(e){let[t,n]=v.useState(),r=v.useRef(null),i=v.useRef(e),a=v.useRef(`none`),[o,s]=lr(e?`mounted`:`unmounted`,{mounted:{UNMOUNT:`unmounted`,ANIMATION_OUT:`unmountSuspended`},unmountSuspended:{MOUNT:`mounted`,ANIMATION_END:`unmounted`},unmounted:{MOUNT:`mounted`}});return v.useEffect(()=>{let e=mr(r.current);a.current=o===`mounted`?e:`none`},[o]),gn(()=>{let t=r.current,n=i.current;if(n!==e){let r=a.current,o=mr(t);e?s(`MOUNT`):o===`none`||t?.display===`none`?s(`UNMOUNT`):s(n&&r!==o?`ANIMATION_OUT`:`UNMOUNT`),i.current=e}},[e,s]),gn(()=>{if(t){let e,n=t.ownerDocument.defaultView??window,o=a=>{let o=mr(r.current).includes(CSS.escape(a.animationName));if(a.target===t&&o&&(s(`ANIMATION_END`),!i.current)){let r=t.style.animationFillMode;t.style.animationFillMode=`forwards`,e=n.setTimeout(()=>{t.style.animationFillMode===`forwards`&&(t.style.animationFillMode=r)})}},c=e=>{e.target===t&&(a.current=mr(r.current))};return t.addEventListener(`animationstart`,c),t.addEventListener(`animationcancel`,o),t.addEventListener(`animationend`,o),()=>{n.clearTimeout(e),t.removeEventListener(`animationstart`,c),t.removeEventListener(`animationcancel`,o),t.removeEventListener(`animationend`,o)}}else s(`ANIMATION_END`)},[t,s]),{isPresent:[`mounted`,`unmountSuspended`].includes(o),ref:v.useCallback(e=>{r.current=e?getComputedStyle(e):null,n(e)},[])}}function fr(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}function pr(...e){let t=v.useRef(e);return t.current=e,v.useCallback(e=>{let n=t.current,r=!1,i=n.map(t=>{let n=fr(t,e);return!r&&typeof n==`function`&&(r=!0),n});if(r)return()=>{for(let e=0;e{_r||={start:yr(),end:yr()};let{start:e,end:t}=_r;return document.body.firstElementChild!==e&&document.body.insertAdjacentElement(`afterbegin`,e),document.body.lastElementChild!==t&&document.body.insertAdjacentElement(`beforeend`,t),gr++,()=>{gr===1&&(_r?.start.remove(),_r?.end.remove(),_r=null),gr=Math.max(0,gr-1)}},[])}function yr(){let e=document.createElement(`span`);return e.setAttribute(`data-radix-focus-guard`,``),e.tabIndex=0,e.style.outline=`none`,e.style.opacity=`0`,e.style.position=`fixed`,e.style.pointerEvents=`none`,e}var br=function(){return br=Object.assign||function(e){for(var t,n=1,r=arguments.length;n`u`)return Jr;var t=Xr(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},Qr=qr(),$r=`data-scroll-locked`,ei=function(e,t,n,r){var i=e.left,a=e.top,o=e.right,s=e.gap;return n===void 0&&(n=`margin`),` + .${Tr} { + overflow: hidden ${r}; + padding-right: ${s}px ${r}; + } + body[${$r}] { + overflow: hidden ${r}; + overscroll-behavior: contain; + ${[t&&`position: relative ${r};`,n===`margin`&&` + padding-left: ${i}px; + padding-top: ${a}px; + padding-right: ${o}px; + margin-left:0; + margin-top:0; + margin-right: ${s}px ${r}; + `,n===`padding`&&`padding-right: ${s}px ${r};`].filter(Boolean).join(``)} + } + + .${Cr} { + right: ${s}px ${r}; + } + + .${wr} { + margin-right: ${s}px ${r}; + } + + .${Cr} .${Cr} { + right: 0 ${r}; + } + + .${wr} .${wr} { + margin-right: 0 ${r}; + } + + body[${$r}] { + ${Er}: ${s}px; + } +`},ti=function(){var e=parseInt(document.body.getAttribute(`data-scroll-locked`)||`0`,10);return isFinite(e)?e:0},ni=function(){v.useEffect(function(){return document.body.setAttribute($r,(ti()+1).toString()),function(){var e=ti()-1;e<=0?document.body.removeAttribute($r):document.body.setAttribute($r,e.toString())}},[])},ri=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,i=r===void 0?`margin`:r;ni();var a=v.useMemo(function(){return Zr(i)},[i]);return v.createElement(Qr,{styles:ei(a,!t,i,n?``:`!important`)})},ii=!1;if(typeof window<`u`)try{var ai=Object.defineProperty({},"passive",{get:function(){return ii=!0,!0}});window.addEventListener(`test`,ai,ai),window.removeEventListener(`test`,ai,ai)}catch{ii=!1}var oi=ii?{passive:!1}:!1,si=function(e){return e.tagName===`TEXTAREA`},ci=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!==`hidden`&&!(n.overflowY===n.overflowX&&!si(e)&&n[t]===`visible`)},li=function(e){return ci(e,`overflowY`)},ui=function(e){return ci(e,`overflowX`)},di=function(e,t){var n=t.ownerDocument,r=t;do{if(typeof ShadowRoot<`u`&&r instanceof ShadowRoot&&(r=r.host),mi(e,r)){var i=hi(e,r);if(i[1]>i[2])return!0}r=r.parentNode}while(r&&r!==n.body);return!1},fi=function(e){return[e.scrollTop,e.scrollHeight,e.clientHeight]},pi=function(e){return[e.scrollLeft,e.scrollWidth,e.clientWidth]},mi=function(e,t){return e===`v`?li(t):ui(t)},hi=function(e,t){return e===`v`?fi(t):pi(t)},gi=function(e,t){return e===`h`&&t===`rtl`?-1:1},_i=function(e,t,n,r,i){var a=gi(e,window.getComputedStyle(t).direction),o=a*r,s=n.target,c=t.contains(s),l=!1,u=o>0,d=0,f=0;do{if(!s)break;var p=hi(e,s),m=p[0],h=p[1]-p[2]-a*m;(m||h)&&mi(e,s)&&(d+=h,f+=m);var g=s.parentNode;s=g&&g.nodeType===Node.DOCUMENT_FRAGMENT_NODE?g.host:g}while(!c&&s!==document.body||c&&(t.contains(s)||t===s));return(u&&(i&&Math.abs(d)<1||!i&&o>d)||!u&&(i&&Math.abs(f)<1||!i&&-o>f))&&(l=!0),l},vi=function(e){return`changedTouches`in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},yi=function(e){return[e.deltaX,e.deltaY]},bi=function(e){return e&&`current`in e?e.current:e},xi=function(e,t){return e[0]===t[0]&&e[1]===t[1]},Si=function(e){return` + .block-interactivity-${e} {pointer-events: none;} + .allow-interactivity-${e} {pointer-events: all;} +`},Ci=0,wi=[];function Ti(e){var t=v.useRef([]),n=v.useRef([0,0]),r=v.useRef(),i=v.useState(Ci++)[0],a=v.useState(qr)[0],o=v.useRef(e);v.useEffect(function(){o.current=e},[e]),v.useEffect(function(){if(e.inert){document.body.classList.add(`block-interactivity-${i}`);var t=Sr([e.lockRef.current],(e.shards||[]).map(bi),!0).filter(Boolean);return t.forEach(function(e){return e.classList.add(`allow-interactivity-${i}`)}),function(){document.body.classList.remove(`block-interactivity-${i}`),t.forEach(function(e){return e.classList.remove(`allow-interactivity-${i}`)})}}},[e.inert,e.lockRef.current,e.shards]);var s=v.useCallback(function(e,t){if(`touches`in e&&e.touches.length===2||e.type===`wheel`&&e.ctrlKey)return!o.current.allowPinchZoom;var i=vi(e),a=n.current,s=`deltaX`in e?e.deltaX:a[0]-i[0],c=`deltaY`in e?e.deltaY:a[1]-i[1],l,u=e.target,d=Math.abs(s)>Math.abs(c)?`h`:`v`;if(`touches`in e&&d===`h`&&u.type===`range`)return!1;var f=window.getSelection(),p=f&&f.anchorNode;if(p&&(p===u||p.contains(u)))return!1;var m=di(d,u);if(!m)return!0;if(m?l=d:(l=d===`v`?`h`:`v`,m=di(d,u)),!m)return!1;if(!r.current&&`changedTouches`in e&&(s||c)&&(r.current=l),!l)return!0;var h=r.current||l;return _i(h,t,e,h===`h`?s:c,!0)},[]),c=v.useCallback(function(e){var n=e;if(!(!wi.length||wi[wi.length-1]!==a)){var r=`deltaY`in n?yi(n):vi(n),i=t.current.filter(function(e){return e.name===n.type&&(e.target===n.target||n.target===e.shadowParent)&&xi(e.delta,r)})[0];if(i&&i.should){n.cancelable&&n.preventDefault();return}if(!i){var c=(o.current.shards||[]).map(bi).filter(Boolean).filter(function(e){return e.contains(n.target)});(c.length>0?s(n,c[0]):!o.current.noIsolation)&&n.cancelable&&n.preventDefault()}}},[]),l=v.useCallback(function(e,n,r,i){var a={name:e,delta:n,target:r,should:i,shadowParent:Ei(r)};t.current.push(a),setTimeout(function(){t.current=t.current.filter(function(e){return e!==a})},1)},[]),u=v.useCallback(function(e){n.current=vi(e),r.current=void 0},[]),d=v.useCallback(function(t){l(t.type,yi(t),t.target,s(t,e.lockRef.current))},[]),f=v.useCallback(function(t){l(t.type,vi(t),t.target,s(t,e.lockRef.current))},[]);v.useEffect(function(){return wi.push(a),e.setCallbacks({onScrollCapture:d,onWheelCapture:d,onTouchMoveCapture:f}),document.addEventListener(`wheel`,c,oi),document.addEventListener(`touchmove`,c,oi),document.addEventListener(`touchstart`,u,oi),function(){wi=wi.filter(function(e){return e!==a}),document.removeEventListener(`wheel`,c,oi),document.removeEventListener(`touchmove`,c,oi),document.removeEventListener(`touchstart`,u,oi)}},[]);var p=e.removeScrollBar,m=e.inert;return v.createElement(v.Fragment,null,m?v.createElement(a,{styles:Si(i)}):null,p?v.createElement(ri,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function Ei(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}var Di=Ir(Lr,Ti),Oi=v.forwardRef(function(e,t){return v.createElement(zr,br({},e,{ref:t,sideCar:Di}))});Oi.classNames=zr.classNames;var ki=function(e){return typeof document>`u`?null:(Array.isArray(e)?e[0]:e).ownerDocument.body},Ai=new WeakMap,ji=new WeakMap,Mi={},Ni=0,Pi=function(e){return e&&(e.host||Pi(e.parentNode))},R=function(e,t){return t.map(function(t){if(e.contains(t))return t;var n=Pi(t);return n&&e.contains(n)?n:(console.error(`aria-hidden`,t,`in not contained inside`,e,`. Doing nothing`),null)}).filter(function(e){return!!e})},z=function(e,t,n,r){var i=R(t,Array.isArray(e)?e:[e]);Mi[n]||(Mi[n]=new WeakMap);var a=Mi[n],o=[],s=new Set,c=new Set(i),l=function(e){!e||s.has(e)||(s.add(e),l(e.parentNode))};i.forEach(l);var u=function(e){!e||c.has(e)||Array.prototype.forEach.call(e.children,function(e){if(s.has(e))u(e);else try{var t=e.getAttribute(r),i=t!==null&&t!==`false`,c=(Ai.get(e)||0)+1,l=(a.get(e)||0)+1;Ai.set(e,c),a.set(e,l),o.push(e),c===1&&i&&ji.set(e,!0),l===1&&e.setAttribute(n,`true`),i||e.setAttribute(r,`true`)}catch(t){console.error(`aria-hidden: cannot operate on `,e,t)}})};return u(t),s.clear(),Ni++,function(){o.forEach(function(e){var t=Ai.get(e)-1,i=a.get(e)-1;Ai.set(e,t),a.set(e,i),t||(ji.has(e)||e.removeAttribute(r),ji.delete(e)),i||e.removeAttribute(n)}),Ni--,Ni||(Ai=new WeakMap,Ai=new WeakMap,ji=new WeakMap,Mi={})}},Fi=function(e,t,n){n===void 0&&(n=`data-aria-hidden`);var r=Array.from(Array.isArray(e)?e:[e]),i=t||ki(e);return i?(r.push.apply(r,Array.from(i.querySelectorAll(`[aria-live], script`))),z(r,i,n,`aria-hidden`)):function(){return null}},Ii=`Dialog`,[Li,Ri]=mn(Ii),[zi,Bi]=Li(Ii),Vi=e=>{let{__scopeDialog:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:o=!0}=e,s=v.useRef(null),c=v.useRef(null),[l,u]=wn({prop:r,defaultProp:i??!1,onChange:a,caller:Ii});return(0,L.jsx)(zi,{scope:t,triggerRef:s,contentRef:c,contentId:yn(),titleId:yn(),descriptionId:yn(),open:l,onOpenChange:u,onOpenToggle:v.useCallback(()=>u(e=>!e),[u]),modal:o,children:n})};Vi.displayName=Ii;var Hi=`DialogTrigger`,Ui=v.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=Bi(Hi,n),a=_e(t,i.triggerRef);return(0,L.jsx)(On.button,{type:`button`,"aria-haspopup":`dialog`,"aria-expanded":i.open,"aria-controls":i.open?i.contentId:void 0,"data-state":la(i.open),...r,ref:a,onClick:pn(e.onClick,i.onOpenToggle)})});Ui.displayName=Hi;var Wi=`DialogPortal`,[Gi,Ki]=Li(Wi,{forceMount:void 0}),qi=e=>{let{__scopeDialog:t,forceMount:n,children:r,container:i}=e,a=Bi(Wi,t);return(0,L.jsx)(Gi,{scope:t,forceMount:n,children:v.Children.map(r,e=>(0,L.jsx)(ur,{present:n||a.open,children:(0,L.jsx)(cr,{asChild:!0,container:i,children:e})}))})};qi.displayName=Wi;var Ji=`DialogOverlay`,Yi=v.forwardRef((e,t)=>{let n=Ki(Ji,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=Bi(Ji,e.__scopeDialog);return a.modal?(0,L.jsx)(ur,{present:r||a.open,children:(0,L.jsx)(Zi,{...i,ref:t})}):null});Yi.displayName=Ji;var Xi=ve(`DialogOverlay.RemoveScroll`),Zi=v.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=Bi(Ji,n),a=_e(t,Bn());return(0,L.jsx)(Oi,{as:Xi,allowPinchZoom:!0,shards:[i.contentRef],children:(0,L.jsx)(On.div,{"data-state":la(i.open),...r,ref:a,style:{pointerEvents:`auto`,...r.style}})})}),Qi=`DialogContent`,$i=v.forwardRef((e,t)=>{let n=Ki(Qi,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=Bi(Qi,e.__scopeDialog);return(0,L.jsx)(ur,{present:r||a.open,children:a.modal?(0,L.jsx)(ea,{...i,ref:t}):(0,L.jsx)(ta,{...i,ref:t})})});$i.displayName=Qi;var ea=v.forwardRef((e,t)=>{let n=Bi(Qi,e.__scopeDialog),r=v.useRef(null),i=_e(t,n.contentRef,r);return v.useEffect(()=>{let e=r.current;if(e)return Fi(e)},[]),(0,L.jsx)(na,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:n.open,onCloseAutoFocus:pn(e.onCloseAutoFocus,e=>{e.preventDefault(),n.triggerRef.current?.focus()}),onPointerDownOutside:pn(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;(t.button===2||n)&&e.preventDefault()}),onFocusOutside:pn(e.onFocusOutside,e=>e.preventDefault())})}),ta=v.forwardRef((e,t)=>{let n=Bi(Qi,e.__scopeDialog),r=v.useRef(!1),i=v.useRef(!1);return(0,L.jsx)(na,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(r.current||n.triggerRef.current?.focus(),t.preventDefault()),r.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(r.current=!0,t.detail.originalEvent.type===`pointerdown`&&(i.current=!0));let a=t.target;n.triggerRef.current?.contains(a)&&t.preventDefault(),t.detail.originalEvent.type===`focusin`&&i.current&&t.preventDefault()}})}),na=v.forwardRef((e,t)=>{let{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:a,...o}=e,s=Bi(Qi,n);return vr(),(0,L.jsx)(L.Fragment,{children:(0,L.jsx)(Yn,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:i,onUnmountAutoFocus:a,children:(0,L.jsx)(Ln,{role:`dialog`,id:s.contentId,"aria-describedby":s.descriptionId,"aria-labelledby":s.titleId,"data-state":la(s.open),...o,ref:t,deferPointerDownOutside:!0,onDismiss:()=>s.onOpenChange(!1)})})})}),ra=`DialogTitle`,ia=v.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=Bi(ra,n);return(0,L.jsx)(On.h2,{id:i.titleId,...r,ref:t})});ia.displayName=ra;var aa=`DialogDescription`,oa=v.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=Bi(aa,n);return(0,L.jsx)(On.p,{id:i.descriptionId,...r,ref:t})});oa.displayName=aa;var sa=`DialogClose`,ca=v.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=Bi(sa,n);return(0,L.jsx)(On.button,{type:`button`,...r,ref:t,onClick:pn(e.onClick,()=>i.onOpenChange(!1))})});ca.displayName=sa;function la(e){return e?`open`:`closed`}var ua=Vi,da=v.forwardRef(({className:e,children:t,...n},r)=>(0,L.jsxs)(qi,{children:[(0,L.jsx)(Yi,{className:`fixed inset-0 z-50 bg-black/40 data-[state=open]:animate-in data-[state=closed]:animate-out`}),(0,L.jsxs)($i,{ref:r,className:cn(`fixed left-1/2 top-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 border bg-card p-6 shadow-lg rounded-xl`,e),...n,children:[t,(0,L.jsxs)(ca,{className:`absolute right-4 top-4 opacity-70 hover:opacity-100`,children:[(0,L.jsx)(me,{className:`h-4 w-4`}),(0,L.jsx)(`span`,{className:`sr-only`,children:`关闭`})]})]})]}));da.displayName=`DialogContent`;function fa({className:e,...t}){return(0,L.jsx)(`div`,{className:cn(`flex flex-col space-y-1.5`,e),...t})}function pa({className:e,...t}){return(0,L.jsx)(ia,{className:cn(`text-lg font-semibold`,e),...t})}function ma(e,t){return function(){return e.apply(t,arguments)}}var{toString:ha}=Object.prototype,{getPrototypeOf:ga}=Object,{iterator:_a,toStringTag:va}=Symbol,ya=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),ba=(e,t)=>{let n=e,r=[];for(;n!=null&&n!==Object.prototype;){if(r.indexOf(n)!==-1)return!1;if(r.push(n),ya(n,t))return!0;n=ga(n)}return!1},xa=(e,t)=>e!=null&&ba(e,t)?e[t]:void 0,Sa=(e=>t=>{let n=ha.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),Ca=e=>(e=e.toLowerCase(),t=>Sa(t)===e),wa=e=>t=>typeof t===e,{isArray:Ta}=Array,Ea=wa(`undefined`);function Da(e){return e!==null&&!Ea(e)&&e.constructor!==null&&!Ea(e.constructor)&&ja(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}var Oa=Ca(`ArrayBuffer`);function ka(e){let t;return t=typeof ArrayBuffer<`u`&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&Oa(e.buffer),t}var Aa=wa(`string`),ja=wa(`function`),Ma=wa(`number`),Na=e=>typeof e==`object`&&!!e,Pa=e=>e===!0||e===!1,Fa=e=>{if(!Na(e))return!1;let t=ga(e);return(t===null||t===Object.prototype||ga(t)===null)&&!ba(e,va)&&!ba(e,_a)},Ia=e=>{if(!Na(e)||Da(e))return!1;try{return Object.keys(e).length===0&&Object.getPrototypeOf(e)===Object.prototype}catch{return!1}},La=Ca(`Date`),Ra=Ca(`File`),za=e=>!!(e&&e.uri!==void 0),Ba=e=>e&&e.getParts!==void 0,Va=Ca(`Blob`),Ha=Ca(`FileList`),Ua=e=>Na(e)&&ja(e.pipe);function Wa(){return typeof globalThis<`u`?globalThis:typeof self<`u`?self:typeof window<`u`?window:typeof global<`u`?global:{}}var Ga=Wa(),Ka=Ga.FormData===void 0?void 0:Ga.FormData,qa=e=>{if(!e)return!1;if(Ka&&e instanceof Ka)return!0;let t=ga(e);if(!t||t===Object.prototype||!ja(e.append))return!1;let n=Sa(e);return n===`formdata`||n===`object`&&ja(e.toString)&&e.toString()===`[object FormData]`},Ja=Ca(`URLSearchParams`),[Ya,Xa,Za,Qa]=[`ReadableStream`,`Request`,`Response`,`Headers`].map(Ca),$a=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,``);function eo(e,t,{allOwnKeys:n=!1}={}){if(e==null)return;let r,i;if(typeof e!=`object`&&(e=[e]),Ta(e))for(r=0,i=e.length;r0;)if(i=n[r],t===i.toLowerCase())return i;return null}var no=typeof globalThis<`u`?globalThis:typeof self<`u`?self:typeof window<`u`?window:global,ro=e=>!Ea(e)&&e!==no;function io(...e){let{caseless:t,skipUndefined:n}=ro(this)&&this||{},r={},i=(e,i)=>{if(i===`__proto__`||i===`constructor`||i===`prototype`)return;let a=t&&typeof i==`string`&&to(r,i)||i,o=ya(r,a)?r[a]:void 0;Fa(o)&&Fa(e)?r[a]=io(o,e):Fa(e)?r[a]=io({},e):Ta(e)?r[a]=e.slice():(!n||!Ea(e))&&(r[a]=e)};for(let t=0,n=e.length;t(eo(t,(t,r)=>{n&&ja(t)?Object.defineProperty(e,r,{__proto__:null,value:ma(t,n),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(e,r,{__proto__:null,value:t,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:r}),e),oo=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),so=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),Object.defineProperty(e.prototype,"constructor",{__proto__:null,value:e,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(e,"super",{__proto__:null,value:t.prototype}),n&&Object.assign(e.prototype,n)},co=(e,t,n,r)=>{let i,a,o,s={};if(t||={},e==null)return t;do{for(i=Object.getOwnPropertyNames(e),a=i.length;a-->0;)o=i[a],(!r||r(o,e,t))&&!s[o]&&(t[o]=e[o],s[o]=!0);e=n!==!1&&ga(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},lo=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;let r=e.indexOf(t,n);return r!==-1&&r===n},uo=e=>{if(!e)return null;if(Ta(e))return e;let t=e.length;if(!Ma(t))return null;let n=Array(t);for(;t-->0;)n[t]=e[t];return n},fo=(e=>t=>e&&t instanceof e)(typeof Uint8Array<`u`&&ga(Uint8Array)),po=(e,t)=>{let n=(e&&e[_a]).call(e),r;for(;(r=n.next())&&!r.done;){let n=r.value;t.call(e,n[0],n[1])}},B=(e,t)=>{let n,r=[];for(;(n=e.exec(t))!==null;)r.push(n);return r},V=Ca(`HTMLFormElement`),mo=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(e,t,n){return t.toUpperCase()+n}),{propertyIsEnumerable:ho}=Object.prototype,go=Ca(`RegExp`),_o=(e,t)=>{let n=Object.getOwnPropertyDescriptors(e),r={};eo(n,(n,i)=>{let a;(a=t(n,i,e))!==!1&&(r[i]=a||n)}),Object.defineProperties(e,r)},vo=e=>{_o(e,(t,n)=>{if(ja(e)&&[`arguments`,`caller`,`callee`].includes(n))return!1;let r=e[n];if(ja(r)){if(t.enumerable=!1,`writable`in t){t.writable=!1;return}t.set||=()=>{throw Error(`Can not rewrite read-only method '`+n+`'`)}}})},yo=(e,t)=>{let n={},r=e=>{e.forEach(e=>{n[e]=!0})};return Ta(e)?r(e):r(String(e).split(t)),n},bo=()=>{},xo=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t;function So(e){return!!(e&&ja(e.append)&&e[va]===`FormData`&&e[_a])}var Co=e=>{let t=new WeakSet,n=e=>{if(Na(e)){if(t.has(e))return;if(Da(e))return e;if(!(`toJSON`in e)){t.add(e);let r=Ta(e)?[]:{};return eo(e,(e,t)=>{let i=n(e);!Ea(i)&&(r[t]=i)}),t.delete(e),r}}return e};return n(e)},wo=Ca(`AsyncFunction`),To=e=>e&&(Na(e)||ja(e))&&ja(e.then)&&ja(e.catch),Eo=((e,t)=>e?setImmediate:t?((e,t)=>(no.addEventListener(`message`,({source:n,data:r})=>{n===no&&r===e&&t.length&&t.shift()()},!1),n=>{t.push(n),no.postMessage(e,`*`)}))(`axios@${Math.random()}`,[]):e=>setTimeout(e))(typeof setImmediate==`function`,ja(no.postMessage)),Do=typeof queueMicrotask<`u`?queueMicrotask.bind(no):typeof process<`u`&&process.nextTick||Eo,Oo=e=>e!=null&&ja(e[_a]),H={isArray:Ta,isArrayBuffer:Oa,isBuffer:Da,isFormData:qa,isArrayBufferView:ka,isString:Aa,isNumber:Ma,isBoolean:Pa,isObject:Na,isPlainObject:Fa,isEmptyObject:Ia,isReadableStream:Ya,isRequest:Xa,isResponse:Za,isHeaders:Qa,isUndefined:Ea,isDate:La,isFile:Ra,isReactNativeBlob:za,isReactNative:Ba,isBlob:Va,isRegExp:go,isFunction:ja,isStream:Ua,isURLSearchParams:Ja,isTypedArray:fo,isFileList:Ha,forEach:eo,merge:io,extend:ao,trim:$a,stripBOM:oo,inherits:so,toFlatObject:co,kindOf:Sa,kindOfTest:Ca,endsWith:lo,toArray:uo,forEachEntry:po,matchAll:B,isHTMLForm:V,hasOwnProperty:ya,hasOwnProp:ya,hasOwnInPrototypeChain:ba,getSafeProp:xa,reduceDescriptors:_o,freezeMethods:vo,toObjectSet:yo,toCamelCase:mo,noop:bo,toFiniteNumber:xo,findKey:to,global:no,isContextDefined:ro,isSpecCompliantForm:So,toJSONObject:Co,isAsyncFn:wo,isThenable:To,setImmediate:Eo,asap:Do,isIterable:Oo,isSafeIterable:e=>e!=null&&ba(e,_a)&&Oo(e)},ko=H.toObjectSet([`age`,`authorization`,`content-length`,`content-type`,`etag`,`expires`,`from`,`host`,`if-modified-since`,`if-unmodified-since`,`last-modified`,`location`,`max-forwards`,`proxy-authorization`,`referer`,`retry-after`,`user-agent`]),Ao=e=>{let t={},n,r,i;return e&&e.split(` +`).forEach(function(e){i=e.indexOf(`:`),n=e.substring(0,i).trim().toLowerCase(),r=e.substring(i+1).trim(),!(!n||t[n]&&ko[n])&&(n===`set-cookie`?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+`, `+r:r)}),t};function jo(e){let t=0,n=e.length;for(;tt;){let t=e.charCodeAt(n-1);if(t!==9&&t!==32)break;--n}return t===0&&n===e.length?e:e.slice(t,n)}var Mo=RegExp(`[\\u0000-\\u0008\\u000a-\\u001f\\u007f]+`,`g`),No=RegExp(`[^\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+`,`g`);function Po(e,t){return H.isArray(e)?e.map(e=>Po(e,t)):jo(String(e).replace(t,``))}var Fo=e=>Po(e,Mo),Io=e=>Po(e,No);function Lo(e){let t=Object.create(null);return H.forEach(e.toJSON(),(e,n)=>{t[n]=Io(e)}),t}var Ro=Symbol(`internals`);function zo(e){return e&&String(e).trim().toLowerCase()}function Bo(e){return e===!1||e==null?e:H.isArray(e)?e.map(Bo):Fo(String(e))}function Vo(e){let t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g,r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}var Ho=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function Uo(e,t,n,r,i){if(H.isFunction(r))return r.call(this,t,n);if(i&&(t=n),H.isString(t)){if(H.isString(r))return t.indexOf(r)!==-1;if(H.isRegExp(r))return r.test(t)}}function Wo(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,t,n)=>t.toUpperCase()+n)}function Go(e,t){let n=H.toCamelCase(` `+t);[`get`,`set`,`has`].forEach(r=>{Object.defineProperty(e,r+n,{__proto__:null,value:function(e,n,i){return this[r].call(this,t,e,n,i)},configurable:!0})})}var Ko=class{constructor(e){e&&this.set(e)}set(e,t,n){let r=this;function i(e,t,n){let i=zo(t);if(!i)return;let a=H.findKey(r,i);(!a||r[a]===void 0||n===!0||n===void 0&&r[a]!==!1)&&(r[a||t]=Bo(e))}let a=(e,t)=>H.forEach(e,(e,n)=>i(e,n,t));if(H.isPlainObject(e)||e instanceof this.constructor)a(e,t);else if(H.isString(e)&&(e=e.trim())&&!Ho(e))a(Ao(e),t);else if(H.isObject(e)&&H.isSafeIterable(e)){let n=Object.create(null),r,i;for(let t of e){if(!H.isArray(t))throw TypeError(`Object iterator must return a key-value pair`);i=t[0],H.hasOwnProp(n,i)?(r=n[i],n[i]=H.isArray(r)?[...r,t[1]]:[r,t[1]]):n[i]=t[1]}a(n,t)}else e!=null&&i(t,e,n);return this}get(e,t){if(e=zo(e),e){let n=H.findKey(this,e);if(n){let e=this[n];if(!t)return e;if(t===!0)return Vo(e);if(H.isFunction(t))return t.call(this,e,n);if(H.isRegExp(t))return t.exec(e);throw TypeError(`parser must be boolean|regexp|function`)}}}has(e,t){if(e=zo(e),e){let n=H.findKey(this,e);return!!(n&&this[n]!==void 0&&(!t||Uo(this,this[n],n,t)))}return!1}delete(e,t){let n=this,r=!1;function i(e){if(e=zo(e),e){let i=H.findKey(n,e);i&&(!t||Uo(n,n[i],i,t))&&(delete n[i],r=!0)}}return H.isArray(e)?e.forEach(i):i(e),r}clear(e){let t=Object.keys(this),n=t.length,r=!1;for(;n--;){let i=t[n];(!e||Uo(this,this[i],i,e,!0))&&(delete this[i],r=!0)}return r}normalize(e){let t=this,n={};return H.forEach(this,(r,i)=>{let a=H.findKey(n,i);if(a){t[a]=Bo(r),delete t[i];return}let o=e?Wo(i):String(i).trim();o!==i&&delete t[i],t[o]=Bo(r),n[o]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){let t=Object.create(null);return H.forEach(this,(n,r)=>{n!=null&&n!==!1&&(t[r]=e&&H.isArray(n)?n.join(`, `):n)}),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,t])=>e+`: `+t).join(` +`)}getSetCookie(){return this.get(`set-cookie`)||[]}get[Symbol.toStringTag](){return`AxiosHeaders`}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){let n=new this(e);return t.forEach(e=>n.set(e)),n}static accessor(e){let t=(this[Ro]=this[Ro]={accessors:{}}).accessors,n=this.prototype;function r(e){let r=zo(e);t[r]||(Go(n,e),t[r]=!0)}return H.isArray(e)?e.forEach(r):r(e),this}};Ko.accessor([`Content-Type`,`Content-Length`,`Accept`,`Accept-Encoding`,`User-Agent`,`Authorization`]),H.reduceDescriptors(Ko.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[n]=e}}}),H.freezeMethods(Ko);var qo=`[REDACTED ****]`;function Jo(e){if(H.hasOwnProp(e,`toJSON`))return!0;let t=Object.getPrototypeOf(e);for(;t&&t!==Object.prototype;){if(H.hasOwnProp(t,`toJSON`))return!0;t=Object.getPrototypeOf(t)}return!1}function Yo(e,t){let n=new Set(t.map(e=>String(e).toLowerCase())),r=[],i=e=>{if(typeof e!=`object`||!e||H.isBuffer(e))return e;if(r.indexOf(e)!==-1)return;e instanceof Ko&&(e=e.toJSON()),r.push(e);let t;if(H.isArray(e))t=[],e.forEach((e,n)=>{let r=i(e);H.isUndefined(r)||(t[n]=r)});else{if(!H.isPlainObject(e)&&Jo(e))return r.pop(),e;t=Object.create(null);for(let[r,a]of Object.entries(e)){let e=n.has(r.toLowerCase())?qo:i(a);H.isUndefined(e)||(t[r]=e)}}return r.pop(),t};return i(e)}var U=class e extends Error{static from(t,n,r,i,a,o){let s=new e(t.message,n||t.code,r,i,a);return Object.defineProperty(s,"cause",{__proto__:null,value:t,writable:!0,enumerable:!1,configurable:!0}),s.name=t.name,t.status!=null&&s.status==null&&(s.status=t.status),o&&Object.assign(s,o),s}constructor(e,t,n,r,i){super(e),Object.defineProperty(this,"message",{__proto__:null,value:e,enumerable:!0,writable:!0,configurable:!0}),this.name=`AxiosError`,this.isAxiosError=!0,t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),i&&(this.response=i,this.status=i.status)}toJSON(){let e=this.config,t=e&&H.hasOwnProp(e,`redact`)?e.redact:void 0,n=H.isArray(t)&&t.length>0?Yo(e,t):H.toJSONObject(e);return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:n,code:this.code,status:this.status}}};U.ERR_BAD_OPTION_VALUE=`ERR_BAD_OPTION_VALUE`,U.ERR_BAD_OPTION=`ERR_BAD_OPTION`,U.ECONNABORTED=`ECONNABORTED`,U.ETIMEDOUT=`ETIMEDOUT`,U.ECONNREFUSED=`ECONNREFUSED`,U.ERR_NETWORK=`ERR_NETWORK`,U.ERR_FR_TOO_MANY_REDIRECTS=`ERR_FR_TOO_MANY_REDIRECTS`,U.ERR_DEPRECATED=`ERR_DEPRECATED`,U.ERR_BAD_RESPONSE=`ERR_BAD_RESPONSE`,U.ERR_BAD_REQUEST=`ERR_BAD_REQUEST`,U.ERR_CANCELED=`ERR_CANCELED`,U.ERR_NOT_SUPPORT=`ERR_NOT_SUPPORT`,U.ERR_INVALID_URL=`ERR_INVALID_URL`,U.ERR_FORM_DATA_DEPTH_EXCEEDED=`ERR_FORM_DATA_DEPTH_EXCEEDED`;function Xo(e){return H.isPlainObject(e)||H.isArray(e)}function Zo(e){return H.endsWith(e,`[]`)?e.slice(0,-2):e}function Qo(e,t,n){return e?e.concat(t).map(function(e,t){return e=Zo(e),!n&&t?`[`+e+`]`:e}).join(n?`.`:``):t}function $o(e){return H.isArray(e)&&!e.some(Xo)}var es=H.toFlatObject(H,{},null,function(e){return/^is[A-Z]/.test(e)});function ts(e,t,n){if(!H.isObject(e))throw TypeError(`target must be an object`);t||=new FormData,n=H.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(e,t){return!H.isUndefined(t[e])});let r=n.metaTokens,i=n.visitor||m,a=n.dots,o=n.indexes,s=n.Blob||typeof Blob<`u`&&Blob,c=n.maxDepth===void 0?100:n.maxDepth,l=s&&H.isSpecCompliantForm(t),u=[];if(!H.isFunction(i))throw TypeError(`visitor must be a function`);function d(e){if(e===null)return``;if(H.isDate(e))return e.toISOString();if(H.isBoolean(e))return e.toString();if(!l&&H.isBlob(e))throw new U(`Blob is not supported. Use a Buffer instead.`);if(H.isArrayBuffer(e)||H.isTypedArray(e)){if(l&&typeof s==`function`)return new s([e]);if(typeof Buffer<`u`)return Buffer.from(e);throw new U(`Blob is not supported. Use a Buffer instead.`,U.ERR_NOT_SUPPORT)}return e}function f(e){if(e>c)throw new U(`Object is too deeply nested (`+e+` levels). Max depth: `+c,U.ERR_FORM_DATA_DEPTH_EXCEEDED)}function p(e,t){if(c===1/0)return JSON.stringify(e);let n=[];return JSON.stringify(e,function(e,r){if(!H.isObject(r))return r;for(;n.length&&n[n.length-1]!==this;)n.pop();return n.push(r),f(t+n.length-1),r})}function m(e,n,i){let s=e;if(H.isReactNative(t)&&H.isReactNativeBlob(e))return t.append(Qo(i,n,a),d(e)),!1;if(e&&!i&&typeof e==`object`){if(H.endsWith(n,`{}`))n=r?n:n.slice(0,-2),e=p(e,1);else if(H.isArray(e)&&$o(e)||(H.isFileList(e)||H.endsWith(n,`[]`))&&(s=H.toArray(e)))return n=Zo(n),s.forEach(function(e,r){!(H.isUndefined(e)||e===null)&&t.append(o===!0?Qo([n],r,a):o===null?n:n+`[]`,d(e))}),!1}return Xo(e)?!0:(t.append(Qo(i,n,a),d(e)),!1)}let h=Object.assign(es,{defaultVisitor:m,convertValue:d,isVisitable:Xo});function g(e,n,r=0){if(!H.isUndefined(e)){if(f(r),u.indexOf(e)!==-1)throw Error(`Circular reference detected in `+n.join(`.`));u.push(e),H.forEach(e,function(e,a){(!(H.isUndefined(e)||e===null)&&i.call(t,e,H.isString(a)?a.trim():a,n,h))===!0&&g(e,n?n.concat(a):[a],r+1)}),u.pop()}}if(!H.isObject(e))throw TypeError(`data must be an object`);return g(e),t}function ns(e){let t={"!":`%21`,"'":`%27`,"(":`%28`,")":`%29`,"~":`%7E`,"%20":`+`};return encodeURIComponent(e).replace(/[!'()~]|%20/g,function(e){return t[e]})}function rs(e,t){this._pairs=[],e&&ts(e,this,t)}var is=rs.prototype;is.append=function(e,t){this._pairs.push([e,t])},is.toString=function(e){let t=e?t=>e.call(this,t,ns):ns;return this._pairs.map(function(e){return t(e[0])+`=`+t(e[1])},``).join(`&`)};function as(e){return encodeURIComponent(e).replace(/%3A/gi,`:`).replace(/%24/g,`$`).replace(/%2C/gi,`,`).replace(/%20/g,`+`)}function os(e,t,n){if(!t)return e;e||=``;let r=H.isFunction(n)?{serialize:n}:n,i=H.getSafeProp(r,`encode`)||as,a=H.getSafeProp(r,`serialize`),o;if(o=a?a(t,r):H.isURLSearchParams(t)?t.toString():new rs(t,r).toString(i),o){let t=e.indexOf(`#`);t!==-1&&(e=e.slice(0,t)),e+=(e.indexOf(`?`)===-1?`?`:`&`)+o}return e}var ss=class{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:n?n.synchronous:!1,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&=[]}forEach(e){H.forEach(this.handlers,function(t){t!==null&&e(t)})}},cs={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0,advertiseZstdAcceptEncoding:!1,validateStatusUndefinedResolves:!0},ls={isBrowser:!0,classes:{URLSearchParams:typeof URLSearchParams<`u`?URLSearchParams:rs,FormData:typeof FormData<`u`?FormData:null,Blob:typeof Blob<`u`?Blob:null},protocols:[`http`,`https`,`file`,`blob`,`url`,`data`]},us=s({hasBrowserEnv:()=>ds,hasStandardBrowserEnv:()=>ps,hasStandardBrowserWebWorkerEnv:()=>ms,navigator:()=>fs,origin:()=>hs}),ds=typeof window<`u`&&typeof document<`u`,fs=typeof navigator==`object`&&navigator||void 0,ps=ds&&(!fs||[`ReactNative`,`NativeScript`,`NS`].indexOf(fs.product)<0),ms=typeof WorkerGlobalScope<`u`&&self instanceof WorkerGlobalScope&&typeof self.importScripts==`function`,hs=ds&&window.location.href||`http://localhost`,gs={...us,...ls};function _s(e,t){return ts(e,new gs.classes.URLSearchParams,{visitor:function(e,t,n,r){return gs.isNode&&H.isBuffer(e)?(this.append(t,e.toString(`base64`)),!1):r.defaultVisitor.apply(this,arguments)},...t})}var vs=100;function ys(e){if(e>vs)throw new U(`FormData field is too deeply nested (`+e+` levels). Max depth: `+vs,U.ERR_FORM_DATA_DEPTH_EXCEEDED)}function bs(e){let t=[],n=/\w+|\[(\w*)]/g,r;for(;(r=n.exec(e))!==null;)ys(t.length),t.push(r[0]===`[]`?``:r[1]||r[0]);return t}function xs(e){let t={},n=Object.keys(e),r,i=n.length,a;for(r=0;r=e.length;return a=!a&&H.isArray(r)?r.length:a,s?(H.hasOwnProp(r,a)?r[a]=H.isArray(r[a])?r[a].concat(n):[r[a],n]:r[a]=n,!o):((!H.hasOwnProp(r,a)||!H.isObject(r[a]))&&(r[a]=[]),t(e,n,r[a],i)&&H.isArray(r[a])&&(r[a]=xs(r[a])),!o)}if(H.isFormData(e)&&H.isFunction(e.entries)){let n={};return H.forEachEntry(e,(e,r)=>{t(bs(e),r,n,0)}),n}return null}var Cs=(e,t)=>e!=null&&H.hasOwnProp(e,t)?e[t]:void 0;function ws(e,t,n){if(H.isString(e))try{return(t||JSON.parse)(e),H.trim(e)}catch(e){if(e.name!==`SyntaxError`)throw e}return(n||JSON.stringify)(e)}var Ts={transitional:cs,adapter:[`xhr`,`http`,`fetch`],transformRequest:[function(e,t){let n=t.getContentType()||``,r=n.indexOf(`application/json`)>-1,i=H.isObject(e);if(i&&H.isHTMLForm(e)&&(e=new FormData(e)),H.isFormData(e))return r?JSON.stringify(Ss(e)):e;if(H.isArrayBuffer(e)||H.isBuffer(e)||H.isStream(e)||H.isFile(e)||H.isBlob(e)||H.isReadableStream(e))return e;if(H.isArrayBufferView(e))return e.buffer;if(H.isURLSearchParams(e))return t.setContentType(`application/x-www-form-urlencoded;charset=utf-8`,!1),e.toString();let a;if(i){let t=Cs(this,`formSerializer`);if(n.indexOf(`application/x-www-form-urlencoded`)>-1)return _s(e,t).toString();if((a=H.isFileList(e))||n.indexOf(`multipart/form-data`)>-1){let n=Cs(this,`env`),r=n&&n.FormData;return ts(a?{"files[]":e}:e,r&&new r,t)}}return i||r?(t.setContentType(`application/json`,!1),ws(e)):e}],transformResponse:[function(e){let t=Cs(this,`transitional`)||Ts.transitional,n=t&&t.forcedJSONParsing,r=Cs(this,`responseType`),i=r===`json`;if(H.isResponse(e)||H.isReadableStream(e))return e;if(e&&H.isString(e)&&(n&&!r||i)){let n=!(t&&t.silentJSONParsing)&&i;try{return JSON.parse(e,Cs(this,`parseReviver`))}catch(e){if(n)throw e.name===`SyntaxError`?U.from(e,U.ERR_BAD_RESPONSE,this,null,Cs(this,`response`)):e}}return e}],timeout:0,xsrfCookieName:`XSRF-TOKEN`,xsrfHeaderName:`X-XSRF-TOKEN`,maxContentLength:-1,maxBodyLength:-1,env:{FormData:gs.classes.FormData,Blob:gs.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:`application/json, text/plain, */*`,"Content-Type":void 0}}};H.forEach([`delete`,`get`,`head`,`post`,`put`,`patch`,`query`],e=>{Ts.headers[e]={}});function Es(e,t){let n=this||Ts,r=t||n,i=Ko.from(r.headers),a=r.data;return H.forEach(e,function(e){a=e.call(n,a,i.normalize(),t?t.status:void 0)}),i.normalize(),a}function Ds(e){return!!(e&&e.__CANCEL__)}var Os=class extends U{constructor(e,t,n){super(e??`canceled`,U.ERR_CANCELED,t,n),this.name=`CanceledError`,this.__CANCEL__=!0}};function ks(e,t,n){let r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new U(`Request failed with status code `+n.status,n.status>=400&&n.status<500?U.ERR_BAD_REQUEST:U.ERR_BAD_RESPONSE,n.config,n.request,n))}function As(e){let t=/^([-+\w]{1,25}):(?:\/\/)?/.exec(e);return t&&t[1]||``}function js(e,t){e||=10;let n=Array(e),r=Array(e),i=0,a=0,o;return t=t===void 0?1e3:t,function(s){let c=Date.now(),l=r[a];o||=c,n[i]=s,r[i]=c;let u=a,d=0;for(;u!==i;)d+=n[u++],u%=e;if(i=(i+1)%e,i===a&&(a=(a+1)%e),c-o{n=r,i=null,a&&=(clearTimeout(a),null),e(...t)};return[(...e)=>{let t=Date.now(),s=t-n;s>=r?o(e,t):(i=e,a||=setTimeout(()=>{a=null,o(i)},r-s))},()=>i&&o(i)]}var Ns=(e,t,n=3)=>{let r=0,i=js(50,250);return Ms(n=>{if(!n||typeof n.loaded!=`number`)return;let a=n.loaded,o=n.lengthComputable?n.total:void 0,s=o==null?a:Math.min(a,o),c=Math.max(0,s-r),l=i(c);r=Math.max(r,s),e({loaded:s,total:o,progress:o?s/o:void 0,bytes:c,rate:l||void 0,estimated:l&&o?(o-s)/l:void 0,event:n,lengthComputable:o!=null,[t?`download`:`upload`]:!0})},n)},Ps=(e,t)=>{let n=e!=null;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},Fs=e=>(...t)=>H.asap(()=>e(...t)),Is=gs.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,gs.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(gs.origin),gs.navigator&&/(msie|trident)/i.test(gs.navigator.userAgent)):()=>!0,Ls=gs.hasStandardBrowserEnv?{write(e,t,n,r,i,a,o){if(typeof document>`u`)return;let s=[`${e}=${encodeURIComponent(t)}`];H.isNumber(n)&&s.push(`expires=${new Date(n).toUTCString()}`),H.isString(r)&&s.push(`path=${r}`),H.isString(i)&&s.push(`domain=${i}`),a===!0&&s.push(`secure`),H.isString(o)&&s.push(`SameSite=${o}`),document.cookie=s.join(`; `)},read(e){if(typeof document>`u`)return null;let t=document.cookie.split(`;`);for(let n=0;ne instanceof Ko?{...e}:e;function qs(e,t){e||={},t||={};let n=Object.create(null);Object.defineProperty(n,"hasOwnProperty",{__proto__:null,value:Object.prototype.hasOwnProperty,enumerable:!1,writable:!0,configurable:!0});function r(e,t,n,r){return H.isPlainObject(e)&&H.isPlainObject(t)?H.merge.call({caseless:r},e,t):H.isPlainObject(t)?H.merge({},t):H.isArray(t)?t.slice():t}function i(e,t,n,i){if(!H.isUndefined(t))return r(e,t,n,i);if(!H.isUndefined(e))return r(void 0,e,n,i)}function a(e,t){if(!H.isUndefined(t))return r(void 0,t)}function o(e,t){if(!H.isUndefined(t))return r(void 0,t);if(!H.isUndefined(e))return r(void 0,e)}function s(n){let r=H.hasOwnProp(t,`transitional`)?t.transitional:void 0;if(!H.isUndefined(r))if(H.isPlainObject(r)){if(H.hasOwnProp(r,n))return r[n]}else return;let i=H.hasOwnProp(e,`transitional`)?e.transitional:void 0;if(H.isPlainObject(i)&&H.hasOwnProp(i,n))return i[n]}function c(n,i,a){if(H.hasOwnProp(t,a))return r(n,i);if(H.hasOwnProp(e,a))return r(void 0,n)}let l={url:a,method:a,data:a,baseURL:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,withXSRFToken:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,beforeRedirect:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,allowedSocketPaths:o,responseEncoding:o,validateStatus:c,headers:(e,t,n)=>i(Ks(e),Ks(t),n,!0)};return H.forEach(Object.keys({...e,...t}),function(r){if(r===`__proto__`||r===`constructor`||r===`prototype`)return;let a=H.hasOwnProp(l,r)?l[r]:i,o=a(H.hasOwnProp(e,r)?e[r]:void 0,H.hasOwnProp(t,r)?t[r]:void 0,r);H.isUndefined(o)&&a!==c||(n[r]=o)}),H.hasOwnProp(t,`validateStatus`)&&H.isUndefined(t.validateStatus)&&s(`validateStatusUndefinedResolves`)===!1&&(H.hasOwnProp(e,`validateStatus`)?n.validateStatus=r(void 0,e.validateStatus):delete n.validateStatus),n}var Js=[`content-type`,`content-length`];function Ys(e,t,n){if(n!==`content-only`){e.set(t);return}Object.entries(t||{}).forEach(([t,n])=>{Js.includes(t.toLowerCase())&&e.set(t,n)})}var Xs=e=>encodeURIComponent(e).replace(/%([0-9A-F]{2})/gi,(e,t)=>String.fromCharCode(parseInt(t,16)));function Zs(e){let t=qs({},e),n=e=>H.hasOwnProp(t,e)?t[e]:void 0,r=n(`data`),i=n(`withXSRFToken`),a=n(`xsrfHeaderName`),o=n(`xsrfCookieName`),s=n(`headers`),c=n(`auth`),l=n(`baseURL`),u=n(`allowAbsoluteUrls`),d=n(`url`);if(t.headers=s=Ko.from(s),t.url=os(Gs(l,d,u,t),n(`params`),n(`paramsSerializer`)),c){let t=H.getSafeProp(c,`username`)||``,n=H.getSafeProp(c,`password`)||``;try{s.set(`Authorization`,`Basic `+btoa(t+`:`+(n?Xs(n):``)))}catch(t){throw U.from(t,U.ERR_BAD_OPTION_VALUE,e)}}if(H.isFormData(r)&&(gs.hasStandardBrowserEnv||gs.hasStandardBrowserWebWorkerEnv||H.isReactNative(r)?s.setContentType(void 0):H.isFunction(r.getHeaders)&&Ys(s,r.getHeaders(),n(`formDataHeaderPolicy`))),gs.hasStandardBrowserEnv&&(H.isFunction(i)&&(i=i(t)),i===!0||i==null&&Is(t.url))){let e=a&&o&&Ls.read(o);e&&s.set(a,e)}return t}var Qs=typeof XMLHttpRequest<`u`&&function(e){return new Promise(function(t,n){let r=Zs(e),i=r.data,a=Ko.from(r.headers).normalize(),{responseType:o,onUploadProgress:s,onDownloadProgress:c}=r,l,u,d,f,p;function m(){f&&f(),p&&p(),r.cancelToken&&r.cancelToken.unsubscribe(l),r.signal&&r.signal.removeEventListener(`abort`,l)}let h=new XMLHttpRequest;h.open(r.method.toUpperCase(),r.url,!0),h.timeout=r.timeout;function g(){if(!h)return;let r=Ko.from(`getAllResponseHeaders`in h&&h.getAllResponseHeaders());ks(function(e){t(e),m()},function(e){n(e),m()},{data:!o||o===`text`||o===`json`?h.responseText:h.response,status:h.status,statusText:h.statusText,headers:r,config:e,request:h}),h=null}`onloadend`in h?h.onloadend=g:h.onreadystatechange=function(){!h||h.readyState!==4||h.status===0&&!(h.responseURL&&h.responseURL.startsWith(`file:`))||setTimeout(g)},h.onabort=function(){h&&=(n(new U(`Request aborted`,U.ECONNABORTED,e,h)),m(),null)},h.onerror=function(t){let r=new U(t&&t.message?t.message:`Network Error`,U.ERR_NETWORK,e,h);r.event=t||null,n(r),m(),h=null},h.ontimeout=function(){let t=r.timeout?`timeout of `+r.timeout+`ms exceeded`:`timeout exceeded`,i=r.transitional||cs;r.timeoutErrorMessage&&(t=r.timeoutErrorMessage),n(new U(t,i.clarifyTimeoutError?U.ETIMEDOUT:U.ECONNABORTED,e,h)),m(),h=null},i===void 0&&a.setContentType(null),`setRequestHeader`in h&&H.forEach(Lo(a),function(e,t){h.setRequestHeader(t,e)}),H.isUndefined(r.withCredentials)||(h.withCredentials=!!r.withCredentials),o&&o!==`json`&&(h.responseType=r.responseType),c&&([d,p]=Ns(c,!0),h.addEventListener(`progress`,d)),s&&h.upload&&([u,f]=Ns(s),h.upload.addEventListener(`progress`,u),h.upload.addEventListener(`loadend`,f)),(r.cancelToken||r.signal)&&(l=t=>{h&&=(n(!t||t.type?new Os(null,e,h):t),h.abort(),m(),null)},r.cancelToken&&r.cancelToken.subscribe(l),r.signal&&(r.signal.aborted?l():r.signal.addEventListener(`abort`,l)));let _=As(r.url);if(_&&!gs.protocols.includes(_)){n(new U(`Unsupported protocol `+_+`:`,U.ERR_BAD_REQUEST,e)),m();return}h.send(i||null)})},$s=(e,t)=>{if(e=e?e.filter(Boolean):[],!t&&!e.length)return;let n=new AbortController,r=!1,i=function(e){if(!r){r=!0,o();let t=e instanceof Error?e:this.reason;n.abort(t instanceof U?t:new Os(t instanceof Error?t.message:t))}},a=t&&setTimeout(()=>{a=null,i(new U(`timeout of ${t}ms exceeded`,U.ETIMEDOUT))},t),o=()=>{e&&=(a&&clearTimeout(a),a=null,e.forEach(e=>{e.unsubscribe?e.unsubscribe(i):e.removeEventListener(`abort`,i)}),null)};e.forEach(e=>e.addEventListener(`abort`,i,{once:!0}));let{signal:s}=n;return s.unsubscribe=()=>H.asap(o),s},ec=function*(e,t){let n=e.byteLength;if(!t||n{let i=tc(e,t),a=0,o,s=e=>{o||(o=!0,r&&r(e))};return new ReadableStream({async pull(e){try{let{done:t,value:r}=await i.next();if(t){s(),e.close();return}let o=r.byteLength;n&&n(a+=o),e.enqueue(new Uint8Array(r))}catch(e){throw s(e),e}},cancel(e){return s(e),i.return()}},{highWaterMark:2})},ic=e=>e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102,ac=(e,t,n)=>t+2e>=2&&r.charCodeAt(e-2)===37&&r.charCodeAt(e-1)===51&&(r.charCodeAt(e)===68||r.charCodeAt(e)===100);i>=0&&(r.charCodeAt(i)===61?(n++,i--):a(i)&&(n++,i-=3)),n===1&&i>=0&&(r.charCodeAt(i)===61||a(i))&&n++;let o=Math.floor(e/4)*3-(n||0);return o>0?o:0}let i=0;for(let e=0,t=r.length;e=55296&&n<=56319&&e+1=56320&&t<=57343?(i+=4,e++):i+=3}else i+=3}return i}var sc=`1.18.1`,cc=64*1024,{isFunction:lc}=H,uc=e=>encodeURIComponent(e).replace(/%([0-9A-F]{2})/gi,(e,t)=>String.fromCharCode(parseInt(t,16))),dc=e=>{if(!H.isString(e))return e;try{return decodeURIComponent(e)}catch{return e}},fc=(e,...t)=>{try{return!!e(...t)}catch{return!1}},pc=e=>{let t=e.indexOf(`://`),n=e;return t!==-1&&(n=n.slice(t+3)),n.includes(`@`)||n.includes(`:`)},mc=e=>{let t=H.global!==void 0&&H.global!==null?H.global:globalThis,{ReadableStream:n,TextEncoder:r}=t;e=H.merge.call({skipUndefined:!0},{Request:t.Request,Response:t.Response},e);let{fetch:i,Request:a,Response:o}=e,s=i?lc(i):typeof fetch==`function`,c=lc(a),l=lc(o);if(!s)return!1;let u=s&&lc(n),d=s&&(typeof r==`function`?(e=>t=>e.encode(t))(new r):async e=>new Uint8Array(await new a(e).arrayBuffer())),f=c&&u&&fc(()=>{let e=!1,t=new a(gs.origin,{body:new n,method:`POST`,get duplex(){return e=!0,`half`}}),r=t.headers.has(`Content-Type`);return t.body!=null&&t.body.cancel(),e&&!r}),p=l&&u&&fc(()=>H.isReadableStream(new o(``).body)),m={stream:p&&(e=>e.body)};s&&[`text`,`arrayBuffer`,`blob`,`formData`,`stream`].forEach(e=>{!m[e]&&(m[e]=(t,n)=>{let r=t&&t[e];if(r)return r.call(t);throw new U(`Response type '${e}' is not supported`,U.ERR_NOT_SUPPORT,n)})});let h=async e=>{if(e==null)return 0;if(H.isBlob(e))return e.size;if(H.isSpecCompliantForm(e))return(await new a(gs.origin,{method:`POST`,body:e}).arrayBuffer()).byteLength;if(H.isArrayBufferView(e)||H.isArrayBuffer(e))return e.byteLength;if(H.isURLSearchParams(e)&&(e+=``),H.isString(e))return(await d(e)).byteLength},g=async(e,t)=>H.toFiniteNumber(e.getContentLength())??h(t);return async e=>{let{url:t,method:n,data:s,signal:l,cancelToken:d,timeout:_,onDownloadProgress:v,onUploadProgress:y,responseType:b,headers:x,withCredentials:S=`same-origin`,fetchOptions:C,maxContentLength:w,maxBodyLength:T}=Zs(e),ee=H.isNumber(w)&&w>-1,te=H.isNumber(T)&&T>-1,ne=t=>H.hasOwnProp(e,t)?e[t]:void 0,E=i||fetch;b=b?(b+``).toLowerCase():`text`;let re=$s([l,d&&d.toAbortSignal()],_),D=null,O=re&&re.unsubscribe&&(()=>{re.unsubscribe()}),ie,ae=null,oe=()=>new U(`Request body larger than maxBodyLength limit`,U.ERR_BAD_REQUEST,e,D);try{let i,l=ne(`auth`);if(l&&(i={username:H.getSafeProp(l,`username`)||``,password:H.getSafeProp(l,`password`)||``}),pc(t)){let e=new URL(t,gs.origin);!i&&(e.username||e.password)&&(i={username:dc(e.username),password:dc(e.password)}),(e.username||e.password)&&(e.username=``,e.password=``,t=e.href)}if(i&&(x.delete(`authorization`),x.set(`Authorization`,`Basic `+btoa(uc((i.username||``)+`:`+(i.password||``))))),ee&&typeof t==`string`&&t.startsWith(`data:`)&&oc(t)>w)throw new U(`maxContentLength size of `+w+` exceeded`,U.ERR_BAD_RESPONSE,e,D);if(te&&n!==`get`&&n!==`head`){let e=await h(s);if(typeof e==`number`&&isFinite(e)&&(ie=e,e>T))throw oe()}let d=te&&(H.isReadableStream(s)||H.isStream(s)),_=(e,t,n)=>rc(e,cc,e=>{if(te&&e>T)throw ae=oe();t&&t(e)},n);if(f&&n!==`get`&&n!==`head`&&(y||d)){if(ie??=await g(x,s),ie!==0||d){let e=new a(t,{method:`POST`,body:s,duplex:`half`}),n;if(H.isFormData(s)&&(n=e.headers.get(`content-type`))&&x.setContentType(n),e.body){let[t,n]=y&&Ps(ie,Ns(Fs(y)))||[];s=_(e.body,t,n)}}}else if(d&&!c&&u&&n!==`get`&&n!==`head`)s=_(s);else if(d&&c&&!f&&n!==`get`&&n!==`head`)throw new U(`Stream request bodies are not supported by the current fetch implementation`,U.ERR_NOT_SUPPORT,e,D);H.isString(S)||(S=S?`include`:`omit`);let k=c&&`credentials`in a.prototype;if(H.isFormData(s)){let e=x.getContentType();e&&/^multipart\/form-data/i.test(e)&&!/boundary=/i.test(e)&&x.delete(`content-type`)}x.set(`User-Agent`,`axios/`+sc,!1);let A={...C,signal:re,method:n.toUpperCase(),headers:Lo(x.normalize()),body:s,duplex:`half`,credentials:k?S:void 0};D=c&&new a(t,A);let se=await(c?E(D,C):E(t,A)),ce=Ko.from(se.headers);if(ee){let t=H.toFiniteNumber(ce.getContentLength());if(t!=null&&t>w)throw new U(`maxContentLength size of `+w+` exceeded`,U.ERR_BAD_RESPONSE,e,D)}let le=p&&(b===`stream`||b===`response`);if(p&&se.body&&(v||ee||le&&O)){let t={};[`status`,`statusText`,`headers`].forEach(e=>{t[e]=se[e]});let n=H.toFiniteNumber(ce.getContentLength()),[r,i]=v&&Ps(n,Ns(Fs(v),!0))||[],a=0;se=new o(rc(se.body,cc,t=>{if(ee&&(a=t,a>w))throw new U(`maxContentLength size of `+w+` exceeded`,U.ERR_BAD_RESPONSE,e,D);r&&r(t)},()=>{i&&i(),O&&O()}),t)}b||=`text`;let j=await m[H.findKey(m,b)||`text`](se,e);if(ee&&!p&&!le){let t;if(j!=null&&(typeof j.byteLength==`number`?t=j.byteLength:typeof j.size==`number`?t=j.size:typeof j==`string`&&(t=typeof r==`function`?new r().encode(j).byteLength:j.length)),typeof t==`number`&&t>w)throw new U(`maxContentLength size of `+w+` exceeded`,U.ERR_BAD_RESPONSE,e,D)}return!le&&O&&O(),await new Promise((t,n)=>{ks(t,n,{data:j,headers:Ko.from(se.headers),status:se.status,statusText:se.statusText,config:e,request:D})})}catch(t){if(O&&O(),re&&re.aborted&&re.reason instanceof U){let n=re.reason;throw n.config=e,D&&(n.request=D),t!==n&&Object.defineProperty(n,"cause",{__proto__:null,value:t,writable:!0,enumerable:!1,configurable:!0}),n}if(ae)throw D&&!ae.request&&(ae.request=D),ae;if(t instanceof U)throw D&&!t.request&&(t.request=D),t;if(t&&t.name===`TypeError`&&/Load failed|fetch/i.test(t.message)){let n=new U(`Network Error`,U.ERR_NETWORK,e,D,t&&t.response);throw Object.defineProperty(n,"cause",{__proto__:null,value:t.cause||t,writable:!0,enumerable:!1,configurable:!0}),n}throw U.from(t,t&&t.code,e,D,t&&t.response)}}},hc=new Map,gc=e=>{let t=e&&e.env||{},{fetch:n,Request:r,Response:i}=t,a=[r,i,n],o=a.length,s,c,l=hc;for(;o--;)s=a[o],c=l.get(s),c===void 0&&l.set(s,c=o?new Map:mc(t)),l=c;return c};gc();var _c={http:null,xhr:Qs,fetch:{get:gc}};H.forEach(_c,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{__proto__:null,value:t})}catch{}Object.defineProperty(e,"adapterName",{__proto__:null,value:t})}});var vc=e=>`- ${e}`,yc=e=>H.isFunction(e)||e===null||e===!1;function bc(e,t){e=H.isArray(e)?e:[e];let{length:n}=e,r,i,a={};for(let o=0;o`adapter ${e} `+(t===!1?`is not supported by the environment`:`is not available in the build`));throw new U(`There is no suitable adapter to dispatch the request `+(n?e.length>1?`since : +`+e.map(vc).join(` +`):` `+vc(e[0]):`as no adapter specified`),U.ERR_NOT_SUPPORT)}return i}var xc={getAdapter:bc,adapters:_c};function Sc(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Os(null,e)}function Cc(e){return Sc(e),e.headers=Ko.from(e.headers),e.data=Es.call(e,e.transformRequest),[`post`,`put`,`patch`].indexOf(e.method)!==-1&&e.headers.setContentType(`application/x-www-form-urlencoded`,!1),xc.getAdapter(e.adapter||Ts.adapter,e)(e).then(function(t){Sc(e),e.response=t;try{t.data=Es.call(e,e.transformResponse,t)}finally{delete e.response}return t.headers=Ko.from(t.headers),t},function(t){if(!Ds(t)&&(Sc(e),t&&t.response)){e.response=t.response;try{t.response.data=Es.call(e,e.transformResponse,t.response)}finally{delete e.response}t.response.headers=Ko.from(t.response.headers)}return Promise.reject(t)})}var wc={};[`object`,`boolean`,`number`,`function`,`string`,`symbol`].forEach((e,t)=>{wc[e]=function(n){return typeof n===e||`a`+(t<1?`n `:` `)+e}});var Tc={};wc.transitional=function(e,t,n){function r(e,t){return`[Axios v`+sc+`] Transitional option '`+e+`'`+t+(n?`. `+n:``)}return(n,i,a)=>{if(e===!1)throw new U(r(i,` has been removed`+(t?` in `+t:``)),U.ERR_DEPRECATED);return t&&!Tc[i]&&(Tc[i]=!0,console.warn(r(i,` has been deprecated since v`+t+` and will be removed in the near future`))),e?e(n,i,a):!0}},wc.spelling=function(e){return(t,n)=>(console.warn(`${n} is likely a misspelling of ${e}`),!0)};function Ec(e,t,n){if(typeof e!=`object`||!e)throw new U(`options must be an object`,U.ERR_BAD_OPTION_VALUE);let r=Object.keys(e),i=r.length;for(;i-->0;){let a=r[i],o=Object.prototype.hasOwnProperty.call(t,a)?t[a]:void 0;if(o){let t=e[a],n=t===void 0||o(t,a,e);if(n!==!0)throw new U(`option `+a+` must be `+n,U.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new U(`Unknown option `+a,U.ERR_BAD_OPTION)}}var Dc={assertOptions:Ec,validators:wc},Oc=Dc.validators,kc=class{constructor(e){this.defaults=e||{},this.interceptors={request:new ss,response:new ss}}async request(e,t){try{return await this._request(e,t)}catch(e){if(e instanceof Error){let t={};Error.captureStackTrace?Error.captureStackTrace(t):t=Error();let n=(()=>{if(!t.stack)return``;let e=t.stack.indexOf(` +`);return e===-1?``:t.stack.slice(e+1)})();try{if(!e.stack)e.stack=n;else if(n){let t=n.indexOf(` +`),r=t===-1?-1:n.indexOf(` +`,t+1),i=r===-1?``:n.slice(r+1);String(e.stack).endsWith(i)||(e.stack+=` +`+n)}}catch{}}throw e}}_request(e,t){typeof e==`string`?(t||={},t.url=e):t=e||{},t=qs(this.defaults,t);let{transitional:n,paramsSerializer:r,headers:i}=t;n!==void 0&&Dc.assertOptions(n,{silentJSONParsing:Oc.transitional(Oc.boolean),forcedJSONParsing:Oc.transitional(Oc.boolean),clarifyTimeoutError:Oc.transitional(Oc.boolean),legacyInterceptorReqResOrdering:Oc.transitional(Oc.boolean),advertiseZstdAcceptEncoding:Oc.transitional(Oc.boolean),validateStatusUndefinedResolves:Oc.transitional(Oc.boolean)},!1),r!=null&&(H.isFunction(r)?t.paramsSerializer={serialize:r}:Dc.assertOptions(r,{encode:Oc.function,serialize:Oc.function},!0)),t.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls===void 0?t.allowAbsoluteUrls=!0:t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls),Dc.assertOptions(t,{baseUrl:Oc.spelling(`baseURL`),withXsrfToken:Oc.spelling(`withXSRFToken`)},!0),t.method=(t.method||this.defaults.method||`get`).toLowerCase();let a=i&&H.merge(i.common,i[t.method]);i&&H.forEach([`delete`,`get`,`head`,`post`,`put`,`patch`,`query`,`common`],e=>{delete i[e]}),t.headers=Ko.concat(a,i);let o=[],s=!0;this.interceptors.request.forEach(function(e){if(typeof e.runWhen==`function`&&e.runWhen(t)===!1)return;s&&=e.synchronous;let n=t.transitional||cs;n&&n.legacyInterceptorReqResOrdering?o.unshift(e.fulfilled,e.rejected):o.push(e.fulfilled,e.rejected)});let c=[];this.interceptors.response.forEach(function(e){c.push(e.fulfilled,e.rejected)});let l,u=0,d;if(!s){let e=[Cc.bind(this),void 0];for(e.unshift(...o),e.push(...c),d=e.length,l=Promise.resolve(t);u{if(!n._listeners)return;let t=n._listeners.length;for(;t-->0;)n._listeners[t](e);n._listeners=null}),this.promise.then=e=>{let t,r=new Promise(e=>{n.subscribe(e),t=e}).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e(function(e,r,i){n.reason||(n.reason=new Os(e,r,i),t(n.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;let t=this._listeners.indexOf(e);t!==-1&&this._listeners.splice(t,1)}toAbortSignal(){let e=new AbortController,t=t=>{e.abort(t)};return this.subscribe(t),e.signal.unsubscribe=()=>this.unsubscribe(t),e.signal}static source(){let t;return{token:new e(function(e){t=e}),cancel:t}}};function jc(e){return function(t){return e.apply(null,t)}}function Mc(e){return H.isObject(e)&&e.isAxiosError===!0}var Nc={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(Nc).forEach(([e,t])=>{Nc[t]=e});function Pc(e){let t=new kc(e),n=ma(kc.prototype.request,t);return H.extend(n,kc.prototype,t,{allOwnKeys:!0}),H.extend(n,t,null,{allOwnKeys:!0}),n.create=function(t){return Pc(qs(e,t))},n}var Fc=Pc(Ts);Fc.Axios=kc,Fc.CanceledError=Os,Fc.CancelToken=Ac,Fc.isCancel=Ds,Fc.VERSION=sc,Fc.toFormData=ts,Fc.AxiosError=U,Fc.Cancel=Fc.CanceledError,Fc.all=function(e){return Promise.all(e)},Fc.spread=jc,Fc.isAxiosError=Mc,Fc.mergeConfig=qs,Fc.AxiosHeaders=Ko,Fc.formToJSON=e=>Ss(H.isHTMLForm(e)?new FormData(e):e),Fc.getAdapter=xc.getAdapter,Fc.HttpStatusCode=Nc,Fc.default=Fc;var Ic=`pets_admin_token`,Lc=()=>localStorage.getItem(Ic)||``,W=e=>localStorage.setItem(Ic,e),Rc=()=>localStorage.removeItem(Ic),zc=Fc.create({baseURL:`/api`,timeout:2e4});zc.interceptors.request.use(e=>{let t=Lc();return t&&(e.headers.Authorization=`Bearer ${t}`),e}),zc.interceptors.response.use(e=>{let t=e.data;if(t?.code===0)return t.data;throw Error(t?.message||`请求失败`)},e=>Fc.isCancel(e)?Promise.reject(e):(e.response?.status===401&&(Rc(),window.dispatchEvent(new Event(`admin-auth-expired`))),Promise.reject(Error(e.response?.data?.message||(e.code===`ECONNABORTED`?`请求超时,请重试`:`无法连接服务器,请稍后重试`)))));var Bc={login:(e,t)=>zc.post(`/admin/login`,{username:e,password:t}),stats:e=>zc.get(`/admin/stats`,{signal:e}),list:(e,t,n)=>zc.get(`/admin/${e}`,{params:t,signal:n}),userPets:(e,t)=>zc.get(`/admin/users/${e}/pets`,{signal:t}),walk:(e,t)=>zc.get(`/admin/walks/${e}`,{signal:t}),setUserDisabled:(e,t)=>zc.put(`/admin/users/${e}/disabled`,{disabled:t}),cancelMeetup:e=>zc.put(`/admin/meetups/${e}/status`,{status:`cancelled`})},Vc={overview:`工作台`,users:`用户管理`,pets:`宠物档案`,walks:`遛狗记录`,meetups:`约遛活动`,tasks:`日常任务`,files:`文件管理`},Hc=e=>e&&!Number.isNaN(Date.parse(e))?new Date(e).toLocaleString(`zh-CN`,{hour12:!1}):`—`,Uc=(e=0)=>e>=1048576?`${(e/1048576).toFixed(1)} MB`:`${(e/1024).toFixed(1)} KB`,Wc=(e=0)=>`${Math.floor(e/3600)}小时 ${Math.floor(e%3600/60)}分钟`,Gc={food:`喂食`,water:`饮水`,walk:`运动`,medicine:`用药`,grooming:`清洁`,other:`其他`},Kc={users:[[`enabled`,`正常`],[`disabled`,`已停用`]],pets:[[`active`,`在用`],[`archived`,`已归档`]],walks:[[`active`,`遛狗中`],[`paused`,`已暂停`],[`finished`,`已结束`]],meetups:[[`open`,`开放`],[`cancelled`,`已取消`]],tasks:Object.entries(Gc)},qc={users:`搜索用户昵称或 ID`,pets:`搜索宠物名字、品种或主人 ID`,walks:`搜索记录 ID 或用户 ID`,meetups:`搜索活动名称、地点或 ID`,tasks:`搜索任务名称、用户或宠物 ID`,files:`搜索文件名、MD5 或 ID`},Jc=[{key:`users`,icon:pe,sub:`每一位养宠伙伴`},{key:`pets`,icon:M,sub:`记录它们的成长`},{key:`walks`,icon:ue,sub:`一起走过的路`},{key:`meetups`,icon:D,sub:`相约下一次出发`},{key:`tasks`,icon:O,sub:`照顾好每一个日常`},{key:`files`,icon:A,sub:`留住温暖的瞬间`}];function Yc({stats:e,navigate:t}){let n=Math.max(1,...(e?.daily_walks||[]).map(e=>e.count));return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`section`,{className:`welcome`,children:[(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`p`,{className:`eyebrow`,children:`A LITTLE CARE, EVERY DAY`}),(0,L.jsx)(`h2`,{children:`把小日常,照顾成好日子。`}),(0,L.jsx)(`p`,{children:`从一张宠物档案,到每一次快乐出门。`})]}),(0,L.jsx)(`img`,{src:`/brand-logo.png`,alt:`肉垫计划`})]}),(0,L.jsx)(`div`,{className:`stat-grid`,children:Jc.map(({key:n,icon:r,sub:i})=>(0,L.jsxs)(`button`,{className:`stat-card tint-${n}`,onClick:()=>t(n),children:[(0,L.jsxs)(`div`,{className:`stat-top`,children:[(0,L.jsx)(`span`,{className:`stat-icon`,children:(0,L.jsx)(r,{size:20})}),(0,L.jsx)(re,{size:16})]}),(0,L.jsx)(`span`,{children:Vc[n]}),(0,L.jsx)(`strong`,{children:e?.[n]??`—`}),(0,L.jsx)(`small`,{children:i})]},n))}),(0,L.jsxs)(`div`,{className:`overview-grid`,children:[(0,L.jsxs)(`section`,{className:`panel`,children:[(0,L.jsxs)(`header`,{className:`panel-heading`,children:[(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`h2`,{children:`这周,一起走了多少次`}),(0,L.jsx)(`p`,{children:`最近 7 天的遛狗记录`})]}),(0,L.jsx)(ue,{size:20})]}),(0,L.jsxs)(`div`,{className:`bar-chart`,role:`img`,"aria-label":`最近七天遛狗次数`,children:[(e?.daily_walks||[]).map(e=>(0,L.jsxs)(`div`,{className:`chart-column`,children:[(0,L.jsx)(`span`,{children:e.count}),(0,L.jsx)(`div`,{className:`bar-space`,children:(0,L.jsx)(`div`,{className:`chart-bar`,style:{height:`${e.count/n*100}%`,minHeight:e.count?6:2},title:`${e.date}:${e.count}次`})}),(0,L.jsx)(`small`,{children:e.date.slice(5).replace(`-`,`/`)})]},e.date)),!e&&(0,L.jsx)(`div`,{className:`empty`,children:`正在加载趋势`})]})]}),(0,L.jsxs)(`section`,{className:`panel today`,children:[(0,L.jsxs)(`header`,{className:`panel-heading`,children:[(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`h2`,{children:`今天的陪伴`}),(0,L.jsx)(`p`,{children:`活动与日常一目了然`})]}),(0,L.jsx)(D,{size:20})]}),(0,L.jsxs)(`dl`,{children:[(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`dt`,{children:`今日出门`}),(0,L.jsxs)(`dd`,{children:[e?.today_walks??`—`,(0,L.jsx)(`small`,{children:`次`})]})]}),(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`dt`,{children:`正在遛狗 / 暂停中`}),(0,L.jsxs)(`dd`,{children:[e?.active_walks??`—`,(0,L.jsx)(`small`,{children:`次`})]})]}),(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`dt`,{children:`待开始的约遛`}),(0,L.jsxs)(`dd`,{children:[e?.upcoming_meetups??`—`,(0,L.jsx)(`small`,{children:`场`})]})]}),(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`dt`,{children:`今日任务已完成`}),(0,L.jsxs)(`dd`,{children:[e?.today_completions??`—`,(0,L.jsx)(`small`,{children:`项`})]})]})]})]})]}),(0,L.jsxs)(`section`,{className:`summary-strip`,children:[(0,L.jsxs)(`div`,{children:[(0,L.jsx)(ue,{size:18}),(0,L.jsx)(`span`,{children:`累计遛狗距离`}),(0,L.jsxs)(`strong`,{children:[e?(e.distance_meters/1e3).toFixed(2):`—`,` km`]})]}),(0,L.jsxs)(`div`,{children:[(0,L.jsx)(A,{size:18}),(0,L.jsx)(`span`,{children:`文件存储用量`}),(0,L.jsx)(`strong`,{children:e?Uc(e.storage_bytes):`—`})]})]})]})}var Xc=v.forwardRef(({className:e,...t},n)=>(0,L.jsx)(`div`,{className:`relative w-full overflow-auto`,children:(0,L.jsx)(`table`,{ref:n,className:cn(`w-full caption-bottom text-sm`,e),...t})}));Xc.displayName=`Table`;var Zc=v.forwardRef(({className:e,...t},n)=>(0,L.jsx)(`thead`,{ref:n,className:cn(`[&_tr]:border-b`,e),...t}));Zc.displayName=`TableHeader`;var Qc=v.forwardRef(({className:e,...t},n)=>(0,L.jsx)(`tbody`,{ref:n,className:cn(`[&_tr:last-child]:border-0`,e),...t}));Qc.displayName=`TableBody`;var $c=v.forwardRef(({className:e,...t},n)=>(0,L.jsx)(`tr`,{ref:n,className:cn(`border-b transition-colors hover:bg-muted/50`,e),...t}));$c.displayName=`TableRow`;var el=v.forwardRef(({className:e,...t},n)=>(0,L.jsx)(`th`,{ref:n,className:cn(`h-10 px-3 text-left align-middle font-medium text-muted-foreground`,e),...t}));el.displayName=`TableHead`;var G=v.forwardRef(({className:e,...t},n)=>(0,L.jsx)(`td`,{ref:n,className:cn(`p-3 align-middle`,e),...t}));G.displayName=`TableCell`;var tl=Fe(`inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold`,{variants:{variant:{default:`border-transparent bg-primary/15 text-primary`,secondary:`border-transparent bg-secondary text-secondary-foreground`,destructive:`border-transparent bg-destructive/15 text-destructive`,outline:`text-foreground`,success:`border-transparent bg-emerald-100 text-emerald-700`,warning:`border-transparent bg-amber-100 text-amber-700`,muted:`border-transparent bg-muted text-muted-foreground`}},defaultVariants:{variant:`default`}});function nl({className:e,variant:t,...n}){return(0,L.jsx)(`div`,{className:cn(tl({variant:t}),e),...n})}function rl({url:e,person:t=!1}){let[n,r]=(0,v.useState)(``);return(0,L.jsx)(`span`,{className:`avatar`,children:e&&n!==e?(0,L.jsx)(`img`,{src:e,alt:``,onError:()=>r(e)}):t?(0,L.jsx)(fe,{size:20}):(0,L.jsx)(M,{size:20})})}function il({row:e,section:t}){let n=t===`users`?e.disabled?`已停用`:`正常`:t===`pets`?e.archived?`已归档`:`在用`:t===`tasks`?e.completed?`今日已完成`:`今日待完成`:{active:`遛狗中`,paused:`已暂停`,finished:`已结束`,open:`开放`,cancelled:`已取消`}[e.status||``]||`—`;return(0,L.jsx)(nl,{variant:e.disabled||e.archived||e.status===`cancelled`?`muted`:e.status===`paused`?`warning`:`default`,children:n})}function al({name:e,id:t,url:n,person:r=!1}){return(0,L.jsxs)(`div`,{className:`identity`,children:[n!==void 0&&(0,L.jsx)(rl,{url:n,person:r}),(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`strong`,{children:e||(r?`未设置昵称`:`未命名`)}),(0,L.jsx)(`small`,{className:`mono`,title:t,children:t||`—`})]})]})}function ol({row:e,action:t,detail:n,disabled:r}){let[i,a]=(0,v.useState)(!1),[o,s]=(0,v.useState)(null),[c,l]=(0,v.useState)(``),[u,d]=(0,v.useState)(!1),[f,p]=(0,v.useState)(0);return(0,v.useEffect)(()=>{if(!i||o)return;let t=new AbortController;return d(!0),l(``),Bc.userPets(e.id,t.signal).then(e=>{t.signal.aborted||(s(e),d(!1))}).catch(e=>{t.signal.aborted||l(e.message)}).finally(()=>{t.signal.aborted||d(!1)}),()=>t.abort()},[i,e.id,o,f]),(0,L.jsxs)(v.Fragment,{children:[(0,L.jsxs)($c,{children:[(0,L.jsx)(G,{children:(0,L.jsx)(`button`,{className:`tree-toggle`,"aria-expanded":i,"aria-label":`${i?`收起`:`展开`}${e.nickname||`用户`}的宠物`,onClick:()=>a(!i),children:i?(0,L.jsx)(ie,{size:16}):(0,L.jsx)(oe,{size:16})})}),(0,L.jsx)(G,{children:(0,L.jsx)(al,{name:e.nickname,id:e.id,url:e.avatar_url||``,person:!0})}),(0,L.jsx)(G,{children:(0,L.jsxs)(`button`,{className:`text-action`,onClick:()=>a(!i),children:[e.pet_count||0,` 只宠物`]})}),(0,L.jsx)(G,{children:Hc(e.created_at)}),(0,L.jsx)(G,{children:(0,L.jsx)(il,{row:e,section:`users`})}),(0,L.jsx)(G,{children:(0,L.jsx)(dn,{variant:`outline`,size:`sm`,disabled:r,onClick:()=>t(e),children:e.disabled?`启用用户`:`停用用户`})})]}),i&&(0,L.jsx)($c,{className:`tree-row`,children:(0,L.jsx)(G,{colSpan:6,children:(0,L.jsxs)(`div`,{className:`pet-tree`,children:[(0,L.jsxs)(`div`,{className:`tree-heading`,children:[(0,L.jsx)(M,{size:16}),(0,L.jsxs)(`strong`,{children:[e.nickname||`用户`,`的宠物`]}),(0,L.jsx)(`span`,{children:`包括已归档档案`})]}),u?(0,L.jsxs)(`div`,{className:`tree-message`,children:[(0,L.jsx)(le,{size:16,className:`animate-spin`}),`加载宠物中`]}):c?(0,L.jsxs)(`div`,{className:`tree-message error-text`,children:[c,(0,L.jsx)(dn,{size:`sm`,variant:`outline`,onClick:()=>p(f+1),children:`重试`})]}):o?.length?(0,L.jsx)(`div`,{className:`pet-tree-grid`,children:o.map(e=>(0,L.jsxs)(`button`,{className:`pet-tree-card`,onClick:()=>n(`pets`,e),children:[(0,L.jsx)(al,{name:e.name,id:e.breed||`未填写品种`,url:e.avatar_url||``}),(0,L.jsx)(il,{row:e,section:`pets`}),(0,L.jsx)(oe,{size:16})]},e.id))}):(0,L.jsx)(`div`,{className:`tree-message`,children:`该用户还没有添加宠物`})]})})})]})}var sl={users:[``,`用户`,`宠物`,`注册时间`,`状态`,`操作`],pets:[`宠物`,`品种 / 性别`,`主人`,`体重`,`状态`,`操作`],walks:[`遛狗人`,`同行宠物`,`开始时间`,`距离 / 时长`,`状态`,`操作`],meetups:[`活动`,`发起人`,`地点 / 时间`,`人数`,`状态`,`操作`],tasks:[`任务`,`用户 / 宠物`,`类别`,`计划时间`,`今日状态`,`操作`],files:[`文件`,`类型`,`大小`,`上传时间`,`操作`]};function cl({section:e,revision:t,action:n,detail:r,actionBusy:i}){let[a,o]=(0,v.useState)(1),[s,c]=(0,v.useState)(``),[l,u]=(0,v.useState)(``),[d,f]=(0,v.useState)(``),[p,m]=(0,v.useState)(null),[h,g]=(0,v.useState)(!0),[_,y]=(0,v.useState)(``),[b,x]=(0,v.useState)(0);(0,v.useEffect)(()=>{let t=new AbortController;return g(!0),y(``),m(null),Bc.list(e,{page:a,page_size:10,q:s,status:d},t.signal).then(e=>{if(!t.signal.aborted){if(a>Math.max(1,Math.ceil(e.total/10))){o(Math.max(1,Math.ceil(e.total/10)));return}m(e)}}).catch(e=>{t.signal.aborted||y(e.message)}).finally(()=>{t.signal.aborted||g(!1)}),()=>t.abort()},[e,a,s,d,t,b]);let S=Math.max(1,Math.ceil((p?.total||0)/10));return(0,L.jsxs)(`section`,{className:`panel records`,children:[(0,L.jsxs)(`div`,{className:`records-heading`,children:[(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`h2`,{children:Vc[e]}),(0,L.jsxs)(`p`,{children:[p?`共 ${p.total} 条记录`:`读取记录中`,e===`users`&&` · 展开用户查看宠物`]})]}),(0,L.jsx)(`span`,{className:`per-page`,children:`每页 10 条`})]}),(0,L.jsxs)(`div`,{className:`toolbar`,children:[(0,L.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),o(1),c(l.trim()),x(b+1)},className:`search-form`,children:[(0,L.jsx)(de,{size:17}),(0,L.jsx)(fn,{value:l,maxLength:128,onChange:e=>u(e.target.value),placeholder:qc[e],"aria-label":qc[e]}),(0,L.jsx)(dn,{variant:`outline`,type:`submit`,disabled:h,children:`搜索`})]}),Kc[e]&&(0,L.jsxs)(`select`,{value:d,onChange:e=>{f(e.target.value),o(1)},"aria-label":`筛选状态`,children:[(0,L.jsx)(`option`,{value:``,children:e===`tasks`?`全部类别`:`全部状态`}),Kc[e].map(([e,t])=>(0,L.jsx)(`option`,{value:e,children:t},e))]}),(s||d)&&(0,L.jsx)(dn,{variant:`ghost`,onClick:()=>{u(``),c(``),f(``),o(1)},children:`重置`})]}),_?(0,L.jsxs)(`div`,{className:`empty error-text`,role:`alert`,children:[(0,L.jsx)(se,{size:30}),(0,L.jsx)(`p`,{children:_}),(0,L.jsx)(dn,{variant:`outline`,onClick:()=>x(b+1),children:`重新加载`})]}):h?(0,L.jsxs)(`div`,{className:`empty`,role:`status`,children:[(0,L.jsx)(le,{size:28,className:`animate-spin`}),(0,L.jsxs)(`p`,{children:[`正在加载`,Vc[e]]})]}):p?.items.length?(0,L.jsxs)(Xc,{children:[(0,L.jsx)(Zc,{children:(0,L.jsx)($c,{children:sl[e].map((e,t)=>(0,L.jsx)(el,{children:e},t))})}),(0,L.jsx)(Qc,{children:p.items.map(a=>e===`users`?(0,L.jsx)(ol,{row:a,action:e=>n(`users`,e),detail:r,disabled:i},`${t}-${a.id}`):(0,L.jsxs)($c,{children:[e===`pets`?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(G,{children:(0,L.jsx)(al,{name:a.name,id:a.id,url:a.avatar_url||``})}),(0,L.jsxs)(G,{children:[a.breed||`未填写品种`,(0,L.jsx)(`small`,{children:a.gender===`male`?`男孩`:a.gender===`female`?`女孩`:`未填写`})]}),(0,L.jsx)(G,{children:(0,L.jsx)(al,{name:a.user_name,id:a.user_id,person:!0})}),(0,L.jsx)(G,{children:a.weight_kg?`${a.weight_kg} kg`:`—`}),(0,L.jsx)(G,{children:(0,L.jsx)(il,{row:a,section:e})})]}):e===`walks`?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(G,{children:(0,L.jsx)(al,{name:a.user_name,id:a.user_id,person:!0})}),(0,L.jsxs)(G,{children:[(0,L.jsx)(`div`,{className:`pet-tags`,children:a.pet_names?.length?a.pet_names.map((e,t)=>(0,L.jsxs)(`span`,{children:[(0,L.jsx)(M,{size:12}),e]},t)):`—`}),(0,L.jsxs)(`small`,{className:`mono`,title:a.id,children:[`记录 `,a.id.slice(0,8)]})]}),(0,L.jsx)(G,{children:Hc(a.started_at)}),(0,L.jsxs)(G,{children:[((a.distance_meters||0)/1e3).toFixed(2),` km`,(0,L.jsx)(`small`,{children:Wc(a.duration_seconds)})]}),(0,L.jsx)(G,{children:(0,L.jsx)(il,{row:a,section:e})})]}):e===`meetups`?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(G,{children:[(0,L.jsx)(`strong`,{children:a.title}),(0,L.jsx)(`small`,{className:`mono`,children:a.id.slice(0,8)})]}),(0,L.jsx)(G,{children:a.user_name||`未设置昵称`}),(0,L.jsxs)(G,{children:[a.place_name,(0,L.jsx)(`small`,{children:Hc(a.starts_at)})]}),(0,L.jsxs)(G,{children:[a.participants,` / `,a.max_people]}),(0,L.jsx)(G,{children:(0,L.jsx)(il,{row:a,section:e})})]}):e===`tasks`?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(G,{children:[(0,L.jsx)(`strong`,{children:a.title}),(0,L.jsx)(`small`,{children:a.repeat_rule===`daily`?`每天`:`单次`})]}),(0,L.jsxs)(G,{children:[a.user_name||`未设置昵称`,(0,L.jsx)(`small`,{children:a.pet_name||`—`})]}),(0,L.jsx)(G,{children:Gc[a.category||``]||a.category||`—`}),(0,L.jsx)(G,{children:a.time_of_day}),(0,L.jsx)(G,{children:(0,L.jsx)(il,{row:a,section:e})})]}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(G,{children:[(0,L.jsx)(`strong`,{className:`file-name`,title:a.name,children:a.name}),(0,L.jsx)(`small`,{className:`mono`,children:a.id.slice(0,8)})]}),(0,L.jsx)(G,{children:a.content_type}),(0,L.jsx)(G,{children:Uc(a.size)}),(0,L.jsx)(G,{children:Hc(a.created_at)})]}),(0,L.jsx)(G,{children:(0,L.jsxs)(`div`,{className:`row-actions`,children:[(0,L.jsx)(dn,{variant:`ghost`,size:`sm`,onClick:()=>r(e,a),children:`查看详情`}),e===`meetups`&&a.status===`open`&&(0,L.jsx)(dn,{variant:`outline`,size:`sm`,disabled:i,onClick:()=>n(e,a),children:`取消活动`})]})})]},a.id))})]}):(0,L.jsxs)(`div`,{className:`empty`,children:[(0,L.jsx)(se,{size:32}),(0,L.jsx)(`h3`,{children:s||d?`没有符合条件的记录`:`这里还没有记录`}),(0,L.jsx)(`p`,{children:s||d?`试试其他关键词或清除筛选条件。`:`用户在小程序中的日常,会慢慢汇集到这里。`})]}),(0,L.jsxs)(`footer`,{className:`pagination`,children:[(0,L.jsx)(`span`,{children:p?.total?`第 ${(a-1)*10+1}–${Math.min(a*10,p.total)} 条,共 ${p.total} 条`:`共 0 条`}),(0,L.jsxs)(`div`,{children:[(0,L.jsx)(dn,{variant:`outline`,size:`icon`,"aria-label":`上一页`,disabled:h||a<=1,onClick:()=>o(a-1),children:(0,L.jsx)(ae,{size:16})}),(0,L.jsxs)(`span`,{children:[`第 `,a,` / `,S,` 页`]}),(0,L.jsx)(dn,{variant:`outline`,size:`icon`,"aria-label":`下一页`,disabled:h||a>=S,onClick:()=>o(a+1),children:(0,L.jsx)(oe,{size:16})})]})]})]})}function ll({points:e}){let t=e.filter(e=>Number.isFinite(e.latitude)&&Number.isFinite(e.longitude));if(!t.length)return(0,L.jsxs)(`div`,{className:`empty compact`,children:[(0,L.jsx)(ue,{size:28}),`这条记录尚未采集足迹`]});let n=t[0],r=t.map(e=>[(e.longitude-n.longitude)*Math.cos(n.latitude*Math.PI/180),e.latitude-n.latitude]),i=r.map(e=>e[0]),a=r.map(e=>e[1]),o=Math.min(...i),s=Math.max(...i),c=Math.min(...a),l=Math.max(...a),u=Math.min(440/(s-o||1e-6),200/(l-c||1e-6)),d=r.map(([e,t])=>[250+(e-(o+s)/2)*u,120-(t-(c+l)/2)*u]),[f,p]=[d[0],d[d.length-1]];return(0,L.jsxs)(`div`,{className:`track`,children:[(0,L.jsxs)(`svg`,{viewBox:`0 0 500 240`,role:`img`,"aria-label":`遛狗足迹路线示意`,children:[(0,L.jsx)(`defs`,{children:(0,L.jsx)(`pattern`,{id:`grid`,width:`25`,height:`25`,patternUnits:`userSpaceOnUse`,children:(0,L.jsx)(`path`,{d:`M 25 0 L 0 0 0 25`,fill:`none`,stroke:`#eaded3`,strokeWidth:`1`})})}),(0,L.jsx)(`rect`,{width:`500`,height:`240`,fill:`url(#grid)`}),(0,L.jsx)(`polyline`,{points:d.map(e=>e.join(`,`)).join(` `),fill:`none`,stroke:`#b95738`,strokeWidth:`4`,strokeLinecap:`round`,strokeLinejoin:`round`}),(0,L.jsx)(`circle`,{cx:f[0],cy:f[1],r:`7`,fill:`#8aa2bd`,stroke:`white`,strokeWidth:`3`}),(0,L.jsx)(`circle`,{cx:p[0],cy:p[1],r:`7`,fill:`#b95738`,stroke:`white`,strokeWidth:`3`})]}),(0,L.jsxs)(`p`,{children:[`足迹路线示意 · 蓝色起点 / 橙色终点 · `,t.length,` 个位置点`]})]})}function ul({value:e,close:t}){let[n,r]=(0,v.useState)([]),[i,a]=(0,v.useState)(!1),[o,s]=(0,v.useState)(``);(0,v.useEffect)(()=>{if(r([]),s(``),a(!1),!e||e.section!==`walks`)return;let t=new AbortController;return a(!0),Bc.walk(e.row.id,t.signal).then(e=>{t.signal.aborted||r(e.points)}).catch(e=>{t.signal.aborted||s(e.message)}).finally(()=>{t.signal.aborted||a(!1)}),()=>t.abort()},[e]);let c=e?.row,l=e?.section,u=c?l===`pets`?[[`主人`,c.user_name],[`主人 ID`,c.user_id],[`品种`,c.breed||c.species],[`性别`,c.gender===`male`?`男孩`:c.gender===`female`?`女孩`:`未填写`],[`生日`,c.birth_date],[`体重`,c.weight_kg?`${c.weight_kg} kg`:`未填写`],[`毛色`,c.coat],[`过敏提醒`,c.allergies],[`照顾备注`,c.care_notes],[`创建时间`,Hc(c.created_at)]]:l===`walks`?[[`遛狗人`,c.user_name],[`用户 ID`,c.user_id],[`同行宠物`,c.pet_names?.join(`、`)||`—`],[`开始时间`,Hc(c.started_at)],[`结束时间`,Hc(c.ended_at)],[`距离`,`${((c.distance_meters||0)/1e3).toFixed(2)} km`],[`已记录时长`,Wc(c.duration_seconds)],[`位置分享`,c.share_enabled?`已开启`:`未开启`]]:l===`meetups`?[[`发起人`,c.user_name],[`集合地点`,c.place_name],[`活动时间`,Hc(c.starts_at)],[`参与人数`,`${c.participants}/${c.max_people}`],[`活动说明`,c.description],[`坐标`,`${c.longitude}, ${c.latitude}`]]:l===`tasks`?[[`用户`,c.user_name],[`宠物`,c.pet_name],[`类别`,Gc[c.category||``]||c.category],[`计划时间`,c.time_of_day],[`重复规则`,c.repeat_rule===`daily`?`每天`:`单次`],[`创建时间`,Hc(c.created_at)]]:[[`文件类型`,c.content_type],[`大小`,Uc(c.size)],[`MD5`,c.md5],[`存储桶`,c.bucket],[`对象路径`,c.object_key],[`文件 ID`,c.id],[`上传时间`,Hc(c.created_at)]]:[];return(0,L.jsx)(ua,{open:!!e,onOpenChange:e=>{e||t()},children:(0,L.jsxs)(da,{className:`detail-dialog`,"aria-describedby":void 0,children:[(0,L.jsx)(fa,{children:(0,L.jsx)(pa,{children:c?.name||c?.title||(l===`walks`?`遛狗详情`:`记录详情`)})}),c&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`div`,{className:`detail-summary`,children:[(0,L.jsx)(al,{name:c.name||c.title||c.user_name,id:c.id,url:c.avatar_url}),(0,L.jsx)(il,{row:c,section:l})]}),l===`files`&&c.url&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`img`,{className:`file-preview`,src:c.url,alt:c.name||`文件预览`}),(0,L.jsxs)(`a`,{href:c.url,target:`_blank`,rel:`noreferrer`,className:`file-link`,children:[`查看原图`,(0,L.jsx)(k,{size:14})]})]}),(0,L.jsx)(`dl`,{className:`detail-grid`,children:u.map(([e,t])=>(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`dt`,{children:e}),(0,L.jsx)(`dd`,{children:t||`—`})]},e))}),l===`walks`&&(i?(0,L.jsxs)(`div`,{className:`empty compact`,children:[(0,L.jsx)(le,{className:`animate-spin`}),`加载足迹中`]}):o?(0,L.jsx)(`p`,{className:`error-banner`,role:`alert`,children:o}):(0,L.jsx)(ll,{points:n})),(0,L.jsx)(`div`,{className:`dialog-actions`,children:(0,L.jsx)(dn,{variant:`outline`,onClick:t,children:`关闭`})})]})]})})}var dl={overview:ce,users:pe,pets:M,walks:ue,meetups:D,tasks:O,files:A};function fl(){let[e,t]=(0,v.useState)(Lc()),[n,r]=(0,v.useState)(`sundynix`),[i,a]=(0,v.useState)(``),[o,s]=(0,v.useState)(`overview`),[c,l]=(0,v.useState)(0),[u,d]=(0,v.useState)(null),[f,p]=(0,v.useState)(``),[m,h]=(0,v.useState)(!1),[g,_]=(0,v.useState)(!1),[y,b]=(0,v.useState)(``),[x,S]=(0,v.useState)(null),[C,w]=(0,v.useState)(null);(0,v.useEffect)(()=>{let e=()=>{t(``),S(null),w(null),p(`登录已过期,请重新登录`)};return window.addEventListener(`admin-auth-expired`,e),()=>window.removeEventListener(`admin-auth-expired`,e)},[]),(0,v.useEffect)(()=>{if(!e||o!==`overview`)return;let t=new AbortController;return h(!0),p(``),Bc.stats(t.signal).then(e=>{t.signal.aborted||d(e)}).catch(e=>{t.signal.aborted||p(e.message)}).finally(()=>{t.signal.aborted||h(!1)}),()=>t.abort()},[o,e,c]);async function T(e){if(e.preventDefault(),!m){h(!0),p(``);try{let e=await Bc.login(n.trim(),i);W(e.token),t(e.token),a(``)}catch(e){p(e.message)}finally{h(!1)}}}function ee(){Rc(),t(``),a(``),d(null),S(null),w(null),p(``),b(``)}function te(e){h(!1),s(e),p(``),b(``)}async function ne(){if(!(!C||g)){_(!0),p(``);try{C.section===`users`?await Bc.setUserDisabled(C.row.id,!C.row.disabled):await Bc.cancelMeetup(C.row.id),b(C.section===`users`?C.row.disabled?`用户已启用`:`用户已停用,位置分享已关闭`:`活动已取消`),w(null),l(e=>e+1)}catch(e){p(e.message)}finally{_(!1)}}}let E=C?.section===`users`?C.row.disabled?`启用用户`:`停用用户`:`取消约遛活动`;return e?(0,L.jsxs)(`div`,{className:`app-shell`,children:[(0,L.jsxs)(`aside`,{className:`sidebar`,children:[(0,L.jsxs)(`div`,{className:`brand`,children:[(0,L.jsx)(`img`,{src:`/brand-logo.png`,alt:``}),(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`strong`,{children:`肉垫计划`}),(0,L.jsx)(`small`,{children:`PAWPRINT PLAN`})]})]}),(0,L.jsx)(`p`,{className:`side-caption`,children:`陪伴工作台`}),(0,L.jsx)(`nav`,{"aria-label":`管理导航`,children:Object.keys(Vc).map(e=>{let t=dl[e];return(0,L.jsxs)(`button`,{className:`nav-item ${o===e?`active`:``}`,"aria-current":o===e?`page`:void 0,title:Vc[e],onClick:()=>te(e),children:[(0,L.jsx)(t,{size:19}),(0,L.jsx)(`span`,{children:Vc[e]}),o===e&&(0,L.jsx)(`span`,{className:`nav-dot`})]},e)})}),(0,L.jsxs)(`div`,{className:`side-note`,children:[(0,L.jsx)(M,{size:22}),(0,L.jsxs)(`p`,{children:[`陪伴它们的每一天,`,(0,L.jsx)(`br`,{}),`都值得记录。`]})]}),(0,L.jsxs)(`div`,{className:`side-bottom`,children:[(0,L.jsx)(`span`,{className:`admin-indicator`,children:`管理员`}),(0,L.jsxs)(dn,{variant:`ghost`,onClick:ee,title:`退出登录`,children:[(0,L.jsx)(j,{size:16}),(0,L.jsx)(`span`,{children:`退出登录`})]})]})]}),(0,L.jsxs)(`main`,{className:`content`,children:[(0,L.jsxs)(`header`,{className:`topbar`,children:[(0,L.jsxs)(`div`,{children:[(0,L.jsxs)(`p`,{className:`eyebrow`,children:[`肉垫计划 / `,o===`overview`?`今天的日常`:`数据管理`]}),(0,L.jsx)(`h1`,{children:Vc[o]})]}),(0,L.jsxs)(`div`,{className:`topbar-actions`,children:[(0,L.jsx)(`span`,{className:`today-date`,children:new Date().toLocaleDateString(`zh-CN`,{month:`long`,day:`numeric`,weekday:`long`})}),(0,L.jsxs)(dn,{variant:`outline`,disabled:m||g,onClick:()=>l(e=>e+1),children:[(0,L.jsx)(N,{size:16,className:m?`animate-spin`:``}),`刷新`]}),(0,L.jsx)(dn,{variant:`ghost`,className:`mobile-logout`,size:`icon`,onClick:ee,"aria-label":`退出登录`,children:(0,L.jsx)(j,{size:18})})]})]}),f&&!C&&(0,L.jsxs)(`div`,{className:`error-banner`,role:`alert`,children:[f,(0,L.jsx)(dn,{variant:`ghost`,size:`sm`,onClick:()=>p(``),children:`关闭`})]}),y&&(0,L.jsxs)(`div`,{className:`notice`,role:`status`,children:[(0,L.jsx)(O,{size:16}),y,(0,L.jsx)(`button`,{"aria-label":`关闭提示`,onClick:()=>b(``),children:(0,L.jsx)(me,{size:16})})]}),o===`overview`?(0,L.jsx)(Yc,{stats:u,navigate:te}):(0,L.jsx)(cl,{section:o,revision:c,action:(e,t)=>{p(``),w({section:e,row:t})},detail:(e,t)=>S({section:e,row:t}),actionBusy:g},o),(0,L.jsx)(`footer`,{className:`page-footer`,children:`肉垫计划 · 把每一份陪伴,认真记下来`})]}),(0,L.jsx)(ul,{value:x,close:()=>S(null)}),(0,L.jsx)(ua,{open:!!C,onOpenChange:e=>{!e&&!g&&(w(null),p(``))},children:(0,L.jsxs)(da,{"aria-describedby":`action-description`,children:[(0,L.jsx)(fa,{children:(0,L.jsx)(pa,{children:E})}),(0,L.jsx)(`p`,{id:`action-description`,className:`confirm-copy`,children:C?.section===`users`?C.row.disabled?`确认恢复「${C.row.nickname||`该用户`}」的访问权限?`:`停用「${C.row.nickname||`该用户`}」后,将无法使用小程序接口,现有位置分享也会关闭。`:`确认取消「${C?.row.title}」?取消后活动将停止接受报名。`}),f&&(0,L.jsx)(`p`,{className:`error-banner`,role:`alert`,children:f}),(0,L.jsxs)(`div`,{className:`dialog-actions`,children:[(0,L.jsx)(dn,{variant:`outline`,disabled:g,onClick:()=>{w(null),p(``)},children:`暂不操作`}),(0,L.jsxs)(dn,{disabled:g,onClick:()=>void ne(),children:[g&&(0,L.jsx)(le,{size:16,className:`animate-spin`}),`确认`,E]})]})]})})]}):(0,L.jsxs)(`main`,{className:`login-page`,children:[(0,L.jsxs)(`section`,{className:`login-story`,children:[(0,L.jsx)(`img`,{src:`/brand-logo.png`,alt:`肉垫计划`}),(0,L.jsx)(`p`,{className:`eyebrow`,children:`PAWPRINT PLAN`}),(0,L.jsxs)(`h1`,{children:[`每一段陪伴,`,(0,L.jsx)(`br`,{}),`都有迹可循。`]}),(0,L.jsxs)(`p`,{children:[`让宠物的日常更有温度,`,(0,L.jsx)(`br`,{}),`让每一次出门都值得记录。`]}),(0,L.jsxs)(`div`,{className:`story-tags`,children:[(0,L.jsxs)(`span`,{children:[(0,L.jsx)(M,{size:16}),`宠物档案`]}),(0,L.jsxs)(`span`,{children:[(0,L.jsx)(ue,{size:16}),`快乐出门`]}),(0,L.jsxs)(`span`,{children:[(0,L.jsx)(O,{size:16}),`日常照顾`]})]})]}),(0,L.jsxs)(`form`,{className:`login-card`,onSubmit:T,children:[(0,L.jsx)(`span`,{className:`login-mark`,children:(0,L.jsx)(M,{size:26})}),(0,L.jsx)(`p`,{className:`eyebrow`,children:`肉垫计划 · 管理后台`}),(0,L.jsx)(`h2`,{children:`欢迎回来`}),(0,L.jsx)(`p`,{className:`muted`,children:`今天也一起,照顾好每一个小日常。`}),(0,L.jsx)(`label`,{htmlFor:`username`,children:`管理员账号`}),(0,L.jsx)(fn,{id:`username`,autoComplete:`username`,value:n,onChange:e=>r(e.target.value),required:!0,maxLength:64}),(0,L.jsx)(`label`,{htmlFor:`password`,children:`密码`}),(0,L.jsx)(fn,{id:`password`,type:`password`,autoComplete:`current-password`,value:i,onChange:e=>a(e.target.value),required:!0}),f&&(0,L.jsx)(`p`,{className:`error-banner`,role:`alert`,children:f}),(0,L.jsxs)(dn,{disabled:m,className:`w-full login-submit`,children:[m&&(0,L.jsx)(le,{size:16,className:`animate-spin`}),m?`正在登录`:`进入管理后台`]}),(0,L.jsx)(`small`,{className:`login-footnote`,children:`肉垫计划 · 给陪伴一个温暖的地方`})]})]})}(0,y.createRoot)(document.getElementById(`root`)).render((0,L.jsx)(v.StrictMode,{children:(0,L.jsx)(fl,{})})); \ No newline at end of file diff --git a/pets-be/internal/admin/dist/brand-logo.png b/pets-be/internal/admin/dist/brand-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7f1b8f75d602d0227336e3f0ae6d04b267162b56 GIT binary patch literal 89819 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

au;X?X4vfeq0W+>>L=@rp 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 \ No newline at end of file diff --git a/pets-be/internal/admin/dist/icons.svg b/pets-be/internal/admin/dist/icons.svg deleted file mode 100644 index e952219..0000000 --- a/pets-be/internal/admin/dist/icons.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pets-be/internal/admin/dist/index.html b/pets-be/internal/admin/dist/index.html index c1b4e2f..e4bfd39 100644 --- a/pets-be/internal/admin/dist/index.html +++ b/pets-be/internal/admin/dist/index.html @@ -2,11 +2,11 @@ - + - 肉垫计划 · 管理端 - - + 肉垫计划 · 管理后台 + +

diff --git a/pets-be/internal/admin/embed_test.go b/pets-be/internal/admin/embed_test.go index 1be2005..4dcd018 100644 --- a/pets-be/internal/admin/embed_test.go +++ b/pets-be/internal/admin/embed_test.go @@ -39,7 +39,7 @@ func TestAdminAtRootAndAPIRoutes(t *testing.T) { }{ {path: "/", status: http.StatusOK, body: "
"}, {path: script, status: http.StatusOK}, - {path: "/favicon.svg", status: http.StatusOK}, + {path: "/brand-logo.png", status: http.StatusOK}, {path: "/api/ping", status: http.StatusOK, body: "pong"}, {path: "/api/missing", status: http.StatusNotFound}, {path: "/assets/missing.js", status: http.StatusNotFound}, diff --git a/pets-be/internal/httpapi/admin.go b/pets-be/internal/httpapi/admin.go index ce48ace..84b90d9 100644 --- a/pets-be/internal/httpapi/admin.go +++ b/pets-be/internal/httpapi/admin.go @@ -1,98 +1,462 @@ package httpapi import ( + "errors" + "net/http" + "strconv" + "strings" + "time" + "github.com/gin-gonic/gin" "github.com/sundynix/pets-be/internal/model" - "net/http" + "gorm.io/gorm" ) +type adminPage struct { + Page int `json:"page"` + PageSize int `json:"page_size"` + Total int64 `json:"total"` + Items any `json:"items"` +} + +func pageParams(c *gin.Context) (adminPage, bool) { + page, err := strconv.Atoi(c.DefaultQuery("page", "1")) + size, sizeErr := strconv.Atoi(c.DefaultQuery("page_size", "10")) + if err != nil || sizeErr != nil || page < 1 || page > 1000000 || size < 1 || size > 100 || len([]rune(c.Query("q"))) > 128 { + fail(c, http.StatusBadRequest, "分页或搜索参数无效") + return adminPage{}, false + } + return adminPage{Page: page, PageSize: size}, true +} +func adminRows[T any](c *gin.Context, query *gorm.DB, order string) ([]T, adminPage, bool) { + page, valid := pageParams(c) + if !valid { + return nil, page, false + } + if err := query.Count(&page.Total).Error; err != nil { + fail(c, 500, "读取记录数量失败") + return nil, page, false + } + rows := make([]T, 0) + if err := query.Order(order).Offset((page.Page - 1) * page.PageSize).Limit(page.PageSize).Find(&rows).Error; err != nil { + fail(c, 500, "读取记录失败") + return nil, page, false + } + return rows, page, true +} +func search(query *gorm.DB, c *gin.Context, columns ...string) *gorm.DB { + q := strings.TrimSpace(c.Query("q")) + if q == "" { + return query + } + // Only allow literal substring search. Columns are constants supplied by handlers. + value := "%" + strings.NewReplacer("\\", "\\\\", "%", "\\%", "_", "\\_").Replace(q) + "%" + clauses := make([]string, 0, len(columns)) + args := make([]any, 0, len(columns)) + for _, column := range columns { + clauses = append(clauses, column+" ILIKE ?") + args = append(args, value) + } + return query.Where("("+strings.Join(clauses, " OR ")+")", args...) +} +func filterStatus(c *gin.Context, query *gorm.DB, column string, allowed ...string) (*gorm.DB, bool) { + status := c.Query("status") + if status == "" { + return query, true + } + for _, value := range allowed { + if status == value { + return query.Where(column+" = ?", status), true + } + } + fail(c, 400, "筛选状态无效") + return query, false +} +func (a *API) userNames(ids []string) (map[string]string, error) { + names := map[string]string{} + if len(ids) == 0 { + return names, nil + } + var users []model.User + err := a.db.Select("id", "nickname").Where("id IN ?", ids).Find(&users).Error + for _, user := range users { + names[user.ID] = user.Nickname + } + return names, err +} func (a *API) adminStats(c *gin.Context) { counts := gin.H{} for _, pair := range []struct { name string value any - }{{"users", &model.User{}}, {"pets", &model.Pet{}}, {"walks", &model.Walk{}}, {"meetups", &model.Meetup{}}} { + }{{"users", &model.User{}}, {"pets", &model.Pet{}}, {"walks", &model.Walk{}}, {"meetups", &model.Meetup{}}, {"tasks", &model.CareTask{}}, {"files", &model.File{}}} { var n int64 - a.db.Model(pair.value).Count(&n) + if err := a.db.Model(pair.value).Count(&n).Error; err != nil { + fail(c, 500, "读取统计失败") + return + } counts[pair.name] = n } + now := time.Now() + today := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location()) + for _, pair := range []struct { + name string + query *gorm.DB + }{ + {"today_walks", a.db.Model(&model.Walk{}).Where("started_at >= ?", today)}, + {"active_walks", a.db.Model(&model.Walk{}).Where("status IN ?", []string{"active", "paused"})}, + {"upcoming_meetups", a.db.Model(&model.Meetup{}).Where("status = ? AND starts_at > ?", "open", now)}, + {"today_completions", a.db.Model(&model.TaskCompletion{}).Where("date = ?", today)}, + } { + var n int64 + if pair.query.Count(&n).Error != nil { + fail(c, 500, "读取统计失败") + return + } + counts[pair.name] = n + } + var metrics struct { + Distance float64 + Duration int64 + Storage int64 + } + if a.db.Model(&model.Walk{}).Select("COALESCE(SUM(distance_meters),0) AS distance, COALESCE(SUM(duration_seconds),0) AS duration").Scan(&metrics).Error != nil || a.db.Model(&model.File{}).Select("COALESCE(SUM(size),0) AS storage").Scan(&metrics).Error != nil { + fail(c, 500, "读取统计失败") + return + } + counts["distance_meters"] = metrics.Distance + counts["duration_seconds"] = metrics.Duration + counts["storage_bytes"] = metrics.Storage + type dayCount struct { + Date string `json:"date"` + Count int64 `json:"count"` + } + var grouped []dayCount + since := today.AddDate(0, 0, -6) + if a.db.Model(&model.Walk{}).Select("to_char(started_at AT TIME ZONE 'Asia/Shanghai', 'YYYY-MM-DD') AS date, COUNT(*) AS count").Where("started_at >= ?", since).Group("date").Scan(&grouped).Error != nil { + fail(c, 500, "读取趋势失败") + return + } + daily := make([]dayCount, 0, 7) + for day := since; !day.After(today); day = day.AddDate(0, 0, 1) { + entry := dayCount{Date: day.Format("2006-01-02")} + for _, row := range grouped { + if row.Date == entry.Date { + entry.Count = row.Count + } + } + daily = append(daily, entry) + } + counts["daily_walks"] = daily ok(c, counts) } func (a *API) adminUsers(c *gin.Context) { - var rows []model.User - if a.db.Order("created_at DESC").Limit(200).Find(&rows).Error != nil { - fail(c, 500, "读取用户失败") + query := search(a.db.Model(&model.User{}), c, "nickname", "id::text") + switch c.Query("status") { + case "": + case "enabled": + query = query.Where("disabled = false") + case "disabled": + query = query.Where("disabled = true") + default: + fail(c, 400, "筛选状态无效") return } + rows, page, valid := adminRows[model.User](c, query, "created_at DESC, id DESC") + if !valid { + return + } + ids := []string{} + for _, row := range rows { + ids = append(ids, row.ID) + } + var totals []struct { + UserID string + Count int64 + } + if len(ids) > 0 && a.db.Model(&model.Pet{}).Select("user_id, COUNT(*) AS count").Where("user_id IN ?", ids).Group("user_id").Scan(&totals).Error != nil { + fail(c, 500, "读取宠物数量失败") + return + } + counts := map[string]int64{} + for _, row := range totals { + counts[row.UserID] = row.Count + } items := make([]gin.H, 0, len(rows)) for _, u := range rows { - v := a.userView(u) - v["disabled"] = u.Disabled - items = append(items, v) + view := a.userView(u) + view["disabled"] = u.Disabled + view["pet_count"] = counts[u.ID] + items = append(items, view) + } + page.Items = items + ok(c, page) +} +func (a *API) adminUserPets(c *gin.Context) { + id := c.Param("id") + if !validID(id) { + fail(c, 400, "用户 ID 无效") + return + } + var user model.User + if err := a.db.First(&user, "id = ?", id).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + fail(c, 404, "用户不存在") + } else { + fail(c, 500, "读取用户失败") + } + return + } + var rows []model.Pet + if a.db.Where("user_id = ?", id).Order("archived ASC, created_at DESC, id DESC").Find(&rows).Error != nil { + fail(c, 500, "读取宠物失败") + return + } + items := make([]gin.H, 0, len(rows)) + for _, pet := range rows { + view := a.petView(pet) + view["archived"] = pet.Archived + view["user_id"] = id + view["user_name"] = user.Nickname + items = append(items, view) } ok(c, items) } func (a *API) adminPets(c *gin.Context) { - var rows []model.Pet - if a.db.Order("created_at DESC").Limit(200).Find(&rows).Error != nil { - fail(c, 500, "读取宠物失败") + query := search(a.db.Model(&model.Pet{}), c, "name", "breed", "id::text", "user_id::text") + switch c.Query("status") { + case "": + case "active": + query = query.Where("archived = false") + case "archived": + query = query.Where("archived = true") + default: + fail(c, 400, "筛选状态无效") + return + } + rows, page, valid := adminRows[model.Pet](c, query, "created_at DESC, id DESC") + if !valid { + return + } + ids := []string{} + for _, p := range rows { + ids = append(ids, p.UserID) + } + names, err := a.userNames(ids) + if err != nil { + fail(c, 500, "读取主人信息失败") return } items := make([]gin.H, 0, len(rows)) for _, p := range rows { v := a.petView(p) v["user_id"] = p.UserID + v["user_name"] = names[p.UserID] v["archived"] = p.Archived items = append(items, v) } - ok(c, items) + page.Items = items + ok(c, page) } func (a *API) adminWalks(c *gin.Context) { - var rows []model.Walk - if a.db.Order("started_at DESC").Limit(200).Find(&rows).Error != nil { - fail(c, 500, "读取遛狗失败") + query := search(a.db.Model(&model.Walk{}), c, "id::text", "user_id::text") + query, valid := filterStatus(c, query, "status", "active", "paused", "finished") + if !valid { return } - ok(c, rows) + rows, page, valid := adminRows[model.Walk](c, query, "started_at DESC, id DESC") + if !valid { + return + } + ids := []string{} + walkIDs := []string{} + for _, w := range rows { + ids = append(ids, w.UserID) + walkIDs = append(walkIDs, w.ID) + } + names, err := a.userNames(ids) + if err != nil { + fail(c, 500, "读取用户失败") + return + } + var links []struct { + WalkID string + PetName string + } + if len(walkIDs) > 0 && a.db.Model(&model.WalkPet{}).Select("sundynix_walk_pet.walk_id, p.name AS pet_name").Joins("JOIN sundynix_pet p ON p.id = sundynix_walk_pet.pet_id").Where("walk_id IN ?", walkIDs).Order("p.created_at ASC").Scan(&links).Error != nil { + fail(c, 500, "读取同行宠物失败") + return + } + pets := map[string][]string{} + for _, link := range links { + pets[link.WalkID] = append(pets[link.WalkID], link.PetName) + } + items := make([]gin.H, 0, len(rows)) + for _, w := range rows { + items = append(items, gin.H{"id": w.ID, "user_id": w.UserID, "user_name": names[w.UserID], "pet_names": pets[w.ID], "status": w.Status, "started_at": w.StartedAt, "ended_at": w.EndedAt, "duration_seconds": w.DurationSeconds, "distance_meters": w.DistanceMeters, "share_enabled": w.ShareEnabled}) + } + page.Items = items + ok(c, page) +} +func (a *API) adminWalkDetail(c *gin.Context) { + if !validID(c.Param("id")) { + fail(c, 400, "记录 ID 无效") + return + } + var walk model.Walk + if err := a.db.First(&walk, "id = ?", c.Param("id")).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + fail(c, 404, "遛狗记录不存在") + } else { + fail(c, 500, "读取记录失败") + } + return + } + var points []model.WalkPoint + if a.db.Where("walk_id = ?", walk.ID).Order("recorded_at ASC, id ASC").Find(&points).Error != nil { + fail(c, 500, "读取足迹失败") + return + } + ok(c, gin.H{"id": walk.ID, "points": points}) } func (a *API) adminMeetups(c *gin.Context) { - var rows []model.Meetup - if a.db.Order("created_at DESC").Limit(200).Find(&rows).Error != nil { - fail(c, 500, "读取约遛失败") + query := search(a.db.Model(&model.Meetup{}), c, "title", "place_name", "id::text") + query, valid := filterStatus(c, query, "status", "open", "cancelled") + if !valid { + return + } + rows, page, valid := adminRows[model.Meetup](c, query, "created_at DESC, id DESC") + if !valid { + return + } + ids := []string{} + for _, m := range rows { + ids = append(ids, m.HostUserID) + } + names, err := a.userNames(ids) + if err != nil { + fail(c, 500, "读取发起人失败") return } items := make([]gin.H, 0, len(rows)) for _, m := range rows { - items = append(items, a.meetupView(m)) + v := a.meetupView(m) + v["user_name"] = names[m.HostUserID] + items = append(items, v) } - ok(c, items) + page.Items = items + ok(c, page) +} +func (a *API) adminTasks(c *gin.Context) { + query := search(a.db.Model(&model.CareTask{}), c, "title", "id::text", "user_id::text", "pet_id::text") + query, valid := filterStatus(c, query, "category", "food", "water", "walk", "medicine", "grooming", "other") + if !valid { + return + } + rows, page, valid := adminRows[model.CareTask](c, query, "created_at DESC, id DESC") + if !valid { + return + } + ids, petIDs, taskIDs := []string{}, []string{}, []string{} + for _, t := range rows { + ids = append(ids, t.UserID) + petIDs = append(petIDs, t.PetID) + taskIDs = append(taskIDs, t.ID) + } + names, err := a.userNames(ids) + if err != nil { + fail(c, 500, "读取用户失败") + return + } + var pets []model.Pet + if len(petIDs) > 0 && a.db.Select("id", "name").Where("id IN ?", petIDs).Find(&pets).Error != nil { + fail(c, 500, "读取宠物失败") + return + } + petNames := map[string]string{} + for _, p := range pets { + petNames[p.ID] = p.Name + } + var completions []model.TaskCompletion + if len(taskIDs) > 0 && a.db.Where("task_id IN ? AND date = ?", taskIDs, time.Now().Format("2006-01-02")).Find(&completions).Error != nil { + fail(c, 500, "读取任务完成情况失败") + return + } + done := map[string]bool{} + for _, completion := range completions { + done[completion.TaskID] = true + } + items := make([]gin.H, 0, len(rows)) + for _, t := range rows { + items = append(items, gin.H{"id": t.ID, "user_id": t.UserID, "user_name": names[t.UserID], "pet_id": t.PetID, "pet_name": petNames[t.PetID], "title": t.Title, "category": t.Category, "time_of_day": t.TimeOfDay, "repeat_rule": t.RepeatRule, "reminder_enabled": t.ReminderEnabled, "completed": done[t.ID], "created_at": t.CreatedAt}) + } + page.Items = items + ok(c, page) +} +func (a *API) adminFiles(c *gin.Context) { + query := search(a.db.Model(&model.File{}), c, "name", "md5", "id::text") + rows, page, valid := adminRows[model.File](c, query, "created_at DESC, id DESC") + if !valid { + return + } + items := make([]gin.H, 0, len(rows)) + for _, file := range rows { + v := a.fileView(file) + v["created_at"] = file.CreatedAt + v["bucket"] = file.Bucket + v["object_key"] = file.ObjectKey + items = append(items, v) + } + page.Items = items + ok(c, page) } func (a *API) adminSetUserDisabled(c *gin.Context) { var in struct { - Disabled bool `json:"disabled"` + Disabled *bool `json:"disabled"` } - if !validID(c.Param("id")) || c.ShouldBindJSON(&in) != nil { + if !validID(c.Param("id")) || c.ShouldBindJSON(&in) != nil || in.Disabled == nil { fail(c, 400, "参数无效") return } - r := a.db.Model(&model.User{}).Where("id = ?", c.Param("id")).Update("disabled", in.Disabled) - if r.Error != nil || r.RowsAffected == 0 { + err := a.db.Transaction(func(tx *gorm.DB) error { + result := tx.Model(&model.User{}).Where("id = ?", c.Param("id")).Update("disabled", *in.Disabled) + if result.Error != nil { + return result.Error + } + if result.RowsAffected == 0 { + return gorm.ErrRecordNotFound + } + // Disabling an account also revokes any publicly shared locations. + if *in.Disabled { + return tx.Model(&model.Walk{}).Where("user_id = ?", c.Param("id")).Updates(map[string]any{"share_enabled": false, "share_expires_at": nil}).Error + } + return nil + }) + if errors.Is(err, gorm.ErrRecordNotFound) { fail(c, 404, "用户不存在") return } - ok(c, gin.H{"disabled": in.Disabled}) + if err != nil { + fail(c, 500, "更新用户失败") + return + } + ok(c, gin.H{"disabled": *in.Disabled}) } func (a *API) adminSetMeetupStatus(c *gin.Context) { var in struct { Status string `json:"status"` } - if !validID(c.Param("id")) || c.ShouldBindJSON(&in) != nil || (in.Status != "open" && in.Status != "cancelled") { - fail(c, http.StatusBadRequest, "状态无效") + if !validID(c.Param("id")) || c.ShouldBindJSON(&in) != nil || in.Status != "cancelled" { + fail(c, 400, "状态无效") return } - r := a.db.Model(&model.Meetup{}).Where("id = ?", c.Param("id")).Update("status", in.Status) - if r.Error != nil || r.RowsAffected == 0 { - fail(c, 404, "约遛不存在") + result := a.db.Model(&model.Meetup{}).Where("id = ? AND status = ?", c.Param("id"), "open").Update("status", in.Status) + if result.Error != nil { + fail(c, 500, "更新约遛失败") + return + } + if result.RowsAffected == 0 { + fail(c, 409, "约遛不存在或已取消") return } ok(c, gin.H{"status": in.Status}) diff --git a/pets-be/internal/httpapi/admin_test.go b/pets-be/internal/httpapi/admin_test.go new file mode 100644 index 0000000..344c21b --- /dev/null +++ b/pets-be/internal/httpapi/admin_test.go @@ -0,0 +1,231 @@ +package httpapi + +import ( + "encoding/json" + "net/http" + "net/http/httptest" + "os" + "testing" + "time" + + "github.com/gin-gonic/gin" + "github.com/google/uuid" + "github.com/sundynix/pets-be/internal/config" + "github.com/sundynix/pets-be/internal/database" + "github.com/sundynix/pets-be/internal/model" +) + +func TestAdminPageValidation(t *testing.T) { + gin.SetMode(gin.TestMode) + for _, query := range []string{"", "?page=2&page_size=10", "?page=0", "?page_size=101", "?page=abc", "?page=-1", "?page_size=0"} { + recorder := httptest.NewRecorder() + context, _ := gin.CreateTestContext(recorder) + context.Request = httptest.NewRequest(http.MethodGet, "/api/admin/users"+query, nil) + page, valid := pageParams(context) + expected := query == "" || query == "?page=2&page_size=10" + if valid != expected { + t.Errorf("%s: valid=%v", query, valid) + } + if query == "" && (page.Page != 1 || page.PageSize != 10) { + t.Fatalf("default pagination: %+v", page) + } + if !valid && recorder.Code != 400 { + t.Errorf("%s: status=%d", query, recorder.Code) + } + } +} +func TestAdminListsRequireAdminRole(t *testing.T) { + gin.SetMode(gin.TestMode) + cfg := &config.Config{} + cfg.JWT.Secret = "test-secret" + api := New(nil, nil, cfg) + router := gin.New() + api.Register(router) + token, err := api.token(uuid.NewString(), "user") + if err != nil { + t.Fatal(err) + } + for _, route := range []string{"users", "users/" + uuid.NewString() + "/pets", "pets", "walks", "walks/" + uuid.NewString(), "meetups", "tasks", "files", "stats"} { + for _, auth := range []bool{false, true} { + request := httptest.NewRequest(http.MethodGet, "/api/admin/"+route, nil) + if auth { + request.Header.Set("Authorization", "Bearer "+token) + } + recorder := httptest.NewRecorder() + router.ServeHTTP(recorder, request) + expected := http.StatusUnauthorized + if auth { + expected = http.StatusForbidden + } + if recorder.Code != expected { + t.Errorf("%s auth=%v: status=%d", route, auth, recorder.Code) + } + } + } +} + +// Opt-in read-only verification against the configured PostgreSQL; never seeds or changes data. +func TestAdminPostgresReadOnly(t *testing.T) { + if os.Getenv("PETS_ADMIN_INTEGRATION") != "1" { + t.Skip("set PETS_ADMIN_INTEGRATION=1 for PostgreSQL verification") + } + cfg, err := config.Load() + if err != nil { + t.Fatal(err) + } + db, err := database.Open(cfg.Postgres, true) + if err != nil { + t.Fatal(err) + } + sqlDB, _ := db.DB() + defer sqlDB.Close() + gin.SetMode(gin.TestMode) + api := New(db, nil, cfg) + router := gin.New() + api.Register(router) + token, err := api.token(uuid.NewString(), "admin") + if err != nil { + t.Fatal(err) + } + read := func(path string) json.RawMessage { + t.Helper() + request := httptest.NewRequest(http.MethodGet, path, nil) + request.Header.Set("Authorization", "Bearer "+token) + recorder := httptest.NewRecorder() + router.ServeHTTP(recorder, request) + if recorder.Code != 200 { + t.Fatalf("GET %s: %d %s", path, recorder.Code, recorder.Body.String()) + } + var body struct { + Data json.RawMessage `json:"data"` + } + if err := json.Unmarshal(recorder.Body.Bytes(), &body); err != nil { + t.Fatal(err) + } + return body.Data + } + read("/api/admin/stats") + for _, section := range []string{"users", "pets", "walks", "meetups", "tasks", "files"} { + var page struct { + Items []struct { + ID string `json:"id"` + UserID string `json:"user_id"` + PetNames []string `json:"pet_names"` + } `json:"items"` + Total int64 `json:"total"` + PageSize int `json:"page_size"` + Page int `json:"page"` + } + if err := json.Unmarshal(read("/api/admin/"+section+"?page=1&page_size=10"), &page); err != nil { + t.Fatal(err) + } + if page.Page != 1 || page.PageSize != 10 || len(page.Items) > 10 || page.Total < int64(len(page.Items)) { + t.Fatalf("invalid %s pagination: %+v", section, page) + } + read("/api/admin/" + section + "?page=2&page_size=10") + read("/api/admin/" + section + "?q=%25%27%5F") + if len(page.Items) > 0 && section == "users" { + read("/api/admin/users/" + page.Items[0].ID + "/pets") + } + if len(page.Items) > 0 && section == "walks" { + read("/api/admin/walks/" + page.Items[0].ID) + } + } +} + +// Fixtures live inside a transaction and are always rolled back. +func TestAdminPaginationAndWalkRelations(t *testing.T) { + gin.SetMode(gin.TestMode) + if os.Getenv("PETS_ADMIN_INTEGRATION") != "1" { + t.Skip("PostgreSQL integration disabled") + } + cfg, err := config.Load() + if err != nil { + t.Fatal(err) + } + db, err := database.Open(cfg.Postgres, true) + if err != nil { + t.Fatal(err) + } + sqlDB, _ := db.DB() + defer sqlDB.Close() + tx := db.Begin() + if tx.Error != nil { + t.Fatal(tx.Error) + } + defer tx.Rollback() + prefix := "admin-test-" + uuid.NewString() + users := make([]model.User, 11) + for i := range users { + users[i] = model.User{Nickname: prefix, OpenID: uuid.NewString()} + } + if tx.Create(&users).Error != nil { + t.Fatal("create temporary users") + } + pets := []model.Pet{{UserID: users[0].ID, Name: "奶盖", Species: "dog"}, {UserID: users[0].ID, Name: "布丁", Species: "dog"}} + if tx.Create(&pets).Error != nil { + t.Fatal("create temporary pets") + } + now := time.Now() + walk := model.Walk{UserID: users[0].ID, Status: "finished", StartedAt: now, SegmentStartedAt: now, ShareToken: uuid.NewString()} + if err := tx.Create(&walk).Error; err != nil { + t.Fatal(err) + } + for _, pet := range pets { + if err := tx.Create(&model.WalkPet{WalkID: walk.ID, PetID: pet.ID}).Error; err != nil { + t.Fatal(err) + } + } + api := New(tx, nil, cfg) + router := gin.New() + api.Register(router) + token, _ := api.token(uuid.NewString(), "admin") + read := func(path string) json.RawMessage { + t.Helper() + request := httptest.NewRequest(http.MethodGet, path, nil) + request.Header.Set("Authorization", "Bearer "+token) + recorder := httptest.NewRecorder() + router.ServeHTTP(recorder, request) + if recorder.Code != 200 { + t.Fatalf("%s: %d %s", path, recorder.Code, recorder.Body.String()) + } + var body struct { + Data json.RawMessage `json:"data"` + } + json.Unmarshal(recorder.Body.Bytes(), &body) + return body.Data + } + for _, sample := range []struct { + page string + size int + }{{"1", 10}, {"2", 1}} { + var result struct { + Items []json.RawMessage `json:"items"` + Total int64 `json:"total"` + } + if err := json.Unmarshal(read("/api/admin/users?q="+prefix+"&page="+sample.page), &result); err != nil { + t.Fatal(err) + } + if result.Total != 11 || len(result.Items) != sample.size { + t.Fatalf("pagination got %d rows / %d total", len(result.Items), result.Total) + } + } + var children []struct { + Name string `json:"name"` + } + json.Unmarshal(read("/api/admin/users/"+users[0].ID+"/pets"), &children) + if len(children) != 2 { + t.Fatalf("user tree lost pets: %+v", children) + } + var result struct { + Items []struct { + UserID string `json:"user_id"` + UserName string `json:"user_name"` + PetNames []string `json:"pet_names"` + } `json:"items"` + } + json.Unmarshal(read("/api/admin/walks?q="+walk.ID), &result) + if len(result.Items) != 1 || result.Items[0].UserID != users[0].ID || result.Items[0].UserName != prefix || len(result.Items[0].PetNames) != 2 { + t.Fatalf("walk relation incomplete: %+v", result) + } +} diff --git a/pets-be/internal/httpapi/server.go b/pets-be/internal/httpapi/server.go index 934fceb..005bd8e 100644 --- a/pets-be/internal/httpapi/server.go +++ b/pets-be/internal/httpapi/server.go @@ -73,9 +73,13 @@ func (a *API) Register(r *gin.Engine) { admin.Use(a.requireRole("admin")) admin.GET("/stats", a.adminStats) admin.GET("/users", a.adminUsers) + admin.GET("/users/:id/pets", a.adminUserPets) admin.GET("/pets", a.adminPets) admin.GET("/walks", a.adminWalks) + admin.GET("/walks/:id", a.adminWalkDetail) admin.GET("/meetups", a.adminMeetups) + admin.GET("/tasks", a.adminTasks) + admin.GET("/files", a.adminFiles) admin.PUT("/users/:id/disabled", a.adminSetUserDisabled) admin.PUT("/meetups/:id/status", a.adminSetMeetupStatus) } diff --git a/pets-be/web/admin/index.html b/pets-be/web/admin/index.html index e1fd66a..aed6626 100644 --- a/pets-be/web/admin/index.html +++ b/pets-be/web/admin/index.html @@ -2,9 +2,9 @@ - + - 肉垫计划 · 管理端 + 肉垫计划 · 管理后台
diff --git a/pets-be/web/admin/public/brand-logo.png b/pets-be/web/admin/public/brand-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7f1b8f75d602d0227336e3f0ae6d04b267162b56 GIT binary patch literal 89819 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

au;X?X4vfeq0W+>>L=@rp ze9x6~grMhFk4R|IAx^@9r&QPg!V@xSZn<^pp~0P-a0c8aru$*VZl z^;!+b!l_lm^N4YnI}KGKu{yoZ(umd2rie)!cDySGLkn70Dh1DiAvr-zj^Y!gw*t&5 zJ3|n@=}e446+~p+8Qd2ocj?`$fBemB-+RA%Yh#nBIC=C&j2UEyyee?~8ci4-Fc_^kcer%qe##pK z<_9XomC4Asx0KY)^!~%Ej54UKjNh`TcNq&PCW!DEoCqPgb&%dmHtzZG&e!y3@iw9g zfXmov(44?YX#cqQ64U`2JR6?ic^|QI(|V@4XU^wchE%TNA zfFVbFc81FAn~6Zg=XrN;^Y$imY|J$o$WaS4q*5rLW0u2myzXH1)36NuN?hH4( z0}hD5#EDAAfxk4#J}fes?)1xl@g}Cj+`snRDh|RZS8R3-x5F-s`cfI~?iquN2wDf5 z9kCoyud*O47!fV{F_?vjB!)qPa)gFx0{C8-v|3QorrykIlv;HyVv@-n_Z7xp}!WcX6Zjw@1^DKUQowmY^pL z10@{5tlex+BpHq-j7K_>8~?&FCkr;U_R!TZ0Y4g{4%vPf9bv2B-pfPksb}=pSgM~# z^Fd5G8(_`bujwX&z~Y1DnxR>v-FWb$tk|^d7ABY^SWkY5|5QfrC;KNB7h2USI|}l0 zR(g3k7|V#<1e=RZ(B|MBH$<3S6waRDAV*Z76koUjnV12|6tfByhEM`h0vK_~Hgy_+ zJU|6zIMi&e&d*V?RvW1V9T8_h_!UfKh_CI^qaPdGxv|Smk@UrgpYTXSJadCSllK^Q z;D;GL#)5PJq(!u&NyFdhHi)G_J9ag*;e}B{zJl-L&cF-S;zb!EYrDtFk^4HQAHMb4 zk4US=Uu3d<#D*TShk~9)q&bAjAOt${jbP>>x&l-HXK2{x68e%A#CG~QMs>j-xD4#O z%?k5e=u?;?9LWYOsy@1YhOd`zZ2gOuZ(rWo-Rbt1=bL})GtXbVcKh2ey@4cWONqHo zi)ova^~T2L)}5O-udHu>>8JaT9dAB#V$R8CvJ2gfx)efOsqvF{H$)%>$h zbVQrU2B<3=mzi@8GZ8(P-Hpr*uEi34FMhRXG#JxpAs|EM@VYDLr^A?3C^46U@tUd` z4{3p(gom4SlnXl$PIau%a3Ez7Ci~T;qqQ?nso+7cM3BTl8GlHn;EiB0I*{C?-KZa# zpZ{QO&Au_nIAgfW-~b&-dk9XDA{qvvi_QzM&d*69yQ-V-G^f2^7yPlpc72;xOfp>SIy@Y?O)n@Ut?+~AG zdg=tI0T?hEq)T;GN{IkX@*EJ>ITABa5Tz2Xq!BJ#|TGg4C)#GzN0V&Y+u<&CuZi-IThYm7T}x(BJ9~`y>3O zS%J+MiRf-k$>mfGtTHLjEwvx{c%Eg-A*3i*aF1o7K!8omo$;#o89aUh8ei#3x(f|}H^xc-iJLQ4o&_ctM#!#o%Qw-zyvtq%=bczw zM2uVGW;e?c=8j0xfh#472LwT>v$TBSsn(%G5=q4h<%f!JTuO@y1rqNmpD@i42j4Yd zu*Kq_+aJ1L?4*h=PUFzg-%%-b0M|8|O^zLh8~qR#;(j~ceiCBVLTapPO> z@7&rRtR7nYPyXS*v$0$J{*Qigcx44c3Yt@IG-3eoYoGk|!r`MwPoDX={@p*E=e*JB z-kY}uTbwi($_VXk4{s%fXz-1LNL=+=h54iO09dDBP{~0*pe2MFOOh;Zq!f>->!nx- zd8ey#^@UvPP>$rRx0Jzb#EzcfOUf2~!p&RV@4j<;usf=<(MxCH?EMeeHIyq4oqy=| z=Ju6q*YDg}yYJkCuf2Qq>o30kpZ+IP}!B@ES(?1=Vl%|^=t64$TzbD@x4?-L=0eFrJ>#Q2V>I5{9{z7Xy!OG?0PpjE^!NYH(Q^;| zm;cQlxk+rXG+?8A&Uv4Vs`AHk>3!?F1r)q@hWW-p)M=60}ky!a0-$^?Ti1pR?M- zpHCoRxm>5CtX*yOO$V!mQ$YxCHl#j78@_s{$Vg4Z z!uyG;jC+{GV7{Q|8&|J=?bX+`@6KXmzq}4kl1GIRKM7JmNpRyfz(uSmn(U`xF4BM` z5Ns~9R0oQbK`7S(&Nw#vnLU~^-KTt4=jZQ2AuHbk*;F)buDFexgUonh2cY{tbYyS$ z%6I;{~ZY5Q1i=MH-XNHo%r zB%*1=8t=V+d2?&9%XaS$OAEQLe*K%@e&I(BOx%W~3L(3KcQc47L3$KNRTTIZ)OARoIDTUbMfZ5ae)xzRw>_4CncfwzKAY%zn#a8MEMNp%I zU$arNqXkNAp8yXrPn2&R&aoS5W1ii44VO^S3>d-h?Z3A+fE*AM*BUMKlgUoE+Z*&D z(_k=AL+tgsy)Hs~alZ4?3*Q}#r@!^PUp#m6=wLMZ=DS-r@9Zck+%Qj3?Oc^yp1cN8 zL0ullN62~s>S9Qb?1VRa%auxUd#`7FVj_lIPE^ss1oIm59}yKjE!t7%fyYq&*|d}Z zNhSBkPjEuU2=Rhf@oOQCmjb7g1;B=JDGTr?m@Fz)q6m>BrZ`~cEV-nPkGv-zWp;KX@8QvktIo~K@4fT-Pfpzb&~Jb46ZBcvwstSx?CTCe!-0cYm4P;2tEHXd$;gQ< zSUDO7g@X)MGSf8-incg`d;(`%Bc|1N3-l{2BgTGhooeGn1)|99bC0(l{y1GCl+3tD zNOA;K0HgDC_wpeH90XI(letDMmbm(or123%7AfPQOrFbnaRJ&p{%7$bm}oWuz9^n? z!~+lp@h_BvC*GzP83ZGEQ4(IjRfLnAkVwWB0mWvmVK6fh38B4_KhEZbNj|kPVdBwGr!PowHmORx}~=NF_T}x*1UBACHjCPdNpZRctLlD zYcOnJ=7>~}MNLd_Ghxop!zQm?-B};(EzPx_|HyOYdh5M+f5cuq2(lfjj?o)N7B&!K z2&nHVp6*UdJACfp_R@zRwpbbhC@+jb=*6x+n=*&BcrrJCGFR^?-6b`-fmlXlNhbjb zkvwrhEU&B<&{^E>B^pVE0e5aX$11JZD;qmMT8bNoS$BvAP2(1dE|XP6s(cs<5YMSn zU~j5n!T=RI?vAjEKK|IlAOGa9{2yQbi~eAE=~f@5F<NtIgDCvB>%9K|Irh zLY5*LEvu}!i_|6w3=IlM>0LaDSH}Ci^N-6tPx0doUe6MU6Swg(JOzuhcj@T>Q3-;A zQJK5{Nv2VA-~U?g=Jje#j|ikYNnk(BZCDuSpi#TgaNuj8YK>>)74V0>A%@}1@KsVDQxXEEKt4T$h4A7p~XAdxL0D3#SqMi#-^CT$u3 zGA6x2oG}UqGmo}-mV@qX=7Gw-X%8fWio*oG(c5ZJf`eulc%?58dLuU9Y8=xi#vlb8lfskODLU4CM29fmz5>m=r zJjhFAtbi1E2FEDANI(vLl=7)60i*niJprU%*7CBlM8yazVDMy4Gl+qsFXM)6%o>Jm z96NjT*-xy$`O@y%4Z`3%7&m=kt;Rmx=rn<-?9)KX8E`NwY>dX?q$z(`ET}eA1^Ac6 zz#8{34WaU?t?XU7y|dQao39q1e(a$}$7%UtmyLk-8)&yI&m?uA>D&5}J`y>8;+v-!8p33OxPj-&sc2Sm@9XgcGid z06caRdB8bToi_VmRqubceEb6I^n$43`XN&36>vn)fB==gg8#E;NSBbXO{8qSLsKbMnnzAgw{CWKyPOb%!XpqqdRVgD z5_#i}|8&Rn{u&-V?ZQC<%*|Mt@G58W(Jk!lqZH9u13dgg83!;?FnsfBw>R3GtCt@> z{~(8)I+I1O!fMx2p{1LYo(bfp?i+|HAGlD`IF<&VHnD zgmXX^75@%cqvW&7w$=gQx8SS-h-8?dlowtPGP&=AY;Pcfz>$NedNdCgPCq|wEKYB} zK3%(nz^60h)Ejsl{~A;=57Z7ZDELN+4cYc&8NqR21J1zmHDCya63LkGXq!oJ+9KTYUM}FL3WO)1i z@%B1I#lC}tCK`aLtqGgHsmV;x4DpJirqMi|BH$G3s_Um1uu>T`2I$I-IgVLjOFy8E zypx|UPjkPwFkgLnr+o0!^gUE?0n^+Pvqy1YxB{7gT5SvGTZq0DC->5AaYVFN`XWSe&S^)A<=Fm z!~y9kLy#2(rI}xPfR>)kg|?dE0d^c0LC86<|(PjM5R0Bht3Phlxa07!{4r~&paTmi+ER3P8ZLQ+~E53uz< zA>_*}=0TFE!-(x0#Sa=c39M3MgQjtLIRl+RAolDsA|;%?NHx!f0;6ef1LYMyMma&O z5Fe|v2P};+JhSHy>{mnZlM-yvM~PrRfVR&XdAJ2T9p34T&yY%S%sTBvN`@M+cy#jn z3tRu!bNJ|LdFNJ(Gee8ho4eDSYt=Rsvu?INIC@lx^X9vKcx!3$0$D* z4!L1uN6)-clazW2lT8YztPUW_xqnd|LXf|w>G=%vbTYC6eS2nNYU>Y z;$%IyAVU_h8$9;R(??d1awyx{)enCB;wz7zn)}>GPPT9{kn;Q~T5M@F8X6JUqGnNM z0}l_AbIq3k0>PL|n-lVf>1^6gQH$hWL;{3;Ov=;uwl|TN$TNt_FhBzw>mJe3@rA3gtR3yfvr`%P>K^At|14~(v&9wNciGc_Iq#}T zOCY8y0n8VhEU@QCx!qY>Y86L=@4S2o?dS{}IW8=c#g*4zY1Op2*EnGsg9;u*W-lq( z4*@Sqvi^gQ-}kvEj#W-PR(jY+219gc5wcmM7`_z#YsIz8%bf8|U6SMS=T-}}|o<<&(`Hqe8W zcBq~whnN!xIN1U$@Iecd{nQc}P`UC>p@X6e%M)>rwf_zP_+}6zJ^py*{HJkY67N9VED~YJF+>kdH#VA9S4Nr+ zy4%BE*H%2_sJ3oKK_mG;6A!aM^2 zi}a;ySY27J%}fg)nzx>AjvQp zVoc#S!|)(cypD8cW6QYPE<{NL;^KzJ#eCEL&f4zw2E@hF65nQQ|8~R}^=j3+lVS|I z=yc^RJ8OoB?RI^BvC^J*|KaeRRK!vr?%l~Q;qDqsNl|ch?j;-Q99H!i;Q^DCF$-&|Yk_i!!M*$)ptoShiM;OJqw z9S7&;=h~-EpFIA+{ip7Ku(Q036jgkx3i&Th$%JQaku=bW6M|2C7{%md=kkAa`o#Bt z_~u`I@12cxrfH$n7{mT%fA8A%@bQm4|HUtU;p_j;pI`m?n`aj%zy5_snr%FvnN$iX zu5h~incrQMq!uDYO^iZ)q0l>|}Q*KUmB4?&NT7U|Kf@>(sRS$eOJuWKF7#%LpFOekq5GFlA7cNN3BC#CbDv;E zrUG6dNztJZqAF1s$$^+ew;A)LAV1!!|FA-*_vrvIa!+xy9NGHkL|ve)jR_ zPCxhf=_|KJ?_9ib>4TdX$>zq>)5Xe@kDR*o(l-{1!)KnXA3eU3!+9?16AD@!WxpGv z^F>))jmZ&|jYW33npWp><>s`AZ_9pRo`Vji#oa+^`{w?wi{smu$2bDH$qKk&3(|3g zG9sj?l;|A5a5`PT%;rD&L-&U}ptMQXjEhLkb(g(V^CjsohvxElUSaK)Z!1D&Hgsrr|H(h)TM<8FE}h<9r4$c56`kF%$X+z(ip-_jyD9pF+% zN9{~muwm}jm;cv4`RR{eQE?_0cB9C#maWDT1q#BBjP-h5A1Cq1!}0ZcgYivoXA8H! z(N^y}U;p;C_uv23-} z9i5ArL4-6D)_bg)a~>DT0mq|DxX~Erk8lhJhmmQk9uZ% z84^scVjlrK^J^5}3MGQAX(9Pdw*1C@iWdoJ0PDTJX@qH_co}g6FT)}{U}rD0Xc3O` zV-M@;*@(#r`Z3!dvfK_!113HOsRWWM1Kif~N^R*#8NbVg6Q#Ms`E(LV?8k_XPZgk$ zIU~!;cQ#rBCw+mmX)fn06+jqL_t*JpRhOtp2IHX zRKBVg7;(p$zqMAoL!%*2)TY(r#}2WV-gJ8V+LiU&x3)Jowl}xldh60?_<#Q9AN)aQ z+4aX108~J$zeIwjCg)wMXmV%3TFR|Fg7BVh{$e_~lQ!_G#IkAZ1BqgMTb)zfSF!DQ z{5aziI{`kFT~9t-9#rdP_axehjv7XVSvn|6n`fIXwic~1@mE;8lwZ3#UAu{Alq={# z2yY2Z5ggnNt3c^Ve%Q<1zF6d#%7v5R;V0fUTQKoPQ5)(|a6<3|w6r4RwHXuT^BcWB zLIjIkdck|4@D*?pA;i;w475?W3=?-h={}3#OB+BI=wo0LHvuPQ5Zpg&WWMAI<`?zU z%uE>gO4{ko?Jc4R){EcSZF=(A5EIN^ahKXF0Ff39p5QJ-tU?u=bXeu^cIL7ck)!oS z`zTC*s4#c9xN?SdyKD|>Zfv7~O5h#XX%K-qru8K$>ajw2l33+ReXKi zoZ{1u)t@vp5ZtF}Dt^?ci^#>JPfk`Jw>bq4^8M_S)h93Zc6H1g^}qYIul@K3FYfeN z%j3okHV>F?bCc$Rdp4e3-C}Wl?G6o%A~6o$-dewP{VMBt81v|H&1wgYzvK7bzw*7W z{Ml#!_TNdP(%{1|U1UU+HKVx9GL&4^axj|=1`c9k-cxxve*leDH?IT%YZxvzh)WC-lf(N)tD%o&#moj(|OVOB2EGW z3MobQh-?u5NXJdWc?KXj!dH_MJPVn%$~IJG$*gRP_K5f#XRTiluW08_z`D6$Ub zk2{~I*EY9B#Q^_!80}ID zs-@4Gaoe$0dd#sLNWjRG!7#l+nz*=nd4dJ8N!zH`@oNBi$$`eQKYsbemmhrMiTj>- z8U)E&ie$y4c!UH|ZHfe!Cym3o#q%zk?6c(_`%;ljKO{Y~Rl4#cQSjcDtpP_%c9w%m zpvSAK5Ykn`+#FbKKCp$vWTX^*0$AaKN+$q`@bkk10_O;X$F%DHS;KL^OKkdYv{=m0 zsFYC%+8YO9aF%Lj~vVtii;S5H=Aui7m zB#BZCzj+GAFrW0Fh{*OESq8J<$l0V>7U_5PK)8@dEaB5FG0Zjr2D^Oz+UBMmC|3lU zJGcD%6QL=2gc*&?W*6^J7E#AkSxYLWo>S;apZVq`FQ2fnLOvK zq0vJWbLN*MsGAIsqxKkyh7@-;3f{zX9qWj;WV&i)Npk%qm3-j-1K{ACLLBiBrf$L; zOM6QfrVIC>0%@yJ{8JRm6BSJDz((?l?2jg}zklt6E7xz{?&G-Xgp#Hz2j3)g^qn6U z3T&Q2a-T;-R6Jl2k^E?#*oD%JE1nA!Y+Nof_IUr@ckjD^hSQi)+9o31dT^H)J!i; zF?)bN%`0QcS&Ug~(xrT|=tMQLbR;2UxwgK+Ty03Oh!}WfxezffTTL{B$Or%#@>GBh z_ctJ=j_FK$u|pLj#niN&<*GNz?S=a4+49PLuD42g1Jm-rzjPWFO7YJl_cRTblGGRJ zN5XW-zQ$df4EWKpVAlw>Ds>>qqf20bLq}qgXyNo^;cTvT6yYiaOUXrYJ!IhStXu}i zV38aPMO^J+ex{9W5olat48s_&^el2vy zuJ+v0C$U5j%C?kp23Nu@Y=i*Nqb_o-!+8ui&BM91w{vTk91^gg3`{IkRn?D8rsy-! zeDv84r62XLvB=!*l;JODR@2y!*%Zq9OG{slj%{(_(+!JaU z34F&>e48rBkcIm$OFxVHOF;>X1Yd13WBq_8iV*~CEkzWoCJKg8!0WxP#L9F%RmgCFpGSU%P` zb)mSh%7Ip);!6~PqqfHoGcW>fTB-$nmc(KPY2=!R7=*gp^I*fXdPeluu%oyu$)uwF zK$4ekX2@DZxW9d3QgVOx7!1$@g`fqh3X@5KV2Uz=U?!S`UK`A?Fm`bmqw@gB!x1z9 z2?WCj_j@0?1IYnyv;ox{44ak-cd~t<6bf`$^;Vm4Cmv4Hosx#!4G~I(!2KboLxf9E z{@Cpu6MpIBl=U=?mE8I-Fa+bDV~!l<1fGmf*|?J(x7f|UQPI{}X;0@)&~l~~)-iiZ zC)|%b3eh9|H3y+P!Hl7cT5-0+A{)FFSJa&*w|>r<8DCzHQ<98lNL-PKvI0vk%0lB6VlT)L zKvL|W%j`CxKxZGR0BKbSC#uw2((^6=XYhR+xADuJSw`kYkLPs5fc?%+?@*H+^izt| ze2kN>4D{Ux-Y8M9oA2NH#dz~Jd$QtLh54U6ll2os%1quY9<84|UpaCX!6W}6kWf*m z29jeTfoaq<0xhv4O3;DcoEoJ`l-v0h^0ZxG)7iZ~;{j%=JiP~2fT!5I0sA+DNV*GF zqq7#V%;tiw85EGJlwzAJ5s4cL0y|4-F-VI8-5rWq*cz=BuBREo!cItyHv2=?uPnAW zc11EOc^CnQyG;PaS5`8grG+-0?3*^5_fE zh<|ug@)q;8Mcnyu$jR+oo%YtIgDs50Af0dOD@OIwv3t%>e(Z94!YGUr6!C zxZ5_0?5Buy7wVakmUDl>K4pnrXznQes>e8E2Ec-c*kXNf8@EFj-P6lW*51Qdms>!K z3vm-fAP2yTsc`(U+I%)3a6oa(Zx07Iwzp%R!O(PxTy~L)1W9j6f&VXC?;Y$}a^3g6 zoZp+AXLok737Z$dA`v980Fx+Eq9jTdB+JUOtg=c~vR$_SaH&)>Etg%AZIxxIC=>~T z0t|^1Ne~7RMdU?ZY+h`h-JP90^YXkfFZuKNp1!|%kaXYg-P^bO^f{+bpFSOLw|UY~ zc0fE8n1Fg2Y9}~!_3=NE6`_|9I{7!Oh03BB3Mh_Zy1;B%EUjNZGkf)(;|CegNkkC9 z4tWmGg>e^mVP0=C*qM$#cIa07+0G3eq9^JhUw)@eXLtO>onuF7`Hb7f)%4M(W;eBb zbc@;H6)BJbjJ`QFlZBa>V0_6rR<*F~ac71hrX9Yn;t2JTYwX?HPcxPNF}9!RBQx6^ z={_>G!f2fTWHt3kNMuPmJuD7+G56`$|g| z-GIwWe9*A5#L>lD+sF4#ulntdSu1j)F*GzZxUjm$o^yPfa(R1eoRwyL%kKt-eK(yr zdi7+z>JFz?f(PxAqPlzSAM>^RH0< zS@7L_(is$16xtKGcC~NMNs=Ar6`tI3MKyHnzDi$A!NB>&ad7etT(Pe)oT>aJm3lfvxAw=%@;0S{Q3Lu*0+nP z93|AMrsSL9`DswdQcctfO+Bh;s$fUxG73VYa$tP&z{vii!_M;Z=^f(_Zf-@+qkJ~s zgB;aF{~$5o$B0MiTPyOX_p?|jQm=Pq1fb7l%JySE_dF;1@8 z>ASY(=lN;s*l?jaL`#V%WAa%@H(*-^_Get3Y=xq;9A3OqG48MAA8F0K^ zj^Hoj4O(c_lwVm;IyT4_<{$~f01l1sOi=!}nBn5c7wZt(W^Po$fRA-4P=0hz88f0q zS_uQ=Q7$As23(ja}Di3ZbOrtuDU`S=Jr)$aUG@oGe1fUUUI1lrVUvJeB{i0 zG|4C{Y*QY{dh$4V?;s%BAGm5hkS@ZwJFMgaQU=A7SQOo%Dpi)*PKVDStg@sfh9EG0 zV-xp1aL)@bp8nD6=hrs2=9X76`S1%Dd_qY$YrB+;-z&ou4I$}FkBzW7BmOLxySVHs zPDWAhxa*FGA9(}`gt{akC7X=0+r`IaH(KqlL`Lp1L%Pf(lYv!h)f7T-Y@VrH+I8Te z5_O2vZ=8WgXjpSH011QI6A4l_0I=hM7$ZkZy6rbdlL3c1GmOkFvhTy#^!73!m=jD6+NHyqkf^477q$qZ z1C^543Flu?RB++RfJp}-mtiERrB-|*5F_bZeE%4&09yvy#S)i+!51!GU=70!#t02T zQxGim#!D|A0@zrX-B{tk1(I4o7%)CbVM{%hI!_FYPY+D*V^0DNwuTDyG*7_@4)Oz4 z@*A44LEdDPlg2KYMPAjb^9jZZbuu^_&paqxq+tpV>I(yfwscYhpzf^2u_~`VK>RIi zoK5X9a+EVh7+J38xC*7wl)5?Lz9UCJ^!|s>{q7eRt}d}#Eejv$9P{DYf$2$VNST61 z{$)k}N%bv94$$&h!-x)zuric_Ix;c!fuH@*%>MlVQ8h#_$qRFxwx8ovs&dvXD@wS^ zVjhsE;;WX7A~N5tE+huWjNZ^9B)XbxTEHG{22z1WRlw)OnMDhHWC|)M0%fbvi72eB zBNTIlnt5zyVDB-;)`r#=u3ug8Z~&I6k9$TAF|ABi=KASkS#@xQvNtYKH)mYo6=I@) z_Ut*UJ>CMtJqia%P~?_K-OV&~D1%v%AO&unf2m?R!7|dI303g}sJnYHvSeZci{XTN z>oDpDBD*l0zB+qxdG+|zq(hHEUn~RhA9E{mGHm@?wHl$xY8t+HWJZ)lH8kh>z-Wkp zywQmP2HmuUrQGI<%g-c>{fnsvmv)Ql9VNz(vV@Uy_%enQr6(tx20}||G07TML@jr? zMt$H)eS#Q>qY}gr;%yW&-g<+Ii8=utVy7sJfy;?GK?uqokE+upkV zgXc*CotY7m$NEUN&U6PC#RfSdI6O*H*oA?4 zCdJQMh~arbBg2$?>mvI7G}~;KqqET%D@mC26j!s-%i`t@X~3mr9^&Q(56iHEisIYR z030bKrja5;Ak9jZD5$6uY(^Rv(~zPLK0=J!Mb?H!gh( zJrd+&mI?O2Q3dtK(a=b&o=lr_^gUK9&%;Q$dEOT6R>=($x%%&N&&^l*-&JcXx|&iEs0D!arR zrC!3HAH^V5Vl=*johfr~0bw!EsW4sl&nu&{yrzb<+h9qdw?I#YJu25&-a)Z!jU{q` z4@#%^@2ni|TfN#(4T+5)6Df);dSx=6R9>5PkD#>ZK%OfZ7g6)73VYQPP6y6ix%%eZ ztk#2|s0$9`R1qR#yLyh^yFQ4f$_;>lFluQruFM4c9>{tk?kH0{3xxqivcZ8>`V}Dv zgTbi5#`d<~JN?@G@4Q{>tB&MkTz;L-8z1{}J^<>%XNfK}r(ZTc zJ$C3Ol!S3*I>@R%eKO^WE}FsSI<^hsWU!M{*j4;!;WTqjx00zDRGjRGmg^bIu49dC z|Drr7H_uHpnD2u(*H_f16dp?^gW_QmnsUvb5zz(qp}qziX;fHpWCm+WdFC6PiK*#> zhkxQ-57FRw{-rlq|4*s5$fABpwj=$Za`BNGRSBSJ0}tx8C22BBe;AO>398WJ1oAbOkPNzA1yMy7H7a{&dXiWL z1`dKLGIWYkV4zD^$J1cZC1s9vpgd>UoVr3NZ7O92n)H`A+h*n{=^0$QWId}Z{Lnr+=6gi0-}yyq~5rmCKjDu}`8lx3uC6 z>v1rVjbnSOXod}CTGaX4P>YDg#g?TPXaGetcAaVjl|=hjmp9fp?!kkxhDRrc*wL~Q zkMgVBX*2_De*-C4o=6ntmf|26ED4Sv2%{;#|H!cq{M6{tgL{AQ_;VMoc%*>&s=n;3 zVvgC;i*>FFlNJs|dvIcOKheTFiBI z%b|G-j`$|?%7?hJ8nh}dSJ5yN)n&n=)PZT*jmoo=?bBz^GyB7NRnp`S?s}M8)SxrX zVA*CuacJMMzBgZ0o!E`c70XOc(d8XlU%WDM@aCcM8TX1)#Q?{4vePhq81fS91uF7h zgj5ljQQm!5N}04lu@uj-kO6i97GQMRloxFT^7v4xP31i)aP$poqh4r<#*k3(xxPg7pI|KaD^o4LOWSQ zKDBmn$;Kjj#D~8ey+#MhLGeL`)!b)%fDgf#6Tswv0Nt&IsYcg+2kMT{vzWPWl|7(# zJYpU=KTji9I4iPjHhjcPvO2o-1WT{P^`yao;b-|BU+!KwefszR;LB_cbjw@sJ$%#6 zG)BQ@0!eEnmvr;hGOeQ|ADyrXlnDx$A&=c*isIpy1tWbEGy4w@zH4gc){`gBUAR2I zw0Q2~?EJN>43Zw(H}jU`M~)sjboj_2&N$k8=n(y2_SjTQNIrEPo51aC4Q-EMye$JL zpDiB;g!FNw^_Ih;M1wDi-a zv=LRQvIbD!L94b!gGue%z ztJ3vQn;f7000!Qin}7bodG_#<;ikrkWCUX9 zo!m&UZxzbJg4EuG2yX7i(>rQIAE4(^jglm@K)QPmBp!+1-KuO93JEmi>La@=U;p+i zufFTHQ#9&{c>^)r7_Ykw&u58R**;rZP(?@t$7dJO)^Kj4*Lo38V$W->)d#n+5 zNW*VL6PkQSSL}n@mY|jF;#)*72%Q0Ie><;osJSxZY%t(vh|^D6IoOb1H;bYjV_9Ea zxq9j1+``i7OACMW`7ixv|HWV6!yG?nfm&o|Vp$82i<43^|0SvP`QUdbXRoiI$4-f& ze4Lr(*C%89_wO4Y8;8`*M_DrXG`mjx^t&EBdi2oPMzpywre|+x*sWMSkUrblARUW%Q zTd4r*kD_BE#|%;R@rrg}N}PsNfHl5^l~ADO9p<`epnfIln-w6lZ)FfeE2u7>Zt@o&mL8&Q_&kQg-a~E5Ex&9eD%eb z?B_v_|Hg%yCuk9__^?J6F?@!+u-0jj(gBbp4T#m17#^0C(9)n6=oc+2T*N1D*ciHj z4BhaR6GCJ(nkO~()IBZJx6g-u@A;*Jjl)Cy2BiUM0Kh+SD`9lwc!BK>HN zwX_4%$C(J6>y2DVojoEFVCmjsLG`nbKlQDzeT#!Vg-4l_>awVlRBxiE2^BVrxwSA`jL zPiN-M*WUQG|K}q#v}PtpPn|ppJx6S8F~SFznXYg^r>M%NbbT9ig1!sK8#~U%SPi5<&Lbbt*(9J#g`a^)5~A<<_1(D=xK9s$N<=b!UUK`e~Bs*UPNUGU}jD8(|vH zjKHzE6`zE#sT&nN88|kfH8rDihO31bMRie2 z*ySZt%t)K9`1|S|0bAOM}D;3f)4#8FEGA-R#_NyV!=!qG$Z@lq;{^Ni0!n4n_eegqX zz4a}(-!eME5Rf$+DNFX4^Xd|>8P!1!=yXgwi=(VaQRT>la@a&<#SO3>fKo>_S}lm+ zbem>=)=}WqhlPd#ZecP9cS0fwg!3@{&*)Tf#zJLqgNFh`pQ zd=?8{b!n?ICS4UDuhq%J1gYAPM#;$n+eo=0&D7C0a%`TW5BW|UmF;JJ&M=>+FJ4@#4j+V}k>G$CGF(Kr23*GB*5@!43zJ-BGU$+CouU=l}qu z$#SL2ZoU5U>3{l<|H+HbJU25oddtxRAAJ8iPu%*J@xA-#jQXo?jBU^eO6@c!6^!DF zmDZ^qV_ZxfFcciW4S*+;Rino8CM1!y7Zy>{o|?gC8!N797cE}wU!6m=3<0@Q6K%wa z{R4+?@%&@a7Q)hp3_~eOv&cW}*3j@rAN}4JpL>?3L|_R?Ks`)DVUP&}DrTU-5aHlw zW*gmLdNuQ;3$5>mXATVSKM|41TA7+?K)PRMmY+~jag$H2 z;^t^K+DK+Bi5H^$RTPk#RvIb{T;gg!n_m3A3S&F z$~?M`vR_%a_QcC)-aLPKVyK_>a2{lta%kP8;V`Ew;YbNT^{ka=n)OJZQKsRg`T4JW z@hczuS0BCb=J~0K@#6>guoCH(J8qjgaBy^zk7+!;f`VjOQYzHR7BhZkV%ZJ@g5N^r zpgU}k6hbRUlXrSjDr6%Sre!`zD1n&)Lx!#(GVF@%KfZQkm zcPN79m1iRYP(ihbhUJQPB;UgWiC_&VKt+NkZ~yGd>ch9*a{tK_wi~#B$TJ+|rX2O> zkL&uCH)-!;I%z?m+3Z?1dgLv1wxH+4q?X ztK4louvM?E5qGBLx5;o82k6p|VS5;lJKnmsxP11^h423GxzBv_v9JH|*>fCH?FtJS z_Mb_)?VSs=3(viL=GhltUzlH<9AOLoews-s=YCI|R*-c|)R89)Q`Pa|&CcTd{5QV( z=tqC;V_*N$S1G#8qp_6ek)L|_uKVtq+`E5#dJjueSzYIX1+*SBOjAAySA)$<(`}~k z0vK`#PnZm4g1vB|hbZyYm2nXtRi4|WODE* zn^x>~&7AXeX1n6gBd_{IB21bMKXvxP|Nez9kc&zvA-&M<4QTy#sg&8C?CW{LO;TwU z*RGJLxDJEn>H@=6^Q(~VMT|lP(wE4r=iyqpcy-(~#xUZ)_roXu+&kV5W5!o%Tm@RC zMo&Z2k@DjT8b8juFnB-20-LSnIl8LD`%f|_mDMba^JGCU38jR%qCJfzOb>b-(_#*} zIskf+hvz7UW$u+iXO0}1k$HKQplM!+&+EK$(Rzp{bg%)tW>J#Yt&>?fXoV`7xu zQZ~Q-weNiO8;>12e)K(WyX)=u-gaQ$^n~L&?4Gr?!HPBx&tl}}+8XEAFE6cJx-|Rz z%V*xWc;)KyGLv(lhZ)jOy^b4kP-@U07KLq*$R@>p@wX%#g|s=n_J7P*UwzI`u)eBd+O;QUAb_Hf!-O8%AQ~pY4E`Z?z;Ql zyC!Cs03Ih5vHEDU7vjeZXsVGzN_?z<8KDNds+vIv4UMlziFp+Uh&Qh(Hohz)KFm`x z3xMxnY_mDXY@z^i7G)JO)W%Mw)0pHCRW_<|9PB!!f-T~xnN@&jQuF}SJrA7*4Gw+w zsb`kfR%t?8KC2m{xF}$OCq}ZeBIMq~$y;*=S1Fqy6;p(`MC;CQ!sd#S;8Gcd)W4qU zr!QcNt8^=V4G*E+Rcwh}B3PcUzwpuPkEzwr}y(1Lc-4p>_aFpVu_cvp%xoC)VYpYB-ia>+CcY0 z_?flQazQlvU?PuH4hA~~glWa@V4_@li4XPpfg^_>y8rg83(K#boh8F5TbaK=OpooIo;q=0@9l>Uj13R74bUP-Q?IN|Qn=VvoYPwEsBZ7y+1WceDJN`9wY`0H zeI48A?iV4rZ)orU+eyXxGA=ZN6LvzWC&ej1Ub^j*m@q+Up2(*+zxk6koYA zcXoE+^5W9c>h;Odp~DlS(~PY;+B10jZ8yE`?e|UX-OI5bjH+VP5to@vfv1U>Ow&N% zso7=_6Rjti*bZk}H0Q!nJQ*V4j=33OCT?T(8u`ISyp$qQB_AAs0yER`mH{P9t+dVd zc~{S{;V;v6SZ}5>$sn>8JX9vmefM*yo?60PnM)}ufg?|_udHo+=BcM`4eHq$%7U+G z6+?~ay_W+Y5tc;``oI{s;xsHqt(joSYJ)po3TePoND@%sMrmX$F379=y9dGG!LP6Z ziY{GPnE&FlKl)pbypI_f!}2etdI6|0);BP=r=N9HenskuBebMxLX6Dp8)VBqhxY9n zB5NaJaxyyP4$_I9G^^9eOPeMpY5-ZI)@d|DP*BY%c~47;+;;0k{1CM5AV+VKyUt`m z1ce-8E^~XE?{kmbbmAu-W;gsN7njyhpA8Dyj+Xcu+u^Lv&0e0n`s#TK4HH{zn1A#1 zBpZriT^#x88_x#1#u7w4mL}MIE|jbxOp!{ms?kG=NByKlXTMg9Uc2p<6|hlqw|_HT``4veba-j7;?mJiMijLfjWesF9u z5rF6HXJ;R=vC(_%nubmBq~Z<>j>BmDGKUKDV3WD_p!nN4%d`L`3iF!%)=^UmDaitx zyUD8AjzKwxHT2f|24-g$zyI{>eehfX7ugMj1KPSbh4SrsVR=F+5XA*zw@?x-^!pTGthFbn6bxY{$U`M9j*4J7>Jh? zp!ABQ-+nB1-i;nuU<=on4unI49=T!it;<-62u^2(*Ikh%V*ZEx7zjJT(o`mA82MqT zPj+6~TE2$8p=?kK+4|yRYYtHBsf8KYT{pDaQgmT{;d9SC!|9vI3`vx>bfCMQq-i$} zi%^Buqe$UXKwV(ZBXUqojruNt{{U0N+TcJ3>f~o0hDxIR2>`ClO5&LUw)S2B#CN~{ zp4(1UVv;cEH_ig*O)Z?-kJTBPn%Q3PWB}ENCAH|%>ip355pye_^WdEd!K_ldplTD7 z{j(rmtssz-b?Oxu1mm3wq!j~fk|oFXfD8*uAyDs_=c->ftsAg*w_q> zq26i~XqJ*T4G5cY12Xh`k3IFq+^pT-24(gV#f*mUIJt=-SjtBL6KR@tdMjt{-1PFH zj##vGTL5wiB+~9bp263J-yjpf@-AG38y~TFiN%Nfs9r2^`ScS{{SQC?)5rEqVf{p9 zIRCi#@eki2PM_+)iJ`H{t+l5(8Gz)HA%0s#Wz8C|wPiBTR)LEqMs2x+1-Y}ay~}T; z$O;+I8Orbup^i>Eno%@}h=|O0nzMkT<-|cVpzjoNVTTiAP+ioJJcG&Fj5&ei0Zj9E8%S&L|GddKcy;~P-;v)gD zi6Q<&t}Y;hgVZPuapMdRfSWqp05Woe2;;;GU-9$Cd&NsI+Yb%&otc~c)Dutr-Jf}c zPfjEx+YN`D$T%FLb3?;>4si&r)d7=DRKjjDxHvw2sDEQ+3`O~Z0A?3^@4TLJP642P z@ZDjtoo)68rKQ8vHy=H5&nSIAM`o}mBIe&kLL3I=>Y?F-d-i zIM765f0x#ypF^GwbD27pBP40JrikgMKQ8eD-P+XxYrS-lI)P!lhn zxCPXe8UVh`th#<2UnylP17a?)APK${4(aAC4CrbYD*_(wax?g`Z-4hMzxO>8ZjTeD zJDMc|*(Ms&WUIZ=Nv3aDQil4lF(@^!`y^g|V{2d>vp6)lcYu8nfw!B>(*j^M;DTos zDP}{~Z6@cjINGqNy~P0Z@=|6`s=hJ6ikBITaYPTaQUn=dvQQ=n=npcw={&gxZ@S~o z53FAQ>=(Za;K89OHi4U8UU~i6%7^HwsLYyj_(MEcdhCDNL!{dZ$SGr%{E#q4&3Cpj z{~Y0G8Av=@Fw_aY(ClJ*fzc#?W6Y(qtNQcviwE~iFiWuaz&@01Vq*NKfAMDypSsm= zzFhK28qxk(dPKtyGt4Wc&^}TmY(85qIW^p5YIYS7OtQuwrfp27vT_Q{3W=^bRSKq( zCgLDnFBmMzJJr2*jW6aL4q92DnM!@@;?QgJV9f{^MR0In`f&fj+uWvG((O|85Rahq zkUJ#vk#9aq9~=poYXATq8|0%!)g<9;uR)Q(m@QvTI8OlzNWU(2Ljn$Uw>7f}OgsYH zQ;jxCy>_hdOsy0S3S$qi1uQS(jRTL$3(-&je)#&EzyJ7?f8~AeX1nJWO@xgjV<`mc z{z*4i+Or>fzr*(891KIZYxX><-8XfZR<+-WTb`>0Elp`Qfd72QssS@xM)d@p+iTO-M7z2NFnt#d!NAcbJwg))t?rYzCg5Asq z2d8M*Tv%M0-`XB!WrF%^7GnDc1_@!zh<_|144{-+WeUI=J3wx40nZ>mD}l7vd``$h z(J>c_(tH_WWyHkf(DYP4yDCs_$0s;xgLTwX`}cFw*!alMPygc2-g^H-ESSxKu<7AM z*G;KaTuQHn4yyi<3Ppkh2xXiH2epCew!4g{!v?$|4%?he5jZPgEtz?D5fZ|(bIpV! zsSW{v)TLQlTT7Sv=`jgx80wQJ7SV7!PaH16g#n54+2B_DDJxocUQ%gA% zybBMC;v`N(OsWEF z=iE@*^YG2Ch{S?fSfU98U$PJtp#V@(FkQ-8XilW0uScj7OJ0~QDMoUPG+%n1&U`7s}Vo1R+B>S#1BgUE8^1Q{~J8ZDO zy2CKvV5VKjRFybdB>;_YlNlDo3Jy~$AA25See&SmALI4$q9AjP8uup+|s&6XUm>JbCTf62t8u`h^d^?R`JN z#uK#rA!RqljFyaol4bPYHX+KVfk!M@3JnLU?-B+lLp1KS7$dQnsZDFgGJqEQ!Eu(9 zU@z#jUtjTCO2imFh^RE`>}C-4@f27ZKg`ZBR*Hm}sT`a+Nb7%x&DPD7(hHpMSs89l zMOU5t`qnG2eg2uJ$8G!w>tCm6iQ5$!;>5mHDtS}e1m?moDyjg2II`#k2c~pW0Q^&F zhMmxYO`~?C;_hA`5zZiBYIc!NK=&@$A}H;OBYXbov-3~C@b7=&fqN!d>5y=#B|@b@ zzWigK+Ogq%$3_p$5@mb#3VMUpA+xt>Yx21U^5tYWS}zV*BTqRL=yftrKW zHBnkBlYTy=WQuociVp+&HrAHbR~I-bXk-27e(7f)`Q=~c6Ut8eS#aRlXHaUgw6Cw> zBNec$RI31MsABtFz-<1uUN0#W9>J_R?FAOwNG>3CM95Yml@;p_=>*$cR2rlO@%l{+ zo7!LO=fjMptJVgb7R($T=3#2z;E~(=*kqfwYnA*GpX}sPl3rj#8Bh#XQHwcyo6Cmi-6bdHbz2hzY1z;xN3b7^E+#9XO6i;nc*OKc&(${*bRg z$WOGKk4043)W1Z*Z3-o<##;d73ba@~-O{kN%EfBA>K1F)4OJuSitz?X?6yj7G?Ni! ziX22K9o35An#rk~P9DEDd-dYwS(|HzfU!R`m^mO!J4m?jqob>$YvJknj&diE zAyE1`n7~18e;uYLw1t!HVWuYg_RRFVU;O&-J^Jk{bF=S#|GR(g!yg{sf5@RQ8*&!l z{3up9)cEp&OBm#(lB@s`SCZCJO)?0ztX57W)g=ll3etyc3r3{WwKNg+cfgdWw0TyS zKzjYc%iGJB`_`6N1Cf$EIMLzLc0$M7FL`{J*D_Op!q zHUPZMMgY9~qBEE8M%RMtkJBJr^=oj()Te^DH=y`5Pu80>kn#ncMJr=RTg5> zU@aqnmP1szMGyPn){ic)MJj(~_M&j1lZ09aP!eg4YY$}QuJ z$K#!Twjb6|5L7ZTK~=YfTRs_m=duzb2^M+uJ~IJK)J6_`N&@M=olC1LR~F~*z3G{7zDxUlG=<}%I7ft0HKNR=KGuYlQXGo_XqJ12q?9k){lDe6Nb)G$(n zBtc5G^4uvZHjk5r?a@@WECk}f0R~Lhm#qXW+ce>Z2PbESj@~{nbC_xz)|;Bjlc)-v zoD!h)`Z-GGfBXEG>=f0<@AxJ-0D@J*nx9Fkt6__HN{M{A9spb=?#7=*KOK|5m*eertfiM2ab;kUe`qBq%z)&9O2wDS-aHw@372QDplW)Af zHr)58{`y}#chM4%i*%}}d-Y{xWk0_NT)FT|_S%Tml7@46BV-d26R;i0= zFhevG3P9~glFC4sLTHsjOKFEwFu1QQY+iYjLpRvD3?`X@9+?;)IdaR;@w>A0e@sGN z+80Gww=k9>$E42a$G`Q1|NF~dX8!?T5)w`=F!3PDjqAt#@&@)E9Jv!J@d(4Xgi;Q{ zT?h=<V zjdGE5llAEEY*b!iW$1te#!v7+ezj$`udmVuP-hB zXld>z|ID8`a{JvBT~$+!XLZ`TX|lbSmOY8LxYAE09gRil@{YtP?XlqE#LGnFANcAj z=3?}M002M$Nkl}_}0a4F4I0Z`cNwXAsmQCLN*GwV(PJ_G&rN1>& z{fA&c0?=-zufLzuQ0A6b{?ywah(N{9W#P?V(FIOla+|L}28T8lu6Q7GG?!R-V}}H( zfqd8TI@c3bjvA4FMh7bl8I8R3j&5cBI{s*1sHBC!Bo5h3(V_M*%Qg07ArwHGB#H({ z(CT5zQv}q=v}C6D?qO%>wX0XASvSc*2wym|5=M=8n4K7wf3zM4s!t=nY6fksskah9 z`?39)L*~911Lf4-h52*KOOp>haN?c^oTXCb`CgvIM0^)dubZ}wo%s0Y^D)!tI!gSl zbfQ=griu`Z5}rEKT&lDPYNc0~5>E0(V3~LD)8PbE-%H(wVR`{(dkXV56= z41nEy&&aJ0d)OYIYEifoDFu@b0Kr2%Ddl$e* zpag6|IFM>yqVEYZom_>fqC`XEMHA?D0ODQGyx>8arBHuue7?v)xoiusBJUUpnNX9z z8&{*b%L86eiD%BAyZ^-TdrzFeHi4yws<9({5Qz-67}LaWW?qar)OELg#a^MUWUTp} zELU-{VK8Q%r6*wY2-cjmatFrY|7yh&NK&;qV?`|0C~E*i!Yf0UKuZ5aIF zG$*drmHw6G>np444?lF^u6sY`UFcMO+c22_SnDeAas!M78O*wsBBd+Cy}+o| zBrn4N@|>$CNh$)#HLi4!k`^j`YlQ|LIvWi2(B`=|N7Hn3`3hk6>&GWY_8%TS{?-BZ zx6CM<5_8@#qAM=yMS;m6&86?Y^7`NZ#iH!wk1~7xD5Oq4+=3vxW(ymIW zu$kFGGu)QYK}>Zn)?CAB?^f-Wg-8K-2IFDLwn`aJwW?{q*{`j(xg3Q6kht8$AhW4< zboVliL7qvDTHonAe}&;v`r6oa{)xo;W(_=5P!dX;!9oQZJZbQt{XkLx*bD}NEHCvf zEp0C^FW-5`;GK8!Wr=LSDq}CKNoK`?A1h|RYZTP{^+ySXmEccb!h!!Z-%V~AN1>?t z1Vx4>L?7BnL@=4Ag`13+U+{sU3QxmIyV*5xZbil(w5iyEAb+fyiL8sY(*=WG+R_N) zX0PP|OJ-p(2a-cjQP(qch;1etM1sat4nUS6!VJX#X$QHx63z{*!hkVXCDIa)-b{^C zPi>vOz-dU79y1+vN58R-$vR%C0gQ|GkB!>y=lcX(M0{_y-oLQWw=loCFu#23shzhy z#BN#`V~2YD2A}V4*}8`zf$SG#5>khttKnP>ejXGFASM#drP7x`6sm&ZL5$+uh{SFQ z<7r}z7;{nWD?7f|I9ijbn9ZeGmOb}v(mQ93&-ld2JBAP6+Q0Ycz~nwvA0czks8$e( zOrc0NckIE)*gyN?SAPA`M_JHOp(WprHKQ~pRigYCE)j@KOmXpSMZqW{!<#teY|kXK z^ATaW=>yzZ5xARi4M8umj$lg^jj4s@MsVj;b{+ac*n86fyWV?#;^3VT@*lqO=1;uk zwznKQ(8|CKpbpwd1y2?Z^0kqTcsAjP>D4$no>PYfxw$#xLNv0?&3x^uiA~Zd1K6FU zz#$+oS|P|cb6Pf(2~uf7mSRv0H^!ru#YCk_1XgF`3yVSR~ zM$5t021~)wDgbEwFvW|~!zvSA+_~5oYkjSsUFGKHc9xbnB4+vSJ9pms4n~_$DeSSM zE|gCe)?HuCC+BXA1<%IiG7G|WCEw;gdT5eOjv85)-pZ}>(P8n4E;4!~NqNFr0%LZ26=ZNHF4vxEcv+^Wovg zUqADA{`DtQ^UHIEm&+)nj0tGBCVj*B*M`I?WPB300`-a{46JzdT5km@46V*FHpXhP zdQlR&!h>5809=2G*2;)19#%?^1#^v`n(a0Uaf6xast$^yyKyCgUSj7VL0za z(+g$Qc5?*XB-^F1(24;fREI^Qfbq+!^!_3CpV2fX^BBTIQq`riT??BULivvE6D^6! zJVF>o89;=(;E%@Gmq3*bLcLNw0o`;?Ac}wuj3^VZHj~Iyd|=bg?%@O5`=+m7y1F?( z$Cp#6_znvJ`Gm^*^_|t#o#o}7YuEZ#R(6&ax8~<}mKL@a7q2faTpQ_MeCXc3d+#1$ zD4p&~=BoV~3)AjioU}%0&dE|;VbGLPqF5K90|8#i!~B(qA6 z0b+}odFoFSixuXqJzH;mF9nXCC+jhh=cI4#bsk?^`-qO#xU`%*H6yI2xLIpk? zx=VCE&BE2qt-t=8pLl_7pHuQ%!3`WYl}$#Bn5*;;r*du$ERY-qxKX45JIM^decIWv#Tr1E91i}cb?jK#{+{$ z4l{RL1yW0oE>f`l2)%7xSfoQ=4s=)%LDtSs)heVSLNhH64_HWXSK9Sb0wrAU0j6jH zX++kn((GB{*H3@r+7>8b_v=1rWk;YU%MosxV^K_ z!2kM(U;5YI{*KFj%-Mh$DtTj7BQo&~4!^xdPGJ<6Y2xyc$ihlMy2dHR&T9Y*%22Mv zq6QeT2}Dc+!wL?Aj1MLs0k3C;6cN3!U;K{hS8H>Y>%OwH0>sTxVzaq5jqB(Y2cnuipKZ?fdQ=Jb8>SU{vBH z0Ar8cRPQtRW5<^cYqU+7C>E%~IJ}^nc~yk27QwUeX6kG{aaWE4yIjhe#M}^($sn2bkFd?o9XgGR9bdq{bsPq`PdaT8wv<=-%cH2H;3!8L5g;p#;W zm)Jt1R?Ziq_GilRh;zg6EbX)?93xWK{c;MFNsekEZ{8*3G%(thvV$PRhBSRR2>^(F!J$}B{B4T8-+WbG0B4pEi$CM=A4c@qeFdt#3Uvjl7X?}rq0Fnu;KPt2P{{BP zIQ}G)j2gNBcKC1bA{3(Ce9e{2z$Mm%$G6CUw|F8rDG{XeDMUR09rbH?<&P_xa%E}x z`EwW8NtcZkl9ED_yEp07GZ|a{+^tgwC-$(u!2S3~MrjCndK|VJbwT5qEVBT(X3lmn z>QWzqP{sQ#pJmLBa$G2c%%c|36%+woMTynpG#yN{yhLPa7r_*gM7=8WK&Dx>v623? zd941`E6Byg10`qe=lI0n_?U}8T@S~aXf%XYaeCybd*I5**V+8p(=n3Tq92yP11F{^ zY|B?1@lU-W?a;J9s#YY8D5S+=psM4kfk`jf+JF?|zruzuTP$wtzrNhRzR2c$#2ejr zVD!-O(POs_AGxD{d^-JI$bm3jd6fg(Z{n~WaNcrDW^l{e_3fR%@zIZe@ARwm_v9!3 z+><14?JAGT@8%tl1RK}@EUw*Kv@yU5?7_&8m=XknDlWmK_H|1kT5xzpBsbuNY-oc= z44qd!OY8NltEH!V^(k|O2J+!qx#KLd!DwgTMLzmoUHioc?>BpPBf#A_?770KX^SqB z4}3*AIl~(tq~PsHxhKoet?;zfC|$0B}skpjFC zjjh!&{H{*39NMTO$Qbmn)oGVh6t~t<;Y190XCYwd!i`e1D=%oRpa!`(c@Ig4(MT+9 zq;<|O>vNE2b$(!Vj>XUk(9geu~x!LfV{`v)Nq~~wc55(88n32 zIj}aPYgTp1gfvxzD|v*}?L<`*ObSm+RO71B0E1*KT$#Bf!SCK}PrF_%s$y3}Dvglj zRCbj+b~NP-u4wR}{qC-gUdo=8n5r-TGK>K>Dz@K_GAW_}SY3!N&2hPf8AxSjLx5Bi z6i@IpD?ljhAct!DGrqL4KyRa;k6P9jqy3xCaP2=ja`Nthse>N7#>x))vGtg{+OHZ& z%d|_;|DqmWY|H4_Z$0|G|LIeocEPg%Cc+4Db8D^^76btbX!!~na9aSmdbD~T9SqOP zklm1-vIdR8#Lw=~Is#Z(Q@D$@7NA!=I>bWu;&jBy!vOyB5+(|J1>)T(2P&+DUWX4s zeD#Hw-*)rKJC7Y@;-`h>5j@^P9DGt~#C)oAB#70c1L+yFN60qqS5NXv)z7CM*mC#G z@eC!RQ?TTUVY`|GMo}C;vFnU}ph&FSG>-$UktV}l2x1A z89K@WMS}W(Iw4gG>S{|J2vG21tz}W!$UGOjwxrUCHoN{l3QaYYnuKnGMM5n{5h2e| zFQqy??~WY{hPsYqEb63)#HFGTOaWSrWQ;YPe$Tz5#oxcR&hcOaeH)|u4-e1m8`*bc zi0^vc{UIOSTi)_Zfld=h5tv1hKnch9)CL66xckQQFa53G`owknW>o-`SELw5gq5E# zWy}^7B;0)RA9bpiq8CW=u_AOh5+;~e0ea_OQ!0|&Q)*KHT7+H!DLVL8KpZWF`lOJn zJwY0nfbgnMC5+$}LJkL#fFv?W7cykHg^}O~0MW9_=c~`Z^vGRzoY=P~%Y>8_ymasq zF}{fSkJSgGA|$QbHFO1*+I8oVaNcr>R0qhrK_kOw?3kP?4zkwCe3QLq%a)FqnTZ zO;!hKkD=yi8f7mEq61p`XT7A-7lSYx7AT^4Gs$J80S@W{coQQjvN>cTcvVVaM(vl8 zw6BV~5ywWR@tv`NT5n?<0E}&Kt*@aQw+M?+HvTO*~P#3uYTj@OBZnmBvAw}AfJ~1ASpD08R}p3&B3?C z@U^=dto|n0`>rbpJI_w}BN)pCSBwG_rvB0|7&WiKQ-MJhtiUv?yC@_?w!K6Tl)<18 zz6aR>)Ke(_gfp(u8V(->G~Yn4ZEn8rwp)MazxrzjCMVcTQ%!8Z#b&8#Q751^D(E?) zon=jF*Lp%8-)*cduP@E<33%V&c;C?Y7Q585M-3Zwqmfv7ftD3<#U_j8m>YXoXaB$~n_ljd`BOg5!aS`4}P3r>2jTwD9| zzxM0jeEB8jyv!lt0wU9$J7zK7rYuSz%#U9!z|Iv=-3{La#CghU;#(2Hw6(9Y3J_XWH{y0Q|3j5=zim$>ETV_QQfI|rcqIvel$KyAlw2BJ;OkpUmlxa57DMAx!~2f*jZM>Bw7fC)RcSBnm#|mR zTHiJv;u8hLr3@Cv~5SqhlO5m`0;;6{s-9 zS4X_ZMI(|&KuS7{ivQ@`g;y?J`Qs1X$GnMrN}xfQ2ruy_#YMak3;%#>w1BW@JTmSl z1bAiD3WvF%-3Uvq@~5$kC^W9NAB-K#N2k_SvUDju(SDWBP$)Z&u3H7Awd0^ZjhPX4 z^hBFgL<5=Uau7zeDwD4$H(E}^jCPUi8LDkI$d-m!(L5Vd0_T?+!!#3A;>Jg@m@EY$ z(=utvXQLr)JQYam5~vsyB#Vt~15OE`oLHW=RtI<19SfM)!_G_em)Ht7BmEf!gBc{L z0_6v3iQ!XMUW>egKQKGEys`Z^KlbrYKm9ao-IZ&I8IKr^QRC{N5G%MI1oPVS>!4uL z7$&x^0JWGmd<`oyJmnCuL@e-%T0q_hhy5Oa2>JCO!()3Z@e*!DO_YEN?ps9@GGWc5 zy$WdrF_@luW7i+Udv-f3U*CVLQ|Uhk7i4-GdB?8n2o$twluhqvl^zGoW37OIXzuqjXDmna5&- zH*C3^L7?tIjs>L=Gkaz8@DvQM6&Poc@k`zTm8h(GgK)`jin>6~VsRkG) zphGgT&o$dsP@&$X6KE2jNMMhsVNV=|Rr37P@>yEn{F}e|iQj+X2@WhHuz~>;(zl+= z7jXoFr<$_+N_KS~6}!RX$$NPj?*?QfAX)>VR3TBq9sz=oi%O@Rt9F%SdK`ABg$j~D zm;Q82)>BkcQx!#MOywW{7E9vfSr<_tu0R+m{)unQ#zUdNV`qG1__u%X7(WK)8hgOg(_{BNIQHPX zO5H7l5f~&lE?->v_E)zqUSQaST48{tez(7M@ZPs`KuCHxkY%M^-{20XfzbtbER`RP zStX`scNfK*Jl$M}Um0`5xnwutq!;P&%D>4(M11hD&A`7s@`+}g(9`pu7j>ZvC=s2C9#+_bMCC2wXWx?ZM$*bTN~gjN9s zqTq@oZsWEH4GoWq^W*PnHAEpBUJ)6&o^-uNAG%#P9wx1!@mYGDAV?*k(kNJi3shoO z8gv??3r@oFj#mX4*jzp(nix8y6TeW+t#paD&=Y6geCgulpTF;|6C)#JeI!_si6t7q zMFA3J9xA*v@fz-!33*N%1K%2e&&GJPFenBN9oAq`hK7Kb8T5dmYqX!n4%$cbXnU-3 z3Q1tVsRHqpCw4t1Q;v4FmS24C$`?MnJvV0o$=+{lQ?Y&FJaxkG$(vC=iO|F4WWCp3 zUHszbb}nDCA^;Wr0l2z+v2S&C;KV5vw@V#7NTTUfk`4|Kp~`5gaco#pQ4W}%J=}HJFgR{`va&YL-@8~ga;az~5Fdodd z(zMi3a#5tEBwHAJvqt4Nh`?w$_h>f#+N|NpXAq>g7vc_}tFQs-v6%WpHz7 zdS-B9a_iE0H_thESdjubd-?Jo{$c;(B15Is+-Eh%Acy--@9A5dcL4s-5lyw1T!BoN zFDP^>LX_Id1WuhRP#$tgT1`uVS>}~Y{E5#FR{egEW9Nd3YhpT$erCJ8Howuo%@r~&e28AzK)r22M!Q^s~2uHn~;jbusY*7e2b zo?dNjH;6lCpn^XM7 zEFOtp?_sHV1ZCK)x(hddMJr%NEwLD6C_mc9uU(z}@{eAA z_pLXdJitM8PDoWCMv$Zn#m%A8VmYj%!PFhCpjLmHm#e0%RdaJYYZuZkcm^%rVY+n7YjaC5-NOE;4UQCCrt zDt3~{8dcXhH`|Xi8GRa^upBx_V8r~a@3=&m`wbyRzKRq7Ld*cd=oqV4{^Cb|n;p#qe+xe;9q#1gYSHh_kbX!@%<{zVaxWC`dH-!r~IADBpeT=v~K;*-32$zoLmoeuLR3S0lv(53Xdh%@;Jl)e!1L zhFM*l(;zGf)&mLE{G(MBk2Xn0+T@r@J`sb+Mphy&+Q!B;NfHa`w#Y{14qFMhau@(lE%X+ z>PjQpaF7DP{*!KA+ZA+FLZuHv5J{+AaqDGp9`H+# zW%y%{e)qrp*vDs=mzdEokBVXstc#CF4_!lH9^rSxTUf*NQ8RXj)T;!#fbbU#4bYfX zc=J>*ie`&t)K(yEn25;Pa-gC@xbW%4@ulOrg%?+e*lrc4@Jc@3-a{ZB5b_E(?>c?a zmD`PIH^^1k4eOD3@dPo4pD9ZEApWNN#Sv5(gu!rU@L@yCWfQ$ zY}~>*VVZ3AMq&46y4r+rQUIWuoWNfETn9nxi#I#@?9M{7$B4b3sYqOI&0V zK+Y;~GCPdR1l(0}DiMrOh1-1pu81r`$vI_61W2Z#Xl20nHqJZS=3$>;X_OpbzHo9^ z{B_~tJt01QX>cy^d~Ga}h0mxMmx;N+co0fAN?9 z!tI9-UT3R?6x@cai_pakHq}N!fEV>eVLg%EZ`tk1vJ`dWI>y-*5ROt}a~%tkFHL>s zwz8-p^Qkl&KuzO_j}F=Bfz5o_?1X_822{t!M-LrbJ$;5nc7tPX$WBiqO%_W6p122T z*~0;!uuYC{taIEn1|NY9Yz<`QAzIDb&dkijZ4_3i0A)yr%c>c7A{`8{QhF7E2HP?nxt653D}SRWUw8-5TkbdrQ0gP2kG}Nk zfBngS`^=d)nWZWJM8R3{!2=+aZ)6()?IJ)rA(OlT&X|?40)>HSd2s+siu%W3I%Mrh zV9-?T7>N#PAmpYl35C9|d=!62yerim1kdo(;vg1@agAnK5*dPlgGNG^;p=AJ7}fKUs#e| z+!iGiQcpC6FLZslashe-!bD#27()Bq?a(&5U0c>$Z=HSp`VYUo@$BPUFFw8V+DmNg zGkE9-jc*#!#m-UIXmel@ulpGWt88__ycg=Q+$vmJ3Ab znp3+j-^9Q@e+@Ps1u0RLk+&9C5rt|&6<9E|TR|s^(b^@G#chQI7^*@qtzx$QP)$`~E$5J+Fn6U`XL>2N3eWjh?2094<4 zAdX?aA*MNG^T1(G=XzbUfF|h!4mS6D=7%d^{#@VuRTnSN$OiuM#qHUvgD2Q7VQ}-> z;_@5kJr}%<_bd7oWZU^)Kwq&sKZJ$%whjeRG%k4jpy1Uu7m4jUzwO0gqN%j8M4_&sGW! z-Yozo+3Lb{koKfTq3DQ+BB2E8BajCsjlMoR|93z6JOAv+O;Ryv3DM<2Xh-=MA% z5{i0-SYeb)%TWwW`4?AJM8sIh0K8Jrm@CGTD>tGE5xm?eN)jy20-X>&MZqngZPEDL}=-enmBotXAv|czNcS^mgDPP06o28 z^%?!NHn6z%Z=8Q~?z5ln&)IUm1Hz*Jsp-Di%Uknv12^9~a&SL@>z6OPXAvgdogh{j z`8o1uKRkZNThl8@2V`t=?AXzb#o6VvXX!S;ny27wZ;sz}=h0vJ3&VT%Zk&B>`HP>X zrw$P^3Lf}(mq?}vR+syZ-gHAV2sVCJYhxI=Sdhm@jDCpdhi|5c^jfNWji2&~5DfA) zqVQJY$M948{ktDL@mD|kTaTW8l@BZkNzO&GxmEmdVzll8;qKrr$m}w}r;m_|GYm9W zf(+yz9U_9@Dx#4)T#Z5k^-fr-(?ZilDYz(csD^$v$1OSuH?{%s3gPxr59M2QnbKo0%vSnBu?JUVcBNdxL0%L(ih)R*&ct=})!#tudXP(}uU`GV$DZ8S+elVGwZ6rR5+glEP=w}Xm=;ztxZfA3C?n|H9Jb#X!YY4G+fgNhu9-R$qclxd^ z_8mOZH!)e6(TPOsj_pVF{W?CS+A?4&Nm>%?EzWv3OpgRMeI4_V6<$m<$gW8pSZ}7TbSW&9a(S0u`4N@$3T5$R#avg4 zahH^WPEfV9#T+;s7I!WKI(9+d5GjrTL-ht~ec7yXWn<$XeEPHh{zotTqhJ2xKY7P( z43hd?WzaN11hZTc*FGYDMGbmV)(c}9iNd==s6Hq@*wOGqqh;m7IS_!HL*j_$CkwP* z)>wt6p=Hg_$gOW>>GkkE`)1yHpM)qxlhZqEYuBHCZ2Q$0`j(g28D%g>|8frG$St>x zzVoMc9!5>+L_0i>AqVZ+xid>YdVY*E1^s@qzmNSD!_OdJ58GYo8@PI@fB#{|Q_UM2 zJt>DkrXa&fNw~=gZ@czhNr)nE5ap|X)Qy?wq2bN#oqzqU@Bc5K{p`z^FOO4`fK7=R z*Q;a!EwNYbsUISMbsgQka60N6fhTs0-pj&LqAn=7rQ^T2LZEo&J0DO zcV=U0d3ewCAO*RP`HD2pXvaHNrNZ~Eu23r_J=Q_^b;47W3MubmE0+!h(1jQ^Z{;AC z^WF?kJ@e+-fA9yN`OH(#(8A0DhhPJ$A&l5^qfE7&3yqew#YZa<@n}9b{6KDGc~LJbP7gz23@T#=ILPy&Sd7Az8laFvL%;Hm+(cj2f(T(x zn5YC$J)RmW;)Yf|+8Ym1iiuz0F2)lgY?9GM>OfkkkB}rX(hA8Q>A-fG3}C}9IVa18 z7}Ed0{^+Y;dhUh)@t1!7&%NzIhQH~8?y^87KO>d^B$g`_#hx^iKj>V6;F&z@2K&K= z>erg)f%Lr5NQNWP`99nI9>8eoHOzzSuRcHjho9oK(SA-303Z6i&X%E6TciC`(+tyW zpMGh3X>s78ch}esAe5~ww$9a|lXM{irx@J1l*u*QC?>lkql6I?7~^MJ^Z*Y(ya0{E zr!m5rpaKMsJz7s|y|TFcFFyB2|MF{JyRy7IW~aYl(9siHBG#?Yaxd`&SFlP}-`?%V zUX3909r3&tFLKQl!V(unlGgK-R^@)BhomNX#_3$CaE>NAugJ6+FAqf-s5ehAS@{{+lLKCLNL+k0% zuAF{lV{U;W5IzYi!K6;&T#P+?hwj3h6JJ%^IP=Ql7e2ksz>de0MfqsQgNJSk^U!TQ z(op}^OMOf8{l{-&d4lQXFs^fF)?RuU(oz?j7YIO-%4gHh1`ZtRiXwYT_o zA(eLdu8S|(u5WFB;=4ci+aLer?>_!G1Q=xwLBb1Tl3A$B&*Z7WEnJ<9)Vvj)E~v** zVQicvW@6o7Syzi2*mmm(R!QiP^K1dSl5IZA5>(8_lQ`q7s0sW3>pHWb%dWFLcU!G_ zYK;gP3v47=DjP5cGq?;SK!pHB0wGrkP+X;Qk>o0=t zj$;EZz+f9=jE6{;EhI|GG1`n6jR&_&7~!RuO_tccxb)3IVU zOYaMqZ+OE)Pd)v>Z@ul#n@{GvyWbTA%3sWuYT8iaz&@* zg?cJQtgEkR4TEq_6EF!PPWSRFcw_hjpMT(={@VNg%kO~i(diOXL4(wAPzvtAxIa0oQ<*RnKUIlA`U-+%c{x90de`qCF(`p5@!VO$;s@mgv~ za_~_?AMKYgRmqW%JCnTOkoSg9y>RTsXOG=-JMLdScl7vIF1~PzJ_icNOAax<0sh?i zYu@&4*S!55y-TsU#v5k$lSf=qBczHMgNT%Cu5(xOhTr?*!~gt!zxnS!_`e^0_Svg) z+UMS8SO7`KF0wu_L}IOxv<24(%Jl*w|HETX9AXI7PCJ{EK(peDaQy zH)d7lFu-EkWRlUu+8m``nDAcAZ~f*vh%=8rmZ!nIdF7&vBHy!e^>=;m4exwcR_K{e z{K46e{k}it%`~%kTqKc!WdeB$^mw_SGK4R5&i>T{1i zl56!i>E~DKa{A|I&CXwb=bg9x*iZ51u8Wd|VCE3FvxY1Z|Bwgdbr$*je%Lzm;JQk?PR5HB_LA zFyhA94}b?H9fq5c*NgU7d@?a_;_^|Od{5T#JU2am{`fb2 z^YL$eCy$z98*ttP;B)Rx)f6u;r?hn8G$a_Ea=?{JW|K>V2 zK79$>)`+Ey%$BxH$aFT9OJ3}PYz*3K5WVM8aByW$iZ)9zjvA~)YuObC3+pD$-gKyA znP5c8nA$qZrUN_Z#*V{DcqPV!6)e~P%#TVS2_SBNO`Gz%Mg^6Aa~YG(vdbNSgx16a zlO0DbW!3*?F%Bcl0|o}s)PZTluG5_a*JGT3Oh2Mxu$Y`@ulFHqInayAs%w8N*k!@z z+<)_R*S+VSxBT?CzvBnqdiR|-os66>c4q1F*Fr{Ut8s}EG7pLf>f*Vle)mJCKK}8m zuDv!F*J4@K{fM;3 zB>^g9(~|CEL}D(9WaTmLQgjczWld!GOk;|}i#i{2xjav5kIw(EKmYu1ede>@aN~_X zeE7i-Z$Ts&){R@k&u&q=q*T&)$mXZDq~S1f93qqnXf#SC$c%B8i-GM@ksP} z5yxP1hv1`b$ikfqMfm_)mMzCi-fF&>9~i#uii;<%zA8Vl`s%aKUUvP>xpvy1i5E6_ zM!*n3IPz=6Cu08K(@*Dmkl+6E&wcXIM_)K|CXe#--Tb+HKX+G5zXWb)HY$)Wn=aHw zD)($unRXo$J83nJStK0<&}A*sD(P>5%fbj)TDJ$}B~Z7o0?55h?i06ju<-zx+RF=; zvAYsV^IF~sj!}b4*H|J@R$MvZgH)CHV$6R+PG7qMakbfMsB@#9`pbvS)`0A8>Wpa} zjPxss;%0X|dS3XO+Hue_3@goi!8_6d&V zM;yWp+Xzy;Jm_Ma`-*6DaO5kia;*fP894Up3(s73yr0}4%C_;!qR(qbe0t&3xpQB5 z?6HqN_@&=@@Qa`R%45&xa?#_*@@^pCQ$lpM2HHMhJx=}e<5dii-9eGqpf$uf7I+%LqWD!No>eOvS zUJ79i#t#|7F&l>X$k@Pn5S!k55CflxqPDICwcTWTFML>|vLe|N`_6<%!`O@)&VkTb zqlAlV(@zq!GcF;s&Z;R z98u9*PBjmT*^KH1U-BTYp z9l6VBWfFO(&{<(b3v@k7%R=RGJ6w5x^miY8=)(^@c;)3MZo1~$fBTa^@pIq%T}K!4 z+jYw&3p&pi@?$U;a_Wu^kLqK|lj%H#mA2*2{9l%fGV07}C164ch!2|q;QN3t<`V+1 zzQSdnY0=J}QJzhoJ$mKm|JyHr^h*z&I{R`yc9R$KbJhPfTqO#wu1p8KLS2@PBr8V; zdl2khAe})+2t8x4C&=u5A48yIm^tM#WuTz!I;kfG%Nvl~Cbe{z4Z`wOxCfWeYEjQB zw9^8kQ7}%Zo~r3WM`LRW5m8Ofa0z^iy{``A|#%H5A`X)%5q?sEuSa$;i*T z^B%%gdEM}}V^6(w>OXwwBTt_>$7?LcyrO*d^6Re6dt~{F2cA>sl_b94pO5+G!8b=o zUdQLnfP9aC9v^Y@cf|PIn6EkINHMFVn%Deu^sjP^2eXbYno?s zhm*(m`Q#U$_DVEs(m2buqK$D8kd_r1ads4!g|37()zUT=wn_x@&cjx&S$=tEBVIMf z5H>t0n7w^A+lpO^wKsweq$=UkhE-{($x8aI6I%R&0j3;Ta4bUC;g}P`w0vUw3cekh zAyG|d_KcKdyCprrO1&SJFsKm{sco2v?73pZ1Pm4 zApl?pUg}wimJ`VCyV9XzSHTKHPn$ICIXhqW<{d2}wjjRHMAOpAUKEVNaI6nA~ab(4UK} zbLd2t|6DHj>J^t?_wK)WoC|&k#L(j8#3Ro>|Brs@SI-@JNof>Y3t~%%s98v)l3O!D zn|=rBZ_+3>;YJ6z7Ho@XuUok6u?aGNyFv>#5vjMkyJnbBut@2u1i6PXa~qXHFfai) z@VnX6cbWD;cJSTS)2YeLD1g6toFT0YV+U;@P3wymk7? zhaY+CZ8yLDO>fNkn_#?S;0N)0b zqr%fav@8woHjsPoaQ@uY-}I^iMMi_9pe#`u0$O@?jkk&rs263A z>eF#R)QlKR0aPu(Ms(n2L*h;rrnG=?DcSfTAafI}asckS!AeZbv|KSIByFmcOMNy* zd*RiKfAGaG|G>TX#+Ha3-N!6sor=RZ3B ziAUTVV&Z1Aup*HOw`0+VteUdvfUdWFdr2s$+X`f92sQ9+IaQYJWmkUdz1!n-?34=S?`ykJW)XmZk@h>=pdb~ z)p_Wt(P*b!m>Zm$1w@7>8=f5<1Oj#oCaRuJ@=DQ5=g)og!H3>+?_2M@<+ePS5tRqT z7q7bUh7&hlclzmPj?SLV(&tpqgZ+#7snBEBUUTF9_uui|-+AkIyyM1u@44!hn{sj6 z(aUG^?LYy5$pMkK1unn*#_#;DJO9p4=Lh9I1rcQquY4}~-+kc2zwm(%@ z-~pzYOj1!;5km87Y9j7h>JfXW0TRWjl#VcZ4jSyLR1bO9KyNyUbCU>R)?RuxPC zXO@z$Wa>vLe3yy`-u1AYyT)TSWAWpp9%f5mc)adse=HZZl)DpL6Sj`o^f^Qy#u#Xk zYO?M)1gx0Hf+r(XNCTWPG1+=|0?j6hyl%4Hink(IcRvT{x;NDoB%(4hb%a#!G9Q?Z zD(Bno55Mici|1d?lh&NdkG*m} zSA$-7@r6@gdF;&NkDq_xg}hpN)lD~F^Ts=`yX#F?p1g&-3tj`wNk1R3JbUixr_Mg{ z#QA5Ry_jzey84={ZolJ(yWe`vU2n;$l`0x{euE%ag#MfN|Mq|S$nWL}Zw>~dZuKU5 zkdp!3Hj80RmShG{Cu!28W+o^^;ojS7vMQn3B8$U)GOXIBUOW)gSEF5hM#M5!#cT=3 zi13!FX#hdW&MrgS;)opjiP;h3O4|!Q^B6=9fFB+6>Bb0p+HZ)oMYZ$3Djs~Yk{ z#VqKC6+0u!h$Det1@~dnv3!y^zgCoUJx?DDCNHPv>YxXn`0BrS-}^uC+0W%0sXDzz z7rSZjQi#UenM75vAS~*h;hx_vQ(xi)%ITyv@7!)U5&J5W?Go;N5chSo;)pFg)WKTT z0TgXBHJh&`*QeF%Iq^O4@}BOB1js z>td-><$!8x&yy*s4^wDcLCF-e(c7Y|Av_~#EWuHOh6V;MFiSE~?B;6lER>_aE&Hvn zYnZHT9HMeHiEh1D)t4^<%lgcj{CB?az#l&R$k(5|`OUZAnqQsBA;u37aE*N~J-dP* zUF5r$^H?@7R^~s{?c~!m`OkOJ<=YwaYu;DoyGT&!ATP6K=|A<->HqxUkN%TieeY); ze=Lvt&BDzjVc;tfV@0vSrq50#nWfL2vsEP&Mct&282`X1X?7a`-7;8v^Bj4?x;Aei_iEP?0BtS0eJu}`UVHh%g}mkb@H5Z<$zMGD;V(S!CyzY(-03s? zl4`CC+QUgm9zHnV>Pij}u87QdgczW8;#nQ5MY;{b-ytMTZ1Np66u3YKICp1VYj8wa z=XCOLuDsE=Gdbdd!b4OeIw8v+^1yLWt=M!A+u}p!eAuZEy7~!$6QqY_ffxH_M|b>& zpZjrvbx%@lgfW5B>5yKdb}V0Gt!B35acF^0+6c4b9cV*SBWVuD>^DCv4giQ%Y+8mO zDkv6F#cY$*%66jK!ORkqhk>>=D=Es&Ashi2nxxt2wl&KDY)_SS6RJ82Gap>cS3kV= z+Vxjmb^G-<+b@r*#XaDNO z7oU9bg=bHndim&lJo6ApQp%^dmCxE6-K0?O)S- z(x=XY9w6Srln+awrNAhVt!6hORW9=Mrp@|E7|MW*<+j5z+S&|r>QSK`W|KeL>@Mj? z1~X1JHJw8Vj7G5`TqH%sybIV&n<5@OeeE#|9$)nJ%Vaco@M_uYZXilSpb#*(m~V;Y zb((xBdE6bndhshSJoo7H&+=S%s8`8KppU$&lg79G@G$mxzL1BP=cEjG{}9;rP`XBS zzrxv-1_fl?r z$c=f$TG9z|KH|bpmP;q9-h2 z#?psv+Y#Ep(64~fU6fkZDoX@K5~=?k)ZQiqwCwGVf6pUo7IdqLFr+QIjuOoTExem$ z=^=_$f|>BxlR+Tq#k5#DVeJu6;W*KYxXvVajA1Ov76P8OR;eVEQn!9J14n^|K+^?+ z6CEMTcxy&oc;3b9sKD?S2;W%m>l0P<7#z}Vyr}1v4kgS#c(z(N-lKxa!XXEy!6CQ7 zRTXg{qDt37Z|G_?kj9D}R0a0FR6$Hz3Yg_q_Mul)rgRyB;#bY=FqnkK6pGXdMH}iF zQn4!PBg1iauqv(h)P5%)FEbg0Ox&*zb@?=g4DcIddIdX(5iL~plCk$PMfPMG%h+lt z1$eSTf@uSTiJWwzdi0&j5Dp3cF>9%ax=iVfdG=c|$k$@L2kULZ|fH9yrm{v+hyD=X+>VLp7T*`6`>M#hhi;NrLqqZ?#;R&n3*r5Si zh(>r#3(?}~!8C`|UL0-8mZuw2%2I^VRA6o~C$%jy;Y>2#C%$$LVmAS`yHE!zYC0JB z>$?$|!C(!=$>Bl-?uvgq)@0eH&D=uZ%2wsTxQ7Bavx{V>xw>0BkTx%gpFzxhO#>kkFSKVk5GM#tMc= z09Tq$8|xg~rkrd?uNFCW@M()40aWhjHGuSj87&AJX5z*MNyKo$$`(KAQ`!rEkCf5@0Zn_*}%0@fB?H`%%e4WpQznA7bPC@Zi&YZ)OWEEx9 zd3R{cW3wJCMuvylu{WGbhXY}xHN+|Z+F*tCk^#whiL*zqWaq**w{228V2cY1Yk|ig zqm32O0hx2)co6Ly99@TQ==wj!peofTbd1H)>pzk-Z6jf7x>^yLf3;2gaKVlJEENb= zQmsWf>-`d6x?WDBX0n7u)^rdSc4;Kbjh1Z2dfQh7%+Ca; zvkp8p;Y6pKs2o-XnM#J0V>$d0Oh5-KzUEbEl@tJC#~EZb=PohBqMU_1cWbAzK z9DsN15UwGccc*rAi}k^&T@s2IQ@l*yyo4w^Kd&x*B**xTm&4%V6=3K zAfA* zgJFGkDUAP;1%fg+eW+tF0>;bJ0xe8gm$v&voDPfzn~;_sDf5q-y)1{D+No>whR_Kk z^#;{4?1zn6=mn&P+6{9~vf-TyjF!sc%)5vcfg%I%6pg!L8(N_05Pq}Vq;QdG1=$J{ z3L_yB!vP-ML1TI88&kt?I6~6JzHKj^78{HJ@KNi9j%=HI9gLfeZ>twh2?Cae63M#O zyyC-C0HB>(8$~r=xeN;7207#>uZFU#N0bRp<0*ENcNq|E?b+7S?PeaewImzR#AgX!xjFfAHlAu-Hb)U%8GDRH~`Z$t;kX?Oqr+rDMaMu zn*>)FvWEdq8X)^!19mOpimoxMjWWF6nNK2%n_Ufq9fk-o#2LFiG7marwT;2} z!r9=5W2f3YOe9b*tsV?xtfyd$4Jmj-E2P`aupzC0)(K?sS6gsuggCeLtZ1mRqgS6% zQ<_}6BW9ZlaT=o<-{Y|a$!n?&ejYC+hhEx$8S`HrVIF?7Axi$O$Vr~;J3 z!rx8b< zz7=OAYysBj^x44`YOu$x9s;7kTlr9qVcv2J#f z6FtEREw*_4sKbf94TQ=w1B@$Dy}2yHySoCb156I0X>oPi4K_j#clP@}z-GJANf^XI z)Wx$!2;-(qpy~I&Dqs6}mpd{Xj;bc{Z4?ost1$i1id_~p{~C=;k2rg%=m3-4 zf;EAChm)-a6A8Qes8+Krn;v?Fx{|BzlNZD|DS9Vqs3y0+H&hP&PZz@)Z4{B%T)Yg3 zX=K(Y{e`J~M%nd$)N3iAZpy%Oth3oDWCLQ8aPzi{5oMHDfiNeY>MS}@U2AxnA+8}F zD3&)wfU25^vx{%})p0I0_>9uVBLg!n!9Em&61tjf9wufW1HhS2gd#BWYOD|4w3b4A zlU#Io$hQvZXw%e%hH*Y+sf9#F`?8YGkIfY)qF302%05_etO!TQ; zN7Ty`OG#=fWX)p+i#Ub}M=~M+%%Fn4nXe->fi-j!QzCRiCxYk!4$nr*m7`GaZAQyC zil8+pC_H11TmAM`h@Hb;iLfPSpl)A>$}m7FF$ks`I{x!kG2bzWI8_Inklke?p5gex zMFzkHx({p$tbA!ry#6W&41poBOM`dQ?&kK?E|eiTn2kJy+QTH$7;OW1mt+ivp-zk= z-Qq;frbM$krlb>2>$vF5F9RqnzAtyvja7v5RjCQ#70wn6Ac3MPD_@`o3rCFMn=e*7 zQ$}f!gP3h4*}5V#W6Z5C<%%L2ydL}`lt|g?%W2@wyXNJX5TMnrNbLrNb3PA{zzRVr zS6#?ZvWUYIL57Ia854Htn_N}n5P%0hhRF5+=&GK5fUHoK_kd)F8CS#I`Z2DU4i3a* zfWKv;4FVlwFw1buc69IuCC6;sNgFyCHy1z|3_{gx^d6cG-ws;Q&4GRuGu|l3eqjf+ zrMWA#%_b6r-DJx^IDk-h?Jk7&R$>ggOjnIpNWkq&?I1G(Tl(HS{{V>_T1Z&y)R72pC z_s(8i#jS}t3v|e8zs_c*xVXU;MnqPoamUl5OK16`L#qk#Y!LxkOzm|J5Kf~vA&7Ju zt6TE{WFiW3nbs&{LsY7W$nsCv5|fhs8lV!4kFa`=NIwnJWmZYY0(a6ufoQaZz-SdG zBd8KX#C0|j!%D4jj4I#4m5zjUTr_0U_Fx;!`s#_OVOcQt#;|oz=?C_zW?e8I+I2iO zgabNa?7PszBN^mrdWF_r%bQpXXM&1DTug2?E4r15q(R9=HMZ!ZsIXR+N>-lDRClO{ z2&%Cs2<8Fj6nDhzz>!x2&6c69i9n%%&2}ZzCM|MdGD?>~4kSQ~O=70Fj06PC3I$Ni zfEUU=HU#NEUB>*E5mRxcfZrzJ^wAenftKk8bD%21u*MFvH9mNlTWSKyV!ecUX;zfW zIIgU19e=G+?3`4>u_AchgD{LWEHI;Sw&d)w=~Ah+MM|LcE0S_{8XOLbY|&`8Ht|#+ zdn}U>s{_?iW0AgwrCr;2UYVm^)Gn`B_|Nj&+D5aWt!4Gd0Em~*hd}TOAB}^EHrgob zqlQ}6c?3)iSmTTXxENA3tT4uXJsb$S0*4zbT27zX0;^!R#1BqjQ&-T~5dfOKwRVIz zkf_?TeA7Mjq=uGt>@|x6OC63s| zA#{4WAcScXsk<6NQ$|_1+bVy)OSnevve`)Da8wm`iZ&T+d?Zrl@w?&k0%=0yzWyL2 z``-W4TQ>l!pqultt97$84+P_~d9fAcQaPA=S8g<01m)5%C7f!4Aeg1KD4mg6d^%*+ zjw#56b}AIaU4S~>)Wd~54jAFK0g=;2iK#QGh5X}zxSCm{y5&1WjaI}=`Jmx3&^^Ey zHTK%$(s)< zYO>~NCNwTqkeb$AX<%b6G}I{pIp^8ycytcaZvazi2N-OwE#hIUD?vXImSBf~o~=Ht z5J61LqXJDZbum=JS_b?_w>X(Ue1kAQyW>GhWo;KA`ffntbV1!ZGf zVv4UpqOFS=ZoZ3yB%<-6Yy|^Xla7AYcW~U5O&dOS;lkiqgA+x%FGqAe!%7$ere z?4~-~{ZO^CjzxEoFE4gGmg-Pdr;`DeHQM-QF?H;qlU65|rQML`Kg|F`$N|8J2{?>o zQDcyd-~9b%-aVGPzrqI>kIn2)C+fo((>@O#{}+X?V*|l5U zOk;z%rYfP;COTiW(al)ZI{anULr`1YS9l?S=kT-&sY0lT9H%DUcWgL9 \ No newline at end of file diff --git a/pets-be/web/admin/public/icons.svg b/pets-be/web/admin/public/icons.svg deleted file mode 100644 index e952219..0000000 --- a/pets-be/web/admin/public/icons.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pets-be/web/admin/src/App.tsx b/pets-be/web/admin/src/App.tsx index 56c0525..b7f5694 100644 --- a/pets-be/web/admin/src/App.tsx +++ b/pets-be/web/admin/src/App.tsx @@ -1,64 +1,102 @@ import { useEffect, useState, type FormEvent } from "react"; import { - Users, - PawPrint, - Route, CalendarDays, + CheckCheck, + Files, + LayoutDashboard, + LoaderCircle, LogOut, + PawPrint, RefreshCw, + Route, + Users, + X, } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; -import { api, clearToken, getToken, setToken } from "@/lib/api"; - -type Tab = "overview" | "users" | "pets" | "walks" | "meetups"; -const labels: Record = { - overview: "总览", - users: "用户", - pets: "宠物", - walks: "遛狗记录", - meetups: "约遛活动", -}; +import { + Dialog, + DialogContent, + DialogHeader, + DialogTitle, +} from "@/components/ui/dialog"; +import { + api, + clearToken, + getToken, + setToken, + type Row, + type Section, + type Stats, +} from "@/lib/api"; +import { labels } from "@/components/admin/format"; +import Overview from "@/components/admin/Overview"; +import Records from "@/components/admin/Records"; +import Details from "@/components/admin/Details"; const icons = { - overview: PawPrint, + overview: LayoutDashboard, users: Users, pets: PawPrint, walks: Route, meetups: CalendarDays, + tasks: CheckCheck, + files: Files, }; -const fmt = (v: string) => (v ? new Date(v).toLocaleString("zh-CN") : "—"); export default function App() { - const [token, auth] = useState(getToken()), + const [token, setAuth] = useState(getToken()), [username, setUsername] = useState("sundynix"), [password, setPassword] = useState(""); - const [tab, setTab] = useState("overview"), - [items, setItems] = useState([]), - [stats, setStats] = useState>({}); + const [tab, setTab] = useState

("overview"), + [revision, refresh] = useState(0), + [stats, setStats] = useState(null); const [error, setError] = useState(""), - [busy, setBusy] = useState(false); - async function load() { + [busy, setBusy] = useState(false), + [actionBusy, setActionBusy] = useState(false), + [notice, setNotice] = useState(""); + const [detail, setDetail] = useState<{ section: Section; row: Row } | null>( + null, + ), + [confirm, setConfirm] = useState<{ section: Section; row: Row } | null>( + null, + ); + useEffect(() => { + const expired = () => { + setAuth(""); + setDetail(null); + setConfirm(null); + setError("登录已过期,请重新登录"); + }; + window.addEventListener("admin-auth-expired", expired); + return () => window.removeEventListener("admin-auth-expired", expired); + }, []); + useEffect(() => { + if (!token || tab !== "overview") return; + const controller = new AbortController(); setBusy(true); setError(""); - try { - if (tab === "overview") setStats(await api.stats()); - else setItems(await api[tab]()); - } catch (e) { - setError((e as Error).message); - } finally { - setBusy(false); - } - } - useEffect(() => { - if (token) void load(); - }, [tab, token]); + api + .stats(controller.signal) + .then((value) => { + if (!controller.signal.aborted) setStats(value); + }) + .catch((e) => { + if (!controller.signal.aborted) setError(e.message); + }) + .finally(() => { + if (!controller.signal.aborted) setBusy(false); + }); + return () => controller.abort(); + }, [tab, token, revision]); async function login(e: FormEvent) { e.preventDefault(); + if (busy) return; setBusy(true); setError(""); try { - const r = await api.login(username, password); - setToken(r.token); - auth(r.token); + const value = await api.login(username.trim(), password); + setToken(value.token); + setAuth(value.token); + setPassword(""); } catch (e) { setError((e as Error).message); } finally { @@ -67,55 +105,117 @@ export default function App() { } function logout() { clearToken(); - auth(""); + setAuth(""); setPassword(""); + setStats(null); + setDetail(null); + setConfirm(null); + setError(""); + setNotice(""); } - async function toggle(row: any) { + function navigate(section: Section | "overview") { + setBusy(false); + setTab(section); + setError(""); + setNotice(""); + } + async function applyAction() { + if (!confirm || actionBusy) return; + setActionBusy(true); + setError(""); try { - await api.setUserDisabled(row.id, !row.disabled); - await load(); - } catch (e) { - setError((e as Error).message); - } - } - async function cancel(row: any) { - if (!window.confirm(`取消「${row.title}」?`)) return; - try { - await api.setMeetupStatus(row.id, "cancelled"); - await load(); + if (confirm.section === "users") + await api.setUserDisabled(confirm.row.id, !confirm.row.disabled); + else await api.cancelMeetup(confirm.row.id); + setNotice( + confirm.section === "users" + ? confirm.row.disabled + ? "用户已启用" + : "用户已停用,位置分享已关闭" + : "活动已取消", + ); + setConfirm(null); + refresh((value) => value + 1); } catch (e) { setError((e as Error).message); + } finally { + setActionBusy(false); } } + const actionTitle = + confirm?.section === "users" + ? confirm.row.disabled + ? "启用用户" + : "停用用户" + : "取消约遛活动"; if (!token) return (
+
+ 肉垫计划 +

PAWPRINT PLAN

+

+ 每一段陪伴, +
+ 都有迹可循。 +

+

+ 让宠物的日常更有温度, +
+ 让每一次出门都值得记录。 +

+
+ + + 宠物档案 + + + + 快乐出门 + + + + 日常照顾 + +
+
-
🐾
-

肉垫计划 · 管理端

-

欢迎回来

-

照顾每一只小短腿的快乐日常。

- - - {error &&

{error}

} - + + 肉垫计划 · 给陪伴一个温暖的地方 +
); @@ -123,219 +223,164 @@ export default function App() {
-

PAWPRINT DASHBOARD

+

+ 肉垫计划 / {tab === "overview" ? "今天的日常" : "数据管理"} +

{labels[tab]}

- +
+ + {new Date().toLocaleDateString("zh-CN", { + month: "long", + day: "numeric", + weekday: "long", + })} + + + +
- {error &&
{error}
} - {tab === "overview" ? ( - <> -
-
-

每一段陪伴,都有迹可循

-

你好,铲屎官管理者 👋

- 这里汇总肉垫计划的日常活动。 -
-
🐕
-
-
- {( - [ - ["users", "注册用户", "👥"], - ["pets", "宠物档案", "🐶"], - ["walks", "遛狗记录", "🐾"], - ["meetups", "约遛活动", "🌿"], - ] as const - ).map(([key, label, icon]) => ( -
-
{icon}
- {label} - {stats[key] ?? "—"} -
- ))} -
- - ) : ( -
-
-

{labels[tab]}

-

最近 {items.length} 条记录

-
-
- - - - {tab === "users" ? ( - <> - - - - - - ) : tab === "pets" ? ( - <> - - - - - - ) : tab === "walks" ? ( - <> - - - - - - - ) : ( - <> - - - - - - - - )} - - - - {items.map((row) => ( - - {tab === "users" ? ( - <> - - - - - - ) : tab === "pets" ? ( - <> - - - - - - ) : tab === "walks" ? ( - <> - - - - - - - ) : ( - <> - - - - - - - - )} - - ))} - -
用户注册时间状态操作宠物品种主人 ID状态记录 ID用户 ID开始时间距离状态活动地点时间人数状态操作
- {row.nickname} - {row.id} - {fmt(row.created_at)} - - {row.disabled ? "已停用" : "正常"} - - - - - {row.name} - {row.id} - {row.breed || row.species}{row.user_id} - - {row.archived ? "已归档" : "在用"} - - {row.id}{row.user_id}{fmt(row.started_at)}{(row.distance_meters / 1000).toFixed(2)} km - {row.status} - - {row.title} - {row.id} - {row.place_name}{fmt(row.starts_at)} - {row.participants}/{row.max_people} - - - {row.status} - - - {row.status === "open" && ( - - )} -
- {items.length === 0 && ( -
还没有记录,新的足迹会出现在这里 🐾
- )} -
-
+ {error && !confirm && ( +
+ {error} + +
)} + {notice && ( +
+ + {notice} + +
+ )} + {tab === "overview" ? ( + + ) : ( + { + setError(""); + setConfirm({ section, row }); + }} + detail={(section, row) => setDetail({ section, row })} + actionBusy={actionBusy} + /> + )} +
+ 肉垫计划 · 把每一份陪伴,认真记下来 +
+
setDetail(null)} /> + { + if (!open && !actionBusy) { + setConfirm(null); + setError(""); + } + }} + > + + + {actionTitle} + +

+ {confirm?.section === "users" + ? confirm.row.disabled + ? `确认恢复「${confirm.row.nickname || "该用户"}」的访问权限?` + : `停用「${confirm.row.nickname || "该用户"}」后,将无法使用小程序接口,现有位置分享也会关闭。` + : `确认取消「${confirm?.row.title}」?取消后活动将停止接受报名。`} +

+ {error && ( +

+ {error} +

+ )} +
+ + +
+
+
); } diff --git a/pets-be/web/admin/src/components/admin/Details.tsx b/pets-be/web/admin/src/components/admin/Details.tsx new file mode 100644 index 0000000..dfc51cc --- /dev/null +++ b/pets-be/web/admin/src/components/admin/Details.tsx @@ -0,0 +1,260 @@ +import { useEffect, useState } from "react"; +import { ExternalLink, LoaderCircle, Route } from "lucide-react"; +import { + Dialog, + DialogContent, + DialogHeader, + DialogTitle, +} from "@/components/ui/dialog"; +import { Button } from "@/components/ui/button"; +import { api, type Point, type Row, type Section } from "@/lib/api"; +import { Identity, Status } from "./common"; +import { bytes, categories, duration, fmt } from "./format"; + +function Track({ points }: { points: Point[] }) { + const valid = points.filter( + (p) => Number.isFinite(p.latitude) && Number.isFinite(p.longitude), + ); + if (!valid.length) + return ( +
+ + 这条记录尚未采集足迹 +
+ ); + const origin = valid[0]; + const coords = valid.map((p) => [ + (p.longitude - origin.longitude) * + Math.cos((origin.latitude * Math.PI) / 180), + p.latitude - origin.latitude, + ]); + const xs = coords.map((p) => p[0]), + ys = coords.map((p) => p[1]); + const minX = Math.min(...xs), + maxX = Math.max(...xs), + minY = Math.min(...ys), + maxY = Math.max(...ys); + const scale = Math.min( + 440 / (maxX - minX || 1e-6), + 200 / (maxY - minY || 1e-6), + ); + const normalized = coords.map(([x, y]) => [ + 250 + (x - (minX + maxX) / 2) * scale, + 120 - (y - (minY + maxY) / 2) * scale, + ]); + const [first, last] = [normalized[0], normalized[normalized.length - 1]]; + return ( +
+ + + + + + + + p.join(",")).join(" ")} + fill="none" + stroke="#b95738" + strokeWidth="4" + strokeLinecap="round" + strokeLinejoin="round" + /> + + + +

足迹路线示意 · 蓝色起点 / 橙色终点 · {valid.length} 个位置点

+
+ ); +} +export default function Details({ + value, + close, +}: { + value: { section: Section; row: Row } | null; + close: () => void; +}) { + const [points, setPoints] = useState([]), + [busy, setBusy] = useState(false), + [error, setError] = useState(""); + useEffect(() => { + setPoints([]); + setError(""); + setBusy(false); + if (!value || value.section !== "walks") return; + const controller = new AbortController(); + setBusy(true); + api + .walk(value.row.id, controller.signal) + .then((result) => { + if (!controller.signal.aborted) setPoints(result.points); + }) + .catch((e) => { + if (!controller.signal.aborted) setError(e.message); + }) + .finally(() => { + if (!controller.signal.aborted) setBusy(false); + }); + return () => controller.abort(); + }, [value]); + const row = value?.row, + section = value?.section; + const entries: [string, string | number | undefined][] = !row + ? [] + : section === "pets" + ? [ + ["主人", row.user_name], + ["主人 ID", row.user_id], + ["品种", row.breed || row.species], + [ + "性别", + row.gender === "male" + ? "男孩" + : row.gender === "female" + ? "女孩" + : "未填写", + ], + ["生日", row.birth_date], + ["体重", row.weight_kg ? `${row.weight_kg} kg` : "未填写"], + ["毛色", row.coat], + ["过敏提醒", row.allergies], + ["照顾备注", row.care_notes], + ["创建时间", fmt(row.created_at)], + ] + : section === "walks" + ? [ + ["遛狗人", row.user_name], + ["用户 ID", row.user_id], + ["同行宠物", row.pet_names?.join("、") || "—"], + ["开始时间", fmt(row.started_at)], + ["结束时间", fmt(row.ended_at)], + ["距离", `${((row.distance_meters || 0) / 1000).toFixed(2)} km`], + ["已记录时长", duration(row.duration_seconds)], + ["位置分享", row.share_enabled ? "已开启" : "未开启"], + ] + : section === "meetups" + ? [ + ["发起人", row.user_name], + ["集合地点", row.place_name], + ["活动时间", fmt(row.starts_at)], + ["参与人数", `${row.participants}/${row.max_people}`], + ["活动说明", row.description], + ["坐标", `${row.longitude}, ${row.latitude}`], + ] + : section === "tasks" + ? [ + ["用户", row.user_name], + ["宠物", row.pet_name], + ["类别", categories[row.category || ""] || row.category], + ["计划时间", row.time_of_day], + ["重复规则", row.repeat_rule === "daily" ? "每天" : "单次"], + ["创建时间", fmt(row.created_at)], + ] + : [ + ["文件类型", row.content_type], + ["大小", bytes(row.size)], + ["MD5", row.md5], + ["存储桶", row.bucket], + ["对象路径", row.object_key], + ["文件 ID", row.id], + ["上传时间", fmt(row.created_at)], + ]; + return ( + { + if (!open) close(); + }} + > + + + + {row?.name || + row?.title || + (section === "walks" ? "遛狗详情" : "记录详情")} + + + {row && ( + <> +
+ + +
+ {section === "files" && row.url && ( + <> + {row.name + + 查看原图 + + + + )} +
+ {entries.map(([label, text]) => ( +
+
{label}
+
{text || "—"}
+
+ ))} +
+ {section === "walks" && + (busy ? ( +
+ + 加载足迹中 +
+ ) : error ? ( +

+ {error} +

+ ) : ( + + ))} +
+ +
+ + )} +
+
+ ); +} diff --git a/pets-be/web/admin/src/components/admin/Overview.tsx b/pets-be/web/admin/src/components/admin/Overview.tsx new file mode 100644 index 0000000..8c1263d --- /dev/null +++ b/pets-be/web/admin/src/components/admin/Overview.tsx @@ -0,0 +1,145 @@ +import { + CalendarDays, + CheckCheck, + Files, + PawPrint, + Route, + Users, + ArrowUpRight, +} from "lucide-react"; +import type { Section, Stats } from "@/lib/api"; +import { bytes, labels } from "./format"; +const metrics = [ + { key: "users", icon: Users, sub: "每一位养宠伙伴" }, + { key: "pets", icon: PawPrint, sub: "记录它们的成长" }, + { key: "walks", icon: Route, sub: "一起走过的路" }, + { key: "meetups", icon: CalendarDays, sub: "相约下一次出发" }, + { key: "tasks", icon: CheckCheck, sub: "照顾好每一个日常" }, + { key: "files", icon: Files, sub: "留住温暖的瞬间" }, +] as const; +export default function Overview({ + stats, + navigate, +}: { + stats: Stats | null; + navigate: (section: Section) => void; +}) { + const max = Math.max( + 1, + ...(stats?.daily_walks || []).map((day) => day.count), + ); + return ( + <> +
+
+

A LITTLE CARE, EVERY DAY

+

把小日常,照顾成好日子。

+

从一张宠物档案,到每一次快乐出门。

+
+ 肉垫计划 +
+
+ {metrics.map(({ key, icon: Icon, sub }) => ( + + ))} +
+
+
+
+
+

这周,一起走了多少次

+

最近 7 天的遛狗记录

+
+ +
+
+ {(stats?.daily_walks || []).map((day) => ( +
+ {day.count} +
+
+
+ {day.date.slice(5).replace("-", "/")} +
+ ))} + {!stats &&
正在加载趋势
} +
+
+
+
+
+

今天的陪伴

+

活动与日常一目了然

+
+ +
+
+
+
今日出门
+
+ {stats?.today_walks ?? "—"} + 次 +
+
+
+
正在遛狗 / 暂停中
+
+ {stats?.active_walks ?? "—"} + 次 +
+
+
+
待开始的约遛
+
+ {stats?.upcoming_meetups ?? "—"} + 场 +
+
+
+
今日任务已完成
+
+ {stats?.today_completions ?? "—"} + 项 +
+
+
+
+
+
+
+ + 累计遛狗距离 + + {stats ? (stats.distance_meters / 1000).toFixed(2) : "—"} km + +
+
+ + 文件存储用量 + {stats ? bytes(stats.storage_bytes) : "—"} +
+
+ + ); +} diff --git a/pets-be/web/admin/src/components/admin/Records.tsx b/pets-be/web/admin/src/components/admin/Records.tsx new file mode 100644 index 0000000..3362749 --- /dev/null +++ b/pets-be/web/admin/src/components/admin/Records.tsx @@ -0,0 +1,508 @@ +import { Fragment, useEffect, useState } from "react"; +import { + ChevronDown, + ChevronRight, + ChevronLeft, + Search, + LoaderCircle, + PawPrint, + Inbox, +} from "lucide-react"; +import { Button } from "@/components/ui/button"; +import { Input } from "@/components/ui/input"; +import { + Table, + TableHeader, + TableBody, + TableRow, + TableHead, + TableCell, +} from "@/components/ui/table"; +import { api, type Row, type PageResult, type Section } from "@/lib/api"; +import { Identity, Status } from "./common"; +import { + bytes, + categories, + duration, + filters, + fmt, + labels, + placeholders, +} from "./format"; + +function UserRow({ + row, + action, + detail, + disabled, +}: { + row: Row; + action: (row: Row) => void; + detail: (section: Section, row: Row) => void; + disabled: boolean; +}) { + const [expanded, setExpanded] = useState(false), + [pets, setPets] = useState(null), + [error, setError] = useState(""), + [busy, setBusy] = useState(false), + [retry, setRetry] = useState(0); + useEffect(() => { + if (!expanded || pets) return; + const controller = new AbortController(); + setBusy(true); + setError(""); + api + .userPets(row.id, controller.signal) + .then((result) => { + if (!controller.signal.aborted) { setPets(result); setBusy(false); } + }) + .catch((e) => { + if (!controller.signal.aborted) setError(e.message); + }) + .finally(() => { + if (!controller.signal.aborted) setBusy(false); + }); + return () => controller.abort(); + }, [expanded, row.id, pets, retry]); + return ( + + + + + + + + + + + + {fmt(row.created_at)} + + + + + + + + {expanded && ( + + +
+
+ + {row.nickname || "用户"}的宠物 + 包括已归档档案 +
+ {busy ? ( +
+ + 加载宠物中 +
+ ) : error ? ( +
+ {error} + +
+ ) : !pets?.length ? ( +
该用户还没有添加宠物
+ ) : ( +
+ {pets.map((pet) => ( + + ))} +
+ )} +
+
+
+ )} +
+ ); +} +const headings: Record = { + users: ["", "用户", "宠物", "注册时间", "状态", "操作"], + pets: ["宠物", "品种 / 性别", "主人", "体重", "状态", "操作"], + walks: ["遛狗人", "同行宠物", "开始时间", "距离 / 时长", "状态", "操作"], + meetups: ["活动", "发起人", "地点 / 时间", "人数", "状态", "操作"], + tasks: ["任务", "用户 / 宠物", "类别", "计划时间", "今日状态", "操作"], + files: ["文件", "类型", "大小", "上传时间", "操作"], +}; +export default function Records({ + section, + revision, + action, + detail, + actionBusy, +}: { + section: Section; + revision: number; + action: (section: Section, row: Row) => void; + detail: (section: Section, row: Row) => void; + actionBusy: boolean; +}) { + const [page, setPage] = useState(1), + [query, setQuery] = useState(""), + [draft, setDraft] = useState(""), + [status, setStatus] = useState(""); + const [data, setData] = useState(null), + [busy, setBusy] = useState(true), + [error, setError] = useState(""), + [retry, setRetry] = useState(0); + useEffect(() => { + const controller = new AbortController(); + setBusy(true); + setError(""); + setData(null); + api + .list( + section, + { page, page_size: 10, q: query, status }, + controller.signal, + ) + .then((result) => { + if (controller.signal.aborted) return; + if (page > Math.max(1, Math.ceil(result.total / 10))) { + setPage(Math.max(1, Math.ceil(result.total / 10))); + return; + } + setData(result); + }) + .catch((e) => { + if (!controller.signal.aborted) setError(e.message); + }) + .finally(() => { + if (!controller.signal.aborted) setBusy(false); + }); + return () => controller.abort(); + }, [section, page, query, status, revision, retry]); + const pages = Math.max(1, Math.ceil((data?.total || 0) / 10)); + return ( +
+
+
+

{labels[section]}

+

+ {data ? `共 ${data.total} 条记录` : "读取记录中"} + {section === "users" && " · 展开用户查看宠物"} +

+
+ 每页 10 条 +
+
+
{ + e.preventDefault(); + setPage(1); + setQuery(draft.trim()); + setRetry(retry + 1); + }} + className="search-form" + > + + setDraft(e.target.value)} + placeholder={placeholders[section]} + aria-label={placeholders[section]} + /> + + + {filters[section] && ( + + )} + {(query || status) && ( + + )} +
+ {error ? ( +
+ +

{error}

+ +
+ ) : busy ? ( +
+ +

正在加载{labels[section]}

+
+ ) : !data?.items.length ? ( +
+ +

{query || status ? "没有符合条件的记录" : "这里还没有记录"}

+

+ {query || status + ? "试试其他关键词或清除筛选条件。" + : "用户在小程序中的日常,会慢慢汇集到这里。"} +

+
+ ) : ( + + + + {headings[section].map((heading, index) => ( + {heading} + ))} + + + + {data.items.map((row) => + section === "users" ? ( + action("users", row)} + detail={detail} + disabled={actionBusy} + /> + ) : ( + + {section === "pets" ? ( + <> + + + + + {row.breed || "未填写品种"} + + {row.gender === "male" + ? "男孩" + : row.gender === "female" + ? "女孩" + : "未填写"} + + + + + + + {row.weight_kg ? `${row.weight_kg} kg` : "—"} + + + + + + ) : section === "walks" ? ( + <> + + + + +
+ {row.pet_names?.length + ? row.pet_names.map((name, index) => ( + + + {name} + + )) + : "—"} +
+ + 记录 {row.id.slice(0, 8)} + +
+ {fmt(row.started_at)} + + {((row.distance_meters || 0) / 1000).toFixed(2)} km + {duration(row.duration_seconds)} + + + + + + ) : section === "meetups" ? ( + <> + + {row.title} + {row.id.slice(0, 8)} + + {row.user_name || "未设置昵称"} + + {row.place_name} + {fmt(row.starts_at)} + + + {row.participants} / {row.max_people} + + + + + + ) : section === "tasks" ? ( + <> + + {row.title} + + {row.repeat_rule === "daily" ? "每天" : "单次"} + + + + {row.user_name || "未设置昵称"} + {row.pet_name || "—"} + + + {categories[row.category || ""] || row.category || "—"} + + {row.time_of_day} + + + + + ) : ( + <> + + + {row.name} + + {row.id.slice(0, 8)} + + {row.content_type} + {bytes(row.size)} + {fmt(row.created_at)} + + )} + +
+ + {section === "meetups" && row.status === "open" && ( + + )} +
+
+
+ ), + )} +
+
+ )} +
+ + {data?.total + ? `第 ${(page - 1) * 10 + 1}–${Math.min(page * 10, data.total)} 条,共 ${data.total} 条` + : "共 0 条"} + +
+ + + 第 {page} / {pages} 页 + + +
+
+
+ ); +} diff --git a/pets-be/web/admin/src/components/admin/common.tsx b/pets-be/web/admin/src/components/admin/common.tsx new file mode 100644 index 0000000..522198f --- /dev/null +++ b/pets-be/web/admin/src/components/admin/common.tsx @@ -0,0 +1,80 @@ +import { PawPrint, UserRound } from "lucide-react"; +import { useState } from "react"; +import { Badge } from "@/components/ui/badge"; +import type { Row, Section } from "@/lib/api"; + +export function Avatar({ + url, + person = false, +}: { + url?: string; + person?: boolean; +}) { + const [broken, setBroken] = useState(""); + return ( + + {url && broken !== url ? ( + setBroken(url)} /> + ) : person ? ( + + ) : ( + + )} + + ); +} +export function Status({ row, section }: { row: Row; section: Section }) { + const label = + section === "users" + ? row.disabled + ? "已停用" + : "正常" + : section === "pets" + ? row.archived + ? "已归档" + : "在用" + : section === "tasks" + ? row.completed + ? "今日已完成" + : "今日待完成" + : { + active: "遛狗中", + paused: "已暂停", + finished: "已结束", + open: "开放", + cancelled: "已取消", + }[row.status || ""] || "—"; + const ended = row.disabled || row.archived || row.status === "cancelled"; + return ( + + {label} + + ); +} +export function Identity({ + name, + id, + url, + person = false, +}: { + name?: string; + id?: string; + url?: string; + person?: boolean; +}) { + return ( +
+ {url !== undefined && } +
+ {name || (person ? "未设置昵称" : "未命名")} + + {id || "—"} + +
+
+ ); +} diff --git a/pets-be/web/admin/src/components/admin/format.ts b/pets-be/web/admin/src/components/admin/format.ts new file mode 100644 index 0000000..6ba56d6 --- /dev/null +++ b/pets-be/web/admin/src/components/admin/format.ts @@ -0,0 +1,56 @@ +import type { Section } from "@/lib/api"; +export const labels: Record
= { + overview: "工作台", + users: "用户管理", + pets: "宠物档案", + walks: "遛狗记录", + meetups: "约遛活动", + tasks: "日常任务", + files: "文件管理", +}; +export const fmt = (value?: string) => + value && !Number.isNaN(Date.parse(value)) + ? new Date(value).toLocaleString("zh-CN", { hour12: false }) + : "—"; +export const bytes = (value = 0) => + value >= 1048576 + ? `${(value / 1048576).toFixed(1)} MB` + : `${(value / 1024).toFixed(1)} KB`; +export const duration = (value = 0) => + `${Math.floor(value / 3600)}小时 ${Math.floor((value % 3600) / 60)}分钟`; +export const categories: Record = { + food: "喂食", + water: "饮水", + walk: "运动", + medicine: "用药", + grooming: "清洁", + other: "其他", +}; +export const filters: Partial> = { + users: [ + ["enabled", "正常"], + ["disabled", "已停用"], + ], + pets: [ + ["active", "在用"], + ["archived", "已归档"], + ], + walks: [ + ["active", "遛狗中"], + ["paused", "已暂停"], + ["finished", "已结束"], + ], + meetups: [ + ["open", "开放"], + ["cancelled", "已取消"], + ], + tasks: Object.entries(categories), +}; +export const placeholders: Record = { + users: "搜索用户昵称或 ID", + pets: "搜索宠物名字、品种或主人 ID", + walks: "搜索记录 ID 或用户 ID", + meetups: "搜索活动名称、地点或 ID", + tasks: "搜索任务名称、用户或宠物 ID", + files: "搜索文件名、MD5 或 ID", +}; diff --git a/pets-be/web/admin/src/components/ui/button.tsx b/pets-be/web/admin/src/components/ui/button.tsx index 4c3373d..2398059 100644 --- a/pets-be/web/admin/src/components/ui/button.tsx +++ b/pets-be/web/admin/src/components/ui/button.tsx @@ -40,4 +40,4 @@ const Button = React.forwardRef( ) Button.displayName = 'Button' -export { Button, buttonVariants } +export { Button } diff --git a/pets-be/web/admin/src/components/ui/dialog.tsx b/pets-be/web/admin/src/components/ui/dialog.tsx index 1bbb15d..079e235 100644 --- a/pets-be/web/admin/src/components/ui/dialog.tsx +++ b/pets-be/web/admin/src/components/ui/dialog.tsx @@ -1,11 +1,11 @@ -import * as React from 'react' -import * as DialogPrimitive from '@radix-ui/react-dialog' -import { X } from 'lucide-react' -import { cn } from '@/lib/utils' +import * as React from "react"; +import * as DialogPrimitive from "@radix-ui/react-dialog"; +import { X } from "lucide-react"; +import { cn } from "@/lib/utils"; -const Dialog = DialogPrimitive.Root -const DialogTrigger = DialogPrimitive.Trigger -const DialogClose = DialogPrimitive.Close +const Dialog = DialogPrimitive.Root; +const DialogTrigger = DialogPrimitive.Trigger; +const DialogClose = DialogPrimitive.Close; const DialogContent = React.forwardRef< React.ElementRef, @@ -16,7 +16,7 @@ const DialogContent = React.forwardRef< + 关闭 -)) -DialogContent.displayName = 'DialogContent' +)); +DialogContent.displayName = "DialogContent"; -function DialogHeader({ className, ...props }: React.HTMLAttributes) { - return
+function DialogHeader({ + className, + ...props +}: React.HTMLAttributes) { + return ( +
+ ); } -function DialogTitle({ className, ...props }: React.HTMLAttributes) { - return

+function DialogTitle({ + className, + ...props +}: React.ComponentPropsWithoutRef) { + return ( + + ); } -export { Dialog, DialogTrigger, DialogClose, DialogContent, DialogHeader, DialogTitle } +export { + Dialog, + DialogTrigger, + DialogClose, + DialogContent, + DialogHeader, + DialogTitle, +}; diff --git a/pets-be/web/admin/src/index.css b/pets-be/web/admin/src/index.css index 51edc4d..3063e47 100644 --- a/pets-be/web/admin/src/index.css +++ b/pets-be/web/admin/src/index.css @@ -2,339 +2,1087 @@ @tailwind components; @tailwind utilities; :root { - --background: 150 18% 97%; - --foreground: 166 48% 18%; + --background: 30 100% 98%; + --foreground: 20 20% 30%; --card: 0 0% 100%; - --card-foreground: 166 48% 18%; - --primary: 166 58% 21%; + --card-foreground: 20 20% 30%; + --primary: 15 54% 47%; --primary-foreground: 0 0% 100%; - --secondary: 145 22% 92%; - --secondary-foreground: 166 48% 18%; - --muted: 145 12% 94%; - --muted-foreground: 150 9% 51%; - --accent: 145 22% 92%; - --accent-foreground: 166 48% 18%; - --destructive: 5 70% 56%; + --secondary: 30 100% 94%; + --secondary-foreground: 20 20% 30%; + --muted: 30 38% 96%; + --muted-foreground: 23 16% 46%; + --accent: 30 100% 94%; + --accent-foreground: 20 20% 30%; + --destructive: 0 60% 48%; --destructive-foreground: 0 0% 100%; - --border: 145 16% 86%; - --input: 145 16% 86%; - --ring: 166 58% 21%; - --radius: 0.8rem; + --border: 27 36% 88%; + --input: 27 36% 85%; + --ring: 15 54% 47%; + --radius: 0.85rem; } * { + box-sizing: border-box; border-color: hsl(var(--border)); } body { margin: 0; - background: #f6f8f5; - color: #193f37; + background: #fff9f3; + color: #604a40; font-family: - -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", + ui-rounded, "Hiragino Maru Gothic ProN", "PingFang SC", system-ui, sans-serif; + font-size: 14px; +} +button, +input, +select { + font: inherit; +} +button:focus-visible, +a:focus-visible, +select:focus-visible { + outline: 2px solid #b95738; + outline-offset: 3px; +} +h1, +h2, +h3, +p { + margin: 0; +} +button { + cursor: pointer; +} +button:disabled { + cursor: default; +} +strong { + font-weight: 600; } .app-shell { min-height: 100vh; - display: flex; } .sidebar { - width: 242px; - flex: none; - background: #194d41; - color: #fff; - padding: 30px 18px; + width: 238px; + position: fixed; + inset: 0 auto 0 0; + background: #fffefd; + border-right: 1px solid #ece2d8; + padding: 28px 16px; display: flex; flex-direction: column; + z-index: 20; } .brand { display: flex; - gap: 12px; align-items: center; - padding: 5px 12px 38px; + gap: 12px; + padding: 0 12px 32px; } -.brand > span { - font-size: 28px; - background: #e9aa6d; - border-radius: 16px; - padding: 8px; +.brand img { + width: 48px; + height: 48px; + border-radius: 17px; } .brand strong { display: block; - font-size: 19px; + font-size: 20px; + letter-spacing: 1px; } .brand small { display: block; - font-size: 10px; - letter-spacing: 0.22em; - opacity: 0.56; - margin-top: 2px; + color: #9d8779; + font-size: 9px; + letter-spacing: 2px; + margin-top: 4px; } .side-caption { + padding: 0 15px; + color: #9d8779; font-size: 11px; - color: #9abcb0; - padding: 0 14px; - letter-spacing: 0.2em; + margin-bottom: 14px; + letter-spacing: 1px; } .sidebar nav { display: grid; gap: 7px; } .nav-item { - border: 0; - background: transparent; - color: #c2d9cf; + background: none; + border: none; + border-radius: 13px; + min-height: 46px; display: flex; align-items: center; - gap: 13px; - text-align: left; + gap: 12px; padding: 13px 15px; - border-radius: 13px; - cursor: pointer; + color: #886c5f; + text-align: left; +} +.nav-item:hover { + background: #fff5eb; } -.nav-item:hover, .nav-item.active { - background: #336a5c; - color: #fff; + color: #b95738; + background: #ffeadc; + font-weight: 600; +} +.nav-dot { + width: 5px; + height: 5px; + border-radius: 50%; + background: #b95738; + margin-left: auto; +} +.side-note { + margin-top: auto; + margin-bottom: 24px; + padding: 22px 18px; + border-radius: 18px; + background: #fff6ed; + color: #9b7057; + font-size: 12px; + line-height: 1.9; +} +.side-note svg { + margin-bottom: 8px; + color: #d9956e; } .side-bottom { - margin-top: auto; - color: #8ab5a4; - font-size: 12px; - padding: 12px; -} -.side-bottom button { - display: flex; - align-items: center; - gap: 8px; - border: 0; - background: transparent; - color: #d4e6dc; - margin-top: 18px; - cursor: pointer; -} -.content { - width: 100%; - max-width: 1500px; - padding: 40px 48px; -} -.topbar { display: flex; align-items: center; justify-content: space-between; - margin-bottom: 28px; + border-top: 1px solid #f0e8e0; + padding-top: 20px; +} +.admin-indicator { + font-size: 12px; + color: #886c5f; + padding-left: 9px; +} +.content { + margin-left: 238px; + padding: 32px 38px 24px; + max-width: 1780px; +} +.topbar { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 26px; + gap: 16px; } .eyebrow { - font-size: 11px; - font-weight: 700; - letter-spacing: 0.18em; - color: #74a28b; - margin: 0 0 8px; + color: #9d7965; + font-size: 10px; + letter-spacing: 1.8px; + font-weight: 600; + margin-bottom: 9px; } .topbar h1 { - font-size: 30px; - margin: 0; + font-size: 27px; + letter-spacing: 1px; + font-weight: 600; } -.hero { - background: #194d41; - border-radius: 27px; - color: white; - min-height: 196px; - padding: 34px 40px; +.topbar-actions { + display: flex; + gap: 14px; + align-items: center; +} +.today-date { + font-size: 12px; + color: #9d8779; +} +.mobile-logout { + display: none; +} +.welcome { + min-height: 180px; + background: linear-gradient(110deg, #fff0dd, #ffdec7); + border: 1px solid #ffeadb; + border-radius: 24px; + padding: 32px 36px; display: flex; align-items: center; justify-content: space-between; overflow: hidden; } -.hero p { - color: #a9d7bc; - margin: 0 0 10px; +.welcome h2 { + font-size: 25px; + font-weight: 600; + color: #694c3f; + margin: 10px 0 13px; } -.hero h2 { - font-size: 27px; - margin: 0 0 12px; +.welcome p:not(.eyebrow) { + color: #98745d; + font-size: 13px; } -.hero span { - color: #c9e0d3; -} -.hero-paw { - font-size: 90px; - background: #edbe8b; - border-radius: 50%; - width: 152px; - height: 152px; - text-align: center; - line-height: 152px; - transform: rotate(-9deg); +.welcome img { + width: 116px; + height: 116px; + border-radius: 32px; + transform: rotate(-8deg); + box-shadow: 0 8px 30px #a5623615; } .stat-grid { display: grid; - grid-template-columns: repeat(4, 1fr); - gap: 16px; - margin-top: 22px; + grid-template-columns: repeat(6, minmax(0, 1fr)); + gap: 14px; + margin: 22px 0; } .stat-card, -.table-card { - background: #fff; - border: 1px solid #e7ede7; - box-shadow: 0 12px 40px #214d3f0a; - border-radius: 23px; +.panel { + border: 1px solid #ece2d8; + background: white; + border-radius: 19px; + box-shadow: 0 6px 28px #604a4004; } .stat-card { - padding: 23px; + text-align: left; + padding: 18px; + transition: + transform 0.2s, + border-color 0.2s; +} +.stat-card:hover { + transform: translateY(-3px); + border-color: #ddb699; +} +.stat-top { + display: flex; + align-items: center; + justify-content: space-between; + color: #bca89c; + margin-bottom: 15px; } .stat-icon { - font-size: 27px; - margin-bottom: 16px; + display: grid; + place-items: center; + width: 38px; + height: 38px; + background: #fff0e2; + color: #b95738; + border-radius: 12px; } -.stat-card span { - display: block; - color: #82988e; - font-size: 13px; +.tint-pets .stat-icon, +.tint-tasks .stat-icon { + background: #f1eaf8; + color: #977eae; +} +.tint-walks .stat-icon, +.tint-files .stat-icon { + background: #edf2fb; + color: #7d96b6; +} +.stat-card > span { + color: #886c5f; + font-size: 12px; } .stat-card strong { - font-size: 34px; + font-size: 30px; + display: block; + margin: 6px 0; } -.table-head { - padding: 26px 28px 16px; +.stat-card small { + font-size: 10px; + color: #a48d7e; + white-space: nowrap; } -.table-head h2 { +.overview-grid { + display: grid; + grid-template-columns: 1.6fr 1fr; + gap: 20px; +} +.panel-heading { + padding: 24px 25px 0; + display: flex; + align-items: center; + justify-content: space-between; +} +.panel-heading h2, +.records-heading h2 { + font-size: 17px; + font-weight: 600; +} +.panel-heading p, +.records-heading p { + color: #a18a7c; + font-size: 12px; + margin-top: 7px; +} +.panel-heading > svg { + color: #c6a28c; +} +.bar-chart { + height: 232px; + display: flex; + align-items: flex-end; + gap: 18px; + padding: 28px 26px; +} +.chart-column { + display: flex; + flex-direction: column; + align-items: center; + gap: 8px; + flex: 1; + height: 100%; + min-width: 0; +} +.chart-column > span { + font-size: 12px; + color: #9d7965; +} +.bar-space { + flex: 1; + width: 100%; + display: flex; + align-items: flex-end; + max-width: 42px; +} +.chart-bar { + width: 100%; + background: linear-gradient(#f2bc94, #d88760); + border-radius: 7px 7px 2px 2px; + transition: height 0.3s; +} +.chart-column small { + font-size: 11px; + color: #a48d7e; +} +.today dl { + padding: 12px 25px 20px; margin: 0; - font-size: 20px; } -.table-head p { - color: #87998f; - font-size: 13px; +.today dl > div { + display: flex; + align-items: center; + justify-content: space-between; + border-bottom: 1px solid #f2eae4; + padding: 14px 0; } -.table-scroll { - overflow: auto; +.today dl > div:last-child { + border: 0; +} +.today dt { + font-size: 12px; + color: #886c5f; +} +.today dd { + font-size: 21px; + margin: 0; +} +.today dd small { + font-size: 11px; + margin-left: 5px; + color: #a48d7e; +} +.summary-strip { + margin-top: 20px; + display: flex; + gap: 28px; + padding: 18px 22px; + border: 1px dashed #e6d2c2; + border-radius: 15px; + background: #fff5eb; +} +.summary-strip > div { + display: flex; + align-items: center; + gap: 9px; + font-size: 12px; + color: #9d7965; +} +.summary-strip strong { + color: #604a40; + margin-left: 8px; +} +.records { + overflow: hidden; +} +.records-heading { + padding: 24px 26px 16px; + display: flex; + align-items: center; + justify-content: space-between; +} +.per-page { + background: #fff6ed; + border: 1px solid #f4e6d8; + padding: 5px 10px; + border-radius: 8px; + font-size: 11px; + color: #9d7965; +} +.toolbar { + display: flex; + align-items: center; + gap: 12px; + padding: 0 26px 22px; + flex-wrap: wrap; +} +.search-form { + display: flex; + align-items: center; + gap: 8px; + flex: 1; + max-width: 490px; + position: relative; +} +.search-form > svg { + position: absolute; + left: 12px; + pointer-events: none; + color: #a48d7e; +} +.search-form input { + padding-left: 36px; + min-width: 140px; + border-radius: 10px; +} +.toolbar select { + background: white; + color: #886c5f; + border: 1px solid #e6d9cf; + border-radius: 10px; + padding: 8px 30px 8px 12px; + height: 36px; + font-size: 12px; } table { - border-collapse: collapse; - width: 100%; - min-width: 800px; + min-width: 760px; } -th, -td { - text-align: left; - padding: 16px 24px; - border-top: 1px solid #edf0ec; - white-space: nowrap; - font-size: 13px; +thead { + background: #fffaf6; } th { - color: #81978b; - font-weight: 600; - background: #fbfcfa; + white-space: nowrap; + font-size: 12px !important; + padding: 13px 18px !important; } -td b { - display: block; +td { + padding: 15px 18px !important; + font-size: 12px; + max-width: 360px; } td small { display: block; - color: #9aada2; - font-size: 11px; - margin-top: 3px; + color: #a48d7e; + font-size: 10px; + margin-top: 5px; +} +td strong { + display: block; +} +.identity { + display: flex; + align-items: center; + gap: 10px; + min-width: 0; +} +.identity strong { + font-size: 13px; + color: #604a40; +} +.identity small { + max-width: 185px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + color: #a48d7e; + font-size: 10px; + margin-top: 5px; + display: block; +} +.avatar { + width: 38px; + height: 38px; + display: grid; + place-items: center; + flex: none; + color: #c58d6a; + border-radius: 12px; + background: #fff1e4; + overflow: hidden; +} +.avatar img { + width: 100%; + height: 100%; + object-fit: cover; } .mono { - font-size: 11px; - color: #71877d; + font-family: ui-monospace, SFMono-Regular, monospace; } -.pill { - padding: 5px 9px; - border-radius: 99px; +.pet-tags { + display: flex; + flex-wrap: wrap; + gap: 5px; + max-width: 250px; +} +.pet-tags > span { + background: #fff3e8; + color: #9d6a4e; + padding: 4px 7px; + border-radius: 7px; + display: flex; + align-items: center; + gap: 4px; font-size: 11px; } -.pill.green { - background: #e8f5ec; - color: #258052; +.row-actions { + display: flex; + align-items: center; + gap: 5px; + white-space: nowrap; } -.pill.red { - background: #fff0eb; - color: #ba6b51; +.tree-toggle { + width: 28px; + height: 28px; + display: grid; + place-items: center; + border: 1px solid #f0e4da; + border-radius: 8px; + color: #ad826b; + background: #fffaf6; +} +.text-action { + border: none; + background: none; + color: #b95738; + padding: 0; +} +.tree-row td { + padding: 0 20px 16px 56px !important; + background: #fffcf9; +} +.pet-tree { + border-left: 2px solid #ecd8c8; + padding: 14px 18px 5px; +} +.tree-heading { + display: flex; + align-items: center; + gap: 7px; + font-size: 12px; + color: #9d7965; + margin-bottom: 14px; +} +.tree-heading strong { + display: inline; +} +.tree-heading > span { + font-size: 10px; + margin-left: auto; + color: #b29a89; +} +.pet-tree-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); + gap: 10px; +} +.pet-tree-card { + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + padding: 13px 14px; + border: 1px solid #f0e2d6; + border-radius: 12px; + background: white; + text-align: left; +} +.pet-tree-card:hover { + border-color: #deb697; + background: #fffaf6; +} +.pet-tree-card .identity { + flex: 1; +} +.pet-tree-card > svg { + color: #bfa390; +} +.pet-tree-card .identity small { + font-family: inherit; +} +.tree-message { + display: flex; + align-items: center; + gap: 10px; + color: #a48d7e; + font-size: 12px; + padding: 12px 0; +} +.pagination { + display: flex; + justify-content: space-between; + align-items: center; + gap: 16px; + padding: 18px 25px; + border-top: 1px solid #f0e7df; + font-size: 12px; + color: #9d8779; +} +.pagination > div { + display: flex; + align-items: center; + gap: 15px; +} +.pagination button { + border-radius: 9px; } .empty { + min-height: 230px; + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + gap: 12px; + padding: 35px 20px; + color: #a48d7e; text-align: center; - padding: 55px; - color: #91a397; +} +.empty svg { + color: #c9ae9a; +} +.empty h3 { + font-size: 15px; + font-weight: 500; + color: #8e7160; +} +.empty p { + font-size: 12px; + line-height: 1.8; +} +.empty.compact { + min-height: 150px; } .error-banner, -.error { - color: #a64d37; - background: #fff0eb; +.notice { + display: flex; + align-items: center; + justify-content: space-between; + border: 1px solid #f0d7c9; + background: #fff0e7; border-radius: 12px; - padding: 11px; + padding: 12px 15px; + color: #a04b31; + margin-bottom: 18px; + font-size: 12px; + gap: 12px; +} +.notice { + background: #f5f0fb; + border-color: #e6dcef; + color: #806499; + justify-content: flex-start; +} +.notice button { + border: none; + background: none; + color: inherit; + margin-left: auto; +} +.error-text { + color: #a04b31; +} +.page-footer { + text-align: center; + color: #b49c8b; + font-size: 10px; + padding: 24px 0 5px; + letter-spacing: 1px; +} +.detail-dialog { + max-width: 700px; + width: calc(100% - 32px); + max-height: 85vh; + overflow: auto; + border-radius: 22px !important; + padding: 26px !important; +} +.detail-summary { + display: flex; + justify-content: space-between; + align-items: center; + padding: 14px 0; + border-bottom: 1px solid #f0e7df; + gap: 10px; +} +.detail-summary .identity small { + max-width: 330px; +} +.detail-grid { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 20px; + margin: 7px 0; +} +.detail-grid > div { + min-width: 0; +} +.detail-grid dt { + color: #a48d7e; + font-size: 11px; + margin-bottom: 7px; +} +.detail-grid dd { + font-size: 13px; + margin: 0; + line-height: 1.8; + overflow-wrap: anywhere; + white-space: pre-wrap; +} +.dialog-actions { + display: flex; + justify-content: flex-end; + gap: 10px; + margin-top: 10px; +} +.confirm-copy { + font-size: 13px; + line-height: 1.9; + color: #886c5f; +} +.track { + padding: 14px; + background: #fffaf5; + border: 1px solid #eee0d4; + border-radius: 16px; +} +.track svg { + width: 100%; + display: block; + border-radius: 10px; +} +.track p { + font-size: 10px; + color: #a48d7e; + padding-top: 10px; + text-align: center; +} +.file-preview { + width: 100%; + max-height: 260px; + object-fit: contain; + background: #fff8f0; + border-radius: 12px; +} +.file-link { + display: flex; + gap: 5px; + align-items: center; + color: #b95738; + font-size: 12px; +} +.file-name { + max-width: 220px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } .login-page { min-height: 100vh; - display: grid; - place-items: center; + display: flex; + align-items: center; + justify-content: center; + gap: 100px; + padding: 40px; background: - radial-gradient(circle at 75% 10%, #e9f1e7, transparent 35%), #f6f8f5; + radial-gradient(ellipse at 15% 20%, #ffead4, transparent 50%), + radial-gradient(ellipse at 95% 90%, #f1eaf8, transparent 45%), #fff9f3; +} +.login-story { + max-width: 480px; +} +.login-story > img { + width: 94px; + height: 94px; + border-radius: 28px; + box-shadow: 0 12px 40px #aa683219; + margin-bottom: 30px; + transform: rotate(-6deg); +} +.login-story h1 { + font-size: 42px; + font-weight: 600; + line-height: 1.55; + letter-spacing: 2px; +} +.login-story > p:not(.eyebrow) { + color: #a0816a; + line-height: 1.9; + font-size: 14px; + margin-top: 20px; +} +.story-tags { + display: flex; + gap: 20px; + margin-top: 40px; +} +.story-tags > span { + display: flex; + align-items: center; + gap: 7px; + color: #b28d72; + font-size: 12px; } .login-card { - width: min(420px, calc(100% - 40px)); + width: 400px; background: white; - border-radius: 28px; - padding: 40px; - box-shadow: 0 25px 70px #204a3a18; + border: 1px solid #eee1d6; + border-radius: 27px; + padding: 35px; + box-shadow: 0 20px 80px #98694b0b; } .login-mark { - width: 60px; - height: 60px; - background: #e9aa6d; - border-radius: 19px; + width: 48px; + height: 48px; + background: #fff0e2; + color: #c07851; display: grid; place-items: center; - font-size: 30px; - margin-bottom: 22px; + border-radius: 16px; + margin-bottom: 24px; } -.login-card h1 { - font-size: 30px; - margin: 0; +.login-card h2 { + font-size: 26px; + font-weight: 600; } .muted { - color: #90a198; - margin: 8px 0 30px; + color: #a18a7c; + font-size: 12px; + line-height: 1.8; + margin: 10px 0 28px; } .login-card label { - display: grid; - gap: 7px; - margin-bottom: 18px; - color: #456a5b; - font-size: 13px; + display: block; + color: #8e7160; + font-size: 12px; + margin: 17px 0 8px; } .login-card input { - margin-top: 2px; + height: 42px; + border-radius: 11px; } -.login-card button { - margin-top: 8px; +.login-submit { + margin-top: 25px; + border-radius: 11px; + height: 42px; } -@media (max-width: 800px) { - .sidebar { - width: 70px; - padding: 20px 8px; +.login-footnote { + display: block; + text-align: center; + font-size: 10px; + color: #baa392; + margin-top: 25px; +} +.login-card .error-banner { + margin-top: 16px; + margin-bottom: 0; + line-height: 1.7; +} +@media (min-width: 1550px) { + .content { + padding-left: 52px; + padding-right: 52px; } - .brand div, - .side-caption, - .nav-item:not(.active), - .nav-item.active { - font-size: 0; +} +@media (max-width: 1240px) { + .stat-grid { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + .sidebar { + width: 210px; + } + .content { + margin-left: 210px; + padding: 26px; + } + .today-date { + display: none; + } + .overview-grid { + grid-template-columns: 1.4fr 1fr; + } + .login-page { + gap: 55px; + } + .login-story h1 { + font-size: 35px; + } +} +@media (max-width: 880px) { + .sidebar { + width: 76px; + padding: 22px 9px; + } + .content { + margin-left: 76px; + padding: 24px 20px; } .brand { - padding: 5px 5px 30px; + padding: 0 3px 28px; } - .nav-item { - justify-content: center; + .brand img { + width: 45px; + height: 45px; } + .brand > div, + .side-caption, + .nav-item > span, + .side-note, .side-bottom { display: none; } - .content { - padding: 28px 18px; + .nav-item { + justify-content: center; + padding: 13px 0; } - .stat-grid { - grid-template-columns: repeat(2, 1fr); + .mobile-logout { + display: inline-flex; } - .hero-paw { + .overview-grid { + grid-template-columns: 1fr; + } + .summary-strip { + flex-wrap: wrap; + gap: 15px; + } + .welcome { + padding: 26px; + min-height: 170px; + } + .welcome h2 { + font-size: 22px; + } + .welcome img { + width: 85px; + height: 85px; + } + .login-page { + gap: 35px; + } + .login-story h1 { + font-size: 28px; + } + .story-tags { + gap: 12px; + flex-wrap: wrap; + } + .login-card { + width: 360px; + padding: 28px; + } +} +@media (max-width: 620px) { + .sidebar { + width: 60px; + padding: 20px 6px; + } + .brand { + padding: 0 0 22px; + } + .brand img { + width: 40px; + height: 40px; + } + .content { + margin-left: 60px; + padding: 20px 12px; + } + .topbar h1 { + font-size: 22px; + } + .topbar-actions { + gap: 5px; + } + .topbar-actions > button { + font-size: 11px; + padding: 8px; + } + .eyebrow { + letter-spacing: 1px; + font-size: 9px; + } + .welcome { + padding: 22px; + } + .welcome img { display: none; + } + .welcome h2 { + font-size: 20px; + } + .stat-grid { + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 10px; + } + .stat-card { + padding: 15px; + } + .toolbar { + padding: 0 14px 18px; + } + .records-heading { + padding: 22px 15px 18px; + } + .records-heading p { + max-width: 170px; + line-height: 1.8; + } + .search-form { + flex-basis: 100%; + max-width: none; + } + .pagination { + padding: 16px 12px; + flex-direction: column; + align-items: flex-start; + gap: 13px; + } + .pagination > div { + width: 100%; + justify-content: space-between; + } + .detail-grid { + grid-template-columns: 1fr; + } + .detail-summary .identity small { + max-width: 190px; + } + .login-page { + padding: 25px; + flex-direction: column; + gap: 22px; + } + .login-story { + width: min(400px, 100%); + } + .login-story > img { + width: 54px; + height: 54px; + border-radius: 17px; + margin: 0 0 10px; + } + .login-story h1 { + font-size: 25px; + line-height: 1.7; + } + .login-story h1 br { + display: none; + } + .login-story > p:not(.eyebrow), + .story-tags { + display: none; + } + .login-card { + width: min(400px, 100%); + padding: 28px; + } + .bar-chart { + gap: 10px; + padding-left: 20px; + padding-right: 20px; } } diff --git a/pets-be/web/admin/src/lib/api.ts b/pets-be/web/admin/src/lib/api.ts index 1e0d654..96bcc48 100644 --- a/pets-be/web/admin/src/lib/api.ts +++ b/pets-be/web/admin/src/lib/api.ts @@ -1,9 +1,89 @@ import axios from "axios"; +export type Section = + "users" | "pets" | "walks" | "meetups" | "tasks" | "files"; +export interface Row { + id: string; + nickname?: string; + name?: string; + title?: string; + avatar_url?: string; + avatar_file_id?: string; + cover_url?: string; + user_id?: string; + user_name?: string; + host_user_id?: string; + pet_id?: string; + pet_name?: string; + pet_names?: string[]; + pet_count?: number; + disabled?: boolean; + archived?: boolean; + status?: string; + created_at?: string; + started_at?: string; + ended_at?: string; + starts_at?: string; + breed?: string; + species?: string; + gender?: string; + birth_date?: string; + weight_kg?: number; + coat?: string; + allergies?: string; + care_notes?: string; + duration_seconds?: number; + distance_meters?: number; + share_enabled?: boolean; + place_name?: string; + description?: string; + latitude?: number; + longitude?: number; + participants?: number; + max_people?: number; + category?: string; + time_of_day?: string; + repeat_rule?: string; + completed?: boolean; + reminder_enabled?: boolean; + size?: number; + content_type?: string; + md5?: string; + url?: string; + bucket?: string; + object_key?: string; +} +export interface Point { + latitude: number; + longitude: number; + recorded_at: string; +} +export interface PageResult { + items: Row[]; + total: number; + page: number; + page_size: number; +} +export interface Stats { + users: number; + pets: number; + walks: number; + meetups: number; + tasks: number; + files: number; + today_walks: number; + active_walks: number; + upcoming_meetups: number; + today_completions: number; + distance_meters: number; + duration_seconds: number; + storage_bytes: number; + daily_walks: { date: string; count: number }[]; +} const key = "pets_admin_token"; export const getToken = () => localStorage.getItem(key) || ""; export const setToken = (value: string) => localStorage.setItem(key, value); export const clearToken = () => localStorage.removeItem(key); -const http = axios.create({ baseURL: "/api" }); +const http = axios.create({ baseURL: "/api", timeout: 20000 }); http.interceptors.request.use((config) => { const token = getToken(); if (token) config.headers.Authorization = `Bearer ${token}`; @@ -16,20 +96,42 @@ http.interceptors.response.use( throw new Error(body?.message || "请求失败"); }, (error) => { - if (error.response?.status === 401) clearToken(); - throw new Error(error.response?.data?.message || error.message); + if (axios.isCancel(error)) return Promise.reject(error); + if (error.response?.status === 401) { + clearToken(); + window.dispatchEvent(new Event("admin-auth-expired")); + } + return Promise.reject( + new Error( + error.response?.data?.message || + (error.code === "ECONNABORTED" + ? "请求超时,请重试" + : "无法连接服务器,请稍后重试"), + ), + ); }, ); export const api = { login: (username: string, password: string) => - http.post("/admin/login", { username, password }), - stats: () => http.get>("/admin/stats"), - users: () => http.get("/admin/users"), - pets: () => http.get("/admin/pets"), - walks: () => http.get("/admin/walks"), - meetups: () => http.get("/admin/meetups"), + http.post("/admin/login", { + username, + password, + }), + stats: (signal?: AbortSignal) => + http.get("/admin/stats", { signal }), + list: ( + section: Section, + params: { page: number; page_size: number; q: string; status: string }, + signal?: AbortSignal, + ) => http.get(`/admin/${section}`, { params, signal }), + userPets: (id: string, signal?: AbortSignal) => + http.get(`/admin/users/${id}/pets`, { signal }), + walk: (id: string, signal?: AbortSignal) => + http.get(`/admin/walks/${id}`, { + signal, + }), setUserDisabled: (id: string, disabled: boolean) => http.put(`/admin/users/${id}/disabled`, { disabled }), - setMeetupStatus: (id: string, status: string) => - http.put(`/admin/meetups/${id}/status`, { status }), + cancelMeetup: (id: string) => + http.put(`/admin/meetups/${id}/status`, { status: "cancelled" }), };