This commit is contained in:
syuilo 2018-03-17 03:33:36 +09:00
parent c38b5a9b8b
commit 128b56da28
6 changed files with 601 additions and 58 deletions

View file

@ -27,6 +27,10 @@ module.exports = (params) => new Promise(async (res, rej) => {
const [poll, pollErr] = $(params.poll).optional.boolean().$;
if (pollErr) return rej('invalid poll param');
// Get 'bot' parameter
//const [bot, botErr] = $(params.bot).optional.boolean().$;
//if (botErr) return rej('invalid bot param');
// Get 'limit' parameter
const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$;
if (limitErr) return rej('invalid limit param');
@ -76,6 +80,11 @@ module.exports = (params) => new Promise(async (res, rej) => {
query.poll = poll ? { $exists: true, $ne: null } : null;
}
// TODO
//if (bot != undefined) {
// query.is_bot = bot;
//}
// Issue query
const posts = await Post
.find(query, {

View file

@ -23,6 +23,7 @@ import twitterSetting from './twitter-setting.vue';
import fileTypeIcon from './file-type-icon.vue';
import Switch from './switch.vue';
import Othello from './othello.vue';
import welcomeTimeline from './welcome-timeline.vue';
Vue.component('mk-signin', signin);
Vue.component('mk-signup', signup);
@ -47,3 +48,4 @@ Vue.component('mk-twitter-setting', twitterSetting);
Vue.component('mk-file-type-icon', fileTypeIcon);
Vue.component('mk-switch', Switch);
Vue.component('mk-othello', Othello);
Vue.component('mk-welcome-timeline', welcomeTimeline);

View file

@ -0,0 +1,115 @@
<template>
<div class="mk-welcome-timeline">
<div v-for="post in posts">
<router-link class="avatar-anchor" :to="`/${post.user.username}`">
<img class="avatar" :src="`${post.user.avatar_url}?thumbnail&size=96`" alt="avatar"/>
</router-link>
<div class="body">
<header>
<router-link class="name" :to="`/${post.user.username}`">{{ post.user.name }}</router-link>
<span class="username">@{{ post.user.username }}</span>
<div class="info">
<router-link class="created-at" :to="`/${post.user.username}/${post.id}`">
<mk-time :time="post.created_at"/>
</router-link>
</div>
</header>
<div class="text">
<mk-post-html :ast="post.ast"/>
</div>
</div>
</div>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
export default Vue.extend({
data() {
return {
fetching: true,
posts: []
};
},
mounted() {
this.fetch();
},
methods: {
fetch(cb?) {
this.fetching = true;
(this as any).api('posts', {
reply: false,
repost: false,
media: false,
poll: false,
bot: false
}).then(posts => {
this.posts = posts;
this.fetching = false;
});
}
}
});
</script>
<style lang="stylus" scoped>
.mk-welcome-timeline
background #fff
> div
padding 16px
overflow-wrap break-word
font-size .9em
color #4C4C4C
border-bottom 1px solid rgba(0, 0, 0, 0.05)
&:after
content ""
display block
clear both
> .avatar-anchor
display block
float left
position -webkit-sticky
position sticky
top 16px
> img
display block
width 36px
height 36px
border-radius 6px
> .body
float right
width calc(100% - 36px)
padding-left 8px
> header
display flex
align-items center
margin-bottom 4px
white-space nowrap
> .name
display block
margin 0 .5em 0 0
padding 0
overflow hidden
font-weight bold
text-overflow ellipsis
> .username
margin 0 .5em 0 0
color #ccc
> .info
margin-left auto
font-size 0.9em
> .created-at
color #c0c0c0
</style>

View file

@ -1,13 +1,20 @@
<template>
<div class="mk-welcome">
<main>
<div class="top">
<div>
<div>
<h1>Share<br>Everything!</h1>
<p>ようこそ <b>Misskey</b>はTwitter風ミニブログSNSです思ったこと共有したいことをシンプルに書き残せますタイムラインを見れば皆の反応や皆がどう思っているのかもすぐにわかります<a>詳しく...</a></p>
<p>ようこそ <b>Misskey</b>はTwitter風ミニブログSNSです思ったことや皆と共有したいことを投稿しましょうタイムラインを見れば皆の関心事をすぐにチェックすることもできます<a>詳しく...</a></p>
<p><button class="signup" @click="signup">はじめる</button><button class="signin" @click="signin">ログイン</button></p>
</div>
<div>
<div>
<header>%fa:comments R% タイムライン</header>
<mk-welcome-timeline/>
</div>
</div>
</div>
</div>
</main>
<mk-forkit/>
@ -69,13 +76,22 @@ export default Vue.extend({
> main
display flex
flex 1
> .top
display flex
width 100%
background-image url('/assets/welcome.svg')
background-size cover
background-position top center
> div
display flex
max-width $width
margin 0 auto
padding 80px 0 0 0
> div:first-child
margin 0 auto 0 0
width calc(100% - 500px)
margin 0 48px 0 0
color #777
> h1
@ -120,10 +136,25 @@ export default Vue.extend({
color #333
> div:last-child
margin 0 0 0 auto
> div
width 410px
background #fff
border-radius 8px
overflow hidden
> header
z-index 1
padding 12px 16px
color #888d94
box-shadow 0 1px 0px rgba(0, 0, 0, 0.1)
> .mk-welcome-timeline
max-height 350px
overflow auto
> footer
color #666
color #949ea5
background #fff
> div

View file

@ -1,9 +1,9 @@
<template>
<div class="welcome">
<h1><b>Misskey</b>へようこそ</h1>
<p>Twitter風ミニブログSNSMisskeyへようこそ思ったことを投稿したりタイムラインでみんなの投稿を読むこともできます</p>
<p>Twitter風ミニブログSNSMisskeyへようこそ思ったことを投稿したりタイムラインでみんなの投稿を読むこともできます<a href="/signup">アカウントを作成する</a></p>
<div class="form">
<p>ログイン</p>
<p>%fa:lock% ログイン</p>
<div>
<form @submit.prevent="onSubmit">
<input v-model="username" type="text" pattern="^[a-zA-Z0-9-]+$" placeholder="ユーザー名" autofocus required @change="onUsernameChange"/>
@ -16,13 +16,19 @@
</div>
</div>
</div>
<a href="/signup">アカウントを作成する</a>
<div class="tl">
<p>%fa:comments R% タイムラインを見てみる</p>
<mk-welcome-timeline/>
</div>
<footer>
<small>{{ copyright }}</small>
</footer>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
import { apiUrl } from '../../../config';
import { apiUrl, copyright } from '../../../config';
export default Vue.extend({
data() {
@ -32,7 +38,8 @@ export default Vue.extend({
username: '',
password: '',
token: '',
apiUrl
apiUrl,
copyright
};
},
mounted() {
@ -83,16 +90,12 @@ export default Vue.extend({
color #949fa9
.form
margin-bottom 16px
background #fff
border solid 1px rgba(0, 0, 0, 0.2)
border-radius 8px
overflow hidden
& + a
display block
margin-top 16px
text-align center
> p
margin 0
padding 12px 20px
@ -143,4 +146,29 @@ export default Vue.extend({
padding 16px
text-align center
.tl
background #fff
border solid 1px rgba(0, 0, 0, 0.2)
border-radius 8px
overflow hidden
> p
margin 0
padding 12px 20px
color #555
background #f5f5f5
border-bottom solid 1px #ddd
> .mk-welcome-timeline
max-height 300px
overflow auto
> footer
text-align center
color #949fa9
> small
display block
margin 16px 0 0 0
</style>

358
src/web/assets/welcome.svg Normal file
View file

@ -0,0 +1,358 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
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="1920"
height="1080"
viewBox="0 0 507.99999 285.75001"
version="1.1"
id="svg8"
inkscape:version="0.92.1 r15371"
sodipodi:docname="描画.svg">
<defs
id="defs2">
<linearGradient
inkscape:collect="always"
id="linearGradient7044">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop7040" />
<stop
style="stop-color:#ffffff;stop-opacity:1"
offset="1"
id="stop7042" />
</linearGradient>
<pattern
inkscape:collect="always"
xlink:href="#Checkerboard"
id="pattern7010"
patternTransform="matrix(1.673813,0,0,1.673813,-177.6001,-146.38611)" />
<pattern
inkscape:stockid="Checkerboard"
id="Checkerboard"
patternTransform="translate(0,0) scale(10,10)"
height="2"
width="2"
patternUnits="userSpaceOnUse"
inkscape:collect="always">
<rect
id="rect6201"
height="1"
width="1"
y="0"
x="0"
style="fill:black;stroke:none" />
<rect
id="rect6203"
height="1"
width="1"
y="1"
x="1"
style="fill:black;stroke:none" />
</pattern>
<linearGradient
id="linearGradient5406"
osb:paint="solid">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop5404" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient7044"
id="linearGradient7064"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(3.223659,0,0,2.5556636,-579.27357,808.39)"
x1="86.490868"
y1="-216.62756"
x2="176.77992"
y2="-216.62756" />
<mask
maskUnits="userSpaceOnUse"
id="mask7060">
<rect
style="opacity:1;fill:url(#linearGradient7064);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.92238116;stroke-miterlimit:4;stroke-dasharray:none"
id="rect7062"
width="291.06116"
height="511.36566"
x="-300.45657"
y="-0.91986513"
transform="rotate(-90)" />
</mask>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.84705882"
inkscape:pageshadow="2"
inkscape:zoom="0.51"
inkscape:cx="895.96593"
inkscape:cy="599.48775"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:pagecheckerboard="true"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="1072"
inkscape:window-maximized="1"
objecttolerance="1"
guidetolerance="10000"
gridtolerance="10000"
inkscape:snap-bbox="true"
inkscape:bbox-paths="true"
inkscape:bbox-nodes="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:snap-bbox-midpoints="true" />
<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="レイヤー 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-11.249983)">
<rect
style="opacity:0.05;fill:url(#pattern7010);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.15551688;stroke-miterlimit:4;stroke-dasharray:none"
id="rect6987"
width="754.9812"
height="469.89072"
x="-83.816063"
y="-63.078693"
ry="0"
mask="url(#mask7060)" />
<path
style="fill:#000000;fill-opacity:0.09661835;stroke:none;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 149.59224,187.51883 -30.48108,6.4476 18.58548,61.14441 32.06774,-5.02079 2.27916,-39.16205 -20.18463,5.72179 z m -19.28212,12.50282 11.30447,-2.22985 0.81973,12.45223 -7.5888,1.65389 z m 15.28477,16.59486 0.74067,11.65353 -7.42226,2.02029 -3.70369,-10.82413 z m 1.61836,17.96698 1.20153,11.02325 -5.56723,1.37628 -3.18232,-10.49349 z m 14.34445,-2.69044 0.26461,11.20806 -5.86133,1.29523 -1.20102,-11.02336 z"
id="path5398"
inkscape:connector-curvature="0" />
<ellipse
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.35368672"
id="path5309"
cx="19.684303"
cy="2.3963881"
rx="115.17702"
ry="51.621048"
transform="matrix(0.99853597,-0.05409175,0,1,0,0)" />
<ellipse
style="fill:#ffffff;fill-opacity:0.56038663;stroke:none;stroke-width:0.26458332"
id="path5313"
cx="146.58771"
cy="21.961346"
rx="60.384743"
ry="31.365929" />
<ellipse
style="fill:#ffffff;fill-opacity:0.56038663;stroke:none;stroke-width:0.22788492"
id="path5313-3"
cx="227.88307"
cy="9.7990417"
rx="51.849796"
ry="27.098455" />
<ellipse
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.18895671"
id="path5309-5"
cx="158.05429"
cy="9.211237"
rx="67.707047"
ry="25.06374"
transform="matrix(0.99900149,0.04467679,0,-1,0,0)" />
<ellipse
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.19881381"
id="path5309-5-5"
cx="-320.59222"
cy="-18.961536"
rx="71.337646"
ry="26.334759"
transform="matrix(-0.99900701,0.04455336,0,-1,0,0)" />
<ellipse
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.2416939"
id="path5309-0"
cx="-474.55038"
cy="-20.052439"
rx="74.602745"
ry="37.216171"
transform="matrix(-0.99818591,-0.06020699,0,1,0,0)" />
<ellipse
style="fill:#ffffff;fill-opacity:0.56038663;stroke:none;stroke-width:0.26458332"
id="path5313-5"
cx="382.79236"
cy="16.200251"
rx="60.384743"
ry="31.365929" />
<circle
style="fill:#000000;fill-opacity:0.09661835;stroke:none;stroke-width:1.99730551"
id="path5392"
cx="253.06117"
cy="887.61829"
r="642.68146" />
<path
style="fill:#000000;fill-opacity:0.09661835;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 329.51477,199.15082 -32.04286,18.26817 12.8142,1.28619 -6.02656,28.18505 32.94792,3.49531 0.51681,-27.76301 11.91226,1.00737 z m -14.10711,25.93826 6.27123,0.90288 -1.15019,5.4805 -6.00929,-0.898 z m 13.58524,2.09643 0.42171,5.50053 -6.35262,-0.44337 1.22618,-5.67857 z m -15.04127,5.73678 6.21844,0.90138 -1.87301,4.94347 -5.07899,-0.81761 z m 8.80707,1.53673 6.3403,1.10313 0.43128,4.98637 -7.83808,-1.19409 z"
id="path6874"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccccccccccccccccc" />
<path
style="fill:#000000;fill-opacity:0.09661835;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 366.28967,254.78298 7.49431,-30.40441 -7.41388,-2.66046 1.18763,-3.36104 7.21205,2.27141 1.38362,-5.73044 -7.20912,-2.66047 1.28561,-3.65794 7.01313,2.7643 2.17341,-7.01022 3.35519,1.48161 -2.1734,6.51147 6.70747,2.66046 -1.28564,3.16213 -6.31255,-2.46154 -1.68638,6.02735 6.80837,2.46447 -0.9887,3.84808 -6.90052,-2.47031 -6.71038,30.41026 z"
id="path6891"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccccccccccc" />
<path
style="fill:#000000;fill-opacity:0.09661835;fill-rule:nonzero;stroke:none;stroke-width:0.26499999;stroke-miterlimit:4;stroke-dasharray:none"
d="m 377.25876,69.781182 a 18.234796,18.234796 0 0 1 8.1747,15.19442 18.234796,18.234796 0 0 1 -18.23455,18.235058 18.234796,18.234796 0 0 1 -10.14098,-3.08921 20.380066,20.380066 0 0 0 17.64905,10.2402 20.380066,20.380066 0 0 0 20.38015,-20.380152 20.380066,20.380066 0 0 0 -17.82837,-20.200316 z"
id="path6914"
inkscape:connector-curvature="0" />
<path
sodipodi:type="star"
style="fill:#000000;fill-opacity:0.09661835;fill-rule:nonzero;stroke:none;stroke-width:0.26499999;stroke-miterlimit:4;stroke-dasharray:none"
id="path6921"
sodipodi:sides="4"
sodipodi:cx="117.63232"
sodipodi:cy="102.13793"
sodipodi:r1="5.7652407"
sodipodi:r2="2.8826203"
sodipodi:arg1="1.4464413"
sodipodi:arg2="2.2318395"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 118.34741,107.85865 -2.48485,-3.44532 -3.95096,-1.56031 3.44531,-2.48485 1.56032,-3.950959 2.48484,3.445318 3.95097,1.560311 -3.44532,2.48485 z"
inkscape:transform-center-x="1.481982e-006"
inkscape:transform-center-y="-1.1450451e-006" />
<path
sodipodi:type="star"
style="fill:#000000;fill-opacity:0.09661835;fill-rule:nonzero;stroke:none;stroke-width:0.26499999;stroke-miterlimit:4;stroke-dasharray:none"
id="path6923"
sodipodi:sides="4"
sodipodi:cx="317.5"
sodipodi:cy="75.679596"
sodipodi:r1="3.949214"
sodipodi:r2="1.974607"
sodipodi:arg1="1.6614562"
sodipodi:arg2="2.4468544"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 317.14246,79.612591 -1.1594,-2.668882 -2.41606,-1.621658 2.66889,-1.15939 1.62165,-2.41606 1.1594,2.668882 2.41606,1.621658 -2.66889,1.15939 z"
inkscape:transform-center-x="4.0000001e-006" />
<path
sodipodi:type="star"
style="fill:#000000;fill-opacity:0.09661835;fill-rule:nonzero;stroke:none;stroke-width:0.26499999;stroke-miterlimit:4;stroke-dasharray:none"
id="path6925"
sodipodi:sides="4"
sodipodi:cx="230.97409"
sodipodi:cy="57.802349"
sodipodi:r1="2.2613134"
sodipodi:r2="1.1306567"
sodipodi:arg1="1.2490458"
sodipodi:arg2="2.0344439"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 231.68918,59.947619 -1.22073,-1.13398 -1.63963,-0.2962 1.13398,-1.220735 0.2962,-1.639625 1.22074,1.13398 1.63962,0.2962 -1.13398,1.220735 z"
inkscape:transform-center-x="2.9099099e-006" />
<path
sodipodi:type="star"
style="fill:#000000;fill-opacity:0.09661835;fill-rule:nonzero;stroke:none;stroke-width:0.26499999;stroke-miterlimit:4;stroke-dasharray:none"
id="path6927"
sodipodi:sides="4"
sodipodi:cx="260.65033"
sodipodi:cy="106.42847"
sodipodi:r1="1.59899"
sodipodi:r2="0.79949504"
sodipodi:arg1="2.0344439"
sodipodi:arg2="2.8198421"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 259.93524,107.85865 -0.0434,-1.17736 -0.67171,-0.96791 1.17736,-0.0434 0.96791,-0.67171 0.0434,1.17735 0.67171,0.96792 -1.17736,0.0434 z"
inkscape:transform-center-x="3.2837838e-006"
inkscape:transform-center-y="-1.1990991e-006" />
<path
sodipodi:type="star"
style="fill:#000000;fill-opacity:0.09661835;fill-rule:nonzero;stroke:none;stroke-width:0.26499999;stroke-miterlimit:4;stroke-dasharray:none"
id="path6925-2"
sodipodi:sides="4"
sodipodi:cx="87.956078"
sodipodi:cy="127.16609"
sodipodi:r1="2.2613134"
sodipodi:r2="1.1306567"
sodipodi:arg1="1.2490458"
sodipodi:arg2="2.0344439"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 88.671168,129.31136 -1.220735,-1.13398 -1.639626,-0.2962 1.13398,-1.22073 0.296201,-1.63963 1.220735,1.13398 1.639625,0.2962 -1.13398,1.22074 z"
inkscape:transform-center-x="2.4830149e-006"
transform="matrix(0.91666667,0,0,1,7.1509005,0)" />
<path
style="fill:#000000;fill-opacity:0.09661835;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 278.09961 779.17383 L 273.55469 781.65234 L 282.30273 807.51562 L 265.05078 812.48633 L 316.54688 967.83984 L 396.62305 947.04297 L 369.47266 782.39453 L 286.1543 806.4043 L 278.09961 779.17383 z M 341.34766 817.19922 L 346.93555 855.88672 L 315.41797 863.33008 L 300.96094 827.68945 L 341.34766 817.19922 z M 355.63477 872.21094 L 358.58984 909.34961 L 332.12891 916.2207 L 318.54883 881.09766 L 355.63477 872.21094 z "
transform="matrix(0.26458333,0,0,0.26458333,0,11.249983)"
id="path6944" />
<path
style="fill:#000000;fill-opacity:0.09661835;stroke:none;stroke-width:0.24600939px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 43.603475,280.06036 -10.564819,-28.58824 -6.574764,2.28618 -0.916385,-3.37337 6.23111,-2.47535 -2.011396,-5.37101 -6.431418,2.16468 -1.002197,-3.66725 6.348194,-1.96596 -2.123972,-6.85578 3.11982,-0.81419 1.86458,6.45975 6.080155,-1.86705 0.744318,3.27357 -5.700174,1.79072 1.953823,5.78639 6.048884,-2.08256 1.308957,3.64208 -6.116434,2.13257 11.116753,28.12778 z"
id="path6891-8"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccccccccccc" />
<path
style="fill:#000000;fill-opacity:0.09661835;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 411.98753,264.70523 3.91734,-12.57157 -7.13355,-3.53259 -1.396,-8.02014 5.81668,-6.93436 10.92618,-0.52461 7.35863,5.88054 0.0806,8.11138 -5.67524,6.95564 -7.37536,-0.96565 -1.04168,4.03744 5.21293,-1.96321 1.42492,-6.58308 5.61592,-1.7579 5.33002,3.98422 -1.35343,5.14755 -3.67857,2.33882 -4.89966,-2.03926 -7.52592,2.91667 -1.60892,6.84465 z"
id="path6985"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccccccccccc" />
<ellipse
style="fill:#ffffff;fill-opacity:0.56038663;stroke:none;stroke-width:0.26458332"
id="path5313-36"
cx="12.969777"
cy="40.717304"
rx="60.384743"
ry="31.365929" />
<ellipse
style="fill:#ffffff;fill-opacity:0.56038663;stroke:none;stroke-width:0.28271547"
id="path5313-36-0"
cx="525.27576"
cy="33.454243"
rx="68.944794"
ry="31.365929" />
<ellipse
style="fill:#ffffff;fill-opacity:0.56038663;stroke:none;stroke-width:0.26458332"
id="path5313-367"
cx="91.30719"
cy="8.5522709"
rx="60.384743"
ry="31.365929" />
<ellipse
style="fill:#ffffff;fill-opacity:0.56038663;stroke:none;stroke-width:0.33264157"
id="path5313-5-9"
cx="445.12253"
cy="3.1049659"
rx="78.023628"
ry="38.369606" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB