Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
No results found
Show changes
Showing
with 631 additions and 158 deletions
public/logo.png

4.96 KiB

# Disable search engine indexing
User-agent: *
Disallow: /
\ No newline at end of file
public/touch-icon.png

2.79 KiB

<template>
<main id="app">
<img alt="Vue logo" src="./assets/logo.png">
<header>
<autocomplete :debounceTime="100" :auto-select="true" :search="search" @submit="select_result" placeholder="søk..." ref="search">
<template #result="{result, props}">
<Preview v-bind="props" :searchHit="result">
</Preview>
</template>
</autocomplete>
<input type="radio" id="radio_both" value="nob,nno" v-model="lang">
<label for="radio_both">Begge</label>
<input type="radio" id="radio_nob" value="nob" v-model="lang">
<label for="radio_nob">Bokmål</label>
<input type="radio" id="radio_nno" value="nno" v-model="lang">
<label for="radio_nno">Nynorsk</label>
</header>
<img id="spinner" :class="waiting ? 'show' : 'hide'" src="./assets/spinner.gif" alt="Venter på innhold" />
<SearchResults :hits="search_results" :lang="lang" @search-hit-click="search_hit_click" />
<Article :key="article_key" :article="article" @article-click="article_link_click" />
</main>
</template>
<v-app id="app">
<router-link ref="skip_link" to="#main" class="skip-link" @click.native="focus_main">{{$t('accessibility.main_content')}}</router-link>
<div>
<TopBar/>
</div>
<div v-if="$route.name!='about'" class = "banner" :class="$vuetify.breakpoint">
<div v-if="show_banner_text">
<a href="/">
<h1 :class="$vuetify.breakpoint.name">Ordbøkene</h1></a>
<p class="sub-title">{{$t("sub_title")}}</p>
</div>
</div>
<router-view ref="router_view"></router-view>
<footer :class="$vuetify.breakpoint.name">
<div id="photo-attribution" aria-hidden="true" v-if="!$route.name && $vuetify.breakpoint.mdAndUp">{{$t('photo')}}</div>
<div class="footer-row">
<div class="logos" :class="$vuetify.breakpoint.xs?'sm':'lg'">
<img id="srlogo" src="./assets/Sprakradet_logo_neg.png" alt="Språkrådet, logo">
<img id="uiblogo" src="./assets/uib-logo.svg" alt="Universitetet i Bergen, logo">
</div>
<div class="footer-text"><em>{{$t('dicts.bm')}}</em>{{$t('and')}}<em>{{$t('dicts.nn')}}</em>{{$t('footer_description')}}
</div>
<FooterMenu />
<div></div></div>
<div class="accessibility-declaration"><a href="https://uustatus.no/nb/erklaringer/publisert/b2a6f8d0-3a16-4716-8bc8-46ac3c161935" target="_blank">{{$t('accessibility_statement')}}</a><v-icon color="white" small>open_in_new</v-icon></div>
</footer>
</v-app>
</template>
<script>
import axios from "axios"
import Article from './components/Article.vue'
import Preview from './components/Preview.vue'
import SearchResults from './components/SearchResults.vue'
import Autocomplete from '@trevoreyre/autocomplete-vue'
import '@trevoreyre/autocomplete-vue/dist/style.css'
var api_endpoint = 'https://ordbok-dev.aws.uib.no/cache/article'
window.onpopstate = function (event) {
if (event.state) {
app.__vue__._data.article = event.state.article
app.__vue__._data.search_results = event.state.search_results
app.__vue__._data.lang = event.state.lang
}
}
import TopBar from './components/TopBar.vue'
import FooterMenu from './components/FooterMenu.vue'
export default {
metaInfo() {
return { htmlAttrs: {lang: {nob: "nb", nno: "nn", eng: "en", ukr: "uk"}[this.$i18n.locale]}}
export default {
name: 'app',
data: function() {
return {
article_key: 0,
search_results: [],
lang: 'nob',
waiting: true,
article: {lemmas: [], body:{pronunciation: [], definitions: [], etymology: []}}
}
},
computed: {
search: function() {
let self = this
return function(q) {
return new Promise(resolve => {
return axios.post(api_endpoint + '/' + self.lang + '/_search/',
{
"suggest": {
"suggest" : {
"prefix" : q,
"completion" : {
"field" : "suggest",
"size": 10
}
}
}
}).then(function(response) {
let hits = q.length ? [{q: q}] : []
hits = hits.concat(response.data.suggest.suggest[0].options.sort((o1, o2) => o1.text.length - o2.text.length))
resolve(hits)
})
})
}
}
},
components: {
Article,
Autocomplete,
SearchResults,
Preview
},
methods: {
select_result: function(event) {
this.$refs.search.value = ''
document.activeElement.blur()
if(event._source){
this.$router.push('/' + event._index + '/' + event._id)
this.search_results = []
this.article = event._source
history.replaceState({article: this.article, search_results: this.search_results, lang: this.lang}, '')
}else{
var self = this
self.waiting = true
self.article = {lemmas: [], body:{pronunciation: [], definitions: [], etymology: []}}
axios.get(api_endpoint + '/' + self.lang + '/_search?q=' + event.q + ' ' + event.q + '*&size=20')
.then(function(response){
self.$router.push('/' + `/search?q=${event.q}&lang=${self.lang}`)
self.search_results = response.data.hits.hits
self.waiting = false
history.replaceState({article: self.article, search_results: self.search_results, lang: self.lang}, '')
})
computed: {
show_banner_text: function() {
return !this.$route.name || (window.innerHeight > 800 && this.$route.name != 'about' )
}
},
article_link_click: function(item) {
var self = this
if (this.article.article_id == item.article_id){
this.article_key++
history.replaceState({article: this.article, search_results: this.search_results, lang: this.lang}, '')
}else{
self.article = {lemmas: [], body:{pronunciation: [], definitions: [], etymology: []}}
self.waiting = true
axios.get(api_endpoint + '/' + self.lang + '/' + item.article_id)
.then(function(response){
self.article = response.data._source
self.waiting = false
history.replaceState({article: self.article, search_results: self.search_results, lang: self.lang}, '')
})
components: {
TopBar,
FooterMenu
},
data: function() {
return {
contact_dialog: false,
help_dialog: false,
announcement: localStorage.getItem('app_info') == 'false' ? false : true,
announce_test: localStorage.getItem('beta_info') == 'false' ? false : true
}
},
search_hit_click: function(article){
this.search_results = []
this.article = article
history.replaceState({article: article, search_results: [], lang: this.lang}, '')
}
},
mounted: function(){
this.lang = this.$route.params.lang || this.$route.query.lang || 'nob,nno'
var self = this;
if(this.$route.query.q) {
axios.get(api_endpoint + '/' + self.lang + '/_search?q=' + self.$route.query.q + ' ' + self.$route.query.q + '*&size=20')
.then(function(response){
self.search_results = response.data.hits.hits
self.waiting = false
history.replaceState({article: self.article, search_results: self.search_results, lang: self.lang}, '')
})
}
else if(this.$route.params.id){
axios.get(api_endpoint + '/' + self.lang + '/' + self.$route.params.id)
.then(function(response){
self.article = response.data._source
self.waiting = false
history.replaceState({article: self.article, search_results: self.search_results, lang: self.lang}, '')
})
}
else {
this.waiting = false
}
},
watch: {
$route(to, from) {
this.lang = this.$route.params.lang || this.$route.query.lang || 'nob,nno'
methods: {
close_announcement: function() {
localStorage.setItem('app_info', 'false')
this.announcement = false
},
close_test_announcement: function() {
localStorage.setItem('beta_info', 'false')
this.announce_test = false
},
focus_main: function() {
this.$refs.router_view.$refs.main.focus();
}
}
}
}
</script>
<style>
@import url('https://fonts.googleapis.com/css2?family=Inria+Serif:ital,wght@0,400;0,700;1,400;1,700&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Inria+Serif:ital,wght@0,400;0,700;1,400;1,700&family=Noto+Sans:ital,wght@0,400;0,700;1,400;1,700&display=swap');
@font-face {
font-family: 'Noto Sans';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url('./assets/o-0NIpQlx3QUlC5A4PNjXhFVZNyBx2pqPA.woff2') format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
font-family: 'Inria Serif';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url('./assets/fC1lPYxPY3rXxEndZJAzN3Srdy0.woff2') format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
font-family: 'Inria Serif';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url('./assets/fC14PYxPY3rXxEndZJAzN3wQUjjCjl0.woff2') format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
font-family: 'Noto Sans';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url('./assets/o-0IIpQlx3QUlC5A4PNr5TRA.woff2') format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
font-family: 'Noto Sans';
font-style: italic;
font-weight: 400;
font-display: swap;
src: url('./assets/o-0OIpQlx3QUlC5A4PNr4ARCQ_k.woff2') format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
font-family: NotoParen;
font-style: italic;
src: url('./assets/NotoSansParen.woff') format('woff');
unicode-range: U+28-29;
}
#app {
font-family: 'Avenir', Helvetica, Arial, sans-serif;
font-family: NotoParen, 'Noto Sans', Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
color: #2c3e50;
margin-top: 60px;
margin-left: 30%;
margin-right: 10%;
color: var(--v-text-base);
background-color: var(--v-tertiary-base)
}
html, body {
height: 100%
}
main {
flex: 1;
}
h1, .article h3 {
font-family: Inria Serif;
padding-left: 15px;
color: var(--v-primary-base)
}
p a, .article a, .search_notification a, .did_you_mean a, .info-card a {
color: var(--v-text-base) !important;
text-decoration: none;
border-bottom: 1px solid var(--v-anchor-base);
}
p a:hover, .article a:hover, .search_notification a:hover, .info-card a:hover {
color: var(--v-anchor-base) !important;
}
a.article_header {
border: none;
}
.banner h1 {
font-size: 48px;
}
h1.xs, h1.sm {
font-size: 36px;
}
.banner {
padding-top: 10px;
}
.v-list-item__title {
word-break: break-all;
overflow-wrap: break-word;
}
.banner p {
padding-bottom: 10px;
padding-top: 0;
padding-left: 18px;
}
.banner a {
text-decoration: none;
color: var(--v-primary-base) !important;
}
.beta {
font-family: Inria Serif;
font-size: 18px;
color: white;
margin-left: 10px;
}
.show {
display: block;
.language-dialog-title {
font-family: Inria Serif;
color: white;
}
.hide {
.top-bar .v-toolbar__content {
padding-left: calc((100vw - 1200px) / 2) !important;
padding-right: calc((100vw - 1200px) / 2) !important;
}
.banner {
position: relative;
padding-left: calc((100vw - 1200px) / 2);
padding-right: calc((100vw - 1200px) / 2);
background-color: var(--v-tertiary-base);
}
.banner.xs, .banner.sm {
padding-top: 0px;
}
.banner.xs div, .banner.sm div{
display: none;
}
.autocomplete {
width: 25em;
.sub-title {
font-size: 18px;
margin: 0px;
margin-bottom: 0px !important;
}
.sub-title {
color: var(--v-primary-base) !important;
}
footer a, .notification a {
color: #ffffff !important;
}
footer {
padding-left: calc((100vw - 1200px) / 2);
padding-right: calc((100vw - 1200px) / 2);
font-size: smaller;
background-color: var(--v-primary-base);
color: #ffffff;
padding-bottom: 10px;
}
.logos {
display: flex;
align-items: center;
flex-direction: row !important;
gap: 10px;
padding: 10px;
padding-left: 24px;
}
.accessibility-declaration {
text-align: center;
padding-top: 10px;
}
.footer-row {
display: flex;
flex-direction: rows;
align-content: center;
align-items:center;
padding-top: 24px;
gap: 10px;
}
footer.sm .footer-row, footer.xs .footer-row{
display: flex;
flex-direction: column;
padding-left: 24px;
gap: 10px;
}
footer.sm div, footer.xs div {
justify-content: center;
justify-items: center;
}
#srlogo {
height: 20px;
}
#uiblogo {
height: 60px;
}
.v-btn {
font-weight: bold !important;
}
.article .v-btn:focus, .v-dialog .v-btn:focus {
outline: solid 2px var(--v-primary-base) !important;
}
/* all inflection-table css shoud be moved to beta.ordbok */
.infl-table caption {
position: absolute !important;
height: 1px; width: 1px;
overflow: hidden;
clip: rect(1px, 1px, 1px, 1px);
}
td[class="infl-group"] {
background-color: var(--v-button-base) !important;
color: var(--v-text-base) !important;
font-style: normal !important;
font-weight: bold;
}
th[class="infl-group"] {
background-color: var(--v-button-base) !important;
font-style: unset;
}
.v-application .rounded-t-xl {
border-top-left-radius: 28px !important;
border-top-right-radius: 28px !important;
}
.v-application .rounded-xl {
border-radius: 28px !important;
}
.autocomplete-result-list {
max-height: 500px;
.theme--light.v-label, .theme--light.v-subheader, .transparent-text{
color: var(--v-text-base)
}
#photo-attribution {
position: absolute;
right: 0px;
width: 100%;
text-align: right;
padding-right: 6px;
padding-top: 1px;
padding-right: 6px;
color: white;
font-size: smaller;
}
.article h5, .about h3 {
color: var(--v-primary-base);
font-size: 14px;
padding-left: 12px;
padding-top: 6px;
}
.article h4, .monthly-title h2, .about h2, .v-dialog h2 {
font-size: 1.17em;
color: var(--v-primary-base);
font-variant: all-small-caps;
}
.skip-link {
position: absolute;
top: -10
}
.skip-link:focus {
position: unset;
top: unset;
text-align: center;
padding: 10px;
width: 100%;
color: white;
background-color: var(--v-secondary-base)
}
.v-alert {
border-radius: 0px !important;
}
</style>
<template>
<router-view/>
</template>
File added
src/assets/Sprakradet_logo_neg.png

23.1 KiB

<svg width="23" height="18" viewBox="0 0 23 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M22.3145 7.98256L3.82615 7.98256L11.8993 0.737929C12.0284 0.621157 11.9501 0.404295 11.7795 0.404295L9.73927 0.404295C9.64936 0.404295 9.56406 0.437659 9.49721 0.497236L0.785442 8.31143C0.705653 8.38293 0.641662 8.47132 0.597805 8.57062C0.553949 8.66991 0.531251 8.77779 0.531251 8.88695C0.531252 8.99611 0.553949 9.10399 0.597805 9.20328C0.641662 9.30258 0.705653 9.39097 0.785443 9.46247L9.54793 17.3243C9.58251 17.3553 9.624 17.372 9.6678 17.372L11.7772 17.372C11.9478 17.372 12.0261 17.1527 11.897 17.0384L3.82615 9.79372L22.3145 9.79372C22.4159 9.79372 22.4989 9.70792 22.4989 9.60307L22.4989 8.17321C22.4989 8.06835 22.4159 7.98256 22.3145 7.98256Z" fill="#560027"/>
</svg>
<svg width="23" height="18" viewBox="0 0 23 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0.247987 10.3045L18.7364 10.3045L10.6632 17.5492C10.5341 17.6659 10.6124 17.8828 10.783 17.8828L12.8232 17.8828C12.9131 17.8828 12.9984 17.8494 13.0653 17.7899L21.7771 9.97568C21.8568 9.90418 21.9208 9.81579 21.9647 9.71649C22.0086 9.6172 22.0313 9.50932 22.0313 9.40016C22.0313 9.291 22.0086 9.18312 21.9647 9.08383C21.9208 8.98453 21.8568 8.89614 21.7771 8.82464L13.0146 0.962785C12.98 0.931804 12.9385 0.915122 12.8947 0.915122L10.7853 0.915122C10.6147 0.915122 10.5364 1.13437 10.6655 1.24876L18.7364 8.49339L0.247987 8.49339C0.146554 8.49339 0.0635613 8.57918 0.0635613 8.68404L0.0635612 10.1139C0.0635612 10.2188 0.146554 10.3045 0.247987 10.3045Z" fill="#560027"/>
</svg>
src/assets/background.jpg

451 KiB

src/assets/books.jpg

574 KiB

src/assets/down_arrow.png

319 B

File added
File added
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64"
height="64"
viewBox="0 0 16.933333 16.933334"
version="1.1"
id="svg8"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
sodipodi:docname="logo-icon.svg"
inkscape:export-filename="/home/has022/Documents/256.png"
inkscape:export-xdpi="170.66667"
inkscape:export-ydpi="170.66667">
<defs
id="defs2">
<linearGradient
inkscape:collect="always"
id="linearGradient4545">
<stop
style="stop-color:#560027;stop-opacity:1;"
offset="0"
id="stop4541" />
<stop
style="stop-color:#560027;stop-opacity:0;"
offset="1"
id="stop4543" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4545"
id="linearGradient4547"
x1="9.9130554"
y1="277.94998"
x2="28.186945"
y2="277.94998"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="3.959798"
inkscape:cx="233.45423"
inkscape:cy="-7.9212896"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="3840"
inkscape:window-height="2084"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-280.06665)">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:35.27777863px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#bc477b;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="1.4181669"
y="295.72998"
id="text3715"><tspan
sodipodi:role="line"
x="1.4181669"
y="295.72998"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:21.16666603px;font-family:'Inria Serif';-inkscape-font-specification:'Inria Serif';fill:#bc477b;fill-opacity:1;stroke-width:0.26458332"
id="tspan21">O</tspan></text>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="144"
height="144"
viewBox="0 0 38.099999 38.100001"
version="1.1"
id="svg8"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
sodipodi:docname="anchor-icon.svg"
inkscape:export-filename="/home/has022/Documents/logo-transparent.png"
inkscape:export-xdpi="170.66667"
inkscape:export-ydpi="170.66667">
<defs
id="defs2">
<linearGradient
inkscape:collect="always"
id="linearGradient4545">
<stop
style="stop-color:#560027;stop-opacity:1;"
offset="0"
id="stop4541" />
<stop
style="stop-color:#560027;stop-opacity:0;"
offset="1"
id="stop4543" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4545"
id="linearGradient4547"
x1="9.9130554"
y1="277.94998"
x2="28.186945"
y2="277.94998"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="1.979899"
inkscape:cx="180.06393"
inkscape:cy="31.926411"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="3840"
inkscape:window-height="2084"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-258.89998)">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:35.27777863px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#bc477b;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="8.4772501"
y="288.745"
id="text3715"><tspan
sodipodi:role="line"
x="8.4772501"
y="288.745"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:31.75px;font-family:'Inria Serif';-inkscape-font-specification:'Inria Serif';fill:#bc477b;fill-opacity:1;stroke-width:0.26458332"
id="tspan21">O</tspan></text>
</g>
</svg>
File added
File added
File added
This diff is collapsed.