Gitlab Community Edition Instance

Commit 086e5346 authored by Gregor Thiem's avatar Gregor Thiem
Browse files

change ssh key

parent ac11018a
......@@ -19,7 +19,7 @@ jobs:
steps:
- uses: actions/checkout@v2
- name: Use Node.js 14
uses: actions/setup-node@v1
uses: actions/setup-node@v2
with:
node-version: 14
- name: Get yarn cache directory path
......@@ -39,11 +39,11 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [10.x, 12.x, 14.x, 15.x]
node-version: [12.x, 14.x, 15.x, 16.x]
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
- name: Get yarn cache directory path
......@@ -63,11 +63,11 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [10.x, 12.x, 14.x, 15.x]
node-version: [12.x, 14.x, 15.x, 16.x]
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
- name: Get yarn cache directory path
......
var path = require('path');
module.exports = {
'config': path.resolve('config.json'),
'migrations-path': path.resolve('lib', 'migrations'),
'models-path': path.resolve('lib', 'models'),
'url': 'change this'
}
\ No newline at end of file
......@@ -34,10 +34,10 @@ interactions with the project.
## Certificate of Origin
By contributing to this project you agree to the [Developer Certificate of
Origin (DCO)](docs/legal/developer-certificate-of-origin.txt). This document was created by the Linux Kernel community and is a
Origin (DCO)](docs/content/legal/developer-certificate-of-origin.txt). This document was created by the Linux Kernel community and is a
simple statement that you, as a contributor, have the legal right to make the
contribution.
The DCO is a legally binding statement, please [read it carefully](docs/legal/developer-certificate-of-origin.txt).
The DCO is a legally binding statement, please [read it carefully](docs/content/legal/developer-certificate-of-origin.txt).
If you can certify it, then just add a line to every git commit message:
......
![HedgeDoc Logo](docs/content/images/hedgedoc_logo_horizontal.svg)
![HedgeDoc Logo](docs/content/images/hedgedoc_logo_black.svg)
# HedgeDoc
......
'use strict'
// app
// external modules
var express = require('express')
var ejs = require('ejs')
var passport = require('passport')
var methodOverride = require('method-override')
var cookieParser = require('cookie-parser')
var compression = require('compression')
var session = require('express-session')
var SequelizeStore = require('connect-session-sequelize')(session.Store)
var fs = require('fs')
var path = require('path')
var morgan = require('morgan')
var passportSocketIo = require('passport.socketio')
var helmet = require('helmet')
var i18n = require('i18n')
var flash = require('connect-flash')
const express = require('express')
const ejs = require('ejs')
const passport = require('passport')
const methodOverride = require('method-override')
const cookieParser = require('cookie-parser')
const compression = require('compression')
const session = require('express-session')
const SequelizeStore = require('connect-session-sequelize')(session.Store)
const fs = require('fs')
const path = require('path')
const morgan = require('morgan')
const passportSocketIo = require('passport.socketio')
const helmet = require('helmet')
const i18n = require('i18n')
const flash = require('connect-flash')
const apiMetrics = require('prometheus-api-metrics')
// core
var config = require('./lib/config')
var logger = require('./lib/logger')
var errors = require('./lib/errors')
var models = require('./lib/models')
var csp = require('./lib/csp')
const config = require('./lib/config')
const logger = require('./lib/logger')
const errors = require('./lib/errors')
const models = require('./lib/models')
const csp = require('./lib/csp')
const metrics = require('./lib/prometheus')
const supportedLocalesList = Object.keys(require('./locales/_supported.json'))
// server setup
var app = express()
var server = null
const app = express()
let server = null
if (config.useSSL) {
var ca = (function () {
var i, len, results
results = []
const ca = (function () {
let i, len
const results = []
for (i = 0, len = config.sslCAPath.length; i < len; i++) {
results.push(fs.readFileSync(config.sslCAPath[i], 'utf8'))
}
return results
})()
var options = {
const options = {
key: fs.readFileSync(config.sslKeyPath, 'utf8'),
cert: fs.readFileSync(config.sslCertPath, 'utf8'),
ca: ca,
......@@ -60,18 +64,22 @@ if (!config.useSSL && config.protocolUseSSL) {
// logger
app.use(morgan('combined', {
'stream': logger.stream
stream: logger.stream
}))
// Register prometheus metrics endpoint
app.use(apiMetrics())
metrics.setupCustomPrometheusMetrics()
// socket io
var io = require('socket.io')(server, { cookie: false })
const io = require('socket.io')(server, { cookie: false })
io.engine.ws = new (require('ws').Server)({
noServer: true,
perMessageDeflate: false
})
// others
var realtime = require('./lib/realtime.js')
const realtime = require('./lib/realtime.js')
// assign socket io to realtime
realtime.io = io
......@@ -80,7 +88,7 @@ realtime.io = io
app.use(methodOverride('_method'))
// session store
var sessionStore = new SequelizeStore({
const sessionStore = new SequelizeStore({
db: models.sequelize
})
......@@ -120,7 +128,7 @@ if (config.csp.enable) {
}
i18n.configure({
locales: ['en', 'zh-CN', 'zh-TW', 'fr', 'de', 'ja', 'es', 'ca', 'el', 'pt', 'it', 'tr', 'ru', 'nl', 'hr', 'pl', 'uk', 'hi', 'sv', 'eo', 'da', 'ko', 'id', 'sr', 'vi', 'ar', 'cs', 'sk', 'ml'],
locales: supportedLocalesList,
cookie: 'locale',
indent: ' ', // this is the style poeditor.com exports it, this creates less churn
directory: path.join(__dirname, '/locales'),
......@@ -154,7 +162,7 @@ app.use(session({
}))
// session resumption
var tlsSessionStore = {}
const tlsSessionStore = {}
server.on('newSession', function (id, data, cb) {
tlsSessionStore[id.toString('hex')] = data
cb()
......@@ -246,9 +254,9 @@ io.sockets.on('connection', realtime.connection)
// listen
function startListen () {
var address
var listenCallback = function () {
var schema = config.useSSL ? 'HTTPS' : 'HTTP'
let address
const listenCallback = function () {
const schema = config.useSSL ? 'HTTPS' : 'HTTP'
logger.info('%s Server listening at %s', schema, address)
realtime.maintenance = false
}
......@@ -264,16 +272,19 @@ function startListen () {
}
// sync db then start listen
models.sequelize.sync().then(function () {
// check if realtime is ready
if (realtime.isReady()) {
models.Revision.checkAllNotesRevision(function (err, notes) {
if (err) throw new Error(err)
if (!notes || notes.length <= 0) return startListen()
})
} else {
throw new Error('server still not ready after db synced')
}
models.sequelize.authenticate().then(function () {
models.runMigrations().then(() => {
sessionStore.sync()
// check if realtime is ready
if (realtime.isReady()) {
models.Revision.checkAllNotesRevision(function (err, notes) {
if (err) throw new Error(err)
if (!notes || notes.length <= 0) return startListen()
})
} else {
throw new Error('server still not ready after db synced')
}
})
})
// log uncaught exception
......@@ -290,7 +301,7 @@ function handleTermSignals () {
realtime.maintenance = true
// disconnect all socket.io clients
Object.keys(io.sockets.sockets).forEach(function (key) {
var socket = io.sockets.sockets[key]
const socket = io.sockets.sockets[key]
// notify client server going into maintenance status
socket.emit('maintenance')
setTimeout(function () {
......@@ -298,9 +309,15 @@ function handleTermSignals () {
}, 0)
})
if (config.path) {
fs.unlink(config.path)
fs.unlink(config.path, err => {
if (err) {
logger.error(`Could not cleanup socket: ${err.message}`)
} else {
logger.info('Successfully cleaned up socket')
}
})
}
var checkCleanTimer = setInterval(function () {
const checkCleanTimer = setInterval(function () {
if (realtime.isReady()) {
models.Revision.checkAllNotesRevision(function (err, notes) {
if (err) return logger.error(err)
......
......@@ -2,18 +2,6 @@
set -e
cat << EOF > .sequelizerc
var path = require('path');
module.exports = {
'config': path.resolve('config.json'),
'migrations-path': path.resolve('lib', 'migrations'),
'models-path': path.resolve('lib', 'models'),
'url': process.env.DATABASE_URL
}
EOF
cat << EOF > config.json
{
......
......@@ -18,7 +18,7 @@ if (config.dbURL) {
const minioClient = new Minio.Client({
endPoint: config.minio.endPoint,
port: config.minio.port,
secure: config.minio.secure,
useSSL: config.minio.secure,
accessKey: config.minio.accessKey,
secretKey: config.minio.secretKey
});
......@@ -49,7 +49,7 @@ fs.readdir(config.uploadsPath, function (err, files) {
if (err) {
console.log('Unable to scan directory: ' + err);
process.exit();
}
}
files.forEach(function (file) {
key = path.join('uploads', file)
filePath = path.join(config.uploadsPath, file)
......
......@@ -23,7 +23,7 @@ fi
if version_lt "$(yarn --version)" '1.22.0'; then
cat << EOF
FATAL: Your Yarn version is outdated.
FATAL: Your Yarn version is not supported.
Please upgrade to version 1.22.0 or higher and try again.
See https://classic.yarnpkg.com/en/docs/install for instructions.
......@@ -31,11 +31,11 @@ EOF
exit 1
fi
if version_lt "$(node --version)" 'v10.13.0'; then
if version_lt "$(node --version)" 'v12.0.0'; then
cat << EOF
FATAL: Your Node.js version is outdated.
FATAL: Your Node.js version is not supported.
Please upgrade to version 10.13 or higher and try again.
Please upgrade to version 12 or higher and try again.
We recommend running the latest LTS release, see https://nodejs.org/en/about/releases/ for details.
EOF
exit 1
......@@ -46,10 +46,6 @@ if [ ! -f config.json ]; then
cp config.json.example config.json
fi
if [ ! -f .sequelizerc ]; then
cp .sequelizerc.example .sequelizerc
fi
echo "Installing packages..."
yarn install --pure-lockfile
yarn install --production=false --pure-lockfile
......@@ -58,10 +54,9 @@ cat << EOF
Edit the following config file to setup HedgeDoc server and client.
Read more info at https://github.com/hedgedoc/hedgedoc#configuration-files
Read more info at https://docs.hedgedoc.org/configuration/
* config.json -- HedgeDoc config
* .sequelizerc -- db config
EOF
# change directory back
......
......@@ -20,21 +20,21 @@ to `config.json` before filling in your own details.
## HedgeDoc basics
| config file | environment | **default** and example value | description |
| ------------------- | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| | `CMD_CONFIG_FILE` | **no default**, `/path/to/config.json` | optional override for the path to HedgeDoc's config file |
| `db` | | **`undefined`**, `{ "dialect": "sqlite", "storage": "./db.hedgedoc.sqlite" }` | set the db configs, [see more here](http://sequelize.readthedocs.org/en/latest/api/sequelize/) |
| `dbURL` | `CMD_DB_URL` | **`undefined`**, `postgres://username:password@localhost:5432/hedgedoc` or `mysql://username:password@localhost:3306/hedgedoc`| Set the db in URL style. If set, then the relevant `db` config entries will be overridden. |
| `loglevel` | `CMD_LOGLEVEL` | **`info`**, `debug` ... | Defines what kind of logs are provided to stdout. Available options: `debug`, `verbose`, `info`, `warn`, `error` |
| `forbiddenNoteIDs` | `CMD_FORBIDDEN_NOTE_IDS` | **`['robots.txt', 'favicon.ico', 'api', 'build', 'css', 'docs', 'fonts', 'js', 'uploads', 'vendor', 'views']`**, `['robots.txt']` or `'robots.txt'` | disallow creation of notes, even if `allowFreeUrl` or `CMD_ALLOW_FREEURL` is `true` |
| `imageUploadType` | `CMD_IMAGE_UPLOAD_TYPE` | **`filesystem`**, `imgur`, `s3`, `minio`, `azure`, `lutim` | Where to upload images. For S3, see our Image Upload Guides for [S3](guides/s3-image-upload.md) or [Minio](guides/minio-image-upload.md), also there's a whole section on their respective env vars below. |
| `sourceURL` | `CMD_SOURCE_URL` | **no default**, `https://github.com/hedgedoc/hedgedoc/tree/<current commit>` | Provides the link to the source code of HedgeDoc on the entry page (Please, make sure you change this when you run a modified version) |
| `tooBusyLag` | `CMD_TOOBUSY_LAG` | **`70`** | CPU time for one event loop tick until node throttles connections. (milliseconds) |
| `staticCacheTime` | | **`1 * 24 * 60 * 60 * 1000`** | static file cache time |
| `heartbeatInterval` | | **`5000`** | socket.io heartbeat interval |
| `heartbeatTimeout` | | **`10000`** | socket.io heartbeat timeout |
| `documentMaxLength` | | **`100000`** | note max length |
| `linkifyHeaderStyle` | | **`keep-case`**, `lower-case`, `gfm` | how is a header text converted into a link id |
| config file | environment | **default** and example value | description |
| -------------------- | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| | `CMD_CONFIG_FILE` | **no default**, `/path/to/config.json` | optional override for the path to HedgeDoc's config file |
| `db` | | **`undefined`**, `{ "dialect": "sqlite", "storage": "./db.hedgedoc.sqlite" }` | set the db configs, [see more here](https://sequelize.org/v5/manual/dialects.html) |
| `dbURL` | `CMD_DB_URL` | **`undefined`**, `postgres://username:password@localhost:5432/hedgedoc` or `mysql://username:password@localhost:3306/hedgedoc` | Set the db in URL style. If set, then the relevant `db` config entries will be overridden. |
| `loglevel` | `CMD_LOGLEVEL` | **`info`**, `debug` ... | Defines what kind of logs are provided to stdout. Available options: `debug`, `verbose`, `info`, `warn`, `error` |
| `forbiddenNoteIDs` | `CMD_FORBIDDEN_NOTE_IDS` | **`['robots.txt', 'favicon.ico', 'api', 'build', 'css', 'docs', 'fonts', 'js', 'uploads', 'vendor', 'views']`**, `['robots.txt']` or `'robots.txt'` | disallow creation of notes, even if `allowFreeUrl` or `CMD_ALLOW_FREEURL` is `true` |
| `imageUploadType` | `CMD_IMAGE_UPLOAD_TYPE` | **`filesystem`**, `imgur`, `s3`, `minio`, `azure`, `lutim` | Where to upload images. For S3, see our Image Upload Guides for [S3](guides/s3-image-upload.md) or [Minio](guides/minio-image-upload.md), also there's a whole section on their respective env vars below. |
| `sourceURL` | `CMD_SOURCE_URL` | **no default**, `https://github.com/hedgedoc/hedgedoc/tree/<current commit>` | Provides the link to the source code of HedgeDoc on the entry page (Please, make sure you change this when you run a modified version) |
| `tooBusyLag` | `CMD_TOOBUSY_LAG` | **`70`** | CPU time for one event loop tick until node throttles connections. (milliseconds) |
| `staticCacheTime` | | **`1 * 24 * 60 * 60 * 1000`** | static file cache time |
| `heartbeatInterval` | | **`5000`** | socket.io heartbeat interval |
| `heartbeatTimeout` | | **`10000`** | socket.io heartbeat timeout |
| `documentMaxLength` | | **`100000`** | note max length |
| `linkifyHeaderStyle` | | **`keep-case`**, `lower-case`, `gfm` | how is a header text converted into a link id |
## HedgeDoc paths stuff
......@@ -96,6 +96,7 @@ these are rarely used for various reasons.
| `allowAnonymous` | `CMD_ALLOW_ANONYMOUS` | **`true`** or `false` | Set to allow anonymous usage (default is `true`). |
| `allowAnonymousEdits` | `CMD_ALLOW_ANONYMOUS_EDITS` | **`false`** or `true` | If `allowAnonymous` is `false`: allow users to select `freely` permission, allowing guests to edit existing notes (default is `false`). |
| `allowFreeURL` | `CMD_ALLOW_FREEURL` | **`false`** or `true` | Set to allow new note creation by accessing a nonexistent note URL. This is the behavior familiar from [Etherpad](https://github.com/ether/etherpad-lite). |
| `requireFreeURLAuthentication` | `CMD_REQUIRE_FREEURL_AUTHENTICATION` | **`false`** or `true` | Set to require authentication for FreeURL mode style note creation. |
| `defaultPermission` | `CMD_DEFAULT_PERMISSION` | **`editable`**, `freely`, `limited`, `locked`, `protected` or `private` | Set notes default permission (only applied on signed-in users). |
| `sessionName` | | **`connect.sid`** | Cookie session name. |
| `sessionLife` | `CMD_SESSION_LIFE` | **`14 * 24 * 60 * 60 * 1000`**, `1209600000` (14 days) | Cookie session life time in milliseconds. |
......
......@@ -36,6 +36,7 @@ These endpoints return information about the current logged-in user and it's not
## HedgeDoc-server
These endpoints return information about the running HedgeDoc instance.
| Endpoint | HTTP-Method | Description |
| --------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `/status` | `GET` | **Returns the current status of the HedgeDoc instance.**<br>The data is returned as a JSON object containing the number of notes stored on the server, (distinct) online users and more. |
| Endpoint | HTTP-Method | Description |
| ---------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `/status` | `GET` | **Returns the current status of the HedgeDoc instance.**<br>The data is returned as a JSON object containing the number of notes stored on the server, (distinct) online users and more. |
| `/metrics` | `GET` | **Prometheus-compatible endpoint**<br>Exposes the same stats as `/status` in addition to various Node.js performance figures. Available since HedgeDoc 1.8 |
......@@ -3,7 +3,7 @@ openapi: 3.0.1
info:
title: HedgeDoc
description: HedgeDoc is an open source collaborative note editor. Several tasks of HedgeDoc can be automated through this API.
version: 1.7.2
version: 1.8.0-rc1
contact:
name: HedgeDoc on GitHub
url: https://github.com/hedgedoc/hedgedoc
......
......@@ -14,8 +14,8 @@ you want to match your IdP, you can use more configurations as below.
- `identifierFormat`: A format of unique id to identify the user of IdP, which is the format based on email address as
default. It is recommend that you use as below.
- urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress (default)
- urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
- `urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress` (default)
- `urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified`
- `config.json`:
```javascript
......
# Troubleshooting Migrations
In some cases, HedgeDoc might apply migrations without correctly saving the progress.
In these cases, HedgeDoc will refuse to start with “already exists”-errors like
`ERROR: type "enum_Notes_permission" already exists`.
To fix these issues, manual intervention in the database is required:
1. Make sure you have a way to edit the database directly. For SQLite, PostgreSQL and MariaDB/MySQL, you can use the
respective command-line tools `sqlite3`, `psql` and `mysql`.
2. Get the name of the failing migration and append `.js` to it.
For example, if you encounter this error
```
== 20180306150303-fix-enum: migrating =======
ERROR: type "enum_Notes_permission" already exists
```
the name of the failed migration would be `20180306150303-fix-enum.js`.
3. Make sure HedgeDoc does not run and insert the name into the `SequelizeMeta` table.
Ensure your database shell is connected to the HedgeDoc database. The SQL-statement may look like this:
```sql
INSERT INTO "SequelizeMeta" (name) VALUES ('20180306150303-fix-enum.js');
```
4. Start HedgeDoc again and observe if it starts correctly. It may be necessary to repeat this process
and insert multiple migrations into the `SequelizeMeta` table.
# Migrations and Notable Changes
## Migrating to 1.4.0
We dropped support for node 6 with this version. If you have any trouble running this version, please double check that you are running at least node 8!
## Migrating to 1.3.2
This is not a breaking change, but to stay up to date with the community
repository, you may need to update a few urls. This is not a breaking change.
See more at [issue #10](https://github.com/hedgedoc/hedgedoc/issues/10)
### Native setup using git
Change the upstream remote using `git remote set-url origin https://github.com/hedgedoc/hedgedoc.git`.
### Docker
When you use our [container repository](https://github.com/hedgedoc/container)
(which was previously `hedgedoc-container`) all you can simply run `git pull` and
your `docker-compose.yml` will be updated.
When you setup things yourself, make sure you use the new image:
[`quay.io/hedgedoc/hedgedoc`](https://quay.io/repository/hedgedoc/hedgedoc?tab=tags).
### Heroku
All you need to do is [disconnect GitHub](https://devcenter.heroku.com/articles/github-integration#disconnecting-from-github)
and [reconnect it](https://devcenter.heroku.com/articles/github-integration#enabling-github-integration)
with this new repository.
Or you can use our Heroku button and redeploy your instance and link the old
database again.
## Migrating to 1.1.0
We deprecated the older lower case config style and moved on to camel case style. Please have a look at the current `config.json.example` and check the warnings on startup.
*Notice: This is not a breaking change right now but will be in the future*
## Migrating to 0.5.0
[migration-to-0.5.0 migration tool](https://github.com/hackmdio/migration-to-0.5.0)
We don't use LZString to compress socket.io data and DB data after version 0.5.0.
Please run the migration tool if you're upgrading from the old version.
## Migrating to 0.4.0
[migration-to-0.4.0 migration tool](https://github.com/hackmdio/migration-to-0.4.0)
We've dropped MongoDB after version 0.4.0.
So here is the migration tool for you to transfer the old DB data to the new DB.
This tool is also used for official service.
<svg xmlns="http://www.w3.org/2000/svg" width="786" height="197.266" clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2"><path d="M248.07 58v79.68h9.297v-35.058h45.416v35.058h9.296V58h-9.296v36.123h-45.416V58zm187.351 0v33.518c-2.372-2.513-5.223-4.478-8.552-5.895-3.33-1.417-6.941-2.125-10.836-2.125-5.134 0-9.73 1.193-13.785 3.584-4.054 2.392-7.243 5.667-9.56 9.828-2.321 4.163-3.48 8.897-3.48 14.208 0 5.314 1.159 10.051 3.48 14.21 2.317 4.161 5.506 7.437 9.56 9.828 4.055 2.391 8.65 3.587 13.785 3.587 4.001 0 7.702-.753 11.102-2.258 3.4-1.506 6.285-3.568 8.659-6.19l.479 7.385h7.913V58zm157.87.106v79.68h21.673c15.653 0 27.676-3.488 36.068-10.466 8.392-6.974 12.59-16.803 12.59-29.48 0-12.642-4.198-22.425-12.59-29.348-8.392-6.923-20.415-10.386-36.068-10.386zm9.296 8.5h12.377c12.606 0 22.275 2.719 29.004 8.153 6.728 5.438 10.091 13.13 10.091 23.082 0 9.985-3.363 17.724-10.09 23.212-6.73 5.49-16.399 8.234-29.005 8.234h-12.377zm-118.295 16.89c-5.134 0-9.73 1.196-13.784 3.587-4.055 2.391-7.244 5.666-9.562 9.827-2.32 4.161-3.48 8.897-3.48 14.21 0 5.312 1.16 10.048 3.48 14.21 2.318 4.16 5.507 7.435 9.562 9.826 4.054 2.391 8.65 3.586 13.784 3.586 3.895 0 7.507-.709 10.837-2.125 3.328-1.416 6.179-3.38 8.551-5.895v2.76c0 7.225-1.815 13.005-5.444 17.345-3.632 4.336-9.216 6.505-16.759 6.505-2.975 0-5.737-.487-8.286-1.46-2.55-.975-4.818-2.329-6.8-4.063l-4.355 7.33c2.619 1.948 5.558 3.46 8.816 4.541 3.258 1.082 6.745 1.62 10.465 1.62 6.763 0 12.457-1.373 17.08-4.116 4.62-2.745 8.116-6.578 10.49-11.5 2.372-4.923 3.558-10.66 3.558-17.211V84.559h-7.915l-.479 7.385c-2.372-2.621-5.258-4.684-8.658-6.19-3.399-1.505-7.1-2.257-11.1-2.257zm281.895 0c-5.312 0-10.049 1.196-14.21 3.587-4.16 2.39-7.436 5.666-9.828 9.828-2.389 4.161-3.584 8.896-3.584 14.208 0 5.313 1.195 10.05 3.584 14.21 2.392 4.162 5.667 7.437 9.828 9.826 4.161 2.391 8.898 3.587 14.21 3.587 4.001 0 7.683-.69 11.048-2.072 3.364-1.382 6.286-3.311 8.765-5.79l-6.11-6.056c-1.665 1.842-3.665 3.293-6.001 4.355-2.338 1.063-4.905 1.595-7.702 1.595-3.577 0-6.765-.85-9.562-2.551-2.798-1.7-5.003-4.037-6.614-7.01-1.611-2.975-2.416-6.34-2.416-10.094 0-3.788.805-7.162 2.416-10.12 1.61-2.956 3.816-5.284 6.614-6.983 2.797-1.701 5.985-2.55 9.562-2.55 2.797 0 5.364.522 7.702 1.565a17.433 17.433 0 0 1 6.001 4.384l6.11-6.11c-2.479-2.442-5.4-4.355-8.765-5.736-3.365-1.382-7.047-2.072-11.048-2.072zm-413.42.002c-5.24 0-9.932 1.188-14.076 3.56-4.144 2.373-7.402 5.623-9.774 9.748-2.372 4.125-3.56 8.808-3.56 14.05 0 5.384 1.267 10.18 3.8 14.395 2.53 4.214 6.027 7.516 10.49 9.907 4.462 2.39 15.298 3.585 15.298 3.585 3.577 0 7.286-.602 11.13-1.807 3.841-1.204 7.692-3.416 11.552-6.64l-5.152-6.586c-2.622 2.479-5.525 4.276-8.71 5.392-3.19 1.114-6.216 1.673-9.086 1.673-5.17 0-9.588-1.514-13.253-4.54-3.665-3.03-5.94-6.9-6.825-11.61h45.045v-3.557c0-5.347-1.152-10.094-3.454-14.236-2.302-4.144-5.47-7.401-9.507-9.775-4.038-2.37-8.676-3.559-13.918-3.559zm200.366 0c-5.241 0-9.933 1.188-14.076 3.56-4.144 2.373-7.402 5.623-9.774 9.748-2.373 4.125-3.56 8.808-3.56 14.05 0 5.384 1.265 10.18 3.799 14.395 2.53 4.214 6.029 7.516 10.49 9.907 4.462 2.39 9.562 3.585 15.299 3.585 3.577 0 7.285-.602 11.128-1.807 3.842-1.204 7.693-3.416 11.554-6.64l-5.154-6.586c-2.62 2.479-5.523 4.276-8.71 5.392-3.187 1.114-6.215 1.673-9.084 1.673-5.17 0-9.588-1.514-13.253-4.54-3.665-3.03-5.94-6.9-6.826-11.61h45.045v-3.557c0-5.347-1.151-10.094-3.453-14.236-2.302-4.144-5.471-7.401-9.508-9.775-4.038-2.37-8.675-3.559-13.917-3.559zm148.248 0c-5.312 0-10.047 1.194-14.208 3.585-4.162 2.391-7.438 5.667-9.829 9.828-2.389 4.16-3.584 8.897-3.584 14.208 0 5.313 1.195 10.05 3.584 14.21 2.392 4.162 5.667 7.437 9.83 9.828 4.16 2.39 8.895 3.585 14.207 3.585 5.311 0 10.048-1.194 14.21-3.585 4.16-2.391 7.435-5.666 9.826-9.827 2.391-4.161 3.586-8.898 3.586-14.211 0-5.311-1.195-10.047-3.586-14.208-2.39-4.161-5.666-7.437-9.827-9.828-4.16-2.391-8.898-3.585-14.209-3.585zM485.09 91.464c3.576 0 6.764.85 9.56 2.552 2.799 1.699 5.004 4.029 6.614 6.983 1.612 2.958 2.417 6.332 2.417 10.12 0 3.754-.805 7.118-2.417 10.093-1.61 2.975-3.815 5.311-6.613 7.012-2.797 1.7-5.985 2.549-9.561 2.549-3.577 0-6.765-.85-9.562-2.549-2.798-1.7-5.002-4.037-6.612-7.012-1.613-2.975-2.418-6.339-2.418-10.093 0-3.788.805-7.162 2.418-10.12 1.61-2.954 3.814-5.284 6.612-6.983 2.797-1.701 5.985-2.552 9.562-2.552zm-68.26.001c3.578 0 6.766.85 9.562 2.55 2.798 1.7 5.002 4.029 6.614 6.985 1.61 2.957 2.416 6.331 2.416 10.118 0 3.754-.806 7.118-2.416 10.093-1.612 2.975-3.816 5.313-6.614 7.012-2.796 1.701-5.984 2.55-9.562 2.55-3.577 0-6.764-.849-9.56-2.55-2.798-1.7-5.003-4.037-6.614-7.012-1.611-2.975-2.417-6.339-2.417-10.093 0-3.787.806-7.16 2.417-10.118 1.61-2.956 3.816-5.285 6.614-6.986 2.796-1.699 5.983-2.549 9.56-2.549zm-64.114 0c4.638 0 8.57 1.46 11.792 4.384 3.222 2.922 5.222 6.7 6.002 11.34h-36.015c.78-4.567 2.834-8.33 6.163-11.288 3.328-2.956 7.348-4.435 12.058-4.435zm200.366 0c4.638 0 8.568 1.46 11.79 4.384 3.222 2.922 5.224 6.7 6.003 11.34H534.86c.779-4.567 2.833-8.33 6.162-11.288 3.328-2.956 7.348-4.435 12.059-4.435zm148.3 0c3.576 0 6.766.85 9.562 2.55 2.798 1.701 5.002 4.03 6.614 6.986 1.61 2.956 2.416 6.33 2.416 10.118 0 3.754-.806 7.119-2.416 10.094-1.612 2.974-3.816 5.31-6.614 7.011-2.796 1.7-5.986 2.55-9.562 2.55-3.577 0-6.764-.85-9.56-2.55-2.798-1.7-5.004-4.037-6.614-7.011-1.613-2.975-2.417-6.34-2.417-10.094 0-3.789.804-7.162 2.417-10.118 1.61-2.956 3.816-5.285 6.613-6.986 2.797-1.7 5.984-2.55 9.561-2.55z" fill-rule="nonzero"/><path d="m187.345 108.66 9.992-9.992-9.992-9.992 7.517-11.963-11.964-7.518 4.667-13.337-13.336-4.667 1.581-14.04-14.04-1.583-1.583-14.042-14.04 1.582-4.668-13.337-13.336 4.666-7.52-11.963L108.66 9.99 98.67 0l-9.992 9.992-11.964-7.517-7.517 11.963L55.86 9.771l-4.667 13.337-14.041-1.583-1.582 14.041-14.04 1.582 1.581 14.04-13.338 4.668 4.667 13.337L2.475 76.71l7.518 11.966L0 98.668l9.992 9.993-7.517 11.964 11.964 7.517-4.667 13.337 13.338 4.668-1.582 14.039 14.04 1.583 1.583 14.04 14.041-1.581 4.667 13.335 13.336-4.665 7.518 11.964 11.963-7.518 9.992 9.899 9.992-9.896 11.964 7.517 7.517-11.966 13.338 4.668 4.666-13.337 14.042 1.581 1.581-14.041 14.042-1.582-1.583-14.04 13.338-4.668-4.667-13.338 11.964-7.517z" fill="#b51f08" fill-rule="nonzero"/><path d="M167.114 114.463c0-19.312-15.655-34.967-34.967-34.967-9.592 0-18.282 3.865-24.599 10.121l-.004-.004-8.909 8.91-7.285-7.285c-6.409-7.312-15.81-11.934-26.296-11.934-19.313 0-34.968 15.655-34.968 34.967 0 10.092 4.28 19.178 11.117 25.56l57.466 57.435 56.196-56.233c7.022-6.608 12.25-15.934 12.25-26.57" fill="#fdd49a" fill-rule="nonzero"/><path d="m98.635 98.522-7.285-7.284c-6.41-7.312-15.81-11.935-26.297-11.935-19.312 0-34.967 15.656-34.967 34.967 0 10.092 4.28 19.178 11.117 25.56l57.466 57.436" fill="url(#a)" fill-rule="nonzero"/><path d="m98.669 197.266-.034-98.744" fill="none"/><path d="M108.65 187.336a14.075 14.075 0 0 0-10.001-4.157 14.075 14.075 0 0 0-10.002 4.157c.04 5.49 4.502 9.927 10.001 9.927 5.5 0 9.962-4.439 10.003-9.927M86.967 126.87a7.643 7.643 0 1 1-15.287 0 7.643 7.643 0 1 1 15.287 0" fill="#010007" fill-rule="nonzero"/><path d="M84.345 125.724a2.116 2.116 0 0 1-2.118 2.117 2.117 2.117 0 1 1 0-4.236 2.12 2.12 0 0 1 2.118 2.12" fill="#fffffa" fill-rule="nonzero"/><path d="M125.732 126.87a7.644 7.644 0 1 1-15.288 0 7.644 7.644 0 1 1 15.288 0" fill="#010007" fill-rule="nonzero"/><path d="M123.11 125.724c0 1.172-.95 2.117-2.118 2.117a2.117 2.117 0 1 1 0-4.236 2.12 2.12 0 0 1 2.118 2.12" fill="#fffffa" fill-rule="nonzero"/><defs><linearGradient id="a" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="rotate(-64.537 160.23 25.078) scale(61.7694)"><stop offset="0" stop-color="#fdd49a"/><stop offset="1" stop-color="#dca055"/></linearGradient></defs></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" width="786" height="197.266" clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2"><path d="M248.07 58v79.68h9.297v-35.058h45.416v35.058h9.296V58h-9.296v36.123h-45.416V58zm187.351 0v33.518c-2.372-2.513-5.223-4.478-8.552-5.895-3.33-1.417-6.941-2.125-10.836-2.125-5.134 0-9.73 1.193-13.785 3.584-4.054 2.392-7.243 5.667-9.56 9.828-2.321 4.163-3.48 8.897-3.48 14.208 0 5.314 1.159 10.051 3.48 14.21 2.317 4.161 5.506 7.437 9.56 9.828 4.055 2.391 8.65 3.587 13.785 3.587 4.001 0 7.702-.753 11.102-2.258 3.4-1.506 6.285-3.568 8.659-6.19l.479 7.385h7.913V58zm157.87.106v79.68h21.673c15.653 0 27.676-3.488 36.068-10.466 8.392-6.974 12.59-16.803 12.59-29.48 0-12.642-4.198-22.425-12.59-29.348-8.392-6.923-20.415-10.386-36.068-10.386zm9.296 8.5h12.377c12.606 0 22.275 2.719 29.004 8.153 6.728 5.438 10.091 13.13 10.091 23.082 0 9.985-3.363 17.724-10.09 23.212-6.73 5.49-16.399 8.234-29.005 8.234h-12.377zm-118.295 16.89c-5.134 0-9.73 1.196-13.784 3.587-4.055 2.391-7.244 5.666-9.562 9.827-2.32 4.161-3.48 8.897-3.48 14.21 0 5.312 1.16 10.048 3.48 14.21 2.318 4.16 5.507 7.435 9.562 9.826 4.054 2.391 8.65 3.586 13.784 3.586 3.895 0 7.507-.709 10.837-2.125 3.328-1.416 6.179-3.38 8.551-5.895v2.76c0 7.225-1.815 13.005-5.444 17.345-3.632 4.336-9.216 6.505-16.759 6.505-2.975 0-5.737-.487-8.286-1.46-2.55-.975-4.818-2.329-6.8-4.063l-4.355 7.33c2.619 1.948 5.558 3.46 8.816 4.541 3.258 1.082 6.745 1.62 10.465 1.62 6.763 0 12.457-1.373 17.08-4.116 4.62-2.745 8.116-6.578 10.49-11.5 2.372-4.923 3.558-10.66 3.558-17.211V84.559h-7.915l-.479 7.385c-2.372-2.621-5.258-4.684-8.658-6.19-3.399-1.505-7.1-2.257-11.1-2.257zm281.895 0c-5.312 0-10.049 1.196-14.21 3.587-4.16 2.39-7.436 5.666-9.828 9.828-2.389 4.161-3.584 8.896-3.584 14.208 0 5.313 1.195 10.05 3.584 14.21 2.392 4.162 5.667 7.437 9.828 9.826 4.161 2.391 8.898 3.587 14.21 3.587 4.001 0 7.683-.69 11.048-2.072 3.364-1.382 6.286-3.311 8.765-5.79l-6.11-6.056c-1.665 1.842-3.665 3.293-6.001 4.355-2.338 1.063-4.905 1.595-7.702 1.595-3.577 0-6.765-.85-9.562-2.551-2.798-1.7-5.003-4.037-6.614-7.01-1.611-2.975-2.416-6.34-2.416-10.094 0-3.788.805-7.162 2.416-10.12 1.61-2.956 3.816-5.284 6.614-6.983 2.797-1.701 5.985-2.55 9.562-2.55 2.797 0 5.364.522 7.702 1.565a17.433 17.433 0 016.001 4.384l6.11-6.11c-2.479-2.442-5.4-4.355-8.765-5.736-3.365-1.382-7.047-2.072-11.048-2.072zm-413.42.002c-5.24 0-9.932 1.188-14.076 3.56-4.144 2.373-7.402 5.623-9.774 9.748-2.372 4.125-3.56 8.808-3.56 14.05 0 5.384 1.267 10.18 3.8 14.395 2.53 4.214 6.027 7.516 10.49 9.907 4.462 2.39 15.298 3.585 15.298 3.585 3.577 0 7.286-.602 11.13-1.807 3.841-1.204 7.692-3.416 11.552-6.64l-5.152-6.586c-2.622 2.479-5.525 4.276-8.71 5.392-3.19 1.114-6.216 1.673-9.086 1.673-5.17 0-9.588-1.514-13.253-4.54-3.665-3.03-5.94-6.9-6.825-11.61h45.045v-3.557c0-5.347-1.152-10.094-3.454-14.236-2.302-4.144-5.47-7.401-9.507-9.775-4.038-2.37-8.676-3.559-13.918-3.559zm200.366 0c-5.241 0-9.933 1.188-14.076 3.56-4.144 2.373-7.402 5.623-9.774 9.748-2.373 4.125-3.56 8.808-3.56 14.05 0 5.384 1.265 10.18 3.799 14.395 2.53 4.214 6.029 7.516 10.49 9.907 4.462 2.39 9.562 3.585 15.299 3.585 3.577 0 7.285-.602 11.128-1.807 3.842-1.204 7.693-3.416 11.554-6.64l-5.154-6.586c-2.62 2.479-5.523 4.276-8.71 5.392-3.187 1.114-6.215 1.673-9.084 1.673-5.17 0-9.588-1.514-13.253-4.54-3.665-3.03-5.94-6.9-6.826-11.61h45.045v-3.557c0-5.347-1.151-10.094-3.453-14.236-2.302-4.144-5.471-7.401-9.508-9.775-4.038-2.37-8.675-3.559-13.917-3.559zm148.248 0c-5.312 0-10.047 1.194-14.208 3.585-4.162 2.391-7.438 5.667-9.829 9.828-2.389 4.16-3.584 8.897-3.584 14.208 0 5.313 1.195 10.05 3.584 14.21 2.392 4.162 5.667 7.437 9.83 9.828 4.16 2.39 8.895 3.585 14.207 3.585 5.311 0 10.048-1.194 14.21-3.585 4.16-2.391 7.435-5.666 9.826-9.827 2.391-4.161 3.586-8.898 3.586-14.211 0-5.311-1.195-10.047-3.586-14.208-2.39-4.161-5.666-7.437-9.827-9.828-4.16-2.391-8.898-3.585-14.209-3.585zM485.09 91.464c3.576 0 6.764.85 9.56 2.552 2.799 1.699 5.004 4.029 6.614 6.983 1.612 2.958 2.417 6.332 2.417 10.12 0 3.754-.805 7.118-2.417 10.093-1.61 2.975-3.815 5.311-6.613 7.012-2.797 1.7-5.985 2.549-9.561 2.549-3.577 0-6.765-.85-9.562-2.549-2.798-1.7-5.002-4.037-6.612-7.012-1.613-2.975-2.418-6.339-2.418-10.093 0-3.788.805-7.162 2.418-10.12 1.61-2.954 3.814-5.284 6.612-6.983 2.797-1.701 5.985-2.552 9.562-2.552zm-68.26.001c3.578 0 6.766.85 9.562 2.55 2.798 1.7 5.002 4.029 6.614 6.985 1.61 2.957 2.416 6.331 2.416 10.118 0 3.754-.806 7.118-2.416 10.093-1.612 2.975-3.816 5.313-6.614 7.012-2.796 1.701-5.984 2.55-9.562 2.55-3.577 0-6.764-.849-9.56-2.55-2.798-1.7-5.003-4.037-6.614-7.012-1.611-2.975-2.417-6.339-2.417-10.093 0-3.787.806-7.16 2.417-10.118 1.61-2.956 3.816-5.285 6.614-6.986 2.796-1.699 5.983-2.549 9.56-2.549zm-64.114 0c4.638 0 8.57 1.46 11.792 4.384 3.222 2.922 5.222 6.7 6.002 11.34h-36.015c.78-4.567 2.834-8.33 6.163-11.288 3.328-2.956 7.348-4.435 12.058-4.435zm200.366 0c4.638 0 8.568 1.46 11.79 4.384 3.222 2.922 5.224 6.7 6.003 11.34H534.86c.779-4.567 2.833-8.33 6.162-11.288 3.328-2.956 7.348-4.435 12.059-4.435zm148.3 0c3.576 0 6.766.85 9.562 2.55 2.798 1.701 5.002 4.03 6.614 6.986 1.61 2.956 2.416 6.33 2.416 10.118 0 3.754-.806 7.119-2.416 10.094-1.612 2.974-3.816 5.31-6.614 7.011-2.796 1.7-5.986 2.55-9.562 2.55-3.577 0-6.764-.85-9.56-2.55-2.798-1.7-5.004-4.037-6.614-7.011-1.613-2.975-2.417-6.34-2.417-10.094 0-3.789.804-7.162 2.417-10.118 1.61-2.956 3.816-5.285 6.613-6.986 2.797-1.7 5.984-2.55 9.561-2.55z" fill-rule="nonzero"/><path d="M187.345 108.66l9.992-9.992-9.992-9.992 7.517-11.963-11.964-7.518 4.667-13.337-13.336-4.667 1.581-14.04-14.04-1.583-1.583-14.042-14.04 1.582-4.668-13.337-13.336 4.666-7.52-11.963L108.66 9.99 98.67 0l-9.992 9.992-11.964-7.517-7.517 11.963L55.86 9.771l-4.667 13.337-14.041-1.583-1.582 14.041-14.04 1.582 1.581 14.04-13.338 4.668 4.667 13.337L2.475 76.71l7.518 11.966L0 98.668l9.992 9.993-7.517 11.964 11.964 7.517-4.667 13.337 13.338 4.668-1.582 14.039 14.04 1.583 1.583 14.04 14.041-1.581 4.667 13.335 13.336-4.665 7.518 11.964 11.963-7.518 9.992 9.899 9.992-9.896 11.964 7.517 7.517-11.966 13.338 4.668 4.666-13.337 14.042 1.581 1.581-14.041 14.042-1.582-1.583-14.04 13.338-4.668-4.667-13.338 11.964-7.517z" fill="#b51f08" fill-rule="nonzero"/><path d="M167.114 114.463c0-19.312-15.655-34.967-34.967-34.967-9.592 0-18.282 3.865-24.599 10.121l-.004-.004-8.909 8.91-7.285-7.285c-6.409-7.312-15.81-11.934-26.296-11.934-19.313 0-34.968 15.655-34.968 34.967 0 10.092 4.28 19.178 11.117 25.56l57.466 57.435 56.196-56.233c7.022-6.608 12.25-15.934 12.25-26.57" fill="#fdd49a" fill-rule="nonzero"/><path d="M98.635 98.522l-7.285-7.284c-6.41-7.312-15.81-11.935-26.297-11.935-19.312 0-34.967 15.656-34.967 34.967 0 10.092 4.28 19.178 11.117 25.56l57.466 57.436" fill="url(#_Linear1)" fill-rule="nonzero"/><path d="M98.669 197.266l-.034-98.744" fill="none"/><path d="M108.65 187.336a14.075 14.075 0 00-10.001-4.157 14.075 14.075 0 00-10.002 4.157c.04 5.49 4.502 9.927 10.001 9.927 5.5 0 9.962-4.439 10.003-9.927M86.967 126.87a7.643 7.643 0 11-15.287 0 7.643 7.643 0 1115.287 0" fill="#010007" fill-rule="nonzero"/><path d="M84.345 125.724a2.116 2.116 0 01-2.118 2.117 2.117 2.117 0 110-4.236 2.12 2.12 0 012.118 2.12" fill="#fffffa" fill-rule="nonzero"/><path d="M125.732 126.87a7.644 7.644 0 11-15.288 0 7.644 7.644 0 1115.288 0" fill="#010007" fill-rule="nonzero"/><path d="M123.11 125.724c0 1.172-.95 2.117-2.118 2.117a2.117 2.117 0 110-4.236 2.12 2.12 0 012.118 2.12" fill="#fffffa" fill-rule="nonzero"/><defs id="defs77"><linearGradient id="_Linear1" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="rotate(-64.537 160.23 25.078) scale(61.7694)"><stop offset="0" id="stop72" stop-color="#fdd49a" stop-opacity="1"/><stop offset="1" id="stop74" stop-color="#dca055" stop-opacity="1"/></linearGradient></defs></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" width="786" height="197.266" clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2"><path d="M248.07 58v79.68h9.297v-35.058h45.416v35.058h9.296V58h-9.296v36.123h-45.416V58zm187.351 0v33.518c-2.372-2.513-5.223-4.478-8.552-5.895-3.33-1.417-6.941-2.125-10.836-2.125-5.134 0-9.73 1.193-13.785 3.584-4.054 2.392-7.243 5.667-9.56 9.828-2.321 4.163-3.48 8.897-3.48 14.208 0 5.314 1.159 10.051 3.48 14.21 2.317 4.161 5.506 7.437 9.56 9.828 4.055 2.391 8.65 3.587 13.785 3.587 4.001 0 7.702-.753 11.102-2.258 3.4-1.506 6.285-3.568 8.659-6.19l.479 7.385h7.913V58zm157.87.106v79.68h21.673c15.653 0 27.676-3.488 36.068-10.466 8.392-6.974 12.59-16.803 12.59-29.48 0-12.642-4.198-22.425-12.59-29.348-8.392-6.923-20.415-10.386-36.068-10.386zm9.296 8.5h12.377c12.606 0 22.275 2.719 29.004 8.153 6.728 5.438 10.091 13.13 10.091 23.082 0 9.985-3.363 17.724-10.09 23.212-6.73 5.49-16.399 8.234-29.005 8.234h-12.377zm-118.295 16.89c-5.134 0-9.73 1.196-13.784 3.587-4.055 2.391-7.244 5.666-9.562 9.827-2.32 4.161-3.48 8.897-3.48 14.21 0 5.312 1.16 10.048 3.48 14.21 2.318 4.16 5.507 7.435 9.562 9.826 4.054 2.391 8.65 3.586 13.784 3.586 3.895 0 7.507-.709 10.837-2.125 3.328-1.416 6.179-3.38 8.551-5.895v2.76c0 7.225-1.815 13.005-5.444 17.345-3.632 4.336-9.216 6.505-16.759 6.505-2.975 0-5.737-.487-8.286-1.46-2.55-.975-4.818-2.329-6.8-4.063l-4.355 7.33c2.619 1.948 5.558 3.46 8.816 4.541 3.258 1.082 6.745 1.62 10.465 1.62 6.763 0 12.457-1.373 17.08-4.116 4.62-2.745 8.116-6.578 10.49-11.5 2.372-4.923 3.558-10.66 3.558-17.211V84.559h-7.915l-.479 7.385c-2.372-2.621-5.258-4.684-8.658-6.19-3.399-1.505-7.1-2.257-11.1-2.257zm281.895 0c-5.312 0-10.049 1.196-14.21 3.587-4.16 2.39-7.436 5.666-9.828 9.828-2.389 4.161-3.584 8.896-3.584 14.208 0 5.313 1.195 10.05 3.584 14.21 2.392 4.162 5.667 7.437 9.828 9.826 4.161 2.391 8.898 3.587 14.21 3.587 4.001 0 7.683-.69 11.048-2.072 3.364-1.382 6.286-3.311 8.765-5.79l-6.11-6.056c-1.665 1.842-3.665 3.293-6.001 4.355-2.338 1.063-4.905 1.595-7.702 1.595-3.577 0-6.765-.85-9.562-2.551-2.798-1.7-5.003-4.037-6.614-7.01-1.611-2.975-2.416-6.34-2.416-10.094 0-3.788.805-7.162 2.416-10.12 1.61-2.956 3.816-5.284 6.614-6.983 2.797-1.701 5.985-2.55 9.562-2.55 2.797 0 5.364.522 7.702 1.565a17.433 17.433 0 0 1 6.001 4.384l6.11-6.11c-2.479-2.442-5.4-4.355-8.765-5.736-3.365-1.382-7.047-2.072-11.048-2.072zm-413.42.002c-5.24 0-9.932 1.188-14.076 3.56-4.144 2.373-7.402 5.623-9.774 9.748-2.372 4.125-3.56 8.808-3.56 14.05 0 5.384 1.267 10.18 3.8 14.395 2.53 4.214 6.027 7.516 10.49 9.907 4.462 2.39 15.298 3.585 15.298 3.585 3.577 0 7.286-.602 11.13-1.807 3.841-1.204 7.692-3.416 11.552-6.64l-5.152-6.586c-2.622 2.479-5.525 4.276-8.71 5.392-3.19 1.114-6.216 1.673-9.086 1.673-5.17 0-9.588-1.514-13.253-4.54-3.665-3.03-5.94-6.9-6.825-11.61h45.045v-3.557c0-5.347-1.152-10.094-3.454-14.236-2.302-4.144-5.47-7.401-9.507-9.775-4.038-2.37-8.676-3.559-13.918-3.559zm200.366 0c-5.241 0-9.933 1.188-14.076 3.56-4.144 2.373-7.402 5.623-9.774 9.748-2.373 4.125-3.56 8.808-3.56 14.05 0 5.384 1.265 10.18 3.799 14.395 2.53 4.214 6.029 7.516 10.49 9.907 4.462 2.39 9.562 3.585 15.299 3.585 3.577 0 7.285-.602 11.128-1.807 3.842-1.204 7.693-3.416 11.554-6.64l-5.154-6.586c-2.62 2.479-5.523 4.276-8.71 5.392-3.187 1.114-6.215 1.673-9.084 1.673-5.17 0-9.588-1.514-13.253-4.54-3.665-3.03-5.94-6.9-6.826-11.61h45.045v-3.557c0-5.347-1.151-10.094-3.453-14.236-2.302-4.144-5.471-7.401-9.508-9.775-4.038-2.37-8.675-3.559-13.917-3.559zm148.248 0c-5.312 0-10.047 1.194-14.208 3.585-4.162 2.391-7.438 5.667-9.829 9.828-2.389 4.16-3.584 8.897-3.584 14.208 0 5.313 1.195 10.05 3.584 14.21 2.392 4.162 5.667 7.437 9.83 9.828 4.16 2.39 8.895 3.585 14.207 3.585 5.311 0 10.048-1.194 14.21-3.585 4.16-2.391 7.435-5.666 9.826-9.827 2.391-4.161 3.586-8.898 3.586-14.211 0-5.311-1.195-10.047-3.586-14.208-2.39-4.161-5.666-7.437-9.827-9.828-4.16-2.391-8.898-3.585-14.209-3.585zM485.09 91.464c3.576 0 6.764.85 9.56 2.552 2.799 1.699 5.004 4.029 6.614 6.983 1.612 2.958 2.417 6.332 2.417 10.12 0 3.754-.805 7.118-2.417 10.093-1.61 2.975-3.815 5.311-6.613 7.012-2.797 1.7-5.985 2.549-9.561 2.549-3.577 0-6.765-.85-9.562-2.549-2.798-1.7-5.002-4.037-6.612-7.012-1.613-2.975-2.418-6.339-2.418-10.093 0-3.788.805-7.162 2.418-10.12 1.61-2.954 3.814-5.284 6.612-6.983 2.797-1.701 5.985-2.552 9.562-2.552zm-68.26.001c3.578 0 6.766.85 9.562 2.55 2.798 1.7 5.002 4.029 6.614 6.985 1.61 2.957 2.416 6.331 2.416 10.118 0 3.754-.806 7.118-2.416 10.093-1.612 2.975-3.816 5.313-6.614 7.012-2.796 1.701-5.984 2.55-9.562 2.55-3.577 0-6.764-.849-9.56-2.55-2.798-1.7-5.003-4.037-6.614-7.012-1.611-2.975-2.417-6.339-2.417-10.093 0-3.787.806-7.16 2.417-10.118 1.61-2.956 3.816-5.285 6.614-6.986 2.796-1.699 5.983-2.549 9.56-2.549zm-64.114 0c4.638 0 8.57 1.46 11.792 4.384 3.222 2.922 5.222 6.7 6.002 11.34h-36.015c.78-4.567 2.834-8.33 6.163-11.288 3.328-2.956 7.348-4.435 12.058-4.435zm200.366 0c4.638 0 8.568 1.46 11.79 4.384 3.222 2.922 5.224 6.7 6.003 11.34H534.86c.779-4.567 2.833-8.33 6.162-11.288 3.328-2.956 7.348-4.435 12.059-4.435zm148.3 0c3.576 0 6.766.85 9.562 2.55 2.798 1.701 5.002 4.03 6.614 6.986 1.61 2.956 2.416 6.33 2.416 10.118 0 3.754-.806 7.119-2.416 10.094-1.612 2.974-3.816 5.31-6.614 7.011-2.796 1.7-5.986 2.55-9.562 2.55-3.577 0-6.764-.85-9.56-2.55-2.798-1.7-5.004-4.037-6.614-7.011-1.613-2.975-2.417-6.34-2.417-10.094 0-3.789.804-7.162 2.417-10.118 1.61-2.956 3.816-5.285 6.613-6.986 2.797-1.7 5.984-2.55 9.561-2.55z" fill-rule="nonzero" style="fill:#cfcac9;fill-opacity:1"/><path d="m187.345 108.66 9.992-9.992-9.992-9.992 7.517-11.963-11.964-7.518 4.667-13.337-13.336-4.667 1.581-14.04-14.04-1.583-1.583-14.042-14.04 1.582-4.668-13.337-13.336 4.666-7.52-11.963L108.66 9.99 98.67 0l-9.992 9.992-11.964-7.517-7.517 11.963L55.86 9.771l-4.667 13.337-14.041-1.583-1.582 14.041-14.04 1.582 1.581 14.04-13.338 4.668 4.667 13.337L2.475 76.71l7.518 11.966L0 98.668l9.992 9.993-7.517 11.964 11.964 7.517-4.667 13.337 13.338 4.668-1.582 14.039 14.04 1.583 1.583 14.04 14.041-1.581 4.667 13.335 13.336-4.665 7.518 11.964 11.963-7.518 9.992 9.899 9.992-9.896 11.964 7.517 7.517-11.966 13.338 4.668 4.666-13.337 14.042 1.581 1.581-14.041 14.042-1.582-1.583-14.04 13.338-4.668-4.667-13.338 11.964-7.517z" fill="#b51f08" fill-rule="nonzero"/><path d="M167.114 114.463c0-19.312-15.655-34.967-34.967-34.967-9.592 0-18.282 3.865-24.599 10.121l-.004-.004-8.909 8.91-7.285-7.285c-6.409-7.312-15.81-11.934-26.296-11.934-19.313 0-34.968 15.655-34.968 34.967 0 10.092 4.28 19.178 11.117 25.56l57.466 57.435 56.196-56.233c7.022-6.608 12.25-15.934 12.25-26.57" fill="#fdd49a" fill-rule="nonzero"/><path d="m98.635 98.522-7.285-7.284c-6.41-7.312-15.81-11.935-26.297-11.935-19.312 0-34.967 15.656-34.967 34.967 0 10.092 4.28 19.178 11.117 25.56l57.466 57.436" fill="url(#a)" fill-rule="nonzero"/><path d="m98.669 197.266-.034-98.744" fill="none"/><path d="M108.65 187.336a14.075 14.075 0 0 0-10.001-4.157 14.075 14.075 0 0 0-10.002 4.157c.04 5.49 4.502 9.927 10.001 9.927 5.5 0 9.962-4.439 10.003-9.927M86.967 126.87a7.643 7.643 0 1 1-15.287 0 7.643 7.643 0 1 1 15.287 0" fill="#010007" fill-rule="nonzero"/><path d="M84.345 125.724a2.116 2.116 0 0 1-2.118 2.117 2.117 2.117 0 1 1 0-4.236 2.12 2.12 0 0 1 2.118 2.12" fill="#fffffa" fill-rule="nonzero"/><path d="M125.732 126.87a7.644 7.644 0 1 1-15.288 0 7.644 7.644 0 1 1 15.288 0" fill="#010007" fill-rule="nonzero"/><path d="M123.11 125.724c0 1.172-.95 2.117-2.118 2.117a2.117 2.117 0 1 1 0-4.236 2.12 2.12 0 0 1 2.118 2.12" fill="#fffffa" fill-rule="nonzero"/><defs><linearGradient id="a" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="rotate(-64.537 160.23 25.078) scale(61.7694)"><stop offset="0" stop-color="#fdd49a"/><stop offset="1" stop-color="#dca055"/></linearGradient></defs></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" width="1564" height="1564" clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2"><path style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1" d="M781.965 0l-79.182 79.19-94.818-59.575-59.574 94.81-105.7-36.99-36.982 105.7-111.283-12.54-12.535 111.276-111.278 12.535 12.541 111.278-105.71 36.988 36.984 105.695-94.815 59.574 59.582 94.832L0 781.961l79.19 79.2-59.577 94.823 94.815 59.573-36.985 105.695 105.707 36.99-12.537 111.264 111.278 12.543 12.535 111.275 111.283-12.535 36.982 105.686 105.694-36.97 59.582 94.821 94.9-59.64 79.096 78.36 79.1-78.343 94.908 59.631 59.572-94.824 105.707 36.988 36.98-105.697 111.284 12.533 12.533-111.283 111.285-12.533-12.543-111.276 105.705-36.99-36.988-105.705 94.814-59.574-59.574-94.813 79.19-79.2-79.188-79.18 59.572-94.813-94.814-59.578 36.99-105.703-105.7-36.983 12.534-111.281-111.275-12.535-12.543-111.283-111.274 12.535-36.99-105.703-105.69 36.986-59.591-94.815-94.82 59.579zm0 77.785l71.305 71.307 85.394-53.656 53.666 85.384 95.172-33.302 33.31 95.185 100.206-11.289 11.296 100.217 100.205 11.289-11.287 100.213 95.182 33.3-33.309 95.188 85.385 53.654-53.648 85.381 71.312 71.309-71.31 71.318 11.666 18.569 41.978 66.812-85.383 53.647 33.311 95.193-95.195 33.31 11.297 100.205-100.215 11.288-11.287 100.216-100.215-11.287-33.301 95.182-95.193-33.31-53.649 85.394-85.289-53.588-18.094 17.922a106.956 106.956 0 0121.871 16.893c-.309 41.33-33.914 74.76-75.33 74.76-41.417 0-75.016-33.42-75.324-74.76a106.994 106.994 0 0122.069-17.01l-17.997-17.828-85.293 53.601-53.65-85.38-95.18 33.29-33.302-95.175-100.217 11.287-11.287-100.205-100.21-11.297 11.29-100.197-95.194-33.311 33.307-95.184-85.385-53.646 53.649-85.39-71.31-71.32 71.32-71.312-53.659-85.4 85.385-53.65-33.305-95.18 95.198-33.313-11.293-100.205 100.207-11.289 11.289-100.207 100.215 11.293 33.302-95.183 95.184 33.308 53.648-85.38 85.391 53.65z" color="#000" font-weight="400" font-family="sans-serif" clip-rule="nonzero" overflow="visible" fill="#fff" fill-rule="nonzero"/><path d="M528.81 636.127c-145.441 0-263.341 117.905-263.341 263.342 0 76 32.23 144.43 83.72 192.49l357.635 357.443c19.257-19.156 45.746-30.984 74.996-30.984 29.295 0 55.839 11.871 75.1 31.09l348.266-348.49c52.88-49.77 92.25-120 92.25-200.1 0-145.437-117.9-263.34-263.34-263.34-72.24 0-137.68 29.112-185.252 76.225l-.033-.035-67.096 67.101-54.863-54.863c-48.267-55.067-119.07-89.88-198.041-89.88zm107.461 300.662c31.804 0 57.57 25.77 57.57 57.57s-25.766 57.569-57.57 57.569c-31.787 0-57.558-25.769-57.558-57.569 0-31.8 25.771-57.57 57.558-57.57zm291.944 0c31.8 0 57.57 25.77 57.57 57.57s-25.77 57.569-57.57 57.569c-31.79 0-57.567-25.769-57.567-57.569 0-31.8 25.777-57.57 57.567-57.57zm-146.27 587.695l.024.023.023-.023h-.047z" fill="#fff" fill-rule="nonzero"/><path d="M674.097 985.728c0 8.82-7.146 15.94-15.95 15.94-8.808 0-15.958-7.12-15.958-15.94 0-8.81 7.15-15.96 15.958-15.96 8.804 0 15.95 7.15 15.95 15.96m291.938 0c0 8.82-7.15 15.94-15.95 15.94-8.81 0-15.96-7.12-15.96-15.94 0-8.81 7.15-15.96 15.96-15.96 8.8 0 15.95 7.15 15.95 15.96" fill="#fffffa" fill-rule="nonzero"/></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" width="1564" height="1564" clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2"><path style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1" d="m781.965 0-79.182 79.19-94.818-59.575-59.574 94.81-105.7-36.99-36.982 105.7-111.283-12.54-12.535 111.276-111.278 12.535 12.541 111.278-105.71 36.988 36.984 105.695-94.815 59.574 59.582 94.832L0 781.961l79.19 79.2-59.577 94.823 94.815 59.573-36.985 105.695 105.707 36.99-12.537 111.264 111.278 12.543 12.535 111.275 111.283-12.535 36.982 105.686 105.694-36.97 59.582 94.821 94.9-59.64 79.096 78.36 79.1-78.343 94.908 59.631 59.572-94.824 105.707 36.988 36.98-105.697 111.284 12.533 12.533-111.283 111.285-12.533-12.543-111.276 105.705-36.99-36.988-105.705 94.814-59.574-59.574-94.813 79.19-79.2-79.188-79.18 59.572-94.813-94.814-59.578 36.99-105.703-105.7-36.983 12.534-111.281-111.275-12.535-12.543-111.283-111.274 12.535-36.99-105.703-105.69 36.986-59.591-94.815-94.82 59.579zm0 77.785 71.305 71.307 85.394-53.656 53.666 85.384 95.172-33.302 33.31 95.185 100.206-11.289 11.296 100.217 100.205 11.289-11.287 100.213 95.182 33.3-33.309 95.188 85.385 53.654-53.648 85.381 71.312 71.309-71.31 71.318 11.666 18.569 41.978 66.812-85.383 53.647 33.311 95.193-95.195 33.31 11.297 100.205-100.215 11.288-11.287 100.216-100.215-11.287-33.301 95.182-95.193-33.31-53.649 85.394-85.289-53.588-18.094 17.922a106.956 106.956 0 0 1 21.871 16.893c-.309 41.33-33.914 74.76-75.33 74.76-41.417 0-75.016-33.42-75.324-74.76a106.994 106.994 0 0 1 22.069-17.01l-17.997-17.828-85.293 53.601-53.65-85.38-95.18 33.29-33.302-95.175-100.217 11.287-11.287-100.205-100.21-11.297 11.29-100.197-95.194-33.311 33.307-95.184-85.385-53.646 53.649-85.39-71.31-71.32 71.32-71.312-53.659-85.4 85.385-53.65-33.305-95.18 95.198-33.313-11.293-100.205 100.207-11.289 11.289-100.207 100.215 11.293 33.302-95.183 95.184 33.308 53.648-85.38 85.391 53.65z" color="#000" font-weight="400" font-family="sans-serif" clip-rule="nonzero" overflow="visible" fill="#fff" fill-rule="nonzero"/><path d="M528.81 636.127c-145.441 0-263.341 117.905-263.341 263.342 0 76 32.23 144.43 83.72 192.49l357.635 357.443c19.257-19.156 45.746-30.984 74.996-30.984 29.295 0 55.839 11.871 75.1 31.09l348.266-348.49c52.88-49.77 92.25-120 92.25-200.1 0-145.437-117.9-263.34-263.34-263.34-72.24 0-137.68 29.112-185.252 76.225l-.033-.035-67.096 67.101-54.863-54.863c-48.267-55.067-119.07-89.88-198.041-89.88zm107.461 300.662c31.804 0 57.57 25.77 57.57 57.57s-25.766 57.569-57.57 57.569c-31.787 0-57.558-25.769-57.558-57.569 0-31.8 25.771-57.57 57.558-57.57zm291.944 0c31.8 0 57.57 25.77 57.57 57.57s-25.77 57.569-57.57 57.569c-31.79 0-57.567-25.769-57.567-57.569 0-31.8 25.777-57.57 57.567-57.57zm-146.27 587.695.024.023.023-.023h-.047z" fill="#fff" fill-rule="nonzero"/><path d="M674.097 985.728c0 8.82-7.146 15.94-15.95 15.94-8.808 0-15.958-7.12-15.958-15.94 0-8.81 7.15-15.96 15.958-15.96 8.804 0 15.95 7.15 15.95 15.96m291.938 0c0 8.82-7.15 15.94-15.95 15.94-8.81 0-15.96-7.12-15.96-15.94 0-8.81 7.15-15.96 15.96-15.96 8.8 0 15.95 7.15 15.95 15.96" fill="#fffffa" fill-rule="nonzero"/></svg>
\ No newline at end of file
# Welcome to the HedgeDoc Documentation
![HedgeDoc Logo](images/hedgedoc_logo_horizontal.svg)
<img alt="HedgeDoc Logo" title="HedgeDoc Logo" class="light-mode-only" src="images/hedgedoc_logo_black.svg">
<img alt="HedgeDoc Logo" title="HedgeDoc Logo" class="dark-mode-only" src="images/hedgedoc_logo_white.svg">
HedgeDoc lets you create real-time collaborative markdown notes. You can test-drive
it by visiting our [HedgeDoc demo server][hedgedoc-demo].
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment