Merge branch 'master' of github.com:tikv/website into replication-rebalancing-update
Signed-off-by: iosmanthus <myosmanthustree@gmail.com>
|
|
@ -1,21 +1,33 @@
|
|||
function navbarToggle() {
|
||||
$(".navbar-burger").click(function() {
|
||||
$(".navbar-burger").click(function () {
|
||||
$(".navbar-burger").toggleClass("is-active");
|
||||
$(".navbar-menu").toggleClass("is-active");
|
||||
$(".navbar-dropdown").removeClass("is-active");
|
||||
});
|
||||
}
|
||||
|
||||
function docsAnchors() {
|
||||
anchors.options = {
|
||||
icon: '#'
|
||||
}
|
||||
icon: "#",
|
||||
};
|
||||
|
||||
anchors.add('.docs-content h2, .docs-content h3, .docs-content h4');
|
||||
anchors.add(".docs-content h2, .docs-content h3, .docs-content h4");
|
||||
}
|
||||
|
||||
$(function() {
|
||||
$(function () {
|
||||
navbarToggle();
|
||||
docsAnchors();
|
||||
|
||||
console.log("Welcome to the TiKV docs!");
|
||||
|
||||
$(".navbar-link").click(function () {
|
||||
$(this).next().toggleClass("is-active");
|
||||
});
|
||||
|
||||
$(".is-navbar-version").click(function () {
|
||||
$(".navbar-menu").removeClass("is-active");
|
||||
if (window.matchMedia("(max-width: 1024px)").matches) {
|
||||
$(this).next().toggleClass("is-active");
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -10,18 +10,26 @@ $twitter-blue: #1da1f3
|
|||
// TiKV variables
|
||||
$tikv-red: #ed1a3b
|
||||
$tikv-blue: #353558
|
||||
$light-blue: #3D3FEA
|
||||
$footer-hover-blue: #00AEEF
|
||||
|
||||
@import "bulma/sass/utilities/initial-variables"
|
||||
@import "bulma/sass/utilities/functions"
|
||||
@import "bulma/sass/utilities/derived-variables"
|
||||
|
||||
$colors: mergeColorMaps(("twitter-blue": ($twitter-blue, $white)), $colors)
|
||||
|
||||
@import "bulma/bulma"
|
||||
@import "bulma/sass/grid/columns"
|
||||
|
||||
// Bulma variable overrides
|
||||
$red: $tikv-red
|
||||
$blue: $tikv-blue
|
||||
$primary: $red
|
||||
$secondary: $blue
|
||||
$secondary: #0D0F2C
|
||||
$link: $red
|
||||
$danger: $orange
|
||||
$navbar-burger-color: $blue
|
||||
$btn-blue-color: $light-blue
|
||||
$family-sans-serif: "Titillium Web", BlinkMacSystemFont, -apple-system, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif
|
||||
$family-monospace: "Inconsolata", monosapce
|
||||
$notification-padding: 1rem 1rem
|
||||
|
|
@ -30,30 +38,45 @@ $navbar-dropdown-boxed-shadow: none
|
|||
$navbar-dropdown-arrow: $primary !important
|
||||
$base-width: 112px
|
||||
|
||||
@import "bulma/sass/utilities/derived-variables"
|
||||
// customize font-size
|
||||
$P1: 16px
|
||||
$H0: 32px
|
||||
$H3: 20px
|
||||
$H4: 18px
|
||||
$LH: 1.75
|
||||
|
||||
// customize color
|
||||
$M2: #F7F8F9
|
||||
$B3: #172D72
|
||||
|
||||
$colors: mergeColorMaps(("twitter-blue": ($twitter-blue, $white)), $colors)
|
||||
|
||||
@import "bulma/bulma"
|
||||
|
||||
=logo($times)
|
||||
margin: 0 auto
|
||||
width: $times * $base-width
|
||||
|
||||
.is-home-logo
|
||||
+logo(2)
|
||||
+logo(1.8)
|
||||
|
||||
+tablet
|
||||
margin-bottom: 1.5rem
|
||||
|
||||
+touch
|
||||
margin-bottom: 2rem
|
||||
|
||||
+mobile
|
||||
+logo(1.5)
|
||||
|
||||
.is-cncf-logo
|
||||
+logo(4)
|
||||
margin: 1.5rem 0 0 0
|
||||
+logo(3)
|
||||
margin: 3rem auto
|
||||
|
||||
.is-footer-image
|
||||
+logo(1)
|
||||
margin: 1rem auto 1rem 0
|
||||
|
||||
+mobile
|
||||
margin: 1rem auto
|
||||
|
||||
=branded-button($bgColor)
|
||||
border: none
|
||||
|
|
@ -63,20 +86,146 @@ $colors: mergeColorMaps(("twitter-blue": ($twitter-blue, $white)), $colors)
|
|||
&:hover
|
||||
background-color: darken($bgColor, 5%)
|
||||
|
||||
@mixin is-customized-card()
|
||||
height: 100%
|
||||
box-shadow: none
|
||||
border-radius: 10px
|
||||
|
||||
.card-header
|
||||
padding: 2rem
|
||||
font-size: $H3
|
||||
box-shadow: none
|
||||
|
||||
.card-header-title
|
||||
padding: 0
|
||||
|
||||
.card-header-icon
|
||||
padding: 0
|
||||
|
||||
.card-content
|
||||
padding: 0 2rem 2rem
|
||||
|
||||
a:hover
|
||||
color: $light-blue
|
||||
text-decoration: underline
|
||||
|
||||
|
||||
|
||||
a
|
||||
color: $light-blue
|
||||
|
||||
.docs-content
|
||||
padding-bottom: 8rem
|
||||
|
||||
.home-page
|
||||
.section-title
|
||||
margin-bottom: 3rem !important
|
||||
font-size: $H0
|
||||
|
||||
.homepage-hero
|
||||
background: url('/img/homepage/hero-bg.svg') no-repeat
|
||||
background-size: cover
|
||||
background-position: center
|
||||
|
||||
+mobile
|
||||
padding: 4rem 1.5rem !important
|
||||
|
||||
.title
|
||||
font-size: 1.875rem !important
|
||||
width: max-content
|
||||
padding: 1rem 1rem 1rem 0
|
||||
font-size: 36px
|
||||
color: #ffffff
|
||||
line-height: 1.7
|
||||
background: linear-gradient(90deg, rgba(43, 88, 186, 0), rgba(17, 68, 163, 0.8) 50%)
|
||||
|
||||
+mobile
|
||||
margin-top: 1rem
|
||||
padding: 1rem 0rem
|
||||
font-weight: bold
|
||||
width: auto
|
||||
|
||||
.button
|
||||
margin-top: 2rem
|
||||
font-size: $H3
|
||||
font-weight: bold
|
||||
color: #30323e
|
||||
color: #113F9C
|
||||
border-radius: 10px
|
||||
|
||||
.subtitle
|
||||
font-size: 1.25rem !important
|
||||
color: #606060 !important
|
||||
font-weight: normal !important
|
||||
.homepage-intro
|
||||
.desc
|
||||
font-size: $P1
|
||||
line-height: 1.75
|
||||
|
||||
.columns
|
||||
align-items: start
|
||||
|
||||
.scenario
|
||||
margin-top: 2.5rem
|
||||
|
||||
.scenario,
|
||||
.desc
|
||||
a
|
||||
color: $light-blue
|
||||
|
||||
&:hover
|
||||
text-decoration: underline
|
||||
|
||||
.homepage-why-tikv
|
||||
background-color: $M2
|
||||
|
||||
.card
|
||||
@include is-customized-card
|
||||
|
||||
.homepage-tikv-users
|
||||
.columns.is-variable
|
||||
--columnGap: 4rem
|
||||
|
||||
+mobile
|
||||
--columnGap: 3rem
|
||||
|
||||
.column
|
||||
flex: none
|
||||
width: 20%
|
||||
padding: 5rem
|
||||
|
||||
+touch
|
||||
width: 50%
|
||||
|
||||
a, a:hover
|
||||
color: $light-blue
|
||||
|
||||
.button
|
||||
margin: 4rem
|
||||
color: #ffffff
|
||||
border: none
|
||||
background-color: $btn-blue-color
|
||||
|
||||
.homepage-get-started
|
||||
background-color: $M2
|
||||
|
||||
.card
|
||||
@include is-customized-card
|
||||
|
||||
.card-header
|
||||
padding: 1rem 2rem
|
||||
background-color: $light-blue
|
||||
border-radius: 10px 10px 0 0
|
||||
|
||||
.card-header-title
|
||||
color: #ffffff
|
||||
|
||||
.card-content
|
||||
padding-top: 1.5rem
|
||||
line-height: 2
|
||||
|
||||
a
|
||||
color: #2C2C2C
|
||||
|
||||
&:hover
|
||||
color: $light-blue
|
||||
text-decoration: underline
|
||||
|
||||
.hero.is-primary
|
||||
background-color: $B3
|
||||
|
||||
.toc
|
||||
padding: 1rem 0 3rem 2rem
|
||||
|
|
@ -84,15 +233,22 @@ $colors: mergeColorMaps(("twitter-blue": ($twitter-blue, $white)), $colors)
|
|||
li
|
||||
font-size: 1.1rem
|
||||
|
||||
a.is-active
|
||||
color: $tikv-blue
|
||||
font-weight: 700
|
||||
a
|
||||
color: #000
|
||||
|
||||
&.is-active
|
||||
color: $light-blue
|
||||
font-weight: 700
|
||||
|
||||
&:hover
|
||||
color: $light-blue
|
||||
|
||||
|
||||
ul
|
||||
list-style: none !important
|
||||
ul
|
||||
margin-left: .5rem
|
||||
|
||||
|
||||
li > a
|
||||
margin-left: 1.4rem
|
||||
|
||||
|
|
@ -142,6 +298,20 @@ $colors: mergeColorMaps(("twitter-blue": ($twitter-blue, $white)), $colors)
|
|||
margin-bottom: 1rem
|
||||
|
||||
.footer
|
||||
hr
|
||||
margin: 1rem 0
|
||||
height: 1px
|
||||
background-color: $footer-hover-blue
|
||||
|
||||
.align-item-centered
|
||||
align-items: flex-end
|
||||
|
||||
+mobile
|
||||
text-align: center
|
||||
|
||||
li
|
||||
padding: 6px 0
|
||||
|
||||
&.is-dark
|
||||
background-color: $secondary
|
||||
|
||||
|
|
@ -150,7 +320,9 @@ $colors: mergeColorMaps(("twitter-blue": ($twitter-blue, $white)), $colors)
|
|||
font-size: 1.1rem
|
||||
|
||||
&:hover
|
||||
color: $grey-light
|
||||
color: $footer-hover-blue
|
||||
|
||||
|
||||
|
||||
// Ensures sticky footer glued to the bottom of the page
|
||||
.page
|
||||
|
|
@ -163,20 +335,51 @@ $colors: mergeColorMaps(("twitter-blue": ($twitter-blue, $white)), $colors)
|
|||
|
||||
.is-navbar-version
|
||||
margin-left: 1rem
|
||||
background-color: $success
|
||||
background-color: $light-blue
|
||||
color: white
|
||||
border: 1px solid $success
|
||||
border: 1px solid $light-blue
|
||||
padding: .25rem .5rem
|
||||
border-radius: $radius-small
|
||||
border-radius: 5px
|
||||
|
||||
& + .navbar-dropdown
|
||||
display: block
|
||||
position: absolute
|
||||
top: 100%
|
||||
background: white
|
||||
|
||||
.has-dropdown
|
||||
.navbar-dropdown
|
||||
display: none
|
||||
|
||||
&.is-active
|
||||
display: block !important
|
||||
|
||||
.is-hoverable
|
||||
.navbar-link::after
|
||||
display: none
|
||||
|
||||
+mobile
|
||||
display: block
|
||||
|
||||
.navbar-link
|
||||
color: #2C2C2C
|
||||
font-weight: bold
|
||||
|
||||
&:hover
|
||||
color: $light-blue
|
||||
|
||||
.navbar-dropdown
|
||||
border-top: none
|
||||
.section
|
||||
padding: 4rem 1.5rem 6rem
|
||||
|
||||
&.is-black
|
||||
background-color: $black
|
||||
|
||||
|
||||
.is-home-page
|
||||
.notification
|
||||
margin: 4rem 0
|
||||
|
||||
|
||||
p
|
||||
font-weight: bold
|
||||
font-size: 1.5rem !important
|
||||
|
|
@ -188,7 +391,6 @@ $colors: mergeColorMaps(("twitter-blue": ($twitter-blue, $white)), $colors)
|
|||
&:hover
|
||||
text-decoration: underline !important
|
||||
|
||||
|
||||
.buttons
|
||||
margin-top: 2.5rem
|
||||
|
||||
|
|
|
|||
|
|
@ -41,13 +41,16 @@ params:
|
|||
- "4.0"
|
||||
- "3.0"
|
||||
description:
|
||||
brief: "A distributed transactional key-value database"
|
||||
brief: "TiKV is a highly scalable, low latency, and easy to use <br/> key-value database."
|
||||
briefMobile: "TiKV is a highly scalable, low latency, and easy to use key-value database."
|
||||
long: "Based on the design of [Google Spanner](https://ai.google/research/pubs/pub39966) and [HBase](https://hbase.apache.org), but simpler to manage and without dependencies on any distributed filesystem"
|
||||
fonts:
|
||||
sansserif: "Titillium Web"
|
||||
monospace: "Inconsolata"
|
||||
logos:
|
||||
white: "img/logos/horizontal/white/tikv-horizontal-white.png"
|
||||
colorLogoWhiteFont: "img/logos/horizontal/color/tikv-horizontal-color-logo-white-font.png"
|
||||
white: "img/logos/horizontal/white/tikv-horizontal-white.svg"
|
||||
white-deprecated: "img/logos/horizontal/white-deprecated/tikv-horizontal-white.png"
|
||||
color: "img/logos/horizontal/color/tikv-horizontal-color.png"
|
||||
black: "img/logos/horizontal/black/tikv-horizontal-black.png"
|
||||
cncf: "img/logos/cncf-color.png"
|
||||
|
|
|
|||
|
|
@ -9,7 +9,9 @@ menu:
|
|||
|
||||
This page walks you through a simple demonstration of performing compare-and-swap (CAS) in TiKV.
|
||||
|
||||
In RawKV, compare-and-swap (CAS) is an atomic instruction used in multithreading to achieve synchronization, which is the atomic equivalent of:
|
||||
In RawKV, compare-and-swap (CAS) is an atomic instruction to achieve synchronization between multiple threads.
|
||||
|
||||
Performing CAS is an atomic equivalent of executing the following code:
|
||||
|
||||
```
|
||||
prevValue = get(key);
|
||||
|
|
@ -19,17 +21,19 @@ if (prevValue == request.prevValue) {
|
|||
return prevValue;
|
||||
```
|
||||
|
||||
The atomicity guarantees that the new value is calculated based on up-to-date information; if the value had been updated by another thread in the meantime, the write would fail.
|
||||
The atomicity guarantees that the new value is calculated based on the up-to-date information. If the value is updated by another thread at the same time, the write would fail.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Please install TiUP, jshell, download tikv-client jars and start a TiKV Cluster according to [TiKV in 5 Minutes](../../tikv-in-5-minutes).
|
||||
Make sure that you have installed TiUP, jshell, download tikv-client JAR files, and start a TiKV cluster according to [TiKV in 5 Minutes](../../tikv-in-5-minutes).
|
||||
|
||||
## Step 1: Write the code to test CAS
|
||||
## Verify CAS
|
||||
|
||||
Let's write an example to verify that CAS works.
|
||||
To verify whether CAS works, take the following steps.
|
||||
|
||||
Save the following script to file `test_raw_cas.java`.
|
||||
### Step 1: Write the code to test CAS
|
||||
|
||||
Save the following script to the `test_raw_cas.java` file.
|
||||
|
||||
```java
|
||||
import java.util.Optional;
|
||||
|
|
@ -73,21 +77,26 @@ client.close();
|
|||
session.close();
|
||||
```
|
||||
|
||||
## Step 2: Run the code
|
||||
### Step 2: Run the code
|
||||
|
||||
```bash
|
||||
jshell --class-path tikv-client-java.jar:slf4j-api.jar --startup test_raw_cas.java
|
||||
```
|
||||
|
||||
The example output is as follows:
|
||||
|
||||
```bash
|
||||
put key=Hello value=CAS
|
||||
get key=Hello result=CAS
|
||||
cas key=Hello value=CAS newValue=NewValue
|
||||
get key=Hello result=NewValue
|
||||
```
|
||||
|
||||
As we can see, after calling `compareAndSet` the value `CAS` is replaced by `newValue`.
|
||||
As in the example output, after calling `compareAndSet`, the value `CAS` is replaced by `newValue`.
|
||||
|
||||
{{< warning >}}
|
||||
Users must set `conf.setEnableAtomicForCAS(true)` to ensure linearizability of `CAS` when used together with `put`, `delete`, `batch_put`, or `batch_delete`.
|
||||
|
||||
To guarantee the atomicity of CAS, write operations like `put` or `delete` in atomic mode are more expensive.
|
||||
- To ensure the linearizability of `CAS` when it is used together with `put`, `delete`, `batch_put`, or `batch_delete`, you must set `conf.setEnableAtomicForCAS(true)`.
|
||||
|
||||
- To guarantee the atomicity of CAS, write operations such as `put` or `delete` in atomic mode take more resources.
|
||||
{{< /warning >}}
|
||||
|
|
|
|||
|
|
@ -11,21 +11,22 @@ This chapter walks you through a simple demonstration of how TiKV's distributed
|
|||
|
||||
## Prerequisites
|
||||
|
||||
Please start a TiKV Cluster and install tikv-client python package according to [TiKV in 5 Minutes](../../tikv-in-5-minutes).
|
||||
Before you start, ensure that you have set up a TiKV cluster and installed the `tikv-client` Python package according to [TiKV in 5 Minutes](../../tikv-in-5-minutes).
|
||||
|
||||
{{< warning >}}
|
||||
TiKV Java Client's Transaction API is not released, so Python Client example is used here.
|
||||
TiKV Java client's Transaction API has not been released yet, so the Python client is used in this example.
|
||||
{{< /warning >}}
|
||||
|
||||
## Step 1: Test snapshot isolation
|
||||
## Test snapshot isolation
|
||||
|
||||
Transaction isolation is one of the foundations of database transaction processing. Isolation is one of the four key properties of a transaction (commonly referred as ACID).
|
||||
|
||||
TiKV implements [Snapshot Isolation (SI)](https://en.wikipedia.org/wiki/Snapshot_isolation) consistency, which means
|
||||
- all reads made in a transaction will see a consistent snapshot of the database (in practice it reads the last committed values that existed at the time it started)
|
||||
- the transaction itself will successfully commit only if no updates it has made conflict with any concurrent updates made since that snapshot
|
||||
TiKV implements [Snapshot Isolation (SI)](https://en.wikipedia.org/wiki/Snapshot_isolation) consistency, which means that:
|
||||
|
||||
Let's try the following example to test TiKV's snapshot isolation.
|
||||
- all reads made in a transaction will see a consistent snapshot of the database (in practice TiKV Client reads the last committed values that exist when TiKV Client starts);
|
||||
- the transaction will successfully commit only if the updates that a transaction has made do not conflict with the concurrent updates made by other transactions since that snapshot.
|
||||
|
||||
The following example shows how to test TiKV's snapshot isolation.
|
||||
|
||||
Save the following script to file `test_snapshot_isolation.py`.
|
||||
|
||||
|
|
@ -75,15 +76,15 @@ python3 test_snapshot_isolation.py
|
|||
[(b'k1', b'Snapshot'), (b'k2', b'Isolation')]
|
||||
```
|
||||
|
||||
As we can see, `snapshot1` cannot read the data before and after `txn2` is commited, which means `snapshot1` can see a consistent snapshot of the database.
|
||||
From the above example, you can find that `snapshot1` cannot read the data before and after `txn2` is commited. This indicates that `snapshot1` can see a consistent snapshot of the database.
|
||||
|
||||
## Step 2: Try optimistic transaction model
|
||||
## Try optimistic transaction model
|
||||
|
||||
TiKV supports distributed transactions using either pessimistic or optimistic transaction models.
|
||||
|
||||
TiKV uses the optimistic transaction model by default. With optimistic transactions, conflicting changes are detected as part of a transaction commit. This helps improve the performance when concurrent transactions are infrequently modifying the same rows, because the process of acquiring row locks can be skipped.
|
||||
TiKV uses the optimistic transaction model by default. With optimistic transactions, conflicting changes are detected as part of a transaction commit. This helps improve the performance when concurrent transactions infrequently modify the same rows, because the process of acquiring row locks can be skipped.
|
||||
|
||||
Let's try the following example to test TiKV with optimistic transaction model.
|
||||
The following example shows how to test TiKV with optimistic transaction model.
|
||||
|
||||
Save the following script to file `test_optimistic.py`.
|
||||
|
||||
|
|
@ -123,13 +124,13 @@ python3 test_optimistic.py
|
|||
Exception: KeyError WriteConflict
|
||||
```
|
||||
|
||||
As we can see, with optimistic transactions conflicting changes are detected when the transaction commits.
|
||||
From the above example, you can find that with optimistic transactions, conflicting changes are detected when the transaction commits.
|
||||
|
||||
## Step 3: Try pessimistic transaction model
|
||||
## Try pessimistic transaction model
|
||||
|
||||
In the optimistic transaction model, transactions might fail to be committed because of write–write conflict in heavy contention scenarios. In the case that concurrent transactions frequently modify the same rows (a conflict), pessimistic transactions may perform better than optimistic transactions.
|
||||
In the optimistic transaction model, transactions might fail to be committed because of write–write conflict in heavy contention scenarios. In the case that concurrent transactions frequently modify the same rows (a conflict), pessimistic transactions might perform better than optimistic transactions.
|
||||
|
||||
Let’s try the following example to test TiKV with pessimistic transaction model.
|
||||
The following example shows how to test TiKV with pessimistic transaction model.
|
||||
|
||||
Save the following script to file `test_pessimistic.py`.
|
||||
|
||||
|
|
@ -168,4 +169,4 @@ python3 test_pessimistic.py
|
|||
Exception: KeyError
|
||||
```
|
||||
|
||||
As we can see, with pessimistic transactions conflicting changes are detected at the moment of data writing.
|
||||
From the above example, you can find that with pessimistic transactions, conflicting changes are detected at the moment of data writing.
|
||||
|
|
|
|||
|
|
@ -1,10 +1,220 @@
|
|||
---
|
||||
title: Fault tolerance
|
||||
description: TODO
|
||||
title: Fault Tolerance and Recovery
|
||||
description: Learn how TiKV recovers from failures
|
||||
menu:
|
||||
"5.1":
|
||||
parent: Features
|
||||
weight: 2
|
||||
---
|
||||
|
||||
TODO
|
||||
This page walks you through a simple demonstration of how TiKV recovers from failures and continues to provide services during failures.
|
||||
|
||||
1. Start a 6-node local cluster.
|
||||
2. Run a sample workload via [go-ycsb](https://github.com/pingcap/go-ycsb), then kill a node to simulate a failure, and see how the cluster seamlessly continues.
|
||||
3. Leave that node offline for long enough to watch the cluster repair itself by re-replicating missing data to other nodes.
|
||||
4. Increase to 5-way replication, then simultaneously take two nodes offline, and again see how the cluster continues uninterrupted.
|
||||
|
||||
|
||||
## Prerequisites
|
||||
|
||||
1. Install [TiUP](https://github.com/pingcap/tiup) version **v1.5.2** or above as described in [TiKV in 5 Minutes](../../tikv-in-5-minutes)
|
||||
2. Install [client-py](https://github.com/tikv/client-py) to interact with the TiKV cluster.
|
||||
|
||||
## Step 1. Start a 6-node cluster
|
||||
|
||||
Use `tiup playground` command to launch a 6-node local cluster.
|
||||
|
||||
```sh
|
||||
tiup playground --mode tikv-slim --kv 6
|
||||
```
|
||||
|
||||
This command will give you a hint about components' addresses. It will be used in the following steps.
|
||||
|
||||
```
|
||||
Playground Bootstrapping...
|
||||
Start pd instance
|
||||
Start tikv instance
|
||||
Start tikv instance
|
||||
Start tikv instance
|
||||
Start tikv instance
|
||||
Start tikv instance
|
||||
Start tikv instance
|
||||
PD client endpoints: [127.0.0.1:2379]
|
||||
To view the Prometheus: http://127.0.0.1:44549
|
||||
To view the Grafana: http://127.0.0.1:3000
|
||||
```
|
||||
|
||||
{{< info >}}
|
||||
Each region contains 3 replicas according to the default configuration.
|
||||
{{< /info >}}
|
||||
|
||||
## Step 2. Write data
|
||||
|
||||
On another terminal session, use [go-ycsb](https://github.com/pingcap/go-ycsb) to launch a workload.
|
||||
|
||||
1. Clone the `go-ycsb` from GitHub.
|
||||
|
||||
```sh
|
||||
git clone https://github.com/pingcap/go-ycsb.git
|
||||
```
|
||||
|
||||
2. Build the application from the source.
|
||||
|
||||
```sh
|
||||
make
|
||||
```
|
||||
|
||||
3. Load a workload using `go-ycsb` with **10000** keys.
|
||||
|
||||
```sh
|
||||
./bin/go-ycsb load tikv -P workloads/workloada -p tikv.pd="127.0.0.1:2379" -p tikv.type="raw" -p recordcount=1000000
|
||||
```
|
||||
|
||||
This command will output the following content:
|
||||
|
||||
```
|
||||
Run finished, takes 11.722575701s
|
||||
INSERT - Takes(s): 11.7, Count: 10000, OPS: 855.2, Avg(us): 18690, Min(us): 11262, Max(us): 61304, 99th(us): 36000, 99.9th(us): 58000, 99.99th(us): 62000
|
||||
```
|
||||
## Step 3. Verify the data importing.
|
||||
|
||||
Within python3.5+ REPL environment, you can scan all the keys that just inserted by `go-ycsb` and assert the count of them is `recordcount` in the `go-ycsb` command above.
|
||||
|
||||
```python
|
||||
>>> from tikv_client import RawClient
|
||||
>>> client = RawClient.connect("127.0.0.1:2379")
|
||||
>>> len(client.scan_keys(None, None, 10000))
|
||||
10000
|
||||
```
|
||||
|
||||
The evaluation of the last expression should be **10000**, as the `recordcount` specified in the `go-ycsb` command.
|
||||
|
||||
|
||||
## Step 4. Run a sample workload.
|
||||
|
||||
Go to the source directory of `go-ycsb`, use the following command to run the `workloada` from YCSB benchmark, simulating multiple client connections, each performing mixed 50% read and 50% write operations.
|
||||
|
||||
```sh
|
||||
./bin/go-ycsb run tikv -P workloads/workloada -p tikv.pd="127.0.0.1:2379" -p tikv.type="raw" -p tikv.conncount=16 -p threadcount=16 -p recordcount=10000 -p operationcount=1000000
|
||||
```
|
||||
|
||||
You'll see per-operation statistics print to standard output every second.
|
||||
|
||||
```
|
||||
...
|
||||
READ - Takes(s): 10.0, Count: 7948, OPS: 796.2, Avg(us): 395, Min(us): 72, Max(us): 20545, 99th(us): 2000, 99.9th(us): 19000, 99.99th(us): 21000
|
||||
UPDATE - Takes(s): 10.0, Count: 7945, OPS: 796.8, Avg(us): 19690, Min(us): 11589, Max(us): 40429, 99th(us): 34000, 99.9th(us): 41000, 99.99th(us): 41000
|
||||
READ - Takes(s): 20.0, Count: 15858, OPS: 793.6, Avg(us): 380, Min(us): 68, Max(us): 20545, 99th(us): 2000, 99.9th(us): 3000, 99.99th(us): 21000
|
||||
UPDATE - Takes(s): 20.0, Count: 15799, OPS: 791.1, Avg(us): 19834, Min(us): 10505, Max(us): 41090, 99th(us): 35000, 99.9th(us): 40000, 99.99th(us): 41000
|
||||
...
|
||||
```
|
||||
|
||||
{{< info >}}
|
||||
This workload above will run several minutes, you will have enough time to simulate a node failure described as follows.
|
||||
{{< /info >}}
|
||||
|
||||
## Step 5. Check the workload
|
||||
|
||||
1. Go to the [Grafana](https://grafana.com) page at [http://127.0.0.1:3000](http://127.0.0.1:3000)
|
||||
|
||||
2. Login with default username `admin` and password `admin`
|
||||
|
||||
3. Go to dashboard **playground-tikv-summary**, the OPS information is in panel **gRPC message count** in row **gRPC**.
|
||||
|
||||
{{< figure
|
||||
src="/img/docs/check-ops.png"
|
||||
width="80"
|
||||
number="1" >}}
|
||||
|
||||
4. By default, TiKV replicates all data 3 times and balances it across all stores. To see this balance, go to page **playground-overview** and check the region count across all nodes. In this example, we load a small amount of data, thus only one region is presented:
|
||||
|
||||
{{< figure
|
||||
src="/img/docs/fault-tolerance-region-count.png"
|
||||
width="80"
|
||||
number="1" >}}
|
||||
|
||||
## Step 6. Simulate a single node failure
|
||||
|
||||
To understand fault tolerance in TiKV, it's important to review a few concepts from the [architecture](https://tikv.org/docs/5.1/reference/architecture/overview/#system-architecture).
|
||||
|
||||
| Concept | Description |
|
||||
| -------------- | :--------------------------------------------------------------------------------------------------------------: |
|
||||
| **Raft Group** | Each replica of a region is called Peer. All of such peers form a raft group. |
|
||||
| **Leader** | In every raft group, there is a unique role called leader, are responsible for read/write requests from clients. |
|
||||
|
||||
|
||||
Notice that all read/write operations are handled by the leader of the region group, we are going to stop the only one leader in the cluster, and check the load continuity and cluster health.
|
||||
|
||||
|
||||
1. Go to Grafana dashboard **playground-overview**, the leader distribution is in panel **leader** in row **TiKV**.
|
||||
|
||||
2. In the example, the local process that open port `20180` hold only one leader in the cluster. Use the following command to stop the process.
|
||||
|
||||
```sh
|
||||
kill -STOP $(lsof -i:20180 | grep tikv | head -n1 | awk '{print $2}')
|
||||
```
|
||||
|
||||
## Step 7. Check load continuity and cluster health
|
||||
|
||||
1. Check the leader distribution again, you will find the leader is moving to another store.
|
||||
|
||||
{{< figure
|
||||
src="/img/docs/fault-tolerance-leader-recover.png"
|
||||
width="80"
|
||||
number="1" >}}
|
||||
|
||||
2. Check the gRPC OPS, you will find there is a small duration that the TiKV is unavailable because the leader was down. However, the workload is back online as soon as the [election](https://raft.github.io/raft.pdf) is completed.
|
||||
|
||||
{{< figure
|
||||
src="/img/docs/fault-tolerance-ops.png"
|
||||
width="80"
|
||||
number="1" >}}
|
||||
|
||||
## Step 8. Prepare for two simultaneous node failures
|
||||
|
||||
At this point, the cluster has recovered. In the example above, we stop the leader of the cluster which result in 5 stores are alive. Then, a new leader is presented after a while. We are going to increase the region replicas of TiKV to 5, stop 2 non-leader nodes simultaneously and check the cluster status.
|
||||
|
||||
{{< info >}}
|
||||
While using `tiup ctl`, an explicit version of the component is needed. In this example, it's v5.1.0.
|
||||
{{< /info >}}
|
||||
1. Increase replicas to the cluster:
|
||||
|
||||
```sh
|
||||
tiup ctl:v5.1.0 pd config set max-replicas 5
|
||||
```
|
||||
|
||||
2. Stop 2 non-leader nodes simultaneously. In this example, we stop the processes that hold port `20181` and `20182` whose PID is `1009934` and `109941`.
|
||||
|
||||
```sh
|
||||
kill -STOP 1009934
|
||||
kill -STOP 1009941
|
||||
```
|
||||
|
||||
## Step 9. Check load continuity and cluster health
|
||||
|
||||
1. Like before, go to the Grafana and follow **playground-tikv-summary** -> **gRPC** -> **gRPC message count**. You will find there is no impact on our workload continuity because the leader is still alive.
|
||||
|
||||
{{< figure
|
||||
src="/img/docs/fault-tolerance-workload.png"
|
||||
width="80"
|
||||
number="1" >}}
|
||||
|
||||
2. To verify this further, we could use `client-py` to read/write some data to prove our cluster is still available.
|
||||
|
||||
```python
|
||||
>>> from tikv_client import RawClient
|
||||
>>> client = RawClient.connect("127.0.0.1:2379")
|
||||
>>> len(client.scan_keys(None, None, 10240))
|
||||
10000
|
||||
>>> client.put(b'key', b'value')
|
||||
>>> len(client.scan_keys(None, None, 10240))
|
||||
10001
|
||||
```
|
||||
## Step 10. Clean up
|
||||
|
||||
1. Back to the terminal session that you just started the TiKV cluster and press `ctrl-c` and wait for the cluster to stop.
|
||||
2. You can destroy the cluster by:
|
||||
|
||||
```sh
|
||||
tiup clean --all
|
||||
```
|
||||
|
|
|
|||
|
|
@ -7,10 +7,12 @@ menu:
|
|||
weight: 2
|
||||
---
|
||||
|
||||
TiKV offers the following key features:
|
||||
|
||||
| Feature | Description |
|
||||
| ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| [Replication and rebalancing](../replication-and-rebalancing) | With the [Placement Driver](/docs/3.0/concepts/architecture#placement-driver) and carefully designed Raft groups, TiKV excels in horizontal scalability and can easily scale to 100+ terabytes of data. |
|
||||
| [Fault tolerance and auto-recovery](../fault-tolerance) | TiKV achieves fault tolerance through replicating data to multiple nodes via the Raft consensus algorithm. |
|
||||
| [TTL (Time to Live) on RawKV](../ttl) | RawKV supports TTL, which means expired Key-Value pairs will be cleared automatically. |
|
||||
| [CAS (Compare And Swap) on RawKV](../cas) | RawKV supports compare-and-swap operation, which is an atomic instruction used in multi-threading to achieve synchronization. |
|
||||
| [Distributed Transaction](../distributed-dransaction) | Similar to Google's [Spanner](https://ai.google/research/pubs/pub39966), TiKV supports externally consistent distributed transactions. |
|
||||
| [Replication and rebalancing](../replication-and-rebalancing) | With the [Placement Driver](/docs/3.0/concepts/architecture#placement-driver) and carefully designed Raft groups, TiKV excels in horizontal scalability and can easily scale to over 100 terabytes of data. |
|
||||
| [High fault tolerance and auto-recovery](../fault-tolerance) | TiKV applies the Raft consensus algorithm to replicate data to multiple nodes, thus achieving high fault tolerance. |
|
||||
| [TTL (Time to Live) on RawKV](../ttl) | RawKV supports TTL to automatically clear expired Key-Value pairs. |
|
||||
| [CAS (Compare And Swap) on RawKV](../cas) | RawKV supports the compare-and-swap operation to achieve synchronization in multi-threading. |
|
||||
| [Distributed Transaction](../distributed-dransaction) | Similar to [Google Spanner](https://ai.google/research/pubs/pub39966), TiKV supports externally consistent distributed transactions. |
|
||||
|
|
|
|||
|
|
@ -7,15 +7,18 @@ menu:
|
|||
weight: 3
|
||||
---
|
||||
|
||||
This page walks you through a simple demonstration of how to use TTL on RawKV.
|
||||
This page walks you through a simple demonstration of how to use TTL (Time To Live) on RawKV. TTL is a data clearing mechanism that automatically deletes data after a specified period of time. For example:
|
||||
|
||||
- If TTL is not used, the data written to TiKV will always exist in TiKV unless it is manually deleted.
|
||||
- If TTL is used and the TTL time of a key is set to one hour, the data of the key will be automatically deleted by TiKV after one hour.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Please install TiUP, jshell and download tikv-client jars according to [TiKV in 5 Minutes](../../tikv-in-5-minutes).
|
||||
Before you start, ensure that you have installed TiUP and jshell, and have downloaded the `tikv-client` JARS file according to [TiKV in 5 Minutes](../../tikv-in-5-minutes).
|
||||
|
||||
## Step 1: Config TiKV to enable TTL
|
||||
|
||||
TTL is disabled by default. Create a file `tikv.yaml` using the following content to enable TTL.
|
||||
TTL is disabled by default. You need to create a file `tikv.yaml` using the following configuration to enable TTL.
|
||||
|
||||
```yaml
|
||||
[storage]
|
||||
|
|
@ -24,7 +27,7 @@ enable-ttl = true
|
|||
|
||||
## Step 2: Start TiKV Cluster
|
||||
|
||||
For the purpose of this tutorial, you need only one TiKV node, so use the `tiup playground` command.
|
||||
For this tutorial, only one TiKV node is needed, so the `tiup playground` command is used.
|
||||
|
||||
Show TiUP version:
|
||||
|
||||
|
|
@ -46,7 +49,7 @@ tiup playground --kv.config tikv.yaml
|
|||
|
||||
## Step 3: Write the code to test TTL
|
||||
|
||||
Let's write an example to verify that TTL works.
|
||||
The following example shows how to verify the TTL works.
|
||||
|
||||
Save the following script to file `test_raw_ttl.java`.
|
||||
|
||||
|
|
@ -101,4 +104,4 @@ value: "v2"
|
|||
]
|
||||
```
|
||||
|
||||
As we can see, `k1` is automatically deleted after it's TTL is expired.
|
||||
After running the above code, you can find that `k1` is automatically deleted when its TTL is expired.
|
||||
|
|
|
|||
|
|
@ -7,20 +7,22 @@ menu:
|
|||
weight: 1
|
||||
---
|
||||
|
||||
This document provides a fast-lane tutorial to get started with TiKV, which includes:
|
||||
- setting up a local TiKV cluster with the default options,
|
||||
- monitoring the TiKV cluster,
|
||||
- writing data to and reading data from the TiKV cluster.
|
||||
This tutorial provides you a quick way to get started with TiKV, including the following operations:
|
||||
|
||||
- [Set up a local TiKV cluster with the default options](#set-up-a-local-tikv-cluster-with-the-default-options)
|
||||
- [Monitor the TiKV cluster](#monitor-the-cluster)
|
||||
- [Write data to and read data from the TiKV cluster](#write-data-to-and-read-data-from-the-tikv-cluster)
|
||||
- [Stop and delete a TiKV cluster](#stop-and-delete-the-tikv-cluster)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Ensure that you are using MacOS or Linux.
|
||||
Before you start, ensure that you are using macOS or Linux.
|
||||
|
||||
{{< warning >}}
|
||||
The following steps are only for test environments. For production environments please refer to [Install TiKV](../../deploy/install/install/).
|
||||
This quick-start tutorial is only for test environments. For production environments, refer to [Install TiKV](../../deploy/install/install/).
|
||||
{{< /warning >}}
|
||||
|
||||
## Step 1: Install a Playground TiKV Cluster
|
||||
## Set up a local TiKV cluster with the default options
|
||||
|
||||
1. Install TiUP by executing the following command:
|
||||
|
||||
|
|
@ -30,139 +32,149 @@ The following steps are only for test environments. For production environments
|
|||
|
||||
2. Set the TiUP environment variables:
|
||||
|
||||
Redeclare the global environment variables:
|
||||
1. Redeclare the global environment variables:
|
||||
|
||||
```bash
|
||||
source .bash_profile
|
||||
```
|
||||
```bash
|
||||
source .bash_profile
|
||||
```
|
||||
|
||||
Confirm whether TiUP is installed:
|
||||
2. Confirm whether TiUP is installed:
|
||||
|
||||
```bash
|
||||
tiup
|
||||
```
|
||||
```bash
|
||||
tiup
|
||||
```
|
||||
|
||||
3. If TiUP is already installed, update the TiUP playground component to the latest version:
|
||||
3. If TiUP is already installed, update the TiUP Playground component to the latest version:
|
||||
|
||||
```bash
|
||||
tiup update --self && tiup update playground
|
||||
```
|
||||
|
||||
4. Use TiUP playground to start a local TiKV cluster
|
||||
|
||||
Show TiUP version:
|
||||
4. Use TiUP Playground to start a local TiKV cluster. Before you do that, check your TiUP version using the following command:
|
||||
|
||||
```bash
|
||||
tiup -v
|
||||
```
|
||||
|
||||
version >= 1.5.0:
|
||||
- If your TiUP version is v1.5.2 or later, execute the following command to start a local TiKV cluster:
|
||||
|
||||
```bash
|
||||
tiup playground --mode tikv-slim
|
||||
```
|
||||
```bash
|
||||
tiup playground --mode tikv-slim
|
||||
```
|
||||
|
||||
version < 1.5.0:
|
||||
- If your TiUP version is earlier than v1.5.2, execute the following command to start a local TiKV cluster:
|
||||
|
||||
```bash
|
||||
tiup playground
|
||||
```
|
||||
```bash
|
||||
tiup playground
|
||||
```
|
||||
|
||||
{{< info >}}
|
||||
Refer to [TiUP playground document](https://docs.pingcap.com/tidb/stable/tiup-playground) to find more TiUP playground commands.
|
||||
Refer to [TiUP playground document](https://docs.pingcap.com/tidb/stable/tiup-playground) for more TiUP Playground commands.
|
||||
{{< /info >}}
|
||||
|
||||
## Step 2: Monitor the cluster
|
||||
## Monitor the TiKV cluster
|
||||
|
||||
Open [http://127.0.0.1:3000](http://127.0.0.1:3000) and login to the Grafana (username: admin password: admin).
|
||||
After the TiKV cluster is started using TiUP Playground, to monitor the cluster metrics, perform the following steps:
|
||||
|
||||
Open `TiKV-Summary` page on Grafana to find the metrics of your TiKV cluster.
|
||||
1. Open your browser, access [http://127.0.0.1:3000](http://127.0.0.1:3000), and then log in to the Grafana Dashboard.
|
||||
|
||||
## Step 3: Hello, World!
|
||||
By default, the username is `admin` and the password is `admin`.
|
||||
|
||||
### Java
|
||||
2. Open the `TiKV-Summary` page on the Grafana Dashboard and find the monitoring metrics of your TiKV cluster.
|
||||
|
||||
1. Download jars
|
||||
## Write data to and read data from the TiKV cluster
|
||||
|
||||
To write to and read from the TiKV cluster, you can use Java, Go, Rust, C, or Python script.
|
||||
|
||||
The following two examples use Java and Python respectively to show how to write "Hello World!" to TiKV.
|
||||
|
||||
### Use Java
|
||||
|
||||
1. Download the JAR files using the following commands:
|
||||
|
||||
```bash
|
||||
curl -o tikv-client-java.jar https://download.pingcap.org/tikv-client-java-3.2.0-SNAPSHOT.jar
|
||||
curl -o tikv-client-java.jar https://download.pingcap.org/tikv-client-java-3.2.0-SNAPSHOT.jar && \
|
||||
curl -o slf4j-api.jar https://repo1.maven.org/maven2/org/slf4j/slf4j-api/1.7.16/slf4j-api-1.7.16.jar
|
||||
```
|
||||
|
||||
2. Install `jshell` (include in JDK >= 9)
|
||||
2. Install `jshell`. The JDK version should be 9.0 or later.
|
||||
|
||||
3. Try `RAW KV` API
|
||||
3. Try the `RAW KV` API.
|
||||
|
||||
Save the following script to file `test_raw.java`.
|
||||
1. Save the following script to the `test_raw.java` file.
|
||||
|
||||
```java
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import org.tikv.common.TiConfiguration;
|
||||
import org.tikv.common.TiSession;
|
||||
import org.tikv.kvproto.Kvrpcpb;
|
||||
import org.tikv.raw.RawKVClient;
|
||||
import org.tikv.shade.com.google.protobuf.ByteString;
|
||||
```java
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import org.tikv.common.TiConfiguration;
|
||||
import org.tikv.common.TiSession;
|
||||
import org.tikv.kvproto.Kvrpcpb;
|
||||
import org.tikv.raw.RawKVClient;
|
||||
import org.tikv.shade.com.google.protobuf.ByteString;
|
||||
|
||||
TiConfiguration conf = TiConfiguration.createRawDefault("127.0.0.1:2379");
|
||||
TiSession session = TiSession.create(conf);
|
||||
RawKVClient client = session.createRawClient();
|
||||
TiConfiguration conf = TiConfiguration.createRawDefault("127.0.0.1:2379");
|
||||
TiSession session = TiSession.create(conf);
|
||||
RawKVClient client = session.createRawClient();
|
||||
|
||||
// put
|
||||
client.put(ByteString.copyFromUtf8("k1"), ByteString.copyFromUtf8("Hello"));
|
||||
client.put(ByteString.copyFromUtf8("k2"), ByteString.copyFromUtf8(","));
|
||||
client.put(ByteString.copyFromUtf8("k3"), ByteString.copyFromUtf8("World"));
|
||||
client.put(ByteString.copyFromUtf8("k4"), ByteString.copyFromUtf8("!"));
|
||||
client.put(ByteString.copyFromUtf8("k5"), ByteString.copyFromUtf8("Raw KV"));
|
||||
// put
|
||||
client.put(ByteString.copyFromUtf8("k1"), ByteString.copyFromUtf8("Hello"));
|
||||
client.put(ByteString.copyFromUtf8("k2"), ByteString.copyFromUtf8(","));
|
||||
client.put(ByteString.copyFromUtf8("k3"), ByteString.copyFromUtf8("World"));
|
||||
client.put(ByteString.copyFromUtf8("k4"), ByteString.copyFromUtf8("!"));
|
||||
client.put(ByteString.copyFromUtf8("k5"), ByteString.copyFromUtf8("Raw KV"));
|
||||
|
||||
// get
|
||||
Optional<ByteString> result = client.get(ByteString.copyFromUtf8("k1"));
|
||||
System.out.println(result.get().toStringUtf8());
|
||||
// get
|
||||
Optional<ByteString> result = client.get(ByteString.copyFromUtf8("k1"));
|
||||
System.out.println(result.get().toStringUtf8());
|
||||
|
||||
// batch get
|
||||
List<Kvrpcpb.KvPair> list =client.batchGet(new ArrayList<ByteString>() {{
|
||||
add(ByteString.copyFromUtf8("k1"));
|
||||
add(ByteString.copyFromUtf8("k3"));
|
||||
}});
|
||||
System.out.println(list);
|
||||
// batch get
|
||||
List<Kvrpcpb.KvPair> list =client.batchGet(new ArrayList<ByteString>() {{
|
||||
add(ByteString.copyFromUtf8("k1"));
|
||||
add(ByteString.copyFromUtf8("k3"));
|
||||
}});
|
||||
System.out.println(list);
|
||||
|
||||
// scan
|
||||
list = client.scan(ByteString.copyFromUtf8("k1"), ByteString.copyFromUtf8("k6"), 10);
|
||||
System.out.println(list);
|
||||
// scan
|
||||
list = client.scan(ByteString.copyFromUtf8("k1"), ByteString.copyFromUtf8("k6"), 10);
|
||||
System.out.println(list);
|
||||
|
||||
// close
|
||||
client.close();
|
||||
session.close();
|
||||
```
|
||||
// close
|
||||
client.close();
|
||||
session.close();
|
||||
```
|
||||
|
||||
Run the test script
|
||||
2. Run the `test_raw.java` script to write "Hello World!" to TiKV:
|
||||
|
||||
```bash
|
||||
jshell --class-path tikv-client-java.jar:slf4j-api.jar --startup test_raw.java
|
||||
```bash
|
||||
jshell --class-path tikv-client-java.jar:slf4j-api.jar --startup test_raw.java
|
||||
```
|
||||
|
||||
Hello
|
||||
[key: "k1"
|
||||
value: "Hello"
|
||||
, key: "k3"
|
||||
value: "World"
|
||||
]
|
||||
[key: "k1"
|
||||
value: "Hello"
|
||||
, key: "k2"
|
||||
value: ","
|
||||
, key: "k3"
|
||||
value: "World"
|
||||
, key: "k4"
|
||||
value: "!"
|
||||
, key: "k5"
|
||||
value: "Raw KV"
|
||||
]
|
||||
```
|
||||
The output is as follows:
|
||||
|
||||
### Python
|
||||
```bash
|
||||
Hello
|
||||
[key: "k1"
|
||||
value: "Hello"
|
||||
, key: "k3"
|
||||
value: "World"
|
||||
]
|
||||
[key: "k1"
|
||||
value: "Hello"
|
||||
, key: "k2"
|
||||
value: ","
|
||||
, key: "k3"
|
||||
value: "World"
|
||||
, key: "k4"
|
||||
value: "!"
|
||||
, key: "k5"
|
||||
value: "Raw KV"
|
||||
]
|
||||
```
|
||||
|
||||
1. Install `tikv-client` python package
|
||||
### Use Python
|
||||
|
||||
1. Install the `tikv-client` python package.
|
||||
|
||||
```bash
|
||||
pip3 install -i https://test.pypi.org/simple/ tikv-client
|
||||
|
|
@ -172,88 +184,100 @@ Open `TiKV-Summary` page on Grafana to find the metrics of your TiKV cluster.
|
|||
This package requires Python 3.5+.
|
||||
{{< /info >}}
|
||||
|
||||
2. Try `RAW KV` API
|
||||
2. Use either the `RAW KV` API or `TXN KV` API to write data to TiKV.
|
||||
|
||||
Save the following python script to file `test_raw.py`.
|
||||
- Try the `RAW KV` API.
|
||||
|
||||
```python
|
||||
from tikv_client import RawClient
|
||||
1. Save the following Python script to the `test_raw.py` file.
|
||||
|
||||
client = RawClient.connect("127.0.0.1:2379")
|
||||
```python
|
||||
from tikv_client import RawClient
|
||||
|
||||
# put
|
||||
client.put(b"k1", b"Hello")
|
||||
client.put(b"k2", b",")
|
||||
client.put(b"k3", b"World")
|
||||
client.put(b"k4", b"!")
|
||||
client.put(b"k5", b"Raw KV")
|
||||
client = RawClient.connect("127.0.0.1:2379")
|
||||
|
||||
# get
|
||||
print(client.get(b"k1"))
|
||||
# put
|
||||
client.put(b"k1", b"Hello")
|
||||
client.put(b"k2", b",")
|
||||
client.put(b"k3", b"World")
|
||||
client.put(b"k4", b"!")
|
||||
client.put(b"k5", b"Raw KV")
|
||||
|
||||
# batch get
|
||||
print(client.batch_get([b"k1", b"k3"]))
|
||||
# get
|
||||
print(client.get(b"k1"))
|
||||
|
||||
# scan
|
||||
print(client.scan(b"k1", end=b"k5", limit=10, include_start=True, include_end=True))
|
||||
```
|
||||
# batch get
|
||||
print(client.batch_get([b"k1", b"k3"]))
|
||||
|
||||
Run the test script
|
||||
# scan
|
||||
print(client.scan(b"k1", end=b"k5", limit=10, include_start=True, include_end=True))
|
||||
```
|
||||
|
||||
```bash
|
||||
python3 test_raw.py
|
||||
2. Run the `test_raw.py` script to write "Hello World!" to TiKV:
|
||||
|
||||
b'Hello'
|
||||
[(b'k3', b'World'), (b'k1', b'Hello')]
|
||||
[(b'k1', b'Hello'), (b'k2', b','), (b'k3', b'World'), (b'k4', b'!'), (b'k5', b'Raw KV')]
|
||||
```
|
||||
```bash
|
||||
python3 test_raw.py
|
||||
```
|
||||
|
||||
3. Try `TXN KV` API
|
||||
The output is as follows:
|
||||
|
||||
Save the following python script to file `test_txn.py`.
|
||||
```bash
|
||||
b'Hello'
|
||||
[(b'k3', b'World'), (b'k1', b'Hello')]
|
||||
[(b'k1', b'Hello'), (b'k2', b','), (b'k3', b'World'), (b'k4', b'!'), (b'k5', b'Raw KV')]
|
||||
```
|
||||
|
||||
```python
|
||||
from tikv_client import TransactionClient
|
||||
- Try the `TXN KV` API.
|
||||
|
||||
client = TransactionClient.connect("127.0.0.1:2379")
|
||||
1. Save the following Python script to the `test_txn.py` file.
|
||||
|
||||
# put
|
||||
txn = client.begin()
|
||||
txn.put(b"k1", b"Hello")
|
||||
txn.put(b"k2", b",")
|
||||
txn.put(b"k3", b"World")
|
||||
txn.put(b"k4", b"!")
|
||||
txn.put(b"k5", b"TXN KV")
|
||||
txn.commit()
|
||||
```python
|
||||
from tikv_client import TransactionClient
|
||||
|
||||
snapshot = client.snapshot(client.current_timestamp())
|
||||
client = TransactionClient.connect("127.0.0.1:2379")
|
||||
|
||||
# get
|
||||
print(snapshot.get(b"k1"))
|
||||
# put
|
||||
txn = client.begin()
|
||||
txn.put(b"k1", b"Hello")
|
||||
txn.put(b"k2", b",")
|
||||
txn.put(b"k3", b"World")
|
||||
txn.put(b"k4", b"!")
|
||||
txn.put(b"k5", b"TXN KV")
|
||||
txn.commit()
|
||||
|
||||
# batch get
|
||||
print(snapshot.batch_get([b"k1", b"k3"]))
|
||||
snapshot = client.snapshot(client.current_timestamp())
|
||||
|
||||
# scan
|
||||
print(snapshot.scan(b"k1", end=b"k5", limit=10, include_start=True, include_end=True))
|
||||
```
|
||||
# get
|
||||
print(snapshot.get(b"k1"))
|
||||
|
||||
Run the test script
|
||||
# batch get
|
||||
print(snapshot.batch_get([b"k1", b"k3"]))
|
||||
|
||||
```bash
|
||||
python3 test_txn.py
|
||||
# scan
|
||||
print(snapshot.scan(b"k1", end=b"k5", limit=10, include_start=True, include_end=True))
|
||||
```
|
||||
|
||||
b'Hello'
|
||||
[(b'k3', b'World'), (b'k1', b'Hello')]
|
||||
[(b'k1', b'Hello'), (b'k2', b','), (b'k3', b'World'), (b'k4', b'!'), (b'k5', b'TXN KV')]
|
||||
```
|
||||
2. Run the `test_txn.py` script to write "Hello World!" to TiKV:
|
||||
|
||||
## Step 4: Stop and delete the cluster.
|
||||
```bash
|
||||
python3 test_txn.py
|
||||
```
|
||||
|
||||
1. Back to the terminal session that you just started the TiKV cluster and press `Ctrl + C` and wait for the cluster to stop.
|
||||
The output is as follows:
|
||||
|
||||
2. You can destroy the cluster by:
|
||||
```bash
|
||||
b'Hello'
|
||||
[(b'k3', b'World'), (b'k1', b'Hello')]
|
||||
[(b'k1', b'Hello'), (b'k2', b','), (b'k3', b'World'), (b'k4', b'!'), (b'k5', b'TXN KV')]
|
||||
```
|
||||
|
||||
## Stop and delete the TiKV cluster
|
||||
|
||||
If you do not need the local TiKV cluster anymore, you can stop and delete it.
|
||||
|
||||
1. To stop the TiKV cluster, get back to the terminal session in which you have started the TiKV cluster. Press <kbd>Ctrl</kbd> + <kbd>C</kbd> and wait for the cluster to stop.
|
||||
|
||||
2. After the cluster is stopped, to delete the cluster, execute the following command:
|
||||
|
||||
```sh
|
||||
tiup clean --all
|
||||
```
|
||||
```
|
||||
|
|
|
|||
|
|
@ -0,0 +1,189 @@
|
|||
---
|
||||
title: Benchmark
|
||||
description: How to make a benchmark over a TiKV cluster
|
||||
menu:
|
||||
"5.1":
|
||||
parent: Deploy
|
||||
weight: 3
|
||||
---
|
||||
|
||||
TiKV delivers predictable throughput and latency at all scales on commodity hardware. This page provides an step-by-step tutorial about industry-standard benchmarks [YCSB](https://github.com/brianfrankcooper/YCSB) on TiKV.
|
||||
|
||||
## Step 1. Setup the environment.
|
||||
|
||||
1. Prepare 1 node for the YCSB benchmark worker, 1 node for PD, 3 nodes for TiKV.
|
||||
|
||||
Here is the recommended hardware configuration:
|
||||
|
||||
| **Component** | **CPU** | **Memory** | **Storage** | **Network** | **Instance** |
|
||||
| ------------- | ---------------- | -------------- | --------------- | ----------- | ------------------------------- |
|
||||
| YSCB worker | 8 cores or above | 8 GB or above | no requirements | Gigabit LAN | 1 |
|
||||
| PD | 4 cores or above | 8 GB or above | SAS, 200 GB+ | Gigabit LAN | 1 |
|
||||
| Monitor | 4 cores or above | 8 GB or above | SAS, 200 GB+ | Gigabit LAN | 1 (can be the same as PD nodes) |
|
||||
| TiKV | 8 cores or above | 32 GB or above | SSD, 200 GB+ | Gigabit LAN | 3 |
|
||||
|
||||
{{< info >}}
|
||||
Use local SSD instance store volumes. Local SSDs are low latency disks attached to each node, which maximizes performance. We do not recommend using network-attached block storage. We highly recommend you depoly TiKV over NVMe SSDs in order to maximizes the ability of it.
|
||||
{{< /info >}}
|
||||
|
||||
2. Prepare services for the control node and component nodes.
|
||||
|
||||
For the control node, we require:
|
||||
|
||||
| package | version | comment |
|
||||
| :------ | :------------: | :------------------ |
|
||||
| sshpass | 1.06 or above | remote control |
|
||||
| TiUP | 0.6.2 or above | depoly TiKV cluster |
|
||||
|
||||
For the component node:
|
||||
|
||||
| package | version | comment |
|
||||
| :------ | :-------------: | :------------------------: |
|
||||
| sshpass | 1.06 or above | remote control |
|
||||
| numa | 2.0.12 or above | memory allocation strategy |
|
||||
| tar | no requirements | unzip |
|
||||
|
||||
For the YCSB node:
|
||||
|
||||
| package | version | comment |
|
||||
| :-------------------------------------------- | :-------------: | :-------: |
|
||||
| [go-ycsb](https://github.com/pingcap/go-ycsb) | no requirements | benchmark |
|
||||
|
||||
|
||||
{{< info >}}
|
||||
You can install [TiUP](https://github.com/pingcap/tiup) as described in [TiKV in 5 Minutes](../../tikv-in-5-minutes).
|
||||
{{< /info >}}
|
||||
|
||||
## Step 2. Deploy a cluster
|
||||
|
||||
1. We could use the following topology to deploy our benchmark cluster via `tiup cluster`. **For more information, see [Production Deployment](../../install/production)**. Save the content below as `topology.yaml`:
|
||||
```yaml
|
||||
global:
|
||||
user: "tikv"
|
||||
ssh_port: 22
|
||||
deploy_dir: "/tikv-deploy"
|
||||
data_dir: "/tikv-data"
|
||||
server_configs: {}
|
||||
pd_servers:
|
||||
- host: 10.0.1.1
|
||||
tikv_servers:
|
||||
- host: 10.0.1.2
|
||||
- host: 10.0.1.3
|
||||
- host: 10.0.1.4
|
||||
monitoring_servers:
|
||||
- host: 10.0.1.5
|
||||
grafana_servers:
|
||||
- host: 10.0.1.6
|
||||
```
|
||||
|
||||
2. Deploy the cluster:
|
||||
```sh
|
||||
tiup cluster deploy [cluster-name] [cluster-version] topology.yaml
|
||||
```
|
||||
|
||||
3. Start the cluster:
|
||||
```sh
|
||||
tiup cluster start [cluster-name]
|
||||
```
|
||||
|
||||
4. You can inspect the cluster information:
|
||||
```sh
|
||||
tiup cluster display [cluster-name]
|
||||
```
|
||||
|
||||
## Step 3. Run a YCSB workload
|
||||
|
||||
YCSB has six kinds of workloads whose main difference are the portion of different operations:
|
||||
|
||||
1. Workload A: Update heavy workload
|
||||
2. Workload B: Read mostly workload
|
||||
3. Workload C: Read only
|
||||
4. Workload D: Read latest workload
|
||||
> In this workload, new records are inserted, and the most recently inserted records are the most popular. Application example: user status updates; people want to read the latest.
|
||||
5. Workload E: Short ranges
|
||||
> In this workload, short ranges of records are queried, instead of individual records. Application example: threaded conversations, where each scan is for the posts in a given thread (assumed to be clustered by thread id).
|
||||
6. Workload F: Read-modify-write
|
||||
> In this workload, the client will read a record, modify it, and write back the changes.
|
||||
|
||||
All six workloads have a data set which is **similar**. Workloads D and E insert records during the test run. Thus, to keep the database size consistent, we recommend the following sequence:
|
||||
|
||||
1. Load the database, using workload A's parameter file (workloads/workloada) .
|
||||
|
||||
```sh
|
||||
go-ycsb load -P workloads/workloada -p ...
|
||||
```
|
||||
|
||||
2. Run workload A (using workloads/workloada) for a variety of throughputs.
|
||||
|
||||
```sh
|
||||
go-ycsb run -P workloads/workloada -p ...
|
||||
```
|
||||
|
||||
3. Run workload B (using workloads/workloadb) for a variety of throughputs.
|
||||
4. Run workload C (using workloads/workloadc) for a variety of throughputs.
|
||||
5. Run workload F (using workloads/workloadf) for a variety of throughputs.
|
||||
6. Run workload D (using workloads/workloadd) for a variety of throughputs. This workload inserts records, increasing the size of the database.
|
||||
7. Delete the data in the database.
|
||||
> You need to destroy the cluster via `tiup cluster destroy [cluster-name]`, and delete the data directory of cluster. Otherwise, the remaining data of the cluster may impact the results of the following workload.
|
||||
8. Start a new tikv cluster, load a new data set using workload E's parameter file (workloads/workloade).
|
||||
9. Run workload E (using workloads/workloade) for a variety of throughputs. This workload inserts records, increasing the size of the database.
|
||||
|
||||
{{< info >}}
|
||||
If you trying to use more clients to benchmark, check [Running a Workload in Parallel](https://github.com/brianfrankcooper/YCSB/wiki/Running-a-Workload-in-Parallel).
|
||||
{{< /info >}}
|
||||
|
||||
For example, you can load a workload contains 10M records and 30M operations by:
|
||||
|
||||
```sh
|
||||
go-ycsb load tikv -P workloads/workloada -p tikv.pd="10.0.1.1:2379" -p tikv.type="raw" -p recordcount=10000000 -p operationcount=30000000
|
||||
```
|
||||
|
||||
After successfully loaded the data, you can launch it.
|
||||
|
||||
```sh
|
||||
go-ycsb run tikv -P workloads/workloada -p tikv.pd="10.0.1.1:2379" -p tikv.type="raw" -p recordcount=10000000 -p operationcount=30000000
|
||||
```
|
||||
|
||||
You can specify the concurrency of the workload client by `-p threadcount=`. Normally, the number should be the number of virtual CPU cores binded to the machine.
|
||||
|
||||
## Step 4. Inspect the benchmark results
|
||||
|
||||
While running `go-ycsb`, it will reports workload runtime information like the OPS, latency:
|
||||
|
||||
```
|
||||
...
|
||||
READ - Takes(s): 9.7, Count: 110092, OPS: 11380.1, Avg(us): 3822, Min(us): 236, Max(us): 342821, 99th(us): 51000, 99.9th(us): 59000, 99.99th(us): 339000
|
||||
UPDATE - Takes(s): 9.7, Count: 110353, OPS: 11408.8, Avg(us): 7760, Min(us): 944, Max(us): 344934, 99th(us): 59000, 99.9th(us): 65000, 99.99th(us): 339000
|
||||
READ - Takes(s): 19.7, Count: 229147, OPS: 11647.2, Avg(us): 3094, Min(us): 202, Max(us): 342821, 99th(us): 52000, 99.9th(us): 58000, 99.99th(us): 335000
|
||||
```
|
||||
|
||||
It will report the summary of the workload whlie the workload is done.
|
||||
|
||||
```
|
||||
Run finished, takes 4m25.292657267s
|
||||
READ - Takes(s): 265.0, Count: 4998359, OPS: 18864.7, Avg(us): 1340, Min(us): 181, Max(us): 342821, 99th(us): 11000, 99.9th(us): 51000, 99.99th(us): 73000
|
||||
UPDATE - Takes(s): 265.0, Count: 5001641, OPS: 18877.1, Avg(us): 5416, Min(us): 599, Max(us): 1231403, 99th(us): 53000, 99.9th(us): 276000, 99.99th(us): 772000
|
||||
```
|
||||
|
||||
{{< warning >}}
|
||||
If it report errors like `batch commands send error:EOF`, it relates to this [issue](https://github.com/pingcap/go-ycsb/issues/145).
|
||||
{{< /warning >}}
|
||||
|
||||
## Step 5. Find the maximum throughput.
|
||||
|
||||
There are two way the find the maximal throughput of the TiKV cluster.
|
||||
|
||||
1. Increasing the threadcount of the client.
|
||||
* You can increase the `threadcount` to the number of virtual cores of the machine. In some circumstances, it could reach the bottleneck of the TiKV cluster.
|
||||
2. Increasing the count of benchmark clients.
|
||||
* You can deploy more benchmark clients to increase the requests towards the TiKV cluster. Mutiple `go-ycsb` from different nodes could be launched simultaneously. And then you can summarise the result of these nodes.
|
||||
|
||||
Repeat the 2 steps above, the bottleneck of the TiKV cluster is reached while the QPS showed in the TiKV cluster's Grafana page is no longer increasing.
|
||||
|
||||
## Step 6. Clean up
|
||||
|
||||
You can destroy the cluster by:
|
||||
|
||||
```sh
|
||||
tiup cluster destroy [cluster-name]
|
||||
```
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
---
|
||||
title: Benchmark and Performance
|
||||
description: TODO
|
||||
menu:
|
||||
"5.1":
|
||||
parent: Deploy
|
||||
weight: 3
|
||||
---
|
||||
|
||||
TODO
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
title: Coprocessor
|
||||
title: Coprocessor Config
|
||||
description: Learn how to configure Coprocessor in TiKV.
|
||||
menu:
|
||||
"5.1":
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
title: gRPC
|
||||
title: gRPC Config
|
||||
description: Learn how to configure gRPC in TiKV.
|
||||
menu:
|
||||
"5.1":
|
||||
|
|
|
|||
|
|
@ -7,9 +7,9 @@ menu:
|
|||
weight: 2
|
||||
---
|
||||
|
||||
Though it's recommended to start with the default configurations when getting started with TiKV, TiKV features a large number of configuration parameters to tweak its behavior, which enables users to config the cluster to fit for the special application requirement.
|
||||
Although you are recommended to get started with TiKV using the default configuration, TiKV provides many configuration parameters to tweak its behavior, which allows you to configure the cluster to suit your special application requirements.
|
||||
|
||||
The following topics describes how to config different TiKV components:
|
||||
The following list of documents guide you on how to configure different TiKV components:
|
||||
|
||||
PD
|
||||
|
||||
|
|
@ -23,10 +23,10 @@ TiKV
|
|||
- [Security](../security): Use TLS security and review security procedures.
|
||||
- [Topology Lable](../topology): Use location awareness to improve resiliency and performance.
|
||||
- [Limit](../limit): Learn how to configure scheduling rate limit on stores.
|
||||
- [Region Merge](../region-merge): Tweak region merging.
|
||||
- [Region Merge](../region-merge): Tweak Region merging.
|
||||
- [RocksDB](../rocksdb): Tweak RocksDB configuration parameters.
|
||||
- [Raftstore](../raftstore): Learn how to configure Raftstore in TiKV.
|
||||
- [Titan](../titan): Enable titan to improve performance with large values.
|
||||
- [Titan](../titan): Enable Titan to improve performance with large values.
|
||||
- [Storage](../storage): Learn how to configure storage in TiKV.
|
||||
- [gRPC](../grpc): Learn how to configure gRPC in TiKV.
|
||||
- [Coprocessor](../coprocessor): Learn how to configure Coprocessor in TiKV.
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
title: Scheduling Limit
|
||||
title: Scheduling Limit Config
|
||||
description: Learn how to configure scheduling rate limit on stores.
|
||||
menu:
|
||||
"5.1":
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
title: Raftstore
|
||||
title: Raftstore Config
|
||||
description: Learn how to configure Raftstore in TiKV.
|
||||
menu:
|
||||
"5.1":
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
title: Region Merge
|
||||
title: Region Merge Config
|
||||
description: Learn how to configure Region Merge in TiKV.
|
||||
menu:
|
||||
"5.1":
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
title: RocksDB
|
||||
title: RocksDB Config
|
||||
description: Learn how to configure RocksDB engine in TiKV.
|
||||
menu:
|
||||
"5.1":
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
title: Security
|
||||
title: Security Config
|
||||
description: Keeping your TiKV secure
|
||||
menu:
|
||||
"5.1":
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
title: Storage
|
||||
title: Storage Config
|
||||
description: Learn how to configure storage in TiKV.
|
||||
menu:
|
||||
"5.1":
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
title: RocksDB Titan
|
||||
title: RocksDB Titan Config
|
||||
description: Learn how to enable Titan in TiKV.
|
||||
menu:
|
||||
"5.1":
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
title: Topology Lable
|
||||
title: Topology Lable Config
|
||||
description: Learn how to configure topology labels.
|
||||
menu:
|
||||
"5.1":
|
||||
|
|
|
|||
|
|
@ -7,9 +7,9 @@ menu:
|
|||
weight: 1
|
||||
---
|
||||
|
||||
This section introduces how to deploy and verify a TiKV cluster.
|
||||
This section introduces how to deploy and verify a TiKV cluster in the production environment.
|
||||
|
||||
- [Prerequisites](../prerequisites)
|
||||
- [Production Deployment](../production)
|
||||
- [Verify Cluster Status](../verify)
|
||||
- [Test Deployment](../test)
|
||||
- [Test Deployment](../test)
|
||||
|
|
@ -9,8 +9,8 @@ menu:
|
|||
|
||||
This section introduces how to monitor a TiKV cluster.
|
||||
|
||||
- [Monitoring Framework](../framework)
|
||||
- [Monitoring API](../api)
|
||||
- [Monitor Framework](../framework)
|
||||
- [Monitor API](../api)
|
||||
- [Deploy Monitoring Services](../deploy)
|
||||
- [Export Grafana Shapshots](../grafana)
|
||||
- [Key Metrics](../key-metrics)
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
---
|
||||
title: Operate TiKV
|
||||
description: Learn how to maintain and operate a TiKV cluster
|
||||
description: Learn how to maintain and operate a TiKV cluster.
|
||||
menu:
|
||||
"5.1":
|
||||
parent: Deploy
|
||||
weight: 5
|
||||
---
|
||||
|
||||
This section introduces how to maintain and operate a TiKV cluster.
|
||||
This section introduces how to maintain and operate a TiKV cluster, including the following operations:
|
||||
|
||||
- [Upgrade a TiKV cluster using TiUP](../upgrade)
|
||||
- [Scale out/in a TiKV cluster using TiUP](../scale)
|
||||
|
|
|
|||
|
|
@ -7,10 +7,10 @@ menu:
|
|||
weight: 5
|
||||
---
|
||||
|
||||
TiKV client for C++ is built on top of [TiKV Client in Rust](https://github.com/tikv/client-rust) via [cxx](https://github.com/dtolnay/cxx).
|
||||
|
||||
This client is still in the stage of prove-of-concept and under heavy development. You can track development at [tikv/client-cpp](https://github.com/tikv/client-cpp/) repository.
|
||||
|
||||
{{< warning >}}
|
||||
You are not suggested to use the C++ client for production use until it is released.
|
||||
Currently, the TiKV client for C++ is not released yet.
|
||||
{{< /warning >}}
|
||||
|
||||
The TiKV client for C++ is built on top of [TiKV client for Rust](https://github.com/tikv/client-rust) using [cxx](https://github.com/dtolnay/cxx).
|
||||
|
||||
This C++ client is still in the stage of proof-of-concept and under development. You can track the development progress at the [tikv/client-cpp](https://github.com/tikv/client-cpp/) repository.
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ menu:
|
|||
weight: 2
|
||||
---
|
||||
|
||||
TiKV client for go is still in the stage of prove-of-concept and under heavy development. You can track development at [tikv/client-go](https://github.com/tikv/client-go/) repository.
|
||||
TiKV Go Client is still in the stage of proof-of-concept and under development. You can track the development at [tikv/client-go](https://github.com/tikv/client-go/) repository.
|
||||
|
||||
{{< warning >}}
|
||||
You are not suggested to use the go client for production use until it is released.
|
||||
Before TiKV Go Client is officially released, it is not recommended to be used in a production environment.
|
||||
{{< /warning >}}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
title: TiKV Clients
|
||||
description: Interact with TiKV using the raw key-value API or the transactional key-value API
|
||||
description: Interact with TiKV using the raw key-value API or the transactional key-value API.
|
||||
menu:
|
||||
"5.1":
|
||||
parent: Develop
|
||||
|
|
@ -9,10 +9,10 @@ menu:
|
|||
|
||||
TiKV offers two APIs that you can interact with:
|
||||
|
||||
| API | Description | Atomicity | Use when... |
|
||||
| API | Description | Atomicity | Usage scenarios |
|
||||
|:------------- |:------------------------------------------------------------------------------------- |:------------- |:-------------------------------------------------------------------------------- |
|
||||
| Raw | A lower-level key-value API for interacting directly with individual key-value pairs. | Single key | Your application requires low latency and doesn't need distributed transactions. |
|
||||
| Transactional | A higher-level key-value API that provides ACID semantics. | Multiple keys | Your application requires distributed transactions. |
|
||||
| Raw | A lower-level key-value API to interact directly with individual key-value pairs | Single key | Your application requires low latency and does not involve distributed transactions. |
|
||||
| Transactional | A higher-level key-value API to provide ACID semantics. | Multiple keys | Your application requires distributed transactions. |
|
||||
|
||||
{{< warning >}}
|
||||
It is **not supported** to use both the raw and transactional APIs on the same keyspace.
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ menu:
|
|||
weight: 1
|
||||
---
|
||||
|
||||
This guide introduces how to interact with TiKV using [Java Client](https://github.com/tikv/client-java).
|
||||
This document guides you on how to use [Java Client](https://github.com/tikv/client-java) in TiKV.
|
||||
|
||||
{{< info >}}
|
||||
TiKV Java Client is developed and released using Java8. The minimum supported version of TiKV is 2.0.0.
|
||||
|
|
@ -25,9 +25,9 @@ To start, open the `pom.xml` of your project, and add the `tikv-client-java` as
|
|||
</dependency>
|
||||
```
|
||||
|
||||
## Raw key-value API
|
||||
## Try the Raw key-value API
|
||||
|
||||
Using a connected `org.tikv.raw.RawKVClient`, you can perform actions such as `put`, `get`, `delete` and `scan`:
|
||||
Using a connected `org.tikv.raw.RawKVClient`, you can perform actions such as `put`, `get`, `delete`, and `scan`:
|
||||
|
||||
```java
|
||||
import com.google.protobuf.ByteString;
|
||||
|
|
@ -73,9 +73,9 @@ for(Kvrpcpb.KvPair pair : list) {
|
|||
}
|
||||
```
|
||||
|
||||
These functions also have batch variants (`batchPut`, `batchGet`, `batchDelete` and `batchScan`), which offer considerably reduced network overhead and can result in dramatic performance increases under certain workloads.
|
||||
These functions also have batch variants (`batchPut`, `batchGet`, `batchDelete`, and `batchScan`) which considerably reduce network overhead and increase performance under certain workloads.
|
||||
|
||||
You can find all the functions that `RawKVClient` supports [here](https://github.com/tikv/client-java/blob/master/src/main/java/org/tikv/raw/RawKVClient.java).
|
||||
You can find all functions supported by `RawKVClient` [in this JAVA file](https://github.com/tikv/client-java/blob/master/src/main/java/org/tikv/raw/RawKVClient.java).
|
||||
|
||||
## Transactional key-value API
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ menu:
|
|||
|
||||
TiKV client for python is built on top of [TiKV Client in Rust](https://github.com/tikv/client-rust) via CFFI and [PyO3 Python binding](https://github.com/PyO3/pyo3).
|
||||
|
||||
This client is still in the stage of prove-of-concept and under heavy development. You can track development at [tikv/client-py](https://github.com/tikv/client-py/) repository.
|
||||
The Python client is still in the stage of proof-of-concept and under development. You can track the development at [tikv/client-py](https://github.com/tikv/client-py/) repository.
|
||||
|
||||
{{< warning >}}
|
||||
You should not use the Python client for production use until it is released.
|
||||
|
|
|
|||
|
|
@ -13,18 +13,18 @@ This guide introduces how to interact with TiKV using [Rust Client](https://gith
|
|||
The minimum supported version of Rust is 1.40. The minimum supported version of TiKV is 5.0.0.
|
||||
{{< /warning >}}
|
||||
|
||||
## Basic Types
|
||||
## Basic data types
|
||||
|
||||
Both RawKV API and TxnKV API use a few basic types:
|
||||
Both RawKV API and TxnKV API use the following basic data types:
|
||||
|
||||
* `Key`: a key in the store. `String` and `Vec<u8>` implement `Into<Key>`, so you can pass them directly into client functions.
|
||||
* `Value`: a value in the store; just an alias of `Vec<u8>`.
|
||||
* `KvPair`: a pair of a `Key` and a `Value`. It provides convenience methods for conversion to and from other types.
|
||||
* `BoundRange`: used for range related requests like `scan`. It implements `From` for Rust ranges so you can pass a Rust range of keys to the request, e.g., `client.delete_range(vec![]..)`.
|
||||
* `Key`: Refers to a key in the store. `String` and `Vec<u8>` implement `Into<Key>`, so you can pass them directly into client functions.
|
||||
* `Value`: Refers to a value in the store, which is an alias of `Vec<u8>`.
|
||||
* `KvPair`: Refers to a key-value pair. It provides convenient methods for conversion to and from other types.
|
||||
* `BoundRange`: Used for range related requests like `scan`. It implements `From` for Rust ranges so you can pass a Rust range of keys to the request. For example: `client.delete_range(vec![]..)`.
|
||||
|
||||
## Add the dependency
|
||||
## Add dependencies
|
||||
|
||||
To start, open the `Cargo.toml` of your project, and add the `tikv-client` as dependencies.
|
||||
Before you start, you need to add the `tikv-client` as a dependency in the `Cargo.toml` file of your project.
|
||||
|
||||
```toml
|
||||
[dependencies]
|
||||
|
|
@ -33,7 +33,7 @@ tikv-client = "0.1.0"
|
|||
|
||||
## Raw key-value API
|
||||
|
||||
Using a connected `tikv_client::RawClient`, you can perform actions such as `put`, `get`, `delete` and `scan`:
|
||||
With a connected `tikv_client::RawClient`, you can perform actions such as `put`, `get`, `delete`, and `scan`:
|
||||
|
||||
```rust
|
||||
let client = RawClient::new(vec!["127.0.0.1:2379"]).await?;
|
||||
|
|
@ -67,13 +67,13 @@ let result = client.scan("k1".to_owned().."k5".to_owned(), limit).await?;
|
|||
println!("{:?}", result);
|
||||
```
|
||||
|
||||
These functions also have batch variants (`batch_put`, `batch_get`, `batch_delete` and `batch_scan`), which offer considerably reduced network overhead and can result in dramatic performance improvements under certain workloads.
|
||||
These functions also have batch variants (`batch_put`, `batch_get`, `batch_delete` and `batch_scan`), which help to considerably reduce network overhead and greatly improve performance under certain workloads.
|
||||
|
||||
You can find all the functions that `RawClient` supports [here](https://github.com/tikv/client-rust#raw-requests).
|
||||
You can find all the functions that `RawClient` supports in the [Raw requests table](https://github.com/tikv/client-rust#raw-requests).
|
||||
|
||||
## Transactional key-value API
|
||||
|
||||
Using a connected `tikv_client::TransactionClient` you can then begin a transaction:
|
||||
With a connected `tikv_client::TransactionClient`, you can begin a transaction:
|
||||
|
||||
```rust
|
||||
use tikv_client::TransactionClient;
|
||||
|
|
@ -82,7 +82,7 @@ let txn_client = TransactionClient::new(vec!["127.0.0.1:2379"]).await?;
|
|||
let mut txn = txn_client.begin_optimistic().await?;
|
||||
```
|
||||
|
||||
Then it's possible to send commands like `get`, `set`, `delete`, and `scan`:
|
||||
Then you can send commands such as `get`, `set`, `delete`, and `scan`:
|
||||
|
||||
```rust
|
||||
let key = "Hello".to_owned();
|
||||
|
|
@ -125,7 +125,7 @@ result.for_each(|pair| println!("{:?}", pair));
|
|||
txn2.commit().await?;
|
||||
```
|
||||
|
||||
Commit these changes when you're ready, or roll back if you prefer to abort the operation:
|
||||
You can commit these changes when you are ready, or roll back if you prefer to abort the operation:
|
||||
|
||||
```rust
|
||||
if all_is_good {
|
||||
|
|
@ -135,6 +135,6 @@ if all_is_good {
|
|||
}
|
||||
```
|
||||
|
||||
These functions also have batch variants (`batch_put`, `batch_get`, `batch_delete` and `batch_scan`), which offer considerably reduced network overhead and can result in dramatic performance improvements under certain workloads.
|
||||
These functions also have batch variants (`batch_put`, `batch_get`, `batch_delete` and `batch_scan`), which help to considerably reduce network overhead and greatly improve performance under certain workloads.
|
||||
|
||||
You can find all the functions that `TransactionClient` supports [here](https://github.com/tikv/client-rust#transactional-requests).
|
||||
You can find all the functions that `TransactionClient` supports in the [Transactional requests table](https://github.com/tikv/client-rust#transactional-requests).
|
||||
|
|
|
|||
|
|
@ -19,15 +19,15 @@ if (prevValue == request.prevValue) {
|
|||
return prevValue;
|
||||
```
|
||||
|
||||
The atomicity guarantees that the new value is calculated based on up-to-date information; if the value had been updated by another thread in the meantime, the write would fail.
|
||||
The atomicity guarantees that the new value is calculated based on up-to-date information. If the value had been updated by another thread at the same time, the write would fail.
|
||||
|
||||
{{< warning >}}
|
||||
CAS can normally prevent problems from concurrent access, but suffers from [ABA problem](https://en.wikipedia.org/wiki/ABA_problem).
|
||||
Normally, CAS can prevent problems from the concurrent access, but suffers from the [ABA problem](https://en.wikipedia.org/wiki/ABA_problem).
|
||||
{{</ warning >}}
|
||||
|
||||
## Java
|
||||
|
||||
The following example shows a simple example of how to use the `CAS` API in java.
|
||||
The following example shows how to use `CAS` API in Java.
|
||||
|
||||
```java
|
||||
import java.util.Optional;
|
||||
|
|
@ -70,9 +70,9 @@ session.close();
|
|||
```
|
||||
|
||||
{{< warning >}}
|
||||
Users must set `conf.setEnableAtomicForCAS(true)` to ensure linearizability of `CAS` when used together with `put`, `delete`, `batch_put`, or `batch_delete`.
|
||||
You must set `conf.setEnableAtomicForCAS(true)` to ensure linearizability of `CAS` when using with `put`, `delete`, `batch_put`, or `batch_delete`.
|
||||
|
||||
To guarantee the atomicity of CAS, write operations like `put` or `delete` in atomic mode are more expensive.
|
||||
{{< /warning >}}
|
||||
|
||||
The code example used in this chapter can be found [here](https://github.com/marsishandsome/tikv-client-examples/blob/main/java-example/src/main/java/example/rawkv/CAS.java).
|
||||
The code example used in this chapter can be found [here](https://github.com/marsishandsome/tikv-client-examples/blob/main/java-example/src/main/java/example/rawkv/CAS.java).
|
||||
|
|
|
|||
|
|
@ -1,19 +1,19 @@
|
|||
---
|
||||
title: Get, Put and Delete
|
||||
description: How to use RawKV's basic operations such as Get, Put and Delete.
|
||||
title: Get, Put, and Delete
|
||||
description: How to use RawKV's basic operations such as Get, Put, and Delete.
|
||||
menu:
|
||||
"5.1":
|
||||
parent: RawKV
|
||||
weight: 1
|
||||
---
|
||||
|
||||
This document walks you through how to use RawKV's basic operations such as `Get`, `Put` and `Delete`.
|
||||
This document walks you through how to use RawKV's basic operations such as `Get`, `Put`, and `Delete`.
|
||||
|
||||
## Java
|
||||
|
||||
### Step 1: import
|
||||
### Import packages
|
||||
|
||||
First of all, import all the packages used in the example.
|
||||
First, import all necessary packages as shown in the example.
|
||||
|
||||
```java
|
||||
import java.util.Optional;
|
||||
|
|
@ -23,19 +23,19 @@ import org.tikv.common.TiSession;
|
|||
import org.tikv.raw.RawKVClient;
|
||||
```
|
||||
|
||||
`com.google.protobuf.ByteString` is used as the type of Key and Value.
|
||||
In the example above, `com.google.protobuf.ByteString` is used as the type of Key and Value.
|
||||
|
||||
To avoid conflict, `com.google.protobuf.ByteString` is shaded to `org.tikv.shade.com.google.protobuf.ByteString` and is included in the client package.
|
||||
To avoid conflict, `com.google.protobuf.ByteString` is shaded to `org.tikv.shade.com.google.protobuf.ByteString`, and is included in the client package.
|
||||
|
||||
### Step 2: create RawKVClient
|
||||
### Create RawKVClient
|
||||
|
||||
To connect to TiKV, a PD address `127.0.0.1:2379` is passed to `TiConfiguration`.
|
||||
To connect to TiKV, a PD address `127.0.0.1:2379` is passed to `TiConfiguration`.
|
||||
|
||||
{{< info >}}
|
||||
A comma is used to separate multiple PD addresses, e.g. `127.0.0.1:2379,127.0.0.2:2379,127.0.0.3:2379`.
|
||||
A comma is used to separate multiple PD addresses. For example, `127.0.0.1:2379,127.0.0.2:2379,127.0.0.3:2379`.
|
||||
{{< /info >}}
|
||||
|
||||
Using a connected `org.tikv.raw.RawKVClient`, you can perform actions such as `Get`, `Put` and `Delete`.
|
||||
Using the connected `org.tikv.raw.RawKVClient`, you can perform actions such as `Get`, `Put`, and `Delete`.
|
||||
|
||||
```java
|
||||
TiConfiguration conf = TiConfiguration.createRawDefault("127.0.0.1:2379");
|
||||
|
|
@ -43,7 +43,7 @@ TiSession session = TiSession.create(conf);
|
|||
RawKVClient client = session.createRawClient();
|
||||
```
|
||||
|
||||
### Step 3: put
|
||||
### Write data to TiKV
|
||||
|
||||
Using the `put` API, you can write a key-value pair to TiKV.
|
||||
|
||||
|
|
@ -53,7 +53,7 @@ ByteString value = ByteString.copyFromUtf8("RawKV");
|
|||
client.put(key, value);
|
||||
```
|
||||
|
||||
### Step 4: get
|
||||
### Read data from TiKV
|
||||
|
||||
Using the `get` API, you can get the value of a key from TiKV. If the key does not exist, `result.isPresent()` will be false.
|
||||
|
||||
|
|
@ -63,9 +63,9 @@ assert(result.isPresent());
|
|||
assert("RawKV".equals(result.get().toStringUtf8()));
|
||||
```
|
||||
|
||||
### Step 5: delete
|
||||
### Delete data from TiKV
|
||||
|
||||
Using the `delete` API, you can delete a key-value pair from TiKV.
|
||||
Using the `delete` API, you can delete a key-value pair from TiKV.
|
||||
|
||||
```java
|
||||
client.delete(key);
|
||||
|
|
@ -73,13 +73,13 @@ result = client.get(key);
|
|||
assert(!result.isPresent());
|
||||
```
|
||||
|
||||
### Step 6: close
|
||||
### Close working instances
|
||||
|
||||
Finally do not forget to close the `client` and `session` instance.
|
||||
Finally, do not forget to close the `client` and `session` instance.
|
||||
|
||||
```java
|
||||
client.close();
|
||||
session.close();
|
||||
```
|
||||
|
||||
The code example used in this chapter can be found [here](https://github.com/marsishandsome/tikv-client-examples/blob/main/java-example/src/main/java/example/rawkv/PutGetDelete.java).
|
||||
The code example used in this chapter can be found [here](https://github.com/marsishandsome/tikv-client-examples/blob/main/java-example/src/main/java/example/rawkv/PutGetDelete.java).
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
---
|
||||
title: RawKV
|
||||
description: How to interact with TiKV using RawKV API
|
||||
description: How to interact with TiKV using RawKV API.
|
||||
menu:
|
||||
"5.1":
|
||||
parent: Develop
|
||||
weight: 2
|
||||
---
|
||||
|
||||
TiKV supports both transactional (TxnKV) API and non-transactional (RawKV) API. This chapter walks you through a few demonstrations of how to use RawKV API.
|
||||
TiKV supports both transactional (TxnKV) API and non-transactional (RawKV) API. This chapter walks you through a few demonstrations about how to use RawKV API.
|
||||
|
||||
- [Put Get Delete](../put-get-delete)
|
||||
- [Scan](../scan)
|
||||
- [Time to Live (TTL)](../ttl)
|
||||
- [Compare And Swap (CAS)](../cas)
|
||||
|
||||
All the code examples used in this chapter can be found [here](https://github.com/marsishandsome/tikv-client-examples).
|
||||
To get the example code in this chapter, click [here](https://github.com/marsishandsome/tikv-client-examples).
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
title: Scan
|
||||
description: How to use RawKV's Scan API.
|
||||
description: Learn how to use RawKV's Scan API.
|
||||
menu:
|
||||
"5.1":
|
||||
parent: RawKV
|
||||
|
|
@ -11,14 +11,15 @@ This document walks you through how to use RawKV's `Scan` API.
|
|||
|
||||
## Java
|
||||
|
||||
### Scan with limit
|
||||
### Scan with `limit`
|
||||
|
||||
Using the `scan` API, you can scan key-value pairs from TiKV in a range (from a `startKey` to an `endKey`).
|
||||
Using the `Scan` API, you can scan key-value pairs from TiKV in a range (from a `startKey` to an `endKey`).
|
||||
|
||||
{{< info >}}
|
||||
`startKey` is inclusive, while `endKey` is exclusive.
|
||||
`startKey` is inclusive while `endKey` is exclusive.
|
||||
|
||||
To configure the `Scan` API to return a limited number of key-value pairs, you can use the `limit` argument as in the following example code:
|
||||
|
||||
The argument `limit` means that the `scan` API only returns a limited number of key-value pairs.
|
||||
{{< /info >}}
|
||||
|
||||
```java
|
||||
|
|
@ -53,7 +54,7 @@ session.close();
|
|||
|
||||
### Scan all data
|
||||
|
||||
The `scan` API only returns a limited number of key-value pairs. How can we fetch all the data in the range from `startKey` to `endKey`? The following example gives you a simple demo.
|
||||
The `Scan` API only returns a limited number of key-value pairs. If you want to fetch all the data in the range from `startKey` to `endKey`, refer to the following example code for a simple demo:
|
||||
|
||||
```java
|
||||
import java.util.List;
|
||||
|
|
@ -98,4 +99,4 @@ while(true) {
|
|||
}
|
||||
```
|
||||
|
||||
The code example used in this chapter can be found [here](https://github.com/marsishandsome/tikv-client-examples/blob/main/java-example/src/main/java/example/rawkv/Scan.java).
|
||||
To get the example code above, click [here](https://github.com/marsishandsome/tikv-client-examples/blob/main/java-example/src/main/java/example/rawkv/Scan.java).
|
||||
|
|
@ -1,26 +1,35 @@
|
|||
---
|
||||
title: TTL
|
||||
description: How to use RawKV's TTL API
|
||||
description: How to use TTL via RawKV API.
|
||||
menu:
|
||||
"5.1":
|
||||
parent: RawKV
|
||||
weight: 4
|
||||
---
|
||||
|
||||
This document walks you through how to use RawKV’s `TTL` API.
|
||||
TiKV provides the Time To Live (TTL) support via the RawKV API. This document provides two examples to show you how to set TTL via the RawKV API.
|
||||
|
||||
## Config TiKV to enable TTL
|
||||
## Enable TTL
|
||||
|
||||
TTL is disabled by default. Use the following TiKV configuration to enable TTL.
|
||||
Before you set TTL via RawKV API, you must enable TTL in your TiKV cluster. TTL is disabled by default. To enable it, set the following TiKV configuration to `true`.
|
||||
|
||||
```yaml
|
||||
[storage]
|
||||
enable-ttl = true
|
||||
```
|
||||
|
||||
## Java
|
||||
## Use TTL in Java client
|
||||
|
||||
The following example shows a simple example of how to use `TTL` int `put` API.
|
||||
After TTL is enabled in TiKV, you can set it in Java client via the `put` API or `CAS` API. The following two examples show how to set TTL via the `put` API and `CAS` API.
|
||||
|
||||
### Set TTL in the `put` API
|
||||
|
||||
In the following examples, these operations are performed:
|
||||
|
||||
1. Two key-value pairs, `(k1, v1)` and `(k2, v2)`, are written into TiKV via the `put` API. `(k1, v1)` is written with a TTL of 10 seconds. `(k2, v2)` is written without TTL.
|
||||
2. Try to read `k1` and `k2` from TiKV. Both values are returned.
|
||||
3. Let TiKV sleep for 10 seconds, which is the time of TTL.
|
||||
4. Try to read `k1` and `k2` from TiKV. `v2` is returned, but `v1` is not returned because the TTL has expired.
|
||||
|
||||
```java
|
||||
import java.util.Optional;
|
||||
|
|
@ -33,44 +42,46 @@ TiConfiguration conf = TiConfiguration.createRawDefault("127.0.0.1:2379");
|
|||
TiSession session = TiSession.create(conf);
|
||||
RawKVClient client = session.createRawClient();
|
||||
|
||||
// write (k1, v1) with ttl=10 seconds
|
||||
// Writes the (k1, v1) into TiKV with a TTL of 10 seconds.
|
||||
client.put(ByteString.copyFromUtf8("k1"), ByteString.copyFromUtf8("v1"), 10);
|
||||
|
||||
// write (k2, v2) without ttl
|
||||
// Writes the (k2, v2) into TiKV without TTL.
|
||||
client.put(ByteString.copyFromUtf8("k2"), ByteString.copyFromUtf8("v2"));
|
||||
|
||||
// get k1 returns v1
|
||||
// Reads k1 from TiKV. v1 is returned.
|
||||
Optional<ByteString> result1 = client.get(ByteString.copyFromUtf8("k1"));
|
||||
assert(result1.isPresent());
|
||||
assert("v1".equals(result1.get().toStringUtf8()));
|
||||
System.out.println(result1.get().toStringUtf8());
|
||||
|
||||
// get k2 returns v2
|
||||
// Reads k2 from TiKV. v2 is returned.
|
||||
Optional<ByteString> result2 = client.get(ByteString.copyFromUtf8("k2"));
|
||||
assert(result2.isPresent());
|
||||
assert("v2".equals(result2.get().toStringUtf8()));
|
||||
System.out.println(result2.get().toStringUtf8());
|
||||
|
||||
// sleep 10 seconds
|
||||
// Let TiKV sleep for 10 seconds.
|
||||
System.out.println("Sleep 10 seconds.");
|
||||
Thread.sleep(10000);
|
||||
|
||||
// get k1 returns null, cause k1's ttl is expired
|
||||
// Reads k1 from TiKV. NULL is returned, because k1's TTL has expired.
|
||||
result1 = client.get(ByteString.copyFromUtf8("k1"));
|
||||
assert(!result1.isPresent());
|
||||
|
||||
// get k2 returns v2
|
||||
// Reads k2 from TiKV. v2 is returned.
|
||||
result2 = client.get(ByteString.copyFromUtf8("k2"));
|
||||
assert(result2.isPresent());
|
||||
assert("v2".equals(result2.get().toStringUtf8()));
|
||||
System.out.println(result2.get().toStringUtf8());
|
||||
|
||||
// close
|
||||
// Close
|
||||
client.close();
|
||||
session.close();
|
||||
```
|
||||
|
||||
`TTL` is also supported in the `CAS` API. Let's see an example.
|
||||
## Set TTL in the `CAS` API
|
||||
|
||||
You can also set TTL via the `CAS` API. See the following example:
|
||||
|
||||
```java
|
||||
import java.util.Optional;
|
||||
|
|
@ -80,7 +91,7 @@ import org.tikv.raw.RawKVClient;
|
|||
import org.tikv.shade.com.google.protobuf.ByteString;
|
||||
|
||||
TiConfiguration conf = TiConfiguration.createRawDefault("127.0.0.1:2379");
|
||||
// enable AtomicForCAS when using RawKVClient.compareAndSet or RawKVClient.putIfAbsent
|
||||
// Enables AtomicForCAS when using RawKVClient.compareAndSet or RawKVClient.putIfAbsent
|
||||
conf.setEnableAtomicForCAS(true);
|
||||
TiSession session = TiSession.create(conf);
|
||||
RawKVClient client = session.createRawClient();
|
||||
|
|
@ -89,29 +100,29 @@ ByteString key = ByteString.copyFromUtf8("Hello");
|
|||
ByteString value = ByteString.copyFromUtf8("CAS+TTL");
|
||||
ByteString newValue = ByteString.copyFromUtf8("NewValue");
|
||||
|
||||
// put
|
||||
// Writes data.
|
||||
client.put(key, value);
|
||||
|
||||
// cas with ttl = 10 seconds
|
||||
// CAS with TTL = 10 seconds
|
||||
client.compareAndSet(key, Optional.of(value), newValue, 10);
|
||||
|
||||
// get
|
||||
// Reads data.
|
||||
Optional<ByteString> result = client.get(key);
|
||||
assert(result.isPresent());
|
||||
assert("NewValue".equals(result.get().toStringUtf8()));
|
||||
System.out.println(result.get().toStringUtf8());
|
||||
|
||||
// sleep 10 seconds
|
||||
// Let TiKV sleep for 10 seconds.
|
||||
System.out.println("Sleep 10 seconds.");
|
||||
Thread.sleep(10000);
|
||||
|
||||
// get
|
||||
// Reads data.
|
||||
result = client.get(key);
|
||||
assert(!result.isPresent());
|
||||
|
||||
// close
|
||||
// Close
|
||||
client.close();
|
||||
session.close();
|
||||
```
|
||||
|
||||
The code example used in this chapter can be found [here](https://github.com/marsishandsome/tikv-client-examples/blob/main/java-example/src/main/java/example/rawkv/TTL.java).
|
||||
The example code above is available [here](https://github.com/marsishandsome/tikv-client-examples/blob/main/java-example/src/main/java/example/rawkv/TTL.java).
|
||||
|
|
|
|||
|
|
@ -1,16 +1,14 @@
|
|||
---
|
||||
title: CLI
|
||||
description: Command-Line Interface Tools used to administrate TiKV Cluster
|
||||
description: Command-line interface tools used to administrate TiKV clusters
|
||||
menu:
|
||||
"5.1":
|
||||
parent: Reference
|
||||
weight: 4
|
||||
---
|
||||
|
||||
There are several Command-Line Interface Tools involved in maintaining a TiKV deployment.
|
||||
You can use the following command-line interface tools to administrate TiKV clusters:
|
||||
|
||||
You can browse documentation on:
|
||||
|
||||
* [`tikv-ctl`](../tikv-ctl): The control plane tool for managing TiKV, both online or offline.
|
||||
* [`pd-ctl`](../pd-ctl): The control plane tool for managing PD.
|
||||
* [`tikv-ctl`](../tikv-ctl): A control plane tool for managing TiKV, both online and offline.
|
||||
* [`pd-ctl`](../pd-ctl): A control plane tool for managing PD.
|
||||
* [`pd-recover`](../pd-recover): A disaster recovery tool for PD.
|
||||
|
|
|
|||
|
|
@ -7,6 +7,6 @@ menu:
|
|||
weight: 3
|
||||
---
|
||||
|
||||
Starting with TiKV 4.0, TiUP, as the package manager, makes it far easier to manage different cluster components in the TiKV ecosystem.
|
||||
Starting with TiKV 4.0, TiUP, as the package manager, makes it easier to manage different cluster components in the TiKV ecosystem.
|
||||
|
||||
Please refer to [TiUP documentation guide](https://docs.pingcap.com/tidb/stable/tiup-documentation-guide) to find more TiUP commands and usages.
|
||||
For more TiUP commands and usages, refer to the [TiUP documentation guide](https://docs.pingcap.com/tidb/stable/tiup-documentation-guide).
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
---
|
||||
title: Architecture
|
||||
description: How TiKV works and how it was built
|
||||
description: How TiKV works and how it is built.
|
||||
menu:
|
||||
"5.1":
|
||||
parent: Reference
|
||||
weight: 1
|
||||
---
|
||||
|
||||
This section introduces how TiKV works and how it was built:
|
||||
This chapter introduces how TiKV works and how it is built:
|
||||
|
||||
- [Overview](../overview): The overview of TiKV architecture.
|
||||
- [Storage](../storage): Understand the storage layer of a TiKV cluster.
|
||||
- [Overview](../overview): Provides an overview of TiKV architecture.
|
||||
- [Storage](../storage): Introduces the storage layer of a TiKV cluster.
|
||||
- [Scheduling](../scheduling): Introduces the PD scheduling component in a TiKV cluster.
|
||||
- [Terminology](../terminology): TiKV and PD terminologies.
|
||||
- [Terminology](../terminology): Explains TiKV and PD terminologies.
|
||||
|
|
|
|||
|
|
@ -7,45 +7,49 @@ menu:
|
|||
weight: 1
|
||||
---
|
||||
|
||||
This page walks you through the overview of TiKV architecture.
|
||||
This page provides an overview of the TiKV architecture.
|
||||
|
||||
## System architecture
|
||||
|
||||
The overall architecture of TiKV is illustrated below:
|
||||
The overall architecture of TiKV is as follows:
|
||||
|
||||
{{< figure
|
||||
src="/img/tikv-architecture.png"
|
||||
caption="The architecture of TiKV"
|
||||
alt="TiKV architecture diagram" >}}
|
||||
|
||||
A TiKV cluster consists of 2 components:
|
||||
A TiKV cluster consists of the following components:
|
||||
|
||||
1. [A TiKV Cluster](./#tikv-cluster), which is responsible for storing key-value pair data.
|
||||
2. [A Placement Driver (PD) Cluster](./#pd-cluster), which works as the manager in a TiKV cluster.
|
||||
- [A group of TiKV nodes](./#tikv-cluster) storing key-value pair data
|
||||
- [A Placement Driver (PD) node](./#pd-cluster) working as the manager of the TiKV cluster
|
||||
|
||||
TiKV Clients interact with PD and TiKV through gRPC.
|
||||
TiKV clients interact with PD and TiKV through gRPC.
|
||||
|
||||
## TiKV Cluster
|
||||
## TiKV
|
||||
|
||||
TiKV stores data in RocksDB, which is a persistent and fast key-value store. This [article](/deep-dive/key-value-engine/rocksdb/) explains why RocksDB is selected.
|
||||
TiKV stores data in RocksDB, which is a persistent and fast key-value store. To learn why TiKV selects RocksDB to store data, see [RocksDB](/deep-dive/key-value-engine/rocksdb/).
|
||||
|
||||
With the [Raft](/deep-dive/consensus-algorithm/raft/) consensus algorithm, TiKV replicates data to multiple machines, ensures data consistency, and tolerates machine failures. Data is written through the interface of Raft instead of to RocksDB. With the implementation of Raft, TiKV becomes a distributed Key-Value storage, which can automatically recover the lost replicas in case of machine failures, keep the application unaffected.
|
||||
Implementing the [Raft](/deep-dive/consensus-algorithm/raft/) consensus algorithm, TiKV works as follows:
|
||||
|
||||
- TiKV replicates data to multiple machines, ensures data consistency, and tolerates machine failures.
|
||||
- TiKV data is written through the interface of Raft instead of directly to RocksDB.
|
||||
- TiKV becomes a distributed Key-Value storage, which can automatically recover lost replicas in case of machine failures and keep the applications unaffected.
|
||||
|
||||
Based on the Raft layer, TiKV provides two APIs that clients can interact with:
|
||||
|
||||
| API | Description | Atomicity | Use when... |
|
||||
| API | Description | Atomicity | Usage scenarios |
|
||||
|:------------- |:------------------------------------------------------------------------------------- |:------------- |:----------------------------------------------------------------------------- |
|
||||
| Raw | A lower-level key-value API for interacting directly with individual key-value pairs. | Single key | Your application requires low latency and doesn't use multi-key transactions. |
|
||||
| Transactional | A higher-level key-value API that provides snapshot isolation transaction. | Multiple keys | Your application requires distributed transactions. |
|
||||
| Raw | A lower-level key-value API to interact directly with individual key-value pairs | Single key | Your application requires low latency and does not involve multi-key transactions. |
|
||||
| Transactional | A higher-level key-value API to provide snapshot isolation transaction | Multiple keys | Your application requires distributed transactions. |
|
||||
|
||||
## PD Cluster
|
||||
## PD
|
||||
|
||||
As the manager in a TiKV cluster, the Placement Driver ([PD](https://github.com/tikv/pd)) provides two major functions: [Timestamp Oracle](./#timestamp-oracle) and [Region Scheduler](./#region-scheduler).
|
||||
As the manager in a TiKV cluster, the Placement Driver ([PD](https://github.com/tikv/pd)) provides the following functions:
|
||||
|
||||
### Timestamp Oracle
|
||||
- [Timestamp oracle](/deep-dive/distributed-transaction/timestamp-oracle/)
|
||||
|
||||
[Timestamp oracle](/deep-dive/distributed-transaction/timestamp-oracle/) plays a significant role in the Percolator Transaction model. PD implements such a service that hands out timestamps in strictly increasing order, which is a property required for the correct operation of the snapshot isolation protocol.
|
||||
Timestamp oracle plays a significant role in the Percolator transaction model. PD implements a service to hand out timestamps in the strictly increasing order, which is a property required for the correct operations of the snapshot isolation protocol.
|
||||
|
||||
### Region Scheduler
|
||||
- Region scheduler
|
||||
|
||||
Data in TiKV is organized as Regions, which are replicated on several stores. Someone needs to be responsible for deciding the storage location of each replica, which is the second job of PD.
|
||||
Data in TiKV is organized as Regions, which are replicated to several stores. PD, as the Region scheduler, decides the storage location of each replica.
|
||||
|
|
|
|||
|
|
@ -1,19 +1,21 @@
|
|||
---
|
||||
title: Terminologies
|
||||
description: TiKV and PD terminologies.
|
||||
description: Explain TiKV and PD terminologies.
|
||||
menu:
|
||||
"5.1":
|
||||
parent: Architecture
|
||||
weight: 4
|
||||
---
|
||||
|
||||
This document explains some important terminologies of TiKV and PD.
|
||||
|
||||
## Node
|
||||
|
||||
A TiKV **Node** is a physical node in the cluster, which could be a virtual machine, a container, etc. Within each Node, there can be one or more stores.
|
||||
A TiKV **Node** is a physical node in the cluster, which might be a virtual machine, a container, etc. Within each Node, there can be one or more stores.
|
||||
|
||||
The status for the Node, Store, and Region will be regularly reported to the Placement Driver.
|
||||
The Node, Store, and Region regularly report their status to the Placement Driver.
|
||||
|
||||
## Placement driver (PD)
|
||||
## Placement Driver (PD)
|
||||
|
||||
The Placement Driver (PD) is the cluster manager of TiKV. It periodically records the cluster information, makes decisions to move/split/merge TiKV Regions across nodes according to the application workload and storage capacities. This process is called **scheduling**.
|
||||
|
||||
|
|
@ -23,11 +25,11 @@ A replica of a Region is called a peer. Multiple peers of the same Region replic
|
|||
|
||||
## Raft
|
||||
|
||||
Data is distributed across TiKV instances via the [Raft consensus algorithm](https://raft.github.io/), which is based on the so-called [Raft paper](https://raft.github.io/raft.pdf) ("In Search of an Understandable Consensus Algorithm") from [Diego Ongaro](https://ongardie.net/diego/) and [John Ousterhout](https://web.stanford.edu/~ouster/cgi-bin/home.php).
|
||||
Data is distributed across TiKV instances via the [Raft consensus algorithm](https://raft.github.io/), which is based on the [Raft paper](https://raft.github.io/raft.pdf) ("In Search of an Understandable Consensus Algorithm") from [Diego Ongaro](https://ongardie.net/diego/) and [John Ousterhout](https://web.stanford.edu/~ouster/cgi-bin/home.php).
|
||||
|
||||
## Region
|
||||
|
||||
TiKV shards continuous ranges of keys into **Regions**, and replicates **Regions** via the Raft protocol. When data size increases until reaching a threshold, a Region will be split into multiple. Conversely, if the size of the Region shrinks due to data deletion, two adjacent Regions can be merged into one.
|
||||
TiKV shards continuous ranges of keys into **Regions**, and replicates **Regions** via the Raft protocol. When data size increases until a threshold is reached, a Region will be split into multiple ones. Conversely, if the size of the Region shrinks due to data deletion, two adjacent Regions can be merged into one.
|
||||
|
||||
## Store
|
||||
|
||||
|
|
@ -35,6 +37,6 @@ A **Store** is an instance of a TiKV server in which multiple peers are stored.
|
|||
|
||||
## Transaction
|
||||
|
||||
TiKV provides transactions that allow you to read and write across any keys with **Snapshot Isolation** regardless of the physical placement of the Region. TiKV also provides the pessimistic transactions that are semantically analogous to `SELECT ... FOR UPDATE` in SQL.
|
||||
TiKV provides transactions that allow you to read and write across any keys with **Snapshot Isolation** regardless of the physical placement of the Region. TiKV also provides the pessimistic transactions that are semantically similar to `SELECT ... FOR UPDATE` in SQL.
|
||||
|
||||
The underlying transaction model is similar to Google's [Percolator](https://ai.google/research/pubs/pub36726), a system built for processing updates to large data sets.
|
||||
|
|
@ -1,12 +1,12 @@
|
|||
---
|
||||
title: Reference
|
||||
description: Technical details about TiKV
|
||||
description: Learn about technical details of TiKV
|
||||
menu:
|
||||
"5.1":
|
||||
weight: 3
|
||||
---
|
||||
|
||||
This section includes technical details about TiKV:
|
||||
This chapter describes some technical details of TiKV:
|
||||
|
||||
- [TiKV Architecture](../architecture/introduction/)
|
||||
- [Query Layers](../query-layers/)
|
||||
|
|
|
|||
|
|
@ -1,33 +1,24 @@
|
|||
- name: Geo-replication
|
||||
description: TiKV uses the [Raft](https://raft.github.io/) consensus algorithm and the [Placement Driver](/docs/3.0/concepts/architecture#placement-driver) to support geo-replication.
|
||||
icon: fa-globe
|
||||
- name: Low and stable latency
|
||||
description: RawKV’s average response time less than 1 ms (P99=10 ms).
|
||||
icon: img/homepage/low-latency.svg
|
||||
featured: true
|
||||
- name: Horizontal scalability
|
||||
description: With the [Placement Driver](/docs/3.0/concepts/architecture#placement-driver) and carefully designed Raft groups, TiKV excels in horizontal scalability and can easily scale to 100+ terabytes of data.
|
||||
icon: fa-ruler-horizontal
|
||||
- name: High scalability
|
||||
description: With the [Placement Driver](/docs/5.1/reference/architecture/terminology/#placement-driver-pd) and carefully designed [Raft](https://raft.github.io/) groups, TiKV excels in horizontal scalability and can easily scale to 100+ terabytes of data. Scale-out your TiKV cluster to fit the data size growth without any impact on the application.
|
||||
icon: img/homepage/high-scalability.svg
|
||||
featured: true
|
||||
- name: Easy to use
|
||||
description: Run a single command to deploy a TiKV cluster with everything you need for production environments. Easily scale out or scale in the cluster with [TiUP](/docs/5.1/reference/tiup/) or TiKV operator.
|
||||
icon: img/homepage/easy-to-use.svg
|
||||
featured: true
|
||||
- name: Easy to maintain
|
||||
description: TiKV is based on the design of [Google Spanner](https://research.google/pubs/pub39966/) and [HBase](https://hbase.apache.org/), but simpler to manage without dependencies on any distributed file system.
|
||||
icon: img/homepage/easy-to-maintain.svg
|
||||
featured: true
|
||||
- name: Consistent distributed transactions
|
||||
description: Similar to Google's [Spanner](https://ai.google/research/pubs/pub39966), TiKV supports externally consistent distributed transactions.
|
||||
icon: fa-align-center
|
||||
description: Similar to Google’s [Spanner](https://research.google/pubs/pub39966/), TiKV (TxnKV mode) supports externally consistent distributed transactions.
|
||||
icon: img/homepage/consistent-distributed-transactions.svg
|
||||
featured: true
|
||||
- name: Coprocessor support
|
||||
description: Similar to [Hbase](https://hbase.apache.org), TiKV implements a coprocessor framework to support distributed computing.
|
||||
icon: fa-microchip
|
||||
- name: Adjustable consistency
|
||||
description: In RawKV and TxnKV modes, you can customize the balance between consistency and performance.
|
||||
icon: img/homepage/adjustable-consistency.svg
|
||||
featured: true
|
||||
- name: Automatic sharding
|
||||
description: TiKV shards your data into regions without manual intervention, reducing maintenance burden.
|
||||
icon: fa-boxes
|
||||
- name: Region balance
|
||||
description: TiKV supports rebalancing regions due to faults, workload, or topology needs.
|
||||
icon: fa-balance-scale
|
||||
- name: Dynamic membership
|
||||
description: Grow or shrink TiKV clusters dynamically, without the need for downtime.
|
||||
icon: fa-cogs
|
||||
- name: Rolling online updates
|
||||
description: Using supported deployment methods, safely upgrade TiKV clusters without worry.
|
||||
- name: Extensive Metric Suite
|
||||
description: Easily integrate TiKV into your infrastructure monitoring with extensive Prometheus reporting.
|
||||
icon: fa-eye
|
||||
- name: Flexible APIs
|
||||
description: Use transactional or raw gRPC APIs through clients in your favorite language, or use gRPC directly.
|
||||
icon: fa-plug
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
- title: Get Started
|
||||
icon: img/homepage/get-started.svg
|
||||
docs:
|
||||
- name: TiKV in 5 minutes
|
||||
link: /docs/5.1/concepts/tikv-in-5-minutes/
|
||||
- name: Explore Capabilities
|
||||
link: /docs/5.1/concepts/explore-tikv-features/overview/
|
||||
- title: Develop
|
||||
icon: img/homepage/develop.svg
|
||||
docs:
|
||||
- name: Common Dev Tasks
|
||||
link: /docs/5.1/develop/develop/
|
||||
- name: TiKV clients
|
||||
link: /docs/5.1/develop/clients/introduction/
|
||||
- name: RawKV
|
||||
link: /docs/5.1/develop/rawkv/introduction/
|
||||
- title: Deploy
|
||||
icon: img/homepage/deploy.svg
|
||||
docs:
|
||||
- name: Install TiKV
|
||||
link: /docs/5.1/deploy/install/install/
|
||||
- name: Configure TiKV
|
||||
link: /docs/5.1/deploy/configure/introduction/
|
||||
- name: Benchmark and Performance
|
||||
link: /docs/5.1/deploy/benchmark/benchmark/
|
||||
- name: Operate TiKV Cluster
|
||||
link: /docs/5.1/deploy/operate/operate/
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
- logo: img/homepage/logo-dailymotion.png
|
||||
- logo: img/homepage/logo-ZaloPay.png
|
||||
- logo: img/homepage/logo-pingan.png
|
||||
- logo: img/homepage/logo-JDCloud.png
|
||||
- logo: img/homepage/logo-pingcap.svg
|
||||
- logo: img/homepage/logo-meitu.png
|
||||
- logo: img/homepage/logo-zhuanzhuan.png
|
||||
- logo: img/homepage/logo-ctrip.png
|
||||
- logo: img/homepage/logo-tuya.png
|
||||
|
||||
|
|
@ -1,43 +1,66 @@
|
|||
{{ define "main" }}
|
||||
{{ $shortDesc := site.Params.description.brief | markdownify }}
|
||||
{{ $longDesc := site.Params.description.long | markdownify }}
|
||||
{{ $buttons := site.Params.home.buttons }}
|
||||
{{ $logo := site.Params.logos.color | relURL }}
|
||||
{{ $cncfLogo := site.Params.logos.cncf | relURL }}
|
||||
{{ $features := site.Data.features }}
|
||||
<section class="hero is-fullheight-with-navbar is-light">
|
||||
<div class="hero-body home-page">
|
||||
<div class="container has-text-centered">
|
||||
{{ $shortDescMobile := site.Params.description.briefMobile | markdownify }}
|
||||
{{ $longDesc := site.Params.description.long | markdownify }}
|
||||
{{ $logo := site.Params.logos.white | relURL }}
|
||||
{{ $cncfLogo := site.Params.logos.cncf | relURL }}
|
||||
{{ $features := site.Data.features }}
|
||||
{{ $users := site.Data.users }}
|
||||
{{ $getStarted := site.Data.getStarted }}
|
||||
<section class="section homepage-hero hero">
|
||||
<div class="her-body">
|
||||
<div class="container has-text-left has-text-centered-mobile">
|
||||
<img class="is-home-logo" src="{{ $logo }}" alt="Main TiKV logo">
|
||||
|
||||
<br />
|
||||
|
||||
<p class="title is-size-1-desktop is-size-3-touch is-spaced">
|
||||
<span>
|
||||
<p class="title is-size-3-desktop is-spaced is-size-5-mobile">
|
||||
<span class="is-hidden-mobile">
|
||||
{{ $shortDesc }}
|
||||
</span>
|
||||
<span class="is-hidden-tablet">
|
||||
{{ $shortDescMobile }}
|
||||
</span>
|
||||
</p>
|
||||
<a href="/docs/5.1/concepts/overview/" class="button is-size-6-mobile">Get Started</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<p class="subtitle is-size-3 is-size-4-tablet is-size-5-mobile">
|
||||
{{ $longDesc }}
|
||||
</p>
|
||||
<section class="section homepage-intro">
|
||||
<div class="container">
|
||||
<div class="columns">
|
||||
<div class="column scenarios is-7">
|
||||
<p class="desc">TiKV provides both raw and ACID-compliant transactional key-value API, which is widely used in
|
||||
online serving services, such as the metadata storage system for object storage service, the storage system
|
||||
for
|
||||
recommendation systems, the <a href="https://www.featurestore.org/" target="_blank">online feature store</a>,
|
||||
etc.</p>
|
||||
|
||||
<div class="notification is-radiusless">
|
||||
<p class="title is-size-3 is-size-4-mobile">
|
||||
We are a <a href="https://cncf.io" target="_blank" class="is-link">Cloud Native Computing Foundation</a> graduated project. 🎉
|
||||
</p>
|
||||
|
||||
<img class="is-cncf-logo" src="{{ $cncfLogo }}" alt="Cloud Native Computing Foundation logo">
|
||||
<div class="scenario content">TiKV is also widely used as the storage layer for database management systems, for
|
||||
example:
|
||||
<ul>
|
||||
<li><a href="https://github.com/pingcap/tidb" target="_blank">TiDB</a>: An open-source MySQL compatible
|
||||
NewSQL database that supports Hybrid Transactional and Analytical Processing (HTAP) workloads.</li>
|
||||
<li><a href="https://github.com/zhihu/zetta" target="_blank">Zetta</a>: An open-source NoSQL database that
|
||||
supports Transaction and Cloud Spanner like API.</li>
|
||||
<li><a href="https://github.com/yongman/tidis" target="_blank">Tidis</a>: a Distributed NoSQL database,
|
||||
providing a Redis protocol API (string, list, hash, set, sorted set), written in Go.</li>
|
||||
<li><a href="https://github.com/distributedio/titan" target="_blank">Titan</a>: A distributed implementation
|
||||
of Redis compatible layer based on TiKV.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="column is-5">
|
||||
<img src="/img/homepage/tikv-architecture.svg" alt="tikv architecture" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section has-background-primary">
|
||||
<section class="section homepage-why-tikv">
|
||||
<div class="container">
|
||||
<div class="columns">
|
||||
<h2 class="title section-title has-text-centered">Why TiKV</h2>
|
||||
<div class="columns is-multiline">
|
||||
{{ range where $features "featured" true }}
|
||||
<div class="column">
|
||||
<div class="column is-one-third">
|
||||
<div class="card">
|
||||
<header class="card-header">
|
||||
<p class="card-header-title">
|
||||
|
|
@ -46,7 +69,7 @@
|
|||
{{ with .icon }}
|
||||
<div class="card-header-icon">
|
||||
<span class="icon has-text-primary">
|
||||
<i class="fas {{ . }}" aria-hidden="true"></i>
|
||||
<img src="{{ . }}" alt="header icon" />
|
||||
</span>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
|
@ -65,15 +88,58 @@
|
|||
</div>
|
||||
</section>
|
||||
|
||||
<!--
|
||||
<section class="section">
|
||||
<div class="container has-text-centered">
|
||||
<section class="section homepage-tikv-users has-text-centered">
|
||||
<div class="container">
|
||||
<h2 class="title section-title">Who are using TiKV</h2>
|
||||
<div class="columns is-multiline is-mobile is-variable is-2-mobile is-0-tablet is-3-desktop is-8-widescreen">
|
||||
{{ range $users }}
|
||||
<div class="column">
|
||||
<img src="{{ .logo }}" alt="tikv user logo" />
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
<a class="button" href="/adopters/">Case Studies</a>
|
||||
|
||||
<p class="title is-size-4 is-size-5-mobile">
|
||||
TiKV is a <a>Cloud Native Computing Foundation</a> incubating project
|
||||
TiKV is a <a href="https://www.cncf.io/" target="_blank">Cloud Native Computing Foundation</a> graduate project
|
||||
</p>
|
||||
|
||||
<img class="image is-cncf-logo" src="{{ $cncfLogo }}" alt="Cloud Native Computing Foundation logo">
|
||||
<img class="image is-cncf-logo" src="{{ $cncfLogo }}" alt="Cloud Native Computing Foundation logo" />
|
||||
</div>
|
||||
</section>
|
||||
-->
|
||||
|
||||
<section class="section homepage-get-started">
|
||||
<div class="container">
|
||||
<h2 class="title section-title has-text-centered">Get started with TiKV</h2>
|
||||
<div class="columns">
|
||||
{{ range $getStarted }}
|
||||
<div class="column">
|
||||
<div class="card">
|
||||
<header class="card-header">
|
||||
<p class="card-header-title">
|
||||
{{ .title }}
|
||||
</p>
|
||||
{{ with .icon }}
|
||||
<div class="card-header-icon">
|
||||
<span class="icon has-text-primary">
|
||||
<img src="{{ . }}" alt="header icon" />
|
||||
</span>
|
||||
</div>
|
||||
{{ end }}
|
||||
</header>
|
||||
<div class="card-content">
|
||||
{{ range $idx, $doc := .docs }}
|
||||
<p>
|
||||
<a href="{{ $doc.link }}">{{ $doc.name }}</a>
|
||||
</p>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{{ end }}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
{{ $year := now.Year }}
|
||||
{{ $logo := site.Params.logos.white | relURL }}
|
||||
{{ $logo := site.Params.logos.colorLogoWhiteFont | relURL }}
|
||||
{{ $docs := where site.Pages "Section" "docs" }}
|
||||
{{ $latest := site.Params.versions.latest }}
|
||||
{{ $blogPosts := where site.RegularPages "Section" "blog" }}
|
||||
|
|
@ -7,24 +7,14 @@
|
|||
{{ $currentVersion := default $latest (trim (index (findRE "\\/(\\d+\\.)?(\\d+\\.)?(\\*|\\d+)(-\\w*)?\\/|dev\\/" .Permalink) 0) "/") }}
|
||||
<footer class="footer is-dark">
|
||||
<div class="container">
|
||||
<div class="columns">
|
||||
<div class="column">
|
||||
<img class="image is-footer-image" src="{{ $logo }}" alt="TiKV footer logo">
|
||||
<br>
|
||||
<p class="has-text-weight-bold has-text-white">
|
||||
TiKV is an Apache 2.0 licensed open source distributed transactional key-value store.
|
||||
</p>
|
||||
<br>
|
||||
<img class="image is-footer-image" src="/img/logos/stacked/white/cncf-stacked-white.svg" alt="CNCF footer logo">
|
||||
</div>
|
||||
|
||||
<div class="column">
|
||||
<h5 class="is-size-5 has-text-weight-bold has-text-white">
|
||||
<div class="columns is-variable is-8-desktop is-multiline is-mobile">
|
||||
<div class="column is-one-quarter-desktop is-half-mobile">
|
||||
<h5 class="has-text-weight-bold has-text-white">
|
||||
Docs
|
||||
</h4>
|
||||
|
||||
<hr class="hr has-background-primary is-hidden-touch">
|
||||
|
||||
</h5>
|
||||
|
||||
<hr class="hr">
|
||||
|
||||
<ul>
|
||||
{{ range (index .Site.Menus $currentVersion) }}
|
||||
<li>
|
||||
|
|
@ -36,19 +26,19 @@
|
|||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
{{ range .Site.Menus.nav }}
|
||||
<div class="column">
|
||||
<h5 class="is-size-5 has-text-weight-bold has-text-white">
|
||||
<div class="column is-one-quarter-desktop is-half-mobile">
|
||||
<h5 class="has-text-weight-bold has-text-white">
|
||||
<a href="{{ .URL }}">
|
||||
{{ .Name }}
|
||||
</a>
|
||||
</h4>
|
||||
</h5>
|
||||
|
||||
<hr class="hr has-background-primary is-hidden-touch">
|
||||
<hr class="hr">
|
||||
|
||||
{{ if .HasChildren }}
|
||||
<ul class="is-hidden-touch">
|
||||
<ul>
|
||||
{{ range .Children }}
|
||||
<li>
|
||||
<a href="{{ .URL }}">
|
||||
|
|
@ -62,12 +52,12 @@
|
|||
{{ end }}
|
||||
|
||||
{{ if gt (len $blogPosts) 0 }}
|
||||
<div class="column">
|
||||
<h5 class="is-size-5 has-text-weight-bold has-text-white">
|
||||
<div class="column is-one-quarter-desktop is-half-mobile">
|
||||
<h5 class="has-text-weight-bold has-text-white">
|
||||
Blog
|
||||
</h4>
|
||||
</h5>
|
||||
|
||||
<hr class="hr has-background-primary is-hidden-touch">
|
||||
<hr class="hr">
|
||||
|
||||
<ul>
|
||||
{{ range first 5 $blogPosts }}
|
||||
|
|
@ -89,12 +79,24 @@
|
|||
{{ end }}
|
||||
</div> <!-- columns -->
|
||||
|
||||
<br /><br />
|
||||
<div class="columns is-variable is-8-desktop align-item-centered">
|
||||
<div class="column">
|
||||
<img class="image is-footer-image" src="{{ $logo }}" alt="TiKV footer logo">
|
||||
<p class="has-text-white">
|
||||
TiKV is an Apache 2.0 licensed open source distributed transactional key-value store.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="has-text-centered">
|
||||
<span class="is-size-5 is-size-6-mobile has-text-grey-light">
|
||||
© {{ $year }} TiKV Authors
|
||||
</span>
|
||||
</div>
|
||||
<div class="column">
|
||||
<img class="image is-footer-image" src="/img/logos/stacked/white/cncf-stacked-white.svg" alt="CNCF footer logo">
|
||||
</div>
|
||||
<div class="column"></div>
|
||||
|
||||
<div class="column">
|
||||
<span class="is-size-6-mobile has-text-grey-light">
|
||||
© {{ $year }} TiKV Authors
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- container -->
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
{{ $whiteLogo := site.Params.logos.white | relURL }}
|
||||
{{ $colorLogo := site.Params.logos.color | relURL }}
|
||||
{{ $blackLogo := site.Params.logos.black | relURL }}
|
||||
{{ $navbarLogo := cond $isHome $blackLogo $whiteLogo }}
|
||||
{{ $navbarLogo := $colorLogo }}
|
||||
{{ $twitter := site.Params.socialmedia.twitter }}
|
||||
{{ $github := site.Params.socialmedia.github }}
|
||||
{{ $latest := site.Params.versions.latest }}
|
||||
|
|
@ -11,12 +11,33 @@
|
|||
{{ $color := cond $isHome "light" "black" }}
|
||||
{{ $blogPosts := where site.RegularPages "Section" "blog" }}
|
||||
{{ $deepDive := where site.Sections "Section" "deep-dive" }}
|
||||
<nav class="navbar is-fixed-top is-{{ $color }}" role="navigation" aria-label="dropdown navigation">
|
||||
<nav class="navbar is-fixed-top" role="navigation" aria-label="dropdown navigation">
|
||||
<div class="container">
|
||||
<div class="navbar-brand">
|
||||
<a class="navbar-item" href="{{ site.BaseURL | relURL }}">
|
||||
<img src="{{ $navbarLogo }}" alt="TiKV main logo">
|
||||
</a>
|
||||
<div class="navbar-item">
|
||||
<span class="is-version has-text-weight-bold">
|
||||
Version
|
||||
</span>
|
||||
<div class="navbar-item has-dropdown is-hoverable">
|
||||
<span class="is-navbar-version has-text-weight-bold">
|
||||
{{ if $currentVersion }}
|
||||
{{ $currentVersion }}
|
||||
{{ else }}
|
||||
{{ $latest }}
|
||||
{{ end }}
|
||||
</span>
|
||||
<div class="navbar-dropdown">
|
||||
{{ range $versions }}
|
||||
<a class="navbar-item" href="/docs/{{ . }}/concepts/overview/">
|
||||
{{ . }}
|
||||
</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div role="button" class="navbar-burger" aria-label="menu" aria-expanded="false">
|
||||
<span aria-hidden="true"></span>
|
||||
|
|
@ -26,109 +47,85 @@
|
|||
</div>
|
||||
|
||||
<div class="navbar-menu">
|
||||
<div class="navbar-start">
|
||||
<div class="navbar-item">
|
||||
<span class="is-version has-text-weight-bold">
|
||||
Version
|
||||
</span>
|
||||
<div class="navbar-item has-dropdown is-hoverable">
|
||||
<span class="is-navbar-version has-text-weight-bold">
|
||||
{{ if $currentVersion }}
|
||||
{{ $currentVersion }}
|
||||
{{ else }}
|
||||
{{ $latest }}
|
||||
{{ end }}
|
||||
</span>
|
||||
<div class="navbar-dropdown">
|
||||
{{ range $versions }}
|
||||
<a class="navbar-item" href="/docs/{{ . }}/concepts/overview/">
|
||||
{{ . }}
|
||||
</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
<div class="navbar-end">
|
||||
<div class="navbar-item has-dropdown is-hoverable">
|
||||
<a class="navbar-link">
|
||||
Docs
|
||||
</a>
|
||||
|
||||
<div class="navbar-dropdown">
|
||||
{{ range (index .Site.Menus $currentVersion) }}
|
||||
<a class="navbar-item" href="{{ .URL }}">
|
||||
{{ .Name }}
|
||||
</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="navbar-end">
|
||||
<div class="navbar-item has-dropdown is-hoverable">
|
||||
<a class="navbar-link" href="{{ .URL }}">
|
||||
Docs
|
||||
</a>
|
||||
|
||||
<div class="navbar-dropdown is-hidden-touch">
|
||||
{{ range (index .Site.Menus $currentVersion) }}
|
||||
<a class="navbar-item" href="{{ .URL }}">
|
||||
{{ range .Site.Menus.nav }}
|
||||
<div class="navbar-item has-dropdown is-hoverable">
|
||||
<a class="navbar-link">
|
||||
{{ .Name }}
|
||||
</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ range .Site.Menus.nav }}
|
||||
{{ if .HasChildren }}
|
||||
<div class="navbar-dropdown">
|
||||
{{ range .Children }}
|
||||
<a class="navbar-item" href="{{ .URL }}">
|
||||
{{ .Name }}
|
||||
</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
<div class="navbar-item has-dropdown is-hoverable">
|
||||
<a class="navbar-link" href="{{ .URL }}">
|
||||
{{ .Name }}
|
||||
<a class="navbar-link">
|
||||
Blog
|
||||
</a>
|
||||
|
||||
{{ if .HasChildren }}
|
||||
<div class="navbar-dropdown is-hidden-touch">
|
||||
{{ range .Children }}
|
||||
<a class="navbar-item" href="{{ .URL }}">
|
||||
{{ .Name }}
|
||||
</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
<div class="navbar-item has-dropdown is-hoverable">
|
||||
<a class="navbar-link" href="/blog">
|
||||
Blog
|
||||
</a>
|
||||
|
||||
<div class="navbar-dropdown is-hidden-touch is-right">
|
||||
<a class="navbar-item" href="/blog">
|
||||
Blog home
|
||||
</a>
|
||||
|
||||
<hr class="navbar-divider" />
|
||||
|
||||
{{ range first 5 $blogPosts }}
|
||||
{{ .Render "blog/navbar-link" }}
|
||||
{{ end }}
|
||||
|
||||
<hr class="navbar-divider" />
|
||||
|
||||
<a class="navbar-item" href="/blog">
|
||||
More...
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="navbar-item">
|
||||
<div class="field is-grouped">
|
||||
<p class="control">
|
||||
<a class="button is-twitter-blue" target="_blank" href="https://twitter.com/{{ $twitter }}">
|
||||
<span class="icon has-text-white">
|
||||
<i class="fab fa-twitter"></i>
|
||||
</span>
|
||||
<span>
|
||||
Twitter
|
||||
</span>
|
||||
<div class="navbar-dropdown is-right">
|
||||
<a class="navbar-item" href="/blog">
|
||||
Blog home
|
||||
</a>
|
||||
|
||||
<a class="button is-black{{ if not $isHome }} is-inverted{{ end }}" target="_blank" href="{{ $github }}">
|
||||
<span class="icon">
|
||||
<i class="fab fa-github"></i>
|
||||
</span>
|
||||
<span>
|
||||
GitHub
|
||||
</span>
|
||||
<hr class="navbar-divider" />
|
||||
|
||||
{{ range first 5 $blogPosts }}
|
||||
{{ .Render "blog/navbar-link" }}
|
||||
{{ end }}
|
||||
|
||||
<hr class="navbar-divider" />
|
||||
|
||||
<a class="navbar-item" href="/blog">
|
||||
More...
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="navbar-item">
|
||||
<div class="field is-grouped">
|
||||
<p class="control">
|
||||
<a class="button is-twitter-blue" target="_blank" href="https://twitter.com/{{ $twitter }}">
|
||||
<span class="icon has-text-white">
|
||||
<i class="fab fa-twitter"></i>
|
||||
</span>
|
||||
<span>
|
||||
Twitter
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<a class="button is-black" target="_blank" href="{{ $github }}">
|
||||
<span class="icon">
|
||||
<i class="fab fa-github"></i>
|
||||
</span>
|
||||
<span>
|
||||
GitHub
|
||||
</span>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 752 B After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 189 KiB |
|
After Width: | Height: | Size: 52 KiB |
|
After Width: | Height: | Size: 165 KiB |
|
After Width: | Height: | Size: 49 KiB |
|
After Width: | Height: | Size: 158 KiB |
|
|
@ -0,0 +1,20 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="36.071" height="47.819" viewBox="0 0 36.071 47.819">
|
||||
<g id="组_5160" data-name="组 5160" transform="translate(-1439 -1903.59)">
|
||||
<g id="connection-arw-l" transform="translate(1433 1903)">
|
||||
<g id="组_5118" data-name="组 5118">
|
||||
<circle id="椭圆_561" data-name="椭圆 561" cx="4" cy="4" r="4" transform="translate(7 4)" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<g id="组_5117" data-name="组 5117">
|
||||
<g id="组_5116" data-name="组 5116">
|
||||
<line id="直线_290" data-name="直线 290" y2="2" transform="translate(11 13)" fill="none" stroke="#3d3fea" stroke-linejoin="round" stroke-width="2"/>
|
||||
<path id="路径_11995" data-name="路径 11995" d="M11,18.992V29.2A11.8,11.8,0,0,0,22.8,41H24" fill="none" stroke="#3d3fea" stroke-linejoin="round" stroke-width="2" stroke-dasharray="3.992 3.992"/>
|
||||
<line id="直线_291" data-name="直线 291" x2="2" transform="translate(26 41)" fill="none" stroke="#3d3fea" stroke-linejoin="round" stroke-width="2"/>
|
||||
</g>
|
||||
</g>
|
||||
<path id="路径_11996" data-name="路径 11996" d="M22,35l7.071,6L22,47" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<circle id="椭圆_562" data-name="椭圆 562" cx="4" cy="4" r="4" transform="translate(33.071 37)" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<path id="路径_11997" data-name="路径 11997" d="M37.071,36V19.8A11.8,11.8,0,0,0,25.275,8h-5.2" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<path id="路径_11998" data-name="路径 11998" d="M26.071,14,19,8l7.071-6" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.0 KiB |
|
|
@ -0,0 +1,15 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="44" height="44.828" viewBox="0 0 44 44.828">
|
||||
<g id="组_5161" data-name="组 5161" transform="translate(-974 -1903.586)">
|
||||
<g id="two-side_arrows" transform="translate(971 1902)">
|
||||
<line id="直线_292" data-name="直线 292" x2="40" transform="translate(4 8)" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<path id="路径_11999" data-name="路径 11999" d="M41,3l5,5-5,5" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<line id="直线_293" data-name="直线 293" x2="40" transform="translate(4 24)" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<path id="路径_12000" data-name="路径 12000" d="M41,19l5,5-5,5" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<line id="直线_294" data-name="直线 294" x2="40" transform="translate(4 40)" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<path id="路径_12001" data-name="路径 12001" d="M41,35l5,5-5,5" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<path id="路径_12002" data-name="路径 12002" d="M9,45,4,40l5-5" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<path id="路径_12003" data-name="路径 12003" d="M9,29,4,24l5-5" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<path id="路径_12004" data-name="路径 12004" d="M9,13,4,8,9,3" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.0 KiB |
|
|
@ -0,0 +1,6 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="36" height="20.911" viewBox="0 0 36 20.911">
|
||||
<g id="组_5168" data-name="组 5168" transform="translate(-1450 -3304.026)">
|
||||
<path id="路径_12015" data-name="路径 12015" d="M14.889,28.136A8.135,8.135,0,1,1,6.528,14.678a7.969,7.969,0,0,1,9.425,3.914l4.117,7.584A7.969,7.969,0,0,0,29.5,30.091a8.136,8.136,0,1,0-8.362-13.458" transform="translate(1449.989 3293.416)" fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<path id="路径_12016" data-name="路径 12016" d="M28.479,11,27,16.176l5.176,1.479" transform="translate(1443.219 3294.262)" fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 794 B |
|
|
@ -0,0 +1,5 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="38" height="36" viewBox="0 0 38 36">
|
||||
<g id="组_5167" data-name="组 5167" transform="translate(-987 -3294)">
|
||||
<text id="_" data-name="</>" transform="translate(987 3322)" fill="#fff" font-size="24" font-family="NotoSansCJKsc-Bold, Noto Sans CJK SC" font-weight="700"><tspan x="0" y="0"></></tspan></text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 384 B |
|
|
@ -0,0 +1,10 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="46" height="46" viewBox="0 0 46 46">
|
||||
<g id="组_5162" data-name="组 5162" transform="translate(-518 -1901)">
|
||||
<path id="路径_10546" data-name="路径 10546" d="M511.492,153.48" transform="translate(37.336 1758.877)" fill="#2e2fff"/>
|
||||
<path id="路径_10547" data-name="路径 10547" d="M164.761,411.643" transform="translate(367.6 1512.92)" fill="#2e2fff"/>
|
||||
<g id="control-3" transform="translate(517 1900)">
|
||||
<path id="路径_12005" data-name="路径 12005" d="M46,24.272v-.544A2.728,2.728,0,0,0,43.272,21h-.408a2.767,2.767,0,0,1-2.628-2,16.872,16.872,0,0,0-1.215-2.942,2.773,2.773,0,0,1,.443-3.277l.285-.285a2.728,2.728,0,0,0,0-3.858l-.385-.385a2.728,2.728,0,0,0-3.858,0l-.285.285a2.773,2.773,0,0,1-3.277.443A16.873,16.873,0,0,0,29,7.763a2.767,2.767,0,0,1-2-2.628V4.728A2.728,2.728,0,0,0,24.272,2h-.544A2.728,2.728,0,0,0,21,4.728v.408a2.767,2.767,0,0,1-2,2.628,16.873,16.873,0,0,0-2.942,1.215,2.773,2.773,0,0,1-3.277-.443l-.285-.285a2.728,2.728,0,0,0-3.858,0l-.385.385a2.728,2.728,0,0,0,0,3.858l.285.285a2.773,2.773,0,0,1,.443,3.277A16.873,16.873,0,0,0,7.763,19a2.767,2.767,0,0,1-2.628,2H4.728A2.728,2.728,0,0,0,2,23.728v.544A2.728,2.728,0,0,0,4.728,27h.408a2.767,2.767,0,0,1,2.628,2,16.872,16.872,0,0,0,1.215,2.942,2.773,2.773,0,0,1-.443,3.277l-.285.285a2.728,2.728,0,0,0,0,3.858l.385.385a2.728,2.728,0,0,0,3.858,0l.285-.285a2.773,2.773,0,0,1,3.277-.443A16.872,16.872,0,0,0,19,40.237a2.767,2.767,0,0,1,2,2.628v.408A2.728,2.728,0,0,0,23.728,46h.544A2.728,2.728,0,0,0,27,43.272v-.408a2.767,2.767,0,0,1,2-2.628,16.872,16.872,0,0,0,2.942-1.215,2.773,2.773,0,0,1,3.277.443l.285.285a2.728,2.728,0,0,0,3.858,0l.385-.385a2.728,2.728,0,0,0,0-3.858l-.285-.285a2.773,2.773,0,0,1-.443-3.277A16.871,16.871,0,0,0,40.237,29a2.767,2.767,0,0,1,2.628-2h.408A2.728,2.728,0,0,0,46,24.272Z" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<circle id="椭圆_563" data-name="椭圆 563" cx="8" cy="8" r="8" transform="translate(16 16)" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
|
|
@ -0,0 +1,10 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="41" viewBox="0 0 40 41">
|
||||
<g id="组_5159" data-name="组 5159" transform="translate(-1437 -1570)">
|
||||
<path id="路径_12006" data-name="路径 12006" d="M18,5.982a19,19,0,1,0,12,0" transform="translate(1433 1567)" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<path id="路径_12007" data-name="路径 12007" d="M18,6" transform="translate(1433 1567)" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<path id="路径_12008" data-name="路径 12008" d="M30,6" transform="translate(1433 1567)" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<path id="路径_12009" data-name="路径 12009" d="M18,6" transform="translate(1433 1567)" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<path id="路径_12010" data-name="路径 12010" d="M30,6" transform="translate(1433 1567)" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<line id="直线_295" data-name="直线 295" y2="19" transform="translate(1457 1571)" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
|
|
@ -0,0 +1,6 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="31.218" height="32.409" viewBox="0 0 31.218 32.409">
|
||||
<g id="组_5166" data-name="组 5166" transform="translate(-528.592 -3298.091)">
|
||||
<path id="路径_12011" data-name="路径 12011" d="M2.073,16.322,30.889,2.071,27.955,27.9Z" transform="translate(527.519 3297.428)" fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<path id="路径_12012" data-name="路径 12012" d="M24.81,23.982l-4.935,8.09.084-10.684L36.8,2.074" transform="translate(521.604 3297.427)" fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 709 B |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 620 KiB |
|
|
@ -0,0 +1,10 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="46.8" height="38" viewBox="0 0 46.8 38">
|
||||
<g id="组_5158" data-name="组 5158" transform="translate(-973.6 -1572)">
|
||||
<line id="直线_286" data-name="直线 286" y2="17" transform="translate(1018.6 1591) rotate(90)" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<path id="路径_11993" data-name="路径 11993" d="M15.66,9.6l8.4-8.4,8.4,8.4" transform="translate(1020.6 1567) rotate(90)" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<line id="直线_287" data-name="直线 287" y1="17" transform="translate(992.6 1591) rotate(90)" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<path id="路径_11994" data-name="路径 11994" d="M32.46,37.6,24.06,46l-8.4-8.4" transform="translate(1020.6 1567) rotate(90)" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<line id="直线_288" data-name="直线 288" x2="36" transform="translate(1000.6 1573) rotate(90)" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<line id="直线_289" data-name="直线 289" x2="36" transform="translate(992.6 1573) rotate(90)" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 69 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
|
@ -0,0 +1,26 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="200" viewBox="0 0 400 200">
|
||||
<defs>
|
||||
<clipPath id="clip-path">
|
||||
<rect id="矩形_4372" data-name="矩形 4372" width="400" height="200" transform="translate(448 7223)" fill="none" stroke="#707070" stroke-width="1"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g id="组_5199" data-name="组 5199" transform="translate(-448 -7223)" clip-path="url(#clip-path)">
|
||||
<g id="组_5198" data-name="组 5198" transform="translate(448 7277.122)">
|
||||
<path id="路径_12123" data-name="路径 12123" d="M1038.957,513.334h-.017l-.119.19a20.9,20.9,0,0,1-7.15,6.827,19.139,19.139,0,0,1-9.789,2.831,19.542,19.542,0,0,1-14.814-6.76,22.84,22.84,0,0,1-5.931-16.15,22.487,22.487,0,0,1,6.121-15.318,18.912,18.912,0,0,1,14.233-6.415c7.487-.067,13.135,3.021,17.265,9.449l.12.186h.115l4.868-3.009a26.987,26.987,0,0,0-8.04-8.546,25.09,25.09,0,0,0-13.934-4.214,24.437,24.437,0,0,0-18.6,7.927c-5.181,5.334-7.807,12.135-7.807,20.213a29.22,29.22,0,0,0,7.734,20.275,24.3,24.3,0,0,0,18.417,8.358h.266a25.477,25.477,0,0,0,21.951-12.822Z" transform="translate(-739.976 -454.756)" fill="#172d72"/>
|
||||
<path id="路径_12124" data-name="路径 12124" d="M1097.776,473.432h-6.612l-24.577,55.013h7.843l7.6-18.285h.012l2.684-5.714h-.011l9.894-23.218,9.7,23.218h-13.919l-2.536,5.714h18.714l7.666,18.285h6.914Z" transform="translate(-762.441 -455.081)" fill="#172d72"/>
|
||||
<path id="路径_12125" data-name="路径 12125" d="M1184.361,478.5a19.714,19.714,0,0,0-13.65-4.963h-17.8v54.942h6.487v-21.52h0v-5.783h0V479.459h11.6a12.88,12.88,0,0,1,8.456,2.933,9.438,9.438,0,0,1,3.843,7.281,9.661,9.661,0,0,1-3.447,8.378,12.2,12.2,0,0,1-8.5,3.123h-6.717v5.783h7.772a17.384,17.384,0,0,0,12.105-4.614,15.111,15.111,0,0,0,5.2-11.423A15.549,15.549,0,0,0,1184.361,478.5Z" transform="translate(-789.71 -455.114)" fill="#172d72"/>
|
||||
<rect id="矩形_4370" data-name="矩形 4370" width="6.484" height="6.484" transform="translate(153.103 19.435)" fill="#172d72"/>
|
||||
<rect id="矩形_4371" data-name="矩形 4371" width="6.484" height="39.483" transform="translate(153.103 33.965)" fill="#172d72"/>
|
||||
<path id="路径_12126" data-name="路径 12126" d="M969.147,530.454V513.5a21.561,21.561,0,0,0-21.686-21.464,20.413,20.413,0,0,0-14.5,6.534,20.922,20.922,0,0,0-5.885,14.854,21.339,21.339,0,0,0,6.385,15.424,19.81,19.81,0,0,0,15.229,6.1,20.215,20.215,0,0,0,14.323-6.426v2.69m0,0a12.34,12.34,0,0,1-4.226,9.324,14.134,14.134,0,0,1-9.9,4.031,14.494,14.494,0,0,1-8.822-2.944,13.521,13.521,0,0,1-4.676-5.494L930.421,539a19.041,19.041,0,0,0,5.184,6.267,21.3,21.3,0,0,0,12.629,4.454q.464.017.923.018a21.31,21.31,0,0,0,13.569-4.824,15.919,15.919,0,0,0,6.421-12.925v-1.537m-6.276-16.544a15.234,15.234,0,0,1-4.382,10.541,13.4,13.4,0,0,1-10.167,4.368,14.227,14.227,0,0,1-10.526-4.375,14.7,14.7,0,0,1-4.516-10.6,14.937,14.937,0,0,1,4.108-10.745,14.2,14.2,0,0,1,10.181-4.923c.264-.012.524-.018.783-.018a13.309,13.309,0,0,1,10.138,4.528A14.851,14.851,0,0,1,962.871,513.909Z" transform="translate(-718.369 -460.956)" fill="#172d72"/>
|
||||
<path id="路径_12127" data-name="路径 12127" d="M814.4,478.5a19.713,19.713,0,0,0-13.65-4.963h-17.8v54.942h6.487v-21.52h0v-5.783h0V479.459h11.6a12.879,12.879,0,0,1,8.456,2.933,9.437,9.437,0,0,1,3.843,7.281,9.66,9.66,0,0,1-3.447,8.378,12.2,12.2,0,0,1-8.5,3.123h-6.717v5.783h7.772a17.384,17.384,0,0,0,12.105-4.614,15.108,15.108,0,0,0,5.2-11.423A15.546,15.546,0,0,0,814.4,478.5Z" transform="translate(-672.839 -455.114)" fill="#172d72"/>
|
||||
<path id="路径_12128" data-name="路径 12128" d="M884.108,492.725a17.529,17.529,0,0,0-13,5.317,18.186,18.186,0,0,0-5.17,13.2v23.215H872.2V510.682a11.356,11.356,0,0,1,3.52-8.391,11.5,11.5,0,0,1,8.391-3.52,11.2,11.2,0,0,1,8.25,3.52,11.4,11.4,0,0,1,3.59,8.391v23.776H902.2V511.243a18.185,18.185,0,0,0-5.17-13.2A17.445,17.445,0,0,0,884.108,492.725Z" transform="translate(-699.057 -461.176)" fill="#172d72"/>
|
||||
<g id="组_5197" data-name="组 5197" transform="translate(0 0)">
|
||||
<g id="组_5196" data-name="组 5196">
|
||||
<path id="路径_12129" data-name="路径 12129" d="M667.87,472.56l-40.327-11.34a4.368,4.368,0,0,0-3.817.7,4.236,4.236,0,0,0-1.731,3.427v73.285A4.248,4.248,0,0,0,623.651,542a4.366,4.366,0,0,0,2.689.925,4.458,4.458,0,0,0,1.018-.118l40.328-9.476h0a4.291,4.291,0,0,0,3.344-4.175V476.689A4.321,4.321,0,0,0,667.87,472.56Z" transform="translate(-621.995 -451.17)" fill="#172d72"/>
|
||||
<path id="路径_12130" data-name="路径 12130" d="M701.487,465.39a4.321,4.321,0,0,0-3.155-4.117L647,446.776a4.37,4.37,0,0,0-3.819.7,4.239,4.239,0,0,0-1.733,3.428v55.609a4.246,4.246,0,0,0,1.66,3.371,4.367,4.367,0,0,0,2.685.922,4.428,4.428,0,0,0,1.028-.121l51.388-12.2a4.29,4.29,0,0,0,3.334-4.181Z" transform="translate(-628.14 -446.607)" fill="#00aeef"/>
|
||||
<path id="路径_12131" data-name="路径 12131" d="M674.016,473.645l-32.567-9.158v47.672a4.246,4.246,0,0,0,1.66,3.371,4.367,4.367,0,0,0,2.685.922,4.428,4.428,0,0,0,1.028-.121l30.354-7.2V477.774A4.321,4.321,0,0,0,674.016,473.645Z" transform="translate(-628.14 -452.255)" fill="#3d3fea"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.0 KiB |
|
After Width: | Height: | Size: 46 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
|
@ -0,0 +1,17 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="41" height="45.5" viewBox="0 0 41 45.5">
|
||||
<g id="组_5157" data-name="组 5157" transform="translate(-523.328 -1568)">
|
||||
<circle id="椭圆_560" data-name="椭圆 560" cx="19.5" cy="19.5" r="19.5" transform="translate(524.328 1573.5)" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<line id="直线_276" data-name="直线 276" transform="translate(543.828 1576.7)" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<line id="直线_277" data-name="直线 277" transform="translate(543.828 1609.3)" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<line id="直线_278" data-name="直线 278" transform="translate(560.128 1593)" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<line id="直线_279" data-name="直线 279" transform="translate(527.528 1593)" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<line id="直线_280" data-name="直线 280" transform="translate(555.328 1581.5)" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<line id="直线_281" data-name="直线 281" transform="translate(532.328 1604.5)" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<line id="直线_282" data-name="直线 282" transform="translate(555.328 1604.5)" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<line id="直线_283" data-name="直线 283" transform="translate(532.328 1581.5)" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<path id="路径_11991" data-name="路径 11991" d="M24,16V26l9.1,8.6" transform="translate(519.828 1567)" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<path id="路径_11992" data-name="路径 11992" d="M21,3h0a.945.945,0,0,1,1-1h4a.945.945,0,0,1,1,1h0" transform="translate(519.828 1567)" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<line id="直线_284" data-name="直线 284" y2="4" transform="translate(543.828 1569)" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
<line id="直线_285" data-name="直线 285" y1="1" x2="1.1" transform="translate(557.928 1576.8)" fill="none" stroke="#3d3fea" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.9 KiB |
|
|
@ -0,0 +1,678 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 25.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 1207 719" style="enable-background:new 0 0 1207 719;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#666666;}
|
||||
.st1{fill:#FFFFFF;}
|
||||
.st2{fill:#EECECD;}
|
||||
.st3{fill:#D8D3E7;}
|
||||
.st4{fill:#F8E6D0;}
|
||||
.st5{fill:#DCE9D5;}
|
||||
.st6{fill:#D3E2F1;}
|
||||
.st7{fill:#EFEFEF;}
|
||||
.st8{fill:#D3E0E3;}
|
||||
.st9{fill:#E6D2DC;}
|
||||
.st10{fill:#96CC7D;fill-opacity:0.53;}
|
||||
</style>
|
||||
<path class="st0" d="M265,717.4H1V181.5h264V717.4z M3,715.4h260V183.5H3V715.4z"/>
|
||||
<path class="st0" d="M263.9,180.5H0v93.1h263.9V180.5z"/>
|
||||
<path class="st1" d="M102.2,215.8v2.8H95v20.1h-3.2v-20.1h-7.2v-2.8H102.2z M108.4,238.6h-3.1v-17.2h3.1V238.6z M106.9,218.4
|
||||
c-0.6,0-1-0.2-1.4-0.5c-0.4-0.4-0.6-0.9-0.6-1.5c0-0.6,0.2-1.1,0.6-1.5c0.4-0.4,0.9-0.6,1.4-0.6c0.5,0,1,0.2,1.4,0.6
|
||||
c0.4,0.4,0.6,0.8,0.6,1.5c0,0.6-0.2,1.1-0.6,1.5C107.9,218.2,107.4,218.4,106.9,218.4z M130.8,215.8c-0.7,0.7-1.5,1.6-2.3,2.5
|
||||
c-0.9,0.9-1.8,1.8-2.7,2.8c-0.9,0.9-1.8,1.9-2.8,2.8c-0.9,0.9-1.8,1.8-2.6,2.6c0.9,0.7,1.9,1.5,3,2.4s2.1,2,3.1,3.1
|
||||
c1,1.1,2,2.2,2.8,3.4c0.9,1.1,1.7,2.2,2.2,3.3h-3.8c-0.7-1-1.4-2.1-2.3-3.1c-0.9-1.1-1.8-2.1-2.7-3c-0.9-1-1.9-1.9-2.9-2.7
|
||||
c-1-0.8-1.9-1.5-2.8-2.1v10.9h-3.2v-22.9h3.2v10.1c0.8-0.7,1.6-1.5,2.5-2.4c0.9-0.9,1.8-1.8,2.7-2.8s1.7-1.8,2.5-2.6
|
||||
c0.8-0.9,1.5-1.6,2-2.2H130.8z M153.8,215.8c-0.8,2.4-1.6,4.7-2.4,6.7c-0.7,2-1.5,4-2.2,5.8c-0.7,1.8-1.5,3.6-2.2,5.3
|
||||
c-0.7,1.7-1.4,3.3-2.2,5h-3c-0.7-1.6-1.5-3.3-2.2-5c-0.7-1.7-1.4-3.5-2.2-5.3c-0.7-1.8-1.5-3.8-2.2-5.8c-0.8-2.1-1.6-4.3-2.4-6.7
|
||||
h3.5c1.2,3.5,2.4,6.8,3.5,10c1.1,3.2,2.3,6.2,3.5,9c1.2-2.8,2.4-5.8,3.5-9c1.1-3.2,2.3-6.6,3.5-10.1H153.8z M164.8,220.5
|
||||
c1.3-0.5,2.5-1.1,3.7-1.8c1.2-0.8,2.3-1.7,3.3-2.9h2.2v22.9h-3.1V220c-0.3,0.2-0.6,0.5-1,0.8c-0.4,0.3-0.8,0.5-1.3,0.8
|
||||
c-0.4,0.2-0.9,0.5-1.4,0.7c-0.5,0.2-1,0.4-1.4,0.6L164.8,220.5z"/>
|
||||
<path class="st0" d="M578.9,717.4H315V181.5h263.9V717.4z M317,715.4h259.9V183.5H317V715.4z"/>
|
||||
<path class="st0" d="M577.9,180.5H314v93.1h263.9V180.5z"/>
|
||||
<path class="st1" d="M416.2,215.8v2.8H409v20.1h-3.2v-20.1h-7.2v-2.8H416.2z M422.4,238.6h-3.1v-17.2h3.1V238.6z M420.9,218.4
|
||||
c-0.6,0-1-0.2-1.4-0.5c-0.4-0.4-0.6-0.9-0.6-1.5c0-0.6,0.2-1.1,0.6-1.5c0.4-0.4,0.9-0.6,1.4-0.6c0.5,0,1,0.2,1.4,0.6
|
||||
c0.4,0.4,0.6,0.8,0.6,1.5c0,0.6-0.2,1.1-0.6,1.5C421.9,218.2,421.4,218.4,420.9,218.4z M444.8,215.8c-0.7,0.7-1.5,1.6-2.3,2.5
|
||||
c-0.9,0.9-1.8,1.8-2.7,2.8c-0.9,0.9-1.8,1.9-2.8,2.8c-0.9,0.9-1.8,1.8-2.6,2.6c0.9,0.7,1.9,1.5,3,2.4s2.1,2,3.1,3.1
|
||||
c1,1.1,2,2.2,2.8,3.4c0.9,1.1,1.6,2.2,2.2,3.3h-3.8c-0.7-1-1.4-2.1-2.3-3.1c-0.9-1.1-1.8-2.1-2.7-3c-0.9-1-1.9-1.9-2.9-2.7
|
||||
c-1-0.8-1.9-1.5-2.8-2.1v10.9h-3.2v-22.9h3.2v10.1c0.8-0.7,1.6-1.5,2.5-2.4c0.9-0.9,1.8-1.8,2.7-2.8s1.7-1.8,2.5-2.6
|
||||
c0.8-0.9,1.5-1.6,2-2.2H444.8z M467.8,215.8c-0.8,2.4-1.6,4.7-2.4,6.7c-0.7,2-1.5,4-2.2,5.8c-0.7,1.8-1.5,3.6-2.2,5.3
|
||||
c-0.7,1.7-1.4,3.3-2.2,5h-3c-0.7-1.6-1.5-3.3-2.2-5c-0.7-1.7-1.4-3.5-2.2-5.3c-0.7-1.8-1.5-3.8-2.2-5.8c-0.8-2.1-1.6-4.3-2.4-6.7
|
||||
h3.5c1.2,3.5,2.4,6.8,3.5,10c1.1,3.2,2.3,6.2,3.5,9c1.2-2.8,2.4-5.8,3.5-9c1.1-3.2,2.3-6.6,3.5-10.1H467.8z M491.1,221.6
|
||||
c0,0.8-0.2,1.6-0.5,2.3c-0.3,0.7-0.7,1.5-1.3,2.2c-0.5,0.7-1.1,1.4-1.8,2.1c-0.7,0.7-1.3,1.4-2,2c-0.4,0.4-0.8,0.8-1.3,1.3
|
||||
c-0.5,0.5-0.9,1-1.4,1.6s-0.8,1.1-1.1,1.6c-0.3,0.5-0.4,0.9-0.4,1.3h10.5v2.6H478c0-0.1,0-0.3,0-0.4c0-0.1,0-0.3,0-0.4
|
||||
c0-1,0.2-2,0.5-2.9c0.4-0.9,0.8-1.7,1.4-2.5c0.6-0.8,1.2-1.5,1.8-2.2c0.7-0.7,1.4-1.4,2-2c0.6-0.5,1.1-1,1.6-1.6
|
||||
c0.5-0.5,0.9-1,1.3-1.6c0.4-0.5,0.7-1.1,0.9-1.6c0.2-0.6,0.4-1.1,0.4-1.7c0-0.7-0.1-1.2-0.3-1.7c-0.2-0.5-0.5-0.8-0.8-1.2
|
||||
c-0.4-0.3-0.8-0.5-1.3-0.7c-0.5-0.2-1-0.2-1.5-0.2c-0.6,0-1.2,0.1-1.7,0.3c-0.5,0.2-1,0.4-1.4,0.6c-0.4,0.2-0.8,0.5-1.1,0.7
|
||||
c-0.3,0.2-0.5,0.4-0.7,0.6l-1.5-2.2c0.2-0.2,0.5-0.5,0.9-0.8c0.4-0.3,0.9-0.6,1.4-0.9c0.5-0.3,1.2-0.5,1.8-0.7
|
||||
c0.7-0.2,1.4-0.3,2.2-0.3c2.4,0,4.2,0.6,5.4,1.7C490.5,218,491.1,219.6,491.1,221.6z"/>
|
||||
<path class="st0" d="M893,717.4H629V181.5h264V717.4z M631,715.4h260V183.5H631V715.4z"/>
|
||||
<path class="st0" d="M891.9,180.5H628v93.1h263.9V180.5z"/>
|
||||
<path class="st1" d="M730.2,215.8v2.8H723v20.1h-3.2v-20.1h-7.2v-2.8H730.2z M736.4,238.6h-3.1v-17.2h3.1V238.6z M734.9,218.4
|
||||
c-0.5,0-1-0.2-1.4-0.5c-0.4-0.4-0.6-0.9-0.6-1.5c0-0.6,0.2-1.1,0.6-1.5c0.4-0.4,0.9-0.6,1.4-0.6s1,0.2,1.4,0.6
|
||||
c0.4,0.4,0.6,0.8,0.6,1.5c0,0.6-0.2,1.1-0.6,1.5C735.9,218.2,735.4,218.4,734.9,218.4z M758.8,215.8c-0.7,0.7-1.5,1.6-2.3,2.5
|
||||
c-0.9,0.9-1.8,1.8-2.7,2.8c-0.9,0.9-1.8,1.9-2.8,2.8c-0.9,0.9-1.8,1.8-2.6,2.6c0.9,0.7,1.9,1.5,3,2.4c1.1,1,2.1,2,3.1,3.1
|
||||
c1,1.1,2,2.2,2.8,3.4c0.9,1.1,1.7,2.2,2.2,3.3h-3.8c-0.7-1-1.4-2.1-2.3-3.1c-0.9-1.1-1.8-2.1-2.7-3c-0.9-1-1.9-1.9-2.9-2.7
|
||||
c-1-0.8-1.9-1.5-2.8-2.1v10.9h-3.2v-22.9h3.2v10.1c0.8-0.7,1.6-1.5,2.5-2.4c0.9-0.9,1.8-1.8,2.7-2.8s1.7-1.8,2.5-2.6
|
||||
c0.8-0.9,1.5-1.6,2-2.2H758.8z M781.8,215.8c-0.8,2.4-1.6,4.7-2.4,6.7c-0.7,2-1.5,4-2.2,5.8c-0.7,1.8-1.5,3.6-2.2,5.3
|
||||
c-0.7,1.7-1.4,3.3-2.2,5h-3c-0.7-1.6-1.5-3.3-2.2-5c-0.7-1.7-1.4-3.5-2.2-5.3c-0.7-1.8-1.5-3.8-2.2-5.8c-0.8-2.1-1.6-4.3-2.4-6.7
|
||||
h3.5c1.2,3.5,2.4,6.8,3.5,10c1.1,3.2,2.3,6.2,3.5,9c1.2-2.8,2.4-5.8,3.5-9c1.1-3.2,2.3-6.6,3.5-10.1H781.8z M797.2,236.4
|
||||
c2,0,3.4-0.4,4.2-1.2c0.9-0.8,1.3-1.8,1.3-3.1c0-0.8-0.2-1.5-0.5-2.1c-0.4-0.6-0.8-1-1.4-1.4c-0.6-0.4-1.2-0.6-2-0.7
|
||||
c-0.7-0.2-1.5-0.2-2.3-0.2h-0.8v-2.5h1.1c0.5,0,1.1-0.1,1.7-0.2c0.6-0.1,1.1-0.3,1.6-0.6s0.9-0.7,1.2-1.2c0.3-0.5,0.5-1.1,0.5-1.9
|
||||
c0-0.6-0.1-1.1-0.3-1.6c-0.2-0.4-0.5-0.8-0.9-1.1c-0.4-0.3-0.8-0.5-1.3-0.6c-0.5-0.1-1-0.2-1.5-0.2c-1.1,0-2,0.2-2.7,0.5
|
||||
c-0.7,0.3-1.3,0.6-1.8,1L792,217c0.3-0.2,0.6-0.4,1-0.6c0.4-0.2,0.9-0.4,1.4-0.6c0.5-0.2,1-0.3,1.6-0.4c0.6-0.1,1.2-0.2,1.8-0.2
|
||||
c1.2,0,2.3,0.2,3.1,0.5c0.9,0.3,1.6,0.7,2.2,1.3c0.6,0.5,1,1.2,1.3,1.9c0.3,0.7,0.4,1.5,0.4,2.4c0,1.2-0.3,2.2-1,3.1
|
||||
c-0.7,0.8-1.5,1.5-2.5,1.9c0.6,0.2,1.2,0.4,1.7,0.8s1,0.7,1.4,1.3c0.4,0.5,0.7,1.1,1,1.7c0.3,0.7,0.4,1.4,0.4,2.2
|
||||
c0,1-0.2,1.9-0.5,2.8c-0.3,0.8-0.9,1.6-1.6,2.2c-0.7,0.6-1.6,1.1-2.7,1.5c-1.1,0.4-2.4,0.5-3.8,0.5c-0.6,0-1.2,0-1.8-0.1
|
||||
c-0.6-0.1-1.2-0.2-1.7-0.3c-0.5-0.1-1-0.3-1.4-0.4c-0.4-0.1-0.7-0.2-0.9-0.3l0.6-2.7c0.4,0.2,1,0.4,1.8,0.7
|
||||
C794.9,236.2,795.9,236.4,797.2,236.4z"/>
|
||||
<path class="st0" d="M1206.9,717.4H943V181.5h263.9V717.4z M945,715.4h259.9V183.5H945V715.4z"/>
|
||||
<path class="st0" d="M1205.9,180.5H942v93.1h263.9V180.5z"/>
|
||||
<path class="st1" d="M1044.2,215.8v2.8h-7.2v20.1h-3.2v-20.1h-7.2v-2.8H1044.2z M1050.4,238.6h-3.1v-17.2h3.1V238.6z M1048.8,218.4
|
||||
c-0.5,0-1-0.2-1.4-0.5c-0.4-0.4-0.6-0.9-0.6-1.5c0-0.6,0.2-1.1,0.6-1.5c0.4-0.4,0.9-0.6,1.4-0.6c0.6,0,1,0.2,1.4,0.6
|
||||
c0.4,0.4,0.6,0.8,0.6,1.5c0,0.6-0.2,1.1-0.6,1.5C1049.9,218.2,1049.4,218.4,1048.8,218.4z M1072.8,215.8c-0.7,0.7-1.5,1.6-2.3,2.5
|
||||
c-0.9,0.9-1.8,1.8-2.7,2.8c-0.9,0.9-1.8,1.9-2.8,2.8c-0.9,0.9-1.8,1.8-2.6,2.6c0.9,0.7,1.9,1.5,3,2.4c1,1,2.1,2,3.1,3.1
|
||||
c1,1.1,2,2.2,2.8,3.4c0.9,1.1,1.7,2.2,2.2,3.3h-3.8c-0.7-1-1.4-2.1-2.3-3.1c-0.9-1.1-1.8-2.1-2.7-3c-0.9-1-1.9-1.9-2.9-2.7
|
||||
c-1-0.8-1.9-1.5-2.8-2.1v10.9h-3.2v-22.9h3.2v10.1c0.8-0.7,1.6-1.5,2.5-2.4c0.9-0.9,1.8-1.8,2.7-2.8s1.8-1.8,2.5-2.6
|
||||
c0.8-0.9,1.5-1.6,2-2.2H1072.8z M1095.8,215.8c-0.8,2.4-1.6,4.7-2.4,6.7c-0.8,2-1.5,4-2.2,5.8c-0.7,1.8-1.5,3.6-2.2,5.3
|
||||
c-0.7,1.7-1.4,3.3-2.2,5h-3c-0.8-1.6-1.5-3.3-2.2-5c-0.7-1.7-1.4-3.5-2.2-5.3c-0.7-1.8-1.5-3.8-2.2-5.8c-0.8-2.1-1.6-4.3-2.4-6.7
|
||||
h3.5c1.2,3.5,2.4,6.8,3.5,10c1.1,3.2,2.3,6.2,3.5,9c1.2-2.8,2.4-5.8,3.5-9c1.2-3.2,2.3-6.6,3.5-10.1H1095.8z M1105.1,230.7
|
||||
c0.4-1,1-2.1,1.7-3.4c0.7-1.3,1.5-2.6,2.4-4c0.9-1.4,1.9-2.7,2.9-4c1.1-1.3,2.1-2.5,3.2-3.6h2.9v14.5h2.7v2.5h-2.7v5.8h-3v-5.8
|
||||
h-10.2V230.7z M1115.3,219.4c-0.7,0.7-1.3,1.5-2,2.4c-0.7,0.9-1.3,1.8-1.9,2.7c-0.6,0.9-1.2,1.9-1.8,2.9c-0.6,1-1,2-1.5,2.9h7.3
|
||||
V219.4z"/>
|
||||
<path class="st2" d="M20,292.5h221c1.1,0,2,0.9,2,2v73c0,1.1-0.9,2-2,2H20c-1.1,0-2-0.9-2-2v-73C18,293.4,18.9,292.5,20,292.5z"/>
|
||||
<path class="st3" d="M20,384.5h221c1.1,0,2,0.9,2,2v73c0,1.1-0.9,2-2,2H20c-1.1,0-2-0.9-2-2v-73C18,385.4,18.9,384.5,20,384.5z"/>
|
||||
<path class="st4" d="M20,476.5h221c1.1,0,2,0.9,2,2v73c0,1.1-0.9,2-2,2H20c-1.1,0-2-0.9-2-2v-73C18,477.4,18.9,476.5,20,476.5z"/>
|
||||
<path class="st5" d="M20,616.5h221c1.1,0,2,0.9,2,2v73c0,1.1-0.9,2-2,2H20c-1.1,0-2-0.9-2-2v-73C18,617.4,18.9,616.5,20,616.5z"/>
|
||||
<path class="st2" d="M334,292.5h221c1.1,0,2,0.9,2,2v73c0,1.1-0.9,2-2,2H334c-1.1,0-2-0.9-2-2v-73C332,293.4,332.9,292.5,334,292.5z
|
||||
"/>
|
||||
<path class="st6" d="M334,382.5h221c1.1,0,2,0.9,2,2v73c0,1.1-0.9,2-2,2H334c-1.1,0-2-0.9-2-2v-73C332,383.4,332.9,382.5,334,382.5z
|
||||
"/>
|
||||
<path class="st3" d="M334,476.5h221c1.1,0,2,0.9,2,2v73c0,1.1-0.9,2-2,2H334c-1.1,0-2-0.9-2-2v-73C332,477.4,332.9,476.5,334,476.5z
|
||||
"/>
|
||||
<path class="st7" d="M334,615.5h221c1.1,0,2,0.9,2,2v73c0,1.1-0.9,2-2,2H334c-1.1,0-2-0.9-2-2v-73C332,616.4,332.9,615.5,334,615.5z
|
||||
"/>
|
||||
<path class="st6" d="M650,292.5h221c1.1,0,2,0.9,2,2v73c0,1.1-0.9,2-2,2H650c-1.1,0-2-0.9-2-2v-73C648,293.4,648.9,292.5,650,292.5z
|
||||
"/>
|
||||
<path class="st4" d="M650,382.5h221c1.1,0,2,0.9,2,2v73c0,1.1-0.9,2-2,2H650c-1.1,0-2-0.9-2-2v-73C648,383.4,648.9,382.5,650,382.5z
|
||||
"/>
|
||||
<path class="st3" d="M650,476.5h221c1.1,0,2,0.9,2,2v73c0,1.1-0.9,2-2,2H650c-1.1,0-2-0.9-2-2v-73C648,477.4,648.9,476.5,650,476.5z
|
||||
"/>
|
||||
<path class="st2" d="M964,292.5h221c1.1,0,2,0.9,2,2v73c0,1.1-0.9,2-2,2H964c-1.1,0-2-0.9-2-2v-73C962,293.4,962.9,292.5,964,292.5z
|
||||
"/>
|
||||
<path class="st6" d="M964,384.5h221c1.1,0,2,0.9,2,2v73c0,1.1-0.9,2-2,2H964c-1.1,0-2-0.9-2-2v-73C962,385.4,962.9,384.5,964,384.5z
|
||||
"/>
|
||||
<path class="st4" d="M964,477.5h221c1.1,0,2,0.9,2,2v73c0,1.1-0.9,2-2,2H964c-1.1,0-2-0.9-2-2v-73C962,478.4,962.9,477.5,964,477.5z
|
||||
"/>
|
||||
<path class="st8" d="M964,610.5h221c1.1,0,2,0.9,2,2v73c0,1.1-0.9,2-2,2H964c-1.1,0-2-0.9-2-2v-73C962,611.4,962.9,610.5,964,610.5z
|
||||
"/>
|
||||
<path class="st0" d="M973.9,508.5c-0.1-0.2-9.2-21.3-44.7-45.3c-35.7-24.1-62.6-28.6-62.9-28.6l0.3-2c0.3,0,27.6,4.6,63.7,29
|
||||
c36.2,24.4,45.1,45.3,45.5,46.2L973.9,508.5z"/>
|
||||
<path class="st0" d="M88.5,323c2.5,0,4.4,0.5,5.7,1.4c1.3,0.9,2,2.3,2,4.2c0,2.4-1.2,3.9-3.5,4.8c0.3,0.4,0.7,0.9,1.1,1.4
|
||||
c0.4,0.5,0.8,1.1,1.2,1.8c0.4,0.6,0.8,1.3,1.2,2c0.4,0.7,0.7,1.3,1,2h-3.5c-0.3-0.6-0.7-1.2-1-1.8c-0.4-0.6-0.7-1.2-1.1-1.8
|
||||
c-0.4-0.6-0.7-1.1-1.1-1.6c-0.4-0.5-0.7-1-1-1.4c-0.2,0-0.4,0-0.6,0c-0.2,0-0.3,0-0.5,0h-1.5v6.6h-3.1v-17.1
|
||||
c0.8-0.2,1.6-0.3,2.4-0.3C87.1,323,87.8,323,88.5,323z M88.7,325.7c-0.7,0-1.3,0-1.9,0.1v5.6h1.4c0.8,0,1.4,0,2-0.1
|
||||
c0.6-0.1,1.1-0.2,1.5-0.5c0.4-0.2,0.7-0.5,0.9-0.9c0.2-0.4,0.3-0.8,0.3-1.4c0-0.5-0.1-1-0.3-1.4c-0.2-0.4-0.5-0.7-0.9-0.9
|
||||
c-0.4-0.2-0.8-0.4-1.3-0.4C89.9,325.8,89.4,325.7,88.7,325.7z M98.9,334c0-1.1,0.2-2.2,0.5-3c0.3-0.9,0.8-1.6,1.4-2.2
|
||||
c0.6-0.6,1.2-1,1.9-1.3c0.7-0.3,1.5-0.5,2.2-0.5c1.8,0,3.2,0.6,4.2,1.7c1,1.1,1.5,2.8,1.5,5c0,0.2,0,0.4,0,0.6c0,0.2,0,0.4,0,0.6
|
||||
H102c0.1,1,0.4,1.9,1.1,2.4c0.7,0.6,1.6,0.9,2.9,0.9c0.7,0,1.4-0.1,2-0.2c0.6-0.1,1.1-0.3,1.5-0.4l0.4,2.5c-0.2,0.1-0.4,0.2-0.7,0.3
|
||||
c-0.3,0.1-0.6,0.2-1,0.2c-0.4,0.1-0.8,0.1-1.2,0.2c-0.4,0-0.9,0.1-1.3,0.1c-1.2,0-2.2-0.2-3-0.5c-0.8-0.4-1.5-0.8-2.1-1.4
|
||||
c-0.5-0.6-1-1.3-1.2-2.1C99,335.9,98.9,335,98.9,334z M107.6,332.7c0-0.4-0.1-0.8-0.2-1.2c-0.1-0.4-0.3-0.7-0.5-1
|
||||
c-0.2-0.3-0.5-0.5-0.8-0.6c-0.3-0.2-0.7-0.2-1.2-0.2c-0.5,0-0.9,0.1-1.2,0.3c-0.3,0.2-0.7,0.4-0.9,0.7c-0.2,0.3-0.4,0.6-0.5,1
|
||||
c-0.1,0.4-0.2,0.7-0.3,1.1H107.6z M116.2,333.6c0,1.3,0.3,2.2,0.8,2.8c0.6,0.6,1.3,0.9,2.2,0.9c0.5,0,0.9-0.1,1.3-0.2
|
||||
c0.4-0.1,0.8-0.3,1-0.5v-6.8c-0.2-0.1-0.5-0.1-0.8-0.1c-0.3-0.1-0.7-0.1-1.2-0.1c-1.1,0-1.9,0.4-2.5,1.1
|
||||
C116.5,331.5,116.2,332.4,116.2,333.6z M124.7,339.2c0,2.1-0.5,3.6-1.6,4.6c-1.1,1-2.7,1.4-4.8,1.4c-0.8,0-1.6-0.1-2.3-0.2
|
||||
c-0.8-0.1-1.4-0.3-2.1-0.5l0.6-2.6c0.5,0.2,1.1,0.4,1.8,0.5c0.7,0.1,1.4,0.2,2.1,0.2c1.2,0,2.1-0.2,2.6-0.8c0.5-0.5,0.8-1.2,0.8-2.2
|
||||
v-0.5c-0.3,0.1-0.7,0.3-1.2,0.4c-0.5,0.2-1,0.2-1.7,0.2c-0.8,0-1.6-0.1-2.3-0.4c-0.7-0.3-1.3-0.7-1.8-1.2c-0.5-0.5-0.9-1.2-1.2-1.9
|
||||
c-0.3-0.8-0.4-1.7-0.4-2.7c0-1,0.1-1.8,0.4-2.6c0.3-0.8,0.7-1.5,1.3-2.1c0.6-0.6,1.2-1,2-1.3c0.8-0.3,1.7-0.5,2.7-0.5
|
||||
c1,0,1.9,0.1,2.8,0.2c0.9,0.1,1.6,0.3,2.2,0.5V339.2z M131.6,340.5h-3v-13.1h3V340.5z M131.9,323.6c0,0.6-0.2,1-0.6,1.4
|
||||
c-0.4,0.3-0.8,0.5-1.3,0.5c-0.5,0-1-0.2-1.3-0.5c-0.4-0.3-0.6-0.8-0.6-1.4c0-0.6,0.2-1,0.6-1.4c0.4-0.3,0.8-0.5,1.3-0.5
|
||||
c0.5,0,0.9,0.2,1.3,0.5C131.7,322.6,131.9,323,131.9,323.6z M147.3,333.9c0,1-0.1,2-0.4,2.8s-0.7,1.6-1.3,2.2
|
||||
c-0.5,0.6-1.2,1.1-2,1.4c-0.8,0.3-1.6,0.5-2.5,0.5s-1.8-0.2-2.6-0.5c-0.8-0.3-1.4-0.8-2-1.4s-1-1.3-1.3-2.2
|
||||
c-0.3-0.9-0.4-1.8-0.4-2.8c0-1,0.2-2,0.4-2.8c0.3-0.9,0.8-1.6,1.3-2.2c0.6-0.6,1.2-1.1,2-1.4c0.8-0.3,1.6-0.5,2.5-0.5
|
||||
c0.9,0,1.8,0.2,2.5,0.5c0.8,0.3,1.4,0.8,2,1.4c0.6,0.6,1,1.3,1.3,2.2C147.1,332,147.3,332.9,147.3,333.9z M144.2,333.9
|
||||
c0-1.3-0.3-2.3-0.8-3.1c-0.6-0.8-1.3-1.2-2.3-1.2s-1.8,0.4-2.4,1.2c-0.6,0.8-0.8,1.8-0.8,3.1c0,1.3,0.3,2.4,0.8,3.1
|
||||
c0.6,0.8,1.4,1.1,2.4,1.1s1.8-0.4,2.3-1.1C143.9,336.3,144.2,335.3,144.2,333.9z M150.4,327.8c0.6-0.2,1.3-0.3,2.3-0.5
|
||||
c0.9-0.2,2-0.2,3.1-0.2c1.1,0,2,0.1,2.7,0.4c0.7,0.3,1.3,0.7,1.7,1.2c0.4,0.5,0.7,1.1,0.9,1.9c0.2,0.7,0.3,1.5,0.3,2.4v7.4h-3v-6.9
|
||||
c0-0.7-0.1-1.3-0.2-1.8c-0.1-0.5-0.2-0.9-0.4-1.2c-0.2-0.3-0.5-0.5-0.9-0.7c-0.3-0.1-0.8-0.2-1.3-0.2c-0.4,0-0.8,0-1.2,0.1
|
||||
c-0.4,0.1-0.7,0.1-0.9,0.1v10.6h-3V327.8z M171.2,326.8c1-0.4,1.9-0.9,2.9-1.5c1-0.6,1.8-1.3,2.6-2.1h2.1v17.3h-3v-13.3
|
||||
c-0.4,0.4-1,0.7-1.7,1c-0.7,0.3-1.3,0.6-2,0.8L171.2,326.8z"/>
|
||||
<path class="st0" d="M88.5,415c2.5,0,4.4,0.5,5.7,1.4c1.3,0.9,2,2.3,2,4.2c0,2.4-1.2,3.9-3.5,4.8c0.3,0.4,0.7,0.9,1.1,1.4
|
||||
c0.4,0.5,0.8,1.1,1.2,1.8c0.4,0.6,0.8,1.3,1.2,2c0.4,0.7,0.7,1.3,1,2h-3.5c-0.3-0.6-0.7-1.2-1-1.8c-0.4-0.6-0.7-1.2-1.1-1.8
|
||||
c-0.4-0.6-0.7-1.1-1.1-1.6c-0.4-0.5-0.7-1-1-1.4c-0.2,0-0.4,0-0.6,0c-0.2,0-0.3,0-0.5,0h-1.5v6.6h-3.1v-17.1
|
||||
c0.8-0.2,1.6-0.3,2.4-0.3C87.1,415,87.8,415,88.5,415z M88.7,417.7c-0.7,0-1.3,0-1.9,0.1v5.6h1.4c0.8,0,1.4,0,2-0.1
|
||||
c0.6-0.1,1.1-0.2,1.5-0.5c0.4-0.2,0.7-0.5,0.9-0.9c0.2-0.4,0.3-0.8,0.3-1.4c0-0.5-0.1-1-0.3-1.4c-0.2-0.4-0.5-0.7-0.9-0.9
|
||||
c-0.4-0.2-0.8-0.4-1.3-0.4C89.9,417.8,89.4,417.7,88.7,417.7z M98.9,426c0-1.1,0.2-2.2,0.5-3c0.3-0.9,0.8-1.6,1.4-2.2
|
||||
c0.6-0.6,1.2-1,1.9-1.3c0.7-0.3,1.5-0.5,2.2-0.5c1.8,0,3.2,0.6,4.2,1.7c1,1.1,1.5,2.8,1.5,5c0,0.2,0,0.4,0,0.6c0,0.2,0,0.4,0,0.6
|
||||
H102c0.1,1,0.4,1.9,1.1,2.4c0.7,0.6,1.6,0.9,2.9,0.9c0.7,0,1.4-0.1,2-0.2c0.6-0.1,1.1-0.3,1.5-0.4l0.4,2.5c-0.2,0.1-0.4,0.2-0.7,0.3
|
||||
c-0.3,0.1-0.6,0.2-1,0.2c-0.4,0.1-0.8,0.1-1.2,0.2c-0.4,0-0.9,0.1-1.3,0.1c-1.2,0-2.2-0.2-3-0.5c-0.8-0.4-1.5-0.8-2.1-1.4
|
||||
c-0.5-0.6-1-1.3-1.2-2.1C99,427.9,98.9,427,98.9,426z M107.6,424.7c0-0.4-0.1-0.8-0.2-1.2c-0.1-0.4-0.3-0.7-0.5-1
|
||||
c-0.2-0.3-0.5-0.5-0.8-0.6c-0.3-0.2-0.7-0.2-1.2-0.2c-0.5,0-0.9,0.1-1.2,0.3c-0.3,0.2-0.7,0.4-0.9,0.7c-0.2,0.3-0.4,0.6-0.5,1
|
||||
c-0.1,0.4-0.2,0.7-0.3,1.1H107.6z M116.2,425.6c0,1.3,0.3,2.2,0.8,2.8c0.6,0.6,1.3,0.9,2.2,0.9c0.5,0,0.9-0.1,1.3-0.2
|
||||
c0.4-0.1,0.8-0.3,1-0.5v-6.8c-0.2-0.1-0.5-0.1-0.8-0.1c-0.3-0.1-0.7-0.1-1.2-0.1c-1.1,0-1.9,0.4-2.5,1.1
|
||||
C116.5,423.5,116.2,424.4,116.2,425.6z M124.7,431.2c0,2.1-0.5,3.6-1.6,4.6c-1.1,1-2.7,1.4-4.8,1.4c-0.8,0-1.6-0.1-2.3-0.2
|
||||
c-0.8-0.1-1.4-0.3-2.1-0.5l0.6-2.6c0.5,0.2,1.1,0.4,1.8,0.5c0.7,0.1,1.4,0.2,2.1,0.2c1.2,0,2.1-0.2,2.6-0.8c0.5-0.5,0.8-1.2,0.8-2.2
|
||||
v-0.5c-0.3,0.1-0.7,0.3-1.2,0.4c-0.5,0.2-1,0.2-1.7,0.2c-0.8,0-1.6-0.1-2.3-0.4c-0.7-0.3-1.3-0.7-1.8-1.2c-0.5-0.5-0.9-1.2-1.2-1.9
|
||||
c-0.3-0.8-0.4-1.7-0.4-2.7c0-1,0.1-1.8,0.4-2.6c0.3-0.8,0.7-1.5,1.3-2.1c0.6-0.6,1.2-1,2-1.3c0.8-0.3,1.7-0.5,2.7-0.5
|
||||
c1,0,1.9,0.1,2.8,0.2c0.9,0.1,1.6,0.3,2.2,0.5V431.2z M131.6,432.5h-3v-13.1h3V432.5z M131.9,415.6c0,0.6-0.2,1-0.6,1.4
|
||||
c-0.4,0.3-0.8,0.5-1.3,0.5c-0.5,0-1-0.2-1.3-0.5c-0.4-0.3-0.6-0.8-0.6-1.4c0-0.6,0.2-1,0.6-1.4c0.4-0.3,0.8-0.5,1.3-0.5
|
||||
c0.5,0,0.9,0.2,1.3,0.5C131.7,414.6,131.9,415,131.9,415.6z M147.3,425.9c0,1-0.1,2-0.4,2.8s-0.7,1.6-1.3,2.2
|
||||
c-0.5,0.6-1.2,1.1-2,1.4c-0.8,0.3-1.6,0.5-2.5,0.5s-1.8-0.2-2.6-0.5c-0.8-0.3-1.4-0.8-2-1.4s-1-1.3-1.3-2.2
|
||||
c-0.3-0.9-0.4-1.8-0.4-2.8c0-1,0.2-2,0.4-2.8c0.3-0.9,0.8-1.6,1.3-2.2c0.6-0.6,1.2-1.1,2-1.4c0.8-0.3,1.6-0.5,2.5-0.5
|
||||
c0.9,0,1.8,0.2,2.5,0.5c0.8,0.3,1.4,0.8,2,1.4c0.6,0.6,1,1.3,1.3,2.2C147.1,424,147.3,424.9,147.3,425.9z M144.2,425.9
|
||||
c0-1.3-0.3-2.3-0.8-3.1c-0.6-0.8-1.3-1.2-2.3-1.2s-1.8,0.4-2.4,1.2c-0.6,0.8-0.8,1.8-0.8,3.1c0,1.3,0.3,2.4,0.8,3.1
|
||||
c0.6,0.8,1.4,1.1,2.4,1.1s1.8-0.4,2.3-1.1C143.9,428.3,144.2,427.3,144.2,425.9z M150.4,419.8c0.6-0.2,1.3-0.3,2.3-0.5
|
||||
c0.9-0.2,2-0.2,3.1-0.2c1.1,0,2,0.1,2.7,0.4c0.7,0.3,1.3,0.7,1.7,1.2c0.4,0.5,0.7,1.1,0.9,1.9c0.2,0.7,0.3,1.5,0.3,2.4v7.4h-3v-6.9
|
||||
c0-0.7-0.1-1.3-0.2-1.8c-0.1-0.5-0.2-0.9-0.4-1.2c-0.2-0.3-0.5-0.5-0.9-0.7c-0.3-0.1-0.8-0.2-1.3-0.2c-0.4,0-0.8,0-1.2,0.1
|
||||
c-0.4,0.1-0.7,0.1-0.9,0.1v10.6h-3V419.8z M174.8,432.9c-0.4,0-0.9,0-1.4-0.1c-0.5-0.1-0.9-0.1-1.3-0.2c-0.4-0.1-0.8-0.2-1.2-0.3
|
||||
c-0.3-0.1-0.6-0.2-0.8-0.3l0.6-2.6c0.4,0.2,0.9,0.4,1.5,0.6c0.7,0.2,1.5,0.3,2.5,0.3c1.3,0,2.3-0.2,2.9-0.8c0.6-0.5,0.9-1.2,0.9-2.1
|
||||
c0-0.5-0.1-1-0.4-1.4c-0.2-0.4-0.5-0.7-0.9-0.9c-0.4-0.2-0.8-0.4-1.3-0.5c-0.5-0.1-1-0.1-1.6-0.1h-1v-2.4h1.2c0.4,0,0.8,0,1.1-0.1
|
||||
c0.4-0.1,0.8-0.2,1.1-0.4c0.3-0.2,0.6-0.5,0.8-0.8c0.2-0.3,0.3-0.7,0.3-1.2c0-0.4-0.1-0.7-0.2-1c-0.1-0.3-0.4-0.5-0.6-0.7
|
||||
c-0.2-0.2-0.5-0.3-0.8-0.4c-0.3-0.1-0.6-0.1-1-0.1c-0.8,0-1.4,0.1-2,0.3c-0.6,0.2-1.1,0.5-1.6,0.8l-1.1-2.2c0.2-0.1,0.5-0.3,0.8-0.5
|
||||
c0.3-0.2,0.7-0.3,1.1-0.5c0.4-0.1,0.9-0.3,1.3-0.4c0.5-0.1,1-0.1,1.5-0.1c1,0,1.8,0.1,2.5,0.4s1.3,0.6,1.7,1c0.5,0.4,0.8,0.9,1,1.5
|
||||
c0.2,0.6,0.3,1.2,0.3,1.9c0,0.8-0.2,1.5-0.7,2.1c-0.4,0.6-1,1.1-1.7,1.4c0.9,0.3,1.6,0.8,2.2,1.6c0.6,0.7,0.9,1.7,0.9,2.8
|
||||
c0,0.8-0.1,1.5-0.4,2.1c-0.3,0.6-0.7,1.2-1.2,1.7c-0.5,0.5-1.2,0.8-2.1,1.1C177,432.7,176,432.9,174.8,432.9z"/>
|
||||
<path class="st0" d="M88.5,508c2.5,0,4.4,0.5,5.7,1.4c1.3,0.9,2,2.3,2,4.2c0,2.3-1.2,3.9-3.5,4.8c0.3,0.4,0.7,0.9,1.1,1.4
|
||||
s0.8,1.1,1.2,1.8c0.4,0.6,0.8,1.3,1.2,2c0.4,0.7,0.7,1.3,1,2h-3.5c-0.3-0.6-0.7-1.2-1-1.8c-0.4-0.6-0.7-1.2-1.1-1.8
|
||||
c-0.4-0.6-0.7-1.1-1.1-1.6c-0.4-0.5-0.7-1-1-1.4c-0.2,0-0.4,0-0.6,0c-0.2,0-0.3,0-0.5,0h-1.5v6.5h-3.1v-17.1
|
||||
c0.8-0.2,1.6-0.3,2.4-0.3C87.1,508,87.8,508,88.5,508z M88.7,510.7c-0.7,0-1.3,0-1.9,0.1v5.6h1.4c0.8,0,1.4,0,2-0.1
|
||||
c0.6-0.1,1.1-0.2,1.5-0.4c0.4-0.2,0.7-0.5,0.9-0.9c0.2-0.4,0.3-0.8,0.3-1.4c0-0.5-0.1-1-0.3-1.3c-0.2-0.4-0.5-0.7-0.9-0.9
|
||||
c-0.4-0.2-0.8-0.4-1.3-0.4C89.9,510.8,89.4,510.7,88.7,510.7z M98.9,519c0-1.1,0.2-2.2,0.5-3c0.3-0.9,0.8-1.6,1.4-2.2
|
||||
c0.6-0.6,1.2-1,1.9-1.3c0.7-0.3,1.5-0.5,2.2-0.5c1.8,0,3.2,0.6,4.2,1.7c1,1.1,1.5,2.8,1.5,5c0,0.2,0,0.4,0,0.6c0,0.2,0,0.4,0,0.5
|
||||
H102c0.1,1.1,0.4,1.9,1.1,2.5c0.7,0.6,1.6,0.9,2.9,0.9c0.7,0,1.4-0.1,2-0.2c0.6-0.1,1.1-0.3,1.5-0.4l0.4,2.5
|
||||
c-0.2,0.1-0.4,0.2-0.7,0.3c-0.3,0.1-0.6,0.2-1,0.2c-0.4,0.1-0.8,0.2-1.2,0.2c-0.4,0-0.9,0.1-1.3,0.1c-1.2,0-2.2-0.2-3-0.5
|
||||
c-0.8-0.4-1.5-0.8-2.1-1.4c-0.5-0.6-1-1.3-1.2-2.1C99,520.9,98.9,520,98.9,519z M107.6,517.7c0-0.4-0.1-0.8-0.2-1.2
|
||||
c-0.1-0.4-0.3-0.7-0.5-1c-0.2-0.3-0.5-0.5-0.8-0.6c-0.3-0.2-0.7-0.2-1.2-0.2c-0.5,0-0.9,0.1-1.2,0.3c-0.3,0.2-0.7,0.4-0.9,0.7
|
||||
c-0.2,0.3-0.4,0.6-0.5,1c-0.1,0.4-0.2,0.7-0.3,1.1H107.6z M116.2,518.6c0,1.3,0.3,2.2,0.8,2.8c0.6,0.6,1.3,0.9,2.2,0.9
|
||||
c0.5,0,0.9-0.1,1.3-0.2c0.4-0.1,0.8-0.3,1-0.5v-6.8c-0.2,0-0.5-0.1-0.8-0.1c-0.3,0-0.7-0.1-1.2-0.1c-1.1,0-1.9,0.4-2.5,1.1
|
||||
C116.5,516.5,116.2,517.4,116.2,518.6z M124.7,524.2c0,2.1-0.5,3.6-1.6,4.6c-1.1,1-2.7,1.5-4.8,1.5c-0.8,0-1.6-0.1-2.3-0.2
|
||||
c-0.8-0.1-1.4-0.3-2.1-0.5l0.6-2.6c0.5,0.2,1.1,0.4,1.8,0.5c0.7,0.1,1.4,0.2,2.1,0.2c1.2,0,2.1-0.2,2.6-0.8c0.5-0.5,0.8-1.2,0.8-2.2
|
||||
v-0.5c-0.3,0.2-0.7,0.3-1.2,0.5c-0.5,0.2-1,0.2-1.7,0.2c-0.8,0-1.6-0.1-2.3-0.4c-0.7-0.3-1.3-0.7-1.8-1.2c-0.5-0.5-0.9-1.2-1.2-1.9
|
||||
c-0.3-0.8-0.4-1.7-0.4-2.7c0-1,0.1-1.8,0.4-2.6c0.3-0.8,0.7-1.5,1.3-2c0.6-0.6,1.2-1,2-1.3c0.8-0.3,1.7-0.5,2.7-0.5
|
||||
c1,0,1.9,0.1,2.8,0.2c0.9,0.1,1.6,0.3,2.2,0.5V524.2z M131.6,525.5h-3v-13.1h3V525.5z M131.9,508.6c0,0.6-0.2,1-0.6,1.4
|
||||
c-0.4,0.3-0.8,0.5-1.3,0.5c-0.5,0-1-0.2-1.3-0.5c-0.4-0.3-0.6-0.8-0.6-1.4c0-0.6,0.2-1,0.6-1.4c0.4-0.3,0.8-0.5,1.3-0.5
|
||||
c0.5,0,0.9,0.2,1.3,0.5C131.7,507.6,131.9,508,131.9,508.6z M147.3,518.9c0,1-0.1,2-0.4,2.8c-0.3,0.9-0.7,1.6-1.3,2.2
|
||||
c-0.5,0.6-1.2,1.1-2,1.4c-0.8,0.3-1.6,0.5-2.5,0.5s-1.8-0.2-2.6-0.5s-1.4-0.8-2-1.4c-0.6-0.6-1-1.3-1.3-2.2
|
||||
c-0.3-0.8-0.4-1.8-0.4-2.8c0-1,0.2-2,0.4-2.8c0.3-0.8,0.8-1.6,1.3-2.2c0.6-0.6,1.2-1.1,2-1.4c0.8-0.3,1.6-0.5,2.5-0.5
|
||||
c0.9,0,1.8,0.2,2.5,0.5c0.8,0.3,1.4,0.8,2,1.4c0.6,0.6,1,1.3,1.3,2.2C147.1,517,147.3,517.9,147.3,518.9z M144.2,518.9
|
||||
c0-1.3-0.3-2.3-0.8-3.1c-0.6-0.8-1.3-1.2-2.3-1.2s-1.8,0.4-2.4,1.2c-0.6,0.8-0.8,1.8-0.8,3.1c0,1.3,0.3,2.4,0.8,3.1
|
||||
c0.6,0.8,1.4,1.1,2.4,1.1s1.8-0.4,2.3-1.1C143.9,521.3,144.2,520.3,144.2,518.9z M150.4,512.8c0.6-0.2,1.3-0.3,2.3-0.5
|
||||
c0.9-0.2,2-0.2,3.1-0.2c1.1,0,2,0.2,2.7,0.5c0.7,0.3,1.3,0.7,1.7,1.2c0.4,0.5,0.7,1.1,0.9,1.9c0.2,0.7,0.3,1.5,0.3,2.4v7.4h-3v-6.9
|
||||
c0-0.7-0.1-1.3-0.2-1.8c-0.1-0.5-0.2-0.9-0.4-1.2c-0.2-0.3-0.5-0.5-0.9-0.7c-0.3-0.1-0.8-0.2-1.3-0.2c-0.4,0-0.8,0-1.2,0.1
|
||||
c-0.4,0-0.7,0.1-0.9,0.1v10.5h-3V512.8z M177.3,511.9c-0.4,0.5-0.8,1-1.2,1.6c-0.4,0.5-0.8,1.1-1.2,1.7c-0.4,0.6-0.8,1.2-1.2,1.8
|
||||
c-0.4,0.6-0.7,1.2-1,1.9h4.6V511.9z M180.3,508.2v10.7h2v2.5h-2v4.2h-2.9v-4.2h-7.6v-2.1c0.3-0.7,0.8-1.6,1.3-2.5
|
||||
c0.6-1,1.2-1.9,1.9-2.9c0.7-1,1.4-2,2.2-3c0.8-1,1.5-1.8,2.3-2.6H180.3z"/>
|
||||
<path class="st0" d="M88.5,641.1c2.5,0,4.4,0.5,5.7,1.4c1.3,0.9,2,2.3,2,4.2c0,2.3-1.2,3.9-3.5,4.8c0.3,0.4,0.7,0.8,1.1,1.4
|
||||
s0.8,1.2,1.2,1.8c0.4,0.6,0.8,1.3,1.2,2c0.4,0.7,0.7,1.3,1,2h-3.5c-0.3-0.6-0.7-1.2-1-1.8c-0.4-0.6-0.7-1.2-1.1-1.8
|
||||
c-0.4-0.6-0.7-1.1-1.1-1.6c-0.4-0.5-0.7-1-1-1.4c-0.2,0-0.4,0-0.6,0c-0.2,0-0.3,0-0.5,0h-1.5v6.5h-3.1v-17.1
|
||||
c0.8-0.2,1.6-0.3,2.4-0.3C87.1,641.2,87.8,641.1,88.5,641.1z M88.7,643.8c-0.7,0-1.3,0-1.9,0.1v5.6h1.4c0.8,0,1.4,0,2-0.1
|
||||
c0.6-0.1,1.1-0.2,1.5-0.5c0.4-0.2,0.7-0.5,0.9-0.9c0.2-0.4,0.3-0.8,0.3-1.4c0-0.5-0.1-1-0.3-1.3c-0.2-0.4-0.5-0.7-0.9-0.9
|
||||
c-0.4-0.2-0.8-0.4-1.3-0.5C89.9,643.9,89.4,643.8,88.7,643.8z M98.9,652.1c0-1.2,0.2-2.2,0.5-3c0.3-0.9,0.8-1.6,1.4-2.1
|
||||
c0.6-0.6,1.2-1,1.9-1.3c0.7-0.3,1.5-0.4,2.2-0.4c1.8,0,3.2,0.6,4.2,1.7c1,1.1,1.5,2.8,1.5,5c0,0.2,0,0.4,0,0.6c0,0.2,0,0.4,0,0.5
|
||||
H102c0.1,1,0.4,1.9,1.1,2.5c0.7,0.6,1.6,0.8,2.9,0.8c0.7,0,1.4-0.1,2-0.2c0.6-0.1,1.1-0.3,1.5-0.4l0.4,2.5c-0.2,0.1-0.4,0.2-0.7,0.3
|
||||
c-0.3,0.1-0.6,0.2-1,0.2c-0.4,0.1-0.8,0.2-1.2,0.2c-0.4,0-0.9,0.1-1.3,0.1c-1.2,0-2.2-0.2-3-0.5c-0.8-0.3-1.5-0.8-2.1-1.4
|
||||
c-0.5-0.6-1-1.3-1.2-2.2C99,654,98.9,653.1,98.9,652.1z M107.6,650.8c0-0.4-0.1-0.8-0.2-1.2c-0.1-0.4-0.3-0.7-0.5-1
|
||||
c-0.2-0.3-0.5-0.5-0.8-0.7c-0.3-0.2-0.7-0.2-1.2-0.2c-0.5,0-0.9,0.1-1.2,0.3c-0.3,0.2-0.7,0.4-0.9,0.7c-0.2,0.3-0.4,0.6-0.5,1
|
||||
c-0.1,0.4-0.2,0.7-0.3,1.1H107.6z M116.2,651.7c0,1.3,0.3,2.2,0.8,2.8c0.6,0.6,1.3,0.9,2.2,0.9c0.5,0,0.9-0.1,1.3-0.2
|
||||
c0.4-0.1,0.8-0.3,1-0.5V648c-0.2,0-0.5-0.1-0.8-0.1c-0.3,0-0.7-0.1-1.2-0.1c-1.1,0-1.9,0.4-2.5,1.1
|
||||
C116.5,649.6,116.2,650.6,116.2,651.7z M124.7,657.3c0,2.1-0.5,3.6-1.6,4.6c-1.1,1-2.7,1.5-4.8,1.5c-0.8,0-1.6-0.1-2.3-0.2
|
||||
c-0.8-0.1-1.4-0.3-2.1-0.5l0.6-2.6c0.5,0.2,1.1,0.4,1.8,0.5c0.7,0.1,1.4,0.2,2.1,0.2c1.2,0,2.1-0.2,2.6-0.8c0.5-0.5,0.8-1.2,0.8-2.2
|
||||
v-0.5c-0.3,0.1-0.7,0.3-1.2,0.5c-0.5,0.1-1,0.2-1.7,0.2c-0.8,0-1.6-0.1-2.3-0.4c-0.7-0.3-1.3-0.7-1.8-1.2c-0.5-0.5-0.9-1.2-1.2-1.9
|
||||
c-0.3-0.8-0.4-1.7-0.4-2.7c0-1,0.1-1.8,0.4-2.6c0.3-0.8,0.7-1.5,1.3-2c0.6-0.6,1.2-1,2-1.3c0.8-0.3,1.7-0.5,2.7-0.5
|
||||
c1,0,1.9,0.1,2.8,0.2c0.9,0.2,1.6,0.3,2.2,0.5V657.3z M131.6,658.6h-3v-13.1h3V658.6z M131.9,641.7c0,0.6-0.2,1-0.6,1.3
|
||||
c-0.4,0.3-0.8,0.5-1.3,0.5c-0.5,0-1-0.2-1.3-0.5c-0.4-0.3-0.6-0.8-0.6-1.3c0-0.6,0.2-1,0.6-1.4c0.4-0.3,0.8-0.5,1.3-0.5
|
||||
c0.5,0,0.9,0.2,1.3,0.5C131.7,640.7,131.9,641.1,131.9,641.7z M147.3,652.1c0,1-0.1,2-0.4,2.8c-0.3,0.8-0.7,1.6-1.3,2.2
|
||||
c-0.5,0.6-1.2,1.1-2,1.4c-0.8,0.3-1.6,0.5-2.5,0.5s-1.8-0.2-2.6-0.5c-0.8-0.3-1.4-0.8-2-1.4s-1-1.3-1.3-2.2
|
||||
c-0.3-0.9-0.4-1.8-0.4-2.8c0-1,0.2-2,0.4-2.8c0.3-0.9,0.8-1.6,1.3-2.2c0.6-0.6,1.2-1.1,2-1.4c0.8-0.3,1.6-0.5,2.5-0.5
|
||||
c0.9,0,1.8,0.2,2.5,0.5c0.8,0.3,1.4,0.8,2,1.4c0.6,0.6,1,1.3,1.3,2.2C147.1,650.1,147.3,651,147.3,652.1z M144.2,652.1
|
||||
c0-1.3-0.3-2.3-0.8-3.1c-0.6-0.8-1.3-1.1-2.3-1.1s-1.8,0.4-2.4,1.1c-0.6,0.8-0.8,1.8-0.8,3.1c0,1.3,0.3,2.4,0.8,3.1
|
||||
c0.6,0.8,1.4,1.2,2.4,1.2s1.8-0.4,2.3-1.2C143.9,654.4,144.2,653.4,144.2,652.1z M150.4,646c0.6-0.2,1.3-0.3,2.3-0.5
|
||||
c0.9-0.1,2-0.2,3.1-0.2c1.1,0,2,0.1,2.7,0.5c0.7,0.3,1.3,0.7,1.7,1.2c0.4,0.5,0.7,1.2,0.9,1.9c0.2,0.7,0.3,1.5,0.3,2.4v7.3h-3v-6.9
|
||||
c0-0.7-0.1-1.3-0.2-1.8c-0.1-0.5-0.2-0.9-0.4-1.2c-0.2-0.3-0.5-0.5-0.9-0.7c-0.3-0.2-0.8-0.2-1.3-0.2c-0.4,0-0.8,0-1.2,0.1
|
||||
c-0.4,0-0.7,0.1-0.9,0.1v10.5h-3V646z M170.8,646c0.6-0.2,1.3-0.3,2.3-0.5c0.9-0.1,2-0.2,3.1-0.2c1.1,0,2,0.1,2.7,0.5
|
||||
c0.7,0.3,1.3,0.7,1.7,1.2c0.4,0.5,0.7,1.2,0.9,1.9c0.2,0.7,0.3,1.5,0.3,2.4v7.3h-3v-6.9c0-0.7-0.1-1.3-0.2-1.8
|
||||
c-0.1-0.5-0.2-0.9-0.4-1.2c-0.2-0.3-0.5-0.5-0.9-0.7c-0.3-0.2-0.8-0.2-1.3-0.2c-0.4,0-0.8,0-1.2,0.1c-0.4,0-0.7,0.1-0.9,0.1v10.5h-3
|
||||
V646z"/>
|
||||
<path class="st0" d="M402.5,323c2.5,0,4.4,0.5,5.7,1.4c1.3,0.9,2,2.3,2,4.2c0,2.4-1.2,3.9-3.5,4.8c0.3,0.4,0.7,0.9,1.1,1.4
|
||||
c0.4,0.5,0.8,1.1,1.2,1.8c0.4,0.6,0.8,1.3,1.2,2c0.4,0.7,0.7,1.3,1,2h-3.5c-0.3-0.6-0.7-1.2-1-1.8c-0.4-0.6-0.7-1.2-1.1-1.8
|
||||
c-0.4-0.6-0.7-1.1-1.1-1.6c-0.4-0.5-0.7-1-1-1.4c-0.2,0-0.4,0-0.6,0s-0.3,0-0.5,0h-1.5v6.6h-3.1v-17.1c0.8-0.2,1.6-0.3,2.5-0.3
|
||||
C401.1,323,401.8,323,402.5,323z M402.7,325.7c-0.7,0-1.3,0-1.9,0.1v5.6h1.4c0.8,0,1.4,0,2-0.1c0.6-0.1,1.1-0.2,1.5-0.5
|
||||
c0.4-0.2,0.7-0.5,0.9-0.9c0.2-0.4,0.3-0.8,0.3-1.4c0-0.5-0.1-1-0.3-1.4c-0.2-0.4-0.5-0.7-0.9-0.9c-0.4-0.2-0.8-0.4-1.3-0.4
|
||||
C403.9,325.8,403.4,325.7,402.7,325.7z M412.9,334c0-1.1,0.2-2.2,0.5-3c0.4-0.9,0.8-1.6,1.4-2.2c0.6-0.6,1.2-1,2-1.3
|
||||
c0.7-0.3,1.5-0.5,2.2-0.5c1.8,0,3.2,0.6,4.2,1.7c1,1.1,1.5,2.8,1.5,5c0,0.2,0,0.4,0,0.6c0,0.2,0,0.4,0,0.6H416
|
||||
c0.1,1,0.5,1.9,1.1,2.4c0.7,0.6,1.6,0.9,2.9,0.9c0.7,0,1.4-0.1,2-0.2c0.6-0.1,1.1-0.3,1.4-0.4l0.4,2.5c-0.2,0.1-0.4,0.2-0.7,0.3
|
||||
c-0.3,0.1-0.6,0.2-1,0.2c-0.4,0.1-0.8,0.1-1.2,0.2c-0.4,0-0.9,0.1-1.3,0.1c-1.1,0-2.1-0.2-3-0.5c-0.9-0.4-1.6-0.8-2.1-1.4
|
||||
c-0.5-0.6-1-1.3-1.2-2.1C413,335.9,412.9,335,412.9,334z M421.6,332.7c0-0.4-0.1-0.8-0.2-1.2c-0.1-0.4-0.3-0.7-0.5-1
|
||||
c-0.2-0.3-0.5-0.5-0.8-0.6c-0.3-0.2-0.7-0.2-1.1-0.2c-0.5,0-0.9,0.1-1.2,0.3c-0.4,0.2-0.6,0.4-0.9,0.7c-0.2,0.3-0.4,0.6-0.6,1
|
||||
c-0.1,0.4-0.2,0.7-0.3,1.1H421.6z M430.2,333.6c0,1.3,0.3,2.2,0.8,2.8c0.6,0.6,1.3,0.9,2.2,0.9c0.5,0,0.9-0.1,1.4-0.2
|
||||
c0.4-0.1,0.8-0.3,1.1-0.5v-6.8c-0.2-0.1-0.5-0.1-0.8-0.1c-0.3-0.1-0.7-0.1-1.2-0.1c-1.1,0-1.9,0.4-2.5,1.1
|
||||
C430.5,331.5,430.2,332.4,430.2,333.6z M438.7,339.2c0,2.1-0.5,3.6-1.6,4.6c-1,1-2.7,1.4-4.9,1.4c-0.8,0-1.6-0.1-2.4-0.2
|
||||
c-0.8-0.1-1.4-0.3-2-0.5l0.5-2.6c0.5,0.2,1.1,0.4,1.8,0.5c0.7,0.1,1.4,0.2,2.2,0.2c1.2,0,2.1-0.2,2.6-0.8c0.5-0.5,0.8-1.2,0.8-2.2
|
||||
v-0.5c-0.3,0.1-0.7,0.3-1.2,0.4c-0.5,0.2-1,0.2-1.7,0.2c-0.8,0-1.6-0.1-2.3-0.4c-0.7-0.3-1.3-0.7-1.8-1.2c-0.5-0.5-0.9-1.2-1.1-1.9
|
||||
c-0.3-0.8-0.4-1.7-0.4-2.7c0-1,0.1-1.8,0.4-2.6c0.3-0.8,0.7-1.5,1.3-2.1c0.6-0.6,1.2-1,2.1-1.3c0.8-0.3,1.7-0.5,2.7-0.5
|
||||
c1,0,1.9,0.1,2.8,0.2c0.9,0.1,1.6,0.3,2.2,0.5V339.2z M445.6,340.5h-3v-13.1h3V340.5z M445.9,323.6c0,0.6-0.2,1-0.6,1.4
|
||||
c-0.4,0.3-0.8,0.5-1.3,0.5c-0.5,0-1-0.2-1.3-0.5c-0.4-0.3-0.5-0.8-0.5-1.4c0-0.6,0.2-1,0.5-1.4c0.4-0.3,0.8-0.5,1.3-0.5
|
||||
c0.5,0,0.9,0.2,1.3,0.5C445.7,322.6,445.9,323,445.9,323.6z M461.3,333.9c0,1-0.2,2-0.5,2.8s-0.7,1.6-1.3,2.2
|
||||
c-0.6,0.6-1.2,1.1-2,1.4c-0.8,0.3-1.6,0.5-2.6,0.5c-0.9,0-1.8-0.2-2.5-0.5c-0.8-0.3-1.4-0.8-2-1.4c-0.5-0.6-1-1.3-1.3-2.2
|
||||
c-0.3-0.9-0.5-1.8-0.5-2.8c0-1,0.1-2,0.5-2.8c0.3-0.9,0.8-1.6,1.3-2.2c0.6-0.6,1.2-1.1,2-1.4c0.8-0.3,1.6-0.5,2.5-0.5
|
||||
c0.9,0,1.8,0.2,2.5,0.5c0.8,0.3,1.4,0.8,2,1.4c0.5,0.6,1,1.3,1.3,2.2C461.1,332,461.3,332.9,461.3,333.9z M458.2,333.9
|
||||
c0-1.3-0.3-2.3-0.9-3.1c-0.5-0.8-1.3-1.2-2.3-1.2s-1.8,0.4-2.3,1.2c-0.6,0.8-0.8,1.8-0.8,3.1c0,1.3,0.3,2.4,0.8,3.1
|
||||
c0.6,0.8,1.3,1.1,2.3,1.1s1.8-0.4,2.3-1.1C457.9,336.3,458.2,335.3,458.2,333.9z M464.4,327.8c0.6-0.2,1.3-0.3,2.3-0.5
|
||||
c0.9-0.2,2-0.2,3.1-0.2c1.1,0,2,0.1,2.7,0.4c0.7,0.3,1.3,0.7,1.7,1.2c0.4,0.5,0.7,1.1,0.9,1.9c0.2,0.7,0.3,1.5,0.3,2.4v7.4h-3v-6.9
|
||||
c0-0.7-0.1-1.3-0.1-1.8c-0.1-0.5-0.2-0.9-0.5-1.2c-0.2-0.3-0.5-0.5-0.9-0.7c-0.4-0.1-0.8-0.2-1.3-0.2c-0.4,0-0.8,0-1.2,0.1
|
||||
c-0.4,0.1-0.7,0.1-0.9,0.1v10.6h-3V327.8z M485.2,326.8c1-0.4,1.9-0.9,2.9-1.5c1-0.6,1.9-1.3,2.6-2.1h2.1v17.3h-3v-13.3
|
||||
c-0.5,0.4-1,0.7-1.7,1c-0.7,0.3-1.3,0.6-2,0.8L485.2,326.8z"/>
|
||||
<path class="st0" d="M402.5,415c2.5,0,4.4,0.5,5.7,1.4c1.3,0.9,2,2.3,2,4.2c0,2.4-1.2,3.9-3.5,4.8c0.3,0.4,0.7,0.9,1.1,1.4
|
||||
c0.4,0.5,0.8,1.1,1.2,1.8c0.4,0.6,0.8,1.3,1.2,2c0.4,0.7,0.7,1.3,1,2h-3.5c-0.3-0.6-0.7-1.2-1-1.8c-0.4-0.6-0.7-1.2-1.1-1.8
|
||||
c-0.4-0.6-0.7-1.1-1.1-1.6c-0.4-0.5-0.7-1-1-1.4c-0.2,0-0.4,0-0.6,0s-0.3,0-0.5,0h-1.5v6.6h-3.1v-17.1c0.8-0.2,1.6-0.3,2.5-0.3
|
||||
C401.1,415,401.8,415,402.5,415z M402.7,417.7c-0.7,0-1.3,0-1.9,0.1v5.6h1.4c0.8,0,1.4,0,2-0.1c0.6-0.1,1.1-0.2,1.5-0.5
|
||||
c0.4-0.2,0.7-0.5,0.9-0.9c0.2-0.4,0.3-0.8,0.3-1.4c0-0.5-0.1-1-0.3-1.4c-0.2-0.4-0.5-0.7-0.9-0.9c-0.4-0.2-0.8-0.4-1.3-0.4
|
||||
C403.9,417.8,403.4,417.7,402.7,417.7z M412.9,426c0-1.1,0.2-2.2,0.5-3c0.4-0.9,0.8-1.6,1.4-2.2c0.6-0.6,1.2-1,2-1.3
|
||||
c0.7-0.3,1.5-0.5,2.2-0.5c1.8,0,3.2,0.6,4.2,1.7c1,1.1,1.5,2.8,1.5,5c0,0.2,0,0.4,0,0.6c0,0.2,0,0.4,0,0.6H416
|
||||
c0.1,1,0.5,1.9,1.1,2.4c0.7,0.6,1.6,0.9,2.9,0.9c0.7,0,1.4-0.1,2-0.2c0.6-0.1,1.1-0.3,1.4-0.4l0.4,2.5c-0.2,0.1-0.4,0.2-0.7,0.3
|
||||
c-0.3,0.1-0.6,0.2-1,0.2c-0.4,0.1-0.8,0.1-1.2,0.2c-0.4,0-0.9,0.1-1.3,0.1c-1.1,0-2.1-0.2-3-0.5c-0.9-0.4-1.6-0.8-2.1-1.4
|
||||
c-0.5-0.6-1-1.3-1.2-2.1C413,427.9,412.9,427,412.9,426z M421.6,424.7c0-0.4-0.1-0.8-0.2-1.2c-0.1-0.4-0.3-0.7-0.5-1
|
||||
c-0.2-0.3-0.5-0.5-0.8-0.6c-0.3-0.2-0.7-0.2-1.1-0.2c-0.5,0-0.9,0.1-1.2,0.3c-0.4,0.2-0.6,0.4-0.9,0.7c-0.2,0.3-0.4,0.6-0.6,1
|
||||
c-0.1,0.4-0.2,0.7-0.3,1.1H421.6z M430.2,425.6c0,1.3,0.3,2.2,0.8,2.8c0.6,0.6,1.3,0.9,2.2,0.9c0.5,0,0.9-0.1,1.4-0.2
|
||||
c0.4-0.1,0.8-0.3,1.1-0.5v-6.8c-0.2-0.1-0.5-0.1-0.8-0.1c-0.3-0.1-0.7-0.1-1.2-0.1c-1.1,0-1.9,0.4-2.5,1.1
|
||||
C430.5,423.5,430.2,424.4,430.2,425.6z M438.7,431.2c0,2.1-0.5,3.6-1.6,4.6c-1,1-2.7,1.4-4.9,1.4c-0.8,0-1.6-0.1-2.4-0.2
|
||||
c-0.8-0.1-1.4-0.3-2-0.5l0.5-2.6c0.5,0.2,1.1,0.4,1.8,0.5c0.7,0.1,1.4,0.2,2.2,0.2c1.2,0,2.1-0.2,2.6-0.8c0.5-0.5,0.8-1.2,0.8-2.2
|
||||
v-0.5c-0.3,0.1-0.7,0.3-1.2,0.4c-0.5,0.2-1,0.2-1.7,0.2c-0.8,0-1.6-0.1-2.3-0.4c-0.7-0.3-1.3-0.7-1.8-1.2c-0.5-0.5-0.9-1.2-1.1-1.9
|
||||
c-0.3-0.8-0.4-1.7-0.4-2.7c0-1,0.1-1.8,0.4-2.6c0.3-0.8,0.7-1.5,1.3-2.1c0.6-0.6,1.2-1,2.1-1.3c0.8-0.3,1.7-0.5,2.7-0.5
|
||||
c1,0,1.9,0.1,2.8,0.2c0.9,0.1,1.6,0.3,2.2,0.5V431.2z M445.6,432.5h-3v-13.1h3V432.5z M445.9,415.6c0,0.6-0.2,1-0.6,1.4
|
||||
c-0.4,0.3-0.8,0.5-1.3,0.5c-0.5,0-1-0.2-1.3-0.5c-0.4-0.3-0.5-0.8-0.5-1.4c0-0.6,0.2-1,0.5-1.4c0.4-0.3,0.8-0.5,1.3-0.5
|
||||
c0.5,0,0.9,0.2,1.3,0.5C445.7,414.6,445.9,415,445.9,415.6z M461.3,425.9c0,1-0.2,2-0.5,2.8s-0.7,1.6-1.3,2.2
|
||||
c-0.6,0.6-1.2,1.1-2,1.4c-0.8,0.3-1.6,0.5-2.6,0.5c-0.9,0-1.8-0.2-2.5-0.5c-0.8-0.3-1.4-0.8-2-1.4c-0.5-0.6-1-1.3-1.3-2.2
|
||||
c-0.3-0.9-0.5-1.8-0.5-2.8c0-1,0.1-2,0.5-2.8c0.3-0.9,0.8-1.6,1.3-2.2c0.6-0.6,1.2-1.1,2-1.4c0.8-0.3,1.6-0.5,2.5-0.5
|
||||
c0.9,0,1.8,0.2,2.5,0.5c0.8,0.3,1.4,0.8,2,1.4c0.5,0.6,1,1.3,1.3,2.2C461.1,424,461.3,424.9,461.3,425.9z M458.2,425.9
|
||||
c0-1.3-0.3-2.3-0.9-3.1c-0.5-0.8-1.3-1.2-2.3-1.2s-1.8,0.4-2.3,1.2c-0.6,0.8-0.8,1.8-0.8,3.1c0,1.3,0.3,2.4,0.8,3.1
|
||||
c0.6,0.8,1.3,1.1,2.3,1.1s1.8-0.4,2.3-1.1C457.9,428.3,458.2,427.3,458.2,425.9z M464.4,419.8c0.6-0.2,1.3-0.3,2.3-0.5
|
||||
c0.9-0.2,2-0.2,3.1-0.2c1.1,0,2,0.1,2.7,0.4c0.7,0.3,1.3,0.7,1.7,1.2c0.4,0.5,0.7,1.1,0.9,1.9c0.2,0.7,0.3,1.5,0.3,2.4v7.4h-3v-6.9
|
||||
c0-0.7-0.1-1.3-0.1-1.8c-0.1-0.5-0.2-0.9-0.5-1.2c-0.2-0.3-0.5-0.5-0.9-0.7c-0.4-0.1-0.8-0.2-1.3-0.2c-0.4,0-0.8,0-1.2,0.1
|
||||
c-0.4,0.1-0.7,0.1-0.9,0.1v10.6h-3V419.8z M494.9,419.7c0,0.6-0.1,1.2-0.4,1.8c-0.2,0.6-0.6,1.1-1,1.7c-0.4,0.5-0.8,1.1-1.3,1.6
|
||||
c-0.5,0.5-1,1-1.5,1.5c-0.3,0.2-0.6,0.5-0.9,0.9c-0.3,0.4-0.6,0.7-0.9,1.1c-0.3,0.3-0.6,0.7-0.8,1c-0.2,0.3-0.3,0.6-0.4,0.8h7.7v2.6
|
||||
h-11c0-0.1,0-0.3,0-0.5c0-0.2,0-0.4,0-0.5c0-0.8,0.1-1.5,0.4-2.2c0.3-0.7,0.6-1.3,1-1.9c0.4-0.6,0.9-1.1,1.4-1.6
|
||||
c0.5-0.5,1-1,1.6-1.5c0.4-0.4,0.8-0.8,1.1-1.1c0.4-0.4,0.7-0.7,1-1.1c0.3-0.4,0.5-0.7,0.7-1.1c0.2-0.4,0.2-0.8,0.2-1.2
|
||||
c0-0.9-0.2-1.5-0.8-1.9c-0.5-0.4-1.1-0.5-1.8-0.5c-0.5,0-0.9,0.1-1.3,0.2s-0.8,0.3-1.1,0.5c-0.3,0.2-0.6,0.4-0.8,0.6
|
||||
c-0.2,0.2-0.4,0.3-0.5,0.5L484,417c0.7-0.7,1.5-1.2,2.4-1.6c1-0.4,2-0.6,3.1-0.6c1.9,0,3.2,0.4,4.1,1.3
|
||||
C494.5,417,494.9,418.2,494.9,419.7z"/>
|
||||
<path class="st0" d="M402.5,646c2.5,0,4.4,0.5,5.7,1.4c1.3,0.9,2,2.3,2,4.2c0,2.3-1.2,3.9-3.5,4.8c0.3,0.4,0.7,0.9,1.1,1.4
|
||||
s0.8,1.1,1.2,1.8c0.4,0.6,0.8,1.3,1.2,2c0.4,0.7,0.7,1.3,1,2h-3.5c-0.3-0.6-0.7-1.2-1-1.8c-0.4-0.6-0.7-1.2-1.1-1.8
|
||||
c-0.4-0.6-0.7-1.1-1.1-1.6c-0.4-0.5-0.7-1-1-1.4c-0.2,0-0.4,0-0.6,0s-0.3,0-0.5,0h-1.5v6.5h-3.1v-17.1c0.8-0.2,1.6-0.3,2.5-0.3
|
||||
C401.1,646,401.8,646,402.5,646z M402.7,648.7c-0.7,0-1.3,0-1.9,0.1v5.6h1.4c0.8,0,1.4,0,2-0.1c0.6-0.1,1.1-0.2,1.5-0.4
|
||||
c0.4-0.2,0.7-0.5,0.9-0.9c0.2-0.4,0.3-0.8,0.3-1.4c0-0.5-0.1-1-0.3-1.3c-0.2-0.4-0.5-0.7-0.9-0.9c-0.4-0.2-0.8-0.4-1.3-0.5
|
||||
C403.9,648.8,403.4,648.7,402.7,648.7z M412.9,657c0-1.1,0.2-2.2,0.5-3c0.4-0.9,0.8-1.6,1.4-2.2c0.6-0.6,1.2-1,2-1.3
|
||||
c0.7-0.3,1.5-0.5,2.2-0.5c1.8,0,3.2,0.6,4.2,1.7c1,1.1,1.5,2.8,1.5,5c0,0.2,0,0.4,0,0.6c0,0.2,0,0.4,0,0.5H416
|
||||
c0.1,1.1,0.5,1.9,1.1,2.5c0.7,0.6,1.6,0.9,2.9,0.9c0.7,0,1.4-0.1,2-0.2c0.6-0.1,1.1-0.3,1.4-0.4l0.4,2.5c-0.2,0.1-0.4,0.2-0.7,0.3
|
||||
c-0.3,0.1-0.6,0.2-1,0.2c-0.4,0.1-0.8,0.2-1.2,0.2c-0.4,0-0.9,0.1-1.3,0.1c-1.1,0-2.1-0.2-3-0.5c-0.9-0.4-1.6-0.8-2.1-1.4
|
||||
c-0.5-0.6-1-1.3-1.2-2.1C413,658.9,412.9,658,412.9,657z M421.6,655.7c0-0.4-0.1-0.8-0.2-1.2c-0.1-0.4-0.3-0.7-0.5-1
|
||||
c-0.2-0.3-0.5-0.5-0.8-0.6c-0.3-0.2-0.7-0.2-1.1-0.2c-0.5,0-0.9,0.1-1.2,0.3c-0.4,0.2-0.6,0.4-0.9,0.7c-0.2,0.3-0.4,0.6-0.6,1
|
||||
c-0.1,0.4-0.2,0.7-0.3,1.1H421.6z M430.2,656.6c0,1.3,0.3,2.2,0.8,2.8c0.6,0.6,1.3,0.9,2.2,0.9c0.5,0,0.9-0.1,1.4-0.2
|
||||
c0.4-0.1,0.8-0.3,1.1-0.5v-6.8c-0.2,0-0.5-0.1-0.8-0.1c-0.3,0-0.7-0.1-1.2-0.1c-1.1,0-1.9,0.4-2.5,1.1
|
||||
C430.5,654.5,430.2,655.4,430.2,656.6z M438.7,662.2c0,2.1-0.5,3.6-1.6,4.6c-1,1-2.7,1.5-4.9,1.5c-0.8,0-1.6-0.1-2.4-0.2
|
||||
c-0.8-0.1-1.4-0.3-2-0.5l0.5-2.6c0.5,0.2,1.1,0.4,1.8,0.5c0.7,0.1,1.4,0.2,2.2,0.2c1.2,0,2.1-0.2,2.6-0.8c0.5-0.5,0.8-1.2,0.8-2.2
|
||||
v-0.5c-0.3,0.2-0.7,0.3-1.2,0.5c-0.5,0.2-1,0.2-1.7,0.2c-0.8,0-1.6-0.1-2.3-0.4c-0.7-0.3-1.3-0.7-1.8-1.2c-0.5-0.5-0.9-1.2-1.1-1.9
|
||||
c-0.3-0.8-0.4-1.7-0.4-2.7c0-1,0.1-1.8,0.4-2.6c0.3-0.8,0.7-1.5,1.3-2c0.6-0.6,1.2-1,2.1-1.3c0.8-0.3,1.7-0.5,2.7-0.5
|
||||
c1,0,1.9,0.1,2.8,0.2c0.9,0.1,1.6,0.3,2.2,0.5V662.2z M445.6,663.5h-3v-13.1h3V663.5z M445.9,646.6c0,0.6-0.2,1-0.6,1.4
|
||||
c-0.4,0.3-0.8,0.5-1.3,0.5c-0.5,0-1-0.2-1.3-0.5c-0.4-0.3-0.5-0.8-0.5-1.4c0-0.6,0.2-1,0.5-1.4c0.4-0.3,0.8-0.5,1.3-0.5
|
||||
c0.5,0,0.9,0.2,1.3,0.5C445.7,645.6,445.9,646,445.9,646.6z M461.3,656.9c0,1-0.2,2-0.5,2.8c-0.3,0.9-0.7,1.6-1.3,2.2
|
||||
c-0.6,0.6-1.2,1.1-2,1.4c-0.8,0.3-1.6,0.5-2.6,0.5c-0.9,0-1.8-0.2-2.5-0.5s-1.4-0.8-2-1.4c-0.5-0.6-1-1.3-1.3-2.2
|
||||
c-0.3-0.8-0.5-1.8-0.5-2.8c0-1,0.1-2,0.5-2.8c0.3-0.8,0.8-1.6,1.3-2.2c0.6-0.6,1.2-1.1,2-1.4c0.8-0.3,1.6-0.5,2.5-0.5
|
||||
c0.9,0,1.8,0.2,2.5,0.5c0.8,0.3,1.4,0.8,2,1.4c0.5,0.6,1,1.3,1.3,2.2C461.1,655,461.3,655.9,461.3,656.9z M458.2,656.9
|
||||
c0-1.3-0.3-2.3-0.9-3.1c-0.5-0.8-1.3-1.2-2.3-1.2s-1.8,0.4-2.3,1.2c-0.6,0.8-0.8,1.8-0.8,3.1c0,1.3,0.3,2.4,0.8,3.1
|
||||
c0.6,0.8,1.3,1.1,2.3,1.1s1.8-0.4,2.3-1.1C457.9,659.3,458.2,658.3,458.2,656.9z M464.4,650.8c0.6-0.2,1.3-0.3,2.3-0.5
|
||||
c0.9-0.2,2-0.2,3.1-0.2c1.1,0,2,0.2,2.7,0.5c0.7,0.3,1.3,0.7,1.7,1.2c0.4,0.5,0.7,1.1,0.9,1.9c0.2,0.7,0.3,1.5,0.3,2.4v7.4h-3v-6.9
|
||||
c0-0.7-0.1-1.3-0.1-1.8c-0.1-0.5-0.2-0.9-0.5-1.2c-0.2-0.3-0.5-0.5-0.9-0.7c-0.4-0.1-0.8-0.2-1.3-0.2c-0.4,0-0.8,0-1.2,0.1
|
||||
c-0.4,0-0.7,0.1-0.9,0.1v10.5h-3V650.8z M484.8,650.8c0.6-0.2,1.3-0.3,2.3-0.5c0.9-0.2,2-0.2,3.1-0.2c1.1,0,2,0.2,2.7,0.5
|
||||
c0.7,0.3,1.3,0.7,1.7,1.2c0.4,0.5,0.7,1.1,0.9,1.9c0.2,0.7,0.3,1.5,0.3,2.4v7.4h-3v-6.9c0-0.7,0-1.3-0.1-1.8
|
||||
c-0.1-0.5-0.2-0.9-0.4-1.2c-0.2-0.3-0.5-0.5-0.9-0.7c-0.4-0.1-0.8-0.2-1.3-0.2c-0.4,0-0.8,0-1.2,0.1c-0.4,0-0.7,0.1-0.9,0.1v10.5h-3
|
||||
V650.8z"/>
|
||||
<path class="st9" d="M650,610.5h221c1.1,0,2,0.9,2,2v73c0,1.1-0.9,2-2,2H650c-1.1,0-2-0.9-2-2v-73C648,611.4,648.9,610.5,650,610.5z
|
||||
"/>
|
||||
<path class="st0" d="M718.5,641c2.5,0,4.4,0.5,5.7,1.4c1.3,0.9,2,2.3,2,4.2c0,2.3-1.2,3.9-3.5,4.8c0.3,0.4,0.7,0.9,1.1,1.4
|
||||
c0.4,0.5,0.8,1.1,1.2,1.8c0.4,0.6,0.8,1.3,1.2,2c0.4,0.7,0.7,1.3,1,2h-3.5c-0.3-0.6-0.7-1.2-1-1.8c-0.4-0.6-0.7-1.2-1.1-1.8
|
||||
c-0.4-0.6-0.7-1.1-1.1-1.6c-0.4-0.5-0.7-1-1-1.4c-0.2,0-0.4,0-0.6,0s-0.3,0-0.5,0h-1.5v6.5h-3.2v-17.1c0.8-0.2,1.6-0.3,2.5-0.3
|
||||
C717.1,641,717.8,641,718.5,641z M718.7,643.7c-0.7,0-1.3,0-1.8,0.1v5.6h1.4c0.8,0,1.4,0,2-0.1c0.6-0.1,1.1-0.2,1.4-0.4
|
||||
c0.4-0.2,0.7-0.5,0.9-0.9s0.3-0.8,0.3-1.4c0-0.5-0.1-1-0.3-1.3s-0.5-0.7-0.9-0.9c-0.4-0.2-0.8-0.4-1.3-0.5
|
||||
C719.9,643.8,719.4,643.7,718.7,643.7z M728.9,652c0-1.1,0.2-2.2,0.5-3c0.3-0.9,0.8-1.6,1.4-2.2c0.6-0.6,1.2-1,2-1.3
|
||||
c0.7-0.3,1.5-0.5,2.2-0.5c1.8,0,3.2,0.6,4.2,1.7c1,1.1,1.5,2.8,1.5,5c0,0.2,0,0.4,0,0.6c0,0.2,0,0.4,0,0.5H732
|
||||
c0.1,1.1,0.5,1.9,1.1,2.5c0.7,0.6,1.6,0.9,2.9,0.9c0.7,0,1.4-0.1,2-0.2c0.6-0.1,1.1-0.3,1.5-0.4l0.4,2.5c-0.2,0.1-0.4,0.2-0.7,0.3
|
||||
c-0.3,0.1-0.6,0.2-1,0.2c-0.4,0.1-0.8,0.2-1.2,0.2s-0.9,0.1-1.3,0.1c-1.1,0-2.1-0.2-3-0.5c-0.8-0.4-1.5-0.8-2.1-1.4
|
||||
c-0.5-0.6-1-1.3-1.2-2.1C729,653.9,728.9,653,728.9,652z M737.6,650.7c0-0.4-0.1-0.8-0.2-1.2c-0.1-0.4-0.3-0.7-0.5-1
|
||||
c-0.2-0.3-0.5-0.5-0.8-0.6c-0.3-0.2-0.7-0.2-1.2-0.2c-0.5,0-0.9,0.1-1.2,0.3c-0.3,0.2-0.7,0.4-0.9,0.7c-0.2,0.3-0.4,0.6-0.5,1
|
||||
s-0.2,0.7-0.3,1.1H737.6z M746.2,651.6c0,1.3,0.3,2.2,0.8,2.8c0.6,0.6,1.3,0.9,2.2,0.9c0.5,0,0.9-0.1,1.3-0.2c0.4-0.1,0.8-0.3,1-0.5
|
||||
v-6.8c-0.2,0-0.5-0.1-0.8-0.1c-0.3,0-0.7-0.1-1.2-0.1c-1.1,0-1.9,0.4-2.5,1.1C746.5,649.5,746.2,650.4,746.2,651.6z M754.7,657.2
|
||||
c0,2.1-0.5,3.6-1.6,4.6c-1,1-2.7,1.5-4.8,1.5c-0.8,0-1.6-0.1-2.3-0.2c-0.8-0.1-1.4-0.3-2.1-0.5l0.6-2.6c0.5,0.2,1.1,0.4,1.8,0.5
|
||||
c0.7,0.1,1.4,0.2,2.1,0.2c1.2,0,2.1-0.2,2.6-0.8c0.5-0.5,0.8-1.2,0.8-2.2v-0.5c-0.3,0.2-0.7,0.3-1.2,0.5c-0.5,0.2-1,0.2-1.7,0.2
|
||||
c-0.8,0-1.6-0.1-2.3-0.4c-0.7-0.3-1.3-0.7-1.8-1.2c-0.5-0.5-0.9-1.2-1.1-1.9c-0.3-0.8-0.4-1.7-0.4-2.7c0-1,0.1-1.8,0.4-2.6
|
||||
c0.3-0.8,0.7-1.5,1.3-2c0.6-0.6,1.2-1,2-1.3s1.7-0.5,2.7-0.5c1,0,1.9,0.1,2.8,0.2c0.9,0.1,1.6,0.3,2.2,0.5V657.2z M761.6,658.5h-3
|
||||
v-13.1h3V658.5z M761.9,641.6c0,0.6-0.2,1-0.5,1.4c-0.4,0.3-0.8,0.5-1.3,0.5c-0.5,0-1-0.2-1.3-0.5c-0.4-0.3-0.5-0.8-0.5-1.4
|
||||
c0-0.6,0.2-1,0.5-1.4c0.4-0.3,0.8-0.5,1.3-0.5c0.5,0,0.9,0.2,1.3,0.5C761.7,640.6,761.9,641,761.9,641.6z M777.3,651.9
|
||||
c0,1-0.2,2-0.5,2.8c-0.3,0.9-0.7,1.6-1.3,2.2c-0.5,0.6-1.2,1.1-2,1.4c-0.8,0.3-1.6,0.5-2.5,0.5s-1.8-0.2-2.5-0.5
|
||||
c-0.8-0.3-1.4-0.8-2-1.4c-0.6-0.6-1-1.3-1.3-2.2c-0.3-0.8-0.4-1.8-0.4-2.8c0-1,0.1-2,0.4-2.8c0.3-0.8,0.8-1.6,1.3-2.2
|
||||
c0.6-0.6,1.2-1.1,2-1.4c0.8-0.3,1.6-0.5,2.5-0.5s1.8,0.2,2.5,0.5c0.8,0.3,1.5,0.8,2,1.4c0.5,0.6,1,1.3,1.3,2.2
|
||||
C777.1,650,777.3,650.9,777.3,651.9z M774.2,651.9c0-1.3-0.3-2.3-0.8-3.1c-0.5-0.8-1.3-1.2-2.3-1.2s-1.8,0.4-2.3,1.2
|
||||
c-0.5,0.8-0.8,1.8-0.8,3.1c0,1.3,0.3,2.4,0.8,3.1c0.6,0.8,1.3,1.1,2.3,1.1s1.8-0.4,2.3-1.1C773.9,654.3,774.2,653.3,774.2,651.9z
|
||||
M780.4,645.8c0.6-0.2,1.3-0.3,2.3-0.5c0.9-0.2,2-0.2,3.1-0.2c1.1,0,2,0.2,2.7,0.5c0.7,0.3,1.3,0.7,1.7,1.2c0.4,0.5,0.7,1.1,0.9,1.9
|
||||
c0.2,0.7,0.3,1.5,0.3,2.4v7.4h-3v-6.9c0-0.7,0-1.3-0.2-1.8c-0.1-0.5-0.2-0.9-0.4-1.2c-0.2-0.3-0.5-0.5-0.9-0.7
|
||||
c-0.3-0.1-0.8-0.2-1.3-0.2c-0.4,0-0.8,0-1.2,0.1c-0.4,0-0.7,0.1-0.9,0.1v10.5h-3V645.8z M800.8,645.8c0.6-0.2,1.3-0.3,2.3-0.5
|
||||
c0.9-0.2,2-0.2,3.1-0.2c1.1,0,2,0.2,2.7,0.5c0.7,0.3,1.3,0.7,1.7,1.2c0.4,0.5,0.7,1.1,0.9,1.9c0.2,0.7,0.3,1.5,0.3,2.4v7.4h-3v-6.9
|
||||
c0-0.7,0-1.3-0.1-1.8c-0.1-0.5-0.2-0.9-0.5-1.2c-0.2-0.3-0.5-0.5-0.9-0.7c-0.3-0.1-0.8-0.2-1.3-0.2c-0.4,0-0.8,0-1.2,0.1
|
||||
c-0.4,0-0.7,0.1-0.9,0.1v10.5h-3V645.8z"/>
|
||||
<path class="st0" d="M716.5,323c2.5,0,4.4,0.5,5.7,1.4c1.3,0.9,2,2.3,2,4.2c0,2.4-1.2,3.9-3.5,4.8c0.3,0.4,0.7,0.9,1.1,1.4
|
||||
c0.4,0.5,0.8,1.1,1.2,1.8c0.4,0.6,0.8,1.3,1.2,2c0.4,0.7,0.7,1.3,1,2h-3.5c-0.3-0.6-0.7-1.2-1-1.8c-0.4-0.6-0.7-1.2-1.1-1.8
|
||||
c-0.4-0.6-0.7-1.1-1.1-1.6c-0.4-0.5-0.7-1-1-1.4c-0.2,0-0.4,0-0.6,0s-0.3,0-0.5,0h-1.5v6.6h-3.2v-17.1c0.8-0.2,1.6-0.3,2.5-0.3
|
||||
C715.1,323,715.8,323,716.5,323z M716.7,325.7c-0.7,0-1.3,0-1.8,0.1v5.6h1.4c0.8,0,1.4,0,2-0.1s1.1-0.2,1.5-0.5
|
||||
c0.4-0.2,0.7-0.5,0.9-0.9c0.2-0.4,0.3-0.8,0.3-1.4c0-0.5-0.1-1-0.3-1.4c-0.2-0.4-0.5-0.7-0.9-0.9c-0.4-0.2-0.8-0.4-1.3-0.4
|
||||
C717.9,325.8,717.4,325.7,716.7,325.7z M726.9,334c0-1.1,0.2-2.2,0.5-3c0.3-0.9,0.8-1.6,1.4-2.2c0.6-0.6,1.2-1,1.9-1.3
|
||||
c0.7-0.3,1.5-0.5,2.2-0.5c1.8,0,3.2,0.6,4.2,1.7c1,1.1,1.5,2.8,1.5,5c0,0.2,0,0.4,0,0.6c0,0.2,0,0.4,0,0.6H730
|
||||
c0.1,1,0.4,1.9,1.1,2.4c0.7,0.6,1.6,0.9,2.9,0.9c0.7,0,1.4-0.1,2-0.2c0.6-0.1,1.1-0.3,1.5-0.4l0.4,2.5c-0.2,0.1-0.4,0.2-0.7,0.3
|
||||
c-0.3,0.1-0.6,0.2-1,0.2c-0.4,0.1-0.8,0.1-1.2,0.2c-0.4,0-0.9,0.1-1.3,0.1c-1.2,0-2.2-0.2-3-0.5c-0.8-0.4-1.5-0.8-2.1-1.4
|
||||
c-0.6-0.6-1-1.3-1.2-2.1C727,335.9,726.9,335,726.9,334z M735.6,332.7c0-0.4-0.1-0.8-0.2-1.2c-0.1-0.4-0.3-0.7-0.5-1
|
||||
c-0.2-0.3-0.5-0.5-0.8-0.6c-0.3-0.2-0.7-0.2-1.2-0.2c-0.5,0-0.9,0.1-1.2,0.3c-0.4,0.2-0.7,0.4-0.9,0.7c-0.2,0.3-0.4,0.6-0.5,1
|
||||
s-0.2,0.7-0.3,1.1H735.6z M744.2,333.6c0,1.3,0.3,2.2,0.8,2.8c0.6,0.6,1.3,0.9,2.2,0.9c0.5,0,0.9-0.1,1.4-0.2c0.4-0.1,0.8-0.3,1-0.5
|
||||
v-6.8c-0.2-0.1-0.5-0.1-0.8-0.1c-0.3-0.1-0.7-0.1-1.2-0.1c-1.1,0-1.9,0.4-2.5,1.1C744.5,331.5,744.2,332.4,744.2,333.6z
|
||||
M752.7,339.2c0,2.1-0.5,3.6-1.6,4.6c-1,1-2.7,1.4-4.8,1.4c-0.8,0-1.6-0.1-2.4-0.2c-0.8-0.1-1.4-0.3-2-0.5l0.5-2.6
|
||||
c0.5,0.2,1.1,0.4,1.8,0.5c0.7,0.1,1.4,0.2,2.2,0.2c1.2,0,2.1-0.2,2.6-0.8c0.5-0.5,0.8-1.2,0.8-2.2v-0.5c-0.3,0.1-0.7,0.3-1.2,0.4
|
||||
c-0.5,0.2-1,0.2-1.7,0.2c-0.8,0-1.6-0.1-2.3-0.4c-0.7-0.3-1.3-0.7-1.8-1.2c-0.5-0.5-0.9-1.2-1.1-1.9c-0.3-0.8-0.4-1.7-0.4-2.7
|
||||
c0-1,0.1-1.8,0.4-2.6c0.3-0.8,0.7-1.5,1.3-2.1c0.6-0.6,1.2-1,2-1.3c0.8-0.3,1.7-0.5,2.7-0.5c1,0,1.9,0.1,2.8,0.2
|
||||
c0.9,0.1,1.6,0.3,2.2,0.5V339.2z M759.6,340.5h-3v-13.1h3V340.5z M759.9,323.6c0,0.6-0.2,1-0.6,1.4c-0.4,0.3-0.8,0.5-1.3,0.5
|
||||
c-0.5,0-1-0.2-1.3-0.5c-0.4-0.3-0.5-0.8-0.5-1.4c0-0.6,0.2-1,0.5-1.4c0.4-0.3,0.8-0.5,1.3-0.5c0.5,0,0.9,0.2,1.3,0.5
|
||||
C759.7,322.6,759.9,323,759.9,323.6z M775.3,333.9c0,1-0.1,2-0.4,2.8c-0.3,0.9-0.7,1.6-1.3,2.2s-1.2,1.1-2,1.4
|
||||
c-0.8,0.3-1.6,0.5-2.5,0.5s-1.8-0.2-2.5-0.5c-0.8-0.3-1.4-0.8-2-1.4s-1-1.3-1.3-2.2c-0.3-0.9-0.5-1.8-0.5-2.8c0-1,0.2-2,0.5-2.8
|
||||
c0.3-0.9,0.8-1.6,1.3-2.2c0.6-0.6,1.2-1.1,2-1.4c0.8-0.3,1.6-0.5,2.5-0.5s1.8,0.2,2.5,0.5c0.8,0.3,1.5,0.8,2,1.4
|
||||
c0.6,0.6,1,1.3,1.3,2.2C775.1,332,775.3,332.9,775.3,333.9z M772.2,333.9c0-1.3-0.3-2.3-0.8-3.1c-0.6-0.8-1.3-1.2-2.3-1.2
|
||||
s-1.8,0.4-2.4,1.2c-0.5,0.8-0.8,1.8-0.8,3.1c0,1.3,0.3,2.4,0.8,3.1c0.6,0.8,1.4,1.1,2.4,1.1s1.8-0.4,2.3-1.1
|
||||
C771.9,336.3,772.2,335.3,772.2,333.9z M778.4,327.8c0.6-0.2,1.3-0.3,2.3-0.5c0.9-0.2,2-0.2,3.1-0.2c1.1,0,2,0.1,2.7,0.4
|
||||
c0.7,0.3,1.3,0.7,1.7,1.2c0.4,0.5,0.7,1.1,0.9,1.9c0.2,0.7,0.3,1.5,0.3,2.4v7.4h-3v-6.9c0-0.7-0.1-1.3-0.2-1.8
|
||||
c-0.1-0.5-0.2-0.9-0.5-1.2c-0.2-0.3-0.5-0.5-0.8-0.7c-0.4-0.1-0.8-0.2-1.3-0.2c-0.4,0-0.8,0-1.2,0.1c-0.4,0.1-0.7,0.1-0.9,0.1v10.6
|
||||
h-3V327.8z M808.9,327.7c0,0.6-0.1,1.2-0.4,1.8c-0.2,0.6-0.6,1.1-1,1.7c-0.4,0.5-0.8,1.1-1.3,1.6c-0.5,0.5-1,1-1.5,1.5
|
||||
c-0.3,0.2-0.6,0.5-0.9,0.9c-0.3,0.4-0.7,0.7-1,1.1c-0.3,0.3-0.6,0.7-0.8,1c-0.2,0.3-0.3,0.6-0.3,0.8h7.7v2.6h-11c0-0.1,0-0.3,0-0.5
|
||||
c0-0.2,0-0.4,0-0.5c0-0.8,0.1-1.5,0.4-2.2c0.3-0.7,0.6-1.3,1-1.9c0.4-0.6,0.9-1.1,1.4-1.6c0.5-0.5,1-1,1.5-1.5
|
||||
c0.4-0.4,0.8-0.8,1.2-1.1c0.4-0.4,0.7-0.7,0.9-1.1c0.3-0.4,0.5-0.7,0.7-1.1c0.2-0.4,0.2-0.8,0.2-1.2c0-0.9-0.2-1.5-0.8-1.9
|
||||
c-0.5-0.4-1.1-0.5-1.8-0.5c-0.5,0-0.9,0.1-1.3,0.2c-0.4,0.1-0.8,0.3-1.1,0.5c-0.3,0.2-0.6,0.4-0.8,0.6c-0.2,0.2-0.4,0.3-0.5,0.5
|
||||
L798,325c0.7-0.7,1.5-1.2,2.5-1.6c1-0.4,2-0.6,3-0.6c1.8,0,3.2,0.4,4.1,1.3C808.5,325,808.9,326.2,808.9,327.7z"/>
|
||||
<path class="st0" d="M716.5,415c2.5,0,4.4,0.5,5.7,1.4c1.3,0.9,2,2.3,2,4.2c0,2.4-1.2,3.9-3.5,4.8c0.3,0.4,0.7,0.9,1.1,1.4
|
||||
c0.4,0.5,0.8,1.1,1.2,1.8c0.4,0.6,0.8,1.3,1.2,2c0.4,0.7,0.7,1.3,1,2h-3.5c-0.3-0.6-0.7-1.2-1-1.8c-0.4-0.6-0.7-1.2-1.1-1.8
|
||||
c-0.4-0.6-0.7-1.1-1.1-1.6c-0.4-0.5-0.7-1-1-1.4c-0.2,0-0.4,0-0.6,0s-0.3,0-0.5,0h-1.5v6.6h-3.2v-17.1c0.8-0.2,1.6-0.3,2.5-0.3
|
||||
C715.1,415,715.8,415,716.5,415z M716.7,417.7c-0.7,0-1.3,0-1.8,0.1v5.6h1.4c0.8,0,1.4,0,2-0.1s1.1-0.2,1.5-0.5
|
||||
c0.4-0.2,0.7-0.5,0.9-0.9c0.2-0.4,0.3-0.8,0.3-1.4c0-0.5-0.1-1-0.3-1.4c-0.2-0.4-0.5-0.7-0.9-0.9c-0.4-0.2-0.8-0.4-1.3-0.4
|
||||
C717.9,417.8,717.4,417.7,716.7,417.7z M726.9,426c0-1.1,0.2-2.2,0.5-3c0.3-0.9,0.8-1.6,1.4-2.2c0.6-0.6,1.2-1,1.9-1.3
|
||||
c0.7-0.3,1.5-0.5,2.2-0.5c1.8,0,3.2,0.6,4.2,1.7c1,1.1,1.5,2.8,1.5,5c0,0.2,0,0.4,0,0.6c0,0.2,0,0.4,0,0.6H730
|
||||
c0.1,1,0.4,1.9,1.1,2.4c0.7,0.6,1.6,0.9,2.9,0.9c0.7,0,1.4-0.1,2-0.2c0.6-0.1,1.1-0.3,1.5-0.4l0.4,2.5c-0.2,0.1-0.4,0.2-0.7,0.3
|
||||
c-0.3,0.1-0.6,0.2-1,0.2c-0.4,0.1-0.8,0.1-1.2,0.2c-0.4,0-0.9,0.1-1.3,0.1c-1.2,0-2.2-0.2-3-0.5c-0.8-0.4-1.5-0.8-2.1-1.4
|
||||
c-0.6-0.6-1-1.3-1.2-2.1C727,427.9,726.9,427,726.9,426z M735.6,424.7c0-0.4-0.1-0.8-0.2-1.2c-0.1-0.4-0.3-0.7-0.5-1
|
||||
c-0.2-0.3-0.5-0.5-0.8-0.6c-0.3-0.2-0.7-0.2-1.2-0.2c-0.5,0-0.9,0.1-1.2,0.3c-0.4,0.2-0.7,0.4-0.9,0.7c-0.2,0.3-0.4,0.6-0.5,1
|
||||
s-0.2,0.7-0.3,1.1H735.6z M744.2,425.6c0,1.3,0.3,2.2,0.8,2.8c0.6,0.6,1.3,0.9,2.2,0.9c0.5,0,0.9-0.1,1.4-0.2c0.4-0.1,0.8-0.3,1-0.5
|
||||
v-6.8c-0.2-0.1-0.5-0.1-0.8-0.1c-0.3-0.1-0.7-0.1-1.2-0.1c-1.1,0-1.9,0.4-2.5,1.1C744.5,423.5,744.2,424.4,744.2,425.6z
|
||||
M752.7,431.2c0,2.1-0.5,3.6-1.6,4.6c-1,1-2.7,1.4-4.8,1.4c-0.8,0-1.6-0.1-2.4-0.2c-0.8-0.1-1.4-0.3-2-0.5l0.5-2.6
|
||||
c0.5,0.2,1.1,0.4,1.8,0.5c0.7,0.1,1.4,0.2,2.2,0.2c1.2,0,2.1-0.2,2.6-0.8c0.5-0.5,0.8-1.2,0.8-2.2v-0.5c-0.3,0.1-0.7,0.3-1.2,0.4
|
||||
c-0.5,0.2-1,0.2-1.7,0.2c-0.8,0-1.6-0.1-2.3-0.4c-0.7-0.3-1.3-0.7-1.8-1.2c-0.5-0.5-0.9-1.2-1.1-1.9c-0.3-0.8-0.4-1.7-0.4-2.7
|
||||
c0-1,0.1-1.8,0.4-2.6c0.3-0.8,0.7-1.5,1.3-2.1c0.6-0.6,1.2-1,2-1.3c0.8-0.3,1.7-0.5,2.7-0.5c1,0,1.9,0.1,2.8,0.2
|
||||
c0.9,0.1,1.6,0.3,2.2,0.5V431.2z M759.6,432.5h-3v-13.1h3V432.5z M759.9,415.6c0,0.6-0.2,1-0.6,1.4c-0.4,0.3-0.8,0.5-1.3,0.5
|
||||
c-0.5,0-1-0.2-1.3-0.5c-0.4-0.3-0.5-0.8-0.5-1.4c0-0.6,0.2-1,0.5-1.4c0.4-0.3,0.8-0.5,1.3-0.5c0.5,0,0.9,0.2,1.3,0.5
|
||||
C759.7,414.6,759.9,415,759.9,415.6z M775.3,425.9c0,1-0.1,2-0.4,2.8c-0.3,0.9-0.7,1.6-1.3,2.2s-1.2,1.1-2,1.4
|
||||
c-0.8,0.3-1.6,0.5-2.5,0.5s-1.8-0.2-2.5-0.5c-0.8-0.3-1.4-0.8-2-1.4s-1-1.3-1.3-2.2c-0.3-0.9-0.5-1.8-0.5-2.8c0-1,0.2-2,0.5-2.8
|
||||
c0.3-0.9,0.8-1.6,1.3-2.2c0.6-0.6,1.2-1.1,2-1.4c0.8-0.3,1.6-0.5,2.5-0.5s1.8,0.2,2.5,0.5c0.8,0.3,1.5,0.8,2,1.4
|
||||
c0.6,0.6,1,1.3,1.3,2.2C775.1,424,775.3,424.9,775.3,425.9z M772.2,425.9c0-1.3-0.3-2.3-0.8-3.1c-0.6-0.8-1.3-1.2-2.3-1.2
|
||||
s-1.8,0.4-2.4,1.2c-0.5,0.8-0.8,1.8-0.8,3.1c0,1.3,0.3,2.4,0.8,3.1c0.6,0.8,1.4,1.1,2.4,1.1s1.8-0.4,2.3-1.1
|
||||
C771.9,428.3,772.2,427.3,772.2,425.9z M778.4,419.8c0.6-0.2,1.3-0.3,2.3-0.5c0.9-0.2,2-0.2,3.1-0.2c1.1,0,2,0.1,2.7,0.4
|
||||
c0.7,0.3,1.3,0.7,1.7,1.2c0.4,0.5,0.7,1.1,0.9,1.9c0.2,0.7,0.3,1.5,0.3,2.4v7.4h-3v-6.9c0-0.7-0.1-1.3-0.2-1.8
|
||||
c-0.1-0.5-0.2-0.9-0.5-1.2c-0.2-0.3-0.5-0.5-0.8-0.7c-0.4-0.1-0.8-0.2-1.3-0.2c-0.4,0-0.8,0-1.2,0.1c-0.4,0.1-0.7,0.1-0.9,0.1v10.6
|
||||
h-3V419.8z M805.3,418.9c-0.4,0.5-0.8,1-1.2,1.5c-0.4,0.6-0.8,1.1-1.2,1.7c-0.4,0.6-0.8,1.2-1.2,1.9c-0.4,0.6-0.7,1.2-1,1.9h4.6
|
||||
V418.9z M808.3,415.2v10.7h2v2.5h-2v4.2h-3v-4.2h-7.6v-2.1c0.3-0.7,0.8-1.6,1.3-2.5c0.6-1,1.2-1.9,1.9-2.9c0.7-1,1.4-2,2.2-3
|
||||
c0.8-1,1.5-1.8,2.3-2.6H808.3z"/>
|
||||
<path class="st0" d="M716.5,508c2.5,0,4.4,0.5,5.7,1.4c1.3,0.9,2,2.3,2,4.2c0,2.3-1.2,3.9-3.5,4.8c0.3,0.4,0.7,0.9,1.1,1.4
|
||||
c0.4,0.5,0.8,1.1,1.2,1.8c0.4,0.6,0.8,1.3,1.2,2c0.4,0.7,0.7,1.3,1,2h-3.5c-0.3-0.6-0.7-1.2-1-1.8c-0.4-0.6-0.7-1.2-1.1-1.8
|
||||
c-0.4-0.6-0.7-1.1-1.1-1.6c-0.4-0.5-0.7-1-1-1.4c-0.2,0-0.4,0-0.6,0s-0.3,0-0.5,0h-1.5v6.5h-3.2v-17.1c0.8-0.2,1.6-0.3,2.5-0.3
|
||||
C715.1,508,715.8,508,716.5,508z M716.7,510.7c-0.7,0-1.3,0-1.8,0.1v5.6h1.4c0.8,0,1.4,0,2-0.1c0.6-0.1,1.1-0.2,1.5-0.4
|
||||
c0.4-0.2,0.7-0.5,0.9-0.9c0.2-0.4,0.3-0.8,0.3-1.4c0-0.5-0.1-1-0.3-1.3c-0.2-0.4-0.5-0.7-0.9-0.9c-0.4-0.2-0.8-0.4-1.3-0.4
|
||||
C717.9,510.8,717.4,510.7,716.7,510.7z M726.9,519c0-1.1,0.2-2.2,0.5-3c0.3-0.9,0.8-1.6,1.4-2.2c0.6-0.6,1.2-1,1.9-1.3
|
||||
c0.7-0.3,1.5-0.5,2.2-0.5c1.8,0,3.2,0.6,4.2,1.7c1,1.1,1.5,2.8,1.5,5c0,0.2,0,0.4,0,0.6c0,0.2,0,0.4,0,0.5H730
|
||||
c0.1,1.1,0.4,1.9,1.1,2.5c0.7,0.6,1.6,0.9,2.9,0.9c0.7,0,1.4-0.1,2-0.2c0.6-0.1,1.1-0.3,1.5-0.4l0.4,2.5c-0.2,0.1-0.4,0.2-0.7,0.3
|
||||
c-0.3,0.1-0.6,0.2-1,0.2c-0.4,0.1-0.8,0.2-1.2,0.2s-0.9,0.1-1.3,0.1c-1.2,0-2.2-0.2-3-0.5c-0.8-0.4-1.5-0.8-2.1-1.4
|
||||
c-0.6-0.6-1-1.3-1.2-2.1C727,520.9,726.9,520,726.9,519z M735.6,517.7c0-0.4-0.1-0.8-0.2-1.2c-0.1-0.4-0.3-0.7-0.5-1
|
||||
c-0.2-0.3-0.5-0.5-0.8-0.6c-0.3-0.2-0.7-0.2-1.2-0.2c-0.5,0-0.9,0.1-1.2,0.3c-0.4,0.2-0.7,0.4-0.9,0.7c-0.2,0.3-0.4,0.6-0.5,1
|
||||
s-0.2,0.7-0.3,1.1H735.6z M744.2,518.6c0,1.3,0.3,2.2,0.8,2.8c0.6,0.6,1.3,0.9,2.2,0.9c0.5,0,0.9-0.1,1.4-0.2c0.4-0.1,0.8-0.3,1-0.5
|
||||
v-6.8c-0.2,0-0.5-0.1-0.8-0.1c-0.3,0-0.7-0.1-1.2-0.1c-1.1,0-1.9,0.4-2.5,1.1C744.5,516.5,744.2,517.4,744.2,518.6z M752.7,524.2
|
||||
c0,2.1-0.5,3.6-1.6,4.6c-1,1-2.7,1.5-4.8,1.5c-0.8,0-1.6-0.1-2.4-0.2c-0.8-0.1-1.4-0.3-2-0.5l0.5-2.6c0.5,0.2,1.1,0.4,1.8,0.5
|
||||
c0.7,0.1,1.4,0.2,2.2,0.2c1.2,0,2.1-0.2,2.6-0.8c0.5-0.5,0.8-1.2,0.8-2.2v-0.5c-0.3,0.2-0.7,0.3-1.2,0.5c-0.5,0.2-1,0.2-1.7,0.2
|
||||
c-0.8,0-1.6-0.1-2.3-0.4c-0.7-0.3-1.3-0.7-1.8-1.2c-0.5-0.5-0.9-1.2-1.1-1.9c-0.3-0.8-0.4-1.7-0.4-2.7c0-1,0.1-1.8,0.4-2.6
|
||||
c0.3-0.8,0.7-1.5,1.3-2c0.6-0.6,1.2-1,2-1.3s1.7-0.5,2.7-0.5c1,0,1.9,0.1,2.8,0.2c0.9,0.1,1.6,0.3,2.2,0.5V524.2z M759.6,525.5h-3
|
||||
v-13.1h3V525.5z M759.9,508.6c0,0.6-0.2,1-0.6,1.4c-0.4,0.3-0.8,0.5-1.3,0.5c-0.5,0-1-0.2-1.3-0.5c-0.4-0.3-0.5-0.8-0.5-1.4
|
||||
c0-0.6,0.2-1,0.5-1.4c0.4-0.3,0.8-0.5,1.3-0.5c0.5,0,0.9,0.2,1.3,0.5C759.7,507.6,759.9,508,759.9,508.6z M775.3,518.9
|
||||
c0,1-0.1,2-0.4,2.8c-0.3,0.9-0.7,1.6-1.3,2.2c-0.5,0.6-1.2,1.1-2,1.4c-0.8,0.3-1.6,0.5-2.5,0.5s-1.8-0.2-2.5-0.5
|
||||
c-0.8-0.3-1.4-0.8-2-1.4c-0.5-0.6-1-1.3-1.3-2.2c-0.3-0.8-0.5-1.8-0.5-2.8c0-1,0.2-2,0.5-2.8c0.3-0.8,0.8-1.6,1.3-2.2
|
||||
c0.6-0.6,1.2-1.1,2-1.4c0.8-0.3,1.6-0.5,2.5-0.5s1.8,0.2,2.5,0.5c0.8,0.3,1.5,0.8,2,1.4c0.6,0.6,1,1.3,1.3,2.2
|
||||
C775.1,517,775.3,517.9,775.3,518.9z M772.2,518.9c0-1.3-0.3-2.3-0.8-3.1c-0.6-0.8-1.3-1.2-2.3-1.2s-1.8,0.4-2.4,1.2
|
||||
c-0.5,0.8-0.8,1.8-0.8,3.1c0,1.3,0.3,2.4,0.8,3.1c0.6,0.8,1.4,1.1,2.4,1.1s1.8-0.4,2.3-1.1C771.9,521.3,772.2,520.3,772.2,518.9z
|
||||
M778.4,512.8c0.6-0.2,1.3-0.3,2.3-0.5c0.9-0.2,2-0.2,3.1-0.2c1.1,0,2,0.2,2.7,0.5c0.7,0.3,1.3,0.7,1.7,1.2c0.4,0.5,0.7,1.1,0.9,1.9
|
||||
c0.2,0.7,0.3,1.5,0.3,2.4v7.4h-3v-6.9c0-0.7-0.1-1.3-0.2-1.8c-0.1-0.5-0.2-0.9-0.5-1.2c-0.2-0.3-0.5-0.5-0.8-0.7
|
||||
c-0.4-0.1-0.8-0.2-1.3-0.2c-0.4,0-0.8,0-1.2,0.1c-0.4,0-0.7,0.1-0.9,0.1v10.5h-3V512.8z M802.8,525.9c-0.5,0-0.9,0-1.4-0.1
|
||||
c-0.5,0-0.9-0.1-1.3-0.2c-0.4-0.1-0.8-0.2-1.2-0.3c-0.3-0.1-0.6-0.2-0.8-0.3l0.6-2.6c0.4,0.2,0.9,0.4,1.5,0.6
|
||||
c0.7,0.2,1.5,0.3,2.5,0.3c1.3,0,2.3-0.2,2.9-0.8c0.6-0.5,0.9-1.2,0.9-2c0-0.6-0.1-1-0.4-1.4c-0.2-0.4-0.5-0.7-0.9-0.9
|
||||
c-0.4-0.2-0.8-0.4-1.3-0.5c-0.5-0.1-1-0.1-1.6-0.1h-1v-2.5h1.2c0.4,0,0.8,0,1.1-0.1c0.4-0.1,0.8-0.2,1.1-0.4
|
||||
c0.3-0.2,0.6-0.5,0.8-0.8c0.2-0.3,0.3-0.7,0.3-1.2c0-0.4-0.1-0.7-0.2-1c-0.1-0.3-0.3-0.5-0.6-0.7c-0.2-0.2-0.5-0.3-0.8-0.4
|
||||
c-0.3-0.1-0.6-0.1-1-0.1c-0.8,0-1.4,0.1-2,0.3c-0.6,0.2-1.1,0.5-1.5,0.8l-1.1-2.2c0.2-0.1,0.5-0.3,0.8-0.5c0.3-0.2,0.7-0.3,1.1-0.5
|
||||
c0.4-0.1,0.9-0.3,1.3-0.4c0.5-0.1,1-0.1,1.5-0.1c1,0,1.8,0.1,2.5,0.4c0.7,0.2,1.3,0.6,1.7,1c0.5,0.4,0.8,0.9,1,1.5
|
||||
c0.2,0.6,0.3,1.2,0.3,1.9c0,0.8-0.2,1.5-0.7,2.1c-0.4,0.6-1,1.1-1.7,1.5c0.9,0.3,1.6,0.8,2.2,1.6c0.6,0.7,0.9,1.7,0.9,2.8
|
||||
c0,0.8-0.1,1.5-0.4,2.1c-0.3,0.7-0.7,1.2-1.2,1.7c-0.5,0.5-1.2,0.8-2.1,1.1C805,525.7,804,525.9,802.8,525.9z"/>
|
||||
<path class="st0" d="M1030.5,323c2.5,0,4.4,0.5,5.7,1.4c1.3,0.9,2,2.3,2,4.2c0,2.4-1.2,3.9-3.5,4.8c0.3,0.4,0.7,0.9,1.1,1.4
|
||||
c0.4,0.5,0.8,1.1,1.2,1.8c0.4,0.6,0.8,1.3,1.2,2c0.4,0.7,0.7,1.3,1,2h-3.5c-0.3-0.6-0.7-1.2-1-1.8c-0.4-0.6-0.7-1.2-1.1-1.8
|
||||
c-0.4-0.6-0.7-1.1-1.1-1.6c-0.4-0.5-0.7-1-1-1.4c-0.2,0-0.4,0-0.6,0c-0.2,0-0.3,0-0.5,0h-1.5v6.6h-3.2v-17.1
|
||||
c0.8-0.2,1.6-0.3,2.4-0.3C1029.1,323,1029.8,323,1030.5,323z M1030.7,325.7c-0.7,0-1.3,0-1.8,0.1v5.6h1.4c0.8,0,1.4,0,2-0.1
|
||||
c0.6-0.1,1.1-0.2,1.4-0.5c0.4-0.2,0.7-0.5,0.9-0.9c0.2-0.4,0.3-0.8,0.3-1.4c0-0.5-0.1-1-0.3-1.4c-0.2-0.4-0.5-0.7-0.9-0.9
|
||||
c-0.4-0.2-0.8-0.4-1.3-0.4C1031.9,325.8,1031.4,325.7,1030.7,325.7z M1040.9,334c0-1.1,0.2-2.2,0.5-3c0.3-0.9,0.8-1.6,1.4-2.2
|
||||
c0.6-0.6,1.2-1,1.9-1.3c0.7-0.3,1.5-0.5,2.2-0.5c1.8,0,3.2,0.6,4.2,1.7c1,1.1,1.5,2.8,1.5,5c0,0.2,0,0.4,0,0.6c0,0.2,0,0.4,0,0.6
|
||||
h-8.6c0.1,1,0.4,1.9,1.1,2.4c0.7,0.6,1.6,0.9,2.9,0.9c0.7,0,1.4-0.1,2-0.2c0.6-0.1,1.1-0.3,1.5-0.4l0.4,2.5
|
||||
c-0.2,0.1-0.4,0.2-0.7,0.3c-0.3,0.1-0.6,0.2-1,0.2c-0.4,0.1-0.8,0.1-1.2,0.2c-0.4,0-0.9,0.1-1.3,0.1c-1.2,0-2.2-0.2-3-0.5
|
||||
c-0.8-0.4-1.5-0.8-2.1-1.4c-0.6-0.6-1-1.3-1.2-2.1C1041,335.9,1040.9,335,1040.9,334z M1049.6,332.7c0-0.4-0.1-0.8-0.2-1.2
|
||||
c-0.1-0.4-0.3-0.7-0.5-1c-0.2-0.3-0.5-0.5-0.8-0.6c-0.3-0.2-0.7-0.2-1.2-0.2c-0.5,0-0.9,0.1-1.2,0.3c-0.3,0.2-0.7,0.4-0.9,0.7
|
||||
c-0.2,0.3-0.4,0.6-0.5,1c-0.1,0.4-0.2,0.7-0.3,1.1H1049.6z M1058.2,333.6c0,1.3,0.3,2.2,0.8,2.8c0.6,0.6,1.3,0.9,2.2,0.9
|
||||
c0.5,0,0.9-0.1,1.3-0.2c0.4-0.1,0.8-0.3,1.1-0.5v-6.8c-0.2-0.1-0.5-0.1-0.8-0.1c-0.3-0.1-0.7-0.1-1.2-0.1c-1.1,0-1.9,0.4-2.5,1.1
|
||||
C1058.5,331.5,1058.2,332.4,1058.2,333.6z M1066.7,339.2c0,2.1-0.5,3.6-1.6,4.6c-1,1-2.7,1.4-4.8,1.4c-0.8,0-1.6-0.1-2.3-0.2
|
||||
c-0.8-0.1-1.4-0.3-2.1-0.5l0.6-2.6c0.5,0.2,1.1,0.4,1.8,0.5c0.7,0.1,1.4,0.2,2.2,0.2c1.2,0,2.1-0.2,2.6-0.8s0.8-1.2,0.8-2.2v-0.5
|
||||
c-0.3,0.1-0.7,0.3-1.2,0.4c-0.5,0.2-1,0.2-1.7,0.2c-0.8,0-1.6-0.1-2.3-0.4c-0.7-0.3-1.3-0.7-1.8-1.2c-0.5-0.5-0.9-1.2-1.1-1.9
|
||||
c-0.3-0.8-0.4-1.7-0.4-2.7c0-1,0.2-1.8,0.4-2.6c0.3-0.8,0.7-1.5,1.3-2.1c0.6-0.6,1.2-1,2.1-1.3c0.8-0.3,1.7-0.5,2.7-0.5
|
||||
c1,0,1.9,0.1,2.8,0.2c0.9,0.1,1.6,0.3,2.2,0.5V339.2z M1073.6,340.5h-3v-13.1h3V340.5z M1073.9,323.6c0,0.6-0.2,1-0.6,1.4
|
||||
c-0.4,0.3-0.8,0.5-1.3,0.5c-0.5,0-1-0.2-1.3-0.5c-0.4-0.3-0.5-0.8-0.5-1.4c0-0.6,0.2-1,0.5-1.4c0.4-0.3,0.8-0.5,1.3-0.5
|
||||
c0.5,0,0.9,0.2,1.3,0.5C1073.7,322.6,1073.9,323,1073.9,323.6z M1089.2,333.9c0,1-0.2,2-0.4,2.8c-0.3,0.9-0.7,1.6-1.3,2.2
|
||||
c-0.6,0.6-1.2,1.1-2,1.4c-0.8,0.3-1.6,0.5-2.6,0.5c-0.9,0-1.8-0.2-2.5-0.5c-0.8-0.3-1.4-0.8-2-1.4c-0.5-0.6-1-1.3-1.3-2.2
|
||||
c-0.3-0.9-0.5-1.8-0.5-2.8c0-1,0.2-2,0.5-2.8c0.3-0.9,0.8-1.6,1.3-2.2c0.6-0.6,1.2-1.1,2-1.4c0.8-0.3,1.6-0.5,2.5-0.5
|
||||
c0.9,0,1.8,0.2,2.5,0.5c0.8,0.3,1.4,0.8,2,1.4c0.6,0.6,1,1.3,1.3,2.2C1089.1,332,1089.2,332.9,1089.2,333.9z M1086.2,333.9
|
||||
c0-1.3-0.3-2.3-0.8-3.1c-0.6-0.8-1.3-1.2-2.3-1.2s-1.8,0.4-2.3,1.2c-0.6,0.8-0.8,1.8-0.8,3.1c0,1.3,0.3,2.4,0.8,3.1
|
||||
c0.6,0.8,1.3,1.1,2.3,1.1s1.8-0.4,2.3-1.1C1085.9,336.3,1086.2,335.3,1086.2,333.9z M1092.4,327.8c0.6-0.2,1.3-0.3,2.3-0.5
|
||||
c0.9-0.2,2-0.2,3.1-0.2c1.1,0,2,0.1,2.7,0.4c0.7,0.3,1.3,0.7,1.7,1.2c0.4,0.5,0.7,1.1,0.9,1.9c0.2,0.7,0.3,1.5,0.3,2.4v7.4h-3v-6.9
|
||||
c0-0.7-0.1-1.3-0.2-1.8c-0.1-0.5-0.2-0.9-0.4-1.2c-0.2-0.3-0.5-0.5-0.9-0.7c-0.3-0.1-0.8-0.2-1.3-0.2c-0.4,0-0.8,0-1.2,0.1
|
||||
c-0.4,0.1-0.7,0.1-0.9,0.1v10.6h-3V327.8z M1113.2,326.8c1-0.4,1.9-0.9,2.9-1.5c1-0.6,1.8-1.3,2.6-2.1h2.1v17.3h-3v-13.3
|
||||
c-0.4,0.4-1,0.7-1.7,1c-0.7,0.3-1.3,0.6-2,0.8L1113.2,326.8z"/>
|
||||
<path class="st0" d="M1030.5,415c2.5,0,4.4,0.5,5.7,1.4c1.3,0.9,2,2.3,2,4.2c0,2.4-1.2,3.9-3.5,4.8c0.3,0.4,0.7,0.9,1.1,1.4
|
||||
c0.4,0.5,0.8,1.1,1.2,1.8c0.4,0.6,0.8,1.3,1.2,2c0.4,0.7,0.7,1.3,1,2h-3.5c-0.3-0.6-0.7-1.2-1-1.8c-0.4-0.6-0.7-1.2-1.1-1.8
|
||||
c-0.4-0.6-0.7-1.1-1.1-1.6c-0.4-0.5-0.7-1-1-1.4c-0.2,0-0.4,0-0.6,0c-0.2,0-0.3,0-0.5,0h-1.5v6.6h-3.2v-17.1
|
||||
c0.8-0.2,1.6-0.3,2.4-0.3C1029.1,415,1029.8,415,1030.5,415z M1030.7,417.7c-0.7,0-1.3,0-1.8,0.1v5.6h1.4c0.8,0,1.4,0,2-0.1
|
||||
c0.6-0.1,1.1-0.2,1.4-0.5c0.4-0.2,0.7-0.5,0.9-0.9c0.2-0.4,0.3-0.8,0.3-1.4c0-0.5-0.1-1-0.3-1.4c-0.2-0.4-0.5-0.7-0.9-0.9
|
||||
c-0.4-0.2-0.8-0.4-1.3-0.4C1031.9,417.8,1031.4,417.7,1030.7,417.7z M1040.9,426c0-1.1,0.2-2.2,0.5-3c0.3-0.9,0.8-1.6,1.4-2.2
|
||||
c0.6-0.6,1.2-1,1.9-1.3c0.7-0.3,1.5-0.5,2.2-0.5c1.8,0,3.2,0.6,4.2,1.7c1,1.1,1.5,2.8,1.5,5c0,0.2,0,0.4,0,0.6c0,0.2,0,0.4,0,0.6
|
||||
h-8.6c0.1,1,0.4,1.9,1.1,2.4c0.7,0.6,1.6,0.9,2.9,0.9c0.7,0,1.4-0.1,2-0.2c0.6-0.1,1.1-0.3,1.5-0.4l0.4,2.5
|
||||
c-0.2,0.1-0.4,0.2-0.7,0.3c-0.3,0.1-0.6,0.2-1,0.2c-0.4,0.1-0.8,0.1-1.2,0.2c-0.4,0-0.9,0.1-1.3,0.1c-1.2,0-2.2-0.2-3-0.5
|
||||
c-0.8-0.4-1.5-0.8-2.1-1.4c-0.6-0.6-1-1.3-1.2-2.1C1041,427.9,1040.9,427,1040.9,426z M1049.6,424.7c0-0.4-0.1-0.8-0.2-1.2
|
||||
c-0.1-0.4-0.3-0.7-0.5-1c-0.2-0.3-0.5-0.5-0.8-0.6c-0.3-0.2-0.7-0.2-1.2-0.2c-0.5,0-0.9,0.1-1.2,0.3c-0.3,0.2-0.7,0.4-0.9,0.7
|
||||
c-0.2,0.3-0.4,0.6-0.5,1c-0.1,0.4-0.2,0.7-0.3,1.1H1049.6z M1058.2,425.6c0,1.3,0.3,2.2,0.8,2.8c0.6,0.6,1.3,0.9,2.2,0.9
|
||||
c0.5,0,0.9-0.1,1.3-0.2c0.4-0.1,0.8-0.3,1.1-0.5v-6.8c-0.2-0.1-0.5-0.1-0.8-0.1c-0.3-0.1-0.7-0.1-1.2-0.1c-1.1,0-1.9,0.4-2.5,1.1
|
||||
C1058.5,423.5,1058.2,424.4,1058.2,425.6z M1066.7,431.2c0,2.1-0.5,3.6-1.6,4.6c-1,1-2.7,1.4-4.8,1.4c-0.8,0-1.6-0.1-2.3-0.2
|
||||
c-0.8-0.1-1.4-0.3-2.1-0.5l0.6-2.6c0.5,0.2,1.1,0.4,1.8,0.5c0.7,0.1,1.4,0.2,2.2,0.2c1.2,0,2.1-0.2,2.6-0.8s0.8-1.2,0.8-2.2v-0.5
|
||||
c-0.3,0.1-0.7,0.3-1.2,0.4c-0.5,0.2-1,0.2-1.7,0.2c-0.8,0-1.6-0.1-2.3-0.4c-0.7-0.3-1.3-0.7-1.8-1.2c-0.5-0.5-0.9-1.2-1.1-1.9
|
||||
c-0.3-0.8-0.4-1.7-0.4-2.7c0-1,0.2-1.8,0.4-2.6c0.3-0.8,0.7-1.5,1.3-2.1c0.6-0.6,1.2-1,2.1-1.3c0.8-0.3,1.7-0.5,2.7-0.5
|
||||
c1,0,1.9,0.1,2.8,0.2c0.9,0.1,1.6,0.3,2.2,0.5V431.2z M1073.6,432.5h-3v-13.1h3V432.5z M1073.9,415.6c0,0.6-0.2,1-0.6,1.4
|
||||
c-0.4,0.3-0.8,0.5-1.3,0.5c-0.5,0-1-0.2-1.3-0.5c-0.4-0.3-0.5-0.8-0.5-1.4c0-0.6,0.2-1,0.5-1.4c0.4-0.3,0.8-0.5,1.3-0.5
|
||||
c0.5,0,0.9,0.2,1.3,0.5C1073.7,414.6,1073.9,415,1073.9,415.6z M1089.2,425.9c0,1-0.2,2-0.4,2.8c-0.3,0.9-0.7,1.6-1.3,2.2
|
||||
c-0.6,0.6-1.2,1.1-2,1.4c-0.8,0.3-1.6,0.5-2.6,0.5c-0.9,0-1.8-0.2-2.5-0.5c-0.8-0.3-1.4-0.8-2-1.4c-0.5-0.6-1-1.3-1.3-2.2
|
||||
c-0.3-0.9-0.5-1.8-0.5-2.8c0-1,0.2-2,0.5-2.8c0.3-0.9,0.8-1.6,1.3-2.2c0.6-0.6,1.2-1.1,2-1.4c0.8-0.3,1.6-0.5,2.5-0.5
|
||||
c0.9,0,1.8,0.2,2.5,0.5c0.8,0.3,1.4,0.8,2,1.4c0.6,0.6,1,1.3,1.3,2.2C1089.1,424,1089.2,424.9,1089.2,425.9z M1086.2,425.9
|
||||
c0-1.3-0.3-2.3-0.8-3.1c-0.6-0.8-1.3-1.2-2.3-1.2s-1.8,0.4-2.3,1.2c-0.6,0.8-0.8,1.8-0.8,3.1c0,1.3,0.3,2.4,0.8,3.1
|
||||
c0.6,0.8,1.3,1.1,2.3,1.1s1.8-0.4,2.3-1.1C1085.9,428.3,1086.2,427.3,1086.2,425.9z M1092.4,419.8c0.6-0.2,1.3-0.3,2.3-0.5
|
||||
c0.9-0.2,2-0.2,3.1-0.2c1.1,0,2,0.1,2.7,0.4c0.7,0.3,1.3,0.7,1.7,1.2c0.4,0.5,0.7,1.1,0.9,1.9c0.2,0.7,0.3,1.5,0.3,2.4v7.4h-3v-6.9
|
||||
c0-0.7-0.1-1.3-0.2-1.8c-0.1-0.5-0.2-0.9-0.4-1.2c-0.2-0.3-0.5-0.5-0.9-0.7c-0.3-0.1-0.8-0.2-1.3-0.2c-0.4,0-0.8,0-1.2,0.1
|
||||
c-0.4,0.1-0.7,0.1-0.9,0.1v10.6h-3V419.8z M1122.9,419.7c0,0.6-0.1,1.2-0.4,1.8c-0.2,0.6-0.6,1.1-1,1.7c-0.4,0.5-0.8,1.1-1.3,1.6
|
||||
c-0.5,0.5-1,1-1.5,1.5c-0.3,0.2-0.6,0.5-0.9,0.9c-0.3,0.4-0.7,0.7-0.9,1.1c-0.3,0.3-0.6,0.7-0.8,1c-0.2,0.3-0.3,0.6-0.3,0.8h7.7v2.6
|
||||
h-11c0-0.1,0-0.3,0-0.5c0-0.2,0-0.4,0-0.5c0-0.8,0.1-1.5,0.4-2.2c0.3-0.7,0.6-1.3,1-1.9c0.4-0.6,0.9-1.1,1.4-1.6
|
||||
c0.5-0.5,1-1,1.6-1.5c0.4-0.4,0.8-0.8,1.2-1.1c0.4-0.4,0.7-0.7,0.9-1.1c0.3-0.4,0.5-0.7,0.7-1.1c0.2-0.4,0.2-0.8,0.2-1.2
|
||||
c0-0.9-0.2-1.5-0.8-1.9c-0.5-0.4-1.1-0.5-1.8-0.5c-0.5,0-0.9,0.1-1.3,0.2c-0.4,0.1-0.8,0.3-1.1,0.5c-0.3,0.2-0.6,0.4-0.8,0.6
|
||||
c-0.2,0.2-0.4,0.3-0.5,0.5l-1.5-2.1c0.7-0.7,1.5-1.2,2.4-1.6c1-0.4,2-0.6,3.1-0.6c1.8,0,3.2,0.4,4.1,1.3
|
||||
C1122.5,417,1122.9,418.2,1122.9,419.7z"/>
|
||||
<path class="st0" d="M1030.5,508c2.5,0,4.4,0.5,5.7,1.4c1.3,0.9,2,2.3,2,4.2c0,2.3-1.2,3.9-3.5,4.8c0.3,0.4,0.7,0.9,1.1,1.4
|
||||
s0.8,1.1,1.2,1.8c0.4,0.6,0.8,1.3,1.2,2c0.4,0.7,0.7,1.3,1,2h-3.5c-0.3-0.6-0.7-1.2-1-1.8c-0.4-0.6-0.7-1.2-1.1-1.8
|
||||
c-0.4-0.6-0.7-1.1-1.1-1.6c-0.4-0.5-0.7-1-1-1.4c-0.2,0-0.4,0-0.6,0c-0.2,0-0.3,0-0.5,0h-1.5v6.5h-3.2v-17.1
|
||||
c0.8-0.2,1.6-0.3,2.4-0.3C1029.1,508,1029.8,508,1030.5,508z M1030.7,510.7c-0.7,0-1.3,0-1.8,0.1v5.6h1.4c0.8,0,1.4,0,2-0.1
|
||||
c0.6-0.1,1.1-0.2,1.4-0.4c0.4-0.2,0.7-0.5,0.9-0.9c0.2-0.4,0.3-0.8,0.3-1.4c0-0.5-0.1-1-0.3-1.3c-0.2-0.4-0.5-0.7-0.9-0.9
|
||||
c-0.4-0.2-0.8-0.4-1.3-0.4C1031.9,510.8,1031.4,510.7,1030.7,510.7z M1040.9,519c0-1.1,0.2-2.2,0.5-3c0.3-0.9,0.8-1.6,1.4-2.2
|
||||
c0.6-0.6,1.2-1,1.9-1.3c0.7-0.3,1.5-0.5,2.2-0.5c1.8,0,3.2,0.6,4.2,1.7c1,1.1,1.5,2.8,1.5,5c0,0.2,0,0.4,0,0.6c0,0.2,0,0.4,0,0.5
|
||||
h-8.6c0.1,1.1,0.4,1.9,1.1,2.5c0.7,0.6,1.6,0.9,2.9,0.9c0.7,0,1.4-0.1,2-0.2c0.6-0.1,1.1-0.3,1.5-0.4l0.4,2.5
|
||||
c-0.2,0.1-0.4,0.2-0.7,0.3c-0.3,0.1-0.6,0.2-1,0.2c-0.4,0.1-0.8,0.2-1.2,0.2c-0.4,0-0.9,0.1-1.3,0.1c-1.2,0-2.2-0.2-3-0.5
|
||||
c-0.8-0.4-1.5-0.8-2.1-1.4c-0.6-0.6-1-1.3-1.2-2.1C1041,520.9,1040.9,520,1040.9,519z M1049.6,517.7c0-0.4-0.1-0.8-0.2-1.2
|
||||
c-0.1-0.4-0.3-0.7-0.5-1c-0.2-0.3-0.5-0.5-0.8-0.6c-0.3-0.2-0.7-0.2-1.2-0.2c-0.5,0-0.9,0.1-1.2,0.3c-0.3,0.2-0.7,0.4-0.9,0.7
|
||||
c-0.2,0.3-0.4,0.6-0.5,1c-0.1,0.4-0.2,0.7-0.3,1.1H1049.6z M1058.2,518.6c0,1.3,0.3,2.2,0.8,2.8c0.6,0.6,1.3,0.9,2.2,0.9
|
||||
c0.5,0,0.9-0.1,1.3-0.2c0.4-0.1,0.8-0.3,1.1-0.5v-6.8c-0.2,0-0.5-0.1-0.8-0.1c-0.3,0-0.7-0.1-1.2-0.1c-1.1,0-1.9,0.4-2.5,1.1
|
||||
C1058.5,516.5,1058.2,517.4,1058.2,518.6z M1066.7,524.2c0,2.1-0.5,3.6-1.6,4.6c-1,1-2.7,1.5-4.8,1.5c-0.8,0-1.6-0.1-2.3-0.2
|
||||
c-0.8-0.1-1.4-0.3-2.1-0.5l0.6-2.6c0.5,0.2,1.1,0.4,1.8,0.5c0.7,0.1,1.4,0.2,2.2,0.2c1.2,0,2.1-0.2,2.6-0.8s0.8-1.2,0.8-2.2v-0.5
|
||||
c-0.3,0.2-0.7,0.3-1.2,0.5c-0.5,0.2-1,0.2-1.7,0.2c-0.8,0-1.6-0.1-2.3-0.4c-0.7-0.3-1.3-0.7-1.8-1.2c-0.5-0.5-0.9-1.2-1.1-1.9
|
||||
c-0.3-0.8-0.4-1.7-0.4-2.7c0-1,0.2-1.8,0.4-2.6c0.3-0.8,0.7-1.5,1.3-2c0.6-0.6,1.2-1,2.1-1.3c0.8-0.3,1.7-0.5,2.7-0.5
|
||||
c1,0,1.9,0.1,2.8,0.2c0.9,0.1,1.6,0.3,2.2,0.5V524.2z M1073.6,525.5h-3v-13.1h3V525.5z M1073.9,508.6c0,0.6-0.2,1-0.6,1.4
|
||||
c-0.4,0.3-0.8,0.5-1.3,0.5c-0.5,0-1-0.2-1.3-0.5c-0.4-0.3-0.5-0.8-0.5-1.4c0-0.6,0.2-1,0.5-1.4c0.4-0.3,0.8-0.5,1.3-0.5
|
||||
c0.5,0,0.9,0.2,1.3,0.5C1073.7,507.6,1073.9,508,1073.9,508.6z M1089.2,518.9c0,1-0.2,2-0.4,2.8c-0.3,0.9-0.7,1.6-1.3,2.2
|
||||
c-0.6,0.6-1.2,1.1-2,1.4c-0.8,0.3-1.6,0.5-2.6,0.5c-0.9,0-1.8-0.2-2.5-0.5c-0.8-0.3-1.4-0.8-2-1.4c-0.5-0.6-1-1.3-1.3-2.2
|
||||
c-0.3-0.8-0.5-1.8-0.5-2.8c0-1,0.2-2,0.5-2.8c0.3-0.8,0.8-1.6,1.3-2.2c0.6-0.6,1.2-1.1,2-1.4c0.8-0.3,1.6-0.5,2.5-0.5
|
||||
c0.9,0,1.8,0.2,2.5,0.5c0.8,0.3,1.4,0.8,2,1.4c0.6,0.6,1,1.3,1.3,2.2C1089.1,517,1089.2,517.9,1089.2,518.9z M1086.2,518.9
|
||||
c0-1.3-0.3-2.3-0.8-3.1c-0.6-0.8-1.3-1.2-2.3-1.2s-1.8,0.4-2.3,1.2c-0.6,0.8-0.8,1.8-0.8,3.1c0,1.3,0.3,2.4,0.8,3.1
|
||||
c0.6,0.8,1.3,1.1,2.3,1.1s1.8-0.4,2.3-1.1C1085.9,521.3,1086.2,520.3,1086.2,518.9z M1092.4,512.8c0.6-0.2,1.3-0.3,2.3-0.5
|
||||
c0.9-0.2,2-0.2,3.1-0.2c1.1,0,2,0.2,2.7,0.5c0.7,0.3,1.3,0.7,1.7,1.2c0.4,0.5,0.7,1.1,0.9,1.9c0.2,0.7,0.3,1.5,0.3,2.4v7.4h-3v-6.9
|
||||
c0-0.7-0.1-1.3-0.2-1.8c-0.1-0.5-0.2-0.9-0.4-1.2c-0.2-0.3-0.5-0.5-0.9-0.7c-0.3-0.1-0.8-0.2-1.3-0.2c-0.4,0-0.8,0-1.2,0.1
|
||||
c-0.4,0-0.7,0.1-0.9,0.1v10.5h-3V512.8z M1119.3,511.9c-0.4,0.5-0.8,1-1.2,1.6c-0.4,0.5-0.8,1.1-1.2,1.7s-0.8,1.2-1.2,1.8
|
||||
c-0.4,0.6-0.7,1.2-1,1.9h4.6V511.9z M1122.3,508.2v10.7h1.9v2.5h-1.9v4.2h-3v-4.2h-7.6v-2.1c0.3-0.7,0.8-1.6,1.3-2.5
|
||||
c0.6-1,1.2-1.9,1.9-2.9c0.7-1,1.4-2,2.2-3s1.5-1.8,2.3-2.6H1122.3z"/>
|
||||
<path class="st0" d="M402.5,508c2.5,0,4.4,0.5,5.7,1.4c1.3,0.9,2,2.3,2,4.2c0,2.3-1.2,3.9-3.5,4.8c0.3,0.4,0.7,0.9,1.1,1.4
|
||||
s0.8,1.1,1.2,1.8c0.4,0.6,0.8,1.3,1.2,2c0.4,0.7,0.7,1.3,1,2h-3.5c-0.3-0.6-0.7-1.2-1-1.8c-0.4-0.6-0.7-1.2-1.1-1.8
|
||||
c-0.4-0.6-0.7-1.1-1.1-1.6c-0.4-0.5-0.7-1-1-1.4c-0.2,0-0.4,0-0.6,0s-0.3,0-0.5,0h-1.5v6.5h-3.1v-17.1c0.8-0.2,1.6-0.3,2.5-0.3
|
||||
C401.1,508,401.8,508,402.5,508z M402.7,510.7c-0.7,0-1.3,0-1.9,0.1v5.6h1.4c0.8,0,1.4,0,2-0.1c0.6-0.1,1.1-0.2,1.5-0.4
|
||||
c0.4-0.2,0.7-0.5,0.9-0.9c0.2-0.4,0.3-0.8,0.3-1.4c0-0.5-0.1-1-0.3-1.3c-0.2-0.4-0.5-0.7-0.9-0.9c-0.4-0.2-0.8-0.4-1.3-0.4
|
||||
C403.9,510.8,403.4,510.7,402.7,510.7z M412.9,519c0-1.1,0.2-2.2,0.5-3c0.4-0.9,0.8-1.6,1.4-2.2c0.6-0.6,1.2-1,2-1.3
|
||||
c0.7-0.3,1.5-0.5,2.2-0.5c1.8,0,3.2,0.6,4.2,1.7c1,1.1,1.5,2.8,1.5,5c0,0.2,0,0.4,0,0.6c0,0.2,0,0.4,0,0.5H416
|
||||
c0.1,1.1,0.5,1.9,1.1,2.5c0.7,0.6,1.6,0.9,2.9,0.9c0.7,0,1.4-0.1,2-0.2c0.6-0.1,1.1-0.3,1.4-0.4l0.4,2.5c-0.2,0.1-0.4,0.2-0.7,0.3
|
||||
c-0.3,0.1-0.6,0.2-1,0.2c-0.4,0.1-0.8,0.2-1.2,0.2c-0.4,0-0.9,0.1-1.3,0.1c-1.1,0-2.1-0.2-3-0.5c-0.9-0.4-1.6-0.8-2.1-1.4
|
||||
c-0.5-0.6-1-1.3-1.2-2.1C413,520.9,412.9,520,412.9,519z M421.6,517.7c0-0.4-0.1-0.8-0.2-1.2c-0.1-0.4-0.3-0.7-0.5-1
|
||||
c-0.2-0.3-0.5-0.5-0.8-0.6c-0.3-0.2-0.7-0.2-1.1-0.2c-0.5,0-0.9,0.1-1.2,0.3c-0.4,0.2-0.6,0.4-0.9,0.7c-0.2,0.3-0.4,0.6-0.6,1
|
||||
c-0.1,0.4-0.2,0.7-0.3,1.1H421.6z M430.2,518.6c0,1.3,0.3,2.2,0.8,2.8c0.6,0.6,1.3,0.9,2.2,0.9c0.5,0,0.9-0.1,1.4-0.2
|
||||
c0.4-0.1,0.8-0.3,1.1-0.5v-6.8c-0.2,0-0.5-0.1-0.8-0.1c-0.3,0-0.7-0.1-1.2-0.1c-1.1,0-1.9,0.4-2.5,1.1
|
||||
C430.5,516.5,430.2,517.4,430.2,518.6z M438.7,524.2c0,2.1-0.5,3.6-1.6,4.6c-1,1-2.7,1.5-4.9,1.5c-0.8,0-1.6-0.1-2.4-0.2
|
||||
c-0.8-0.1-1.4-0.3-2-0.5l0.5-2.6c0.5,0.2,1.1,0.4,1.8,0.5c0.7,0.1,1.4,0.2,2.2,0.2c1.2,0,2.1-0.2,2.6-0.8c0.5-0.5,0.8-1.2,0.8-2.2
|
||||
v-0.5c-0.3,0.2-0.7,0.3-1.2,0.5c-0.5,0.2-1,0.2-1.7,0.2c-0.8,0-1.6-0.1-2.3-0.4c-0.7-0.3-1.3-0.7-1.8-1.2c-0.5-0.5-0.9-1.2-1.1-1.9
|
||||
c-0.3-0.8-0.4-1.7-0.4-2.7c0-1,0.1-1.8,0.4-2.6c0.3-0.8,0.7-1.5,1.3-2c0.6-0.6,1.2-1,2.1-1.3c0.8-0.3,1.7-0.5,2.7-0.5
|
||||
c1,0,1.9,0.1,2.8,0.2c0.9,0.1,1.6,0.3,2.2,0.5V524.2z M445.6,525.5h-3v-13.1h3V525.5z M445.9,508.6c0,0.6-0.2,1-0.6,1.4
|
||||
c-0.4,0.3-0.8,0.5-1.3,0.5c-0.5,0-1-0.2-1.3-0.5c-0.4-0.3-0.5-0.8-0.5-1.4c0-0.6,0.2-1,0.5-1.4c0.4-0.3,0.8-0.5,1.3-0.5
|
||||
c0.5,0,0.9,0.2,1.3,0.5C445.7,507.6,445.9,508,445.9,508.6z M461.3,518.9c0,1-0.2,2-0.5,2.8c-0.3,0.9-0.7,1.6-1.3,2.2
|
||||
c-0.6,0.6-1.2,1.1-2,1.4c-0.8,0.3-1.6,0.5-2.6,0.5c-0.9,0-1.8-0.2-2.5-0.5s-1.4-0.8-2-1.4c-0.5-0.6-1-1.3-1.3-2.2
|
||||
c-0.3-0.8-0.5-1.8-0.5-2.8c0-1,0.1-2,0.5-2.8c0.3-0.8,0.8-1.6,1.3-2.2c0.6-0.6,1.2-1.1,2-1.4c0.8-0.3,1.6-0.5,2.5-0.5
|
||||
c0.9,0,1.8,0.2,2.5,0.5c0.8,0.3,1.4,0.8,2,1.4c0.5,0.6,1,1.3,1.3,2.2C461.1,517,461.3,517.9,461.3,518.9z M458.2,518.9
|
||||
c0-1.3-0.3-2.3-0.9-3.1c-0.5-0.8-1.3-1.2-2.3-1.2s-1.8,0.4-2.3,1.2c-0.6,0.8-0.8,1.8-0.8,3.1c0,1.3,0.3,2.4,0.8,3.1
|
||||
c0.6,0.8,1.3,1.1,2.3,1.1s1.8-0.4,2.3-1.1C457.9,521.3,458.2,520.3,458.2,518.9z M464.4,512.8c0.6-0.2,1.3-0.3,2.3-0.5
|
||||
c0.9-0.2,2-0.2,3.1-0.2c1.1,0,2,0.2,2.7,0.5c0.7,0.3,1.3,0.7,1.7,1.2c0.4,0.5,0.7,1.1,0.9,1.9c0.2,0.7,0.3,1.5,0.3,2.4v7.4h-3v-6.9
|
||||
c0-0.7-0.1-1.3-0.1-1.8c-0.1-0.5-0.2-0.9-0.5-1.2c-0.2-0.3-0.5-0.5-0.9-0.7c-0.4-0.1-0.8-0.2-1.3-0.2c-0.4,0-0.8,0-1.2,0.1
|
||||
c-0.4,0-0.7,0.1-0.9,0.1v10.5h-3V512.8z M488.8,525.9c-0.5,0-0.9,0-1.4-0.1c-0.5,0-0.9-0.1-1.4-0.2c-0.4-0.1-0.8-0.2-1.1-0.3
|
||||
c-0.4-0.1-0.6-0.2-0.8-0.3l0.6-2.6c0.4,0.2,0.9,0.4,1.5,0.6c0.7,0.2,1.5,0.3,2.5,0.3c1.3,0,2.3-0.2,2.9-0.8c0.6-0.5,0.9-1.2,0.9-2
|
||||
c0-0.6-0.1-1-0.4-1.4c-0.2-0.4-0.5-0.7-0.9-0.9c-0.4-0.2-0.8-0.4-1.4-0.5c-0.5-0.1-1-0.1-1.6-0.1h-1v-2.5h1.2c0.4,0,0.8,0,1.1-0.1
|
||||
c0.4-0.1,0.8-0.2,1.1-0.4c0.3-0.2,0.6-0.5,0.8-0.8c0.2-0.3,0.3-0.7,0.3-1.2c0-0.4-0.1-0.7-0.2-1c-0.2-0.3-0.4-0.5-0.6-0.7
|
||||
c-0.2-0.2-0.5-0.3-0.8-0.4c-0.3-0.1-0.6-0.1-1-0.1c-0.8,0-1.4,0.1-2,0.3c-0.6,0.2-1.1,0.5-1.5,0.8l-1.1-2.2c0.2-0.1,0.5-0.3,0.9-0.5
|
||||
c0.3-0.2,0.7-0.3,1.1-0.5c0.4-0.1,0.9-0.3,1.3-0.4c0.5-0.1,1-0.1,1.5-0.1c1,0,1.8,0.1,2.5,0.4s1.3,0.6,1.7,1c0.5,0.4,0.8,0.9,1,1.5
|
||||
c0.2,0.6,0.4,1.2,0.4,1.9c0,0.8-0.2,1.5-0.7,2.1c-0.4,0.6-1,1.1-1.7,1.5c0.9,0.3,1.6,0.8,2.2,1.6c0.6,0.7,0.9,1.7,0.9,2.8
|
||||
c0,0.8-0.1,1.5-0.4,2.1c-0.3,0.7-0.7,1.2-1.2,1.7c-0.6,0.5-1.2,0.8-2.1,1.1C491,525.7,490,525.9,488.8,525.9z"/>
|
||||
<path class="st0" d="M1030.5,641c2.5,0,4.4,0.5,5.7,1.4c1.3,0.9,2,2.3,2,4.2c0,2.3-1.2,3.9-3.5,4.8c0.3,0.4,0.7,0.9,1.1,1.4
|
||||
s0.8,1.1,1.2,1.8c0.4,0.6,0.8,1.3,1.2,2c0.4,0.7,0.7,1.3,1,2h-3.5c-0.3-0.6-0.7-1.2-1-1.8c-0.4-0.6-0.7-1.2-1.1-1.8
|
||||
c-0.4-0.6-0.7-1.1-1.1-1.6c-0.4-0.5-0.7-1-1-1.4c-0.2,0-0.4,0-0.6,0c-0.2,0-0.3,0-0.5,0h-1.5v6.5h-3.2v-17.1
|
||||
c0.8-0.2,1.6-0.3,2.4-0.3C1029.1,641,1029.8,641,1030.5,641z M1030.7,643.7c-0.7,0-1.3,0-1.8,0.1v5.6h1.4c0.8,0,1.4,0,2-0.1
|
||||
c0.6-0.1,1.1-0.2,1.4-0.4c0.4-0.2,0.7-0.5,0.9-0.9c0.2-0.4,0.3-0.8,0.3-1.4c0-0.5-0.1-1-0.3-1.3c-0.2-0.4-0.5-0.7-0.9-0.9
|
||||
c-0.4-0.2-0.8-0.4-1.3-0.5C1031.9,643.8,1031.4,643.7,1030.7,643.7z M1040.9,652c0-1.1,0.2-2.2,0.5-3c0.3-0.9,0.8-1.6,1.4-2.2
|
||||
c0.6-0.6,1.2-1,1.9-1.3c0.7-0.3,1.5-0.5,2.2-0.5c1.8,0,3.2,0.6,4.2,1.7c1,1.1,1.5,2.8,1.5,5c0,0.2,0,0.4,0,0.6c0,0.2,0,0.4,0,0.5
|
||||
h-8.6c0.1,1.1,0.4,1.9,1.1,2.5c0.7,0.6,1.6,0.9,2.9,0.9c0.7,0,1.4-0.1,2-0.2c0.6-0.1,1.1-0.3,1.5-0.4l0.4,2.5
|
||||
c-0.2,0.1-0.4,0.2-0.7,0.3c-0.3,0.1-0.6,0.2-1,0.2c-0.4,0.1-0.8,0.2-1.2,0.2c-0.4,0-0.9,0.1-1.3,0.1c-1.2,0-2.2-0.2-3-0.5
|
||||
c-0.8-0.4-1.5-0.8-2.1-1.4c-0.6-0.6-1-1.3-1.2-2.1C1041,653.9,1040.9,653,1040.9,652z M1049.6,650.7c0-0.4-0.1-0.8-0.2-1.2
|
||||
c-0.1-0.4-0.3-0.7-0.5-1c-0.2-0.3-0.5-0.5-0.8-0.6c-0.3-0.2-0.7-0.2-1.2-0.2c-0.5,0-0.9,0.1-1.2,0.3c-0.3,0.2-0.7,0.4-0.9,0.7
|
||||
c-0.2,0.3-0.4,0.6-0.5,1c-0.1,0.4-0.2,0.7-0.3,1.1H1049.6z M1058.2,651.6c0,1.3,0.3,2.2,0.8,2.8c0.6,0.6,1.3,0.9,2.2,0.9
|
||||
c0.5,0,0.9-0.1,1.3-0.2c0.4-0.1,0.8-0.3,1.1-0.5v-6.8c-0.2,0-0.5-0.1-0.8-0.1c-0.3,0-0.7-0.1-1.2-0.1c-1.1,0-1.9,0.4-2.5,1.1
|
||||
C1058.5,649.5,1058.2,650.4,1058.2,651.6z M1066.7,657.2c0,2.1-0.5,3.6-1.6,4.6c-1,1-2.7,1.5-4.8,1.5c-0.8,0-1.6-0.1-2.3-0.2
|
||||
c-0.8-0.1-1.4-0.3-2.1-0.5l0.6-2.6c0.5,0.2,1.1,0.4,1.8,0.5c0.7,0.1,1.4,0.2,2.2,0.2c1.2,0,2.1-0.2,2.6-0.8s0.8-1.2,0.8-2.2v-0.5
|
||||
c-0.3,0.2-0.7,0.3-1.2,0.5c-0.5,0.2-1,0.2-1.7,0.2c-0.8,0-1.6-0.1-2.3-0.4c-0.7-0.3-1.3-0.7-1.8-1.2c-0.5-0.5-0.9-1.2-1.1-1.9
|
||||
c-0.3-0.8-0.4-1.7-0.4-2.7c0-1,0.2-1.8,0.4-2.6c0.3-0.8,0.7-1.5,1.3-2c0.6-0.6,1.2-1,2.1-1.3c0.8-0.3,1.7-0.5,2.7-0.5
|
||||
c1,0,1.9,0.1,2.8,0.2c0.9,0.1,1.6,0.3,2.2,0.5V657.2z M1073.6,658.5h-3v-13.1h3V658.5z M1073.9,641.6c0,0.6-0.2,1-0.6,1.4
|
||||
c-0.4,0.3-0.8,0.5-1.3,0.5c-0.5,0-1-0.2-1.3-0.5c-0.4-0.3-0.5-0.8-0.5-1.4c0-0.6,0.2-1,0.5-1.4c0.4-0.3,0.8-0.5,1.3-0.5
|
||||
c0.5,0,0.9,0.2,1.3,0.5C1073.7,640.6,1073.9,641,1073.9,641.6z M1089.2,651.9c0,1-0.2,2-0.4,2.8c-0.3,0.9-0.7,1.6-1.3,2.2
|
||||
c-0.6,0.6-1.2,1.1-2,1.4c-0.8,0.3-1.6,0.5-2.6,0.5c-0.9,0-1.8-0.2-2.5-0.5c-0.8-0.3-1.4-0.8-2-1.4c-0.5-0.6-1-1.3-1.3-2.2
|
||||
c-0.3-0.8-0.5-1.8-0.5-2.8c0-1,0.2-2,0.5-2.8c0.3-0.8,0.8-1.6,1.3-2.2c0.6-0.6,1.2-1.1,2-1.4c0.8-0.3,1.6-0.5,2.5-0.5
|
||||
c0.9,0,1.8,0.2,2.5,0.5c0.8,0.3,1.4,0.8,2,1.4c0.6,0.6,1,1.3,1.3,2.2C1089.1,650,1089.2,650.9,1089.2,651.9z M1086.2,651.9
|
||||
c0-1.3-0.3-2.3-0.8-3.1c-0.6-0.8-1.3-1.2-2.3-1.2s-1.8,0.4-2.3,1.2c-0.6,0.8-0.8,1.8-0.8,3.1c0,1.3,0.3,2.4,0.8,3.1
|
||||
c0.6,0.8,1.3,1.1,2.3,1.1s1.8-0.4,2.3-1.1C1085.9,654.3,1086.2,653.3,1086.2,651.9z M1092.4,645.8c0.6-0.2,1.3-0.3,2.3-0.5
|
||||
c0.9-0.2,2-0.2,3.1-0.2c1.1,0,2,0.2,2.7,0.5c0.7,0.3,1.3,0.7,1.7,1.2c0.4,0.5,0.7,1.1,0.9,1.9c0.2,0.7,0.3,1.5,0.3,2.4v7.4h-3v-6.9
|
||||
c0-0.7-0.1-1.3-0.2-1.8c-0.1-0.5-0.2-0.9-0.4-1.2c-0.2-0.3-0.5-0.5-0.9-0.7c-0.3-0.1-0.8-0.2-1.3-0.2c-0.4,0-0.8,0-1.2,0.1
|
||||
c-0.4,0-0.7,0.1-0.9,0.1v10.5h-3V645.8z M1112.8,645.8c0.6-0.2,1.3-0.3,2.3-0.5c0.9-0.2,2-0.2,3.1-0.2c1.1,0,2,0.2,2.7,0.5
|
||||
c0.7,0.3,1.3,0.7,1.7,1.2c0.4,0.5,0.7,1.1,0.9,1.9c0.2,0.7,0.3,1.5,0.3,2.4v7.4h-3v-6.9c0-0.7,0-1.3-0.2-1.8
|
||||
c-0.1-0.5-0.2-0.9-0.4-1.2c-0.2-0.3-0.5-0.5-0.8-0.7c-0.3-0.1-0.8-0.2-1.3-0.2c-0.4,0-0.8,0-1.2,0.1c-0.4,0-0.7,0.1-0.9,0.1v10.5h-3
|
||||
V645.8z"/>
|
||||
<path class="st0" d="M110,588.5c3.3,0,6-2.7,6-6c0-3.3-2.7-6-6-6s-6,2.7-6,6C104,585.8,106.7,588.5,110,588.5z"/>
|
||||
<path class="st0" d="M133,588.5c3.3,0,6-2.7,6-6c0-3.3-2.7-6-6-6s-6,2.7-6,6C127,585.8,129.7,588.5,133,588.5z"/>
|
||||
<path class="st0" d="M156,588.5c3.3,0,6-2.7,6-6c0-3.3-2.7-6-6-6s-6,2.7-6,6C150,585.8,152.7,588.5,156,588.5z"/>
|
||||
<path class="st0" d="M425,588.5c3.3,0,6-2.7,6-6c0-3.3-2.7-6-6-6s-6,2.7-6,6C419,585.8,421.7,588.5,425,588.5z"/>
|
||||
<path class="st0" d="M448,588.5c3.3,0,6-2.7,6-6c0-3.3-2.7-6-6-6s-6,2.7-6,6C442,585.8,444.7,588.5,448,588.5z"/>
|
||||
<path class="st0" d="M471,588.5c3.3,0,6-2.7,6-6c0-3.3-2.7-6-6-6s-6,2.7-6,6C465,585.8,467.7,588.5,471,588.5z"/>
|
||||
<path class="st0" d="M736,588.5c3.3,0,6-2.7,6-6c0-3.3-2.7-6-6-6s-6,2.7-6,6C730,585.8,732.7,588.5,736,588.5z"/>
|
||||
<path class="st0" d="M759,588.5c3.3,0,6-2.7,6-6c0-3.3-2.7-6-6-6s-6,2.7-6,6C753,585.8,755.7,588.5,759,588.5z"/>
|
||||
<path class="st0" d="M782,588.5c3.3,0,6-2.7,6-6c0-3.3-2.7-6-6-6s-6,2.7-6,6C776,585.8,778.7,588.5,782,588.5z"/>
|
||||
<path class="st0" d="M1051,588.5c3.3,0,6-2.7,6-6c0-3.3-2.7-6-6-6s-6,2.7-6,6C1045,585.8,1047.7,588.5,1051,588.5z"/>
|
||||
<path class="st0" d="M1074,588.5c3.3,0,6-2.7,6-6c0-3.3-2.7-6-6-6s-6,2.7-6,6C1068,585.8,1070.7,588.5,1074,588.5z"/>
|
||||
<path class="st0" d="M1097,588.5c3.3,0,6-2.7,6-6c0-3.3-2.7-6-6-6s-6,2.7-6,6C1091,585.8,1093.7,588.5,1097,588.5z"/>
|
||||
<path class="st0" d="M274.8,513.3c-14.7,0-23.6-1.1-23.9-1.1l0.3-2c0.7,0.1,70.8,8.5,141.5-22.6c12.5-5.2,26.5-11.1,41.1-17.2
|
||||
c34.2-14.4,72.9-30.6,104.9-43.8c22.4-8.2,53.3-10.8,75.3-11.5c23.8-0.8,42.5,0.4,42.7,0.4l-0.1,2c-0.2,0-18.9-1.2-42.6-0.4
|
||||
c-21.8,0.7-52.5,3.2-74.6,11.4c-31.9,13.1-70.7,29.4-104.8,43.7c-14.7,6.2-28.6,12-41.1,17.2C347.4,509.7,301.6,513.3,274.8,513.3z"
|
||||
/>
|
||||
<path class="st0" d="M132.3,162.3c0.4,0.4,1,0.4,1.4,0l6.4-6.4c0.4-0.4,0.4-1,0-1.4c-0.4-0.4-1-0.4-1.4,0l-5.7,5.7l-5.7-5.7
|
||||
c-0.4-0.4-1-0.4-1.4,0c-0.4,0.4-0.4,1,0,1.4L132.3,162.3z M132,94.6v67h2v-67H132z"/>
|
||||
<path class="st0" d="M133.7,93.9c-0.4-0.4-1-0.4-1.4,0l-6.4,6.4c-0.4,0.4-0.4,1,0,1.4c0.4,0.4,1,0.4,1.4,0L133,96l5.7,5.7
|
||||
c0.4,0.4,1,0.4,1.4,0c0.4-0.4,0.4-1,0-1.4L133.7,93.9z M134,161.6v-67h-2v67H134z"/>
|
||||
<path class="st0" d="M443.8,162.3c0.4,0.4,1,0.4,1.4,0l6.4-6.4c0.4-0.4,0.4-1,0-1.4c-0.4-0.4-1-0.4-1.4,0l-5.7,5.7l-5.7-5.7
|
||||
c-0.4-0.4-1-0.4-1.4,0c-0.4,0.4-0.4,1,0,1.4L443.8,162.3z M443.5,94.6v67h2v-67H443.5z"/>
|
||||
<path class="st0" d="M445.2,93.9c-0.4-0.4-1-0.4-1.4,0l-6.4,6.4c-0.4,0.4-0.4,1,0,1.4c0.4,0.4,1,0.4,1.4,0l5.7-5.7l5.7,5.7
|
||||
c0.4,0.4,1,0.4,1.4,0c0.4-0.4,0.4-1,0-1.4L445.2,93.9z M445.5,161.6v-67h-2v67H445.5z"/>
|
||||
<path class="st0" d="M752.3,164.2c0.4,0.4,1,0.4,1.4,0l6.4-6.4c0.4-0.4,0.4-1,0-1.4c-0.4-0.4-1-0.4-1.4,0l-5.7,5.7l-5.7-5.7
|
||||
c-0.4-0.4-1-0.4-1.4,0c-0.4,0.4-0.4,1,0,1.4L752.3,164.2z M752,96.5v67h2v-67H752z"/>
|
||||
<path class="st0" d="M753.7,95.8c-0.4-0.4-1-0.4-1.4,0l-6.4,6.4c-0.4,0.4-0.4,1,0,1.4c0.4,0.4,1,0.4,1.4,0l5.7-5.7l5.7,5.7
|
||||
c0.4,0.4,1,0.4,1.4,0c0.4-0.4,0.4-1,0-1.4L753.7,95.8z M754,163.5v-67h-2v67H754z"/>
|
||||
<path class="st0" d="M1079.3,164.2c0.4,0.4,1,0.4,1.4,0l6.4-6.4c0.4-0.4,0.4-1,0-1.4c-0.4-0.4-1-0.4-1.4,0l-5.7,5.7l-5.7-5.7
|
||||
c-0.4-0.4-1-0.4-1.4,0c-0.4,0.4-0.4,1,0,1.4L1079.3,164.2z M1079,96.5v67h2v-67H1079z"/>
|
||||
<path class="st0" d="M1080.7,95.8c-0.4-0.4-1-0.4-1.4,0l-6.4,6.4c-0.4,0.4-0.4,1,0,1.4c0.4,0.4,1,0.4,1.4,0l5.7-5.7l5.7,5.7
|
||||
c0.4,0.4,1,0.4,1.4,0c0.4-0.4,0.4-1,0-1.4L1080.7,95.8z M1081,163.5v-67h-2v67H1081z"/>
|
||||
<path class="st10" d="M2,0h1202c1.1,0,2,0.9,2,2v80.1c0,1.1-0.9,2-2,2H2c-1.1,0-2-0.9-2-2V2C0,0.9,0.9,0,2,0z"/>
|
||||
<path class="st0" d="M549.8,58.4c-3.7,0-6.6-1-8.5-3.1c-1.9-2.1-2.9-5-2.9-8.8c0-1.9,0.3-3.6,0.9-5c0.6-1.5,1.4-2.8,2.4-3.8
|
||||
c1-1,2.3-1.8,3.7-2.3c1.4-0.5,3-0.8,4.7-0.8c1,0,1.8,0.1,2.6,0.2c0.8,0.1,1.5,0.3,2.1,0.5c0.6,0.2,1.1,0.4,1.5,0.6
|
||||
c0.4,0.2,0.7,0.4,0.9,0.5l-1.5,4.2c-0.7-0.4-1.5-0.7-2.5-1c-0.9-0.3-2-0.4-3.2-0.4c-0.8,0-1.6,0.1-2.3,0.4c-0.7,0.3-1.4,0.7-2,1.3
|
||||
c-0.6,0.6-1,1.3-1.4,2.2s-0.5,2-0.5,3.4c0,1.1,0.1,2,0.3,3c0.2,0.9,0.6,1.7,1.1,2.3c0.5,0.7,1.2,1.2,2,1.6c0.8,0.4,1.8,0.6,3,0.6
|
||||
c0.7,0,1.4,0,2-0.1s1.1-0.2,1.6-0.3c0.5-0.1,0.9-0.3,1.2-0.4c0.4-0.2,0.7-0.3,1-0.4l1.4,4.1c-0.7,0.4-1.7,0.8-3.1,1.2
|
||||
C553,58.2,551.5,58.4,549.8,58.4z M567.3,58.3c-1.4,0-2.6-0.2-3.5-0.5c-0.9-0.3-1.6-0.7-2.1-1.2c-0.5-0.5-0.9-1.2-1.1-1.9
|
||||
c-0.2-0.7-0.3-1.6-0.3-2.5V33.1l4.9-0.8v18.9c0,0.4,0,0.8,0.1,1.2c0.1,0.4,0.2,0.6,0.4,0.9c0.2,0.2,0.5,0.4,0.8,0.6
|
||||
c0.4,0.2,0.8,0.3,1.4,0.3L567.3,58.3z M575.8,57.9h-4.9V40.6h4.9V57.9z M576.2,35.6c0,0.9-0.3,1.6-0.9,2.1c-0.6,0.5-1.3,0.8-2,0.8
|
||||
s-1.5-0.3-2.1-0.8c-0.6-0.5-0.9-1.2-0.9-2.1s0.3-1.6,0.9-2.1c0.6-0.5,1.3-0.8,2.1-0.8s1.5,0.3,2,0.8C575.9,34,576.2,34.7,576.2,35.6
|
||||
z M579.6,49.4c0-1.5,0.2-2.9,0.7-4c0.5-1.2,1.1-2.1,1.9-2.9c0.8-0.8,1.7-1.4,2.6-1.7c1-0.4,2-0.6,3.1-0.6c2.5,0,4.4,0.8,5.8,2.3
|
||||
c1.4,1.5,2.1,3.7,2.1,6.6c0,0.3,0,0.6,0,1c0,0.3,0,0.6-0.1,0.9h-11.2c0.1,1,0.6,1.8,1.4,2.4c0.8,0.6,2,0.9,3.4,0.9
|
||||
c0.9,0,1.8-0.1,2.6-0.2c0.9-0.2,1.6-0.4,2.1-0.6l0.7,4c-0.3,0.1-0.6,0.3-1.1,0.4s-0.9,0.2-1.5,0.3c-0.5,0.1-1.1,0.2-1.7,0.3
|
||||
c-0.6,0.1-1.2,0.1-1.8,0.1c-1.6,0-2.9-0.2-4.1-0.7c-1.1-0.5-2.1-1.1-2.9-1.9c-0.7-0.8-1.3-1.8-1.7-2.9
|
||||
C579.7,51.9,579.6,50.7,579.6,49.4z M591.1,47.5c0-0.4-0.1-0.8-0.2-1.2c-0.1-0.4-0.3-0.7-0.6-1.1c-0.2-0.3-0.6-0.6-1-0.8
|
||||
c-0.4-0.2-0.8-0.3-1.4-0.3c-0.5,0-1,0.1-1.4,0.3c-0.4,0.2-0.7,0.4-1,0.7c-0.3,0.3-0.5,0.7-0.6,1.1c-0.1,0.4-0.2,0.8-0.3,1.2H591.1z
|
||||
M599.7,41.2c0.8-0.2,1.9-0.5,3.2-0.7c1.3-0.2,2.7-0.3,4.2-0.3c1.5,0,2.7,0.2,3.7,0.6c1,0.4,1.8,0.9,2.3,1.6c0.6,0.7,1,1.5,1.2,2.5
|
||||
c0.2,1,0.4,2,0.4,3.2v9.8h-4.9v-9.2c0-1.6-0.2-2.7-0.6-3.4c-0.4-0.7-1.2-1-2.3-1c-0.4,0-0.7,0-1.1,0.1c-0.4,0-0.7,0.1-1.1,0.1v13.4
|
||||
h-4.9V41.2z M618.9,36.3l4.9-0.8v5.1h5.9v4.1h-5.9v6.1c0,1,0.2,1.9,0.5,2.5c0.4,0.6,1.1,0.9,2.2,0.9c0.5,0,1.1,0,1.6-0.1
|
||||
c0.6-0.1,1.1-0.3,1.6-0.4l0.7,3.8c-0.6,0.2-1.3,0.5-2,0.6c-0.7,0.2-1.6,0.3-2.7,0.3c-1.3,0-2.5-0.2-3.3-0.5
|
||||
c-0.9-0.4-1.6-0.9-2.1-1.5c-0.5-0.7-0.9-1.5-1.1-2.4c-0.2-0.9-0.3-1.9-0.3-3.1V36.3z M638.7,54.4c0.9,0,1.5-0.1,1.9-0.3
|
||||
c0.4-0.2,0.6-0.5,0.6-1c0-0.4-0.2-0.7-0.7-1c-0.5-0.3-1.2-0.6-2.2-1c-0.8-0.3-1.5-0.6-2.1-0.9c-0.6-0.3-1.1-0.7-1.6-1.1
|
||||
c-0.4-0.4-0.8-1-1-1.6c-0.2-0.6-0.4-1.3-0.4-2.1c0-1.6,0.6-2.9,1.8-3.9c1.2-0.9,2.9-1.4,5-1.4c1.1,0,2.1,0.1,3,0.3
|
||||
c1,0.2,1.7,0.4,2.3,0.6l-0.9,3.8c-0.6-0.2-1.2-0.4-1.9-0.5c-0.7-0.2-1.4-0.2-2.2-0.2c-1.5,0-2.3,0.4-2.3,1.3c0,0.2,0,0.4,0.1,0.5
|
||||
c0.1,0.2,0.2,0.3,0.4,0.5c0.2,0.1,0.5,0.3,0.8,0.5c0.4,0.2,0.8,0.3,1.3,0.5c1.1,0.4,2,0.8,2.7,1.2c0.7,0.4,1.3,0.8,1.6,1.3
|
||||
c0.4,0.4,0.7,0.9,0.9,1.5c0.2,0.5,0.3,1.2,0.3,1.9c0,1.7-0.6,3-1.9,3.9c-1.3,0.9-3.1,1.3-5.4,1.3c-1.5,0-2.8-0.1-3.9-0.4
|
||||
c-1-0.3-1.7-0.5-2.1-0.7l0.8-4c0.8,0.3,1.7,0.6,2.6,0.8C637,54.3,637.9,54.4,638.7,54.4z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 74 KiB |
|
|
@ -0,0 +1,11 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="198.5" height="77.208" viewBox="0 0 198.5 77.208">
|
||||
<g id="组_3563" data-name="组 3563" transform="translate(-1227.37 -847.8)">
|
||||
<path id="路径_11965" data-name="路径 11965" d="M1260.8,847.8l-33.432,19.3v38.6l33.432,19.3,33.431-19.3V867.1Zm-.019,25.7v38.617l-11.1-6.4V879.912l-11.105,6.411V873.506l22.2-12.819,11.1,6.408Zm22.307,25.768-11.146,6.434V879.977l11.146-6.44Z" transform="translate(0)" fill="#fff"/>
|
||||
<g id="组_3547" data-name="组 3547" transform="translate(1305.38 867.03)">
|
||||
<path id="路径_11966" data-name="路径 11966" d="M1420.274,929.268h-7.98V897.137h-11.756v-6.65h31.067v6.65h-11.331Z" transform="translate(-1400.538 -890.487)" fill="#fff"/>
|
||||
<path id="路径_11967" data-name="路径 11967" d="M1488.756,897.137h-7.448v-6.65h7.448Zm0,32.131h-7.448V900.541h7.448Z" transform="translate(-1444.922 -890.487)" fill="#fff"/>
|
||||
<path id="路径_11968" data-name="路径 11968" d="M1523.531,929.268h-7.979V890.487h7.979V907.51l15.161-17.023h9.416l-15.481,16.7,17.129,22.077h-9.522l-12.714-17.13-3.99,4.149Z" transform="translate(-1463.739 -890.487)" fill="#fff"/>
|
||||
<path id="路径_11969" data-name="路径 11969" d="M1607.519,929.268l-13.087-38.781h8.032l8.619,29.205,8.458-29.205h8.033l-13.3,38.781Z" transform="translate(-1507.085 -890.487)" fill="#fff"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 788.94 405.59"><defs><style>.cls-1{fill:#333;}.cls-2{fill:#fff;}</style></defs><g id="Layer_2" data-name="Layer 2"><g id="Layer_2-2" data-name="Layer 2"><rect class="cls-1" width="788.94" height="405.59"/><path class="cls-2" d="M390.14,258.61h-23V166.12H333.33V147h89.43v19.14H390.14Z"/><path class="cls-2" d="M459.5,166.12H438.07V147H459.5Zm0,92.49H438.07V175.92H459.5Z"/><path class="cls-2" d="M505.44,258.61h-23V147h23v49l43.64-49h27.1l-44.56,48.08,49.31,63.55H553.52l-36.6-49.31-11.48,11.95Z"/><path class="cls-2" d="M622.42,258.61,584.75,147h23.12l24.81,84.07L657,147h23.12L641.87,258.61Z"/><polygon class="cls-2" points="204.78 129.97 141.94 166.24 141.94 202.51 173.37 184.37 173.37 257.4 204.78 275.52 204.78 166.23 236.19 148.1 204.78 129.97"/><polygon class="cls-2" points="236.18 257.41 267.59 239.28 267.59 166.23 267.55 166.21 236.18 184.32 236.18 257.41"/><path class="cls-2" d="M109.66,146.73l-.87.51V258.35L205,313.91l95.36-55.05.87-.51V147.24L205,91.68Zm7.73,106.66V152.2L205,101.6l87.63,50.6V253.39L205,304Z"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
|
|
@ -1 +1,11 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 788.94 405.59"><defs><style>.cls-1{fill:#333;}.cls-2{fill:#fff;}</style></defs><g id="Layer_2" data-name="Layer 2"><g id="Layer_2-2" data-name="Layer 2"><rect class="cls-1" width="788.94" height="405.59"/><path class="cls-2" d="M390.14,258.61h-23V166.12H333.33V147h89.43v19.14H390.14Z"/><path class="cls-2" d="M459.5,166.12H438.07V147H459.5Zm0,92.49H438.07V175.92H459.5Z"/><path class="cls-2" d="M505.44,258.61h-23V147h23v49l43.64-49h27.1l-44.56,48.08,49.31,63.55H553.52l-36.6-49.31-11.48,11.95Z"/><path class="cls-2" d="M622.42,258.61,584.75,147h23.12l24.81,84.07L657,147h23.12L641.87,258.61Z"/><polygon class="cls-2" points="204.78 129.97 141.94 166.24 141.94 202.51 173.37 184.37 173.37 257.4 204.78 275.52 204.78 166.23 236.19 148.1 204.78 129.97"/><polygon class="cls-2" points="236.18 257.41 267.59 239.28 267.59 166.23 267.55 166.21 236.18 184.32 236.18 257.41"/><path class="cls-2" d="M109.66,146.73l-.87.51V258.35L205,313.91l95.36-55.05.87-.51V147.24L205,91.68Zm7.73,106.66V152.2L205,101.6l87.63,50.6V253.39L205,304Z"/></g></g></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="198.5" height="77.208" viewBox="0 0 198.5 77.208">
|
||||
<g id="组_3563" data-name="组 3563" transform="translate(-1227.37 -847.8)">
|
||||
<path id="路径_11965" data-name="路径 11965" d="M1260.8,847.8l-33.432,19.3v38.6l33.432,19.3,33.431-19.3V867.1Zm-.019,25.7v38.617l-11.1-6.4V879.912l-11.105,6.411V873.506l22.2-12.819,11.1,6.408Zm22.307,25.768-11.146,6.434V879.977l11.146-6.44Z" transform="translate(0)" fill="#fff"/>
|
||||
<g id="组_3547" data-name="组 3547" transform="translate(1305.38 867.03)">
|
||||
<path id="路径_11966" data-name="路径 11966" d="M1420.274,929.268h-7.98V897.137h-11.756v-6.65h31.067v6.65h-11.331Z" transform="translate(-1400.538 -890.487)" fill="#fff"/>
|
||||
<path id="路径_11967" data-name="路径 11967" d="M1488.756,897.137h-7.448v-6.65h7.448Zm0,32.131h-7.448V900.541h7.448Z" transform="translate(-1444.922 -890.487)" fill="#fff"/>
|
||||
<path id="路径_11968" data-name="路径 11968" d="M1523.531,929.268h-7.979V890.487h7.979V907.51l15.161-17.023h9.416l-15.481,16.7,17.129,22.077h-9.522l-12.714-17.13-3.99,4.149Z" transform="translate(-1463.739 -890.487)" fill="#fff"/>
|
||||
<path id="路径_11969" data-name="路径 11969" d="M1607.519,929.268l-13.087-38.781h8.032l8.619,29.205,8.458-29.205h8.033l-13.3,38.781Z" transform="translate(-1507.085 -890.487)" fill="#fff"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.3 KiB |