Mediaserver now based on X/GTK window.

This commit is contained in:
P.M. Kuipers 2021-04-26 15:07:02 +02:00
parent 7a839a71a6
commit fb884fc3e9
12 changed files with 851 additions and 147 deletions

View File

@ -1,4 +1,4 @@
#!/usr/bin/python #!/usr/bin/python3
import mediaserver.mediaserver import mediaserver.mediaserver
mediaserver.mediaserver.Run() mediaserver.mediaserver.Run()

View File

@ -1,51 +0,0 @@
# shared package configuration settings for applications in KHMedia
##### Common #####
# folder to store user specific configuration
user_cfg_folder = "~/.khmedia"
# khmedia config file
config_file = "khmedia_config.xml"
# khmedia example config resource
example_config_resource = "khmedia_config.example.xml"
# location of the khsystem_need_config file
khsystem_need_config = "~/.khsystem_config_needed"
##### Player #####
#default folders to look for song files (last in line is the fallback folder that will be created if none are existing)
default_song_folders = ["/usr/share/khmedia/songs","/usr/local/share/khmedia/songs","~/Songs"]
#default folders to look for background music files (last in line is the fallback folder that will be created if none are existing)
default_music_folders = ["/usr/share/khmedia/music","/usr/local/share/khmedia/music","~/Music"]
# files that are considered playable music files
music_extensions = [".mp3",".wav",".ogg",".m4b",".m4a"]
# default volume for song playback (Linear 0.0 <= value <= 1.0 )
default_song_volume = 0.5
# default volume for music playback (Linear 0.0 <= value <= 1.0 )
default_music_volume = 0.12
##### Recorder #####
#default folder to store recordings
# You can use the following replacements
# {XDG_DESKTOP_DIR}
# {XDG_DOWNLOAD_DIR}
# {XDG_TEMPLATES_DIR}
# {XDG_PUBLICSHARE_DIR}
# {XDG_DOCUMENTS_DIR}
# {XDG_MUSIC_DIR}
# {XDG_PICTURES_DIR}
# {XDG_VIDEOS_DIR}
# lowercase text between brackets is replaced by the corresponding text in the
# currently loaded translation table
# e.g. {something} can be replaced by "Something" or "Iets" if that is defined in the
# translation tabled
default_recordings_folder = "{XDG_DESKTOP_DIR}/{dir_recordings}"

View File

@ -9,7 +9,7 @@ from gi.repository import Gst
GObject.threads_init() GObject.threads_init()
Gst.init(None) Gst.init(None)
""" from . resources import Resources
from mediaserver.basicplayer import BasicPlayer
player = BasicPlayer() # set Resources to use resources from this package
""" Resources.SetPackage(__name__)

View File

@ -7,9 +7,11 @@ import sys, os
# perform gstreamer imports (python3 style) # perform gstreamer imports (python3 style)
import gi import gi
gi.require_version('Gst','1.0') gi.require_version('Gst','1.0')
gi.require_version('GstGL', '1.0')
gi.require_version('GstVideo', '1.0')
from gi.repository import GObject from gi.repository import GObject
from gi.repository import Gst from gi.repository import Gst, GstGL, GstVideo
class BasicPlayer(GObject.GObject): class BasicPlayer(GObject.GObject):
@ -51,9 +53,9 @@ class BasicPlayer(GObject.GObject):
def __init__(self): def __init__(self):
GObject.GObject.__init__(self) GObject.GObject.__init__(self)
# setup gstreamer # setup gstreamer
self.pipeline_state = Gst.State.NULL; self.pipeline_state = Gst.State.NULL
self.window_handle = 0
self.prepare_gstreamer() self.prepare_gstreamer()
self.buffering = False self.buffering = False
def __del__(self): def __del__(self):
@ -63,17 +65,16 @@ class BasicPlayer(GObject.GObject):
if property.name == 'volume': if property.name == 'volume':
return self.pipeline.get_property('volume') return self.pipeline.get_property('volume')
else: else:
raise AttributeError, 'unknown property %s' % property.name raise AttributeError("unknown property '{0}'".format(property.name_))
def do_set_property(self, property, value): def do_set_property(self, property, value):
if property.name == 'volume': if property.name == 'volume':
volume = clamp(value,0.0,1.0) volume = clamp(value,0.0,1.0)
self.pipeline.set_property('volume', volume) self.pipeline.set_property('volume', volume)
#print "Set volume to {0}, got {1}".format(volume,self.pipeline.get_property('volume')) #print("Set volume to {0}, got {1}".format(volume,self.pipeline.get_property('volume')))
self.emit('volume-changed',volume) self.emit('volume-changed',volume)
else: else:
raise AttributeError, 'unknown property %s' % property.name raise AttributeError("unknown property '{0}'".format(property.name_))
def play(self): def play(self):
# start playback ;) # start playback ;)
if self.player_state in ["READY","PAUSED",]: if self.player_state in ["READY","PAUSED",]:
@ -83,20 +84,20 @@ class BasicPlayer(GObject.GObject):
def load(self,file): def load(self,file):
self.source = "file://" + file self.source = "file://" + file
#print "Attempting to load: '{0}'".format(file) #print( "Attempting to load: '{0}'".format(file))
self.pipeline.set_state(Gst.State.NULL); self.pipeline.set_state(Gst.State.NULL)
self.pipeline.set_property("uri", self.source) self.pipeline.set_property("uri", self.source)
self.pipeline.set_state(Gst.State.PAUSED); self.pipeline.set_state(Gst.State.PAUSED)
self.player_state = "LOADING" self.player_state = "LOADING"
self.tags.clear() self.tags.clear()
def load_uri(self,uri): def load_uri(self,uri):
self.source = uri self.source = uri
#print "Attempting to load: '{0}'".format(file) #print("Attempting to load: '{0}'".format(file))
self.pipeline.set_state(Gst.State.NULL); self.pipeline.set_state(Gst.State.NULL)
self.pipeline.set_property("uri", self.source) self.pipeline.set_property("uri", self.source)
self.pipeline.set_state(Gst.State.PAUSED); self.pipeline.set_state(Gst.State.PAUSED)
self.player_state = "LOADING" self.player_state = "LOADING"
self.tags.clear() self.tags.clear()
@ -104,8 +105,7 @@ class BasicPlayer(GObject.GObject):
def stop(self): def stop(self):
if self.player_state in ["PLAYING","PAUSED",]: if self.player_state in ["PLAYING","PAUSED",]:
self._running = False self._running = False
self.pipeline.set_state(Gst.State.READY) self.unload()
self.player_state = "READY"
self.emit('playback-stopped') self.emit('playback-stopped')
def pause(self,notify=True): def pause(self,notify=True):
@ -116,42 +116,49 @@ class BasicPlayer(GObject.GObject):
if notify: if notify:
self.emit('playback-paused') self.emit('playback-paused')
def _finished(self): def finished(self):
self._running = False self._running = False
self.pipeline.set_state(Gst.State.READY) self.unload()
self.seek(0)
self.player_state = "PAUSED"
self.emit('playback-finished') self.emit('playback-finished')
def unload(self):
self.stop_gstreamer()
self.prepare_gstreamer()
def prepare_gstreamer(self): def prepare_gstreamer(self):
# bin containing the recorder stuff # bin containing the recorder stuff
self.pipeline = Gst.ElementFactory.make("playbin", None) self.pipeline = Gst.ElementFactory.make("playbin", None)
videosink = Gst.ElementFactory.make("glimagesink", None) self.videosink = Gst.ElementFactory.make("glimagesink", None)
alsasink = Gst.ElementFactory.make("alsasink", None) self.videosink.set_window_handle(self.window_handle)
self.alsasink = Gst.ElementFactory.make("alsasink", None)
# set output device # set output device
#devicename = self.config["Devices.Output"].getStr('name') #devicename = self.config["Devices.Output"].getStr('name')
#if common.check_alsadev(devicename): #if common.check_alsadev(devicename):
# alsasink.set_property('device', devicename) # alsasink.set_property('device', devicename)
self.pipeline.set_property("video-sink", videosink) self.pipeline.set_property("video-sink", self.videosink)
self.pipeline.set_property("audio-sink", alsasink) self.pipeline.set_property("audio-sink", self.alsasink)
# connect the bus listener to the message function # connect the bus listener to the message function
self.bus = self.pipeline.get_bus() self.bus = self.pipeline.get_bus()
self.bus.add_signal_watch() self.bus.add_signal_watch()
self.bus.connect("message", self.on_message) self.busconnection = self.bus.connect("message", self.on_message)
self.player_state = "NONE" self.player_state = "NULL"
def link_to_window(self,window_handle):
self.window_handle = window_handle
self.videosink.set_window_handle(window_handle)
def stop_gstreamer(self): def stop_gstreamer(self):
try: try:
self.pipeline.get_bus().disconnect(self.busconnection) self.pipeline.get_bus().disconnect(self.busconnection)
self.pipeline.get_bus().remove_signal_watch() self.pipeline.get_bus().remove_signal_watch()
self.pipeline.set_state(Gst.State.NULL) self.pipeline.set_state(Gst.State.NULL)
except GObject.GError, e: except GObject.GError as e:
self.set_sensitive(True) self.set_sensitive(True)
def seek(self,seconds): def seek(self,seconds):
@ -162,21 +169,21 @@ class BasicPlayer(GObject.GObject):
if result is not None and result[0]: if result is not None and result[0]:
return float(result[1]) / Gst.SECOND return float(result[1]) / Gst.SECOND
else: else:
return -1; return -1
def position(self): def position(self):
result = self.pipeline.query_position(Gst.Format.TIME) result = self.pipeline.query_position(Gst.Format.TIME)
if result is not None and result[0]: if result is not None and result[0]:
return float(result[1]) / Gst.SECOND return float(result[1]) / Gst.SECOND
else: else:
return -1; return -1
def on_message(self, bus, message): def on_message(self, bus, message):
t = message.type t = message.type
# detect end of stream, and # detect end of stream, and
if t == Gst.MessageType.EOS: if t == Gst.MessageType.EOS:
self._finished() self.finished()
elif t == Gst.MessageType.ERROR: elif t == Gst.MessageType.ERROR:
self.pipeline.set_state(Gst.State.NULL) self.pipeline.set_state(Gst.State.NULL)
err, debug = message.parse_error() err, debug = message.parse_error()
@ -185,23 +192,23 @@ class BasicPlayer(GObject.GObject):
self._running = False self._running = False
self.emit('playback-finished') self.emit('playback-finished')
self.emit('playback-error', self.player_state, err, debug) self.emit('playback-error', self.player_state, err, debug)
self.player_state = "NONE" self.player_state = "NULL"
elif t == Gst.MessageType.TAG: elif t == Gst.MessageType.TAG:
tags = message.parse_tag(); tags = message.parse_tag()
for i in range(0,tags.n_tags()): for i in range(0,tags.n_tags()):
key = tags.nth_tag_name(i) key = tags.nth_tag_name(i)
val = tags.get_value_index(key,0) val = tags.get_value_index(key,0)
self.tags[key] = val; self.tags[key] = val
elif t == Gst.MessageType.ASYNC_DONE: elif t == Gst.MessageType.ASYNC_DONE:
if message.src == self.pipeline: if message.src == self.pipeline:
pass pass
elif t == Gst.MessageType.STREAM_STATUS: elif t == Gst.MessageType.STREAM_STATUS:
(status,owner) = message.parse_stream_status() (status,owner) = message.parse_stream_status()
# print "Stream status: {0} (by {1})\n".format(status,owner) # print("Stream status: {0} (by {1})\n".format(status,owner))
pass pass
elif t == Gst.MessageType.BUFFERING: elif t == Gst.MessageType.BUFFERING:
pct = message.parse_buffering() pct = message.parse_buffering()
print "Buffering: {0}%".format(pct) print("Buffering: {0}%".format(pct))
self.emit('playback-buffering',pct) self.emit('playback-buffering',pct)
if pct != 100: if pct != 100:
if self.pipeline_state == Gst.State.PLAYING: if self.pipeline_state == Gst.State.PLAYING:
@ -212,13 +219,13 @@ class BasicPlayer(GObject.GObject):
self.pipeline.set_state(Gst.State.PLAYING) self.pipeline.set_state(Gst.State.PLAYING)
self.buffering = False self.buffering = False
elif t == Gst.MessageType.DURATION_CHANGED: elif t == Gst.MessageType.DURATION_CHANGED:
# print "Stream duration changed: {0}\n".format(float(self.pipeline.query_duration(Gst.Format.TIME)[1])/Gst.SECOND) # print("Stream duration changed: {0}\n".format(float(self.pipeline.query_duration(Gst.Format.TIME)[1])/Gst.SECOND))
pass pass
elif t == Gst.MessageType.STATE_CHANGED: elif t == Gst.MessageType.STATE_CHANGED:
if message.src == self.pipeline: if message.src == self.pipeline:
(old,new,pending) = message.parse_state_changed() (old,new,pending) = message.parse_state_changed()
self.pipeline_state = new self.pipeline_state = new
# print "State changed from '{0}' to '{1}' pending '{2}'\n".format(old,new,pending) # print("State changed from '{0}' to '{1}' pending '{2}'\n".format(old,new,pending))
if old == Gst.State.READY and new == Gst.State.PAUSED and self.player_state == "LOADING": if old == Gst.State.READY and new == Gst.State.PAUSED and self.player_state == "LOADING":
self.pipeline.set_state(Gst.State.PAUSED) self.pipeline.set_state(Gst.State.PAUSED)
self.player_state = "READY" self.player_state = "READY"

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

View File

