summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Mackin <paul.mackin@gmail.com>2013-02-04 21:49:08 +1100
committerPaul Mackin <paul.mackin@gmail.com>2013-02-04 21:49:08 +1100
commit91f6d4666d16d0a1c65e1eaafdb22da47eab1ee0 (patch)
treebda20733a8a1c44f2c816eba93045278f22c11cc
parentc252761f16edb59c53ac82754f10554a3171d49c (diff)
An extension for playing the tracks of your favourite artists off of SoundCloud.
-rwxr-xr-xsrc/SoundCloud/Banshee.SoundCloud.dllbin0 -> 77312 bytes
-rw-r--r--src/SoundCloud/Banshee.SoundCloud/ArtistAdder.cs204
-rw-r--r--src/SoundCloud/Banshee.SoundCloud/SC.cs34
-rw-r--r--src/SoundCloud/Banshee.SoundCloud/SoundCloudIO.cs131
-rw-r--r--src/SoundCloud/Banshee.SoundCloud/SoundCloudSource.cs331
-rw-r--r--src/SoundCloud/Banshee.SoundCloud/SoundCloudSourceContents.cs111
-rw-r--r--src/SoundCloud/Makefile.am18
-rw-r--r--src/SoundCloud/README.md7
-rw-r--r--src/SoundCloud/Resources/ActiveSourceUI.xml15
-rw-r--r--src/SoundCloud/Resources/GlobalUI.xml9
-rw-r--r--src/SoundCloud/SoundCloud.addin.xml78
-rw-r--r--src/SoundCloud/SoundCloud.csproj107
-rw-r--r--src/SoundCloud/SoundCloud.sln24
-rw-r--r--src/SoundCloud/TODO9
-rw-r--r--src/SoundCloud/ThemeIcons/16x16/categories/soundcloud.pngbin0 -> 634 bytes
-rw-r--r--src/SoundCloud/ThemeIcons/22x22/categories/soundcloud.pngbin0 -> 953 bytes
-rw-r--r--src/SoundCloud/ThemeIcons/32x32/categories/soundcloud.pngbin0 -> 1386 bytes
-rw-r--r--src/SoundCloud/ThemeIcons/48x48/categories/soundcloud.pngbin0 -> 2645 bytes
-rw-r--r--src/SoundCloud/ThemeIcons/scalable/soundcloudd.svg480
19 files changed, 1558 insertions, 0 deletions
diff --git a/src/SoundCloud/Banshee.SoundCloud.dll b/src/SoundCloud/Banshee.SoundCloud.dll
new file mode 100755
index 0000000..9ce34d3
--- /dev/null
+++ b/src/SoundCloud/Banshee.SoundCloud.dll
Binary files differ
diff --git a/src/SoundCloud/Banshee.SoundCloud/ArtistAdder.cs b/src/SoundCloud/Banshee.SoundCloud/ArtistAdder.cs
new file mode 100644
index 0000000..143dede
--- /dev/null
+++ b/src/SoundCloud/Banshee.SoundCloud/ArtistAdder.cs
@@ -0,0 +1,204 @@
+/*
+ * ArtistAdder.cs
+ *
+ *
+ * Copyright 2012 Paul Mackin
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using Gtk;
+using Mono.Unix;
+
+using Banshee.ServiceStack;
+using Banshee.Collection.Database;
+
+using Hyena.Widgets;
+
+namespace Banshee.SoundCloud
+{
+ public class ArtistAdder : Gtk.Dialog
+ {
+ private Button save_button;
+ private Entry artist_entry;
+ private Alignment error_container;
+ private Label error;
+ //private DatabaseTrackInfo track;
+
+ Table table;
+
+ public ArtistAdder() : base()
+ {
+ string title = Catalog.GetString("Add new SoundCloud artist");
+
+ AccelGroup accel_group = new AccelGroup();
+ AddAccelGroup(accel_group);
+
+ Title = title;
+ SkipTaskbarHint = true;
+ Modal = true;
+ BorderWidth = 6;
+ HasSeparator = false;
+ DefaultResponse = ResponseType.Ok;
+ Modal = true;
+
+ VBox.Spacing = 6;
+
+ HBox split_box = new HBox();
+ split_box.Spacing = 12;
+ split_box.BorderWidth = 6;
+
+ /* TODO:
+ * Get this bloody image to display.
+ Image image = new Image("soundcloud");
+ image.IconSize =(int)IconSize.Dialog;
+ image.IconName = "soundcloudd";
+ image.Yalign = 0.0f;
+ image.Show();
+ */
+
+ VBox main_box = new VBox();
+ main_box.BorderWidth = 5;
+ main_box.Spacing = 10;
+
+ Label header = new Label();
+ header.Markup = String.Format("<big><b>{0}</b></big>", GLib.Markup.EscapeText(title));
+ header.Xalign = 0.0f;
+ header.Show();
+
+ Label message = new Label();
+ message.Text = Catalog.GetString("Enter the name of the artist you'd like to add.");
+ message.Xalign = 0.0f;
+ message.Wrap = true;
+ message.Show();
+
+ table = new Table(5, 2, false);
+ table.RowSpacing = 6;
+ table.ColumnSpacing = 6;
+
+ artist_entry = AddEntryRow(Catalog.GetString("Artist Name:"));
+
+ table.ShowAll();
+
+ main_box.PackStart(header, false, false, 0);
+ main_box.PackStart(message, false, false, 0);
+ main_box.PackStart(table, false, false, 0);
+ main_box.Show();
+
+ //split_box.PackStart(image, false, false, 0);
+ split_box.PackStart(main_box, true, true, 0);
+ split_box.Show();
+
+ VBox.PackStart(split_box, true, true, 0);
+
+ Button cancel_button = new Button(Stock.Cancel);
+ cancel_button.CanDefault = false;
+ cancel_button.UseStock = true;
+ cancel_button.Show();
+ AddActionWidget(cancel_button, ResponseType.Close);
+
+ cancel_button.AddAccelerator("activate", accel_group,(uint)Gdk.Key.Escape,
+ 0, Gtk.AccelFlags.Visible);
+
+ save_button = new Button(Stock.Save);
+ save_button.CanDefault = true;
+ save_button.UseStock = true;
+ save_button.Sensitive = false;
+ save_button.Show();
+ AddActionWidget(save_button, ResponseType.Ok);
+
+ save_button.AddAccelerator("activate", accel_group,(uint)Gdk.Key.Return,
+ 0, Gtk.AccelFlags.Visible);
+
+ artist_entry.HasFocus = true;
+
+ error_container = new Alignment(0.0f, 0.0f, 1.0f, 1.0f);
+ error_container.TopPadding = 6;
+ HBox error_box = new HBox();
+ error_box.Spacing = 4;
+
+ Image error_image = new Image();
+ error_image.Stock = Stock.DialogError;
+ error_image.IconSize =(int)IconSize.Menu;
+ error_image.Show();
+
+ error = new Label();
+ error.Xalign = 0.0f;
+ error.Show();
+
+ error_box.PackStart(error_image, false, false, 0);
+ error_box.PackStart(error, true, true, 0);
+ error_box.Show();
+
+ error_container.Add(error_box);
+
+ table.Attach(error_container, 0, 2, 6, 7, AttachOptions.Expand | AttachOptions.Fill, AttachOptions.Shrink, 0, 0);
+
+ artist_entry.Changed += OnFieldsChanged;
+
+ OnFieldsChanged(this, EventArgs.Empty);
+ }
+
+ private Entry AddEntryRow(string title)
+ {
+ Entry entry = new Entry();
+ AddRow(title, entry);
+ return entry;
+ }
+
+ private uint row = 0;
+ private void AddRow(string title, Widget entry)
+ {
+ Label label = new Label(title);
+ label.Xalign = 0.0f;
+
+ table.Attach(label, 0, 1, row, row + 1, AttachOptions.Fill, AttachOptions.Fill | AttachOptions.Expand, 0, 0);
+ table.Attach(entry, 1, 2, row, row + 1, AttachOptions.Fill | AttachOptions.Expand, AttachOptions.Shrink, 0, 0);
+ row++;
+ }
+
+ private void OnFieldsChanged(object o, EventArgs args)
+ {
+ // When the button becomes sensitive it can be executed.
+ save_button.Sensitive = artist_entry.Text.Trim().Length > 0;
+ }
+
+ public void FocusUri()
+ {
+ artist_entry.HasFocus = true;
+ artist_entry.SelectRegion(0, artist_entry.Text.Length);
+ }
+
+ /* may be redundant
+ public DatabaseTrackInfo Track {
+ get { return track; }
+ }
+ */
+
+ public string ArtistName {
+ get { return artist_entry.Text.Trim(); }
+ }
+
+ public string ErrorMessage {
+ set {
+ if(value == null) {
+ error_container.Hide();
+ } else {
+ error.Text = value;
+ error_container.Show();
+ }
+ }
+ }
+ }
+}
diff --git a/src/SoundCloud/Banshee.SoundCloud/SC.cs b/src/SoundCloud/Banshee.SoundCloud/SC.cs
new file mode 100644
index 0000000..5b1bd4b
--- /dev/null
+++ b/src/SoundCloud/Banshee.SoundCloud/SC.cs
@@ -0,0 +1,34 @@
+/*
+ * SC.cs
+ *
+ *
+ * Copyright 2012 Paul Mackin
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+
+namespace Banshee.SoundCloud
+{
+
+ public static class SC
+ {
+ public const string APPKEY = "0f449da910798915c0f951e013a07625"; // SoundCloud Client Key
+ public const string APPNAME = "SoundCloud";
+ public const string STREAMKEY = "IrILK"; // Magic key for streaming.
+
+ public static void log(string s) { Hyena.Log.Information("[SoundCloud] " + s); }
+ //public static void log(string s) { return; } // Logging toggle.
+ }
+} \ No newline at end of file
diff --git a/src/SoundCloud/Banshee.SoundCloud/SoundCloudIO.cs b/src/SoundCloud/Banshee.SoundCloud/SoundCloudIO.cs
new file mode 100644
index 0000000..0d45397
--- /dev/null
+++ b/src/SoundCloud/Banshee.SoundCloud/SoundCloudIO.cs
@@ -0,0 +1,131 @@
+/*
+ * SoundCloudIO.cs
+ *
+ *
+ * Copyright 2012 Paul Mackin
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using Banshee.Collection.Database;
+
+using Hyena;
+using Hyena.Data;
+using Hyena.Json;
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Net;
+
+namespace Banshee.SoundCloud
+{
+ public static class IO
+ {
+ public static JsonArray MakeRequest(string request, string data)
+ {
+ string url = "";
+
+ switch(request)
+ {
+ // Search in Tracks, People and Groups.
+ case "tracks":
+ url = "http://api.soundcloud.com/tracks.json?q=" + data + "&client_id=" + SC.APPKEY;
+ break;
+ case "people":
+ url = "http://api.soundcloud.com/users.json?q=" + data + "&client_id=" + SC.APPKEY;
+ break;
+ case "groups":
+ url = "http://api.soundcloud.com/groups.json?q=" + data + "&client_id=" + SC.APPKEY;
+ break;
+ // Retrieve a user's info, sets and tracks
+ case "getuser":
+ url = "http://api.soundcloud.com/users/" + data + ".json?client_id=" + SC.APPKEY;
+ break;
+ case "getsets":
+ url = "http://api.soundcloud.com/playlists/" + data + ".json?client_id=" + SC.APPKEY;
+ break;
+ case "getalltracks":
+ url = "http://api.soundcloud.com/users/" + data + "/tracks.json?client_id=" + SC.APPKEY;
+ break;
+ default:
+ throw new Exception("Invalid request");
+ }
+ return ServerRequest(url);
+ }
+
+ public static JsonArray MakeRequest(string request, int data)
+ {
+ return MakeRequest(request, data.ToString());
+ }
+
+ public static JsonArray ServerRequest(string requestUrl)
+ {
+ try
+ {
+ HttpWebRequest request = WebRequest.Create(requestUrl) as HttpWebRequest;
+ using(HttpWebResponse response = request.GetResponse() as HttpWebResponse)
+ {
+ if(response.StatusCode != HttpStatusCode.OK) {
+ string s = String.Format("Server error(HTTP {0}: {1}).",
+ response.StatusCode, response.StatusDescription);
+ throw new Exception(s);
+ }
+
+ Stream receiveStream = response.GetResponseStream();
+ Deserializer d = new Deserializer(receiveStream);
+ object jd = d.Deserialize();
+ JsonArray ja = jd as JsonArray;
+
+ response.Close();
+ receiveStream.Close();
+ return ja;
+ }
+ }
+ catch(Exception e)
+ {
+ SC.log(e.Message);
+ return null;
+ }
+ }
+
+ public static DatabaseTrackInfo makeTrackInfo(JsonObject o)
+ {
+ JsonObject user = (JsonObject)o["user"];
+ DatabaseTrackInfo track = new DatabaseTrackInfo();
+
+ track.Uri = new SafeUri(GetStreamURLFromTrack(o));
+ track.TrackTitle = (string)o["title"];
+ track.ArtistName = (string)user["username"];
+ track.Comment =(string)o["description"];
+ track.Genre =(string)o["genre"];
+ track.Year = extractYear(o);
+ return track;
+ }
+
+ public static int extractYear(JsonObject track)
+ {
+ string y = (string)track["created_at"];
+ return Convert.ToInt32(y.Substring(0, 4));
+ }
+
+ public static string GetStreamURLFromTrack(JsonObject track)
+ {
+ string waveform_url =(string)track["waveform_url"];
+ string url_id = waveform_url.Substring(21); // chop off leading URL
+ int end = url_id.IndexOf('_');
+ url_id = url_id.Remove(end);
+ return String.Format("http://media.soundcloud.com/stream/{0}?stream_token={1}", url_id, SC.STREAMKEY);
+ }
+ }
+}
diff --git a/src/SoundCloud/Banshee.SoundCloud/SoundCloudSource.cs b/src/SoundCloud/Banshee.SoundCloud/SoundCloudSource.cs
new file mode 100644
index 0000000..4e4caa2
--- /dev/null
+++ b/src/SoundCloud/Banshee.SoundCloud/SoundCloudSource.cs
@@ -0,0 +1,331 @@
+/*
+ * SoundCloudSource.cs
+ *
+ *
+ * Copyright 2012 Paul Mackin
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using System.Collections.Generic;
+using Mono.Unix;
+using Gtk;
+
+using Hyena;
+using Hyena.Json;
+
+using Banshee.Base;
+using Banshee.Collection;
+using Banshee.Collection.Database;
+using Banshee.Configuration;
+using Banshee.Gui;
+using Banshee.PlaybackController;
+using Banshee.ServiceStack;
+using Banshee.Sources;
+using Banshee.Sources.Gui;
+using Banshee.Streaming;
+
+using Banshee.SoundCloud;
+
+namespace Banshee.SoundCloud
+{
+ public class SoundCloudSource : PrimarySource, IDisposable, IBasicPlaybackController
+ {
+ private uint ui_id;
+ const int sort_order = 190;
+
+ public SoundCloudSource() : base(Catalog.GetString("SoundCloud"),
+ Catalog.GetString("SoundCloud"), "soundcloud", 52)
+ {
+ Properties.SetString("Icon.Name", "soundcloud");
+ TypeUniqueId = "soundcloud";
+ IsLocal = false;
+
+ AfterInitialized();
+
+ // Have OnAddArtist() respond to an 'Add' being performed in the GTK window.
+ InterfaceActionService uia_service = ServiceManager.Get<InterfaceActionService>();
+ uia_service.GlobalActions.Add(
+ new ActionEntry("AddSoundCloudArtistAction", Stock.Add,
+ Catalog.GetString("Add SoundCloud Artist"), null,
+ Catalog.GetString("Add a SoundCloud artist or playlist"),
+ OnAddArtist)
+ );
+ uia_service.GlobalActions["AddSoundCloudArtistAction"].IsImportant = false;
+
+ ui_id = uia_service.UIManager.AddUiFromResource("GlobalUI.xml");
+
+ Properties.SetString("ActiveSourceUIResource", "ActiveSourceUI.xml");
+ Properties.Set<bool>("ActiveSourceUIResourcePropagate", true);
+ Properties.Set<System.Reflection.Assembly>("ActiveSourceUIResource.Assembly",
+ typeof(SoundCloudSource).Assembly);
+
+ Properties.SetString("GtkActionPath", "/SoundCloudContextMenu");
+ Properties.Set<bool>("Nereid.SourceContentsPropagate", false);
+
+ Properties.Set<ISourceContents>("Nereid.SourceContents",
+ new LazyLoadSourceContents<SoundCloudSourceContents>());
+
+ Properties.Set<string>("SearchEntryDescription", Catalog.GetString("Search your SoundCloud artists"));
+
+ Properties.SetString("TrackView.ColumnControllerXml", String.Format(@"
+ <column-controller>
+ <!--<column modify-default=""IndicatorColumn"">
+ <renderer type=""Banshee.Podcasting.Gui.ColumnCellPodcastStatusIndicator"" />
+ </column>-->
+ <add-default column=""IndicatorColumn"" />
+ <add-default column=""GenreColumn"" />
+ <column modify-default=""GenreColumn"">
+ <visible>false</visible>
+ </column>
+ <add-default column=""TitleColumn"" />
+ <column modify-default=""TitleColumn"">
+ <title>{0}</title>
+ <long-title>{0}</long-title>
+ </column>
+ <add-default column=""ArtistColumn"" />
+ <column modify-default=""ArtistColumn"">
+ <title>{1}</title>
+ <long-title>{1}</long-title>
+ </column>
+ <add-default column=""CommentColumn"" />
+ <column modify-default=""CommentColumn"">
+ <title>{2}</title>
+ <long-title>{2}</long-title>
+ </column>
+ <add-default column=""YearColumn"" />
+ <column modify-default=""YearColumn"">
+ <title>{3}</title>
+ <long-title>{3}</long-title>
+ </column>
+ <add-default column=""RatingColumn"" />
+ <add-default column=""PlayCountColumn"" />
+ <add-default column=""LastPlayedColumn"" />
+ <add-default column=""LastSkippedColumn"" />
+ <add-default column=""DateAddedColumn"" />
+ <add-default column=""UriColumn"" />
+ <sort-column direction=""asc"">artist</sort-column>
+ </column-controller>",
+ Catalog.GetString("Track"),
+ Catalog.GetString("Artist"),
+ Catalog.GetString("Description"),
+ Catalog.GetString("Year")
+ ));
+
+ ServiceManager.PlayerEngine.TrackIntercept += OnPlayerEngineTrackIntercept;
+
+ TrackEqualHandler = delegate(DatabaseTrackInfo a, TrackInfo b) {
+ RadioTrackInfo r = b as RadioTrackInfo;
+ return r != null && DatabaseTrackInfo.TrackEqual(
+ r.ParentTrack as DatabaseTrackInfo, a);
+
+ };
+
+ /**
+ * TODO:
+ * Figure out how to tell Banshee where to find the track artwork. See below.
+ *
+ TrackArtworkIdHandler = delegate(DatabaseTrackInfo a) {
+ return;
+ };
+ */
+ SC.log("Initialized");
+ }
+ /*
+ * This may be the place to tell Banshee about artwork re: MetadataService
+ *
+ *private void OnTrackInfoUpdated (Banshee.MediaEngine.PlayerEventArgs args)
+ {
+ RadioTrackInfo radio_track = ServiceManager.PlaybackController.CurrentTrack as RadioTrackInfo;
+ if (radio_track != null) {
+ Banshee.Metadata.MetadataService.Instance.Lookup (radio_track);
+ }
+ }*/
+
+ public override int Count { get { return 0; } }
+
+ public override string GetPluralItemCountString(int count)
+ {
+ return Catalog.GetPluralString("{0} artist", "{0} artists", count);
+ }
+
+ /*
+ * TODO:
+ * Filter by Artist instead of by Genre. How do I do this?
+ */
+ protected override IEnumerable<IFilterListModel> CreateFiltersFor(DatabaseSource src)
+ {
+ DatabaseArtistListModel artist_model = new DatabaseArtistListModel(src, src.DatabaseTrackModel, ServiceManager.DbConnection, src.UniqueId);
+ //DatabaseQueryFilterModel<string> genre_model = new DatabaseQueryFilterModel<string>(src, src.DatabaseTrackModel, ServiceManager.DbConnection,
+ // Catalog.GetString("All Genre({0})"), src.UniqueId, Banshee.Query.BansheeQuery.GenreField , "Genre");
+
+ if(this == src) {
+ //this.genre_model = genre_model;
+ this.artist_model = artist_model;
+ }
+ yield return artist_model;
+ //yield return genre_model;
+ }
+
+ public override void Dispose()
+ {
+ base.Dispose();
+
+ //ServiceManager.PlayerEngine.DisconnectEvent(OnTrackInfoUpdated);
+
+ InterfaceActionService uia_service = ServiceManager.Get<InterfaceActionService>();
+ if(uia_service == null) {
+ return;
+ }
+
+ if(ui_id > 0) {
+ uia_service.UIManager.RemoveUi(ui_id);
+ uia_service.GlobalActions.Remove("AddSoundCloudArtistAction");
+ ui_id = 0;
+ }
+
+ ServiceManager.PlayerEngine.TrackIntercept -= OnPlayerEngineTrackIntercept;
+ }
+
+ private bool OnPlayerEngineTrackIntercept(TrackInfo track)
+ {
+ DatabaseTrackInfo t = track as DatabaseTrackInfo;
+ if(t == null || t.PrimarySource != this) {
+ return false;
+ }
+
+ new RadioTrackInfo(t).Play();
+
+ return true;
+ }
+
+ private void OnAddArtist(object o, EventArgs args)
+ {
+ ArtistAdder editor = new ArtistAdder();
+ // Add OnArtistAdditionResponse to the list of event handlers
+ // for the artist adder.
+ editor.Response += OnArtistAdditionResponse;
+ editor.Show();
+ }
+
+ private void OnArtistAdditionResponse(object o, ResponseArgs args)
+ {
+ ArtistAdder editor =(ArtistAdder)o;
+ bool destroy = true;
+
+ try {
+ if(args.ResponseId == ResponseType.Ok) {
+ if(String.IsNullOrEmpty(editor.ArtistName)) {
+ destroy = false;
+ editor.ErrorMessage = Catalog.GetString("Please provide a artist name");
+ } else {
+ JsonArray results = IO.MakeRequest("people", editor.ArtistName);
+
+ foreach(JsonObject artist in results) {
+ string artist_name = (string)artist["username"];
+ if (artist_name == editor.ArtistName) {
+ //SC.log(artist.ToString());
+ JsonArray tracks = IO.MakeRequest("getalltracks",
+ (int)artist["id"]);
+ //SC.log(tracks.ToString());
+ SC.log(String.Format("Artist: {0}, Track Count: {1}",
+ artist_name, tracks.Count));
+
+ foreach(JsonObject t in tracks) {
+ DatabaseTrackInfo track = IO.makeTrackInfo(t);
+ track.PrimarySource = this;
+ track.IsLive = true;
+ track.Save();
+ SC.log(" added track: " + track.TrackTitle);
+ }
+ }
+ }
+ // If all is well, set the window to close.
+ destroy = true;
+ }
+ }
+ } finally {
+ if(destroy) {
+ // Remove response-handler reference.
+ editor.Response -= OnArtistAdditionResponse;
+ editor.Destroy();
+ }
+ }
+ }
+
+ #region IBasicPlaybackController implementation
+
+ public bool First()
+ {
+ return false;
+ }
+
+ public bool Next(bool restart, bool changeImmediately)
+ {
+ if(!changeImmediately) {
+ ServiceManager.PlayerEngine.SetNextTrack((SafeUri)null);
+ if(ServiceManager.PlayerEngine.IsPlaying()) {
+ return true;
+ }
+ }
+ RadioTrackInfo radio_track = ServiceManager.PlaybackController.CurrentTrack as RadioTrackInfo;
+ if(radio_track != null && radio_track.PlayNextStream()) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ public bool Previous(bool restart)
+ {
+ RadioTrackInfo radio_track = ServiceManager.PlaybackController.CurrentTrack as RadioTrackInfo;
+ if(radio_track != null && radio_track.PlayPreviousStream()) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ #endregion
+
+ public override bool AcceptsInputFromSource(Source source)
+ {
+ return false;
+ }
+
+ public override bool CanDeleteTracks {
+ get { return false; }
+ }
+
+ public override bool ShowBrowser {
+ get { return true; }
+ }
+
+ public override bool CanRename {
+ get { return false; }
+ }
+
+ protected override bool HasArtistAlbum {
+ get { return true; }
+ }
+
+ public override bool HasViewableTrackProperties {
+ get { return true; }
+ }
+
+ public override bool HasEditableTrackProperties {
+ get { return false; }
+ }
+ }
+}
diff --git a/src/SoundCloud/Banshee.SoundCloud/SoundCloudSourceContents.cs b/src/SoundCloud/Banshee.SoundCloud/SoundCloudSourceContents.cs
new file mode 100644
index 0000000..6ea49bc
--- /dev/null
+++ b/src/SoundCloud/Banshee.SoundCloud/SoundCloudSourceContents.cs
@@ -0,0 +1,111 @@
+/*
+ * SoundCloudSourceContents.cs
+ *
+ *
+ * Copyright 2012 Paul Mackin
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using Mono.Unix;
+
+using Gtk;
+
+using Hyena.Data;
+using Hyena.Data.Gui;
+
+using Banshee.Base;
+using Banshee.Configuration;
+
+using Banshee.Sources;
+using Banshee.Sources.Gui;
+using Banshee.ServiceStack;
+
+using Banshee.Collection;
+using Banshee.Collection.Database;
+using Banshee.Collection.Gui;
+
+namespace Banshee.SoundCloud
+{
+ public class SoundCloudSourceContents : FilteredListSourceContents, ITrackModelSourceContents
+ {
+ private TrackListView track_view;
+ private QueryFilterView<string> artist_view;
+
+ public SoundCloudSourceContents() : base("soundcloud")
+ {
+ }
+
+ protected override void InitializeViews()
+ {
+ SetupMainView(track_view = new TrackListView());
+ SetupFilterView(artist_view = new QueryFilterView<string>(Catalog.GetString("Artist")));
+ }
+
+ protected override void ClearFilterSelections()
+ {
+ if(artist_view.Model != null) {
+ artist_view.Selection.Clear();
+ }
+ }
+
+ protected override bool ActiveSourceCanHasBrowser {
+ get { return true; }
+ }
+
+ protected override string ForcePosition {
+ get { return "left"; }
+ }
+
+ #region Implement ISourceContents
+
+ public override bool SetSource(ISource source)
+ {
+ DatabaseSource track_source = source as DatabaseSource;
+ if(track_source == null) {
+ return false;
+ }
+
+ base.source = source;
+
+ SetModel(track_view, track_source.TrackModel);
+
+ foreach(IListModel model in track_source.CurrentFilters) {
+ IListModel<QueryFilterInfo<string>> artist_model = model as IListModel<QueryFilterInfo<string>>;
+ if(artist_model != null) {
+ SetModel(artist_view, artist_model);
+ }
+ }
+
+ return true;
+ }
+
+ public override void ResetSource()
+ {
+ base.source = null;
+ track_view.SetModel(null);
+ artist_view.SetModel(null);
+ }
+
+ #endregion
+
+ #region ITrackModelSourceContents implementation
+
+ public IListView<TrackInfo> TrackView {
+ get { return track_view; }
+ }
+
+ #endregion
+ }
+}
diff --git a/src/SoundCloud/Makefile.am b/src/SoundCloud/Makefile.am
new file mode 100644
index 0000000..7b458e2
--- /dev/null
+++ b/src/SoundCloud/Makefile.am
@@ -0,0 +1,18 @@
+ASSEMBLY = Banshee.SoundCloud
+LINK = $(BANSHEE_LIBS)
+
+SOURCES = \
+ Banshee.SoundCloud/ArtistAdder.cs \
+ Banshee.SoundCloud/SC.cs \
+ Banshee.SoundCloud/SoundCloudIO.cs \
+ Banshee.SoundCloud/SoundCloudSource.cs \
+ Banshee.SoundCloud/SoundCloudSourceContents.cs
+
+RESOURCES = \
+ Resources/ActiveSourceUI.xml \
+ Resources/GlobalUI.xml \
+ SoundCloud.addin.xml \
+ ThemeIcons/16x16/categories/soundcloud.png \
+ ThemeIcons/scalable/soundcloudd.svg
+
+include $(top_srcdir)/build/build.mk
diff --git a/src/SoundCloud/README.md b/src/SoundCloud/README.md
new file mode 100644
index 0000000..ff273d2
--- /dev/null
+++ b/src/SoundCloud/README.md
@@ -0,0 +1,7 @@
+banshee-soundcloud-extension
+============================
+
+Play tracks from SoundCloud in the Banshee media player
+
+Usage: when entering the artist name it must match exactly what appears on the artist's profile page.
+ e.g. 'Bredren [BRN]' over at http://soundcloud.com/bredrendnb
diff --git a/src/SoundCloud/Resources/ActiveSourceUI.xml b/src/SoundCloud/Resources/ActiveSourceUI.xml
new file mode 100644
index 0000000..3bd99fd
--- /dev/null
+++ b/src/SoundCloud/Resources/ActiveSourceUI.xml
@@ -0,0 +1,15 @@
+<ui>
+ <menubar name="MainMenu" action="MainMenuAction">
+ <menu name="MediaMenu" action="MediaMenuAction">
+ <placeholder name="BelowOpenLocation">
+ <menuitem action="AddSoundCloudArtistAction" />
+ </placeholder>
+ </menu>
+ </menubar>
+
+ <toolbar name="HeaderToolbar">
+ <placeholder name="SourceActions">
+ <toolitem action="AddSoundCloudArtistAction" />
+ </placeholder>
+ </toolbar>
+</ui>
diff --git a/src/SoundCloud/Resources/GlobalUI.xml b/src/SoundCloud/Resources/GlobalUI.xml
new file mode 100644
index 0000000..640f374
--- /dev/null
+++ b/src/SoundCloud/Resources/GlobalUI.xml
@@ -0,0 +1,9 @@
+<ui>
+ <popup name="SoundCloudContextMenu">
+ <menuitem action="AddSoundCloudArtistAction"></menuitem>
+ <separator/>
+ <menuitem name="NewPlaylist" action="NewPlaylistAction"/>
+ <menuitem name="NewSmartPlaylist" action="NewSmartPlaylistAction"/>
+ <menu name="SortChildren" action="SortChildrenAction" />
+ </popup>
+</ui>
diff --git a/src/SoundCloud/SoundCloud.addin.xml b/src/SoundCloud/SoundCloud.addin.xml
new file mode 100644
index 0000000..8b65ca9
--- /dev/null
+++ b/src/SoundCloud/SoundCloud.addin.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Addin
+ id="Banshee.SoundCloud"
+ version="1.0"
+ compatVersion="1.0"
+ copyright="Copyright © 2012 Paul Mackin. Licensed under the Apache license."
+ name="SoundCloud"
+ category="Community Extensions"
+ description="Play songs from SoundCloud"
+ author="Paul Mackin"
+ url="http://banshee-project.org/"
+ defaultEnabled="false">
+
+ <Localizer type="Gettext" catalog="banshee-community-extensions" location="../../../share/locale"/>
+
+ <Dependencies>
+ <Addin id="Banshee.Services" version="1.0"/>
+ <Addin id="Banshee.ThickClient" version="1.0"/>
+ </Dependencies>
+
+ <!-- Extensions are loaded by Banshee via Mono.Addins by extending a
+ particular ExtensionPoint.
+
+ There is a very general ExtensionPoint called
+ /Banshee/ServiceManager/Service, and there are several much more
+ specific ones. A Service extension will be instantiated when Banshee
+ starts, and can do whatever it wants with the Banshee API. Where an
+ ImportSource extension will be loaded when the user opens the Import
+ Dialog.
+
+ Here is an example of how to define an extension point:
+
+ <Extension path="ExtensionPointPath">
+ <ExtensionPointType class="Banshee.SoundCloud.SoundCloudExtensionPointType"/>
+ </Extension>
+
+ An extension must have one or more such definitions.
+
+ Here are the ExtensionPoints in Banshee:
+
+ Path: /Banshee/ServiceManager/Service
+ Type: Service
+ Desc: General purpose, run any code, instantiated at startup
+
+ Path: /Banshee/SourceManager/Source
+ Type: Source
+ Desc: Create a Source in the source list
+
+ Path: /Banshee/Library/ImportSource
+ Type: ImportSource
+ Desc: Add an entry to the Import Dialog dropdown.
+
+ Path: /Banshee/Gui/TrackEditor/NotebookPage
+ Type: TrackEditorPage
+ Desc: Add a tab("page") to the Edit Track Information or Properties
+ dialogs.
+
+ Path: /Banshee/Gui/TrackEditor/Modifier
+ Type: Modifier
+ Desc: Defines an extension for the track editor that can modify it in
+ some way.
+
+ Path: /Banshee/ThickClient/ContextPane
+ Type: ContextPage
+ Desc: Defines a new GTK+ context page, for showing contextual
+ information beneath the main track source view.
+
+ There are quite a few other ExtensionPoints, but they are mostly related to
+ providing platform-specific backends for hardware integration and the like.
+ -->
+
+ <!-- Define a Source extension. This will instantiate a new Source object,
+ listed in the left-most Source TreeView. -->
+ <Extension path="/Banshee/SourceManager/Source">
+ <Source class="Banshee.SoundCloud.SoundCloudSource"/>
+ </Extension>
+
+</Addin>
diff --git a/src/SoundCloud/SoundCloud.csproj b/src/SoundCloud/SoundCloud.csproj
new file mode 100644
index 0000000..33be2ff
--- /dev/null
+++ b/src/SoundCloud/SoundCloud.csproj
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>8.0.50727</ProductVersion>
+ <ProjectGuid>{9B6CC053-4C1A-49BF-B816-F639DAD42920}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
+ <AssemblyName>Banshee.SoundCloud</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
+ <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+ <Optimize>true</Optimize>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
+ <RootNamespace>Foo</RootNamespace>
+ <AssemblyOriginatorKeyFile>.</AssemblyOriginatorKeyFile>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <OutputPath>..\..\..\bin</OutputPath>
+ <CustomCommands>
+ <CustomCommands>
+ <Command type="Execute" command="make run" workingdir="${SolutionDir}" />
+ </CustomCommands>
+ </CustomCommands>
+ <Optimize>false</Optimize>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Windows|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <OutputPath>..\..\..\bin</OutputPath>
+ <PlatformTarget>x86</PlatformTarget>
+ <Optimize>false</Optimize>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
+ <Package>gtk-sharp-2.0</Package>
+ </Reference>
+ <Reference Include="Mono.Posix" />
+ <Reference Include="gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
+ <Package>gtk-sharp-2.0</Package>
+ </Reference>
+ <Reference Include="Mono.Cairo" />
+ <Reference Include="Mono.Addins">
+ <Package>mono-addins</Package>
+ </Reference>
+ <Reference Include="Banshee.Core, Version=1.7.0.0, Culture=neutral">
+ <Package>banshee-core</Package>
+ </Reference>
+ <Reference Include="Banshee.Services, Version=1.7.0.0, Culture=neutral">
+ <Package>banshee-services</Package>
+ </Reference>
+ <Reference Include="Banshee.ThickClient, Version=1.7.0.0, Culture=neutral">
+ <Package>banshee-thickclient</Package>
+ </Reference>
+ <Reference Include="Banshee.Widgets, Version=1.7.0.0, Culture=neutral">
+ <Package>banshee-thickclient</Package>
+ </Reference>
+ <Reference Include="Hyena, Version=1.7.0.0, Culture=neutral">
+ <Package>banshee-hyena</Package>
+ </Reference>
+ <Reference Include="Hyena.Data.Sqlite, Version=1.7.0.0, Culture=neutral">
+ <Package>banshee-hyena-data-sqlite</Package>
+ </Reference>
+ <Reference Include="Hyena.Gui, Version=1.7.0.0, Culture=neutral">
+ <Package>banshee-hyena-gui</Package>
+ </Reference>
+ <Reference Include="System.Core" />
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+ <ProjectExtensions>
+ <MonoDevelop>
+ <Properties>
+ <MonoDevelop.Autotools.MakefileInfo IntegrationEnabled="true" RelativeMakefileName="Makefile.am">
+ <BuildFilesVar Sync="true" Name="SOURCES" />
+ <DeployFilesVar />
+ <ResourcesVar Sync="true" Name="RESOURCES" />
+ <OthersVar />
+ <GacRefVar />
+ <AsmRefVar />
+ <ProjectRefVar />
+ </MonoDevelop.Autotools.MakefileInfo>
+ </Properties>
+ </MonoDevelop>
+ </ProjectExtensions>
+ <ItemGroup>
+ <Folder Include="Banshee.SoundCloud\" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Banshee.SoundCloud\ArtistAdder.cs" />
+ <Compile Include="Banshee.SoundCloud\SoundCloudSource.cs" />
+ <Compile Include="Banshee.SoundCloud\SoundCloudSourceContents.cs" />
+ <Compile Include="Banshee.SoundCloud\SoundCloudIO.cs" />
+ <Compile Include="Banshee.SoundCloud\SC.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <EmbeddedResource Include="SoundCloud.addin.xml" />
+ <EmbeddedResource Include="Resources\ActiveSourceUI.xml" />
+ <EmbeddedResource Include="Resources\GlobalUI.xml" />
+ <EmbeddedResource Include="ThemeIcons\16x16\categories\soundcloud.png" />
+ <EmbeddedResource Include="ThemeIcons\scalable\soundcloudd.svg" />
+ </ItemGroup>
+</Project>
diff --git a/src/SoundCloud/SoundCloud.sln b/src/SoundCloud/SoundCloud.sln
new file mode 100644
index 0000000..d5048da
--- /dev/null
+++ b/src/SoundCloud/SoundCloud.sln
@@ -0,0 +1,24 @@
+
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual Studio 2008
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SoundCloud", "SoundCloud.csproj", "{9B6CC053-4C1A-49BF-B816-F639DAD42920}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Windows|Any CPU = Windows|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {9B6CC053-4C1A-49BF-B816-F639DAD42920}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9B6CC053-4C1A-49BF-B816-F639DAD42920}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9B6CC053-4C1A-49BF-B816-F639DAD42920}.Windows|Any CPU.ActiveCfg = Windows|Any CPU
+ {9B6CC053-4C1A-49BF-B816-F639DAD42920}.Windows|Any CPU.Build.0 = Windows|Any CPU
+ EndGlobalSection
+ GlobalSection(MonoDevelopProperties) = preSolution
+ StartupItem = SoundCloud.csproj
+ Policies = $0
+ $0.DotNetNamingPolicy = $1
+ $1.DirectoryNamespaceAssociation = None
+ $1.ResourceNamePolicy = FileFormatDefault
+ EndGlobalSection
+EndGlobal
diff --git a/src/SoundCloud/TODO b/src/SoundCloud/TODO
new file mode 100644
index 0000000..cd96611
--- /dev/null
+++ b/src/SoundCloud/TODO
@@ -0,0 +1,9 @@
+* Sort personal soundcloud library by artist
+
+* Search soundcloud from main interface
+
+* Login with soundcloud username/password and import artists from 'following' list
+
+* Scan user library and offer suggestions based on user's tastes.
+
+
diff --git a/src/SoundCloud/ThemeIcons/16x16/categories/soundcloud.png b/src/SoundCloud/ThemeIcons/16x16/categories/soundcloud.png
new file mode 100644
index 0000000..bdad9ae
--- /dev/null
+++ b/src/SoundCloud/ThemeIcons/16x16/categories/soundcloud.png
Binary files differ
diff --git a/src/SoundCloud/ThemeIcons/22x22/categories/soundcloud.png b/src/SoundCloud/ThemeIcons/22x22/categories/soundcloud.png
new file mode 100644
index 0000000..800c3d3
--- /dev/null
+++ b/src/SoundCloud/ThemeIcons/22x22/categories/soundcloud.png
Binary files differ
diff --git a/src/SoundCloud/ThemeIcons/32x32/categories/soundcloud.png b/src/SoundCloud/ThemeIcons/32x32/categories/soundcloud.png
new file mode 100644
index 0000000..5a0ac5b
--- /dev/null
+++ b/src/SoundCloud/ThemeIcons/32x32/categories/soundcloud.png
Binary files differ
diff --git a/src/SoundCloud/ThemeIcons/48x48/categories/soundcloud.png b/src/SoundCloud/ThemeIcons/48x48/categories/soundcloud.png
new file mode 100644
index 0000000..4009adf
--- /dev/null
+++ b/src/SoundCloud/ThemeIcons/48x48/categories/soundcloud.png
Binary files differ
diff --git a/src/SoundCloud/ThemeIcons/scalable/soundcloudd.svg b/src/SoundCloud/ThemeIcons/scalable/soundcloudd.svg
new file mode 100644
index 0000000..509972f
--- /dev/null
+++ b/src/SoundCloud/ThemeIcons/scalable/soundcloudd.svg
@@ -0,0 +1,480 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+ <!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
+ <!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
+ <!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
+ <!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
+ <!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
+ <!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
+ <!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
+ <!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
+]>
+<svg version="1.1" id="Calque_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="92.985px"
+ height="53.006px" viewBox="0 0 92.985 53.006" enable-background="new 0 0 92.985 53.006" xml:space="preserve">
+<metadata><?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.1-c036 46.277092, Fri Feb 23 2007 14:16:18 ">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about=""
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <dc:format>image/svg+xml</dc:format>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xap="http://ns.adobe.com/xap/1.0/"
+ xmlns:xapGImg="http://ns.adobe.com/xap/1.0/g/img/">
+ <xap:CreatorTool>Adobe Illustrator CS3</xap:CreatorTool>
+ <xap:CreateDate>2010-05-19T09:37:41+10:00</xap:CreateDate>
+ <xap:ModifyDate>2010-05-19T09:37:41+10:00</xap:ModifyDate>
+ <xap:MetadataDate>2010-05-19T09:37:41+10:00</xap:MetadataDate>
+ <xap:Thumbnails>
+ <rdf:Alt>
+ <rdf:li rdf:parseType="Resource">
+ <xapGImg:width>256</xapGImg:width>
+ <xapGImg:height>148</xapGImg:height>
+ <xapGImg:format>JPEG</xapGImg:format>
+ <xapGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA&#xA;AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK&#xA;DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f&#xA;Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAlAEAAwER&#xA;AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA&#xA;AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB&#xA;UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE&#xA;1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ&#xA;qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy&#xA;obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp&#xA;0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo&#xA;+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7&#xA;FXYq7FXYq7FXYq7FXYqsmnggjMk0ixRjq7kKPvORnMRFk0ExiSaCC1jWbbTNKk1Fh60SBeAQj4ix&#xA;AWh6U365j6rVxw4jk5htw4Dknw8nnWo/mJr90WEDJZxHoIwC1Pdmr+FM5LP27nn9NQHl+t3mPs3H&#xA;Hn6kiuNX1O5Nbi7ml/15Gb9ZzWZNTkn9UpH4uXHDCPIAIXllDZSrDe3UBrBM8R8UYr+o5ZDJKP0k&#xA;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&#xA;zdfvuKvs/UyrMx1rsVf/2Q==</xapGImg:image>
+ </rdf:li>
+ </rdf:Alt>
+ </xap:Thumbnails>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xapMM="http://ns.adobe.com/xap/1.0/mm/"
+ xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#">
+ <xapMM:DocumentID>uuid:971E3EA93164DF118E6D90B556E55533</xapMM:DocumentID>
+ <xapMM:InstanceID>uuid:981E3EA93164DF118E6D90B556E55533</xapMM:InstanceID>
+ <xapMM:DerivedFrom rdf:parseType="Resource">
+ <stRef:instanceID>uuid:5D6A817A07F311DDB65DBE16EC1FED5E</stRef:instanceID>
+ <stRef:documentID>uuid:5D6A817907F311DDB65DBE16EC1FED5E</stRef:documentID>
+ </xapMM:DerivedFrom>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xapTPg="http://ns.adobe.com/xap/1.0/t/pg/"
+ xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#"
+ xmlns:xapG="http://ns.adobe.com/xap/1.0/g/">
+ <xapTPg:MaxPageSize rdf:parseType="Resource">
+ <stDim:w>35.277778</stDim:w>
+ <stDim:h>21.166667</stDim:h>
+ <stDim:unit>Millimeters</stDim:unit>
+ </xapTPg:MaxPageSize>
+ <xapTPg:NPages>1</xapTPg:NPages>
+ <xapTPg:HasVisibleTransparency>False</xapTPg:HasVisibleTransparency>
+ <xapTPg:HasVisibleOverprint>False</xapTPg:HasVisibleOverprint>
+ <xapTPg:SwatchGroups>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:groupName>Default Swatch Group</xapG:groupName>
+ <xapG:groupType>0</xapG:groupType>
+ <xapG:Colorants>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Blanc</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>255</xapG:red>
+ <xapG:green>255</xapG:green>
+ <xapG:blue>255</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Noir</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>0</xapG:red>
+ <xapG:green>0</xapG:green>
+ <xapG:blue>0</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Fusain</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>63</xapG:red>
+ <xapG:green>63</xapG:green>
+ <xapG:blue>63</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Graphite</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>102</xapG:red>
+ <xapG:green>102</xapG:green>
+ <xapG:blue>102</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Cendre</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>140</xapG:red>
+ <xapG:green>140</xapG:green>
+ <xapG:blue>140</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Fumée</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>179</xapG:red>
+ <xapG:green>179</xapG:green>
+ <xapG:blue>179</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Latte</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>228</xapG:red>
+ <xapG:green>189</xapG:green>
+ <xapG:blue>149</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Capuccino</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>213</xapG:red>
+ <xapG:green>150</xapG:green>
+ <xapG:blue>88</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Mochaccino</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>138</xapG:red>
+ <xapG:green>91</xapG:green>
+ <xapG:blue>41</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Moka</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>90</xapG:red>
+ <xapG:green>61</xapG:green>
+ <xapG:blue>27</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Rouge Mars</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>143</xapG:red>
+ <xapG:green>0</xapG:green>
+ <xapG:blue>0</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Rubis</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>191</xapG:red>
+ <xapG:green>0</xapG:green>
+ <xapG:blue>0</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Rouge</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>255</xapG:red>
+ <xapG:green>0</xapG:green>
+ <xapG:blue>0</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Citrouille</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>255</xapG:red>
+ <xapG:green>65</xapG:green>
+ <xapG:blue>0</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Jus</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>255</xapG:red>
+ <xapG:green>127</xapG:green>
+ <xapG:blue>0</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Soleil</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>255</xapG:red>
+ <xapG:green>191</xapG:green>
+ <xapG:blue>0</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Jaune pur</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>255</xapG:red>
+ <xapG:green>255</xapG:green>
+ <xapG:blue>0</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Olivine</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>191</xapG:red>
+ <xapG:green>225</xapG:green>
+ <xapG:blue>14</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Vert choux</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>127</xapG:red>
+ <xapG:green>195</xapG:green>
+ <xapG:blue>27</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Jade</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>95</xapG:red>
+ <xapG:green>146</xapG:green>
+ <xapG:blue>21</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Menthe à l’eau</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>48</xapG:red>
+ <xapG:green>124</xapG:green>
+ <xapG:blue>31</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Emeraude</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>0</xapG:red>
+ <xapG:green>76</xapG:green>
+ <xapG:blue>31</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Bleu-vert</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>1</xapG:red>
+ <xapG:green>83</xapG:green>
+ <xapG:blue>82</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Bleu des mers du Sud</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>4</xapG:red>
+ <xapG:green>115</xapG:green>
+ <xapG:blue>144</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Cyan pur</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>0</xapG:red>
+ <xapG:green>160</xapG:green>
+ <xapG:blue>198</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Bleu hawaiien</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>6</xapG:red>
+ <xapG:green>120</xapG:green>
+ <xapG:blue>179</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Bleu crépuscule</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>10</xapG:red>
+ <xapG:green>80</xapG:green>
+ <xapG:blue>161</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Bleu nuit étoilée</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>15</xapG:red>
+ <xapG:green>41</xapG:green>
+ <xapG:blue>143</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Bleu fonds marins</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>19</xapG:red>
+ <xapG:green>0</xapG:green>
+ <xapG:blue>124</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Lavande fraîche</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>72</xapG:red>
+ <xapG:green>48</xapG:green>
+ <xapG:blue>147</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Violet</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>75</xapG:red>
+ <xapG:green>0</xapG:green>
+ <xapG:blue>125</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Améthyste</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>129</xapG:red>
+ <xapG:green>1</xapG:green>
+ <xapG:blue>125</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Framboise</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>184</xapG:red>
+ <xapG:green>2</xapG:green>
+ <xapG:blue>126</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Magenta pur</xapG:swatchName>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:red>240</xapG:red>
+ <xapG:green>3</xapG:green>
+ <xapG:blue>127</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Rouge global</xapG:swatchName>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:tint>100.000000</xapG:tint>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:red>255</xapG:red>
+ <xapG:green>0</xapG:green>
+ <xapG:blue>0</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Jus global</xapG:swatchName>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:tint>100.000000</xapG:tint>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:red>255</xapG:red>
+ <xapG:green>126</xapG:green>
+ <xapG:blue>0</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Jaune pur global</xapG:swatchName>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:tint>100.000000</xapG:tint>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:red>255</xapG:red>
+ <xapG:green>255</xapG:green>
+ <xapG:blue>0</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Vert global</xapG:swatchName>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:tint>100.000000</xapG:tint>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:red>51</xapG:red>
+ <xapG:green>160</xapG:green>
+ <xapG:blue>43</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Cyan pur global</xapG:swatchName>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:tint>100.000000</xapG:tint>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:red>0</xapG:red>
+ <xapG:green>160</xapG:green>
+ <xapG:blue>198</xapG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xapG:swatchName>Bleu fonds marins global</xapG:swatchName>
+ <xapG:type>PROCESS</xapG:type>
+ <xapG:tint>100.000000</xapG:tint>
+ <xapG:mode>RGB</xapG:mode>
+ <xapG:red>19</xapG:red>
+ <xapG:green>0</xapG:green>
+ <xapG:blue>123</xapG:blue>
+ </rdf:li>
+ </rdf:Seq>
+ </xapG:Colorants>
+ </rdf:li>
+ </rdf:Seq>
+ </xapTPg:SwatchGroups>
+ </rdf:Description>
+ </rdf:RDF>
+</x:xmpmeta>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<?xpacket end="w"?>
+ </metadata>
+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="46.4927" y1="0" x2="46.4927" y2="53.0063">
+ <stop offset="0" style="stop-color:#F79810"/>
+ <stop offset="1" style="stop-color:#F8310E"/>
+</linearGradient>
+<path fill="url(#SVGID_1_)" d="M1.053,24.152c-0.194,0-0.348,0.15-0.373,0.364L0,29.681l0.68,5.076
+ c0.025,0.214,0.179,0.363,0.373,0.363c0.188,0,0.341-0.148,0.371-0.361l0,0v-0.001c0,0,0,0,0,0.001l0.806-5.078l-0.806-5.166
+ C1.395,24.302,1.24,24.152,1.053,24.152z M4.877,21.33c-0.032-0.222-0.191-0.375-0.387-0.375c-0.197,0-0.36,0.158-0.387,0.375
+ c0,0.002-0.914,8.351-0.914,8.351l0.914,8.166c0.026,0.219,0.189,0.377,0.387,0.377c0.195,0,0.354-0.154,0.386-0.375l1.04-8.168
+ L4.877,21.33z M19.281,13.627c-0.375,0-0.685,0.307-0.703,0.697l-0.728,15.364l0.728,9.929c0.019,0.388,0.328,0.694,0.703,0.694
+ c0.373,0,0.682-0.307,0.704-0.696v0.003l0.823-9.93l-0.823-15.364C19.963,13.934,19.654,13.627,19.281,13.627z M11.826,18.967
+ c-0.288,0-0.523,0.23-0.546,0.537l-0.82,10.18l0.82,9.849c0.022,0.305,0.258,0.535,0.546,0.535c0.285,0,0.52-0.23,0.545-0.535
+ l0.932-9.849l-0.932-10.182C12.346,19.197,12.111,18.967,11.826,18.967z M26.857,40.31c0.465,0,0.843-0.375,0.862-0.855l0.714-9.762
+ L27.72,9.238c-0.019-0.48-0.397-0.855-0.862-0.855c-0.469,0-0.848,0.376-0.863,0.856c0,0.001-0.633,20.453-0.633,20.453l0.633,9.766
+ C26.01,39.934,26.389,40.31,26.857,40.31z M42.367,40.356c0.64,0,1.168-0.527,1.18-1.175v0.007v-0.007l0.498-9.482L43.547,6.075
+ c-0.011-0.647-0.54-1.175-1.18-1.175c-0.641,0-1.17,0.527-1.18,1.176l-0.445,23.615c0,0.015,0.445,9.496,0.445,9.496
+ C41.197,39.829,41.727,40.356,42.367,40.356z M34.553,40.319c0.557,0,1.006-0.447,1.021-1.017v0.007l0.606-9.614L35.573,9.092
+ c-0.015-0.57-0.464-1.016-1.021-1.016c-0.561,0-1.01,0.446-1.022,1.016l-0.539,20.604l0.54,9.612
+ C33.543,39.872,33.992,40.319,34.553,40.319z M15.539,40.229c0.331,0,0.599-0.265,0.624-0.614l0.878-9.931l-0.878-9.447
+ c-0.024-0.349-0.292-0.612-0.624-0.612c-0.336,0-0.604,0.265-0.625,0.616l-0.773,9.443l0.773,9.93
+ C14.936,39.964,15.203,40.229,15.539,40.229z M8.143,39.685c0.242,0,0.438-0.191,0.466-0.455l0.986-9.548l-0.985-9.908
+ c-0.029-0.265-0.225-0.456-0.467-0.456c-0.245,0-0.441,0.192-0.466,0.456c0,0.001-0.868,9.908-0.868,9.908l0.868,9.546
+ C7.701,39.493,7.897,39.685,8.143,39.685z M38.445,8.749c-0.605,0-1.09,0.481-1.102,1.097l-0.492,19.851l0.492,9.552
+ c0.012,0.608,0.496,1.089,1.102,1.089c0.604,0,1.086-0.48,1.1-1.096v0.008l0.552-9.552L39.545,9.844
+ C39.531,9.23,39.049,8.749,38.445,8.749z M23.055,40.33c0.418,0,0.763-0.341,0.783-0.776l0.768-9.863l-0.768-18.878
+ c-0.021-0.436-0.365-0.776-0.783-0.776c-0.422,0-0.766,0.341-0.784,0.776c0,0.001-0.68,18.878-0.68,18.878l0.681,9.867
+ C22.289,39.989,22.633,40.33,23.055,40.33z M31.631,39.399v-0.005l0.66-9.7l-0.66-21.144c-0.016-0.525-0.43-0.937-0.941-0.937
+ c-0.514,0-0.928,0.411-0.942,0.937l-0.586,21.143l0.587,9.705c0.014,0.52,0.428,0.931,0.941,0.931c0.512,0,0.924-0.411,0.941-0.934
+ V39.399z M81.549,17.506c-1.567,0-3.062,0.317-4.424,0.888C76.215,8.086,67.571,0,57.027,0c-2.58,0-5.095,0.508-7.316,1.367
+ c-0.863,0.334-1.093,0.678-1.101,1.345v36.3c0.009,0.7,0.552,1.283,1.235,1.352c0.029,0.003,31.499,0.019,31.703,0.019
+ c6.316,0,11.437-5.121,11.437-11.438S87.865,17.506,81.549,17.506z M46.272,2.68c-0.687,0-1.251,0.564-1.261,1.257l-0.516,25.765
+ l0.517,9.351c0.009,0.683,0.573,1.246,1.26,1.246c0.685,0,1.249-0.563,1.259-1.256v0.011l0.561-9.352L47.531,3.935
+ C47.521,3.244,46.957,2.68,46.272,2.68z M9.236,47.654c-1.353-0.318-1.719-0.488-1.719-1.024c0-0.378,0.305-0.769,1.219-0.769
+ c0.781,0,1.391,0.317,1.939,0.878l1.231-1.194c-0.805-0.841-1.78-1.341-3.108-1.341c-1.684,0-3.049,0.951-3.049,2.5
+ c0,1.682,1.098,2.182,2.67,2.547c1.609,0.365,1.902,0.61,1.902,1.159c0,0.646-0.477,0.927-1.487,0.927
+ c-0.817,0-1.585-0.28-2.183-0.977L5.42,51.458c0.646,0.951,1.891,1.548,3.316,1.548c2.33,0,3.354-1.097,3.354-2.718
+ C12.09,48.434,10.59,47.971,9.236,47.654z M17.09,44.204c-2.328,0-3.705,1.804-3.705,4.401s1.377,4.4,3.705,4.4
+ s3.707-1.803,3.707-4.4S19.418,44.204,17.09,44.204z M17.09,51.312c-1.377,0-1.951-1.183-1.951-2.706
+ c0-1.524,0.574-2.707,1.951-2.707c1.379,0,1.951,1.183,1.951,2.707C19.041,50.129,18.469,51.312,17.09,51.312z M27.686,49.13
+ c0,1.365-0.672,2.207-1.756,2.207c-1.085,0-1.743-0.866-1.743-2.231v-4.769h-1.708v4.793c0,2.486,1.391,3.876,3.451,3.876
+ c2.17,0,3.463-1.427,3.463-3.9v-4.769h-1.707V49.13z M36.756,47.947c0,0.476,0.024,1.548,0.024,1.865
+ c-0.11-0.22-0.39-0.646-0.597-0.964l-3.025-4.512h-1.633v8.536h1.683v-3.756c0-0.476-0.024-1.548-0.024-1.865
+ c0.109,0.219,0.391,0.646,0.597,0.964l3.134,4.657h1.524v-8.536h-1.683V47.947z M43.303,44.337h-2.67v8.536h2.547
+ c2.195,0,4.366-1.269,4.366-4.268C47.546,45.483,45.741,44.337,43.303,44.337z M43.18,51.215h-0.84v-5.219h0.902
+ c1.805,0,2.549,0.865,2.549,2.609C45.791,50.166,44.973,51.215,43.18,51.215z M52.825,45.898c0.768,0,1.256,0.342,1.561,0.927
+ l1.585-0.731c-0.537-1.109-1.513-1.89-3.122-1.89c-2.229,0-3.791,1.804-3.791,4.401c0,2.694,1.499,4.4,3.73,4.4
+ c1.549,0,2.573-0.719,3.158-1.926l-1.438-0.854c-0.451,0.757-0.903,1.086-1.671,1.086c-1.28,0-2.024-1.171-2.024-2.706
+ C50.812,47.021,51.546,45.898,52.825,45.898z M59.156,44.337h-1.707v8.536h5.13v-1.684h-3.423V44.337z M67.076,44.204
+ c-2.33,0-3.707,1.804-3.707,4.401s1.377,4.4,3.707,4.4c2.328,0,3.706-1.803,3.706-4.4S69.404,44.204,67.076,44.204z M67.076,51.312
+ c-1.379,0-1.951-1.183-1.951-2.706c0-1.524,0.572-2.707,1.951-2.707c1.376,0,1.949,1.183,1.949,2.707
+ C69.025,50.129,68.452,51.312,67.076,51.312z M77.67,49.13c0,1.365-0.669,2.207-1.754,2.207c-1.087,0-1.744-0.866-1.744-2.231
+ v-4.769h-1.707v4.793c0,2.486,1.39,3.876,3.451,3.876c2.17,0,3.462-1.427,3.462-3.9v-4.769H77.67V49.13z M84.181,44.337h-2.669
+ v8.536h2.547c2.196,0,4.365-1.269,4.365-4.268C88.424,45.483,86.62,44.337,84.181,44.337z M84.059,51.215h-0.841v-5.219h0.903
+ c1.803,0,2.547,0.865,2.547,2.609C86.668,50.166,85.851,51.215,84.059,51.215z"/>
+</svg>