gitextract_04c_nojh/ ├── .buildpacks ├── .devcontainer/ │ ├── Dockerfile │ ├── devcontainer.json │ └── docker-compose.yml ├── .dockerignore ├── .editorconfig ├── .github/ │ ├── tests/ │ │ ├── README.md │ │ └── pull-request.json │ └── workflows/ │ ├── build.yml │ ├── check-release.yml │ └── push-image.yml ├── .gitignore ├── .mailmap ├── .nvmrc ├── .sequelizerc.example ├── AUTHORS ├── Aptfile ├── CONTRIBUTING.md ├── FUNDING.json ├── LICENSE ├── Procfile ├── README.md ├── app.js ├── app.json ├── babel.config.js ├── bin/ │ ├── heroku │ ├── heroku_start.sh │ ├── manage_users │ └── setup ├── config.js ├── config.json.example ├── contribute/ │ └── developer-certificate-of-origin ├── deployments/ │ ├── Dockerfile │ ├── build.sh │ ├── docker-compose.yml │ └── docker-entrypoint.sh ├── lib/ │ ├── auth/ │ │ ├── bitbucket/ │ │ │ └── index.js │ │ ├── dropbox/ │ │ │ └── index.js │ │ ├── email/ │ │ │ └── index.js │ │ ├── facebook/ │ │ │ └── index.js │ │ ├── github/ │ │ │ └── index.js │ │ ├── gitlab/ │ │ │ └── index.js │ │ ├── google/ │ │ │ └── index.js │ │ ├── index.js │ │ ├── ldap/ │ │ │ └── index.js │ │ ├── mattermost/ │ │ │ └── index.js │ │ ├── oauth2/ │ │ │ ├── index.js │ │ │ └── strategy.js │ │ ├── openid/ │ │ │ └── index.js │ │ ├── saml/ │ │ │ └── index.js │ │ ├── twitter/ │ │ │ └── index.js │ │ └── utils.js │ ├── config/ │ │ ├── default.js │ │ ├── defaultSSL.js │ │ ├── dockerSecret.js │ │ ├── enum.js │ │ ├── environment.js │ │ ├── index.js │ │ └── utils.js │ ├── csp.js │ ├── errorPage/ │ │ └── index.js │ ├── history/ │ │ └── index.js │ ├── homepage/ │ │ └── index.js │ ├── imageRouter/ │ │ ├── azure.js │ │ ├── filesystem.js │ │ ├── imgur.js │ │ ├── index.js │ │ ├── lutim.js │ │ ├── minio.js │ │ └── s3.js │ ├── letter-avatars.js │ ├── logger.js │ ├── metrics.js │ ├── middleware/ │ │ ├── checkURIValid.js │ │ ├── codiMDVersion.js │ │ ├── redirectWithoutTrailingSlashes.js │ │ └── tooBusy.js │ ├── migrations/ │ │ ├── 20150504155329-create-users.js │ │ ├── 20150508114741-create-notes.js │ │ ├── 20150515125813-create-temp.js │ │ ├── 20150702001020-update-to-0_3_1.js │ │ ├── 20150915153700-change-notes-title-to-text.js │ │ ├── 20160112220142-note-add-lastchange.js │ │ ├── 20160420180355-note-add-alias.js │ │ ├── 20160515114000-user-add-tokens.js │ │ ├── 20160607060246-support-revision.js │ │ ├── 20160703062241-support-authorship.js │ │ ├── 20161009040430-support-delete-note.js │ │ ├── 20161201050312-support-email-signin.js │ │ ├── 20171009121200-longtext-for-mysql.js │ │ ├── 20180209120907-longtext-of-authorship.js │ │ ├── 20180306150303-fix-enum.js │ │ ├── 20180326103000-use-text-in-tokens.js │ │ ├── 20180525153000-user-add-delete-token.js │ │ ├── 20200104215332-remove-temp-table.js │ │ └── 20240114120250-revision-add-index.js │ ├── models/ │ │ ├── author.js │ │ ├── index.js │ │ ├── note.js │ │ ├── revision.js │ │ └── user.js │ ├── note/ │ │ ├── index.js │ │ └── noteActions.js │ ├── ot/ │ │ ├── client.js │ │ ├── editor-socketio-server.js │ │ ├── index.js │ │ ├── selection.js │ │ ├── server.js │ │ ├── simple-text-operation.js │ │ ├── text-operation.js │ │ └── wrapped-operation.js │ ├── realtime/ │ │ ├── processQueue.js │ │ ├── realtime.js │ │ ├── realtimeCleanDanglingUserJob.js │ │ ├── realtimeClientConnection.js │ │ ├── realtimeSaveRevisionJob.js │ │ └── realtimeUpdateDirtyNoteJob.js │ ├── response.js │ ├── routes.js │ ├── status/ │ │ └── index.js │ ├── user/ │ │ └── index.js │ ├── utils.js │ ├── web/ │ │ └── middleware/ │ │ └── checkVersion.js │ └── workers/ │ └── dmpWorker.js ├── locales/ │ ├── ca.json │ ├── da.json │ ├── de.json │ ├── el.json │ ├── en.json │ ├── eo.json │ ├── es.json │ ├── fr.json │ ├── hi.json │ ├── hr.json │ ├── id.json │ ├── it.json │ ├── ja.json │ ├── ko.json │ ├── nl.json │ ├── pl.json │ ├── pt.json │ ├── ru.json │ ├── sr.json │ ├── sv.json │ ├── tr.json │ ├── uk.json │ ├── zh-CN.json │ └── zh-TW.json ├── package.json ├── public/ │ ├── .eslintrc.js │ ├── css/ │ │ ├── bootstrap-social.css │ │ ├── center.css │ │ ├── codemirror-extend/ │ │ │ ├── ayu-dark.css │ │ │ ├── ayu-mirage.css │ │ │ ├── one-dark.css │ │ │ ├── tomorrow-night-bright.css │ │ │ └── tomorrow-night-eighties.css │ │ ├── cover.css │ │ ├── extra.css │ │ ├── font.css │ │ ├── github-extract.css │ │ ├── google-font.css │ │ ├── index.css │ │ ├── markdown.css │ │ ├── mermaid.css │ │ ├── site.css │ │ ├── slide-preview.css │ │ └── slide.css │ ├── default.md │ ├── docs/ │ │ ├── features.md │ │ ├── privacy.md.example │ │ ├── release-notes.md │ │ ├── slide-example.md │ │ └── yaml-metadata.md │ ├── js/ │ │ ├── cover.js │ │ ├── extra.js │ │ ├── history.js │ │ ├── htmlExport.js │ │ ├── index.js │ │ ├── lib/ │ │ │ ├── appState.js │ │ │ ├── common/ │ │ │ │ ├── constant.ejs │ │ │ │ ├── login.js │ │ │ │ └── metrics.ejs │ │ │ ├── config/ │ │ │ │ └── index.js │ │ │ ├── editor/ │ │ │ │ ├── config.js │ │ │ │ ├── constants.js │ │ │ │ ├── index.js │ │ │ │ ├── markdown-lint/ │ │ │ │ │ └── index.js │ │ │ │ ├── spellcheck.js │ │ │ │ ├── statusbar.html │ │ │ │ ├── table-editor.js │ │ │ │ ├── toolbar.html │ │ │ │ ├── ui-elements.js │ │ │ │ └── utils.js │ │ │ ├── markdown/ │ │ │ │ └── utils.js │ │ │ ├── modeType.js │ │ │ ├── renderer/ │ │ │ │ ├── csvpreview.js │ │ │ │ ├── fretboard/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ └── i.css │ │ │ │ │ └── fretboard.js │ │ │ │ └── lightbox/ │ │ │ │ ├── index.js │ │ │ │ └── lightbox.css │ │ │ └── syncscroll.js │ │ ├── locale.js │ │ ├── mathjax-config-extra.js │ │ ├── pretty.js │ │ ├── render.js │ │ ├── reveal-markdown.js │ │ ├── revealjs-plugins/ │ │ │ ├── elapsed-time-bar/ │ │ │ │ └── elapsed-time-bar.js │ │ │ └── spotlight/ │ │ │ └── spotlight.js │ │ ├── slide.js │ │ └── utils.js │ ├── markdown-lint/ │ │ └── css/ │ │ └── lint.css │ ├── uploads/ │ │ └── .gitkeep │ ├── vendor/ │ │ ├── abcjs_basic_3.1.1-min.js │ │ ├── codemirror-spell-checker/ │ │ │ ├── en_US.aff │ │ │ └── en_US.dic │ │ ├── inlineAttachment/ │ │ │ ├── codemirror.inline-attachment.js │ │ │ └── inline-attachment.js │ │ ├── jquery-textcomplete/ │ │ │ └── jquery.textcomplete.js │ │ ├── md-toc.js │ │ ├── ot/ │ │ │ ├── ajax-adapter.js │ │ │ ├── client.js │ │ │ ├── codemirror-adapter.js │ │ │ ├── compress.sh │ │ │ ├── editor-client.js │ │ │ ├── selection.js │ │ │ ├── socketio-adapter.js │ │ │ ├── text-operation.js │ │ │ ├── undo-manager.js │ │ │ └── wrapped-operation.js │ │ └── showup/ │ │ ├── showup.css │ │ └── showup.js │ └── views/ │ ├── codimd/ │ │ ├── body.ejs │ │ ├── foot.ejs │ │ ├── footer.ejs │ │ ├── head.ejs │ │ └── header.ejs │ ├── codimd.ejs │ ├── error.ejs │ ├── html.hbs │ ├── includes/ │ │ ├── header.ejs │ │ └── scripts.ejs │ ├── index/ │ │ ├── body.ejs │ │ ├── foot.ejs │ │ ├── footer.ejs │ │ ├── head.ejs │ │ └── header.ejs │ ├── index.ejs │ ├── pretty.ejs │ ├── shared/ │ │ ├── disqus.ejs │ │ ├── ga.ejs │ │ ├── help-modal.ejs │ │ ├── pandoc-export-modal.ejs │ │ ├── polyfill.ejs │ │ ├── refresh-modal.ejs │ │ ├── revision-modal.ejs │ │ └── signin-modal.ejs │ └── slide.ejs ├── scalingo.json ├── test/ │ ├── auth/ │ │ └── oauth2/ │ │ └── strategy.test.js │ ├── connectionQueue.test.js │ ├── csp.js │ ├── letter-avatars.js │ ├── realtime/ │ │ ├── cleanDanglingUser.test.js │ │ ├── connection.test.js │ │ ├── dirtyNoteUpdate.test.js │ │ ├── disconnect-process.test.js │ │ ├── extractNoteIdFromSocket.test.js │ │ ├── ifMayEdit.test.js │ │ ├── parseNoteIdFromSocket.test.js │ │ ├── realtime.test.js │ │ ├── saveRevisionJob.test.js │ │ ├── socket-events.test.js │ │ ├── updateNote.test.js │ │ └── utils.js │ └── testDoubles/ │ ├── ProcessQueueFake.js │ ├── loggerFake.js │ ├── otFake.js │ └── realtimeJobStub.js ├── utils/ │ └── string.js ├── webpack.common.js ├── webpack.dev.js ├── webpack.htmlexport.js └── webpack.prod.js