@ -0,0 +1,297 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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"
inkscape:export-ydpi="95.921425"
inkscape:export-xdpi="95.921425"
inkscape:export-filename="background-base.png"
sodipodi:docname="background-base.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
version="1.1"
id="svg2985"
height="1080px"
width="1920px">
<defs
id="defs2987">
<linearGradient
id="linearGradient5275">
<stop
id="stop5277"
offset="0"
style="stop-color:#3891ee;stop-opacity:1;" />
<stop
id="stop5279"
offset="1"
style="stop-color:#aad6f3;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient5263">
<stop
id="stop5265"
offset="0"
style="stop-color:#1e4f71;stop-opacity:1;" />
<stop
id="stop5267"
offset="1"
style="stop-color:#0f243f;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient5253">
<stop
id="stop5255"
offset="0"
style="stop-color:#676767;stop-opacity:1;" />
<stop
style="stop-color:#2c2c2c;stop-opacity:1;"
offset="0.5"
id="stop5261" />
<stop
id="stop5257"
offset="1"
style="stop-color:#292929;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient5245">
<stop
id="stop5247"
offset="0"
style="stop-color:#295a7d;stop-opacity:1;" />
<stop
id="stop5249"
offset="1"
style="stop-color:#0f202d;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3803">
<stop
id="stop3805"
offset="0"
style="stop-color:#295a7d;stop-opacity:1;" />
<stop
id="stop3807"
offset="1"
style="stop-color:#295a7d;stop-opacity:1;" />
</linearGradient>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath11388-1">
<path
inkscape:connector-curvature="0"
d="m 0,1458.48 1420.5,0 0,-1458.42 L 0,0.06 0,1458.48 z"
id="path11390-7" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath11388">
<path
inkscape:connector-curvature="0"
d="m 0,1458.48 1420.5,0 0,-1458.42 L 0,0.06 0,1458.48 z"
id="path11390" />
</clipPath>
<radialGradient
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.81911771,-0.68259818,0.85956631,1.0314794,-386.87512,555.07876)"
r="117.19927"
fy="625.16315"
fx="832"
cy="625.16315"
cx="832"
id="radialGradient5251"
xlink:href="#linearGradient5245"
inkscape:collect="always" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="552"
x2="976"
y1="680"
x1="736"
id="linearGradient5259"
xlink:href="#linearGradient5253"
inkscape:collect="always" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="472"
x2="1088"
y1="552"
x1="976"
id="linearGradient5269"
xlink:href="#linearGradient5263"
inkscape:collect="always" />
<linearGradient
gradientTransform="translate(47.292177,608)"
gradientUnits="userSpaceOnUse"
y2="296"
x2="1072"
y1="216"
x1="704"
id="linearGradient5281"
xlink:href="#linearGradient5275"
inkscape:collect="always" />
<linearGradient
y2="552"
x2="976"
y1="680"
x1="736"
gradientUnits="userSpaceOnUse"
id="linearGradient5298"
xlink:href="#linearGradient5253"
inkscape:collect="always" />
<radialGradient
r="117.19927"
fy="625.16315"
fx="832"
cy="625.16315"
cx="832"
gradientTransform="matrix(0.81911771,-0.68259818,0.85956631,1.0314794,-386.87512,555.07876)"
gradientUnits="userSpaceOnUse"
id="radialGradient5300"
xlink:href="#linearGradient5245"
inkscape:collect="always" />
<linearGradient
y2="472"
x2="1088"
y1="552"
x1="976"
gradientUnits="userSpaceOnUse"
id="linearGradient5302"
xlink:href="#linearGradient5263"
inkscape:collect="always" />
<linearGradient
y2="296"
x2="1072"
y1="216"
x1="704"
gradientTransform="translate(47.292177,608)"
gradientUnits="userSpaceOnUse"
id="linearGradient5304"
xlink:href="#linearGradient5275"
inkscape:collect="always" />
</defs>
<sodipodi:namedview
inkscape:document-rotation="0"
inkscape:window-maximized="1"
inkscape:window-y="13"
inkscape:window-x="-8"
inkscape:window-height="987"
inkscape:window-width="1680"
showgrid="true"
inkscape:current-layer="g5289"
inkscape:document-units="px"
inkscape:cy="586.97396"
inkscape:cx="815.92465"
inkscape:zoom="0.84852814"
inkscape:pageshadow="2"
inkscape:pageopacity="0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#000000"
id="base"
inkscape:pagecheckerboard="true">
<inkscape:grid
originy="0"
originx="0"
spacingy="16"
spacingx="16"
snapvisiblegridlinesonly="true"
enabled="true"
visible="true"
empspacing="4"
id="grid2993"
type="xygrid" />
</sodipodi:namedview>
<metadata
id="metadata2990">
<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:groupmode="layer"
inkscape:label="Layer 1"
id="layer1">
<g
transform="matrix(0.82552894,0,0,0.82552894,161.90914,13.721795)"
id="g5289">
<g
id="g5283">
<path
sodipodi:nodetypes="ccccccccccccccccccccsccccccccccccccccccccccscccccscccccccccsccc"
inkscape:connector-curvature="0"
d="m 773.81281,668.57144 c 9.31253,15.87066 19.23984,30.44159 29.7526,43.40802 0.771,1.07041 1.65891,2.07332 2.36633,3.0361 -9.73319,-1.06337 -19.46548,-7.9152 -29.06963,-20.60007 -4.8637,-6.44037 -9.27573,-13.26402 -13.21172,-20.44587 l -2.84599,-5.4294 c -2.74665,-5.45534 -5.23113,-11.09959 -7.47108,-16.94028 -6.19118,-15.72345 -7.47685,-26.6653 -4.25923,-32.93972 1.73575,4.32392 3.58797,8.86205 5.68339,13.28143 4.82321,-2.17847 8.51389,-1.58852 11.02472,1.97037 3.26941,4.34778 1.99482,8.74263 -3.83438,12.85867 2.64899,5.24154 5.43531,10.51998 8.42749,15.84683 M 965.71546,541.39408 c -17.11483,-27.85634 -36.21161,-51.27816 -57.26468,-70.24783 -2.44573,1.55638 -4.67139,1.62892 -6.78796,-0.19459 -2.16149,-1.63882 -3.06367,-4.27894 -2.68227,-7.83333 -9.24814,-7.59324 -18.8481,-14.21836 -28.81963,-20.16706 -22.4894,-13.15528 -42.77703,-20.11949 -61.3309,-20.66574 -1.01847,5.61096 -2.8886,8.1918 -5.86092,7.7861 -3.09006,-0.35215 -4.93514,-2.76542 -5.60541,-7.08385 -9.72592,1.0542 -18.93825,4.07797 -27.48809,9.01422 -19.26473,11.1225 -31.70663,29.54251 -37.28965,55.41244 5.21288,0.33897 7.33285,2.47086 6.40587,6.65779 -0.42574,2.6851 -3.09231,3.28645 -7.88245,2.09719 -1.36929,8.68583 -1.85791,18.1045 -1.73171,28.0631 0.20285,22.99133 4.00234,46.17224 11.01205,69.63592 -12.10488,8.51873 -15.77653,25.85174 -10.91271,51.91113 2.35413,12.36841 6.40684,23.92398 12.14707,34.66435 l 2.274,4.06368 c 7.73977,13.2114 18.13982,25.15207 31.20355,35.85862 14.87902,12.07873 31.55637,17.49725 50.3449,16.07493 10.65613,10.56197 21.7131,19.9832 33.52163,28.06117 2.58462,-6.0533 5.28802,-8.20589 8.004,-6.13666 2.58991,1.85335 2.94894,6.1927 1.08256,12.43754 1.83132,1.06445 3.69475,2.13201 5.46358,3.0882 37.60041,22.21332 69.76337,26.5937 96.43395,13.02851 -1.85725,-5.32186 -2.238,-8.30633 -1.09809,-8.96446 2.40647,-2.15436 5.08028,-0.19069 7.71828,5.43097 24.07447,-15.42936 36.60567,-43.17464 37.61907,-83.27935 -2.4695,-0.85478 -3.9408,-1.84563 -4.4539,-3.52683 0.09,-2.47677 1.6953,-3.40365 4.682,-2.70312 -0.1938,-0.33559 -0.1527,-0.79951 -0.1181,-1.26697 -0.297,-36.31703 -9.4568,-73.75975 -27.32176,-112.07275 -3.13606,-0.16682 -5.34329,-1.31734 -6.59329,-3.48241 -1.5125,-2.61973 -0.99069,-4.89842 1.61362,-6.70513 -1.66124,-3.28566 -3.42974,-6.58733 -5.25755,-9.91884 z m -1.48261,25.68205 c 21.2787,39.52627 32.34441,77.71366 33.4109,114.61938 1.16057,39.91767 -9.92803,66.53415 -33.18406,79.96103 -23.25494,13.42625 -51.95696,9.78289 -85.94856,-11.17978 -7.2198,-4.34756 -13.98881,-9.23684 -20.7442,-14.61752 -0.24492,-0.16171 -0.53297,-0.43563 -0.77789,-0.59734 l -6.71889,-5.57495 c -21.49824,-18.58508 -40.6758,-42.29165 -57.74905,-71.0868 l -4.14063,-7.17177 c -8.60376,-15.26749 -15.62786,-30.28352 -21.29427,-45.00776 -5.2026,-14.01368 -9.14151,-27.69607 -11.8473,-41.33263 -2.2417,-11.78273 -3.55106,-23.48311 -3.94652,-34.96057 -1.08965,-39.79983 10.09987,-66.48902 33.35481,-79.91527 23.25603,-13.42687 51.85713,-9.71081 85.77781,11.13402 31.7497,19.64629 59.52686,48.71237 83.30366,87.47367 z"
style="fill:url(#linearGradient5298);fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path3024" />
<path
sodipodi:nodetypes="ccccccccccccscccc"
inkscape:connector-curvature="0"
d="m 806.64313,651.06023 0.65318,1.31885 5.95896,9.00871 c 3.40066,4.57512 7.06185,8.25648 11.12341,11.07882 6.35431,4.68848 11.61273,5.88884 15.60186,3.58571 0.22842,-0.13187 0.44901,-0.2448 0.72234,-0.56137 3.11122,-2.24371 2.76067,-6.00339 -1.33308,-11.24646 -4.34674,-5.68878 -9.19391,-12.79182 -14.71949,-21.3074 -0.24356,-0.3753 -0.47313,-0.73291 -0.71037,-1.10541 l -5.351,-9.14321 c -2.46544,-4.62383 -4.4346,-9.01924 -5.95822,-13.19493 -2.34651,-6.69927 -5.226,-9.30919 -8.72472,-7.73665 l -0.78483,0.45312 c -3.98913,2.30313 -5.62568,7.37604 -4.80499,15.11503 0.47594,5.03684 1.88662,10.14022 4.07971,15.25376 l 0.0625,0.10825 c 1.33064,2.79106 2.59145,5.58212 4.18474,8.37318 z"
style="fill:#4c5f67;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path3022" />
<path
sodipodi:nodetypes="ccsccccccsccccsccccccsccc"
inkscape:connector-curvature="0"
d="m 949.61198,551.37704 c -22.8309,-37.27735 -49.24936,-65.50811 -79.37993,-84.61506 -32.1881,-20.47394 -59.30554,-24.25273 -81.07851,-11.6821 -21.65929,12.505 -31.83723,37.81629 -30.314,75.9946 0.43012,11.01 1.76211,22.25707 4.21573,33.61435 2.60186,12.93157 6.44915,26.19776 11.61875,39.62427 1.25675,3.22927 2.51796,6.44874 4.02071,9.83908 l 0.86296,-0.3178 c -1.0356,-5.47871 -1.67491,-11.06353 -1.65126,-16.54758 -0.19858,-19.03894 5.4094,-31.99063 16.80955,-38.57251 11.51164,-6.64625 25.42387,-4.96456 41.80954,4.72876 13.64796,8.18306 25.7638,20.04558 36.22985,35.62693 l 7.67688,12.67176 c 10.55577,19.23967 15.89048,37.83048 16.18702,55.78674 0.20183,19.03707 -5.3604,31.81801 -16.87204,38.46426 -11.40015,6.58187 -25.35813,5.07094 -41.74705,-4.62051 -3.48432,-2.08751 -6.74515,-4.33293 -9.90713,-6.90965 l -0.24664,0.32281 c 10.15598,12.06317 21.1017,23.38171 33.11749,33.92367 0.30633,0.27059 0.5278,0.42418 0.84038,0.70559 6.32806,5.16552 12.86671,9.92078 19.72276,14.16081 32.30177,20.40831 59.38908,24.38492 81.04838,11.87992 21.77296,-12.57063 31.98103,-38.07973 30.34413,-76.19242 -1.40626,-35.24672 -12.42558,-71.83901 -32.95964,-109.90027 z"
style="fill:url(#radialGradient5300);fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path11394" />
<path
sodipodi:nodetypes="csccsccsccscccscccccccscccccccccccccccccccc"
id="path5849"
d="M 1063.3307,481.9687 C 1033.1394,433.41082 996.07733,395.31989 958.83377,372.16215 943.90799,362.88142 928.94883,355.9839 914.24161,351.86376 l 5.35012,19.39168 c 9.20393,3.60694 18.72855,8.39698 28.317,14.35899 34.93961,21.72516 70.97147,58.51072 100.30007,105.66229 l 12.9333,22.33865 c 26.6684,49.43987 40.7838,99.59392 42.1416,141.11645 0.3679,11.25026 -0.236,21.86091 -1.7003,31.61736 l 14.2536,13.31304 c 3.5992,-14.53291 5.1207,-30.49674 4.5593,-47.66561 -1.4468,-44.24151 -16.146,-95.93055 -43.5896,-146.81179 z m -23.0732,14.22346 c -29.3491,-47.42897 -65.47113,-84.63165 -101.76433,-107.19846 -5.57616,-3.46722 -11.17271,-6.48519 -16.7395,-9.24367 l 6.11104,22.27213 c 34.05348,21.17417 69.21172,57.14425 97.73089,103.21239 l 12.1208,20.93136 c 25.8075,47.88941 39.4425,96.5024 40.7577,136.71934 0.018,0.56242 -0.014,1.06499 -5e-4,1.6241 l 16.2114,15.1416 c 0.4113,-6.30898 0.6048,-12.77404 0.3863,-19.45599 -1.4013,-42.85006 -15.6169,-92.89868 -42.1774,-142.17835 z m -23.0191,14.19221 c -25.04009,-40.76231 -55.27761,-73.75715 -86.24547,-96.13146 l 7.38788,26.98369 c 23.00719,20.21694 45.41761,46.62992 64.64009,77.89747 l 11.2584,19.62507 c 18.0541,33.63135 29.9103,67.61102 35.514,98.5745 l 18.8347,17.56025 c -3.4922,-38.27565 -16.7632,-81.42329 -39.6469,-124.04549 z m -23.04623,14.20783 c -15.53,-25.64525 -33.20703,-48.0782 -51.83429,-66.77963 l 9.49539,34.57151 c 10.06474,12.41261 19.71762,25.99104 28.60862,40.67657 l 10.33762,18.28028 c 8.91594,16.87096 16.14379,33.80877 21.86859,50.37751 l 23.3617,21.83872 c -6.3462,-25.83185 -16.7048,-52.96242 -30.9886,-79.86134 z"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:url(#linearGradient5302);fill-opacity:1;stroke:none;stroke-width:13.0685;marker:none;enable-background:accumulate"
inkscape:connector-curvature="0" />
</g>
<g
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:url(#linearGradient5304);fill-opacity:1;stroke:none"
id="text5271"
aria-label="Mediacore">
<path
id="path867"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:118.022px;line-height:1.25;font-family:Mistral;-inkscape-font-specification:Mistral;fill:url(#linearGradient5304);fill-opacity:1"
d="m 751.88904,846.89072 q -0.17288,-1.15256 -0.40339,-2.42037 0,0.51865 0.17288,-0.80679 0.17288,-1.32545 0.46102,-4.55261 0.46103,-0.63391 0.63391,-1.09493 0.23051,-0.51865 0.4034,-0.92205 -0.51865,-0.63391 -0.80679,-1.0373 -0.23052,-0.46102 -0.23052,-0.74916 0.46103,-3.51531 0.86442,-6.68484 0.0576,-0.86442 0.97968,-1.95935 0.97967,-1.09493 2.65088,-2.36275 1.32544,-1.09493 2.59326,-1.84409 1.26781,-0.74917 2.42037,-1.21019 1.55596,-0.51865 1.8441,-0.86442 0.28814,-0.34577 0.6339,-0.34577 0.92205,0 1.38307,0.92205 0.51866,0.92205 0.51866,2.76614 0,0.97968 -0.51866,2.70851 -0.46102,1.72884 -0.46102,2.53563 0,0.34577 0.0576,2.65089 0.11525,2.30512 0.28814,6.62721 0.0576,3.11191 0.86442,6.62721 0.86442,3.51531 2.18986,7.31875 1.78646,4.956 3.86107,7.434 2.07461,2.42038 4.55261,2.42038 1.95935,0 5.18651,-2.53563 3.22716,-2.53563 7.60689,-7.60689 3.34242,-3.9187 5.93567,-7.31875 2.65089,-3.40005 4.26447,-6.22381 1.49833,-2.53563 3.5153,-4.55261 2.01698,-2.01698 4.61024,-3.68819 0.80679,-0.46102 1.32544,-0.74916 0.51865,-0.28814 0.80679,-0.28814 1.03731,0 1.55596,1.55595 0.57628,1.55596 0.57628,4.61024 -0.34577,2.82377 -0.57628,5.58991 -0.51865,4.32209 -1.55596,8.98995 -0.97967,4.66787 -2.59325,9.6815 -0.8068,2.53563 -1.38307,4.43735 -0.57628,1.90172 -0.8068,3.22716 -0.11525,0.74917 -0.34576,1.90172 -0.17289,1.09493 -0.4034,2.59326 -0.57628,1.4407 -1.26781,2.8814 -0.57628,1.15256 -0.97968,2.76614 -0.34577,1.61358 -0.63391,3.74581 0,0.4034 -0.0576,1.03731 -0.0576,0.6339 -0.11526,1.32544 -1.32544,5.87805 -2.70851,11.41033 -0.11526,0.51865 -0.51865,1.32544 -0.74917,0.23051 -1.72884,0.97968 -0.92205,0.74916 -1.95935,2.0746 -1.0373,1.15256 -1.72884,1.72884 -0.69153,0.51865 -1.0373,0.51865 -0.46102,0 -0.74916,-0.28814 -0.28814,-0.28814 -0.28814,-0.97967 0.0576,-0.46103 0.17288,-0.74917 0.80679,-1.95935 1.38307,-5.64753 0.63391,-3.68819 1.15256,-9.10522 0.0576,-1.15256 0.92205,-6.22381 0.86441,-5.07126 2.53562,-14.06122 0.23052,-1.4407 0.57628,-3.5153 0.4034,-2.13224 0.97968,-4.84075 0.40339,-1.38307 0.63391,-2.36274 0.28814,-1.03731 0.28814,-1.49833 0,-0.57628 -0.23052,-0.80679 -0.17288,-0.28814 -0.57628,-0.28814 -0.34576,0 -1.26781,0.92205 -0.92205,0.86441 -2.30512,2.65088 -0.80679,0.97968 -1.67121,2.07461 -0.80679,1.09493 -1.72884,2.13223 -1.55595,1.61358 -2.88139,3.05428 l -4.26447,4.26447 q -0.57628,0.34576 -1.4407,0.86442 -0.80679,0.51865 -1.95935,1.21018 -1.09493,1.72884 -3.5153,2.99666 -2.36275,1.21018 -4.37972,1.21018 -2.42038,0 -4.66787,-1.49832 -2.18986,-1.55596 -4.26446,-4.72549 -0.92205,-1.55596 -1.8441,-3.11191 -0.86442,-1.55596 -1.90172,-3.11191 l -0.28814,0.0576 q -0.28814,0.34576 -1.09493,4.66786 -0.74916,4.32209 -1.95935,12.67814 -1.32544,8.58657 -2.01698,13.48494 -0.69153,4.89837 -0.69153,6.33907 -0.11526,1.95935 -0.74916,3.05428 -0.57628,1.03731 -1.8441,1.21019 -0.63391,0.0576 -1.78646,0.34577 -1.15256,0.23051 -2.76614,0.6339 -0.28814,-0.0576 -0.51866,-0.17288 -0.23051,-0.17288 -0.23051,-0.46102 l 0.34577,-2.13224 -0.57628,-2.18986 q 0.34577,-1.78646 0.69154,-3.45767 0.23051,-3.45768 0.40339,-6.51196 0.0576,-0.63391 0.4034,-2.13223 0.40339,-1.49833 0.40339,-2.24749 0,-0.4034 -0.17288,-1.15256 -0.17289,-0.80679 -0.17289,-1.21019 0,-3.16953 0.97968,-9.39335 1.0373,-6.22382 1.0373,-9.45098 -0.17288,-1.32544 -0.40339,-2.65089 0.28814,-2.0746 0.92204,-5.18651 0.63391,-3.11191 1.4407,-7.26112 z" />
<path
id="path869"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:118.022px;line-height:1.25;font-family:Mistral;-inkscape-font-specification:Mistral;fill:url(#linearGradient5304);fill-opacity:1"
d="m 810.90004,886.82688 q 0.69154,-1.21019 1.78647,-2.42038 1.09493,-1.26781 2.76614,-2.59325 0.17288,-1.15256 0.34577,-2.24749 0.17288,-1.15256 0.23051,-2.30512 0.17288,-0.80679 0.51865,-1.90172 0.40339,-1.09493 0.86442,-2.36275 0.51865,-1.26781 1.38307,-3.16953 0.92204,-1.90172 2.36274,-4.26447 1.21019,-1.32544 2.53563,-2.8814 1.32544,-1.61358 2.65089,-3.22716 0.6339,-0.51865 1.38307,-0.97968 0.74916,-0.46102 1.49832,-1.0373 0.69154,-0.23051 1.55596,-0.40339 0.86442,-0.17289 1.90172,-0.17289 1.4407,0 2.30512,0.28814 0.92204,0.28814 1.49832,0.97968 0.4034,0.46102 0.74917,1.38307 0.40339,0.92204 0.74916,2.24749 0.17288,1.15256 0.40339,2.53563 0,-0.34577 -0.23051,0.28814 -0.17288,0.6339 -0.57628,2.01697 l -0.51865,1.8441 q -0.80679,2.76614 -3.63056,6.3967 -2.82377,3.63056 -7.60688,8.29842 -0.4034,0.40339 -0.69154,1.0373 -0.28814,0.57628 -0.28814,1.26782 0,1.21018 0.4034,2.13223 0.46102,0.92205 1.26781,1.38307 0.46102,0.34577 1.4407,0.69154 1.0373,0.34576 2.42037,0.6339 2.24749,-0.17288 4.09158,-0.74916 1.8441,-0.57628 3.2848,-1.38307 0.28814,-0.17288 0.92204,-0.46102 0.63391,-0.34577 1.26782,-0.86442 0.74916,1.67121 1.32544,2.99665 0.57628,1.32544 0.92205,2.30512 -3.28479,3.22716 -5.99331,4.89837 -2.65088,1.61358 -4.89837,1.61358 -0.92205,0.57628 -2.13223,0.86442 -1.15256,0.23051 -2.76615,0.23051 -2.13223,0 -3.80344,-0.6339 -1.61358,-0.63391 -2.70851,-1.8441 -0.57628,-0.57628 -1.15256,-1.67121 -0.57628,-1.15256 -1.21019,-2.70851 -0.51865,-1.26782 -0.97967,-1.84409 -0.46103,-0.63391 -1.0373,-0.63391 -0.46103,0 -1.03731,0.46102 -0.57628,0.4034 -1.26781,1.26782 -0.23051,-0.86442 -0.80679,-2.13224 -0.57628,-1.26781 -1.49833,-3.16953 z m 18.44094,-18.72908 q -1.26782,0 -3.40005,3.34242 -2.13223,3.28479 -2.13223,4.84075 0,0.34576 0.11525,0.51865 0.17289,0.11525 0.63391,0.11525 0.63391,0 1.0373,-0.6339 0.4034,-0.69154 0.74917,-1.26782 0.6339,-0.57628 1.21018,-1.21019 0.63391,-0.69153 1.21019,-1.32544 0.69153,-0.80679 1.0373,-1.61358 0.34577,-0.80679 0.34577,-1.61358 0,-0.51865 -0.23051,-0.80679 -0.17289,-0.34577 -0.57628,-0.34577 z" />
<path
id="path871"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:118.022px;line-height:1.25;font-family:Mistral;-inkscape-font-specification:Mistral;fill:url(#linearGradient5304);fill-opacity:1"
d="m 839.94452,886.82688 0.34577,-0.4034 0.17288,-0.57628 q 1.0373,-1.26781 1.78647,-1.95935 0.74916,-0.74916 1.15256,-1.15256 0.28814,-0.28814 1.26781,-0.74916 0.97968,-0.46102 2.65089,-1.15256 l 0.74916,-0.46102 q 0.40339,-0.63391 1.4407,-1.8441 1.0373,-1.21018 2.478,-2.76614 0.28814,-0.34576 0.86442,-0.74916 0.57628,-0.40339 1.21018,-1.0373 1.38307,-1.32544 2.76614,-2.70851 1.38307,-1.4407 2.59326,-2.82377 0.51865,-0.51865 2.13223,-1.8441 1.61359,-1.38307 4.37973,-3.80344 0.40339,-0.28814 1.4407,-0.80679 1.0373,-0.57628 2.70851,-1.32544 0.74916,-0.34577 1.09493,-1.09493 0.40339,-0.8068 0.40339,-2.01698 0.46103,-0.74917 0.86442,-1.78647 0.46103,-1.09493 0.86442,-2.53563 0.57628,-1.78646 0.86442,-2.88139 0.34577,-1.15256 0.51865,-1.55596 0.97968,-2.59326 2.65089,-6.05093 1.67121,-3.5153 3.97632,-8.01028 1.15256,-2.36275 2.70852,-5.24415 0.97967,-1.44069 2.18986,-2.13223 1.21019,-0.74916 2.53563,-0.74916 1.0373,0 1.49832,0.80679 0.51866,0.80679 0.51866,2.36274 0,2.47801 -0.34577,4.72549 -0.34577,2.24749 -1.26782,4.20684 -0.17288,0.4034 -0.28814,1.21019 -0.11525,0.80679 -0.23051,1.95935 -0.0576,0.80679 -0.46102,1.55595 -0.34577,0.74917 -0.92205,1.38307 0,0.4034 -0.11525,0.97968 -0.11526,0.51865 -0.23052,1.26781 l -0.80679,1.03731 q -0.11525,0.34576 -0.11525,0.86442 0,0.46102 0,0.97967 0,0.34577 -0.4034,1.38307 -0.40339,0.97968 -1.21018,2.82377 -0.92205,1.95935 -1.49833,3.11191 -0.51865,1.15256 -0.57628,1.4407 -0.23051,0.28814 -0.63391,0.92204 -0.34577,0.63391 -0.86442,1.4407 l 0.17289,1.26782 -3.68819,13.25442 q 0,2.18986 0.0576,3.74582 0.0576,1.55595 0.34577,2.478 0.28813,0.97967 0.92204,2.42037 0.69154,1.38307 1.72884,2.99665 0.63391,1.09493 1.49833,1.61358 0.86442,0.46103 1.84409,0.46103 1.09493,0 2.18986,-0.57628 1.15256,-0.63391 2.30512,-1.90172 0.69153,1.49832 1.26781,2.82377 0.63391,1.32544 1.03731,2.478 -0.28814,0.17288 -1.26782,1.21018 -0.92205,0.97968 -2.478,2.82377 -0.92205,1.09493 -2.30512,1.61358 -1.32544,0.46103 -3.28479,0.46103 -4.32209,0 -7.03061,-2.24749 -2.70851,-2.24749 -3.80344,-6.74247 -0.23051,-0.92205 -0.4034,-1.61358 -0.17288,-0.69154 -0.34576,-1.26782 -0.4034,-1.09493 -1.38307,-2.36274 -0.4034,0.57628 -0.63391,0.86442 -0.69154,0.46102 -1.55595,1.32544 -0.8068,0.86442 -1.67121,2.18986 -0.17289,0.57628 -0.63391,1.4407 -0.46103,0.80679 -1.26782,1.95935 -1.84409,2.13223 -3.74581,4.32209 -1.90172,2.13224 -3.80345,4.20684 -2.59325,2.8814 -4.78311,4.20684 -2.18987,1.38307 -3.80345,1.38307 -2.88139,0 -4.26446,-1.38307 -1.38307,-1.32544 -1.38307,-4.20684 0,-1.32544 0.97967,-3.68819 0.97968,-2.42037 0.97968,-3.57293 l -0.34577,-0.92204 z m 28.98685,-16.48159 q 0,-0.28814 -0.23051,-0.86442 -0.86442,0.86442 -2.13224,2.01698 -1.26781,1.15256 -2.99665,2.53563 -0.40339,0.92204 -1.84409,2.93902 -1.4407,1.95935 -4.03396,4.89837 -0.74916,0.86442 -2.01697,2.99666 -1.26782,2.0746 -3.11191,5.12888 -0.63391,1.21019 -1.32545,2.93903 0,0.34576 0.46103,0.74916 1.72884,-0.51865 4.20684,-2.99665 2.53563,-2.53563 5.9933,-6.97298 3.57293,-4.72549 5.30177,-8.01028 1.72884,-3.34242 1.72884,-5.3594 z" />
<path
id="path873"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:118.022px;line-height:1.25;font-family:Mistral;-inkscape-font-specification:Mistral;fill:url(#linearGradient5304);fill-opacity:1"
d="m 888.12148,886.82688 0.34576,-0.4034 0.17289,-0.57628 q 1.55595,-2.13223 5.47465,-5.53228 3.9187,-3.45768 5.41703,-5.58991 0.57628,-0.92205 1.32544,-1.32544 0.74916,-0.4034 1.49833,-0.4034 2.01697,0 3.40004,1.03731 1.38307,0.97967 1.8441,2.99665 0.40339,1.78646 0.74916,3.63056 0.34577,1.78646 0.57628,3.63056 0.4034,1.15256 0.97967,3.5153 0.57628,2.30512 0.86442,2.65089 0.28814,0.57628 0.86442,0.86442 0.57628,0.23051 1.4407,0.23051 1.0373,0 2.13223,-0.34577 1.09493,-0.4034 2.24749,-1.32544 0.86442,-0.74917 1.78647,-1.49833 0.97967,-0.80679 1.90172,-1.55595 l 2.30512,5.30177 q -0.92205,0.92204 -2.478,2.13223 -1.49833,1.15256 -3.63056,2.70851 -2.36275,1.72884 -4.03396,2.59326 -1.67121,0.80679 -2.53563,0.80679 -5.24414,0 -6.80009,-1.21019 -1.55596,-1.21018 -3.45768,-6.74246 -0.23051,-0.46103 -0.69153,-1.09493 -0.46103,-0.63391 -1.03731,-1.49833 -0.69153,-1.32544 -1.21018,-1.95935 -0.51865,-0.69154 -0.86442,-0.69154 -0.92205,0 -2.478,1.26782 -1.55596,1.21019 -3.80345,3.68819 -0.28814,-0.74917 -0.69153,-1.78647 -0.46102,-1.0373 -0.92205,-2.42037 -0.11525,-0.34577 -0.28814,-0.63391 -0.17288,-0.28814 -0.40339,-0.46102 z m 24.08847,-45.46844 q 1.4407,0 2.07461,0.57628 0.69153,0.57628 0.69153,1.67121 -0.34577,1.61358 -0.57628,2.70851 -0.57628,2.07461 -1.0373,3.40005 -0.4034,1.32544 -0.63391,1.90172 -0.51865,1.26781 -1.4407,2.24749 -0.86441,0.92205 -2.13223,1.67121 -1.32544,0.92205 -2.24749,1.32544 -0.86442,0.34577 -1.21018,0.28814 -0.97968,-0.11525 -1.90173,-0.17288 -0.86442,-0.11526 -1.72883,-0.11526 -0.74917,-0.40339 -1.21019,-1.55595 -0.4034,-1.15256 -0.4034,-3.11191 0,-1.72884 2.07461,-4.3221 2.13223,-2.65088 3.74581,-2.82376 0.97968,-1.21019 2.30512,-2.76614 0.57628,-0.4034 1.49833,-0.63391 0.92205,-0.28814 2.13223,-0.28814 z" />
<path
id="path875"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:118.022px;line-height:1.25;font-family:Mistral;-inkscape-font-specification:Mistral;fill:url(#linearGradient5304);fill-opacity:1"
d="m 922.92874,884.29125 5.24414,-3.45768 q 0.28814,-0.28814 0.69153,-0.74916 0.4034,-0.51865 0.92205,-1.4407 0.40339,-0.74916 1.0373,-1.26781 0.69154,-0.51866 1.55596,-0.92205 0.46102,-0.57628 1.32544,-1.4407 0.86442,-0.86442 2.18986,-2.01698 0.63391,-0.34576 1.61358,-0.97967 0.97968,-0.69154 2.13224,-1.78647 5.24414,-4.956 9.16284,-7.434 3.97632,-2.478 6.68484,-2.478 1.49832,0 2.18986,0.63391 0.74916,0.6339 0.74916,1.78646 0,1.21019 -0.46102,2.13223 -0.4034,0.92205 -1.32544,1.55596 -1.4407,1.0373 -3.11191,2.30512 -0.92205,1.21018 -2.24749,2.59325 -1.32544,1.32545 -3.11191,2.65089 -0.57628,0.74916 -0.97968,1.32544 -0.28814,0.28814 -1.09493,1.0373 -0.80679,0.74917 -2.13223,1.72884 -0.57628,1.26782 -2.53563,3.28479 -1.90172,2.01698 -5.12888,4.84075 -0.4034,0.40339 -1.4407,1.84409 -1.03731,1.4407 -2.70852,3.80345 l 0.4034,0.51865 q 1.26781,-0.4034 2.65088,-1.38307 1.38308,-0.97968 3.05429,-2.59326 1.95934,-1.78647 3.16953,-2.8814 1.26782,-1.15255 1.78647,-1.49832 0.40339,-0.23051 0.80679,-0.46103 0.40339,-0.23051 0.92205,-0.57627 2.65088,-3.16954 4.956,-4.66787 2.30511,-1.55595 4.26446,-1.55595 1.21019,0 1.8441,0.97967 0.63391,0.92205 0.74916,2.82377 -0.11525,2.8814 -0.11525,5.53228 -0.0576,1.8441 0.97967,3.34242 1.09493,1.4407 2.82377,1.4407 0.51865,0 0.97967,-0.28814 0.51865,-0.28814 1.03731,-0.74916 0.40339,-0.51865 0.74916,-0.97968 0.40339,-0.46102 0.80679,-0.92204 0.23051,-0.11526 0.63391,-0.4034 0.46102,-0.28814 0.86442,-0.69153 0.80679,1.72883 1.32544,3.05428 0.57628,1.26781 0.86442,2.24749 -1.32544,1.21018 -2.65089,2.53563 -1.26781,1.26781 -2.70851,2.42037 -1.72884,1.32544 -3.34242,2.01698 -1.61358,0.6339 -3.22716,0.6339 -3.74582,0 -5.7628,-2.13223 -2.01697,-2.13223 -2.36274,-6.45433 0,-0.51865 -0.17289,-1.0373 -0.11525,-0.57628 -0.57628,-1.15256 -0.28813,0.28814 -0.6339,0.63391 -0.34577,0.28814 -0.80679,0.80679 -0.74917,0.57628 -1.90173,1.4407 -1.09493,0.86442 -2.59325,2.0746 -2.01698,2.07461 -3.40005,3.40005 -1.38307,1.32544 -1.95935,1.90172 -1.15256,0.97968 -2.70851,1.95935 -1.49833,0.97968 -3.40005,2.01698 -1.21019,0.63391 -2.07461,0.97967 -0.86441,0.4034 -1.26781,0.4034 -2.76614,0 -4.09158,-1.32544 -1.32545,-1.38307 -1.32545,-4.20684 0,-1.55596 0.69154,-2.93903 0.63391,-1.44069 1.95935,-2.76614 0.11525,-0.74916 0.11525,-1.21018 0,-0.28814 -0.17288,-0.57628 -0.11525,-0.34577 -0.34577,-0.74917 -0.34576,-0.80679 -0.74916,-1.78646 -0.46102,-1.0373 -0.97967,-2.18986 0.23051,-0.23052 0.69153,-0.86442 0.4034,-0.69154 0.97968,-1.67121 z" />
<path
id="path877"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:118.022px;line-height:1.25;font-family:Mistral;-inkscape-font-specification:Mistral;fill:url(#linearGradient5304);fill-opacity:1"
d="m 965.3429,886.82688 0.51865,-0.46103 q 0.0576,-0.6339 0.80679,-1.49832 0.74916,-0.86442 2.13223,-2.01698 0.86442,-0.63391 1.78647,-1.21019 0.97967,-0.57628 1.84409,-1.26781 3.63056,-3.11191 7.03061,-5.99331 1.95935,-1.72883 3.9187,-2.93902 1.95935,-1.26782 3.68819,-2.01698 1.21018,-1.55595 4.49498,-3.16953 3.34242,-1.61359 5.41702,-1.61359 0.80679,0 1.26782,0.46103 0.51865,0.46102 0.6339,1.15256 v 3.16953 q 0,1.67121 -0.97967,2.99665 -0.92205,1.26782 -2.82377,2.36275 -1.26782,0.57628 -2.53563,1.26781 -1.26781,0.69154 -2.53563,1.26782 -0.46102,0.57628 -2.478,2.18986 -1.95935,1.55595 -5.3594,4.20684 -1.55595,1.21018 -2.59325,2.18986 -1.03731,0.92205 -1.4407,1.49833 -0.57628,1.09493 -0.92205,2.42037 -0.28814,1.32544 -0.28814,3.05428 0,1.32544 0.4034,2.30512 0.40339,0.92204 1.21018,1.49832 0.57628,0.4034 1.55596,0.80679 1.0373,0.4034 2.53563,0.80679 0.86442,-0.34576 2.24749,-0.6339 1.44069,-0.34577 3.16953,-0.86442 1.95935,-1.15256 3.97633,-2.42037 2.0746,-1.26782 4.09158,-2.59326 0.28814,-0.17289 0.69154,-0.34577 0.46102,-0.23051 0.92204,-0.63391 0.57628,-0.74916 1.55596,-1.72883 1.03735,-0.97968 2.47795,-2.24749 2.3052,5.01363 2.3052,5.30177 -2.1323,1.72883 -4.32213,3.57293 -2.18986,1.78646 -5.01363,2.93902 -0.92205,0.74917 -1.55595,1.38307 -2.8814,2.8814 -6.74247,4.3221 -3.80344,1.49832 -8.70182,1.49832 -1.09493,0 -1.95935,-0.17288 -0.86442,-0.17288 -1.4407,-0.46102 -1.72883,-1.15256 -2.93902,-2.01698 -1.26782,-0.92205 -2.13223,-1.72884 -0.86442,-0.86442 -1.26782,-1.61358 -0.51865,-0.80679 -0.69153,-1.95935 -0.23052,-1.15256 -0.23052,-2.82377 0,-0.46102 0.28814,-1.49833 0.28814,-1.0373 0.28814,-1.44069 -0.40339,-1.26782 -0.97967,-2.59326 -0.57628,-1.32544 -1.32544,-2.70851 z" />
<path
id="path879"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:118.022px;line-height:1.25;font-family:Mistral;-inkscape-font-specification:Mistral;fill:url(#linearGradient5304);fill-opacity:1"
d="m 1001.7637,886.82688 q 0.4034,-0.4034 0.8645,-1.03731 0.4034,-0.69153 0.9796,-1.49832 l 4.4374,-3.05428 q 0.8068,-0.97968 2.478,-2.478 1.6712,-1.55596 4.1492,-3.74582 0.2881,-0.63391 0.9221,-1.4407 0.6915,-0.86442 1.6135,-1.67121 0.8068,-0.74916 1.6136,-1.38307 0.8068,-0.69153 1.4983,-1.32544 0.8645,-0.86442 1.6136,-1.72884 0.8068,-0.86442 1.6136,-1.67121 0.9221,-0.80679 1.9017,-1.26781 0.9797,-0.46103 2.1323,-0.46103 1.2678,0 1.9017,0.34577 0.6915,0.28814 0.7491,0.86442 -0.5762,1.32544 -1.2101,2.65089 l 0.3457,0.51865 q 2.5357,-0.97968 3.9764,-1.4407 1.4407,-0.46103 1.844,-0.46103 4.2069,0 6.2815,2.59326 2.1322,2.53563 2.1322,7.72214 0,0.97968 -0.2305,2.30512 -0.2305,1.32544 -0.7491,2.8814 -0.5763,1.72884 -1.2679,2.88139 -0.6339,1.15256 -1.2101,1.67121 0.2305,0.74917 0.5186,1.09494 0.2881,0.28814 0.7492,0.28814 0.461,0 0.922,-0.28814 0.5187,-0.28814 1.2102,-0.86442 0.5763,1.26781 1.0949,2.65088 0.5763,1.32544 1.1526,2.65089 -1.0373,0.92204 -2.017,1.78646 -0.9797,0.86442 -2.0746,1.67121 -1.3254,1.09493 -2.5356,1.61358 -1.1526,0.46103 -2.3051,0.46103 -1.3255,0 -2.1899,-0.63391 -0.8644,-0.63391 -1.3831,-1.78647 -1.4407,1.90173 -3.5153,3.51531 -2.017,1.55595 -4.495,2.59326 -1.4407,0.69153 -2.6508,1.09493 -1.1526,0.34576 -2.1323,0.34576 -0.2881,0 -1.1525,0.23052 -0.8068,0.23051 -1.3255,0.23051 -3.2848,0 -5.9357,-2.76614 -2.6508,-2.76614 -2.6508,-6.16619 0,-1.38307 0.6339,-3.63056 0.6339,-2.30512 0.6339,-2.70851 0,-0.4034 -0.2882,-0.63391 -0.2305,-0.28814 -0.6915,-0.28814 -0.2881,0 -1.3831,0.86442 -1.0949,0.86442 -3.1119,2.478 -0.1729,0.23051 -0.4034,0.69153 -0.2305,0.46103 -0.7491,1.03731 -0.4611,-1.32545 -1.0373,-2.65089 -0.5763,-1.38307 -1.2679,-2.65088 z m 27.7191,-10.54591 q -0.2882,0.0576 -0.8644,0.6339 -0.5187,0.51865 -1.0373,1.32544 -0.8068,1.32545 -1.8441,2.8814 -0.6339,0.69154 -1.3831,1.09493 -0.6915,0.34577 -1.6136,0.51865 -0.5763,0.0576 -1.2102,1.15256 -0.6339,1.0373 -1.2678,3.05428 -0.6339,1.78647 -0.922,3.05428 -0.2882,1.26782 -0.2882,2.13224 0,1.61358 0.8068,2.42037 0.8068,0.80679 2.478,0.80679 2.6509,0 4.8408,-1.4407 2.2475,-1.49832 4.2068,-4.43735 0.9221,-1.09493 1.7288,-2.0746 0.4611,-0.34577 0.7492,-1.09493 0.2881,-0.8068 0.5763,-1.95935 l 1.0373,-3.2848 q -0.5187,-1.72883 -0.9797,-2.70851 -0.461,-1.0373 -0.922,-1.26781 -0.2882,-0.17289 -1.2678,-0.34577 -0.9797,-0.23051 -2.8238,-0.46102 z" />
<path
id="path881"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:118.022px;line-height:1.25;font-family:Mistral;-inkscape-font-specification:Mistral;fill:url(#linearGradient5304);fill-opacity:1"
d="m 1043.4864,886.82688 q 0.922,-1.21019 1.8441,-2.53563 4.2068,-3.45768 6.8577,-6.62721 2.7085,-3.22717 3.9187,-5.99331 l -0.5763,-2.76614 q 0.7492,-1.4407 3.6882,-3.40005 2.9967,-1.95935 4.8407,-1.95935 1.9594,0 3.2848,1.15256 1.3831,1.15256 2.6509,2.42037 0.6339,0.4034 0.9221,0.63391 2.3051,1.72884 3.4576,4.78312 1.1526,3.05428 1.1526,7.434 0,2.30512 -1.7865,6.62721 -1.7864,4.26447 -1.7864,6.45433 0,0.28814 0.1729,0.46103 0.2305,0.17288 0.5762,0.17288 0.7492,0 1.7865,-0.63391 1.0373,-0.69153 2.2475,-1.84409 3.0543,-2.99665 3.6882,-3.28479 0.6339,-0.34577 1.5559,-1.09493 0.4611,1.15256 1.095,2.478 0.6339,1.32544 1.2102,2.82377 -0.5187,0.46102 -1.2102,1.09493 -0.6339,0.6339 -1.556,1.4407 -1.9593,1.44069 -5.1289,3.5153 -3.1119,2.01698 -7.4916,4.66786 -1.1526,0.74916 -2.6509,1.21019 -2.4204,0 -3.6306,-0.69154 -1.2101,-0.74916 -1.2101,-2.36274 0,-0.63391 0.2305,-1.4407 0.2881,-0.86442 0.7491,-1.84409 0.3458,-0.74917 0.7492,-1.49833 0.4034,-0.80679 0.6915,-1.61358 1.2678,-3.63056 1.9018,-6.74247 0.6915,-3.11191 0.6915,-5.58991 0,-3.05428 -0.9797,-4.66786 -0.922,-1.61358 -2.8238,-1.8441 -1.2678,0.69154 -2.7661,1.95935 -1.4983,1.26782 -3.0543,3.16954 -1.6712,2.07461 -2.9966,3.40005 -1.3255,1.32544 -2.1899,1.78646 -0.5186,0.86442 -1.6712,1.95935 -1.1526,1.09493 -3.0543,2.36275 -0.1152,0.23051 -0.3457,0.69153 -0.2306,0.46103 -0.7492,1.03731 -0.461,-1.32545 -1.0373,-2.59326 -0.5763,-1.32544 -1.2678,-2.70851 z" />
<path
id="path883"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:118.022px;line-height:1.25;font-family:Mistral;-inkscape-font-specification:Mistral;fill:url(#linearGradient5304);fill-opacity:1"
d="m 1081.9818,886.82688 q 0.6916,-1.21019 1.7865,-2.42038 1.0949,-1.26781 2.7661,-2.59325 0.1729,-1.15256 0.3458,-2.24749 0.1729,-1.15256 0.2305,-2.30512 0.1729,-0.80679 0.5187,-1.90172 0.4034,-1.09493 0.8644,-2.36275 0.5186,-1.26781 1.3831,-3.16953 0.922,-1.90172 2.3627,-4.26447 1.2102,-1.32544 2.5356,-2.8814 1.3255,-1.61358 2.6509,-3.22716 0.6339,-0.51865 1.3831,-0.97968 0.7491,-0.46102 1.4983,-1.0373 0.6915,-0.23051 1.556,-0.40339 0.8644,-0.17289 1.9017,-0.17289 1.4407,0 2.3051,0.28814 0.9221,0.28814 1.4983,0.97968 0.4034,0.46102 0.7492,1.38307 0.4034,0.92204 0.7492,2.24749 0.1728,1.15256 0.4034,2.53563 0,-0.34577 -0.2306,0.28814 -0.1728,0.6339 -0.5762,2.01697 l -0.5187,1.8441 q -0.8068,2.76614 -3.6306,6.3967 -2.8237,3.63056 -7.6068,8.29842 -0.4034,0.40339 -0.6916,1.0373 -0.2881,0.57628 -0.2881,1.26782 0,1.21018 0.4034,2.13223 0.461,0.92205 1.2678,1.38307 0.461,0.34577 1.4407,0.69154 1.0373,0.34576 2.4204,0.6339 2.2475,-0.17288 4.0916,-0.74916 1.844,-0.57628 3.2847,-1.38307 0.2882,-0.17288 0.9221,-0.46102 0.6339,-0.34577 1.2678,-0.86442 0.7492,1.67121 1.3254,2.99665 0.5763,1.32544 0.9221,2.30512 -3.2848,3.22716 -5.9933,4.89837 -2.6509,1.61358 -4.8984,1.61358 -0.922,0.57628 -2.1322,0.86442 -1.1526,0.23051 -2.7662,0.23051 -2.1322,0 -3.8034,-0.6339 -1.6136,-0.63391 -2.7085,-1.8441 -0.5763,-0.57628 -1.1526,-1.67121 -0.5763,-1.15256 -1.2102,-2.70851 -0.5186,-1.26782 -0.9796,-1.84409 -0.4611,-0.63391 -1.0373,-0.63391 -0.4611,0 -1.0373,0.46102 -0.5763,0.4034 -1.2679,1.26782 -0.2305,-0.86442 -0.8067,-2.13224 -0.5763,-1.26781 -1.4984,-3.16953 z m 18.441,-18.72908 q -1.2678,0 -3.4001,3.34242 -2.1322,3.28479 -2.1322,4.84075 0,0.34576 0.1152,0.51865 0.1729,0.11525 0.6339,0.11525 0.634,0 1.0374,-0.6339 0.4033,-0.69154 0.7491,-1.26782 0.6339,-0.57628 1.2102,-1.21019 0.6339,-0.69153 1.2102,-1.32544 0.6915,-0.80679 1.0373,-1.61358 0.3458,-0.80679 0.3458,-1.61358 0,-0.51865 -0.2306,-0.80679 -0.1728,-0.34577 -0.5762,-0.34577 z" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

View File

@ -0,0 +1,296 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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"
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:export-filename="background-image.png"
sodipodi:docname="background-image.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
version="1.1"
id="svg2985"
height="1080px"
width="1920px">
<defs
id="defs2987">
<linearGradient
id="linearGradient5275">
<stop
id="stop5277"
offset="0"
style="stop-color:#3891ee;stop-opacity:1;" />
<stop
id="stop5279"
offset="1"
style="stop-color:#aad6f3;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient5263">
<stop
id="stop5265"
offset="0"
style="stop-color:#1e4f71;stop-opacity:1;" />
<stop
id="stop5267"
offset="1"
style="stop-color:#0f243f;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient5253">
<stop
id="stop5255"
offset="0"
style="stop-color:#676767;stop-opacity:1;" />
<stop
style="stop-color:#2c2c2c;stop-opacity:1;"
offset="0.5"
id="stop5261" />
<stop
id="stop5257"
offset="1"
style="stop-color:#292929;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient5245">
<stop
id="stop5247"
offset="0"
style="stop-color:#295a7d;stop-opacity:1;" />
<stop
id="stop5249"
offset="1"
style="stop-color:#0f202d;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3803">
<stop
id="stop3805"
offset="0"
style="stop-color:#295a7d;stop-opacity:1;" />
<stop
id="stop3807"
offset="1"
style="stop-color:#295a7d;stop-opacity:1;" />
</linearGradient>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath11388-1">
<path
inkscape:connector-curvature="0"
d="m 0,1458.48 1420.5,0 0,-1458.42 L 0,0.06 0,1458.48 z"
id="path11390-7" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath11388">
<path
inkscape:connector-curvature="0"
d="m 0,1458.48 1420.5,0 0,-1458.42 L 0,0.06 0,1458.48 z"
id="path11390" />
</clipPath>
<radialGradient
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.81911771,-0.68259818,0.85956631,1.0314794,-386.87512,555.07876)"
r="117.19927"
fy="625.16315"
fx="832"
cy="625.16315"
cx="832"
id="radialGradient5251"
xlink:href="#linearGradient5245"
inkscape:collect="always" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="552"
x2="976"
y1="680"
x1="736"
id="linearGradient5259"
xlink:href="#linearGradient5253"
inkscape:collect="always" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="472"
x2="1088"
y1="552"
x1="976"
id="linearGradient5269"
xlink:href="#linearGradient5263"
inkscape:collect="always" />
<linearGradient
gradientTransform="translate(47.292177,608)"
gradientUnits="userSpaceOnUse"
y2="296"
x2="1072"
y1="216"
x1="704"
id="linearGradient5281"
xlink:href="#linearGradient5275"
inkscape:collect="always" />
<linearGradient
y2="552"
x2="976"
y1="680"
x1="736"
gradientUnits="userSpaceOnUse"
id="linearGradient5298"
xlink:href="#linearGradient5253"
inkscape:collect="always" />
<radialGradient
r="117.19927"
fy="625.16315"
fx="832"
cy="625.16315"
cx="832"
gradientTransform="matrix(0.81911771,-0.68259818,0.85956631,1.0314794,-386.87512,555.07876)"
gradientUnits="userSpaceOnUse"
id="radialGradient5300"
xlink:href="#linearGradient5245"
inkscape:collect="always" />
<linearGradient
y2="472"
x2="1088"
y1="552"
x1="976"
gradientUnits="userSpaceOnUse"
id="linearGradient5302"
xlink:href="#linearGradient5263"
inkscape:collect="always" />
<linearGradient
y2="296"
x2="1072"
y1="216"
x1="704"
gradientTransform="translate(47.292177,608)"
gradientUnits="userSpaceOnUse"
id="linearGradient5304"
xlink:href="#linearGradient5275"
inkscape:collect="always" />
</defs>
<sodipodi:namedview
inkscape:document-rotation="0"
inkscape:window-maximized="1"
inkscape:window-y="13"
inkscape:window-x="-8"
inkscape:window-height="987"
inkscape:window-width="1680"
showgrid="true"
inkscape:current-layer="g5289"
inkscape:document-units="px"
inkscape:cy="438.2355"
inkscape:cx="747.29783"
inkscape:zoom="0.6"
inkscape:pageshadow="2"
inkscape:pageopacity="1"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#000000"
id="base">
<inkscape:grid
originy="0"
originx="0"
spacingy="16"
spacingx="16"
snapvisiblegridlinesonly="true"
enabled="true"
visible="true"
empspacing="4"
id="grid2993"
type="xygrid" />
</sodipodi:namedview>
<metadata
id="metadata2990">
<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 />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
inkscape:label="Layer 1"
id="layer1">
<g
transform="matrix(0.82552894,0,0,0.82552894,161.90914,13.721795)"
id="g5289">
<g
id="g5283">
<path
sodipodi:nodetypes="ccccccccccccccccccccsccccccccccccccccccccccscccccscccccccccsccc"
inkscape:connector-curvature="0"
d="m 773.81281,668.57144 c 9.31253,15.87066 19.23984,30.44159 29.7526,43.40802 0.771,1.07041 1.65891,2.07332 2.36633,3.0361 -9.73319,-1.06337 -19.46548,-7.9152 -29.06963,-20.60007 -4.8637,-6.44037 -9.27573,-13.26402 -13.21172,-20.44587 l -2.84599,-5.4294 c -2.74665,-5.45534 -5.23113,-11.09959 -7.47108,-16.94028 -6.19118,-15.72345 -7.47685,-26.6653 -4.25923,-32.93972 1.73575,4.32392 3.58797,8.86205 5.68339,13.28143 4.82321,-2.17847 8.51389,-1.58852 11.02472,1.97037 3.26941,4.34778 1.99482,8.74263 -3.83438,12.85867 2.64899,5.24154 5.43531,10.51998 8.42749,15.84683 M 965.71546,541.39408 c -17.11483,-27.85634 -36.21161,-51.27816 -57.26468,-70.24783 -2.44573,1.55638 -4.67139,1.62892 -6.78796,-0.19459 -2.16149,-1.63882 -3.06367,-4.27894 -2.68227,-7.83333 -9.24814,-7.59324 -18.8481,-14.21836 -28.81963,-20.16706 -22.4894,-13.15528 -42.77703,-20.11949 -61.3309,-20.66574 -1.01847,5.61096 -2.8886,8.1918 -5.86092,7.7861 -3.09006,-0.35215 -4.93514,-2.76542 -5.60541,-7.08385 -9.72592,1.0542 -18.93825,4.07797 -27.48809,9.01422 -19.26473,11.1225 -31.70663,29.54251 -37.28965,55.41244 5.21288,0.33897 7.33285,2.47086 6.40587,6.65779 -0.42574,2.6851 -3.09231,3.28645 -7.88245,2.09719 -1.36929,8.68583 -1.85791,18.1045 -1.73171,28.0631 0.20285,22.99133 4.00234,46.17224 11.01205,69.63592 -12.10488,8.51873 -15.77653,25.85174 -10.91271,51.91113 2.35413,12.36841 6.40684,23.92398 12.14707,34.66435 l 2.274,4.06368 c 7.73977,13.2114 18.13982,25.15207 31.20355,35.85862 14.87902,12.07873 31.55637,17.49725 50.3449,16.07493 10.65613,10.56197 21.7131,19.9832 33.52163,28.06117 2.58462,-6.0533 5.28802,-8.20589 8.004,-6.13666 2.58991,1.85335 2.94894,6.1927 1.08256,12.43754 1.83132,1.06445 3.69475,2.13201 5.46358,3.0882 37.60041,22.21332 69.76337,26.5937 96.43395,13.02851 -1.85725,-5.32186 -2.238,-8.30633 -1.09809,-8.96446 2.40647,-2.15436 5.08028,-0.19069 7.71828,5.43097 24.07447,-15.42936 36.60567,-43.17464 37.61907,-83.27935 -2.4695,-0.85478 -3.9408,-1.84563 -4.4539,-3.52683 0.09,-2.47677 1.6953,-3.40365 4.682,-2.70312 -0.1938,-0.33559 -0.1527,-0.79951 -0.1181,-1.26697 -0.297,-36.31703 -9.4568,-73.75975 -27.32176,-112.07275 -3.13606,-0.16682 -5.34329,-1.31734 -6.59329,-3.48241 -1.5125,-2.61973 -0.99069,-4.89842 1.61362,-6.70513 -1.66124,-3.28566 -3.42974,-6.58733 -5.25755,-9.91884 z m -1.48261,25.68205 c 21.2787,39.52627 32.34441,77.71366 33.4109,114.61938 1.16057,39.91767 -9.92803,66.53415 -33.18406,79.96103 -23.25494,13.42625 -51.95696,9.78289 -85.94856,-11.17978 -7.2198,-4.34756 -13.98881,-9.23684 -20.7442,-14.61752 -0.24492,-0.16171 -0.53297,-0.43563 -0.77789,-0.59734 l -6.71889,-5.57495 c -21.49824,-18.58508 -40.6758,-42.29165 -57.74905,-71.0868 l -4.14063,-7.17177 c -8.60376,-15.26749 -15.62786,-30.28352 -21.29427,-45.00776 -5.2026,-14.01368 -9.14151,-27.69607 -11.8473,-41.33263 -2.2417,-11.78273 -3.55106,-23.48311 -3.94652,-34.96057 -1.08965,-39.79983 10.09987,-66.48902 33.35481,-79.91527 23.25603,-13.42687 51.85713,-9.71081 85.77781,11.13402 31.7497,19.64629 59.52686,48.71237 83.30366,87.47367 z"
style="fill:url(#linearGradient5298);fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path3024" />
<path
sodipodi:nodetypes="ccccccccccccscccc"
inkscape:connector-curvature="0"
d="m 806.64313,651.06023 0.65318,1.31885 5.95896,9.00871 c 3.40066,4.57512 7.06185,8.25648 11.12341,11.07882 6.35431,4.68848 11.61273,5.88884 15.60186,3.58571 0.22842,-0.13187 0.44901,-0.2448 0.72234,-0.56137 3.11122,-2.24371 2.76067,-6.00339 -1.33308,-11.24646 -4.34674,-5.68878 -9.19391,-12.79182 -14.71949,-21.3074 -0.24356,-0.3753 -0.47313,-0.73291 -0.71037,-1.10541 l -5.351,-9.14321 c -2.46544,-4.62383 -4.4346,-9.01924 -5.95822,-13.19493 -2.34651,-6.69927 -5.226,-9.30919 -8.72472,-7.73665 l -0.78483,0.45312 c -3.98913,2.30313 -5.62568,7.37604 -4.80499,15.11503 0.47594,5.03684 1.88662,10.14022 4.07971,15.25376 l 0.0625,0.10825 c 1.33064,2.79106 2.59145,5.58212 4.18474,8.37318 z"
style="fill:#4c5f67;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path3022" />
<path
sodipodi:nodetypes="ccsccccccsccccsccccccsccc"
inkscape:connector-curvature="0"
d="m 949.61198,551.37704 c -22.8309,-37.27735 -49.24936,-65.50811 -79.37993,-84.61506 -32.1881,-20.47394 -59.30554,-24.25273 -81.07851,-11.6821 -21.65929,12.505 -31.83723,37.81629 -30.314,75.9946 0.43012,11.01 1.76211,22.25707 4.21573,33.61435 2.60186,12.93157 6.44915,26.19776 11.61875,39.62427 1.25675,3.22927 2.51796,6.44874 4.02071,9.83908 l 0.86296,-0.3178 c -1.0356,-5.47871 -1.67491,-11.06353 -1.65126,-16.54758 -0.19858,-19.03894 5.4094,-31.99063 16.80955,-38.57251 11.51164,-6.64625 25.42387,-4.96456 41.80954,4.72876 13.64796,8.18306 25.7638,20.04558 36.22985,35.62693 l 7.67688,12.67176 c 10.55577,19.23967 15.89048,37.83048 16.18702,55.78674 0.20183,19.03707 -5.3604,31.81801 -16.87204,38.46426 -11.40015,6.58187 -25.35813,5.07094 -41.74705,-4.62051 -3.48432,-2.08751 -6.74515,-4.33293 -9.90713,-6.90965 l -0.24664,0.32281 c 10.15598,12.06317 21.1017,23.38171 33.11749,33.92367 0.30633,0.27059 0.5278,0.42418 0.84038,0.70559 6.32806,5.16552 12.86671,9.92078 19.72276,14.16081 32.30177,20.40831 59.38908,24.38492 81.04838,11.87992 21.77296,-12.57063 31.98103,-38.07973 30.34413,-76.19242 -1.40626,-35.24672 -12.42558,-71.83901 -32.95964,-109.90027 z"
style="fill:url(#radialGradient5300);fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path11394" />
<path
sodipodi:nodetypes="csccsccsccscccscccccccscccccccccccccccccccc"
id="path5849"
d="M 1063.3307,481.9687 C 1033.1394,433.41082 996.07733,395.31989 958.83377,372.16215 943.90799,362.88142 928.94883,355.9839 914.24161,351.86376 l 5.35012,19.39168 c 9.20393,3.60694 18.72855,8.39698 28.317,14.35899 34.93961,21.72516 70.97147,58.51072 100.30007,105.66229 l 12.9333,22.33865 c 26.6684,49.43987 40.7838,99.59392 42.1416,141.11645 0.3679,11.25026 -0.236,21.86091 -1.7003,31.61736 l 14.2536,13.31304 c 3.5992,-14.53291 5.1207,-30.49674 4.5593,-47.66561 -1.4468,-44.24151 -16.146,-95.93055 -43.5896,-146.81179 z m -23.0732,14.22346 c -29.3491,-47.42897 -65.47113,-84.63165 -101.76433,-107.19846 -5.57616,-3.46722 -11.17271,-6.48519 -16.7395,-9.24367 l 6.11104,22.27213 c 34.05348,21.17417 69.21172,57.14425 97.73089,103.21239 l 12.1208,20.93136 c 25.8075,47.88941 39.4425,96.5024 40.7577,136.71934 0.018,0.56242 -0.014,1.06499 -5e-4,1.6241 l 16.2114,15.1416 c 0.4113,-6.30898 0.6048,-12.77404 0.3863,-19.45599 -1.4013,-42.85006 -15.6169,-92.89868 -42.1774,-142.17835 z m -23.0191,14.19221 c -25.04009,-40.76231 -55.27761,-73.75715 -86.24547,-96.13146 l 7.38788,26.98369 c 23.00719,20.21694 45.41761,46.62992 64.64009,77.89747 l 11.2584,19.62507 c 18.0541,33.63135 29.9103,67.61102 35.514,98.5745 l 18.8347,17.56025 c -3.4922,-38.27565 -16.7632,-81.42329 -39.6469,-124.04549 z m -23.04623,14.20783 c -15.53,-25.64525 -33.20703,-48.0782 -51.83429,-66.77963 l 9.49539,34.57151 c 10.06474,12.41261 19.71762,25.99104 28.60862,40.67657 l 10.33762,18.28028 c 8.91594,16.87096 16.14379,33.80877 21.86859,50.37751 l 23.3617,21.83872 c -6.3462,-25.83185 -16.7048,-52.96242 -30.9886,-79.86134 z"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:url(#linearGradient5302);fill-opacity:1;stroke:none;stroke-width:13.0685;marker:none;enable-background:accumulate"
inkscape:connector-curvature="0" />
</g>
<g
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:url(#linearGradient5304);fill-opacity:1;stroke:none"
id="text5271"
aria-label="Mediacore">
<path
id="path886"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:118.022px;line-height:1.25;font-family:Mistral;-inkscape-font-specification:Mistral;fill:url(#linearGradient5304);fill-opacity:1"
d="m 751.88904,846.89072 q -0.17288,-1.15256 -0.40339,-2.42037 0,0.51865 0.17288,-0.80679 0.17288,-1.32545 0.46102,-4.55261 0.46103,-0.63391 0.63391,-1.09493 0.23051,-0.51865 0.4034,-0.92205 -0.51865,-0.63391 -0.80679,-1.0373 -0.23052,-0.46102 -0.23052,-0.74916 0.46103,-3.51531 0.86442,-6.68484 0.0576,-0.86442 0.97968,-1.95935 0.97967,-1.09493 2.65088,-2.36275 1.32544,-1.09493 2.59326,-1.84409 1.26781,-0.74917 2.42037,-1.21019 1.55596,-0.51865 1.8441,-0.86442 0.28814,-0.34577 0.6339,-0.34577 0.92205,0 1.38307,0.92205 0.51866,0.92205 0.51866,2.76614 0,0.97968 -0.51866,2.70851 -0.46102,1.72884 -0.46102,2.53563 0,0.34577 0.0576,2.65089 0.11525,2.30512 0.28814,6.62721 0.0576,3.11191 0.86442,6.62721 0.86442,3.51531 2.18986,7.31875 1.78646,4.956 3.86107,7.434 2.07461,2.42038 4.55261,2.42038 1.95935,0 5.18651,-2.53563 3.22716,-2.53563 7.60689,-7.60689 3.34242,-3.9187 5.93567,-7.31875 2.65089,-3.40005 4.26447,-6.22381 1.49833,-2.53563 3.5153,-4.55261 2.01698,-2.01698 4.61024,-3.68819 0.80679,-0.46102 1.32544,-0.74916 0.51865,-0.28814 0.80679,-0.28814 1.03731,0 1.55596,1.55595 0.57628,1.55596 0.57628,4.61024 -0.34577,2.82377 -0.57628,5.58991 -0.51865,4.32209 -1.55596,8.98995 -0.97967,4.66787 -2.59325,9.6815 -0.8068,2.53563 -1.38307,4.43735 -0.57628,1.90172 -0.8068,3.22716 -0.11525,0.74917 -0.34576,1.90172 -0.17289,1.09493 -0.4034,2.59326 -0.57628,1.4407 -1.26781,2.8814 -0.57628,1.15256 -0.97968,2.76614 -0.34577,1.61358 -0.63391,3.74581 0,0.4034 -0.0576,1.03731 -0.0576,0.6339 -0.11526,1.32544 -1.32544,5.87805 -2.70851,11.41033 -0.11526,0.51865 -0.51865,1.32544 -0.74917,0.23051 -1.72884,0.97968 -0.92205,0.74916 -1.95935,2.0746 -1.0373,1.15256 -1.72884,1.72884 -0.69153,0.51865 -1.0373,0.51865 -0.46102,0 -0.74916,-0.28814 -0.28814,-0.28814 -0.28814,-0.97967 0.0576,-0.46103 0.17288,-0.74917 0.80679,-1.95935 1.38307,-5.64753 0.63391,-3.68819 1.15256,-9.10522 0.0576,-1.15256 0.92205,-6.22381 0.86441,-5.07126 2.53562,-14.06122 0.23052,-1.4407 0.57628,-3.5153 0.4034,-2.13224 0.97968,-4.84075 0.40339,-1.38307 0.63391,-2.36274 0.28814,-1.03731 0.28814,-1.49833 0,-0.57628 -0.23052,-0.80679 -0.17288,-0.28814 -0.57628,-0.28814 -0.34576,0 -1.26781,0.92205 -0.92205,0.86441 -2.30512,2.65088 -0.80679,0.97968 -1.67121,2.07461 -0.80679,1.09493 -1.72884,2.13223 -1.55595,1.61358 -2.88139,3.05428 l -4.26447,4.26447 q -0.57628,0.34576 -1.4407,0.86442 -0.80679,0.51865 -1.95935,1.21018 -1.09493,1.72884 -3.5153,2.99666 -2.36275,1.21018 -4.37972,1.21018 -2.42038,0 -4.66787,-1.49832 -2.18986,-1.55596 -4.26446,-4.72549 -0.92205,-1.55596 -1.8441,-3.11191 -0.86442,-1.55596 -1.90172,-3.11191 l -0.28814,0.0576 q -0.28814,0.34576 -1.09493,4.66786 -0.74916,4.32209 -1.95935,12.67814 -1.32544,8.58657 -2.01698,13.48494 -0.69153,4.89837 -0.69153,6.33907 -0.11526,1.95935 -0.74916,3.05428 -0.57628,1.03731 -1.8441,1.21019 -0.63391,0.0576 -1.78646,0.34577 -1.15256,0.23051 -2.76614,0.6339 -0.28814,-0.0576 -0.51866,-0.17288 -0.23051,-0.17288 -0.23051,-0.46102 l 0.34577,-2.13224 -0.57628,-2.18986 q 0.34577,-1.78646 0.69154,-3.45767 0.23051,-3.45768 0.40339,-6.51196 0.0576,-0.63391 0.4034,-2.13223 0.40339,-1.49833 0.40339,-2.24749 0,-0.4034 -0.17288,-1.15256 -0.17289,-0.80679 -0.17289,-1.21019 0,-3.16953 0.97968,-9.39335 1.0373,-6.22382 1.0373,-9.45098 -0.17288,-1.32544 -0.40339,-2.65089 0.28814,-2.0746 0.92204,-5.18651 0.63391,-3.11191 1.4407,-7.26112 z" />
<path
id="path888"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:118.022px;line-height:1.25;font-family:Mistral;-inkscape-font-specification:Mistral;fill:url(#linearGradient5304);fill-opacity:1"
d="m 810.90004,886.82688 q 0.69154,-1.21019 1.78647,-2.42038 1.09493,-1.26781 2.76614,-2.59325 0.17288,-1.15256 0.34577,-2.24749 0.17288,-1.15256 0.23051,-2.30512 0.17288,-0.80679 0.51865,-1.90172 0.40339,-1.09493 0.86442,-2.36275 0.51865,-1.26781 1.38307,-3.16953 0.92204,-1.90172 2.36274,-4.26447 1.21019,-1.32544 2.53563,-2.8814 1.32544,-1.61358 2.65089,-3.22716 0.6339,-0.51865 1.38307,-0.97968 0.74916,-0.46102 1.49832,-1.0373 0.69154,-0.23051 1.55596,-0.40339 0.86442,-0.17289 1.90172,-0.17289 1.4407,0 2.30512,0.28814 0.92204,0.28814 1.49832,0.97968 0.4034,0.46102 0.74917,1.38307 0.40339,0.92204 0.74916,2.24749 0.17288,1.15256 0.40339,2.53563 0,-0.34577 -0.23051,0.28814 -0.17288,0.6339 -0.57628,2.01697 l -0.51865,1.8441 q -0.80679,2.76614 -3.63056,6.3967 -2.82377,3.63056 -7.60688,8.29842 -0.4034,0.40339 -0.69154,1.0373 -0.28814,0.57628 -0.28814,1.26782 0,1.21018 0.4034,2.13223 0.46102,0.92205 1.26781,1.38307 0.46102,0.34577 1.4407,0.69154 1.0373,0.34576 2.42037,0.6339 2.24749,-0.17288 4.09158,-0.74916 1.8441,-0.57628 3.2848,-1.38307 0.28814,-0.17288 0.92204,-0.46102 0.63391,-0.34577 1.26782,-0.86442 0.74916,1.67121 1.32544,2.99665 0.57628,1.32544 0.92205,2.30512 -3.28479,3.22716 -5.99331,4.89837 -2.65088,1.61358 -4.89837,1.61358 -0.92205,0.57628 -2.13223,0.86442 -1.15256,0.23051 -2.76615,0.23051 -2.13223,0 -3.80344,-0.6339 -1.61358,-0.63391 -2.70851,-1.8441 -0.57628,-0.57628 -1.15256,-1.67121 -0.57628,-1.15256 -1.21019,-2.70851 -0.51865,-1.26782 -0.97967,-1.84409 -0.46103,-0.63391 -1.0373,-0.63391 -0.46103,0 -1.03731,0.46102 -0.57628,0.4034 -1.26781,1.26782 -0.23051,-0.86442 -0.80679,-2.13224 -0.57628,-1.26781 -1.49833,-3.16953 z m 18.44094,-18.72908 q -1.26782,0 -3.40005,3.34242 -2.13223,3.28479 -2.13223,4.84075 0,0.34576 0.11525,0.51865 0.17289,0.11525 0.63391,0.11525 0.63391,0 1.0373,-0.6339 0.4034,-0.69154 0.74917,-1.26782 0.6339,-0.57628 1.21018,-1.21019 0.63391,-0.69153 1.21019,-1.32544 0.69153,-0.80679 1.0373,-1.61358 0.34577,-0.80679 0.34577,-1.61358 0,-0.51865 -0.23051,-0.80679 -0.17289,-0.34577 -0.57628,-0.34577 z" />
<path
id="path890"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:118.022px;line-height:1.25;font-family:Mistral;-inkscape-font-specification:Mistral;fill:url(#linearGradient5304);fill-opacity:1"
d="m 839.94452,886.82688 0.34577,-0.4034 0.17288,-0.57628 q 1.0373,-1.26781 1.78647,-1.95935 0.74916,-0.74916 1.15256,-1.15256 0.28814,-0.28814 1.26781,-0.74916 0.97968,-0.46102 2.65089,-1.15256 l 0.74916,-0.46102 q 0.40339,-0.63391 1.4407,-1.8441 1.0373,-1.21018 2.478,-2.76614 0.28814,-0.34576 0.86442,-0.74916 0.57628,-0.40339 1.21018,-1.0373 1.38307,-1.32544 2.76614,-2.70851 1.38307,-1.4407 2.59326,-2.82377 0.51865,-0.51865 2.13223,-1.8441 1.61359,-1.38307 4.37973,-3.80344 0.40339,-0.28814 1.4407,-0.80679 1.0373,-0.57628 2.70851,-1.32544 0.74916,-0.34577 1.09493,-1.09493 0.40339,-0.8068 0.40339,-2.01698 0.46103,-0.74917 0.86442,-1.78647 0.46103,-1.09493 0.86442,-2.53563 0.57628,-1.78646 0.86442,-2.88139 0.34577,-1.15256 0.51865,-1.55596 0.97968,-2.59326 2.65089,-6.05093 1.67121,-3.5153 3.97632,-8.01028 1.15256,-2.36275 2.70852,-5.24415 0.97967,-1.44069 2.18986,-2.13223 1.21019,-0.74916 2.53563,-0.74916 1.0373,0 1.49832,0.80679 0.51866,0.80679 0.51866,2.36274 0,2.47801 -0.34577,4.72549 -0.34577,2.24749 -1.26782,4.20684 -0.17288,0.4034 -0.28814,1.21019 -0.11525,0.80679 -0.23051,1.95935 -0.0576,0.80679 -0.46102,1.55595 -0.34577,0.74917 -0.92205,1.38307 0,0.4034 -0.11525,0.97968 -0.11526,0.51865 -0.23052,1.26781 l -0.80679,1.03731 q -0.11525,0.34576 -0.11525,0.86442 0,0.46102 0,0.97967 0,0.34577 -0.4034,1.38307 -0.40339,0.97968 -1.21018,2.82377 -0.92205,1.95935 -1.49833,3.11191 -0.51865,1.15256 -0.57628,1.4407 -0.23051,0.28814 -0.63391,0.92204 -0.34577,0.63391 -0.86442,1.4407 l 0.17289,1.26782 -3.68819,13.25442 q 0,2.18986 0.0576,3.74582 0.0576,1.55595 0.34577,2.478 0.28813,0.97967 0.92204,2.42037 0.69154,1.38307 1.72884,2.99665 0.63391,1.09493 1.49833,1.61358 0.86442,0.46103 1.84409,0.46103 1.09493,0 2.18986,-0.57628 1.15256,-0.63391 2.30512,-1.90172 0.69153,1.49832 1.26781,2.82377 0.63391,1.32544 1.03731,2.478 -0.28814,0.17288 -1.26782,1.21018 -0.92205,0.97968 -2.478,2.82377 -0.92205,1.09493 -2.30512,1.61358 -1.32544,0.46103 -3.28479,0.46103 -4.32209,0 -7.03061,-2.24749 -2.70851,-2.24749 -3.80344,-6.74247 -0.23051,-0.92205 -0.4034,-1.61358 -0.17288,-0.69154 -0.34576,-1.26782 -0.4034,-1.09493 -1.38307,-2.36274 -0.4034,0.57628 -0.63391,0.86442 -0.69154,0.46102 -1.55595,1.32544 -0.8068,0.86442 -1.67121,2.18986 -0.17289,0.57628 -0.63391,1.4407 -0.46103,0.80679 -1.26782,1.95935 -1.84409,2.13223 -3.74581,4.32209 -1.90172,2.13224 -3.80345,4.20684 -2.59325,2.8814 -4.78311,4.20684 -2.18987,1.38307 -3.80345,1.38307 -2.88139,0 -4.26446,-1.38307 -1.38307,-1.32544 -1.38307,-4.20684 0,-1.32544 0.97967,-3.68819 0.97968,-2.42037 0.97968,-3.57293 l -0.34577,-0.92204 z m 28.98685,-16.48159 q 0,-0.28814 -0.23051,-0.86442 -0.86442,0.86442 -2.13224,2.01698 -1.26781,1.15256 -2.99665,2.53563 -0.40339,0.92204 -1.84409,2.93902 -1.4407,1.95935 -4.03396,4.89837 -0.74916,0.86442 -2.01697,2.99666 -1.26782,2.0746 -3.11191,5.12888 -0.63391,1.21019 -1.32545,2.93903 0,0.34576 0.46103,0.74916 1.72884,-0.51865 4.20684,-2.99665 2.53563,-2.53563 5.9933,-6.97298 3.57293,-4.72549 5.30177,-8.01028 1.72884,-3.34242 1.72884,-5.3594 z" />
<path
id="path892"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:118.022px;line-height:1.25;font-family:Mistral;-inkscape-font-specification:Mistral;fill:url(#linearGradient5304);fill-opacity:1"
d="m 888.12148,886.82688 0.34576,-0.4034 0.17289,-0.57628 q 1.55595,-2.13223 5.47465,-5.53228 3.9187,-3.45768 5.41703,-5.58991 0.57628,-0.92205 1.32544,-1.32544 0.74916,-0.4034 1.49833,-0.4034 2.01697,0 3.40004,1.03731 1.38307,0.97967 1.8441,2.99665 0.40339,1.78646 0.74916,3.63056 0.34577,1.78646 0.57628,3.63056 0.4034,1.15256 0.97967,3.5153 0.57628,2.30512 0.86442,2.65089 0.28814,0.57628 0.86442,0.86442 0.57628,0.23051 1.4407,0.23051 1.0373,0 2.13223,-0.34577 1.09493,-0.4034 2.24749,-1.32544 0.86442,-0.74917 1.78647,-1.49833 0.97967,-0.80679 1.90172,-1.55595 l 2.30512,5.30177 q -0.92205,0.92204 -2.478,2.13223 -1.49833,1.15256 -3.63056,2.70851 -2.36275,1.72884 -4.03396,2.59326 -1.67121,0.80679 -2.53563,0.80679 -5.24414,0 -6.80009,-1.21019 -1.55596,-1.21018 -3.45768,-6.74246 -0.23051,-0.46103 -0.69153,-1.09493 -0.46103,-0.63391 -1.03731,-1.49833 -0.69153,-1.32544 -1.21018,-1.95935 -0.51865,-0.69154 -0.86442,-0.69154 -0.92205,0 -2.478,1.26782 -1.55596,1.21019 -3.80345,3.68819 -0.28814,-0.74917 -0.69153,-1.78647 -0.46102,-1.0373 -0.92205,-2.42037 -0.11525,-0.34577 -0.28814,-0.63391 -0.17288,-0.28814 -0.40339,-0.46102 z m 24.08847,-45.46844 q 1.4407,0 2.07461,0.57628 0.69153,0.57628 0.69153,1.67121 -0.34577,1.61358 -0.57628,2.70851 -0.57628,2.07461 -1.0373,3.40005 -0.4034,1.32544 -0.63391,1.90172 -0.51865,1.26781 -1.4407,2.24749 -0.86441,0.92205 -2.13223,1.67121 -1.32544,0.92205 -2.24749,1.32544 -0.86442,0.34577 -1.21018,0.28814 -0.97968,-0.11525 -1.90173,-0.17288 -0.86442,-0.11526 -1.72883,-0.11526 -0.74917,-0.40339 -1.21019,-1.55595 -0.4034,-1.15256 -0.4034,-3.11191 0,-1.72884 2.07461,-4.3221 2.13223,-2.65088 3.74581,-2.82376 0.97968,-1.21019 2.30512,-2.76614 0.57628,-0.4034 1.49833,-0.63391 0.92205,-0.28814 2.13223,-0.28814 z" />
<path
id="path894"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:118.022px;line-height:1.25;font-family:Mistral;-inkscape-font-specification:Mistral;fill:url(#linearGradient5304);fill-opacity:1"
d="m 922.92874,884.29125 5.24414,-3.45768 q 0.28814,-0.28814 0.69153,-0.74916 0.4034,-0.51865 0.92205,-1.4407 0.40339,-0.74916 1.0373,-1.26781 0.69154,-0.51866 1.55596,-0.92205 0.46102,-0.57628 1.32544,-1.4407 0.86442,-0.86442 2.18986,-2.01698 0.63391,-0.34576 1.61358,-0.97967 0.97968,-0.69154 2.13224,-1.78647 5.24414,-4.956 9.16284,-7.434 3.97632,-2.478 6.68484,-2.478 1.49832,0 2.18986,0.63391 0.74916,0.6339 0.74916,1.78646 0,1.21019 -0.46102,2.13223 -0.4034,0.92205 -1.32544,1.55596 -1.4407,1.0373 -3.11191,2.30512 -0.92205,1.21018 -2.24749,2.59325 -1.32544,1.32545 -3.11191,2.65089 -0.57628,0.74916 -0.97968,1.32544 -0.28814,0.28814 -1.09493,1.0373 -0.80679,0.74917 -2.13223,1.72884 -0.57628,1.26782 -2.53563,3.28479 -1.90172,2.01698 -5.12888,4.84075 -0.4034,0.40339 -1.4407,1.84409 -1.03731,1.4407 -2.70852,3.80345 l 0.4034,0.51865 q 1.26781,-0.4034 2.65088,-1.38307 1.38308,-0.97968 3.05429,-2.59326 1.95934,-1.78647 3.16953,-2.8814 1.26782,-1.15255 1.78647,-1.49832 0.40339,-0.23051 0.80679,-0.46103 0.40339,-0.23051 0.92205,-0.57627 2.65088,-3.16954 4.956,-4.66787 2.30511,-1.55595 4.26446,-1.55595 1.21019,0 1.8441,0.97967 0.63391,0.92205 0.74916,2.82377 -0.11525,2.8814 -0.11525,5.53228 -0.0576,1.8441 0.97967,3.34242 1.09493,1.4407 2.82377,1.4407 0.51865,0 0.97967,-0.28814 0.51865,-0.28814 1.03731,-0.74916 0.40339,-0.51865 0.74916,-0.97968 0.40339,-0.46102 0.80679,-0.92204 0.23051,-0.11526 0.63391,-0.4034 0.46102,-0.28814 0.86442,-0.69153 0.80679,1.72883 1.32544,3.05428 0.57628,1.26781 0.86442,2.24749 -1.32544,1.21018 -2.65089,2.53563 -1.26781,1.26781 -2.70851,2.42037 -1.72884,1.32544 -3.34242,2.01698 -1.61358,0.6339 -3.22716,0.6339 -3.74582,0 -5.7628,-2.13223 -2.01697,-2.13223 -2.36274,-6.45433 0,-0.51865 -0.17289,-1.0373 -0.11525,-0.57628 -0.57628,-1.15256 -0.28813,0.28814 -0.6339,0.63391 -0.34577,0.28814 -0.80679,0.80679 -0.74917,0.57628 -1.90173,1.4407 -1.09493,0.86442 -2.59325,2.0746 -2.01698,2.07461 -3.40005,3.40005 -1.38307,1.32544 -1.95935,1.90172 -1.15256,0.97968 -2.70851,1.95935 -1.49833,0.97968 -3.40005,2.01698 -1.21019,0.63391 -2.07461,0.97967 -0.86441,0.4034 -1.26781,0.4034 -2.76614,0 -4.09158,-1.32544 -1.32545,-1.38307 -1.32545,-4.20684 0,-1.55596 0.69154,-2.93903 0.63391,-1.44069 1.95935,-2.76614 0.11525,-0.74916 0.11525,-1.21018 0,-0.28814 -0.17288,-0.57628 -0.11525,-0.34577 -0.34577,-0.74917 -0.34576,-0.80679 -0.74916,-1.78646 -0.46102,-1.0373 -0.97967,-2.18986 0.23051,-0.23052 0.69153,-0.86442 0.4034,-0.69154 0.97968,-1.67121 z" />
<path
id="path896"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:118.022px;line-height:1.25;font-family:Mistral;-inkscape-font-specification:Mistral;fill:url(#linearGradient5304);fill-opacity:1"
d="m 965.3429,886.82688 0.51865,-0.46103 q 0.0576,-0.6339 0.80679,-1.49832 0.74916,-0.86442 2.13223,-2.01698 0.86442,-0.63391 1.78647,-1.21019 0.97967,-0.57628 1.84409,-1.26781 3.63056,-3.11191 7.03061,-5.99331 1.95935,-1.72883 3.9187,-2.93902 1.95935,-1.26782 3.68819,-2.01698 1.21018,-1.55595 4.49498,-3.16953 3.34242,-1.61359 5.41702,-1.61359 0.80679,0 1.26782,0.46103 0.51865,0.46102 0.6339,1.15256 v 3.16953 q 0,1.67121 -0.97967,2.99665 -0.92205,1.26782 -2.82377,2.36275 -1.26782,0.57628 -2.53563,1.26781 -1.26781,0.69154 -2.53563,1.26782 -0.46102,0.57628 -2.478,2.18986 -1.95935,1.55595 -5.3594,4.20684 -1.55595,1.21018 -2.59325,2.18986 -1.03731,0.92205 -1.4407,1.49833 -0.57628,1.09493 -0.92205,2.42037 -0.28814,1.32544 -0.28814,3.05428 0,1.32544 0.4034,2.30512 0.40339,0.92204 1.21018,1.49832 0.57628,0.4034 1.55596,0.80679 1.0373,0.4034 2.53563,0.80679 0.86442,-0.34576 2.24749,-0.6339 1.44069,-0.34577 3.16953,-0.86442 1.95935,-1.15256 3.97633,-2.42037 2.0746,-1.26782 4.09158,-2.59326 0.28814,-0.17289 0.69154,-0.34577 0.46102,-0.23051 0.92204,-0.63391 0.57628,-0.74916 1.55596,-1.72883 1.03735,-0.97968 2.47795,-2.24749 2.3052,5.01363 2.3052,5.30177 -2.1323,1.72883 -4.32213,3.57293 -2.18986,1.78646 -5.01363,2.93902 -0.92205,0.74917 -1.55595,1.38307 -2.8814,2.8814 -6.74247,4.3221 -3.80344,1.49832 -8.70182,1.49832 -1.09493,0 -1.95935,-0.17288 -0.86442,-0.17288 -1.4407,-0.46102 -1.72883,-1.15256 -2.93902,-2.01698 -1.26782,-0.92205 -2.13223,-1.72884 -0.86442,-0.86442 -1.26782,-1.61358 -0.51865,-0.80679 -0.69153,-1.95935 -0.23052,-1.15256 -0.23052,-2.82377 0,-0.46102 0.28814,-1.49833 0.28814,-1.0373 0.28814,-1.44069 -0.40339,-1.26782 -0.97967,-2.59326 -0.57628,-1.32544 -1.32544,-2.70851 z" />
<path
id="path898"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:118.022px;line-height:1.25;font-family:Mistral;-inkscape-font-specification:Mistral;fill:url(#linearGradient5304);fill-opacity:1"
d="m 1001.7637,886.82688 q 0.4034,-0.4034 0.8645,-1.03731 0.4034,-0.69153 0.9796,-1.49832 l 4.4374,-3.05428 q 0.8068,-0.97968 2.478,-2.478 1.6712,-1.55596 4.1492,-3.74582 0.2881,-0.63391 0.9221,-1.4407 0.6915,-0.86442 1.6135,-1.67121 0.8068,-0.74916 1.6136,-1.38307 0.8068,-0.69153 1.4983,-1.32544 0.8645,-0.86442 1.6136,-1.72884 0.8068,-0.86442 1.6136,-1.67121 0.9221,-0.80679 1.9017,-1.26781 0.9797,-0.46103 2.1323,-0.46103 1.2678,0 1.9017,0.34577 0.6915,0.28814 0.7491,0.86442 -0.5762,1.32544 -1.2101,2.65089 l 0.3457,0.51865 q 2.5357,-0.97968 3.9764,-1.4407 1.4407,-0.46103 1.844,-0.46103 4.2069,0 6.2815,2.59326 2.1322,2.53563 2.1322,7.72214 0,0.97968 -0.2305,2.30512 -0.2305,1.32544 -0.7491,2.8814 -0.5763,1.72884 -1.2679,2.88139 -0.6339,1.15256 -1.2101,1.67121 0.2305,0.74917 0.5186,1.09494 0.2881,0.28814 0.7492,0.28814 0.461,0 0.922,-0.28814 0.5187,-0.28814 1.2102,-0.86442 0.5763,1.26781 1.0949,2.65088 0.5763,1.32544 1.1526,2.65089 -1.0373,0.92204 -2.017,1.78646 -0.9797,0.86442 -2.0746,1.67121 -1.3254,1.09493 -2.5356,1.61358 -1.1526,0.46103 -2.3051,0.46103 -1.3255,0 -2.1899,-0.63391 -0.8644,-0.63391 -1.3831,-1.78647 -1.4407,1.90173 -3.5153,3.51531 -2.017,1.55595 -4.495,2.59326 -1.4407,0.69153 -2.6508,1.09493 -1.1526,0.34576 -2.1323,0.34576 -0.2881,0 -1.1525,0.23052 -0.8068,0.23051 -1.3255,0.23051 -3.2848,0 -5.9357,-2.76614 -2.6508,-2.76614 -2.6508,-6.16619 0,-1.38307 0.6339,-3.63056 0.6339,-2.30512 0.6339,-2.70851 0,-0.4034 -0.2882,-0.63391 -0.2305,-0.28814 -0.6915,-0.28814 -0.2881,0 -1.3831,0.86442 -1.0949,0.86442 -3.1119,2.478 -0.1729,0.23051 -0.4034,0.69153 -0.2305,0.46103 -0.7491,1.03731 -0.4611,-1.32545 -1.0373,-2.65089 -0.5763,-1.38307 -1.2679,-2.65088 z m 27.7191,-10.54591 q -0.2882,0.0576 -0.8644,0.6339 -0.5187,0.51865 -1.0373,1.32544 -0.8068,1.32545 -1.8441,2.8814 -0.6339,0.69154 -1.3831,1.09493 -0.6915,0.34577 -1.6136,0.51865 -0.5763,0.0576 -1.2102,1.15256 -0.6339,1.0373 -1.2678,3.05428 -0.6339,1.78647 -0.922,3.05428 -0.2882,1.26782 -0.2882,2.13224 0,1.61358 0.8068,2.42037 0.8068,0.80679 2.478,0.80679 2.6509,0 4.8408,-1.4407 2.2475,-1.49832 4.2068,-4.43735 0.9221,-1.09493 1.7288,-2.0746 0.4611,-0.34577 0.7492,-1.09493 0.2881,-0.8068 0.5763,-1.95935 l 1.0373,-3.2848 q -0.5187,-1.72883 -0.9797,-2.70851 -0.461,-1.0373 -0.922,-1.26781 -0.2882,-0.17289 -1.2678,-0.34577 -0.9797,-0.23051 -2.8238,-0.46102 z" />
<path
id="path900"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:118.022px;line-height:1.25;font-family:Mistral;-inkscape-font-specification:Mistral;fill:url(#linearGradient5304);fill-opacity:1"
d="m 1043.4864,886.82688 q 0.922,-1.21019 1.8441,-2.53563 4.2068,-3.45768 6.8577,-6.62721 2.7085,-3.22717 3.9187,-5.99331 l -0.5763,-2.76614 q 0.7492,-1.4407 3.6882,-3.40005 2.9967,-1.95935 4.8407,-1.95935 1.9594,0 3.2848,1.15256 1.3831,1.15256 2.6509,2.42037 0.6339,0.4034 0.9221,0.63391 2.3051,1.72884 3.4576,4.78312 1.1526,3.05428 1.1526,7.434 0,2.30512 -1.7865,6.62721 -1.7864,4.26447 -1.7864,6.45433 0,0.28814 0.1729,0.46103 0.2305,0.17288 0.5762,0.17288 0.7492,0 1.7865,-0.63391 1.0373,-0.69153 2.2475,-1.84409 3.0543,-2.99665 3.6882,-3.28479 0.6339,-0.34577 1.5559,-1.09493 0.4611,1.15256 1.095,2.478 0.6339,1.32544 1.2102,2.82377 -0.5187,0.46102 -1.2102,1.09493 -0.6339,0.6339 -1.556,1.4407 -1.9593,1.44069 -5.1289,3.5153 -3.1119,2.01698 -7.4916,4.66786 -1.1526,0.74916 -2.6509,1.21019 -2.4204,0 -3.6306,-0.69154 -1.2101,-0.74916 -1.2101,-2.36274 0,-0.63391 0.2305,-1.4407 0.2881,-0.86442 0.7491,-1.84409 0.3458,-0.74917 0.7492,-1.49833 0.4034,-0.80679 0.6915,-1.61358 1.2678,-3.63056 1.9018,-6.74247 0.6915,-3.11191 0.6915,-5.58991 0,-3.05428 -0.9797,-4.66786 -0.922,-1.61358 -2.8238,-1.8441 -1.2678,0.69154 -2.7661,1.95935 -1.4983,1.26782 -3.0543,3.16954 -1.6712,2.07461 -2.9966,3.40005 -1.3255,1.32544 -2.1899,1.78646 -0.5186,0.86442 -1.6712,1.95935 -1.1526,1.09493 -3.0543,2.36275 -0.1152,0.23051 -0.3457,0.69153 -0.2306,0.46103 -0.7492,1.03731 -0.461,-1.32545 -1.0373,-2.59326 -0.5763,-1.32544 -1.2678,-2.70851 z" />
<path
id="path902"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:118.022px;line-height:1.25;font-family:Mistral;-inkscape-font-specification:Mistral;fill:url(#linearGradient5304);fill-opacity:1"
d="m 1081.9818,886.82688 q 0.6916,-1.21019 1.7865,-2.42038 1.0949,-1.26781 2.7661,-2.59325 0.1729,-1.15256 0.3458,-2.24749 0.1729,-1.15256 0.2305,-2.30512 0.1729,-0.80679 0.5187,-1.90172 0.4034,-1.09493 0.8644,-2.36275 0.5186,-1.26781 1.3831,-3.16953 0.922,-1.90172 2.3627,-4.26447 1.2102,-1.32544 2.5356,-2.8814 1.3255,-1.61358 2.6509,-3.22716 0.6339,-0.51865 1.3831,-0.97968 0.7491,-0.46102 1.4983,-1.0373 0.6915,-0.23051 1.556,-0.40339 0.8644,-0.17289 1.9017,-0.17289 1.4407,0 2.3051,0.28814 0.9221,0.28814 1.4983,0.97968 0.4034,0.46102 0.7492,1.38307 0.4034,0.92204 0.7492,2.24749 0.1728,1.15256 0.4034,2.53563 0,-0.34577 -0.2306,0.28814 -0.1728,0.6339 -0.5762,2.01697 l -0.5187,1.8441 q -0.8068,2.76614 -3.6306,6.3967 -2.8237,3.63056 -7.6068,8.29842 -0.4034,0.40339 -0.6916,1.0373 -0.2881,0.57628 -0.2881,1.26782 0,1.21018 0.4034,2.13223 0.461,0.92205 1.2678,1.38307 0.461,0.34577 1.4407,0.69154 1.0373,0.34576 2.4204,0.6339 2.2475,-0.17288 4.0916,-0.74916 1.844,-0.57628 3.2847,-1.38307 0.2882,-0.17288 0.9221,-0.46102 0.6339,-0.34577 1.2678,-0.86442 0.7492,1.67121 1.3254,2.99665 0.5763,1.32544 0.9221,2.30512 -3.2848,3.22716 -5.9933,4.89837 -2.6509,1.61358 -4.8984,1.61358 -0.922,0.57628 -2.1322,0.86442 -1.1526,0.23051 -2.7662,0.23051 -2.1322,0 -3.8034,-0.6339 -1.6136,-0.63391 -2.7085,-1.8441 -0.5763,-0.57628 -1.1526,-1.67121 -0.5763,-1.15256 -1.2102,-2.70851 -0.5186,-1.26782 -0.9796,-1.84409 -0.4611,-0.63391 -1.0373,-0.63391 -0.4611,0 -1.0373,0.46102 -0.5763,0.4034 -1.2679,1.26782 -0.2305,-0.86442 -0.8067,-2.13224 -0.5763,-1.26781 -1.4984,-3.16953 z m 18.441,-18.72908 q -1.2678,0 -3.4001,3.34242 -2.1322,3.28479 -2.1322,4.84075 0,0.34576 0.1152,0.51865 0.1729,0.11525 0.6339,0.11525 0.634,0 1.0374,-0.6339 0.4033,-0.69154 0.7491,-1.26782 0.6339,-0.57628 1.2102,-1.21019 0.6339,-0.69153 1.2102,-1.32544 0.6915,-0.80679 1.0373,-1.61358 0.3458,-0.80679 0.3458,-1.61358 0,-0.51865 -0.2306,-0.80679 -0.1728,-0.34577 -0.5762,-0.34577 z" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 37 KiB

View File

@ -1,6 +1,6 @@
# License for this source file # License for this source file
# #
# Copyright (c) 2014 Miqra Engineering # Copyright (c) 2021 Miqra Engineering
# #
import sys, os import sys, os
@ -9,12 +9,22 @@ import signal
from optparse import OptionParser from optparse import OptionParser
from collections import OrderedDict from collections import OrderedDict
from .resources import Resources
# perform gstreamer imports (python3 style) # perform gstreamer imports (python3 style)
import gi import gi
gi.require_version('Gst','1.0') gi.require_version('Gst', '1.0')
gi.require_version('Gtk', '3.0')
gi.require_version('GstGL', '1.0')
gi.require_version('GstVideo', '1.0')
gi.require_version('GdkPixbuf', '2.0')
from gi.repository import GObject from gi.repository import GObject
from gi.repository import Gst from gi.repository import Gst, GstGL, GstVideo
from gi.repository import GdkPixbuf
from gi.repository import GLib, Gio, Gtk, Gdk
from gi.repository import GdkX11
Gst.init(None) Gst.init(None)
# perform dbus imports # perform dbus imports
@ -26,15 +36,19 @@ from dbus.mainloop.glib import DBusGMainLoop
DBusGMainLoop(set_as_default=True) DBusGMainLoop(set_as_default=True)
# imports from module # imports from module
from monitoredplayer import MonitoredPlayer from . monitoredplayer import MonitoredPlayer
class MediaService(dbus.service.Object): class MediaService(dbus.service.Object):
def __init__(self): def __init__(self):
bus_name = dbus.service.BusName('nl.miqra.MediaCore.Media', bus=dbus.SystemBus()) bus_name = dbus.service.BusName('nl.miqra.MediaCore.Media', bus=dbus.SystemBus())
dbus.service.Object.__init__(self, bus_name, '/nl/miqra/MediaCore/Media') dbus.service.Object.__init__(self, bus_name, '/nl/miqra/MediaCore/Media')
self.window = Gtk.Window(title="MediaServer")
self.windowInit()
self.player = MonitoredPlayer() self.player = MonitoredPlayer()
self.player.connect('playback-ready',self.onPlayerReady) # parameters: source_file tag_dict self.player.connect('playback-ready',self.onPlayerReady) # parameters: source_file tag_dict
@ -46,46 +60,110 @@ class MediaService(dbus.service.Object):
self.player.connect('volume-changed',self.onPlayerVolumeChanged) # parameters: volume self.player.connect('volume-changed',self.onPlayerVolumeChanged) # parameters: volume
self.player.connect('playback-buffering',self.onPlayerBuffering) # parameters: volume self.player.connect('playback-buffering',self.onPlayerBuffering) # parameters: volume
self.loadcount = 0; self.window.connect('show',self.onWindowShow)
self.loadmax = 1;
self.loadcount = 0
self.loadmax = 1
self.quickplay = False self.quickplay = False
self.quickplayduration = 0 self.quickplayduration = 0
self.quickplayloop = False self.quickplayloop = False
self.window.show()
self.tick() self.tick()
# Keepalive timer to help react to Keyboard interrupts # Keepalive timer to help react to Keyboard interrupts
def tick(self): def tick(self):
GObject.timeout_add(100, self.tick) GObject.timeout_add(100, self.tick)
def windowInit(self):
self.window.set_name("mainwindow")
self.imagebox = Gtk.Box()
self.imagebox.set_name("imbox")
self.imagebox.set_hexpand(True)
self.imagebox.set_vexpand(True)
self.imagebox.set_halign(Gtk.Align.CENTER)
self.imagebox.set_valign(Gtk.Align.CENTER)
css = b"""
#mainwindow
{
background-color: #000;
}
"""
css_provider = Gtk.CssProvider()
css_provider.load_from_data(css)
context = Gtk.StyleContext()
screen = Gdk.Screen.get_default()
context.add_provider_for_screen(screen, css_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
self.window.add(self.imagebox)
self.window.fullscreen()
pass
def loadImage(self,image):
# remove any existing children
for child in self.imagebox.get_children():
self.imagebox.remove(child)
self.imagebox.add(image)
self.imagebox.show_all()
def loadImageFile(self,imfile):
print("Loading image {0}".format(imfile))
image = Gtk.Image()
image.set_from_file(imfile)
self.loadImage(image)
def loadImageData(self,data):
print("Loading image from data")
loader = GdkPixbuf.PixbufLoader.new()
loader.write(data)
pixbuf = loader.get_pixbuf()
loader.close()
image = Gtk.Image()
image.set_from_pixbuf(pixbuf)
self.loadImage(image)
def onWindowShow(self,w):
xid = self.window.get_window().get_xid()
print("Retrieved XID for window: {0}".format(xid))
self.player.link_to_window(xid)
self.loadBaseImage()
def loadBaseImage(self):
self.loadImageFile(Resources.filename("images/background-base.svg"))
@dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='s', out_signature='') @dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='s', out_signature='')
def QuickPlay(self, file,): def QuickPlay(self, file,):
""" Directly play back a local file """ Directly play back a local file
""" """
if self.loadcount < self.loadmax: if self.loadcount < self.loadmax:
print "Quickplaying file {0}".format(file) print("Quickplaying file {0}".format(file))
self.quickplay = True self.quickplay = True
self.quickplayduration = 0 self.quickplayduration = 0
self.quickplayloop = False self.quickplayloop = False
self.player.load(file) self.player.load(file)
self.loadcount += 1; self.loadcount += 1
else: else:
print "Skipping load of file {0} because maximum simultaneous loads ({1}) was reached. Wait until ready....".format(file,self.loadmax); print("Skipping load of file {0} because maximum simultaneous loads ({1}) was reached. Wait until ready....".format(file,self.loadmax))
@dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='sd', out_signature='') @dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='sd', out_signature='')
def QuickPlayFor(self, file, duration): def QuickPlayFor(self, file, duration):
""" Directly play back a local file """ Directly play back a local file
""" """
if self.loadcount < self.loadmax: if self.loadcount < self.loadmax:
print "Quickplaying file {0} for {1} seconds".format(file,duration) print("Quickplaying file {0} for {1} seconds".format(file,duration))
self.quickplay = True self.quickplay = True
self.quickplayduration = duration self.quickplayduration = duration
self.quickplayloop = False self.quickplayloop = False
self.player.load(file) self.player.load(file)
self.loadcount += 1; self.loadcount += 1
else: else:
print "Skipping load of file {0} because maximum simultaneous loads ({1}) was reached. Wait until ready....".format(file,self.loadmax); print("Skipping load of file {0} because maximum simultaneous loads ({1}) was reached. Wait until ready....".format(file,self.loadmax))
# self.quickplayer.playfor(file,duration) # self.quickplayer.playfor(file,duration)
@dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='s', out_signature='') @dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='s', out_signature='')
@ -93,56 +171,56 @@ class MediaService(dbus.service.Object):
""" Directly play back a url """ Directly play back a url
""" """
if self.loadcount < self.loadmax: if self.loadcount < self.loadmax:
print "Quickplaying file {0}".format(file) print("Quickplaying file {0}".format(file))
self.quickplay = True self.quickplay = True
self.quickplayduration = 0 self.quickplayduration = 0
self.quickplayloop = False self.quickplayloop = False
self.player.load_uri(file) self.player.load_uri(file)
self.loadcount += 1; self.loadcount += 1
else: else:
print "Skipping load of file {0} because maximum simultaneous loads ({1}) was reached. Wait until ready....".format(file,self.loadmax); print("Skipping load of file {0} because maximum simultaneous loads ({1}) was reached. Wait until ready....".format(file,self.loadmax))
@dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='sd', out_signature='') @dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='sd', out_signature='')
def QuickPlayUrlFor(self, url, duration): def QuickPlayUrlFor(self, url, duration):
""" Directly play back a url """ Directly play back a url
""" """
if self.loadcount < self.loadmax: if self.loadcount < self.loadmax:
print "Quickplaying file {0} for {1} seconds".format(file,duration) print("Quickplaying file {0} for {1} seconds".format(file,duration))
self.quickplay = True self.quickplay = True
self.quickplayduration = duration self.quickplayduration = duration
self.quickplayloop = False self.quickplayloop = False
self.player.load_uri(file) self.player.load_uri(file)
self.loadcount += 1; self.loadcount += 1
else: else:
print "Skipping load of file {0} because maximum simultaneous loads ({1}) was reached. Wait until ready....".format(file,self.loadmax); print("Skipping load of file {0} because maximum simultaneous loads ({1}) was reached. Wait until ready....".format(file,self.loadmax))
@dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='s', out_signature='') @dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='s', out_signature='')
def QuickLoop(self, file,): def QuickLoop(self, file,):
""" Directly play back a url """ Directly play back a url
""" """
if self.loadcount < self.loadmax: if self.loadcount < self.loadmax:
print "Quickplaying file {0}".format(file) print("Quickplaying file {0}".format(file))
self.quickplay = True self.quickplay = True
self.quickplayduration = 0 self.quickplayduration = 0
self.quickplayloop = True self.quickplayloop = True
self.player.load(file) self.player.load(file)
self.loadcount += 1; self.loadcount += 1
else: else:
print "Skipping load of file {0} because maximum simultaneous loads ({1}) was reached. Wait until ready....".format(file,self.loadmax); print("Skipping load of file {0} because maximum simultaneous loads ({1}) was reached. Wait until ready....".format(file,self.loadmax))
@dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='s', out_signature='') @dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='s', out_signature='')
def QuickLoopUrl(self, url,): def QuickLoopUrl(self, url,):
""" Directly play back a url """ Directly play back a url
""" """
if self.loadcount < self.loadmax: if self.loadcount < self.loadmax:
print "Quickplaying url {0}".format(uri) print("Quickplaying url {0}".format(uri))
self.quickplay = True self.quickplay = True
self.quickplayduration = 0 self.quickplayduration = 0
self.quickplayloop = True self.quickplayloop = True
self.player.load_uri(url) self.player.load_uri(url)
self.loadcount += 1; self.loadcount += 1
else: else:
print "Skipping load of file {0} because maximum simultaneous loads ({1}) was reached. Wait until ready....".format(file,self.loadmax); print("Skipping load of file {0} because maximum simultaneous loads ({1}) was reached. Wait until ready....".format(file,self.loadmax))
@ -152,32 +230,32 @@ class MediaService(dbus.service.Object):
""" Load a local file for playback """ Load a local file for playback
""" """
if self.loadcount < self.loadmax: if self.loadcount < self.loadmax:
print "Loading file {0}".format(file) print("Loading file {0}".format(file))
self.quickplay = False self.quickplay = False
self.player.load(file) self.player.load(file)
self.loadcount += 1; self.loadcount += 1
self.OnLoading("file://{0}".format(file)) self.OnLoading("file://{0}".format(file))
else: else:
print "Skipping load of file {0} because maximum simultaneous loads ({1}) was reached. Wait until ready....".format(file,self.loadmax); print("Skipping load of file {0} because maximum simultaneous loads ({1}) was reached. Wait until ready....".format(file,self.loadmax))
@dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='s', out_signature='') @dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='s', out_signature='')
def LoadUrl(self, uri): def LoadUrl(self, uri):
""" Load an url for playback """ Load an url for playback
""" """
if self.loadcount < self.loadmax: if self.loadcount < self.loadmax:
print "Loading url {0}".format(uri) print("Loading url {0}".format(uri))
self.quickplay = False self.quickplay = False
self.player.load_uri(uri) self.player.load_uri(uri)
self.loadcount += 1; self.loadcount += 1;
self.OnLoading(uri) self.OnLoading(uri)
else: else:
print "Skipping load of url {0} because maximum simultaneous loads ({1}) was reached. Wait until ready....".format(uri,self.loadmax); print("Skipping load of url {0} because maximum simultaneous loads ({1}) was reached. Wait until ready....".format(uri,self.loadmax))
@dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='d', out_signature='') @dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='d', out_signature='')
def PlayFor(self, duration): def PlayFor(self, duration):
""" Starts playback for [duration] seconds """ Starts playback for [duration] seconds
""" """
print "Starting playback for {0} seconds".format(duration) print("Starting playback for {0} seconds".format(duration))
self.player.playfor(duration) self.player.playfor(duration)
@dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='', out_signature='') @dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='', out_signature='')
@ -185,7 +263,7 @@ class MediaService(dbus.service.Object):
""" Starts/resumes playback """ Starts/resumes playback
""" """
pos = self.player.position() pos = self.player.position()
print "Starting playback at timestamp {0}".format(pos) print("Starting playback at timestamp {0}".format(pos))
self.player.play() self.player.play()
@dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='', out_signature='') @dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='', out_signature='')
@ -193,21 +271,21 @@ class MediaService(dbus.service.Object):
""" Starts/resumes playback """ Starts/resumes playback
""" """
pos = self.player.position() pos = self.player.position()
print "Starting playback at timestamp {0}".format(pos) print("Starting playback at timestamp {0}".format(pos))
self.player.loop() self.player.loop()
@dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='', out_signature='') @dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='', out_signature='')
def Pause(self): def Pause(self):
""" Pauses playback """ Pauses playback
""" """
print "Pausing" print("Pausing")
self.player.pause() self.player.pause()
@dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='', out_signature='') @dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='', out_signature='')
def Stop(self): def Stop(self):
""" Stops playback """ Stops playback
""" """
print "Stopping" print("Stopping")
self.player.stop() self.player.stop()
@dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='', out_signature='d') @dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='', out_signature='d')
@ -230,18 +308,26 @@ class MediaService(dbus.service.Object):
### Callback functions ### Callback functions
def onPlayerReady(self,player,filename,tags): def onPlayerReady(self,player,filename,tags):
print "Loaded {0}".format(filename) print("Loaded {0}".format(filename))
print "Tags:" print("Tags:")
taglist = {} taglist = {}
for tag in tags: for tag in tags:
try: try:
taglist[tag] = str(tags[tag]) taglist[tag] = str(tags[tag])
print " {0}: {1}".format(tag,taglist[tag]) print(" {0}: {1}".format(tag,taglist[tag]))
except Exception as x: except Exception as x:
print "Error converting value for '{0}':\n {1}".format(tag,x) print("Error converting value for '{0}':\n {1}".format(tag,x))
# extract cover art from tags
if "image" in tags:
buffer = tags["image"].get_buffer() # Gst.Buffer
(result, mapinfo) = buffer.map(Gst.MapFlags.READ)
if result:
self.loadImageData(mapinfo.data)
# reset load counter # reset load counter
self.loadcount = 0; self.loadcount = 0
if self.quickplay: if self.quickplay:
if self.quickplayloop: if self.quickplayloop:
@ -261,21 +347,23 @@ class MediaService(dbus.service.Object):
self.OnPlaying() self.OnPlaying()
def onPlayerStopped(self,player): def onPlayerStopped(self,player):
self.loadBaseImage()
self.OnStopped() self.OnStopped()
def onPlayerPaused(self,player): def onPlayerPaused(self,player):
self.OnPaused() self.OnPaused()
def onPlayerFinished(self,player): def onPlayerFinished(self,player):
self.loadBaseImage()
self.OnFinished() self.OnFinished()
def onPlayerError(self,player,state,error,debug): def onPlayerError(self,player,state,error,debug):
print "Player state: {0}".format(state) print("Player state: {0}".format(state))
if state == "LOADING": if state == "LOADING":
print "Failure during LOAD: {0}".format(error) print("Failure during LOAD: {0}".format(error))
self.OnLoadFail(error) self.OnLoadFail(error)
else: else:
print "Failure during RUN: {0}".format(error) print("Failure during RUN: {0}".format(error))
self.OnRunFail(error) self.OnRunFail(error)
def onPlayerVolumeChanged(self,player,volume): def onPlayerVolumeChanged(self,player,volume):
@ -348,19 +436,27 @@ class MediaService(dbus.service.Object):
pass pass
def Run(): def Run():
print("Initializing")
# quick bugfix - set XDG runtime dir if it has not been set
if not 'XDG_RUNTIME_DIR' in os.environ:
os.environ['XDG_RUNTIME_DIR'] = "/run/user/{0}".format(os.getuid())
mediaservice = MediaService() mediaservice = MediaService()
loop = GObject.MainLoop() loop = GObject.MainLoop()
loopcontext = loop.get_context() loopcontext = loop.get_context()
def onsigint(signal,frame): def onsigint(signal,frame):
print "Quitting" print("Quitting")
loop.quit() loop.quit()
signal.signal(signal.SIGINT, onsigint) signal.signal(signal.SIGINT, onsigint)
print "Starting..." print("Starting..." )
try: try:
loop.run() loop.run()
except KeyboardInterrupt: except KeyboardInterrupt:
print "Quitting" print("Quitting")
loop.quit() loop.quit()

View File

@ -8,9 +8,9 @@ from threading import Thread
import time import time
# import from this module # import from this module
from basicplayer import BasicPlayer from . basicplayer import BasicPlayer
class MonitorThread:#(Thread): class Monitor:
def __init__(self,player): def __init__(self,player):
self.player = player self.player = player
#Thread.__init__(self) #Thread.__init__(self)
@ -34,8 +34,8 @@ class MonitorThread:#(Thread):
if self.player.playtime > 0: if self.player.playtime > 0:
if (position - self.player.startpos) > self.player.playtime: if (position - self.player.startpos) > self.player.playtime:
#self._player.pause(notify=False) #self._player.pause(notify=False)
print "Finished limited play" print("Finished limited play")
self.player._finished() self.player.finished()
if self._running and time is not None: if self._running and time is not None:
GObject.timeout_add(100, self.run) GObject.timeout_add(100, self.run)
@ -44,7 +44,7 @@ class MonitoredPlayer(BasicPlayer):
def __init__(self): def __init__(self):
BasicPlayer.__init__(self) BasicPlayer.__init__(self)
# setup monitor thread # setup monitor thread
self.monitor = MonitorThread(self) self.monitor = Monitor(self)
self.monitor.start() self.monitor.start()
self.playtime = -1 self.playtime = -1
self.looping=False self.looping=False
@ -82,7 +82,7 @@ class MonitoredPlayer(BasicPlayer):
#self.monitor.stop() #self.monitor.stop()
def _finished(self): def finished(self):
if self.looping: if self.looping:
print("Finished - looping") print("Finished - looping")
self.seek(0) self.seek(0)
@ -90,7 +90,7 @@ class MonitoredPlayer(BasicPlayer):
self.player_state = "PLAYING" self.player_state = "PLAYING"
self.pipeline.set_state(Gst.State.PLAYING) self.pipeline.set_state(Gst.State.PLAYING)
else: else:
BasicPlayer._finished(self) BasicPlayer.finished(self)
GObject.type_register(MonitoredPlayer) GObject.type_register(MonitoredPlayer)

