gitextract_q8p9a5l9/ ├── .dockerignore ├── .gitattributes ├── .github/ │ ├── .codecov.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug-report.yml │ │ ├── config.yml │ │ ├── deployment.yml │ │ ├── documentation.md │ │ ├── feature-request.yml │ │ ├── other.yml │ │ └── rfc.md │ ├── sync-release.yml │ └── workflows/ │ ├── auto-assign-issue.yml │ ├── auto-invite-comment.yml │ ├── changelog.yml │ ├── cla-assistant.yml │ ├── cleanup-after-milestone-prs-merged.yml │ ├── codeql-analysis.yml │ ├── comment-check.yml │ ├── docker-build-and-release-services-images.yml │ ├── go-build-test.yml │ ├── help-comment-issue.yml │ ├── issue-translator.yml │ ├── merge-from-milestone.yml │ ├── publish-docker-image.yml │ ├── remove-unused-labels.yml │ ├── reopen-issue.yml │ ├── update-version-file-on-release.yml │ └── user-first-interaction.yml ├── .gitignore ├── .golangci.yml ├── CHANGELOG/ │ ├── CHANGELOG-3.8.md │ └── README.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING-zh_CN.md ├── CONTRIBUTING.md ├── Dockerfile ├── LICENSE ├── README.md ├── README_zh_CN.md ├── assets/ │ ├── README.md │ ├── colors.md │ ├── demo/ │ │ └── README.md │ ├── logo/ │ │ └── LICENSE │ └── logo-gif/ │ └── LICENSE ├── bootstrap.bat ├── bootstrap.sh ├── build/ │ ├── README.md │ ├── goreleaser.yaml │ └── images/ │ ├── Dockerfile │ ├── openim-api/ │ │ └── Dockerfile │ ├── openim-crontask/ │ │ └── Dockerfile │ ├── openim-msggateway/ │ │ └── Dockerfile │ ├── openim-msgtransfer/ │ │ └── Dockerfile │ ├── openim-push/ │ │ └── Dockerfile │ ├── openim-rpc-auth/ │ │ └── Dockerfile │ ├── openim-rpc-conversation/ │ │ └── Dockerfile │ ├── openim-rpc-friend/ │ │ └── Dockerfile │ ├── openim-rpc-group/ │ │ └── Dockerfile │ ├── openim-rpc-msg/ │ │ └── Dockerfile │ ├── openim-rpc-third/ │ │ └── Dockerfile │ ├── openim-rpc-user/ │ │ └── Dockerfile │ └── openim-tools/ │ └── component/ │ └── Dockerfile ├── cmd/ │ ├── main.go │ ├── openim-api/ │ │ └── main.go │ ├── openim-cmdutils/ │ │ └── main.go │ ├── openim-crontask/ │ │ └── main.go │ ├── openim-msggateway/ │ │ └── main.go │ ├── openim-msgtransfer/ │ │ └── main.go │ ├── openim-push/ │ │ └── main.go │ └── openim-rpc/ │ ├── openim-rpc-auth/ │ │ └── main.go │ ├── openim-rpc-conversation/ │ │ └── main.go │ ├── openim-rpc-friend/ │ │ └── main.go │ ├── openim-rpc-group/ │ │ └── main.go │ ├── openim-rpc-msg/ │ │ └── main.go │ ├── openim-rpc-third/ │ │ └── main.go │ └── openim-rpc-user/ │ └── main.go ├── config/ │ ├── README.md │ ├── README_zh_CN.md │ ├── alertmanager.yml │ ├── discovery.yml │ ├── email.tmpl │ ├── grafana-template/ │ │ └── Demo.json │ ├── instance-down-rules.yml │ ├── kafka.yml │ ├── local-cache.yml │ ├── log.yml │ ├── minio.yml │ ├── mongodb.yml │ ├── notification.yml │ ├── openim-api.yml │ ├── openim-crontask.yml │ ├── openim-msggateway.yml │ ├── openim-msgtransfer.yml │ ├── openim-push.yml │ ├── openim-rpc-auth.yml │ ├── openim-rpc-conversation.yml │ ├── openim-rpc-friend.yml │ ├── openim-rpc-group.yml │ ├── openim-rpc-msg.yml │ ├── openim-rpc-third.yml │ ├── openim-rpc-user.yml │ ├── prometheus.yml │ ├── redis.yml │ ├── share.yml │ └── webhooks.yml ├── deployments/ │ ├── Readme.md │ └── deploy/ │ ├── clusterRole.yml │ ├── ingress.yml │ ├── kafka-secret.yml │ ├── kafka-service.yml │ ├── kafka-statefulset.yml │ ├── minio-secret.yml │ ├── minio-service.yml │ ├── minio-statefulset.yml │ ├── mongo-secret.yml │ ├── mongo-service.yml │ ├── mongo-statefulset.yml │ ├── openim-api-deployment.yml │ ├── openim-api-service.yml │ ├── openim-config.yml │ ├── openim-crontask-deployment.yml │ ├── openim-msggateway-deployment.yml │ ├── openim-msggateway-service.yml │ ├── openim-msgtransfer-deployment.yml │ ├── openim-msgtransfer-service.yml │ ├── openim-push-deployment.yml │ ├── openim-push-service.yml │ ├── openim-rpc-auth-deployment.yml │ ├── openim-rpc-auth-service.yml │ ├── openim-rpc-conversation-deployment.yml │ ├── openim-rpc-conversation-service.yml │ ├── openim-rpc-friend-deployment.yml │ ├── openim-rpc-friend-service.yml │ ├── openim-rpc-group-deployment.yml │ ├── openim-rpc-group-service.yml │ ├── openim-rpc-msg-deployment.yml │ ├── openim-rpc-msg-service.yml │ ├── openim-rpc-third-deployment.yml │ ├── openim-rpc-third-service.yml │ ├── openim-rpc-user-deployment.yml │ ├── openim-rpc-user-service.yml │ ├── redis-secret.yml │ ├── redis-service.yml │ └── redis-statefulset.yml ├── docker-compose.yml ├── docs/ │ ├── .generated_docs │ ├── CODEOWNERS │ ├── README.md │ ├── contrib/ │ │ ├── README.md │ │ ├── api.md │ │ ├── bash-log.md │ │ ├── cicd-actions.md │ │ ├── code-conventions.md │ │ ├── commit.md │ │ ├── development.md │ │ ├── directory.md │ │ ├── environment.md │ │ ├── error-code.md │ │ ├── git-workflow.md │ │ ├── gitcherry-pick.md │ │ ├── github-workflow.md │ │ ├── go-code.md │ │ ├── go-code1.md │ │ ├── go-doc.md │ │ ├── images.md │ │ ├── init-config.md │ │ ├── install-docker.md │ │ ├── install-openim-linux-system.md │ │ ├── kafka.md │ │ ├── linux-development.md │ │ ├── local-actions.md │ │ ├── logging.md │ │ ├── mac-developer-deployment-guide.md │ │ ├── offline-deployment.md │ │ ├── prometheus-grafana.md │ │ ├── protoc-tools.md │ │ ├── release.md │ │ ├── test.md │ │ ├── util-go.md │ │ ├── util-makefile.md │ │ ├── util-scripts.md │ │ └── version.md │ ├── contributing/ │ │ ├── CONTRIBUTING-JP.md │ │ └── CONTRIBUTING-PL.md │ └── readme/ │ ├── README_cs.md │ ├── README_da.md │ ├── README_el.md │ ├── README_es.md │ ├── README_fa.md │ ├── README_fr.md │ ├── README_hu.md │ ├── README_ja.md │ ├── README_ko.md │ ├── README_tr.md │ ├── README_uk.md │ └── README_vi.md ├── go.mod ├── go.sum ├── install.sh ├── internal/ │ ├── api/ │ │ ├── auth.go │ │ ├── config_manager.go │ │ ├── conversation.go │ │ ├── custom_validator.go │ │ ├── friend.go │ │ ├── group.go │ │ ├── init.go │ │ ├── jssdk/ │ │ │ ├── jssdk.go │ │ │ ├── sort.go │ │ │ └── tools.go │ │ ├── msg.go │ │ ├── prometheus_discovery.go │ │ ├── ratelimit.go │ │ ├── router.go │ │ ├── third.go │ │ └── user.go │ ├── msggateway/ │ │ ├── callback.go │ │ ├── client.go │ │ ├── client_conn.go │ │ ├── compressor.go │ │ ├── compressor_test.go │ │ ├── constant.go │ │ ├── context.go │ │ ├── encoder.go │ │ ├── http_error.go │ │ ├── hub_server.go │ │ ├── init.go │ │ ├── message_handler.go │ │ ├── online.go │ │ ├── options.go │ │ ├── subscription.go │ │ ├── user_map.go │ │ └── ws_server.go │ ├── msgtransfer/ │ │ ├── callback.go │ │ ├── init.go │ │ ├── online_history_msg_handler.go │ │ └── online_msg_to_mongo_handler.go │ ├── push/ │ │ ├── callback.go │ │ ├── offlinepush/ │ │ │ ├── dummy/ │ │ │ │ └── push.go │ │ │ ├── fcm/ │ │ │ │ └── push.go │ │ │ ├── getui/ │ │ │ │ ├── body.go │ │ │ │ └── push.go │ │ │ ├── jpush/ │ │ │ │ ├── body/ │ │ │ │ │ ├── audience.go │ │ │ │ │ ├── message.go │ │ │ │ │ ├── notification.go │ │ │ │ │ ├── options.go │ │ │ │ │ ├── platform.go │ │ │ │ │ └── pushobj.go │ │ │ │ └── push.go │ │ │ ├── offlinepusher.go │ │ │ └── options/ │ │ │ └── options.go │ │ ├── offlinepush_handler.go │ │ ├── onlinepusher.go │ │ ├── push.go │ │ └── push_handler.go │ ├── rpc/ │ │ ├── auth/ │ │ │ └── auth.go │ │ ├── conversation/ │ │ │ ├── callback.go │ │ │ ├── conversation.go │ │ │ ├── db_map.go │ │ │ ├── notification.go │ │ │ └── sync.go │ │ ├── group/ │ │ │ ├── cache.go │ │ │ ├── callback.go │ │ │ ├── convert.go │ │ │ ├── db_map.go │ │ │ ├── fill.go │ │ │ ├── group.go │ │ │ ├── notification.go │ │ │ ├── statistics.go │ │ │ └── sync.go │ │ ├── incrversion/ │ │ │ ├── batch_option.go │ │ │ └── option.go │ │ ├── msg/ │ │ │ ├── as_read.go │ │ │ ├── callback.go │ │ │ ├── clear.go │ │ │ ├── delete.go │ │ │ ├── filter.go │ │ │ ├── msg_status.go │ │ │ ├── notification.go │ │ │ ├── revoke.go │ │ │ ├── send.go │ │ │ ├── seq.go │ │ │ ├── server.go │ │ │ ├── statistics.go │ │ │ ├── sync_msg.go │ │ │ ├── utils.go │ │ │ └── verify.go │ │ ├── relation/ │ │ │ ├── black.go │ │ │ ├── callback.go │ │ │ ├── friend.go │ │ │ ├── notification.go │ │ │ └── sync.go │ │ ├── third/ │ │ │ ├── log.go │ │ │ ├── s3.go │ │ │ ├── third.go │ │ │ └── tool.go │ │ └── user/ │ │ ├── callback.go │ │ ├── config.go │ │ ├── notification.go │ │ ├── online.go │ │ ├── statistics.go │ │ └── user.go │ └── tools/ │ └── cron/ │ ├── cron_task.go │ ├── cron_test.go │ ├── dist_look.go │ ├── msg.go │ ├── s3.go │ └── user_msg.go ├── magefile.go ├── magefile_unix.go ├── magefile_windows.go ├── pkg/ │ ├── apistruct/ │ │ ├── config_manager.go │ │ ├── doc.go │ │ ├── manage.go │ │ ├── msg.go │ │ └── public.go │ ├── authverify/ │ │ ├── doc.go │ │ └── token.go │ ├── callbackstruct/ │ │ ├── common.go │ │ ├── constant.go │ │ ├── conversation.go │ │ ├── doc.go │ │ ├── friend.go │ │ ├── group.go │ │ ├── message.go │ │ ├── msg_gateway.go │ │ ├── push.go │ │ ├── revoke.go │ │ └── user.go │ ├── common/ │ │ ├── cmd/ │ │ │ ├── api.go │ │ │ ├── auth.go │ │ │ ├── conversation.go │ │ │ ├── cron_task.go │ │ │ ├── doc.go │ │ │ ├── friend.go │ │ │ ├── group.go │ │ │ ├── msg.go │ │ │ ├── msg_gateway.go │ │ │ ├── msg_gateway_test.go │ │ │ ├── msg_transfer.go │ │ │ ├── msg_utils.go │ │ │ ├── push.go │ │ │ ├── root.go │ │ │ ├── third.go │ │ │ └── user.go │ │ ├── config/ │ │ │ ├── config.go │ │ │ ├── constant.go │ │ │ ├── doc.go │ │ │ ├── env.go │ │ │ ├── global.go │ │ │ ├── load_config.go │ │ │ ├── load_config_test.go │ │ │ └── parse.go │ │ ├── convert/ │ │ │ ├── auth.go │ │ │ ├── black.go │ │ │ ├── conversation.go │ │ │ ├── doc.go │ │ │ ├── friend.go │ │ │ ├── group.go │ │ │ ├── msg.go │ │ │ ├── user.go │ │ │ └── user_test.go │ │ ├── discovery/ │ │ │ ├── direct/ │ │ │ │ ├── direct_resolver.go │ │ │ │ ├── directconn.go │ │ │ │ └── doc.go │ │ │ ├── discoveryregister.go │ │ │ ├── discoveryregister_test.go │ │ │ ├── doc.go │ │ │ ├── etcd/ │ │ │ │ ├── config_manager.go │ │ │ │ └── const.go │ │ │ └── kubernetes/ │ │ │ ├── doc.go │ │ │ └── kubernetes.go │ │ ├── ginprometheus/ │ │ │ ├── doc.go │ │ │ └── ginprometheus.go │ │ ├── prommetrics/ │ │ │ ├── api.go │ │ │ ├── grpc_auth.go │ │ │ ├── grpc_msg.go │ │ │ ├── grpc_msggateway.go │ │ │ ├── grpc_push.go │ │ │ ├── grpc_user.go │ │ │ ├── prommetrics.go │ │ │ ├── prommetrics_test.go │ │ │ ├── rpc.go │ │ │ └── transfer.go │ │ ├── servererrs/ │ │ │ ├── code.go │ │ │ ├── doc.go │ │ │ ├── predefine.go │ │ │ └── relation.go │ │ ├── startrpc/ │ │ │ ├── circuitbreaker.go │ │ │ ├── mw.go │ │ │ ├── ratelimit.go │ │ │ ├── start.go │ │ │ └── tools.go │ │ ├── storage/ │ │ │ ├── cache/ │ │ │ │ ├── batch_handler.go │ │ │ │ ├── black.go │ │ │ │ ├── cachekey/ │ │ │ │ │ ├── black.go │ │ │ │ │ ├── client_config.go │ │ │ │ │ ├── conversation.go │ │ │ │ │ ├── doc.go │ │ │ │ │ ├── friend.go │ │ │ │ │ ├── group.go │ │ │ │ │ ├── msg.go │ │ │ │ │ ├── online.go │ │ │ │ │ ├── s3.go │ │ │ │ │ ├── seq.go │ │ │ │ │ ├── third.go │ │ │ │ │ ├── token.go │ │ │ │ │ └── user.go │ │ │ │ ├── client_config.go │ │ │ │ ├── conversation.go │ │ │ │ ├── doc.go │ │ │ │ ├── friend.go │ │ │ │ ├── group.go │ │ │ │ ├── mcache/ │ │ │ │ │ ├── minio.go │ │ │ │ │ ├── msg_cache.go │ │ │ │ │ ├── online.go │ │ │ │ │ ├── seq_conversation.go │ │ │ │ │ ├── third.go │ │ │ │ │ ├── token.go │ │ │ │ │ └── tools.go │ │ │ │ ├── msg.go │ │ │ │ ├── online.go │ │ │ │ ├── redis/ │ │ │ │ │ ├── batch.go │ │ │ │ │ ├── batch_handler.go │ │ │ │ │ ├── batch_test.go │ │ │ │ │ ├── black.go │ │ │ │ │ ├── client_config.go │ │ │ │ │ ├── conversation.go │ │ │ │ │ ├── friend.go │ │ │ │ │ ├── group.go │ │ │ │ │ ├── lua_script.go │ │ │ │ │ ├── lua_script_test.go │ │ │ │ │ ├── minio.go │ │ │ │ │ ├── msg.go │ │ │ │ │ ├── online.go │ │ │ │ │ ├── online_test.go │ │ │ │ │ ├── redis_shard_manager.go │ │ │ │ │ ├── s3.go │ │ │ │ │ ├── seq_conversation.go │ │ │ │ │ ├── seq_conversation_test.go │ │ │ │ │ ├── seq_user.go │ │ │ │ │ ├── seq_user_test.go │ │ │ │ │ ├── third.go │ │ │ │ │ ├── token.go │ │ │ │ │ └── user.go │ │ │ │ ├── s3.go │ │ │ │ ├── seq_conversation.go │ │ │ │ ├── seq_user.go │ │ │ │ ├── third.go │ │ │ │ ├── token.go │ │ │ │ └── user.go │ │ │ ├── common/ │ │ │ │ └── types.go │ │ │ ├── controller/ │ │ │ │ ├── auth.go │ │ │ │ ├── black.go │ │ │ │ ├── client_config.go │ │ │ │ ├── conversation.go │ │ │ │ ├── doc.go │ │ │ │ ├── friend.go │ │ │ │ ├── group.go │ │ │ │ ├── msg.go │ │ │ │ ├── msg_transfer.go │ │ │ │ ├── push.go │ │ │ │ ├── s3.go │ │ │ │ ├── third.go │ │ │ │ └── user.go │ │ │ ├── database/ │ │ │ │ ├── black.go │ │ │ │ ├── cache.go │ │ │ │ ├── client_config.go │ │ │ │ ├── conversation.go │ │ │ │ ├── doc.go │ │ │ │ ├── friend.go │ │ │ │ ├── friend_request.go │ │ │ │ ├── group.go │ │ │ │ ├── group_member.go │ │ │ │ ├── group_request.go │ │ │ │ ├── log.go │ │ │ │ ├── mgo/ │ │ │ │ │ ├── black.go │ │ │ │ │ ├── cache.go │ │ │ │ │ ├── cache_test.go │ │ │ │ │ ├── client_config.go │ │ │ │ │ ├── conversation.go │ │ │ │ │ ├── doc.go │ │ │ │ │ ├── friend.go │ │ │ │ │ ├── friend_request.go │ │ │ │ │ ├── group.go │ │ │ │ │ ├── group_member.go │ │ │ │ │ ├── group_request.go │ │ │ │ │ ├── helpers.go │ │ │ │ │ ├── log.go │ │ │ │ │ ├── msg.go │ │ │ │ │ ├── msg_test.go │ │ │ │ │ ├── object.go │ │ │ │ │ ├── seq_conversation.go │ │ │ │ │ ├── seq_conversation_test.go │ │ │ │ │ ├── seq_user.go │ │ │ │ │ ├── user.go │ │ │ │ │ ├── version_log.go │ │ │ │ │ └── version_test.go │ │ │ │ ├── msg.go │ │ │ │ ├── name.go │ │ │ │ ├── object.go │ │ │ │ ├── seq.go │ │ │ │ ├── seq_user.go │ │ │ │ ├── user.go │ │ │ │ └── version_log.go │ │ │ ├── kafka/ │ │ │ │ ├── config.go │ │ │ │ ├── consumer_group.go │ │ │ │ ├── producer.go │ │ │ │ ├── sarama.go │ │ │ │ ├── tls.go │ │ │ │ ├── util.go │ │ │ │ └── verify.go │ │ │ ├── model/ │ │ │ │ ├── application.go │ │ │ │ ├── black.go │ │ │ │ ├── cache.go │ │ │ │ ├── client_config.go │ │ │ │ ├── conversation.go │ │ │ │ ├── doc.go │ │ │ │ ├── friend.go │ │ │ │ ├── friend_request.go │ │ │ │ ├── group.go │ │ │ │ ├── group_member.go │ │ │ │ ├── group_request.go │ │ │ │ ├── log.go │ │ │ │ ├── msg.go │ │ │ │ ├── object.go │ │ │ │ ├── seq.go │ │ │ │ ├── seq_user.go │ │ │ │ ├── subscribe.go │ │ │ │ ├── user.go │ │ │ │ └── version_log.go │ │ │ └── versionctx/ │ │ │ ├── rpc.go │ │ │ └── version.go │ │ └── webhook/ │ │ ├── condition.go │ │ ├── doc.go │ │ ├── http_client.go │ │ └── http_client_test.go │ ├── dbbuild/ │ │ ├── builder.go │ │ ├── microservices.go │ │ └── standalone.go │ ├── localcache/ │ │ ├── cache.go │ │ ├── cache_test.go │ │ ├── doc.go │ │ ├── init.go │ │ ├── link/ │ │ │ ├── doc.go │ │ │ ├── link.go │ │ │ └── link_test.go │ │ ├── lru/ │ │ │ ├── doc.go │ │ │ ├── lru.go │ │ │ ├── lru_expiration.go │ │ │ ├── lru_lazy.go │ │ │ ├── lru_lazy_test.go │ │ │ └── lru_slot.go │ │ ├── option.go │ │ └── tool.go │ ├── mqbuild/ │ │ └── builder.go │ ├── msgprocessor/ │ │ ├── conversation.go │ │ ├── doc.go │ │ └── options.go │ ├── notification/ │ │ ├── common_user/ │ │ │ └── common.go │ │ ├── grouphash/ │ │ │ └── grouphash.go │ │ └── msg.go │ ├── rpccache/ │ │ ├── auth.go │ │ ├── common.go │ │ ├── conversation.go │ │ ├── doc.go │ │ ├── friend.go │ │ ├── group.go │ │ ├── online.go │ │ ├── subscriber.go │ │ └── user.go │ ├── rpcli/ │ │ ├── auth.go │ │ ├── conversation.go │ │ ├── group.go │ │ ├── msg.go │ │ ├── msggateway.go │ │ ├── push.go │ │ ├── relation.go │ │ ├── rtc.go │ │ ├── third.go │ │ ├── tool.go │ │ └── user.go │ ├── statistics/ │ │ ├── doc.go │ │ └── statistics.go │ ├── tools/ │ │ └── batcher/ │ │ ├── batcher.go │ │ └── batcher_test.go │ └── util/ │ ├── conversationutil/ │ │ ├── conversationutil.go │ │ └── doc.go │ ├── hashutil/ │ │ └── id.go │ └── useronline/ │ └── split.go ├── scripts/ │ └── template/ │ ├── LICENSE │ ├── LICENSE_TEMPLATES │ ├── boilerplate.txt │ ├── footer.md.tmpl │ ├── head.md.tmpl │ └── project_README.md ├── start-config.yml ├── test/ │ ├── e2e/ │ │ ├── README.md │ │ ├── api/ │ │ │ ├── token/ │ │ │ │ └── token.go │ │ │ └── user/ │ │ │ ├── curd.go │ │ │ └── user.go │ │ ├── conformance/ │ │ │ └── .keep │ │ ├── e2e.go │ │ ├── e2e_test.go │ │ ├── framework/ │ │ │ ├── config/ │ │ │ │ ├── config.go │ │ │ │ └── config_test.go │ │ │ ├── ginkgowrapper/ │ │ │ │ ├── .keep │ │ │ │ ├── ginkgowrapper.go │ │ │ │ └── ginkgowrapper_test.go │ │ │ └── helpers/ │ │ │ ├── .keep │ │ │ └── chat/ │ │ │ └── chat.go │ │ ├── page/ │ │ │ ├── chat_page.go │ │ │ └── login_page.go │ │ ├── performance/ │ │ │ └── .keep │ │ ├── rpc/ │ │ │ ├── auth/ │ │ │ │ └── .keep │ │ │ ├── conversation/ │ │ │ │ └── .keep │ │ │ ├── friend/ │ │ │ │ └── .keep │ │ │ ├── group/ │ │ │ │ └── .keep │ │ │ └── message/ │ │ │ └── .keep │ │ ├── scalability/ │ │ │ └── .keep │ │ ├── upgrade/ │ │ │ └── .keep │ │ └── web/ │ │ └── Readme.md │ ├── jwt/ │ │ └── main.go │ ├── readme │ ├── stress-test/ │ │ ├── README.md │ │ └── main.go │ ├── stress-test-v2/ │ │ ├── README.md │ │ └── main.go │ ├── testdata/ │ │ ├── README.md │ │ ├── db/ │ │ │ ├── messages.json │ │ │ └── users.json │ │ ├── requests/ │ │ │ ├── login.json │ │ │ ├── register.json │ │ │ └── send-message.json │ │ └── responses/ │ │ ├── login.json │ │ ├── register.json │ │ └── sendMessage.json │ └── webhook/ │ └── msgmodify/ │ └── main.go ├── tools/ │ ├── README.md │ ├── changelog/ │ │ └── changelog.go │ ├── check-component/ │ │ └── main.go │ ├── check-free-memory/ │ │ └── main.go │ ├── imctl/ │ │ ├── .gitignore │ │ ├── README.md │ │ └── main.go │ ├── infra/ │ │ └── main.go │ ├── ncpu/ │ │ ├── README.md │ │ ├── main.go │ │ └── main_test.go │ ├── s3/ │ │ ├── README.md │ │ ├── internal/ │ │ │ └── conversion.go │ │ └── main.go │ ├── seq/ │ │ ├── internal/ │ │ │ └── seq.go │ │ └── main.go │ ├── stress-test-v2/ │ │ └── main.go │ ├── url2im/ │ │ ├── main.go │ │ └── pkg/ │ │ ├── api.go │ │ ├── buffer.go │ │ ├── config.go │ │ ├── http.go │ │ ├── manage.go │ │ ├── md5.go │ │ └── progress.go │ ├── versionchecker/ │ │ └── main.go │ └── yamlfmt/ │ ├── main.go │ └── main_test.go └── version/ ├── version └── version.go