mirror of
https://github.com/appwrite/appwrite.git
synced 2026-05-26 13:51:13 +00:00
Merge branch '1.6.x' of https://github.com/appwrite/appwrite into fix-flaky-tests
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
name: Nightly Security Scan
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 0 * * *' # 12am UTC daily runtime
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
scan-image:
|
||||
name: Scan Docker Image
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
- name: Build the Docker image
|
||||
run: docker build . -t appwrite_image:latest
|
||||
- name: Run Trivy vulnerability scanner on image
|
||||
uses: aquasecurity/trivy-action@0.20.0
|
||||
with:
|
||||
image-ref: 'appwrite_image:latest'
|
||||
format: 'sarif'
|
||||
output: 'trivy-image-results.sarif'
|
||||
ignore-unfixed: 'false'
|
||||
severity: 'CRITICAL,HIGH'
|
||||
- name: Upload Docker Image Scan Results
|
||||
uses: github/codeql-action/upload-sarif@v2
|
||||
with:
|
||||
sarif_file: 'trivy-image-results.sarif'
|
||||
|
||||
scan-code:
|
||||
name: Scan Code
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@v4
|
||||
- name: Run Trivy vulnerability scanner on filesystem
|
||||
uses: aquasecurity/trivy-action@0.20.0
|
||||
with:
|
||||
scan-type: 'fs'
|
||||
format: 'sarif'
|
||||
output: 'trivy-fs-results.sarif'
|
||||
severity: 'CRITICAL,HIGH'
|
||||
- name: Upload Code Scan Results
|
||||
uses: github/codeql-action/upload-sarif@v2
|
||||
with:
|
||||
sarif_file: 'trivy-fs-results.sarif'
|
||||
@@ -1,17 +1,22 @@
|
||||
name: PR Security Scan
|
||||
on:
|
||||
pull_request:
|
||||
on:
|
||||
pull_request_target:
|
||||
types: [opened, synchronize, reopened]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
scan:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
steps:
|
||||
- name: Check out code
|
||||
- name: Check out code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ github.event.pull_request.head.sha }}
|
||||
fetch-depth: 0
|
||||
submodules: 'recursive'
|
||||
|
||||
- name: Build the Docker image
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
@@ -19,6 +24,7 @@ jobs:
|
||||
push: false
|
||||
load: true
|
||||
tags: pr_image:${{ github.sha }}
|
||||
|
||||
- name: Run Trivy vulnerability scanner on image
|
||||
uses: aquasecurity/trivy-action@0.20.0
|
||||
with:
|
||||
@@ -26,6 +32,7 @@ jobs:
|
||||
format: 'json'
|
||||
output: 'trivy-image-results.json'
|
||||
severity: 'CRITICAL,HIGH'
|
||||
|
||||
- name: Run Trivy vulnerability scanner on source code
|
||||
uses: aquasecurity/trivy-action@0.20.0
|
||||
with:
|
||||
@@ -34,10 +41,11 @@ jobs:
|
||||
format: 'json'
|
||||
output: 'trivy-fs-results.json'
|
||||
severity: 'CRITICAL,HIGH'
|
||||
- name: Process and post Trivy scan results
|
||||
|
||||
- name: Process Trivy scan results
|
||||
id: process-results
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
github-token: ${{secrets.GITHUB_TOKEN}}
|
||||
script: |
|
||||
const fs = require('fs');
|
||||
let commentBody = '## Security Scan Results for PR\n\n';
|
||||
@@ -79,9 +87,19 @@ jobs:
|
||||
commentBody += 'Please contact the core team for assistance.';
|
||||
}
|
||||
|
||||
github.rest.issues.createComment({
|
||||
issue_number: context.issue.number,
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
body: commentBody
|
||||
});
|
||||
core.setOutput('comment-body', commentBody);
|
||||
- name: Find Comment
|
||||
uses: peter-evans/find-comment@v3
|
||||
id: fc
|
||||
with:
|
||||
issue-number: ${{ github.event.pull_request.number }}
|
||||
comment-author: 'github-actions[bot]'
|
||||
body-includes: Security Scan Results for PR
|
||||
|
||||
- name: Create or update comment
|
||||
uses: peter-evans/create-or-update-comment@v3
|
||||
with:
|
||||
issue-number: ${{ github.event.pull_request.number }}
|
||||
comment-id: ${{ steps.fc.outputs.comment-id }}
|
||||
body: ${{ steps.process-results.outputs.comment-body }}
|
||||
edit-mode: replace
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
> Our Appwrite Init event has concluded. You can check out all the new and upcoming features [on our Init website](https://appwrite.io/init) 🚀
|
||||
> Appwrite Init has concluded! You can check out all the latest announcements [on our Init website](https://appwrite.io/init) 🚀
|
||||
|
||||
<br />
|
||||
<p align="center">
|
||||
@@ -134,6 +134,12 @@ Choose from one of the providers below:
|
||||
<br /><sub><b>Akamai Compute</b></sub></a>
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" width="100" height="100">
|
||||
<a href="https://aws.amazon.com/marketplace/pp/prodview-2hiaeo2px4md6">
|
||||
<img width="50" height="39" src="public/images/integrations/aws-logo.svg" alt="AWS Logo" />
|
||||
<br /><sub><b>AWS Marketplace</b></sub></a>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@ return [
|
||||
'providerOwner' => 'appwrite',
|
||||
'providerVersion' => '0.2.*',
|
||||
'variables' => [],
|
||||
'scopes' => ["users.read"]
|
||||
'scopes' => ['users.read']
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-upstash',
|
||||
@@ -125,7 +125,8 @@ return [
|
||||
'required' => true,
|
||||
'type' => 'password'
|
||||
]
|
||||
]
|
||||
],
|
||||
'scopes' => []
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-redis',
|
||||
@@ -167,7 +168,8 @@ return [
|
||||
'required' => true,
|
||||
'type' => 'password'
|
||||
]
|
||||
]
|
||||
],
|
||||
'scopes' => []
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-neo4j',
|
||||
@@ -217,7 +219,8 @@ return [
|
||||
'required' => true,
|
||||
'type' => 'password'
|
||||
]
|
||||
]
|
||||
],
|
||||
'scopes' => []
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-mongodb',
|
||||
@@ -253,7 +256,8 @@ return [
|
||||
'required' => true,
|
||||
'type' => 'password'
|
||||
]
|
||||
]
|
||||
],
|
||||
'scopes' => []
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-neon',
|
||||
@@ -320,7 +324,8 @@ return [
|
||||
'required' => true,
|
||||
'type' => 'text'
|
||||
]
|
||||
]
|
||||
],
|
||||
'scopes' => []
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-open-ai',
|
||||
@@ -380,7 +385,8 @@ return [
|
||||
'required' => false,
|
||||
'type' => 'number'
|
||||
]
|
||||
]
|
||||
],
|
||||
'scopes' => []
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-discord',
|
||||
@@ -442,7 +448,8 @@ return [
|
||||
'required' => true,
|
||||
'type' => 'password'
|
||||
]
|
||||
]
|
||||
],
|
||||
'scopes' => []
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-perspective-api',
|
||||
@@ -476,7 +483,8 @@ return [
|
||||
'required' => true,
|
||||
'type' => 'password'
|
||||
]
|
||||
]
|
||||
],
|
||||
'scopes' => []
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-pangea',
|
||||
@@ -523,7 +531,8 @@ return [
|
||||
'required' => true,
|
||||
'type' => 'password'
|
||||
]
|
||||
]
|
||||
],
|
||||
'scopes' => []
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-document',
|
||||
@@ -543,7 +552,8 @@ return [
|
||||
'providerRepositoryId' => 'templates',
|
||||
'providerOwner' => 'appwrite',
|
||||
'providerVersion' => '0.2.*',
|
||||
'variables' => []
|
||||
'variables' => [],
|
||||
'scopes' => []
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-github',
|
||||
@@ -586,7 +596,8 @@ return [
|
||||
'required' => true,
|
||||
'type' => 'password'
|
||||
]
|
||||
]
|
||||
],
|
||||
'scopes' => []
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-bookmark',
|
||||
@@ -637,7 +648,7 @@ return [
|
||||
'type' => 'url'
|
||||
]
|
||||
],
|
||||
'scopes' => ["databases.read", "databases.write", "collections.write", "attributes.write", "documents.read", "documents.write"]
|
||||
'scopes' => ['databases.read', 'databases.write', 'collections.write', 'attributes.write', 'documents.read', 'documents.write']
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-algolia',
|
||||
@@ -718,7 +729,7 @@ return [
|
||||
'type' => 'password'
|
||||
],
|
||||
],
|
||||
'scopes' => ["databases.read", "collections.read", "documents.read"]
|
||||
'scopes' => ['databases.read', 'collections.read', 'documents.read']
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-meilisearch',
|
||||
@@ -811,7 +822,7 @@ return [
|
||||
'type' => 'text'
|
||||
],
|
||||
],
|
||||
'scopes' => ["databases.read", "collections.read", "documents.read"]
|
||||
'scopes' => ['databases.read', 'collections.read', 'documents.read']
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-vonage',
|
||||
@@ -896,7 +907,8 @@ return [
|
||||
'required' => true,
|
||||
'type' => 'phone'
|
||||
]
|
||||
]
|
||||
],
|
||||
'scopes' => []
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-bell',
|
||||
@@ -951,7 +963,8 @@ return [
|
||||
'required' => true,
|
||||
'type' => 'url'
|
||||
]
|
||||
]
|
||||
],
|
||||
'scopes' => []
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-mail',
|
||||
@@ -1033,7 +1046,8 @@ return [
|
||||
'required' => false,
|
||||
'type' => 'text'
|
||||
]
|
||||
]
|
||||
],
|
||||
'scopes' => []
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-stripe',
|
||||
@@ -1074,7 +1088,7 @@ return [
|
||||
'type' => 'password'
|
||||
]
|
||||
],
|
||||
'scopes' => ["users.read", "sessions.write", "users.write"]
|
||||
'scopes' => ['users.read', 'sessions.write', 'users.write']
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-stripe',
|
||||
@@ -1131,7 +1145,7 @@ return [
|
||||
'type' => 'text'
|
||||
]
|
||||
],
|
||||
'scopes' => ["databases.read", "databases.write", "collections.write", "attributes.write", "documents.read", "documents.write"]
|
||||
'scopes' => ['databases.read', 'databases.write', 'collections.write', 'attributes.write', 'documents.read', 'documents.write']
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-chat',
|
||||
@@ -1164,7 +1178,8 @@ return [
|
||||
'required' => true,
|
||||
'type' => 'password'
|
||||
]
|
||||
]
|
||||
],
|
||||
'scopes' => []
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-translate',
|
||||
@@ -1197,7 +1212,8 @@ return [
|
||||
'required' => true,
|
||||
'type' => 'password'
|
||||
]
|
||||
]
|
||||
],
|
||||
'scopes' => []
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-eye',
|
||||
@@ -1255,7 +1271,7 @@ return [
|
||||
'type' => 'password'
|
||||
]
|
||||
],
|
||||
'scopes' => ["databases.read", "databases.write", "collections.read", "collections.write", "attributes.write", "documents.read", "documents.write", "buckets.read", "buckets.write", "files.read"]
|
||||
'scopes' => ['databases.read', 'databases.write', 'collections.read', 'collections.write', 'attributes.write', 'documents.read', 'documents.write', 'buckets.read', 'buckets.write', 'files.read']
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-eye',
|
||||
@@ -1313,7 +1329,7 @@ return [
|
||||
'type' => 'password'
|
||||
]
|
||||
],
|
||||
"scopes" => ["databases.read", "databases.write", "collections.read", "collections.write", "attributes.write", "documents.read", "documents.write", "buckets.read", "buckets.write", "files.read"]
|
||||
'scopes' => ['databases.read', 'databases.write', 'collections.read', 'collections.write', 'attributes.write', 'documents.read', 'documents.write', 'buckets.read', 'buckets.write', 'files.read']
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-text',
|
||||
@@ -1371,7 +1387,7 @@ return [
|
||||
'type' => 'password'
|
||||
]
|
||||
],
|
||||
"scopes" => ["databases.read", "databases.write", "collections.read", "collections.write", "attributes.write", "documents.read", "documents.write", "buckets.read", "buckets.write", "files.read"]
|
||||
'scopes' => ['databases.read', 'databases.write', 'collections.read', 'collections.write', 'attributes.write', 'documents.read', 'documents.write', 'buckets.read', 'buckets.write', 'files.read']
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-chat',
|
||||
@@ -1429,7 +1445,7 @@ return [
|
||||
'type' => 'password'
|
||||
]
|
||||
],
|
||||
"scopes" => ["buckets.read", "buckets.write", "files.read", "files.write"]
|
||||
'scopes' => ['buckets.read', 'buckets.write', 'files.read', 'files.write']
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-chip',
|
||||
@@ -1463,7 +1479,8 @@ return [
|
||||
'required' => true,
|
||||
'type' => 'password'
|
||||
]
|
||||
]
|
||||
],
|
||||
'scopes' => []
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-chip',
|
||||
@@ -1505,7 +1522,7 @@ return [
|
||||
'type' => 'text'
|
||||
]
|
||||
],
|
||||
"scopes" => ["buckets.write", "files.read", "files.write"]
|
||||
'scopes' => ['buckets.write', 'files.read', 'files.write']
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-chip',
|
||||
@@ -1579,7 +1596,8 @@ return [
|
||||
'required' => true,
|
||||
'type' => 'password'
|
||||
]
|
||||
]
|
||||
],
|
||||
'scopes' => []
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-document-search',
|
||||
@@ -1642,7 +1660,7 @@ return [
|
||||
'type' => 'text'
|
||||
]
|
||||
],
|
||||
"scopes" => ["databases.read", "collections.read", "documents.read"]
|
||||
'scopes' => ['databases.read', 'collections.read', 'documents.read']
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-chip',
|
||||
@@ -1705,7 +1723,7 @@ return [
|
||||
'type' => 'text'
|
||||
]
|
||||
],
|
||||
"scopes" => ["databases.read", "collections.read", "documents.read"]
|
||||
'scopes' => ['databases.read', 'collections.read', 'documents.read']
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-chat',
|
||||
@@ -1760,7 +1778,7 @@ return [
|
||||
'type' => 'text'
|
||||
]
|
||||
],
|
||||
"scopes" => ["buckets.read", "buckets.write", "files.read", "files.write"]
|
||||
'scopes' => ['buckets.read', 'buckets.write', 'files.read', 'files.write']
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-chip',
|
||||
@@ -1801,7 +1819,7 @@ return [
|
||||
'type' => 'text'
|
||||
]
|
||||
],
|
||||
"scopes" => ["buckets.read", "buckets.write", "files.read", "files.write"]
|
||||
'scopes' => ['buckets.read', 'buckets.write', 'files.read', 'files.write']
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-chip',
|
||||
@@ -1841,7 +1859,8 @@ return [
|
||||
'required' => false,
|
||||
'type' => 'number'
|
||||
]
|
||||
]
|
||||
],
|
||||
'scopes' => []
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-music-note',
|
||||
@@ -1883,7 +1902,7 @@ return [
|
||||
'type' => 'password'
|
||||
]
|
||||
],
|
||||
"scopes" => ["buckets.read", "buckets.write", "files.read", "files.write"]
|
||||
'scopes' => ['buckets.read', 'buckets.write', 'files.read', 'files.write']
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-chip',
|
||||
@@ -1917,7 +1936,8 @@ return [
|
||||
'required' => true,
|
||||
'type' => 'password'
|
||||
]
|
||||
]
|
||||
],
|
||||
'scopes' => []
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-currency-dollar',
|
||||
@@ -1972,7 +1992,7 @@ return [
|
||||
'type' => 'text'
|
||||
]
|
||||
],
|
||||
"scopes" => ["users.read", "users.write"]
|
||||
'scopes' => ['users.read', 'users.write']
|
||||
],
|
||||
[
|
||||
'icon' => 'icon-currency-dollar',
|
||||
@@ -2043,6 +2063,6 @@ return [
|
||||
'type' => 'text'
|
||||
]
|
||||
],
|
||||
"scopes" => ["users.read", "users.write"]
|
||||
'scopes' => ['users.read', 'users.write']
|
||||
]
|
||||
];
|
||||
|
||||
@@ -602,10 +602,11 @@ App::shutdown()
|
||||
/**
|
||||
* Trigger functions.
|
||||
*/
|
||||
$queueForFunctions
|
||||
->from($queueForEvents)
|
||||
->trigger();
|
||||
|
||||
if (!$queueForEvents->isPaused()) {
|
||||
$queueForFunctions
|
||||
->from($queueForEvents)
|
||||
->trigger();
|
||||
}
|
||||
/**
|
||||
* Trigger webhooks.
|
||||
*/
|
||||
|
||||
@@ -679,6 +679,7 @@ $image = $this->getParam('image', '');
|
||||
entrypoint: worker-usage-dump
|
||||
<<: *x-logging
|
||||
container_name: appwrite-worker-usage-dump
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- appwrite
|
||||
depends_on:
|
||||
@@ -792,7 +793,7 @@ $image = $this->getParam('image', '');
|
||||
<<: *x-logging
|
||||
restart: unless-stopped
|
||||
stop_signal: SIGINT
|
||||
image: openruntimes/executor:0.6.7
|
||||
image: openruntimes/executor:0.6.11
|
||||
networks:
|
||||
- appwrite
|
||||
- runtimes
|
||||
|
||||
+1
-1
@@ -874,7 +874,7 @@ services:
|
||||
hostname: exc1
|
||||
<<: *x-logging
|
||||
stop_signal: SIGINT
|
||||
image: openruntimes/executor:0.6.7
|
||||
image: openruntimes/executor:0.6.11
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- appwrite
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 19.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 304 182" style="enable-background:new 0 0 304 182;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#252F3E;}
|
||||
.st1{fill-rule:evenodd;clip-rule:evenodd;fill:#FF9900;}
|
||||
</style>
|
||||
<g>
|
||||
<path class="st0" d="M86.4,66.4c0,3.7,0.4,6.7,1.1,8.9c0.8,2.2,1.8,4.6,3.2,7.2c0.5,0.8,0.7,1.6,0.7,2.3c0,1-0.6,2-1.9,3l-6.3,4.2
|
||||
c-0.9,0.6-1.8,0.9-2.6,0.9c-1,0-2-0.5-3-1.4C76.2,90,75,88.4,74,86.8c-1-1.7-2-3.6-3.1-5.9c-7.8,9.2-17.6,13.8-29.4,13.8
|
||||
c-8.4,0-15.1-2.4-20-7.2c-4.9-4.8-7.4-11.2-7.4-19.2c0-8.5,3-15.4,9.1-20.6c6.1-5.2,14.2-7.8,24.5-7.8c3.4,0,6.9,0.3,10.6,0.8
|
||||
c3.7,0.5,7.5,1.3,11.5,2.2v-7.3c0-7.6-1.6-12.9-4.7-16c-3.2-3.1-8.6-4.6-16.3-4.6c-3.5,0-7.1,0.4-10.8,1.3c-3.7,0.9-7.3,2-10.8,3.4
|
||||
c-1.6,0.7-2.8,1.1-3.5,1.3c-0.7,0.2-1.2,0.3-1.6,0.3c-1.4,0-2.1-1-2.1-3.1v-4.9c0-1.6,0.2-2.8,0.7-3.5c0.5-0.7,1.4-1.4,2.8-2.1
|
||||
c3.5-1.8,7.7-3.3,12.6-4.5c4.9-1.3,10.1-1.9,15.6-1.9c11.9,0,20.6,2.7,26.2,8.1c5.5,5.4,8.3,13.6,8.3,24.6V66.4z M45.8,81.6
|
||||
c3.3,0,6.7-0.6,10.3-1.8c3.6-1.2,6.8-3.4,9.5-6.4c1.6-1.9,2.8-4,3.4-6.4c0.6-2.4,1-5.3,1-8.7v-4.2c-2.9-0.7-6-1.3-9.2-1.7
|
||||
c-3.2-0.4-6.3-0.6-9.4-0.6c-6.7,0-11.6,1.3-14.9,4c-3.3,2.7-4.9,6.5-4.9,11.5c0,4.7,1.2,8.2,3.7,10.6
|
||||
C37.7,80.4,41.2,81.6,45.8,81.6z M126.1,92.4c-1.8,0-3-0.3-3.8-1c-0.8-0.6-1.5-2-2.1-3.9L96.7,10.2c-0.6-2-0.9-3.3-0.9-4
|
||||
c0-1.6,0.8-2.5,2.4-2.5h9.8c1.9,0,3.2,0.3,3.9,1c0.8,0.6,1.4,2,2,3.9l16.8,66.2l15.6-66.2c0.5-2,1.1-3.3,1.9-3.9c0.8-0.6,2.2-1,4-1
|
||||
h8c1.9,0,3.2,0.3,4,1c0.8,0.6,1.5,2,1.9,3.9l15.8,67l17.3-67c0.6-2,1.3-3.3,2-3.9c0.8-0.6,2.1-1,3.9-1h9.3c1.6,0,2.5,0.8,2.5,2.5
|
||||
c0,0.5-0.1,1-0.2,1.6c-0.1,0.6-0.3,1.4-0.7,2.5l-24.1,77.3c-0.6,2-1.3,3.3-2.1,3.9c-0.8,0.6-2.1,1-3.8,1h-8.6c-1.9,0-3.2-0.3-4-1
|
||||
c-0.8-0.7-1.5-2-1.9-4L156,23l-15.4,64.4c-0.5,2-1.1,3.3-1.9,4c-0.8,0.7-2.2,1-4,1H126.1z M254.6,95.1c-5.2,0-10.4-0.6-15.4-1.8
|
||||
c-5-1.2-8.9-2.5-11.5-4c-1.6-0.9-2.7-1.9-3.1-2.8c-0.4-0.9-0.6-1.9-0.6-2.8v-5.1c0-2.1,0.8-3.1,2.3-3.1c0.6,0,1.2,0.1,1.8,0.3
|
||||
c0.6,0.2,1.5,0.6,2.5,1c3.4,1.5,7.1,2.7,11,3.5c4,0.8,7.9,1.2,11.9,1.2c6.3,0,11.2-1.1,14.6-3.3c3.4-2.2,5.2-5.4,5.2-9.5
|
||||
c0-2.8-0.9-5.1-2.7-7c-1.8-1.9-5.2-3.6-10.1-5.2L246,52c-7.3-2.3-12.7-5.7-16-10.2c-3.3-4.4-5-9.3-5-14.5c0-4.2,0.9-7.9,2.7-11.1
|
||||
c1.8-3.2,4.2-6,7.2-8.2c3-2.3,6.4-4,10.4-5.2c4-1.2,8.2-1.7,12.6-1.7c2.2,0,4.5,0.1,6.7,0.4c2.3,0.3,4.4,0.7,6.5,1.1
|
||||
c2,0.5,3.9,1,5.7,1.6c1.8,0.6,3.2,1.2,4.2,1.8c1.4,0.8,2.4,1.6,3,2.5c0.6,0.8,0.9,1.9,0.9,3.3v4.7c0,2.1-0.8,3.2-2.3,3.2
|
||||
c-0.8,0-2.1-0.4-3.8-1.2c-5.7-2.6-12.1-3.9-19.2-3.9c-5.7,0-10.2,0.9-13.3,2.8c-3.1,1.9-4.7,4.8-4.7,8.9c0,2.8,1,5.2,3,7.1
|
||||
c2,1.9,5.7,3.8,11,5.5l14.2,4.5c7.2,2.3,12.4,5.5,15.5,9.6c3.1,4.1,4.6,8.8,4.6,14c0,4.3-0.9,8.2-2.6,11.6
|
||||
c-1.8,3.4-4.2,6.4-7.3,8.8c-3.1,2.5-6.8,4.3-11.1,5.6C264.4,94.4,259.7,95.1,254.6,95.1z"/>
|
||||
<g>
|
||||
<path class="st1" d="M273.5,143.7c-32.9,24.3-80.7,37.2-121.8,37.2c-57.6,0-109.5-21.3-148.7-56.7c-3.1-2.8-0.3-6.6,3.4-4.4
|
||||
c42.4,24.6,94.7,39.5,148.8,39.5c36.5,0,76.6-7.6,113.5-23.2C274.2,133.6,278.9,139.7,273.5,143.7z"/>
|
||||
<path class="st1" d="M287.2,128.1c-4.2-5.4-27.8-2.6-38.5-1.3c-3.2,0.4-3.7-2.4-0.8-4.5c18.8-13.2,49.7-9.4,53.3-5
|
||||
c3.6,4.5-1,35.4-18.6,50.2c-2.7,2.3-5.3,1.1-4.1-1.9C282.5,155.7,291.4,133.4,287.2,128.1z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.4 KiB |
Reference in New Issue
Block a user