59
mediaserver/resources.py Normal file
View File

@ -0,0 +1,59 @@
# License for this source file
#
# Copyright (c) 2014 Miqra Engineering
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE
import os,sys
import pkg_resources
class Resources(object): # needs to be explicitly subclassed from object to get the __new__ method to work
PACKAGE = __name__
@classmethod
def SetPackage(cls, package):
"""
Set the package from which to load localization data
"""
cls.PACKAGE = package
pass
@classmethod
def string_from(cls,path):
return pkg_resources.resource_string(cls.PACKAGE, path)
@classmethod
def filename(cls,path):
return pkg_resources.resource_filename(cls.PACKAGE, path)
@classmethod
def stream_from(cls,path):
return pkg_resources.resource_stream(cls.PACKAGE, path)
@classmethod
def isdir(cls,path):
return pkg_resources.resource_isdir(cls.PACKAGE,path)
@classmethod
def exists(cls,path):
return pkg_resources.resource_exists(cls.PACKAGE,path)
@classmethod
def listdir(cls,path):
return pkg_resources.resource_listdir(cls.PACKAGE,path)

View File

@ -30,7 +30,7 @@ class TestController:
GObject.timeout_add(10, self.tick) GObject.timeout_add(10, self.tick)
def tick(self): def tick(self):
self.player.QuickLoop("/opt/src/robotvideo/ogen open.mp4") self.player.QuickPlay(sys.argv[1])
#GObject.timeout_add(3000, self.reboot) #GObject.timeout_add(3000, self.reboot)
pass pass
@ -85,6 +85,6 @@ def signalSIGTERM(self,signum):
signal.signal(signal.SIGTERM, signalSIGTERM) signal.signal(signal.SIGTERM, signalSIGTERM)
controller = TestController() controller = TestController()
controller.Start(); controller.Start()