gitextract_g67kz3s3/ ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── config.yml │ │ └── feature_request.md │ └── workflows/ │ ├── ci.yml │ ├── docker-image.yml │ ├── linux-release.yml │ ├── macos-release.yml │ └── windows-release.yml ├── .gitignore ├── Dockerfile ├── LICENSE ├── README.en.md ├── README.ja.md ├── README.md ├── VERSION ├── bin/ │ ├── migration_v0.2-v0.3.sql │ ├── migration_v0.3-v0.4.sql │ └── time_test.sh ├── common/ │ ├── blacklist/ │ │ └── main.go │ ├── client/ │ │ └── init.go │ ├── config/ │ │ └── config.go │ ├── constants.go │ ├── conv/ │ │ └── any.go │ ├── crypto.go │ ├── ctxkey/ │ │ └── key.go │ ├── custom-event.go │ ├── database.go │ ├── embed-file-system.go │ ├── env/ │ │ └── helper.go │ ├── gin.go │ ├── helper/ │ │ ├── helper.go │ │ ├── key.go │ │ └── time.go │ ├── i18n/ │ │ ├── i18n.go │ │ └── locales/ │ │ ├── en.json │ │ └── zh-CN.json │ ├── image/ │ │ ├── image.go │ │ └── image_test.go │ ├── init.go │ ├── logger/ │ │ ├── constants.go │ │ └── logger.go │ ├── message/ │ │ ├── email.go │ │ ├── main.go │ │ ├── message-pusher.go │ │ └── template.go │ ├── network/ │ │ ├── ip.go │ │ └── ip_test.go │ ├── random/ │ │ └── main.go │ ├── rate-limit.go │ ├── redis.go │ ├── render/ │ │ └── render.go │ ├── utils/ │ │ └── array.go │ ├── utils.go │ ├── validate.go │ └── verification.go ├── controller/ │ ├── auth/ │ │ ├── github.go │ │ ├── lark.go │ │ ├── oidc.go │ │ └── wechat.go │ ├── billing.go │ ├── channel-billing.go │ ├── channel-test.go │ ├── channel.go │ ├── group.go │ ├── log.go │ ├── misc.go │ ├── model.go │ ├── option.go │ ├── redemption.go │ ├── relay.go │ ├── token.go │ └── user.go ├── docker-compose.yml ├── docs/ │ └── API.md ├── go.mod ├── go.sum ├── main.go ├── middleware/ │ ├── auth.go │ ├── cache.go │ ├── cors.go │ ├── distributor.go │ ├── gzip.go │ ├── language.go │ ├── logger.go │ ├── rate-limit.go │ ├── recover.go │ ├── request-id.go │ ├── turnstile-check.go │ └── utils.go ├── model/ │ ├── ability.go │ ├── cache.go │ ├── channel.go │ ├── log.go │ ├── main.go │ ├── option.go │ ├── redemption.go │ ├── token.go │ ├── user.go │ └── utils.go ├── monitor/ │ ├── channel.go │ ├── manage.go │ └── metric.go ├── one-api.service ├── pull_request_template.md ├── relay/ │ ├── adaptor/ │ │ ├── ai360/ │ │ │ └── constants.go │ │ ├── aiproxy/ │ │ │ ├── adaptor.go │ │ │ ├── constants.go │ │ │ ├── main.go │ │ │ └── model.go │ │ ├── ali/ │ │ │ ├── adaptor.go │ │ │ ├── constants.go │ │ │ ├── image.go │ │ │ ├── main.go │ │ │ └── model.go │ │ ├── alibailian/ │ │ │ ├── constants.go │ │ │ └── main.go │ │ ├── anthropic/ │ │ │ ├── adaptor.go │ │ │ ├── constants.go │ │ │ ├── main.go │ │ │ └── model.go │ │ ├── aws/ │ │ │ ├── adaptor.go │ │ │ ├── claude/ │ │ │ │ ├── adapter.go │ │ │ │ ├── main.go │ │ │ │ └── model.go │ │ │ ├── llama3/ │ │ │ │ ├── adapter.go │ │ │ │ ├── main.go │ │ │ │ ├── main_test.go │ │ │ │ └── model.go │ │ │ ├── registry.go │ │ │ └── utils/ │ │ │ ├── adaptor.go │ │ │ └── utils.go │ │ ├── baichuan/ │ │ │ └── constants.go │ │ ├── baidu/ │ │ │ ├── adaptor.go │ │ │ ├── constants.go │ │ │ ├── main.go │ │ │ └── model.go │ │ ├── baiduv2/ │ │ │ ├── constants.go │ │ │ └── main.go │ │ ├── cloudflare/ │ │ │ ├── adaptor.go │ │ │ ├── constant.go │ │ │ ├── main.go │ │ │ └── model.go │ │ ├── cohere/ │ │ │ ├── adaptor.go │ │ │ ├── constant.go │ │ │ ├── main.go │ │ │ └── model.go │ │ ├── common.go │ │ ├── coze/ │ │ │ ├── adaptor.go │ │ │ ├── constant/ │ │ │ │ ├── contenttype/ │ │ │ │ │ └── define.go │ │ │ │ ├── event/ │ │ │ │ │ └── define.go │ │ │ │ └── messagetype/ │ │ │ │ └── define.go │ │ │ ├── constants.go │ │ │ ├── helper.go │ │ │ ├── main.go │ │ │ └── model.go │ │ ├── deepl/ │ │ │ ├── adaptor.go │ │ │ ├── constants.go │ │ │ ├── helper.go │ │ │ ├── main.go │ │ │ └── model.go │ │ ├── deepseek/ │ │ │ └── constants.go │ │ ├── doubao/ │ │ │ ├── constants.go │ │ │ └── main.go │ │ ├── gemini/ │ │ │ ├── adaptor.go │ │ │ ├── constants.go │ │ │ ├── main.go │ │ │ └── model.go │ │ ├── geminiv2/ │ │ │ ├── constants.go │ │ │ └── main.go │ │ ├── groq/ │ │ │ └── constants.go │ │ ├── interface.go │ │ ├── lingyiwanwu/ │ │ │ └── constants.go │ │ ├── minimax/ │ │ │ ├── constants.go │ │ │ └── main.go │ │ ├── mistral/ │ │ │ └── constants.go │ │ ├── moonshot/ │ │ │ └── constants.go │ │ ├── novita/ │ │ │ ├── constants.go │ │ │ └── main.go │ │ ├── ollama/ │ │ │ ├── adaptor.go │ │ │ ├── constants.go │ │ │ ├── main.go │ │ │ └── model.go │ │ ├── openai/ │ │ │ ├── adaptor.go │ │ │ ├── compatible.go │ │ │ ├── constants.go │ │ │ ├── helper.go │ │ │ ├── image.go │ │ │ ├── main.go │ │ │ ├── model.go │ │ │ ├── token.go │ │ │ └── util.go │ │ ├── openrouter/ │ │ │ └── constants.go │ │ ├── palm/ │ │ │ ├── adaptor.go │ │ │ ├── constants.go │ │ │ ├── model.go │ │ │ └── palm.go │ │ ├── proxy/ │ │ │ └── adaptor.go │ │ ├── replicate/ │ │ │ ├── adaptor.go │ │ │ ├── chat.go │ │ │ ├── constant.go │ │ │ ├── image.go │ │ │ └── model.go │ │ ├── siliconflow/ │ │ │ └── constants.go │ │ ├── stepfun/ │ │ │ └── constants.go │ │ ├── tencent/ │ │ │ ├── adaptor.go │ │ │ ├── constants.go │ │ │ ├── main.go │ │ │ └── model.go │ │ ├── togetherai/ │ │ │ └── constants.go │ │ ├── vertexai/ │ │ │ ├── adaptor.go │ │ │ ├── claude/ │ │ │ │ ├── adapter.go │ │ │ │ └── model.go │ │ │ ├── gemini/ │ │ │ │ └── adapter.go │ │ │ ├── registry.go │ │ │ └── token.go │ │ ├── xai/ │ │ │ └── constants.go │ │ ├── xunfei/ │ │ │ ├── adaptor.go │ │ │ ├── constants.go │ │ │ ├── domain.go │ │ │ ├── main.go │ │ │ └── model.go │ │ ├── xunfeiv2/ │ │ │ └── constants.go │ │ └── zhipu/ │ │ ├── adaptor.go │ │ ├── constants.go │ │ ├── main.go │ │ └── model.go │ ├── adaptor.go │ ├── adaptor_test.go │ ├── apitype/ │ │ └── define.go │ ├── billing/ │ │ ├── billing.go │ │ └── ratio/ │ │ ├── group.go │ │ ├── image.go │ │ └── model.go │ ├── channeltype/ │ │ ├── define.go │ │ ├── helper.go │ │ ├── url.go │ │ └── url_test.go │ ├── constant/ │ │ ├── common.go │ │ ├── finishreason/ │ │ │ └── define.go │ │ └── role/ │ │ └── define.go │ ├── controller/ │ │ ├── audio.go │ │ ├── error.go │ │ ├── helper.go │ │ ├── image.go │ │ ├── proxy.go │ │ ├── text.go │ │ └── validator/ │ │ └── validation.go │ ├── meta/ │ │ └── relay_meta.go │ ├── model/ │ │ ├── constant.go │ │ ├── general.go │ │ ├── image.go │ │ ├── message.go │ │ ├── misc.go │ │ └── tool.go │ └── relaymode/ │ ├── define.go │ └── helper.go ├── router/ │ ├── api.go │ ├── dashboard.go │ ├── main.go │ ├── relay.go │ └── web.go └── web/ ├── README.md ├── THEMES ├── air/ │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public/ │ │ ├── index.html │ │ └── robots.txt │ ├── src/ │ │ ├── App.js │ │ ├── components/ │ │ │ ├── ChannelsTable.js │ │ │ ├── Footer.js │ │ │ ├── GitHubOAuth.js │ │ │ ├── HeaderBar.js │ │ │ ├── Loading.js │ │ │ ├── LoginForm.js │ │ │ ├── LogsTable.js │ │ │ ├── MjLogsTable.js │ │ │ ├── OperationSetting.js │ │ │ ├── OtherSetting.js │ │ │ ├── PasswordResetConfirm.js │ │ │ ├── PasswordResetForm.js │ │ │ ├── PersonalSetting.js │ │ │ ├── PrivateRoute.js │ │ │ ├── RedemptionsTable.js │ │ │ ├── RegisterForm.js │ │ │ ├── SiderBar.js │ │ │ ├── SystemSetting.js │ │ │ ├── TokensTable.js │ │ │ ├── UsersTable.js │ │ │ ├── WeChatIcon.js │ │ │ └── utils.js │ │ ├── constants/ │ │ │ ├── channel.constants.js │ │ │ ├── common.constant.js │ │ │ ├── index.js │ │ │ ├── toast.constants.js │ │ │ └── user.constants.js │ │ ├── context/ │ │ │ ├── Status/ │ │ │ │ ├── index.js │ │ │ │ └── reducer.js │ │ │ └── User/ │ │ │ ├── index.js │ │ │ └── reducer.js │ │ ├── helpers/ │ │ │ ├── api.js │ │ │ ├── auth-header.js │ │ │ ├── history.js │ │ │ ├── index.js │ │ │ ├── render.js │ │ │ └── utils.js │ │ ├── index.css │ │ ├── index.js │ │ └── pages/ │ │ ├── About/ │ │ │ └── index.js │ │ ├── Channel/ │ │ │ ├── EditChannel.js │ │ │ └── index.js │ │ ├── Chat/ │ │ │ └── index.js │ │ ├── Detail/ │ │ │ └── index.js │ │ ├── Home/ │ │ │ └── index.js │ │ ├── Log/ │ │ │ └── index.js │ │ ├── Midjourney/ │ │ │ └── index.js │ │ ├── NotFound/ │ │ │ └── index.js │ │ ├── Redemption/ │ │ │ ├── EditRedemption.js │ │ │ └── index.js │ │ ├── Setting/ │ │ │ └── index.js │ │ ├── Token/ │ │ │ ├── EditToken.js │ │ │ └── index.js │ │ ├── TopUp/ │ │ │ └── index.js │ │ └── User/ │ │ ├── AddUser.js │ │ ├── EditUser.js │ │ └── index.js │ └── vercel.json ├── berry/ │ ├── .gitignore │ ├── .prettierrc │ ├── README.md │ ├── jsconfig.json │ ├── package.json │ ├── public/ │ │ └── index.html │ └── src/ │ ├── App.js │ ├── assets/ │ │ └── scss/ │ │ ├── _themes-vars.module.scss │ │ ├── fonts.scss │ │ └── style.scss │ ├── config.js │ ├── constants/ │ │ ├── ChannelConstants.js │ │ ├── CommonConstants.js │ │ ├── SnackbarConstants.js │ │ └── index.js │ ├── contexts/ │ │ ├── StatusContext.js │ │ └── UserContext.js │ ├── hooks/ │ │ ├── useAuth.js │ │ ├── useLogin.js │ │ ├── useRegister.js │ │ └── useScriptRef.js │ ├── index.js │ ├── layout/ │ │ ├── MainLayout/ │ │ │ ├── Header/ │ │ │ │ ├── ProfileSection/ │ │ │ │ │ └── index.js │ │ │ │ └── index.js │ │ │ ├── LogoSection/ │ │ │ │ └── index.js │ │ │ ├── Sidebar/ │ │ │ │ ├── MenuCard/ │ │ │ │ │ └── index.js │ │ │ │ ├── MenuList/ │ │ │ │ │ ├── NavCollapse/ │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── NavGroup/ │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── NavItem/ │ │ │ │ │ │ └── index.js │ │ │ │ │ └── index.js │ │ │ │ └── index.js │ │ │ └── index.js │ │ ├── MinimalLayout/ │ │ │ ├── Header/ │ │ │ │ └── index.js │ │ │ └── index.js │ │ ├── NavMotion.js │ │ └── NavigationScroll.js │ ├── menu-items/ │ │ ├── index.js │ │ └── panel.js │ ├── routes/ │ │ ├── MainRoutes.js │ │ ├── OtherRoutes.js │ │ └── index.js │ ├── serviceWorker.js │ ├── store/ │ │ ├── accountReducer.js │ │ ├── actions.js │ │ ├── constant.js │ │ ├── customizationReducer.js │ │ ├── index.js │ │ ├── reducer.js │ │ └── siteInfoReducer.js │ ├── themes/ │ │ ├── compStyleOverride.js │ │ ├── index.js │ │ ├── palette.js │ │ └── typography.js │ ├── ui-component/ │ │ ├── AdminContainer.js │ │ ├── Footer.js │ │ ├── Label.js │ │ ├── Loadable.js │ │ ├── Loader.js │ │ ├── Logo.js │ │ ├── SvgColor.js │ │ ├── Switch.js │ │ ├── TableToolBar.js │ │ ├── ThemeButton.js │ │ ├── cards/ │ │ │ ├── CardSecondaryAction.js │ │ │ ├── MainCard.js │ │ │ ├── Skeleton/ │ │ │ │ ├── EarningCard.js │ │ │ │ ├── ImagePlaceholder.js │ │ │ │ ├── PopularCard.js │ │ │ │ ├── ProductPlaceholder.js │ │ │ │ ├── TotalGrowthBarChart.js │ │ │ │ └── TotalIncomeCard.js │ │ │ ├── SubCard.js │ │ │ └── UserCard.js │ │ └── extended/ │ │ ├── AnimateButton.js │ │ ├── Avatar.js │ │ ├── Breadcrumbs.js │ │ └── Transitions.js │ ├── utils/ │ │ ├── api.js │ │ ├── chart.js │ │ ├── common.js │ │ ├── password-strength.js │ │ └── route-guard/ │ │ └── AuthGuard.js │ └── views/ │ ├── About/ │ │ └── index.js │ ├── Authentication/ │ │ ├── Auth/ │ │ │ ├── ForgetPassword.js │ │ │ ├── GitHubOAuth.js │ │ │ ├── LarkOAuth.js │ │ │ ├── Login.js │ │ │ ├── OidcOAuth.js │ │ │ ├── Register.js │ │ │ └── ResetPassword.js │ │ ├── AuthCardWrapper.js │ │ ├── AuthForms/ │ │ │ ├── AuthLogin.js │ │ │ ├── AuthRegister.js │ │ │ ├── ForgetPasswordForm.js │ │ │ ├── ResetPasswordForm.js │ │ │ └── WechatModal.js │ │ └── AuthWrapper.js │ ├── Channel/ │ │ ├── component/ │ │ │ ├── EditModal.js │ │ │ ├── GroupLabel.js │ │ │ ├── NameLabel.js │ │ │ ├── ResponseTimeLabel.js │ │ │ ├── TableHead.js │ │ │ └── TableRow.js │ │ ├── index.js │ │ └── type/ │ │ └── Config.js │ ├── Dashboard/ │ │ ├── component/ │ │ │ ├── StatisticalBarChart.js │ │ │ ├── StatisticalCard.js │ │ │ └── StatisticalLineChartCard.js │ │ └── index.js │ ├── Error/ │ │ └── index.js │ ├── Home/ │ │ ├── baseIndex.js │ │ └── index.js │ ├── Log/ │ │ ├── component/ │ │ │ ├── TableHead.js │ │ │ ├── TableRow.js │ │ │ └── TableToolBar.js │ │ ├── index.js │ │ └── type/ │ │ └── LogType.js │ ├── Profile/ │ │ ├── component/ │ │ │ └── EmailModal.js │ │ └── index.js │ ├── Redemption/ │ │ ├── component/ │ │ │ ├── EditModal.js │ │ │ ├── TableHead.js │ │ │ └── TableRow.js │ │ └── index.js │ ├── Setting/ │ │ ├── component/ │ │ │ ├── OperationSetting.js │ │ │ ├── OtherSetting.js │ │ │ └── SystemSetting.js │ │ └── index.js │ ├── Token/ │ │ ├── component/ │ │ │ ├── EditModal.js │ │ │ ├── TableHead.js │ │ │ └── TableRow.js │ │ └── index.js │ ├── Topup/ │ │ ├── component/ │ │ │ ├── InviteCard.js │ │ │ └── TopupCard.js │ │ └── index.js │ └── User/ │ ├── component/ │ │ ├── EditModal.js │ │ ├── TableHead.js │ │ └── TableRow.js │ └── index.js ├── build.sh └── default/ ├── .gitignore ├── README.md ├── package.json ├── public/ │ ├── index.html │ └── robots.txt ├── src/ │ ├── App.js │ ├── components/ │ │ ├── ChannelsTable.js │ │ ├── Footer.js │ │ ├── GitHubOAuth.js │ │ ├── Header.js │ │ ├── LarkOAuth.js │ │ ├── Loading.js │ │ ├── LoginForm.js │ │ ├── LogsTable.js │ │ ├── OperationSetting.js │ │ ├── OtherSetting.js │ │ ├── PasswordResetConfirm.js │ │ ├── PasswordResetForm.js │ │ ├── PersonalSetting.js │ │ ├── PrivateRoute.js │ │ ├── RedemptionsTable.js │ │ ├── RegisterForm.js │ │ ├── SystemSetting.js │ │ ├── TokensTable.js │ │ ├── UsersTable.js │ │ └── utils.js │ ├── constants/ │ │ ├── channel.constants.js │ │ ├── common.constant.js │ │ ├── index.js │ │ ├── toast.constants.js │ │ └── user.constants.js │ ├── context/ │ │ ├── Status/ │ │ │ ├── index.js │ │ │ └── reducer.js │ │ └── User/ │ │ ├── index.js │ │ └── reducer.js │ ├── helpers/ │ │ ├── api.js │ │ ├── auth-header.js │ │ ├── helper.js │ │ ├── history.js │ │ ├── index.js │ │ ├── render.js │ │ └── utils.js │ ├── i18n.js │ ├── index.css │ ├── index.js │ ├── locales/ │ │ ├── en/ │ │ │ └── translation.json │ │ └── zh/ │ │ └── translation.json │ └── pages/ │ ├── About/ │ │ └── index.js │ ├── Channel/ │ │ ├── EditChannel.js │ │ └── index.js │ ├── Chat/ │ │ └── index.js │ ├── Dashboard/ │ │ ├── Dashboard.css │ │ └── index.js │ ├── Home/ │ │ └── index.js │ ├── Log/ │ │ └── index.js │ ├── NotFound/ │ │ └── index.js │ ├── Redemption/ │ │ ├── EditRedemption.js │ │ └── index.js │ ├── Setting/ │ │ └── index.js │ ├── Token/ │ │ ├── EditToken.js │ │ └── index.js │ ├── TopUp/ │ │ └── index.js │ └── User/ │ ├── AddUser.js │ ├── EditUser.js │ └── index.js └── vercel.json