1
0
Fork 0
mirror of https://github.com/warmcat/libwebsockets.git synced 2025-03-09 00:00:04 +01:00

abstract: allow completely generic instantiation and destruction

This commit is contained in:
Andy Green 2019-06-22 06:59:49 +01:00
parent b3d6e28bc7
commit 0ada40ce92
24 changed files with 1953 additions and 660 deletions

View file

@ -354,6 +354,7 @@ endif()
if (LWS_WITH_GENERIC_SESSIONS)
set(LWS_WITH_SQLITE3 1)
set(LWS_WITH_SMTP 1)
set(LWS_WITH_STRUCT_SQLITE3 1)
endif()
if (LWS_WITH_ESP32)
@ -655,6 +656,13 @@ if ("${LWS_MAX_SMP}" STREQUAL "")
set(LWS_MAX_SMP 1)
endif()
# using any abstract protocol enables LWS_WITH_ABSTRACT
if (LWS_WITH_SMTP)
set(LWS_WITH_ABSTRACT 1)
endif()
if (MINGW)
set(LWS_MINGW_SUPPORT 1)
@ -916,8 +924,11 @@ if (LWS_WITH_NETWORK)
lib/core-net/wsi-timeout.c
lib/core-net/adopt.c
lib/roles/pipe/ops-pipe.c
lib/abstract/abstract.c
)
if (LWS_WITH_ABSTRACT)
list(APPEND SOURCES
lib/abstract/abstract.c)
endif()
if (LWS_WITH_STATS)
list(APPEND SOURCES
@ -970,9 +981,13 @@ endif()
if (LWS_ROLE_RAW)
list(APPEND SOURCES
lib/abstract/transports/raw-skt.c
lib/roles/raw-skt/ops-raw-skt.c
lib/roles/raw-file/ops-raw-file.c)
if (LWS_WITH_ABSTRACT)
list(APPEND SOURCES
lib/abstract/transports/raw-skt.c)
endif()
endif()
if (LWS_ROLE_RAW_PROXY)
@ -1282,9 +1297,14 @@ if (LWS_WITH_LEJP_CONF AND LWS_WITH_NETWORK AND NOT LWS_PLAT_OPTEE)
)
endif()
if (LWS_WITH_ABSTRACT)
list(APPEND SOURCES
lib/abstract/transports/unit-test.c)
endif()
if (LWS_WITH_SMTP)
list(APPEND SOURCES
lib/abstract/smtp/smtp.c)
lib/abstract/protocols/smtp/smtp.c)
endif()
if (LWS_WITH_RANGES)
@ -2602,6 +2622,7 @@ message(" LWS_HAVE__ATOI64 = ${LWS_HAVE__ATOI64}")
message(" LWS_HAVE_STAT32I64 = ${LWS_HAVE_STAT32I64}")
message(" LWS_HAS_INTPTR_T = ${LWS_HAS_INTPTR_T}")
message(" LWS_WITH_EXPORT_LWSTARGETS = ${LWS_WITH_EXPORT_LWSTARGETS}")
message(" LWS_WITH_ABSTRACT = ${LWS_WITH_ABSTRACT}")
message("---------------------------------------------------------------------")

View file

@ -79,6 +79,7 @@
#cmakedefine LWS_SHA1_USE_OPENSSL_NAME
#cmakedefine LWS_SSL_CLIENT_USE_OS_CA_CERTS
#cmakedefine LWS_SSL_SERVER_WITH_ECDH_CERT
#cmakedefine LWS_WITH_ABSTRACT
#cmakedefine LWS_WITH_ACCESS_LOG
#cmakedefine LWS_WITH_ACME
#cmakedefine LWS_WITH_BORINGSSL

View file

@ -1,7 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg width="135.09mm" height="108.45mm" version="1.1" viewBox="0 0 135.09 108.45" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<svg width="189.59mm" height="108.24mm" version="1.1" viewBox="0 0 189.59 108.24" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<defs>
<marker id="Arrow1Send-70-8" overflow="visible" orient="auto">
<path transform="matrix(-.2 0 0 -.2 -1.2 0)" d="m0 0 5-5-17.5 5 17.5 5z" fill-rule="evenodd" stroke="#000" stroke-width="1pt"/>
</marker>
<marker id="Arrow1Send-70" overflow="visible" orient="auto">
<path transform="matrix(-.2 0 0 -.2 -1.2 0)" d="m0 0 5-5-17.5 5 17.5 5z" fill-rule="evenodd" stroke="#000" stroke-width="1pt"/>
</marker>
<marker id="Arrow1Send-7-0" overflow="visible" orient="auto">
<path transform="matrix(-.2 0 0 -.2 -1.2 0)" d="m0 0 5-5-17.5 5 17.5 5z" fill-rule="evenodd" stroke="#000" stroke-width="1pt"/>
</marker>
<marker id="Arrow1Send-6" overflow="visible" orient="auto">
<path transform="matrix(-.2 0 0 -.2 -1.2 0)" d="m0 0 5-5-17.5 5 17.5 5z" fill-rule="evenodd" stroke="#000" stroke-width="1pt"/>
</marker>
<marker id="Arrow1Send-7" overflow="visible" orient="auto">
<path transform="matrix(-.2 0 0 -.2 -1.2 0)" d="m0 0 5-5-17.5 5 17.5 5z" fill-rule="evenodd" stroke="#000" stroke-width="1pt"/>
</marker>
<marker id="Arrow1Send" overflow="visible" orient="auto">
<path transform="matrix(-.2 0 0 -.2 -1.2 0)" d="m0 0 5-5-17.5 5 17.5 5z" fill-rule="evenodd" stroke="#000" stroke-width="1pt"/>
</marker>
@ -18,208 +33,316 @@
</cc:Work>
</rdf:RDF>
</metadata>
<g transform="translate(685.16 63.384)">
<path d="m-682.91-61.132h130.59v103.94h-130.59z" filter="url(#filter5390)"/>
<path d="m-683.76-62.077h130.59v103.94h-130.59z" fill="#fff"/>
<path d="m-638.59-45.824h40.632v75.595h-40.632z" fill="#b3b3b3" stroke-width=".28911"/>
<path d="m-623.19-7.1763h54.618v33.451h-54.618z" fill="#999" stroke="#999" stroke-width=".22298"/>
<path d="m-667.79-43.462h62.177v33.451h-62.177z" fill="#ccc" stroke-width=".23791"/>
<g transform="translate(673.86 359.62)">
<path transform="matrix(1.4034 0 0 .97704 -753.56 -386.92)" d="m59.044 32.54h130.59v103.94h-130.59z" filter="url(#filter5390)"/>
<path d="m-672.06-359.62h182.71v103.94h-182.71z" fill="#fff"/>
<path d="m-597.49-344.31h40.632v52.35h-40.632z" fill="#b3b3b3" stroke-width=".24059"/>
<path d="m-551.66-344.59h54.618v33.451h-54.618z" fill="#999" stroke="#999" stroke-width=".22298"/>
<path d="m-663.73-344.21h62.177v33.451h-62.177z" fill="#ccc" stroke-width=".23791"/>
<g>
<g stroke-width=".15691" aria-label="lws_abstract_t">
<path d="m-637.65-49.09q0 0.21968 0.0565 0.31383 0.0628 0.09415 0.16947 0.09415 0.1318 0 0.30755-0.06904l0.0439 0.36404q-0.0816 0.05021-0.23223 0.0816-0.14436 0.03138-0.26362 0.03138-0.2385 0-0.38914-0.14436-0.14436-0.15064-0.14436-0.52095v-3.7973h0.45191z"/>
<path d="m-635-51.482 0.55861 1.8328 0.11298 0.60255h0.0125l0.0942-0.6151 0.42681-1.8202h0.4268l-0.83478 3.2073h-0.25734l-0.63393-2.0587-0.0879-0.52723h-0.0126l-0.0879 0.53351-0.61511 2.0524h-0.25733l-0.85989-3.2073h0.48329l0.4833 1.8265 0.0753 0.60882h0.0125l0.11298-0.62138 0.51467-1.8139z"/>
<path d="m-633.02-48.858q0.12553 0.07532 0.295 0.13181 0.17574 0.05021 0.35776 0.05021 0.20713 0 0.35149-0.10042 0.14436-0.1067 0.14436-0.33893 0-0.19457-0.0879-0.3201-0.0879-0.12553-0.22596-0.22596-0.13181-0.10042-0.28872-0.18202-0.15691-0.08787-0.295-0.20713-0.1318-0.11925-0.21968-0.28244-0.0879-0.16319-0.0879-0.41425 0-0.4017 0.2134-0.60255 0.21968-0.20713 0.61511-0.20713 0.25733 0 0.44563 0.05021 0.1883 0.04393 0.32638 0.12553l-0.11925 0.37659q-0.11926-0.06276-0.27617-0.10042-0.15692-0.04393-0.32011-0.04393-0.22595 0-0.33265 0.09415-0.10043 0.09415-0.10043 0.295 0 0.15691 0.0879 0.26989 0.0879 0.1067 0.21968 0.20085 0.13809 0.08787 0.295 0.18202 0.15692 0.09415 0.28872 0.22596 0.13809 0.12553 0.22596 0.30755 0.0879 0.17574 0.0879 0.44564 0 0.17574-0.0565 0.33266t-0.17574 0.27617q-0.11298 0.11298-0.28872 0.18202-0.16947 0.06904-0.4017 0.06904-0.27617 0-0.47702-0.05649-0.20085-0.05021-0.33893-0.13808z"/>
<path d="m-631.22-47.465h2.0964v0.40798h-2.0964z"/>
<path d="m-628.79-51.293q0.18202-0.11298 0.43936-0.17574 0.26362-0.06277 0.55234-0.06277 0.26361 0 0.42053 0.0816 0.16319 0.07532 0.25106 0.2134 0.0942 0.13181 0.11925 0.30755 0.0314 0.16947 0.0314 0.35776 0 0.37659-0.0188 0.73436-0.0126 0.35776-0.0126 0.67787 0 0.23851 0.0126 0.44564 0.0188 0.20085 0.0628 0.38287h-0.34521l-0.1067-0.37032h-0.0251q-0.0941 0.16319-0.27616 0.28244-0.18202 0.11925-0.48957 0.11925-0.33894 0-0.55862-0.23223-0.2134-0.23851-0.2134-0.65276 0-0.26989 0.0879-0.45191 0.0942-0.18202 0.25734-0.295 0.16947-0.11298 0.39542-0.15691 0.23224-0.05021 0.51468-0.05021 0.0628 0 0.12553 0 0.0628 0 0.13181 0.0063 0.0188-0.19457 0.0188-0.34521 0-0.35776-0.1067-0.50212-0.1067-0.14436-0.38915-0.14436-0.17574 0-0.38287 0.05649-0.20712 0.05021-0.34521 0.13181zm1.362 1.5189q-0.0628-0.0063-0.12553-0.0063-0.0628-0.0063-0.12553-0.0063-0.15063 0-0.29499 0.02511-0.14437 0.02511-0.25734 0.08787-0.11298 0.06277-0.18202 0.16947-0.0628 0.1067-0.0628 0.26989 0 0.25106 0.11926 0.38915 0.12553 0.13808 0.3201 0.13808 0.26361 0 0.40798-0.12553 0.14436-0.12553 0.20084-0.27617z"/>
<path d="m-626.24-52.737h0.45191v1.4938h0.0188q0.25734-0.31383 0.68414-0.31383 0.48329 0 0.7218 0.38287 0.24479 0.38287 0.24479 1.2114 0 0.84733-0.32638 1.2616-0.32011 0.41425-0.9101 0.41425-0.28872 0-0.52723-0.06277-0.23851-0.06904-0.35776-0.15691zm0.45191 3.9354q0.0879 0.05021 0.2134 0.0816 0.13181 0.02511 0.27617 0.02511 0.32638 0 0.51467-0.30755 0.19458-0.31383 0.19458-0.96031 0-0.26989-0.0377-0.48329-0.0314-0.21968-0.1067-0.37659-0.069-0.15691-0.1883-0.23851-0.11298-0.08787-0.27617-0.08787-0.22595 0-0.37659 0.13808-0.14436 0.13181-0.2134 0.36404z"/>
<path d="m-623.57-48.858q0.12554 0.07532 0.295 0.13181 0.17575 0.05021 0.35777 0.05021 0.20712 0 0.35148-0.10042 0.14436-0.1067 0.14436-0.33893 0-0.19457-0.0879-0.3201-0.0879-0.12553-0.22595-0.22596-0.13181-0.10042-0.28873-0.18202-0.15691-0.08787-0.29499-0.20713-0.13181-0.11925-0.21968-0.28244-0.0879-0.16319-0.0879-0.41425 0-0.4017 0.2134-0.60255 0.21968-0.20713 0.6151-0.20713 0.25734 0 0.44563 0.05021 0.1883 0.04393 0.32638 0.12553l-0.11925 0.37659q-0.11925-0.06276-0.27617-0.10042-0.15691-0.04393-0.3201-0.04393-0.22596 0-0.33266 0.09415-0.10042 0.09415-0.10042 0.295 0 0.15691 0.0879 0.26989 0.0879 0.1067 0.21968 0.20085 0.13808 0.08787 0.295 0.18202 0.15691 0.09415 0.28872 0.22596 0.13808 0.12553 0.22595 0.30755 0.0879 0.17574 0.0879 0.44564 0 0.17574-0.0565 0.33266t-0.17574 0.27617q-0.11298 0.11298-0.28872 0.18202-0.16947 0.06904-0.4017 0.06904-0.27617 0-0.47702-0.05649-0.20085-0.05021-0.33893-0.13808z"/>
<path d="m-621.71-51.482h0.38287v-0.62138l0.45191-0.14436v0.76574h0.67786v0.40798h-0.67786v1.8704q0 0.27617 0.0628 0.4017 0.069 0.11925 0.21968 0.11925 0.12553 0 0.2134-0.02511 0.0942-0.03138 0.20085-0.07532l0.0879 0.35776q-0.13809 0.06904-0.30756 0.1067-0.16319 0.04394-0.34521 0.04394-0.31382 0-0.45191-0.20085-0.1318-0.20713-0.1318-0.66531v-1.9332h-0.38287z"/>
<path d="m-619.67-51.482h0.32011l0.0816 0.33266h0.0188q0.0879-0.18202 0.22596-0.28244 0.14436-0.1067 0.34521-0.1067 0.14436 0 0.32638 0.05649l-0.0879 0.45819q-0.16319-0.05649-0.28872-0.05649-0.20085 0-0.32638 0.11925-0.12554 0.11298-0.16319 0.30755v2.3098h-0.45192z"/>
<path d="m-617.99-51.293q0.18201-0.11298 0.43935-0.17574 0.26362-0.06277 0.55234-0.06277 0.26361 0 0.42053 0.0816 0.16319 0.07532 0.25106 0.2134 0.0941 0.13181 0.11925 0.30755 0.0314 0.16947 0.0314 0.35776 0 0.37659-0.0188 0.73436-0.0126 0.35776-0.0126 0.67787 0 0.23851 0.0126 0.44564 0.0188 0.20085 0.0628 0.38287h-0.34521l-0.1067-0.37032h-0.0251q-0.0941 0.16319-0.27616 0.28244-0.18202 0.11925-0.48957 0.11925-0.33894 0-0.55862-0.23223-0.2134-0.23851-0.2134-0.65276 0-0.26989 0.0879-0.45191 0.0942-0.18202 0.25734-0.295 0.16947-0.11298 0.39542-0.15691 0.23224-0.05021 0.51468-0.05021 0.0628 0 0.12553 0 0.0628 0 0.13181 0.0063 0.0188-0.19457 0.0188-0.34521 0-0.35776-0.1067-0.50212-0.1067-0.14436-0.38915-0.14436-0.17574 0-0.38287 0.05649-0.20712 0.05021-0.34521 0.13181zm1.362 1.5189q-0.0628-0.0063-0.12554-0.0063-0.0628-0.0063-0.12553-0.0063-0.15063 0-0.29499 0.02511t-0.25734 0.08787q-0.11298 0.06277-0.18202 0.16947-0.0628 0.1067-0.0628 0.26989 0 0.25106 0.11926 0.38915 0.12553 0.13808 0.3201 0.13808 0.26362 0 0.40798-0.12553t0.20085-0.27617z"/>
<path d="m-613.71-48.5q-0.15691 0.11925-0.35776 0.17574-0.20085 0.05649-0.42053 0.05649-0.30127 0-0.5084-0.11298-0.20712-0.11925-0.33893-0.33266-0.12553-0.21968-0.1883-0.52095-0.0565-0.30755-0.0565-0.67787 0-0.8034 0.28245-1.2239 0.28872-0.42053 0.82222-0.42053 0.24479 0 0.42053 0.04394 0.17575 0.04394 0.30128 0.11298l-0.12553 0.39542q-0.25107-0.14436-0.54606-0.14436-0.33894 0-0.51468 0.30127-0.16947 0.295-0.16947 0.9352 0 0.25734 0.0377 0.48329t0.12553 0.39542q0.0879 0.16319 0.22596 0.26362 0.13808 0.09415 0.34521 0.09415 0.16319 0 0.30127-0.05649 0.14436-0.05649 0.23224-0.13181z"/>
<path d="m-613.53-51.482h0.38286v-0.62138l0.45192-0.14436v0.76574h0.67786v0.40798h-0.67786v1.8704q0 0.27617 0.0628 0.4017 0.069 0.11925 0.21968 0.11925 0.12553 0 0.2134-0.02511 0.0942-0.03138 0.20085-0.07532l0.0879 0.35776q-0.13808 0.06904-0.30755 0.1067-0.16319 0.04394-0.34521 0.04394-0.31382 0-0.45191-0.20085-0.13181-0.20713-0.13181-0.66531v-1.9332h-0.38286z"/>
<path d="m-611.85-47.465h2.0964v0.40798h-2.0964z"/>
<path d="m-609.7-51.482h0.38286v-0.62138l0.45192-0.14436v0.76574h0.67786v0.40798h-0.67786v1.8704q0 0.27617 0.0628 0.4017 0.069 0.11925 0.21968 0.11925 0.12553 0 0.2134-0.02511 0.0942-0.03138 0.20085-0.07532l0.0879 0.35776q-0.13808 0.06904-0.30755 0.1067-0.16319 0.04394-0.34521 0.04394-0.31382 0-0.45191-0.20085-0.13181-0.20713-0.13181-0.66531v-1.9332h-0.38286z"/>
<g stroke-width=".15691" aria-label="lws_abs_t">
<path d="m-596.55-347.57q0 0.21968 0.0565 0.31382 0.0628 0.0942 0.16947 0.0942 0.13181 0 0.30755-0.069l0.0439 0.36404q-0.0816 0.0502-0.23223 0.0816-0.14436 0.0314-0.26361 0.0314-0.23851 0-0.38915-0.14436-0.14436-0.15064-0.14436-0.52096v-3.7973h0.45191z"/>
<path d="m-593.89-349.96 0.55861 1.8328 0.11298 0.60255h0.0126l0.0941-0.6151 0.42681-1.8202h0.4268l-0.83478 3.2073h-0.25733l-0.63394-2.0587-0.0879-0.52723h-0.0126l-0.0879 0.53351-0.6151 2.0524h-0.25734l-0.85989-3.2073h0.4833l0.48329 1.8265 0.0753 0.60882h0.0125l0.11298-0.62138 0.51468-1.8139z"/>
<path d="m-591.92-347.34q0.12553 0.0753 0.295 0.13181 0.17574 0.0502 0.35776 0.0502 0.20713 0 0.35149-0.10043 0.14436-0.1067 0.14436-0.33893 0-0.19457-0.0879-0.3201t-0.22596-0.22596q-0.1318-0.10042-0.28872-0.18202-0.15691-0.0879-0.29499-0.20713-0.13181-0.11925-0.21968-0.28244-0.0879-0.16319-0.0879-0.41425 0-0.4017 0.21341-0.60255 0.21968-0.20713 0.6151-0.20713 0.25734 0 0.44563 0.0502 0.1883 0.0439 0.32638 0.12553l-0.11925 0.37659q-0.11926-0.0628-0.27617-0.10042-0.15691-0.0439-0.3201-0.0439-0.22596 0-0.33266 0.0942-0.10042 0.0942-0.10042 0.295 0 0.15691 0.0879 0.26989 0.0879 0.1067 0.21968 0.20085 0.13808 0.0879 0.29499 0.18202 0.15692 0.0941 0.28873 0.22595 0.13808 0.12553 0.22595 0.30755 0.0879 0.17575 0.0879 0.44564 0 0.17574-0.0565 0.33265-0.0565 0.15692-0.17574 0.27617-0.11298 0.11298-0.28872 0.18202-0.16947 0.069-0.4017 0.069-0.27617 0-0.47702-0.0565-0.20085-0.0502-0.33893-0.13808z"/>
<path d="m-590.12-345.95h2.0964v0.40798h-2.0964z"/>
<path d="m-587.68-349.77q0.18202-0.11298 0.43936-0.17574 0.26361-0.0628 0.55233-0.0628 0.26362 0 0.42053 0.0816 0.16319 0.0753 0.25106 0.2134 0.0942 0.13181 0.11926 0.30755 0.0314 0.16947 0.0314 0.35776 0 0.37659-0.0188 0.73436-0.0126 0.35776-0.0126 0.67786 0 0.23851 0.0126 0.44564 0.0188 0.20085 0.0628 0.38287h-0.34521l-0.1067-0.37032h-0.0251q-0.0942 0.16319-0.27617 0.28245-0.18202 0.11925-0.48957 0.11925-0.33894 0-0.55861-0.23223-0.21341-0.23851-0.21341-0.65276 0-0.26989 0.0879-0.45191 0.0942-0.18202 0.25734-0.295 0.16947-0.11298 0.39543-0.15691 0.23223-0.0502 0.51467-0.0502 0.0628 0 0.12553 0 0.0628 0 0.13181 6e-3 0.0188-0.19457 0.0188-0.34521 0-0.35776-0.1067-0.50212t-0.38915-0.14436q-0.17574 0-0.38287 0.0565-0.20712 0.0502-0.34521 0.13181zm1.362 1.5189q-0.0628-6e-3 -0.12553-6e-3 -0.0628-6e-3 -0.12553-6e-3 -0.15064 0-0.295 0.0251t-0.25734 0.0879-0.18202 0.16946q-0.0628 0.10671-0.0628 0.2699 0 0.25106 0.11926 0.38914 0.12553 0.13809 0.3201 0.13809 0.26362 0 0.40798-0.12554 0.14436-0.12553 0.20085-0.27616z"/>
<path d="m-585.14-351.22h0.45191v1.4938h0.0188q0.25734-0.31383 0.68414-0.31383 0.4833 0 0.72181 0.38287 0.24478 0.38287 0.24478 1.2114 0 0.84733-0.32638 1.2616-0.3201 0.41425-0.9101 0.41425-0.28872 0-0.52723-0.0628-0.23851-0.069-0.35776-0.15692zm0.45191 3.9354q0.0879 0.0502 0.2134 0.0816 0.13181 0.0251 0.27617 0.0251 0.32638 0 0.51468-0.30755 0.19457-0.31383 0.19457-0.96031 0-0.2699-0.0377-0.4833-0.0314-0.21968-0.1067-0.37659-0.069-0.15691-0.1883-0.23851-0.11297-0.0879-0.27616-0.0879-0.22596 0-0.3766 0.13808-0.14436 0.13181-0.2134 0.36404z"/>
<path d="m-582.47-347.34q0.12553 0.0753 0.29499 0.13181 0.17575 0.0502 0.35777 0.0502 0.20712 0 0.35148-0.10043 0.14436-0.1067 0.14436-0.33893 0-0.19457-0.0879-0.3201t-0.22595-0.22596q-0.13181-0.10042-0.28872-0.18202-0.15692-0.0879-0.295-0.20713-0.13181-0.11925-0.21968-0.28244-0.0879-0.16319-0.0879-0.41425 0-0.4017 0.2134-0.60255 0.21968-0.20713 0.6151-0.20713 0.25734 0 0.44564 0.0502 0.18829 0.0439 0.32638 0.12553l-0.11926 0.37659q-0.11925-0.0628-0.27617-0.10042-0.15691-0.0439-0.3201-0.0439-0.22595 0-0.33266 0.0942-0.10042 0.0942-0.10042 0.295 0 0.15691 0.0879 0.26989 0.0879 0.1067 0.21968 0.20085 0.13808 0.0879 0.295 0.18202 0.15691 0.0941 0.28872 0.22595 0.13808 0.12553 0.22595 0.30755 0.0879 0.17575 0.0879 0.44564 0 0.17574-0.0565 0.33265-0.0565 0.15692-0.17575 0.27617-0.11297 0.11298-0.28872 0.18202-0.16946 0.069-0.4017 0.069-0.27616 0-0.47701-0.0565-0.20085-0.0502-0.33894-0.13808z"/>
<path d="m-580.67-345.95h2.0964v0.40798h-2.0964z"/>
<path d="m-578.51-349.96h0.38287v-0.62138l0.45191-0.14436v0.76574h0.67786v0.40798h-0.67786v1.8704q0 0.27617 0.0628 0.4017 0.069 0.11925 0.21968 0.11925 0.12553 0 0.2134-0.0251 0.0942-0.0314 0.20085-0.0753l0.0879 0.35776q-0.13809 0.069-0.30756 0.1067-0.16319 0.0439-0.34521 0.0439-0.31382 0-0.45191-0.20085-0.1318-0.20713-0.1318-0.66532v-1.9332h-0.38287z"/>
</g>
<g>
<g dominant-baseline="auto" stroke-width=".10741" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal" aria-label="tx client_conn close ask_for_writeable set_timeout state">
<path d="m-634.61-40.733h0.26209v-0.42536l0.30935-0.09882v0.52418h0.46403v0.27928h-0.46403v1.2804q0 0.18905 0.043 0.27498 0.0473 0.08163 0.15038 0.08163 0.0859 0 0.14608-0.01719 0.0644-0.02148 0.13749-0.05156l0.0602 0.2449q-0.0945 0.04726-0.21053 0.07304-0.11171 0.03008-0.23631 0.03008-0.21483 0-0.30935-0.13749-0.0902-0.14179-0.0902-0.45543v-1.3233h-0.26209z"/>
<path d="m-632.83-39.684-0.56715-1.0484h0.3695l0.31795 0.6144 0.0859 0.24061 0.0902-0.24061 0.32653-0.6144h0.33943l-0.57144 1.0312 0.60581 1.1171h-0.35231l-0.36091-0.67456-0.0945-0.25779-0.0988 0.25779-0.36091 0.67456h-0.33942z"/>
<path d="m-633.21-33.321q-0.10742 0.08163-0.24491 0.1203-0.13749 0.03867-0.28786 0.03867-0.20624 0-0.34802-0.07734-0.14179-0.08163-0.23202-0.22772-0.0859-0.15038-0.12889-0.35661-0.0387-0.21053-0.0387-0.46403 0-0.54996 0.19334-0.83783 0.19764-0.28787 0.56285-0.28787 0.16756 0 0.28787 0.03008 0.1203 0.03008 0.20623 0.07734l-0.0859 0.27068q-0.17186-0.09882-0.3738-0.09882-0.23201 0-0.35232 0.20623-0.116 0.20194-0.116 0.64018 0 0.17616 0.0258 0.33083 0.0258 0.15468 0.0859 0.27068 0.0601 0.11171 0.15467 0.18046 0.0945 0.06445 0.23631 0.06445 0.11171 0 0.20624-0.03867 0.0988-0.03867 0.15897-0.09023z"/>
<path d="m-632.54-33.725q0 0.15038 0.0387 0.21483 0.043 0.06445 0.11601 0.06445 0.0902 0 0.21053-0.04726l0.0301 0.2492q-0.0558 0.03437-0.15897 0.05586-0.0988 0.02148-0.18045 0.02148-0.16327 0-0.26639-0.09882-0.0988-0.10312-0.0988-0.35661v-2.5994h0.30935z"/>
<path d="m-631.82-35.362h0.30935v2.1483h-0.30935zm-0.0559-0.65307q0-0.10312 0.0559-0.16756 0.0602-0.06445 0.15467-0.06445 0.0945 0 0.15468 0.06445 0.0644 0.06015 0.0644 0.16756 0 0.10312-0.0644 0.16327-0.0602 0.05586-0.15468 0.05586-0.0945 0-0.15467-0.06015-0.0559-0.06015-0.0559-0.15897z"/>
<path d="m-629.66-33.36q-0.10312 0.09452-0.26209 0.14608-0.15897 0.05156-0.33513 0.05156-0.20194 0-0.35232-0.07734-0.14608-0.08163-0.2449-0.22772-0.0945-0.15038-0.14178-0.35661-0.043-0.20623-0.043-0.46403 0-0.54996 0.20194-0.83783 0.20193-0.28787 0.57144-0.28787 0.1203 0 0.23631 0.03008 0.1203 0.03008 0.21482 0.1203 0.0945 0.09023 0.15038 0.2535 0.0602 0.16327 0.0602 0.42536 0 0.07304-9e-3 0.15897-4e-3 0.08163-0.0129 0.17186h-1.0913q0 0.18475 0.0301 0.33513t0.0945 0.25779q0.0644 0.10312 0.16327 0.16327 0.10312 0.05586 0.25349 0.05586 0.11601 0 0.22772-0.04297 0.11601-0.04297 0.17616-0.10312zm-0.24061-1.1515q9e-3 -0.32224-0.0902-0.47262-0.0988-0.15038-0.27069-0.15038-0.19764 0-0.31364 0.15038-0.11601 0.15038-0.13749 0.47262z"/>
<path d="m-628.07-33.214v-1.3104q0-0.32224-0.0773-0.46403-0.0731-0.14608-0.26639-0.14608-0.17186 0-0.28357 0.10312t-0.16327 0.2535v1.5639h-0.30935v-2.1483h0.22342l0.0558 0.22772h0.0129q0.0816-0.11601 0.21913-0.19764 0.14178-0.08163 0.33513-0.08163 0.13749 0 0.2406 0.03867 0.10742 0.03867 0.17616 0.13319 0.073 0.09023 0.10742 0.2449 0.0387 0.15468 0.0387 0.39099v1.3921z"/>
<path d="m-627.5-35.362h0.26209v-0.42536l0.30935-0.09882v0.52418h0.46403v0.27928h-0.46403v1.2804q0 0.18905 0.043 0.27498 0.0473 0.08163 0.15037 0.08163 0.0859 0 0.14609-0.01719 0.0644-0.02148 0.13749-0.05156l0.0602 0.2449q-0.0945 0.04726-0.21053 0.07304-0.11171 0.03008-0.23631 0.03008-0.21483 0-0.30935-0.13749-0.0902-0.14179-0.0902-0.45543v-1.3233h-0.26209z"/>
<path d="m-626.35-32.612h1.435v0.27928h-1.435z"/>
<path d="m-623.48-33.321q-0.10742 0.08163-0.24491 0.1203-0.13748 0.03867-0.28786 0.03867-0.20624 0-0.34802-0.07734-0.14179-0.08163-0.23202-0.22772-0.0859-0.15038-0.12889-0.35661-0.0387-0.21053-0.0387-0.46403 0-0.54996 0.19334-0.83783 0.19764-0.28787 0.56285-0.28787 0.16756 0 0.28787 0.03008 0.1203 0.03008 0.20623 0.07734l-0.0859 0.27068q-0.17186-0.09882-0.3738-0.09882-0.23201 0-0.35231 0.20623-0.11601 0.20194-0.11601 0.64018 0 0.17616 0.0258 0.33083 0.0258 0.15468 0.0859 0.27068 0.0602 0.11171 0.15467 0.18046 0.0945 0.06445 0.23631 0.06445 0.11171 0 0.20624-0.03867 0.0988-0.03867 0.15897-0.09023z"/>
<path d="m-623.31-34.288q0-0.58003 0.19764-0.85072 0.20194-0.27498 0.57144-0.27498 0.39528 0 0.58003 0.27928 0.18905 0.27928 0.18905 0.84642 0 0.58433-0.20194 0.85501-0.20193 0.27068-0.56714 0.27068-0.39528 0-0.58433-0.27928-0.18475-0.27928-0.18475-0.84642zm0.32224 0q0 0.18905 0.0215 0.34372 0.0258 0.15468 0.0773 0.26639 0.0559 0.11171 0.14179 0.17616 0.0859 0.06015 0.20623 0.06015 0.22342 0 0.33513-0.19764 0.11171-0.20194 0.11171-0.64878 0-0.18475-0.0258-0.33943-0.0215-0.15897-0.0773-0.27068-0.0516-0.11171-0.13749-0.17186-0.0859-0.06445-0.20623-0.06445-0.21912 0-0.33513 0.20194-0.11171 0.20194-0.11171 0.64448z"/>
<path d="m-620.26-33.214v-1.3104q0-0.32224-0.0773-0.46403-0.073-0.14608-0.26638-0.14608-0.17187 0-0.28358 0.10312t-0.16326 0.2535v1.5639h-0.30935v-2.1483h0.22342l0.0558 0.22772h0.0129q0.0816-0.11601 0.21912-0.19764 0.14179-0.08163 0.33513-0.08163 0.13749 0 0.24061 0.03867 0.10741 0.03867 0.17616 0.13319 0.073 0.09023 0.10741 0.2449 0.0387 0.15468 0.0387 0.39099v1.3921z"/>
<path d="m-618.37-33.214v-1.3104q0-0.32224-0.0773-0.46403-0.073-0.14608-0.26639-0.14608-0.17186 0-0.28357 0.10312t-0.16327 0.2535v1.5639h-0.30935v-2.1483h0.22342l0.0559 0.22772h0.0129q0.0816-0.11601 0.21912-0.19764 0.14179-0.08163 0.33513-0.08163 0.13749 0 0.24061 0.03867 0.10741 0.03867 0.17616 0.13319 0.073 0.09023 0.10741 0.2449 0.0387 0.15468 0.0387 0.39099v1.3921z"/>
<path d="m-633.21-27.951q-0.10742 0.08163-0.24491 0.1203-0.13749 0.03867-0.28786 0.03867-0.20624 0-0.34802-0.07734-0.14179-0.08163-0.23202-0.22772-0.0859-0.15038-0.12889-0.35661-0.0387-0.21053-0.0387-0.46403 0-0.54996 0.19334-0.83782 0.19764-0.28787 0.56285-0.28787 0.16756 0 0.28787 0.03008 0.1203 0.03008 0.20623 0.07734l-0.0859 0.27068q-0.17186-0.09882-0.3738-0.09882-0.23201 0-0.35232 0.20623-0.116 0.20194-0.116 0.64018 0 0.17616 0.0258 0.33083 0.0258 0.15468 0.0859 0.27068 0.0601 0.11171 0.15467 0.18046 0.0945 0.06445 0.23631 0.06445 0.11171 0 0.20624-0.03867 0.0988-0.03867 0.15897-0.09023z"/>
<path d="m-632.54-28.354q0 0.15038 0.0387 0.21483 0.043 0.06445 0.11601 0.06445 0.0902 0 0.21053-0.04726l0.0301 0.2492q-0.0558 0.03437-0.15897 0.05586-0.0988 0.02148-0.18045 0.02148-0.16327 0-0.26639-0.09882-0.0988-0.10312-0.0988-0.35661v-2.5994h0.30935z"/>
<path d="m-631.97-28.917q0-0.58003 0.19764-0.85072 0.20194-0.27498 0.57144-0.27498 0.39529 0 0.58004 0.27928 0.18904 0.27928 0.18904 0.84642 0 0.58433-0.20193 0.85501-0.20194 0.27068-0.56715 0.27068-0.39528 0-0.58433-0.27928-0.18475-0.27928-0.18475-0.84642zm0.32224 0q0 0.18905 0.0215 0.34372 0.0258 0.15468 0.0773 0.26639 0.0559 0.11171 0.14179 0.17616 0.0859 0.06015 0.20623 0.06015 0.22342 0 0.33513-0.19764 0.11171-0.20194 0.11171-0.64878 0-0.18475-0.0258-0.33943-0.0215-0.15897-0.0773-0.27068-0.0516-0.11171-0.13749-0.17186-0.0859-0.06445-0.20624-0.06445-0.21912 0-0.33513 0.20194-0.11171 0.20194-0.11171 0.64448z"/>
<path d="m-630.05-28.195q0.0859 0.05156 0.20193 0.09023 0.12031 0.03437 0.24491 0.03437 0.14178 0 0.2406-0.06874 0.0988-0.07304 0.0988-0.23201 0-0.13319-0.0602-0.21912-0.0602-0.08593-0.15467-0.15468-0.0902-0.06874-0.19764-0.1246-0.10742-0.06015-0.20194-0.14179-0.0902-0.08163-0.15038-0.19334-0.0601-0.11171-0.0601-0.28357 0-0.27498 0.14608-0.41247 0.15038-0.14179 0.42106-0.14179 0.17616 0 0.30506 0.03437 0.12889 0.03008 0.22342 0.08593l-0.0816 0.25779q-0.0816-0.04296-0.18905-0.06874-0.10741-0.03008-0.21912-0.03008-0.15468 0-0.22772 0.06445-0.0687 0.06445-0.0687 0.20194 0 0.10741 0.0601 0.18475 0.0602 0.07304 0.15038 0.13749 0.0945 0.06015 0.20194 0.1246 0.10741 0.06445 0.19764 0.15468 0.0945 0.08593 0.15467 0.21053 0.0602 0.1203 0.0602 0.30506 0 0.1203-0.0387 0.22772-0.0387 0.10741-0.12031 0.18905-0.0773 0.07734-0.19764 0.1246-0.11601 0.04726-0.27498 0.04726-0.18905 0-0.32653-0.03867-0.13749-0.03437-0.23202-0.09452z"/>
<path d="m-627.28-27.989q-0.10312 0.09452-0.26209 0.14608-0.15898 0.05156-0.33513 0.05156-0.20194 0-0.35232-0.07734-0.14608-0.08163-0.2449-0.22772-0.0945-0.15038-0.14179-0.35661-0.043-0.20623-0.043-0.46403 0-0.54996 0.20193-0.83782 0.20194-0.28787 0.57144-0.28787 0.12031 0 0.23631 0.03008 0.12031 0.03008 0.21483 0.1203 0.0945 0.09023 0.15038 0.2535 0.0602 0.16327 0.0602 0.42536 0 0.07304-9e-3 0.15897-4e-3 0.08163-0.0129 0.17186h-1.0913q0 0.18475 0.0301 0.33513t0.0945 0.25779q0.0644 0.10312 0.16326 0.16327 0.10312 0.05586 0.2535 0.05586 0.11601 0 0.22772-0.04297 0.116-0.04297 0.17616-0.10312zm-0.24061-1.1515q9e-3 -0.32224-0.0902-0.47262-0.0988-0.15038-0.27068-0.15038-0.19764 0-0.31365 0.15038-0.116 0.15038-0.13749 0.47262z"/>
<path d="m-634.42-24.492q0.1246-0.07734 0.30076-0.1203 0.18045-0.04296 0.37809-0.04296 0.18046 0 0.28787 0.05586 0.11171 0.05156 0.17186 0.14608 0.0644 0.09023 0.0816 0.21053 0.0215 0.11601 0.0215 0.2449 0 0.25779-0.0129 0.5027-9e-3 0.2449-9e-3 0.46403 0 0.16327 9e-3 0.30505 0.0129 0.13749 0.043 0.26209h-0.23631l-0.073-0.2535h-0.0172q-0.0644 0.11171-0.18905 0.19334-0.1246 0.08163-0.33513 0.08163-0.23201 0-0.38239-0.15897-0.14609-0.16327-0.14609-0.44684 0-0.18475 0.0602-0.30935 0.0644-0.1246 0.17615-0.20194 0.11601-0.07734 0.27069-0.10741 0.15897-0.03437 0.35231-0.03437 0.043 0 0.0859 0 0.043 0 0.0902 0.0043 0.0129-0.13319 0.0129-0.23631 0-0.2449-0.073-0.34372t-0.26639-0.09882q-0.1203 0-0.26209 0.03867-0.14178 0.03437-0.2363 0.09023zm0.93235 1.0398q-0.043-0.0043-0.0859-0.0043-0.043-0.0043-0.0859-0.0043-0.10312 0-0.20194 0.01719-0.0988 0.01719-0.17616 0.06015-0.0773 0.04297-0.1246 0.11601-0.043 0.07304-0.043 0.18475 0 0.17186 0.0816 0.26639 0.0859 0.09452 0.21912 0.09452 0.18046 0 0.27928-0.08593 0.0988-0.08593 0.13749-0.18905z"/>
<path d="m-632.71-22.825q0.0859 0.05156 0.20194 0.09023 0.1203 0.03437 0.2449 0.03437 0.14179 0 0.24061-0.06874 0.0988-0.07304 0.0988-0.23201 0-0.13319-0.0602-0.21912-0.0602-0.08593-0.15468-0.15468-0.0902-0.06874-0.19764-0.1246-0.10741-0.06015-0.20194-0.14179-0.0902-0.08163-0.15037-0.19334-0.0602-0.11171-0.0602-0.28357 0-0.27498 0.14609-0.41247 0.15038-0.14179 0.42106-0.14179 0.17616 0 0.30505 0.03437 0.1289 0.03008 0.22342 0.08593l-0.0816 0.25779q-0.0816-0.04297-0.18905-0.06874-0.10741-0.03008-0.21912-0.03008-0.15468 0-0.22772 0.06445-0.0687 0.06445-0.0687 0.20194 0 0.10741 0.0602 0.18475 0.0601 0.07304 0.15038 0.13749 0.0945 0.06015 0.20193 0.1246 0.10742 0.06445 0.19764 0.15468 0.0945 0.08593 0.15468 0.21053 0.0602 0.1203 0.0602 0.30505 0 0.1203-0.0387 0.22772-0.0387 0.10741-0.1203 0.18905-0.0773 0.07734-0.19764 0.1246-0.11601 0.04726-0.27498 0.04726-0.18905 0-0.32654-0.03867-0.13749-0.03437-0.23201-0.09452z"/>
<path d="m-630.76-23.439h-0.15897v0.96672h-0.30935v-3.0076h0.30935v1.8303l0.14178-0.06015 0.5027-0.91087h0.35661l-0.50699 0.8679-0.15038 0.13749 0.17616 0.16756 0.55425 0.97532h-0.3738z"/>
<path d="m-629.81-21.871h1.435v0.27928h-1.435z"/>
<path d="m-628.31-24.621h0.26209v-0.1203q0-0.40388 0.116-0.58433 0.11601-0.18046 0.39529-0.18046 0.11171 0 0.20193 0.01289 0.0902 0.01289 0.18475 0.05586l-0.0773 0.26638q-0.0773-0.03437-0.14609-0.04296-0.0644-0.01289-0.1246-0.01289-0.0859 0-0.13319 0.03437-0.0473 0.03437-0.073 0.10741-0.0215 0.07304-0.0301 0.18905-4e-3 0.11171-4e-3 0.27498h0.44684v0.27928h-0.44684v1.869h-0.30935v-1.869h-0.26209z"/>
<path d="m-627.14-23.547q0-0.58003 0.19764-0.85072 0.20194-0.27498 0.57144-0.27498 0.39528 0 0.58003 0.27928 0.18905 0.27928 0.18905 0.84642 0 0.58433-0.20194 0.85501-0.20193 0.27068-0.56714 0.27068-0.39528 0-0.58433-0.27928-0.18475-0.27928-0.18475-0.84642zm0.32224 0q0 0.18905 0.0215 0.34372 0.0258 0.15468 0.0773 0.26639 0.0559 0.11171 0.14179 0.17616 0.0859 0.06015 0.20623 0.06015 0.22342 0 0.33513-0.19764 0.11171-0.20194 0.11171-0.64878 0-0.18475-0.0258-0.33943-0.0215-0.15897-0.0773-0.27068-0.0516-0.11171-0.13748-0.17186-0.0859-0.06445-0.20624-0.06445-0.21912 0-0.33513 0.20194-0.11171 0.20194-0.11171 0.64448z"/>
<path d="m-625.19-24.621h0.21912l0.0559 0.22772h0.0129q0.0602-0.1246 0.15468-0.19334 0.0988-0.07304 0.23631-0.07304 0.0988 0 0.22342 0.03867l-0.0602 0.31365q-0.11171-0.03867-0.19764-0.03867-0.13749 0-0.22342 0.08163-0.0859 0.07734-0.11171 0.21053v1.5811h-0.30935z"/>
<path d="m-624.27-21.871h1.435v0.27928h-1.435z"/>
<path d="m-621.44-24.621 0.38239 1.2546 0.0773 0.41247h9e-3l0.0644-0.42106 0.29216-1.246h0.29217l-0.57144 2.1955h-0.17616l-0.43395-1.4093-0.0602-0.36091h-9e-3l-0.0601 0.36521-0.42106 1.405h-0.17616l-0.58862-2.1955h0.33083l0.33083 1.2503 0.0516 0.41676h9e-3l0.0773-0.42536 0.35232-1.2417z"/>
<path d="m-620.05-24.621h0.21912l0.0559 0.22772h0.0129q0.0602-0.1246 0.15467-0.19334 0.0988-0.07304 0.23631-0.07304 0.0988 0 0.22342 0.03867l-0.0602 0.31365q-0.11171-0.03867-0.19764-0.03867-0.13749 0-0.22342 0.08163-0.0859 0.07734-0.11171 0.21053v1.5811h-0.30935z"/>
<path d="m-618.82-24.621h0.30935v2.1483h-0.30935zm-0.0558-0.65307q0-0.10312 0.0558-0.16756 0.0602-0.06445 0.15468-0.06445 0.0945 0 0.15467 0.06445 0.0644 0.06015 0.0644 0.16756 0 0.10312-0.0644 0.16327-0.0602 0.05585-0.15467 0.05585-0.0945 0-0.15468-0.06015-0.0558-0.06015-0.0558-0.15897z"/>
<path d="m-618.16-24.621h0.26209v-0.42536l0.30935-0.09882v0.52418h0.46403v0.27928h-0.46403v1.2804q0 0.18905 0.043 0.27498 0.0473 0.08164 0.15038 0.08164 0.0859 0 0.14608-0.01719 0.0644-0.02148 0.13749-0.05156l0.0602 0.2449q-0.0945 0.04726-0.21053 0.07304-0.11171 0.03008-0.23631 0.03008-0.21483 0-0.30935-0.13749-0.0902-0.14179-0.0902-0.45543v-1.3233h-0.26209z"/>
<path d="m-615.51-22.619q-0.10312 0.09452-0.26209 0.14608-0.15898 0.05156-0.33513 0.05156-0.20194 0-0.35232-0.07734-0.14608-0.08163-0.2449-0.22772-0.0945-0.15038-0.14179-0.35661-0.043-0.20623-0.043-0.46403 0-0.54996 0.20193-0.83783 0.20194-0.28787 0.57144-0.28787 0.12031 0 0.23631 0.03008 0.12031 0.03008 0.21483 0.1203 0.0945 0.09023 0.15038 0.2535 0.0602 0.16327 0.0602 0.42536 0 0.07304-9e-3 0.15897-4e-3 0.08163-0.0129 0.17186h-1.0913q0 0.18475 0.0301 0.33513t0.0945 0.25779q0.0644 0.10312 0.16326 0.16327 0.10312 0.05586 0.2535 0.05586 0.11601 0 0.22772-0.04297 0.116-0.04297 0.17616-0.10312zm-0.24061-1.1515q9e-3 -0.32224-0.0902-0.47262-0.0988-0.15038-0.27068-0.15038-0.19764 0-0.31365 0.15038-0.116 0.15038-0.13749 0.47262z"/>
<path d="m-615.04-24.492q0.1246-0.07734 0.30076-0.1203 0.18045-0.04296 0.3781-0.04296 0.18045 0 0.28786 0.05586 0.11171 0.05156 0.17187 0.14608 0.0644 0.09023 0.0816 0.21053 0.0215 0.11601 0.0215 0.2449 0 0.25779-0.0129 0.5027-9e-3 0.2449-9e-3 0.46403 0 0.16327 9e-3 0.30505 0.0129 0.13749 0.043 0.26209h-0.23631l-0.073-0.2535h-0.0172q-0.0644 0.11171-0.18905 0.19334-0.1246 0.08163-0.33513 0.08163-0.23201 0-0.38239-0.15897-0.14608-0.16327-0.14608-0.44684 0-0.18475 0.0602-0.30935 0.0644-0.1246 0.17616-0.20194 0.11601-0.07734 0.27068-0.10741 0.15897-0.03437 0.35232-0.03437 0.043 0 0.0859 0 0.043 0 0.0902 0.0043 0.0129-0.13319 0.0129-0.23631 0-0.2449-0.073-0.34372t-0.26638-0.09882q-0.12031 0-0.26209 0.03867-0.14179 0.03437-0.23631 0.09023zm0.93235 1.0398q-0.043-0.0043-0.0859-0.0043-0.043-0.0043-0.0859-0.0043-0.10312 0-0.20194 0.01719-0.0988 0.01719-0.17616 0.06015-0.0773 0.04297-0.1246 0.11601-0.043 0.07304-0.043 0.18475 0 0.17186 0.0816 0.26639 0.0859 0.09452 0.21913 0.09452 0.18045 0 0.27927-0.08593 0.0988-0.08593 0.13749-0.18905z"/>
<path d="m-613.3-25.48h0.30935v1.0226h0.0129q0.17616-0.21483 0.46832-0.21483 0.33084 0 0.49411 0.26209 0.16756 0.26209 0.16756 0.82923 0 0.58003-0.22342 0.8636-0.21912 0.28357-0.623 0.28357-0.19764 0-0.36091-0.04297-0.16327-0.04726-0.2449-0.10741zm0.30935 2.6939q0.0602 0.03437 0.14608 0.05586 0.0902 0.01719 0.18905 0.01719 0.22342 0 0.35232-0.21053 0.13319-0.21483 0.13319-0.65737 0-0.18475-0.0258-0.33083-0.0215-0.15038-0.073-0.25779-0.0473-0.10741-0.1289-0.16327-0.0773-0.06015-0.18904-0.06015-0.15468 0-0.2578 0.09452-0.0988 0.09023-0.14608 0.2492z"/>
<path d="m-611.11-22.984q0 0.15038 0.0387 0.21483 0.043 0.06445 0.116 0.06445 0.0902 0 0.21053-0.04726l0.0301 0.2492q-0.0559 0.03437-0.15897 0.05585-0.0988 0.02148-0.18046 0.02148-0.16327 0-0.26638-0.09882-0.0988-0.10312-0.0988-0.35661v-2.5994h0.30935z"/>
<path d="m-609.16-22.619q-0.10312 0.09452-0.26209 0.14608-0.15897 0.05156-0.33513 0.05156-0.20194 0-0.35232-0.07734-0.14608-0.08163-0.2449-0.22772-0.0945-0.15038-0.14179-0.35661-0.043-0.20623-0.043-0.46403 0-0.54996 0.20194-0.83783 0.20193-0.28787 0.57144-0.28787 0.1203 0 0.23631 0.03008 0.1203 0.03008 0.21482 0.1203 0.0945 0.09023 0.15038 0.2535 0.0602 0.16327 0.0602 0.42536 0 0.07304-9e-3 0.15897-4e-3 0.08163-0.0129 0.17186h-1.0913q0 0.18475 0.0301 0.33513t0.0945 0.25779q0.0644 0.10312 0.16327 0.16327 0.10311 0.05586 0.25349 0.05586 0.11601 0 0.22772-0.04297 0.11601-0.04297 0.17616-0.10312zm-0.24061-1.1515q9e-3 -0.32224-0.0902-0.47262-0.0988-0.15038-0.27068-0.15038-0.19764 0-0.31364 0.15038-0.11601 0.15038-0.13749 0.47262z"/>
<path d="m-634.43-17.454q0.0859 0.05156 0.20194 0.09023 0.1203 0.03437 0.2449 0.03437 0.14178 0 0.24061-0.06874 0.0988-0.07304 0.0988-0.23201 0-0.13319-0.0602-0.21912-0.0602-0.08593-0.15467-0.15468-0.0902-0.06874-0.19764-0.1246-0.10742-0.06015-0.20194-0.14179-0.0902-0.08163-0.15038-0.19334-0.0602-0.11171-0.0602-0.28357 0-0.27498 0.14608-0.41247 0.15038-0.14179 0.42106-0.14179 0.17616 0 0.30506 0.03437 0.12889 0.03008 0.22342 0.08593l-0.0816 0.25779q-0.0816-0.04296-0.18904-0.06874-0.10742-0.03008-0.21913-0.03008-0.15467 0-0.22771 0.06445-0.0688 0.06445-0.0688 0.20194 0 0.10741 0.0602 0.18475 0.0602 0.07304 0.15038 0.13749 0.0945 0.06015 0.20194 0.1246 0.10741 0.06445 0.19764 0.15468 0.0945 0.08593 0.15467 0.21053 0.0602 0.1203 0.0602 0.30506 0 0.1203-0.0387 0.22772-0.0387 0.10741-0.12031 0.18905-0.0773 0.07734-0.19764 0.1246-0.116 0.04726-0.27498 0.04726-0.18904 0-0.32653-0.03867-0.13749-0.03437-0.23202-0.09452z"/>
<path d="m-631.66-17.248q-0.10312 0.09452-0.26209 0.14608-0.15897 0.05156-0.33513 0.05156-0.20194 0-0.35232-0.07734-0.14608-0.08163-0.2449-0.22772-0.0945-0.15038-0.14179-0.35661-0.043-0.20623-0.043-0.46403 0-0.54996 0.20194-0.83782 0.20193-0.28787 0.57144-0.28787 0.1203 0 0.23631 0.03008 0.1203 0.03008 0.21482 0.1203 0.0945 0.09023 0.15038 0.2535 0.0601 0.16327 0.0601 0.42536 0 0.07304-9e-3 0.15897-4e-3 0.08163-0.0129 0.17186h-1.0913q0 0.18475 0.0301 0.33513t0.0945 0.25779q0.0645 0.10312 0.16327 0.16327 0.10311 0.05586 0.25349 0.05586 0.11601 0 0.22772-0.04297 0.11601-0.04297 0.17616-0.10312zm-0.24061-1.1515q9e-3 -0.32224-0.0902-0.47262-0.0988-0.15038-0.27068-0.15038-0.19764 0-0.31365 0.15038-0.116 0.15038-0.13748 0.47262z"/>
<path d="m-631.39-19.25h0.26209v-0.42536l0.30935-0.09882v0.52418h0.46403v0.27928h-0.46403v1.2804q0 0.18905 0.043 0.27498 0.0473 0.08163 0.15037 0.08163 0.0859 0 0.14609-0.01719 0.0644-0.02148 0.13749-0.05156l0.0602 0.2449q-0.0945 0.04726-0.21053 0.07304-0.11171 0.03008-0.23631 0.03008-0.21483 0-0.30935-0.13749-0.0902-0.14179-0.0902-0.45543v-1.3233h-0.26209z"/>
<path d="m-630.25-16.5h1.435v0.27928h-1.435z"/>
<path d="m-628.77-19.25h0.26209v-0.42536l0.30935-0.09882v0.52418h0.46403v0.27928h-0.46403v1.2804q0 0.18905 0.043 0.27498 0.0473 0.08163 0.15038 0.08163 0.0859 0 0.14608-0.01719 0.0645-0.02148 0.13749-0.05156l0.0602 0.2449q-0.0945 0.04726-0.21053 0.07304-0.11171 0.03008-0.23631 0.03008-0.21483 0-0.30935-0.13749-0.0902-0.14179-0.0902-0.45543v-1.3233h-0.26209z"/>
<path d="m-627.32-19.25h0.30935v2.1483h-0.30935zm-0.0559-0.65307q0-0.10312 0.0559-0.16756 0.0602-0.06445 0.15467-0.06445 0.0945 0 0.15468 0.06445 0.0644 0.06015 0.0644 0.16756 0 0.10312-0.0644 0.16327-0.0602 0.05585-0.15468 0.05585-0.0945 0-0.15467-0.06015-0.0559-0.06015-0.0559-0.15897z"/>
<path d="m-625.44-17.102v-1.2761q0-0.17186-0.0129-0.29216-9e-3 -0.1246-0.043-0.20194-0.0344-0.07734-0.0945-0.11171-0.0602-0.03867-0.15897-0.03867-0.14609 0-0.2492 0.11601-0.0988 0.11171-0.13749 0.25779v1.5468h-0.30935v-2.1483h0.21912l0.0559 0.22772h0.0129q0.0902-0.1246 0.21483-0.20194 0.1246-0.07734 0.31794-0.07734 0.16327 0 0.26639 0.07304 0.10741 0.06874 0.16757 0.2492 0.0773-0.15038 0.21912-0.23631 0.14608-0.08593 0.31794-0.08593 0.14179 0 0.24061 0.03867 0.10312 0.03437 0.16327 0.1289 0.0644 0.09023 0.0945 0.2449 0.0301 0.15038 0.0301 0.38239v1.405h-0.30935v-1.3663q0-0.27928-0.0559-0.41676-0.0516-0.13749-0.2449-0.13749-0.16327 0-0.26209 0.10312-0.0945 0.09882-0.13319 0.27068v1.5468z"/>
<path d="m-622.37-17.248q-0.10312 0.09452-0.26209 0.14608-0.15897 0.05156-0.33513 0.05156-0.20194 0-0.35231-0.07734-0.14609-0.08163-0.24491-0.22772-0.0945-0.15038-0.14178-0.35661-0.043-0.20623-0.043-0.46403 0-0.54996 0.20194-0.83782 0.20194-0.28787 0.57144-0.28787 0.1203 0 0.23631 0.03008 0.1203 0.03008 0.21483 0.1203 0.0945 0.09023 0.15037 0.2535 0.0602 0.16327 0.0602 0.42536 0 0.07304-9e-3 0.15897-4e-3 0.08163-0.0129 0.17186h-1.0913q0 0.18475 0.0301 0.33513t0.0945 0.25779q0.0644 0.10312 0.16327 0.16327 0.10312 0.05586 0.2535 0.05586 0.116 0 0.22771-0.04297 0.11601-0.04297 0.17616-0.10312zm-0.24061-1.1515q9e-3 -0.32224-0.0902-0.47262-0.0988-0.15038-0.27068-0.15038-0.19765 0-0.31365 0.15038-0.11601 0.15038-0.13749 0.47262z"/>
<path d="m-622.01-18.176q0-0.58003 0.19764-0.85072 0.20194-0.27498 0.57144-0.27498 0.39528 0 0.58003 0.27928 0.18905 0.27928 0.18905 0.84642 0 0.58433-0.20194 0.85501-0.20193 0.27068-0.56714 0.27068-0.39528 0-0.58433-0.27928-0.18475-0.27928-0.18475-0.84642zm0.32224 0q0 0.18905 0.0215 0.34372 0.0258 0.15468 0.0773 0.26638 0.0559 0.11171 0.14179 0.17616 0.0859 0.06015 0.20623 0.06015 0.22342 0 0.33513-0.19764 0.11171-0.20194 0.11171-0.64878 0-0.18475-0.0258-0.33943-0.0215-0.15897-0.0773-0.27068-0.0516-0.11171-0.13749-0.17186-0.0859-0.06445-0.20623-0.06445-0.21912 0-0.33513 0.20194-0.11171 0.20194-0.11171 0.64448z"/>
<path d="m-619.78-19.25v1.3147q0 0.32654 0.0644 0.46832 0.0687 0.13749 0.2449 0.13749 0.0902 0 0.15897-0.03437 0.073-0.03867 0.1289-0.09882t0.0988-0.13749q0.043-0.07734 0.0688-0.15897v-1.4909h0.30935v1.5382q0 0.15468 9e-3 0.32224 0.0129 0.16327 0.0344 0.28787h-0.21912l-0.0773-0.30076h-0.0129q-0.073 0.14179-0.21053 0.2492-0.13749 0.10312-0.34372 0.10312-0.13749 0-0.24061-0.03437t-0.17616-0.1246q-0.073-0.09023-0.11171-0.2449-0.0344-0.15897-0.0344-0.40388v-1.3921z"/>
<path d="m-618.41-19.25h0.26209v-0.42536l0.30935-0.09882v0.52418h0.46403v0.27928h-0.46403v1.2804q0 0.18905 0.043 0.27498 0.0473 0.08163 0.15038 0.08163 0.0859 0 0.14608-0.01719 0.0644-0.02148 0.13749-0.05156l0.0602 0.2449q-0.0945 0.04726-0.21053 0.07304-0.11171 0.03008-0.23631 0.03008-0.21483 0-0.30935-0.13749-0.0902-0.14179-0.0902-0.45543v-1.3233h-0.26209z"/>
<path d="m-634.43-12.083q0.0859 0.05156 0.20194 0.09023 0.1203 0.03437 0.2449 0.03437 0.14178 0 0.24061-0.06874 0.0988-0.07304 0.0988-0.23201 0-0.13319-0.0602-0.21912-0.0602-0.08593-0.15467-0.15468-0.0902-0.06874-0.19764-0.1246-0.10742-0.06015-0.20194-0.14179-0.0902-0.08163-0.15038-0.19334-0.0602-0.11171-0.0602-0.28357 0-0.27498 0.14608-0.41247 0.15038-0.14179 0.42106-0.14179 0.17616 0 0.30506 0.03437 0.12889 0.03008 0.22342 0.08593l-0.0816 0.25779q-0.0816-0.04297-0.18904-0.06874-0.10742-0.03008-0.21913-0.03008-0.15467 0-0.22771 0.06445-0.0688 0.06445-0.0688 0.20194 0 0.10741 0.0602 0.18475 0.0602 0.07304 0.15038 0.13749 0.0945 0.06015 0.20194 0.1246 0.10741 0.06445 0.19764 0.15468 0.0945 0.08593 0.15467 0.21053 0.0602 0.1203 0.0602 0.30505 0 0.1203-0.0387 0.22772-0.0387 0.10741-0.12031 0.18905-0.0773 0.07734-0.19764 0.1246-0.116 0.04726-0.27498 0.04726-0.18904 0-0.32653-0.03867-0.13749-0.03437-0.23202-0.09452z"/>
<path d="m-633.16-13.879h0.26209v-0.42536l0.30935-0.09882v0.52418h0.46403v0.27928h-0.46403v1.2804q0 0.18905 0.043 0.27498 0.0473 0.08163 0.15038 0.08163 0.0859 0 0.14608-0.01719 0.0644-0.02148 0.13749-0.05156l0.0602 0.2449q-0.0945 0.04726-0.21053 0.07304-0.11171 0.03008-0.23631 0.03008-0.21482 0-0.30935-0.13749-0.0902-0.14179-0.0902-0.45543v-1.3233h-0.26209z"/>
<path d="m-631.79-13.75q0.1246-0.07734 0.30075-0.1203 0.18046-0.04297 0.3781-0.04297 0.18045 0 0.28787 0.05585 0.11171 0.05156 0.17186 0.14608 0.0644 0.09023 0.0816 0.21053 0.0215 0.11601 0.0215 0.2449 0 0.25779-0.0129 0.5027-9e-3 0.2449-9e-3 0.46403 0 0.16327 9e-3 0.30505 0.0129 0.13749 0.043 0.26209h-0.23631l-0.073-0.2535h-0.0172q-0.0644 0.11171-0.18905 0.19334-0.1246 0.08163-0.33513 0.08163-0.23202 0-0.38239-0.15897-0.14609-0.16327-0.14609-0.44684 0-0.18475 0.0602-0.30935 0.0644-0.1246 0.17616-0.20194 0.11601-0.07734 0.27068-0.10741 0.15898-0.03437 0.35232-0.03437 0.043 0 0.0859 0 0.043 0 0.0902 0.0043 0.0129-0.13319 0.0129-0.23631 0-0.2449-0.073-0.34372t-0.26639-0.09882q-0.1203 0-0.26209 0.03867-0.14178 0.03437-0.23631 0.09023zm0.93235 1.0398q-0.043-0.0043-0.0859-0.0043-0.043-0.0043-0.0859-0.0043-0.10311 0-0.20193 0.01719-0.0988 0.01719-0.17616 0.06015-0.0773 0.04297-0.1246 0.11601-0.043 0.07304-0.043 0.18475 0 0.17186 0.0816 0.26639 0.0859 0.09452 0.21912 0.09452 0.18046 0 0.27928-0.08593 0.0988-0.08593 0.13749-0.18905z"/>
<path d="m-630.26-13.879h0.26209v-0.42536l0.30935-0.09882v0.52418h0.46402v0.27928h-0.46402v1.2804q0 0.18905 0.043 0.27498 0.0473 0.08163 0.15038 0.08163 0.0859 0 0.14608-0.01719 0.0644-0.02148 0.13749-0.05156l0.0601 0.2449q-0.0945 0.04726-0.21053 0.07304-0.11171 0.03008-0.23631 0.03008-0.21482 0-0.30935-0.13749-0.0902-0.14179-0.0902-0.45543v-1.3233h-0.26209z"/>
<path d="m-627.61-11.877q-0.10312 0.09452-0.26209 0.14608-0.15897 0.05156-0.33513 0.05156-0.20194 0-0.35232-0.07734-0.14608-0.08163-0.2449-0.22772-0.0945-0.15038-0.14178-0.35661-0.043-0.20623-0.043-0.46403 0-0.54996 0.20194-0.83783t0.57144-0.28787q0.1203 0 0.23631 0.03008 0.1203 0.03008 0.21482 0.1203 0.0945 0.09023 0.15038 0.2535 0.0602 0.16327 0.0602 0.42536 0 0.07304-9e-3 0.15897-4e-3 0.08164-0.0129 0.17186h-1.0913q0 0.18475 0.0301 0.33513t0.0945 0.25779q0.0645 0.10312 0.16327 0.16327 0.10312 0.05585 0.2535 0.05585 0.116 0 0.22771-0.04296 0.11601-0.04297 0.17616-0.10312zm-0.24061-1.1515q9e-3 -0.32224-0.0902-0.47262-0.0988-0.15038-0.27069-0.15038-0.19764 0-0.31364 0.15038-0.11601 0.15038-0.13749 0.47262z"/>
<path d="m-630.55-341.48h0.26209v-0.42536l0.30935-0.0988v0.52418h0.46403v0.27928h-0.46403v1.2804q0 0.18904 0.043 0.27497 0.0473 0.0816 0.15038 0.0816 0.0859 0 0.14609-0.0172 0.0644-0.0215 0.13749-0.0516l0.0602 0.24491q-0.0945 0.0473-0.21053 0.073-0.11171 0.0301-0.23631 0.0301-0.21483 0-0.30935-0.13749-0.0902-0.14178-0.0902-0.45543v-1.3233h-0.26209z"/>
<path d="m-628.76-340.43-0.56714-1.0484h0.3695l0.31794 0.61441 0.0859 0.2406 0.0902-0.2406 0.32654-0.61441h0.33943l-0.57144 1.0312 0.60581 1.1171h-0.35232l-0.36091-0.67456-0.0945-0.25779-0.0988 0.25779-0.36091 0.67456h-0.33943z"/>
<path d="m-629.15-334.07q-0.10741 0.0816-0.2449 0.12031-0.13749 0.0387-0.28787 0.0387-0.20623 0-0.34802-0.0773-0.14179-0.0816-0.23201-0.22772-0.0859-0.15038-0.1289-0.35661-0.0387-0.21053-0.0387-0.46403 0-0.54995 0.19335-0.83782 0.19764-0.28787 0.56284-0.28787 0.16757 0 0.28787 0.0301 0.12031 0.0301 0.20624 0.0773l-0.0859 0.27068q-0.17187-0.0988-0.3738-0.0988-0.23202 0-0.35232 0.20624-0.11601 0.20194-0.11601 0.64018 0 0.17616 0.0258 0.33084 0.0258 0.15467 0.0859 0.27068 0.0602 0.11171 0.15468 0.18045 0.0945 0.0644 0.23631 0.0644 0.11171 0 0.20623-0.0387 0.0988-0.0387 0.15897-0.0902z"/>
<path d="m-628.48-334.47q0 0.15038 0.0387 0.21483 0.043 0.0644 0.116 0.0644 0.0902 0 0.21053-0.0473l0.0301 0.2492q-0.0559 0.0344-0.15897 0.0559-0.0988 0.0215-0.18046 0.0215-0.16327 0-0.26638-0.0988-0.0988-0.10312-0.0988-0.35661v-2.5994h0.30935z"/>
<path d="m-627.76-336.11h0.30935v2.1483h-0.30935zm-0.0558-0.65308q0-0.10311 0.0558-0.16756 0.0602-0.0645 0.15468-0.0645 0.0945 0 0.15467 0.0645 0.0644 0.0601 0.0644 0.16756 0 0.10312-0.0644 0.16327-0.0602 0.0559-0.15467 0.0559-0.0945 0-0.15468-0.0602-0.0558-0.0602-0.0558-0.15897z"/>
<path d="m-625.59-334.11q-0.10312 0.0945-0.26209 0.14608-0.15898 0.0516-0.33513 0.0516-0.20194 0-0.35232-0.0773-0.14608-0.0816-0.2449-0.22772-0.0945-0.15038-0.14179-0.35661-0.043-0.20623-0.043-0.46403 0-0.54995 0.20193-0.83782 0.20194-0.28787 0.57144-0.28787 0.12031 0 0.23631 0.0301 0.12031 0.0301 0.21483 0.12031 0.0945 0.0902 0.15038 0.25349 0.0601 0.16327 0.0601 0.42536 0 0.073-9e-3 0.15897-4e-3 0.0816-0.0129 0.17186h-1.0913q0 0.18476 0.0301 0.33514 0.0301 0.15037 0.0945 0.25779 0.0644 0.10311 0.16326 0.16327 0.10312 0.0558 0.2535 0.0558 0.11601 0 0.22772-0.043 0.116-0.043 0.17616-0.10312zm-0.24061-1.1515q9e-3 -0.32224-0.0902-0.47262-0.0988-0.15038-0.27068-0.15038-0.19764 0-0.31365 0.15038-0.116 0.15038-0.13749 0.47262z"/>
<path d="m-624.01-333.96v-1.3104q0-0.32224-0.0773-0.46402-0.073-0.14609-0.26638-0.14609-0.17187 0-0.28358 0.10312t-0.16326 0.2535v1.5639h-0.30936v-2.1483h0.22342l0.0559 0.22771h0.0129q0.0816-0.116 0.21912-0.19764 0.14179-0.0816 0.33513-0.0816 0.13749 0 0.24061 0.0387 0.10741 0.0387 0.17616 0.13319 0.073 0.0902 0.10741 0.2449 0.0387 0.15468 0.0387 0.39099v1.3921z"/>
<path d="m-623.43-336.11h0.26208v-0.42536l0.30936-0.0988v0.52418h0.46402v0.27927h-0.46402v1.2804q0 0.18905 0.043 0.27498 0.0473 0.0816 0.15038 0.0816 0.0859 0 0.14608-0.0172 0.0644-0.0215 0.13749-0.0516l0.0602 0.2449q-0.0945 0.0473-0.21053 0.073-0.11171 0.0301-0.23631 0.0301-0.21482 0-0.30935-0.13749-0.0902-0.14179-0.0902-0.45543v-1.3233h-0.26208z"/>
<path d="m-622.29-333.36h1.435v0.27928h-1.435z"/>
<path d="m-619.42-334.07q-0.10741 0.0816-0.2449 0.12031-0.13749 0.0387-0.28787 0.0387-0.20623 0-0.34802-0.0773-0.14178-0.0816-0.23201-0.22772-0.0859-0.15038-0.1289-0.35661-0.0387-0.21053-0.0387-0.46403 0-0.54995 0.19335-0.83782 0.19764-0.28787 0.56284-0.28787 0.16757 0 0.28787 0.0301 0.12031 0.0301 0.20624 0.0773l-0.0859 0.27068q-0.17187-0.0988-0.3738-0.0988-0.23202 0-0.35232 0.20624-0.11601 0.20194-0.11601 0.64018 0 0.17616 0.0258 0.33084 0.0258 0.15467 0.0859 0.27068 0.0602 0.11171 0.15468 0.18045 0.0945 0.0644 0.23631 0.0644 0.11171 0 0.20623-0.0387 0.0988-0.0387 0.15898-0.0902z"/>
<path d="m-619.24-335.04q0-0.58003 0.19765-0.85071 0.20193-0.27498 0.57144-0.27498 0.39528 0 0.58003 0.27927 0.18905 0.27928 0.18905 0.84642 0 0.58433-0.20194 0.85501-0.20194 0.27069-0.56714 0.27069-0.39529 0-0.58433-0.27928-0.18476-0.27927-0.18476-0.84642zm0.32225 0q0 0.18905 0.0215 0.34373 0.0258 0.15467 0.0773 0.26638 0.0558 0.11171 0.14178 0.17616 0.0859 0.0601 0.20624 0.0601 0.22342 0 0.33513-0.19764 0.11171-0.20194 0.11171-0.64878 0-0.18475-0.0258-0.33942-0.0215-0.15898-0.0773-0.27069-0.0516-0.11171-0.13749-0.17186-0.0859-0.0645-0.20623-0.0645-0.21913 0-0.33513 0.20194-0.11171 0.20194-0.11171 0.64448z"/>
<path d="m-616.2-333.96v-1.3104q0-0.32224-0.0773-0.46402-0.073-0.14609-0.26639-0.14609-0.17186 0-0.28357 0.10312t-0.16327 0.2535v1.5639h-0.30935v-2.1483h0.22342l0.0559 0.22771h0.0129q0.0816-0.116 0.21912-0.19764 0.14178-0.0816 0.33513-0.0816 0.13749 0 0.24061 0.0387 0.10741 0.0387 0.17615 0.13319 0.073 0.0902 0.10742 0.2449 0.0387 0.15468 0.0387 0.39099v1.3921z"/>
<path d="m-614.31-333.96v-1.3104q0-0.32224-0.0773-0.46402-0.073-0.14609-0.26639-0.14609-0.17186 0-0.28357 0.10312t-0.16327 0.2535v1.5639h-0.30935v-2.1483h0.22342l0.0559 0.22771h0.0129q0.0816-0.116 0.21913-0.19764 0.14178-0.0816 0.33513-0.0816 0.13749 0 0.2406 0.0387 0.10742 0.0387 0.17616 0.13319 0.073 0.0902 0.10742 0.2449 0.0387 0.15468 0.0387 0.39099v1.3921z"/>
<path d="m-629.15-328.7q-0.10741 0.0816-0.2449 0.1203t-0.28787 0.0387q-0.20623 0-0.34802-0.0773-0.14179-0.0816-0.23201-0.22772-0.0859-0.15038-0.1289-0.35661-0.0387-0.21054-0.0387-0.46403 0-0.54996 0.19335-0.83783 0.19764-0.28786 0.56284-0.28786 0.16757 0 0.28787 0.0301 0.12031 0.0301 0.20624 0.0773l-0.0859 0.27068q-0.17187-0.0988-0.3738-0.0988-0.23202 0-0.35232 0.20623-0.11601 0.20194-0.11601 0.64019 0 0.17616 0.0258 0.33083 0.0258 0.15468 0.0859 0.27068 0.0602 0.11171 0.15468 0.18046 0.0945 0.0644 0.23631 0.0644 0.11171 0 0.20623-0.0387 0.0988-0.0387 0.15897-0.0902z"/>
<path d="m-628.48-329.1q0 0.15037 0.0387 0.21482 0.043 0.0644 0.116 0.0644 0.0902 0 0.21053-0.0473l0.0301 0.2492q-0.0559 0.0344-0.15897 0.0558-0.0988 0.0215-0.18046 0.0215-0.16327 0-0.26638-0.0988-0.0988-0.10312-0.0988-0.35662v-2.5994h0.30935z"/>
<path d="m-627.9-329.67q0-0.58003 0.19764-0.85072 0.20194-0.27497 0.57144-0.27497 0.39528 0 0.58003 0.27927 0.18905 0.27928 0.18905 0.84642 0 0.58433-0.20194 0.85501-0.20193 0.27068-0.56714 0.27068-0.39528 0-0.58433-0.27927-0.18475-0.27928-0.18475-0.84642zm0.32224 0q0 0.18905 0.0215 0.34372 0.0258 0.15468 0.0773 0.26639 0.0558 0.11171 0.14179 0.17616 0.0859 0.0601 0.20623 0.0601 0.22342 0 0.33513-0.19764 0.11171-0.20194 0.11171-0.64878 0-0.18475-0.0258-0.33943-0.0215-0.15897-0.0773-0.27068-0.0516-0.11171-0.13749-0.17186-0.0859-0.0645-0.20623-0.0645-0.21912 0-0.33513 0.20194-0.11171 0.20194-0.11171 0.64448z"/>
<path d="m-625.99-328.94q0.0859 0.0516 0.20194 0.0902 0.1203 0.0344 0.2449 0.0344 0.14179 0 0.24061-0.0687 0.0988-0.073 0.0988-0.23201 0-0.13319-0.0602-0.21912-0.0602-0.0859-0.15468-0.15468-0.0902-0.0687-0.19764-0.1246-0.10741-0.0602-0.20194-0.14178-0.0902-0.0816-0.15038-0.19335-0.0602-0.11171-0.0602-0.28357 0-0.27498 0.14609-0.41247 0.15037-0.14178 0.42106-0.14178 0.17615 0 0.30505 0.0344 0.1289 0.0301 0.22342 0.0859l-0.0816 0.25779q-0.0816-0.043-0.18905-0.0687-0.10741-0.0301-0.21912-0.0301-0.15468 0-0.22772 0.0645-0.0688 0.0644-0.0688 0.20194 0 0.10741 0.0602 0.18475 0.0602 0.073 0.15037 0.13749 0.0945 0.0601 0.20194 0.1246 0.10742 0.0644 0.19764 0.15467 0.0945 0.0859 0.15468 0.21053 0.0602 0.12031 0.0602 0.30506 0 0.1203-0.0387 0.22771-0.0387 0.10742-0.1203 0.18905-0.0773 0.0773-0.19764 0.1246-0.11601 0.0473-0.27498 0.0473-0.18905 0-0.32654-0.0387-0.13749-0.0344-0.23201-0.0945z"/>
<path d="m-623.22-328.74q-0.10312 0.0945-0.26209 0.14608-0.15897 0.0516-0.33513 0.0516-0.20194 0-0.35231-0.0773-0.14609-0.0816-0.24491-0.22772-0.0945-0.15038-0.14178-0.35661-0.043-0.20624-0.043-0.46403 0-0.54996 0.20194-0.83783 0.20194-0.28786 0.57144-0.28786 0.1203 0 0.23631 0.0301 0.1203 0.0301 0.21483 0.1203 0.0945 0.0902 0.15037 0.2535 0.0602 0.16327 0.0602 0.42536 0 0.073-9e-3 0.15897-4e-3 0.0816-0.0129 0.17186h-1.0913q0 0.18475 0.0301 0.33513t0.0945 0.25779q0.0644 0.10312 0.16327 0.16327 0.10312 0.0559 0.2535 0.0559 0.116 0 0.22771-0.043 0.11601-0.043 0.17616-0.10311zm-0.24061-1.1515q9e-3 -0.32224-0.0902-0.47262-0.0988-0.15038-0.27068-0.15038-0.19765 0-0.31365 0.15038-0.11601 0.15038-0.13749 0.47262z"/>
<path d="m-630.36-325.24q0.1246-0.0773 0.30076-0.12031 0.18046-0.043 0.3781-0.043 0.18045 0 0.28787 0.0559 0.11171 0.0516 0.17186 0.14609 0.0645 0.0902 0.0816 0.21053 0.0215 0.116 0.0215 0.2449 0 0.25779-0.0129 0.50269-9e-3 0.24491-9e-3 0.46403 0 0.16327 9e-3 0.30505 0.0129 0.13749 0.043 0.26209h-0.23631l-0.073-0.25349h-0.0172q-0.0645 0.11171-0.18905 0.19334-0.12459 0.0816-0.33513 0.0816-0.23201 0-0.38239-0.15898-0.14608-0.16326-0.14608-0.44684 0-0.18475 0.0602-0.30935 0.0644-0.1246 0.17616-0.20193 0.11601-0.0773 0.27068-0.10742 0.15897-0.0344 0.35232-0.0344 0.043 0 0.0859 0 0.043 0 0.0902 4e-3 0.0129-0.1332 0.0129-0.23631 0-0.24491-0.073-0.34373-0.073-0.0988-0.26638-0.0988-0.1203 0-0.26209 0.0387-0.14179 0.0344-0.23631 0.0902zm0.93235 1.0398q-0.043-4e-3 -0.0859-4e-3 -0.043-4e-3 -0.0859-4e-3 -0.10312 0-0.20194 0.0172-0.0988 0.0172-0.17615 0.0601-0.0773 0.043-0.1246 0.11601-0.043 0.073-0.043 0.18475 0 0.17186 0.0816 0.26639 0.0859 0.0945 0.21913 0.0945 0.18045 0 0.27927-0.0859 0.0988-0.0859 0.13749-0.18905z"/>
<path d="m-628.65-323.57q0.0859 0.0516 0.20194 0.0902 0.1203 0.0344 0.2449 0.0344 0.14178 0 0.24061-0.0687 0.0988-0.073 0.0988-0.23201 0-0.1332-0.0602-0.21913-0.0602-0.0859-0.15467-0.15467-0.0902-0.0687-0.19764-0.1246-0.10742-0.0602-0.20194-0.14179-0.0902-0.0816-0.15038-0.19334-0.0602-0.11171-0.0602-0.28357 0-0.27498 0.14608-0.41247 0.15038-0.14179 0.42106-0.14179 0.17616 0 0.30506 0.0344 0.12889 0.0301 0.22342 0.0859l-0.0816 0.2578q-0.0816-0.043-0.18904-0.0688-0.10742-0.0301-0.21913-0.0301-0.15467 0-0.22771 0.0645-0.0688 0.0644-0.0688 0.20193 0 0.10742 0.0602 0.18475 0.0602 0.073 0.15038 0.13749 0.0945 0.0601 0.20194 0.1246 0.10741 0.0644 0.19764 0.15468 0.0945 0.0859 0.15468 0.21053 0.0601 0.1203 0.0601 0.30505 0 0.12031-0.0387 0.22772t-0.12031 0.18905q-0.0773 0.0773-0.19764 0.1246-0.116 0.0473-0.27497 0.0473-0.18905 0-0.32654-0.0387-0.13749-0.0344-0.23202-0.0945z"/>
<path d="m-626.7-324.19h-0.15898v0.96672h-0.30935v-3.0076h0.30935v1.8303l0.14179-0.0602 0.50269-0.91087h0.35662l-0.50699 0.8679-0.15038 0.13749 0.17615 0.16757 0.55426 0.97531h-0.3738z"/>
<path d="m-625.75-322.62h1.435v0.27927h-1.435z"/>
<path d="m-624.24-325.37h0.26209v-0.1203q0-0.40388 0.11601-0.58433 0.11601-0.18046 0.39528-0.18046 0.11171 0 0.20194 0.0129 0.0902 0.0129 0.18475 0.0559l-0.0773 0.26638q-0.0773-0.0344-0.14608-0.043-0.0644-0.0129-0.1246-0.0129-0.0859 0-0.13319 0.0344-0.0473 0.0344-0.073 0.10741-0.0215 0.073-0.0301 0.18905-4e-3 0.11171-4e-3 0.27498h0.44684v0.27928h-0.44684v1.869h-0.30935v-1.869h-0.26209z"/>
<path d="m-623.08-324.3q0-0.58004 0.19764-0.85072 0.20193-0.27498 0.57144-0.27498 0.39528 0 0.58003 0.27928 0.18905 0.27927 0.18905 0.84642 0 0.58433-0.20194 0.85501t-0.56714 0.27068q-0.39529 0-0.58433-0.27928-0.18475-0.27927-0.18475-0.84641zm0.32224 0q0 0.18904 0.0215 0.34372 0.0258 0.15467 0.0773 0.26638 0.0558 0.11171 0.14178 0.17616 0.0859 0.0602 0.20624 0.0602 0.22342 0 0.33513-0.19764 0.11171-0.20193 0.11171-0.64877 0-0.18476-0.0258-0.33943-0.0215-0.15897-0.0773-0.27068-0.0516-0.11171-0.13749-0.17186-0.0859-0.0645-0.20623-0.0645-0.21913 0-0.33513 0.20193-0.11171 0.20194-0.11171 0.64449z"/>
<path d="m-621.13-325.37h0.21913l0.0558 0.22772h0.0129q0.0602-0.1246 0.15468-0.19335 0.0988-0.073 0.2363-0.073 0.0988 0 0.22343 0.0387l-0.0602 0.31365q-0.11171-0.0387-0.19764-0.0387-0.13749 0-0.22342 0.0816-0.0859 0.0773-0.11171 0.21053v1.5811h-0.30935z"/>
<path d="m-620.21-322.62h1.435v0.27927h-1.435z"/>
<path d="m-617.37-325.37 0.38239 1.2546 0.0773 0.41247h9e-3l0.0644-0.42106 0.29217-1.246h0.29216l-0.57144 2.1955h-0.17616l-0.43395-1.4093-0.0601-0.36091h-9e-3l-0.0602 0.3652-0.42106 1.405h-0.17616l-0.58863-2.1955h0.33084l0.33083 1.2503 0.0516 0.41677h9e-3l0.0773-0.42536 0.35231-1.2417z"/>
<path d="m-615.99-325.37h0.21913l0.0558 0.22772h0.0129q0.0601-0.1246 0.15468-0.19335 0.0988-0.073 0.23631-0.073 0.0988 0 0.22342 0.0387l-0.0602 0.31365q-0.11171-0.0387-0.19764-0.0387-0.13749 0-0.22342 0.0816-0.0859 0.0773-0.11171 0.21053v1.5811h-0.30935z"/>
<path d="m-614.76-325.37h0.30935v2.1483h-0.30935zm-0.0559-0.65307q0-0.10312 0.0559-0.16757 0.0602-0.0644 0.15467-0.0644 0.0945 0 0.15468 0.0644 0.0644 0.0602 0.0644 0.16757 0 0.10311-0.0644 0.16326-0.0602 0.0559-0.15468 0.0559-0.0945 0-0.15467-0.0602-0.0559-0.0602-0.0559-0.15897z"/>
<path d="m-614.09-325.37h0.26209v-0.42536l0.30935-0.0988v0.52418h0.46402v0.27928h-0.46402v1.2804q0 0.18905 0.043 0.27498 0.0473 0.0816 0.15038 0.0816 0.0859 0 0.14609-0.0172 0.0644-0.0215 0.13748-0.0516l0.0602 0.24491q-0.0945 0.0473-0.21053 0.073-0.11171 0.0301-0.23631 0.0301-0.21483 0-0.30936-0.13749-0.0902-0.14178-0.0902-0.45543v-1.3233h-0.26209z"/>
<path d="m-611.45-323.37q-0.10312 0.0945-0.26209 0.14608-0.15897 0.0516-0.33513 0.0516-0.20194 0-0.35231-0.0773-0.14609-0.0816-0.24491-0.22772-0.0945-0.15037-0.14178-0.35661-0.043-0.20623-0.043-0.46402 0-0.54996 0.20194-0.83783t0.57144-0.28787q0.1203 0 0.23631 0.0301 0.1203 0.0301 0.21483 0.1203 0.0945 0.0902 0.15037 0.2535 0.0602 0.16327 0.0602 0.42535 0 0.0731-9e-3 0.15898-4e-3 0.0816-0.0129 0.17186h-1.0913q0 0.18475 0.0301 0.33513t0.0945 0.25779q0.0645 0.10312 0.16327 0.16327 0.10312 0.0559 0.2535 0.0559 0.116 0 0.22771-0.043 0.11601-0.043 0.17616-0.10312zm-0.24061-1.1515q9e-3 -0.32225-0.0902-0.47262-0.0988-0.15038-0.27068-0.15038-0.19765 0-0.31365 0.15038-0.11601 0.15037-0.13749 0.47262z"/>
<path d="m-610.98-325.24q0.1246-0.0773 0.30076-0.12031 0.18045-0.043 0.37809-0.043 0.18046 0 0.28787 0.0559 0.11171 0.0516 0.17186 0.14609 0.0645 0.0902 0.0816 0.21053 0.0215 0.116 0.0215 0.2449 0 0.25779-0.0129 0.50269-9e-3 0.24491-9e-3 0.46403 0 0.16327 9e-3 0.30505 0.0129 0.13749 0.043 0.26209h-0.23631l-0.073-0.25349h-0.0172q-0.0645 0.11171-0.18905 0.19334-0.1246 0.0816-0.33513 0.0816-0.23201 0-0.38239-0.15898-0.14609-0.16326-0.14609-0.44684 0-0.18475 0.0602-0.30935 0.0644-0.1246 0.17615-0.20193 0.11601-0.0773 0.27069-0.10742 0.15897-0.0344 0.35231-0.0344 0.043 0 0.0859 0 0.043 0 0.0902 4e-3 0.0129-0.1332 0.0129-0.23631 0-0.24491-0.073-0.34373-0.073-0.0988-0.26639-0.0988-0.1203 0-0.26209 0.0387-0.14178 0.0344-0.23631 0.0902zm0.93235 1.0398q-0.043-4e-3 -0.0859-4e-3 -0.043-4e-3 -0.0859-4e-3 -0.10312 0-0.20194 0.0172-0.0988 0.0172-0.17616 0.0601-0.0773 0.043-0.1246 0.11601-0.043 0.073-0.043 0.18475 0 0.17186 0.0816 0.26639 0.0859 0.0945 0.21912 0.0945 0.18046 0 0.27928-0.0859 0.0988-0.0859 0.13749-0.18905z"/>
<path d="m-609.24-326.23h0.30935v1.0226h0.0129q0.17615-0.21483 0.46832-0.21483 0.33083 0 0.4941 0.26209 0.16757 0.26209 0.16757 0.82923 0 0.58004-0.22342 0.86361-0.21913 0.28357-0.623 0.28357-0.19764 0-0.36091-0.043-0.16327-0.0473-0.2449-0.10741zm0.30935 2.6939q0.0602 0.0344 0.14608 0.0559 0.0902 0.0172 0.18905 0.0172 0.22342 0 0.35231-0.21053 0.1332-0.21482 0.1332-0.65737 0-0.18475-0.0258-0.33083-0.0215-0.15038-0.073-0.25779-0.0473-0.10742-0.1289-0.16327-0.0773-0.0602-0.18905-0.0602-0.15467 0-0.25779 0.0945-0.0988 0.0902-0.14608 0.2492z"/>
<path d="m-607.05-323.73q0 0.15038 0.0387 0.21483 0.043 0.0645 0.11601 0.0645 0.0902 0 0.21053-0.0473l0.0301 0.2492q-0.0558 0.0344-0.15897 0.0559-0.0988 0.0215-0.18045 0.0215-0.16327 0-0.26639-0.0988-0.0988-0.10311-0.0988-0.35661v-2.5994h0.30935z"/>
<path d="m-605.09-323.37q-0.10311 0.0945-0.26208 0.14608-0.15898 0.0516-0.33514 0.0516-0.20193 0-0.35231-0.0773-0.14608-0.0816-0.2449-0.22772-0.0945-0.15037-0.14179-0.35661-0.043-0.20623-0.043-0.46402 0-0.54996 0.20194-0.83783t0.57144-0.28787q0.1203 0 0.23631 0.0301 0.1203 0.0301 0.21483 0.1203 0.0945 0.0902 0.15038 0.2535 0.0602 0.16327 0.0602 0.42535 0 0.0731-9e-3 0.15898-4e-3 0.0816-0.0129 0.17186h-1.0913q0 0.18475 0.0301 0.33513t0.0945 0.25779q0.0644 0.10312 0.16327 0.16327 0.10312 0.0559 0.2535 0.0559 0.11601 0 0.22772-0.043 0.116-0.043 0.17615-0.10312zm-0.2406-1.1515q9e-3 -0.32225-0.0902-0.47262-0.0988-0.15038-0.27068-0.15038-0.19764 0-0.31365 0.15038-0.11601 0.15037-0.13749 0.47262z"/>
<path d="m-630.37-318.2q0.0859 0.0516 0.20194 0.0902 0.1203 0.0344 0.2449 0.0344 0.14179 0 0.24061-0.0687 0.0988-0.0731 0.0988-0.23202 0-0.13319-0.0602-0.21912-0.0602-0.0859-0.15468-0.15468-0.0902-0.0687-0.19764-0.1246-0.10741-0.0602-0.20193-0.14178-0.0902-0.0816-0.15038-0.19335-0.0602-0.11171-0.0602-0.28357 0-0.27498 0.14608-0.41247 0.15038-0.14178 0.42106-0.14178 0.17616 0 0.30505 0.0344 0.1289 0.0301 0.22342 0.0859l-0.0816 0.25779q-0.0816-0.043-0.18905-0.0687-0.10741-0.0301-0.21912-0.0301-0.15468 0-0.22772 0.0645-0.0687 0.0644-0.0687 0.20194 0 0.10741 0.0602 0.18475 0.0601 0.073 0.15038 0.13749 0.0945 0.0601 0.20193 0.1246 0.10742 0.0644 0.19764 0.15467 0.0945 0.0859 0.15468 0.21054 0.0602 0.1203 0.0602 0.30505 0 0.1203-0.0387 0.22772-0.0387 0.10741-0.1203 0.18904-0.0773 0.0773-0.19764 0.1246-0.11601 0.0473-0.27498 0.0473-0.18905 0-0.32654-0.0387-0.13749-0.0344-0.23201-0.0945z"/>
<path d="m-627.6-318q-0.10311 0.0945-0.26209 0.14609-0.15897 0.0516-0.33513 0.0516-0.20193 0-0.35231-0.0773-0.14608-0.0816-0.24491-0.22772-0.0945-0.15038-0.14178-0.35661-0.043-0.20624-0.043-0.46403 0-0.54996 0.20194-0.83782 0.20194-0.28787 0.57144-0.28787 0.1203 0 0.23631 0.0301 0.1203 0.0301 0.21483 0.12031 0.0945 0.0902 0.15038 0.25349 0.0602 0.16327 0.0602 0.42536 0 0.073-9e-3 0.15897-4e-3 0.0816-0.0129 0.17186h-1.0913q0 0.18476 0.0301 0.33513 0.0301 0.15038 0.0945 0.2578 0.0644 0.10311 0.16327 0.16327 0.10312 0.0558 0.2535 0.0558 0.116 0 0.22771-0.043 0.11601-0.043 0.17616-0.10312zm-0.2406-1.1515q9e-3 -0.32224-0.0902-0.47262-0.0988-0.15038-0.27068-0.15038-0.19764 0-0.31365 0.15038t-0.13749 0.47262z"/>
<path d="m-627.33-320h0.26208v-0.42536l0.30936-0.0988v0.52418h0.46402v0.27927h-0.46402v1.2804q0 0.18905 0.043 0.27498 0.0473 0.0816 0.15038 0.0816 0.0859 0 0.14608-0.0172 0.0644-0.0215 0.13749-0.0516l0.0602 0.2449q-0.0945 0.0473-0.21053 0.073-0.11171 0.0301-0.23631 0.0301-0.21482 0-0.30935-0.13749-0.0902-0.14179-0.0902-0.45543v-1.3233h-0.26208z"/>
<path d="m-626.18-317.25h1.435v0.27928h-1.435z"/>
<path d="m-624.71-320h0.26209v-0.42536l0.30935-0.0988v0.52418h0.46403v0.27927h-0.46403v1.2804q0 0.18905 0.043 0.27498 0.0473 0.0816 0.15037 0.0816 0.0859 0 0.14609-0.0172 0.0644-0.0215 0.13749-0.0516l0.0602 0.2449q-0.0945 0.0473-0.21053 0.073-0.11171 0.0301-0.23631 0.0301-0.21483 0-0.30935-0.13749-0.0902-0.14179-0.0902-0.45543v-1.3233h-0.26209z"/>
<path d="m-623.26-320h0.30935v2.1483h-0.30935zm-0.0558-0.65308q0-0.10311 0.0558-0.16756 0.0602-0.0645 0.15468-0.0645 0.0945 0 0.15467 0.0645 0.0645 0.0601 0.0645 0.16756 0 0.10312-0.0645 0.16327-0.0602 0.0559-0.15467 0.0559-0.0945 0-0.15468-0.0602-0.0558-0.0602-0.0558-0.15897z"/>
<path d="m-621.38-317.85v-1.2761q0-0.17186-0.0129-0.29216-9e-3 -0.1246-0.043-0.20194-0.0344-0.0773-0.0945-0.11171-0.0601-0.0387-0.15897-0.0387-0.14608 0-0.2492 0.11601-0.0988 0.11171-0.13749 0.25779v1.5468h-0.30935v-2.1483h0.21912l0.0559 0.22771h0.0129q0.0902-0.1246 0.21483-0.20193 0.1246-0.0773 0.31794-0.0773 0.16327 0 0.26639 0.073 0.10741 0.0687 0.16756 0.2492 0.0773-0.15038 0.21912-0.23631 0.14609-0.0859 0.31795-0.0859 0.14178 0 0.2406 0.0387 0.10312 0.0344 0.16327 0.12889 0.0644 0.0902 0.0945 0.24491 0.0301 0.15038 0.0301 0.38239v1.405h-0.30935v-1.3663q0-0.27928-0.0558-0.41677-0.0516-0.13749-0.24491-0.13749-0.16326 0-0.26208 0.10312-0.0945 0.0988-0.1332 0.27068v1.5468z"/>
<path d="m-618.3-318q-0.10312 0.0945-0.26209 0.14609-0.15897 0.0516-0.33513 0.0516-0.20194 0-0.35232-0.0773-0.14608-0.0816-0.2449-0.22772-0.0945-0.15038-0.14179-0.35661-0.043-0.20624-0.043-0.46403 0-0.54996 0.20193-0.83782 0.20194-0.28787 0.57144-0.28787 0.12031 0 0.23631 0.0301 0.12031 0.0301 0.21483 0.12031 0.0945 0.0902 0.15038 0.25349 0.0601 0.16327 0.0601 0.42536 0 0.073-9e-3 0.15897-4e-3 0.0816-0.0129 0.17186h-1.0913q0 0.18476 0.0301 0.33513 0.0301 0.15038 0.0945 0.2578 0.0645 0.10311 0.16327 0.16327 0.10311 0.0558 0.25349 0.0558 0.11601 0 0.22772-0.043 0.116-0.043 0.17616-0.10312zm-0.24061-1.1515q9e-3 -0.32224-0.0902-0.47262-0.0988-0.15038-0.27068-0.15038-0.19764 0-0.31365 0.15038-0.116 0.15038-0.13749 0.47262z"/>
<path d="m-617.94-318.93q0-0.58003 0.19764-0.85071 0.20193-0.27498 0.57144-0.27498 0.39528 0 0.58003 0.27927 0.18905 0.27928 0.18905 0.84642 0 0.58433-0.20194 0.85501-0.20194 0.27069-0.56714 0.27069-0.39529 0-0.58433-0.27928-0.18475-0.27927-0.18475-0.84642zm0.32224 0q0 0.18905 0.0215 0.34373 0.0258 0.15467 0.0773 0.26638 0.0558 0.11171 0.14178 0.17616 0.0859 0.0601 0.20624 0.0601 0.22342 0 0.33513-0.19764 0.11171-0.20194 0.11171-0.64878 0-0.18475-0.0258-0.33942-0.0215-0.15898-0.0773-0.27069-0.0516-0.11171-0.13749-0.17186-0.0859-0.0645-0.20623-0.0645-0.21913 0-0.33513 0.20194-0.11171 0.20194-0.11171 0.64448z"/>
<path d="m-615.72-320v1.3147q0 0.32654 0.0644 0.46832 0.0687 0.13749 0.24491 0.13749 0.0902 0 0.15897-0.0344 0.073-0.0387 0.1289-0.0988 0.0558-0.0601 0.0988-0.13749 0.043-0.0773 0.0687-0.15897v-1.4909h0.30935v1.5382q0 0.15467 9e-3 0.32224 0.0129 0.16327 0.0344 0.28787h-0.21913l-0.0773-0.30076h-0.0129q-0.073 0.14179-0.21053 0.2492-0.13749 0.10312-0.34373 0.10312-0.13749 0-0.2406-0.0344-0.10312-0.0344-0.17616-0.1246-0.073-0.0902-0.11171-0.2449-0.0344-0.15897-0.0344-0.40387v-1.3921z"/>
<path d="m-614.35-320h0.26209v-0.42536l0.30935-0.0988v0.52418h0.46402v0.27927h-0.46402v1.2804q0 0.18905 0.043 0.27498 0.0473 0.0816 0.15038 0.0816 0.0859 0 0.14608-0.0172 0.0645-0.0215 0.13749-0.0516l0.0601 0.2449q-0.0945 0.0473-0.21053 0.073-0.11171 0.0301-0.23631 0.0301-0.21482 0-0.30935-0.13749-0.0902-0.14179-0.0902-0.45543v-1.3233h-0.26209z"/>
<path d="m-630.37-312.83q0.0859 0.0516 0.20194 0.0902 0.1203 0.0344 0.2449 0.0344 0.14179 0 0.24061-0.0687 0.0988-0.073 0.0988-0.23201 0-0.13319-0.0602-0.21912-0.0602-0.0859-0.15468-0.15468-0.0902-0.0687-0.19764-0.1246-0.10741-0.0602-0.20193-0.14179-0.0902-0.0816-0.15038-0.19334-0.0602-0.11171-0.0602-0.28357 0-0.27498 0.14608-0.41247 0.15038-0.14179 0.42106-0.14179 0.17616 0 0.30505 0.0344 0.1289 0.0301 0.22342 0.0859l-0.0816 0.25779q-0.0816-0.043-0.18905-0.0687-0.10741-0.0301-0.21912-0.0301-0.15468 0-0.22772 0.0645-0.0687 0.0644-0.0687 0.20194 0 0.10741 0.0602 0.18475 0.0601 0.073 0.15038 0.13749 0.0945 0.0601 0.20193 0.1246 0.10742 0.0644 0.19764 0.15467 0.0945 0.0859 0.15468 0.21053 0.0602 0.1203 0.0602 0.30506 0 0.1203-0.0387 0.22771-0.0387 0.10742-0.1203 0.18905-0.0773 0.0773-0.19764 0.1246-0.11601 0.0473-0.27498 0.0473-0.18905 0-0.32654-0.0387-0.13749-0.0344-0.23201-0.0945z"/>
<path d="m-629.1-314.63h0.26209v-0.42535l0.30935-0.0988v0.52417h0.46403v0.27928h-0.46403v1.2804q0 0.18905 0.043 0.27498 0.0473 0.0816 0.15037 0.0816 0.0859 0 0.14609-0.0172 0.0645-0.0215 0.13749-0.0516l0.0601 0.2449q-0.0945 0.0473-0.21053 0.073-0.11171 0.0301-0.23631 0.0301-0.21483 0-0.30935-0.13749-0.0902-0.14179-0.0902-0.45544v-1.3233h-0.26209z"/>
<path d="m-627.72-314.5q0.1246-0.0773 0.30076-0.1203 0.18045-0.043 0.3781-0.043 0.18045 0 0.28786 0.0559 0.11171 0.0516 0.17187 0.14608 0.0644 0.0902 0.0816 0.21053 0.0215 0.11601 0.0215 0.2449 0 0.25779-0.0129 0.5027-9e-3 0.2449-9e-3 0.46402 0 0.16327 9e-3 0.30506 0.0129 0.13749 0.043 0.26209h-0.23631l-0.073-0.2535h-0.0172q-0.0644 0.11171-0.18905 0.19335-0.1246 0.0816-0.33513 0.0816-0.23201 0-0.38239-0.15897-0.14608-0.16327-0.14608-0.44684 0-0.18475 0.0602-0.30935 0.0644-0.1246 0.17616-0.20194 0.116-0.0773 0.27068-0.10741 0.15897-0.0344 0.35232-0.0344 0.043 0 0.0859 0 0.043 0 0.0902 4e-3 0.0129-0.13319 0.0129-0.23631 0-0.2449-0.073-0.34372-0.073-0.0988-0.26638-0.0988-0.12031 0-0.26209 0.0387-0.14179 0.0344-0.23631 0.0902zm0.93235 1.0398q-0.043-4e-3 -0.0859-4e-3 -0.043-4e-3 -0.0859-4e-3 -0.10312 0-0.20194 0.0172-0.0988 0.0172-0.17616 0.0602-0.0773 0.043-0.1246 0.116-0.043 0.073-0.043 0.18476 0 0.17186 0.0816 0.26638 0.0859 0.0945 0.21913 0.0945 0.18045 0 0.27927-0.0859 0.0988-0.0859 0.13749-0.18904z"/>
<path d="m-626.2-314.63h0.26209v-0.42535l0.30935-0.0988v0.52417h0.46403v0.27928h-0.46403v1.2804q0 0.18905 0.043 0.27498 0.0473 0.0816 0.15038 0.0816 0.0859 0 0.14608-0.0172 0.0644-0.0215 0.13749-0.0516l0.0602 0.2449q-0.0945 0.0473-0.21053 0.073-0.11171 0.0301-0.23631 0.0301-0.21483 0-0.30935-0.13749-0.0902-0.14179-0.0902-0.45544v-1.3233h-0.26209z"/>
<path d="m-623.55-312.63q-0.10312 0.0945-0.26209 0.14608-0.15898 0.0516-0.33513 0.0516-0.20194 0-0.35232-0.0773-0.14608-0.0816-0.2449-0.22771-0.0945-0.15038-0.14179-0.35661-0.043-0.20624-0.043-0.46403 0-0.54996 0.20193-0.83783 0.20194-0.28787 0.57144-0.28787 0.12031 0 0.23631 0.0301 0.12031 0.0301 0.21483 0.1203 0.0945 0.0902 0.15038 0.2535 0.0602 0.16327 0.0602 0.42536 0 0.073-9e-3 0.15897-4e-3 0.0816-0.0129 0.17186h-1.0913q0 0.18475 0.0301 0.33513t0.0945 0.25779q0.0644 0.10312 0.16326 0.16327 0.10312 0.0559 0.2535 0.0559 0.11601 0 0.22772-0.043 0.116-0.043 0.17616-0.10312zm-0.24061-1.1515q9e-3 -0.32224-0.0902-0.47262-0.0988-0.15038-0.27068-0.15038-0.19764 0-0.31365 0.15038-0.116 0.15038-0.13749 0.47262z"/>
</g>
<g dominant-baseline="auto" stroke-width=".10741" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal" aria-label="accept rx writeable closed heartbeat">
<path d="m-611.51-1.7517q0.12459-0.077338 0.30075-0.1203 0.18046-0.042965 0.3781-0.042965 0.18045 0 0.28787 0.055855 0.11171 0.051559 0.17186 0.14608 0.0644 0.090227 0.0816 0.21053 0.0215 0.11601 0.0215 0.2449 0 0.25779-0.0129 0.5027-9e-3 0.2449-9e-3 0.46403 0 0.16327 9e-3 0.30505 0.0129 0.13749 0.043 0.26209h-0.23631l-0.073-0.2535h-0.0172q-0.0644 0.11171-0.18904 0.19334-0.1246 0.081634-0.33513 0.081634-0.23202 0-0.3824-0.15897-0.14608-0.16327-0.14608-0.44684 0-0.18475 0.0601-0.30935 0.0645-0.1246 0.17616-0.20194 0.11601-0.077338 0.27068-0.10741 0.15898-0.034372 0.35232-0.034372 0.043 0 0.0859 0 0.043 0 0.0902 0.004297 0.0129-0.13319 0.0129-0.23631 0-0.2449-0.073-0.34372-0.073-0.09882-0.26639-0.09882-0.1203 0-0.26209 0.038669-0.14178 0.034372-0.23631 0.090227zm0.93234 1.0398q-0.043-0.004297-0.0859-0.004297-0.043-0.004297-0.0859-0.004297-0.10311 0-0.20193 0.017186-0.0988 0.017186-0.17616 0.060152-0.0773 0.042965-0.1246 0.11601-0.043 0.073041-0.043 0.18475 0 0.17186 0.0816 0.26639 0.0859 0.094524 0.21912 0.094524 0.18045 0 0.27928-0.085931 0.0988-0.085931 0.13748-0.18905z"/>
<path d="m-608.58 0.16027q-0.10742 0.081634-0.2449 0.1203-0.13749 0.038669-0.28787 0.038669-0.20624 0-0.34802-0.077338-0.14179-0.081634-0.23202-0.22772-0.0859-0.15038-0.12889-0.35661-0.0387-0.21053-0.0387-0.46403 0-0.54996 0.19334-0.83783 0.19764-0.28787 0.56285-0.28787 0.16757 0 0.28787 0.030076t0.20623 0.077338l-0.0859 0.27068q-0.17186-0.09882-0.3738-0.09882-0.23201 0-0.35231 0.20623-0.11601 0.20194-0.11601 0.64018 0 0.17616 0.0258 0.33083t0.0859 0.27068q0.0602 0.11171 0.15468 0.18045 0.0945 0.064448 0.2363 0.064448 0.11171 0 0.20624-0.038669 0.0988-0.038669 0.15897-0.090227z"/>
<path d="m-607.13 0.16027q-0.10741 0.081634-0.2449 0.1203-0.13749 0.038669-0.28787 0.038669-0.20624 0-0.34802-0.077338-0.14179-0.081634-0.23202-0.22772-0.0859-0.15038-0.12889-0.35661-0.0387-0.21053-0.0387-0.46403 0-0.54996 0.19334-0.83783 0.19765-0.28787 0.56285-0.28787 0.16757 0 0.28787 0.030076t0.20623 0.077338l-0.0859 0.27068q-0.17186-0.09882-0.3738-0.09882-0.23201 0-0.35231 0.20623-0.11601 0.20194-0.11601 0.64018 0 0.17616 0.0258 0.33083t0.0859 0.27068q0.0602 0.11171 0.15468 0.18045 0.0945 0.064448 0.23631 0.064448 0.11171 0 0.20623-0.038669 0.0988-0.038669 0.15897-0.090227z"/>
<path d="m-605.58 0.12161q-0.10312 0.094524-0.26209 0.14608t-0.33513 0.051558q-0.20194 0-0.35231-0.077338-0.14609-0.081634-0.24491-0.22772-0.0945-0.15038-0.14178-0.35661-0.043-0.20623-0.043-0.46403 0-0.54996 0.20194-0.83783t0.57144-0.28787q0.1203 0 0.23631 0.030076 0.1203 0.030076 0.21483 0.1203 0.0945 0.090227 0.15037 0.2535 0.0602 0.16327 0.0602 0.42536 0 0.073041-9e-3 0.15897-4e-3 0.081634-0.0129 0.17186h-1.0913q0 0.18475 0.0301 0.33513t0.0945 0.25779q0.0644 0.10312 0.16327 0.16327 0.10312 0.055855 0.2535 0.055855 0.116 0 0.22771-0.042965 0.11601-0.042965 0.17616-0.10312zm-0.24061-1.1515q9e-3 -0.32224-0.0902-0.47262-0.0988-0.15038-0.27068-0.15038-0.19765 0-0.31365 0.15038-0.11601 0.15038-0.13749 0.47262z"/>
<path d="m-605.1-1.8806h0.21912l0.0473 0.23201h0.0172q0.15897-0.28357 0.4984-0.28357t0.50699 0.2535q0.17186 0.2535 0.17186 0.82923 0 0.27068-0.0558 0.48981-0.0559 0.21483-0.15897 0.3695-0.10312 0.15038-0.2535 0.23201-0.14608 0.077338-0.32654 0.077338-0.1246 0-0.19764-0.017186-0.073-0.01289-0.15897-0.060152v0.88509h-0.30935zm0.30935 1.8088q0.0602 0.051558 0.13319 0.081634 0.0773 0.030076 0.20194 0.030076 0.22772 0 0.36091-0.23201t0.13319-0.66167q0-0.18045-0.0258-0.32654-0.0215-0.14608-0.073-0.2492-0.0516-0.10741-0.13319-0.16327-0.0773-0.060152-0.19334-0.060152-0.31365 0-0.40388 0.38239z"/>
<path d="m-603.44-1.8806h0.26209v-0.42536l0.30935-0.09882v0.52418h0.46402v0.27928h-0.46402v1.2804q0 0.18905 0.043 0.27498 0.0473 0.081634 0.15038 0.081634 0.0859 0 0.14608-0.017186 0.0644-0.021483 0.13749-0.051558l0.0602 0.2449q-0.0945 0.047262-0.21053 0.073041-0.11171 0.030076-0.23631 0.030076-0.21483 0-0.30936-0.13749-0.0902-0.14179-0.0902-0.45543v-1.3233h-0.26209z"/>
<path d="m-604.99 3.4901h0.21913l0.0559 0.22772h0.0129q0.0602-0.1246 0.15468-0.19334 0.0988-0.073041 0.23631-0.073041 0.0988 0 0.22342 0.038669l-0.0602 0.31365q-0.11171-0.038669-0.19764-0.038669-0.13749 0-0.22342 0.081634-0.0859 0.077338-0.11171 0.21053v1.5811h-0.30935z"/>
<path d="m-603.37 4.5384-0.56714-1.0484h0.3695l0.31795 0.61441 0.0859 0.24061 0.0902-0.24061 0.32653-0.61441h0.33943l-0.57144 1.0312 0.60581 1.1171h-0.35231l-0.36091-0.67456-0.0945-0.25779-0.0988 0.25779-0.36091 0.67456h-0.33942z"/>
<path d="m-614.81 8.8608 0.38239 1.2546 0.0773 0.41247h9e-3l0.0645-0.42106 0.29217-1.246h0.29216l-0.57144 2.1955h-0.17616l-0.43395-1.4093-0.0602-0.36091h-9e-3l-0.0602 0.36521-0.42107 1.405h-0.17615l-0.58863-2.1955h0.33083l0.33084 1.2503 0.0516 0.41676h9e-3l0.0773-0.42536 0.35231-1.2417z"/>
<path d="m-613.42 8.8608h0.21912l0.0559 0.22772h0.0129q0.0602-0.1246 0.15467-0.19334 0.0988-0.073041 0.23631-0.073041 0.0988 0 0.22342 0.038669l-0.0601 0.31365q-0.11171-0.038669-0.19764-0.038669-0.13749 0-0.22342 0.081634-0.0859 0.077338-0.11171 0.21053v1.5811h-0.30935z"/>
<path d="m-612.19 8.8608h0.30935v2.1483h-0.30935zm-0.0559-0.65307q0-0.10312 0.0559-0.16757 0.0601-0.064448 0.15467-0.064448 0.0945 0 0.15468 0.064448 0.0644 0.060152 0.0644 0.16757 0 0.10312-0.0644 0.16327-0.0602 0.055855-0.15468 0.055855-0.0945 0-0.15467-0.060152-0.0559-0.060151-0.0559-0.15897z"/>
<path d="m-611.53 8.8608h0.26209v-0.42536l0.30935-0.09882v0.52418h0.46402v0.27927h-0.46402v1.2804q0 0.18905 0.043 0.27498 0.0473 0.08163 0.15038 0.08163 0.0859 0 0.14608-0.01719 0.0645-0.02148 0.13749-0.05156l0.0602 0.2449q-0.0945 0.04726-0.21053 0.07304-0.11171 0.03008-0.23631 0.03008-0.21482 0-0.30935-0.13749-0.0902-0.14179-0.0902-0.45543v-1.3233h-0.26209z"/>
<path d="m-608.88 10.863q-0.10312 0.09452-0.26209 0.14608-0.15897 0.05156-0.33513 0.05156-0.20194 0-0.35232-0.07734-0.14608-0.08163-0.2449-0.22772-0.0945-0.15038-0.14179-0.35661-0.043-0.20623-0.043-0.46403 0-0.54996 0.20194-0.83783 0.20193-0.28787 0.57144-0.28787 0.1203 0 0.23631 0.030076 0.1203 0.030076 0.21482 0.1203 0.0945 0.090227 0.15038 0.2535 0.0602 0.16327 0.0602 0.42536 0 0.073041-9e-3 0.15897-4e-3 0.081634-0.0129 0.17186h-1.0913q0 0.18475 0.0301 0.33513t0.0945 0.25779q0.0644 0.10312 0.16327 0.16327 0.10312 0.05585 0.25349 0.05585 0.11601 0 0.22772-0.04297 0.11601-0.04297 0.17616-0.10312zm-0.24061-1.1515q9e-3 -0.32224-0.0902-0.47262-0.0988-0.15038-0.27069-0.15038-0.19764 0-0.31364 0.15038-0.11601 0.15038-0.13749 0.47262z"/>
<path d="m-608.42 8.9897q0.1246-0.077338 0.30075-0.1203 0.18046-0.042965 0.3781-0.042965 0.18045 0 0.28787 0.055855 0.11171 0.051559 0.17186 0.14608 0.0645 0.090227 0.0816 0.21053 0.0215 0.11601 0.0215 0.2449 0 0.25779-0.0129 0.5027-9e-3 0.2449-9e-3 0.46403 0 0.16327 9e-3 0.30506 0.0129 0.13749 0.043 0.26209h-0.23631l-0.073-0.2535h-0.0172q-0.0644 0.11171-0.18904 0.19334-0.1246 0.08163-0.33513 0.08163-0.23202 0-0.3824-0.15897-0.14608-0.16327-0.14608-0.44684 0-0.18475 0.0602-0.30935 0.0644-0.1246 0.17616-0.20194 0.11601-0.077338 0.27068-0.10741 0.15898-0.034372 0.35232-0.034372 0.043 0 0.0859 0 0.043 0 0.0902 0.0043 0.0129-0.13319 0.0129-0.23631 0-0.2449-0.073-0.34372-0.073-0.098821-0.26639-0.098821-0.1203 0-0.26209 0.038669-0.14178 0.034372-0.23631 0.090227zm0.93235 1.0398q-0.043-0.0043-0.0859-0.0043-0.043-0.0043-0.0859-0.0043-0.10311 0-0.20193 0.01719-0.0988 0.01719-0.17616 0.06015-0.0773 0.04297-0.1246 0.11601-0.043 0.07304-0.043 0.18475 0 0.17186 0.0816 0.26638 0.0859 0.09452 0.21912 0.09452 0.18046 0 0.27928-0.08593 0.0988-0.08593 0.13749-0.18905z"/>
<path d="m-606.67 8.0015h0.30935v1.0226h0.0129q0.17616-0.21483 0.46833-0.21483 0.33083 0 0.4941 0.26209 0.16756 0.26209 0.16756 0.82923 0 0.58003-0.22342 0.86361-0.21912 0.28357-0.62299 0.28357-0.19765 0-0.36091-0.04296-0.16327-0.04726-0.24491-0.10741zm0.30935 2.6939q0.0602 0.03437 0.14609 0.05586 0.0902 0.01719 0.18904 0.01719 0.22342 0 0.35232-0.21053 0.13319-0.21483 0.13319-0.65737 0-0.18475-0.0258-0.33083-0.0215-0.15038-0.073-0.25779-0.0473-0.10741-0.12889-0.16327-0.0773-0.060151-0.18905-0.060151-0.15468 0-0.25779 0.094524-0.0988 0.090227-0.14609 0.2492z"/>
<path d="m-604.48 10.498q0 0.15038 0.0387 0.21483 0.043 0.06445 0.11601 0.06445 0.0902 0 0.21053-0.04726l0.0301 0.2492q-0.0558 0.03437-0.15897 0.05585-0.0988 0.02148-0.18045 0.02148-0.16327 0-0.26639-0.09882-0.0988-0.10312-0.0988-0.35661v-2.5994h0.30935z"/>
<path d="m-602.53 10.863q-0.10311 0.09452-0.26209 0.14608-0.15897 0.05156-0.33513 0.05156-0.20193 0-0.35231-0.07734-0.14608-0.08163-0.24491-0.22772-0.0945-0.15038-0.14178-0.35661-0.043-0.20623-0.043-0.46403 0-0.54996 0.20194-0.83783 0.20194-0.28787 0.57144-0.28787 0.1203 0 0.23631 0.030076 0.1203 0.030076 0.21483 0.1203 0.0945 0.090227 0.15038 0.2535 0.0602 0.16327 0.0602 0.42536 0 0.073041-9e-3 0.15897-4e-3 0.081634-0.0129 0.17186h-1.0913q0 0.18475 0.0301 0.33513t0.0945 0.25779q0.0644 0.10312 0.16327 0.16327 0.10312 0.05585 0.2535 0.05585 0.116 0 0.22771-0.04297 0.11601-0.04297 0.17616-0.10312zm-0.2406-1.1515q9e-3 -0.32224-0.0902-0.47262-0.0988-0.15038-0.27068-0.15038-0.19764 0-0.31365 0.15038t-0.13749 0.47262z"/>
<path d="m-610.32 16.272q-0.10741 0.08163-0.2449 0.1203-0.13749 0.03867-0.28787 0.03867-0.20624 0-0.34802-0.07734-0.14179-0.08163-0.23201-0.22772-0.0859-0.15038-0.1289-0.35661-0.0387-0.21053-0.0387-0.46403 0-0.54996 0.19335-0.83783 0.19764-0.28787 0.56284-0.28787 0.16757 0 0.28787 0.03008t0.20623 0.07734l-0.0859 0.27068q-0.17186-0.09882-0.3738-0.09882-0.23201 0-0.35231 0.20623-0.11601 0.20194-0.11601 0.64018 0 0.17616 0.0258 0.33083 0.0258 0.15468 0.0859 0.27068 0.0602 0.11171 0.15468 0.18046 0.0945 0.06445 0.23631 0.06445 0.11171 0 0.20623-0.03867 0.0988-0.03867 0.15897-0.09023z"/>
<path d="m-609.65 15.868q0 0.15038 0.0387 0.21483 0.043 0.06445 0.11601 0.06445 0.0902 0 0.21053-0.04726l0.0301 0.2492q-0.0559 0.03437-0.15898 0.05586-0.0988 0.02148-0.18045 0.02148-0.16327 0-0.26639-0.09882-0.0988-0.10312-0.0988-0.35661v-2.5994h0.30935z"/>
<path d="m-609.08 15.306q0-0.58003 0.19764-0.85072 0.20194-0.27498 0.57144-0.27498 0.39528 0 0.58003 0.27928 0.18905 0.27928 0.18905 0.84642 0 0.58433-0.20194 0.85501t-0.56714 0.27068q-0.39528 0-0.58433-0.27928-0.18475-0.27928-0.18475-0.84642zm0.32224 0q0 0.18905 0.0215 0.34372 0.0258 0.15468 0.0773 0.26639 0.0559 0.11171 0.14178 0.17616 0.0859 0.06015 0.20624 0.06015 0.22342 0 0.33513-0.19764 0.11171-0.20194 0.11171-0.64878 0-0.18475-0.0258-0.33943-0.0215-0.15897-0.0773-0.27068-0.0516-0.11171-0.13749-0.17186-0.0859-0.06445-0.20623-0.06445-0.21913 0-0.33513 0.20194-0.11171 0.20194-0.11171 0.64448z"/>
<path d="m-607.16 16.027q0.0859 0.05156 0.20194 0.09023 0.1203 0.03437 0.2449 0.03437 0.14179 0 0.24061-0.06874 0.0988-0.07304 0.0988-0.23201 0-0.13319-0.0602-0.21912-0.0602-0.08593-0.15468-0.15468-0.0902-0.06874-0.19764-0.1246-0.10741-0.06015-0.20194-0.14179-0.0902-0.08164-0.15038-0.19334-0.0601-0.11171-0.0601-0.28357 0-0.27498 0.14608-0.41247 0.15038-0.14179 0.42106-0.14179 0.17616 0 0.30506 0.03437 0.1289 0.03008 0.22342 0.08593l-0.0816 0.25779q-0.0816-0.04297-0.18905-0.06874-0.10742-0.03008-0.21913-0.03008-0.15467 0-0.22771 0.06445-0.0687 0.06445-0.0687 0.20194 0 0.10741 0.0601 0.18475 0.0602 0.07304 0.15038 0.13749 0.0945 0.06015 0.20194 0.1246 0.10741 0.06445 0.19764 0.15468 0.0945 0.08593 0.15468 0.21053 0.0602 0.1203 0.0602 0.30505 0 0.1203-0.0387 0.22772t-0.1203 0.18905q-0.0773 0.07734-0.19764 0.1246-0.11601 0.04726-0.27498 0.04726-0.18905 0-0.32654-0.03867-0.13749-0.03437-0.23201-0.09452z"/>
<path d="m-604.39 16.234q-0.10312 0.09452-0.26209 0.14608-0.15897 0.05156-0.33513 0.05156-0.20194 0-0.35232-0.07734-0.14608-0.08163-0.2449-0.22772-0.0945-0.15038-0.14178-0.35661-0.043-0.20623-0.043-0.46403 0-0.54996 0.20194-0.83783 0.20193-0.28787 0.57144-0.28787 0.1203 0 0.23631 0.03008 0.1203 0.03008 0.21482 0.1203 0.0945 0.09023 0.15038 0.2535 0.0602 0.16327 0.0602 0.42536 0 0.07304-9e-3 0.15897-4e-3 0.08164-0.0129 0.17186h-1.0913q0 0.18475 0.0301 0.33513t0.0945 0.25779q0.0644 0.10312 0.16327 0.16327 0.10312 0.05586 0.25349 0.05586 0.11601 0 0.22772-0.04297 0.11601-0.04297 0.17616-0.10312zm-0.24061-1.1515q9e-3 -0.32224-0.0902-0.47262-0.0988-0.15038-0.27069-0.15038-0.19764 0-0.31364 0.15038-0.11601 0.15038-0.13749 0.47262z"/>
<path d="m-602.55 15.641q0 0.21912 4e-3 0.39958 4e-3 0.17616 0.0301 0.34802h-0.21053l-0.0687-0.25779h-0.0172q-0.0602 0.1289-0.18905 0.21483-0.12889 0.08593-0.30935 0.08593-0.34802 0-0.51988-0.27068-0.16757-0.27068-0.16757-0.85072 0-0.54996 0.20624-0.83353 0.21053-0.28357 0.57574-0.28357 0.12459 0 0.19764 0.01719 0.073 0.01289 0.15897 0.04726v-0.88509h0.30935zm-0.30935-1.0698q-0.0601-0.05156-0.13749-0.07304-0.073-0.02578-0.19764-0.02578-0.22772 0-0.35662 0.20623-0.12459 0.20623-0.12459 0.63589 0 0.18905 0.0215 0.34372 0.0258 0.15038 0.073 0.26209 0.0516 0.11171 0.1289 0.17186 0.0816 0.06015 0.19764 0.06015 0.30935 0 0.39528-0.36521z"/>
<path d="m-615.32 21.75v-1.3061q0-0.30076-0.073-0.45543-0.0687-0.15897-0.27927-0.15897-0.15038 0-0.27498 0.10741-0.1203 0.10741-0.16327 0.27068v1.5425h-0.30935v-3.0076h0.30935v1.0612h0.0129q0.0859-0.11171 0.21053-0.18045 0.1289-0.07304 0.31795-0.07304 0.14178 0 0.2449 0.03867 0.10741 0.03867 0.17616 0.13319 0.0687 0.09452 0.10311 0.2535 0.0344 0.15468 0.0344 0.38669v1.3878z"/>
<path d="m-613.24 21.604q-0.10311 0.09452-0.26208 0.14608-0.15898 0.05156-0.33513 0.05156-0.20194 0-0.35232-0.07734-0.14608-0.08163-0.2449-0.22772-0.0945-0.15038-0.14179-0.35661-0.043-0.20623-0.043-0.46403 0-0.54996 0.20193-0.83782 0.20194-0.28787 0.57144-0.28787 0.12031 0 0.23631 0.03008 0.12031 0.03008 0.21483 0.1203 0.0945 0.09023 0.15038 0.2535 0.0602 0.16327 0.0602 0.42536 0 0.07304-9e-3 0.15897-4e-3 0.08163-0.0129 0.17186h-1.0913q0 0.18475 0.0301 0.33513t0.0945 0.25779q0.0644 0.10312 0.16326 0.16327 0.10312 0.05586 0.2535 0.05586 0.11601 0 0.22772-0.04297 0.116-0.04297 0.17615-0.10312zm-0.2406-1.1515q9e-3 -0.32224-0.0902-0.47262-0.0988-0.15038-0.27068-0.15038-0.19764 0-0.31365 0.15038-0.116 0.15038-0.13749 0.47262z"/>
<path d="m-612.78 19.731q0.1246-0.07734 0.30076-0.1203 0.18045-0.04296 0.37809-0.04296 0.18046 0 0.28787 0.05585 0.11171 0.05156 0.17186 0.14608 0.0644 0.09023 0.0816 0.21053 0.0215 0.11601 0.0215 0.2449 0 0.25779-0.0129 0.5027-9e-3 0.2449-9e-3 0.46403 0 0.16327 9e-3 0.30506 0.0129 0.13749 0.043 0.26209h-0.23631l-0.073-0.2535h-0.0172q-0.0644 0.11171-0.18905 0.19334-0.1246 0.08163-0.33513 0.08163-0.23201 0-0.38239-0.15897-0.14608-0.16327-0.14608-0.44684 0-0.18475 0.0602-0.30935 0.0644-0.1246 0.17616-0.20194 0.116-0.07734 0.27068-0.10741 0.15897-0.03437 0.35232-0.03437 0.043 0 0.0859 0 0.043 0 0.0902 0.0043 0.0129-0.13319 0.0129-0.23631 0-0.2449-0.073-0.34372-0.073-0.09882-0.26638-0.09882-0.12031 0-0.26209 0.03867-0.14179 0.03437-0.23631 0.09023zm0.93235 1.0398q-0.043-0.0043-0.0859-0.0043-0.043-0.0043-0.0859-0.0043-0.10312 0-0.20194 0.01719-0.0988 0.01719-0.17616 0.06015-0.0773 0.04296-0.1246 0.11601-0.043 0.07304-0.043 0.18475 0 0.17186 0.0816 0.26638 0.0859 0.09452 0.21913 0.09452 0.18045 0 0.27927-0.08593 0.0988-0.08593 0.13749-0.18905z"/>
<path d="m-611.04 19.602h0.21912l0.0559 0.22772h0.0129q0.0602-0.1246 0.15467-0.19334 0.0988-0.07304 0.23631-0.07304 0.0988 0 0.22342 0.03867l-0.0601 0.31365q-0.11171-0.03867-0.19764-0.03867-0.13749 0-0.22342 0.08163-0.0859 0.07734-0.11171 0.21053v1.5811h-0.30935z"/>
<path d="m-609.98 19.602h0.26209v-0.42536l0.30935-0.09882v0.52418h0.46402v0.27928h-0.46402v1.2804q0 0.18905 0.043 0.27498 0.0473 0.08163 0.15038 0.08163 0.0859 0 0.14608-0.01719 0.0645-0.02148 0.13749-0.05156l0.0602 0.2449q-0.0945 0.04726-0.21054 0.07304-0.11171 0.03008-0.23631 0.03008-0.21482 0-0.30935-0.13749-0.0902-0.14179-0.0902-0.45543v-1.3233h-0.26209z"/>
<path d="m-608.58 18.743h0.30935v1.0226h0.0129q0.17616-0.21483 0.46833-0.21483 0.33083 0 0.4941 0.26209 0.16756 0.26209 0.16756 0.82923 0 0.58003-0.22342 0.8636-0.21912 0.28357-0.623 0.28357-0.19764 0-0.36091-0.04297-0.16326-0.04726-0.2449-0.10741zm0.30935 2.6939q0.0602 0.03437 0.14609 0.05586 0.0902 0.01719 0.18904 0.01719 0.22342 0 0.35232-0.21053 0.13319-0.21483 0.13319-0.65737 0-0.18475-0.0258-0.33083-0.0215-0.15038-0.073-0.25779-0.0473-0.10741-0.12889-0.16327-0.0773-0.06015-0.18905-0.06015-0.15468 0-0.25779 0.09452-0.0988 0.09023-0.14609 0.2492z"/>
<path d="m-605.43 21.604q-0.10312 0.09452-0.26209 0.14608-0.15897 0.05156-0.33513 0.05156-0.20194 0-0.35231-0.07734-0.14609-0.08163-0.24491-0.22772-0.0945-0.15038-0.14178-0.35661-0.043-0.20623-0.043-0.46403 0-0.54996 0.20194-0.83782 0.20194-0.28787 0.57144-0.28787 0.1203 0 0.23631 0.03008 0.1203 0.03008 0.21483 0.1203 0.0945 0.09023 0.15037 0.2535 0.0602 0.16327 0.0602 0.42536 0 0.07304-9e-3 0.15897-4e-3 0.08163-0.0129 0.17186h-1.0913q0 0.18475 0.0301 0.33513t0.0945 0.25779q0.0644 0.10312 0.16327 0.16327 0.10312 0.05586 0.2535 0.05586 0.116 0 0.22771-0.04297 0.11601-0.04297 0.17616-0.10312zm-0.24061-1.1515q9e-3 -0.32224-0.0902-0.47262-0.0988-0.15038-0.27068-0.15038-0.19765 0-0.31365 0.15038-0.11601 0.15038-0.13749 0.47262z"/>
<path d="m-604.97 19.731q0.1246-0.07734 0.30076-0.1203 0.18045-0.04296 0.37809-0.04296 0.18046 0 0.28787 0.05585 0.11171 0.05156 0.17186 0.14608 0.0645 0.09023 0.0816 0.21053 0.0215 0.11601 0.0215 0.2449 0 0.25779-0.0129 0.5027-9e-3 0.2449-9e-3 0.46403 0 0.16327 9e-3 0.30506 0.0129 0.13749 0.043 0.26209h-0.23631l-0.073-0.2535h-0.0172q-0.0645 0.11171-0.18905 0.19334-0.1246 0.08163-0.33513 0.08163-0.23201 0-0.38239-0.15897-0.14609-0.16327-0.14609-0.44684 0-0.18475 0.0602-0.30935 0.0644-0.1246 0.17615-0.20194 0.11601-0.07734 0.27069-0.10741 0.15897-0.03437 0.35231-0.03437 0.043 0 0.0859 0 0.043 0 0.0902 0.0043 0.0129-0.13319 0.0129-0.23631 0-0.2449-0.073-0.34372-0.073-0.09882-0.26639-0.09882-0.1203 0-0.26209 0.03867-0.14178 0.03437-0.23631 0.09023zm0.93235 1.0398q-0.043-0.0043-0.0859-0.0043-0.043-0.0043-0.0859-0.0043-0.10312 0-0.20194 0.01719-0.0988 0.01719-0.17616 0.06015-0.0773 0.04296-0.1246 0.11601-0.043 0.07304-0.043 0.18475 0 0.17186 0.0816 0.26638 0.0859 0.09452 0.21912 0.09452 0.18046 0 0.27928-0.08593 0.0988-0.08593 0.13749-0.18905z"/>
<path d="m-603.44 19.602h0.26209v-0.42536l0.30935-0.09882v0.52418h0.46402v0.27928h-0.46402v1.2804q0 0.18905 0.043 0.27498 0.0473 0.08163 0.15038 0.08163 0.0859 0 0.14609-0.01719 0.0644-0.02148 0.13748-0.05156l0.0602 0.2449q-0.0945 0.04726-0.21053 0.07304-0.11171 0.03008-0.23631 0.03008-0.21483 0-0.30936-0.13749-0.0902-0.14179-0.0902-0.45543v-1.3233h-0.26209z"/>
<path d="m-539.98-339.16q0.1246-0.0773 0.30076-0.1203 0.18045-0.043 0.37809-0.043 0.18046 0 0.28787 0.0559 0.11171 0.0516 0.17186 0.14608 0.0644 0.0902 0.0816 0.21053 0.0215 0.11601 0.0215 0.24491 0 0.25779-0.0129 0.50269-9e-3 0.2449-9e-3 0.46403 0 0.16327 9e-3 0.30505 0.0129 0.13749 0.043 0.26209h-0.23631l-0.073-0.25349h-0.0172q-0.0644 0.11171-0.18905 0.19334-0.1246 0.0816-0.33513 0.0816-0.23201 0-0.38239-0.15897-0.14608-0.16327-0.14608-0.44684 0-0.18475 0.0602-0.30935 0.0644-0.1246 0.17616-0.20194 0.116-0.0773 0.27068-0.10741 0.15897-0.0344 0.35232-0.0344 0.043 0 0.0859 0 0.043 0 0.0902 4e-3 0.0129-0.13319 0.0129-0.23631 0-0.2449-0.073-0.34372-0.073-0.0988-0.26638-0.0988-0.12031 0-0.26209 0.0387-0.14179 0.0344-0.23631 0.0902zm0.93235 1.0398q-0.043-4e-3 -0.0859-4e-3 -0.043-4e-3 -0.0859-4e-3 -0.10312 0-0.20194 0.0172-0.0988 0.0172-0.17616 0.0601-0.0773 0.043-0.1246 0.11601-0.043 0.073-0.043 0.18475 0 0.17186 0.0816 0.26639 0.0859 0.0945 0.21913 0.0945 0.18045 0 0.27927-0.0859 0.0988-0.0859 0.13749-0.18905z"/>
<path d="m-537.05-337.25q-0.10741 0.0816-0.2449 0.12031-0.13749 0.0387-0.28787 0.0387-0.20623 0-0.34802-0.0773-0.14178-0.0816-0.23201-0.22772-0.0859-0.15038-0.1289-0.35661-0.0387-0.21053-0.0387-0.46403 0-0.54995 0.19335-0.83782 0.19764-0.28787 0.56285-0.28787 0.16756 0 0.28786 0.0301 0.12031 0.0301 0.20624 0.0773l-0.0859 0.27068q-0.17186-0.0988-0.3738-0.0988-0.23202 0-0.35232 0.20624-0.116 0.20194-0.116 0.64018 0 0.17616 0.0258 0.33084 0.0258 0.15467 0.0859 0.27068 0.0602 0.11171 0.15467 0.18045 0.0945 0.0645 0.23631 0.0645 0.11171 0 0.20623-0.0387 0.0988-0.0387 0.15898-0.0902z"/>
<path d="m-535.6-337.25q-0.10741 0.0816-0.2449 0.12031-0.13749 0.0387-0.28787 0.0387-0.20623 0-0.34802-0.0773-0.14178-0.0816-0.23201-0.22772-0.0859-0.15038-0.1289-0.35661-0.0387-0.21053-0.0387-0.46403 0-0.54995 0.19334-0.83782 0.19764-0.28787 0.56285-0.28787 0.16756 0 0.28786 0.0301 0.12031 0.0301 0.20624 0.0773l-0.0859 0.27068q-0.17186-0.0988-0.3738-0.0988-0.23201 0-0.35232 0.20624-0.116 0.20194-0.116 0.64018 0 0.17616 0.0258 0.33084 0.0258 0.15467 0.0859 0.27068 0.0601 0.11171 0.15467 0.18045 0.0945 0.0645 0.23631 0.0645 0.11171 0 0.20624-0.0387 0.0988-0.0387 0.15897-0.0902z"/>
<path d="m-534.05-337.29q-0.10312 0.0945-0.26209 0.14608-0.15897 0.0516-0.33513 0.0516-0.20194 0-0.35232-0.0773-0.14608-0.0816-0.2449-0.22772-0.0945-0.15038-0.14179-0.35661-0.043-0.20623-0.043-0.46403 0-0.54995 0.20193-0.83782 0.20194-0.28787 0.57144-0.28787 0.12031 0 0.23631 0.0301 0.12031 0.0301 0.21483 0.1203 0.0945 0.0902 0.15038 0.25349 0.0601 0.16327 0.0601 0.42536 0 0.073-9e-3 0.15897-4e-3 0.0816-0.0129 0.17187h-1.0913q0 0.18475 0.0301 0.33513 0.0301 0.15037 0.0945 0.25779 0.0644 0.10312 0.16327 0.16327 0.10311 0.0559 0.25349 0.0559 0.11601 0 0.22772-0.043 0.116-0.043 0.17616-0.10312zm-0.24061-1.1515q9e-3 -0.32224-0.0902-0.47262-0.0988-0.15038-0.27068-0.15038-0.19764 0-0.31365 0.15038-0.116 0.15038-0.13749 0.47262z"/>
<path d="m-533.56-339.29h0.21912l0.0473 0.23201h0.0172q0.15897-0.28357 0.4984-0.28357 0.33942 0 0.50699 0.2535 0.17186 0.25349 0.17186 0.82923 0 0.27068-0.0559 0.4898-0.0558 0.21483-0.15897 0.36951-0.10311 0.15037-0.25349 0.23201-0.14609 0.0773-0.32654 0.0773-0.1246 0-0.19764-0.0172-0.073-0.0129-0.15897-0.0602v0.88509h-0.30935zm0.30935 1.8088q0.0602 0.0516 0.13319 0.0816 0.0773 0.0301 0.20194 0.0301 0.22771 0 0.36091-0.23201 0.13319-0.23201 0.13319-0.66167 0-0.18045-0.0258-0.32654-0.0215-0.14608-0.073-0.2492-0.0516-0.10741-0.13319-0.16326-0.0773-0.0602-0.19335-0.0602-0.31365 0-0.40387 0.3824z"/>
<path d="m-531.91-339.29h0.26209v-0.42536l0.30935-0.0988v0.52418h0.46403v0.27927h-0.46403v1.2804q0 0.18905 0.043 0.27498 0.0473 0.0816 0.15038 0.0816 0.0859 0 0.14608-0.0172 0.0644-0.0215 0.13749-0.0516l0.0601 0.2449q-0.0945 0.0473-0.21053 0.073-0.11171 0.0301-0.23631 0.0301-0.21483 0-0.30935-0.13749-0.0902-0.14178-0.0902-0.45543v-1.3233h-0.26209z"/>
<path d="m-533.45-333.92h0.21912l0.0559 0.22772h0.0129q0.0602-0.1246 0.15467-0.19334 0.0988-0.073 0.23631-0.073 0.0988 0 0.22342 0.0387l-0.0602 0.31365q-0.11171-0.0387-0.19764-0.0387-0.13749 0-0.22342 0.0816-0.0859 0.0773-0.11171 0.21053v1.5811h-0.30935z"/>
<path d="m-531.84-332.87-0.56714-1.0484h0.3695l0.31794 0.61441 0.0859 0.24061 0.0902-0.24061 0.32654-0.61441h0.33942l-0.57143 1.0312 0.60581 1.1171h-0.35232l-0.36091-0.67455-0.0945-0.25779-0.0988 0.25779-0.36091 0.67455h-0.33943z"/>
<path d="m-543.28-328.55 0.38239 1.2546 0.0773 0.41247h9e-3l0.0644-0.42106 0.29216-1.246h0.29217l-0.57144 2.1955h-0.17616l-0.43395-1.4093-0.0602-0.36091h-9e-3l-0.0602 0.3652-0.42106 1.405h-0.17616l-0.58862-2.1955h0.33083l0.33083 1.2503 0.0516 0.41677h9e-3l0.0773-0.42536 0.35232-1.2417z"/>
<path d="m-541.89-328.55h0.21912l0.0559 0.22772h0.0129q0.0602-0.1246 0.15468-0.19335 0.0988-0.073 0.23631-0.073 0.0988 0 0.22342 0.0387l-0.0602 0.31365q-0.11171-0.0387-0.19764-0.0387-0.13749 0-0.22342 0.0816-0.0859 0.0773-0.11171 0.21053v1.5811h-0.30935z"/>
<path d="m-540.66-328.55h0.30935v2.1483h-0.30935zm-0.0558-0.65307q0-0.10312 0.0558-0.16757 0.0602-0.0644 0.15468-0.0644 0.0945 0 0.15467 0.0644 0.0644 0.0602 0.0644 0.16757 0 0.10311-0.0644 0.16327-0.0602 0.0558-0.15467 0.0558-0.0945 0-0.15468-0.0601-0.0558-0.0602-0.0558-0.15897z"/>
<path d="m-540-328.55h0.26209v-0.42536l0.30935-0.0988v0.52418h0.46403v0.27928h-0.46403v1.2804q0 0.18904 0.043 0.27497 0.0473 0.0816 0.15038 0.0816 0.0859 0 0.14608-0.0172 0.0644-0.0215 0.13749-0.0516l0.0602 0.24491q-0.0945 0.0473-0.21053 0.073-0.11171 0.0301-0.23631 0.0301-0.21483 0-0.30935-0.13749-0.0902-0.14178-0.0902-0.45543v-1.3233h-0.26209z"/>
<path d="m-537.35-326.55q-0.10311 0.0945-0.26208 0.14608-0.15898 0.0516-0.33513 0.0516-0.20194 0-0.35232-0.0773-0.14608-0.0816-0.2449-0.22771-0.0945-0.15038-0.14179-0.35662-0.043-0.20623-0.043-0.46402 0-0.54996 0.20193-0.83783 0.20194-0.28787 0.57144-0.28787 0.12031 0 0.23631 0.0301 0.12031 0.0301 0.21483 0.1203 0.0945 0.0902 0.15038 0.2535 0.0602 0.16327 0.0602 0.42535 0 0.073-9e-3 0.15898-4e-3 0.0816-0.0129 0.17186h-1.0913q0 0.18475 0.0301 0.33513t0.0945 0.25779q0.0644 0.10312 0.16326 0.16327 0.10312 0.0559 0.2535 0.0559 0.11601 0 0.22772-0.043 0.116-0.043 0.17615-0.10312zm-0.2406-1.1515q9e-3 -0.32224-0.0902-0.47262-0.0988-0.15038-0.27068-0.15038-0.19764 0-0.31365 0.15038t-0.13749 0.47262z"/>
<path d="m-536.88-328.42q0.1246-0.0773 0.30076-0.12031 0.18045-0.043 0.37809-0.043 0.18046 0 0.28787 0.0559 0.11171 0.0516 0.17186 0.14609 0.0644 0.0902 0.0816 0.21053 0.0215 0.116 0.0215 0.2449 0 0.25779-0.0129 0.50269-9e-3 0.24491-9e-3 0.46403 0 0.16327 9e-3 0.30506 0.0129 0.13748 0.043 0.26208h-0.23631l-0.073-0.25349h-0.0172q-0.0644 0.11171-0.18905 0.19334-0.1246 0.0816-0.33513 0.0816-0.23201 0-0.38239-0.15897-0.14608-0.16327-0.14608-0.44685 0-0.18475 0.0602-0.30935 0.0644-0.1246 0.17616-0.20193 0.116-0.0773 0.27068-0.10742 0.15897-0.0344 0.35232-0.0344 0.043 0 0.0859 0 0.043 0 0.0902 4e-3 0.0129-0.1332 0.0129-0.23631 0-0.24491-0.073-0.34373-0.073-0.0988-0.26638-0.0988-0.12031 0-0.26209 0.0387-0.14179 0.0344-0.23631 0.0902zm0.93235 1.0398q-0.043-4e-3 -0.0859-4e-3 -0.043-4e-3 -0.0859-4e-3 -0.10312 0-0.20194 0.0172-0.0988 0.0172-0.17616 0.0602-0.0773 0.043-0.1246 0.11601-0.043 0.073-0.043 0.18475 0 0.17186 0.0816 0.26639 0.0859 0.0945 0.21913 0.0945 0.18045 0 0.27927-0.0859 0.0988-0.0859 0.13749-0.18905z"/>
<path d="m-535.14-329.41h0.30935v1.0226h0.0129q0.17616-0.21483 0.46832-0.21483 0.33084 0 0.4941 0.26209 0.16757 0.26209 0.16757 0.82923 0 0.58004-0.22342 0.86361-0.21912 0.28357-0.623 0.28357-0.19764 0-0.36091-0.043-0.16327-0.0473-0.2449-0.10741zm0.30935 2.6939q0.0601 0.0344 0.14608 0.0559 0.0902 0.0172 0.18905 0.0172 0.22342 0 0.35232-0.21054 0.13319-0.21482 0.13319-0.65737 0-0.18475-0.0258-0.33083-0.0215-0.15038-0.073-0.25779-0.0473-0.10742-0.1289-0.16327-0.0773-0.0602-0.18905-0.0602-0.15467 0-0.25779 0.0945-0.0988 0.0902-0.14608 0.2492z"/>
<path d="m-532.95-326.92q0 0.15038 0.0387 0.21483 0.043 0.0644 0.11601 0.0644 0.0902 0 0.21053-0.0473l0.0301 0.2492q-0.0559 0.0344-0.15897 0.0558-0.0988 0.0215-0.18046 0.0215-0.16327 0-0.26638-0.0988-0.0988-0.10311-0.0988-0.35661v-2.5994h0.30936z"/>
<path d="m-531-326.55q-0.10312 0.0945-0.26209 0.14608-0.15897 0.0516-0.33513 0.0516-0.20194 0-0.35232-0.0773-0.14608-0.0816-0.2449-0.22771-0.0945-0.15038-0.14179-0.35662-0.043-0.20623-0.043-0.46402 0-0.54996 0.20194-0.83783 0.20193-0.28787 0.57144-0.28787 0.1203 0 0.23631 0.0301 0.1203 0.0301 0.21482 0.1203 0.0945 0.0902 0.15038 0.2535 0.0601 0.16327 0.0601 0.42535 0 0.073-9e-3 0.15898-4e-3 0.0816-0.0129 0.17186h-1.0913q0 0.18475 0.0301 0.33513t0.0945 0.25779q0.0645 0.10312 0.16327 0.16327 0.10311 0.0559 0.25349 0.0559 0.11601 0 0.22772-0.043 0.11601-0.043 0.17616-0.10312zm-0.24061-1.1515q9e-3 -0.32224-0.0902-0.47262-0.0988-0.15038-0.27068-0.15038-0.19764 0-0.31364 0.15038-0.11601 0.15038-0.13749 0.47262z"/>
<path d="m-538.79-321.14q-0.10742 0.0816-0.24491 0.12031-0.13749 0.0387-0.28787 0.0387-0.20623 0-0.34802-0.0773-0.14178-0.0816-0.23201-0.22772-0.0859-0.15038-0.12889-0.35661-0.0387-0.21053-0.0387-0.46403 0-0.54995 0.19334-0.83782 0.19764-0.28787 0.56285-0.28787 0.16756 0 0.28787 0.0301 0.1203 0.0301 0.20623 0.0773l-0.0859 0.27068q-0.17186-0.0988-0.3738-0.0988-0.23201 0-0.35232 0.20624-0.116 0.20194-0.116 0.64018 0 0.17616 0.0258 0.33084 0.0258 0.15467 0.0859 0.27068 0.0602 0.11171 0.15467 0.18045 0.0945 0.0645 0.23631 0.0645 0.11171 0 0.20624-0.0387 0.0988-0.0387 0.15897-0.0902z"/>
<path d="m-538.12-321.54q0 0.15038 0.0387 0.21483 0.043 0.0644 0.11601 0.0644 0.0902 0 0.21053-0.0473l0.0301 0.2492q-0.0558 0.0344-0.15897 0.0559-0.0988 0.0215-0.18045 0.0215-0.16327 0-0.26639-0.0988-0.0988-0.10312-0.0988-0.35661v-2.5994h0.30935z"/>
<path d="m-537.54-322.11q0-0.58003 0.19764-0.85071 0.20194-0.27498 0.57144-0.27498 0.39529 0 0.58004 0.27927 0.18904 0.27928 0.18904 0.84642 0 0.58433-0.20193 0.85501-0.20194 0.27069-0.56715 0.27069-0.39528 0-0.58433-0.27928-0.18475-0.27927-0.18475-0.84642zm0.32224 0q0 0.18905 0.0215 0.34373 0.0258 0.15467 0.0773 0.26638 0.0559 0.11171 0.14179 0.17616 0.0859 0.0602 0.20623 0.0602 0.22342 0 0.33513-0.19764 0.11171-0.20194 0.11171-0.64878 0-0.18475-0.0258-0.33942-0.0215-0.15898-0.0773-0.27069-0.0516-0.11171-0.13749-0.17186-0.0859-0.0644-0.20624-0.0644-0.21912 0-0.33513 0.20194-0.11171 0.20194-0.11171 0.64448z"/>
<path d="m-535.63-321.39q0.0859 0.0516 0.20193 0.0902 0.12031 0.0344 0.24491 0.0344 0.14178 0 0.2406-0.0687 0.0988-0.073 0.0988-0.23202 0-0.13319-0.0602-0.21912-0.0602-0.0859-0.15467-0.15468-0.0902-0.0687-0.19765-0.1246-0.10741-0.0601-0.20193-0.14178-0.0902-0.0816-0.15038-0.19335-0.0602-0.11171-0.0602-0.28357 0-0.27498 0.14608-0.41247 0.15038-0.14178 0.42106-0.14178 0.17616 0 0.30505 0.0344 0.1289 0.0301 0.22342 0.0859l-0.0816 0.25779q-0.0816-0.043-0.18905-0.0687-0.10741-0.0301-0.21912-0.0301-0.15468 0-0.22772 0.0644-0.0687 0.0645-0.0687 0.20194 0 0.10741 0.0602 0.18475 0.0602 0.073 0.15038 0.13749 0.0945 0.0602 0.20194 0.1246 0.10741 0.0644 0.19764 0.15468 0.0945 0.0859 0.15467 0.21053 0.0602 0.1203 0.0602 0.30505 0 0.1203-0.0387 0.22772-0.0387 0.10741-0.1203 0.18904-0.0773 0.0773-0.19764 0.1246-0.11601 0.0473-0.27498 0.0473-0.18905 0-0.32653-0.0387-0.13749-0.0344-0.23202-0.0945z"/>
<path d="m-532.86-321.18q-0.10312 0.0945-0.26209 0.14608-0.15898 0.0516-0.33513 0.0516-0.20194 0-0.35232-0.0773-0.14608-0.0816-0.2449-0.22772-0.0945-0.15038-0.14179-0.35661-0.043-0.20623-0.043-0.46403 0-0.54995 0.20193-0.83782 0.20194-0.28787 0.57144-0.28787 0.12031 0 0.23631 0.0301 0.12031 0.0301 0.21483 0.12031 0.0945 0.0902 0.15038 0.25349 0.0602 0.16327 0.0602 0.42536 0 0.073-9e-3 0.15897-4e-3 0.0816-0.0129 0.17186h-1.0913q0 0.18476 0.0301 0.33514 0.0301 0.15037 0.0945 0.25779 0.0644 0.10311 0.16326 0.16327 0.10312 0.0559 0.2535 0.0559 0.11601 0 0.22772-0.043 0.116-0.043 0.17616-0.10312zm-0.24061-1.1515q9e-3 -0.32224-0.0902-0.47262-0.0988-0.15038-0.27068-0.15038-0.19764 0-0.31365 0.15038-0.116 0.15038-0.13749 0.47262z"/>
<path d="m-531.02-321.77q0 0.21913 4e-3 0.39958 4e-3 0.17616 0.0301 0.34802h-0.21053l-0.0688-0.25779h-0.0172q-0.0602 0.12889-0.18905 0.21483-0.1289 0.0859-0.30935 0.0859-0.34802 0-0.51988-0.27069-0.16757-0.27068-0.16757-0.85071 0-0.54996 0.20623-0.83353 0.21053-0.28357 0.57574-0.28357 0.1246 0 0.19764 0.0172 0.073 0.0129 0.15897 0.0473v-0.88509h0.30935zm-0.30935-1.0698q-0.0602-0.0516-0.13749-0.073-0.073-0.0258-0.19764-0.0258-0.22771 0-0.35661 0.20624-0.1246 0.20623-0.1246 0.63589 0 0.18904 0.0215 0.34372 0.0258 0.15038 0.073 0.26209 0.0516 0.11171 0.1289 0.17186 0.0816 0.0602 0.19764 0.0602 0.30935 0 0.39528-0.3652z"/>
<path d="m-543.78-315.66v-1.3061q0-0.30076-0.073-0.45544-0.0688-0.15897-0.27928-0.15897-0.15037 0-0.27497 0.10741-0.12031 0.10742-0.16327 0.27069v1.5424h-0.30935v-3.0076h0.30935v1.0612h0.0129q0.0859-0.11171 0.21053-0.18045 0.12889-0.073 0.31794-0.073 0.14179 0 0.2449 0.0387 0.10742 0.0387 0.17616 0.1332 0.0688 0.0945 0.10312 0.25349 0.0344 0.15468 0.0344 0.38669v1.3878z"/>
<path d="m-541.71-315.81q-0.10312 0.0945-0.26209 0.14608-0.15897 0.0516-0.33513 0.0516-0.20194 0-0.35232-0.0773-0.14608-0.0816-0.2449-0.22772-0.0945-0.15038-0.14178-0.35661-0.043-0.20624-0.043-0.46403 0-0.54996 0.20194-0.83783 0.20194-0.28786 0.57144-0.28786 0.1203 0 0.23631 0.0301 0.1203 0.0301 0.21483 0.1203 0.0945 0.0902 0.15037 0.2535 0.0602 0.16327 0.0602 0.42536 0 0.073-9e-3 0.15897-4e-3 0.0816-0.0129 0.17186h-1.0913q0 0.18475 0.0301 0.33513t0.0945 0.25779q0.0645 0.10312 0.16327 0.16327 0.10312 0.0559 0.2535 0.0559 0.116 0 0.22771-0.043 0.11601-0.043 0.17616-0.10311zm-0.24061-1.1515q9e-3 -0.32224-0.0902-0.47262-0.0988-0.15038-0.27069-0.15038-0.19764 0-0.31364 0.15038-0.11601 0.15038-0.13749 0.47262z"/>
<path d="m-541.25-317.68q0.1246-0.0773 0.30075-0.1203 0.18046-0.043 0.3781-0.043 0.18046 0 0.28787 0.0559 0.11171 0.0516 0.17186 0.14608 0.0645 0.0902 0.0816 0.21053 0.0215 0.11601 0.0215 0.2449 0 0.25779-0.0129 0.5027-9e-3 0.2449-9e-3 0.46402 0 0.16327 9e-3 0.30506 0.0129 0.13749 0.043 0.26209h-0.23631l-0.073-0.2535h-0.0172q-0.0645 0.11171-0.18905 0.19335-0.1246 0.0816-0.33513 0.0816-0.23202 0-0.38239-0.15897-0.14609-0.16327-0.14609-0.44684 0-0.18475 0.0602-0.30935 0.0644-0.1246 0.17616-0.20194 0.11601-0.0773 0.27069-0.10741 0.15897-0.0344 0.35231-0.0344 0.043 0 0.0859 0 0.043 0 0.0902 4e-3 0.0129-0.13319 0.0129-0.23631 0-0.2449-0.073-0.34372-0.073-0.0988-0.26639-0.0988-0.1203 0-0.26209 0.0387-0.14178 0.0344-0.23631 0.0902zm0.93235 1.0398q-0.043-4e-3 -0.0859-4e-3 -0.043-4e-3 -0.0859-4e-3 -0.10311 0-0.20193 0.0172-0.0988 0.0172-0.17616 0.0601-0.0773 0.043-0.1246 0.116-0.043 0.073-0.043 0.18476 0 0.17186 0.0816 0.26638 0.0859 0.0945 0.21912 0.0945 0.18046 0 0.27928-0.0859 0.0988-0.0859 0.13749-0.18904z"/>
<path d="m-539.51-317.81h0.21913l0.0559 0.22772h0.0129q0.0602-0.1246 0.15468-0.19334 0.0988-0.0731 0.23631-0.0731 0.0988 0 0.22342 0.0387l-0.0602 0.31365q-0.11171-0.0387-0.19764-0.0387-0.13749 0-0.22342 0.0816-0.0859 0.0773-0.11171 0.21053v1.5811h-0.30936z"/>
<path d="m-538.44-317.81h0.26209v-0.42535l0.30935-0.0988v0.52417h0.46403v0.27928h-0.46403v1.2804q0 0.18905 0.043 0.27498 0.0473 0.0816 0.15038 0.0816 0.0859 0 0.14608-0.0172 0.0644-0.0215 0.13749-0.0516l0.0602 0.2449q-0.0945 0.0473-0.21053 0.073-0.11171 0.0301-0.23631 0.0301-0.21483 0-0.30935-0.13749-0.0902-0.14179-0.0902-0.45544v-1.3233h-0.26209z"/>
<path d="m-537.05-318.67h0.30935v1.0226h0.0129q0.17616-0.21482 0.46832-0.21482 0.33083 0 0.4941 0.26208 0.16757 0.26209 0.16757 0.82924 0 0.58003-0.22342 0.8636-0.21913 0.28357-0.623 0.28357-0.19764 0-0.36091-0.043-0.16327-0.0473-0.2449-0.10742zm0.30935 2.6939q0.0602 0.0344 0.14608 0.0559 0.0902 0.0172 0.18905 0.0172 0.22342 0 0.35231-0.21053 0.1332-0.21483 0.1332-0.65737 0-0.18475-0.0258-0.33084-0.0215-0.15038-0.073-0.25779-0.0473-0.10741-0.1289-0.16327-0.0773-0.0602-0.18905-0.0602-0.15467 0-0.25779 0.0945-0.0988 0.0902-0.14608 0.2492z"/>
<path d="m-533.9-315.81q-0.10312 0.0945-0.26209 0.14608-0.15897 0.0516-0.33513 0.0516-0.20194 0-0.35232-0.0773-0.14608-0.0816-0.2449-0.22772-0.0945-0.15038-0.14179-0.35661-0.043-0.20624-0.043-0.46403 0-0.54996 0.20193-0.83783 0.20194-0.28786 0.57144-0.28786 0.12031 0 0.23631 0.0301 0.12031 0.0301 0.21483 0.1203 0.0945 0.0902 0.15038 0.2535 0.0602 0.16327 0.0602 0.42536 0 0.073-9e-3 0.15897-4e-3 0.0816-0.0129 0.17186h-1.0913q0 0.18475 0.0301 0.33513t0.0945 0.25779q0.0644 0.10312 0.16327 0.16327 0.10311 0.0559 0.25349 0.0559 0.11601 0 0.22772-0.043 0.11601-0.043 0.17616-0.10311zm-0.24061-1.1515q9e-3 -0.32224-0.0902-0.47262-0.0988-0.15038-0.27068-0.15038-0.19764 0-0.31365 0.15038-0.116 0.15038-0.13749 0.47262z"/>
<path d="m-533.43-317.68q0.1246-0.0773 0.30076-0.1203 0.18046-0.043 0.3781-0.043 0.18045 0 0.28787 0.0559 0.11171 0.0516 0.17186 0.14608 0.0644 0.0902 0.0816 0.21053 0.0215 0.11601 0.0215 0.2449 0 0.25779-0.0129 0.5027-9e-3 0.2449-9e-3 0.46402 0 0.16327 9e-3 0.30506 0.0129 0.13749 0.043 0.26209h-0.23631l-0.073-0.2535h-0.0172q-0.0644 0.11171-0.18905 0.19335-0.1246 0.0816-0.33513 0.0816-0.23201 0-0.38239-0.15897-0.14608-0.16327-0.14608-0.44684 0-0.18475 0.0602-0.30935 0.0644-0.1246 0.17616-0.20194 0.11601-0.0773 0.27068-0.10741 0.15897-0.0344 0.35232-0.0344 0.043 0 0.0859 0 0.043 0 0.0902 4e-3 0.0129-0.13319 0.0129-0.23631 0-0.2449-0.0731-0.34372-0.073-0.0988-0.26638-0.0988-0.1203 0-0.26209 0.0387-0.14179 0.0344-0.23631 0.0902zm0.93235 1.0398q-0.043-4e-3 -0.0859-4e-3 -0.043-4e-3 -0.0859-4e-3 -0.10312 0-0.20194 0.0172-0.0988 0.0172-0.17615 0.0601-0.0773 0.043-0.1246 0.116-0.043 0.073-0.043 0.18476 0 0.17186 0.0816 0.26638 0.0859 0.0945 0.21913 0.0945 0.18045 0 0.27927-0.0859 0.0988-0.0859 0.13749-0.18904z"/>
<path d="m-531.91-317.81h0.26209v-0.42535l0.30935-0.0988v0.52417h0.46403v0.27928h-0.46403v1.2804q0 0.18905 0.043 0.27498 0.0473 0.0816 0.15038 0.0816 0.0859 0 0.14608-0.0172 0.0644-0.0215 0.13749-0.0516l0.0601 0.2449q-0.0945 0.0473-0.21053 0.073-0.11171 0.0301-0.23631 0.0301-0.21483 0-0.30935-0.13749-0.0902-0.14179-0.0902-0.45544v-1.3233h-0.26209z"/>
</g>
<g dominant-baseline="auto" stroke-width=".19164" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal" aria-label="Abstract Transport">
<path d="m-662.1-36.928h-1.5178l-0.42927 1.5024h-0.56725l1.6174-5.4502h0.31429l1.6174 5.4502h-0.59792zm-1.3645-0.51359h1.2265l-0.46759-1.6558-0.14565-0.80488h-0.0153l-0.14565 0.82021z"/>
<path d="m-660.58-40.792h0.55192v1.8244h0.023q0.31429-0.38328 0.83555-0.38328 0.59025 0 0.88154 0.4676 0.29895 0.4676 0.29895 1.4795 0 1.0348-0.39861 1.5408-0.39094 0.50593-1.1115 0.50593-0.35262 0-0.64391-0.07666-0.29129-0.08432-0.43693-0.19164zm0.55192 4.8063q0.10731 0.06132 0.26062 0.09965 0.16098 0.03066 0.33729 0.03066 0.39861 0 0.62857-0.37561 0.23764-0.38328 0.23764-1.1728 0-0.32962-0.046-0.59025-0.0383-0.26829-0.13031-0.45993-0.0843-0.19164-0.22997-0.29129-0.13798-0.10732-0.33728-0.10732-0.27596 0-0.45994 0.16864-0.1763 0.16098-0.26062 0.4446z"/>
<path d="m-657.32-36.054q0.15331 0.09199 0.36028 0.16098 0.21463 0.06132 0.43694 0.06132 0.25296 0 0.42927-0.12265 0.1763-0.13031 0.1763-0.41394 0-0.23763-0.10731-0.39094-0.10732-0.15331-0.27596-0.27596-0.16098-0.12265-0.35262-0.2223-0.19164-0.10732-0.36028-0.25296-0.16098-0.14564-0.26829-0.34495-0.10732-0.1993-0.10732-0.50593 0-0.4906 0.26063-0.73589 0.26829-0.25296 0.75122-0.25296 0.31429 0 0.54426 0.06132 0.22996 0.05366 0.3986 0.15331l-0.14564 0.45993q-0.14565-0.07666-0.33729-0.12265-0.19163-0.05366-0.39094-0.05366-0.27596 0-0.40627 0.11498-0.12265 0.11498-0.12265 0.36028 0 0.19164 0.10732 0.32962 0.10731 0.13032 0.26829 0.2453 0.16864 0.10732 0.36028 0.2223 0.19164 0.11498 0.35262 0.27596 0.16864 0.15331 0.27596 0.37561 0.10731 0.21464 0.10731 0.54425 0 0.21464-0.069 0.40627-0.069 0.19164-0.21463 0.33728-0.13798 0.13798-0.35262 0.2223-0.20697 0.08432-0.49059 0.08432-0.33729 0-0.58258-0.06899-0.2453-0.06132-0.41394-0.16864z"/>
<path d="m-655.05-39.259h0.4676v-0.75889l0.55192-0.17631v0.9352h0.82788v0.49826h-0.82788v2.2843q0 0.33728 0.0767 0.4906 0.0843 0.14565 0.26829 0.14565 0.15331 0 0.26063-0.03066 0.11499-0.03833 0.2453-0.09199l0.10732 0.43694q-0.16864 0.08432-0.37561 0.13032-0.19931 0.05366-0.42161 0.05366-0.38328 0-0.55192-0.2453-0.16098-0.25296-0.16098-0.81255v-2.361h-0.4676z"/>
<path d="m-652.56-39.259h0.39095l0.0996 0.40627h0.023q0.10731-0.2223 0.27596-0.34495 0.1763-0.13031 0.4216-0.13031 0.17631 0 0.39861 0.06899l-0.10732 0.55958q-0.1993-0.06899-0.35261-0.06899-0.2453 0-0.39861 0.14565-0.15331 0.13798-0.19931 0.37561v2.8209h-0.55192z"/>
<path d="m-650.5-39.029q0.2223-0.13798 0.53659-0.21464 0.32195-0.07666 0.67457-0.07666 0.32195 0 0.51359 0.09965 0.1993 0.09199 0.30662 0.26063 0.11498 0.16098 0.14565 0.37561 0.0383 0.20697 0.0383 0.43694 0 0.45993-0.023 0.89687-0.0153 0.43694-0.0153 0.82788 0 0.29129 0.0153 0.54426 0.023 0.2453 0.0766 0.4676h-0.4216l-0.13032-0.45227h-0.0307q-0.11498 0.1993-0.33728 0.34495-0.22231 0.14564-0.59792 0.14564-0.41394 0-0.68223-0.28362-0.26063-0.29129-0.26063-0.79722 0-0.32962 0.10732-0.55192 0.11498-0.2223 0.31428-0.36028 0.20697-0.13798 0.48293-0.19164 0.28363-0.06132 0.62858-0.06132 0.0767 0 0.15331 0 0.0767 0 0.16098 0.0077 0.023-0.23763 0.023-0.4216 0-0.43694-0.13031-0.61324t-0.47526-0.17631q-0.21464 0-0.4676 0.06899-0.25297 0.06132-0.42161 0.16098zm1.6634 1.8551q-0.0766-0.0077-0.15331-0.0077-0.0767-0.0077-0.15331-0.0077-0.18397 0-0.36028 0.03066t-0.31429 0.10732q-0.13798 0.07665-0.2223 0.20697-0.0766 0.13031-0.0766 0.32962 0 0.30662 0.14564 0.47526 0.15331 0.16864 0.39094 0.16864 0.32196 0 0.49827-0.15331 0.1763-0.15331 0.24529-0.33728z"/>
<path d="m-645.28-35.617q-0.19164 0.14564-0.43694 0.21464t-0.51359 0.06899q-0.36795 0-0.62091-0.13798-0.25297-0.14564-0.41394-0.40627-0.15331-0.2683-0.22997-0.63624-0.069-0.37561-0.069-0.82788 0-0.98119 0.34495-1.4948 0.35262-0.51359 1.0042-0.51359 0.29896 0 0.51359 0.05366 0.21464 0.05366 0.36795 0.13798l-0.15331 0.48293q-0.30663-0.17631-0.66691-0.17631-0.41394 0-0.62857 0.36795-0.20697 0.36028-0.20697 1.1422 0 0.31429 0.046 0.59025t0.15331 0.48293q0.10732 0.1993 0.27596 0.32195 0.16864 0.11498 0.42161 0.11498 0.1993 0 0.36794-0.06899 0.17631-0.06899 0.28363-0.16098z"/>
<path d="m-645.05-39.259h0.4676v-0.75889l0.55192-0.17631v0.9352h0.82788v0.49826h-0.82788v2.2843q0 0.33728 0.0766 0.4906 0.0843 0.14565 0.2683 0.14565 0.15331 0 0.26063-0.03066 0.11498-0.03833 0.2453-0.09199l0.10731 0.43694q-0.16864 0.08432-0.37561 0.13032-0.1993 0.05366-0.4216 0.05366-0.38328 0-0.55192-0.2453-0.16098-0.25296-0.16098-0.81255v-2.361h-0.4676z"/>
<path d="m-661.34-30.681h-1.3185v4.837h-0.57491v-4.837h-1.3185v-0.52892h3.2119z"/>
<path d="m-661.43-29.677h0.39095l0.0996 0.40628h0.023q0.10731-0.2223 0.27596-0.34495 0.1763-0.13032 0.4216-0.13032 0.17631 0 0.39861 0.06899l-0.10732 0.55959q-0.1993-0.06899-0.35261-0.06899-0.2453 0-0.39861 0.14565-0.15331 0.13798-0.19931 0.37561v2.8209h-0.55192z"/>
<path d="m-659.38-29.447q0.2223-0.13798 0.53659-0.21464 0.32195-0.07666 0.67456-0.07666 0.32196 0 0.5136 0.09965 0.1993 0.09199 0.30662 0.26063 0.11498 0.16098 0.14564 0.37561 0.0383 0.20697 0.0383 0.43694 0 0.45993-0.023 0.89687-0.0153 0.43694-0.0153 0.82788 0 0.29129 0.0153 0.54426 0.023 0.2453 0.0766 0.4676h-0.4216l-0.13032-0.45227h-0.0307q-0.11498 0.1993-0.33729 0.34495-0.2223 0.14564-0.59791 0.14564-0.41394 0-0.68223-0.28362-0.26063-0.29129-0.26063-0.79722 0-0.32962 0.10732-0.55192 0.11498-0.2223 0.31428-0.36028 0.20697-0.13798 0.48293-0.19164 0.28363-0.06133 0.62858-0.06133 0.0766 0 0.15331 0 0.0767 0 0.16098 0.0077 0.023-0.23763 0.023-0.42161 0-0.43694-0.13031-0.61324-0.13032-0.17631-0.47527-0.17631-0.21463 0-0.46759 0.06899-0.25297 0.06133-0.42161 0.16098zm1.6634 1.8551q-0.0767-0.0077-0.15331-0.0077-0.0766-0.0077-0.15331-0.0077-0.18397 0-0.36028 0.03066t-0.31429 0.10732q-0.13798 0.07665-0.2223 0.20697-0.0767 0.13031-0.0767 0.32962 0 0.30662 0.14565 0.47526 0.15331 0.16864 0.39094 0.16864 0.32196 0 0.49826-0.15331 0.17631-0.15331 0.2453-0.33728z"/>
<path d="m-654.31-25.844v-2.338q0-0.57492-0.13798-0.82788-0.13031-0.26063-0.47526-0.26063-0.30662 0-0.50593 0.18397-0.1993 0.18397-0.29129 0.45227v2.7903h-0.55192v-3.8328h0.39861l0.0996 0.40628h0.023q0.14564-0.20697 0.39094-0.35262 0.25297-0.14564 0.59792-0.14564 0.24529 0 0.42927 0.06899 0.19164 0.06899 0.31428 0.23763 0.13032 0.16098 0.19164 0.43694 0.069 0.27596 0.069 0.69756v2.4836z"/>
<path d="m-652.96-26.472q0.15331 0.09199 0.36028 0.16098 0.21464 0.06132 0.43694 0.06132 0.25296 0 0.42927-0.12265 0.17631-0.13031 0.17631-0.41394 0-0.23763-0.10732-0.39094t-0.27596-0.27596q-0.16098-0.12265-0.35262-0.2223-0.19164-0.10732-0.36028-0.25296-0.16098-0.14564-0.26829-0.34495-0.10732-0.1993-0.10732-0.50593 0-0.4906 0.26063-0.73589 0.26829-0.25296 0.75122-0.25296 0.31429 0 0.54426 0.06132 0.22996 0.05366 0.39861 0.15331l-0.14565 0.45993q-0.14565-0.07666-0.33728-0.12265-0.19164-0.05366-0.39095-0.05366-0.27596 0-0.40627 0.11498-0.12265 0.11498-0.12265 0.36028 0 0.19164 0.10732 0.32962 0.10731 0.13032 0.26829 0.2453 0.16864 0.10732 0.36028 0.2223 0.19164 0.11498 0.35262 0.27596 0.16864 0.15331 0.27596 0.37561 0.10732 0.21464 0.10732 0.54425 0 0.21464-0.069 0.40627-0.069 0.19164-0.21464 0.33728-0.13798 0.13798-0.35262 0.2223-0.20697 0.08432-0.49059 0.08432-0.33729 0-0.58258-0.06899-0.2453-0.06132-0.41394-0.16864z"/>
<path d="m-650.31-29.677h0.39095l0.0843 0.41394h0.0307q0.28362-0.50593 0.8892-0.50593t0.90454 0.45227q0.30662 0.45227 0.30662 1.4795 0 0.48293-0.0996 0.87387-0.0996 0.38328-0.28363 0.65924-0.18397 0.2683-0.45226 0.41394-0.26063 0.13798-0.58259 0.13798-0.2223 0-0.35261-0.03066-0.13032-0.023-0.28363-0.10732v1.5791h-0.55192zm0.55192 3.2272q0.10732 0.09199 0.23763 0.14564 0.13798 0.05366 0.36029 0.05366 0.40627 0 0.6439-0.41394t0.23763-1.1805q0-0.32195-0.046-0.58258-0.0383-0.26063-0.13031-0.4446-0.092-0.19164-0.23764-0.29129-0.13798-0.10732-0.34495-0.10732-0.55958 0-0.72056 0.68223z"/>
<path d="m-647.14-27.76q0-1.0348 0.35261-1.5178 0.36029-0.4906 1.0195-0.4906 0.70523 0 1.0348 0.49826 0.33729 0.49826 0.33729 1.5101 0 1.0425-0.36028 1.5254t-1.0119 0.48293q-0.70523 0-1.0425-0.49826-0.32962-0.49826-0.32962-1.5101zm0.57492 0q0 0.33728 0.0383 0.61324 0.046 0.27596 0.13798 0.47526 0.0997 0.1993 0.25297 0.31429 0.15331 0.10732 0.36794 0.10732 0.39861 0 0.59792-0.35262 0.1993-0.36028 0.1993-1.1575 0-0.32962-0.046-0.60558-0.0383-0.28363-0.13798-0.48293-0.092-0.1993-0.2453-0.30662-0.15331-0.11498-0.36795-0.11498-0.39094 0-0.59791 0.36028-0.1993 0.36028-0.1993 1.1498z"/>
<path d="m-643.66-29.677h0.39094l0.0996 0.40628h0.023q0.10732-0.2223 0.27596-0.34495 0.17631-0.13032 0.4216-0.13032 0.17631 0 0.39861 0.06899l-0.10731 0.55959q-0.19931-0.06899-0.35262-0.06899-0.2453 0-0.39861 0.14565-0.15331 0.13798-0.1993 0.37561v2.8209h-0.55192z"/>
<path d="m-641.77-29.677h0.4676v-0.75889l0.55192-0.17631v0.9352h0.82788v0.49826h-0.82788v2.2843q0 0.33728 0.0767 0.4906 0.0843 0.14564 0.26829 0.14564 0.15331 0 0.26063-0.03066 0.11498-0.03833 0.2453-0.09199l0.10732 0.43694q-0.16865 0.08432-0.37562 0.13032-0.1993 0.05366-0.4216 0.05366-0.38328 0-0.55192-0.2453-0.16098-0.25296-0.16098-0.81255v-2.361h-0.4676z"/>
<path d="m-658.04-337.68h-1.5178l-0.42927 1.5024h-0.56725l1.6174-5.4502h0.31429l1.6174 5.4502h-0.59791zm-1.3645-0.51359h1.2265l-0.4676-1.6558-0.14564-0.80488h-0.0153l-0.14564 0.82021z"/>
<path d="m-656.52-341.54h0.55192v1.8244h0.023q0.31429-0.38328 0.83554-0.38328 0.59025 0 0.88154 0.4676 0.29896 0.4676 0.29896 1.4794 0 1.0348-0.39861 1.5408-0.39094 0.50592-1.1115 0.50592-0.35261 0-0.6439-0.0767-0.29129-0.0843-0.43694-0.19164zm0.55192 4.8063q0.10732 0.0613 0.26063 0.0996 0.16098 0.0307 0.33728 0.0307 0.39861 0 0.62858-0.37561 0.23763-0.38328 0.23763-1.1728 0-0.32962-0.046-0.59025-0.0383-0.26829-0.13032-0.45993-0.0843-0.19164-0.22996-0.29129-0.13798-0.10732-0.33729-0.10732-0.27596 0-0.45993 0.16864-0.17631 0.16098-0.26063 0.4446z"/>
<path d="m-653.26-336.8q0.15331 0.092 0.36028 0.16097 0.21464 0.0613 0.43694 0.0613 0.25296 0 0.42927-0.12265 0.17631-0.13031 0.17631-0.41394 0-0.23763-0.10732-0.39094t-0.27596-0.27596q-0.16097-0.12265-0.35261-0.2223-0.19164-0.10732-0.36028-0.25297-0.16098-0.14564-0.2683-0.34495-0.10732-0.1993-0.10732-0.50592 0-0.4906 0.26063-0.7359 0.2683-0.25296 0.75123-0.25296 0.31428 0 0.54425 0.0613 0.22997 0.0537 0.39861 0.15331l-0.14565 0.45994q-0.14564-0.0767-0.33728-0.12265-0.19164-0.0537-0.39094-0.0537-0.27596 0-0.40628 0.11498-0.12265 0.11499-0.12265 0.36028 0 0.19164 0.10732 0.32962 0.10732 0.13032 0.2683 0.2453 0.16864 0.10732 0.36028 0.2223 0.19164 0.11499 0.35261 0.27596 0.16864 0.15331 0.27596 0.37561 0.10732 0.21464 0.10732 0.54426 0 0.21463-0.069 0.40627t-0.21464 0.33729q-0.13798 0.13798-0.35261 0.2223-0.20697 0.0843-0.4906 0.0843-0.33728 0-0.58258-0.069-0.2453-0.0613-0.41394-0.16864z"/>
<path d="m-650.99-340.01h0.4676v-0.75889l0.55192-0.17631v0.9352h0.82788v0.49826h-0.82788v2.2843q0 0.33729 0.0766 0.4906 0.0843 0.14564 0.2683 0.14564 0.15331 0 0.26063-0.0307 0.11498-0.0383 0.2453-0.092l0.10731 0.43694q-0.16864 0.0843-0.37561 0.13032-0.1993 0.0537-0.4216 0.0537-0.38328 0-0.55192-0.24529-0.16098-0.25297-0.16098-0.81255v-2.361h-0.4676z"/>
<path d="m-648.49-340.01h0.39094l0.0997 0.40627h0.023q0.10732-0.2223 0.27596-0.34495 0.17631-0.13031 0.42161-0.13031 0.17631 0 0.39861 0.069l-0.10732 0.55958q-0.19931-0.069-0.35262-0.069-0.24529 0-0.39861 0.14565-0.15331 0.13798-0.1993 0.37561v2.8209h-0.55192z"/>
<path d="m-646.44-339.78q0.2223-0.13798 0.53659-0.21463 0.32196-0.0767 0.67457-0.0767 0.32195 0 0.51359 0.0996 0.19931 0.092 0.30663 0.26063 0.11498 0.16098 0.14564 0.37561 0.0383 0.20697 0.0383 0.43694 0 0.45993-0.023 0.89687-0.0153 0.43694-0.0153 0.82788 0 0.29129 0.0153 0.54426 0.023 0.24529 0.0767 0.46759h-0.42161l-0.13031-0.45226h-0.0307q-0.11499 0.1993-0.33729 0.34495-0.2223 0.14564-0.59791 0.14564-0.41394 0-0.68224-0.28362-0.26063-0.29129-0.26063-0.79722 0-0.32962 0.10732-0.55192 0.11499-0.2223 0.31429-0.36028 0.20697-0.13798 0.48293-0.19164 0.28363-0.0613 0.62858-0.0613 0.0766 0 0.15331 0 0.0766 0 0.16097 8e-3 0.023-0.23763 0.023-0.42161 0-0.43693-0.13031-0.61324-0.13032-0.17631-0.47527-0.17631-0.21463 0-0.4676 0.069-0.25296 0.0613-0.4216 0.16098zm1.6634 1.8551q-0.0767-8e-3 -0.15331-8e-3 -0.0767-8e-3 -0.15331-8e-3 -0.18398 0-0.36028 0.0307-0.17631 0.0307-0.31429 0.10732-0.13798 0.0766-0.2223 0.20697-0.0767 0.13031-0.0767 0.32961 0 0.30663 0.14565 0.47527 0.15331 0.16864 0.39094 0.16864 0.32195 0 0.49826-0.15331t0.2453-0.33728z"/>
<path d="m-641.21-336.37q-0.19164 0.14565-0.43693 0.21464-0.2453 0.069-0.5136 0.069-0.36794 0-0.62091-0.13798-0.25296-0.14565-0.41394-0.40627-0.15331-0.2683-0.22996-0.63625-0.069-0.37561-0.069-0.82788 0-0.98119 0.34495-1.4948 0.35261-0.51359 1.0042-0.51359 0.29896 0 0.5136 0.0537 0.21463 0.0537 0.36794 0.13798l-0.15331 0.48293q-0.30662-0.17631-0.6669-0.17631-0.41394 0-0.62858 0.36795-0.20697 0.36028-0.20697 1.1422 0 0.31429 0.046 0.59025t0.15331 0.48293q0.10732 0.19931 0.27596 0.32196 0.16864 0.11498 0.4216 0.11498 0.19931 0 0.36795-0.069 0.17631-0.069 0.28363-0.16098z"/>
<path d="m-640.99-340.01h0.46759v-0.75889l0.55192-0.17631v0.9352h0.82788v0.49826h-0.82788v2.2843q0 0.33729 0.0767 0.4906 0.0843 0.14564 0.26829 0.14564 0.15332 0 0.26063-0.0307 0.11499-0.0383 0.2453-0.092l0.10732 0.43694q-0.16864 0.0843-0.37561 0.13032-0.19931 0.0537-0.42161 0.0537-0.38328 0-0.55192-0.24529-0.16098-0.25297-0.16098-0.81255v-2.361h-0.46759z"/>
<path d="m-657.27-331.43h-1.3185v4.837h-0.57492v-4.837h-1.3185v-0.52892h3.2119z"/>
<path d="m-657.37-330.43h0.39094l0.0996 0.40628h0.023q0.10732-0.22231 0.27596-0.34495 0.17631-0.13032 0.42161-0.13032 0.1763 0 0.39861 0.069l-0.10732 0.55959q-0.19931-0.069-0.35262-0.069-0.2453 0-0.39861 0.14564-0.15331 0.13798-0.1993 0.37561v2.8209h-0.55192z"/>
<path d="m-655.31-330.2q0.2223-0.13798 0.53659-0.21464 0.32195-0.0767 0.67457-0.0767 0.32195 0 0.51359 0.0996 0.19931 0.092 0.30662 0.26063 0.11499 0.16097 0.14565 0.37561 0.0383 0.20697 0.0383 0.43694 0 0.45993-0.023 0.89687-0.0153 0.43693-0.0153 0.82788 0 0.29129 0.0153 0.54425 0.023 0.2453 0.0767 0.4676h-0.42161l-0.13031-0.45227h-0.0307q-0.11498 0.19931-0.33728 0.34495-0.2223 0.14565-0.59791 0.14565-0.41394 0-0.68224-0.28363-0.26063-0.29129-0.26063-0.79722 0-0.32961 0.10732-0.55192 0.11498-0.2223 0.31429-0.36028 0.20697-0.13798 0.48293-0.19164 0.28362-0.0613 0.62857-0.0613 0.0767 0 0.15332 0 0.0766 0 0.16097 8e-3 0.023-0.23764 0.023-0.42161 0-0.43694-0.13032-0.61324-0.13031-0.17631-0.47526-0.17631-0.21464 0-0.4676 0.069-0.25296 0.0613-0.4216 0.16097zm1.6634 1.8551q-0.0767-8e-3 -0.15331-8e-3 -0.0767-8e-3 -0.15331-8e-3 -0.18398 0-0.36029 0.0307-0.1763 0.0307-0.31428 0.10732-0.13798 0.0767-0.2223 0.20697-0.0767 0.13032-0.0767 0.32962 0 0.30662 0.14565 0.47526 0.15331 0.16865 0.39094 0.16865 0.32195 0 0.49826-0.15331 0.17631-0.15332 0.2453-0.33729z"/>
<path d="m-650.24-326.59v-2.338q0-0.57491-0.13798-0.82788-0.13032-0.26062-0.47527-0.26062-0.30662 0-0.50592 0.18397-0.19931 0.18397-0.29129 0.45227v2.7903h-0.55192v-3.8328h0.39861l0.0997 0.40628h0.023q0.14565-0.20697 0.39095-0.35262 0.25296-0.14565 0.59791-0.14565 0.2453 0 0.42927 0.069 0.19164 0.069 0.31429 0.23764 0.13031 0.16097 0.19164 0.43693 0.069 0.27596 0.069 0.69757v2.4836z"/>
<path d="m-648.9-327.22q0.15332 0.092 0.36029 0.16098 0.21463 0.0613 0.43693 0.0613 0.25297 0 0.42927-0.12264 0.17631-0.13032 0.17631-0.41394 0-0.23764-0.10732-0.39095-0.10731-0.15331-0.27596-0.27596-0.16097-0.12265-0.35261-0.2223-0.19164-0.10732-0.36028-0.25296-0.16098-0.14565-0.2683-0.34495-0.10732-0.19931-0.10732-0.50593 0-0.49059 0.26063-0.73589 0.2683-0.25297 0.75123-0.25297 0.31429 0 0.54425 0.0613 0.22997 0.0537 0.39861 0.15331l-0.14564 0.45993q-0.14565-0.0767-0.33729-0.12265-0.19164-0.0537-0.39094-0.0537-0.27596 0-0.40628 0.11498-0.12265 0.11498-0.12265 0.36028 0 0.19164 0.10732 0.32962 0.10732 0.13031 0.2683 0.2453 0.16864 0.10731 0.36028 0.2223 0.19164 0.11498 0.35261 0.27596 0.16865 0.15331 0.27596 0.37561 0.10732 0.21464 0.10732 0.54425 0 0.21464-0.069 0.40628t-0.21463 0.33728q-0.13798 0.13798-0.35262 0.2223-0.20697 0.0843-0.4906 0.0843-0.33728 0-0.58258-0.069-0.2453-0.0613-0.41394-0.16865z"/>
<path d="m-646.25-330.43h0.39094l0.0843 0.41394h0.0307q0.28363-0.50593 0.88921-0.50593t0.90453 0.45227q0.30663 0.45227 0.30663 1.4794 0 0.48293-0.0997 0.87388-0.0996 0.38328-0.28362 0.65924-0.18397 0.26829-0.45227 0.41394-0.26063 0.13798-0.58258 0.13798-0.2223 0-0.35262-0.0307-0.13031-0.023-0.28362-0.10731v1.5791h-0.55192zm0.55192 3.2272q0.10732 0.092 0.23763 0.14565 0.13798 0.0537 0.36028 0.0537 0.40628 0 0.64391-0.41394t0.23763-1.1805q0-0.32195-0.046-0.58258-0.0383-0.26063-0.13032-0.44461-0.092-0.19163-0.23763-0.29129-0.13798-0.10731-0.34495-0.10731-0.55959 0-0.72056 0.68223z"/>
<path d="m-643.08-328.51q0-1.0348 0.35262-1.5178 0.36028-0.4906 1.0195-0.4906 0.70523 0 1.0348 0.49827 0.33728 0.49826 0.33728 1.5101 0 1.0425-0.36028 1.5254t-1.0118 0.48293q-0.70523 0-1.0425-0.49827-0.32962-0.49826-0.32962-1.5101zm0.57492 0q0 0.33728 0.0383 0.61324 0.046 0.27596 0.13798 0.47527 0.0996 0.1993 0.25296 0.31429 0.15331 0.10731 0.36795 0.10731 0.39861 0 0.59791-0.35261 0.19931-0.36028 0.19931-1.1575 0-0.32962-0.046-0.60558-0.0383-0.28362-0.13798-0.48293-0.092-0.1993-0.24529-0.30662-0.15332-0.11498-0.36795-0.11498-0.39094 0-0.59791 0.36028-0.19931 0.36028-0.19931 1.1498z"/>
<path d="m-639.6-330.43h0.39095l0.0996 0.40628h0.023q0.10732-0.22231 0.27596-0.34495 0.17631-0.13032 0.42161-0.13032 0.17631 0 0.39861 0.069l-0.10732 0.55959q-0.1993-0.069-0.35261-0.069-0.2453 0-0.39861 0.14564-0.15331 0.13798-0.19931 0.37561v2.8209h-0.55192z"/>
<path d="m-637.71-330.43h0.4676v-0.75889l0.55192-0.17631v0.9352h0.82788v0.49826h-0.82788v2.2843q0 0.33728 0.0767 0.49059 0.0843 0.14565 0.2683 0.14565 0.15331 0 0.26063-0.0307 0.11498-0.0383 0.24529-0.092l0.10732 0.43694q-0.16864 0.0843-0.37561 0.13031-0.19931 0.0537-0.42161 0.0537-0.38327 0-0.55192-0.2453-0.16097-0.25296-0.16097-0.81255v-2.361h-0.4676z"/>
</g>
<g dominant-baseline="auto" stroke-width=".19164" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal" aria-label="Abstract Protocol">
<path d="m-589.74-1.0224h-1.5178l-0.42927 1.5024h-0.56725l1.6174-5.4502h0.31429l1.6174 5.4502h-0.59791zm-1.3645-0.51359h1.2265l-0.4676-1.6558-0.14564-0.80488h-0.0153l-0.14565 0.82021z"/>
<path d="m-588.22-4.8858h0.55192v1.8244h0.023q0.31429-0.38328 0.83554-0.38328 0.59025 0 0.88154 0.4676 0.29896 0.4676 0.29896 1.4795 0 1.0349-0.39861 1.5408-0.39094 0.50593-1.1115 0.50593-0.35262 0-0.64391-0.076656-0.29129-0.084321-0.43694-0.19164zm0.55192 4.8063q0.10732 0.061324 0.26063 0.099652 0.16098 0.030662 0.33729 0.030662 0.3986 0 0.62857-0.37561 0.23763-0.38328 0.23763-1.1728 0-0.32962-0.046-0.59025-0.0383-0.26829-0.13031-0.45993-0.0843-0.19164-0.22997-0.29129-0.13798-0.10732-0.33729-0.10732-0.27596 0-0.45993 0.16864-0.17631 0.16098-0.26063 0.4446z"/>
<path d="m-584.96-0.1485q0.15332 0.091987 0.36029 0.16098 0.21463 0.061324 0.43693 0.061324 0.25297 0 0.42927-0.12265 0.17631-0.13031 0.17631-0.41394 0-0.23763-0.10732-0.39094-0.10731-0.15331-0.27596-0.27596-0.16097-0.12265-0.35261-0.2223-0.19164-0.10732-0.36028-0.25296-0.16098-0.14565-0.2683-0.34495-0.10732-0.1993-0.10732-0.50593 0-0.4906 0.26063-0.73589 0.2683-0.25296 0.75123-0.25296 0.31429 0 0.54425 0.061324 0.22997 0.053659 0.39861 0.15331l-0.14564 0.45993q-0.14565-0.076656-0.33729-0.12265-0.19164-0.053659-0.39094-0.053659-0.27596 0-0.40628 0.11498-0.12265 0.11498-0.12265 0.36028 0 0.19164 0.10732 0.32962 0.10732 0.13031 0.2683 0.2453 0.16864 0.10732 0.36028 0.2223t0.35261 0.27596q0.16865 0.15331 0.27596 0.37561 0.10732 0.21464 0.10732 0.54425 0 0.21464-0.069 0.40627t-0.21463 0.33728q-0.13798 0.13798-0.35262 0.2223-0.20697 0.084321-0.4906 0.084321-0.33728 0-0.58258-0.06899-0.2453-0.061324-0.41394-0.16864z"/>
<path d="m-582.69-3.3527h0.4676v-0.75889l0.55192-0.17631v0.9352h0.82788v0.49826h-0.82788v2.2843q0 0.33728 0.0767 0.4906 0.0843 0.14565 0.2683 0.14565 0.15331 0 0.26063-0.030662 0.11498-0.038328 0.2453-0.091987l0.10731 0.43694q-0.16864 0.084321-0.37561 0.13031-0.1993 0.053659-0.4216 0.053659-0.38328 0-0.55192-0.2453-0.16098-0.25296-0.16098-0.81255v-2.361h-0.4676z"/>
<path d="m-580.19-3.3527h0.39094l0.0997 0.40627h0.023q0.10732-0.2223 0.27596-0.34495 0.17631-0.13031 0.42161-0.13031 0.17631 0 0.39861 0.06899l-0.10732 0.55959q-0.1993-0.06899-0.35262-0.06899-0.24529 0-0.3986 0.14565-0.15332 0.13798-0.19931 0.37561v2.8209h-0.55192z"/>
<path d="m-578.14-3.1227q0.2223-0.13798 0.53659-0.21464 0.32196-0.076656 0.67457-0.076656 0.32195 0 0.51359 0.099652 0.19931 0.091987 0.30663 0.26063 0.11498 0.16098 0.14564 0.37561 0.0383 0.20697 0.0383 0.43694 0 0.45993-0.023 0.89687-0.0153 0.43694-0.0153 0.82788 0 0.29129 0.0153 0.54425 0.023 0.2453 0.0767 0.4676h-0.42161l-0.13031-0.45227h-0.0307q-0.11499 0.1993-0.33729 0.34495-0.2223 0.14565-0.59791 0.14565-0.41394 0-0.68224-0.28363-0.26063-0.29129-0.26063-0.79722 0-0.32962 0.10732-0.55192 0.11499-0.2223 0.31429-0.36028 0.20697-0.13798 0.48293-0.19164 0.28363-0.061325 0.62858-0.061325 0.0766 0 0.15331 0 0.0767 0 0.16097 0.00767 0.023-0.23763 0.023-0.42161 0-0.43694-0.13031-0.61324-0.13032-0.17631-0.47527-0.17631-0.21463 0-0.4676 0.06899-0.25296 0.061325-0.4216 0.16098zm1.6634 1.8551q-0.0767-0.00767-0.15331-0.00767-0.0767-0.00767-0.15331-0.00767-0.18398 0-0.36028 0.030662-0.17631 0.030662-0.31429 0.10732-0.13798 0.076655-0.2223 0.20697-0.0767 0.13031-0.0767 0.32962 0 0.30662 0.14565 0.47526 0.15331 0.16864 0.39094 0.16864 0.32195 0 0.49826-0.15331t0.2453-0.33728z"/>
<path d="m-572.91 0.28844q-0.19164 0.14565-0.43693 0.21464-0.2453 0.06899-0.5136 0.06899-0.36794 0-0.62091-0.13798-0.25296-0.14565-0.41394-0.40627-0.15331-0.26829-0.22996-0.63624-0.069-0.37561-0.069-0.82788 0-0.98119 0.34495-1.4948 0.35261-0.51359 1.0042-0.51359 0.29896 0 0.5136 0.053659 0.21463 0.053659 0.36794 0.13798l-0.15331 0.48293q-0.30662-0.17631-0.6669-0.17631-0.41394 0-0.62858 0.36795-0.20697 0.36028-0.20697 1.1422 0 0.31429 0.046 0.59025 0.046 0.27596 0.15331 0.48293 0.10732 0.1993 0.27596 0.32195 0.16864 0.11498 0.4216 0.11498 0.19931 0 0.36795-0.06899 0.17631-0.06899 0.28363-0.16098z"/>
<path d="m-572.69-3.3527h0.46759v-0.75889l0.55192-0.17631v0.9352h0.82788v0.49826h-0.82788v2.2843q0 0.33728 0.0767 0.4906 0.0843 0.14565 0.26829 0.14565 0.15332 0 0.26063-0.030662 0.11499-0.038328 0.2453-0.091987l0.10732 0.43694q-0.16864 0.084321-0.37561 0.13031-0.19931 0.053659-0.42161 0.053659-0.38328 0-0.55192-0.2453-0.16098-0.25296-0.16098-0.81255v-2.361h-0.46759z"/>
<path d="m-591.85 4.7498q0.2453-0.06899 0.52126-0.091987t0.54425-0.022997q0.30663 0 0.60558 0.06899 0.29896 0.06899 0.53659 0.25296 0.2453 0.18397 0.39094 0.50593 0.15332 0.32195 0.15332 0.82021 0 0.48293-0.14565 0.82021-0.13798 0.33728-0.37561 0.55192-0.22997 0.20697-0.53659 0.30662-0.29896 0.091987-0.62091 0.091987-0.0307 0-0.0996 0-0.069 0-0.14565 0-0.0767-0.00767-0.15331-0.015331-0.069-0.00767-0.0996-0.015331v2.039h-0.57492zm1.0962 0.41394q-0.15332 0-0.29896 0.015331-0.13798 0.00767-0.2223 0.030662v2.2843q0.0307 0.015331 0.092 0.022997 0.069 0 0.13798 0.00767 0.069 0 0.13032 0 0.069 0 0.0996 0 0.21464 0 0.41394-0.053659 0.19931-0.053659 0.35262-0.19164 0.15331-0.14565 0.24529-0.38328 0.0997-0.2453 0.0997-0.61324 0-0.32195-0.092-0.53659-0.0843-0.21464-0.22997-0.34495-0.13798-0.13031-0.32962-0.18397-0.19163-0.053659-0.3986-0.053659z"/>
<path d="m-588.64 6.2292h0.39094l0.0997 0.40627h0.023q0.10732-0.2223 0.27596-0.34495 0.17631-0.13031 0.42161-0.13031 0.17631 0 0.39861 0.06899l-0.10732 0.55959q-0.1993-0.06899-0.35262-0.06899-0.24529 0-0.3986 0.14565-0.15332 0.13798-0.19931 0.37561v2.8209h-0.55192z"/>
<path d="m-586.71 8.1456q0-1.0349 0.35262-1.5178 0.36028-0.4906 1.0195-0.4906 0.70524 0 1.0348 0.49826 0.33729 0.49826 0.33729 1.5101 0 1.0425-0.36028 1.5254-0.36028 0.48293-1.0119 0.48293-0.70523 0-1.0425-0.49826-0.32962-0.49826-0.32962-1.5101zm0.57492 0q0 0.33728 0.0383 0.61324 0.046 0.27596 0.13798 0.47526 0.0997 0.1993 0.25297 0.31429 0.15331 0.10732 0.36794 0.10732 0.39861 0 0.59792-0.35262 0.1993-0.36028 0.1993-1.1575 0-0.32962-0.046-0.60558-0.0383-0.28363-0.13798-0.48293-0.092-0.1993-0.2453-0.30662-0.15331-0.11498-0.36795-0.11498-0.39094 0-0.59791 0.36028-0.1993 0.36028-0.1993 1.1498z"/>
<path d="m-583.62 6.2292h0.4676v-0.75889l0.55192-0.17631v0.9352h0.82788v0.49826h-0.82788v2.2843q0 0.33728 0.0766 0.4906 0.0843 0.14565 0.2683 0.14565 0.15331 0 0.26063-0.030662 0.11498-0.038328 0.2453-0.091987l0.10731 0.43694q-0.16864 0.084321-0.37561 0.13031-0.1993 0.05366-0.4216 0.05366-0.38328 0-0.55192-0.2453-0.16098-0.25296-0.16098-0.81255v-2.361h-0.4676z"/>
<path d="m-581.35 8.1456q0-1.0349 0.35262-1.5178 0.36028-0.4906 1.0195-0.4906 0.70524 0 1.0348 0.49826 0.33729 0.49826 0.33729 1.5101 0 1.0425-0.36028 1.5254-0.36028 0.48293-1.0119 0.48293-0.70523 0-1.0425-0.49826-0.32962-0.49826-0.32962-1.5101zm0.57492 0q0 0.33728 0.0383 0.61324 0.046 0.27596 0.13798 0.47526 0.0997 0.1993 0.25297 0.31429 0.15331 0.10732 0.36794 0.10732 0.39861 0 0.59792-0.35262 0.1993-0.36028 0.1993-1.1575 0-0.32962-0.046-0.60558-0.0383-0.28363-0.13798-0.48293-0.092-0.1993-0.2453-0.30662-0.15331-0.11498-0.36795-0.11498-0.39094 0-0.59791 0.36028-0.1993 0.36028-0.1993 1.1498z"/>
<path d="m-575.76 9.8704q-0.19164 0.14565-0.43694 0.21464-0.24529 0.06899-0.51359 0.06899-0.36794 0-0.62091-0.13798-0.25296-0.14565-0.41394-0.40627-0.15331-0.26829-0.22996-0.63624-0.069-0.37561-0.069-0.82788 0-0.98119 0.34495-1.4948 0.35261-0.51359 1.0042-0.51359 0.29896 0 0.5136 0.053659 0.21463 0.053659 0.36794 0.13798l-0.15331 0.48293q-0.30662-0.17631-0.6669-0.17631-0.41394 0-0.62858 0.36795-0.20697 0.36028-0.20697 1.1422 0 0.31429 0.046 0.59025t0.15331 0.48293q0.10731 0.1993 0.27596 0.32195 0.16864 0.11498 0.4216 0.11498 0.19931 0 0.36795-0.06899 0.17631-0.06899 0.28362-0.16098z"/>
<path d="m-575.45 8.1456q0-1.0349 0.35261-1.5178 0.36028-0.4906 1.0195-0.4906 0.70523 0 1.0348 0.49826 0.33728 0.49826 0.33728 1.5101 0 1.0425-0.36028 1.5254-0.36028 0.48293-1.0118 0.48293-0.70523 0-1.0425-0.49826-0.32961-0.49826-0.32961-1.5101zm0.57491 0q0 0.33728 0.0383 0.61324 0.046 0.27596 0.13798 0.47526 0.0996 0.1993 0.25296 0.31429 0.15331 0.10732 0.36795 0.10732 0.39861 0 0.59791-0.35262 0.19931-0.36028 0.19931-1.1575 0-0.32962-0.046-0.60558-0.0383-0.28363-0.13798-0.48293-0.092-0.1993-0.24529-0.30662-0.15331-0.11498-0.36795-0.11498-0.39094 0-0.59791 0.36028-0.19931 0.36028-0.19931 1.1498z"/>
<path d="m-571.38 9.1498q0 0.26829 0.069 0.38328 0.0767 0.11498 0.20697 0.11498 0.16098 0 0.37561-0.084321l0.0537 0.4446q-0.0996 0.06132-0.28362 0.09965-0.17631 0.03833-0.32196 0.03833-0.29129 0-0.47526-0.17631-0.17631-0.18397-0.17631-0.63624v-4.6377h0.55192z"/>
<path d="m-518.21-338.44h-1.5178l-0.42928 1.5024h-0.56725l1.6174-5.4502h0.31428l1.6174 5.4502h-0.59792zm-1.3645-0.51359h1.2265l-0.4676-1.6558-0.14565-0.80488h-0.0153l-0.14565 0.82021z"/>
<path d="m-516.69-342.3h0.55192v1.8244h0.023q0.31429-0.38327 0.83555-0.38327 0.59025 0 0.88154 0.46759 0.29895 0.4676 0.29895 1.4795 0 1.0348-0.3986 1.5408-0.39095 0.50593-1.1115 0.50593-0.35262 0-0.64391-0.0767-0.29129-0.0843-0.43693-0.19163zm0.55192 4.8063q0.10731 0.0613 0.26063 0.0997 0.16097 0.0307 0.33728 0.0307 0.39861 0 0.62858-0.37561 0.23763-0.38328 0.23763-1.1728 0-0.32962-0.046-0.59025-0.0383-0.2683-0.13031-0.45993-0.0843-0.19164-0.22997-0.2913-0.13798-0.10731-0.33728-0.10731-0.27596 0-0.45993 0.16864-0.17631 0.16098-0.26063 0.4446z"/>
<path d="m-513.42-337.56q0.15331 0.092 0.36028 0.16098 0.21464 0.0613 0.43694 0.0613 0.25296 0 0.42927-0.12265 0.17631-0.13032 0.17631-0.41394 0-0.23764-0.10732-0.39095t-0.27596-0.27596q-0.16098-0.12265-0.35262-0.2223-0.19164-0.10732-0.36028-0.25296-0.16098-0.14565-0.26829-0.34495-0.10732-0.19931-0.10732-0.50593 0-0.49059 0.26063-0.73589 0.26829-0.25296 0.75122-0.25296 0.31429 0 0.54426 0.0613 0.22996 0.0537 0.39861 0.15331l-0.14565 0.45993q-0.14565-0.0766-0.33728-0.12264-0.19164-0.0537-0.39095-0.0537-0.27596 0-0.40627 0.11498-0.12265 0.11498-0.12265 0.36028 0 0.19164 0.10732 0.32962 0.10731 0.13031 0.26829 0.2453 0.16864 0.10732 0.36028 0.2223t0.35262 0.27596q0.16864 0.15331 0.27596 0.37561 0.10732 0.21464 0.10732 0.54426 0 0.21463-0.069 0.40627t-0.21464 0.33728q-0.13798 0.13798-0.35262 0.22231-0.20697 0.0843-0.49059 0.0843-0.33729 0-0.58258-0.069-0.2453-0.0613-0.41394-0.16865z"/>
<path d="m-511.16-340.77h0.46759v-0.75889l0.55192-0.17631v0.9352h0.82788v0.49826h-0.82788v2.2843q0 0.33728 0.0767 0.49059 0.0843 0.14565 0.26829 0.14565 0.15332 0 0.26063-0.0307 0.11499-0.0383 0.2453-0.092l0.10732 0.43694q-0.16864 0.0843-0.37561 0.13031-0.19931 0.0537-0.42161 0.0537-0.38328 0-0.55192-0.2453-0.16098-0.25296-0.16098-0.81255v-2.361h-0.46759z"/>
<path d="m-508.66-340.77h0.39094l0.0996 0.40628h0.023q0.10732-0.2223 0.27596-0.34495 0.17631-0.13032 0.4216-0.13032 0.17631 0 0.39861 0.069l-0.10732 0.55959q-0.1993-0.069-0.35261-0.069-0.2453 0-0.39861 0.14564-0.15331 0.13798-0.1993 0.37562v2.8209h-0.55192z"/>
<path d="m-506.6-340.54q0.2223-0.13798 0.53659-0.21464 0.32195-0.0766 0.67457-0.0766 0.32195 0 0.51359 0.0996 0.1993 0.092 0.30662 0.26063 0.11498 0.16098 0.14565 0.37561 0.0383 0.20697 0.0383 0.43694 0 0.45993-0.023 0.89687-0.0153 0.43693-0.0153 0.82788 0 0.29129 0.0153 0.54425 0.023 0.2453 0.0767 0.4676h-0.4216l-0.13032-0.45227h-0.0307q-0.11498 0.19931-0.33728 0.34495-0.2223 0.14565-0.59792 0.14565-0.41394 0-0.68223-0.28363-0.26063-0.29129-0.26063-0.79721 0-0.32962 0.10732-0.55192 0.11498-0.22231 0.31429-0.36029 0.20697-0.13798 0.48293-0.19163 0.28362-0.0613 0.62857-0.0613 0.0767 0 0.15331 0 0.0767 0 0.16098 8e-3 0.023-0.23764 0.023-0.42161 0-0.43694-0.13032-0.61324-0.13031-0.17631-0.47526-0.17631-0.21464 0-0.4676 0.069-0.25297 0.0613-0.42161 0.16098zm1.6634 1.8551q-0.0766-8e-3 -0.15331-8e-3 -0.0767-8e-3 -0.15331-8e-3 -0.18397 0-0.36028 0.0307t-0.31429 0.10732q-0.13798 0.0767-0.2223 0.20697-0.0767 0.13032-0.0767 0.32962 0 0.30662 0.14564 0.47527 0.15331 0.16864 0.39095 0.16864 0.32195 0 0.49826-0.15331 0.1763-0.15331 0.24529-0.33729z"/>
<path d="m-501.38-337.12q-0.19164 0.14565-0.43694 0.21464-0.2453 0.069-0.51359 0.069-0.36795 0-0.62091-0.13798-0.25297-0.14565-0.41394-0.40628-0.15331-0.26829-0.22997-0.63624-0.069-0.37561-0.069-0.82788 0-0.98119 0.34495-1.4948 0.35262-0.51359 1.0042-0.51359 0.29896 0 0.51359 0.0537 0.21464 0.0537 0.36795 0.13798l-0.15331 0.48293q-0.30662-0.1763-0.66691-0.1763-0.41394 0-0.62857 0.36794-0.20697 0.36028-0.20697 1.1422 0 0.31429 0.046 0.59025t0.15331 0.48293q0.10732 0.1993 0.27596 0.32195 0.16864 0.11499 0.42161 0.11499 0.1993 0 0.36795-0.069 0.1763-0.069 0.28362-0.16098z"/>
<path d="m-501.15-340.77h0.4676v-0.75889l0.55192-0.17631v0.9352h0.82788v0.49826h-0.82788v2.2843q0 0.33728 0.0767 0.49059 0.0843 0.14565 0.26829 0.14565 0.15331 0 0.26063-0.0307 0.11498-0.0383 0.2453-0.092l0.10731 0.43694q-0.16864 0.0843-0.37561 0.13031-0.1993 0.0537-0.4216 0.0537-0.38328 0-0.55192-0.2453-0.16098-0.25296-0.16098-0.81255v-2.361h-0.4676z"/>
<path d="m-520.32-332.66q0.24529-0.069 0.52125-0.092t0.54426-0.023q0.30662 0 0.60558 0.069 0.29895 0.069 0.53659 0.25296 0.24529 0.18398 0.39094 0.50593 0.15331 0.32195 0.15331 0.82022 0 0.48293-0.14564 0.82021-0.13798 0.33729-0.37562 0.55192-0.22996 0.20697-0.53659 0.30662-0.29895 0.092-0.62091 0.092-0.0307 0-0.0996 0-0.069 0-0.14564 0-0.0767-8e-3 -0.15331-0.0153-0.069-8e-3 -0.0997-0.0153v2.039h-0.57491zm1.0962 0.41394q-0.15331 0-0.29896 0.0153-0.13798 8e-3 -0.2223 0.0307v2.2843q0.0307 0.0153 0.092 0.023 0.069 0 0.13798 8e-3 0.069 0 0.13031 0 0.069 0 0.0997 0 0.21463 0 0.41394-0.0537 0.1993-0.0537 0.35261-0.19164 0.15331-0.14565 0.2453-0.38328 0.0996-0.2453 0.0996-0.61324 0-0.32196-0.092-0.53659-0.0843-0.21464-0.22997-0.34495-0.13798-0.13032-0.32962-0.18398-0.19164-0.0537-0.39861-0.0537z"/>
<path d="m-517.11-331.18h0.39094l0.0996 0.40627h0.023q0.10732-0.2223 0.27596-0.34495 0.17631-0.13031 0.4216-0.13031 0.17631 0 0.39861 0.069l-0.10731 0.55958q-0.19931-0.069-0.35262-0.069-0.2453 0-0.39861 0.14565-0.15331 0.13798-0.1993 0.37561v2.8209h-0.55192z"/>
<path d="m-515.18-329.27q0-1.0348 0.35262-1.5178 0.36028-0.4906 1.0195-0.4906 0.70523 0 1.0348 0.49826 0.33728 0.49826 0.33728 1.5101 0 1.0425-0.36028 1.5254t-1.0118 0.48293q-0.70523 0-1.0425-0.49826-0.32962-0.49826-0.32962-1.5101zm0.57492 0q0 0.33728 0.0383 0.61324 0.046 0.27596 0.13798 0.47527 0.0996 0.1993 0.25296 0.31428 0.15331 0.10732 0.36795 0.10732 0.39861 0 0.59791-0.35261 0.19931-0.36029 0.19931-1.1575 0-0.32962-0.046-0.60558-0.0383-0.28363-0.13798-0.48293-0.092-0.19931-0.24529-0.30663-0.15332-0.11498-0.36795-0.11498-0.39094 0-0.59791 0.36028-0.19931 0.36028-0.19931 1.1498z"/>
<path d="m-512.08-331.18h0.4676v-0.75889l0.55192-0.17631v0.9352h0.82788v0.49826h-0.82788v2.2843q0 0.33729 0.0767 0.4906 0.0843 0.14565 0.26829 0.14565 0.15331 0 0.26063-0.0307 0.11499-0.0383 0.2453-0.092l0.10732 0.43693q-0.16864 0.0843-0.37561 0.13032-0.19931 0.0537-0.42161 0.0537-0.38328 0-0.55192-0.2453-0.16098-0.25296-0.16098-0.81255v-2.361h-0.4676z"/>
<path d="m-509.82-329.27q0-1.0348 0.35261-1.5178 0.36028-0.4906 1.0195-0.4906 0.70523 0 1.0348 0.49826 0.33728 0.49826 0.33728 1.5101 0 1.0425-0.36028 1.5254t-1.0118 0.48293q-0.70523 0-1.0425-0.49826-0.32961-0.49826-0.32961-1.5101zm0.57491 0q0 0.33728 0.0383 0.61324 0.046 0.27596 0.13798 0.47527 0.0996 0.1993 0.25296 0.31428 0.15331 0.10732 0.36795 0.10732 0.39861 0 0.59791-0.35261 0.19931-0.36029 0.19931-1.1575 0-0.32962-0.046-0.60558-0.0383-0.28363-0.13798-0.48293-0.092-0.19931-0.24529-0.30663-0.15331-0.11498-0.36795-0.11498-0.39094 0-0.59791 0.36028-0.19931 0.36028-0.19931 1.1498z"/>
<path d="m-504.23-327.54q-0.19164 0.14564-0.43694 0.21463-0.2453 0.069-0.51359 0.069-0.36795 0-0.62091-0.13798-0.25297-0.14564-0.41394-0.40627-0.15331-0.2683-0.22997-0.63624-0.069-0.37562-0.069-0.82788 0-0.98119 0.34495-1.4948 0.35262-0.51359 1.0042-0.51359 0.29896 0 0.51359 0.0537 0.21464 0.0537 0.36795 0.13798l-0.15331 0.48293q-0.30663-0.17631-0.66691-0.17631-0.41394 0-0.62857 0.36795-0.20697 0.36028-0.20697 1.1422 0 0.31428 0.046 0.59024t0.15331 0.48293q0.10732 0.19931 0.27596 0.32196 0.16864 0.11498 0.42161 0.11498 0.1993 0 0.36794-0.069 0.17631-0.069 0.28363-0.16098z"/>
<path d="m-503.92-329.27q0-1.0348 0.35262-1.5178 0.36028-0.4906 1.0195-0.4906 0.70524 0 1.0348 0.49826 0.33729 0.49826 0.33729 1.5101 0 1.0425-0.36028 1.5254t-1.0119 0.48293q-0.70523 0-1.0425-0.49826-0.32962-0.49826-0.32962-1.5101zm0.57492 0q0 0.33728 0.0383 0.61324 0.046 0.27596 0.13798 0.47527 0.0997 0.1993 0.25297 0.31428 0.15331 0.10732 0.36794 0.10732 0.39861 0 0.59792-0.35261 0.1993-0.36029 0.1993-1.1575 0-0.32962-0.046-0.60558-0.0383-0.28363-0.13798-0.48293-0.092-0.19931-0.2453-0.30663-0.15331-0.11498-0.36795-0.11498-0.39094 0-0.59791 0.36028-0.1993 0.36028-0.1993 1.1498z"/>
<path d="m-499.85-328.26q0 0.2683 0.069 0.38328 0.0767 0.11499 0.20697 0.11499 0.16097 0 0.37561-0.0843l0.0537 0.44461q-0.0997 0.0613-0.28363 0.0996-0.17631 0.0383-0.32195 0.0383-0.29129 0-0.47527-0.17631-0.1763-0.18397-0.1763-0.63624v-4.6377h0.55192z"/>
</g>
</g>
</g>
<path d="m-666.95-5.8436h18.161v5.8389h-18.161z" fill="#999" stroke="#999" stroke-width=".053718"/>
<path d="m-666.95 1.9049h18.161v5.8389h-18.161z" fill="#999" stroke="#999" stroke-width=".053718"/>
<path d="m-625.84-304.32h18.161v5.8389h-18.161z" fill="#999" stroke="#999" stroke-width=".053718"/>
<path d="m-625.84-296.58h18.161v5.8389h-18.161z" fill="#999" stroke="#999" stroke-width=".053718"/>
<g stroke-width=".062942" aria-label="lws_token_map_t">
<path d="m-667.03 10.818q0 0.08812 0.0227 0.12588 0.0252 0.03777 0.068 0.03777 0.0529 0 0.12336-0.02769l0.0176 0.14602q-0.0327 0.02014-0.0932 0.03273-0.0579 0.01259-0.10574 0.01259-0.0957 0-0.15609-0.05791-0.0579-0.06042-0.0579-0.20897v-1.5232h0.18127z"/>
<path d="m-665.97 9.8583 0.22407 0.73516 0.0453 0.2417h5e-3l0.0378-0.24673 0.1712-0.73012h0.1712l-0.33485 1.2865h-0.10322l-0.25429-0.82579-0.0352-0.21148h-5e-3l-0.0353 0.214-0.24673 0.82328h-0.10322l-0.34492-1.2865h0.19386l0.19386 0.73264 0.0302 0.24421h5e-3l0.0453-0.24925 0.20645-0.72761z"/>
<path d="m-665.17 10.911q0.0504 0.03021 0.11833 0.05287 0.0705 0.02014 0.14351 0.02014 0.0831 0 0.14099-0.04028 0.0579-0.0428 0.0579-0.13595 0-0.07805-0.0352-0.1284-0.0352-0.05035-0.0906-0.09064-0.0529-0.04028-0.11581-0.07301-0.063-0.03525-0.11833-0.08308-0.0529-0.04784-0.0881-0.1133-0.0353-0.06546-0.0353-0.16617 0-0.16113 0.0856-0.2417 0.0881-0.083083 0.24673-0.083083 0.10323 0 0.17876 0.020141 0.0755 0.017624 0.13092 0.050353l-0.0478 0.15106q-0.0478-0.02518-0.11078-0.04028-0.0629-0.017623-0.1284-0.017623-0.0906 0-0.13344 0.037764-0.0403 0.03777-0.0403 0.11833 0 0.06294 0.0353 0.10826 0.0353 0.0428 0.0881 0.08057 0.0554 0.03525 0.11833 0.07301 0.0629 0.03777 0.11581 0.09064 0.0554 0.05035 0.0906 0.12337 0.0352 0.07049 0.0352 0.17875 0 0.07049-0.0226 0.13344-0.0227 0.06294-0.0705 0.11078-0.0453 0.04532-0.11581 0.07301-0.068 0.02769-0.16113 0.02769-0.11078 0-0.19135-0.02266-0.0806-0.02014-0.13595-0.05539z"/>
<path d="m-664.45 11.47h0.8409v0.16365h-0.8409z"/>
<path d="m-663.59 9.8583h0.15358v-0.24925l0.18127-0.057906v0.30716h0.27191v0.16365h-0.27191v0.75026q0 0.11078 0.0252 0.16113 0.0277 0.04784 0.0881 0.04784 0.0503 0 0.0856-0.01007 0.0378-0.01259 0.0806-0.03021l0.0353 0.14351q-0.0554 0.02769-0.12336 0.0428-0.0655 0.01762-0.13848 0.01762-0.12588 0-0.18127-0.08057-0.0529-0.08308-0.0529-0.26687v-0.77544h-0.15358z"/>
<path d="m-662.84 10.488q0-0.33988 0.11581-0.4985 0.11833-0.16113 0.33485-0.16113 0.23163 0 0.33989 0.16365 0.11078 0.16365 0.11078 0.49598 0 0.3424-0.11833 0.50102-0.11834 0.15861-0.33234 0.15861-0.23162 0-0.3424-0.16365-0.10826-0.16365-0.10826-0.49598zm0.18883 0q0 0.11078 0.0126 0.20141 0.0151 0.09064 0.0453 0.1561 0.0327 0.06546 0.0831 0.10322 0.0503 0.03525 0.12084 0.03525 0.13092 0 0.19638-0.11581 0.0655-0.11833 0.0655-0.38017 0-0.10826-0.0151-0.1989-0.0126-0.09315-0.0453-0.15861-0.0302-0.06546-0.0806-0.10071-0.0503-0.037764-0.12085-0.037764-0.1284 0-0.19637 0.11833-0.0655 0.11833-0.0655 0.37765z"/>
<path d="m-661.43 10.551h-0.0931v0.56648h-0.18127v-1.7624h0.18127v1.0725l0.0831-0.03525 0.29457-0.53374h0.20896l-0.29708 0.50857-0.0881 0.08057 0.10323 0.09819 0.32478 0.57151h-0.21904z"/>
<path d="m-660 11.032q-0.0604 0.05539-0.15358 0.0856-0.0931 0.03021-0.19638 0.03021-0.11833 0-0.20645-0.04532-0.0856-0.04784-0.1435-0.13344-0.0554-0.08812-0.0831-0.20897-0.0252-0.12085-0.0252-0.27191 0-0.32226 0.11833-0.49095 0.11833-0.16868 0.33485-0.16868 0.0705 0 0.13847 0.017624 0.0705 0.017624 0.12588 0.070495 0.0554 0.052871 0.0881 0.14854 0.0353 0.09567 0.0353 0.24925 0 0.0428-5e-3 0.09315-3e-3 0.04784-8e-3 0.10071h-0.63949q0 0.10826 0.0176 0.19638 0.0176 0.08812 0.0554 0.15106 0.0378 0.06042 0.0957 0.09567 0.0604 0.03273 0.14854 0.03273 0.068 0 0.13343-0.02518 0.068-0.02518 0.10323-0.06042zm-0.14099-0.67473q5e-3 -0.18882-0.0529-0.27694-0.0579-0.088119-0.15862-0.088119-0.11581 0-0.18378 0.088119-0.068 0.08812-0.0806 0.27694z"/>
<path d="m-659.07 11.117v-0.76789q0-0.18882-0.0453-0.27191-0.0428-0.0856-0.15609-0.0856-0.10071 0-0.16617 0.060423-0.0655 0.06042-0.0957 0.14854v0.91643h-0.18127v-1.2588h0.13092l0.0327 0.13344h8e-3q0.0478-0.067977 0.1284-0.11581 0.0831-0.047836 0.19638-0.047836 0.0806 0 0.14099 0.022659 0.0629 0.022659 0.10322 0.078048 0.0428 0.052871 0.0629 0.14351 0.0227 0.09064 0.0227 0.22911v0.81572z"/>
<path d="m-658.75 11.47h0.8409v0.16365h-0.8409z"/>
<path d="m-657.17 11.117v-0.74775q0-0.10071-8e-3 -0.1712-5e-3 -0.07301-0.0252-0.11833-0.0201-0.04532-0.0554-0.06546-0.0352-0.022658-0.0932-0.022658-0.0856 0-0.14603 0.067976-0.0579 0.06546-0.0806 0.15106v0.90636h-0.18127v-1.2588h0.1284l0.0327 0.13344h8e-3q0.0529-0.073012 0.12588-0.11833 0.073-0.045318 0.18631-0.045318 0.0957 0 0.1561 0.0428 0.0629 0.040283 0.0982 0.14602 0.0453-0.088118 0.1284-0.13847 0.0856-0.050353 0.1863-0.050353 0.0831 0 0.14099 0.022659 0.0604 0.020141 0.0957 0.07553 0.0378 0.052871 0.0554 0.14351 0.0176 0.08812 0.0176 0.22407v0.82328h-0.18128v-0.80062q0-0.16365-0.0327-0.24421-0.0302-0.080565-0.14351-0.080565-0.0957 0-0.15358 0.060423-0.0554 0.05791-0.078 0.15861v0.90636z"/>
<path d="m-656.14 9.9339q0.073-0.045318 0.17623-0.070495 0.10574-0.025177 0.22156-0.025177 0.10574 0 0.16868 0.03273 0.0655 0.030212 0.10071 0.085601 0.0378 0.052871 0.0478 0.12337 0.0126 0.06798 0.0126 0.14351 0 0.15106-8e-3 0.29457-5e-3 0.14351-5e-3 0.27191 0 0.09567 5e-3 0.17875 8e-3 0.08057 0.0252 0.15358h-0.13847l-0.0428-0.14854h-0.0101q-0.0378 0.06546-0.11078 0.1133-0.073 0.04784-0.19637 0.04784-0.13596 0-0.22408-0.09315-0.0856-0.09567-0.0856-0.26184 0-0.10826 0.0353-0.18127 0.0378-0.07301 0.10323-0.11833 0.068-0.04532 0.15861-0.06294 0.0932-0.02014 0.20645-0.02014 0.0252 0 0.0503 0 0.0252 0 0.0529 0.0025 8e-3 -0.07805 8e-3 -0.13847 0-0.14351-0.0428-0.20141-0.0428-0.05791-0.15609-0.05791-0.0705 0-0.15358 0.02266-0.0831 0.02014-0.13847 0.05287zm0.54633 0.60927q-0.0252-0.0025-0.0503-0.0025-0.0252-0.0025-0.0504-0.0025-0.0604 0-0.11833 0.01007-0.0579 0.01007-0.10322 0.03525-0.0453 0.02518-0.073 0.06798-0.0252 0.0428-0.0252 0.10826 0 0.10071 0.0478 0.1561 0.0504 0.05539 0.12841 0.05539 0.10574 0 0.16364-0.05035t0.0806-0.11078z"/>
<path d="m-655.12 9.8583h0.1284l0.0277 0.13595h0.0101q0.0932-0.16617 0.29205-0.16617 0.19889 0 0.29708 0.14854 0.10071 0.14854 0.10071 0.48591 0 0.15861-0.0327 0.28701-0.0327 0.12588-0.0932 0.21652-0.0604 0.08812-0.14855 0.13595-0.0856 0.04532-0.19134 0.04532-0.073 0-0.11581-0.01007-0.0428-0.0076-0.0932-0.03525v0.51864h-0.18127zm0.18127 1.0599q0.0353 0.03021 0.0781 0.04784 0.0453 0.01762 0.11833 0.01762 0.13344 0 0.21149-0.13595 0.078-0.13595 0.078-0.38772 0-0.10574-0.0151-0.19134-0.0126-0.0856-0.0428-0.14602-0.0302-0.06294-0.078-0.09567-0.0453-0.035247-0.11329-0.035247-0.18379 0-0.23667 0.22407z"/>
<path d="m-654.17 11.47h0.8409v0.16365h-0.8409z"/>
<path d="m-653.31 9.8583h0.15358v-0.24925l0.18127-0.057906v0.30716h0.27191v0.16365h-0.27191v0.75026q0 0.11078 0.0252 0.16113 0.0277 0.04784 0.0881 0.04784 0.0503 0 0.0856-0.01007 0.0378-0.01259 0.0806-0.03021l0.0353 0.14351q-0.0554 0.02769-0.12337 0.0428-0.0655 0.01762-0.13847 0.01762-0.12588 0-0.18127-0.08057-0.0529-0.08308-0.0529-0.26687v-0.77544h-0.15358z"/>
<path d="m-625.93-287.66q0 0.0881 0.0227 0.12589 0.0252 0.0378 0.068 0.0378 0.0529 0 0.12336-0.0277l0.0176 0.14602q-0.0327 0.0201-0.0931 0.0327-0.0579 0.0126-0.10575 0.0126-0.0957 0-0.15609-0.0579-0.0579-0.0604-0.0579-0.20896v-1.5232h0.18127z"/>
<path d="m-624.86-288.62 0.22407 0.73516 0.0453 0.2417h5e-3l0.0378-0.24674 0.1712-0.73012h0.1712l-0.33485 1.2865h-0.10322l-0.25428-0.8258-0.0352-0.21148h-5e-3l-0.0352 0.214-0.24674 0.82328h-0.10322l-0.34492-1.2865h0.19386l0.19386 0.73264 0.0302 0.24422h5e-3l0.0453-0.24925 0.20644-0.72761z"/>
<path d="m-624.07-287.57q0.0504 0.0302 0.11833 0.0529 0.0705 0.0201 0.14351 0.0201 0.0831 0 0.14099-0.0403 0.0579-0.0428 0.0579-0.13596 0-0.078-0.0352-0.1284-0.0353-0.0503-0.0906-0.0906-0.0529-0.0403-0.11581-0.073-0.0629-0.0352-0.11833-0.0831-0.0529-0.0478-0.0881-0.1133-0.0353-0.0654-0.0353-0.16616 0-0.16113 0.0856-0.2417 0.0881-0.0831 0.24673-0.0831 0.10323 0 0.17876 0.0201 0.0755 0.0176 0.13092 0.0504l-0.0478 0.15106q-0.0478-0.0252-0.11078-0.0403-0.0629-0.0176-0.1284-0.0176-0.0906 0-0.13343 0.0378-0.0403 0.0378-0.0403 0.11833 0 0.063 0.0353 0.10826 0.0353 0.0428 0.0881 0.0806 0.0554 0.0353 0.11833 0.073 0.0629 0.0378 0.11581 0.0906 0.0554 0.0503 0.0906 0.12336 0.0353 0.0705 0.0353 0.17876 0 0.0705-0.0227 0.13343-0.0227 0.0629-0.0705 0.11078-0.0453 0.0453-0.11581 0.073-0.068 0.0277-0.16113 0.0277-0.11078 0-0.19134-0.0227-0.0806-0.0201-0.13596-0.0554z"/>
<path d="m-623.35-287.01h0.8409v0.16365h-0.8409z"/>
<path d="m-622.48-288.62h0.15357v-0.24925l0.18128-0.0579v0.30715h0.2719v0.16365h-0.2719v0.75026q0 0.11078 0.0252 0.16114 0.0277 0.0478 0.0881 0.0478 0.0503 0 0.0856-0.0101 0.0378-0.0126 0.0806-0.0302l0.0352 0.14351q-0.0554 0.0277-0.12336 0.0428-0.0655 0.0176-0.13847 0.0176-0.12589 0-0.18127-0.0806-0.0529-0.0831-0.0529-0.26687v-0.77544h-0.15357z"/>
<path d="m-621.74-287.99q0-0.33989 0.11582-0.4985 0.11833-0.16113 0.33485-0.16113 0.23162 0 0.33988 0.16365 0.11078 0.16365 0.11078 0.49598 0 0.3424-0.11833 0.50101-0.11833 0.15862-0.33233 0.15862-0.23163 0-0.34241-0.16365-0.10826-0.16365-0.10826-0.49598zm0.18883 0q0 0.11078 0.0126 0.20141 0.0151 0.0906 0.0453 0.1561 0.0327 0.0655 0.0831 0.10322 0.0504 0.0352 0.12085 0.0352 0.13091 0 0.19637-0.11581 0.0655-0.11833 0.0655-0.38017 0-0.10826-0.0151-0.1989-0.0126-0.0931-0.0453-0.15861-0.0302-0.0655-0.0806-0.10071-0.0503-0.0378-0.12084-0.0378-0.12841 0-0.19638 0.11833-0.0655 0.11833-0.0655 0.37765z"/>
<path d="m-620.32-287.93h-0.0931v0.56647h-0.18127v-1.7624h0.18127v1.0725l0.0831-0.0352 0.29457-0.53375h0.20897l-0.29709 0.50857-0.0881 0.0806 0.10323 0.0982 0.32478 0.57151h-0.21904z"/>
<path d="m-618.89-287.45q-0.0604 0.0554-0.15358 0.0856-0.0932 0.0302-0.19638 0.0302-0.11833 0-0.20644-0.0453-0.0856-0.0478-0.14351-0.13344-0.0554-0.0881-0.0831-0.20896-0.0252-0.12085-0.0252-0.27191 0-0.32226 0.11833-0.49095 0.11833-0.16868 0.33485-0.16868 0.0705 0 0.13847 0.0176 0.0705 0.0176 0.12588 0.0705 0.0554 0.0529 0.0881 0.14854 0.0353 0.0957 0.0353 0.24925 0 0.0428-5e-3 0.0931-3e-3 0.0478-8e-3 0.10071h-0.63949q0 0.10826 0.0176 0.19638 0.0176 0.0881 0.0554 0.15106 0.0378 0.0604 0.0957 0.0957 0.0604 0.0327 0.14854 0.0327 0.068 0 0.13344-0.0252 0.068-0.0252 0.10322-0.0604zm-0.14099-0.67473q5e-3 -0.18883-0.0529-0.27694-0.0579-0.0881-0.15861-0.0881-0.11582 0-0.18379 0.0881-0.068 0.0881-0.0806 0.27694z"/>
<path d="m-617.96-287.36v-0.76788q0-0.18883-0.0453-0.27191-0.0428-0.0856-0.1561-0.0856-0.10071 0-0.16616 0.0604-0.0655 0.0604-0.0957 0.14854v0.91643h-0.18127v-1.2588h0.13092l0.0327 0.13344h8e-3q0.0478-0.068 0.1284-0.11581 0.0831-0.0478 0.19638-0.0478 0.0806 0 0.14099 0.0227 0.0629 0.0227 0.10323 0.0781 0.0428 0.0529 0.0629 0.1435 0.0227 0.0906 0.0227 0.22911v0.81572z"/>
<path d="m-617.65-287.01h0.8409v0.16365h-0.8409z"/>
<path d="m-616.07-287.36v-0.74774q0-0.10071-8e-3 -0.1712-5e-3 -0.073-0.0252-0.11833-0.0201-0.0453-0.0554-0.0655-0.0353-0.0227-0.0932-0.0227-0.0856 0-0.14602 0.068-0.0579 0.0654-0.0806 0.15106v0.90635h-0.18127v-1.2588h0.1284l0.0327 0.13344h8e-3q0.0529-0.073 0.12589-0.11833 0.073-0.0453 0.1863-0.0453 0.0957 0 0.1561 0.0428 0.0629 0.0403 0.0982 0.14602 0.0453-0.0881 0.1284-0.13847 0.0856-0.0503 0.18631-0.0503 0.0831 0 0.14099 0.0227 0.0604 0.0201 0.0957 0.0755 0.0378 0.0529 0.0554 0.14351 0.0176 0.0881 0.0176 0.22407v0.82327h-0.18127v-0.80061q0-0.16365-0.0327-0.24422-0.0302-0.0806-0.14351-0.0806-0.0957 0-0.15358 0.0604-0.0554 0.0579-0.078 0.15862v0.90635z"/>
<path d="m-615.03-288.55q0.073-0.0453 0.17623-0.0705 0.10575-0.0252 0.22156-0.0252 0.10574 0 0.16868 0.0327 0.0655 0.0302 0.10071 0.0856 0.0378 0.0529 0.0478 0.12337 0.0126 0.068 0.0126 0.1435 0 0.15106-8e-3 0.29457-5e-3 0.14351-5e-3 0.27191 0 0.0957 5e-3 0.17875 8e-3 0.0806 0.0252 0.15358h-0.13847l-0.0428-0.14854h-0.0101q-0.0378 0.0655-0.11077 0.11329-0.073 0.0478-0.19638 0.0478-0.13595 0-0.22407-0.0932-0.0856-0.0957-0.0856-0.26183 0-0.10826 0.0352-0.18127 0.0378-0.073 0.10323-0.11833 0.068-0.0453 0.15861-0.063 0.0932-0.0201 0.20645-0.0201 0.0252 0 0.0503 0 0.0252 0 0.0529 3e-3 8e-3 -0.0781 8e-3 -0.13847 0-0.14351-0.0428-0.20141t-0.1561-0.0579q-0.0705 0-0.15358 0.0227-0.0831 0.0201-0.13847 0.0529zm0.54633 0.60928q-0.0252-3e-3 -0.0503-3e-3 -0.0252-3e-3 -0.0504-3e-3 -0.0604 0-0.11833 0.0101-0.0579 0.0101-0.10322 0.0353-0.0453 0.0252-0.073 0.068-0.0252 0.0428-0.0252 0.10826 0 0.1007 0.0478 0.15609 0.0504 0.0554 0.1284 0.0554 0.10574 0 0.16365-0.0503 0.0579-0.0504 0.0806-0.11078z"/>
<path d="m-614.01-288.62h0.1284l0.0277 0.13596h0.0101q0.0932-0.16617 0.29205-0.16617 0.1989 0 0.29708 0.14854 0.10071 0.14854 0.10071 0.48591 0 0.15861-0.0327 0.28702-0.0327 0.12588-0.0932 0.21651-0.0604 0.0881-0.14854 0.13596-0.0856 0.0453-0.19135 0.0453-0.073 0-0.11581-0.0101-0.0428-8e-3 -0.0932-0.0353v0.51864h-0.18127zm0.18127 1.0599q0.0352 0.0302 0.078 0.0478 0.0453 0.0176 0.11833 0.0176 0.13344 0 0.21149-0.13596 0.0781-0.13595 0.0781-0.38772 0-0.10574-0.0151-0.19134-0.0126-0.0856-0.0428-0.14602-0.0302-0.0629-0.0781-0.0957-0.0453-0.0353-0.11329-0.0353-0.18379 0-0.23666 0.22407z"/>
<path d="m-613.06-287.01h0.8409v0.16365h-0.8409z"/>
<path d="m-612.2-288.62h0.15358v-0.24925l0.18127-0.0579v0.30715h0.27191v0.16365h-0.27191v0.75026q0 0.11078 0.0252 0.16114 0.0277 0.0478 0.0881 0.0478 0.0503 0 0.0856-0.0101 0.0378-0.0126 0.0806-0.0302l0.0352 0.14351q-0.0554 0.0277-0.12336 0.0428-0.0655 0.0176-0.13847 0.0176-0.12589 0-0.18128-0.0806-0.0529-0.0831-0.0529-0.26687v-0.77544h-0.15358z"/>
</g>
<path d="m-658.06-4.436v-9.2604" fill="none" marker-end="url(#Arrow1Send)" stroke="#000" stroke-width="1.565"/>
<path d="m-608.92-301.69h9.2604" fill="none" marker-end="url(#Arrow1Send)" stroke="#000" stroke-width="1.565"/>
<g dominant-baseline="auto" stroke-width=".11071" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal" aria-label="Specify transport- specific details">
<path d="m-667.19 15.959q0.0841 0.05757 0.2347 0.11071 0.155 0.04871 0.34985 0.04871 0.24799 0 0.40298-0.11957 0.155-0.124 0.155-0.38527 0-0.17271-0.0886-0.30113-0.0886-0.12842-0.22142-0.23471-0.13285-0.11071-0.28785-0.21256-0.15057-0.10628-0.28342-0.23028-0.13285-0.12842-0.22142-0.29228-0.0886-0.16385-0.0886-0.39413 0-0.37199 0.22142-0.54912 0.22585-0.18156 0.58456-0.18156 0.22142 0 0.39413 0.03986 0.1727 0.03986 0.27899 0.10185l-0.10629 0.29228q-0.0797-0.04871-0.23027-0.08857-0.14614-0.03986-0.34099-0.03986-0.23914 0-0.35428 0.11957-0.11514 0.11514-0.11514 0.29228 0 0.155 0.0886 0.27456 0.0886 0.11957 0.22142 0.22585 0.13286 0.10628 0.28342 0.21699 0.155 0.10628 0.28785 0.23913 0.13285 0.13285 0.22142 0.30113 0.0886 0.16828 0.0886 0.39856 0 0.3897-0.23028 0.61112-0.23028 0.22142-0.65098 0.22142-0.2657 0-0.43841-0.04871-0.16828-0.04871-0.27013-0.11071z"/>
<path d="m-665.3 14.156h0.22585l0.0487 0.23914h0.0177q0.16385-0.29228 0.5137-0.29228 0.34984 0 0.52255 0.26128 0.17714 0.26128 0.17714 0.85469 0 0.27899-0.0576 0.50484-0.0576 0.22142-0.16385 0.38084-0.10629 0.155-0.26128 0.23914-0.15057 0.07971-0.33656 0.07971-0.12842 0-0.20371-0.01771-0.0753-0.01328-0.16385-0.062v0.91226h-0.31885zm0.31885 1.8644q0.062 0.05314 0.13728 0.08414 0.0797 0.031 0.20814 0.031 0.2347 0 0.37198-0.23914 0.13729-0.23913 0.13729-0.68198 0-0.18599-0.0266-0.33656-0.0222-0.15057-0.0753-0.25685-0.0531-0.11071-0.13728-0.16828-0.0797-0.062-0.19928-0.062-0.32327 0-0.41627 0.39413z"/>
<path d="m-662.04 16.22q-0.10628 0.09743-0.27014 0.15057-0.16385 0.05314-0.34541 0.05314-0.20814 0-0.36313-0.07971-0.15057-0.08414-0.25242-0.23471-0.0974-0.155-0.14614-0.36756-0.0443-0.21256-0.0443-0.47827 0-0.56684 0.20814-0.86354 0.20814-0.2967 0.58898-0.2967 0.124 0 0.24356 0.031 0.124 0.031 0.22142 0.124 0.0974 0.093 0.155 0.26128 0.062 0.16828 0.062 0.43841 0 0.07528-9e-3 0.16385-4e-3 0.08414-0.0133 0.17714h-1.1248q0 0.19042 0.031 0.34542t0.0974 0.26571q0.0664 0.10628 0.16828 0.16828 0.10628 0.05757 0.26128 0.05757 0.11956 0 0.2347-0.04428 0.11957-0.04428 0.18157-0.10628zm-0.24799-1.1868q9e-3 -0.33213-0.093-0.48713-0.10185-0.15499-0.27899-0.15499-0.20371 0-0.32328 0.15499-0.11956 0.155-0.14171 0.48713z"/>
<path d="m-660.35 16.26q-0.11071 0.08414-0.25242 0.124-0.14171 0.03986-0.2967 0.03986-0.21257 0-0.35871-0.07971-0.14613-0.08414-0.23913-0.23471-0.0886-0.155-0.13285-0.36756-0.0399-0.21699-0.0399-0.47827 0-0.56684 0.19928-0.86354 0.20371-0.2967 0.58012-0.2967 0.17271 0 0.29671 0.031 0.12399 0.031 0.21256 0.07971l-0.0886 0.27899q-0.17713-0.10185-0.38527-0.10185-0.23913 0-0.36313 0.21256-0.11957 0.20814-0.11957 0.65984 0 0.18156 0.0266 0.34099 0.0266 0.15942 0.0886 0.27899 0.062 0.11514 0.15943 0.18599 0.0974 0.06643 0.24356 0.06643 0.11514 0 0.21256-0.03986 0.10186-0.03986 0.16385-0.093z"/>
<path d="m-659.95 14.156h0.31885v2.2142h-0.31885zm-0.0576-0.67312q0-0.10628 0.0576-0.17271 0.062-0.06643 0.15943-0.06643 0.0974 0 0.15942 0.06643 0.0664 0.062 0.0664 0.17271 0 0.10628-0.0664 0.16828-0.062 0.05757-0.15942 0.05757-0.0974 0-0.15943-0.062-0.0576-0.062-0.0576-0.16385z"/>
<path d="m-659.23 14.156h0.27013v-0.124q0-0.41627 0.11957-0.60226t0.40742-0.18599q0.11513 0 0.20813 0.01329 0.093 0.01328 0.19042 0.05757l-0.0797 0.27456q-0.0797-0.03543-0.15056-0.04428-0.0664-0.01328-0.12843-0.01328-0.0886 0-0.13728 0.03543-0.0487 0.03543-0.0753 0.11071-0.0221 0.07528-0.031 0.19485-4e-3 0.11514-4e-3 0.28342h0.46056v0.28785h-0.46056v1.9264h-0.31885v-1.9264h-0.27013z"/>
<path d="m-657.35 15.587 0.093 0.42956h0.0221l0.0664-0.42956 0.33656-1.4304h0.32328l-0.52698 1.9884q-0.062 0.23914-0.124 0.44727t-0.13728 0.3587q-0.0709 0.155-0.16385 0.23914-0.0886 0.08857-0.21257 0.08857-0.12399 0-0.21699-0.03986l0.0531-0.30113q0.062 0.02214 0.124 0.0089 0.062-0.01328 0.11514-0.07528 0.0576-0.062 0.10185-0.18599 0.0487-0.11957 0.0841-0.31442l-0.7174-2.2142h0.36313z"/>
<path d="m-667.41 18.585h0.27014v-0.43841l0.31884-0.10185v0.54027h0.47827v0.28785h-0.47827v1.3197q0 0.19485 0.0443 0.28342 0.0487 0.08414 0.15499 0.08414 0.0886 0 0.15057-0.01771 0.0664-0.02214 0.14171-0.05314l0.062 0.25242q-0.0974 0.04871-0.217 0.07528-0.11513 0.031-0.24356 0.031-0.22142 0-0.31885-0.14171-0.093-0.14614-0.093-0.46941v-1.364h-0.27014z"/>
<path d="m-665.97 18.585h0.22585l0.0576 0.23471h0.0133q0.062-0.12842 0.15942-0.19928 0.10185-0.07528 0.24356-0.07528 0.10186 0 0.23028 0.03986l-0.062 0.32328q-0.11514-0.03986-0.20371-0.03986-0.1417 0-0.23027 0.08414-0.0886 0.07971-0.11514 0.21699v1.6297h-0.31885z"/>
<path d="m-664.78 18.718q0.12842-0.07971 0.30999-0.124 0.18599-0.04428 0.3897-0.04428 0.18599 0 0.2967 0.05757 0.11514 0.05314 0.17714 0.15057 0.0664 0.093 0.0841 0.21699 0.0221 0.11957 0.0221 0.25242 0 0.2657-0.0133 0.51812-9e-3 0.25242-9e-3 0.47827 0 0.16828 9e-3 0.31442 0.0133 0.14171 0.0443 0.27013h-0.24356l-0.0753-0.26128h-0.0177q-0.0664 0.11514-0.19485 0.19928-0.12843 0.08414-0.34542 0.08414-0.23913 0-0.39413-0.16385-0.15056-0.16828-0.15056-0.46056 0-0.19042 0.062-0.31885 0.0664-0.12842 0.18157-0.20814 0.11957-0.07971 0.27899-0.11071 0.16385-0.03543 0.36313-0.03543 0.0443 0 0.0886 0t0.093 0.0044q0.0133-0.13728 0.0133-0.24356 0-0.25242-0.0753-0.35427-0.0753-0.10185-0.27456-0.10185-0.124 0-0.27014 0.03986-0.14614 0.03543-0.24356 0.093zm0.96096 1.0717q-0.0443-0.0044-0.0886-0.0044-0.0443-0.0044-0.0886-0.0044-0.10629 0-0.20814 0.01771t-0.18156 0.062q-0.0797 0.04428-0.12843 0.11957-0.0443 0.07528-0.0443 0.19042 0 0.17714 0.0841 0.27456 0.0886 0.09743 0.22585 0.09743 0.18599 0 0.28784-0.08857 0.10186-0.08857 0.14171-0.19485z"/>
<path d="m-661.85 20.799v-1.3507q0-0.33213-0.0797-0.47827-0.0753-0.15057-0.27456-0.15057-0.17714 0-0.29228 0.10628t-0.16828 0.26128v1.6119h-0.31884v-2.2142h0.23028l0.0576 0.23471h0.0133q0.0841-0.11957 0.22585-0.20371 0.14614-0.08414 0.34542-0.08414 0.14171 0 0.24799 0.03985 0.11071 0.03986 0.18156 0.13728 0.0753 0.093 0.11071 0.25242 0.0399 0.15942 0.0399 0.40299v1.4348z"/>
<path d="m-661.08 20.436q0.0886 0.05314 0.20814 0.093 0.124 0.03543 0.25242 0.03543 0.14614 0 0.24799-0.07086 0.10186-0.07528 0.10186-0.23914 0-0.13728-0.062-0.22585-0.062-0.08857-0.15943-0.15942-0.093-0.07085-0.2037-0.12842-0.11071-0.062-0.20814-0.14614-0.093-0.08414-0.15499-0.19928-0.062-0.11514-0.062-0.29228 0-0.28342 0.15056-0.42513 0.155-0.14614 0.43399-0.14614 0.18157 0 0.31442 0.03543 0.13285 0.031 0.23028 0.08857l-0.0841 0.2657q-0.0841-0.04428-0.19485-0.07085-0.11072-0.031-0.22585-0.031-0.15943 0-0.23471 0.06643-0.0709 0.06643-0.0709 0.20814 0 0.11071 0.062 0.19042 0.062 0.07528 0.155 0.14171 0.0974 0.062 0.20813 0.12842 0.11071 0.06643 0.20371 0.15942 0.0974 0.08857 0.15942 0.21699 0.062 0.124 0.062 0.31442 0 0.124-0.0399 0.23471-0.0399 0.11071-0.124 0.19485-0.0797 0.07971-0.20371 0.12842-0.11956 0.04871-0.28342 0.04871-0.19485 0-0.33656-0.03986-0.14171-0.03543-0.23913-0.09743z"/>
<path d="m-659.54 18.585h0.22585l0.0487 0.23914h0.0177q0.16385-0.29228 0.5137-0.29228 0.34984 0 0.52255 0.26128 0.17714 0.26128 0.17714 0.85468 0 0.27899-0.0576 0.50484-0.0576 0.22142-0.16385 0.38084-0.10629 0.15499-0.26128 0.23913-0.15057 0.07971-0.33656 0.07971-0.12842 0-0.20371-0.01771-0.0753-0.01328-0.16385-0.062v0.91226h-0.31885zm0.31885 1.8644q0.062 0.05314 0.13728 0.08414 0.0797 0.031 0.20814 0.031 0.2347 0 0.37198-0.23914 0.13729-0.23914 0.13729-0.68198 0-0.18599-0.0266-0.33656-0.0221-0.15057-0.0753-0.25685-0.0531-0.11071-0.13728-0.16828-0.0797-0.062-0.19928-0.062-0.32327 0-0.41627 0.39413z"/>
<path d="m-657.71 19.692q0-0.59784 0.20371-0.87683 0.20814-0.28342 0.58898-0.28342 0.40742 0 0.59784 0.28785 0.19485 0.28785 0.19485 0.8724 0 0.60227-0.20814 0.88126-0.20813 0.27899-0.58455 0.27899-0.40741 0-0.60226-0.28785-0.19043-0.28785-0.19043-0.8724zm0.33214 0q0 0.19485 0.0221 0.35427 0.0266 0.15942 0.0797 0.27456 0.0576 0.11514 0.14614 0.18157 0.0886 0.062 0.21256 0.062 0.23028 0 0.34542-0.20371 0.11514-0.20814 0.11514-0.66869 0-0.19042-0.0266-0.34984-0.0221-0.16385-0.0797-0.27899-0.0531-0.11514-0.14171-0.17714-0.0886-0.06643-0.21257-0.06643-0.22585 0-0.34542 0.20814-0.11513 0.20814-0.11513 0.66426z"/>
<path d="m-655.7 18.585h0.22585l0.0576 0.23471h0.0133q0.062-0.12842 0.15942-0.19928 0.10186-0.07528 0.24357-0.07528 0.10185 0 0.23027 0.03986l-0.062 0.32328q-0.11514-0.03986-0.20371-0.03986-0.14171 0-0.23028 0.08414-0.0886 0.07971-0.11514 0.21699v1.6297h-0.31884z"/>
<path d="m-654.61 18.585h0.27014v-0.43841l0.31884-0.10185v0.54027h0.47827v0.28785h-0.47827v1.3197q0 0.19485 0.0443 0.28342 0.0487 0.08414 0.15499 0.08414 0.0886 0 0.15057-0.01771 0.0664-0.02214 0.14171-0.05314l0.062 0.25242q-0.0974 0.04871-0.217 0.07528-0.11514 0.031-0.24356 0.031-0.22142 0-0.31885-0.14171-0.093-0.14614-0.093-0.46941v-1.364h-0.27014z"/>
<path d="m-653.33 19.382h0.8724v0.30556h-0.8724z"/>
<path d="m-667.22 24.864q0.0886 0.05314 0.20813 0.093 0.124 0.03543 0.25242 0.03543 0.14614 0 0.248-0.07086 0.10185-0.07528 0.10185-0.23914 0-0.13728-0.062-0.22585-0.062-0.08857-0.15942-0.15942-0.093-0.07085-0.20371-0.12842-0.11071-0.062-0.20814-0.14614-0.093-0.08414-0.15499-0.19928-0.062-0.11514-0.062-0.29228 0-0.28342 0.15057-0.42513 0.15499-0.14614 0.43398-0.14614 0.18157 0 0.31442 0.03543 0.13285 0.031 0.23028 0.08857l-0.0841 0.2657q-0.0841-0.04428-0.19485-0.07085-0.11071-0.031-0.22585-0.031-0.15942 0-0.23471 0.06643-0.0709 0.06643-0.0709 0.20814 0 0.11071 0.062 0.19042 0.062 0.07528 0.15499 0.14171 0.0974 0.062 0.20814 0.12842 0.11071 0.06643 0.2037 0.15942 0.0974 0.08857 0.15943 0.21699 0.062 0.124 0.062 0.31442 0 0.124-0.0399 0.23471t-0.124 0.19485q-0.0797 0.07971-0.2037 0.12842-0.11957 0.04871-0.28342 0.04871-0.19485 0-0.33656-0.03986-0.14171-0.03543-0.23914-0.09743z"/>
<path d="m-665.69 23.013h0.22585l0.0487 0.23914h0.0177q0.16386-0.29228 0.5137-0.29228 0.34985 0 0.52255 0.26128 0.17714 0.26128 0.17714 0.85469 0 0.27899-0.0576 0.50484-0.0576 0.22142-0.16385 0.38084-0.10628 0.155-0.26128 0.23914-0.15056 0.07971-0.33656 0.07971-0.12842 0-0.2037-0.01771-0.0753-0.01328-0.16386-0.062v0.91226h-0.31884zm0.31884 1.8644q0.062 0.05314 0.13729 0.08414 0.0797 0.031 0.20813 0.031 0.23471 0 0.37199-0.23914t0.13728-0.68198q0-0.18599-0.0266-0.33656-0.0221-0.15057-0.0753-0.25685-0.0532-0.11071-0.13729-0.16828-0.0797-0.062-0.19927-0.062-0.32328 0-0.41628 0.39413z"/>
<path d="m-662.44 25.077q-0.10628 0.09743-0.27013 0.15057-0.16385 0.05314-0.34542 0.05314-0.20813 0-0.36313-0.07971-0.15057-0.08414-0.25242-0.23471-0.0974-0.155-0.14614-0.36756-0.0443-0.21256-0.0443-0.47827 0-0.56684 0.20813-0.86354 0.20814-0.2967 0.58898-0.2967 0.124 0 0.24357 0.031 0.12399 0.031 0.22142 0.124 0.0974 0.093 0.15499 0.26128 0.062 0.16828 0.062 0.43841 0 0.07528-9e-3 0.16385-4e-3 0.08414-0.0133 0.17714h-1.1248q0 0.19042 0.031 0.34542t0.0974 0.2657q0.0664 0.10628 0.16828 0.16828 0.10629 0.05757 0.26128 0.05757 0.11957 0 0.23471-0.04428 0.11956-0.04428 0.18156-0.10628zm-0.24799-1.1868q9e-3 -0.33213-0.093-0.48713-0.10185-0.15499-0.27899-0.15499-0.2037 0-0.32327 0.15499-0.11957 0.155-0.14171 0.48713z"/>
<path d="m-660.75 25.117q-0.11071 0.08414-0.25242 0.124-0.14171 0.03986-0.29671 0.03986-0.21256 0-0.3587-0.07971-0.14614-0.08414-0.23914-0.23471-0.0886-0.155-0.13285-0.36756-0.0399-0.21699-0.0399-0.47827 0-0.56684 0.19927-0.86354 0.20371-0.2967 0.58013-0.2967 0.17271 0 0.2967 0.031 0.124 0.031 0.21257 0.07971l-0.0886 0.27899q-0.17714-0.10185-0.38527-0.10185-0.23914 0-0.36314 0.21256-0.11956 0.20814-0.11956 0.65984 0 0.18156 0.0266 0.34099 0.0266 0.15942 0.0886 0.27899 0.062 0.11514 0.15942 0.18599 0.0974 0.06643 0.24356 0.06643 0.11514 0 0.21257-0.03986 0.10185-0.03986 0.16385-0.093z"/>
<path d="m-660.35 23.013h0.31884v2.2142h-0.31884zm-0.0576-0.67312q0-0.10628 0.0576-0.17271 0.062-0.06643 0.15942-0.06643 0.0974 0 0.15942 0.06643 0.0664 0.062 0.0664 0.17271 0 0.10628-0.0664 0.16828-0.062 0.05757-0.15942 0.05757-0.0974 0-0.15942-0.062-0.0576-0.062-0.0576-0.16385z"/>
<path d="m-658.04 23.013v2.2142h-0.31884v-1.9264h-0.68641v1.9264h-0.31884v-1.9264h-0.27014v-0.28785h0.27014v-0.124q0-0.41627 0.16828-0.60226 0.16828-0.19042 0.49155-0.19042 0.21699 0 0.37642 0.04428 0.16385 0.03986 0.2657 0.093l-0.10185 0.2657q-0.10628-0.062-0.23914-0.08857-0.12842-0.02657-0.27013-0.02657-0.124 0-0.19928 0.04428-0.0708 0.03986-0.11071 0.124-0.0399 0.07971-0.0531 0.19928-9e-3 0.11514-9e-3 0.26128z"/>
<path d="m-656.28 25.117q-0.11071 0.08414-0.25242 0.124-0.14171 0.03986-0.2967 0.03986-0.21256 0-0.3587-0.07971-0.14614-0.08414-0.23914-0.23471-0.0886-0.155-0.13285-0.36756-0.0399-0.21699-0.0399-0.47827 0-0.56684 0.19928-0.86354 0.20371-0.2967 0.58013-0.2967 0.1727 0 0.2967 0.031t0.21256 0.07971l-0.0886 0.27899q-0.17714-0.10185-0.38528-0.10185-0.23913 0-0.36313 0.21256-0.11956 0.20814-0.11956 0.65984 0 0.18156 0.0266 0.34099 0.0266 0.15942 0.0886 0.27899 0.062 0.11514 0.15943 0.18599 0.0974 0.06643 0.24356 0.06643 0.11514 0 0.21257-0.03986 0.10185-0.03986 0.16385-0.093z"/>
<path d="m-665.79 28.894q0 0.22585 4e-3 0.41184 4e-3 0.18156 0.031 0.3587h-0.217l-0.0708-0.26571h-0.0177q-0.062 0.13285-0.19485 0.22142-0.13285 0.08857-0.31884 0.08857-0.3587 0-0.53584-0.27899-0.17271-0.27899-0.17271-0.87683 0-0.56684 0.21256-0.85911 0.217-0.29228 0.59341-0.29228 0.12843 0 0.20371 0.01771 0.0753 0.01329 0.16385 0.04871v-0.91226h0.31885zm-0.31885-1.1027q-0.062-0.05314-0.14171-0.07528-0.0753-0.02657-0.2037-0.02657-0.23471 0-0.36756 0.21256-0.12843 0.21256-0.12843 0.65541 0 0.19485 0.0221 0.35427 0.0266 0.155 0.0753 0.27013 0.0531 0.11514 0.13285 0.17714 0.0841 0.062 0.20371 0.062 0.31884 0 0.40741-0.37642z"/>
<path d="m-663.95 29.505q-0.10628 0.09743-0.27013 0.15057-0.16386 0.05314-0.34542 0.05314-0.20814 0-0.36313-0.07971-0.15057-0.08414-0.25242-0.23471-0.0974-0.155-0.14614-0.36756-0.0443-0.21256-0.0443-0.47827 0-0.56684 0.20813-0.86354 0.20814-0.2967 0.58898-0.2967 0.124 0 0.24357 0.031 0.12399 0.031 0.22142 0.124 0.0974 0.093 0.15499 0.26128 0.062 0.16828 0.062 0.43841 0 0.07528-9e-3 0.16385-4e-3 0.08414-0.0133 0.17714h-1.1248q0 0.19042 0.031 0.34542 0.031 0.15499 0.0974 0.2657 0.0664 0.10628 0.16828 0.16828 0.10628 0.05757 0.26128 0.05757 0.11957 0 0.23471-0.04428 0.11956-0.04428 0.18156-0.10628zm-0.24799-1.1868q9e-3 -0.33213-0.093-0.48713-0.10185-0.155-0.27899-0.155-0.20371 0-0.32327 0.155-0.11957 0.155-0.14171 0.48713z"/>
<path d="m-663.67 27.441h0.27013v-0.43841l0.31885-0.10185v0.54027h0.47826v0.28785h-0.47826v1.3197q0 0.19485 0.0443 0.28342 0.0487 0.08414 0.15499 0.08414 0.0886 0 0.15057-0.01771 0.0664-0.02214 0.14171-0.05314l0.062 0.25242q-0.0974 0.04871-0.21699 0.07528-0.11514 0.031-0.24357 0.031-0.22142 0-0.31884-0.14171-0.093-0.14614-0.093-0.46941v-1.364h-0.27013z"/>
<path d="m-662.25 27.574q0.12842-0.07971 0.30999-0.124 0.18599-0.04428 0.3897-0.04428 0.18599 0 0.29671 0.05757 0.11513 0.05314 0.17713 0.15057 0.0664 0.093 0.0841 0.21699 0.0221 0.11957 0.0221 0.25242 0 0.2657-0.0133 0.51812-9e-3 0.25242-9e-3 0.47827 0 0.16828 9e-3 0.31442 0.0133 0.14171 0.0443 0.27013h-0.24356l-0.0753-0.26128h-0.0177q-0.0664 0.11514-0.19485 0.19928-0.12842 0.08414-0.34541 0.08414-0.23914 0-0.39413-0.16385-0.15057-0.16828-0.15057-0.46056 0-0.19042 0.062-0.31885 0.0664-0.12842 0.18156-0.20814 0.11957-0.07971 0.27899-0.11071 0.16386-0.03543 0.36313-0.03543 0.0443 0 0.0886 0t0.093 0.0044q0.0133-0.13728 0.0133-0.24356 0-0.25242-0.0753-0.35427-0.0753-0.10185-0.27456-0.10185-0.124 0-0.27013 0.03986-0.14614 0.03543-0.24357 0.093zm0.96097 1.0717q-0.0443-0.0044-0.0886-0.0044-0.0443-0.0044-0.0886-0.0044-0.10628 0-0.20813 0.01771-0.10186 0.01771-0.18157 0.062-0.0797 0.04428-0.12842 0.11957-0.0443 0.07528-0.0443 0.19042 0 0.17714 0.0841 0.27456 0.0886 0.09743 0.22585 0.09743 0.18599 0 0.28785-0.08857 0.10185-0.08857 0.14171-0.19485z"/>
<path d="m-660.4 27.441h0.31885v2.2142h-0.31885zm-0.0576-0.67312q0-0.10628 0.0576-0.17271 0.062-0.06643 0.15943-0.06643 0.0974 0 0.15942 0.06643 0.0664 0.062 0.0664 0.17271 0 0.10628-0.0664 0.16828-0.062 0.05757-0.15942 0.05757-0.0974 0-0.15943-0.062-0.0576-0.062-0.0576-0.16385z"/>
<path d="m-659.15 29.129q0 0.15499 0.0399 0.22142 0.0443 0.06643 0.11957 0.06643 0.093 0 0.21699-0.04871l0.031 0.25685q-0.0576 0.03543-0.16385 0.05757-0.10185 0.02214-0.18599 0.02214-0.16828 0-0.27456-0.10185-0.10186-0.10628-0.10186-0.36756v-2.6792h0.31885z"/>
<path d="m-658.5 29.293q0.0886 0.05314 0.20814 0.093 0.124 0.03543 0.25242 0.03543 0.14614 0 0.24799-0.07085 0.10186-0.07528 0.10186-0.23914 0-0.13728-0.062-0.22585-0.062-0.08857-0.15943-0.15942-0.093-0.07085-0.2037-0.12842-0.11071-0.062-0.20814-0.14614-0.093-0.08414-0.15499-0.19928-0.062-0.11514-0.062-0.29228 0-0.28342 0.15056-0.42513 0.155-0.14614 0.43399-0.14614 0.18157 0 0.31442 0.03543 0.13285 0.031 0.23028 0.08857l-0.0841 0.26571q-0.0841-0.04428-0.19485-0.07085-0.11072-0.031-0.22585-0.031-0.15943 0-0.23471 0.06643-0.0709 0.06643-0.0709 0.20814 0 0.11071 0.062 0.19042 0.062 0.07528 0.155 0.14171 0.0974 0.062 0.20813 0.12842 0.11071 0.06643 0.20371 0.15942 0.0974 0.08857 0.15942 0.21699 0.062 0.124 0.062 0.31442 0 0.124-0.0399 0.23471-0.0399 0.11071-0.124 0.19485-0.0797 0.07971-0.20371 0.12842-0.11956 0.04871-0.28342 0.04871-0.19485 0-0.33656-0.03986-0.14171-0.03543-0.23913-0.09742z"/>
<path d="m-626.08-282.52q0.0841 0.0576 0.2347 0.11071 0.155 0.0487 0.34985 0.0487 0.24799 0 0.40299-0.11957 0.15499-0.12399 0.15499-0.38527 0-0.17271-0.0886-0.30113-0.0886-0.12843-0.22142-0.23471-0.13285-0.11071-0.28785-0.21256-0.15056-0.10629-0.28342-0.23028-0.13285-0.12843-0.22142-0.29228-0.0886-0.16385-0.0886-0.39413 0-0.37198 0.22143-0.54912 0.22584-0.18157 0.58455-0.18157 0.22142 0 0.39413 0.0399t0.27899 0.10185l-0.10628 0.29228q-0.0797-0.0487-0.23028-0.0886-0.14614-0.0399-0.34099-0.0399-0.23914 0-0.35428 0.11957-0.11513 0.11514-0.11513 0.29228 0 0.15499 0.0886 0.27456t0.22143 0.22585q0.13285 0.10628 0.28341 0.21699 0.155 0.10628 0.28785 0.23914 0.13285 0.13285 0.22142 0.30113 0.0886 0.16828 0.0886 0.39856 0 0.3897-0.23028 0.61112-0.23027 0.22142-0.65097 0.22142-0.26571 0-0.43842-0.0487-0.16828-0.0487-0.27013-0.11071z"/>
<path d="m-624.19-284.33h0.22584l0.0487 0.23913h0.0177q0.16385-0.29227 0.5137-0.29227 0.34984 0 0.52255 0.26127 0.17714 0.26128 0.17714 0.85469 0 0.27899-0.0576 0.50484-0.0576 0.22142-0.16385 0.38084-0.10628 0.155-0.26128 0.23914-0.15057 0.0797-0.33656 0.0797-0.12842 0-0.20371-0.0177-0.0753-0.0133-0.16385-0.062v0.91225h-0.31884zm0.31884 1.8644q0.062 0.0532 0.13728 0.0841 0.0797 0.031 0.20814 0.031 0.23471 0 0.37199-0.23913 0.13728-0.23914 0.13728-0.68198 0-0.18599-0.0266-0.33656-0.0222-0.15056-0.0753-0.25685-0.0531-0.11071-0.13728-0.16828-0.0797-0.062-0.19928-0.062-0.32327 0-0.41627 0.39412z"/>
<path d="m-620.94-282.26q-0.10628 0.0974-0.27013 0.15057-0.16386 0.0531-0.34542 0.0531-0.20814 0-0.36313-0.0797-0.15057-0.0841-0.25242-0.23471-0.0974-0.15499-0.14614-0.36756-0.0443-0.21256-0.0443-0.47827 0-0.56683 0.20813-0.86354 0.20814-0.2967 0.58898-0.2967 0.124 0 0.24357 0.031 0.12399 0.031 0.22142 0.12399 0.0974 0.093 0.15499 0.26128 0.062 0.16828 0.062 0.43841 0 0.0753-9e-3 0.16386-4e-3 0.0841-0.0133 0.17713h-1.1248q0 0.19042 0.031 0.34542 0.031 0.15499 0.0974 0.2657 0.0664 0.10629 0.16828 0.16828 0.10628 0.0576 0.26128 0.0576 0.11957 0 0.23471-0.0443 0.11956-0.0443 0.18156-0.10628zm-0.24799-1.1868q9e-3 -0.33214-0.093-0.48713-0.10185-0.15499-0.27899-0.15499-0.20371 0-0.32327 0.15499-0.11957 0.15499-0.14171 0.48713z"/>
<path d="m-619.25-282.22q-0.11071 0.0841-0.25242 0.124t-0.2967 0.0399q-0.21257 0-0.3587-0.0797-0.14614-0.0841-0.23914-0.23471-0.0886-0.15499-0.13285-0.36756-0.0399-0.21699-0.0399-0.47827 0-0.56683 0.19928-0.86354 0.20371-0.2967 0.58013-0.2967 0.1727 0 0.2967 0.031t0.21256 0.0797l-0.0886 0.27899q-0.17714-0.10185-0.38528-0.10185-0.23913 0-0.36313 0.21256-0.11957 0.20814-0.11957 0.65983 0 0.18157 0.0266 0.34099 0.0266 0.15943 0.0886 0.27899 0.062 0.11514 0.15943 0.186 0.0974 0.0664 0.24356 0.0664 0.11514 0 0.21256-0.0399 0.10186-0.0399 0.16386-0.093z"/>
<path d="m-618.84-284.33h0.31884v2.2142h-0.31884zm-0.0576-0.67312q0-0.10628 0.0576-0.17271 0.062-0.0664 0.15942-0.0664 0.0974 0 0.15942 0.0664 0.0664 0.062 0.0664 0.17271 0 0.10628-0.0664 0.16828-0.062 0.0576-0.15942 0.0576-0.0974 0-0.15942-0.062-0.0576-0.062-0.0576-0.16385z"/>
<path d="m-618.13-284.33h0.27013v-0.124q0-0.41627 0.11957-0.60226 0.11957-0.186 0.40742-0.186 0.11514 0 0.20813 0.0133 0.093 0.0133 0.19042 0.0576l-0.0797 0.27456q-0.0797-0.0354-0.15056-0.0443-0.0664-0.0133-0.12843-0.0133-0.0886 0-0.13728 0.0354-0.0487 0.0354-0.0753 0.11071-0.0221 0.0753-0.031 0.19485-4e-3 0.11514-4e-3 0.28342h0.46056v0.28785h-0.46056v1.9264h-0.31885v-1.9264h-0.27013z"/>
<path d="m-616.25-282.89 0.093 0.42956h0.0221l0.0664-0.42956 0.33656-1.4304h0.32327l-0.52698 1.9884q-0.062 0.23914-0.124 0.44727-0.062 0.20814-0.13728 0.3587-0.0708 0.155-0.16385 0.23914-0.0886 0.0886-0.21257 0.0886-0.12399 0-0.21699-0.0399l0.0531-0.30113q0.062 0.0221 0.124 9e-3 0.062-0.0133 0.11514-0.0753 0.0576-0.062 0.10185-0.18599 0.0487-0.11957 0.0841-0.31442l-0.7174-2.2142h0.36313z"/>
<path d="m-626.31-279.9h0.27013v-0.43841l0.31885-0.10186v0.54027h0.47827v0.28785h-0.47827v1.3197q0 0.19485 0.0443 0.28342 0.0487 0.0841 0.15499 0.0841 0.0886 0 0.15057-0.0177 0.0664-0.0221 0.14171-0.0531l0.062 0.25242q-0.0974 0.0487-0.21699 0.0753-0.11514 0.031-0.24357 0.031-0.22142 0-0.31884-0.14171-0.093-0.14614-0.093-0.46942v-1.364h-0.27013z"/>
<path d="m-624.86-279.9h0.22585l0.0576 0.23471h0.0133q0.062-0.12843 0.15942-0.19928 0.10185-0.0753 0.24356-0.0753 0.10186 0 0.23028 0.0399l-0.062 0.32328q-0.11514-0.0399-0.2037-0.0399-0.14171 0-0.23028 0.0841-0.0886 0.0797-0.11514 0.21699v1.6297h-0.31885z"/>
<path d="m-623.68-279.76q0.12842-0.0797 0.30999-0.12399 0.18599-0.0443 0.3897-0.0443 0.18599 0 0.2967 0.0576 0.11514 0.0531 0.17714 0.15057 0.0664 0.093 0.0841 0.21699 0.0221 0.11957 0.0221 0.25242 0 0.26571-0.0133 0.51813-9e-3 0.25242-9e-3 0.47827 0 0.16828 9e-3 0.31442 0.0133 0.14171 0.0443 0.27013h-0.24356l-0.0753-0.26128h-0.0177q-0.0664 0.11514-0.19485 0.19928-0.12842 0.0841-0.34542 0.0841-0.23913 0-0.39413-0.16385-0.15056-0.16828-0.15056-0.46056 0-0.19042 0.062-0.31884 0.0664-0.12843 0.18157-0.20814 0.11957-0.0797 0.27899-0.11071 0.16385-0.0354 0.36313-0.0354 0.0443 0 0.0886 0t0.093 4e-3q0.0133-0.13728 0.0133-0.24356 0-0.25242-0.0753-0.35427-0.0753-0.10186-0.27456-0.10186-0.124 0-0.27014 0.0399-0.14613 0.0354-0.24356 0.093zm0.96097 1.0717q-0.0443-4e-3 -0.0886-4e-3 -0.0443-4e-3 -0.0886-4e-3 -0.10628 0-0.20814 0.0177-0.10185 0.0177-0.18156 0.062-0.0797 0.0443-0.12843 0.11956-0.0443 0.0753-0.0443 0.19043 0 0.17713 0.0841 0.27456 0.0886 0.0974 0.22585 0.0974 0.18599 0 0.28785-0.0886 0.10185-0.0886 0.14171-0.19485z"/>
<path d="m-620.75-277.68v-1.3507q0-0.33213-0.0797-0.47827-0.0753-0.15056-0.27456-0.15056-0.17714 0-0.29227 0.10628-0.11514 0.10628-0.16828 0.26128v1.6119h-0.31885v-2.2142h0.23028l0.0576 0.23471h0.0133q0.0841-0.11957 0.22585-0.20371 0.14614-0.0841 0.34542-0.0841 0.14171 0 0.24799 0.0399 0.11071 0.0399 0.18156 0.13728 0.0753 0.093 0.11072 0.25242 0.0399 0.15942 0.0399 0.40298v1.4348z"/>
<path d="m-619.97-278.05q0.0886 0.0531 0.20813 0.093 0.124 0.0354 0.25242 0.0354 0.14614 0 0.24799-0.0709 0.10186-0.0753 0.10186-0.23913 0-0.13728-0.062-0.22585-0.062-0.0886-0.15942-0.15943-0.093-0.0709-0.20371-0.12842-0.11071-0.062-0.20814-0.14614-0.093-0.0841-0.15499-0.19928-0.062-0.11514-0.062-0.29227 0-0.28342 0.15057-0.42513 0.15499-0.14614 0.43398-0.14614 0.18157 0 0.31442 0.0354 0.13285 0.031 0.23028 0.0886l-0.0841 0.2657q-0.0841-0.0443-0.19485-0.0709-0.11071-0.031-0.22585-0.031-0.15943 0-0.23471 0.0664-0.0709 0.0664-0.0709 0.20814 0 0.11071 0.062 0.19042 0.062 0.0753 0.155 0.14171 0.0974 0.062 0.20813 0.12843 0.11072 0.0664 0.20371 0.15942 0.0974 0.0886 0.15943 0.21699 0.062 0.124 0.062 0.31442 0 0.124-0.0399 0.23471t-0.124 0.19485q-0.0797 0.0797-0.20371 0.12842-0.11956 0.0487-0.28342 0.0487-0.19485 0-0.33656-0.0399-0.1417-0.0354-0.23913-0.0974z"/>
<path d="m-618.44-279.9h0.22584l0.0487 0.23914h0.0177q0.16385-0.29228 0.5137-0.29228 0.34984 0 0.52255 0.26128 0.17714 0.26127 0.17714 0.85468 0 0.27899-0.0576 0.50484-0.0576 0.22142-0.16385 0.38085-0.10628 0.15499-0.26128 0.23913-0.15057 0.0797-0.33656 0.0797-0.12842 0-0.20371-0.0177-0.0753-0.0133-0.16385-0.062v0.91226h-0.31884zm0.31884 1.8644q0.062 0.0531 0.13728 0.0841 0.0797 0.031 0.20814 0.031 0.23471 0 0.37199-0.23914 0.13728-0.23913 0.13728-0.68198 0-0.18599-0.0266-0.33656-0.0222-0.15056-0.0753-0.25684-0.0531-0.11071-0.13728-0.16828-0.0797-0.062-0.19928-0.062-0.32327 0-0.41627 0.39413z"/>
<path d="m-616.61-278.79q0-0.59784 0.2037-0.87683 0.20814-0.28342 0.58898-0.28342 0.40742 0 0.59784 0.28785 0.19485 0.28785 0.19485 0.8724 0 0.60226-0.20814 0.88125-0.20813 0.27899-0.58455 0.27899-0.40741 0-0.60226-0.28784-0.19042-0.28785-0.19042-0.8724zm0.33213 0q0 0.19485 0.0221 0.35427 0.0266 0.15942 0.0797 0.27456 0.0576 0.11514 0.14614 0.18157 0.0886 0.062 0.21256 0.062 0.23028 0 0.34542-0.20371 0.11514-0.20814 0.11514-0.66869 0-0.19043-0.0266-0.34985-0.0221-0.16385-0.0797-0.27899-0.0531-0.11514-0.14171-0.17714-0.0886-0.0664-0.21257-0.0664-0.22585 0-0.34541 0.20813-0.11514 0.20814-0.11514 0.66427z"/>
<path d="m-614.6-279.9h0.22585l0.0576 0.23471h0.0133q0.062-0.12843 0.15942-0.19928 0.10186-0.0753 0.24357-0.0753 0.10185 0 0.23028 0.0399l-0.062 0.32328q-0.11514-0.0399-0.20371-0.0399-0.14171 0-0.23028 0.0841-0.0886 0.0797-0.11514 0.21699v1.6297h-0.31884z"/>
<path d="m-613.5-279.9h0.27014v-0.43841l0.31885-0.10186v0.54027h0.47826v0.28785h-0.47826v1.3197q0 0.19485 0.0443 0.28342 0.0487 0.0841 0.15499 0.0841 0.0886 0 0.15057-0.0177 0.0664-0.0221 0.14171-0.0531l0.062 0.25242q-0.0974 0.0487-0.21699 0.0753-0.11514 0.031-0.24357 0.031-0.22142 0-0.31884-0.14171-0.093-0.14614-0.093-0.46942v-1.364h-0.27014z"/>
<path d="m-612.22-279.1h0.8724v0.30556h-0.8724z"/>
<path d="m-626.12-273.62q0.0886 0.0531 0.20814 0.093 0.12399 0.0354 0.25242 0.0354 0.14613 0 0.24799-0.0709 0.10185-0.0753 0.10185-0.23913 0-0.13728-0.062-0.22585-0.062-0.0886-0.15942-0.15942-0.093-0.0709-0.20371-0.12843-0.11071-0.062-0.20813-0.14614-0.093-0.0841-0.155-0.19927-0.062-0.11514-0.062-0.29228 0-0.28342 0.15057-0.42513 0.15499-0.14614 0.43399-0.14614 0.18156 0 0.31441 0.0354 0.13286 0.031 0.23028 0.0886l-0.0841 0.2657q-0.0841-0.0443-0.19485-0.0709-0.11071-0.031-0.22585-0.031-0.15942 0-0.23471 0.0664-0.0709 0.0664-0.0709 0.20813 0 0.11071 0.062 0.19042 0.062 0.0753 0.15499 0.14171 0.0974 0.062 0.20814 0.12843 0.11071 0.0664 0.20371 0.15942 0.0974 0.0886 0.15942 0.21699 0.062 0.124 0.062 0.31442 0 0.124-0.0399 0.23471t-0.12399 0.19485q-0.0797 0.0797-0.20371 0.12842-0.11957 0.0487-0.28342 0.0487-0.19485 0-0.33656-0.0399-0.14171-0.0354-0.23914-0.0974z"/>
<path d="m-624.59-275.47h0.22585l0.0487 0.23914h0.0177q0.16385-0.29228 0.51369-0.29228 0.34985 0 0.52256 0.26128 0.17713 0.26128 0.17713 0.85469 0 0.27899-0.0576 0.50484-0.0576 0.22142-0.16385 0.38084-0.10628 0.15499-0.26128 0.23913-0.15056 0.0797-0.33656 0.0797-0.12842 0-0.2037-0.0177-0.0753-0.0133-0.16385-0.062v0.91226h-0.31885zm0.31885 1.8644q0.062 0.0531 0.13728 0.0841 0.0797 0.031 0.20813 0.031 0.23471 0 0.37199-0.23914 0.13728-0.23913 0.13728-0.68197 0-0.186-0.0266-0.33656-0.0221-0.15057-0.0753-0.25685-0.0531-0.11071-0.13728-0.16828-0.0797-0.062-0.19928-0.062-0.32328 0-0.41627 0.39413z"/>
<path d="m-621.34-273.4q-0.10628 0.0974-0.27013 0.15057-0.16385 0.0531-0.34542 0.0531-0.20813 0-0.36313-0.0797-0.15056-0.0841-0.25242-0.2347-0.0974-0.155-0.14614-0.36756-0.0443-0.21257-0.0443-0.47827 0-0.56684 0.20814-0.86354 0.20813-0.29671 0.58898-0.29671 0.12399 0 0.24356 0.031 0.12399 0.031 0.22142 0.124 0.0974 0.093 0.15499 0.26127 0.062 0.16828 0.062 0.43842 0 0.0753-9e-3 0.16385-4e-3 0.0841-0.0133 0.17714h-1.1248q0 0.19042 0.031 0.34541 0.031 0.155 0.0974 0.26571 0.0664 0.10628 0.16828 0.16828 0.10628 0.0576 0.26127 0.0576 0.11957 0 0.23471-0.0443 0.11957-0.0443 0.18156-0.10628zm-0.24799-1.1868q9e-3 -0.33213-0.093-0.48712-0.10185-0.155-0.27899-0.155-0.2037 0-0.32327 0.155-0.11957 0.15499-0.14171 0.48712z"/>
<path d="m-619.65-273.36q-0.11071 0.0841-0.25242 0.124t-0.29671 0.0399q-0.21256 0-0.3587-0.0797-0.14614-0.0841-0.23913-0.2347-0.0886-0.155-0.13286-0.36756-0.0399-0.21699-0.0399-0.47827 0-0.56684 0.19928-0.86354 0.2037-0.29671 0.58012-0.29671 0.17271 0 0.2967 0.031 0.124 0.031 0.21257 0.0797l-0.0886 0.27899q-0.17714-0.10185-0.38527-0.10185-0.23914 0-0.36313 0.21256-0.11957 0.20814-0.11957 0.65984 0 0.18156 0.0266 0.34099 0.0266 0.15942 0.0886 0.27899 0.062 0.11514 0.15942 0.18599 0.0974 0.0664 0.24356 0.0664 0.11514 0 0.21257-0.0399 0.10185-0.0398 0.16385-0.093z"/>
<path d="m-619.24-275.47h0.31885v2.2142h-0.31885zm-0.0576-0.67312q0-0.10628 0.0576-0.1727 0.062-0.0664 0.15942-0.0664 0.0974 0 0.15943 0.0664 0.0664 0.062 0.0664 0.1727 0 0.10629-0.0664 0.16828-0.062 0.0576-0.15943 0.0576-0.0974 0-0.15942-0.062-0.0576-0.062-0.0576-0.16386z"/>
<path d="m-616.93-275.47v2.2142h-0.31885v-1.9264h-0.68641v1.9264h-0.31884v-1.9264h-0.27014v-0.28785h0.27014v-0.12399q0-0.41627 0.16828-0.60227 0.16828-0.19042 0.49155-0.19042 0.217 0 0.37642 0.0443 0.16385 0.0399 0.2657 0.093l-0.10185 0.26571q-0.10628-0.062-0.23913-0.0886-0.12843-0.0266-0.27014-0.0266-0.12399 0-0.19928 0.0443-0.0708 0.0399-0.11071 0.124-0.0399 0.0797-0.0531 0.19928-9e-3 0.11514-9e-3 0.26127z"/>
<path d="m-615.17-273.36q-0.11072 0.0841-0.25242 0.124-0.14171 0.0399-0.29671 0.0399-0.21256 0-0.3587-0.0797-0.14614-0.0841-0.23914-0.2347-0.0886-0.155-0.13285-0.36756-0.0399-0.21699-0.0399-0.47827 0-0.56684 0.19927-0.86354 0.20371-0.29671 0.58013-0.29671 0.17271 0 0.2967 0.031 0.124 0.031 0.21257 0.0797l-0.0886 0.27899q-0.17714-0.10185-0.38527-0.10185-0.23914 0-0.36314 0.21256-0.11956 0.20814-0.11956 0.65984 0 0.18156 0.0266 0.34099 0.0266 0.15942 0.0886 0.27899 0.062 0.11514 0.15942 0.18599 0.0974 0.0664 0.24356 0.0664 0.11514 0 0.21257-0.0399 0.10185-0.0398 0.16385-0.093z"/>
<path d="m-624.69-269.59q0 0.22585 4e-3 0.41184 4e-3 0.18157 0.031 0.3587h-0.217l-0.0708-0.2657h-0.0177q-0.062 0.13285-0.19485 0.22142-0.13286 0.0886-0.31885 0.0886-0.3587 0-0.53584-0.27899-0.17271-0.27899-0.17271-0.87683 0-0.56684 0.21257-0.85911 0.21699-0.29228 0.5934-0.29228 0.12843 0 0.20371 0.0177 0.0753 0.0133 0.16385 0.0487v-0.91226h0.31885zm-0.31885-1.1027q-0.062-0.0531-0.14171-0.0753-0.0753-0.0266-0.2037-0.0266-0.23471 0-0.36756 0.21256-0.12843 0.21257-0.12843 0.65541 0 0.19485 0.0222 0.35427 0.0266 0.155 0.0753 0.27014 0.0531 0.11514 0.13285 0.17713 0.0841 0.062 0.20371 0.062 0.31885 0 0.40741-0.37641z"/>
<path d="m-622.84-268.98q-0.10628 0.0974-0.27013 0.15057-0.16385 0.0531-0.34542 0.0531-0.20814 0-0.36313-0.0797-0.15057-0.0841-0.25242-0.23471-0.0974-0.15499-0.14614-0.36756-0.0443-0.21256-0.0443-0.47827 0-0.56684 0.20813-0.86354 0.20814-0.2967 0.58898-0.2967 0.124 0 0.24357 0.031 0.12399 0.031 0.22142 0.124 0.0974 0.093 0.15499 0.26128 0.062 0.16828 0.062 0.43841 0 0.0753-9e-3 0.16385-4e-3 0.0841-0.0133 0.17714h-1.1248q0 0.19042 0.031 0.34542 0.031 0.15499 0.0974 0.2657 0.0664 0.10628 0.16828 0.16828 0.10629 0.0576 0.26128 0.0576 0.11957 0 0.23471-0.0443 0.11956-0.0443 0.18156-0.10629zm-0.24799-1.1868q9e-3 -0.33213-0.093-0.48712-0.10185-0.155-0.27899-0.155-0.20371 0-0.32327 0.155-0.11957 0.15499-0.14171 0.48712z"/>
<path d="m-622.56-271.04h0.27013v-0.43842l0.31885-0.10185v0.54027h0.47827v0.28784h-0.47827v1.3197q0 0.19485 0.0443 0.28342 0.0487 0.0841 0.155 0.0841 0.0886 0 0.15056-0.0177 0.0664-0.0221 0.14171-0.0531l0.062 0.25242q-0.0974 0.0487-0.21699 0.0753-0.11514 0.031-0.24357 0.031-0.22142 0-0.31884-0.14171-0.093-0.14614-0.093-0.46941v-1.364h-0.27013z"/>
<path d="m-621.14-270.91q0.12843-0.0797 0.30999-0.124 0.18599-0.0443 0.3897-0.0443 0.186 0 0.29671 0.0576 0.11514 0.0531 0.17713 0.15056 0.0664 0.093 0.0841 0.217 0.0222 0.11956 0.0222 0.25242 0 0.2657-0.0133 0.51812-9e-3 0.25242-9e-3 0.47827 0 0.16828 9e-3 0.31442 0.0133 0.14171 0.0443 0.27013h-0.24356l-0.0753-0.26127h-0.0177q-0.0664 0.11514-0.19485 0.19928-0.12842 0.0841-0.34541 0.0841-0.23914 0-0.39413-0.16386-0.15057-0.16828-0.15057-0.46055 0-0.19042 0.062-0.31885 0.0664-0.12842 0.18156-0.20813 0.11957-0.0797 0.27899-0.11071 0.16386-0.0354 0.36314-0.0354 0.0443 0 0.0886 0t0.093 4e-3q0.0133-0.13728 0.0133-0.24357 0-0.25242-0.0753-0.35427t-0.27456-0.10185q-0.124 0-0.27013 0.0399-0.14614 0.0354-0.24357 0.093zm0.96097 1.0717q-0.0443-4e-3 -0.0886-4e-3 -0.0443-4e-3 -0.0886-4e-3 -0.10628 0-0.20813 0.0177-0.10186 0.0177-0.18157 0.062-0.0797 0.0443-0.12842 0.11957-0.0443 0.0753-0.0443 0.19042 0 0.17714 0.0841 0.27456 0.0886 0.0974 0.22585 0.0974 0.186 0 0.28785-0.0886t0.14171-0.19485z"/>
<path d="m-619.29-271.04h0.31885v2.2142h-0.31885zm-0.0576-0.67312q0-0.10629 0.0576-0.17271 0.062-0.0664 0.15943-0.0664 0.0974 0 0.15942 0.0664 0.0664 0.062 0.0664 0.17271 0 0.10628-0.0664 0.16828-0.062 0.0576-0.15942 0.0576-0.0974 0-0.15943-0.062-0.0576-0.062-0.0576-0.16385z"/>
<path d="m-618.05-269.35q0 0.15499 0.0399 0.22142 0.0443 0.0664 0.11956 0.0664 0.093 0 0.217-0.0487l0.031 0.25685q-0.0576 0.0354-0.16385 0.0576-0.10185 0.0221-0.18599 0.0221-0.16828 0-0.27456-0.10185-0.10186-0.10629-0.10186-0.36756v-2.6792h0.31885z"/>
<path d="m-617.39-269.19q0.0886 0.0531 0.20813 0.093 0.124 0.0354 0.25242 0.0354 0.14614 0 0.24799-0.0709 0.10186-0.0753 0.10186-0.23914 0-0.13728-0.062-0.22585-0.062-0.0886-0.15942-0.15942-0.093-0.0709-0.20371-0.12843-0.11071-0.062-0.20814-0.14613-0.093-0.0841-0.15499-0.19928-0.062-0.11514-0.062-0.29228 0-0.28342 0.15057-0.42513 0.15499-0.14613 0.43398-0.14613 0.18157 0 0.31442 0.0354 0.13285 0.031 0.23028 0.0886l-0.0841 0.26571q-0.0841-0.0443-0.19485-0.0709-0.11071-0.031-0.22585-0.031-0.15943 0-0.23471 0.0664-0.0708 0.0664-0.0708 0.20813 0 0.11072 0.062 0.19043 0.062 0.0753 0.155 0.14171 0.0974 0.062 0.20813 0.12842 0.11072 0.0664 0.20371 0.15942 0.0974 0.0886 0.15943 0.217 0.062 0.12399 0.062 0.31441 0 0.124-0.0399 0.23471t-0.124 0.19485q-0.0797 0.0797-0.20371 0.12843-0.11956 0.0487-0.28341 0.0487-0.19486 0-0.33656-0.0399-0.14171-0.0354-0.23914-0.0974z"/>
</g>
<path d="m-547.11-304.62h18.161v5.8389h-18.161z" fill="#999" stroke="#999" stroke-width=".053718"/>
<path d="m-547.11-296.87h18.161v5.8389h-18.161z" fill="#999" stroke="#999" stroke-width=".053718"/>
<g stroke-width=".062942" aria-label="lws_token_map_t">
<path d="m-543.41-287.95q0 0.0881 0.0227 0.12589 0.0252 0.0378 0.068 0.0378 0.0529 0 0.12336-0.0277l0.0176 0.14602q-0.0327 0.0201-0.0932 0.0327-0.0579 0.0126-0.10574 0.0126-0.0957 0-0.1561-0.0579-0.0579-0.0604-0.0579-0.20896v-1.5232h0.18127z"/>
<path d="m-542.35-288.91 0.22407 0.73516 0.0453 0.2417h5e-3l0.0378-0.24673 0.1712-0.73013h0.1712l-0.33485 1.2865h-0.10322l-0.25429-0.82579-0.0353-0.21149h-5e-3l-0.0353 0.214-0.24673 0.82328h-0.10322l-0.34492-1.2865h0.19386l0.19386 0.73264 0.0302 0.24422h5e-3l0.0453-0.24925 0.20645-0.72761z"/>
<path d="m-541.56-287.86q0.0503 0.0302 0.11833 0.0529 0.0705 0.0201 0.1435 0.0201 0.0831 0 0.14099-0.0403 0.0579-0.0428 0.0579-0.13596 0-0.0781-0.0353-0.1284-0.0352-0.0503-0.0906-0.0906-0.0529-0.0403-0.11582-0.073-0.0629-0.0352-0.11833-0.0831-0.0529-0.0478-0.0881-0.11329-0.0353-0.0655-0.0353-0.16617 0-0.16113 0.0856-0.2417 0.0881-0.0831 0.24673-0.0831 0.10322 0 0.17875 0.0201 0.0755 0.0176 0.13092 0.0504l-0.0478 0.15106q-0.0478-0.0252-0.11078-0.0403-0.0629-0.0176-0.1284-0.0176-0.0906 0-0.13344 0.0378-0.0403 0.0378-0.0403 0.11833 0 0.063 0.0352 0.10826 0.0353 0.0428 0.0881 0.0806 0.0554 0.0353 0.11833 0.073 0.0629 0.0378 0.11581 0.0906 0.0554 0.0503 0.0906 0.12336 0.0353 0.0705 0.0353 0.17876 0 0.0705-0.0227 0.13343-0.0227 0.063-0.0705 0.11078-0.0453 0.0453-0.11581 0.073-0.068 0.0277-0.16113 0.0277-0.11078 0-0.19135-0.0227-0.0806-0.0201-0.13595-0.0554z"/>
<path d="m-540.83-287.3h0.8409v0.16365h-0.8409z"/>
<path d="m-539.97-288.91h0.15358v-0.24925l0.18127-0.0579v0.30715h0.27191v0.16365h-0.27191v0.75027q0 0.11077 0.0252 0.16113 0.0277 0.0478 0.0881 0.0478 0.0503 0 0.0856-0.0101 0.0378-0.0126 0.0806-0.0302l0.0353 0.14351q-0.0554 0.0277-0.12337 0.0428-0.0654 0.0176-0.13847 0.0176-0.12588 0-0.18127-0.0806-0.0529-0.0831-0.0529-0.26687v-0.77544h-0.15358z"/>
<path d="m-539.23-288.28q0-0.33989 0.11581-0.4985 0.11833-0.16113 0.33485-0.16113 0.23163 0 0.33989 0.16365 0.11077 0.16365 0.11077 0.49598 0 0.3424-0.11833 0.50101-0.11833 0.15862-0.33233 0.15862-0.23162 0-0.3424-0.16365-0.10826-0.16365-0.10826-0.49598zm0.18882 0q0 0.11078 0.0126 0.20141 0.0151 0.0906 0.0453 0.1561 0.0327 0.0655 0.0831 0.10322 0.0504 0.0353 0.12085 0.0353 0.13092 0 0.19638-0.11581 0.0655-0.11833 0.0655-0.38017 0-0.10826-0.0151-0.1989-0.0126-0.0931-0.0453-0.15861-0.0302-0.0655-0.0806-0.10071-0.0503-0.0378-0.12085-0.0378-0.1284 0-0.19638 0.11833-0.0655 0.11833-0.0655 0.37765z"/>
<path d="m-537.81-288.22h-0.0932v0.56648h-0.18127v-1.7624h0.18127v1.0725l0.0831-0.0353 0.29457-0.53375h0.20896l-0.29708 0.50857-0.0881 0.0806 0.10322 0.0982 0.32478 0.57151h-0.21903z"/>
<path d="m-536.38-287.74q-0.0604 0.0554-0.15358 0.0856-0.0932 0.0302-0.19638 0.0302-0.11833 0-0.20645-0.0453-0.0856-0.0478-0.14351-0.13344-0.0554-0.0881-0.0831-0.20896-0.0252-0.12085-0.0252-0.27191 0-0.32226 0.11833-0.49095 0.11833-0.16868 0.33485-0.16868 0.0705 0 0.13847 0.0176 0.0705 0.0176 0.12588 0.0705 0.0554 0.0529 0.0881 0.14854 0.0353 0.0957 0.0353 0.24925 0 0.0428-5e-3 0.0931-3e-3 0.0478-8e-3 0.10071h-0.63949q0 0.10826 0.0176 0.19638 0.0176 0.0881 0.0554 0.15106 0.0378 0.0604 0.0957 0.0957 0.0604 0.0327 0.14855 0.0327 0.068 0 0.13343-0.0252 0.068-0.0252 0.10323-0.0604zm-0.14099-0.67473q5e-3 -0.18882-0.0529-0.27694-0.0579-0.0881-0.15862-0.0881-0.11581 0-0.18379 0.0881-0.068 0.0881-0.0806 0.27694z"/>
<path d="m-535.45-287.66v-0.76789q0-0.18883-0.0453-0.27191-0.0428-0.0856-0.15609-0.0856-0.10071 0-0.16617 0.0604-0.0655 0.0604-0.0957 0.14855v0.91643h-0.18127v-1.2588h0.13092l0.0327 0.13344h8e-3q0.0478-0.068 0.1284-0.11581 0.0831-0.0478 0.19638-0.0478 0.0806 0 0.14099 0.0227 0.0629 0.0227 0.10322 0.0781 0.0428 0.0529 0.0629 0.1435 0.0227 0.0906 0.0227 0.22911v0.81573z"/>
<path d="m-535.13-287.3h0.8409v0.16365h-0.8409z"/>
<path d="m-533.56-287.66v-0.74775q0-0.10071-8e-3 -0.1712-5e-3 -0.073-0.0252-0.11833-0.0201-0.0453-0.0554-0.0655-0.0353-0.0227-0.0932-0.0227-0.0856 0-0.14603 0.068-0.0579 0.0655-0.0806 0.15106v0.90636h-0.18127v-1.2588h0.1284l0.0327 0.13344h8e-3q0.0529-0.073 0.12588-0.11833 0.073-0.0453 0.18631-0.0453 0.0957 0 0.15609 0.0428 0.063 0.0403 0.0982 0.14603 0.0453-0.0881 0.1284-0.13848 0.0856-0.0504 0.18631-0.0504 0.0831 0 0.14099 0.0227 0.0604 0.0201 0.0957 0.0755 0.0378 0.0529 0.0554 0.14351 0.0176 0.0881 0.0176 0.22407v0.82328h-0.18127v-0.80062q0-0.16365-0.0327-0.24422-0.0302-0.0806-0.1435-0.0806-0.0957 0-0.15358 0.0604-0.0554 0.0579-0.078 0.15862v0.90636z"/>
<path d="m-532.52-288.84q0.073-0.0453 0.17624-0.0705 0.10574-0.0252 0.22155-0.0252 0.10575 0 0.16869 0.0327 0.0655 0.0302 0.1007 0.0856 0.0378 0.0529 0.0478 0.12337 0.0126 0.068 0.0126 0.1435 0 0.15106-8e-3 0.29457-5e-3 0.14351-5e-3 0.27191 0 0.0957 5e-3 0.17875 8e-3 0.0806 0.0252 0.15358h-0.13847l-0.0428-0.14854h-0.0101q-0.0378 0.0655-0.11078 0.11329-0.073 0.0478-0.19638 0.0478-0.13595 0-0.22407-0.0931-0.0856-0.0957-0.0856-0.26184 0-0.10826 0.0353-0.18127 0.0378-0.073 0.10322-0.11833 0.068-0.0453 0.15862-0.063 0.0932-0.0201 0.20644-0.0201 0.0252 0 0.0504 0t0.0529 3e-3q8e-3 -0.0781 8e-3 -0.13847 0-0.14351-0.0428-0.20141t-0.15609-0.0579q-0.0705 0-0.15358 0.0227-0.0831 0.0201-0.13847 0.0529zm0.54634 0.60928q-0.0252-3e-3 -0.0504-3e-3 -0.0252-3e-3 -0.0504-3e-3 -0.0604 0-0.11833 0.0101-0.0579 0.0101-0.10322 0.0353-0.0453 0.0252-0.073 0.068-0.0252 0.0428-0.0252 0.10826 0 0.1007 0.0478 0.15609 0.0504 0.0554 0.1284 0.0554 0.10575 0 0.16365-0.0504t0.0806-0.11078z"/>
<path d="m-531.5-288.91h0.1284l0.0277 0.13596h0.0101q0.0931-0.16617 0.29205-0.16617 0.19889 0 0.29708 0.14854 0.10071 0.14855 0.10071 0.48591 0 0.15862-0.0327 0.28702-0.0327 0.12588-0.0932 0.21652-0.0604 0.0881-0.14854 0.13595-0.0856 0.0453-0.19134 0.0453-0.073 0-0.11581-0.0101-0.0428-8e-3 -0.0932-0.0352v0.51864h-0.18127zm0.18127 1.0599q0.0353 0.0302 0.078 0.0478 0.0453 0.0176 0.11833 0.0176 0.13344 0 0.21148-0.13595 0.078-0.13596 0.078-0.38773 0-0.10574-0.0151-0.19134-0.0126-0.0856-0.0428-0.14602-0.0302-0.0629-0.078-0.0957-0.0453-0.0353-0.1133-0.0353-0.18379 0-0.23666 0.22407z"/>
<path d="m-530.55-287.3h0.8409v0.16365h-0.8409z"/>
<path d="m-529.69-288.91h0.15358v-0.24925l0.18127-0.0579v0.30715h0.27191v0.16365h-0.27191v0.75027q0 0.11077 0.0252 0.16113 0.0277 0.0478 0.0881 0.0478 0.0504 0 0.0856-0.0101 0.0378-0.0126 0.0806-0.0302l0.0353 0.14351q-0.0554 0.0277-0.12337 0.0428-0.0655 0.0176-0.13847 0.0176-0.12588 0-0.18127-0.0806-0.0529-0.0831-0.0529-0.26687v-0.77544h-0.15358z"/>
</g>
<path d="m-546.1-301.79h-9.2604" fill="none" marker-end="url(#Arrow1Send-7)" stroke="#000" stroke-width="1.565"/>
<g dominant-baseline="auto" stroke-width=".11071" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal" aria-label="Specify protocol- specific details">
<path d="m-539.86-282.81q0.0841 0.0576 0.23471 0.11071 0.15499 0.0487 0.34984 0.0487 0.248 0 0.40299-0.11957 0.155-0.12399 0.155-0.38527 0-0.17271-0.0886-0.30113-0.0886-0.12843-0.22142-0.23471-0.13286-0.11071-0.28785-0.21256-0.15057-0.10629-0.28342-0.23028-0.13285-0.12843-0.22142-0.29228-0.0886-0.16385-0.0886-0.39413 0-0.37198 0.22142-0.54912 0.22585-0.18157 0.58455-0.18157 0.22142 0 0.39413 0.0399t0.27899 0.10185l-0.10628 0.29228q-0.0797-0.0487-0.23028-0.0886-0.14614-0.0399-0.34099-0.0399-0.23913 0-0.35427 0.11957-0.11514 0.11514-0.11514 0.29228 0 0.15499 0.0886 0.27456t0.22142 0.22585q0.13285 0.10628 0.28342 0.21699 0.15499 0.10628 0.28785 0.23914 0.13285 0.13285 0.22142 0.30113 0.0886 0.16828 0.0886 0.39856 0 0.3897-0.23028 0.61112t-0.65098 0.22142q-0.2657 0-0.43841-0.0487-0.16828-0.0487-0.27014-0.11071z"/>
<path d="m-537.96-284.62h0.22585l0.0487 0.23913h0.0177q0.16385-0.29227 0.51369-0.29227 0.34985 0 0.52256 0.26128 0.17713 0.26127 0.17713 0.85468 0 0.27899-0.0576 0.50484-0.0576 0.22142-0.16385 0.38085-0.10628 0.15499-0.26127 0.23913-0.15057 0.0797-0.33656 0.0797-0.12843 0-0.20371-0.0177-0.0753-0.0133-0.16385-0.062v0.91225h-0.31885zm0.31885 1.8644q0.062 0.0531 0.13728 0.0841 0.0797 0.031 0.20813 0.031 0.23471 0 0.37199-0.23913 0.13728-0.23914 0.13728-0.68198 0-0.18599-0.0266-0.33656-0.0221-0.15056-0.0753-0.25685-0.0531-0.11071-0.13728-0.16828-0.0797-0.062-0.19928-0.062-0.32328 0-0.41627 0.39413z"/>
<path d="m-534.71-282.55q-0.10628 0.0974-0.27013 0.15057-0.16385 0.0531-0.34542 0.0531-0.20813 0-0.36313-0.0797-0.15056-0.0841-0.25242-0.23471-0.0974-0.15499-0.14613-0.36756-0.0443-0.21256-0.0443-0.47827 0-0.56683 0.20814-0.86354 0.20813-0.2967 0.58898-0.2967 0.12399 0 0.24356 0.031 0.124 0.031 0.22142 0.12399 0.0974 0.093 0.155 0.26128 0.062 0.16828 0.062 0.43841 0 0.0753-9e-3 0.16386-4e-3 0.0841-0.0133 0.17713h-1.1248q0 0.19042 0.031 0.34542 0.031 0.15499 0.0974 0.2657 0.0664 0.10629 0.16828 0.16828 0.10628 0.0576 0.26127 0.0576 0.11957 0 0.23471-0.0443 0.11957-0.0443 0.18157-0.10628zm-0.24799-1.1868q9e-3 -0.33213-0.093-0.48713-0.10186-0.15499-0.27899-0.15499-0.20371 0-0.32328 0.15499-0.11957 0.155-0.14171 0.48713z"/>
<path d="m-533.02-282.51q-0.11071 0.0841-0.25242 0.124t-0.29671 0.0399q-0.21256 0-0.3587-0.0797-0.14614-0.0841-0.23913-0.23471-0.0886-0.15499-0.13286-0.36756-0.0399-0.21699-0.0399-0.47827 0-0.56683 0.19928-0.86354 0.2037-0.2967 0.58012-0.2967 0.17271 0 0.2967 0.031 0.124 0.031 0.21257 0.0797l-0.0886 0.27899q-0.17714-0.10185-0.38527-0.10185-0.23914 0-0.36313 0.21256-0.11957 0.20814-0.11957 0.65983 0 0.18157 0.0266 0.34099 0.0266 0.15943 0.0886 0.27899 0.062 0.11514 0.15942 0.186 0.0974 0.0664 0.24357 0.0664 0.11513 0 0.21256-0.0399 0.10185-0.0399 0.16385-0.093z"/>
<path d="m-532.62-284.62h0.31885v2.2142h-0.31885zm-0.0576-0.67312q0-0.10628 0.0576-0.17271 0.062-0.0664 0.15942-0.0664 0.0974 0 0.15943 0.0664 0.0664 0.062 0.0664 0.17271 0 0.10628-0.0664 0.16828-0.062 0.0576-0.15943 0.0576-0.0974 0-0.15942-0.062-0.0576-0.062-0.0576-0.16385z"/>
<path d="m-531.9-284.62h0.27013v-0.124q0-0.41627 0.11957-0.60226 0.11956-0.186 0.40741-0.186 0.11514 0 0.20814 0.0133t0.19042 0.0576l-0.0797 0.27456q-0.0797-0.0354-0.15057-0.0443-0.0664-0.0133-0.12842-0.0133-0.0886 0-0.13728 0.0354-0.0487 0.0354-0.0753 0.11071-0.0221 0.0753-0.031 0.19485-4e-3 0.11514-4e-3 0.28342h0.46055v0.28785h-0.46055v1.9264h-0.31885v-1.9264h-0.27013z"/>
<path d="m-530.02-283.19 0.093 0.42956h0.0221l0.0664-0.42956 0.33656-1.4304h0.32328l-0.52699 1.9884q-0.062 0.23914-0.12399 0.44727-0.062 0.20814-0.13728 0.3587-0.0709 0.155-0.16386 0.23914-0.0886 0.0886-0.21256 0.0886-0.124 0-0.21699-0.0399l0.0531-0.30113q0.062 0.0221 0.12399 9e-3 0.062-0.0133 0.11514-0.0753 0.0576-0.062 0.10186-0.18599 0.0487-0.11957 0.0841-0.31442l-0.71741-2.2142h0.36313z"/>
<path d="m-542.77-280.19h0.22585l0.0487 0.23914h0.0177q0.16385-0.29228 0.51369-0.29228 0.34985 0 0.52256 0.26128 0.17713 0.26127 0.17713 0.85468 0 0.27899-0.0576 0.50484-0.0576 0.22142-0.16385 0.38085-0.10628 0.15499-0.26127 0.23913-0.15057 0.0797-0.33656 0.0797-0.12843 0-0.20371-0.0177-0.0753-0.0133-0.16385-0.062v0.91226h-0.31885zm0.31885 1.8644q0.062 0.0531 0.13728 0.0841 0.0797 0.031 0.20813 0.031 0.23471 0 0.37199-0.23914 0.13728-0.23913 0.13728-0.68198 0-0.18599-0.0266-0.33656-0.0221-0.15056-0.0753-0.25684-0.0531-0.11071-0.13728-0.16828-0.0797-0.062-0.19928-0.062-0.32328 0-0.41627 0.39413z"/>
<path d="m-540.84-280.19h0.22585l0.0576 0.23471h0.0133q0.062-0.12843 0.15942-0.19928 0.10186-0.0753 0.24357-0.0753 0.10185 0 0.23027 0.0399l-0.062 0.32328q-0.11514-0.0399-0.20371-0.0399-0.14171 0-0.23028 0.0841-0.0886 0.0797-0.11514 0.21699v1.6297h-0.31884z"/>
<path d="m-539.73-279.08q0-0.59784 0.20371-0.87683 0.20813-0.28342 0.58898-0.28342 0.40741 0 0.59783 0.28785 0.19485 0.28785 0.19485 0.8724 0 0.60226-0.20813 0.88125-0.20814 0.27899-0.58455 0.27899-0.40742 0-0.60227-0.28784-0.19042-0.28785-0.19042-0.8724zm0.33213 0q0 0.19485 0.0221 0.35427 0.0266 0.15942 0.0797 0.27456 0.0576 0.11514 0.14614 0.18157 0.0886 0.062 0.21257 0.062 0.23027 0 0.34541-0.20371 0.11514-0.20814 0.11514-0.66869 0-0.19042-0.0266-0.34985-0.0221-0.16385-0.0797-0.27899-0.0531-0.11514-0.14171-0.17714-0.0886-0.0664-0.21256-0.0664-0.22585 0-0.34542 0.20813-0.11514 0.20814-0.11514 0.66427z"/>
<path d="m-537.94-280.19h0.27013v-0.43841l0.31885-0.10186v0.54027h0.47827v0.28785h-0.47827v1.3197q0 0.19485 0.0443 0.28342 0.0487 0.0841 0.155 0.0841 0.0886 0 0.15056-0.0177 0.0664-0.0221 0.14171-0.0531l0.062 0.25242q-0.0974 0.0487-0.21699 0.0753-0.11514 0.031-0.24356 0.031-0.22143 0-0.31885-0.14171-0.093-0.14614-0.093-0.46942v-1.364h-0.27013z"/>
<path d="m-536.63-279.08q0-0.59784 0.20371-0.87683 0.20814-0.28342 0.58898-0.28342 0.40742 0 0.59784 0.28785 0.19485 0.28785 0.19485 0.8724 0 0.60226-0.20814 0.88125-0.20813 0.27899-0.58455 0.27899-0.40741 0-0.60226-0.28784-0.19043-0.28785-0.19043-0.8724zm0.33214 0q0 0.19485 0.0221 0.35427 0.0266 0.15942 0.0797 0.27456 0.0576 0.11514 0.14614 0.18157 0.0886 0.062 0.21256 0.062 0.23028 0 0.34542-0.20371 0.11514-0.20814 0.11514-0.66869 0-0.19042-0.0266-0.34985-0.0222-0.16385-0.0797-0.27899-0.0531-0.11514-0.14171-0.17714-0.0886-0.0664-0.21257-0.0664-0.22585 0-0.34542 0.20813-0.11513 0.20814-0.11513 0.66427z"/>
<path d="m-533.4-278.08q-0.11071 0.0841-0.25242 0.124t-0.2967 0.0399q-0.21257 0-0.35871-0.0797-0.14613-0.0841-0.23913-0.2347-0.0886-0.155-0.13285-0.36756-0.0399-0.217-0.0399-0.47827 0-0.56684 0.19928-0.86355 0.20371-0.2967 0.58012-0.2967 0.17271 0 0.29671 0.031 0.12399 0.031 0.21256 0.0797l-0.0886 0.27899q-0.17713-0.10185-0.38527-0.10185-0.23913 0-0.36313 0.21256-0.11957 0.20814-0.11957 0.65984 0 0.18156 0.0266 0.34099 0.0266 0.15942 0.0886 0.27899 0.062 0.11514 0.15942 0.18599 0.0974 0.0664 0.24357 0.0664 0.11514 0 0.21256-0.0399 0.10186-0.0399 0.16385-0.093z"/>
<path d="m-533.23-279.08q0-0.59784 0.20371-0.87683 0.20814-0.28342 0.58898-0.28342 0.40742 0 0.59784 0.28785 0.19485 0.28785 0.19485 0.8724 0 0.60226-0.20814 0.88125-0.20813 0.27899-0.58455 0.27899-0.40741 0-0.60226-0.28784-0.19043-0.28785-0.19043-0.8724zm0.33213 0q0 0.19485 0.0222 0.35427 0.0266 0.15942 0.0797 0.27456 0.0576 0.11514 0.14614 0.18157 0.0886 0.062 0.21256 0.062 0.23028 0 0.34542-0.20371 0.11514-0.20814 0.11514-0.66869 0-0.19042-0.0266-0.34985-0.0222-0.16385-0.0797-0.27899-0.0531-0.11514-0.14171-0.17714-0.0886-0.0664-0.21256-0.0664-0.22585 0-0.34542 0.20813-0.11514 0.20814-0.11514 0.66427z"/>
<path d="m-530.88-278.5q0 0.155 0.0399 0.22142 0.0443 0.0664 0.11957 0.0664 0.093 0 0.21699-0.0487l0.031 0.25684q-0.0576 0.0354-0.16385 0.0576-0.10186 0.0222-0.186 0.0222-0.16828 0-0.27456-0.10186-0.10185-0.10628-0.10185-0.36756v-2.6792h0.31884z"/>
<path d="m-530.24-279.39h0.8724v0.30556h-0.8724z"/>
<path d="m-540.2-273.91q0.0886 0.0532 0.20814 0.093 0.12399 0.0354 0.25242 0.0354 0.14613 0 0.24799-0.0709 0.10185-0.0753 0.10185-0.23913 0-0.13728-0.062-0.22585-0.062-0.0886-0.15942-0.15942-0.093-0.0709-0.20371-0.12843-0.11071-0.062-0.20813-0.14614-0.093-0.0841-0.155-0.19927-0.062-0.11514-0.062-0.29228 0-0.28342 0.15057-0.42513 0.155-0.14614 0.43399-0.14614 0.18156 0 0.31441 0.0354 0.13286 0.031 0.23028 0.0886l-0.0841 0.2657q-0.0841-0.0443-0.19485-0.0709-0.11071-0.031-0.22585-0.031-0.15942 0-0.2347 0.0664-0.0709 0.0664-0.0709 0.20813 0 0.11071 0.062 0.19042 0.062 0.0753 0.15499 0.14171 0.0974 0.062 0.20814 0.12843 0.11071 0.0664 0.20371 0.15942 0.0974 0.0886 0.15942 0.21699 0.062 0.124 0.062 0.31442 0 0.124-0.0399 0.23471t-0.12399 0.19485q-0.0797 0.0797-0.20371 0.12842-0.11957 0.0487-0.28342 0.0487-0.19485 0-0.33656-0.0399-0.14171-0.0354-0.23913-0.0974z"/>
<path d="m-538.67-275.76h0.22585l0.0487 0.23914h0.0177q0.16385-0.29228 0.51369-0.29228 0.34985 0 0.52256 0.26128 0.17713 0.26128 0.17713 0.85469 0 0.27899-0.0576 0.50484-0.0576 0.22142-0.16385 0.38084-0.10628 0.15499-0.26127 0.23913-0.15057 0.0797-0.33656 0.0797-0.12843 0-0.20371-0.0177-0.0753-0.0133-0.16385-0.062v0.91226h-0.31885zm0.31885 1.8644q0.062 0.0531 0.13728 0.0841 0.0797 0.031 0.20813 0.031 0.23471 0 0.37199-0.23914 0.13728-0.23913 0.13728-0.68197 0-0.186-0.0266-0.33656-0.0221-0.15057-0.0753-0.25685-0.0531-0.11071-0.13728-0.16828-0.0797-0.062-0.19928-0.062-0.32328 0-0.41627 0.39413z"/>
<path d="m-535.41-273.7q-0.10628 0.0974-0.27013 0.15057-0.16385 0.0531-0.34542 0.0531-0.20813 0-0.36313-0.0797-0.15056-0.0841-0.25242-0.2347-0.0974-0.155-0.14614-0.36756-0.0443-0.21256-0.0443-0.47827 0-0.56684 0.20814-0.86354 0.20813-0.29671 0.58898-0.29671 0.12399 0 0.24356 0.031 0.124 0.031 0.22142 0.124 0.0974 0.093 0.155 0.26127 0.062 0.16828 0.062 0.43842 0 0.0753-9e-3 0.16385-4e-3 0.0841-0.0133 0.17714h-1.1248q0 0.19042 0.031 0.34541 0.031 0.155 0.0974 0.26571 0.0664 0.10628 0.16828 0.16828 0.10628 0.0576 0.26127 0.0576 0.11957 0 0.23471-0.0443 0.11957-0.0443 0.18157-0.10628zm-0.24799-1.1868q9e-3 -0.33213-0.093-0.48712-0.10186-0.155-0.27899-0.155-0.20371 0-0.32328 0.155-0.11957 0.15499-0.14171 0.48712z"/>
<path d="m-533.72-273.66q-0.11071 0.0841-0.25242 0.124t-0.29671 0.0399q-0.21256 0-0.3587-0.0797-0.14614-0.0841-0.23913-0.2347-0.0886-0.155-0.13286-0.36756-0.0399-0.21699-0.0399-0.47827 0-0.56684 0.19928-0.86354 0.2037-0.29671 0.58012-0.29671 0.17271 0 0.2967 0.031 0.124 0.031 0.21257 0.0797l-0.0886 0.27899q-0.17714-0.10185-0.38527-0.10185-0.23914 0-0.36313 0.21256-0.11957 0.20814-0.11957 0.65984 0 0.18157 0.0266 0.34099t0.0886 0.27899q0.062 0.11514 0.15942 0.18599 0.0974 0.0664 0.24357 0.0664 0.11513 0 0.21256-0.0399 0.10185-0.0399 0.16385-0.093z"/>
<path d="m-533.32-275.76h0.31885v2.2142h-0.31885zm-0.0576-0.67312q0-0.10628 0.0576-0.1727 0.062-0.0664 0.15942-0.0664 0.0974 0 0.15943 0.0664 0.0664 0.062 0.0664 0.1727 0 0.10629-0.0664 0.16828-0.062 0.0576-0.15943 0.0576-0.0974 0-0.15942-0.062-0.0576-0.062-0.0576-0.16386z"/>
<path d="m-531.01-275.76v2.2142h-0.31885v-1.9264h-0.6864v1.9264h-0.31885v-1.9264h-0.27013v-0.28785h0.27013v-0.12399q0-0.41627 0.16828-0.60227 0.16828-0.19042 0.49155-0.19042 0.217 0 0.37642 0.0443 0.16385 0.0399 0.2657 0.093l-0.10185 0.26571q-0.10628-0.062-0.23913-0.0886-0.12843-0.0266-0.27014-0.0266-0.12399 0-0.19928 0.0443-0.0709 0.0399-0.11071 0.124-0.0399 0.0797-0.0531 0.19928-9e-3 0.11514-9e-3 0.26127z"/>
<path d="m-529.25-273.66q-0.11071 0.0841-0.25242 0.124t-0.29671 0.0399q-0.21256 0-0.3587-0.0797-0.14614-0.0841-0.23913-0.2347-0.0886-0.155-0.13286-0.36756-0.0399-0.21699-0.0399-0.47827 0-0.56684 0.19928-0.86354 0.2037-0.29671 0.58012-0.29671 0.17271 0 0.2967 0.031 0.124 0.031 0.21257 0.0797l-0.0886 0.27899q-0.17714-0.10185-0.38527-0.10185-0.23914 0-0.36313 0.21256-0.11957 0.20814-0.11957 0.65984 0 0.18157 0.0266 0.34099t0.0886 0.27899q0.062 0.11514 0.15942 0.18599 0.0974 0.0664 0.24356 0.0664 0.11514 0 0.21257-0.0399 0.10185-0.0399 0.16385-0.093z"/>
<path d="m-537.73-269.88q0 0.22585 4e-3 0.41184 4e-3 0.18157 0.031 0.3587h-0.21699l-0.0709-0.2657h-0.0177q-0.062 0.13285-0.19485 0.22142-0.13285 0.0886-0.31885 0.0886-0.3587 0-0.53584-0.27899-0.17271-0.27899-0.17271-0.87683 0-0.56684 0.21257-0.85911 0.21699-0.29228 0.59341-0.29228 0.12842 0 0.2037 0.0177 0.0753 0.0133 0.16386 0.0487v-0.91226h0.31884zm-0.31884-1.1027q-0.062-0.0531-0.14171-0.0753-0.0753-0.0266-0.20371-0.0266-0.23471 0-0.36756 0.21256-0.12842 0.21257-0.12842 0.65541 0 0.19485 0.0221 0.35427 0.0266 0.155 0.0753 0.27014 0.0531 0.11514 0.13285 0.17713 0.0841 0.062 0.20371 0.062 0.31885 0 0.40742-0.37641z"/>
<path d="m-535.88-269.27q-0.10628 0.0974-0.27013 0.15057-0.16385 0.0531-0.34542 0.0531-0.20813 0-0.36313-0.0797-0.15056-0.0841-0.25242-0.23471-0.0974-0.15499-0.14614-0.36756-0.0443-0.21256-0.0443-0.47827 0-0.56684 0.20814-0.86354 0.20813-0.2967 0.58898-0.2967 0.12399 0 0.24356 0.031 0.124 0.031 0.22142 0.124 0.0974 0.093 0.155 0.26128 0.062 0.16828 0.062 0.43841 0 0.0753-9e-3 0.16385-4e-3 0.0841-0.0133 0.17714h-1.1248q0 0.19042 0.031 0.34542 0.031 0.15499 0.0974 0.2657 0.0664 0.10628 0.16828 0.16828 0.10628 0.0576 0.26127 0.0576 0.11957 0 0.23471-0.0443 0.11957-0.0443 0.18157-0.10629zm-0.24799-1.1868q9e-3 -0.33213-0.093-0.48712-0.10186-0.155-0.27899-0.155-0.20371 0-0.32328 0.155-0.11957 0.15499-0.14171 0.48712z"/>
<path d="m-535.6-271.33h0.27013v-0.43842l0.31885-0.10185v0.54027h0.47827v0.28784h-0.47827v1.3197q0 0.19485 0.0443 0.28342 0.0487 0.0841 0.155 0.0841 0.0886 0 0.15056-0.0177 0.0664-0.0221 0.14171-0.0531l0.062 0.25242q-0.0974 0.0487-0.21699 0.0753-0.11514 0.031-0.24356 0.031-0.22142 0-0.31885-0.14171-0.093-0.14614-0.093-0.46941v-1.364h-0.27013z"/>
<path d="m-534.18-271.2q0.12843-0.0797 0.30999-0.124 0.186-0.0443 0.38971-0.0443 0.18599 0 0.2967 0.0576 0.11514 0.0531 0.17714 0.15056 0.0664 0.093 0.0841 0.217 0.0221 0.11957 0.0221 0.25242 0 0.2657-0.0133 0.51812-9e-3 0.25242-9e-3 0.47827 0 0.16828 9e-3 0.31442 0.0133 0.14171 0.0443 0.27013h-0.24357l-0.0753-0.26127h-0.0177q-0.0664 0.11514-0.19485 0.19928-0.12843 0.0841-0.34542 0.0841-0.23914 0-0.39413-0.16385-0.15057-0.16828-0.15057-0.46056 0-0.19042 0.062-0.31885 0.0664-0.12842 0.18157-0.20813 0.11956-0.0797 0.27899-0.11071 0.16385-0.0354 0.36313-0.0354 0.0443 0 0.0886 0t0.093 4e-3q0.0133-0.13728 0.0133-0.24357 0-0.25242-0.0753-0.35427t-0.27457-0.10185q-0.12399 0-0.27013 0.0399-0.14614 0.0354-0.24356 0.093zm0.96097 1.0717q-0.0443-4e-3 -0.0886-4e-3 -0.0443-4e-3 -0.0886-4e-3 -0.10629 0-0.20814 0.0177t-0.18157 0.062q-0.0797 0.0443-0.12842 0.11957-0.0443 0.0753-0.0443 0.19042 0 0.17714 0.0841 0.27456 0.0886 0.0974 0.22584 0.0974 0.186 0 0.28785-0.0886 0.10186-0.0886 0.14171-0.19485z"/>
<path d="m-532.33-271.33h0.31884v2.2142h-0.31884zm-0.0576-0.67312q0-0.10629 0.0576-0.17271 0.062-0.0664 0.15942-0.0664 0.0974 0 0.15942 0.0664 0.0664 0.062 0.0664 0.17271 0 0.10628-0.0664 0.16828-0.062 0.0576-0.15942 0.0576-0.0974 0-0.15942-0.062-0.0576-0.062-0.0576-0.16385z"/>
<path d="m-531.08-269.64q0 0.15499 0.0399 0.22142 0.0443 0.0664 0.11957 0.0664 0.093 0 0.21699-0.0487l0.031 0.25685q-0.0576 0.0354-0.16385 0.0576-0.10186 0.0221-0.186 0.0221-0.16828 0-0.27456-0.10185-0.10185-0.10629-0.10185-0.36756v-2.6792h0.31884z"/>
<path d="m-530.43-269.48q0.0886 0.0531 0.20813 0.093 0.124 0.0354 0.25242 0.0354 0.14614 0 0.248-0.0709 0.10185-0.0753 0.10185-0.23914 0-0.13728-0.062-0.22585-0.062-0.0886-0.15942-0.15942-0.093-0.0709-0.20371-0.12843-0.11071-0.062-0.20813-0.14613-0.093-0.0841-0.155-0.19928-0.062-0.11514-0.062-0.29228 0-0.28342 0.15057-0.42513 0.15499-0.14613 0.43398-0.14613 0.18157 0 0.31442 0.0354 0.13285 0.031 0.23028 0.0886l-0.0841 0.26571q-0.0841-0.0443-0.19485-0.0709-0.11071-0.031-0.22585-0.031-0.15942 0-0.23471 0.0664-0.0708 0.0664-0.0708 0.20814 0 0.11071 0.062 0.19042 0.062 0.0753 0.15499 0.14171 0.0974 0.062 0.20814 0.12842 0.11071 0.0664 0.2037 0.15942 0.0974 0.0886 0.15943 0.217 0.062 0.12399 0.062 0.31441 0 0.124-0.0399 0.23471t-0.124 0.19485q-0.0797 0.0797-0.2037 0.12843-0.11957 0.0487-0.28342 0.0487-0.19485 0-0.33656-0.0399-0.14171-0.0354-0.23914-0.0974z"/>
</g>
<path d="m-597.58-290.35h40.632v13.607h-40.632z" fill="#b3b3b3" stroke-width=".12266"/>
<path d="m-597.58-275.14h40.632v13.607h-40.632z" fill="#b3b3b3" stroke-width=".12266"/>
<g>
<g dominant-baseline="auto" stroke-width=".17608" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal" aria-label="transport priv">
<path d="m-593.67-284.97h0.42965v-0.69729l0.50712-0.162v0.85929h0.76068v0.45782h-0.76068v2.0989q0 0.30991 0.0704 0.45078 0.0775 0.13382 0.24652 0.13382 0.14086 0 0.23947-0.0282 0.10565-0.0352 0.22539-0.0845l0.0986 0.40147q-0.15495 0.0775-0.34512 0.11973-0.18313 0.0493-0.38738 0.0493-0.35217 0-0.50712-0.22539-0.14791-0.23243-0.14791-0.74659v-2.1694h-0.42965z"/>
<path d="m-591.38-284.97h0.35921l0.0916 0.3733h0.0211q0.0986-0.20426 0.25356-0.31695 0.162-0.11974 0.38739-0.11974 0.16199 0 0.36625 0.0634l-0.0986 0.51416q-0.18312-0.0634-0.32399-0.0634-0.22539 0-0.36625 0.13383-0.14087 0.12678-0.18313 0.34512v2.592h-0.50712z"/>
<path d="m-589.49-284.76q0.20425-0.12678 0.49303-0.19721 0.29582-0.0704 0.61981-0.0704 0.29582 0 0.47191 0.0916 0.18312 0.0845 0.28173 0.23947 0.10565 0.14791 0.13382 0.34512 0.0352 0.19017 0.0352 0.40147 0 0.4226-0.0211 0.82407-0.0141 0.40148-0.0141 0.76069 0 0.26764 0.0141 0.50007 0.0211 0.22539 0.0704 0.42965h-0.38738l-0.11974-0.41556h-0.0282q-0.10565 0.18313-0.30991 0.31695-0.20425 0.13382-0.54938 0.13382-0.38034 0-0.62685-0.2606-0.23948-0.26765-0.23948-0.73251 0-0.30286 0.0986-0.50712 0.10565-0.20426 0.28878-0.33104 0.19017-0.12678 0.44373-0.17608 0.2606-0.0564 0.57755-0.0564 0.0704 0 0.14087 0 0.0704 0 0.14791 7e-3 0.0211-0.21835 0.0211-0.38739 0-0.40147-0.11974-0.56346-0.11974-0.162-0.43669-0.162-0.19721 0-0.42964 0.0634-0.23243 0.0564-0.38738 0.14791zm1.5284 1.7045q-0.0704-7e-3 -0.14087-7e-3 -0.0704-7e-3 -0.14086-7e-3 -0.16904 0-0.33104 0.0282t-0.28878 0.0986-0.20425 0.19017q-0.0704 0.11974-0.0704 0.30287 0 0.28173 0.13383 0.43668 0.14086 0.15496 0.35921 0.15496 0.29582 0 0.45781-0.14087 0.162-0.14087 0.22539-0.30991z"/>
<path d="m-584.83-281.45v-2.1482q0-0.52825-0.12678-0.76068-0.11973-0.23947-0.43668-0.23947-0.28174 0-0.46486 0.16904-0.18313 0.16904-0.26765 0.41555v2.5638h-0.50712v-3.5217h0.36625l0.0916 0.3733h0.0211q0.13382-0.19017 0.35921-0.324 0.23243-0.13382 0.54938-0.13382 0.22538 0 0.39442 0.0634 0.17609 0.0634 0.28878 0.21834 0.11974 0.14791 0.17608 0.40147 0.0634 0.25356 0.0634 0.64095v2.282z"/>
<path d="m-583.59-282.02q0.14087 0.0845 0.33104 0.14791 0.19721 0.0563 0.40147 0.0563 0.23243 0 0.39442-0.11269 0.162-0.11974 0.162-0.38034 0-0.21834-0.0986-0.35921t-0.25356-0.25356q-0.14791-0.1127-0.32399-0.20426-0.17608-0.0986-0.33104-0.23243-0.14791-0.13382-0.24651-0.31695t-0.0986-0.46486q0-0.45077 0.23947-0.67616 0.24652-0.23243 0.69025-0.23243 0.28878 0 0.50008 0.0564 0.2113 0.0493 0.36625 0.14086l-0.13382 0.4226q-0.13382-0.0704-0.30991-0.11269-0.17608-0.0493-0.35921-0.0493-0.25356 0-0.3733 0.10565-0.11269 0.10565-0.11269 0.33103 0 0.17609 0.0986 0.30287 0.0986 0.11973 0.24651 0.22538 0.15496 0.0986 0.33104 0.20426 0.17608 0.10565 0.324 0.25356 0.15495 0.14087 0.25356 0.34513 0.0986 0.19721 0.0986 0.50007 0 0.19722-0.0634 0.3733t-0.19721 0.30991q-0.12678 0.12678-0.324 0.20425-0.19017 0.0775-0.45077 0.0775-0.30991 0-0.53529-0.0634-0.22539-0.0564-0.38034-0.15495z"/>
<path d="m-581.16-284.97h0.35921l0.0775 0.38034h0.0282q0.2606-0.46486 0.81702-0.46486 0.55643 0 0.83112 0.41556 0.28173 0.41555 0.28173 1.3594 0 0.44373-0.0916 0.80294-0.0916 0.35217-0.26061 0.60573-0.16904 0.24652-0.41555 0.38034-0.23948 0.12678-0.5353 0.12678-0.20425 0-0.32399-0.0282-0.11974-0.0211-0.2606-0.0986v1.4509h-0.50712zm0.50712 2.9652q0.0986 0.0845 0.21834 0.13382 0.12678 0.0493 0.33104 0.0493 0.37329 0 0.59164-0.38034 0.21834-0.38034 0.21834-1.0847 0-0.29582-0.0423-0.5353-0.0352-0.23947-0.11974-0.40851-0.0845-0.17608-0.21834-0.26765-0.12678-0.0986-0.31695-0.0986-0.51416 0-0.66207 0.62685z"/>
<path d="m-578.24-283.21q0-0.95085 0.32399-1.3946 0.33104-0.45077 0.93676-0.45077 0.64799 0 0.95085 0.45782 0.30991 0.45781 0.30991 1.3875 0 0.9579-0.33104 1.4016-0.33103 0.44373-0.92972 0.44373-0.64798 0-0.95789-0.45782-0.30286-0.45781-0.30286-1.3875zm0.52825 0q0 0.30991 0.0352 0.56347 0.0423 0.25356 0.12678 0.43669 0.0916 0.18313 0.23243 0.28878 0.14087 0.0986 0.33808 0.0986 0.36626 0 0.54938-0.32399 0.18313-0.33104 0.18313-1.0636 0-0.30286-0.0423-0.55642-0.0352-0.2606-0.12678-0.44373-0.0845-0.18313-0.22539-0.28173-0.14086-0.10565-0.33808-0.10565-0.35921 0-0.54938 0.33103-0.18312 0.33104-0.18312 1.0565z"/>
<path d="m-575.05-284.97h0.35921l0.0916 0.3733h0.0211q0.0986-0.20426 0.25357-0.31695 0.16199-0.11974 0.38738-0.11974 0.162 0 0.36625 0.0634l-0.0986 0.51416q-0.18313-0.0634-0.324-0.0634-0.22538 0-0.36625 0.13383-0.14087 0.12678-0.18313 0.34512v2.592h-0.50712z"/>
<path d="m-573.31-284.97h0.42964v-0.69729l0.50712-0.162v0.85929h0.76068v0.45782h-0.76068v2.0989q0 0.30991 0.0704 0.45078 0.0775 0.13382 0.24652 0.13382 0.14087 0 0.23947-0.0282 0.10565-0.0352 0.22539-0.0845l0.0986 0.40147q-0.15496 0.0775-0.34513 0.11973-0.18312 0.0493-0.38738 0.0493-0.35217 0-0.50712-0.22539-0.14791-0.23243-0.14791-0.74659v-2.1694h-0.42964z"/>
<path d="m-569.52-284.97h0.35921l0.0775 0.38034h0.0282q0.26061-0.46486 0.81703-0.46486t0.83111 0.41556q0.28174 0.41555 0.28174 1.3594 0 0.44373-0.0916 0.80294-0.0916 0.35217-0.2606 0.60573-0.16904 0.24652-0.41556 0.38034-0.23947 0.12678-0.53529 0.12678-0.20426 0-0.32399-0.0282-0.11974-0.0211-0.26061-0.0986v1.4509h-0.50712zm0.50712 2.9652q0.0986 0.0845 0.21835 0.13382 0.12678 0.0493 0.33103 0.0493 0.3733 0 0.59164-0.38034 0.21835-0.38034 0.21835-1.0847 0-0.29582-0.0423-0.5353-0.0352-0.23947-0.11974-0.40851-0.0845-0.17608-0.21834-0.26765-0.12678-0.0986-0.31695-0.0986-0.51417 0-0.66208 0.62685z"/>
<path d="m-566.45-284.97h0.35921l0.0916 0.3733h0.0211q0.0986-0.20426 0.25356-0.31695 0.162-0.11974 0.38738-0.11974 0.162 0 0.36626 0.0634l-0.0986 0.51416q-0.18313-0.0634-0.32399-0.0634-0.22539 0-0.36626 0.13383-0.14086 0.12678-0.18312 0.34512v2.592h-0.50712z"/>
<path d="m-564.44-284.97h0.50712v3.5217h-0.50712zm-0.0916-1.0706q0-0.16904 0.0916-0.27469 0.0986-0.10565 0.25356-0.10565 0.15495 0 0.25356 0.10565 0.10565 0.0986 0.10565 0.27469 0 0.16904-0.10565 0.26765-0.0986 0.0916-0.25356 0.0916-0.15495 0-0.25356-0.0986-0.0916-0.0986-0.0916-0.26061z"/>
<path d="m-562.15-282.9 0.14086 0.69729h0.0141l0.12678-0.71138 0.61982-2.0496h0.53529l-1.2044 3.5992h-0.24652l-1.2255-3.5992h0.57755z"/>
</g>
<g dominant-baseline="auto" stroke-width=".17608" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal" aria-label="protocol priv">
<path d="m-592.31-270h0.35921l0.0775 0.38034h0.0282q0.26061-0.46486 0.81703-0.46486t0.83111 0.41556q0.28174 0.41555 0.28174 1.3594 0 0.44373-0.0916 0.80294-0.0916 0.35217-0.2606 0.60573-0.16904 0.24652-0.41556 0.38034-0.23947 0.12678-0.53529 0.12678-0.20426 0-0.32399-0.0282-0.11974-0.0211-0.26061-0.0986v1.4509h-0.50712zm0.50712 2.9652q0.0986 0.0845 0.21835 0.13382 0.12678 0.0493 0.33103 0.0493 0.3733 0 0.59164-0.38034 0.21835-0.38034 0.21835-1.0847 0-0.29582-0.0423-0.5353-0.0352-0.23947-0.11974-0.40851-0.0845-0.17608-0.21834-0.26765-0.12678-0.0986-0.31695-0.0986-0.51417 0-0.66208 0.62685z"/>
<path d="m-589.24-270h0.35921l0.0916 0.3733h0.0211q0.0986-0.20426 0.25356-0.31695 0.162-0.11974 0.38738-0.11974 0.162 0 0.36626 0.0634l-0.0986 0.51416q-0.18313-0.0634-0.32399-0.0634-0.22539 0-0.36626 0.13383-0.14086 0.12678-0.18312 0.34512v2.592h-0.50712z"/>
<path d="m-587.47-268.24q0-0.95085 0.32399-1.3946 0.33104-0.45077 0.93676-0.45077 0.64799 0 0.95085 0.45782 0.30991 0.45781 0.30991 1.3875 0 0.9579-0.33104 1.4016-0.33103 0.44373-0.92972 0.44373-0.64798 0-0.95789-0.45782-0.30286-0.45781-0.30286-1.3875zm0.52825 0q0 0.30991 0.0352 0.56347 0.0423 0.25356 0.12678 0.43669 0.0916 0.18313 0.23243 0.28878 0.14087 0.0986 0.33808 0.0986 0.36626 0 0.54938-0.32399 0.18313-0.33104 0.18313-1.0636 0-0.30286-0.0423-0.55642-0.0352-0.2606-0.12678-0.44373-0.0845-0.18313-0.22539-0.28173-0.14086-0.10565-0.33808-0.10565-0.35921 0-0.54938 0.33103-0.18312 0.33104-0.18312 1.0565z"/>
<path d="m-584.62-270h0.42965v-0.69729l0.50712-0.162v0.85929h0.76068v0.45782h-0.76068v2.0989q0 0.30991 0.0704 0.45078 0.0775 0.13382 0.24652 0.13382 0.14086 0 0.23947-0.0282 0.10565-0.0352 0.22539-0.0845l0.0986 0.40147q-0.15495 0.0775-0.34512 0.11973-0.18313 0.0493-0.38738 0.0493-0.35217 0-0.50712-0.22539-0.14791-0.23243-0.14791-0.74659v-2.1694h-0.42965z"/>
<path d="m-582.54-268.24q0-0.95085 0.32399-1.3946 0.33104-0.45077 0.93677-0.45077 0.64798 0 0.95085 0.45782 0.30991 0.45781 0.30991 1.3875 0 0.9579-0.33104 1.4016t-0.92972 0.44373q-0.64799 0-0.9579-0.45782-0.30286-0.45781-0.30286-1.3875zm0.52825 0q0 0.30991 0.0352 0.56347 0.0423 0.25356 0.12678 0.43669 0.0916 0.18313 0.23243 0.28878 0.14086 0.0986 0.33808 0.0986 0.36625 0 0.54938-0.32399 0.18312-0.33104 0.18312-1.0636 0-0.30286-0.0423-0.55642-0.0352-0.2606-0.12678-0.44373-0.0845-0.18313-0.22538-0.28173-0.14087-0.10565-0.33808-0.10565-0.35921 0-0.54938 0.33103-0.18313 0.33104-0.18313 1.0565z"/>
<path d="m-577.4-266.66q-0.17609 0.13382-0.40147 0.19721-0.22539 0.0634-0.47191 0.0634-0.33808 0-0.57051-0.12678-0.23243-0.13382-0.38034-0.3733-0.14086-0.24651-0.2113-0.58459-0.0634-0.34513-0.0634-0.76069 0-0.90154 0.31695-1.3734 0.324-0.4719 0.92268-0.4719 0.27469 0 0.4719 0.0493 0.19722 0.0493 0.33808 0.12678l-0.14086 0.44373q-0.28174-0.16199-0.61277-0.16199-0.38034 0-0.57756 0.33808-0.19017 0.33103-0.19017 1.0494 0 0.28878 0.0423 0.54234t0.14087 0.44373q0.0986 0.18313 0.25356 0.29582 0.15495 0.10565 0.38738 0.10565 0.18313 0 0.33808-0.0634 0.162-0.0634 0.26061-0.14791z"/>
<path d="m-577.12-268.24q0-0.95085 0.32399-1.3946 0.33104-0.45077 0.93677-0.45077 0.64798 0 0.95085 0.45782 0.30991 0.45781 0.30991 1.3875 0 0.9579-0.33104 1.4016t-0.92972 0.44373q-0.64799 0-0.9579-0.45782-0.30286-0.45781-0.30286-1.3875zm0.52825 0q0 0.30991 0.0352 0.56347 0.0423 0.25356 0.12678 0.43669 0.0916 0.18313 0.23243 0.28878 0.14086 0.0986 0.33808 0.0986 0.36625 0 0.54938-0.32399 0.18312-0.33104 0.18312-1.0636 0-0.30286-0.0423-0.55642-0.0352-0.2606-0.12678-0.44373-0.0845-0.18313-0.22538-0.28173-0.14087-0.10565-0.33808-0.10565-0.35921 0-0.54938 0.33103-0.18313 0.33104-0.18313 1.0565z"/>
<path d="m-573.39-267.32q0 0.24652 0.0634 0.35217 0.0704 0.10565 0.19017 0.10565 0.14791 0 0.34513-0.0775l0.0493 0.40852q-0.0916 0.0563-0.2606 0.0916-0.162 0.0352-0.29582 0.0352-0.26765 0-0.43669-0.162-0.162-0.16904-0.162-0.5846v-4.2612h0.50712z"/>
<path d="m-570.79-270h0.35921l0.0775 0.38034h0.0282q0.26061-0.46486 0.81703-0.46486t0.83111 0.41556q0.28174 0.41555 0.28174 1.3594 0 0.44373-0.0916 0.80294-0.0916 0.35217-0.2606 0.60573-0.16904 0.24652-0.41556 0.38034-0.23947 0.12678-0.53529 0.12678-0.20426 0-0.32399-0.0282-0.11974-0.0211-0.26061-0.0986v1.4509h-0.50712zm0.50712 2.9652q0.0986 0.0845 0.21835 0.13382 0.12678 0.0493 0.33103 0.0493 0.3733 0 0.59164-0.38034 0.21835-0.38034 0.21835-1.0847 0-0.29582-0.0423-0.5353-0.0352-0.23947-0.11974-0.40851-0.0845-0.17608-0.21834-0.26765-0.12678-0.0986-0.31695-0.0986-0.51417 0-0.66208 0.62685z"/>
<path d="m-567.72-270h0.35921l0.0916 0.3733h0.0211q0.0986-0.20426 0.25356-0.31695 0.162-0.11974 0.38738-0.11974 0.162 0 0.36626 0.0634l-0.0986 0.51416q-0.18313-0.0634-0.32399-0.0634-0.22539 0-0.36626 0.13383-0.14086 0.12678-0.18312 0.34512v2.592h-0.50712z"/>
<path d="m-565.71-270h0.50712v3.5217h-0.50712zm-0.0916-1.0706q0-0.16904 0.0916-0.27469 0.0986-0.10565 0.25356-0.10565 0.15495 0 0.25356 0.10565 0.10565 0.0986 0.10565 0.27469 0 0.16904-0.10565 0.26765-0.0986 0.0916-0.25356 0.0916-0.15495 0-0.25356-0.0986-0.0916-0.0986-0.0916-0.26061z"/>
<path d="m-563.42-267.94 0.14086 0.69729h0.0141l0.12678-0.71138 0.61981-2.0496h0.5353l-1.2044 3.5992h-0.24652l-1.2255-3.5992h0.57755z"/>
</g>
<path d="m-605.19-328.66h9.2604" fill="none" marker-end="url(#Arrow1Send-6)" stroke="#000" stroke-width="1.565"/>
<path d="m-550.11-328.66h-9.2604" fill="none" marker-end="url(#Arrow1Send-7-0)" stroke="#000" stroke-width="1.565"/>
</g>
<path d="m-582.59-329.2a5.3454 5.3454 0 0 1-5.3454 5.3454 5.3454 5.3454 0 0 1-5.3454-5.3454 5.3454 5.3454 0 0 1 5.3454-5.3454 5.3454 5.3454 0 0 1 5.3454 5.3454z" fill="#d4aa00"/>
<g dominant-baseline="auto" stroke-width=".19242" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal" aria-label="at">
<path d="m-590.54-330.97q0.22321-0.13854 0.53878-0.21551 0.32328-0.077 0.67734-0.077 0.32327 0 0.51569 0.10006 0.20012 0.0924 0.30788 0.26169 0.11546 0.16164 0.14624 0.37716 0.0385 0.20781 0.0385 0.43872 0 0.46182-0.0231 0.90055-0.0154 0.43873-0.0154 0.83127 0 0.29249 0.0154 0.54649 0.0231 0.2463 0.077 0.46951h-0.42333l-0.13085-0.45412h-0.0308q-0.11546 0.20012-0.33867 0.34636-0.22321 0.14625-0.60036 0.14625-0.41564 0-0.68503-0.28479-0.2617-0.29249-0.2617-0.80049 0-0.33097 0.10776-0.55418 0.11545-0.22321 0.31557-0.36176 0.20782-0.13854 0.48491-0.19242 0.28479-0.0616 0.63116-0.0616 0.077 0 0.15393 0 0.077 0 0.16164 8e-3 0.0231-0.23861 0.0231-0.42333 0-0.43873-0.13085-0.61576t-0.47721-0.17703q-0.21551 0-0.46951 0.0693-0.254 0.0616-0.42334 0.16164zm1.6702 1.8627q-0.077-8e-3 -0.15394-8e-3 -0.077-8e-3 -0.15394-8e-3 -0.18473 0-0.36176 0.0308t-0.31557 0.10776q-0.13855 0.077-0.22322 0.20782-0.077 0.13085-0.077 0.33097 0 0.30788 0.14625 0.47721 0.15394 0.16933 0.39254 0.16933 0.32327 0 0.5003-0.15394 0.17704-0.15394 0.24631-0.33866z"/>
<path d="m-587.8-331.2h0.46951v-0.762l0.55418-0.17703v0.93903h0.83128v0.5003h-0.83128v2.2937q0 0.33867 0.077 0.49261 0.0847 0.14624 0.2694 0.14624 0.15394 0 0.26169-0.0308 0.11546-0.0385 0.24631-0.0924l0.10775 0.43873q-0.16933 0.0847-0.37715 0.13084-0.20012 0.0539-0.42333 0.0539-0.38485 0-0.55418-0.2463-0.16164-0.254-0.16164-0.81588v-2.3707h-0.46951z"/>
</g>
<path d="m-562.28-329.73a5.3454 5.3454 0 0 1-5.3454 5.3454 5.3454 5.3454 0 0 1-5.3454-5.3454 5.3454 5.3454 0 0 1 5.3454-5.3454 5.3454 5.3454 0 0 1 5.3454 5.3454z" fill="#d4aa00"/>
<g dominant-baseline="auto" stroke-width=".19242" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal" aria-label="ap">
<path d="m-570.22-331.5q0.22321-0.13855 0.53878-0.21552 0.32328-0.077 0.67734-0.077 0.32327 0 0.51569 0.10006 0.20012 0.0924 0.30788 0.2617 0.11546 0.16163 0.14624 0.37715 0.0385 0.20782 0.0385 0.43873 0 0.46181-0.0231 0.90054-0.0154 0.43873-0.0154 0.83127 0 0.29249 0.0154 0.54649 0.0231 0.2463 0.077 0.46951h-0.42333l-0.13085-0.45412h-0.0308q-0.11546 0.20012-0.33867 0.34637-0.22321 0.14624-0.60036 0.14624-0.41564 0-0.68503-0.28479-0.2617-0.29248-0.2617-0.80048 0-0.33097 0.10776-0.55418 0.11545-0.22322 0.31557-0.36176 0.20782-0.13855 0.48491-0.19243 0.28479-0.0616 0.63116-0.0616 0.077 0 0.15393 0 0.077 0 0.16164 8e-3 0.0231-0.2386 0.0231-0.42333 0-0.43873-0.13085-0.61576t-0.47721-0.17703q-0.21551 0-0.46951 0.0693-0.254 0.0616-0.42334 0.16163zm1.6702 1.8627q-0.077-8e-3 -0.15394-8e-3 -0.077-8e-3 -0.15394-8e-3 -0.18473 0-0.36176 0.0308t-0.31557 0.10775q-0.13855 0.077-0.22322 0.20782-0.077 0.13085-0.077 0.33097 0 0.30788 0.14625 0.47721 0.15394 0.16934 0.39254 0.16934 0.32327 0 0.5003-0.15394 0.17704-0.15394 0.24631-0.33867z"/>
<path d="m-567.1-331.74h0.39255l0.0847 0.41563h0.0308q0.28479-0.508 0.89285-0.508t0.90825 0.45412q0.30787 0.45412 0.30787 1.4855 0 0.48491-0.10006 0.87745-0.10006 0.38485-0.28478 0.66194-0.18473 0.2694-0.45413 0.41564-0.26169 0.13854-0.58496 0.13854-0.22322 0-0.35407-0.0308-0.13084-0.0231-0.28478-0.10776v1.5856h-0.55419zm0.55419 3.2404q0.10775 0.0924 0.2386 0.14624 0.13855 0.0539 0.36176 0.0539 0.40794 0 0.64655-0.41564 0.2386-0.41563 0.2386-1.1853 0-0.32327-0.0462-0.58497-0.0385-0.26169-0.13085-0.44642-0.0924-0.19243-0.2386-0.29249-0.13855-0.10775-0.34637-0.10775-0.56188 0-0.72351 0.68503z"/>
</g>
<path d="m-583.93-315.84a5.3454 5.3454 0 0 1-5.3454 5.3454 5.3454 5.3454 0 0 1-5.3454-5.3454 5.3454 5.3454 0 0 1 5.3454-5.3454 5.3454 5.3454 0 0 1 5.3454 5.3454z" fill="#d4aa00"/>
<g dominant-baseline="auto" stroke-width=".19242" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal" aria-label="ati">
<path d="m-591.87-317.61q0.22321-0.13855 0.53879-0.21552 0.32327-0.077 0.67733-0.077 0.32328 0 0.5157 0.10006 0.20012 0.0924 0.30788 0.2617 0.11545 0.16163 0.14624 0.37715 0.0385 0.20782 0.0385 0.43873 0 0.46181-0.0231 0.90054-0.0154 0.43873-0.0154 0.83127 0 0.29249 0.0154 0.54649 0.0231 0.2463 0.077 0.46951h-0.42333l-0.13085-0.45412h-0.0308q-0.11546 0.20012-0.33867 0.34637-0.22321 0.14624-0.60037 0.14624-0.41563 0-0.68503-0.28479-0.26169-0.29248-0.26169-0.80048 0-0.33097 0.10776-0.55418 0.11545-0.22322 0.31557-0.36176 0.20782-0.13855 0.48491-0.19243 0.28479-0.0616 0.63115-0.0616 0.077 0 0.15394 0 0.077 0 0.16164 8e-3 0.0231-0.2386 0.0231-0.42333 0-0.43873-0.13085-0.61576t-0.47721-0.17703q-0.21552 0-0.46952 0.0693-0.254 0.0616-0.42333 0.16163zm1.6702 1.8627q-0.077-8e-3 -0.15394-8e-3 -0.077-8e-3 -0.15393-8e-3 -0.18473 0-0.36176 0.0308t-0.31558 0.10775q-0.13854 0.077-0.22321 0.20782-0.077 0.13085-0.077 0.33097 0 0.30788 0.14624 0.47721 0.15394 0.16934 0.39255 0.16934 0.32327 0 0.5003-0.15394t0.2463-0.33867z"/>
<path d="m-589.14-317.84h0.46952v-0.762l0.55418-0.17703v0.93903h0.83127v0.5003h-0.83127v2.2937q0 0.33866 0.077 0.4926 0.0847 0.14624 0.26939 0.14624 0.15394 0 0.2617-0.0308 0.11545-0.0385 0.2463-0.0924l0.10776 0.43873q-0.16933 0.0847-0.37715 0.13085-0.20012 0.0539-0.42333 0.0539-0.38485 0-0.55419-0.24631-0.16163-0.254-0.16163-0.81587v-2.3707h-0.46952z"/>
<path d="m-586.54-317.84h0.55418v3.8485h-0.55418zm-0.10006-1.1699q0-0.18473 0.10006-0.30018 0.10776-0.11546 0.27709-0.11546t0.27709 0.11546q0.11545 0.10775 0.11545 0.30018 0 0.18472-0.11545 0.29248-0.10776 0.10006-0.27709 0.10006t-0.27709-0.10776q-0.10006-0.10775-0.10006-0.28478z"/>
</g>
<path d="m-564.69-317.17a5.3454 5.3454 0 0 1-5.3454 5.3454 5.3454 5.3454 0 0 1-5.3454-5.3454 5.3454 5.3454 0 0 1 5.3454-5.3454 5.3454 5.3454 0 0 1 5.3454 5.3454z" fill="#d4aa00"/>
<g>
<g dominant-baseline="auto" stroke-width=".19242" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal" aria-label="api">
<path d="m-572.63-318.94q0.22321-0.13854 0.53879-0.21551 0.32327-0.077 0.67733-0.077 0.32327 0 0.5157 0.10006 0.20012 0.0924 0.30788 0.26169 0.11545 0.16164 0.14624 0.37716 0.0385 0.20781 0.0385 0.43872 0 0.46182-0.0231 0.90055-0.0154 0.43873-0.0154 0.83127 0 0.29249 0.0154 0.54649 0.0231 0.2463 0.077 0.46951h-0.42333l-0.13085-0.45412h-0.0308q-0.11545 0.20012-0.33866 0.34636-0.22322 0.14625-0.60037 0.14625-0.41563 0-0.68503-0.28479-0.26169-0.29249-0.26169-0.80049 0-0.33097 0.10775-0.55418 0.11546-0.22321 0.31558-0.36176 0.20782-0.13854 0.48491-0.19242 0.28479-0.0616 0.63115-0.0616 0.077 0 0.15394 0 0.077 0 0.16164 8e-3 0.0231-0.23861 0.0231-0.42333 0-0.43873-0.13085-0.61576t-0.47721-0.17703q-0.21552 0-0.46952 0.0693-0.254 0.0616-0.42333 0.16164zm1.6702 1.8627q-0.077-8e-3 -0.15394-8e-3 -0.077-8e-3 -0.15394-8e-3 -0.18472 0-0.36175 0.0308t-0.31558 0.10776q-0.13855 0.077-0.22321 0.20782-0.077 0.13085-0.077 0.33097 0 0.30788 0.14624 0.47721 0.15394 0.16933 0.39255 0.16933 0.32327 0 0.5003-0.15394t0.2463-0.33866z"/>
<path d="m-569.51-319.17h0.39254l0.0847 0.41564h0.0308q0.28479-0.508 0.89285-0.508t0.90824 0.45412q0.30788 0.45412 0.30788 1.4855 0 0.48491-0.10006 0.87746-0.10006 0.38485-0.28479 0.66194-0.18473 0.26939-0.45412 0.41563-0.2617 0.13855-0.58497 0.13855-0.22321 0-0.35406-0.0308-0.13085-0.0231-0.28479-0.10776v1.5856h-0.55418zm0.55418 3.2404q0.10776 0.0924 0.23861 0.14624 0.13854 0.0539 0.36175 0.0539 0.40794 0 0.64655-0.41564t0.23861-1.1853q0-0.32328-0.0462-0.58497-0.0385-0.2617-0.13084-0.44643-0.0924-0.19242-0.23861-0.29248-0.13855-0.10776-0.34636-0.10776-0.56188 0-0.72352 0.68503z"/>
<path d="m-566.06-319.17h0.55419v3.8485h-0.55419zm-0.10006-1.1699q0-0.18472 0.10006-0.30018 0.10776-0.11545 0.27709-0.11545 0.16934 0 0.2771 0.11545 0.11545 0.10776 0.11545 0.30018 0 0.18473-0.11545 0.29249-0.10776 0.10006-0.2771 0.10006-0.16933 0-0.27709-0.10776-0.10006-0.10776-0.10006-0.28479z"/>
</g>
<path d="m-589.42-311.83-5.9739 24.054" fill="none" marker-end="url(#Arrow1Send-70)" stroke="#000" stroke-width="1.565"/>
<path d="m-569.63-313.36-25.485 37.952" fill="none" marker-end="url(#Arrow1Send-70-8)" stroke="#000" stroke-width="1.565"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 95 KiB

After

Width:  |  Height:  |  Size: 135 KiB

View file

@ -532,8 +532,7 @@ struct lws;
#include <libwebsockets/lws-diskcache.h>
#include <libwebsockets/lws-sequencer.h>
#include <libwebsockets/abstract/transports.h>
#include <libwebsockets/abstract/smtp.h>
#include <libwebsockets/abstract/abstract.h>
#if defined(LWS_WITH_TLS)

View file

@ -0,0 +1,120 @@
/*
* libwebsockets - abstract top level header
*
* Copyright (C) 2019 Andy Green <andy@warmcat.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation:
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
/*
* These are used to optionally pass an array of index = C string, binary array,
* or ulong tokens to the abstract transport or protocol. For example if it's
* raw socket transport, then the DNS address to connect to and the port are
* passed using these when the client created and bound to the transport.
*/
typedef struct lws_token_map {
union {
const char *value;
uint8_t *bvalue;
unsigned long lvalue;
} u;
short name_index; /* 0 here indicates end of array */
short length_or_zero;
} lws_token_map_t;
/*
* The indvidual protocols and transports define their own name_index-es which
* are meaningful to them. Define index 0 globally as the end of an array of
* them, and separate the ones used for protocols and transport so we can
* sanity check they are at least in the correct category.
*/
enum {
LTMI_END_OF_ARRAY,
LTMI_PROTOCOL_BASE = 2048,
LTMI_TRANSPORT_BASE = 4096
};
struct lws_abs_transport;
struct lws_abs_protocol;
LWS_VISIBLE LWS_EXTERN const lws_token_map_t *
lws_abs_get_token(const lws_token_map_t *token_map, short name_index);
/*
* the combination of a protocol, transport, and token maps for each
*/
typedef void lws_abs_transport_inst_t;
typedef void lws_abs_protocol_inst_t;
typedef struct lws_abs {
void *user;
struct lws_vhost *vh;
const struct lws_abs_protocol *ap;
const lws_token_map_t *ap_tokens;
const struct lws_abs_transport *at;
const lws_token_map_t *at_tokens;
/*
* These are filled in by lws_abs_bind_and_create_instance() in the
* instance copy. They do not need to be set when creating the struct
* for use by lws_abs_bind_and_create_instance()
*/
struct lws_dll2 abstract_instances;
lws_abs_transport_inst_t *ati;
lws_abs_protocol_inst_t *api;
} lws_abs_t;
/**
* lws_abs_bind_and_create_instance - use an abstract protocol and transport
*
* \param abs: the lws_abs_t describing the combination desired
*
* This instantiates an abstract protocol and abstract transport bound together.
* A single heap allocation is made for the combination and the protocol and
* transport creation ops are called on it. The ap_tokens and at_tokens
* are consulted by the creation ops to decide the details of the protocol and
* transport for the instance.
*/
LWS_VISIBLE LWS_EXTERN lws_abs_t *
lws_abs_bind_and_create_instance(const lws_abs_t *ai);
/**
* lws_abs_destroy_instance() - destroys an instance
*
* \param ai: pointer to the ai pointer to destroy
*
* This is for destroying an instance created by
* lws_abs_bind_and_create_instance() above.
*
* Calls the protocol and transport destroy operations on the instance, then
* frees the combined allocation in one step. The pointer ai is set to NULL.
*/
LWS_VISIBLE LWS_EXTERN void
lws_abs_destroy_instance(lws_abs_t **ai);
/*
* bring in all the protocols and transports definitions
*/
#include <libwebsockets/abstract/protocols.h>
#include <libwebsockets/abstract/transports.h>

View file

@ -0,0 +1,53 @@
/*
* libwebsockets - abstract protocol definitions
*
* Copyright (C) 2019 Andy Green <andy@warmcat.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation:
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
typedef struct lws_abs_protocol {
const char *name;
int alloc;
int (*create)(const struct lws_abs *ai);
void (*destroy)(lws_abs_protocol_inst_t **d);
/* events the transport invokes (handled by abstract protocol) */
int (*accept)(lws_abs_protocol_inst_t *d);
int (*rx)(lws_abs_protocol_inst_t *d, uint8_t *buf, size_t len);
int (*writeable)(lws_abs_protocol_inst_t *d, size_t budget);
int (*closed)(lws_abs_protocol_inst_t *d);
int (*heartbeat)(lws_abs_protocol_inst_t *d);
} lws_abs_protocol_t;
/**
* lws_abs_protocol_get_by_name() - returns a pointer to the named protocol ops
*
* \param name: the name of the abstract protocol
*
* Returns a pointer to the named protocol ops struct if available, otherwise
* NULL.
*/
LWS_VISIBLE LWS_EXTERN const lws_abs_protocol_t *
lws_abs_protocol_get_by_name(const char *name);
/*
* bring in public api pieces from protocols
*/
#include <libwebsockets/abstract/protocols/smtp.h>

View file

@ -54,26 +54,16 @@
//@{
#if defined(LWS_WITH_SMTP)
enum {
LTMI_PSMTP_V_HELO = LTMI_PROTOCOL_BASE, /* u.value */
LTMI_PSMTP_LV_RETRY_INTERVAL, /* u.lvalue */
LTMI_PSMTP_LV_DELIVERY_TIMEOUT, /* u.lvalue */
LTMI_PSMTP_LV_EMAIL_QUEUE_MAX, /* u.lvalue */
LTMI_PSMTP_LV_MAX_CONTENT_SIZE, /* u.lvalue */
};
typedef struct lws_smtp_client lws_smtp_client_t;
typedef struct lws_abstract lws_abstract_t;
typedef struct lws_smtp_client_info {
void *data;
char helo[32]; /**< Fill before init, eg, "myserver.com" */
const lws_abstract_t *abs; /**< abstract transport to use */
const lws_token_map_t *abs_tokens; /**< transport-specific metadata
for this particular
connection */
struct lws_vhost *vh;
time_t retry_interval;
time_t delivery_timeout;
size_t email_queue_max;
size_t max_content_size;
} lws_smtp_client_info_t;
typedef struct lws_abs lws_abs_t;
typedef struct lws_smtp_email {
struct lws_dll2 list;
@ -94,17 +84,6 @@ typedef struct lws_smtp_email {
} lws_smtp_email_t;
/**
* lws_smtp_client_create() - Initialize a struct lws_email
*
* \param abs: abstract transport to use with the new SMTP client
* \param ci: parameters describing the new SMTP client characteristics
*
* Prepares a struct lws_email for use ending SMTP
*/
LWS_VISIBLE LWS_EXTERN lws_smtp_client_t *
lws_smtp_client_create(const lws_smtp_client_info_t *ci);
/**
* lws_smtp_client_alloc_email_helper() - Allocates and inits an email object
*
@ -133,34 +112,23 @@ lws_smtp_client_alloc_email_helper(const char *payload, size_t payload_len,
/**
* lws_smtp_client_add_email() - Add email to the list of ones being sent
*
* \param c: smtp client
* \param instance: smtp client + transport
* \param e: email to queue for sending on \p c
*
* Adds an email to the linked-list of emails to send
*/
LWS_VISIBLE LWS_EXTERN int
lws_smtp_client_add_email(lws_smtp_client_t *c, lws_smtp_email_t *e);
lws_smtp_client_add_email(lws_abs_t *instance, lws_smtp_email_t *e);
/**
* lws_smtp_client_kick() - Request check for new email
*
* \param email: lws_smtp_client_t context to kick
* \param instance: instance to kick
*
* Gives smtp client a chance to move things on
*/
LWS_VISIBLE LWS_EXTERN void
lws_smtp_client_kick(lws_smtp_client_t *email);
/**
* lws_smtp_client_destroy() - stop using the struct lws_email
*
* \param email: the lws_smtp_client_t context
*
* Stop sending email using email and free allocations
*/
LWS_VISIBLE LWS_EXTERN void
lws_smtp_client_destroy(lws_smtp_client_t **email);
lws_smtp_client_kick(lws_abs_t *instance);
#endif
//@}

View file

@ -21,83 +21,41 @@
* included from libwebsockets.h
*/
typedef void lws_abs_user_t;
typedef void lws_abs_t;
/*
* These are used to optionally pass an array of index = C string or binary
* array tokens to the abstract transport. For example if it's raw socket
* transport, then the DNS address to connect to and the port are passed using
* these when the client created and bound to the transport.
* Abstract transport ops
*/
typedef struct lws_token_map {
union {
const char *value;
uint8_t *bvalue;
unsigned long lvalue;
} u;
short name_index; /* 0 here indicates end of array */
short length_or_zero;
} lws_token_map_t;
enum {
LTMI_END_OF_ARRAY,
LTMI_PEER_DNS_ADDRESS, /* u.value */
LTMI_PEER_PORT, /* u.lvalue */
LTMI_PEER_TLS_FLAGS, /* u.lvalue */
};
/*
* The abstract callbacks are in three parts
*
* - create and destroy
*
* - events handled by the transport
*
* - events handled by the user of the transport
*
* the canned abstract transports only define the first two types... the
* remaining callbacks must be filled in to callback functions specific to
* the user of the abstract transport.
*
* This abi has to be public so the user can create their own private abstract
* transports.
*/
typedef struct lws_abstract {
typedef struct lws_abs_transport {
const char *name;
int alloc;
lws_abs_user_t * (*create)(struct lws_abstract *abs, void *user);
void (*destroy)(lws_abs_user_t **d);
int (*create)(struct lws_abs *abs);
void (*destroy)(lws_abs_transport_inst_t **d);
/* events the abstract object invokes (filled in by transport) */
int (*tx)(lws_abs_user_t *d, uint8_t *buf, size_t len);
int (*client_conn)(lws_abs_user_t *d, struct lws_vhost *vh,
const lws_token_map_t *token_map);
int (*close)(lws_abs_user_t *d);
int (*ask_for_writeable)(lws_abs_user_t *d);
int (*set_timeout)(lws_abs_user_t *d, int reason, int secs);
int (*state)(lws_abs_user_t *d);
/* events the abstract protocol invokes (handled by transport) */
/* events the transport invokes (filled in by abstract object) */
int (*tx)(lws_abs_transport_inst_t *d, uint8_t *buf, size_t len);
int (*client_conn)(const lws_abs_t *abs);
int (*close)(lws_abs_transport_inst_t *d);
int (*ask_for_writeable)(lws_abs_transport_inst_t *d);
int (*set_timeout)(lws_abs_transport_inst_t *d, int reason, int secs);
int (*state)(lws_abs_transport_inst_t *d);
} lws_abs_transport_t;
int (*accept)(lws_abs_user_t *d);
int (*rx)(lws_abs_user_t *d, uint8_t *buf, size_t len);
int (*writeable)(lws_abs_user_t *d, size_t budget);
int (*closed)(lws_abs_user_t *d);
int (*heartbeat)(lws_abs_user_t *d);
/**
* lws_abs_protocol_get_by_name() - returns a pointer to the named protocol ops
*
* \param name: the name of the abstract protocol
*
* Returns a pointer to the named protocol ops struct if available, otherwise
* NULL.
*/
LWS_VISIBLE LWS_EXTERN const lws_abs_transport_t *
lws_abs_transport_get_by_name(const char *name);
} lws_abstract_t;
/*
* bring in public api pieces from transports
*/
LWS_VISIBLE LWS_EXTERN void
lws_abstract_copy(lws_abstract_t *dest, const lws_abstract_t *src);
LWS_VISIBLE LWS_EXTERN const lws_abstract_t *
lws_abstract_get_by_name(const char *name);
LWS_VISIBLE LWS_EXTERN const lws_token_map_t *
lws_abstract_get_token(const lws_token_map_t *token_map, short name_index);
#include <libwebsockets/abstract/transports/raw-skt.h>
#include <libwebsockets/abstract/transports/unit-test.h>

View file

@ -0,0 +1,26 @@
/*
* libwebsockets - raw-skt abstract transport
*
* Copyright (C) 2019 Andy Green <andy@warmcat.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation:
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
enum {
LTMI_PEER_V_DNS_ADDRESS = LTMI_TRANSPORT_BASE, /* u.value */
LTMI_PEER_LV_PORT, /* u.lvalue */
LTMI_PEER_LV_TLS_FLAGS, /* u.lvalue */
};

View file

@ -0,0 +1,54 @@
/*
* libwebsockets include/libwebsockets/abstract/transports/unit-test.c
*
* Copyright (C) 2019 Andy Green <andy@warmcat.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation:
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
enum {
LWS_AUT_EXPECT_TEST_END = (1 << 0),
LWS_AUT_EXPECT_LOCAL_CLOSE = (1 << 1),
LWS_AUT_EXPECT_DO_REMOTE_CLOSE = (1 << 2),
LWS_AUT_EXPECT_TX /* expect this as tx from protocol */ = (1 << 3),
LWS_AUT_EXPECT_RX /* present this as rx to protocol */ = (1 << 4),
};
typedef enum {
LPE_CONTINUE,
LPE_SUCCEEDED,
LPE_FAILED,
} lws_expect_disposition;
typedef struct lws_expect {
void *buffer;
size_t len;
uint32_t flags;
} lws_expect_t;
typedef int (*lws_expect_test_instance_init)(lws_abs_t *instance);
typedef struct lws_expect_test {
const char *name; /* NULL indicates end of test array */
lws_expect_t *expect;
lws_expect_test_instance_init *init;
} lws_expect_test_t;
enum {
LTMI_PEER_V_EXPECT_TEST = LTMI_TRANSPORT_BASE, /* u.value */
LTMI_PEER_V_EXPECT_TEST_ARRAY, /* u.value */
};

View file

@ -11,11 +11,21 @@ details from protocol specification, lws now supports
![lws_abstract overview](/doc-assets/abstract-overview.svg)
The concept is that the abstract protocol implementation only
operates on callback events and reads and writes to buffers...
separately when it is instantiated, it can be bound to an
"abstract transport" which handles all the details of sending
and receiving on whatever the transport is.
The concept is that the implementation is split into two separate
chunks of code hidden behind "ops" structs... the "abstract protocol"
implementation is responsible for the logical protocol operation
and reads and writes only memory buffers.
The "abstract transport" implementation is responsible for sending
and receiving buffers on some kind of transport, and again is hidden
behind a standardized ops struct.
In the system, both the abstract protocols and transports are
found by their name.
An actual "connection" is created by calling a generic api
`lws_abs_bind_and_create_instance()` to instantiate the
combination of a protocol and a transport.
This makes it possible to confidently offer the same protocol on
completely different transports, eg, like serial, or to wire
@ -25,26 +35,42 @@ any network. The abstract protocol itself has no relationship
to the transport at all and is completely unchanged by changes
to the transport.
In addition, generic tokens to control settings in both the
protocol and the transport are passed in at instantiation-time,
eg, controlling the IP address targeted by the transport.
lws SMTP client support has been rewritten to use the new scheme,
and lws provides a raw socket transport built-in.
## Public API
The public api for defining abstract protocols and transports is
found at [transports.h](https://libwebsockets.org/git/libwebsockets/tree/include/libwebsockets/abstract/transports.h)
found at
### `lws_abstract_t`
- [abstract.h](https://libwebsockets.org/git/libwebsockets/tree/include/libwebsockets/abstract/abstract.h)
- [protocols.h](https://libwebsockets.org/git/libwebsockets/tree/include/libwebsockets/abstract/protocols.h)
- [transports.h](https://libwebsockets.org/git/libwebsockets/tree/include/libwebsockets/abstract/transports.h)
The main structure that defines the abstraction is `lws_abstract_t`,
this is a name and then about a dozen function pointers for various
events and operations.
### `lws_abs_t`
The transport defines about half of these and exports this
`lws_abstract_t *` via its name, it can be retreived using
The main structure that defines the abstraction is `lws_abs_t`,
this is a name and then pointers to the protocol and transport,
optional tokens to control both the protocol and transport,
and pointers to private allocations for both the
protocol and transport when instantiated.
The transport is selected using
```
LWS_VISIBLE LWS_EXTERN const lws_abstract_t *
lws_abstract_get_by_name(const char *name);
LWS_VISIBLE LWS_EXTERN const lws_abs_transport_t *
lws_abs_transport_get_by_name(const char *name);
```
and similarly the protocol by
```
LWS_VISIBLE LWS_EXTERN const lws_abs_protocol_t *
lws_abs_protocol_get_by_name(const char *name);
```
At the moment only "`raw-skt`" is defined as an lws built-in, athough
@ -63,11 +89,6 @@ test jigs.
These are called by the protocol to get things done and make queries
through the abstract transport.
When you instantiate an abstract protocol, it defines the other half of
the `lws_abstract_t` operations and is combined with the transport
`lws_abstract_t *` to get the full set of operations necessary for the
protocol to operate on the transport.
|protocol op|meaning|
|---|---|
|`accept()`|The peer has accepted the transport connection|
@ -79,6 +100,12 @@ protocol to operate on the transport.
These are called by the transport to inform the protocol of events
and traffic.
### Instantiation
The user fills an lws_abs_t and passes a pointer to it to
`lws_abs_bind_and_create_instance()` to create an instantiation
of the protocol + transport.
### `lws_token_map_t`
The abstract protocol has no idea about a network or network addresses
@ -101,3 +128,28 @@ static const lws_token_map_t smtp_abs_tokens[] = {
}};
```
## Steps for adding new abstract protocols
- add the public header in `./include/libwebsockets/abstract/protocols/`
- add a directory under `./lib/abstract/protocols/`
- add your protocol sources in the new directory
- in CMakeLists.txt:
- add an `LWS_WITH_xxx` for your protocol
- search for "using any abstract protocol" and add your `LWS_WITH_xxx` to
the if so it also sets `LWS_WITH_ABSTRACT` if any set
- add a clause to append your source to SOURCES if `LWS_WITH_xxx` enabled
- add your `lws_abs_protocol` to the list `available_abs_protocols` in
`./lib/abstract/abstract.c`
## Steps for adding new abstract transports
- add the public header in `./include/libwebsockets/abstract/transports/`
- add your transport sources under `./lib/abstract/transports/`
- in CMakeLists.txt append your transport sources to SOURCES if `LWS_WITH_ABSTRACT`
and any other cmake conditionals
- add an extern for your transport `lws_protocols` in `./lib/core-net/private.h`
- add your transport `lws_protocols` to `available_abstract_protocols` in
`./lib/core-net/vhost.c`
- add your `lws_abs_transport` to the list `available_abs_transports` in
`./lib/abstract/abstract.c`

View file

@ -22,37 +22,57 @@
#include <core/private.h>
#include <abstract/private.h>
extern lws_abstract_t lws_abstract_transport_cli_raw_skt;
extern const lws_abs_transport_t lws_abs_transport_cli_raw_skt,
lws_abs_transport_cli_unit_test;
#if defined(LWS_WITH_SMTP)
extern const lws_abs_protocol_t lws_abs_protocol_smtp;
#endif
static const lws_abstract_t *available_abstractions[] = {
&lws_abstract_transport_cli_raw_skt,
static const lws_abs_transport_t * const available_abs_transports[] = {
&lws_abs_transport_cli_raw_skt,
&lws_abs_transport_cli_unit_test,
};
/*
* the definition is opaque, so a helper to copy it into place
*/
/* HACK: microsoft compiler can't handle zero length array definition */
#if defined(LWS_WITH_SMTP)
static const lws_abs_protocol_t * const available_abs_protocols[] = {
#if defined(LWS_WITH_SMTP)
&lws_abs_protocol_smtp,
#endif
};
#endif
void
lws_abstract_copy(lws_abstract_t *dest, const lws_abstract_t *src)
{
memcpy(dest, src, sizeof(*dest));
}
const lws_abstract_t *
lws_abstract_get_by_name(const char *name)
const lws_abs_transport_t *
lws_abs_transport_get_by_name(const char *name)
{
int n;
for (n = 0; n < (int)LWS_ARRAY_SIZE(available_abstractions); n++)
if (!strcmp(name, available_abstractions[n]->name))
return available_abstractions[n];
for (n = 0; n < (int)LWS_ARRAY_SIZE(available_abs_transports); n++)
if (!strcmp(name, available_abs_transports[n]->name))
return available_abs_transports[n];
lwsl_err("%s: cannot find '%s'\n", __func__, name);
return NULL;
}
const lws_abs_protocol_t *
lws_abs_protocol_get_by_name(const char *name)
{
#if defined(LWS_WITH_SMTP)
int n;
for (n = 0; n < (int)LWS_ARRAY_SIZE(available_abs_protocols); n++)
if (!strcmp(name, available_abs_protocols[n]->name))
return available_abs_protocols[n];
#endif
lwsl_err("%s: cannot find '%s'\n", __func__, name);
return NULL;
}
const lws_token_map_t *
lws_abstract_get_token(const lws_token_map_t *token_map, short name_index)
lws_abs_get_token(const lws_token_map_t *token_map, short name_index)
{
if (!token_map)
return NULL;
@ -65,3 +85,61 @@ lws_abstract_get_token(const lws_token_map_t *token_map, short name_index)
return NULL;
}
void
lws_abs_destroy_instance(lws_abs_t **ai)
{
if ((*ai)->api)
(*ai)->ap->destroy(&(*ai)->api);
if ((*ai)->ati)
(*ai)->at->destroy(&(*ai)->ati);
lws_dll2_remove(&(*ai)->abstract_instances);
free(*ai);
*ai = NULL;
}
lws_abs_t *
lws_abs_bind_and_create_instance(const lws_abs_t *abs)
{
size_t size = sizeof(lws_abs_t) + abs->ap->alloc + abs->at->alloc;
lws_abs_t *ai;
/*
* since we know we will allocate the lws_abs_t, the protocol's
* instance allocation, and the transport's instance allocation,
* we merge it into a single heap allocation
*/
ai = lws_malloc(size, "abs inst");
if (!ai)
return NULL;
*ai = *abs;
ai->ati = NULL;
ai->api = (char *)ai + sizeof(lws_abs_t);
if (ai->ap->create(ai)) {
ai->api = NULL;
goto bail;
}
ai->ati = (char *)ai->api + abs->ap->alloc;
if (ai->at->create(ai)) {
ai->ati = NULL;
goto bail;
}
/* add us to the vhost's dll2 of instances */
lws_dll2_clear(&ai->abstract_instances);
lws_dll2_add_head(&ai->abstract_instances,
&ai->vh->abstract_instances_owner);
return ai;
bail:
lws_abs_destroy_instance(&ai);
return NULL;
}

View file

@ -20,7 +20,40 @@
*/
#include "core/private.h"
#include "abstract/smtp/private.h"
#include "abstract/private.h"
/** enum lwsgs_smtp_states - where we are in SMTP protocol sequence */
typedef enum lwsgs_smtp_states {
LGSSMTP_IDLE, /**< awaiting new email */
LGSSMTP_CONNECTING, /**< opening tcp connection to MTA */
LGSSMTP_CONNECTED, /**< tcp connection to MTA is connected */
LGSSMTP_SENT_HELO, /**< sent the HELO */
LGSSMTP_SENT_FROM, /**< sent FROM */
LGSSMTP_SENT_TO, /**< sent TO */
LGSSMTP_SENT_DATA, /**< sent DATA request */
LGSSMTP_SENT_BODY, /**< sent the email body */
LGSSMTP_SENT_QUIT, /**< sent the session quit */
} lwsgs_smtp_states_t;
/** struct lws_email - abstract context for performing SMTP operations */
typedef struct lws_smtp_client {
struct lws_dll2_owner pending_owner;
const struct lws_abs *abs;
const char *helo;
lwsgs_smtp_states_t estate;
time_t email_connect_started;
time_t retry_interval;
time_t delivery_timeout;
size_t email_queue_max;
size_t max_content_size;
unsigned char send_pending:1;
} lws_smtp_client_t;
static const short retcodes[] = {
0, /* idle */
@ -41,8 +74,8 @@ lws_smtp_client_state_transition(lws_smtp_client_t *c, lwsgs_smtp_states_t s)
c->estate = s;
}
void
lws_smtp_client_kick(lws_smtp_client_t *c)
static void
lws_smtp_client_kick_internal(lws_smtp_client_t *c)
{
lws_smtp_email_t *e;
lws_dll2_t *d;
@ -63,7 +96,7 @@ again:
/* do we need to time out this guy? */
if ((time_t)lws_now_secs() - e->added > (time_t)c->i.delivery_timeout) {
if ((time_t)lws_now_secs() - e->added > (time_t)c->delivery_timeout) {
lwsl_err("%s: timing out email\n", __func__);
lws_dll2_remove(&e->list);
n = lws_snprintf(buf, sizeof(buf), "0 Timed out retrying send");
@ -78,21 +111,21 @@ again:
/* is it time for his retry yet? */
if (e->last_try &&
(time_t)lws_now_secs() - e->last_try < (time_t)c->i.retry_interval) {
(time_t)lws_now_secs() - e->last_try < (time_t)c->retry_interval) {
/* no... send him to the tail */
lws_dll2_remove(&e->list);
lws_dll2_add_tail(&e->list, &c->pending_owner);
return;
}
/* check if we have a connection to the server ongoing */
/* ask the transport if we have a connection to the server ongoing */
if (c->abs.state(c->abs_conn)) {
if (c->abs->at->state(c->abs->ati)) {
/*
* there's a connection, it could be still trying to connect
* or established
*/
c->abs.ask_for_writeable(c->abs_conn);
c->abs->at->ask_for_writeable(c->abs->ati);
return;
}
@ -101,7 +134,7 @@ again:
lws_smtp_client_state_transition(c, LGSSMTP_CONNECTING);
if (c->abs.client_conn(c->abs_conn, c->i.vh, c->i.abs_tokens)) {
if (c->abs->at->client_conn(c->abs)) {
lwsl_err("%s: failed to connect\n", __func__);
return;
@ -116,9 +149,9 @@ again:
*/
static int
lws_smtp_client_abs_accept(lws_abs_user_t *abs_priv)
lws_smtp_client_abs_accept(lws_abs_protocol_inst_t *api)
{
lws_smtp_client_t *c = (lws_smtp_client_t *)abs_priv;
lws_smtp_client_t *c = (lws_smtp_client_t *)api;
lws_smtp_client_state_transition(c, LGSSMTP_CONNECTED);
@ -126,9 +159,9 @@ lws_smtp_client_abs_accept(lws_abs_user_t *abs_priv)
}
static int
lws_smtp_client_abs_rx(lws_abs_user_t *abs_priv, uint8_t *buf, size_t len)
lws_smtp_client_abs_rx(lws_abs_protocol_inst_t *api, uint8_t *buf, size_t len)
{
lws_smtp_client_t *c = (lws_smtp_client_t *)abs_priv;
lws_smtp_client_t *c = (lws_smtp_client_t *)api;
lws_smtp_email_t *e;
lws_dll2_t *pd2;
int n;
@ -151,7 +184,7 @@ lws_smtp_client_abs_rx(lws_abs_user_t *abs_priv, uint8_t *buf, size_t len)
lws_dll2_remove(&e->list);
lws_dll2_add_tail(&e->list, &c->pending_owner);
lws_smtp_client_state_transition(c, LGSSMTP_IDLE);
lws_smtp_client_kick(c);
lws_smtp_client_kick_internal(c);
return 0;
}
@ -168,15 +201,15 @@ lws_smtp_client_abs_rx(lws_abs_user_t *abs_priv, uint8_t *buf, size_t len)
}
c->send_pending = 1;
c->abs.ask_for_writeable(c->abs_conn);
c->abs->at->ask_for_writeable(c->abs->ati);
return 0;
}
static int
lws_smtp_client_abs_writeable(lws_abs_user_t *abs_priv, size_t budget)
lws_smtp_client_abs_writeable(lws_abs_protocol_inst_t *api, size_t budget)
{
lws_smtp_client_t *c = (lws_smtp_client_t *)abs_priv;
lws_smtp_client_t *c = (lws_smtp_client_t *)api;
char b[256 + LWS_PRE], *p = b + LWS_PRE;
lws_smtp_email_t *e;
lws_dll2_t *pd2;
@ -200,7 +233,7 @@ lws_smtp_client_abs_writeable(lws_abs_user_t *abs_priv, size_t budget)
switch (c->estate) {
case LGSSMTP_CONNECTED:
n = lws_snprintf(p, sizeof(b) - LWS_PRE, "HELO %s\n", c->i.helo);
n = lws_snprintf(p, sizeof(b) - LWS_PRE, "HELO %s\n", c->helo);
lws_smtp_client_state_transition(c, LGSSMTP_SENT_HELO);
break;
case LGSSMTP_SENT_HELO:
@ -234,27 +267,28 @@ lws_smtp_client_abs_writeable(lws_abs_user_t *abs_priv, size_t budget)
}
//puts(p);
c->abs.tx(c->abs_conn, (uint8_t *)p, n);
c->abs->at->tx(c->abs->ati, (uint8_t *)p, n);
return 0;
}
static int
lws_smtp_client_abs_closed(lws_abs_user_t *abs_priv)
lws_smtp_client_abs_closed(lws_abs_protocol_inst_t *api)
{
lws_smtp_client_t *c = (lws_smtp_client_t *)abs_priv;
lws_smtp_client_t *c = (lws_smtp_client_t *)api;
c->abs_conn = NULL;
if (c)
lws_smtp_client_state_transition(c, LGSSMTP_IDLE);
return 0;
}
static int
lws_smtp_client_abs_heartbeat(lws_abs_user_t *abs_priv)
lws_smtp_client_abs_heartbeat(lws_abs_protocol_inst_t *api)
{
lws_smtp_client_t *c = (lws_smtp_client_t *)abs_priv;
lws_smtp_client_t *c = (lws_smtp_client_t *)api;
lws_smtp_client_kick(c);
lws_smtp_client_kick_internal(c);
return 0;
}
@ -302,11 +336,13 @@ lws_smtp_client_alloc_email_helper(const char *payload, size_t payload_len,
}
int
lws_smtp_client_add_email(lws_smtp_client_t *c, lws_smtp_email_t *e)
lws_smtp_client_add_email(lws_abs_t *instance, lws_smtp_email_t *e)
{
if (c->pending_owner.count > c->i.email_queue_max) {
lws_smtp_client_t *c = (lws_smtp_client_t *)instance->api;
if (c->pending_owner.count > c->email_queue_max) {
lwsl_err("%s: email queue at limit of %d\n", __func__,
(int)c->i.email_queue_max);
(int)c->email_queue_max);
return 1;
}
@ -318,50 +354,53 @@ lws_smtp_client_add_email(lws_smtp_client_t *c, lws_smtp_email_t *e)
lws_dll2_clear(&e->list);
lws_dll2_add_tail(&e->list, &c->pending_owner);
lws_smtp_client_kick(c);
lws_smtp_client_kick_internal(c);
return 0;
}
lws_smtp_client_t *
lws_smtp_client_create(const lws_smtp_client_info_t *ci)
void
lws_smtp_client_kick(lws_abs_t *instance)
{
lws_smtp_client_t *c;
lws_smtp_client_t *c = (lws_smtp_client_t *)instance->api;
c = lws_zalloc(sizeof(*c), "email client");
if (!c)
return NULL;
lws_smtp_client_kick_internal(c);
}
static int
lws_smtp_client_create(const lws_abs_t *ai)
{
lws_smtp_client_t *c = (lws_smtp_client_t *)ai->api;
const lws_token_map_t *tm;
c->i = *ci;
c->abs = *ci->abs;
memset(c, 0, sizeof(*c));
/* fill in the additional abstract callbacks we fulfil */
c->abs = ai;
c->abs.accept = lws_smtp_client_abs_accept;
c->abs.rx = lws_smtp_client_abs_rx;
c->abs.writeable = lws_smtp_client_abs_writeable;
c->abs.closed = lws_smtp_client_abs_closed;
c->abs.heartbeat = lws_smtp_client_abs_heartbeat;
tm = lws_abs_get_token(ai->ap_tokens, LTMI_PSMTP_V_HELO);
if (!tm) {
lwsl_err("%s: LTMI_PSMTP_V_HELO is required\n", __func__);
if (!c->i.email_queue_max)
c->i.email_queue_max = 8;
if (!c->i.retry_interval)
c->i.retry_interval = 15 * 60;
if (!c->i.delivery_timeout)
c->i.delivery_timeout = 12 * 60 * 60;
c->abs_conn = c->abs.create(&c->abs, c);
if (!c->abs_conn) {
lws_free(c);
return NULL;
return 1;
}
c->helo = tm->u.value;
c->email_queue_max = 8;
c->retry_interval = 15 * 60;
c->delivery_timeout = 12 * 60 * 60;
tm = lws_abs_get_token(ai->ap_tokens, LTMI_PSMTP_LV_EMAIL_QUEUE_MAX);
if (tm)
c->email_queue_max = tm->u.lvalue;
tm = lws_abs_get_token(ai->ap_tokens, LTMI_PSMTP_LV_RETRY_INTERVAL);
if (tm)
c->retry_interval = tm->u.lvalue;
tm = lws_abs_get_token(ai->ap_tokens, LTMI_PSMTP_LV_DELIVERY_TIMEOUT);
if (tm)
c->delivery_timeout = tm->u.lvalue;
lws_smtp_client_state_transition(c, LGSSMTP_IDLE);
return c;
return 0;
}
static int
@ -376,18 +415,37 @@ cleanup(struct lws_dll2 *d, void *user)
return 0;
}
void
lws_smtp_client_destroy(lws_smtp_client_t **c)
static void
lws_smtp_client_destroy(lws_abs_protocol_inst_t **_c)
{
if (!*c)
lws_smtp_client_t *c = (lws_smtp_client_t *)*_c;
if (!c)
return;
lws_dll2_foreach_safe(&(*c)->pending_owner, NULL, cleanup);
lws_dll2_foreach_safe(&c->pending_owner, NULL, cleanup);
if ((*c)->abs_conn) {
(*c)->abs.close((*c)->abs_conn);
(*c)->abs.destroy(&(*c)->abs_conn);
}
/*
* We don't free anything because the abstract layer combined our
* allocation with that of the instance, and it will free the whole
* thing after this.
*/
lws_free_set_NULL(*c);
*_c = NULL;
}
/* events the transport invokes (handled by abstract protocol) */
const lws_abs_protocol_t lws_abs_protocol_smtp = {
.name = "smtp",
.alloc = sizeof(lws_smtp_client_t),
.create = lws_smtp_client_create,
.destroy = lws_smtp_client_destroy,
.accept = lws_smtp_client_abs_accept,
.rx = lws_smtp_client_abs_rx,
.writeable = lws_smtp_client_abs_writeable,
.closed = lws_smtp_client_abs_closed,
.heartbeat = lws_smtp_client_abs_heartbeat,
};

View file

@ -1,51 +0,0 @@
/*
* libwebsockets lib/abstruct/smtp/private.h
*
* Copyright (C) 2019 Andy Green <andy@warmcat.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation:
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
#include "abstract/private.h"
/** enum lwsgs_smtp_states - where we are in SMTP protocol sequence */
typedef enum lwsgs_smtp_states {
LGSSMTP_IDLE, /**< awaiting new email */
LGSSMTP_CONNECTING, /**< opening tcp connection to MTA */
LGSSMTP_CONNECTED, /**< tcp connection to MTA is connected */
LGSSMTP_SENT_HELO, /**< sent the HELO */
LGSSMTP_SENT_FROM, /**< sent FROM */
LGSSMTP_SENT_TO, /**< sent TO */
LGSSMTP_SENT_DATA, /**< sent DATA request */
LGSSMTP_SENT_BODY, /**< sent the email body */
LGSSMTP_SENT_QUIT, /**< sent the session quit */
} lwsgs_smtp_states_t;
/** struct lws_email - abstract context for performing SMTP operations */
typedef struct lws_smtp_client {
struct lws_dll2_owner pending_owner;
lws_smtp_client_info_t i;
lws_abstract_t abs;
lws_abs_user_t *abs_conn;
lwsgs_smtp_states_t estate;
time_t email_connect_started;
unsigned char send_pending:1;
} lws_smtp_client_t;

View file

@ -1,5 +1,5 @@
/*
* libwebsockets lib/abstruct/transports/raw-skt.c
* libwebsockets lib/abstract/transports/raw-skt.c
*
* Copyright (C) 2019 Andy Green <andy@warmcat.com>
*
@ -22,16 +22,15 @@
#include "core/private.h"
#include "abstract/private.h"
typedef struct lws_atrs_priv {
struct lws_abstract *abs;
typedef struct lws_abstxp_raw_skt_priv {
struct lws_abs *abs;
struct lws *wsi;
void *user;
lws_dll2_t same_abs_transport_list;
uint8_t established:1;
uint8_t connecting:1;
} lws_atrs_priv_t;
} abs_raw_skt_priv_t;
struct vhd {
lws_dll2_owner_t owner;
@ -40,10 +39,11 @@ struct vhd {
static int
heartbeat_cb(struct lws_dll2 *d, void *user)
{
lws_atrs_priv_t *priv = lws_container_of(d, lws_atrs_priv_t,
same_abs_transport_list);
if (priv->abs->heartbeat)
priv->abs->heartbeat(priv->user);
abs_raw_skt_priv_t *priv = lws_container_of(d, abs_raw_skt_priv_t,
same_abs_transport_list);
if (priv->abs->ap->heartbeat)
priv->abs->ap->heartbeat(priv->abs->api);
return 0;
}
@ -52,7 +52,7 @@ static int
callback_abs_client_raw_skt(struct lws *wsi, enum lws_callback_reasons reason,
void *user, void *in, size_t len)
{
lws_atrs_priv_t *priv = (lws_atrs_priv_t *)user;
abs_raw_skt_priv_t *priv = (abs_raw_skt_priv_t *)user;
struct vhd *vhd = (struct vhd *)
lws_protocol_vh_priv_get(lws_get_vhost(wsi),
lws_get_protocol(wsi));
@ -89,8 +89,8 @@ callback_abs_client_raw_skt(struct lws *wsi, enum lws_callback_reasons reason,
lwsl_debug("LWS_CALLBACK_RAW_CONNECTED\n");
priv->connecting = 0;
priv->established = 1;
if (priv->abs->accept)
priv->abs->accept(priv->user);
if (priv->abs->ap->accept)
priv->abs->ap->accept(priv->abs->api);
break;
case LWS_CALLBACK_CLIENT_CONNECTION_ERROR:
@ -105,19 +105,18 @@ callback_abs_client_raw_skt(struct lws *wsi, enum lws_callback_reasons reason,
lwsl_debug("LWS_CALLBACK_RAW_CLOSE\n");
priv->established = 0;
priv->connecting = 0;
if (priv->abs && priv->abs->closed)
priv->abs->closed(priv->user);
lws_free(priv);
if (priv->abs && priv->abs->ap->closed)
priv->abs->ap->closed(priv->abs->api);
lws_set_wsi_user(wsi, NULL);
break;
case LWS_CALLBACK_RAW_RX:
lwsl_debug("LWS_CALLBACK_RAW_RX (%d)\n", (int)len);
return !!priv->abs->rx(priv->user, in, len);
return !!priv->abs->ap->rx(priv->abs->api, in, len);
case LWS_CALLBACK_RAW_WRITEABLE:
lwsl_debug("LWS_CALLBACK_RAW_WRITEABLE\n");
priv->abs->writeable(priv->user,
priv->abs->ap->writeable(priv->abs->api,
lws_get_peer_write_allowance(priv->wsi));
break;
@ -136,103 +135,10 @@ callback_abs_client_raw_skt(struct lws *wsi, enum lws_callback_reasons reason,
return 0;
}
const struct lws_protocols protocol_abs_client_raw_skt = {
"lws-abs-cli-raw-skt", callback_abs_client_raw_skt,
0, 1024, 1024, NULL, 0
};
static int
lws_atcrs_tx(lws_abs_user_t *abs_priv, uint8_t *buf, size_t len)
lws_atcrs_close(lws_abs_transport_inst_t *ati)
{
lws_atrs_priv_t *priv = (lws_atrs_priv_t *)abs_priv;
if (!priv->wsi) {
lwsl_err("%s: NULL priv->wsi\n", __func__);
return 1;
}
lwsl_debug("%s: priv %p, wsi %p, ro %p\n", __func__,
priv, priv->wsi, priv->wsi->role_ops);
if (lws_write(priv->wsi, buf, len, LWS_WRITE_RAW) < 0)
priv->abs->close(priv->user);
return 0;
}
#if !defined(LWS_WITHOUT_CLIENT)
static int
lws_atcrs_client_conn(lws_abs_user_t *abs_priv, struct lws_vhost *vh,
const lws_token_map_t *token_map)
{
lws_atrs_priv_t *priv = (lws_atrs_priv_t *)abs_priv;
struct lws_client_connect_info i;
const lws_token_map_t *tm;
if (priv->connecting)
return 0;
if (priv->established) {
lws_set_timeout(priv->wsi, PENDING_TIMEOUT_CLIENT_CONN_IDLE, 5);
return 0;
}
memset(&i, 0, sizeof(i));
/* address and port are passed-in using the abstract transport tokens */
tm = lws_abstract_get_token(token_map, LTMI_PEER_DNS_ADDRESS);
if (!tm) {
lwsl_notice("%s: raw_skt needs LTMI_PEER_DNS_ADDRESS\n",
__func__);
return 1;
}
i.address = tm->u.value;
tm = lws_abstract_get_token(token_map, LTMI_PEER_PORT);
if (!tm) {
lwsl_notice("%s: raw_skt needs LTMI_PEER_PORT\n", __func__);
return 1;
}
i.port = tm->u.lvalue;
/* optional */
i.ssl_connection = 0;
tm = lws_abstract_get_token(token_map, LTMI_PEER_TLS_FLAGS);
if (tm)
i.ssl_connection = tm->u.lvalue;
lwsl_debug("%s: raw_skt priv %p connecting to %s:%u %p\n",
__func__, priv, i.address, i.port, vh->context);
i.path = "";
i.vhost = vh;
i.method = "RAW";
i.userdata = priv;
i.host = i.address;
i.pwsi = &priv->wsi;
i.origin = i.address;
i.context = vh->context;
i.local_protocol_name = "lws-abs-cli-raw-skt";
priv->wsi = lws_client_connect_via_info(&i);
if (!priv->wsi)
return 1;
priv->connecting = 1;
return 0;
}
#endif
static int
lws_atcrs_close(lws_abs_user_t *abs_priv)
{
lws_atrs_priv_t *priv = (lws_atrs_priv_t *)abs_priv;
abs_raw_skt_priv_t *priv = (abs_raw_skt_priv_t *)ati;
struct lws *wsi = priv->wsi;
if (!priv->wsi)
@ -249,10 +155,103 @@ lws_atcrs_close(lws_abs_user_t *abs_priv)
return 0;
}
const struct lws_protocols protocol_abs_client_raw_skt = {
"lws-abs-cli-raw-skt", callback_abs_client_raw_skt,
0, 1024, 1024, NULL, 0
};
static int
lws_atcrs_ask_for_writeable(lws_abs_user_t *abs_priv)
lws_atcrs_tx(lws_abs_transport_inst_t *ati, uint8_t *buf, size_t len)
{
lws_atrs_priv_t *priv = (lws_atrs_priv_t *)abs_priv;
abs_raw_skt_priv_t *priv = (abs_raw_skt_priv_t *)ati;
if (!priv->wsi) {
lwsl_err("%s: NULL priv->wsi\n", __func__);
return 1;
}
lwsl_debug("%s: priv %p, wsi %p, ro %p\n", __func__,
priv, priv->wsi, priv->wsi->role_ops);
if (lws_write(priv->wsi, buf, len, LWS_WRITE_RAW) < 0)
lws_atcrs_close(ati);
return 0;
}
#if !defined(LWS_WITHOUT_CLIENT)
static int
lws_atcrs_client_conn(const lws_abs_t *abs)
{
abs_raw_skt_priv_t *priv = (abs_raw_skt_priv_t *)abs->ati;
struct lws_client_connect_info i;
const lws_token_map_t *tm;
if (priv->connecting)
return 0;
if (priv->established) {
lws_set_timeout(priv->wsi, PENDING_TIMEOUT_CLIENT_CONN_IDLE, 5);
return 0;
}
memset(&i, 0, sizeof(i));
/* address and port are passed-in using the abstract transport tokens */
tm = lws_abs_get_token(abs->at_tokens, LTMI_PEER_V_DNS_ADDRESS);
if (!tm) {
lwsl_notice("%s: raw_skt needs LTMI_PEER_V_DNS_ADDRESS\n",
__func__);
return 1;
}
i.address = tm->u.value;
tm = lws_abs_get_token(abs->at_tokens, LTMI_PEER_LV_PORT);
if (!tm) {
lwsl_notice("%s: raw_skt needs LTMI_PEER_LV_PORT\n", __func__);
return 1;
}
i.port = tm->u.lvalue;
/* optional */
i.ssl_connection = 0;
tm = lws_abs_get_token(abs->at_tokens, LTMI_PEER_LV_TLS_FLAGS);
if (tm)
i.ssl_connection = tm->u.lvalue;
lwsl_debug("%s: raw_skt priv %p connecting to %s:%u %p\n",
__func__, priv, i.address, i.port, abs->vh->context);
i.path = "";
i.method = "RAW";
i.vhost = abs->vh;
i.userdata = priv;
i.host = i.address;
i.pwsi = &priv->wsi;
i.origin = i.address;
i.context = abs->vh->context;
i.local_protocol_name = "lws-abs-cli-raw-skt";
priv->wsi = lws_client_connect_via_info(&i);
if (!priv->wsi)
return 1;
priv->connecting = 1;
return 0;
}
#endif
static int
lws_atcrs_ask_for_writeable(lws_abs_transport_inst_t *ati)
{
abs_raw_skt_priv_t *priv = (abs_raw_skt_priv_t *)ati;
if (!priv->wsi || !priv->established)
return 1;
@ -262,32 +261,32 @@ lws_atcrs_ask_for_writeable(lws_abs_user_t *abs_priv)
return 0;
}
static lws_abs_user_t *
lws_atcrs_create(struct lws_abstract *abs, void *user)
static int
lws_atcrs_create(struct lws_abs *ai)
{
lws_atrs_priv_t *p = lws_zalloc(sizeof(*p), __func__);
abs_raw_skt_priv_t *at = (abs_raw_skt_priv_t *)ai->ati;
if (!p)
return NULL;
memset(at, 0, sizeof(*at));
at->abs = ai;
lwsl_debug("%s: created priv %p\n", __func__, p);
p->abs = abs;
p->user = user;
return (lws_abs_user_t *)p;
return 0;
}
static void
lws_atcrs_destroy(lws_abs_user_t **abs_priv)
lws_atcrs_destroy(lws_abs_transport_inst_t **pati)
{
lws_free_set_NULL(*abs_priv);
/*
* We don't free anything because the abstract layer combined our
* allocation with that of the instance, and it will free the whole
* thing after this.
*/
*pati = NULL;
}
static int
lws_atcrs_set_timeout(lws_abs_user_t *d, int reason, int secs)
lws_atcrs_set_timeout(lws_abs_transport_inst_t *ati, int reason, int secs)
{
lws_atrs_priv_t *priv = (lws_atrs_priv_t *)d;
abs_raw_skt_priv_t *priv = (abs_raw_skt_priv_t *)ati;
lws_set_timeout(priv->wsi, reason, secs);
@ -295,9 +294,9 @@ lws_atcrs_set_timeout(lws_abs_user_t *d, int reason, int secs)
}
static int
lws_atcrs_state(lws_abs_user_t *abs_priv)
lws_atcrs_state(lws_abs_transport_inst_t *ati)
{
lws_atrs_priv_t *priv = (lws_atrs_priv_t *)abs_priv;
abs_raw_skt_priv_t *priv = (abs_raw_skt_priv_t *)ati;
if (!priv || !priv->wsi || (!priv->established && !priv->connecting))
return 0;
@ -305,29 +304,21 @@ lws_atcrs_state(lws_abs_user_t *abs_priv)
return 1;
}
lws_abstract_t lws_abstract_transport_cli_raw_skt = {
"raw-skt",
lws_atcrs_create,
lws_atcrs_destroy,
const lws_abs_transport_t lws_abs_transport_cli_raw_skt = {
.name = "raw_skt",
.alloc = sizeof(abs_raw_skt_priv_t),
lws_atcrs_tx,
.create = lws_atcrs_create,
.destroy = lws_atcrs_destroy,
.tx = lws_atcrs_tx,
#if defined(LWS_WITHOUT_CLIENT)
NULL,
.client_conn = NULL,
#else
lws_atcrs_client_conn,
.client_conn = lws_atcrs_client_conn,
#endif
lws_atcrs_close,
lws_atcrs_ask_for_writeable,
lws_atcrs_set_timeout,
lws_atcrs_state,
/*
* remaining callbacks must be defined by abstract object and are
* called by this protocol handler
*/
NULL, /* accept */
NULL, /* rx */
NULL, /* writeable */
NULL /* closed */
.close = lws_atcrs_close,
.ask_for_writeable = lws_atcrs_ask_for_writeable,
.set_timeout = lws_atcrs_set_timeout,
.state = lws_atcrs_state,
};

View file

@ -0,0 +1,419 @@
/*
* libwebsockets lib/abstract/transports/unit-test.c
*
* Copyright (C) 2019 Andy Green <andy@warmcat.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation:
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*
* An abstract transport that is useful for unit testing an abstract protocol.
* It doesn't actually connect to anything, but checks the protocol's response
* to various canned packets.
*
* Although it doesn't use any socket itself, it still needs to respect the
* event loop so it can reflect the associated behaviours correctly. So it
* creates a wsi for these purposes, which is a RAW FILE open on /dev/null.
*/
#include "core/private.h"
#include "abstract/private.h"
typedef struct lws_abstxp_unit_test_priv {
char note[128];
struct lws_abs *abs;
struct lws *wsi;
lws_expect_test_t *current_test;
lws_expect_t *expect;
lws_expect_disposition disposition;
int filefd;
lws_dll2_t same_abs_transport_list;
uint8_t established:1;
uint8_t connecting:1;
} abs_unit_test_priv_t;
struct vhd {
lws_dll2_owner_t owner;
};
/*
* A definitive result has appeared for the current test
*/
static lws_expect_disposition
lws_expect_dispose(abs_unit_test_priv_t *priv, lws_expect_disposition disp,
const char *note)
{
assert(priv->disposition == LPE_CONTINUE);
if (note)
lws_strncpy(priv->note, note, sizeof(priv->note));
priv->disposition = disp;
lwsl_user("%s: %s: test %d: %s\n", priv->abs->ap->name,
priv->current_test->name,
(int)(priv->expect - priv->current_test->expect),
disp == LPE_SUCCEEDED ? "OK" : "FAIL");
return disp;
}
/*
* start on the next step of the test
*/
lws_expect_disposition
process_expect(abs_unit_test_priv_t *priv)
{
assert(priv->disposition == LPE_CONTINUE);
while (priv->expect->flags & LWS_AUT_EXPECT_RX) {
int f = priv->expect->flags & LWS_AUT_EXPECT_LOCAL_CLOSE,
s = priv->abs->ap->rx(priv->abs->api, priv->expect->buffer,
priv->expect->len);
if (!!f != !!s) {
lwsl_notice("%s: expected rx return %d, got %d\n",
__func__, !!f, s);
return lws_expect_dispose(priv, LPE_FAILED,
"rx unexpected return");
}
if (priv->expect->flags & LWS_AUT_EXPECT_TEST_END)
return lws_expect_dispose(priv, LPE_SUCCEEDED, NULL);
priv->expect++;
}
return LPE_CONTINUE;
}
static int
heartbeat_cb(struct lws_dll2 *d, void *user)
{
abs_unit_test_priv_t *priv = lws_container_of(d, abs_unit_test_priv_t,
same_abs_transport_list);
if (priv->abs->ap->heartbeat)
priv->abs->ap->heartbeat(priv->abs->api);
return 0;
}
static int
callback_abs_client_unit_test(struct lws *wsi, enum lws_callback_reasons reason,
void *user, void *in, size_t len)
{
abs_unit_test_priv_t *priv = (abs_unit_test_priv_t *)user;
struct vhd *vhd = (struct vhd *)
lws_protocol_vh_priv_get(lws_get_vhost(wsi),
lws_get_protocol(wsi));
switch (reason) {
case LWS_CALLBACK_PROTOCOL_INIT:
vhd = lws_protocol_vh_priv_zalloc(lws_get_vhost(wsi),
lws_get_protocol(wsi), sizeof(struct vhd));
if (!vhd)
return 1;
lws_timed_callback_vh_protocol(lws_get_vhost(wsi),
lws_get_protocol(wsi),
LWS_CALLBACK_USER, 1);
break;
case LWS_CALLBACK_USER:
/*
* This comes at 1Hz without a wsi context, so there is no
* valid priv. We need to track the live abstract objects that
* are using our abstract protocol, and pass the heartbeat
* through to the ones that care.
*/
if (!vhd)
break;
lws_dll2_foreach_safe(&vhd->owner, NULL, heartbeat_cb);
lws_timed_callback_vh_protocol(lws_get_vhost(wsi),
lws_get_protocol(wsi),
LWS_CALLBACK_USER, 1);
break;
case LWS_CALLBACK_RAW_ADOPT_FILE:
lwsl_debug("LWS_CALLBACK_RAW_ADOPT_FILE\n");
priv->connecting = 0;
priv->established = 1;
if (priv->abs->ap->accept)
priv->abs->ap->accept(priv->abs->api);
break;
case LWS_CALLBACK_RAW_CLOSE_FILE:
if (!user)
break;
lwsl_debug("LWS_CALLBACK_RAW_CLOSE_FILE\n");
priv->established = 0;
priv->connecting = 0;
if (priv->abs && priv->abs->ap->closed)
priv->abs->ap->closed(priv->abs->api);
if (priv->filefd != -1)
close(priv->filefd);
priv->filefd = -1;
lws_set_wsi_user(wsi, NULL);
break;
case LWS_CALLBACK_RAW_WRITEABLE_FILE:
lwsl_debug("LWS_CALLBACK_RAW_WRITEABLE_FILE\n");
priv->abs->ap->writeable(priv->abs->api,
lws_get_peer_write_allowance(priv->wsi));
break;
case LWS_CALLBACK_RAW_FILE_BIND_PROTOCOL:
lws_dll2_add_tail(&priv->same_abs_transport_list, &vhd->owner);
break;
case LWS_CALLBACK_RAW_FILE_DROP_PROTOCOL:
lws_dll2_remove(&priv->same_abs_transport_list);
break;
default:
break;
}
return 0;
}
const struct lws_protocols protocol_abs_client_unit_test = {
"lws-abs-cli-unit-test", callback_abs_client_unit_test,
0, 1024, 1024, NULL, 0
};
static int
lws_atcut_close(lws_abs_transport_inst_t *ati)
{
abs_unit_test_priv_t *priv = (abs_unit_test_priv_t *)ati;
lws_set_timeout(priv->wsi, 1, LWS_TO_KILL_SYNC);
/* priv is destroyed in the CLOSE callback */
return 0;
}
static int
lws_atcut_tx(lws_abs_transport_inst_t *ati, uint8_t *buf, size_t len)
{
abs_unit_test_priv_t *priv = (abs_unit_test_priv_t *)ati;
assert(priv->disposition == LPE_CONTINUE);
if (!(priv->expect->flags & LWS_AUT_EXPECT_TX)) {
lwsl_notice("%s: unexpected tx\n", __func__);
lwsl_hexdump_notice(buf, len);
lws_expect_dispose(priv, LPE_FAILED, "unexpected tx");
return 1;
}
if (len != priv->expect->len) {
lwsl_notice("%s: unexpected tx len %zu, expected %zu\n",
__func__, len, priv->expect->len);
lws_expect_dispose(priv, LPE_FAILED, "tx len mismatch");
return 1;
}
if (memcmp(buf, priv->expect->buffer, len)) {
lwsl_notice("%s: tx mismatch (exp / actual)\n", __func__);
lwsl_hexdump_notice(priv->expect->buffer, len);
lwsl_hexdump_notice(buf, len);
lws_expect_dispose(priv, LPE_FAILED, "tx data mismatch");
return 1;
}
if (priv->expect->flags & LWS_AUT_EXPECT_TEST_END) {
lws_expect_dispose(priv, LPE_SUCCEEDED, NULL);
return 1;
}
priv->expect++;
return 0;
}
#if !defined(LWS_WITHOUT_CLIENT)
static int
lws_atcut_client_conn(const lws_abs_t *abs)
{
abs_unit_test_priv_t *priv = (abs_unit_test_priv_t *)abs->ati;
const lws_token_map_t *tm;
lws_sock_file_fd_type u;
/*
* we do this fresh for each test
*/
if (priv->connecting || priv->established)
return 0;
priv->filefd = lws_open("/dev/null", O_RDWR);
if (priv->filefd == -1) {
lwsl_err("%s: Unable to open /dev/null\n", __func__);
return 1;
}
u.filefd = (lws_filefd_type)(long long)priv->filefd;
if (!lws_adopt_descriptor_vhost(priv->abs->vh, LWS_ADOPT_RAW_FILE_DESC,
u, "unit-test", NULL)) {
lwsl_err("Failed to adopt file descriptor\n");
close(priv->filefd);
priv->filefd = -1;
return 1;
}
/* set up the test start pieces */
tm = lws_abs_get_token(abs->at_tokens, LTMI_PEER_V_EXPECT_TEST);
if (!tm) {
lwsl_notice("%s: unit_test needs LTMI_PEER_V_EXPECT_TEST\n",
__func__);
return 1;
}
priv->current_test = (lws_expect_test_t *)tm->u.value;
priv->expect = priv->current_test->expect;
priv->disposition = LPE_CONTINUE;
priv->note[0] = '\0';
lwsl_notice("%s: %s: %s: start\n", __func__, abs->ap->name,
priv->current_test->name);
process_expect(priv);
priv->connecting = 1;
return 0;
}
#endif
static int
lws_atcut_ask_for_writeable(lws_abs_transport_inst_t *ati)
{
abs_unit_test_priv_t *priv = (abs_unit_test_priv_t *)ati;
if (!priv->established)
return 1;
lws_callback_on_writable(priv->wsi);
return 0;
}
static int
lws_atcut_create(struct lws_abs *ai)
{
abs_unit_test_priv_t *at = (abs_unit_test_priv_t *)ai->ati;
memset(at, 0, sizeof(*at));
at->abs = ai;
return 0;
}
static void
lws_atcut_destroy(lws_abs_transport_inst_t **pati)
{
/*
* We don't free anything because the abstract layer combined our
* allocation with that of the instance, and it will free the whole
* thing after this.
*/
*pati = NULL;
}
static int
lws_atcut_set_timeout(lws_abs_transport_inst_t *ati, int reason, int secs)
{
abs_unit_test_priv_t *priv = (abs_unit_test_priv_t *)ati;
lws_set_timeout(priv->wsi, reason, secs);
return 0;
}
static int
lws_atcut_state(lws_abs_transport_inst_t *ati)
{
abs_unit_test_priv_t *priv = (abs_unit_test_priv_t *)ati;
if (!priv || (!priv->established && !priv->connecting))
return 0;
return 1;
}
const lws_abs_transport_t lws_abs_transport_cli_unit_test = {
.name = "unit_test",
.alloc = sizeof(abs_unit_test_priv_t),
.create = lws_atcut_create,
.destroy = lws_atcut_destroy,
.tx = lws_atcut_tx,
#if defined(LWS_WITHOUT_CLIENT)
.client_conn = NULL,
#else
.client_conn = lws_atcut_client_conn,
#endif
.close = lws_atcut_close,
.ask_for_writeable = lws_atcut_ask_for_writeable,
.set_timeout = lws_atcut_set_timeout,
.state = lws_atcut_state,
};
/*
* This goes through the test array instantiating a new protocol + transport
* for each test and keeping track of the results
*/
int
lws_abs_transport_unit_test_helper(lws_abs_t *abs)
{
lws_abs_t *instance;
const lws_token_map_t *tm;
tm = lws_abs_get_token(abs->at_tokens, LTMI_PEER_V_EXPECT_TEST_ARRAY);
if (!tm) {
lwsl_err("%s: LTMI_PEER_V_EXPECT_TEST_ARRAY is required\n",
__func__);
return 1;
}
//wh
instance = lws_abs_bind_and_create_instance(abs);
if (!instance) {
lwsl_err("%s: failed to create SMTP client\n", __func__);
return 1;
}
return 0;
}

View file

@ -428,6 +428,8 @@ struct lws_vhost {
const struct lws_protocol_vhost_options *headers;
struct lws_dll *same_vh_protocol_heads;
struct lws_vhost *no_listener_vhost_list;
struct lws_dll2_owner abstract_instances_owner;
#if !defined(LWS_NO_CLIENT)
struct lws_dll dll_cli_active_conns_head;
#endif
@ -1097,7 +1099,8 @@ int
lws_buflist_aware_consume(struct lws *wsi, struct lws_tokens *ebuf, int used,
int buffered);
extern const struct lws_protocols protocol_abs_client_raw_skt;
extern const struct lws_protocols protocol_abs_client_raw_skt,
protocol_abs_client_unit_test;
#ifdef __cplusplus
};

View file

@ -56,12 +56,17 @@ const struct lws_event_loop_ops *available_event_libs[] = {
NULL
};
#if defined(LWS_WITH_ABSTRACT)
const struct lws_protocols *available_abstract_protocols[] = {
#if defined(LWS_ROLE_RAW)
&protocol_abs_client_raw_skt,
#endif
#if defined(LWS_WITH_ABSTRACT)
&protocol_abs_client_unit_test,
#endif
NULL
};
#endif
static const char * const mount_protocols[] = {
"http://",
@ -433,7 +438,7 @@ lws_create_vhost(struct lws_context *context,
struct lws_plugin *plugin = context->plugin_list;
#endif
struct lws_protocols *lwsp;
int m, f = !info->pvo, fx = 0, abs_pcol_count;
int m, f = !info->pvo, fx = 0, abs_pcol_count = 0;
char buf[20];
#if !defined(LWS_WITHOUT_CLIENT) && defined(LWS_HAVE_GETENV)
char *p;
@ -546,8 +551,9 @@ lws_create_vhost(struct lws_context *context,
#if defined(LWS_WITH_HTTP_PROXY) && defined(LWS_ROLE_WS)
fx = 1;
#endif
#if defined(LWS_WITH_ABSTRACT)
abs_pcol_count = (int)LWS_ARRAY_SIZE(available_abstract_protocols) - 1;
#endif
/*
* give the vhost a unified list of protocols including:
@ -581,12 +587,13 @@ lws_create_vhost(struct lws_context *context,
/*
* 2: abstract protocols
*/
#if defined(LWS_WITH_ABSTRACT)
for (n = 0; n < abs_pcol_count; n++) {
memcpy(&lwsp[m++], available_abstract_protocols[n],
sizeof(*lwsp));
vh->count_protocols++;
}
#endif
/*
* 3: For compatibility, all protocols enabled on vhost if only
@ -972,6 +979,18 @@ out:
lws_context_unlock(context); /* --------------------------- context { */
}
#if defined(LWS_WITH_ABSTRACT)
static int
destroy_ais(struct lws_dll2 *d, void *user)
{
lws_abs_t *ai = lws_container_of(d, lws_abs_t, abstract_instances);
lws_abs_destroy_instance(&ai);
return 0;
}
#endif
void
__lws_vhost_destroy2(struct lws_vhost *vh)
{
@ -1112,6 +1131,14 @@ __lws_vhost_destroy2(struct lws_vhost *vh)
if (vh->finalize)
vh->finalize(vh, vh->finalize_arg);
#if defined(LWS_WITH_ABSTRACT)
/*
* abstract instances
*/
lws_dll2_foreach_safe(&vh->abstract_instances_owner, NULL, destroy_ais);
#endif
lwsl_info(" %s: Freeing vhost %p\n", __func__, vh);
memset(vh, 0, sizeof(*vh));

View file

@ -0,0 +1,76 @@
cmake_minimum_required(VERSION 2.8)
include(CheckCSourceCompiles)
set(SAMP lws-unit-tests-smtp-client)
set(SRCS main.c)
# If we are being built as part of lws, confirm current build config supports
# reqconfig, else skip building ourselves.
#
# If we are being built externally, confirm installed lws was configured to
# support reqconfig, else error out with a helpful message about the problem.
#
MACRO(require_lws_config reqconfig _val result)
if (DEFINED ${reqconfig})
if (${reqconfig})
set (rq 1)
else()
set (rq 0)
endif()
else()
set(rq 0)
endif()
if (${_val} EQUAL ${rq})
set(SAME 1)
else()
set(SAME 0)
endif()
if (LWS_WITH_MINIMAL_EXAMPLES AND NOT ${SAME})
if (${_val})
message("${SAMP}: skipping as lws being built without ${reqconfig}")
else()
message("${SAMP}: skipping as lws built with ${reqconfig}")
endif()
set(${result} 0)
else()
if (LWS_WITH_MINIMAL_EXAMPLES)
set(MET ${SAME})
else()
CHECK_C_SOURCE_COMPILES("#include <libwebsockets.h>\nint main(void) {\n#if defined(${reqconfig})\n return 0;\n#else\n fail;\n#endif\n return 0;\n}\n" HAS_${reqconfig})
if (NOT DEFINED HAS_${reqconfig} OR NOT HAS_${reqconfig})
set(HAS_${reqconfig} 0)
else()
set(HAS_${reqconfig} 1)
endif()
if ((HAS_${reqconfig} AND ${_val}) OR (NOT HAS_${reqconfig} AND NOT ${_val}))
set(MET 1)
else()
set(MET 0)
endif()
endif()
if (NOT MET)
if (${_val})
message(FATAL_ERROR "This project requires lws must have been configured with ${reqconfig}")
else()
message(FATAL_ERROR "Lws configuration of ${reqconfig} is incompatible with this project")
endif()
endif()
endif()
ENDMACRO()
set(requirements 1)
require_lws_config(LWS_WITH_SMTP 1 requirements)
if (requirements)
add_executable(${SAMP} ${SRCS})
if (websockets_shared)
target_link_libraries(${SAMP} websockets_shared)
add_dependencies(${SAMP} websockets_shared)
else()
target_link_libraries(${SAMP} websockets)
endif()
endif()

View file

@ -0,0 +1,29 @@
# lws api test smtp client
Demonstrates how to send email through your local MTA
## build
Requires lws was built with `-DLWS_WITH_SMTP=1` at cmake.
```
$ cmake . && make
```
## usage
Commandline option|Meaning
---|---
-d <loglevel>|Debug verbosity in decimal, eg, -d15
-r <recipient@whatever.com>|Send the test email to this email address
```
$ ./lws-api-test-smtp_client -r andy@warmcat.com
[2019/04/17 05:12:06:5293] USER: LWS API selftest: SMTP client
[2019/04/17 05:12:06:5635] NOTICE: LGSSMTP_IDLE: connecting to 127.0.0.1:25
[2019/04/17 05:12:06:6238] NOTICE: email_sent_or_failed: sent OK
[2019/04/17 05:12:06:6394] USER: Completed: PASS
```

View file

@ -0,0 +1,247 @@
/*
* lws-unit-tests-smtp-client
*
* Written in 2010-2019 by Andy Green <andy@warmcat.com>
*
* This file is made available under the Creative Commons CC0 1.0
* Universal Public Domain Dedication.
*/
#include <libwebsockets.h>
#include <signal.h>
static int interrupted, result = 1;
static const char *recip;
/*
* from https://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol
*/
static lws_expect_t test_send1[] = {
{
"220 smtp.example.com ESMTP Postfix",
34, LWS_AUT_EXPECT_RX
}, {
"HELO lws-test-client",
20, LWS_AUT_EXPECT_TX
}, {
"250 smtp.example.com, I am glad to meet you",
43, LWS_AUT_EXPECT_RX
}, {
"MAIL FROM:<noreply@warmcat.com>",
31, LWS_AUT_EXPECT_TX
}, {
"250 Ok",
6, LWS_AUT_EXPECT_RX
}, {
"RCPT TO:andy@warmcat.com",
24, LWS_AUT_EXPECT_TX
}, {
"250 Ok",
6, LWS_AUT_EXPECT_RX
}, {
"DATA",
4, LWS_AUT_EXPECT_TX
}, {
"354 End data with <CR><LF>.<CR><LF>",
35, LWS_AUT_EXPECT_RX
}, {
"From: noreply@example.com\n"
"To: andy@warmcat.com\n"
"Subject: Test email for lws smtp-client\n"
"\n"
"Hello this was an api test for lws smtp-client\n"
"\r\n.\r\n",
27 + 21 + 39 + 1 + 46 + 5, LWS_AUT_EXPECT_TX
}, {
"250 Ok: queued as 12345",
23, LWS_AUT_EXPECT_RX
}, {
"QUIT",
4, LWS_AUT_EXPECT_TX
}, {
"221 Bye",
7, LWS_AUT_EXPECT_RX |
LWS_AUT_EXPECT_LOCAL_CLOSE |
LWS_AUT_EXPECT_DO_REMOTE_CLOSE |
LWS_AUT_EXPECT_TEST_END
}
};
static lws_expect_test_t tests[] = {
{ "sending", test_send1 },
{ }
};
static void
sigint_handler(int sig)
{
interrupted = 1;
}
static int
email_sent_or_failed(struct lws_smtp_email *email, void *buf, size_t len)
{
/* you could examine email->data here */
if (buf)
lwsl_notice("%s: %.*s\n", __func__, (int)len, (const char *)buf);
else
lwsl_notice("%s:\n", __func__);
/* destroy any allocations in email */
free((char *)email->payload);
result = 0;
interrupted = 1;
return 0;
}
/*
* The test helper calls this on the instance it created to prepare it for
* the test.
*/
static int
smtp_test_instance_init(lws_abs_t *instance)
{
lws_smtp_email_t email;
/* attach an email to it */
memset(&email, 0, sizeof(email));
email.data = NULL /* email specific user data */;
email.email_from = "noreply@warmcat.com";
email.email_to = "andy@warmcat.com";
email.payload = malloc(2048);
if (!email.payload)
return 1;
lws_snprintf((char *)email.payload, 2048,
"From: noreply@example.com\n"
"To: %s\n"
"Subject: Test email for lws smtp-client\n"
"\n"
"Hello this was an api test for lws smtp-client\n"
"\r\n.\r\n", recip);
email.done = email_sent_or_failed;
if (lws_smtp_client_add_email(instance, &email)) {
lwsl_err("%s: failed to add email\n", __func__);
return 1;
}
return 0;
}
/*
* We're going to bind to the raw-skt transport, so tell that what we want it
* to connect to
*/
static const lws_token_map_t smtp_raw_skt_transport_tokens[] = {
{
.u = { .value = (const char *)tests },
.name_index = LTMI_PEER_V_EXPECT_TEST_ARRAY,
}, {
}
};
static const lws_token_map_t smtp_protocol_tokens[] = {
{
.u = { .value = "lws-test-client" },
.name_index = LTMI_PSMTP_V_HELO,
.init = smtp_test_instance_init,
}, {
}
};
int main(int argc, const char **argv)
{
int n = 1, logs = LLL_USER | LLL_ERR | LLL_WARN | LLL_NOTICE;
struct lws_context_creation_info info;
struct lws_context *context;
struct lws_vhost *vh;
const char *p;
/* the normal lws init */
signal(SIGINT, sigint_handler);
if ((p = lws_cmdline_option(argc, argv, "-d")))
logs = atoi(p);
p = lws_cmdline_option(argc, argv, "-r");
if (!p) {
lwsl_err("-r <recipient email> is required\n");
return 1;
}
recip = p;
lws_set_log_level(logs, NULL);
lwsl_user("LWS API selftest: SMTP client\n");
memset(&info, 0, sizeof info); /* otherwise uninitialized garbage */
info.port = CONTEXT_PORT_NO_LISTEN;
info.options = LWS_SERVER_OPTION_EXPLICIT_VHOSTS;
context = lws_create_context(&info);
if (!context) {
lwsl_err("lws init failed\n");
return 1;
}
vh = lws_create_vhost(context, &info);
if (!vh) {
lwsl_err("Failed to create first vhost\n");
goto bail1;
}
/* create the smtp client */
memset(&abs, 0, sizeof(abs));
abs.vh = vh;
/* select the protocol and bind its tokens */
abs.ap = lws_abs_protocol_get_by_name("smtp");
if (!abs.ap)
goto bail1;
abs.ap_tokens = smtp_protocol_tokens;
/* select the transport and bind its tokens */
abs.at = lws_abs_transport_get_by_name("unit_tests");
if (!abs.at)
goto bail1;
/*
* The transport token we pass here to the test helper is the array
* of tests. The helper will iterate through it instantiating test
* connections with one test each.
*/
abs.at_tokens = smtp_raw_skt_transport_tokens;
if (lws_abs_transport_unit_test_helper(&abs)) {
lwsl_err("%s: failed to create SMTP client\n", __func__);
goto bail1;
}
/* the usual lws event loop */
while (n >= 0 && !interrupted)
n = lws_service(context, 1000);
bail:
bail1:
lwsl_user("Completed: %s\n", result ? "FAIL" : "PASS");
lws_context_destroy(context);
return result;
}

View file

@ -44,14 +44,24 @@ email_sent_or_failed(struct lws_smtp_email *email, void *buf, size_t len)
* to connect to
*/
static const lws_token_map_t smtp_abs_tokens[] = {
{
static const lws_token_map_t smtp_raw_skt_transport_tokens[] = {
{
.u = { .value = "127.0.0.1" },
.name_index = LTMI_PEER_DNS_ADDRESS,
}, {
.u = { .lvalue = 25l },
.name_index = LTMI_PEER_PORT,
}};
.name_index = LTMI_PEER_V_DNS_ADDRESS,
}, {
.u = { .lvalue = 25 },
.name_index = LTMI_PEER_LV_PORT,
}, {
}
};
static const lws_token_map_t smtp_protocol_tokens[] = {
{
.u = { .value = "lws-test-client" },
.name_index = LTMI_PSMTP_V_HELO,
}, {
}
};
int main(int argc, const char **argv)
@ -59,8 +69,7 @@ int main(int argc, const char **argv)
int n = 1, logs = LLL_USER | LLL_ERR | LLL_WARN | LLL_NOTICE;
struct lws_context_creation_info info;
struct lws_context *context;
lws_smtp_client_info_t sci;
lws_smtp_client_t *smtpc;
lws_abs_t abs, *instance;
lws_smtp_email_t email;
struct lws_vhost *vh;
const char *p;
@ -98,29 +107,39 @@ int main(int argc, const char **argv)
goto bail1;
}
/* create the smtp client */
/*
* create an smtp client that's hooked up to real sockets
*/
memset(&sci, 0, sizeof(sci));
sci.data = NULL; /* stmp client specific user data */
sci.abs = lws_abstract_get_by_name("raw_skt");
/* tell raw_skt transport what we want it to do */
sci.abs_tokens = smtp_abs_tokens;
sci.vh = vh;
memset(&abs, 0, sizeof(abs));
abs.vh = vh;
lws_strncpy(sci.helo, "lws-test-client", sizeof(sci.helo));
/* select the protocol and bind its tokens */
smtpc = lws_smtp_client_create(&sci);
if (!smtpc) {
lwsl_err("%s: failed to create SMTP client\n", __func__);
abs.ap = lws_abs_protocol_get_by_name("smtp");
if (!abs.ap)
goto bail1;
abs.ap_tokens = smtp_protocol_tokens;
/* select the transport and bind its tokens */
abs.at = lws_abs_transport_get_by_name("raw_skt");
if (!abs.at)
goto bail1;
abs.at_tokens = smtp_raw_skt_transport_tokens;
instance = lws_abs_bind_and_create_instance(&abs);
if (!instance)
goto bail1;
}
/* attach an email to it */
memset(&email, 0, sizeof(email));
email.data = NULL /* email specific user data */;
email.email_from = recip;
email.email_to = "andy@warmcat.com";
email.email_from = "andy@warmcat.com";
email.email_to = recip;
email.payload = malloc(2048);
if (!email.payload) {
goto bail1;
@ -135,7 +154,7 @@ int main(int argc, const char **argv)
"\r\n.\r\n", recip);
email.done = email_sent_or_failed;
if (lws_smtp_client_add_email(smtpc, &email)) {
if (lws_smtp_client_add_email(instance, &email)) {
lwsl_err("%s: failed to add email\n", __func__);
goto bail;
}
@ -146,7 +165,7 @@ int main(int argc, const char **argv)
n = lws_service(context, 1000);
bail:
lws_smtp_client_destroy(&smtpc);
bail1:
lwsl_user("Completed: %s\n", result ? "FAIL" : "PASS");

View file

@ -62,8 +62,11 @@ struct lwsgs_user {
};
struct per_vhost_data__gs {
lws_smtp_client_t *smtp_client;
lws_abs_t *smtp_client;
struct lwsgs_user u;
lws_token_map_t transport_tokens[3];
lws_token_map_t protocol_tokens[2];
char helo[64], ip[64];
struct lws_context *context;
char session_db[256];
char admin_user[32];

View file

@ -136,10 +136,10 @@ callback_generic_sessions(struct lws *wsi, enum lws_callback_reasons reason,
struct lws_session_info *sinfo;
char s[LWSGS_EMAIL_CONTENT_SIZE];
unsigned char *p, *start, *end;
lws_smtp_client_info_t sci;
const char *cp, *cp1;
sqlite3_stmt *sm;
lwsgw_hash sid;
lws_abs_t abs;
int n;
switch (reason) {
@ -157,10 +157,9 @@ callback_generic_sessions(struct lws *wsi, enum lws_callback_reasons reason,
vhd->timeout_anon_absolute_secs = 1200;
vhd->timeout_email_secs = 24 * 3600;
memset(&sci, 0, sizeof(sci));
strcpy(sci.helo, "unconfigured.com");
strcpy(sci.ip, "127.0.0.1");
strcpy(vhd->helo, "unconfigured.com");
strcpy(vhd->ip, "127.0.0.1");
strcpy(vhd->email_from, "noreply@unconfigured.com");
strcpy(vhd->email_title, "Registration Email from unconfigured");
vhd->urlroot[0] = '\0';
@ -186,7 +185,7 @@ callback_generic_sessions(struct lws *wsi, enum lws_callback_reasons reason,
lws_strncpy(vhd->email_from, pvo->value,
sizeof(vhd->email_from));
if (!strcmp(pvo->name, "email-helo"))
lws_strncpy(sci.helo, pvo->value, sizeof(sci.helo));
lws_strncpy(vhd->helo, pvo->value, sizeof(vhd->helo));
if (!strcmp(pvo->name, "email-template"))
lws_strncpy(vhd->email_template, pvo->value,
sizeof(vhd->email_template));
@ -200,7 +199,7 @@ callback_generic_sessions(struct lws *wsi, enum lws_callback_reasons reason,
lws_strncpy(vhd->email_confirm_url, pvo->value,
sizeof(vhd->email_confirm_url));
if (!strcmp(pvo->name, "email-server-ip"))
lws_strncpy(sci.ip, pvo->value, sizeof(sci.ip));
lws_strncpy(vhd->ip, pvo->value, sizeof(vhd->ip));
if (!strcmp(pvo->name, "timeout-idle-secs"))
vhd->timeout_idle_secs = atoi(pvo->value);
@ -273,18 +272,38 @@ callback_generic_sessions(struct lws *wsi, enum lws_callback_reasons reason,
return 1;
}
sci.data = vhd;
sci.abs = lws_abstract_get_by_name("raw-skt");
sci.vh = lws_get_vhost(wsi);
memset(&abs, 0, sizeof(abs));
abs.vh = lws_get_vhost(wsi);
vhd->smtp_client = lws_smtp_client_create(&sci);
if (!vhd->smtp_client) {
lwsl_err("%s: failed to create SMTP client\n", __func__);
/* select the protocol and bind its tokens */
abs.ap = lws_abs_protocol_get_by_name("smtp");
if (!abs.ap)
return 1;
vhd->protocol_tokens[0].name_index = LTMI_PSMTP_V_HELO;
vhd->protocol_tokens[0].u.value = vhd->helo;
abs.ap_tokens = vhd->protocol_tokens;
/* select the transport and bind its tokens */
abs.at = lws_abs_transport_get_by_name("raw_skt");
if (!abs.at)
return 1;
vhd->transport_tokens[0].name_index = LTMI_PEER_V_DNS_ADDRESS;
vhd->transport_tokens[0].u.value = vhd->ip;
vhd->transport_tokens[1].name_index = LTMI_PEER_LV_PORT;
vhd->transport_tokens[1].u.lvalue = 25;
abs.at_tokens = vhd->transport_tokens;
vhd->smtp_client = lws_abs_bind_and_create_instance(&abs);
if (!vhd->smtp_client)
return 1;
}
lwsl_notice("%s: created SMTP client\n", __func__);
break;
case LWS_CALLBACK_PROTOCOL_DESTROY:
@ -294,7 +313,7 @@ callback_generic_sessions(struct lws *wsi, enum lws_callback_reasons reason,
vhd->pdb = NULL;
}
if (vhd->smtp_client)
lws_smtp_client_destroy(&vhd->smtp_client);
lws_abs_destroy_instance(&vhd->smtp_client);
break;
case LWS_CALLBACK_HTTP_WRITEABLE: