Browse Source

Fixed everything

master
miladkdz 10 years ago
parent
commit
786c4d3b2d
62 changed files with 71 additions and 16454 deletions
  1. +3
    -3
      Sevomin.Models/DovominParameterViewModel.cs
  2. +9
    -0
      Sevomin.Models/Enums/ParameterType.cs
  3. +1
    -2
      Sevomin.Models/Job.cs
  4. +4
    -2
      Sevomin.Models/JobParameterViewModel.cs
  5. +8
    -4
      Sevomin.Models/Parameter.cs
  6. +1
    -0
      Sevomin.Models/Sevomin.Models.csproj
  7. +0
    -15
      Sevomin.News/404.cshtml
  8. +0
    -23
      Sevomin.News/Global.asax
  9. +0
    -59
      Sevomin.News/Index.cshtml
  10. +0
    -121
      Sevomin.News/Web.config
  11. +0
    -212
      Sevomin.News/app_code/code/Blog.cs
  12. +0
    -118
      Sevomin.News/app_code/code/Comment.cs
  13. +0
    -76
      Sevomin.News/app_code/code/Post.cs
  14. +0
    -178
      Sevomin.News/app_code/code/Storage.cs
  15. +0
    -187
      Sevomin.News/app_code/handlers/CommentHandler.cs
  16. +0
    -59
      Sevomin.News/app_code/handlers/FeedHandler.cs
  17. +0
    -188
      Sevomin.News/app_code/handlers/MetaWeblogHandler.cs
  18. +0
    -60
      Sevomin.News/app_code/handlers/MinifyHandler.cs
  19. +0
    -117
      Sevomin.News/app_code/handlers/PostHandler.cs
  20. +0
    -94
      Sevomin.News/css/admin.css
  21. +0
    -1
      Sevomin.News/css/bootstrap-theme.min.css
  22. +0
    -839
      Sevomin.News/css/bootstrap.min.css
  23. BIN
      Sevomin.News/css/fonts/glyphicons-halflings-regular.eot
  24. +0
    -229
      Sevomin.News/css/fonts/glyphicons-halflings-regular.svg
  25. BIN
      Sevomin.News/css/fonts/glyphicons-halflings-regular.ttf
  26. BIN
      Sevomin.News/css/fonts/glyphicons-halflings-regular.woff
  27. BIN
      Sevomin.News/favicon.ico
  28. BIN
      Sevomin.News/fonts/BKoodakBold.eot
  29. BIN
      Sevomin.News/fonts/BKoodakBold.ttf
  30. BIN
      Sevomin.News/fonts/BKoodakBold.woff
  31. BIN
      Sevomin.News/fonts/WebYekan.eot
  32. +0
    -612
      Sevomin.News/fonts/WebYekan.svg
  33. BIN
      Sevomin.News/fonts/WebYekan.ttf
  34. BIN
      Sevomin.News/fonts/WebYekan.woff
  35. BIN
      Sevomin.News/images/revert-logo.png
  36. +0
    -10
      Sevomin.News/packages.config
  37. +0
    -14
      Sevomin.News/posts/05e94568-232b-42d2-81c1-d4bf5ef46b5d.xml
  38. +0
    -14
      Sevomin.News/posts/504c5b77-1965-476b-8405-0e47db1309d1.xml
  39. +0
    -61
      Sevomin.News/posts/files/9fa751db-c036-435b-97e3-bd6373b0991b.xml
  40. +0
    -5
      Sevomin.News/scripts/_references.js
  41. +0
    -226
      Sevomin.News/scripts/admin.js
  42. +0
    -217
      Sevomin.News/scripts/bootstrap-wysiwyg.js
  43. +0
    -271
      Sevomin.News/scripts/comments.js
  44. +0
    -2670
      Sevomin.News/scripts/jquery-2.0.2.intellisense.js
  45. +0
    -8842
      Sevomin.News/scripts/jquery-2.0.2.js
  46. +0
    -46
      Sevomin.News/themes/Sevomin/Comment.cshtml
  47. +0
    -107
      Sevomin.News/themes/Sevomin/Post.cshtml
  48. +0
    -119
      Sevomin.News/themes/Sevomin/_Layout.cshtml
  49. +0
    -108
      Sevomin.News/themes/Sevomin/common.css
  50. +0
    -247
      Sevomin.News/themes/Sevomin/site.css
  51. +0
    -78
      Sevomin.News/views/AdminMenu.cshtml
  52. +0
    -37
      Sevomin.News/views/CommentForm.cshtml
  53. +0
    -59
      Sevomin.News/views/Login.cshtml
  54. +0
    -14
      Sevomin.News/views/Robots/RSD.cshtml
  55. +0
    -8
      Sevomin.News/views/Robots/Robots.cshtml
  56. +0
    -15
      Sevomin.News/views/Robots/Sitemap.cshtml
  57. +0
    -28
      Sevomin.News/wlwmanifest.xml
  58. +10
    -10
      Sevomin.WebFrontend.Controllers/GodController.cs
  59. +18
    -9
      Sevomin.WebFrontend/Views/Job/JobEditor.cshtml
  60. +5
    -5
      Sevomin.WebFrontend/Views/Shared/DovominParameterViewModel.cshtml
  61. +9
    -8
      Sevomin.WebFrontend/Views/Shared/JobParameterViewModel.cshtml
  62. +3
    -27
      Sevomin.sln

+ 3
- 3
Sevomin.Models/DovominParameterViewModel.cs View File

@ -18,8 +18,9 @@ namespace Sevomin.Models
public string CommentAvalin { get; set; }
public string CommentDovomin { get; set; }
public bool IsNumeric { get; set; }
public IList<Tuple<decimal,string>> ParameterValues { get; set; }
public IList<Tuple<decimal, string>> ParameterValues { get; set; }
public DovominParameterViewModel(DovominParameter dp)
{
@ -33,7 +34,6 @@ namespace Sevomin.Models
HasMoscow = dp.Parameter.Moscow;
DisplayMethod = dp.Parameter.DisplayMethod;
GroupName = dp.Parameter.GroupName;
CommentAvalin = dp.Parameter.CommentAvalin;
CommentDovomin = dp.Parameter.CommentDovomin;
@ -44,4 +44,4 @@ namespace Sevomin.Models
}
}
}
}
}

+ 9
- 0
Sevomin.Models/Enums/ParameterType.cs View File

@ -0,0 +1,9 @@
namespace Sevomin.Models.Enums
{
public enum ParameterType
{
Text = 0,
Numeric = 1,
Date = 2
}
}

+ 1
- 2
Sevomin.Models/Job.cs View File

@ -33,6 +33,5 @@ namespace Sevomin.Models
public virtual ICollection<JobParameter> JobParameters { get; set; }
public virtual ICollection<DovominJob> Applications { get; set; }
}
}
}

+ 4
- 2
Sevomin.Models/JobParameterViewModel.cs View File

@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using Sevomin.Models.Enums;
namespace Sevomin.Models
{
@ -21,8 +22,8 @@ namespace Sevomin.Models
public string CommentAvalin { get; set; }
public string CommentDovomin { get; set; }
public IList<Tuple<decimal,string>> ParameterValues { get; set; }
public ParameterType ParameterType { get; set; }
public IList<Tuple<decimal, string>> ParameterValues { get; set; }
public JobParameterViewModel(JobParameter jp)
{
@ -42,6 +43,7 @@ namespace Sevomin.Models
CommentAvalin = jp.Parameter.CommentAvalin;
CommentDovomin = jp.Parameter.CommentDovomin;
ParameterType = jp.Parameter.ParameterType;
ParameterValues = new List<Tuple<decimal, string>>();
foreach (var val in jp.Parameter.ParameterValues)


+ 8
- 4
Sevomin.Models/Parameter.cs View File

@ -1,7 +1,9 @@
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using Sevomin.Models.Enums;
namespace Sevomin.Models
@ -10,7 +12,7 @@ namespace Sevomin.Models
{
[Key]
public long Id { get; set; }
[Required]
public string Name { get; set; }
@ -34,7 +36,6 @@ namespace Sevomin.Models
[StringLength(50)]
public string ParameterValueId { get; set; }
[NotMapped]
public IQueryable<ParameterValue> ParameterValues
{
@ -44,8 +45,11 @@ namespace Sevomin.Models
}
}
public int BasePoint { get; set; }
public virtual ICollection<JobParameter> JobParameters { get; set; }
public virtual ICollection<DovominParameter> DovominParameters { get; set; }
[DefaultValue(ParameterType.Text)]
public ParameterType ParameterType { get; set; }
}
}
}

+ 1
- 0
Sevomin.Models/Sevomin.Models.csproj View File

@ -85,6 +85,7 @@
<Compile Include="Avalin.cs" />
<Compile Include="AvalinViewModel.cs" />
<Compile Include="ChangePasswordViewModel.cs" />
<Compile Include="Enums\ParameterType.cs" />
<Compile Include="Helpers\ScheduledTasks\ExpiringJob.cs" />
<Compile Include="Helpers\ScheduledTasks\NewJob.cs" />
<Compile Include="Helpers\ScheduledTasks\NewApplication.cs" />


+ 0
- 15
Sevomin.News/404.cshtml View File

@ -1,15 +0,0 @@
@{
Page.Title = "The page does not exist";
Layout = "~/themes/" + Blog.Theme + "/_Layout.cshtml";
Response.StatusCode = 404;
}
<article>
<h1>The page doesn't exist</h1>
<p>Sorry about that. </p>
<p>
<a href="~/">Go to the front page</a>
</p>
</article>

+ 0
- 23
Sevomin.News/Global.asax View File

@ -1,23 +0,0 @@
<%@ Application Language="C#" %>
<script RunAt="server">
public override string GetVaryByCustomString(HttpContext context, string arg)
{
if (arg == "authenticated")
{
HttpCookie cookie = context.Request.Cookies[FormsAuthentication.FormsCookieName];
if (cookie != null)
return cookie.Value;
}
return base.GetVaryByCustomString(context, arg);
}
public void Application_BeginRequest(object sender, EventArgs e)
{
Context.Items["IIS_WasUrlRewritten"] = "false";
}
</script>

+ 0
- 59
Sevomin.News/Index.cshtml View File

@ -1,59 +0,0 @@
@using System.Web.Caching;
@{
Page.Title = Blog.Title;
Layout = "~/themes/" + Blog.Theme + "/_Layout.cshtml";
DateTime lastModified = DateTime.MinValue;
if (string.IsNullOrEmpty(Blog.CurrentSlug))
{
Page.ShowPaging = true;
var posts = Blog.GetPosts(Blog.PostsPerPage);
foreach (var post in posts)
{
@RenderPage("~/themes/" + Blog.Theme + "/Post.cshtml", post);
}
if (posts.Any())
{
lastModified = posts.Max(p => p.LastModified);
}
Response.AddCacheItemDependency("posts");
Response.Cache.VaryByParams["page"] = true;
Response.Cache.VaryByParams["category"] = true;
}
else
{
Post post = Blog.IsNewPost ? new Post() : Blog.CurrentPost;
if (Blog.IsNewPost && !User.Identity.IsAuthenticated)
{
FormsAuthentication.RedirectToLoginPage();
}
if (post == null) { throw new HttpException(404, "Post not found"); }
Page.Title = post.Title;
lastModified = post.LastModified;
Response.AddCacheDependency(new CacheDependency(Server.MapPath("~/posts/" + post.ID + ".xml")));
@RenderPage("~/themes/" + Blog.Theme + "/Post.cshtml", post)
}
if (!Request.IsLocal)
{
Response.Cache.AppendCacheExtension("max-age=0");
Response.Cache.SetValidUntilExpires(true);
Response.Cache.SetCacheability(HttpCacheability.ServerAndPrivate);
Response.Cache.SetVaryByCustom("authenticated");
Response.Cache.VaryByParams["slug"] = true;
Response.AddCacheDependency(new CacheDependency(Server.MapPath("~/")));
Response.AddCacheDependency(new CacheDependency(Server.MapPath("~/scripts")));
Response.AddCacheDependency(new CacheDependency(Server.MapPath("~/css")));
Response.AddCacheDependency(new CacheDependency(Server.MapPath("~/themes/" + Blog.Theme)));
Blog.SetConditionalGetHeaders(lastModified, Context);
}
}

+ 0
- 121
Sevomin.News/Web.config View File

@ -1,121 +0,0 @@
<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="blog:theme" value="Sevomin"/>
<add key="blog:name" value="اخبار سومین"/>
<add key="blog:description" value="آخرین اخبار توسعه وب سایت سومین"/>
<add key="blog:image" value="http://www.sevom.in/content/images/logo.png"/>
<add key="blog:postsPerPage" value="12"/>
<add key="blog:daysToComment" value="20"/>
<add key="blog:moderateComments" value="true"/>
<add key="blog:email" value="[email protected]"/>
<add key="PreserveLoginUrl" value="true"/>
<add key="webpages:Enabled" value="true"/>
<add key="webpages:Version" value="3.0.0.0"/>
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.5"/>
<httpRuntime targetFramework="4.5" enableVersionHeader="false" requestValidationMode="2.0"/>
<pages validateRequest="false"/>
<customErrors mode="RemoteOnly" defaultRedirect="~/">
<error statusCode="404" redirect="~/404/"/>
</customErrors>
<authentication mode="Forms">
<forms defaultUrl="~/" loginUrl="~/views/login.cshtml" name="miniblog" timeout="10080">
<credentials passwordFormat="SHA1">
<!-- Password is "demo". Generate your hash password here http://www.stringfunction.com/sha1-hash.html -->
<user name="admin" password="b7986da6e43a61189f546cc51a0b37dcad99e079"/>
</credentials>
</forms>
</authentication>
<machineKey decryption="AES" validation="SHA1" decryptionKey="435D9CC99471D1E7C70FFEBA5EC71F28048BF9016605B82CC69B091FD317B294" validationKey="25C5D98CE093E77C2F886A6D8C6DA8FBC77CD764A1BF49E5D30CD123C5E19553"/>
</system.web>
<system.net>
<mailSettings>
<smtp>
<network host="ml01.anaxanet.com" port="25" enableSsl="false"/>
</smtp>
</mailSettings>
</system.net>
<system.webServer>
<urlCompression doDynamicCompression="true" doStaticCompression="true"/>
<handlers>
<add name="CommentHandler" verb="*" type="CommentHandler" path="/comment.ashx"/>
<add name="PostHandler" verb="POST" type="PostHandler" path="/post.ashx"/>
<add name="MetaWebLogHandler" verb="POST,GET" type="MetaWeblogHandler" path="/metaweblog"/>
<add name="FeedHandler" verb="GET" type="FeedHandler" path="/feed/*"/>
<add name="CssHandler" verb="GET" type="MinifyHandler" path="*.css"/>
<add name="JsHandler" verb="GET" type="MinifyHandler" path="*.js"/>
</handlers>
<httpErrors>
<remove statusCode="404"/>
<error statusCode="404" responseMode="ExecuteURL" path="/404.cshtml"/>
</httpErrors>
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="365:00:00"/>
</staticContent>
<security>
<requestFiltering allowDoubleEscaping="true">
<fileExtensions>
<remove fileExtension=".cshtml"/>
<add fileExtension=".cshtml" allowed="true"/>
</fileExtensions>
</requestFiltering>
</security>
<defaultDocument>
<files>
<remove value="index.cshtml"/>
<add value="index.cshtml"/>
</files>
</defaultDocument>
<rewrite>
<rules>
<rule name="Remove WWW" patternSyntax="Wildcard" stopProcessing="true">
<match url="*"/>
<conditions>
<add input="{CACHE_URL}" pattern="*://www.*"/>
</conditions>
<action type="Redirect" url="{C:1}://{C:2}" redirectType="Permanent"/>
</rule>
<rule name="BlogEngine slug" stopProcessing="true">
<match url="^post/(.*)\.aspx" ignoreCase="true"/>
<action type="Redirect" redirectType="Permanent" url="/post/{R:1}"/>
</rule>
<rule name="slug" stopProcessing="true">
<match url="^post/(.*)" ignoreCase="true"/>
<action type="Rewrite" url="/?slug={R:1}"/>
</rule>
<rule name="paging" stopProcessing="true">
<match url="^(page/)([\d]{0,})" ignoreCase="true"/>
<action type="Rewrite" url="/?page={R:2}"/>
</rule>
<rule name="category" stopProcessing="true">
<match url="^category/([^/]+)(/page/)?([\d]+)?" ignoreCase="true"/>
<action type="Rewrite" url="/?category={R:1}&amp;page={R:3}"/>
</rule>
<rule name="robots.txt" stopProcessing="true">
<match url="robots.txt"/>
<action type="Rewrite" url="views/robots/robots.cshtml"/>
</rule>
<rule name="sitemap" stopProcessing="true">
<match url="sitemap.xml"/>
<action type="Rewrite" url="views/robots/sitemap.cshtml"/>
</rule>
<rule name="fingerprint" stopProcessing="true">
<match url="(.*)(v-[0-9]+/)([\S]+)"/>
<action type="Rewrite" url="{R:1}/{R:3}"/>
</rule>
</rules>
<outboundRules>
<rule name="Remove ETag">
<match serverVariable="RESPONSE_ETag" pattern=".+"/>
<action type="Rewrite" value=""/>
</rule>
<rule name="Send correct Vary">
<match serverVariable="RESPONSE_Vary" pattern=".+"/>
<action type="Rewrite" value="Accept-Encoding, If-Modified-Since"/>
</rule>
</outboundRules>
</rewrite>
</system.webServer>
</configuration>

+ 0
- 212
Sevomin.News/app_code/code/Blog.cs View File

@ -1,212 +0,0 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Caching;
using System.Web.Hosting;
public static class Blog
{
static Blog()
{
Theme = ConfigurationManager.AppSettings.Get("blog:theme");
Title = ConfigurationManager.AppSettings.Get("blog:name");
Description = ConfigurationManager.AppSettings.Get("blog:description");
PostsPerPage = int.Parse(ConfigurationManager.AppSettings.Get("blog:postsPerPage"));
DaysToComment = int.Parse(ConfigurationManager.AppSettings.Get("blog:daysToComment"));
Image = ConfigurationManager.AppSettings.Get("blog:image");
ModerateComments = bool.Parse(ConfigurationManager.AppSettings.Get("blog:moderateComments"));
}
public static string Title { get; private set; }
public static string Description { get; private set; }
public static string Theme { get; private set; }
public static string Image { get; private set; }
public static int PostsPerPage { get; private set; }
public static int DaysToComment { get; private set; }
public static bool ModerateComments { get; private set; }
public static int UniqueId
{
get { return FingerPrint("/web.config").GetHashCode(); }
}
public static string CurrentSlug
{
get { return (HttpContext.Current.Request.QueryString["slug"] ?? string.Empty).Trim().ToLowerInvariant(); }
}
public static string CurrentCategory
{
get { return (HttpContext.Current.Request.QueryString["category"] ?? string.Empty).Trim().ToLowerInvariant(); }
}
public static bool IsNewPost
{
get { return HttpContext.Current.Request.RawUrl.Trim('/') == "post/new"; }
}
public static Post CurrentPost
{
get
{
if (HttpContext.Current.Items["currentpost"] == null && !string.IsNullOrEmpty(CurrentSlug))
{
var post = Storage.GetAllPosts().FirstOrDefault(p => p.Slug == CurrentSlug);
if (post != null && (post.IsPublished || HttpContext.Current.User.Identity.IsAuthenticated))
HttpContext.Current.Items["currentpost"] = Storage.GetAllPosts().FirstOrDefault(p => p.Slug == CurrentSlug);
}
return HttpContext.Current.Items["currentpost"] as Post;
}
}
public static string GetNextPage()
{
if (!string.IsNullOrEmpty(CurrentSlug))
{
var current = Storage.GetAllPosts().IndexOf(CurrentPost);
if (current > 0)
return Storage.GetAllPosts()[current - 1].Url.ToString();
}
else if (CurrentPage > 1)
{
return GetPagingUrl(-1);
}
return null;
}
public static string GetPrevPage()
{
if (!string.IsNullOrEmpty(CurrentSlug))
{
var current = Storage.GetAllPosts().IndexOf(CurrentPost);
if (current > -1)
return Storage.GetAllPosts()[current + 1].Url.ToString();
}
else
{
return GetPagingUrl(1);
}
return null;
}
public static int CurrentPage
{
get
{
int page = 0;
if (int.TryParse(HttpContext.Current.Request.QueryString["page"], out page))
return page;
return 1;
}
}
public static IEnumerable<Post> GetPosts(int postsPerPage = 0)
{
var posts = from p in Storage.GetAllPosts()
where (p.IsPublished && p.PubDate <= DateTime.UtcNow) || HttpContext.Current.User.Identity.IsAuthenticated
select p;
string category = HttpContext.Current.Request.QueryString["category"];
if (!string.IsNullOrEmpty(category))
{
posts = posts.Where(p => p.Categories.Any(c => string.Equals(c, category, StringComparison.OrdinalIgnoreCase)));
}
if (postsPerPage > 0)
{
posts = posts.Skip(postsPerPage * (CurrentPage - 1)).Take(postsPerPage);
}
return posts;
}
public static bool MatchesUniqueId(HttpContext context)
{
int token;
return int.TryParse(context.Request.Form["token"], out token) && token == Blog.UniqueId;
}
public static string SaveFileToDisk(byte[] bytes, string extension)
{
string relative = "~/posts/files/" + Guid.NewGuid() + "." + extension.Trim('.');
string file = HostingEnvironment.MapPath(relative);
File.WriteAllBytes(file, bytes);
var cruncher = new ImageCruncher.Cruncher();
cruncher.CrunchImages(file);
return VirtualPathUtility.ToAbsolute(relative);
}
public static string GetPagingUrl(int move)
{
string url = "/page/{0}/";
string category = HttpContext.Current.Request.QueryString["category"];
if (!string.IsNullOrEmpty(category))
{
url = "/category/" + HttpUtility.UrlEncode(category.ToLowerInvariant()) + "/" + url;
}
string relative = string.Format("~" + url, Blog.CurrentPage + move);
return VirtualPathUtility.ToAbsolute(relative);
}
public static string FingerPrint(string rootRelativePath, string cdnPath = "")
{
if (!string.IsNullOrEmpty(cdnPath) && !HttpContext.Current.IsDebuggingEnabled)
{
return cdnPath;
}
if (HttpRuntime.Cache[rootRelativePath] == null)
{
string relative = VirtualPathUtility.ToAbsolute("~" + rootRelativePath);
string absolute = HostingEnvironment.MapPath(relative);
if (!File.Exists(absolute))
{
throw new FileNotFoundException("File not found", absolute);
}
DateTime date = File.GetLastWriteTime(absolute);
int index = relative.LastIndexOf('/');
string result = relative.Insert(index, "/v-" + date.Ticks);
HttpRuntime.Cache.Insert(rootRelativePath, result, new CacheDependency(absolute));
}
return HttpRuntime.Cache[rootRelativePath] as string;
}
public static void SetConditionalGetHeaders(DateTime lastModified, HttpContextBase context)
{
HttpResponseBase response = context.Response;
HttpRequestBase request = context.Request;
lastModified = new DateTime(lastModified.Year, lastModified.Month, lastModified.Day, lastModified.Hour, lastModified.Minute, lastModified.Second);
string incomingDate = request.Headers["If-Modified-Since"];
response.Cache.SetLastModified(lastModified);
DateTime testDate = DateTime.MinValue;
if (DateTime.TryParse(incomingDate, out testDate) && testDate == lastModified)
{
response.ClearContent();
response.StatusCode = (int)System.Net.HttpStatusCode.NotModified;
response.SuppressContent = true;
}
}
}

+ 0
- 118
Sevomin.News/app_code/code/Comment.cs View File

@ -1,118 +0,0 @@
using System;
using System.Globalization;
using System.Text.RegularExpressions;
using System.Web.Security;
public class Comment
{
private static readonly Regex _linkRegex = new Regex("((http://|https://|www\\.)([A-Z0-9.\\-]{1,})\\.[0-9A-Z?;~&%\\(\\)#,=\\-_\\./\\+]{2,}[0-9A-Z?~&%#=\\-_/\\+])", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private const string Link = "<a href=\"{0}{1}\" rel=\"nofollow\">{2}</a>";
public Comment()
{
ID = Guid.NewGuid().ToString();
PubDate = DateTime.UtcNow;
}
public string ID { get; set; }
public string Author { get; set; }
public string Email { get; set; }
public string Website { get; set; }
public string Content { get; set; }
public DateTime PubDate { get; set; }
public string Ip { get; set; }
public string UserAgent { get; set; }
public bool IsAdmin { get; set; }
public bool IsApproved { get; set; }
public string GravatarUrl(int size)
{
var hash = FormsAuthentication.HashPasswordForStoringInConfigFile(Email.ToLowerInvariant(), "MD5").ToLower();
return string.Format("http://gravatar.com/avatar/{0}?s={1}&d=mm", hash, size);
}
public string ContentWithLinks()
{
return _linkRegex.Replace(Content, new MatchEvaluator(Evaluator));
}
private static string Evaluator(Match match)
{
var info = CultureInfo.InvariantCulture;
return string.Format(info, Link, !match.Value.Contains("://") ? "http://" : string.Empty, match.Value, ShortenUrl(match.Value, 50));
}
private static string ShortenUrl(string url, int max)
{
if (url.Length <= max)
{
return url;
}
// Remove the protocal
var startIndex = url.IndexOf("://");
if (startIndex > -1)
{
url = url.Substring(startIndex + 3);
}
if (url.Length <= max)
{
return url;
}
// Compress folder structure
var firstIndex = url.IndexOf("/") + 1;
var lastIndex = url.LastIndexOf("/");
if (firstIndex < lastIndex)
{
url = url.Remove(firstIndex, lastIndex - firstIndex);
url = url.Insert(firstIndex, "...");
}
if (url.Length <= max)
{
return url;
}
// Remove URL parameters
var queryIndex = url.IndexOf("?");
if (queryIndex > -1)
{
url = url.Substring(0, queryIndex);
}
if (url.Length <= max)
{
return url;
}
// Remove URL fragment
var fragmentIndex = url.IndexOf("#");
if (fragmentIndex > -1)
{
url = url.Substring(0, fragmentIndex);
}
if (url.Length <= max)
{
return url;
}
// Compress page
firstIndex = url.LastIndexOf("/") + 1;
lastIndex = url.LastIndexOf(".");
if (lastIndex - firstIndex > 10)
{
var page = url.Substring(firstIndex, lastIndex - firstIndex);
var length = url.Length - max + 3;
if (page.Length > length)
{
url = url.Replace(page, string.Format("...{0}", page.Substring(length)));
}
}
return url;
}
}

+ 0
- 76
Sevomin.News/app_code/code/Post.cs View File

@ -1,76 +0,0 @@
using CookComputing.XmlRpc;
using System;
using System.Linq;
using System.Collections.Generic;
using System.Web;
[XmlRpcMissingMapping(MappingAction.Ignore)]
public class Post
{
public Post()
{
ID = Guid.NewGuid().ToString();
Title = "My new post";
Author = HttpContext.Current.User.Identity.Name;
Content = "the content";
PubDate = DateTime.UtcNow;
LastModified = DateTime.UtcNow;
Categories = new string[0];
Comments = new List<Comment>();
IsPublished = true;
}
[XmlRpcMember("postid")]
public string ID { get; set; }
[XmlRpcMember("title")]
public string Title { get; set; }
[XmlRpcMember("author")]
public string Author { get; set; }
[XmlRpcMember("wp_slug")]
public string Slug { get; set; }
[XmlRpcMember("description")]
public string Content { get; set; }
[XmlRpcMember("dateCreated")]
public DateTime PubDate { get; set; }
[XmlRpcMember("dateModified")]
public DateTime LastModified { get; set; }
public bool IsPublished { get; set; }
[XmlRpcMember("categories")]
public string[] Categories { get; set; }
public List<Comment> Comments { get; private set; }
public Uri AbsoluteUrl
{
get
{
Uri requestUrl = HttpContext.Current.Request.Url;
return new Uri(requestUrl.Scheme + "://" + requestUrl.Authority + Url, UriKind.Absolute);
}
}
public Uri Url
{
get
{
return new Uri(VirtualPathUtility.ToAbsolute("~/post/" + Slug), UriKind.Relative);
}
}
public bool AreCommentsOpen(HttpContextBase context)
{
return PubDate > DateTime.UtcNow.AddDays(-Blog.DaysToComment) || context.User.Identity.IsAuthenticated;
}
public int CountApprovedComments(HttpContextBase context)
{
return (Blog.ModerateComments && !context.User.Identity.IsAuthenticated) ? this.Comments.Count(c => c.IsApproved) : this.Comments.Count;
}
}

+ 0
- 178
Sevomin.News/app_code/code/Storage.cs View File

@ -1,178 +0,0 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Web;
using System.Web.Hosting;
using System.Xml.Linq;
using System.Xml.XPath;
public static class Storage
{
private static string _folder = HostingEnvironment.MapPath("~/posts/");
public static List<Post> GetAllPosts()
{
if (HttpRuntime.Cache["posts"] == null)
LoadPosts();
if (HttpRuntime.Cache["posts"] != null)
{
return (List<Post>)HttpRuntime.Cache["posts"];
}
return new List<Post>();
}
public static void Save(Post post)
{
string file = Path.Combine(_folder, post.ID + ".xml");
post.LastModified = DateTime.UtcNow;
XDocument doc = new XDocument(
new XElement("post",
new XElement("title", post.Title),
new XElement("slug", post.Slug),
new XElement("author", post.Author),
new XElement("pubDate", post.PubDate.ToString("yyyy-MM-dd HH:mm:ss")),
new XElement("lastModified", post.LastModified.ToString("yyyy-MM-dd HH:mm:ss")),
new XElement("content", post.Content),
new XElement("ispublished", post.IsPublished),
new XElement("categories", string.Empty),
new XElement("comments", string.Empty)
));
XElement categories = doc.XPathSelectElement("post/categories");
foreach (string category in post.Categories)
{
categories.Add(new XElement("category", category));
}
XElement comments = doc.XPathSelectElement("post/comments");
foreach (Comment comment in post.Comments)
{
comments.Add(
new XElement("comment",
new XElement("author", comment.Author),
new XElement("email", comment.Email),
new XElement("website", comment.Website),
new XElement("ip", comment.Ip),
new XElement("userAgent", comment.UserAgent),
new XElement("date", comment.PubDate.ToString("yyyy-MM-dd HH:m:ss")),
new XElement("content", comment.Content),
new XAttribute("isAdmin", comment.IsAdmin),
new XAttribute("isApproved", comment.IsApproved),
new XAttribute("id", comment.ID)
));
}
if (!File.Exists(file)) // New post
{
var posts = GetAllPosts();
posts.Insert(0, post);
posts.Sort((p1, p2) => p2.PubDate.CompareTo(p1.PubDate));
HttpRuntime.Cache.Insert("posts", posts);
}
doc.Save(file);
}
public static void Delete(Post post)
{
var posts = GetAllPosts();
string file = Path.Combine(_folder, post.ID + ".xml");
File.Delete(file);
posts.Remove(post);
}
private static void LoadPosts()
{
if (!Directory.Exists(_folder))
Directory.CreateDirectory(_folder);
List<Post> list = new List<Post>();
foreach (string file in Directory.GetFiles(_folder, "*.xml", SearchOption.TopDirectoryOnly))
{
XElement doc = XElement.Load(file);
Post post = new Post()
{
ID = Path.GetFileNameWithoutExtension(file),
Title = ReadValue(doc, "title"),
Author = ReadValue(doc, "author"),
Content = ReadValue(doc, "content"),
Slug = ReadValue(doc, "slug").ToLowerInvariant(),
PubDate = DateTime.Parse(ReadValue(doc, "pubDate")),
LastModified = DateTime.Parse(ReadValue(doc, "lastModified", DateTime.Now.ToString())),
IsPublished = bool.Parse(ReadValue(doc, "ispublished", "true")),
};
LoadCategories(post, doc);
LoadComments(post, doc);
list.Add(post);
}
if (list.Count > 0)
{
list.Sort((p1, p2) => p2.PubDate.CompareTo(p1.PubDate));
HttpRuntime.Cache.Insert("posts", list);
}
}
private static void LoadCategories(Post post, XElement doc)
{
XElement categories = doc.Element("categories");
if (categories == null)
return;
List<string> list = new List<string>();
foreach (var node in categories.Elements("category"))
{
list.Add(node.Value);
}
post.Categories = list.ToArray();
}
private static void LoadComments(Post post, XElement doc)
{
var comments = doc.Element("comments");
if (comments == null)
return;
foreach (var node in comments.Elements("comment"))
{
Comment comment = new Comment()
{
ID = ReadAttribute(node, "id"),
Author = ReadValue(node, "author"),
Email = ReadValue(node, "email"),
Website = ReadValue(node, "website"),
Ip = ReadValue(node, "ip"),
UserAgent = ReadValue(node, "userAgent"),
IsAdmin = bool.Parse(ReadAttribute(node, "isAdmin", "false")),
IsApproved = bool.Parse(ReadAttribute(node, "isApproved", "true")),
Content = ReadValue(node, "content").Replace("\n", "<br />"),
PubDate = DateTime.Parse(ReadValue(node, "date", "2000-01-01")),
};
post.Comments.Add(comment);
}
}
private static string ReadValue(XElement doc, XName name, string defaultValue = "")
{
if (doc.Element(name) != null)
return doc.Element(name).Value;
return defaultValue;
}
private static string ReadAttribute(XElement element, XName name, string defaultValue = "")
{
if (element.Attribute(name) != null)
return element.Attribute(name).Value;
return defaultValue;
}
}

+ 0
- 187
Sevomin.News/app_code/handlers/CommentHandler.cs View File

@ -1,187 +0,0 @@
using System;
using System.Configuration;
using System.Linq;
using System.Net.Mail;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.WebPages;
public class CommentHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
Post post = Storage.GetAllPosts().SingleOrDefault(p => p.ID == context.Request["postId"]);
if (post == null)
throw new HttpException(404, "The post does not exist");
string mode = context.Request["mode"];
if (mode == "save" && context.Request.HttpMethod == "POST" && post.AreCommentsOpen(new HttpContextWrapper(context)) && Blog.MatchesUniqueId(context))
{
Save(context, post);
}
else if (mode == "delete")
{
Delete(context, post);
}
else if (mode == "approve")
{
Approve(context, post);
}
}
private static void Save(HttpContext context, Post post)
{
string name = context.Request.Form["name"];
string email = context.Request.Form["email"];
string website = context.Request.Form["website"];
string content = context.Request.Form["content"];
Validate(name, email, content);
Comment comment = new Comment()
{
Author = name.Trim(),
Email = email.Trim(),
Website = GetUrl(website),
Ip = context.Request.UserHostAddress,
UserAgent = context.Request.UserAgent,
IsAdmin = context.User.Identity.IsAuthenticated,
Content = HttpUtility.HtmlEncode(content.Trim()).Replace("\n", "<br />"),
IsApproved = !Blog.ModerateComments,
};
post.Comments.Add(comment);
Storage.Save(post);
if (!context.User.Identity.IsAuthenticated)
System.Threading.ThreadPool.QueueUserWorkItem((s) => SendEmail(comment, post, context.Request));
RenderComment(context, comment);
}
private static void RenderComment(HttpContext context, Comment comment)
{
var page = (WebPage)WebPageBase.CreateInstanceFromVirtualPath("~/themes/" + Blog.Theme + "/comment.cshtml");
page.Context = new HttpContextWrapper(context);
page.ExecutePageHierarchy(new WebPageContext(page.Context, page: null, model: comment), context.Response.Output);
}
private static void SendEmail(Comment comment, Post post, HttpRequest request)
{
try
{
MailMessage mail = new MailMessage();
mail.From = new MailAddress(comment.Email, comment.Author);
mail.ReplyToList.Add(comment.Email);
mail.To.Add(ConfigurationManager.AppSettings.Get("blog:email"));
mail.Subject = "Blog comment: " + post.Title;
mail.IsBodyHtml = true;
string absoluteUrl = request.Url.Scheme + "://" + request.Url.Authority;
string deleteUrl = absoluteUrl + request.RawUrl + "?postId=" + post.ID + "&commentId=" + comment.ID + "&mode=delete";
string approveUrl = absoluteUrl + request.RawUrl + "?postId=" + post.ID + "&commentId=" + comment.ID + "&mode=approve";
mail.Body = "<div style=\"font: 11pt/1.5 calibri, arial;\">" +
comment.Author + " on <a href=\"" + absoluteUrl + post.Url + "\">" + post.Title + "</a>:<br /><br />" +
comment.Content + "<br /><br />" +
(Blog.ModerateComments ? "<a href=\"" + approveUrl + "\">Approve comment</a> | " : string.Empty) +
"<a href=\"" + deleteUrl + "\">Delete comment</a>" +
"<br /><br /><hr />" +
"Website: " + comment.Website + "<br />" +
"E-mail: " + comment.Email + "<br />" +
"IP-address: " + comment.Ip +
"</div>";
SmtpClient client = new SmtpClient();
client.Send(mail);
}
catch
{ }
}
private static void Validate(string name, string email, string content)
{
bool isName = !string.IsNullOrEmpty(name);
bool isMail = !string.IsNullOrEmpty(email) && Regex.IsMatch(email, @"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$");
bool isContent = !string.IsNullOrEmpty(content);
if (!isName || !isMail || !isContent)
{
if (!isName)
HttpContext.Current.Response.Status = "403 Please enter a valid name";
else if (!isMail)
HttpContext.Current.Response.Status = "403 Please enter a valid e-mail address";
else if (!isContent)
HttpContext.Current.Response.Status = "403 Please enter a valid comment";
HttpContext.Current.Response.End();
}
}
private static string GetUrl(string website)
{
if (!website.Contains("://"))
website = "http://" + website;
Uri url;
if (Uri.TryCreate(website, UriKind.Absolute, out url))
return url.ToString();
return string.Empty;
}
private static void Delete(HttpContext context, Post post)
{
if (!context.User.Identity.IsAuthenticated)
throw new HttpException(403, "No access");
string commentId = context.Request["commentId"];
Comment comment = post.Comments.SingleOrDefault(c => c.ID == commentId);
if (comment != null)
{
post.Comments.Remove(comment);
Storage.Save(post);
}
else
{
throw new HttpException(404, "Comment could not be found");
}
if (context.Request.HttpMethod == "GET")
{
context.Response.Redirect(post.AbsoluteUrl.ToString() + "#comments", true);
}
}
private static void Approve(HttpContext context, Post post)
{
if (!context.User.Identity.IsAuthenticated)
throw new HttpException(403, "No access");
string commentId = context.Request["commentId"];
Comment comment = post.Comments.SingleOrDefault(c => c.ID == commentId);
if (comment != null)
{
comment.IsApproved = true;
Storage.Save(post);
}
else
{
throw new HttpException(404, "Comment could not be found");
}
if (context.Request.HttpMethod == "GET")
{
context.Response.Redirect(post.AbsoluteUrl.ToString() + "#comments", true);
}
}
public bool IsReusable
{
get { return false; }
}
}

+ 0
- 59
Sevomin.News/app_code/handlers/FeedHandler.cs View File

@ -1,59 +0,0 @@
using System;
using System.Collections.Generic;
using System.ServiceModel.Syndication;
using System.Web;
using System.Xml;
public class FeedHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
SyndicationFeed feed = new SyndicationFeed()
{
Title = new TextSyndicationContent(Blog.Title),
Description = new TextSyndicationContent("Latest blog posts"),
BaseUri = new Uri(context.Request.Url.Scheme + "://" + context.Request.Url.Authority),
Items = GetItems(),
};
feed.Links.Add(new SyndicationLink(feed.BaseUri));
using (var writer = new XmlTextWriter(context.Response.Output))
{
var formatter = GetFormatter(context, feed);
formatter.WriteTo(writer);
}
context.Response.ContentType = "text/xml";
}
private IEnumerable<SyndicationItem> GetItems()
{
foreach (Post p in Blog.GetPosts(10))
{
var item = new SyndicationItem(p.Title, p.Content, p.AbsoluteUrl, p.AbsoluteUrl.ToString(), p.LastModified);
item.Authors.Add(new SyndicationPerson("", p.Author, ""));
yield return item;
}
}
private SyndicationFeedFormatter GetFormatter(HttpContext context, SyndicationFeed feed)
{
string path = context.Request.Path.Trim('/');
int index = path.LastIndexOf('/');
if (index > -1 && path.Substring(index + 1) == "atom")
{
context.Response.ContentType = "application/atom+xml";
return new Atom10FeedFormatter(feed);
}
context.Response.ContentType = "application/rss+xml";
return new Rss20FeedFormatter(feed);
}
public bool IsReusable
{
get { return false; }
}
}

+ 0
- 188
Sevomin.News/app_code/handlers/MetaWeblogHandler.cs View File

@ -1,188 +0,0 @@
using CookComputing.XmlRpc;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Web.Security;
public interface IMetaWeblog
{
#region MetaWeblog API
[XmlRpcMethod("metaWeblog.newPost")]
string AddPost(string blogid, string username, string password, Post post, bool publish);
[XmlRpcMethod("metaWeblog.editPost")]
bool UpdatePost(string postid, string username, string password, Post post, bool publish);
[XmlRpcMethod("metaWeblog.getPost")]
object GetPost(string postid, string username, string password);
[XmlRpcMethod("metaWeblog.getCategories")]
object[] GetCategories(string blogid, string username, string password);
[XmlRpcMethod("metaWeblog.getRecentPosts")]
object[] GetRecentPosts(string blogid, string username, string password, int numberOfPosts);
[XmlRpcMethod("metaWeblog.newMediaObject")]
object NewMediaObject(string blogid, string username, string password, MediaObject mediaObject);
#endregion
#region Blogger API
[XmlRpcMethod("blogger.deletePost")]
[return: XmlRpcReturnValue(Description = "Returns true.")]
bool DeletePost(string key, string postid, string username, string password, bool publish);
[XmlRpcMethod("blogger.getUsersBlogs")]
object[] GetUsersBlogs(string key, string username, string password);
#endregion
}
public class MetaWeblogHandler : XmlRpcService, IMetaWeblog
{
string IMetaWeblog.AddPost(string blogid, string username, string password, Post post, bool publish)
{
ValidateUser(username, password);
post.Slug = PostHandler.CreateSlug(post.Title);
post.IsPublished = publish;
Storage.Save(post);
return post.ID;
}
bool IMetaWeblog.UpdatePost(string postid, string username, string password, Post post, bool publish)
{
ValidateUser(username, password);
Post match = Storage.GetAllPosts().FirstOrDefault(p => p.ID == postid);
if (match != null)
{
match.Title = post.Title;
match.Content = post.Content;
match.Slug = post.Slug;
match.Categories = post.Categories;
match.IsPublished = publish;
match.PubDate = post.PubDate;
Storage.Save(match);
}
return match != null;
}
bool IMetaWeblog.DeletePost(string key, string postid, string username, string password, bool publish)
{
ValidateUser(username, password);
Post post = Storage.GetAllPosts().FirstOrDefault(p => p.ID == postid);
if (post != null)
{
Storage.Delete(post);
}
return post != null;
}
object IMetaWeblog.GetPost(string postid, string username, string password)
{
ValidateUser(username, password);
Post post = Storage.GetAllPosts().FirstOrDefault(p => p.ID == postid);
if (post == null)
throw new XmlRpcFaultException(0, "Post does not exist");
return new
{
description = post.Content,
title = post.Title,
dateCreated = post.PubDate,
wp_slug = post.Slug,
categories = post.Categories.ToArray(),
postid = post.ID
};
}
object[] IMetaWeblog.GetRecentPosts(string blogid, string username, string password, int numberOfPosts)
{
ValidateUser(username, password);
List<object> list = new List<object>();
foreach (var post in Storage.GetAllPosts().Take(numberOfPosts))
{
var info = new
{
description = post.Content,
title = post.Title,
dateCreated = post.PubDate,
wp_slug = post.Slug,
postid = post.ID
};
list.Add(info);
}
return list.ToArray();
}
object[] IMetaWeblog.GetCategories(string blogid, string username, string password)
{
ValidateUser(username, password);
var list = new List<object>();
var categories = Storage.GetAllPosts().SelectMany(p => p.Categories);
foreach (string category in categories.Distinct())
{
list.Add(new { title = category });
}
return list.ToArray();
}
object IMetaWeblog.NewMediaObject(string blogid, string username, string password, MediaObject media)
{
ValidateUser(username, password);
string path = Blog.SaveFileToDisk(media.bits, Path.GetExtension(media.name));
return new { url = path };
}
object[] IMetaWeblog.GetUsersBlogs(string key, string username, string password)
{
ValidateUser(username, password);
return new[]
{
new
{
blogid = "1",
blogName = ConfigurationManager.AppSettings.Get("blog:name"),
url = Context.Request.Url.Scheme + "://" + Context.Request.Url.Authority
}
};
}
private void ValidateUser(string username, string password)
{
if (!FormsAuthentication.Authenticate(username, password))
{
throw new XmlRpcFaultException(0, "User is not valid!");
}
}
}
[XmlRpcMissingMapping(MappingAction.Ignore)]
public struct MediaObject
{
public string name;
public string type;
public byte[] bits;
}

+ 0
- 60
Sevomin.News/app_code/handlers/MinifyHandler.cs View File

@ -1,60 +0,0 @@
using Microsoft.Ajax.Utilities;
using System;
using System.IO;
using System.Web;
using System.Web.Caching;
public class MinifyHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string file = context.Server.MapPath(context.Request.CurrentExecutionFilePath);
string ext = Path.GetExtension(file);
if (context.IsDebuggingEnabled)
{
context.Response.TransmitFile(file);
}
else
{
Minify(context.Response, file, ext);
}
SetHeaders(context.Response, file, ext);
}
private static void SetHeaders(HttpResponse response, string file, string ext)
{
response.ContentType = ext == ".css" ? "text/css" : "text/javascript";
response.Cache.SetLastModified(File.GetLastWriteTimeUtc(file));
response.Cache.SetValidUntilExpires(true);
response.Cache.SetExpires(DateTime.Now.AddYears(1));
response.Cache.SetCacheability(HttpCacheability.ServerAndPrivate);
response.Cache.SetVaryByCustom("Accept-Encoding");
response.AddCacheDependency(new CacheDependency(file));
}
private static void Minify(HttpResponse response, string file, string ext)
{
string content = File.ReadAllText(file);
Minifier minifier = new Minifier();
if (ext == ".css")
{
CssSettings settings = new CssSettings() { CommentMode = CssComment.None };
response.Write(minifier.MinifyStyleSheet(content, settings));
}
else if (ext == ".js")
{
CodeSettings settings = new CodeSettings() { PreserveImportantComments = false };
response.Write(minifier.MinifyJavaScript(content, settings));
}
}
public bool IsReusable
{
get { return false; }
}
}

+ 0
- 117
Sevomin.News/app_code/handlers/PostHandler.cs View File

@ -1,117 +0,0 @@
using System;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Web;
public class PostHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
if (!context.User.Identity.IsAuthenticated || Blog.MatchesUniqueId(context))
throw new HttpException(403, "No access");
string mode = context.Request.QueryString["mode"];
string id = context.Request.Form["id"];
if (mode == "delete")
{
DeletePost(id);
}
else if (mode == "save")
{
EditPost(id, context.Request.Form["title"], context.Request.Form["content"], bool.Parse(context.Request.Form["isPublished"]), context.Request.Form["categories"].Split(','));
}
}
private void DeletePost(string id)
{
Post post = Storage.GetAllPosts().FirstOrDefault(p => p.ID == id);
if (post == null)
throw new HttpException(404, "The post does not exist");
Storage.Delete(post);
}
private void EditPost(string id, string title, string content, bool isPublished, string[] categories)
{
Post post = Storage.GetAllPosts().FirstOrDefault(p => p.ID == id);
if (post != null)
{
post.Title = title;
post.Content = content;
post.Categories = categories;
}
else
{
post = new Post() { Title = title, Content = content, Slug = CreateSlug(title), Categories = categories };
HttpContext.Current.Response.Write(post.Url);
}
SaveFilesToDisk(post);
post.IsPublished = isPublished;
Storage.Save(post);
}
private void SaveFilesToDisk(Post post)
{
foreach (Match match in Regex.Matches(post.Content, "(src|href)=\"(data:([^\"]+))\""))
{
string extension = Regex.Match(match.Value, "data:([^/]+)/([a-z]+);base64").Groups[2].Value;
byte[] bytes = ConvertToBytes(match.Groups[2].Value);
string path = Blog.SaveFileToDisk(bytes, extension);
string value = string.Format("src=\"{0}\" alt=\"\" /", path);
if (match.Groups[1].Value == "href")
value = string.Format("href=\"{0}\"", path);
post.Content = post.Content.Replace(match.Value, value);
}
}
private byte[] ConvertToBytes(string base64)
{
int index = base64.IndexOf("base64,", StringComparison.Ordinal) + 7;
return Convert.FromBase64String(base64.Substring(index));
}
public static string CreateSlug(string title)
{
title = title.ToLowerInvariant().Replace(" ", "-");
title = RemoveDiacritics(title);
title = Regex.Replace(title, @"([^0-9a-z-])", string.Empty);
if (Storage.GetAllPosts().Any(p => string.Equals(p.Slug, title)))
throw new HttpException(409, "Already in use");
return title.ToLowerInvariant();
}
static string RemoveDiacritics(string text)
{
var normalizedString = text.Normalize(NormalizationForm.FormD);
var stringBuilder = new StringBuilder();
foreach (var c in normalizedString)
{
var unicodeCategory = CharUnicodeInfo.GetUnicodeCategory(c);
if (unicodeCategory != UnicodeCategory.NonSpacingMark)
{
stringBuilder.Append(c);
}
}
return stringBuilder.ToString().Normalize(NormalizationForm.FormC);
}
public bool IsReusable
{
get { return false; }
}
}

+ 0
- 94
Sevomin.News/css/admin.css View File

@ -1,94 +0,0 @@
@media (max-width: 1024px) {
.nav > li {
display: inline-block;
}
.nav > li button, #ispublished {
padding-left: 8px;
padding-right: 8px;
}
}
.admin {
margin-top: 50px;
}
#admin {
font: 12pt arial;
}
#admin .navbar-inner {
min-height: 0;
padding-top: 8px;
}
#admin form {
position: absolute;
top: 8px;
right: 1em;
margin: 0;
}
#admin .nav {
margin-left: 1em;
}
#admin button:focus {
outline: 0;
white-space: nowrap;
}
#ispublished {
display: none;
position: relative;
top: 7px;
left: 10px;
}
#ispublished label {
display: inline;
position: relative;
left: 4px;
font-weight: normal;
}
#admin #tools {
position: relative;
top: 5px;
left: 10px;
margin: 0 1em;
display: none;
}
#admin #tools a {
font-size: 14px;
font-weight: bold;
padding: 0 9px;
}
#admin #tools div:not(:last-child) {
border-right: 1px solid gray;
}
#admin aside {
position: absolute;
top: 4em;
text-align: center;
width: 100%;
display: none;
}
#admin aside .alert {
display: inline-block;
padding: 8px 1em;
}
[contenteditable] {
outline: thin dashed #ccc;
width: 100%;
display: inline-block;
}
[contenteditable] img {
cursor: move;
}

+ 0
- 1
Sevomin.News/css/bootstrap-theme.min.css
File diff suppressed because it is too large
View File


+ 0
- 839
Sevomin.News/css/bootstrap.min.css
File diff suppressed because it is too large
View File


BIN
Sevomin.News/css/fonts/glyphicons-halflings-regular.eot View File


+ 0
- 229
Sevomin.News/css/fonts/glyphicons-halflings-regular.svg View File

@ -1,229 +0,0 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata></metadata>
<defs>
<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
<font-face units-per-em="1200" ascent="960" descent="-240" />
<missing-glyph horiz-adv-x="500" />
<glyph />
<glyph />
<glyph unicode="&#xd;" />
<glyph unicode=" " />
<glyph unicode="*" d="M100 500v200h259l-183 183l141 141l183 -183v259h200v-259l183 183l141 -141l-183 -183h259v-200h-259l183 -183l-141 -141l-183 183v-259h-200v259l-183 -183l-141 141l183 183h-259z" />
<glyph unicode="+" d="M0 400v300h400v400h300v-400h400v-300h-400v-400h-300v400h-400z" />
<glyph unicode="&#xa0;" />
<glyph unicode="&#x2000;" horiz-adv-x="652" />
<glyph unicode="&#x2001;" horiz-adv-x="1304" />
<glyph unicode="&#x2002;" horiz-adv-x="652" />
<glyph unicode="&#x2003;" horiz-adv-x="1304" />
<glyph unicode="&#x2004;" horiz-adv-x="434" />
<glyph unicode="&#x2005;" horiz-adv-x="326" />
<glyph unicode="&#x2006;" horiz-adv-x="217" />
<glyph unicode="&#x2007;" horiz-adv-x="217" />
<glyph unicode="&#x2008;" horiz-adv-x="163" />
<glyph unicode="&#x2009;" horiz-adv-x="260" />
<glyph unicode="&#x200a;" horiz-adv-x="72" />
<glyph unicode="&#x202f;" horiz-adv-x="260" />
<glyph unicode="&#x205f;" horiz-adv-x="326" />
<glyph unicode="&#x20ac;" d="M100 500l100 100h113q0 47 5 100h-218l100 100h135q37 167 112 257q117 141 297 141q242 0 354 -189q60 -103 66 -209h-181q0 55 -25.5 99t-63.5 68t-75 36.5t-67 12.5q-24 0 -52.5 -10t-62.5 -32t-65.5 -67t-50.5 -107h379l-100 -100h-300q-6 -46 -6 -100h406l-100 -100 h-300q9 -74 33 -132t52.5 -91t62 -54.5t59 -29t46.5 -7.5q29 0 66 13t75 37t63.5 67.5t25.5 96.5h174q-31 -172 -128 -278q-107 -117 -274 -117q-205 0 -324 158q-36 46 -69 131.5t-45 205.5h-217z" />
<glyph unicode="&#x2212;" d="M200 400h900v300h-900v-300z" />
<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
<glyph unicode="&#x2601;" d="M-14 494q0 -80 56.5 -137t135.5 -57h750q120 0 205 86.5t85 207.5t-85 207t-205 86q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5z" />
<glyph unicode="&#x2709;" d="M0 100l400 400l200 -200l200 200l400 -400h-1200zM0 300v600l300 -300zM0 1100l600 -603l600 603h-1200zM900 600l300 300v-600z" />
<glyph unicode="&#x270f;" d="M-13 -13l333 112l-223 223zM187 403l214 -214l614 614l-214 214zM887 1103l214 -214l99 92q13 13 13 32.5t-13 33.5l-153 153q-15 13 -33 13t-33 -13z" />
<glyph unicode="&#xe001;" d="M0 1200h1200l-500 -550v-550h300v-100h-800v100h300v550z" />
<glyph unicode="&#xe002;" d="M14 84q18 -55 86 -75.5t147 5.5q65 21 109 69t44 90v606l600 155v-521q-64 16 -138 -7q-79 -26 -122.5 -83t-25.5 -111q18 -55 86 -75.5t147 4.5q70 23 111.5 63.5t41.5 95.5v881q0 10 -7 15.5t-17 2.5l-752 -193q-10 -3 -17 -12.5t-7 -19.5v-689q-64 17 -138 -7 q-79 -25 -122.5 -82t-25.5 -112z" />
<glyph unicode="&#xe003;" d="M23 693q0 200 142 342t342 142t342 -142t142 -342q0 -142 -78 -261l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 693q0 -136 97 -233t234 -97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233z" />
<glyph unicode="&#xe005;" d="M100 784q0 64 28 123t73 100.5t104.5 64t119 20.5t120 -38.5t104.5 -104.5q48 69 109.5 105t121.5 38t118.5 -20.5t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-149.5 152.5t-126.5 127.5 t-94 124.5t-33.5 117.5z" />
<glyph unicode="&#xe006;" d="M-72 800h479l146 400h2l146 -400h472l-382 -278l145 -449l-384 275l-382 -275l146 447zM168 71l2 1z" />
<glyph unicode="&#xe007;" d="M-72 800h479l146 400h2l146 -400h472l-382 -278l145 -449l-384 275l-382 -275l146 447zM168 71l2 1zM237 700l196 -142l-73 -226l192 140l195 -141l-74 229l193 140h-235l-77 211l-78 -211h-239z" />
<glyph unicode="&#xe008;" d="M0 0v143l400 257v100q-37 0 -68.5 74.5t-31.5 125.5v200q0 124 88 212t212 88t212 -88t88 -212v-200q0 -51 -31.5 -125.5t-68.5 -74.5v-100l400 -257v-143h-1200z" />
<glyph unicode="&#xe009;" d="M0 0v1100h1200v-1100h-1200zM100 100h100v100h-100v-100zM100 300h100v100h-100v-100zM100 500h100v100h-100v-100zM100 700h100v100h-100v-100zM100 900h100v100h-100v-100zM300 100h600v400h-600v-400zM300 600h600v400h-600v-400zM1000 100h100v100h-100v-100z M1000 300h100v100h-100v-100zM1000 500h100v100h-100v-100zM1000 700h100v100h-100v-100zM1000 900h100v100h-100v-100z" />
<glyph unicode="&#xe010;" d="M0 50v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5zM0 650v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5zM600 50v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5zM600 650v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5z" />
<glyph unicode="&#xe011;" d="M0 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM0 450v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5zM0 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5 t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 450v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5 v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 450v200q0 21 14.5 35.5t35.5 14.5h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5z" />
<glyph unicode="&#xe012;" d="M0 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM0 450q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v200q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5 t-14.5 -35.5v-200zM0 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 50v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5 t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5zM400 450v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5zM400 850v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5 v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5z" />
<glyph unicode="&#xe013;" d="M29 454l419 -420l818 820l-212 212l-607 -607l-206 207z" />
<glyph unicode="&#xe014;" d="M106 318l282 282l-282 282l212 212l282 -282l282 282l212 -212l-282 -282l282 -282l-212 -212l-282 282l-282 -282z" />
<glyph unicode="&#xe015;" d="M23 693q0 200 142 342t342 142t342 -142t142 -342q0 -142 -78 -261l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 693q0 -136 97 -233t234 -97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233zM300 600v200h100v100h200v-100h100v-200h-100v-100h-200v100h-100z" />
<glyph unicode="&#xe016;" d="M23 694q0 200 142 342t342 142t342 -142t142 -342q0 -141 -78 -262l300 -299q7 -7 7 -18t-7 -18l-109 -109q-8 -8 -18 -8t-18 8l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 694q0 -136 97 -233t234 -97t233.5 97t96.5 233t-96.5 233t-233.5 97t-234 -97 t-97 -233zM300 601h400v200h-400v-200z" />
<glyph unicode="&#xe017;" d="M23 600q0 183 105 331t272 210v-166q-103 -55 -165 -155t-62 -220q0 -177 125 -302t302 -125t302 125t125 302q0 120 -62 220t-165 155v166q167 -62 272 -210t105 -331q0 -118 -45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5 zM500 750q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v400q0 21 -14.5 35.5t-35.5 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-400z" />
<glyph unicode="&#xe018;" d="M100 1h200v300h-200v-300zM400 1v500h200v-500h-200zM700 1v800h200v-800h-200zM1000 1v1200h200v-1200h-200z" />
<glyph unicode="&#xe019;" d="M26 601q0 -33 6 -74l151 -38l2 -6q14 -49 38 -93l3 -5l-80 -134q45 -59 105 -105l133 81l5 -3q45 -26 94 -39l5 -2l38 -151q40 -5 74 -5q27 0 74 5l38 151l6 2q46 13 93 39l5 3l134 -81q56 44 104 105l-80 134l3 5q24 44 39 93l1 6l152 38q5 40 5 74q0 28 -5 73l-152 38 l-1 6q-16 51 -39 93l-3 5l80 134q-44 58 -104 105l-134 -81l-5 3q-45 25 -93 39l-6 1l-38 152q-40 5 -74 5q-27 0 -74 -5l-38 -152l-5 -1q-50 -14 -94 -39l-5 -3l-133 81q-59 -47 -105 -105l80 -134l-3 -5q-25 -47 -38 -93l-2 -6l-151 -38q-6 -48 -6 -73zM385 601 q0 88 63 151t152 63t152 -63t63 -151q0 -89 -63 -152t-152 -63t-152 63t-63 152z" />
<glyph unicode="&#xe020;" d="M100 1025v50q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-50q0 -11 -7 -18t-18 -7h-1050q-11 0 -18 7t-7 18zM200 100v800h900v-800q0 -41 -29.5 -71t-70.5 -30h-700q-41 0 -70.5 30 t-29.5 71zM300 100h100v700h-100v-700zM500 100h100v700h-100v-700zM500 1100h300v100h-300v-100zM700 100h100v700h-100v-700zM900 100h100v700h-100v-700z" />
<glyph unicode="&#xe021;" d="M1 601l656 644l644 -644h-200v-600h-300v400h-300v-400h-300v600h-200z" />
<glyph unicode="&#xe022;" d="M100 25v1150q0 11 7 18t18 7h475v-500h400v-675q0 -11 -7 -18t-18 -7h-850q-11 0 -18 7t-7 18zM700 800v300l300 -300h-300z" />
<glyph unicode="&#xe023;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM500 500v400h100 v-300h200v-100h-300z" />
<glyph unicode="&#xe024;" d="M-100 0l431 1200h209l-21 -300h162l-20 300h208l431 -1200h-538l-41 400h-242l-40 -400h-539zM488 500h224l-27 300h-170z" />
<glyph unicode="&#xe025;" d="M0 0v400h490l-290 300h200v500h300v-500h200l-290 -300h490v-400h-1100zM813 200h175v100h-175v-100z" />
<glyph unicode="&#xe026;" d="M1 600q0 122 47.5 233t127.5 191t191 127.5t233 47.5t233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233zM188 600q0 -170 121 -291t291 -121t291 121t121 291t-121 291t-291 121 t-291 -121t-121 -291zM350 600h150v300h200v-300h150l-250 -300z" />
<glyph unicode="&#xe027;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM350 600l250 300 l250 -300h-150v-300h-200v300h-150z" />
<glyph unicode="&#xe028;" d="M0 25v475l200 700h800l199 -700l1 -475q0 -11 -7 -18t-18 -7h-1150q-11 0 -18 7t-7 18zM200 500h200l50 -200h300l50 200h200l-97 500h-606z" />
<glyph unicode="&#xe029;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM500 397v401 l297 -200z" />
<glyph unicode="&#xe030;" d="M23 600q0 -118 45.5 -224.5t123 -184t184 -123t224.5 -45.5t224.5 45.5t184 123t123 184t45.5 224.5h-150q0 -177 -125 -302t-302 -125t-302 125t-125 302t125 302t302 125q136 0 246 -81l-146 -146h400v400l-145 -145q-157 122 -355 122q-118 0 -224.5 -45.5t-184 -123 t-123 -184t-45.5 -224.5z" />
<glyph unicode="&#xe031;" d="M23 600q0 118 45.5 224.5t123 184t184 123t224.5 45.5q198 0 355 -122l145 145v-400h-400l147 147q-112 80 -247 80q-177 0 -302 -125t-125 -302h-150zM100 0v400h400l-147 -147q112 -80 247 -80q177 0 302 125t125 302h150q0 -118 -45.5 -224.5t-123 -184t-184 -123 t-224.5 -45.5q-198 0 -355 122z" />
<glyph unicode="&#xe032;" d="M100 0h1100v1200h-1100v-1200zM200 100v900h900v-900h-900zM300 200v100h100v-100h-100zM300 400v100h100v-100h-100zM300 600v100h100v-100h-100zM300 800v100h100v-100h-100zM500 200h500v100h-500v-100zM500 400v100h500v-100h-500zM500 600v100h500v-100h-500z M500 800v100h500v-100h-500z" />
<glyph unicode="&#xe033;" d="M0 100v600q0 41 29.5 70.5t70.5 29.5h100v200q0 82 59 141t141 59h300q82 0 141 -59t59 -141v-200h100q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-900q-41 0 -70.5 29.5t-29.5 70.5zM400 800h300v150q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 -35.5v-150z" />
<glyph unicode="&#xe034;" d="M100 0v1100h100v-1100h-100zM300 400q60 60 127.5 84t127.5 17.5t122 -23t119 -30t110 -11t103 42t91 120.5v500q-40 -81 -101.5 -115.5t-127.5 -29.5t-138 25t-139.5 40t-125.5 25t-103 -29.5t-65 -115.5v-500z" />
<glyph unicode="&#xe035;" d="M0 275q0 -11 7 -18t18 -7h50q11 0 18 7t7 18v300q0 127 70.5 231.5t184.5 161.5t245 57t245 -57t184.5 -161.5t70.5 -231.5v-300q0 -11 7 -18t18 -7h50q11 0 18 7t7 18v300q0 116 -49.5 227t-131 192.5t-192.5 131t-227 49.5t-227 -49.5t-192.5 -131t-131 -192.5 t-49.5 -227v-300zM200 20v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14zM800 20v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14z" />
<glyph unicode="&#xe036;" d="M0 400h300l300 -200v800l-300 -200h-300v-400zM688 459l141 141l-141 141l71 71l141 -141l141 141l71 -71l-141 -141l141 -141l-71 -71l-141 141l-141 -141z" />
<glyph unicode="&#xe037;" d="M0 400h300l300 -200v800l-300 -200h-300v-400zM700 857l69 53q111 -135 111 -310q0 -169 -106 -302l-67 54q86 110 86 248q0 146 -93 257z" />
<glyph unicode="&#xe038;" d="M0 401v400h300l300 200v-800l-300 200h-300zM702 858l69 53q111 -135 111 -310q0 -170 -106 -303l-67 55q86 110 86 248q0 145 -93 257zM889 951l7 -8q123 -151 123 -344q0 -189 -119 -339l-7 -8l81 -66l6 8q142 178 142 405q0 230 -144 408l-6 8z" />
<glyph unicode="&#xe039;" d="M0 0h500v500h-200v100h-100v-100h-200v-500zM0 600h100v100h400v100h100v100h-100v300h-500v-600zM100 100v300h300v-300h-300zM100 800v300h300v-300h-300zM200 200v100h100v-100h-100zM200 900h100v100h-100v-100zM500 500v100h300v-300h200v-100h-100v-100h-200v100 h-100v100h100v200h-200zM600 0v100h100v-100h-100zM600 1000h100v-300h200v-300h300v200h-200v100h200v500h-600v-200zM800 800v300h300v-300h-300zM900 0v100h300v-100h-300zM900 900v100h100v-100h-100zM1100 200v100h100v-100h-100z" />
<glyph unicode="&#xe040;" d="M0 200h100v1000h-100v-1000zM100 0v100h300v-100h-300zM200 200v1000h100v-1000h-100zM500 0v91h100v-91h-100zM500 200v1000h200v-1000h-200zM700 0v91h100v-91h-100zM800 200v1000h100v-1000h-100zM900 0v91h200v-91h-200zM1000 200v1000h200v-1000h-200z" />
<glyph unicode="&#xe041;" d="M0 700l1 475q0 10 7.5 17.5t17.5 7.5h474l700 -700l-500 -500zM148 953q0 -42 29 -71q30 -30 71.5 -30t71.5 30q29 29 29 71t-29 71q-30 30 -71.5 30t-71.5 -30q-29 -29 -29 -71z" />
<glyph unicode="&#xe042;" d="M1 700l1 475q0 11 7 18t18 7h474l700 -700l-500 -500zM148 953q0 -42 30 -71q29 -30 71 -30t71 30q30 29 30 71t-30 71q-29 30 -71 30t-71 -30q-30 -29 -30 -71zM701 1200h100l700 -700l-500 -500l-50 50l450 450z" />
<glyph unicode="&#xe043;" d="M100 0v1025l175 175h925v-1000l-100 -100v1000h-750l-100 -100h750v-1000h-900z" />
<glyph unicode="&#xe044;" d="M200 0l450 444l450 -443v1150q0 20 -14.5 35t-35.5 15h-800q-21 0 -35.5 -15t-14.5 -35v-1151z" />
<glyph unicode="&#xe045;" d="M0 100v700h200l100 -200h600l100 200h200v-700h-200v200h-800v-200h-200zM253 829l40 -124h592l62 124l-94 346q-2 11 -10 18t-18 7h-450q-10 0 -18 -7t-10 -18zM281 24l38 152q2 10 11.5 17t19.5 7h500q10 0 19.5 -7t11.5 -17l38 -152q2 -10 -3.5 -17t-15.5 -7h-600 q-10 0 -15.5 7t-3.5 17z" />
<glyph unicode="&#xe046;" d="M0 200q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-150q-4 8 -11.5 21.5t-33 48t-53 61t-69 48t-83.5 21.5h-200q-41 0 -82 -20.5t-70 -50t-52 -59t-34 -50.5l-12 -20h-150q-41 0 -70.5 -29.5t-29.5 -70.5v-600z M356 500q0 100 72 172t172 72t172 -72t72 -172t-72 -172t-172 -72t-172 72t-72 172zM494 500q0 -44 31 -75t75 -31t75 31t31 75t-31 75t-75 31t-75 -31t-31 -75zM900 700v100h100v-100h-100z" />
<glyph unicode="&#xe047;" d="M53 0h365v66q-41 0 -72 11t-49 38t1 71l92 234h391l82 -222q16 -45 -5.5 -88.5t-74.5 -43.5v-66h417v66q-34 1 -74 43q-18 19 -33 42t-21 37l-6 13l-385 998h-93l-399 -1006q-24 -48 -52 -75q-12 -12 -33 -25t-36 -20l-15 -7v-66zM416 521l178 457l46 -140l116 -317h-340 z" />
<glyph unicode="&#xe048;" d="M100 0v89q41 7 70.5 32.5t29.5 65.5v827q0 28 -1 39.5t-5.5 26t-15.5 21t-29 14t-49 14.5v71l471 -1q120 0 213 -88t93 -228q0 -55 -11.5 -101.5t-28 -74t-33.5 -47.5t-28 -28l-12 -7q8 -3 21.5 -9t48 -31.5t60.5 -58t47.5 -91.5t21.5 -129q0 -84 -59 -156.5t-142 -111 t-162 -38.5h-500zM400 200h161q89 0 153 48.5t64 132.5q0 90 -62.5 154.5t-156.5 64.5h-159v-400zM400 700h139q76 0 130 61.5t54 138.5q0 82 -84 130.5t-239 48.5v-379z" />
<glyph unicode="&#xe049;" d="M200 0v57q77 7 134.5 40.5t65.5 80.5l173 849q10 56 -10 74t-91 37q-6 1 -10.5 2.5t-9.5 2.5v57h425l2 -57q-33 -8 -62 -25.5t-46 -37t-29.5 -38t-17.5 -30.5l-5 -12l-128 -825q-10 -52 14 -82t95 -36v-57h-500z" />
<glyph unicode="&#xe050;" d="M-75 200h75v800h-75l125 167l125 -167h-75v-800h75l-125 -167zM300 900v300h150h700h150v-300h-50q0 29 -8 48.5t-18.5 30t-33.5 15t-39.5 5.5t-50.5 1h-200v-850l100 -50v-100h-400v100l100 50v850h-200q-34 0 -50.5 -1t-40 -5.5t-33.5 -15t-18.5 -30t-8.5 -48.5h-49z " />
<glyph unicode="&#xe051;" d="M33 51l167 125v-75h800v75l167 -125l-167 -125v75h-800v-75zM100 901v300h150h700h150v-300h-50q0 29 -8 48.5t-18 30t-33.5 15t-40 5.5t-50.5 1h-200v-650l100 -50v-100h-400v100l100 50v650h-200q-34 0 -50.5 -1t-39.5 -5.5t-33.5 -15t-18.5 -30t-8 -48.5h-50z" />
<glyph unicode="&#xe052;" d="M0 50q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 350q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5 v-100zM0 650q0 -20 14.5 -35t35.5 -15h1000q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1000q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 950q0 -20 14.5 -35t35.5 -15h600q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-600q-21 0 -35.5 -14.5 t-14.5 -35.5v-100z" />
<glyph unicode="&#xe053;" d="M0 50q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 650q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5 v-100zM200 350q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM200 950q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5 t-14.5 -35.5v-100z" />
<glyph unicode="&#xe054;" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1000q-21 0 -35.5 15 t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-600 q-21 0 -35.5 15t-14.5 35z" />
<glyph unicode="&#xe055;" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 950v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100 q-21 0 -35.5 15t-14.5 35z" />
<glyph unicode="&#xe056;" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM0 950v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15 t-14.5 35zM300 50v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800 q-21 0 -35.5 15t-14.5 35zM300 650v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM300 950v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15 h-800q-21 0 -35.5 15t-14.5 35z" />
<glyph unicode="&#xe057;" d="M-101 500v100h201v75l166 -125l-166 -125v75h-201zM300 0h100v1100h-100v-1100zM500 50q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 350q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35 v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 650q0 -20 14.5 -35t35.5 -15h500q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 950q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35v100 q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100z" />
<glyph unicode="&#xe058;" d="M1 50q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 350q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 650 q0 -20 14.5 -35t35.5 -15h500q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 950q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM801 0v1100h100v-1100 h-100zM934 550l167 -125v75h200v100h-200v75z" />
<glyph unicode="&#xe059;" d="M0 275v650q0 31 22 53t53 22h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53zM900 600l300 300v-600z" />
<glyph unicode="&#xe060;" d="M0 44v1012q0 18 13 31t31 13h1112q19 0 31.5 -13t12.5 -31v-1012q0 -18 -12.5 -31t-31.5 -13h-1112q-18 0 -31 13t-13 31zM100 263l247 182l298 -131l-74 156l293 318l236 -288v500h-1000v-737zM208 750q0 56 39 95t95 39t95 -39t39 -95t-39 -95t-95 -39t-95 39t-39 95z " />
<glyph unicode="&#xe062;" d="M148 745q0 124 60.5 231.5t165 172t226.5 64.5q123 0 227 -63t164.5 -169.5t60.5 -229.5t-73 -272q-73 -114 -166.5 -237t-150.5 -189l-57 -66q-10 9 -27 26t-66.5 70.5t-96 109t-104 135.5t-100.5 155q-63 139 -63 262zM342 772q0 -107 75.5 -182.5t181.5 -75.5 q107 0 182.5 75.5t75.5 182.5t-75.5 182t-182.5 75t-182 -75.5t-75 -181.5z" />
<glyph unicode="&#xe063;" d="M1 600q0 122 47.5 233t127.5 191t191 127.5t233 47.5t233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233zM173 600q0 -177 125.5 -302t301.5 -125v854q-176 0 -301.5 -125 t-125.5 -302z" />
<glyph unicode="&#xe064;" d="M117 406q0 94 34 186t88.5 172.5t112 159t115 177t87.5 194.5q21 -71 57.5 -142.5t76 -130.5t83 -118.5t82 -117t70 -116t50 -125.5t18.5 -136q0 -89 -39 -165.5t-102 -126.5t-140 -79.5t-156 -33.5q-114 6 -211.5 53t-161.5 139t-64 210zM243 414q14 -82 59.5 -136 t136.5 -80l16 98q-7 6 -18 17t-34 48t-33 77q-15 73 -14 143.5t10 122.5l9 51q-92 -110 -119.5 -185t-12.5 -156z" />
<glyph unicode="&#xe065;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5q366 -6 397 -14l-186 -186h-311q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v125l200 200v-225q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5 t-117.5 282.5zM436 341l161 50l412 412l-114 113l-405 -405zM995 1015l113 -113l113 113l-21 85l-92 28z" />
<glyph unicode="&#xe066;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h261l2 -80q-133 -32 -218 -120h-145q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-53q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5 zM423 524q30 38 81.5 64t103 35.5t99 14t77.5 3.5l29 -1v-209l360 324l-359 318v-216q-7 0 -19 -1t-48 -8t-69.5 -18.5t-76.5 -37t-76.5 -59t-62 -88t-39.5 -121.5z" />
<glyph unicode="&#xe067;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q61 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-169q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5 t-117.5 282.5zM342 632l283 -284l567 567l-137 137l-430 -431l-146 147z" />
<glyph unicode="&#xe068;" d="M0 603l300 296v-198h200v200h-200l300 300l295 -300h-195v-200h200v198l300 -296l-300 -300v198h-200v-200h195l-295 -300l-300 300h200v200h-200v-198z" />
<glyph unicode="&#xe069;" d="M200 50v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-1100l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5z" />
<glyph unicode="&#xe070;" d="M0 50v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-487l500 487v-1100l-500 488v-488l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5z" />
<glyph unicode="&#xe071;" d="M136 550l564 550v-487l500 487v-1100l-500 488v-488z" />
<glyph unicode="&#xe072;" d="M200 0l900 550l-900 550v-1100z" />
<glyph unicode="&#xe073;" d="M200 150q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v800q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5t-14.5 -35.5v-800zM600 150q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v800q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 -35.5v-800z" />
<glyph unicode="&#xe074;" d="M200 150q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35v800q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5v-800z" />
<glyph unicode="&#xe075;" d="M0 0v1100l500 -487v487l564 -550l-564 -550v488z" />
<glyph unicode="&#xe076;" d="M0 0v1100l500 -487v487l500 -487v437q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-500 -488v488z" />
<glyph unicode="&#xe077;" d="M300 0v1100l500 -487v437q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438z" />
<glyph unicode="&#xe078;" d="M100 250v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5zM100 500h1100l-550 564z" />
<glyph unicode="&#xe079;" d="M185 599l592 -592l240 240l-353 353l353 353l-240 240z" />
<glyph unicode="&#xe080;" d="M272 194l353 353l-353 353l241 240l572 -571l21 -22l-1 -1v-1l-592 -591z" />
<glyph unicode="&#xe081;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM300 500h200v-200h200v200h200v200h-200v200h-200v-200h-200v-200z" />
<glyph unicode="&#xe082;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM300 500h600v200h-600v-200z" />
<glyph unicode="&#xe083;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM246 459l213 -213l141 142l141 -142l213 213l-142 141l142 141l-213 212l-141 -141l-141 142l-212 -213l141 -141 z" />
<glyph unicode="&#xe084;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM270 551l276 -277l411 411l-175 174l-236 -236l-102 102z" />
<glyph unicode="&#xe085;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM364 700h143q4 0 11.5 -1t11 -1t6.5 3t3 9t1 11t3.5 8.5t3.5 6t5.5 4t6.5 2.5t9 1.5t9 0.5h11.5h12.5 q19 0 30 -10t11 -26q0 -22 -4 -28t-27 -22q-5 -1 -12.5 -3t-27 -13.5t-34 -27t-26.5 -46t-11 -68.5h200q5 3 14 8t31.5 25.5t39.5 45.5t31 69t14 94q0 51 -17.5 89t-42 58t-58.5 32t-58.5 15t-51.5 3q-50 0 -90.5 -12t-75 -38.5t-53.5 -74.5t-19 -114zM500 300h200v100h-200 v-100z" />
<glyph unicode="&#xe086;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM400 300h400v100h-100v300h-300v-100h100v-200h-100v-100zM500 800h200v100h-200v-100z" />
<glyph unicode="&#xe087;" d="M0 500v200h195q31 125 98.5 199.5t206.5 100.5v200h200v-200q54 -20 113 -60t112.5 -105.5t71.5 -134.5h203v-200h-203q-25 -102 -116.5 -186t-180.5 -117v-197h-200v197q-140 27 -208 102.5t-98 200.5h-194zM290 500q24 -73 79.5 -127.5t130.5 -78.5v206h200v-206 q149 48 201 206h-201v200h200q-25 74 -75.5 127t-124.5 77v-204h-200v203q-75 -23 -130 -77t-79 -126h209v-200h-210z" />
<glyph unicode="&#xe088;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM356 465l135 135 l-135 135l109 109l135 -135l135 135l109 -109l-135 -135l135 -135l-109 -109l-135 135l-135 -135z" />
<glyph unicode="&#xe089;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM322 537l141 141 l87 -87l204 205l142 -142l-346 -345z" />
<glyph unicode="&#xe090;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -115 62 -215l568 567q-100 62 -216 62q-171 0 -292.5 -121.5t-121.5 -292.5zM391 245q97 -59 209 -59q171 0 292.5 121.5t121.5 292.5 q0 112 -59 209z" />
<glyph unicode="&#xe091;" d="M0 547l600 453v-300h600v-300h-600v-301z" />
<glyph unicode="&#xe092;" d="M0 400v300h600v300l600 -453l-600 -448v301h-600z" />
<glyph unicode="&#xe093;" d="M204 600l450 600l444 -600h-298v-600h-300v600h-296z" />
<glyph unicode="&#xe094;" d="M104 600h296v600h300v-600h298l-449 -600z" />
<glyph unicode="&#xe095;" d="M0 200q6 132 41 238.5t103.5 193t184 138t271.5 59.5v271l600 -453l-600 -448v301q-95 -2 -183 -20t-170 -52t-147 -92.5t-100 -135.5z" />
<glyph unicode="&#xe096;" d="M0 0v400l129 -129l294 294l142 -142l-294 -294l129 -129h-400zM635 777l142 -142l294 294l129 -129v400h-400l129 -129z" />
<glyph unicode="&#xe097;" d="M34 176l295 295l-129 129h400v-400l-129 130l-295 -295zM600 600v400l129 -129l295 295l142 -141l-295 -295l129 -130h-400z" />
<glyph unicode="&#xe101;" d="M23 600q0 118 45.5 224.5t123 184t184 123t224.5 45.5t224.5 -45.5t184 -123t123 -184t45.5 -224.5t-45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5zM456 851l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5 t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5h-207q-21 0 -33 -14.5t-8 -34.5zM500 300h200v100h-200v-100z" />
<glyph unicode="&#xe102;" d="M0 800h100v-200h400v300h200v-300h400v200h100v100h-111q1 1 1 6.5t-1.5 15t-3.5 17.5l-34 172q-11 39 -41.5 63t-69.5 24q-32 0 -61 -17l-239 -144q-22 -13 -40 -35q-19 24 -40 36l-238 144q-33 18 -62 18q-39 0 -69.5 -23t-40.5 -61l-35 -177q-2 -8 -3 -18t-1 -15v-6 h-111v-100zM100 0h400v400h-400v-400zM200 900q-3 0 14 48t36 96l18 47l213 -191h-281zM700 0v400h400v-400h-400zM731 900l202 197q5 -12 12 -32.5t23 -64t25 -72t7 -28.5h-269z" />
<glyph unicode="&#xe103;" d="M0 -22v143l216 193q-9 53 -13 83t-5.5 94t9 113t38.5 114t74 124q47 60 99.5 102.5t103 68t127.5 48t145.5 37.5t184.5 43.5t220 58.5q0 -189 -22 -343t-59 -258t-89 -181.5t-108.5 -120t-122 -68t-125.5 -30t-121.5 -1.5t-107.5 12.5t-87.5 17t-56.5 7.5l-99 -55z M238.5 300.5q19.5 -6.5 86.5 76.5q55 66 367 234q70 38 118.5 69.5t102 79t99 111.5t86.5 148q22 50 24 60t-6 19q-7 5 -17 5t-26.5 -14.5t-33.5 -39.5q-35 -51 -113.5 -108.5t-139.5 -89.5l-61 -32q-369 -197 -458 -401q-48 -111 -28.5 -117.5z" />
<glyph unicode="&#xe104;" d="M111 408q0 -33 5 -63q9 -56 44 -119.5t105 -108.5q31 -21 64 -16t62 23.5t57 49.5t48 61.5t35 60.5q32 66 39 184.5t-13 157.5q79 -80 122 -164t26 -184q-5 -33 -20.5 -69.5t-37.5 -80.5q-10 -19 -14.5 -29t-12 -26t-9 -23.5t-3 -19t2.5 -15.5t11 -9.5t19.5 -5t30.5 2.5 t42 8q57 20 91 34t87.5 44.5t87 64t65.5 88.5t47 122q38 172 -44.5 341.5t-246.5 278.5q22 -44 43 -129q39 -159 -32 -154q-15 2 -33 9q-79 33 -120.5 100t-44 175.5t48.5 257.5q-13 -8 -34 -23.5t-72.5 -66.5t-88.5 -105.5t-60 -138t-8 -166.5q2 -12 8 -41.5t8 -43t6 -39.5 t3.5 -39.5t-1 -33.5t-6 -31.5t-13.5 -24t-21 -20.5t-31 -12q-38 -10 -67 13t-40.5 61.5t-15 81.5t10.5 75q-52 -46 -83.5 -101t-39 -107t-7.5 -85z" />
<glyph unicode="&#xe105;" d="M-61 600l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5t145.5 -23.5t132.5 -59t116.5 -83.5t97 -90t74.5 -85.5t49 -63.5t20 -30l26 -40l-26 -40q-6 -10 -20 -30t-49 -63.5t-74.5 -85.5t-97 -90t-116.5 -83.5t-132.5 -59t-145.5 -23.5 t-145.5 23.5t-132.5 59t-116.5 83.5t-97 90t-74.5 85.5t-49 63.5t-20 30zM120 600q7 -10 40.5 -58t56 -78.5t68 -77.5t87.5 -75t103 -49.5t125 -21.5t123.5 20t100.5 45.5t85.5 71.5t66.5 75.5t58 81.5t47 66q-1 1 -28.5 37.5t-42 55t-43.5 53t-57.5 63.5t-58.5 54 q49 -74 49 -163q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 85 46 158q-102 -87 -226 -258zM377 656q49 -124 154 -191l105 105q-37 24 -75 72t-57 84l-20 36z" />
<glyph unicode="&#xe106;" d="M-61 600l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5q61 0 121 -17l37 142h148l-314 -1200h-148l37 143q-82 21 -165 71.5t-140 102t-109.5 112t-72 88.5t-29.5 43zM120 600q210 -282 393 -336l37 141q-107 18 -178.5 101.5t-71.5 193.5 q0 85 46 158q-102 -87 -226 -258zM377 656q49 -124 154 -191l47 47l23 87q-30 28 -59 69t-44 68l-14 26zM780 161l38 145q22 15 44.5 34t46 44t40.5 44t41 50.5t33.5 43.5t33 44t24.5 34q-97 127 -140 175l39 146q67 -54 131.5 -125.5t87.5 -103.5t36 -52l26 -40l-26 -40 q-7 -12 -25.5 -38t-63.5 -79.5t-95.5 -102.5t-124 -100t-146.5 -79z" />
<glyph unicode="&#xe107;" d="M-97.5 34q13.5 -34 50.5 -34h1294q37 0 50.5 35.5t-7.5 67.5l-642 1056q-20 34 -48 36.5t-48 -29.5l-642 -1066q-21 -32 -7.5 -66zM155 200l445 723l445 -723h-345v100h-200v-100h-345zM500 600l100 -300l100 300v100h-200v-100z" />
<glyph unicode="&#xe108;" d="M100 262v41q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44t106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -91 100 -113v-64q0 -20 -13 -28.5t-32 0.5l-94 78h-222l-94 -78q-19 -9 -32 -0.5t-13 28.5 v64q0 22 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5z" />
<glyph unicode="&#xe109;" d="M0 50q0 -20 14.5 -35t35.5 -15h1000q21 0 35.5 15t14.5 35v750h-1100v-750zM0 900h1100v150q0 21 -14.5 35.5t-35.5 14.5h-150v100h-100v-100h-500v100h-100v-100h-150q-21 0 -35.5 -14.5t-14.5 -35.5v-150zM100 100v100h100v-100h-100zM100 300v100h100v-100h-100z M100 500v100h100v-100h-100zM300 100v100h100v-100h-100zM300 300v100h100v-100h-100zM300 500v100h100v-100h-100zM500 100v100h100v-100h-100zM500 300v100h100v-100h-100zM500 500v100h100v-100h-100zM700 100v100h100v-100h-100zM700 300v100h100v-100h-100zM700 500 v100h100v-100h-100zM900 100v100h100v-100h-100zM900 300v100h100v-100h-100zM900 500v100h100v-100h-100z" />
<glyph unicode="&#xe110;" d="M0 200v200h259l600 600h241v198l300 -295l-300 -300v197h-159l-600 -600h-341zM0 800h259l122 -122l141 142l-181 180h-341v-200zM678 381l141 142l122 -123h159v198l300 -295l-300 -300v197h-241z" />
<glyph unicode="&#xe111;" d="M0 400v600q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5z" />
<glyph unicode="&#xe112;" d="M100 600v200h300v-250q0 -113 6 -145q17 -92 102 -117q39 -11 92 -11q37 0 66.5 5.5t50 15.5t36 24t24 31.5t14 37.5t7 42t2.5 45t0 47v25v250h300v-200q0 -42 -3 -83t-15 -104t-31.5 -116t-58 -109.5t-89 -96.5t-129 -65.5t-174.5 -25.5t-174.5 25.5t-129 65.5t-89 96.5 t-58 109.5t-31.5 116t-15 104t-3 83zM100 900v300h300v-300h-300zM800 900v300h300v-300h-300z" />
<glyph unicode="&#xe113;" d="M-30 411l227 -227l352 353l353 -353l226 227l-578 579z" />
<glyph unicode="&#xe114;" d="M70 797l580 -579l578 579l-226 227l-353 -353l-352 353z" />
<glyph unicode="&#xe115;" d="M-198 700l299 283l300 -283h-203v-400h385l215 -200h-800v600h-196zM402 1000l215 -200h381v-400h-198l299 -283l299 283h-200v600h-796z" />
<glyph unicode="&#xe116;" d="M18 939q-5 24 10 42q14 19 39 19h896l38 162q5 17 18.5 27.5t30.5 10.5h94q20 0 35 -14.5t15 -35.5t-15 -35.5t-35 -14.5h-54l-201 -961q-2 -4 -6 -10.5t-19 -17.5t-33 -11h-31v-50q0 -20 -14.5 -35t-35.5 -15t-35.5 15t-14.5 35v50h-300v-50q0 -20 -14.5 -35t-35.5 -15 t-35.5 15t-14.5 35v50h-50q-21 0 -35.5 15t-14.5 35q0 21 14.5 35.5t35.5 14.5h535l48 200h-633q-32 0 -54.5 21t-27.5 43z" />
<glyph unicode="&#xe117;" d="M0 0v800h1200v-800h-1200zM0 900v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500v-100h-1200z" />
<glyph unicode="&#xe118;" d="M1 0l300 700h1200l-300 -700h-1200zM1 400v600h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500v-200h-1000z" />
<glyph unicode="&#xe119;" d="M302 300h198v600h-198l298 300l298 -300h-198v-600h198l-298 -300z" />
<glyph unicode="&#xe120;" d="M0 600l300 298v-198h600v198l300 -298l-300 -297v197h-600v-197z" />
<glyph unicode="&#xe121;" d="M0 100v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM31 400l172 739q5 22 23 41.5t38 19.5h672q19 0 37.5 -22.5t23.5 -45.5l172 -732h-1138zM800 100h100v100h-100v-100z M1000 100h100v100h-100v-100z" />
<glyph unicode="&#xe122;" d="M-101 600v50q0 24 25 49t50 38l25 13v-250l-11 5.5t-24 14t-30 21.5t-24 27.5t-11 31.5zM100 500v250v8v8v7t0.5 7t1.5 5.5t2 5t3 4t4.5 3.5t6 1.5t7.5 0.5h200l675 250v-850l-675 200h-38l47 -276q2 -12 -3 -17.5t-11 -6t-21 -0.5h-8h-83q-20 0 -34.5 14t-18.5 35 q-55 337 -55 351zM1100 200v850q0 21 14.5 35.5t35.5 14.5q20 0 35 -14.5t15 -35.5v-850q0 -20 -15 -35t-35 -15q-21 0 -35.5 15t-14.5 35z" />
<glyph unicode="&#xe123;" d="M74 350q0 21 13.5 35.5t33.5 14.5h18l117 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3 32t29 13h94q20 0 29 -10.5t3 -29.5q-18 -36 -18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q20 0 33.5 -14.5t13.5 -35.5q0 -20 -13 -40t-31 -27q-8 -3 -23 -8.5 t-65 -20t-103 -25t-132.5 -19.5t-158.5 -9q-125 0 -245.5 20.5t-178.5 40.5l-58 20q-18 7 -31 27.5t-13 40.5zM497 110q12 -49 40 -79.5t63 -30.5t63 30.5t39 79.5q-48 -6 -102 -6t-103 6z" />
<glyph unicode="&#xe124;" d="M21 445l233 -45l-78 -224l224 78l45 -233l155 179l155 -179l45 233l224 -78l-78 224l234 45l-180 155l180 156l-234 44l78 225l-224 -78l-45 233l-155 -180l-155 180l-45 -233l-224 78l78 -225l-233 -44l179 -156z" />
<glyph unicode="&#xe125;" d="M0 200h200v600h-200v-600zM300 275q0 -75 100 -75h61q124 -100 139 -100h250q46 0 83 57l238 344q29 31 29 74v100q0 44 -30.5 84.5t-69.5 40.5h-328q28 118 28 125v150q0 44 -30.5 84.5t-69.5 40.5h-50q-27 0 -51 -20t-38 -48l-96 -198l-145 -196q-20 -26 -20 -63v-400z M400 300v375l150 213l100 212h50v-175l-50 -225h450v-125l-250 -375h-214l-136 100h-100z" />
<glyph unicode="&#xe126;" d="M0 400v600h200v-600h-200zM300 525v400q0 75 100 75h61q124 100 139 100h250q46 0 83 -57l238 -344q29 -31 29 -74v-100q0 -44 -30.5 -84.5t-69.5 -40.5h-328q28 -118 28 -125v-150q0 -44 -30.5 -84.5t-69.5 -40.5h-50q-27 0 -51 20t-38 48l-96 198l-145 196 q-20 26 -20 63zM400 525l150 -212l100 -213h50v175l-50 225h450v125l-250 375h-214l-136 -100h-100v-375z" />
<glyph unicode="&#xe127;" d="M8 200v600h200v-600h-200zM308 275v525q0 17 14 35.5t28 28.5l14 9l362 230q14 6 25 6q17 0 29 -12l109 -112q14 -14 14 -34q0 -18 -11 -32l-85 -121h302q85 0 138.5 -38t53.5 -110t-54.5 -111t-138.5 -39h-107l-130 -339q-7 -22 -20.5 -41.5t-28.5 -19.5h-341 q-7 0 -90 81t-83 94zM408 289l100 -89h293l131 339q6 21 19.5 41t28.5 20h203q16 0 25 15t9 36q0 20 -9 34.5t-25 14.5h-457h-6.5h-7.5t-6.5 0.5t-6 1t-5 1.5t-5.5 2.5t-4 4t-4 5.5q-5 12 -5 20q0 14 10 27l147 183l-86 83l-339 -236v-503z" />
<glyph unicode="&#xe128;" d="M-101 651q0 72 54 110t139 38l302 -1l-85 121q-11 16 -11 32q0 21 14 34l109 113q13 12 29 12q11 0 25 -6l365 -230q7 -4 17 -10.5t26.5 -26t16.5 -36.5v-526q0 -13 -86 -93.5t-94 -80.5h-341q-16 0 -29.5 20t-19.5 41l-130 339h-107q-84 0 -139 39t-55 111zM-1 601h222 q15 0 28.5 -20.5t19.5 -40.5l131 -339h293l107 89v502l-343 237l-87 -83l145 -184q10 -11 10 -26q0 -11 -5 -20q-1 -3 -3.5 -5.5l-4 -4t-5 -2.5t-5.5 -1.5t-6.5 -1t-6.5 -0.5h-7.5h-6.5h-476v-100zM1000 201v600h200v-600h-200z" />
<glyph unicode="&#xe129;" d="M97 719l230 -363q4 -6 10.5 -15.5t26 -25t36.5 -15.5h525q13 0 94 83t81 90v342q0 15 -20 28.5t-41 19.5l-339 131v106q0 84 -39 139t-111 55t-110 -53.5t-38 -138.5v-302l-121 84q-15 12 -33.5 11.5t-32.5 -13.5l-112 -110q-22 -22 -6 -53zM172 739l83 86l183 -146 q22 -18 47 -5q3 1 5.5 3.5l4 4t2.5 5t1.5 5.5t1 6.5t0.5 6.5v7.5v6.5v456q0 22 25 31t50 -0.5t25 -30.5v-202q0 -16 20 -29.5t41 -19.5l339 -130v-294l-89 -100h-503zM400 0v200h600v-200h-600z" />
<glyph unicode="&#xe130;" d="M2 585q-16 -31 6 -53l112 -110q13 -13 32 -13.5t34 10.5l121 85q0 -51 -0.5 -153.5t-0.5 -148.5q0 -84 38.5 -138t110.5 -54t111 55t39 139v106l339 131q20 6 40.5 19.5t20.5 28.5v342q0 7 -81 90t-94 83h-525q-17 0 -35.5 -14t-28.5 -28l-10 -15zM77 565l236 339h503 l89 -100v-294l-340 -130q-20 -6 -40 -20t-20 -29v-202q0 -22 -25 -31t-50 0t-25 31v456v14.5t-1.5 11.5t-5 12t-9.5 7q-24 13 -46 -5l-184 -146zM305 1104v200h600v-200h-600z" />
<glyph unicode="&#xe131;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM298 701l2 -201h300l-2 -194l402 294l-402 298v-197h-300z" />
<glyph unicode="&#xe132;" d="M0 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t231.5 47.5q122 0 232.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-218 -217.5t-300 -80t-299.5 80t-217.5 217.5t-80 299.5zM200 600l402 -294l-2 194h300l2 201h-300v197z" />
<glyph unicode="&#xe133;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 600h200v-300h200v300h200l-300 400z" />
<glyph unicode="&#xe134;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 600l300 -400l300 400h-200v300h-200v-300h-200z" />
<glyph unicode="&#xe135;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM254 780q-8 -33 5.5 -92.5t7.5 -87.5q0 -9 17 -44t16 -60 q12 0 23 -5.5t23 -15t20 -13.5q24 -12 108 -42q22 -8 53 -31.5t59.5 -38.5t57.5 -11q8 -18 -15 -55t-20 -57q42 -71 87 -80q0 -6 -3 -15.5t-3.5 -14.5t4.5 -17q104 -3 221 112q30 29 47 47t34.5 49t20.5 62q-14 9 -37 9.5t-36 7.5q-14 7 -49 15t-52 19q-9 0 -39.5 -0.5 t-46.5 -1.5t-39 -6.5t-39 -16.5q-50 -35 -66 -12q-4 2 -3.5 25.5t0.5 25.5q-6 13 -26.5 17t-24.5 7q2 22 -2 41t-16.5 28t-38.5 -20q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q12 -19 32 -37.5t34 -27.5l14 -8q0 3 9.5 39.5t5.5 57.5 q-4 23 14.5 44.5t22.5 31.5q5 14 10 35t8.5 31t15.5 22.5t34 21.5q-6 18 10 37q8 0 23.5 -1.5t24.5 -1.5t20.5 4.5t20.5 15.5q-10 23 -30.5 42.5t-38 30t-49 26.5t-43.5 23q11 39 2 44q31 -13 58 -14.5t39 3.5l11 4q7 36 -16.5 53.5t-64.5 28.5t-56 23q-19 -3 -37 0 q-15 -12 -36.5 -21t-34.5 -12t-44 -8t-39 -6q-15 -3 -45.5 0.5t-45.5 -2.5q-21 -7 -52 -26.5t-34 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -90.5t-29.5 -79.5zM518 916q3 12 16 30t16 25q10 -10 18.5 -10t14 6t14.5 14.5t16 12.5q0 -24 17 -66.5t17 -43.5 q-9 2 -31 5t-36 5t-32 8t-30 14zM692 1003h1h-1z" />
<glyph unicode="&#xe136;" d="M0 164.5q0 21.5 15 37.5l600 599q-33 101 6 201.5t135 154.5q164 92 306 -9l-259 -138l145 -232l251 126q13 -175 -151 -267q-123 -70 -253 -23l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5z" />
<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M0 196v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM0 596v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5zM0 996v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM600 596h500v100h-500v-100zM800 196h300v100h-300v-100zM900 996h200v100h-200v-100z" />
<glyph unicode="&#xe138;" d="M100 1100v100h1000v-100h-1000zM150 1000h900l-350 -500v-300l-200 -200v500z" />
<glyph unicode="&#xe139;" d="M0 200v200h1200v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM0 500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500z M500 1000h200v100h-200v-100z" />
<glyph unicode="&#xe140;" d="M0 0v400l129 -129l200 200l142 -142l-200 -200l129 -129h-400zM0 800l129 129l200 -200l142 142l-200 200l129 129h-400v-400zM729 329l142 142l200 -200l129 129v-400h-400l129 129zM729 871l200 200l-129 129h400v-400l-129 129l-200 -200z" />
<glyph unicode="&#xe141;" d="M0 596q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM182 596q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM291 655 q0 23 15.5 38.5t38.5 15.5t39 -16t16 -38q0 -23 -16 -39t-39 -16q-22 0 -38 16t-16 39zM400 850q0 22 16 38.5t39 16.5q22 0 38 -16t16 -39t-16 -39t-38 -16q-23 0 -39 16.5t-16 38.5zM514 609q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 22 16 38.5t39 16.5 q22 0 38 -16t16 -39t-16 -39t-38 -16q-14 0 -29 10l-55 -145q17 -22 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5zM800 655q0 22 16 38t39 16t38.5 -15.5t15.5 -38.5t-16 -39t-38 -16q-23 0 -39 16t-16 39z" />
<glyph unicode="&#xe142;" d="M-40 375q-13 -95 35 -173q35 -57 94 -89t129 -32q63 0 119 28q33 16 65 40.5t52.5 45.5t59.5 64q40 44 57 61l394 394q35 35 47 84t-3 96q-27 87 -117 104q-20 2 -29 2q-46 0 -78.5 -16.5t-67.5 -51.5l-389 -396l-7 -7l69 -67l377 373q20 22 39 38q23 23 50 23 q38 0 53 -36q16 -39 -20 -75l-547 -547q-52 -52 -125 -52q-55 0 -100 33t-54 96q-5 35 2.5 66t31.5 63t42 50t56 54q24 21 44 41l348 348q52 52 82.5 79.5t84 54t107.5 26.5q25 0 48 -4q95 -17 154 -94.5t51 -175.5q-7 -101 -98 -192l-252 -249l-253 -256l7 -7l69 -60 l517 511q67 67 95 157t11 183q-16 87 -67 154t-130 103q-69 33 -152 33q-107 0 -197 -55q-40 -24 -111 -95l-512 -512q-68 -68 -81 -163z" />
<glyph unicode="&#xe143;" d="M80 784q0 131 98.5 229.5t230.5 98.5q143 0 241 -129q103 129 246 129q129 0 226 -98.5t97 -229.5q0 -46 -17.5 -91t-61 -99t-77 -89.5t-104.5 -105.5q-197 -191 -293 -322l-17 -23l-16 23q-43 58 -100 122.5t-92 99.5t-101 100q-71 70 -104.5 105.5t-77 89.5t-61 99 t-17.5 91zM250 784q0 -27 30.5 -70t61.5 -75.5t95 -94.5l22 -22q93 -90 190 -201q82 92 195 203l12 12q64 62 97.5 97t64.5 79t31 72q0 71 -48 119.5t-105 48.5q-74 0 -132 -83l-118 -171l-114 174q-51 80 -123 80q-60 0 -109.5 -49.5t-49.5 -118.5z" />
<glyph unicode="&#xe144;" d="M57 353q0 -95 66 -159l141 -142q68 -66 159 -66q93 0 159 66l283 283q66 66 66 159t-66 159l-141 141q-8 9 -19 17l-105 -105l212 -212l-389 -389l-247 248l95 95l-18 18q-46 45 -75 101l-55 -55q-66 -66 -66 -159zM269 706q0 -93 66 -159l141 -141q7 -7 19 -17l105 105 l-212 212l389 389l247 -247l-95 -96l18 -17q47 -49 77 -100l29 29q35 35 62.5 88t27.5 96q0 93 -66 159l-141 141q-66 66 -159 66q-95 0 -159 -66l-283 -283q-66 -64 -66 -159z" />
<glyph unicode="&#xe145;" d="M200 100v953q0 21 30 46t81 48t129 38t163 15t162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5zM300 300h600v700h-600v-700zM496 150q0 -43 30.5 -73.5t73.5 -30.5t73.5 30.5t30.5 73.5t-30.5 73.5t-73.5 30.5 t-73.5 -30.5t-30.5 -73.5z" />
<glyph unicode="&#xe146;" d="M0 0l303 380l207 208l-210 212h300l267 279l-35 36q-15 14 -15 35t15 35q14 15 35 15t35 -15l283 -282q15 -15 15 -36t-15 -35q-14 -15 -35 -15t-35 15l-36 35l-279 -267v-300l-212 210l-208 -207z" />
<glyph unicode="&#xe148;" d="M295 433h139q5 -77 48.5 -126.5t117.5 -64.5v335q-6 1 -15.5 4t-11.5 3q-46 14 -79 26.5t-72 36t-62.5 52t-40 72.5t-16.5 99q0 92 44 159.5t109 101t144 40.5v78h100v-79q38 -4 72.5 -13.5t75.5 -31.5t71 -53.5t51.5 -84t24.5 -118.5h-159q-8 72 -35 109.5t-101 50.5 v-307l64 -14q34 -7 64 -16.5t70 -31.5t67.5 -52t47.5 -80.5t20 -112.5q0 -139 -89 -224t-244 -96v-77h-100v78q-152 17 -237 104q-40 40 -52.5 93.5t-15.5 139.5zM466 889q0 -29 8 -51t16.5 -34t29.5 -22.5t31 -13.5t38 -10q7 -2 11 -3v274q-61 -8 -97.5 -37.5t-36.5 -102.5 zM700 237q170 18 170 151q0 64 -44 99.5t-126 60.5v-311z" />
<glyph unicode="&#xe149;" d="M100 600v100h166q-24 49 -44 104q-10 26 -14.5 55.5t-3 72.5t25 90t68.5 87q97 88 263 88q129 0 230 -89t101 -208h-153q0 52 -34 89.5t-74 51.5t-76 14q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -28 16.5 -69.5t28 -62.5t41.5 -72h241v-100h-197q8 -50 -2.5 -115 t-31.5 -94q-41 -59 -99 -113q35 11 84 18t70 7q33 1 103 -16t103 -17q76 0 136 30l50 -147q-41 -25 -80.5 -36.5t-59 -13t-61.5 -1.5q-23 0 -128 33t-155 29q-39 -4 -82 -17t-66 -25l-24 -11l-55 145l16.5 11t15.5 10t13.5 9.5t14.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221z" />
<glyph unicode="&#xe150;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM602 900l298 300l298 -300h-198v-900h-200v900h-198z" />
<glyph unicode="&#xe151;" d="M2 300h198v900h200v-900h198l-298 -300zM700 0v200h100v-100h200v-100h-300zM700 400v100h300v-200h-99v-100h-100v100h99v100h-200zM700 700v500h300v-500h-100v100h-100v-100h-100zM801 900h100v200h-100v-200z" />
<glyph unicode="&#xe152;" d="M2 300h198v900h200v-900h198l-298 -300zM700 0v500h300v-500h-100v100h-100v-100h-100zM700 700v200h100v-100h200v-100h-300zM700 1100v100h300v-200h-99v-100h-100v100h99v100h-200zM801 200h100v200h-100v-200z" />
<glyph unicode="&#xe153;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM800 100v400h300v-500h-100v100h-200zM800 1100v100h200v-500h-100v400h-100zM901 200h100v200h-100v-200z" />
<glyph unicode="&#xe154;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM800 400v100h200v-500h-100v400h-100zM800 800v400h300v-500h-100v100h-200zM901 900h100v200h-100v-200z" />
<glyph unicode="&#xe155;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM700 100v200h500v-200h-500zM700 400v200h400v-200h-400zM700 700v200h300v-200h-300zM700 1000v200h200v-200h-200z" />
<glyph unicode="&#xe156;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM700 100v200h200v-200h-200zM700 400v200h300v-200h-300zM700 700v200h400v-200h-400zM700 1000v200h500v-200h-500z" />
<glyph unicode="&#xe157;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q162 0 281 -118.5t119 -281.5v-300q0 -165 -118.5 -282.5t-281.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500z" />
<glyph unicode="&#xe158;" d="M0 400v300q0 163 119 281.5t281 118.5h300q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-163 0 -281.5 117.5t-118.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM400 300l333 250l-333 250v-500z" />
<glyph unicode="&#xe159;" d="M0 400v300q0 163 117.5 281.5t282.5 118.5h300q163 0 281.5 -119t118.5 -281v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM300 700l250 -333l250 333h-500z" />
<glyph unicode="&#xe160;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q165 0 282.5 -117.5t117.5 -282.5v-300q0 -162 -118.5 -281t-281.5 -119h-300q-165 0 -282.5 118.5t-117.5 281.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM300 400h500l-250 333z" />
<glyph unicode="&#xe161;" d="M0 400v300h300v200l400 -350l-400 -350v200h-300zM500 0v200h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-500v200h400q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-400z" />
<glyph unicode="&#xe162;" d="M217 519q8 -19 31 -19h302q-155 -438 -160 -458q-5 -21 4 -32l9 -8h9q14 0 26 15q11 13 274.5 321.5t264.5 308.5q14 19 5 36q-8 17 -31 17l-301 -1q1 4 78 219.5t79 227.5q2 15 -5 27l-9 9h-9q-15 0 -25 -16q-4 -6 -98 -111.5t-228.5 -257t-209.5 -237.5q-16 -19 -6 -41 z" />
<glyph unicode="&#xe163;" d="M0 400q0 -165 117.5 -282.5t282.5 -117.5h300q47 0 100 15v185h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h500v185q-14 4 -114 7.5t-193 5.5l-93 2q-165 0 -282.5 -117.5t-117.5 -282.5v-300zM600 400v300h300v200l400 -350l-400 -350v200h-300z " />
<glyph unicode="&#xe164;" d="M0 400q0 -165 117.5 -282.5t282.5 -117.5h300q163 0 281.5 117.5t118.5 282.5v98l-78 73l-122 -123v-148q0 -41 -29.5 -70.5t-70.5 -29.5h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h156l118 122l-74 78h-100q-165 0 -282.5 -117.5t-117.5 -282.5 v-300zM496 709l353 342l-149 149h500v-500l-149 149l-342 -353z" />
<glyph unicode="&#xe165;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM406 600 q0 80 57 137t137 57t137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137z" />
<glyph unicode="&#xe166;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 800l445 -500l450 500h-295v400h-300v-400h-300zM900 150h100v50h-100v-50z" />
<glyph unicode="&#xe167;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 700h300v-300h300v300h295l-445 500zM900 150h100v50h-100v-50z" />
<glyph unicode="&#xe168;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 705l305 -305l596 596l-154 155l-442 -442l-150 151zM900 150h100v50h-100v-50z" />
<glyph unicode="&#xe169;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 988l97 -98l212 213l-97 97zM200 400l697 1l3 699l-250 -239l-149 149l-212 -212l149 -149zM900 150h100v50h-100v-50z" />
<glyph unicode="&#xe170;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM200 612l212 -212l98 97l-213 212zM300 1200l239 -250l-149 -149l212 -212l149 148l249 -237l-1 697zM900 150h100v50h-100v-50z" />
<glyph unicode="&#xe171;" d="M23 415l1177 784v-1079l-475 272l-310 -393v416h-392zM494 210l672 938l-672 -712v-226z" />
<glyph unicode="&#xe172;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-850q0 -21 -15 -35.5t-35 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 1000h100v200h-100v-200z" />
<glyph unicode="&#xe173;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-218l-276 -275l-120 120l-126 -127h-378v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM581 306l123 123l120 -120l353 352l123 -123l-475 -476zM600 1000h100v200h-100v-200z" />
<glyph unicode="&#xe174;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-269l-103 -103l-170 170l-298 -298h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 1000h100v200h-100v-200zM700 133l170 170l-170 170l127 127l170 -170l170 170l127 -128l-170 -169l170 -170 l-127 -127l-170 170l-170 -170z" />
<glyph unicode="&#xe175;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-300h-400v-200h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 300l300 -300l300 300h-200v300h-200v-300h-200zM600 1000v200h100v-200h-100z" />
<glyph unicode="&#xe176;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-402l-200 200l-298 -298h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 300h200v-300h200v300h200l-300 300zM600 1000v200h100v-200h-100z" />
<glyph unicode="&#xe177;" d="M0 250q0 -21 14.5 -35.5t35.5 -14.5h1100q21 0 35.5 14.5t14.5 35.5v550h-1200v-550zM0 900h1200v150q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-150zM100 300v200h400v-200h-400z" />
<glyph unicode="&#xe178;" d="M0 400l300 298v-198h400v-200h-400v-198zM100 800v200h100v-200h-100zM300 800v200h100v-200h-100zM500 800v200h400v198l300 -298l-300 -298v198h-400zM800 300v200h100v-200h-100zM1000 300h100v200h-100v-200z" />
<glyph unicode="&#xe179;" d="M100 700v400l50 100l50 -100v-300h100v300l50 100l50 -100v-300h100v300l50 100l50 -100v-400l-100 -203v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447zM800 597q0 -29 10.5 -55.5t25 -43t29 -28.5t25.5 -18l10 -5v-397q0 -21 14.5 -35.5 t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v1106q0 31 -18 40.5t-44 -7.5l-276 -116q-25 -17 -43.5 -51.5t-18.5 -65.5v-359z" />
<glyph unicode="&#xe180;" d="M100 0h400v56q-75 0 -87.5 6t-12.5 44v394h500v-394q0 -38 -12.5 -44t-87.5 -6v-56h400v56q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v888q0 22 25 34.5t50 13.5l25 2v56h-400v-56q75 0 87.5 -6t12.5 -44v-394h-500v394q0 38 12.5 44t87.5 6v56h-400v-56q4 0 11 -0.5 t24 -3t30 -7t24 -15t11 -24.5v-888q0 -22 -25 -34.5t-50 -13.5l-25 -2v-56z" />
<glyph unicode="&#xe181;" d="M0 300q0 -41 29.5 -70.5t70.5 -29.5h300q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-300q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM100 100h400l200 200h105l295 98v-298h-425l-100 -100h-375zM100 300v200h300v-200h-300zM100 600v200h300v-200h-300z M100 1000h400l200 -200v-98l295 98h105v200h-425l-100 100h-375zM700 402v163l400 133v-163z" />
<glyph unicode="&#xe182;" d="M16.5 974.5q0.5 -21.5 16 -90t46.5 -140t104 -177.5t175 -208q103 -103 207.5 -176t180 -103.5t137 -47t92.5 -16.5l31 1l163 162q17 18 13.5 41t-22.5 37l-192 136q-19 14 -45 12t-42 -19l-118 -118q-142 101 -268 227t-227 268l118 118q17 17 20 41.5t-11 44.5 l-139 194q-14 19 -36.5 22t-40.5 -14l-162 -162q-1 -11 -0.5 -32.5z" />
<glyph unicode="&#xe183;" d="M0 50v212q0 20 10.5 45.5t24.5 39.5l365 303v50q0 4 1 10.5t12 22.5t30 28.5t60 23t97 10.5t97 -10t60 -23.5t30 -27.5t12 -24l1 -10v-50l365 -303q14 -14 24.5 -39.5t10.5 -45.5v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-20 0 -35 14.5t-15 35.5zM0 712 q0 -21 14.5 -33.5t34.5 -8.5l202 33q20 4 34.5 21t14.5 38v146q141 24 300 24t300 -24v-146q0 -21 14.5 -38t34.5 -21l202 -33q20 -4 34.5 8.5t14.5 33.5v200q-6 8 -19 20.5t-63 45t-112 57t-171 45t-235 20.5q-92 0 -175 -10.5t-141.5 -27t-108.5 -36.5t-81.5 -40 t-53.5 -36.5t-31 -27.5l-9 -10v-200z" />
<glyph unicode="&#xe184;" d="M100 0v100h1100v-100h-1100zM175 200h950l-125 150v250l100 100v400h-100v-200h-100v200h-200v-200h-100v200h-200v-200h-100v200h-100v-400l100 -100v-250z" />
<glyph unicode="&#xe185;" d="M100 0h300v400q0 41 -29.5 70.5t-70.5 29.5h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-400zM500 0v1000q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-1000h-300zM900 0v700q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-700h-300z" />
<glyph unicode="&#xe186;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v300h-200v100h200v100h-300v-300h200v-100h-200v-100zM600 300h200v100h100v300h-100v100h-200v-500 zM700 400v300h100v-300h-100z" />
<glyph unicode="&#xe187;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h100v200h100v-200h100v500h-100v-200h-100v200h-100v-500zM600 300h200v100h100v300h-100v100h-200v-500 zM700 400v300h100v-300h-100z" />
<glyph unicode="&#xe188;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v100h-200v300h200v100h-300v-500zM600 300h300v100h-200v300h200v100h-300v-500z" />
<glyph unicode="&#xe189;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 550l300 -150v300zM600 400l300 150l-300 150v-300z" />
<glyph unicode="&#xe190;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300v500h700v-500h-700zM300 400h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130v-300zM575 549 q0 -65 27 -107t68 -42h130v300h-130q-38 0 -66.5 -43t-28.5 -108z" />
<glyph unicode="&#xe191;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v300h-200v100h200v100h-300v-300h200v-100h-200v-100zM601 300h100v100h-100v-100zM700 700h100 v-400h100v500h-200v-100z" />
<glyph unicode="&#xe192;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v400h-200v100h-100v-500zM301 400v200h100v-200h-100zM601 300h100v100h-100v-100zM700 700h100 v-400h100v500h-200v-100z" />
<glyph unicode="&#xe193;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 700v100h300v-300h-99v-100h-100v100h99v200h-200zM201 300v100h100v-100h-100zM601 300v100h100v-100h-100z M700 700v100h200v-500h-100v400h-100z" />
<glyph unicode="&#xe194;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM400 500v200 l100 100h300v-100h-300v-200h300v-100h-300z" />
<glyph unicode="&#xe195;" d="M0 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM182 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM400 400v400h300 l100 -100v-100h-100v100h-200v-100h200v-100h-200v-100h-100zM700 400v100h100v-100h-100z" />
<glyph unicode="&#xe197;" d="M-14 494q0 -80 56.5 -137t135.5 -57h222v300h400v-300h128q120 0 205 86.5t85 207.5t-85 207t-205 86q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5zM300 200h200v300h200v-300h200 l-300 -300z" />
<glyph unicode="&#xe198;" d="M-14 494q0 -80 56.5 -137t135.5 -57h8l414 414l403 -403q94 26 154.5 104.5t60.5 178.5q0 120 -85 206.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5zM300 200l300 300 l300 -300h-200v-300h-200v300h-200z" />
<glyph unicode="&#xe199;" d="M100 200h400v-155l-75 -45h350l-75 45v155h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170z" />
<glyph unicode="&#xe200;" d="M121 700q0 -53 28.5 -97t75.5 -65q-4 -16 -4 -38q0 -74 52.5 -126.5t126.5 -52.5q56 0 100 30v-306l-75 -45h350l-75 45v306q46 -30 100 -30q74 0 126.5 52.5t52.5 126.5q0 24 -9 55q50 32 79.5 83t29.5 112q0 90 -61.5 155.5t-150.5 71.5q-26 89 -99.5 145.5 t-167.5 56.5q-116 0 -197.5 -81.5t-81.5 -197.5q0 -4 1 -11.5t1 -11.5q-14 2 -23 2q-74 0 -126.5 -52.5t-52.5 -126.5z" />
</font>
</defs></svg>

BIN
Sevomin.News/css/fonts/glyphicons-halflings-regular.ttf View File


BIN
Sevomin.News/css/fonts/glyphicons-halflings-regular.woff View File


BIN
Sevomin.News/favicon.ico View File

Before After

BIN
Sevomin.News/fonts/BKoodakBold.eot View File


BIN
Sevomin.News/fonts/BKoodakBold.ttf View File


BIN
Sevomin.News/fonts/BKoodakBold.woff View File


BIN
Sevomin.News/fonts/WebYekan.eot View File


+ 0
- 612
Sevomin.News/fonts/WebYekan.svg View File

@ -1,612 +0,0 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg>
<metadata>
Created by FontForge 1853326994 at Sun Oct 13 04:53:50 2013
By U-zoghal-god\zoghal,S-1-5-21-2758449068-1321902542-3097588897-1003
(c) 1392 Rita Development Corpertion(RitaCo)
</metadata>
<defs>
<font id="WebYekan" horiz-adv-x="0" >
<font-face
font-family="Web Yekan"
font-weight="400"
font-stretch="normal"
units-per-em="2048"
panose-1="0 0 4 0 0 0 0 0 0 0"
ascent="1638"
descent="-410"
bbox="-288 -1044 2334 2090"
underline-thickness="100"
underline-position="-850"
unicode-range="U+0020-FEFC"
/>
<missing-glyph horiz-adv-x="1024"
d="M256 128h512v1834h-512v-1834zM128 0v2090h768v-2090h-768z" />
<glyph glyph-name="uFC60" unicode="&#x651;&#x64e;" arabic-form="isolated"
d="M-6 1475v7h45q0 -100 80 -100t84 100h50q0 -100 82 -100t83 100h48q-1 -62 -37 -107t-88 -45t-117 57q-47 -57 -107 -57h-3q-58 0 -89 45t-31 100zM383 1755l-315 -168l-28 47l315 176z" />
<glyph glyph-name="uFC61" unicode="&#x651;&#x64f;" arabic-form="isolated"
d="M15 1486v7h45q0 -100 80 -100t84 100h50q0 -100 82 -100t83 100h48q-1 -62 -37 -107t-88 -45t-117 57q-47 -57 -107 -57h-3q-58 0 -89 45t-31 100zM322.5 1813q26.5 30 26.5 60t-26.5 52.5t-60.5 22.5q-78 0 -78 -86q0 -79 86 -79q26 0 52.5 30zM396 1868q0 -89 -50 -116
l-227 -121l-28 47l126 70q-78 45 -78 113q0 91 90 125q26 10 33 10q55 0 94.5 -37t39.5 -91z" />
<glyph glyph-name="uE818" unicode="&#x651;&#x64b;"
d="M-26 1516v7h45q0 -100 80 -100t84 100h50q0 -100 82 -100t83 100h48q-1 -62 -37 -107t-88 -45t-117 57q-47 -57 -107 -57h-3q-58 0 -89 45t-31 100zM382 1810l-315 -168l-28 47l315 173zM383 1927l-316 -172l-27 50l315 174z" />
<glyph glyph-name="uFC5E" unicode="&#x651;&#x64c;" arabic-form="isolated"
d="M5 1509v7h45q0 -100 80 -100t84 100h50q0 -100 82 -100t83 100h48q-1 -62 -37 -107t-88 -45t-117 57q-47 -57 -107 -57h-3q-58 0 -89 45t-31 100zM375 1881.5q27 29.5 27 59.5t-26.5 53t-59.5 23q-79 0 -79 -87q0 -78 85 -78q26 0 53 29.5zM448 1937q0 -91 -49 -117
l-283 -151l-28 48q51 33 63 53q0 34 -37 34t-57 -11l-20 36q56 19 85 19q57 0 72 -78l77 45q-79 45 -79 124.5t87 113.5q29 11 37 11q54 0 93 -37t39 -90z" />
<glyph glyph-name="uFC62" unicode="&#x651;&#x650;" arabic-form="isolated"
d="M-16 1782v7h45q0 -100 80 -100t84 100h50q0 -100 82 -100t83 100h48q-1 -62 -37 -107t-88 -45t-117 57q-47 -57 -107 -57h-3q-58 0 -89 45t-31 100zM378 1534l-314 -169l-29 48l315 175z" />
<glyph glyph-name="uFC5F" unicode="&#x651;&#x64d;" arabic-form="isolated"
d="M-6 2039v7h45q0 -100 80 -100t84 100h50q0 -100 82 -100t83 100h48q-1 -62 -37 -107t-88 -45t-117 57q-47 -57 -107 -57h-3q-58 0 -89 45t-31 100zM372 1626l-315 -169l-27 48l315 175zM372 1770l-315 -169l-27 47l315 174z" />
<glyph glyph-name="uFEF5" unicode="&#xfedf;&#xfe82;" horiz-adv-x="1054" arabic-form="isolated"
d="M621 1360h-451q-30 0 -88 -7t-80 -24t-59 -98l-164 64q65 139 121 184t231 57q53 4 193 4t297 -3v-177zM935 275q0 -130 -77.5 -202.5t-208.5 -72.5h-169q-351 0 -351 275v879h180v-800q0 -111 30.5 -142.5t140.5 -31.5h158q79 0 106 43q15 24 15 131v800h176v-879z" />
<glyph glyph-name="uFEF6" unicode="&#xfee0;&#xfe82;" horiz-adv-x="1054" arabic-form="final"
d="M555 1426h-451q-134 0 -169 -30q-21 -17 -59 -99l-164 64q66 139 122 184t231 57q52 4 192 4t298 -2v-178zM1084 0q-157 0 -246 118q-90 -118 -243 -118h-165q-351 0 -351 275v879h176v-800q0 -121 34 -154q20 -20 141 -20h154q78 0 105 43q16 26 16 131v800h180v-818
q0 -156 199 -156v-180z" />
<glyph glyph-name="uFEF7" unicode="&#xfedf;&#xfe84;" horiz-adv-x="1054" arabic-form="isolated"
d="M347 1419l-246 -124l-20 40l84 48q-75 38 -75 110q0 49 35 85t70 36h1q36 0 81 -20l-17 -36q-22 13 -54 13q-70 0 -70 -75t67 -75q54 0 122 42zM935 275q0 -130 -77.5 -202.5t-208.5 -72.5h-169q-351 0 -351 275v879h180v-800q0 -111 30.5 -142.5t140.5 -31.5h158
q79 0 106 43q15 24 15 131v800h176v-879z" />
<glyph glyph-name="uFEF8" unicode="&#xfee0;&#xfe84;" horiz-adv-x="1054" arabic-form="final"
d="M311 1412l-247 -124l-20 40l84 48q-75 38 -75 110q0 48 35 84q36 36 72 36t81 -19l-18 -36q-21 13 -54 13q-70 0 -70 -75t68 -75q54 0 121 42zM1084 0q-157 0 -246 118q-90 -118 -243 -118h-165q-351 0 -351 275v879h176v-800q0 -121 34 -154q20 -20 141 -20h154
q78 0 105 43q16 26 16 131v800h180v-818q0 -156 199 -156v-180z" />
<glyph glyph-name="uFEF9" unicode="&#xfedf;&#xfe88;" horiz-adv-x="1054" arabic-form="isolated"
d="M443 -330l-246 -124l-20 40l84 47q-75 39 -75 110q0 50 34 85q36 35 72 35t81 -18l-17 -37q-22 14 -54 14q-70 0 -70 -75t67 -75q54 0 122 41zM935 275q0 -130 -77.5 -202.5t-208.5 -72.5h-169q-351 0 -351 275v879h180v-800q0 -111 30.5 -142.5t140.5 -31.5h158
q79 0 106 43q15 24 15 131v800h176v-879z" />
<glyph glyph-name="uFEFA" unicode="&#xfee0;&#xfe88;" horiz-adv-x="1054" arabic-form="final"
d="M369 -323l-246 -124l-20 40l84 48q-75 39 -75 110q0 49 35 84.5t71 35.5t81 -19l-17 -36q-21 14 -54 14q-70 0 -70 -75t68 -75q53 0 121 41zM1084 0q-157 0 -246 118q-90 -118 -243 -118h-165q-351 0 -351 275v879h176v-800q0 -121 34 -154q20 -20 141 -20h154
q78 0 105 43q16 26 16 131v800h180v-818q0 -156 199 -156v-180z" />
<glyph glyph-name="uFEFB" unicode="&#xfedf;&#xfe8e;" horiz-adv-x="1054" arabic-form="isolated"
d="M935 275q0 -130 -77.5 -202.5t-208.5 -72.5h-169q-351 0 -351 275v879h180v-800q0 -111 30.5 -142.5t140.5 -31.5h158q79 0 106 43q15 24 15 131v800h176v-879z" />
<glyph glyph-name="uFEFC" unicode="&#xfee0;&#xfe8e;" horiz-adv-x="1054" arabic-form="final"
d="M1084 0q-157 0 -246 118q-90 -118 -243 -118h-165q-351 0 -351 275v879h176v-800q0 -121 34 -154q20 -20 141 -20h154q78 0 105 43q16 26 16 131v800h180v-818q0 -156 199 -156v-180z" />
<glyph glyph-name="uFDF2" unicode="&#xfedf;&#xfee0;&#xfeea;" horiz-adv-x="2253" arabic-form="isolated"
d="M501.5 198.5q51.5 44.5 51.5 111.5t-34 100l-145 144q-84 -79 -105 -106q-53 -68 -53 -137.5t47 -113t117 -43.5t121.5 44.5zM2123 275q0 -130 -77.5 -202.5t-209.5 -72.5h-173q-176 0 -262 70q-65 -54 -107.5 -62t-193 -8t-204.5 31q-27 16 -188 165
q-102 -216 -329 -216q-149 0 -246 97t-97 249.5t209 361.5l-51 58l121 122l539 -573q68 -72 92 -87q49 -30 230 -30q87 0 114 48q19 34 19 128v800h180v-836q0 -98 59 -122q40 -16 277 -16q80 0 106 43q15 24 15 131v800h177v-879zM1638 1415q0 -62 -36.5 -106.5t-89 -44.5
t-117.5 56q-46 -56 -104 -56q-117 0 -126 151h45q0 -100 80.5 -100t83.5 100h50q0 -100 82.5 -100t82.5 100h49z" />
<glyph glyph-name="u0622" unicode="&#x622;" horiz-adv-x="669" arabic-form="isolated"
d="M430 0h-175v1154h175v-1154zM676 1253h-451q-31 0 -89 -7t-80 -24t-59 -98l-163 64q65 140 121 184t231 57q53 4 193 4t297 -3v-177z" />
<glyph glyph-name="Hcircumflex" unicode="&#x622;" horiz-adv-x="575" arabic-form="final"
d="M604 0q-182 0 -266 46q-117 64 -117 229v851h180v-772q0 -122 36 -148t167 -26v-180zM725 1258h-450q-11 -2 -79 -8t-90 -25t-58 -96l-166 62q65 141 112 177q74 56 206 60t385 5h140v-175z" />
<glyph glyph-name="u0623" unicode="&#x623;" horiz-adv-x="575" arabic-form="isolated"
d="M419 1389l-246 -123l-20 40l83 47q-75 39 -75 110q0 49 35 85q36 36 71 36h1q36 0 81 -20l-18 -36q-21 14 -53 14q-70 0 -70 -75t67 -75q54 0 121 41zM374 0h-175v1154h175v-1154z" />
<glyph glyph-name="uFE84" unicode="&#x623;" horiz-adv-x="469" arabic-form="final"
d="M345 1382l-246 -124l-20 40l84 48q-75 38 -75 110q0 48 34 84q36 36 72 36t81 -19l-17 -36q-22 13 -54 13q-70 0 -70 -75t67 -75q54 0 122 42zM509 0q-228 0 -321 88q-62 57 -62 187v851h180v-772q0 -125 42 -153q26 -17 161 -21v-180z" />
<glyph glyph-name="u0624" unicode="&#x624;" horiz-adv-x="893" arabic-form="isolated"
d="M621 180v185q0 176 -139 176t-139 -185q0 -122 86 -157q46 -19 192 -19zM803 -23q0 -186 -134 -309t-321 -123h-233l-22 180h227q124 1 212 77t88 198q-218 0 -322 59q-140 77 -140 271t61 283q74 108 252 108q216 0 288 -165q44 -101 44 -353v-226zM453 890l-304 -154
l-25 50l104 57q-93 47 -93 121t41.5 119.5t104.5 45.5q25 0 87 -23l-23 -47q-25 19 -61 19t-64.5 -30t-28.5 -73q0 -81 79 -81q56 0 156 52z" />
<glyph glyph-name="uFE86" unicode="&#x624;" horiz-adv-x="893" arabic-form="final"
d="M615 180v171q0 112 -53 151t-96 39q-137 0 -137 -185q0 -122 90 -157q48 -19 196 -19zM919 0h-119q0 -201 -132.5 -328t-333.5 -127h-233l-22 180h227q125 1 214 77t89 198q-221 0 -325 58q-140 77 -140 271t62 283q75 107 253 107q221 0 295 -174q46 -109 46 -365h119
v-180zM484 890l-304 -154l-25 50l104 57q-90 49 -90 123t39.5 118.5t105.5 44.5q23 0 85 -23l-23 -47q-30 16 -62 16t-60.5 -29t-28.5 -72q0 -81 79 -81q59 0 156 51z" />
<glyph glyph-name="u0625" unicode="&#x625;" horiz-adv-x="575" arabic-form="isolated"
d="M448 -345l-246 -124l-20 40l84 48q-75 38 -75 110q0 49 35 84.5t71 35.5t81 -19l-17 -36q-21 13 -54 13q-70 0 -70 -75t68 -75q53 0 121 42zM374 0h-175v1154h175v-1154z" />
<glyph glyph-name="uFE88" unicode="&#x625;" horiz-adv-x="469" arabic-form="final"
d="M434 -367l-247 -124l-20 40l84 48q-75 38 -75 110q0 49 35 84.5t71 35.5t82 -19l-18 -36q-21 13 -54 13q-70 0 -70 -75t68 -75q54 0 121 42zM509 0q-228 0 -321 88q-62 57 -62 187v851h180v-772q0 -125 42 -153q26 -17 161 -21v-180z" />
<glyph glyph-name="u0626" unicode="&#x626;" horiz-adv-x="1289" arabic-form="isolated"
d="M1225 9v-3q0 -203 -119 -332t-319 -129h-282q-188 1 -307 137t-119 327v372h169v-392q0 -122 84 -195t209 -73h232q99 0 189 72.5t91 164.5q0 92 -60 110t-358 20v308q0 137 90.5 230t227.5 93h216l7 -169h-216q-105 0 -139 -101q-17 -53 -17 -190q262 -5 327 -43
q94 -53 94 -207zM444 778l-304 -154l-25 50l104 56q-90 50 -90 123t39 118t105 45q24 0 86 -22l-23 -48q-30 17 -64 17t-61.5 -30t-27.5 -73q0 -80 76 -80q62 0 160 51z" />
<glyph glyph-name="uFE8A" unicode="&#x626;" horiz-adv-x="1289" arabic-form="final"
d="M1318 0h-167q9 -31 9 -88q0 -159 -116 -263t-278 -104h-280q-215 0 -328.5 147.5t-114.5 370.5v322h180v-391q1 -129 87 -199t218 -70h231q95 0 159 54t65 147q0 46 -53 58q-58 12 -321 16l-16 180h725v-180zM450 781l-304 -152l-25 49l104 57q-92 49 -92 121t41.5 117.5
t91.5 45.5t99 -21l-22 -47q-29 15 -63 15t-62.5 -29t-28.5 -72q0 -81 79 -81q56 0 156 52z" />
<glyph glyph-name="uFE8B" unicode="&#x626;" horiz-adv-x="609" arabic-form="initial"
d="M339 353l-3 212h184v-272q0 -116 -74 -204.5t-187 -88.5h-295v180q283 0 315 11q60 22 60 162zM446 773l-303 -153l-25 49l103 56q-92 52 -92 124.5t41.5 117t104.5 44.5q24 0 85 -22l-22 -48q-26 19 -54 19q-99 0 -99 -101q0 -81 79 -81q57 0 155 51z" />
<glyph glyph-name="uFE8C" unicode="&#x626;" horiz-adv-x="703" arabic-form="medial"
d="M441 780l-303 -154l-25 50l103 57q-92 48 -92 120.5t41.5 119t104.5 46.5q25 0 86 -23l-22 -47q-28 15 -62.5 15t-63 -29.5t-28.5 -71.5q0 -82 79 -82q56 0 156 53zM728 0h-29q-93 0 -128.5 9.5t-95.5 60.5q-90 -70 -169 -70h-326v180q29 0 123 -1l93 -1h12q106 0 139 35
t33 153v199h184v-247q0 -90 33.5 -112t130.5 -26v-180z" />
<glyph glyph-name="u0627" unicode="&#x627;" horiz-adv-x="575" arabic-form="isolated"
d="M374 0h-175v1154h175v-1154z" />
<glyph glyph-name="uFE8E" unicode="&#x627;" horiz-adv-x="469" arabic-form="final"
d="M509 0q-228 0 -321 88q-62 57 -62 187v851h180v-772q0 -125 42 -153q26 -17 161 -21v-180z" />
<glyph glyph-name="u0628" unicode="&#x628;" horiz-adv-x="1606" arabic-form="isolated"
d="M978 -326q0 -52 -37 -89.5t-88 -37.5q-134 0 -134 127v2q0 103 129.5 103t129.5 -105zM1541 293q0 -113 -74 -203t-186 -90h-950q-115 0 -186.5 86.5t-71.5 203.5v275h180v-247q0 -76 28.5 -107t103.5 -31h840q75 0 104.5 31t29.5 107v247h182v-272z" />
<glyph glyph-name="uFE90" unicode="&#x628;" horiz-adv-x="1713" arabic-form="final"
d="M938 -334q0 -53 -36.5 -88.5t-88.5 -35.5q-135 0 -135 124q0 109 130 109t130 -109zM1746 0q-214 0 -286 70q-92 -70 -174 -70h-948q-112 0 -184 89t-73 204v272h180v-247q0 -77 30 -107.5t105 -30.5h837q75 0 103.5 30.5t28.5 107.5v247h183v-247q0 -138 198 -138v-180z
" />
<glyph glyph-name="uFE91" unicode="&#x628;" horiz-adv-x="586" arabic-form="initial"
d="M308 -336q0 -53 -36.5 -88.5t-88.5 -35.5q-134 0 -134 124q0 108 129.5 108t129.5 -108zM339 353l-3 212h184v-272q0 -116 -74 -204.5t-187 -88.5h-295v180q283 0 315 11q60 22 60 162z" />
<glyph glyph-name="uFE92" unicode="&#x628;" horiz-adv-x="703" arabic-form="medial"
d="M314 -326q0 -53 -36 -89t-89 -36q-135 0 -135 125q0 107 130 107t130 -107zM356 354l-2 211h185v-247q0 -88 60 -117q36 -17 140 -21v-180h-56q-153 0 -233 70q-90 -70 -172 -70h-296v180q279 0 314 13q60 21 60 161z" />
<glyph glyph-name="u067E" unicode="&#x67e;" horiz-adv-x="1606" arabic-form="isolated"
d="M951 -598q-1 -98 -121 -98t-120 98q0 109 114 109q52 0 89.5 -28.5t37.5 -77.5v-3zM786 -343q0 -96 -120 -96t-121 96q0 46 34 77.5t82.5 31.5t86.5 -29t38 -80zM1131 -343q-1 -96 -121 -96t-120 96q0 46 34 77.5t83 31.5t86.5 -28.5t37.5 -77.5v-3zM1541 293
q0 -113 -74 -203t-186 -90h-950q-115 0 -186.5 86.5t-71.5 203.5v275h180v-247q0 -76 28.5 -107t103.5 -31h840q75 0 104.5 31t29.5 107v247h182v-272z" />
<glyph glyph-name="uFB57" unicode="&#x67e;" horiz-adv-x="1713" arabic-form="final"
d="M719 -572v4q0 48 31.5 79t81.5 31t88 -30t38 -80q0 -97 -119.5 -97t-119.5 93zM793 -314v-4q0 -90 -119.5 -90t-119.5 94q0 47 32 79t79 32q128 0 128 -111zM899 -318v4q0 47 32 79t79 32q128 0 128 -111q0 -94 -119.5 -94t-119.5 90zM1746 0q-214 0 -286 70
q-92 -70 -174 -70h-948q-112 0 -184 89t-73 204v272h180v-247q0 -77 30 -107.5t105 -30.5h837q75 0 103.5 30.5t28.5 107.5v247h183v-247q0 -138 198 -138v-180z" />
<glyph glyph-name="uFB58" unicode="&#x67e;" horiz-adv-x="703" arabic-form="initial"
d="M419 -568q-1 -98 -121 -98t-120 98q0 110 112 110q52 0 90 -30t39 -80zM254 -314q0 -96 -120 -96t-121 96q0 48 32.5 79.5t80.5 31.5q128 0 128 -111zM599 -314q-1 -96 -121 -96t-120 96q0 48 32.5 79.5t80.5 31.5q128 0 128 -111zM621 293q0 -117 -71 -205t-185 -88
h-385v180h329q75 0 103.5 30.5t28.5 107.5v247h180v-272z" />
<glyph glyph-name="uFB59" unicode="&#x67e;" horiz-adv-x="739" arabic-form="medial"
d="M389 -568q0 -98 -120.5 -98t-120.5 98q0 110 112 110q52 0 90.5 -29.5t38.5 -80.5zM224 -314q0 -96 -121 -96t-121 96q0 48 33 79.5t81 31.5q128 0 128 -111zM569 -314q0 -96 -120.5 -96t-120.5 96q0 48 32.5 79.5t80.5 31.5q128 0 128 -111zM778 0h-63q-53 0 -102 9
q-46 19 -93 61q-86 -70 -171 -70h-388v180h334q75 0 104 30.5t29 107.5v247h181v-247q0 -89 36.5 -113.5t132.5 -24.5v-180z" />
<glyph glyph-name="u062A" unicode="&#x62a;" horiz-adv-x="1606" arabic-form="isolated"
d="M1541 293q0 -113 -74 -203t-186 -90h-950q-115 0 -186.5 86.5t-71.5 203.5v275h180v-247q0 -76 28.5 -107t103.5 -31h840q75 0 104.5 31t29.5 107v247h182v-272zM719 865q0 -46 -33 -77.5t-80 -31.5q-126 0 -126 109q0 98 119.5 98t119.5 -96v-2zM1064 865
q0 -46 -33.5 -77.5t-80.5 -31.5q-125 0 -125 109v2q0 96 119.5 96t119.5 -98z" />
<glyph glyph-name="uFE96" unicode="&#x62a;" horiz-adv-x="1713" arabic-form="final"
d="M1746 0q-214 0 -286 70q-92 -70 -174 -70h-948q-112 0 -184 89t-73 204v272h180v-247q0 -77 30 -107.5t105 -30.5h837q75 0 103.5 30.5t28.5 107.5v247h183v-247q0 -138 198 -138v-180zM766 865q0 -46 -33.5 -76t-79.5 -30q-128 0 -128 106q1 99 121 99t120 -99z
M1113 865q0 -46 -33.5 -76t-80.5 -30q-128 0 -128 106q0 99 121 99t121 -99z" />
<glyph glyph-name="uFE97" unicode="&#x62a;" horiz-adv-x="680" arabic-form="initial"
d="M606 293q0 -117 -72 -205t-185 -88h-385v180h329q75 0 104 30.5t29 107.5v247h180v-272zM123 851v5q1 99 121 99t120 -99q0 -46 -33 -77t-83 -31t-87.5 27.5t-37.5 75.5zM709 856q0 -46 -33.5 -77t-83.5 -31t-87 29t-37 79q0 99 120 99t121 -99z" />
<glyph glyph-name="uFE98" unicode="&#x62a;" horiz-adv-x="739" arabic-form="medial"
d="M778 0h-63q-53 0 -102 9q-46 19 -93 61q-86 -70 -171 -70h-388v180h334q75 0 104 30.5t29 107.5v247h181v-247q0 -89 36.5 -113.5t132.5 -24.5v-180zM380 863q0 -47 -33 -77t-79 -30q-127 0 -127 107q0 100 119.5 100t119.5 -100zM725 863q0 -47 -33 -77t-79 -30
q-127 0 -127 107q0 100 119.5 100t119.5 -100z" />
<glyph glyph-name="u062B" unicode="&#x62b;" horiz-adv-x="1606" arabic-form="isolated"
d="M1541 293q0 -113 -74 -203t-186 -90h-950q-115 0 -186.5 86.5t-71.5 203.5v275h180v-247q0 -76 28.5 -107t103.5 -31h840q75 0 104.5 31t29.5 107v247h182v-272zM491 798v4q0 97 119.5 97t119.5 -99q0 -45 -34 -77t-82 -32t-85.5 29.5t-37.5 77.5zM1076 800
q0 -46 -34 -77.5t-82 -31.5t-86 30t-38 79q0 99 120 99t120 -99zM901 1054q0 -47 -34.5 -77.5t-82.5 -30.5t-86 30t-38 78q0 100 120 100t121 -100z" />
<glyph glyph-name="uFE9A" unicode="&#x62b;" horiz-adv-x="1713" arabic-form="final"
d="M1746 0q-214 0 -286 70q-92 -70 -174 -70h-948q-112 0 -184 89t-73 204v272h180v-247q0 -77 30 -107.5t105 -30.5h837q75 0 103.5 30.5t28.5 107.5v247h183v-247q0 -138 198 -138v-180zM759 800q0 -45 -33.5 -77t-81.5 -32t-86 30t-38 79q0 99 119.5 99t119.5 -97v-2z
M1106 800q0 -46 -34 -78t-83 -32h-1q-48 0 -85.5 30t-37.5 78v2q1 99 121 99t120 -99zM930 1054q0 -47 -34 -77.5t-81 -30.5q-126 0 -126 108q1 100 121 100t120 -100z" />
<glyph glyph-name="uFE9B" unicode="&#x62b;" horiz-adv-x="680" arabic-form="initial"
d="M606 293q0 -117 -72 -205t-185 -88h-385v180h329q75 0 104 30.5t29 107.5v247h180v-272zM358 800q0 -46 -34 -78.5t-82 -32.5t-88 31q-38 31 -38 80q0 99 121 99t121 -99zM704 800q0 -46 -35 -78t-83 -32l-2 -1q-46 0 -84 31t-39 80v2q0 97 121.5 97t121.5 -99zM529 1054
q0 -48 -34 -79t-84 -31t-88 30t-38 80q0 100 122 100t122 -100z" />
<glyph glyph-name="uFE9C" unicode="&#x62b;" horiz-adv-x="739" arabic-form="medial"
d="M778 0h-63q-53 0 -102 9q-46 19 -93 61q-86 -70 -171 -70h-388v180h334q75 0 104 30.5t29 107.5v247h181v-247q0 -89 36.5 -113.5t132.5 -24.5v-180zM428 800q0 -46 -34 -78.5t-82.5 -32.5t-87 31t-38.5 80q0 99 121 99t121 -99zM774 800q0 -46 -34.5 -78.5t-83 -32.5
t-87 31t-38.5 80q0 99 121.5 99t121.5 -99zM599 1054q0 -48 -34 -79t-84 -31t-88 30t-38 80q0 100 122 100t122 -100z" />
<glyph glyph-name="u062C" unicode="&#x62c;" horiz-adv-x="1104" arabic-form="isolated"
d="M815 -336q0 -53 -35.5 -90t-91.5 -37t-95 33t-39 90q0 112 130 112t131 -108zM43 -310v6q0 296 263 442l550 303q-40 75 -118 88t-479 14l-23 176h435q376 0 377 -371l-593 -332q-241 -135 -241 -334q0 -145 114 -259t260 -114h525l16 -177h-494q-253 0 -422.5 155.5
t-169.5 402.5z" />
<glyph glyph-name="uFE9E" unicode="&#x62c;" horiz-adv-x="1104" arabic-form="final"
d="M350 547h-19c-22 0 -43 -1 -65 -2l-22 174h434c126 0 215 -26 282 -93c62 -61 97 -149 97 -236c0 -14 -1 -28 -3 -42l-164 -93c34 -69 122 -75 221 -75h38v-180c-135 0 -273 25 -311 126c-10 27 -15 57 -24 85l-353 -195c-116 -64 -240 -166 -240 -338
c0 -110 54 -198 114 -256c64 -63 138 -113 260 -113h525l15 -177h-492c-181 0 -322 64 -423 156c-97 88 -170 223 -170 395v13c3 146 62 287 150 366c34 31 74 54 114 76l551 303c-71 90 -204 106 -357 110h-17c-47 0 -94 -4 -141 -4zM691 -220c77 0 133 -33 133 -106
c0 -74 -60 -127 -131 -127c-74 0 -133 50 -133 122c0 75 56 111 131 111z" />
<glyph glyph-name="uFE9F" unicode="&#x62c;" horiz-adv-x="1031" arabic-form="initial"
d="M349 -323q0 -52 -35.5 -89t-91 -37t-95 33t-39.5 90q0 112 130.5 112t130.5 -109zM996 348l-412 -235q-145 -83 -304 -103q-79 -10 -323 -10v180q349 0 493 68q70 32 350 191q-35 74 -116 94q-35 8 -159 8l-315 2l-25 176h444q367 0 367 -371z" />
<glyph glyph-name="uFEA0" unicode="&#x62c;" horiz-adv-x="1031" arabic-form="medial"
d="M519 -334q-1 -50 -37 -88t-90 -38t-94 33t-40 89q0 110 130 110t131 -106zM1059 0q-254 6 -281 118q-12 45 -23 93q-259 -155 -371 -183t-427 -28v180q348 0 493 68q30 13 350 191q-35 73 -116 94q-33 8 -159 8l-315 2l-25 176h444q367 0 367 -371l-167 -92
q0 -76 230 -76v-180z" />
<glyph glyph-name="u0686" unicode="&#x686;" horiz-adv-x="1104" arabic-form="isolated"
d="M834 -478q0 -97 -120 -97t-121 97q0 110 112 110q53 0 91 -30t38 -80zM544 -113h6q45 0 82.5 -29.5t38.5 -80.5q-1 -95 -121 -95t-120 95q0 48 32 79t82 31zM39 -310v6q0 297 262 442l550 303q-39 75 -117 88t-479 14l-22 176h433q376 0 377 -371l-593 -332
q-240 -134 -240 -334q0 -146 113.5 -259.5t260.5 -113.5h525l15 -177h-493q-253 0 -422.5 155.5t-169.5 402.5zM892 -113h6q45 0 82.5 -29.5t38.5 -80.5q-1 -95 -121 -95t-120 95q0 48 32 79t82 31z" />
<glyph glyph-name="uFB7B" unicode="&#x686;" horiz-adv-x="1104" arabic-form="final"
d="M826 -478q0 -97 -120 -97t-120 97q0 110 112 110q51 0 89.5 -29.5t38.5 -80.5zM665 -223q0 -95 -120.5 -95t-120.5 95q0 48 32 79t82 31t88.5 -29.5t38.5 -80.5zM519 551q-82 0 -241 -6l-23 174h434q376 0 376 -371l-164 -93q23 -55 114 -70q30 -5 145 -5v-180
q-163 5 -230 42t-81 84q-10 33 -24 85l-352 -195q-240 -133 -240 -334q0 -146 113.5 -259.5t259.5 -113.5h525l15 -177h-492q-253 0 -423 156.5t-170 407.5q0 296 264 442l551 303q-71 110 -357 110zM1011 -223q0 -95 -120.5 -95t-120.5 95q0 48 33 79t82.5 31t87.5 -29.5
t38 -80.5zM278 543l-14 1q14 0 14 -1z" />
<glyph glyph-name="uFB7C" unicode="&#x686;" horiz-adv-x="1031" arabic-form="initial"
d="M503 -568q0 -97 -121 -97t-121 97q0 110 113 110q51 0 90 -29.5t39 -80.5zM339 -314q0 -94 -120.5 -94t-120.5 94q0 48 32 79.5t82.5 31.5t88.5 -29.5t38 -81.5zM683 -314q0 -94 -120 -94t-120 94q0 48 32 79.5t80 31.5q128 0 128 -111zM996 348l-412 -235
q-145 -83 -304 -103q-79 -10 -323 -10v180q349 0 493 68q70 32 350 191q-35 74 -116 94q-35 8 -159 8l-315 2l-25 176h444q367 0 367 -371z" />
<glyph glyph-name="uFB7D" unicode="&#x686;" horiz-adv-x="1031" arabic-form="medial"
d="M525 -568q-1 -98 -121 -98t-120 98q0 108 120 108t121 -108zM360 -314q0 -96 -120 -96t-120 96q0 45 34 77t80 32q126 0 126 -109zM705 -314q-1 -96 -121 -96t-120 96q0 45 34 77t83 32t86.5 -29t37.5 -80zM1059 0q-254 6 -281 118q-12 45 -23 93q-259 -155 -371 -183
t-427 -28v180q348 0 493 68q30 13 350 191q-35 73 -116 94q-33 8 -159 8l-315 2l-25 176h444q367 0 367 -371l-167 -92q0 -76 230 -76v-180z" />
<glyph glyph-name="u062D" unicode="&#x62d;" horiz-adv-x="1104" arabic-form="isolated"
d="M1131 -868h-493q-288 0 -460 203q-133 155 -133 351v39q1 4 5 39q28 247 259 374l551 303q-61 109 -344 109h-56l-196 -4l-25 173h435q370 0 376 -371l-592 -332q-242 -136 -242 -334q0 -143 115 -258t259 -115h525z" />
<glyph glyph-name="uFEA2" unicode="&#x62d;" horiz-adv-x="1104" arabic-form="final"
d="M1151 0q-272 0 -311 126q-8 25 -25 85l-351 -195q-241 -134 -241 -334q0 -145 114.5 -259t260.5 -114h525l15 -177h-494q-286 0 -459 203q-134 157 -134 351v39q1 1 5 39q31 249 259 374l555 303q-38 71 -106 85t-494 17l-25 176h435q370 0 376 -371l-163 -93
q11 -75 258 -75v-180z" />
<glyph glyph-name="uFEA3" unicode="&#x62d;" horiz-adv-x="1031" arabic-form="initial"
d="M996 348l-412 -235q-138 -79 -304 -100q-68 -9 -323 -13v180h144q198 0 367 76q29 14 332 183q-29 67 -122 92q-24 6 -468 12l-25 176h444q365 0 367 -371z" />
<glyph glyph-name="uFEA4" unicode="&#x62d;" horiz-adv-x="1031" arabic-form="medial"
d="M1059 0q-249 0 -281 118q-6 21 -13 50l-10 43q-243 -147 -363 -177t-435 -34v180h144q192 0 367 76q50 22 332 183q-30 69 -122 92q-23 6 -468 12l-25 176h444q361 0 367 -374l-167 -90q0 -75 230 -75v-180z" />
<glyph glyph-name="u062E" unicode="&#x62e;" horiz-adv-x="1104" arabic-form="isolated"
d="M43 -310v6q0 296 263 442l550 303q-40 75 -118 88t-479 14l-23 176h435q376 0 377 -371l-593 -332q-241 -135 -241 -334q0 -145 114 -259t260 -114h525l16 -177h-494q-253 0 -422.5 155.5t-169.5 402.5zM495 1045v4q0 102 131.5 102t131.5 -106q0 -53 -36.5 -89.5
t-88.5 -36.5q-138 0 -138 126z" />
<glyph glyph-name="uFEA6" unicode="&#x62e;" horiz-adv-x="1104" arabic-form="final"
d="M508 551q-83 0 -242 -6l-22 174h434q376 0 376 -371l-164 -93q22 -55 114 -70q30 -5 145 -5v-180q-164 5 -231 42t-80 84q-10 33 -24 85l-353 -195q-240 -133 -240 -334q0 -146 114 -259.5t260 -113.5h525l15 -177h-492q-254 0 -423.5 156.5t-169.5 407.5q0 296 264 442
l551 303q-71 110 -357 110z" />
<glyph glyph-name="uFEA7" unicode="&#x62e;" horiz-adv-x="1031" arabic-form="initial"
d="M996 348l-412 -235q-145 -83 -304 -103q-79 -10 -323 -10v180q349 0 493 68q70 32 350 191q-35 74 -116 94q-35 8 -159 8l-315 2l-25 176h444q367 0 367 -371zM649 1041q0 -51 -37 -88t-88 -37q-136 0 -136 125q0 108 130.5 108t130.5 -108z" />
<glyph glyph-name="uFEA8" unicode="&#x62e;" horiz-adv-x="1031" arabic-form="medial"
d="M1059 0q-254 6 -281 118q-12 45 -23 93q-259 -155 -371 -183t-427 -28v180q348 0 493 68q30 13 350 191q-35 73 -116 94q-33 8 -159 8l-315 2l-25 176h444q367 0 367 -371l-167 -92q0 -76 230 -76v-180zM609 1070v-3q0.0270386 -1.37842 0.0270386 -2.74585
q0 -49.2272 -35.027 -84.2542q-36 -36 -92 -36t-94.5 34.5t-38.5 91.5q0 106 130 106t130 -106z" />
<glyph glyph-name="u062F" unicode="&#x62f;" horiz-adv-x="986" arabic-form="isolated"
d="M860 439q84 -89 84 -200.5t-78 -175t-188 -63.5h-558l-25 180h571q100 0 100 70q0 36 -27 65l-405 431l121 122z" />
<glyph glyph-name="uFEAA" unicode="&#x62f;" horiz-adv-x="1171" arabic-form="final"
d="M1225 0h-82q-102 0 -228 124q-81 -124 -239 -124h-558l-25 180h572q99 0 99 68q0 38 -28 67l-405 431l122 122l541 -573q70 -75 106 -95t125 -20v-180z" />
<glyph glyph-name="u0630" unicode="&#x630;" horiz-adv-x="986" arabic-form="isolated"
d="M859 439q82 -87 82 -199t-75 -176t-190 -64h-558l-25 180h572q99 0 99 70q0 36 -28 65l-405 431l122 122zM590 1169q0 -53 -36 -89.5t-89 -36.5q-136 0 -136 126q0 106 130.5 106t130.5 -106z" />
<glyph glyph-name="uFEAC" unicode="&#x630;" horiz-adv-x="1171" arabic-form="final"
d="M1224 0h-84q-101 0 -225 124q-50 -72 -100.5 -98t-138.5 -26h-561l-25 180h573q98 0 98 68q0 39 -26 67l-406 431l121 122l541 -573q67 -71 105 -93t128 -22v-180zM475 1076q0 -51 -36.5 -87t-88.5 -36q-136 0 -136 123q0 109 130 109t131 -109z" />
<glyph glyph-name="u0631" unicode="&#x631;" horiz-adv-x="870" arabic-form="isolated"
d="M764 31q0 -199 -125.5 -342.5t-321.5 -143.5h-243l-29 185h203q130 0 230 67t101 192v576h185v-534z" />
<glyph glyph-name="uFEAE" unicode="&#x631;" horiz-adv-x="915" arabic-form="final"
d="M753 85v-8q0 -222 -117.5 -377t-337.5 -155h-233l-29 180h248q116 1 201 75t85 189v576h180v-259q0 -122 196 -126v-180q-136 0 -193 85z" />
<glyph glyph-name="u0632" unicode="&#x632;" horiz-adv-x="870" arabic-form="isolated"
d="M761 31q0 -198 -127 -342t-323 -144h-238l-30 185h202q131 0 231 67t100 192v576h185v-534zM491 1054v4q0 105 131.5 105t131.5 -109q0 -53 -36 -89.5t-89 -36.5q-138 0 -138 126z" />
<glyph glyph-name="uFEB0" unicode="&#x632;" horiz-adv-x="915" arabic-form="final"
d="M753 85v-8q0 -222 -117.5 -377t-337.5 -155h-233l-29 180h248q112 1 199 77t87 187v576h180v-259q0 -126 196 -126v-180q-142 2 -193 85zM481 1045v4q0 102 131.5 102t131.5 -106q0 -53 -36 -89.5t-89 -36.5q-138 0 -138 126z" />
<glyph glyph-name="u0698" unicode="&#x698;" horiz-adv-x="922" arabic-form="isolated"
d="M766 31q0 -199 -127 -342.5t-324 -143.5h-239l-28 185h202q130 0 230.5 67t100.5 192v576h185v-534zM604 800q0 -47 -33 -79t-81.5 -32t-87.5 31t-39 80q0 96 120.5 96t120.5 -96zM954 800q0 -48 -33.5 -79.5t-83.5 -31.5t-88.5 30.5t-38.5 80.5q0 96 122 96t122 -96z
M747 977q-33 -33 -83.5 -33t-89 29.5t-38.5 80.5q0 97 122 97t122 -92q0 -49 -33 -82z" />
<glyph glyph-name="uFB8B" unicode="&#x698;" horiz-adv-x="915" arabic-form="final"
d="M753 85v-8q0 -222 -117.5 -377t-337.5 -155h-233l-29 180h248q112 1 199 77t87 187v576h180v-259q0 -126 196 -126v-180q-142 2 -193 85zM573 808v-4q-1 -46 -35 -78t-82 -32t-85 30.5t-37 79.5q0 97 119.5 97t119.5 -93zM920 804q0 -48 -34 -79t-82 -31t-86 31t-39 79
q1 97 121 97t120 -97zM744 1059q0 -48 -33.5 -79t-82.5 -31t-87 31t-38 79q1 97 121 97t120 -97z" />
<glyph glyph-name="u0633" unicode="&#x633;" horiz-adv-x="2253" arabic-form="isolated"
d="M2163 289q-1 -127 -63 -217t-184 -90t-251 122q-87 -122 -212 -122q-98 0 -203 72q0 -215 -118 -362t-328 -147h-274q-195 0 -320 135t-125 331v374h176v-385q0 -124 81.5 -199.5t207.5 -75.5h234q126 0 205 76t79 202v562h180v-267q0 -62 46.5 -103t109.5 -41
q124 0 124 112v299h177v-265q0 -62 45.5 -104t108.5 -42q126 0 126 112v299h178v-276z" />
<glyph glyph-name="uFEB2" unicode="&#x633;" horiz-adv-x="2298" arabic-form="final"
d="M2334 0q-105 2 -141 13q-69 18 -109 83q-80 -114 -218 -114t-243 122q-97 -127 -229 -127q-95 0 -180 77q0 -212 -120 -360t-325 -149h-280q-194 0 -319 135t-125 331v374h180v-382q0 -123 81.5 -200.5t204.5 -77.5h235q126 0 207 76t81 202v562h180v-267q0 -64 45 -104
t109 -40q121 0 121 112v299h180v-265q0 -62 45.5 -104t108.5 -42q123 0 123 112v299h178v-276q0 -62 66 -93q19 -8 144 -16v-180z" />
<glyph glyph-name="uFEB3" unicode="&#x633;" horiz-adv-x="1455" arabic-form="initial"
d="M1390 289q0 -133 -64 -221t-193 -88t-245 121q-103 -119 -222 -119t-242 142q-108 -124 -235 -124h-229v180h216q125 0 125 134v251h177v-265q0 -64 46 -105t111 -41q123 0 123 112v299h175v-265q0 -63 45.5 -104.5t109.5 -41.5q126 0 126 112v299h176v-276z" />
<glyph glyph-name="uFEB4" unicode="&#x633;" horiz-adv-x="1561" arabic-form="medial"
d="M1589 0q-105 2 -140 13q-70 19 -106 83q-83 -116 -209 -116t-246 119q-104 -119 -256 -119t-247 126q-59 -77 -201 -97q-63 -9 -234 -9v180h151q99 0 144 29t45 127v229h176v-267q0 -63 46 -103.5t109 -40.5q123 0 123 112v299h177v-268q0 -60 45.5 -101.5t109.5 -41.5
q125 0 125 112v299h178v-276q0 -63 65 -93q19 -9 145 -16v-180z" />
<glyph glyph-name="u0634" unicode="&#x634;" horiz-adv-x="2253" arabic-form="isolated"
d="M2163 289q-1 -127 -63 -217t-188 -90t-247 122q-97 -122 -201 -122t-214 72q-3 -212 -122 -360t-324 -149h-274q-192 0 -318 136t-127 330v374h176v-382q1 -127 80.5 -202.5t205.5 -75.5h237q123 0 203.5 77.5t80.5 200.5v562h180v-267q0 -62 46.5 -103t109.5 -41
q124 0 124 112v299h177v-265q0 -64 44.5 -105t109.5 -41q126 0 126 112v299h178v-276zM1311 798v4q0 97 119.5 97t119.5 -99q0 -45 -34 -77t-82 -32t-85.5 29.5t-37.5 77.5zM1896 800q0 -46 -34 -77.5t-82 -31.5t-86 30t-38 79q0 99 120 99t120 -99zM1721 1054
q0 -47 -34.5 -77.5t-82.5 -30.5t-86 30t-38 78q0 100 120 100t121 -100z" />
<glyph glyph-name="uFEB6" unicode="&#x634;" horiz-adv-x="2298" arabic-form="final"
d="M2328 0h-64q-125 0 -189 99q-81 -115 -223 -115t-237 122q-96 -126 -225 -126q-98 0 -182 74q-3 -212 -122 -360.5t-325 -148.5h-278q-192 0 -318 136.5t-126 329.5v374h180v-382q0 -126 80 -202t206 -76h234q123 0 206 77.5t83 200.5v562h180v-267q0 -62 43 -103
t105 -41q127 0 127 112v299h180v-265q0 -65 44 -105.5t109 -40.5q124 0 124 112v299h178v-276q0 -109 210 -109v-180zM1508 795q0 -45 -34.5 -76t-83 -31t-86.5 28.5t-38 78.5q0 100 121 100t121 -100zM1856 795q0 -46 -34 -76.5t-83.5 -30.5t-87.5 28.5t-38 78.5
q0 100 121.5 100t121.5 -100zM1649 974.5q-34 -33.5 -84 -33.5t-87.5 29t-37.5 80q0 99 121 99q45 0 83.5 -25.5t38.5 -70.5t-34 -78.5z" />
<glyph glyph-name="uFEB7" unicode="&#x634;" horiz-adv-x="1455" arabic-form="initial"
d="M1390 289q0 -131 -64 -219t-198 -88t-238 122q-104 -120 -226 -120t-238 142q-121 -126 -237 -126h-229v180h216q125 0 125 131v253l177 1v-265q0 -65 44 -105.5t109 -40.5q127 0 127 112v299h175v-265q0 -64 45 -105t110 -41q126 0 126 112v299h176v-276zM761 800
q0 -46 -33.5 -78.5t-81.5 -32.5t-85.5 31t-37.5 80q0 96 119 96t119 -96zM1109 800q0 -48 -33.5 -79.5t-82.5 -31.5t-87 31t-38 80q0 96 120 96t121 -96zM933 1054q-1 -48 -35 -79t-82 -31t-86 31t-39 79q0 97 121 97t121 -97z" />
<glyph glyph-name="uFEB8" unicode="&#x634;" horiz-adv-x="1561" arabic-form="medial"
d="M1589 0h-69l-65 11q-73 13 -116 88q-83 -117 -208 -117t-246 122q-108 -122 -256 -122t-244 127q-69 -78 -202 -99q-63 -10 -233 -10v180h165q93 0 124 23q51 37 51 133v229h176v-267q0 -64 45.5 -104t109.5 -40q123 0 123 112v299h177v-265q0 -64 45.5 -105t109.5 -41
q125 0 125 112v299h178v-276q0 -109 210 -109v-180zM716 851q0 -46 -33.5 -78t-82 -32t-87 30.5t-38.5 79.5q0 98 120.5 98t120.5 -98zM1065 851q0 -47 -33.5 -78.5t-83 -31.5t-87.5 30t-38 80q0 98 121 98t121 -98zM860 1028.5q-33 -33.5 -83.5 -33.5t-89 30.5t-38.5 80.5
q0 97 121 97q46 0 84.5 -24.5t38.5 -70.5t-33 -79.5z" />
<glyph glyph-name="u0635" unicode="&#x635;" horiz-adv-x="2275" arabic-form="isolated"
d="M2050 346q0 54 -32 124t-78 71q-89 0 -194 -124t-157 -237h346q115 0 115 166zM2224 318q0 -147 -85.5 -232.5t-232.5 -85.5h-488q-154 0 -188 95q0 -219 -119 -384.5t-327 -165.5h-279q-194 1 -319 145t-125 341v354h180v-396q1 -101 89 -180t190 -79h250q106 0 192 77
t86 182v576h185v-267q0 -114 168 -118q79 204 189 345q152 194 306 194t245 -134q14 -21 33 -55q6 -20 28 -82t22 -130z" />
<glyph glyph-name="uFEBA" unicode="&#x635;" horiz-adv-x="2253" arabic-form="final"
d="M1926 180q99 0 99 179.5t-107 179.5q-157 0 -339 -359h347zM2284 0h-818q-202 0 -241 95q0 -238 -112 -394t-340 -156h-278q-201 0 -317.5 140.5t-116.5 345.5v354h175v-396q0 -110 81 -187t192 -77h252q105 0 193.5 80t88.5 184v576h181v-267q0 -117 171 -118
q214 541 495 541q184 0 278 -180q42 -81 42 -176.5t-27 -184.5h101v-180z" />
<glyph glyph-name="uFEBB" unicode="&#x635;" horiz-adv-x="1548" arabic-form="initial"
d="M1269 354q0 121 -55 166q-23 19 -54 19q-159 0 -345 -359h353q101 0 101 174zM1449 349q0 -76 -23 -158q-34 -123 -98 -157t-194 -34h-456q-187 0 -257 146q-107 -146 -243 -146h-218v180h200q126 0 126 134v251h178v-231q0 -153 174 -154q208 539 497 539q66 0 140 -41
q174 -98 174 -329z" />
<glyph glyph-name="uFEBC" unicode="&#x635;" horiz-adv-x="1561" arabic-form="medial"
d="M1269 354q0 121 -55 166q-23 19 -54 19q-159 0 -345 -359h353q101 0 101 174zM1589 0h-911q-187 0 -257 146q-107 -146 -243 -146h-218v180h200q126 0 126 134v251h178v-231q0 -153 174 -154q208 539 497 539q72 0 143 -41q171 -100 171 -330q0 -69 -28 -168h168v-180z
" />
<glyph glyph-name="u0636" unicode="&#x636;" horiz-adv-x="2275" arabic-form="isolated"
d="M2053 340q0 60 -31.5 130.5t-81.5 70.5q-89 0 -195 -125.5t-156 -235.5h349q115 0 115 160zM1908 719q143 0 229.5 -125.5t86.5 -274.5t-85 -234t-233 -85h-488q-163 0 -188 95q-2 -217 -122 -383.5t-327 -166.5h-276q-196 0 -320 143.5t-124 342.5v354h180v-396
q0 -103 87.5 -181t191.5 -78h250q99 0 188.5 80.5t89.5 178.5v576h185v-267q0 -118 171 -118q225 539 504 539zM1879 1053q0 -52 -37 -88.5t-88 -36.5q-136 0 -136 125q0 107 130.5 107t130.5 -107z" />
<glyph glyph-name="uFEBE" unicode="&#x636;" horiz-adv-x="2253" arabic-form="final"
d="M1924 180q99 0 99 179.5t-108 179.5q-87 0 -200 -139q-86 -106 -137 -220h346zM2283 0h-819q-213 0 -240 95q-4 -240 -106 -384q-118 -166 -348 -166h-276q-197 0 -316 143t-119 343v354h175v-396q0 -107 82.5 -185.5t189.5 -78.5h253q101 0 191.5 82t90.5 182v576h180
v-267q0 -118 172 -118q222 541 495 541q70 0 146 -43q171 -99 171 -333q0 -86 -26 -165h104v-180zM1863 1039q0 -52 -37 -88t-88 -36q-137 0 -137 124q0 107 131 107t131 -107z" />
<glyph glyph-name="uFEBF" unicode="&#x636;" horiz-adv-x="1548" arabic-form="initial"
d="M1162 539h-2q-90 0 -204 -138q-86 -104 -141 -221h350q101 0 101 179.5t-104 179.5zM1449 351q0 -79 -23 -160q-33 -121 -106 -161q-55 -30 -186 -30h-456q-180 0 -259 146q-105 -146 -243 -146h-216v180h200q126 0 126 131v253l178 1v-231q0 -154 176 -154
q222 539 498 539q71 0 140 -41q171 -103 171 -327zM1023 1068v-4q0 -52 -37 -88.5t-88 -36.5q-134 0 -134 125q0 107 129.5 107t129.5 -103z" />
<glyph glyph-name="uFEC0" unicode="&#x636;" horiz-adv-x="1561" arabic-form="medial"
d="M1162 539h-2q-90 0 -204 -138q-86 -104 -141 -221h350q101 0 101 179.5t-104 179.5zM1589 0h-911q-180 0 -259 146q-105 -146 -243 -146h-216v180h200q126 0 126 131v253l178 1v-231q0 -154 176 -154q222 539 498 539q72 0 140 -41q168 -104 168 -330q0 -85 -27 -168h170
v-180zM1028 1068q0 -52 -37.5 -88t-89.5 -36q-135 0 -135 124q0 108 131 108t131 -108z" />
<glyph glyph-name="u0637" unicode="&#x637;" horiz-adv-x="1054" arabic-form="isolated"
d="M809 369q0 170 -109 170q-89 0 -202 -139q-84 -102 -139 -220h346q44 0 74 48t30 141zM371 511q172 208 311 208t225.5 -126.5t86.5 -266.5t-78.5 -233t-210.5 -93h-624l-36 180h151v974h175v-643z" />
<glyph glyph-name="uFEC2" unicode="&#x637;" horiz-adv-x="1043" arabic-form="final"
d="M809 369q0 170 -109 170q-89 0 -202 -139q-84 -102 -139 -220h346q44 0 74 48t30 141zM1061 0h-985l-36 180h154v974h176v-643q171 208 313 208q57 0 132 -41q174 -97 174 -367q0 -58 -25 -131h97v-180z" />
<glyph glyph-name="uFEC3" unicode="&#x637;" horiz-adv-x="986" arabic-form="initial"
d="M621 536q-87 0 -191 -123t-151 -235h350q104 0 104 163q0 195 -112 195zM629 0h-665v180h154v974h180v-643q172 205 310 205t224 -117t86 -263t-74 -241t-215 -95z" />
<glyph glyph-name="uFEC4" unicode="&#x637;" horiz-adv-x="949" arabic-form="medial"
d="M696 369q0 170 -108 170q-89 0 -203 -139q-85 -104 -140 -220h348q43 0 73 48t30 141zM966 0h-1016v180h131v974h175v-643q172 208 314 208q58 0 133 -41q168 -94 168 -338q0 -95 -23 -160h118v-180z" />
<glyph glyph-name="u0638" unicode="&#x638;" horiz-adv-x="1054" arabic-form="isolated"
d="M703 180q103 0 103 179.5t-107 179.5q-89 0 -192 -123.5t-151 -235.5h347zM703 0h-624l-36 180h151v974h176v-643q166 208 305.5 208t227.5 -121.5t88 -263t-74.5 -238t-213.5 -96.5zM838 1054q0 -53 -36 -89.5t-88 -36.5q-138 0 -138 126q0 109 131 109t131 -109z" />
<glyph glyph-name="uFEC6" unicode="&#x638;" horiz-adv-x="1043" arabic-form="final"
d="M703 180q103 0 103 179.5t-107 179.5q-89 0 -192 -123.5t-151 -235.5h347zM1061 0h-987l-34 180h154v974h176v-643q166 208 310 208q64 0 134 -41q175 -104 175 -304q0 -118 -26 -194h98v-180zM829 1053q0 -52 -37 -88.5t-88 -36.5q-134 0 -134 125q0 107 129.5 107
t129.5 -107z" />
<glyph glyph-name="uFEC7" unicode="&#x638;" horiz-adv-x="986" arabic-form="initial"
d="M621 536q-87 0 -191 -123t-151 -235h350q104 0 104 163q0 195 -112 195zM629 0h-665v180h154v974h180v-643q172 205 310 205t224 -117t86 -263t-74 -241t-215 -95zM744 1036q0 -53 -36 -89.5t-89 -36.5q-136 0 -136 126q1 107 131 107t130 -107z" />
<glyph glyph-name="uFEC8" unicode="&#x638;" horiz-adv-x="949" arabic-form="medial"
d="M590 180q104 0 104 179.5t-108 179.5q-88 0 -203 -138q-92 -109 -139 -221h346zM966 0h-1017l1 180h131v974h175v-643q166 208 312 208q66 0 132 -41q171 -108 171 -302q0 -117 -26 -196h121v-180zM753 1068q0 -53 -36.5 -90t-88.5 -37q-137 0 -137 127q0 106 131 106
t131 -106z" />
<glyph glyph-name="u0639" unicode="&#x639;" horiz-adv-x="1090" arabic-form="isolated"
d="M663 719h7q144 0 305 -135l-85 -138q-153 104 -250 104t-124 -97q-1 -3 -4.5 -16.5t-6.5 -23.5v-30q0 -73 40 -138t109 -65h357l25 -180h-595q-122 0 -187 -95t-65 -241t100 -250.5t264 -104.5h488l24 -177h-472q-247 0 -417 154t-170 399q0 342 379 509q-59 107 -59 216
q0 150 99.5 229.5t237.5 79.5z" />
<glyph glyph-name="uFECA" unicode="&#x639;" horiz-adv-x="1115" arabic-form="final"
d="M860 491q0 25 -30 39t-57 15h-284l199 -209q172 95 172 155zM1026 588q17 -42 17 -58v-18q0 -103 -55.5 -168.5t-173.5 -129.5q80 -34 340 -34v-180q-184 0 -266 15q-152 27 -233 118q-432 -183 -432 -456q0 -138 115 -253t250 -115h525l18 -177h-496q-240 0 -412 163
t-172 402q0 357 472 559l-239 235q58 104 121 228h384q185 0 237 -131z" />
<glyph glyph-name="uFECB" unicode="&#x639;" horiz-adv-x="904" arabic-form="initial"
d="M865 0h-905v180h256q-56 129 -56 231t59.5 182t141.5 103t165 23q144 0 277 -133l-89 -140q-142 108 -241 108q-142 0 -142 -173q0 -75 38 -138t109 -63h358z" />
<glyph glyph-name="uFECC" unicode="&#x639;" horiz-adv-x="831" arabic-form="medial"
d="M586 489q0 24 -28 40t-55 16h-287l197 -207q173 88 173 151zM860 0q-168 0 -248 20t-191 111q-113 -93 -225 -120q-26 -6 -239 -11v180q251 0 316 65l-250 246q58 104 121 228h386q185 0 235 -130q16 -43 16 -69q0 -110 -61 -181q-39 -45 -155 -118q107 -41 295 -41v-180
z" />
<glyph glyph-name="u063A" unicode="&#x63a;" horiz-adv-x="1090" arabic-form="isolated"
d="M1064 -868h-471q-243 0 -415 156t-172 397q0 340 379 509q-61 113 -61 202q0 146 90 236t244 90h2q156 0 314 -138l-86 -138q-147 104 -244 104q-141 0 -141 -162q0 -80 37 -144t111 -64h358l25 -180h-595q-121 0 -186 -96t-65 -222q0 -166 98 -269.5t264 -103.5h489z
M826 1050q0 -53 -36 -89.5t-89 -36.5q-136 0 -136 126q1 108 131 108t130 -108z" />
<glyph glyph-name="uFECE" unicode="&#x63a;" horiz-adv-x="1115" arabic-form="final"
d="M860 494l-9 22q-31 29 -78 29h-284l199 -207q172 91 172 156zM51 -315v6q0 379 472 565l-239 235q58 104 121 228h384q192 0 240 -131q14 -38 14 -67t-9 -91q-14 -98 -219 -216q89 -34 341 -34l-2 -180l-163 5q-227 8 -337 128q-433 -193 -433 -456q0 -141 112 -254.5
t253 -113.5h527l18 -177h-496q-241 0 -412.5 159.5t-171.5 393.5zM838 1045q0 -53 -36 -89.5t-88 -36.5q-138 0 -138 126q0 106 131 106t131 -106z" />
<glyph glyph-name="uFECF" unicode="&#x63a;" horiz-adv-x="904" arabic-form="initial"
d="M865 0h-905v180h256q-58 117 -58 221q0 144 92 232t252 88t301 -135l-89 -140q-148 108 -239 108q-144 0 -144 -169q0 -77 37 -141t110 -64h358zM599 1041q0 -51 -37 -88t-88 -37q-136 0 -136 125q0 108 130 108t131 -108z" />
<glyph glyph-name="uFED0" unicode="&#x63a;" horiz-adv-x="831" arabic-form="medial"
d="M586 489l-10 27q-10 29 -73 29h-287l197 -207q173 90 173 151zM860 0h-13q-145 0 -233 22t-195 109q-143 -119 -276 -128q-34 -3 -82 -3h-106l2 180q254 5 316 65q-161 163 -250 246q66 115 120 228h387q190 0 240 -130q16 -43 16 -64.5t-8 -94.5q-12 -94 -210 -209
q114 -41 292 -41v-180zM503 1068q0 -52 -37 -88t-88 -36q-134 0 -134 124q0 108 129.5 108t129.5 -108z" />
<glyph glyph-name="u0641" unicode="&#x641;" horiz-adv-x="1606" arabic-form="isolated"
d="M1359 483q0 87 -46 147t-129 60q-131 0 -131 -117q0 -88 138 -89q42 0 168 -1zM899 586v6q0 129 87.5 202.5t226.5 73.5t227 -98t92 -242t4 -213q0 -129 -76 -222t-202 -93h-938q-116 0 -186 87t-71 206v272h181v-247q0 -77 28.5 -107.5t103.5 -30.5h860q82 0 103 31
q10 15 24 104q-254 0 -318 23q-146 51 -146 248zM1334 1076q0 -51 -37.5 -87t-88.5 -36q-135 0 -135 123q1 109 131 109t130 -109z" />
<glyph glyph-name="uFED2" unicode="&#x641;" horiz-adv-x="1618" arabic-form="final"
d="M1370 385q0 66 -43.5 113t-103.5 47t-102 -40.5t-42 -94.5q0 -105 182 -191q109 67 109 166zM1230 719h6q138 -1 218 -97t80 -222t-65 -220h174v-180q-314 0 -388 40q-25 -37 -342 -37q-45 -1 -300 -2l-299 -1q-108 0 -174 90t-66 203v272h181v-247q0 -138 133 -138h623
q-101 112 -101 246t93.5 213.5t226.5 79.5zM1359 1054q0 -53 -36 -89.5t-89 -36.5q-136 0 -136 126q0 106 130 106t131 -106z" />
<glyph glyph-name="uFED3" unicode="&#x641;" horiz-adv-x="915" arabic-form="initial"
d="M599 484q-7 199 -169 199q-119 0 -119 -95q0 -76 45 -94q19 -8 112 -9zM800 284v-14q0 -106 -87 -188t-204 -82h-540v180h542q99 0 99 134q-140 1 -317 17q-149 55 -149 245q0 131 82 211.5t201 80.5t208 -57q143 -90 154 -302zM573 1098q0 -52 -37.5 -88.5t-89.5 -36.5
q-132 0 -132 125q0 107 129.5 107t129.5 -107z" />
<glyph glyph-name="uFED4" unicode="&#x641;" horiz-adv-x="856" arabic-form="medial"
d="M564 385q0 60 -44 110t-104 50t-101.5 -39.5t-41.5 -97.5q0 -111 182 -189q109 81 109 166zM904 0q-20 4 -106 5l-178 3q-93 1 -171 40q-83 -48 -512 -48v180h266q-99 111 -99 245t90 214t227 80l2 -1q139 0 222 -92t83 -222t-65 -224h241v-180zM556 1041
q0 -51 -36.5 -88t-88.5 -37q-133 0 -133 125q0 108 129 108t129 -108z" />
<glyph glyph-name="u0642" unicode="&#x642;" horiz-adv-x="1339" arabic-form="isolated"
d="M1079 165v3q0 83 -47.5 142.5t-130.5 59.5q-126 0 -126 -102q0 -108 169 -108q91 0 135 5zM1253 35q0 -39 -9 -143q-14 -164 -141.5 -267.5t-293.5 -103.5h-275q-200 0 -319 135t-119 338v359h170v-366q0 -125 77.5 -211t201.5 -86h250q127 0 205 90t81 219
q-254 0 -320 22q-146 50 -146 247q0 130 86 204t228 74t233 -100t91 -253v-158zM849 741q0 -47 -33.5 -76t-80.5 -29q-126 0 -126 105q0 100 120 100t120 -100zM1196 741q0 -47 -33 -76t-80 -29q-128 0 -128 105q1 100 121 100t120 -100z" />
<glyph glyph-name="uFED6" unicode="&#x642;" horiz-adv-x="1350" arabic-form="final"
d="M1061 180q0 86 -52.5 143.5t-138.5 57.5q-124 0 -124 -91q0 -70 60 -96q32 -14 255 -14zM1385 0h-149q0 -189 -133.5 -322t-322.5 -133h-283q-180 0 -303.5 139.5t-123.5 324.5v376h180v-396q0 -103 95 -181t191 -78h234q116 0 196.5 77t89.5 193q-258 0 -326 25
q-160 59 -160 259q0 131 94 206t241.5 75t240.5 -111t95 -274h144v-180zM809 773q0 -47 -33.5 -77t-80.5 -30q-127 0 -127 107q0 98 120 98t121 -98zM1156 773q0 -47 -33.5 -77t-79.5 -30q-128 0 -128 107q1 98 121 98t120 -98z" />
<glyph glyph-name="uFED7" unicode="&#x642;" horiz-adv-x="915" arabic-form="initial"
d="M599 484q-7 199 -169 199q-119 0 -119 -95q0 -76 45 -94q19 -8 112 -9zM800 284v-14q0 -106 -87 -188t-204 -82h-540v180h542q99 0 99 134q-140 1 -317 17q-149 55 -149 245q0 131 82 211.5t201 80.5t208 -57q143 -90 154 -302zM388 1061q0 -46 -33.5 -76t-80.5 -30
q-125 0 -125 106q0 99 119.5 99t119.5 -99zM733 1061q0 -46 -33.5 -76t-80.5 -30q-125 0 -125 106q0 99 119.5 99t119.5 -99z" />
<glyph glyph-name="uFED8" unicode="&#x642;" horiz-adv-x="856" arabic-form="medial"
d="M564 385q0 60 -44 110t-104 50t-101.5 -39.5t-41.5 -97.5q0 -111 182 -189q109 81 109 166zM904 0q-20 4 -106 5l-178 3q-93 1 -171 40q-83 -48 -512 -48v180h266q-99 111 -99 245t90 214t227 80l2 -1q139 0 222 -92t83 -222t-65 -224h241v-180zM348 1064
q0 -47 -33.5 -76.5t-80.5 -29.5q-125 0 -125 106v2q0 97 119.5 97t119.5 -99zM691 1064q0 -47 -32.5 -76.5t-79.5 -29.5q-126 0 -126 106q0 99 119 99t119 -99z" />
<glyph glyph-name="u0643" unicode="&#x643;" horiz-adv-x="1606" arabic-form="isolated"
d="M1446 450q87 -91 87 -204.5t-82 -179.5t-196 -66h-926q-115 0 -185.5 88t-70.5 205v272h180v-247q0 -76 28.5 -107t103.5 -31h863q95 0 95 84q0 38 -29 67l-471 487l-25 205l656 236l24 -180l-473 -183z" />
<glyph glyph-name="uFEDA" unicode="&#x6a9;" horiz-adv-x="1760" arabic-form="final"
d="M1806 0q-202 0 -297 129q-48 -129 -231 -129h-944q-114 0 -186 88t-72 205v272h180v-247q0 -76 29.5 -107t104.5 -31h879q90 0 90 65q0 35 -44 81l-467 492l-34 202l664 239l25 -180l-469 -175l500 -555l129 -130q33 -34 143 -39v-180z" />
<glyph glyph-name="uFEDB" unicode="&#x6a9;" horiz-adv-x="843" arabic-form="initial"
d="M803 249v-4q0 -245 -275 -245h-562v180h562q71 0 71 84q0 39 -23 62l-467 492l-30 201l660 240l27 -180l-466 -175l369 -413q39 -45 86.5 -119t47.5 -123z" />
<glyph glyph-name="uFEDC" unicode="&#x6a9;" horiz-adv-x="1009" arabic-form="medial"
d="M1064 0q-230 0 -325 131q-53 -131 -248 -131h-534v180h537q71 0 71 93q0 32 -20 53l-469 492l-33 202l662 239l25 -180l-469 -175l497 -550q84 -94 144 -132t162 -42v-180z" />
<glyph glyph-name="u06AF" unicode="&#x6af;" horiz-adv-x="1606" arabic-form="isolated"
d="M1466 441q89 -98 89 -209t-79.5 -171.5t-202.5 -60.5h-925q-114 0 -186 88t-72 205v272h180v-247q0 -78 30 -108t108 -30h876q34 0 63 24t29 53t-17 47l-499 514l-34 202l665 239l25 -180l-466 -178zM1446 1361l-628 -227l-9 69l632 227z" />
<glyph glyph-name="uFB93" unicode="&#x6af;" horiz-adv-x="1760" arabic-form="final"
d="M1794 0q-203 0 -298 129q-47 -129 -232 -129h-944q-116 0 -186 87t-71 206v272h181v-247q0 -77 28.5 -107.5t103.5 -30.5h879q90 0 90 68q0 34 -42 78l-472 492l-31 202l664 239l25 -180l-469 -175l499 -555q0 -1 127 -130q33 -34 148 -39v-180zM1419 1361l-626 -227
l-9 69l631 227z" />
<glyph glyph-name="uFB94" unicode="&#x6af;" horiz-adv-x="856" arabic-form="initial"
d="M719 388q50 -56 50 -160t-84 -166t-202 -62h-526v180h526q103 0 103 68q0 37 -33 72l-479 498l-34 202l665 239l25 -180l-474 -180zM660 1361l-629 -227l-8 69l632 227z" />
<glyph glyph-name="uFB95" unicode="&#x6af;" horiz-adv-x="1031" arabic-form="medial"
d="M1054 0q-222 0 -315 144q-61 -144 -228 -144h-536v180h539q92 0 92 68q0 34 -42 78l-471 492l-30 202l661 239l29 -180l-480 -180l502 -550q53 -59 158 -150q39 -19 75 -19h46v-180zM680 1361l-629 -227l-8 69l633 227z" />
<glyph glyph-name="u0644" unicode="&#x644;" horiz-adv-x="1361" arabic-form="isolated"
d="M1264 23q0 -204 -124 -341t-326 -137h-278q-178 0 -309.5 141.5t-131.5 322.5v376h180v-396q1 -111 91 -185t204 -74h233q109 0 195 76t86 183v1165h180v-1131z" />
<glyph glyph-name="uFEDE" unicode="&#x644;" horiz-adv-x="1408" arabic-form="final"
d="M1446 0q-145 0 -202 85q0 -226 -118 -383t-337 -157h-278q-185 1 -308.5 138.5t-123.5 322.5v379h176v-396q0 -116 86 -190t204 -74h233q117 0 200 74t83 190v1165h180v-848q0 -124 205 -126v-180z" />
<glyph glyph-name="uFEDF" unicode="&#x644;" horiz-adv-x="516" arabic-form="initial"
d="M388 275q0 -130 -77.5 -202.5t-209.5 -72.5h-137v180l123 -1q86 6 109 44q15 23 15 131v800h177v-879z" />
<glyph glyph-name="uFEE0" unicode="&#x644;" horiz-adv-x="598" arabic-form="medial"
d="M635 0h-54q-175 0 -261 70q-65 -54 -108 -62t-246 -8v180q54 -2 134 -2t104 40t24 136v800h180v-836q0 -98 58 -122q28 -11 169 -16v-180z" />
<glyph glyph-name="u0645" unicode="&#x645;" horiz-adv-x="1149" arabic-form="isolated"
d="M778 176q132 0 132 151.5t-31 180.5t-250 35v-250q0 -52 47.5 -84.5t101.5 -32.5zM1086 295q0 -136 -91.5 -218t-229.5 -82t-224 93.5t-86 234.5v220q-31 2 -37 2q-70 0 -117.5 -55t-47.5 -125v-820h-177v798q0 173 92.5 274.5t264.5 101.5h365q180 0 245 -131
q43 -89 43 -293z" />
<glyph glyph-name="uFEE2" unicode="&#x645;" horiz-adv-x="1233" arabic-form="final"
d="M906 331q0 137 -34 173t-248 39v-253q0 -57 43 -89t102 -32q137 0 137 162zM1281 0q-113 0 -165 22t-107 109q-56 -142 -228 -142q-147 0 -239 93t-92 241v220q-82 0 -141 -49t-59 -129v-820h-176v798q0 175 90 275t264 101h365q288 0 288 -421q0 -116 200 -118v-180z
" />
<glyph glyph-name="uFEE3" unicode="&#x645;" horiz-adv-x="843" arabic-form="initial"
d="M624 348.5q0 194.5 -156.5 194.5t-156.5 -194.5t156.5 -194.5t156.5 194.5zM474 719q150 0 228.5 -112.5t78.5 -268t-80.5 -259.5t-231.5 -104q-115 0 -203 68q-87 -38 -305 -43v180q153 0 179 30q8 10 11 138q9 371 323 371z" />
<glyph glyph-name="uFEE4" unicode="&#x645;" horiz-adv-x="904" arabic-form="medial"
d="M458 154q152 0 152 194.5t-152 194.5q-158 0 -158 -194.5t158 -194.5zM930 0q-89 0 -135 19t-87 85q-77 -129 -248 -129q-63 0 -131.5 38t-103.5 91q-20 -102 -273 -104v180q150 0 177 30q14 15 14 158.5t81 247t234 103.5t232.5 -109.5t82.5 -261.5q1 -57 2 -73
q6 -65 48 -82q20 -9 107 -13v-180z" />
<glyph glyph-name="u0646" unicode="&#x646;" horiz-adv-x="1339" arabic-form="isolated"
d="M1239 29q-1 -211 -123 -347t-330 -137h-277q-185 1 -309 139t-124 325v376h177v-396q0 -114 87 -189t203 -75h232q117 0 200.5 74t83.5 190v576h180v-536zM471 606v4q0 104 129.5 104t129.5 -108q0 -51 -36.5 -87t-88.5 -36q-134 0 -134 123z" />
<glyph glyph-name="uFEE6" unicode="&#x646;" horiz-adv-x="1361" arabic-form="final"
d="M1440 0q-148 0 -199 85q0 -226 -117 -383t-338 -157h-277q-185 1 -309 139t-124 325v376h177v-396q0 -116 86 -190t204 -74h232q117 0 200.5 74t83.5 190v576h180v-259q0 -124 201 -126v-180zM736 606q0 -51 -36.5 -87t-88.5 -36q-136 0 -136 123q1 108 131 108t130 -108
z" />
<glyph glyph-name="uFEE7" unicode="&#x646;" horiz-adv-x="586" arabic-form="initial"
d="M339 353l-3 212h184v-272q0 -116 -74 -204.5t-187 -88.5h-295v180q283 0 315 11q60 22 60 162zM343 848q0 -53 -36.5 -90t-88.5 -37q-137 0 -137 127q0 107 131 107t131 -107z" />
<glyph glyph-name="uFEE8" unicode="&#x646;" horiz-adv-x="703" arabic-form="medial"
d="M331 353l-2 212h182v-247q0 -133 224 -138v-180h-59q-170 0 -250 70q-90 -70 -173 -70h-296v180q279 0 314 13q60 21 60 160zM343 848q0 -53 -36.5 -90t-88.5 -37q-137 0 -137 127q0 107 131 107t131 -107z" />
<glyph glyph-name="u0648" unicode="&#x648;" horiz-adv-x="893" arabic-form="isolated"
d="M601 180v185q0 176 -141 176q-86 0 -116 -58q-21 -41 -21 -147t91 -138q49 -18 187 -18zM781 -23q0 -180 -135.5 -306t-316.5 -126h-233l-23 180h227q128 0 212 74t89 201q-225 0 -327 60q-136 80 -136 297t107 308q66 56 220 56q205 0 274 -172q42 -107 42 -346v-226z
" />
<glyph glyph-name="uFEEE" unicode="&#x648;" horiz-adv-x="893" arabic-form="final"
d="M329 351v-15q0 -106 95 -138q51 -18 191 -18v171q-1 75 -38.5 132.5t-111.5 57.5h-6q-79 -1 -104.5 -48t-25.5 -142zM919 0h-119q0 -198 -132.5 -326.5t-331.5 -128.5h-232l-25 180h227q128 0 213 74t90 201q-223 0 -328 61q-137 81 -137 297t109 307q63 54 213 54
q215 0 288 -178q42 -104 46 -361h119v-180z" />
<glyph glyph-name="u0647" unicode="&#x647;" horiz-adv-x="809" arabic-form="isolated"
d="M534.5 199q44.5 46 44.5 109t-29 93l-145 153q-161 -153 -161 -243q0 -69 52 -113.5t123 -44.5t115.5 46zM674 528q84 -87 84 -225t-105 -230.5t-249.5 -92.5t-239 100.5t-94.5 251.5t205 356l-52 58l122 122z" />
<glyph glyph-name="uFEEA" unicode="&#x647;" horiz-adv-x="1031" arabic-form="final"
d="M501.5 198.5q51.5 44.5 51.5 111.5t-34 100l-145 144q-84 -79 -105 -106q-53 -68 -53 -137.5t47 -113t117 -43.5t121.5 44.5zM1068 0q-118 0 -158.5 23.5t-201.5 172.5q-102 -216 -329 -216q-149 0 -246 97t-97 249.5t209 361.5l-51 58l121 122l539 -573
q71 -75 100 -92.5t114 -22.5v-180z" />
<glyph glyph-name="uFEEB" unicode="&#x647;" horiz-adv-x="1171" arabic-form="initial"
d="M548 415q0 61 -45 101t-100.5 40t-84.5 -39t-29 -89q0 -117 144 -173q115 51 115 160zM786 115q118 0 118 110.5t-238 350.5q55 -62 55 -171q0 -172 -111 -229q102 -61 176 -61zM1093 239q0 -119 -89 -214t-219 -95t-357 133q-116 -59 -259 -60l-200 -3v180h250
q-99 130 -99 253t82 205.5t204.5 82.5t222.5 -97l-118 122l135 122q447 -427 447 -629z" />
<glyph glyph-name="uFEEC" unicode="&#x647;" horiz-adv-x="798" arabic-form="medial"
d="M586 -208q0 104 -102.5 163t-215.5 59q0 -334 183 -334q135 0 135 112zM264 180q115 0 200.5 70t85.5 185t-120 115q-171 0 -171 -229q0 -14 5 -141zM831 0h-227q132 -91 132 -264q0 -209 -265 -209q-322 0 -350 277l-20 196h-155v180h147q-14 184 -14 201q0 335 336 335
q136 0 220 -76t84 -219t-120 -241h232v-180z" />
<glyph glyph-name="u0629" unicode="&#x629;" horiz-adv-x="809" arabic-form="isolated"
d="M534.5 199q44.5 46 44.5 109t-29 93l-145 153q-161 -153 -161 -243q0 -69 52 -113.5t123 -44.5t115.5 46zM674 528q84 -87 84 -225t-105 -230.5t-249.5 -92.5t-239 100.5t-94.5 251.5t205 356l-52 58l122 122zM466 1093l-303 -153l-25 49l103 56q-90 50 -90 124t39.5 118
t104.5 44q25 0 86 -22l-22 -48q-30 17 -55 17q-99 0 -99 -102q0 -81 76 -81q63 0 160 51z" />
<glyph glyph-name="uFE94" unicode="&#x6c0;" horiz-adv-x="1031" arabic-form="final"
d="M501.5 198.5q51.5 44.5 51.5 111.5t-34 100l-145 144q-84 -79 -105 -106q-53 -68 -53 -137.5t47 -113t117 -43.5t121.5 44.5zM1068 0q-118 0 -158.5 23.5t-201.5 172.5q-102 -216 -329 -216q-149 0 -246 97t-97 249.5t209 361.5l-51 58l121 122l539 -573
q71 -75 100 -92.5t114 -22.5v-180zM450 1143l-304 -154l-25 50l104 56q-92 49 -92 121t41.5 117.5t93 45.5t97.5 -20l-22 -48q-31 17 -64 17t-61.5 -30t-28.5 -73q0 -80 79 -80q58 0 156 51z" />
<glyph glyph-name="u064A" unicode="&#x64a;" horiz-adv-x="1289" arabic-form="isolated"
d="M1225 9q0 -265 -191 -390q-113 -74 -250 -74h-279q-185 0 -305 138t-121 326v372h169v-392q0 -120 86 -194t207 -74h232q106 1 193 71t87 166t-123 125q-33 7 -45 7h-250v309q0 139 89 229.5t229 90.5h216l7 -169h-216q-97 0 -134 -86q-17 -42 -22 -205q213 0 284 -26
q137 -52 137 -224z" />
<glyph glyph-name="uFEF2" unicode="&#x6cc;" horiz-adv-x="1289" arabic-form="final"
d="M1318 0h-167l9 -88q0 -157 -118 -262t-276 -105h-280q-211 0 -326.5 149.5t-116.5 368.5v322h180v-391q1 -129 87 -199t218 -70h231q96 0 160 53t64 148q0 58 -165 71q-30 3 -209 3l-16 180h725v-180z" />
<glyph glyph-name="uFEF3" unicode="&#x6cc;" horiz-adv-x="680" arabic-form="initial"
d="M-9 -347v4q0 98 119.5 98t119.5 -100q0 -46 -33.5 -76t-80.5 -30q-1 1 -2 1q-48 0 -85.5 27.5t-37.5 75.5zM575 -343v-5q0 -44 -33 -73.5t-80 -29.5q-1 1 -2 1q-48 0 -86 28t-38 77q0 100 119.5 100t119.5 -98zM606 293q0 -117 -72 -205t-185 -88h-385v180h329
q75 0 104 30.5t29 107.5v247h180v-272z" />
<glyph glyph-name="uFEF4" unicode="&#x6cc;" horiz-adv-x="739" arabic-form="medial"
d="M270 -343q0 -46 -33 -76t-81.5 -30t-86.5 29t-38 77q0 99 119.5 99t119.5 -99zM615 -343q0 -46 -33 -76t-81.5 -30t-86.5 29t-38 77q0 99 119.5 99t119.5 -99zM775 0h-63q-52 0 -102 9q-43 17 -91 61q-86 -70 -171 -70h-388v180h333q75 0 104 30.5t29 107.5v247h180v-247
q0 -89 37 -113.5t132 -24.5v-180z" />
<glyph glyph-name="u0649" unicode="&#x649;" horiz-adv-x="1289" arabic-form="isolated"
d="M1225 9q0 -265 -191 -390q-113 -74 -250 -74h-279q-185 0 -305 138t-121 326v372h169v-392q0 -120 86 -194t207 -74h232q106 1 193 71t87 166t-123 125q-33 7 -45 7h-250v309q0 139 89 229.5t229 90.5h216l7 -169h-216q-97 0 -134 -86q-17 -42 -22 -205q213 0 284 -26
q137 -52 137 -224z" />
<glyph glyph-name="uFEF0" unicode="&#x649;" horiz-adv-x="1289" arabic-form="final"
d="M1318 0h-167l9 -88q0 -157 -118 -262t-276 -105h-280q-211 0 -326.5 149.5t-116.5 368.5v322h180v-391q1 -129 87 -199t218 -70h231q96 0 160 53t64 148q0 58 -165 71q-30 3 -209 3l-16 180h725v-180z" />
<glyph glyph-name=".notdef" horiz-adv-x="1024"
d="M256 128h512v1834h-512v-1834zM128 0v2090h768v-2090h-768z" />
<glyph glyph-name=".null"
/>
<glyph glyph-name="nonmarkingreturn" horiz-adv-x="469"
/>
<glyph glyph-name="space" unicode=" " horiz-adv-x="469"
/>
<glyph glyph-name="exclam" unicode="!" horiz-adv-x="469"
d="M371 120q0 -120 -131 -120t-131 120q0 110 131 110t131 -110zM326 759q-12 -12 -12 -136l-28 -274h-95l-42 410v395h177v-395z" />
<glyph glyph-name="percent" unicode="%" horiz-adv-x="469"
d="M469 552.5q47 47.5 47 110.5t-53 110t-117.5 47t-110.5 -51t-46 -115.5t52 -106.5t116.5 -42t111.5 47.5zM553.5 853q89.5 -88 89.5 -196.5t-92.5 -187.5t-203.5 -79t-195 81.5t-84 192t88 194t198 83.5t199.5 -88zM1129 930l-646 -1174h-174l640 1174h180zM1228.5 -55
q49.5 49 49.5 110t-50.5 110t-113 49t-114 -51.5t-51.5 -121t76 -117.5q43 -28 98.5 -28t105 49zM1316 247.5q85 -88.5 85 -200t-89.5 -189t-199 -77.5t-198 80.5t-88.5 188.5t91.5 197t202.5 89t196 -88.5z" />
<glyph glyph-name="parenleft" unicode="(" horiz-adv-x="721"
d="M643 1399q-162 -313 -229 -511q-94 -276 -94 -586t74 -580t246 -576h-99q-205 295 -305 560t-101 574q0 309 120 595q82 197 293 524h95z" />
<glyph glyph-name="parenright" unicode=")" horiz-adv-x="721"
d="M178 1399q204 -303 305 -562t101 -568.5t-118 -593.5q-82 -199 -295 -529h-95q323 599 323 1062q0 371 -65.5 595.5t-254.5 595.5h99z" />
<glyph glyph-name="asterisk" unicode="*" horiz-adv-x="680"
/>
<glyph glyph-name="plus" unicode="+" horiz-adv-x="1275"
d="M1191 239h-466v-464h-171v464h-464v176h464v464h171v-464h466v-176z" />
<glyph glyph-name="comma" unicode="," horiz-adv-x="264"
d="M4 34q0 110 136 110q82 0 105 -36t23 -161t-25 -191q-43 -111 -177 -124v65q79 8 107 75q14 38 18 138q-187 0 -187 124z" />
<glyph glyph-name="hyphen" unicode="-" horiz-adv-x="1149"
d="M1076 239h-981v177h981v-177z" />
<glyph glyph-name="period" unicode="." horiz-adv-x="564"
d="M416 96q0 -119 -132 -119t-133 119q1 112 133 112t132 -112z" />
<glyph glyph-name="slash" unicode="/" horiz-adv-x="971"
d="M904 930l-648 -1174h-172l640 1174h180z" />
<glyph glyph-name="zero" unicode="0" horiz-adv-x="1210"
d="M729.5 204.5q51.5 51.5 51.5 120.5t-54 122t-125.5 53t-124.5 -56t-53 -126.5t58 -117.5t127 -47t120.5 51.5zM829.5 542q96.5 -102 96.5 -222t-100.5 -208.5t-222 -88.5t-220.5 88.5t-99 213t100.5 222t224.5 97.5t220.5 -102z" />
<glyph glyph-name="zero" unicode="&#x6f0;" horiz-adv-x="1210"
d="M729.5 204.5q51.5 51.5 51.5 120.5t-54 122t-125.5 53t-124.5 -56t-53 -126.5t58 -117.5t127 -47t120.5 51.5zM829.5 542q96.5 -102 96.5 -222t-100.5 -208.5t-222 -88.5t-220.5 88.5t-99 213t100.5 222t224.5 97.5t220.5 -102z" />
<glyph glyph-name="zero" unicode="&#x660;" horiz-adv-x="1210"
d="M729.5 204.5q51.5 51.5 51.5 120.5t-54 122t-125.5 53t-124.5 -56t-53 -126.5t58 -117.5t127 -47t120.5 51.5zM829.5 542q96.5 -102 96.5 -222t-100.5 -208.5t-222 -88.5t-220.5 88.5t-99 213t100.5 222t224.5 97.5t220.5 -102z" />
<glyph glyph-name="one" unicode="1" horiz-adv-x="1210"
d="M736 -200h-175v551q0 276 -86 562l171 56l62 -241q0 -6 14 -116t14 -261v-551z" />
<glyph glyph-name="one" unicode="&#x6f1;" horiz-adv-x="1210"
d="M736 -200h-175v551q0 276 -86 562l171 56l62 -241q0 -6 14 -116t14 -261v-551z" />
<glyph glyph-name="one" unicode="&#x661;" horiz-adv-x="1210"
d="M736 -200h-175v551q0 276 -86 562l171 56l62 -241q0 -6 14 -116t14 -261v-551z" />
<glyph glyph-name="two" unicode="2" horiz-adv-x="1210"
d="M908 971q50 -246 50 -338t-86 -160t-175.5 -68t-180.5 59l3 -664h-181v525q0 357 -85 588l173 56l72 -295q27 -113 133 -113q74 1 107 48t33 84q0 5 -1 10l-29 215q55 18 167 53z" />
<glyph glyph-name="two" unicode="&#x6f2;" horiz-adv-x="1210"
d="M908 971q50 -246 50 -338t-86 -160t-175.5 -68t-180.5 59l3 -664h-181v525q0 357 -85 588l173 56l72 -295q27 -113 133 -113q74 1 107 48t33 84q0 5 -1 10l-29 215q55 18 167 53z" />
<glyph glyph-name="two" unicode="&#x662;" horiz-adv-x="1210"
d="M908 971q50 -246 50 -338t-86 -160t-175.5 -68t-180.5 59l3 -664h-181v525q0 357 -85 588l173 56l72 -295q27 -113 133 -113q74 1 107 48t33 84q0 5 -1 10l-29 215q55 18 167 53z" />
<glyph glyph-name="three" unicode="3" horiz-adv-x="1210"
d="M1161 654q0 -98 -80 -165.5t-185.5 -67.5t-215.5 124q0 -130 -189 -130q-94 0 -177 46l1 -661h-175v525q0 334 -90 588l178 56l67 -295q26 -113 140 -113q59 1 99 42t40 84q0 8 -1 16l-34 215l169 62q41 -213 41 -304q0 -11 -3 -63q46 -57 106.5 -57t99 37.5t38.5 89.5
q0 10 -1 20l-29 215l166 51l34 -291q1 -11 1 -24z" />
<glyph glyph-name="three" unicode="&#x6f3;" horiz-adv-x="1210"
d="M1161 654q0 -98 -80 -165.5t-185.5 -67.5t-215.5 124q0 -130 -189 -130q-94 0 -177 46l1 -661h-175v525q0 334 -90 588l178 56l67 -295q26 -113 140 -113q59 1 99 42t40 84q0 8 -1 16l-34 215l169 62q41 -213 41 -304q0 -11 -3 -63q46 -57 106.5 -57t99 37.5t38.5 89.5
q0 10 -1 20l-29 215l166 51l34 -291q1 -11 1 -24z" />
<glyph glyph-name="three" unicode="&#x663;" horiz-adv-x="1210"
d="M1161 654q0 -98 -80 -165.5t-185.5 -67.5t-215.5 124q0 -130 -189 -130q-94 0 -177 46l1 -661h-175v525q0 334 -90 588l178 56l67 -295q26 -113 140 -113q59 1 99 42t40 84q0 8 -1 16l-34 215l169 62q41 -213 41 -304q0 -11 -3 -63q46 -57 106.5 -57t99 37.5t38.5 89.5
q0 10 -1 20l-29 215l166 51l34 -291q1 -11 1 -24z" />
<glyph glyph-name="four" unicode="4" horiz-adv-x="1210"
d="M1075 466q-194 -90 -357 -90t-324 70l2 -646h-175v538q0 264 -86 575l169 56q51 -188 79 -351l92 -43q0 403 328 403q102 0 217 -57l-60 -155q-74 54 -148 54t-128.5 -48.5t-54.5 -120.5q0 -117 135 -117q102 0 255 76z" />
<glyph glyph-name="four" unicode="&#x6f4;" horiz-adv-x="1210"
d="M1075 466q-194 -90 -357 -90t-324 70l2 -646h-175v538q0 264 -86 575l169 56q51 -188 79 -351l92 -43q0 403 328 403q102 0 217 -57l-60 -155q-74 54 -148 54t-128.5 -48.5t-54.5 -120.5q0 -117 135 -117q102 0 255 76z" />
<glyph glyph-name="four" unicode="&#x664;" horiz-adv-x="1210"
d="M1075 466q-194 -90 -357 -90t-324 70l2 -646h-175v538q0 264 -86 575l169 56q51 -188 79 -351l92 -43q0 403 328 403q102 0 217 -57l-60 -155q-74 54 -148 54t-128.5 -48.5t-54.5 -120.5q0 -117 135 -117q102 0 255 76z" />
<glyph glyph-name="five" unicode="5" horiz-adv-x="1210"
d="M974 118q0 212 -420 560q-318 -334 -318 -557q0 -169 152 -169q139 0 140 158q-2 11 -9 68h177q12 -24 12 -89t-19 -100q53 -34 117 -34q168 0 168 163zM1163 74q-1 -145 -103 -230t-242 -85t-232 70q-126 -73 -254 -73t-206 104t-78 244q0 220 177 439l196 241l-70 50
l115 137q697 -520 697 -897z" />
<glyph glyph-name="five" unicode="&#x6f5;" horiz-adv-x="1210"
d="M974 118q0 212 -420 560q-318 -334 -318 -557q0 -169 152 -169q139 0 140 158q-2 11 -9 68h177q12 -24 12 -89t-19 -100q53 -34 117 -34q168 0 168 163zM1163 74q-1 -145 -103 -230t-242 -85t-232 70q-126 -73 -254 -73t-206 104t-78 244q0 220 177 439l196 241l-70 50
l115 137q697 -520 697 -897z" />
<glyph glyph-name="five" unicode="&#x665;" horiz-adv-x="1210"
d="M974 118q0 212 -420 560q-318 -334 -318 -557q0 -169 152 -169q139 0 140 158q-2 11 -9 68h177q12 -24 12 -89t-19 -100q53 -34 117 -34q168 0 168 163zM1163 74q-1 -145 -103 -230t-242 -85t-232 70q-126 -73 -254 -73t-206 104t-78 244q0 220 177 439l196 241l-70 50
l115 137q697 -520 697 -897z" />
<glyph glyph-name="six" unicode="6" horiz-adv-x="1210"
d="M971 483q-72 -64 -140 -147l-151 -185q-117 -143 -261 -396l-158 96q85 163 327 480q-157 1 -253 85t-96 232t88.5 241.5t228.5 93.5q99 0 225 -65l-57 -160q-76 40 -144 40t-114.5 -42t-46.5 -107q0 -144 164 -144q111 0 243 85z" />
<glyph glyph-name="six" unicode="&#x6f6;" horiz-adv-x="1210"
d="M971 483q-72 -64 -140 -147l-151 -185q-117 -143 -261 -396l-158 96q85 163 327 480q-157 1 -253 85t-96 232t88.5 241.5t228.5 93.5q99 0 225 -65l-57 -160q-76 40 -144 40t-114.5 -42t-46.5 -107q0 -144 164 -144q111 0 243 85z" />
<glyph glyph-name="six" unicode="&#x666;" horiz-adv-x="1210"
d="M971 483q-72 -64 -140 -147l-151 -185q-117 -143 -261 -396l-158 96q85 163 327 480q-157 1 -253 85t-96 232t88.5 241.5t228.5 93.5q99 0 225 -65l-57 -160q-76 40 -144 40t-114.5 -42t-46.5 -107q0 -144 164 -144q111 0 243 85z" />
<glyph glyph-name="seven" unicode="7" horiz-adv-x="1210"
d="M1109 893l-149 -255q-72 -122 -146 -304t-140 -534h-140q-45 306 -142 539t-288 551l157 81q166 -283 233 -462q6 -16 34 -119l70 -259l20 -2q73 363 193 581l144 261q70 -37 154 -78z" />
<glyph glyph-name="seven" unicode="&#x6f7;" horiz-adv-x="1210"
d="M1109 893l-149 -255q-72 -122 -146 -304t-140 -534h-140q-45 306 -142 539t-288 551l157 81q166 -283 233 -462q6 -16 34 -119l70 -259l20 -2q73 363 193 581l144 261q70 -37 154 -78z" />
<glyph glyph-name="seven" unicode="&#x667;" horiz-adv-x="1210"
d="M1109 893l-149 -255q-72 -122 -146 -304t-140 -534h-140q-45 306 -142 539t-288 551l157 81q166 -283 233 -462q6 -16 34 -119l70 -259l20 -2q73 363 193 581l144 261q70 -37 154 -78z" />
<glyph glyph-name="eight" unicode="8" horiz-adv-x="1210"
d="M1109 -113q-83 -37 -156 -81q-165 282 -232 464q-12 32 -38 134l-65 245l-20 2q-36 -165 -96 -353t-243 -492q-88 49 -158 84q199 332 289 548t146 542l140 -2q73 -446 262 -793q56 -104 171 -298z" />
<glyph glyph-name="eight" unicode="&#x6f8;" horiz-adv-x="1210"
d="M1109 -113q-83 -37 -156 -81q-165 282 -232 464q-12 32 -38 134l-65 245l-20 2q-36 -165 -96 -353t-243 -492q-88 49 -158 84q199 332 289 548t146 542l140 -2q73 -446 262 -793q56 -104 171 -298z" />
<glyph glyph-name="eight" unicode="&#x668;" horiz-adv-x="1210"
d="M1109 -113q-83 -37 -156 -81q-165 282 -232 464q-12 32 -38 134l-65 245l-20 2q-36 -165 -96 -353t-243 -492q-88 49 -158 84q199 332 289 548t146 542l140 -2q73 -446 262 -793q56 -104 171 -298z" />
<glyph glyph-name="nine" unicode="9" horiz-adv-x="1210"
d="M739 599q-7 46 -26 134q-24 64 -73 76q-4 1 -59 11q-68 0 -108 -48t-40 -117q0 -119 121 -119q76 0 185 63zM933 -200h-175v615q-109 -36 -220 -36t-185 71t-74 205q1 134 87 231t224 97q85 0 185 -59q158 -93 158 -539v-585z" />
<glyph glyph-name="nine" unicode="&#x6f9;" horiz-adv-x="1210"
d="M739 599q-7 46 -26 134q-24 64 -73 76q-4 1 -59 11q-68 0 -108 -48t-40 -117q0 -119 121 -119q76 0 185 63zM933 -200h-175v615q-109 -36 -220 -36t-185 71t-74 205q1 134 87 231t224 97q85 0 185 -59q158 -93 158 -539v-585z" />
<glyph glyph-name="nine" unicode="&#x669;" horiz-adv-x="1210"
d="M739 599q-7 46 -26 134q-24 64 -73 76q-4 1 -59 11q-68 0 -108 -48t-40 -117q0 -119 121 -119q76 0 185 63zM933 -200h-175v615q-109 -36 -220 -36t-185 71t-74 205q1 134 87 231t224 97q85 0 185 -59q158 -93 158 -539v-585z" />
<glyph glyph-name="colon" unicode=":" horiz-adv-x="564"
d="M428 120q0 -120 -138 -120q-54 0 -90.5 33t-36.5 87q1 110 133 110t132 -110zM426 543q0 -119 -133 -119t-133 119q0 111 133 111t133 -111z" />
<glyph glyph-name="equal" unicode="=" horiz-adv-x="1225"
d="M1110 0h-989v176h989v-176zM1110 374h-989v176h989v-176z" />
<glyph glyph-name="bracketleft" unicode="[" horiz-adv-x="770"
d="M696 -834h-537l2 2603h535v-169h-350l-3 -2265h353v-169z" />
<glyph glyph-name="bracketright" unicode="]" horiz-adv-x="783"
d="M157 -845v169h352l-2 2267h-350v169h534l2 -2605h-536z" />
<glyph glyph-name="braceleft" unicode="{" horiz-adv-x="1050"
d="M393 54q32 138 32 156v21q0 128 -95.5 215.5t-232.5 103.5v51q328 72 328 302v35q0 32 -29.5 166t-29.5 224q0 210 134 352t347 175v-53q-131 -18 -219 -103t-88 -212q0 -61 29.5 -212.5q29.5 -152.5 29.5 -172.5v-61q0 -309 -392 -463q387 -159 387 -481
q0 -67 -29.5 -208.5t-29.5 -161.5v-60q0 -249 312 -320v-52q-212 39 -349 181t-137 352q0 88 32 226z" />
<glyph glyph-name="braceright" unicode="}" horiz-adv-x="970"
d="M612 1331q0 -80 -29.5 -215t-29.5 -170v-40q0 -231 328 -302v-52q-136 -15 -232 -103t-96 -222q1 -27 31 -165t30 -232q0 -209 -136 -351t-347 -179v49q312 72 312 320q0 77 -31 223t-31 210q0 320 390 481q-395 154 -395 461q0 57 29.5 211.5t29.5 192.5v44
q0 127 -86 209t-218 103v57q213 -37 347 -178t134 -352z" />
<glyph glyph-name="guillemotleft" unicode="&#xab;" horiz-adv-x="926"
d="M419 5l-323 250v194l323 250v-145l-264 -200l264 -203v-146zM829 5l-320 250v194l320 250v-145l-259 -200l259 -203v-146z" />
<glyph glyph-name="guillemotright" unicode="&#xbb;" horiz-adv-x="926"
d="M415 255l-320 -250v144l259 200l-259 204v146l320 -250v-194zM826 255l-321 -250v144l264 200l-264 204v146l321 -250v-194z" />
<glyph glyph-name="multiply" unicode="&#xd7;" horiz-adv-x="1275"
d="M1180 -90l-126 -126l-410 416l-419 -416l-124 123l419 418l-421 419l124 124l417 -418l419 420l121 -126l-414 -419z" />
<glyph glyph-name="divide" unicode="&#xf7;" horiz-adv-x="1171"
d="M663 -25q37 -41 37 -95.5t-42 -93.5t-96.5 -39t-90.5 42.5t-36 98.5t40 92t95.5 36t92.5 -41zM1095 225h-1022v179h1022v-179zM669.5 836.5q40.5 -39.5 40.5 -93.5t-42.5 -96.5t-97.5 -42.5t-90.5 43.5t-35.5 98.5t39.5 92.5t92.5 37.5t93.5 -39.5z" />
<glyph glyph-name="zeronojoin" unicode="&#x200c;" horiz-adv-x="45"
/>
<glyph glyph-name="zerojoin" unicode="&#x200d;" horiz-adv-x="45"
/>
<glyph glyph-name="lefttoright" unicode="&#x200e;" horiz-adv-x="41"
d="M271 1444l-120 -123l-31 26l80 79h-159v-1426h-41v1464h195l-75 75l31 28z" />
<glyph glyph-name="righttoleft" unicode="&#x200f;" horiz-adv-x="41"
d="M41 0h-41v1426h-159l77 -79l-26 -26l-125 123l125 123l26 -28l-74 -75h197v-1464z" />
<glyph glyph-name="quoteleft" unicode="&#x2018;" horiz-adv-x="662"
d="M467 976q0 -110 -137 -110q-81 0 -104 38t-23 161t25 189q43 111 176 124v-65q-77 -9 -105 -77q-16 -40 -20 -136q188 0 188 -124z" />
<glyph glyph-name="quoteright" unicode="&#x2019;" horiz-adv-x="570"
d="M153 1268q0 110 136 110q83 0 105 -36t22 -162t-25 -191q-42 -111 -176 -123v65q79 8 106 75q15 37 19 138q-187 0 -187 124z" />
<glyph glyph-name="quotedblleft" unicode="&#x201c;" horiz-adv-x="618"
d="M604 976q0 -110 -136 -110q-82 0 -105 38t-23 161t25 189q43 111 176 124v-65q-77 -9 -105 -77q-16 -40 -20 -136q188 0 188 -124zM303 971q0 -110 -137 -110q-82 0 -108 43q-19 30 -19 155t25 191q42 111 176 123v-65q-79 -8 -106 -75q-15 -38 -19 -138q188 0 188 -124z
" />
<glyph glyph-name="quotedblright" unicode="&#x201d;" horiz-adv-x="618"
d="M303 1193v-19q0 -124 -25 -189q-43 -111 -177 -124v65q78 9 105 77q16 39 20 136q-187 0 -187 124q0 110 136 110h4q77 -1 100.5 -36.5t23.5 -143.5zM340 1268q0 110 136 110q83 0 109 -43q19 -29 19 -155t-25 -191q-43 -111 -176 -123v65q78 8 106 75q15 37 19 138
q-188 0 -188 124z" />
<glyph glyph-name="guilsinglleft" unicode="&#x2039;" horiz-adv-x="631"
d="M490 5l-320 250v194l320 250v-145l-259 -200l259 -203v-146z" />
<glyph glyph-name="guilsinglright" unicode="&#x203a;" horiz-adv-x="573"
d="M473 255l-321 -250v144l263 200l-263 204v146l321 -250v-194z" />
<glyph glyph-name="u060C" unicode="&#x60c;" horiz-adv-x="516"
d="M388 110q0 -110 -137 -110q-81 0 -104 38t-23 161t25 189q42 111 176 123v-65q-79 -7 -106 -75q-15 -37 -19 -137q188 0 188 -124z" />
<glyph glyph-name="u061B" unicode="&#x61b;" horiz-adv-x="564"
d="M426 110q0 -110 -133 -110t-133 110q0 120 133 120t133 -120zM155 583v19q0 124 25 188q41 105 176 123v-62q-80 -17 -105 -77q-15 -36 -18 -134q191 0 191 -124q0 -111 -136 -111q-86 0 -109.5 35.5t-23.5 142.5z" />
<glyph glyph-name="u061F" unicode="&#x61f;" horiz-adv-x="809"
d="M534 109q0 -49 -38 -79t-86 -30t-82.5 32t-34.5 77q1 101 121 101t120 -101zM741 775h-176q0 223 -157 223q-147 0 -147 -138q0 -51 23 -76l87 -96q85 -92 105 -146t29 -204h-171q0 106 -26 158t-99 122t-103 117t-30 131q0 142 94 216t218 74t211 -50t113 -127t29 -204z
" />
<glyph glyph-name="u0640" unicode="&#x640;" horiz-adv-x="469"
d="M505 0h-525v180h525v-180z" />
<glyph glyph-name="u064B" unicode="&#x64b;"
d="M343 1461l-315 -168l-28 47l315 173zM344 1578l-316 -172l-27 50l315 174z" />
<glyph glyph-name="u064C" unicode="&#x64c;"
d="M287 1452.5q27 29.5 27 59.5t-26.5 53t-59.5 23q-79 0 -79 -87q0 -78 85 -78q26 0 53 29.5zM360 1508q0 -91 -49 -117l-283 -151l-28 48q51 33 63 53q0 34 -37 34t-57 -11l-20 36q56 19 85 19q57 0 72 -78l77 45q-79 45 -79 124.5t87 113.5q29 11 37 11q54 0 93 -37
t39 -90z" />
<glyph glyph-name="u064D" unicode="&#x64d;"
d="M226 -875l-315 -169l-27 48l315 175zM226 -731l-315 -169l-27 47l315 174z" />
<glyph glyph-name="u064E" unicode="&#x64e;"
d="M343 1456l-315 -168l-28 47l315 176z" />
<glyph glyph-name="u064F" unicode="&#x64f;"
d="M231.5 1446q26.5 30 26.5 60t-26.5 52.5t-60.5 22.5q-78 0 -78 -86q0 -79 86 -79q26 0 52.5 30zM305 1501q0 -89 -50 -116l-227 -121l-28 47l126 70q-78 45 -78 113q0 91 90 125q26 10 33 10q55 0 94.5 -37t39.5 -91z" />
<glyph glyph-name="u0650" unicode="&#x650;"
d="M218 -754l-314 -169l-29 48l315 175z" />
<glyph glyph-name="u0651" unicode="&#x651;"
d="M-31 1516v7h45q0 -100 80 -100t84 100h50q0 -100 82 -100t83 100h48q-1 -62 -37 -107t-88 -45t-117 57q-47 -57 -107 -57h-3q-58 0 -89 45t-31 100z" />
<glyph glyph-name="u0652" unicode="&#x652;"
d="M241 1441q0 60 -60 80q-18 7 -22 7q-34 0 -60 -26.5t-26 -60.5t26 -59.5t58 -25.5t58 27.5t26 57.5zM288 1438q0 -54 -40 -90q-41 -35 -91 -35h-3q-52 1 -88 41t-36 94t40 88t94 34t89 -39t35 -93z" />
<glyph glyph-name="uE820" unicode="&#xe820;"
d="M353 947l-315 -168l-28 47l315 176z" />
<glyph glyph-name="uE821" unicode="&#xe821;"
d="M251.5 983q26.5 30 26.5 60t-26.5 52.5t-60.5 22.5q-78 0 -78 -86q0 -79 86 -79q26 0 52.5 30zM325 1038q0 -89 -50 -116l-227 -121l-28 47l126 70q-78 45 -78 113q0 91 90 125q26 10 33 10q55 0 94.5 -37t39.5 -91z" />
<glyph glyph-name="uE822" unicode="&#xe822;"
d="M210 957q0 60 -60 80q-18 7 -22 7q-34 0 -60 -26.5t-26 -60.5t26 -59.5t58 -25.5t58 27.5t26 57.5zM257 954q0 -54 -40 -90q-41 -35 -91 -35h-3q-52 1 -88 41t-36 94t40 88t94 34t89 -39t35 -93z" />
<glyph glyph-name="uE823" unicode="&#xe823;"
d="M333 972l-315 -168l-28 47l315 173zM334 1089l-316 -172l-27 50l315 174z" />
<glyph glyph-name="uE824" unicode="&#xe824;"
d="M348 984.5q27 29.5 27 59.5t-26.5 53t-59.5 23q-79 0 -79 -87q0 -78 85 -78q26 0 53 29.5zM421 1040q0 -91 -49 -117l-283 -151l-28 48q51 33 63 53q0 34 -37 34t-57 -11l-20 36q56 19 85 19q57 0 72 -78l77 45q-79 45 -79 124.5t87 113.5q29 11 37 11q54 0 93 -37
t39 -90z" />
<glyph glyph-name="uE825" unicode="&#xe825;"
d="M-31 1012v7h45q0 -100 80 -100t84 100h50q0 -100 82 -100t83 100h48q-1 -62 -37 -107t-88 -45t-117 57q-47 -57 -107 -57h-3q-58 0 -89 45t-31 100z" />
<glyph glyph-name="uE826" unicode="&#xe826;"
d="M138 -367l-314 -169l-29 48l315 175z" />
<glyph glyph-name="uE827" unicode="&#xe827;"
d="M101 -605l-315 -169l-27 48l315 175zM101 -461l-315 -169l-27 47l315 174z" />
<glyph glyph-name="uE828" unicode="&#xe828;"
d="M-16 1035v7h45q0 -100 80 -100t84 100h50q0 -100 82 -100t83 100h48q-1 -62 -37 -107t-88 -45t-117 57q-47 -57 -107 -57h-3q-58 0 -89 45t-31 100zM373 1315l-315 -168l-28 47l315 176z" />
<glyph glyph-name="uE829" unicode="&#xe829;"
d="M-16 1035v7h45q0 -100 80 -100t84 100h50q0 -100 82 -100t83 100h48q-1 -62 -37 -107t-88 -45t-117 57q-47 -57 -107 -57h-3q-58 0 -89 45t-31 100zM291.5 1362q26.5 30 26.5 60t-26.5 52.5t-60.5 22.5q-78 0 -78 -86q0 -79 86 -79q26 0 52.5 30zM365 1417
q0 -89 -50 -116l-227 -121l-28 47l126 70q-78 45 -78 113q0 91 90 125q26 10 33 10q55 0 94.5 -37t39.5 -91z" />
<glyph glyph-name="uE82A" unicode="&#xe82a;"
d="M-16 1035v7h45q0 -100 80 -100t84 100h50q0 -100 82 -100t83 100h48q-1 -62 -37 -107t-88 -45t-117 57q-47 -57 -107 -57h-3q-58 0 -89 45t-31 100zM392 1329l-315 -168l-28 47l315 173zM393 1446l-316 -172l-27 50l315 174z" />
<glyph glyph-name="uE82B" unicode="&#xe82b;"
d="M5 1017v7h45q0 -100 80 -100t84 100h50q0 -100 82 -100t83 100h48q-1 -62 -37 -107t-88 -45t-117 57q-47 -57 -107 -57h-3q-58 0 -89 45t-31 100zM375 1389.5q27 29.5 27 59.5t-26.5 53t-59.5 23q-79 0 -79 -87q0 -78 85 -78q26 0 53 29.5zM448 1445q0 -91 -49 -117
l-283 -151l-28 48q51 33 63 53q0 34 -37 34t-57 -11l-20 36q56 19 85 19q57 0 72 -78l77 45q-79 45 -79 124.5t87 113.5q29 11 37 11q54 0 93 -37t39 -90z" />
<glyph glyph-name="uE82C" unicode="&#xe82c;"
d="M-16 1280v7h45q0 -100 80 -100t84 100h50q0 -100 82 -100t83 100h48q-1 -62 -37 -107t-88 -45t-117 57q-47 -57 -107 -57h-3q-58 0 -89 45t-31 100zM378 1032l-314 -169l-29 48l315 175z" />
<glyph glyph-name="uE82D" unicode="&#xe82d;"
d="M-16 1496v7h45q0 -100 80 -100t84 100h50q0 -100 82 -100t83 100h48q-1 -62 -37 -107t-88 -45t-117 57q-47 -57 -107 -57h-3q-58 0 -89 45t-31 100zM362 1083l-315 -169l-27 48l315 175zM362 1227l-315 -169l-27 47l315 174z" />
<glyph glyph-name="u0621" unicode="&#x621;" horiz-adv-x="530"
d="M471 194l-376 -194l-32 61l131 70q-115 61 -115 169q0 82 51 134q52 52 118 52t117 -22l-27 -59q-36 21 -74 21q-121 0 -121 -126q0 -106 102 -106q79 0 193 62z" />
<glyph glyph-name="periodcentered" unicode="&#xb7;" horiz-adv-x="512"
d="M253 653q-97 0 -97 106t96 106t96 -107q0 -43 -26 -74t-69 -31z" />
<glyph glyph-name="periodcentered" unicode="&#x2219;" horiz-adv-x="512"
d="M253 653q-97 0 -97 106t96 106t96 -107q0 -43 -26 -74t-69 -31z" />
<glyph glyph-name="periodcentered" unicode="&#x2d9;" horiz-adv-x="512"
d="M253 653q-97 0 -97 106t96 106t96 -107q0 -43 -26 -74t-69 -31z" />
</font>
</defs></svg>

BIN
Sevomin.News/fonts/WebYekan.ttf View File


BIN
Sevomin.News/fonts/WebYekan.woff View File


BIN
Sevomin.News/images/revert-logo.png View File

Before After
Width: 302  |  Height: 302  |  Size: 4.6 KiB

+ 0
- 10
Sevomin.News/packages.config View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="AjaxMin" version="5.8.5172.27710" targetFramework="net45" />
<package id="AjaxMin" version="5.9.5229.26438" targetFramework="net451" />
<package id="Microsoft.AspNet.Razor" version="3.1.2" targetFramework="net45" />
<package id="Microsoft.AspNet.WebPages" version="3.1.2" targetFramework="net45" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
<package id="xmlrpcnet" version="3.0.0.266" targetFramework="net45" />
<package id="xmlrpcnet-server" version="3.0.0.266" targetFramework="net45" />
</packages>

+ 0
- 14
Sevomin.News/posts/05e94568-232b-42d2-81c1-d4bf5ef46b5d.xml View File

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<post>
<title>این یک پست جدید است</title>
<slug>----</slug>
<author>sevomin</author>
<pubDate>2014-04-30 12:54:13</pubDate>
<lastModified>2014-04-30 12:54:13</lastModified>
<content>بله این پست بسیار خوب و وزین است</content>
<ispublished>true</ispublished>
<categories>
<category></category>
</categories>
<comments></comments>
</post>

+ 0
- 14
Sevomin.News/posts/504c5b77-1965-476b-8405-0e47db1309d1.xml View File

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<post>
<title>پستی در پست‌های موجود</title>
<slug>---</slug>
<author>sevomin</author>
<pubDate>2014-04-30 12:52:38</pubDate>
<lastModified>2014-04-30 12:52:38</lastModified>
<content>&lt;div style="text-align: right;direction:rtl"&gt;&lt;span style="line-height: 1.428571429;"&gt;این پست شامل کلیه پست‌هایی می‌باشد که در وب سایت نمایش داده خواهد شد.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: right;"&gt;&lt;/div&gt;</content>
<ispublished>true</ispublished>
<categories>
<category></category>
</categories>
<comments></comments>
</post>

+ 0
- 61
Sevomin.News/posts/files/9fa751db-c036-435b-97e3-bd6373b0991b.xml View File

@ -1,61 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<post>
<title>Web Developer Checklist</title>
<slug>chrome-extension-web-developer-checklist</slug>
<author></author>
<pubDate>2013-06-06 11:44:23</pubDate>
<lastModified>2014-04-16 19:00:53</lastModified>
<content>&lt;p&gt;Earlier this year, &lt;a href="http://sedodream.com/" target="_blank"&gt;Sayed&lt;/a&gt; and I released &lt;a href="http://webdevchecklist.com/" target="_blank"&gt;Web Developer Checklist&lt;/a&gt; to help web developer adhere to best practices. Checklists like these can be really helpful to make sure we don’t forget anything before releasing new or updated websites. &lt;/p&gt; &lt;p&gt;&lt;img width="279" height="580" title="image" style="padding-left: 10px; float: right;" alt="image" src="/posts/files/image.png" /&gt;Now we’re introducing Web Developer Checklist as a &lt;a href="https://chrome.google.com/webstore/detail/web-developer-checklist/iahamcpedabephpcgkeikbclmaljebjp" target="_blank"&gt;Chrome extension&lt;/a&gt; that can automate a big portion of the checklist. The extension let’s you run checks for various best practices on any website - including your own running from localhost.&lt;/p&gt; &lt;p&gt;It performs a series of checks by analyzing the DOM as well as integrating with 3&lt;sup&gt;rd&lt;/sup&gt;-party services like &lt;a href="https://developers.google.com/speed/pagespeed/" target="_blank"&gt;Google PageSpeed&lt;/a&gt;.&lt;/p&gt; &lt;h2&gt;Next steps&lt;/h2&gt; &lt;p&gt;This first version of the &lt;a href="https://chrome.google.com/webstore/detail/web-developer-checklist/iahamcpedabephpcgkeikbclmaljebjp" target="_blank"&gt;Web Developer Checklist Chrome extension&lt;/a&gt; does a series of really valuable checks. The next releases will have even more.&lt;/p&gt; &lt;p&gt;Specifically, we’re looking at adding:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;HTML validation &lt;/li&gt;&lt;li&gt;CSS validation &lt;/li&gt;&lt;li&gt;Accessibility validation &lt;/li&gt;&lt;li&gt;JSHint &lt;/li&gt;&lt;li&gt;CssLint &lt;/li&gt;&lt;li&gt;Guidance for each item&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;We think these checks would be hugely beneficial. If you have ideas for other checks that can be automated, please let us know in the comments below.&lt;/p&gt; &lt;h2&gt;Open source&lt;/h2&gt; &lt;p&gt;The Web Developer Checklist Chrome extension is open source and hosted on our &lt;a href="https://github.com/ligershark/BestPracticesChromeExtension" target="_blank"&gt;GitHub org&lt;/a&gt;. As always, pull requests are more than welcome.&lt;/p&gt;</content>
<ispublished>true</ispublished>
<categories>
<category>Chrome</category>
<category>Best Practices</category>
</categories>
<comments>
<comment isAdmin="false" isApproved="true" id="0a524d41-f95e-4746-a22d-59525d7ea475">
<author>Jason</author>
<email>[email protected]</email>
<website></website>
<ip></ip>
<userAgent></userAgent>
<date>2013-06-06 12:14:47</date>
<content>Very useful extension. In the few minutes I&amp;#39;ve played with it so far I&amp;#39;ve found a few items that can be improved on my site. I&amp;#39;d love to see some guidance baked into the tool. For example, for &amp;quot;Add meaning with Microdata&amp;quot; it would be beneficial to provide a link for further reading/some rudimentary tips, etc. &lt;br /&gt;&lt;br /&gt;Great work - I look forward to seeing this extension evolving!</content>
</comment>
<comment isAdmin="true" isApproved="true" id="5edbaac8-eddf-4e52-90fb-c6cc40e3dad8">
<author>Mads Kristensen</author>
<email>[email protected]</email>
<website></website>
<ip></ip>
<userAgent></userAgent>
<date>2013-06-06 12:23:46</date>
<content>Yes, I should update the roadmap because that is exactly what we are planning for as well. Thanks for the heads up!</content>
</comment>
<comment isAdmin="false" isApproved="true" id="cb6f1e5f-d42c-444f-aa47-4ad7b2bd91fa">
<author>Maiis</author>
<email>[email protected]</email>
<website></website>
<ip></ip>
<userAgent></userAgent>
<date>2013-06-06 12:55:53</date>
<content>This page dosen&amp;#39;t get a green status :p</content>
</comment>
<comment isAdmin="true" isApproved="true" id="ec20fc8c-f2e5-43ec-81d7-f66fcc35e7ee">
<author>Mads Kristensen</author>
<email>[email protected]</email>
<website></website>
<ip></ip>
<userAgent></userAgent>
<date>2013-06-06 13:12:43</date>
<content>Yeah, that is rather ironic :)</content>
</comment>
<comment isAdmin="false" isApproved="false" id="c9005981-89f1-498a-9684-afa05b2448a9">
<author>Maiis</author>
<email>[email protected]</email>
<website></website>
<ip></ip>
<userAgent></userAgent>
<date>2013-06-06 14:55:53</date>
<content>A new not yet approved comment.</content>
</comment>
</comments>
</post>

+ 0
- 5
Sevomin.News/scripts/_references.js View File

@ -1,5 +0,0 @@
/// <autosync enabled="true" />
/// <reference path="admin.js" />
/// <reference path="bootstrap-wysiwyg.js" />
/// <reference path="comments.js" />
/// <reference path="jquery-2.0.2.js" />

+ 0
- 226
Sevomin.News/scripts/admin.js View File

@ -1,226 +0,0 @@
(function ($) {
// #region Helpers
function ConvertMarkupToValidXhtml(markup) {
var docImplementation = document.implementation;
var htmlDocument = docImplementation.createHTMLDocument("temp");
var xHtmlDocument = docImplementation.createDocument('http://www.w3.org/1999/xhtml', 'html', null);
var xhtmlBody = xHtmlDocument.createElementNS('http://www.w3.org/1999/xhtml', 'body');
htmlDocument.body.innerHTML = "<div>" + markup + "</div>";
xHtmlDocument.documentElement.appendChild(xhtmlBody);
xHtmlDocument.importNode(htmlDocument.body, true);
xhtmlBody.appendChild(htmlDocument.body.firstChild);
/<body.*?><div>(.*?)<\/div><\/body>/im.exec(xHtmlDocument.documentElement.innerHTML);
return RegExp.$1;
}
// #endregion
var postId, isNew,
txtTitle, txtContent, txtMessage, txtImage, chkPublish,
btnNew, btnEdit, btnDelete, btnSave, btnCancel,
editPost = function () {
txtTitle.attr('contentEditable', true);
txtContent.wysiwyg({ hotKeys: {}, activeToolbarClass: "active" });
txtContent.css({ minHeight: "400px" });
txtContent.focus();
btnNew.attr("disabled", true);
btnEdit.attr("disabled", true);
btnSave.removeAttr("disabled");
btnCancel.removeAttr("disabled");
chkPublish.removeAttr("disabled");
showCategoriesForEditing();
toggleSourceView();
$("#tools").fadeIn().css("display", "inline-block");
},
cancelEdit = function () {
if (isNew) {
if (confirm("Do you want to leave this page?")) {
history.back();
}
} else {
txtTitle.removeAttr('contentEditable');
txtContent.removeAttr('contentEditable');
btnCancel.focus();
btnNew.removeAttr("disabled");
btnEdit.removeAttr("disabled");
btnSave.attr("disabled", true);
btnCancel.attr("disabled", true);
chkPublish.attr("disabled", true);
showCategoriesForDisplay();
$("#tools").fadeOut();
}
},
toggleSourceView = function () {
$(".source").bind("click", function () {
var self = $(this);
if (self.attr("data-cmd") === "source") {
self.attr("data-cmd", "design");
self.addClass("active");
txtContent.text(txtContent.html());
} else {
self.attr("data-cmd", "source");
self.removeClass("active");
txtContent.html(txtContent.text());
}
});
},
savePost = function (e) {
if ($(".source").attr("data-cmd") === "design") {
$(".source").click();
}
txtContent.cleanHtml();
var parsedDOM;
/* IE9 doesn't support text/html MimeType https://github.com/madskristensen/MiniBlog/issues/35
parsedDOM = new DOMParser().parseFromString(txtContent.html(), 'text/html');
parsedDOM = new XMLSerializer().serializeToString(parsedDOM);
/<body>(.*)<\/body>/im.exec(parsedDOM);
parsedDOM = RegExp.$1;
*/
/* When its time to drop IE9 support toggle commented region with
the following statement and ConvertMarkupToXhtml function */
parsedDOM = ConvertMarkupToValidXhtml(txtContent.html());
$.post("/post.ashx?mode=save", {
id: postId,
isPublished: chkPublish[0].checked,
title: txtTitle.text().trim(),
content: parsedDOM,
categories: getPostCategories(),
token: document.querySelector("[data-token]").getAttribute("data-token")
})
.success(function (data) {
if (isNew) {
location.href = data;
return;
}
showMessage(true, "The post was saved successfully");
cancelEdit(e);
})
.fail(function (data) {
if (data.status === 409) {
showMessage(false, "The title is already in use");
} else {
showMessage(false, "Something bad happened. Server reported " + data.status + " " + data.statusText);
}
});
},
deletePost = function () {
if (confirm("Are you sure you want to delete this post?")) {
$.post("/post.ashx?mode=delete", { id: postId, token: document.querySelector("[data-token]").getAttribute("data-token") })
.success(function () { location.href = "/"; })
.fail(function () { showMessage(false, "Something went wrong. Please try again"); });
}
},
showMessage = function (success, message) {
var className = success ? "alert-success" : "alert-error";
txtMessage.addClass(className);
txtMessage.text(message);
txtMessage.parent().fadeIn();
setTimeout(function () {
txtMessage.parent().fadeOut("slow", function () {
txtMessage.removeClass(className);
});
}, 4000);
},
getPostCategories = function () {
var categories = '';
if ($("#txtCategories").length > 0) {
categories = $("#txtCategories").val();
} else {
$("ul.categories li a").each(function (index, item) {
if (categories.length > 0) {
categories += ",";
}
categories += $(item).html();
});
}
return categories;
},
showCategoriesForEditing = function () {
var firstItemPassed = false;
var categoriesString = getPostCategories();
$("ul.categories li").each(function (index, item) {
if (!firstItemPassed) {
firstItemPassed = true;
} else {
$(item).remove();
}
});
$("ul.categories").append("<li><input id='txtCategories' class='form-control' /></li>");
$("#txtCategories").val(categoriesString);
},
showCategoriesForDisplay = function () {
if ($("#txtCategories").length > 0) {
var categoriesArray = $("#txtCategories").val().split(',');
$("#txtCategories").parent().remove();
$.each(categoriesArray, function (index, category) {
$("ul.categories").append(' <li itemprop="articleSection" title="' + category + '"> <a href="/category/' + encodeURIComponent(category.toLowerCase()) + '">' + category + '</a> </li> ');
});
}
};
isNew = location.pathname.replace(/\//g, "") === "postnew";
postId = $("[itemprop~='blogPost']").attr("data-id");
txtTitle = $("[itemprop~='blogPost'] [itemprop~='name']");
txtContent = $("[itemprop~='articleBody']");
txtMessage = $("#admin .alert");
txtImage = $("#admin #txtImage");
btnNew = $("#btnNew");
btnEdit = $("#btnEdit").bind("click", editPost);
btnDelete = $("#btnDelete").bind("click", deletePost);
btnSave = $("#btnSave").bind("click", savePost);
btnCancel = $("#btnCancel").bind("click", cancelEdit);
chkPublish = $("#ispublished").find("input[type=checkbox]");
$(document).keyup(function (e) {
if (!document.activeElement.isContentEditable) {
if (e.keyCode === 46) { // Delete key
deletePost();
} else if (e.keyCode === 27) { // ESC key
cancelEdit();
}
}
});
$('.uploadimage').click(function (e) {
e.preventDefault();
$('#txtImage').click();
});
if (isNew) {
editPost();
$("#ispublished").fadeIn();
chkPublish[0].checked = true;
} else if (txtTitle !== null && txtTitle.length === 1 && location.pathname.length > 1) {
btnEdit.removeAttr("disabled");
btnDelete.removeAttr("disabled");
$("#ispublished").css({ "display": "inline" });
}
})(jQuery);

+ 0
- 217
Sevomin.News/scripts/bootstrap-wysiwyg.js View File

@ -1,217 +0,0 @@
/* http://github.com/mindmup/bootstrap-wysiwyg */
/*global jQuery, $, FileReader*/
/*jslint browser:true*/
(function ($) {
'use strict';
var readFileIntoDataUrl = function (fileInfo) {
var loader = $.Deferred(),
fReader = new FileReader();
fReader.onload = function (e) {
loader.resolve(e.target.result);
};
fReader.onerror = loader.reject;
fReader.onprogress = loader.notify;
fReader.readAsDataURL(fileInfo);
return loader.promise();
};
$.fn.cleanHtml = function () {
var html = $(this).html();
return html && html.replace(/(<br>|\s|<div><br><\/div>|&nbsp;)*$/, '');
};
$.fn.wysiwyg = function (userOptions) {
var editor = this,
selectedRange,
options,
toolbarBtnSelector,
updateToolbar = function () {
if (options.activeToolbarClass) {
$(options.toolbarSelector).find(toolbarBtnSelector).each(function () {
var command = $(this).data(options.commandRole);
try {
if (document.queryCommandState(command)) {
$(this).addClass(options.activeToolbarClass);
} else {
$(this).removeClass(options.activeToolbarClass);
}
}
catch (ex) { };
});
}
},
execCommand = function (commandWithArgs, valueArg) {
var commandArr = commandWithArgs.split(' '),
command = commandArr.shift(),
args = commandArr.join(' ') + (valueArg || '');
if (commandWithArgs === "createLink")
args = prompt("Enter the URL for this link:", "http://");
document.execCommand(command, 0, args);
updateToolbar();
},
bindHotkeys = function (hotKeys) {
$.each(hotKeys, function (hotkey, command) {
editor.keydown(hotkey, function (e) {
if (editor.attr('contenteditable') && editor.is(':visible')) {
e.preventDefault();
e.stopPropagation();
execCommand(command);
}
}).keyup(hotkey, function (e) {
if (editor.attr('contenteditable') && editor.is(':visible')) {
e.preventDefault();
e.stopPropagation();
}
});
});
},
getCurrentRange = function () {
var sel = window.getSelection();
if (sel.getRangeAt && sel.rangeCount) {
return sel.getRangeAt(0);
}
},
saveSelection = function () {
selectedRange = getCurrentRange();
},
restoreSelection = function () {
var selection = window.getSelection();
if (selectedRange) {
try {
selection.removeAllRanges();
} catch (ex) {
document.body.createTextRange().select();
document.selection.empty();
}
selection.addRange(selectedRange);
}
},
insertFiles = function (files) {
editor.focus();
$.each(files, function (idx, fileInfo) {
if (/^image\//.test(fileInfo.type)) {
$.when(options.readFileIntoUrl(fileInfo)).done(function (dataUrl) {
execCommand('insertimage', dataUrl);
}).fail(function (e) {
options.fileUploadError("file-reader", e);
});
} else {
$.when(options.readFileIntoUrl(fileInfo)).done(function (dataUrl) {
//execCommand('inserthtml', '<a href="' + dataUrl + '">Download</a>');
var frag = document.createDocumentFragment();
var node = document.createElement("a");
node.innerText = fileInfo.name;
node.href = dataUrl;
frag.appendChild(node);
window.getSelection().getRangeAt(0).insertNode(node);
}).fail(function (e) {
options.fileUploadError("file-reader", e);
});
//options.fileUploadError("unsupported-file-type", fileInfo.type);
}
});
},
markSelection = function (input, color) {
restoreSelection();
if (document.queryCommandSupported('hiliteColor')) {
document.execCommand('hiliteColor', 0, color || 'transparent');
}
saveSelection();
input.data(options.selectionMarker, color);
},
bindToolbar = function (toolbar, options) {
toolbar.find(toolbarBtnSelector).click(function () {
restoreSelection();
editor.focus();
execCommand($(this).data(options.commandRole));
saveSelection();
});
toolbar.find('[data-toggle=dropdown]').click(restoreSelection);
toolbar.find('input[type=text][data-' + options.commandRole + ']').on('webkitspeechchange change', function () {
var newValue = this.value; /* ugly but prevents fake double-calls due to selection restoration */
this.value = '';
restoreSelection();
if (newValue) {
editor.focus();
execCommand($(this).data(options.commandRole), newValue);
}
saveSelection();
}).on('focus', function () {
var input = $(this);
if (!input.data(options.selectionMarker)) {
markSelection(input, options.selectionColor);
input.focus();
}
}).on('blur', function () {
var input = $(this);
if (input.data(options.selectionMarker)) {
markSelection(input, false);
}
});
toolbar.find('input[type=file][data-' + options.commandRole + ']').change(function () {
restoreSelection();
if (this.type === 'file' && this.files && this.files.length > 0) {
insertFiles(this.files);
}
saveSelection();
this.value = '';
});
},
initFileDrops = function () {
editor.on('dragenter dragover', false)
.on('drop', function (e) {
var dataTransfer = e.originalEvent.dataTransfer;
e.stopPropagation();
e.preventDefault();
if (dataTransfer && dataTransfer.files && dataTransfer.files.length > 0) {
insertFiles(dataTransfer.files);
}
});
};
options = $.extend({}, $.fn.wysiwyg.defaults, userOptions);
toolbarBtnSelector = 'a[data-' + options.commandRole + '],button[data-' + options.commandRole + '],input[type=button][data-' + options.commandRole + ']';
bindHotkeys(options.hotKeys);
if (options.dragAndDropImages) {
initFileDrops();
}
bindToolbar($(options.toolbarSelector), options);
editor.attr('contenteditable', true)
.on('mouseup keyup mouseout', function () {
saveSelection();
updateToolbar();
});
$(window).bind('touchend', function (e) {
var isInside = (editor.is(e.target) || editor.has(e.target).length > 0),
currentRange = getCurrentRange(),
clear = currentRange && (currentRange.startContainer === currentRange.endContainer && currentRange.startOffset === currentRange.endOffset);
if (!clear || isInside) {
saveSelection();
updateToolbar();
}
});
return this;
};
$.fn.wysiwyg.defaults = {
hotKeys: {
'ctrl+b meta+b': 'bold',
'ctrl+i meta+i': 'italic',
'ctrl+u meta+u': 'underline',
'ctrl+z meta+z': 'undo',
'ctrl+y meta+y meta+shift+z': 'redo',
'ctrl+l meta+l': 'justifyleft',
'ctrl+r meta+r': 'justifyright',
'ctrl+e meta+e': 'justifycenter',
'ctrl+j meta+j': 'justifyfull',
'shift+tab': 'outdent',
'tab': 'indent'
},
toolbarSelector: '[data-role=editor-toolbar]',
commandRole: 'edit',
activeToolbarClass: 'btn-info',
selectionMarker: 'edit-focus-marker',
selectionColor: 'darkgrey',
dragAndDropImages: true,
fileUploadError: function (reason, detail) { console.log("File upload error", reason, detail); },
readFileIntoUrl: readFileIntoDataUrl
};
}(window.jQuery));

+ 0
- 271
Sevomin.News/scripts/comments.js View File

@ -1,271 +0,0 @@
/* globals NodeList, HTMLCollection */
(function () {
var postId = null;
//#region Helpers
function objectToUrl(obj) {
var string = '';
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
string += prop + '=' + obj[prop].replace(/ /g, '+') + '&';
}
}
return string.substring(0, string.length - 1);
}
var AsynObject = AsynObject ? AsynObject : {};
AsynObject.ajax = function (url, callback) {
var ajaxRequest = AsynObject.getAjaxRequest(callback);
ajaxRequest.open("GET", url, true);
ajaxRequest.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
ajaxRequest.send(null);
};
AsynObject.postAjax = function (url, callback, data) {
var ajaxRequest = AsynObject.getAjaxRequest(callback);
ajaxRequest.open("POST", url, true);
ajaxRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajaxRequest.send(objectToUrl(data));
};
AsynObject.getAjaxRequest = function (callback) {
var ajaxRequest = new XMLHttpRequest();
ajaxRequest.onreadystatechange = function () {
if (ajaxRequest.readyState > 1 && ajaxRequest.status > 0) {
callback(ajaxRequest.readyState, ajaxRequest.status, ajaxRequest.responseText);
}
};
return ajaxRequest;
};
function hasClass(elem, className) {
return new RegExp(' ' + className + ' ').test(' ' + elem.className + ' ');
}
function addClass(elem, className) {
if (!hasClass(elem, className)) {
elem.className += ' ' + className;
}
}
function removeClass(elem, className) {
var newClass = ' ' + elem.className.replace(/[\t\r\n]/g, ' ') + ' ';
if (hasClass(elem, className)) {
while (newClass.indexOf(' ' + className + ' ') >= 0) {
newClass = newClass.replace(' ' + className + ' ', ' ');
}
elem.className = newClass.replace(/^\s+|\s+$/g, '');
}
}
function toDOM(htmlString) {
var wrapper = document.createElement('div');
wrapper.innerHTML = htmlString;
return wrapper.children;
}
function getParentsByAttribute(element, attr, value) {
var arr = [];
while (element) {
element = element.parentNode;
if (element.hasAttribute(attr) && element.getAttribute(attr) === value) {
arr.push(element);
}
if (!element.parentNode.parentNode) {
break;
}
}
return arr;
}
Element.prototype.remove = function () {
this.parentElement.removeChild(this);
};
NodeList.prototype.remove = HTMLCollection.prototype.remove = function () {
for (var i = 0, len = this.length; i < len; i++) {
if (this[i] && this[i].parentElement) {
this[i].parentElement.removeChild(this[i]);
}
}
};
function slide(thisObj, direction, callback) {
if (direction === "Up") {
thisObj.style.height = '0px';
} else {
var clone = thisObj.cloneNode(true);
clone.style.position = 'absolute';
clone.style.visibility = 'hidden';
clone.style.height = 'auto';
addClass(clone, 'slideClone col-md-6 col-md-offset-3');
document.body.appendChild(clone);
var slideClone = document.getElementsByClassName("slideClone")[0];
var newHeight = slideClone.clientHeight;
slideClone.remove();
thisObj.style.height = newHeight + 'px';
if (callback) {
setTimeout(function () {
callback();
}, 500);
}
}
}
//#endregion
var endpoint = "/comment.ashx";
function deleteComment(commentId, element) {
if (confirm("Do you want to delete this comment?")) {
AsynObject.postAjax(endpoint, function (state, status) {
if (state === 4 && status === 200) {
slide(element, "Up", function () {
element.remove();
});
return;
} else if (status !== 200) {
alert("Something went wrong. Please try again");
}
}, {
mode: "delete",
postId: postId,
commentId: commentId,
token: document.querySelector("[data-token]").getAttribute("data-token")
});
}
}
function approveComment(commentId, element) {
AsynObject.postAjax(endpoint, function (state, status) {
if (state === 4 && status === 200) {
element.remove();
return;
} else if (status !== 200) {
alert("Something went wrong. Please try again");
}
}, {
mode: "approve",
postId: postId,
commentId: commentId,
token: document.querySelector("[data-token]").getAttribute("data-token")
});
}
function saveComment(name, email, website, content, callback) {
if (localStorage) {
localStorage.setItem("name", name);
localStorage.setItem("email", email);
localStorage.setItem("website", website);
}
AsynObject.postAjax(endpoint, function (state, status, data) {
var elemStatus = document.getElementById("status");
if (state === 4 && status === 200) {
elemStatus.innerHTML = "Your comment has been added";
removeClass(elemStatus, "alert-danger");
addClass(elemStatus, "alert-success");
document.getElementById("commentcontent").value = "";
var comment = toDOM(data)[0];
comment.style.height = "0px";
var elemComments = document.getElementById("comments");
elemComments.appendChild(comment);
slide(comment, "Down");
callback(true);
return;
} else if (status !== 200) {
addClass(elemStatus, "alert-danger");
elemStatus.innerText = "Unable to add comment";
callback(false);
}
}, {
mode: "save",
postId: postId,
name: name,
email: email,
website: website,
content: content,
token: document.querySelector("[data-token]").getAttribute("data-token"),
});
}
function initialize() {
postId = document.querySelector("[itemprop=blogPost]").getAttribute("data-id");
var email = document.getElementById("commentemail");
var name = document.getElementById("commentname");
var website = document.getElementById("commenturl");
var content = document.getElementById("commentcontent");
var commentForm = document.getElementById("commentform");
var allComments = document.querySelectorAll("[itemprop=comment]");
for (var i = 0; i < allComments.length; ++i) {
allComments[i].style.height = allComments[i].clientHeight + 'px';
}
commentForm.onsubmit = function (e) {
e.preventDefault();
var button = e.target;
button.setAttribute("disabled", true);
saveComment(name.value, email.value, website.value, content.value, function () {
button.removeAttribute("disabled");
});
};
website.addEventListener("keyup", function (e) {
var w = e.target;
if (w.value.trim().length >= 4 && w.value.indexOf("http") === -1) {
w.value = "http://" + w.value;
}
});
window.addEventListener("click", function (e) {
var tag = e.target;
if (hasClass(tag, "deletecomment")) {
var comment = getParentsByAttribute(tag, "itemprop", "comment")[0];
deleteComment(comment.getAttribute("data-id"), comment);
}
if (hasClass(tag, "approvecomment")) {
var comment = getParentsByAttribute(tag, "itemprop", "comment")[0];
approveComment(comment.getAttribute("data-id"), tag);
}
});
if (localStorage) {
email.value = localStorage.getItem("email");
website.value = localStorage.getItem("website");
if (name.value.length === 0) {
name.value = localStorage.getItem("name");
}
}
}
if (document.getElementById("commentform")) {
initialize();
}
})();

+ 0
- 2670
Sevomin.News/scripts/jquery-2.0.2.intellisense.js
File diff suppressed because it is too large
View File


+ 0
- 8842
Sevomin.News/scripts/jquery-2.0.2.js
File diff suppressed because it is too large
View File


+ 0
- 46
Sevomin.News/themes/Sevomin/Comment.cshtml View File

@ -1,46 +0,0 @@
<article data-id="@Model.ID" itemscope itemtype="http://schema.org/UserComments" itemprop="comment" class="@(Model.IsAdmin ? "self" : null)">
<img src="@Model.GravatarUrl(50)" width="50" height="50" alt="Comment by @Model.Author" />
<div>
@Date()
<p itemprop="commentText">@Html.Raw(Model.ContentWithLinks())</p>
@Author()
@DeleteAndApproveButton()
</div>
@ApprovalMessage()
</article>
@helper Date()
{
var title = Model.PubDate.ToString("yyyy-MM-ddTHH:mm");
var display = Model.PubDate.ToString("MMMM d. yyyy HH:mm");
<time datetime="@title" itemprop="commentTime">@display</time>
}
@helper Author()
{
if (string.IsNullOrEmpty(Model.Website))
{
<strong itemprop="creator">@Model.Author</strong>
}
else
{
<strong itemprop="creator"><a href="@Model.Website" itemprop="url" rel="nofollow">@Model.Author</a></strong>
}
}
@helper DeleteAndApproveButton()
{
if (User.Identity.IsAuthenticated)
{
<button class="deletecomment btn btn-link">Delete</button>
if (Blog.ModerateComments && !Model.IsApproved)
{
<button class="approvecomment btn btn-link">Approve</button>
}
}
}
@helper ApprovalMessage()
{
if (Blog.ModerateComments && !Model.IsApproved && !User.Identity.IsAuthenticated)
{
<div itemprop="approvalWarning">! The comment will not be visible until a moderator approves it !</div>
}
}

+ 0
- 107
Sevomin.News/themes/Sevomin/Post.cshtml View File

@ -1,107 +0,0 @@
@if (Page.ShowPaging == true)
{
<div class="col-6 col-sm-6 col-lg-4 rtl pull-right">
<h2>@Model.Title</h2>
<p class="excerpt">@MarkupHelper.GetDescription(Model.Content, 235, "...")</p>
<p><a class="btn btn-primary" href="@Model.Url" role="button">بیشتر بخوانید &raquo;</a></p>
</div>
}
else
{
<article class="post rtl" data-id="@Model.ID" itemscope itemtype="http://schema.org/BlogPosting" itemprop="blogPost">
<h1 itemprop="headline name">
<a href="@Model.Url" itemprop="url">@Model.Title</a>
</h1>
<div>
<a href="@Model.Url#comments">
<em class="glyphicon glyphicon-comment"></em>
@Model.CountApprovedComments(Context) نظر
</a>
<abbr title="@Model.PubDate.ToLocalTime()" itemprop="datePublished">@Model.PubDate.ToLocalTime().ToString("MMMM d. yyyy")</abbr>
@Categories()
</div>
<div itemprop="articleBody">@Html.Raw(Model.Content)</div>
@if (Blog.CurrentPost != null)
{
<section id="comments" aria-label="Comments">
@if (Model.CountApprovedComments(Context) > 0)
{
<h2>نظرات</h2>
}
@foreach (Comment comment in Model.Comments)
{
if (comment.IsApproved || !Blog.ModerateComments || Context.User.Identity.IsAuthenticated)
{
@RenderPage("Comment.cshtml", comment)
}
}
</section>
if (Model.AreCommentsOpen(Context))
{
@RenderPage("~/views/CommentForm.cshtml")
}
}
</article>
@helper Categories()
{
if (Model.Categories.Length > 0)
{
<ul class="categories rtl">
<li><em class="glyphicon glyphicon-bookmark"></em> ارسال شده در: </li>
@foreach (string cat in Model.Categories)
{
<li itemprop="articleSection">
<a href="~/category/@HttpUtility.UrlEncode(cat.ToLowerInvariant())">@cat</a>
</li>
}
</ul>
}
}
}
@functions{
public class MarkupHelper
{
#region excerpt generation
public static string GetDescription(string content, int length = 300, string ommission = "...")
{
return TruncateHtml(StripTags(content), 235, ommission);
}
public static string TruncateHtml(string input, int length = 300, string ommission = "...")
{
if (input == null || input.Length < length)
return input;
int nextSpace = input.LastIndexOf(" ", length);
return string.Format("{0}" + ommission,
input.Substring(0, (nextSpace > 0) ? nextSpace : length).Trim());
}
public static string StripTags(string markup)
{
try
{
StringReader stringReader = new StringReader(markup);
System.Xml.XPath.XPathDocument xPathdocument;
using (System.Xml.XmlReader xmlReader = System.Xml.XmlReader.Create(stringReader,
new System.Xml.XmlReaderSettings() { ConformanceLevel = System.Xml.ConformanceLevel.Fragment }))
{
xPathdocument = new System.Xml.XPath.XPathDocument(xmlReader);
}
return xPathdocument.CreateNavigator().Value;
}
catch
{
return string.Empty;
}
}
#endregion
}
}

+ 0
- 119
Sevomin.News/themes/Sevomin/_Layout.cshtml View File

@ -1,119 +0,0 @@
@{
string next = Blog.GetNextPage();
string prev = Blog.GetPrevPage();
}
<!doctype html>
<html lang="en-us">
<head prefix="og: http://ogp.me/ns#">
<meta charset="utf-8" />
<title>@Page.Title</title>
<meta name="description" content="@Blog.Description" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1" />
<link type="application/rsd+xml" rel="edituri" title="RSD" href="~/views/robots/rsd" />
<link type="application/rss+xml" rel="alternate" title="@Blog.Title" href="~/feed/rss/" />
<link type="application/atom+xml" rel="alternate" title="@Blog.Title" href="~/feed/atom/" />
<link rel="stylesheet" href="@Blog.FingerPrint("/css/bootstrap.min.css")" />
@*<link rel="stylesheet" href="@Blog.FingerPrint("/themes/" + Blog.Theme + "/site.css")" />*@
<link rel="stylesheet" href="@Blog.FingerPrint("/themes/" + Blog.Theme + "/common.css")" />
<link rel="shortcut icon" href="@Blog.FingerPrint("/favicon.ico")" type="image/x-icon" />
<link rel="dns-prefetch" href="http://gravatar.com/" />
@AdminCss()
<meta name="application-name" content="@Blog.Title" />
<meta name="msapplication-TileColor" content="#ffffff" />
<meta property="og:title" content="@Page.Title" />
<meta property="og:type" content="website" />
<meta property="og:image" content="@Blog.Image" />
<meta property="og:url" content="@(Request.Url.Scheme +"://" + Request.Url.Authority + Request.RawUrl)" />
@if (!string.IsNullOrEmpty(prev))
{
<link rel="prev" href="@prev" />
}
@if (!string.IsNullOrEmpty(next))
{
<link rel="next" href="@next" />
}
</head>
<body itemscope itemtype="http://schema.org/Blog" class="@(User.Identity.IsAuthenticated ? "admin" : null)">
<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header navbar-right">
@*<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>*@
<a class="navbar-brand" href="#">
<small>اخبار سومین</small>
<img src="@Blog.FingerPrint("/images/revert-logo.png")">
</a>
</div>
@*<div class="collapse navbar-collapse navbar-right" id="collapse">
<ul class="nav navbar-nav navbar-right">
<li class="rtl"><a href="/"><span class="glyphicon glyphicon-home"></span>خانه</a></li>
<li class="rtl"><a href="/jobs">آگهی‌های استخدام</a></li>
<li class="rtl"><a href="/login">ورود به سایت</a></li>
</ul>
</div>*@
</div>
</nav>
<div class="container">
<div class="row row-offcanvas row-offcanvas-right">
@*<header role="banner">
<h1 class="rtl" itemprop="name">@Blog.Title</h1>
</header>*@
<div role="main" class="col-md-12">
@RenderBody()
@if (Page.ShowPaging != null)
{
<ul class="pager">
@if (Blog.GetPosts().Count() > Blog.PostsPerPage * Blog.CurrentPage)
{
<li class="previous"><a href="@Blog.GetPagingUrl(1)" rel="prev">&larr; Older</a></li>
}
@if (Blog.CurrentPage > 1)
{
<li class="next"><a href="@Blog.GetPagingUrl(-1)" rel="next">Newer &rarr;</a></li>
}
</ul>
}
</div>
</div>
</div>
<footer class="text-center" role="contentinfo" itemscope itemtype="http://schema.org/Person" itemprop="author">
<span>
Copyright &copy; @DateTime.Now.Year
<a href="http://www.sevom.in" itemprop="url name">Sevomin</a>
</span>
</footer>
@if ((Blog.CurrentPost != null && Blog.CurrentPost.AreCommentsOpen(Context)) || Blog.IsNewPost)
{
<script src="@Blog.FingerPrint("/scripts/comments.js")" async defer></script>
}
@if (User.Identity.IsAuthenticated)
{
@RenderPage("~/views/AdminMenu.cshtml")
}
</body>
</html>
@helper AdminCss()
{
if (User.Identity.IsAuthenticated)
{
<link href="@Blog.FingerPrint("/css/admin.css")" rel="stylesheet" />
}
}

+ 0
- 108
Sevomin.News/themes/Sevomin/common.css View File

@ -1,108 +0,0 @@
@font-face {
font-family: 'Koodak';
src: url('/fonts/BKoodakBold.eot?#') format('eot'), /* IE6–8 */
url('/fonts/BKoodakBold.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
url('/fonts/BKoodakBold.ttf') format('truetype'); /* Saf3—5, Chrome4+, FF3.5, Opera 10+ */
}
@font-face {
font-family: 'Yekan';
src: url('/fonts/WebYekan.eot');
src: url('/fonts/WebYekan.eot?#iefix') format('embedded-opentype'), url('/fonts/WebYekan.woff') format('woff'), url('/fonts/WebYekan.ttf') format('truetype'), url('/fonts/WebYekan.svg#WebYekan') format('svg');
font-weight: normal;
font-style: normal;
unicode-range: U+060006FF;
}
body {
font-family: Yekan, "Helvetica Neue",Helvetica,Arial,sans-serif;
padding: 60px;
}
h1, h2, h3, h4, h5, h6 {
font-family: Koodak, "Helvetica Neue",Helvetica,Arial,sans-serif;
}
.rtl {
direction: rtl !important;
text-align: right !important;
}
.ltr {
direction: ltr !important;
text-align: left !important;
}
.center-text {
text-align: center !important;
}
th {
text-align: right;
}
/*.navbar{
height: 30px;
background: #5B9BD5;
border-radius: 0px !important;
}
.navbar .navbar-nav>li>a{
color: white;
}
.navbar .navbar-nav>li>a:hover{
color: #E0E0E0;
background: #69B0EA;
}
.navbar-brand{
padding: 10px 15px 0px 15px !important;
}*/
.navbar-brand img {
height: 25px;
}
.job-list-top-toolbar, .job-list-bottom-toolbar {
text-align: left !important;
}
.job-list-top-toolbar {
padding: 0px 10px 10px 0px;
margin-bottom: 5px;
}
.job-list-bottom-toolbar {
padding: 10px 10px 0px 0px;
}
.job-list-bottom-toolbar .date {
float: right;
}
#login-intro-text {
line-height: 1.5em;
font-size: 1.3em;
}
#login-intro-box {
border-radius: 5px;
border: 1px solid #808080;
margin: 10px;
padding: 5px;
background: #dcdcdc;
}
.footer {
padding-top: 40px;
padding-bottom: 40px;
margin-top: 100px;
color: #777;
text-align: center;
border-top: 1px solid #e5e5e5;
}
.post header div .categories li {
display: inline;
}

+ 0
- 247
Sevomin.News/themes/Sevomin/site.css View File

@ -1,247 +0,0 @@
@media only screen and (max-width: 1280px) {
@-ms-viewport {
width: 800px;
}
}
@media only screen and (max-width: 768px) {
@-ms-viewport {
width: 600px;
}
}
html, body {
height: 100%;
}
body {
font: 1.8em/1.5 'Century Gothic', Verdana, Geneva, 'DejaVu Sans', sans-serif;
margin: 0;
}
img, video, iframe {
max-width: 100%;
}
a {
color: #3277b3;
}
.container {
min-height: 100%;
padding-bottom: 35px;
}
.container > div > header {
border: none;
text-align: center;
margin: 0 0 3em 0;
}
.container > div > header a {
font-size: 4em;
color: #000;
}
div[role=main] {
margin-bottom: 2em;
overflow: auto;
}
.pager {
margin-top: 2em;
}
input[type], button, textarea {
font: inherit !important;
}
/*#region Post */
.post header h1 {
margin: 0 0 3px 0;
}
.post header a {
color: #000;
}
.post header div {
font-size: .75em;
opacity: .8;
margin-bottom: 1em;
}
.post header div a {
margin-left: 10px;
}
.post header div .categories {
margin: 0;
padding: 10px;
display: inline;
}
.post header div .categories a {
margin: 0;
}
.post header div .categories li {
display: inline;
}
.post header div .categories li:not(:first-child):not(:last-child):after {
content: ", ";
}
.post abbr {
border: none;
}
.post h2 {
margin-bottom: 0;
font-size: 1.3em;
}
.post h3 {
margin-bottom: 0;
font-size: 1.1em;
}
.post div[itemprop='articleBody'] {
border-bottom: 1px solid #d3d3d3;
padding-bottom: .5em;
margin-bottom: 2em;
-ms-text-size-adjust: 150%;
}
.post p {
padding: .2em 0;
}
/*#endregion */
/*#region Comments */
#comments article {
position: relative;
max-height: 9999px;
overflow: hidden;
-webkit-transition: height .5s ease-in-out;
-moz-transition: height .5s ease-in-out;
-o-transition: height .5s ease-in-out;
transition: height .5s ease-in-out;
}
#comments article div {
padding-left: 70px;
}
#comments article div p {
border: 1px solid #d3d3d3;
border-radius: 5px;
padding: 7px;
position: relative;
}
#comments article div p:before {
content: "";
position: absolute;
top: 10px;
left: -10px;
border-style: solid;
border-width: 9px 9px 9px 0;
border-color: transparent #d3d3d3;
}
#comments article div p:after {
content: "";
position: absolute;
top: 10px;
left: -9px;
border-style: solid;
border-width: 9px 9px 9px 0;
border-color: transparent #ffffff;
}
#comments article.self div p {
background: #f7f7f7;
}
#comments article.self div p:after {
border-color: transparent #f7f7f7;
}
#comments article [itemprop='commentText'] {
margin: 0;
}
#comments article img {
border-radius: 5px;
position: absolute;
top: 19px;
}
#comments article [itemprop='commentTime'] {
display: block;
text-align: right;
font-size: .7em;
}
#comments article [itemprop='creator'] {
font-size: .8em;
margin-left: 7px;
}
#comments article [itemprop='approvalWarning'] {
margin-left: 70px;
font-size: 0.6em;
background-color: rgba(255, 255, 0, 0.50);
padding: 5px;
}
/*#endregion */
/*#region Comment form */
#commentform {
margin-top: 2em;
}
#status {
margin-left: 1em;
}
/*#endregion */
/*#region Footer */
footer {
background-color: #181818;
color: #fff;
font-size: .85em;
padding: 5px;
clear: both;
position: relative;
margin: -35px 0 0 0;
height: 35px;
}
footer p {
padding: 1em 0;
text-align: center;
}
footer a {
color: #a9d2e1;
}
/*#endregion */
.slideClone img {
float: left;
}
.excerpt {
font-size: 14px;
}

+ 0
- 78
Sevomin.News/views/AdminMenu.cshtml View File

@ -1,78 +0,0 @@
@{
var isPublished = Blog.CurrentPost != null && Blog.CurrentPost.IsPublished;
}
<nav id="admin" data-role="editor-toolbar" class="navbar navbar-default navbar-fixed-top" data-ispublished="@isPublished" data-token="@Blog.UniqueId">
<div class="navbar-inner">
<ul class="nav navbar-nav">
<li><button onclick="location.href='/post/new/'" class="btn btn-link" id="btnNew">New post</button></li>
<li><button class="btn btn-link" id="btnEdit" disabled>Edit</button></li>
<li><button class="btn btn-link" id="btnDelete" disabled>Delete</button></li>
<li><button class="btn btn-link" id="btnSave" disabled>Save</button></li>
<li><button class="btn btn-link" id="btnCancel" disabled>Cancel</button></li>
<li id="ispublished">
<input type="checkbox" id="chkispublished" checked="@(isPublished ? "checked" : null)" disabled />
<label for="chkispublished">Publish</label>
</li>
</ul>
<div id="tools">
<div class="btn-group">
<a class="btn btn-mini" data-edit="formatBlock <h1>">H1</a>
<a class="btn btn-mini" data-edit="formatBlock <h2>">H2</a>
<a class="btn btn-mini" data-edit="formatBlock <h3>">H3</a>
</div>
<div class="btn-group">
<a class="btn btn-mini" data-edit="italic"><em>I</em></a>
<a class="btn btn-mini" data-edit="bold"><strong>B</strong></a>
<a class="btn btn-mini" data-edit="underline"><ins>U</ins></a>
<a class="btn btn-mini" data-edit="strikethrough"><s>S</s></a>
</div>
<div class="btn-group">
<a class="btn btn-mini" data-edit="justifyleft" title="Justify left"><i class="glyphicon glyphicon-align-left"></i></a>
<a class="btn btn-mini" data-edit="justifycenter" title="Justify center"><i class="glyphicon glyphicon-align-center"></i></a>
<a class="btn btn-mini" data-edit="justifyright" title="Justify right"><i class="glyphicon glyphicon-align-right"></i></a>
<a class="btn btn-mini" data-edit="justifyfull" title="Justify full"><i class="glyphicon glyphicon-align-justify"></i></a>
</div>
<div class="btn-group">
<a class="btn btn-mini" data-edit="insertunorderedlist" title="Bullet points"><i class="glyphicon glyphicon-list"></i></a>
<a class="btn btn-mini" data-edit="insertorderedlist" title="Numbered bullet points"><i class="glyphicon glyphicon-th-list"></i></a>
<a class="btn btn-mini" data-edit="outdent" title="Indent left"><i class="glyphicon glyphicon-indent-left"></i></a>
<a class="btn btn-mini" data-edit="indent" title="Indent right"><i class="glyphicon glyphicon-indent-right"></i></a>
</div>
<div class="btn-group">
<a class="btn btn-mini" data-edit="createLink" title="Hyperlink"><i class="glyphicon glyphicon-globe"></i></a>
<a class="btn btn-mini" data-edit="unlink" title="Remove hyperlink"><i class="glyphicon glyphicon-remove"></i></a>
<a class="btn btn-mini uploadimage"><i class="glyphicon glyphicon-picture"></i></a>
</div>
<input type="file" id="txtImage" data-edit="insertImage" style="width:0; height: 0;position:absolute" />
<div class="btn-group">
<a class="btn btn-mini source" data-cmd="source" title="Toggle source/design view"><i class="glyphicon glyphicon-eye-open"></i></a>
</div>
</div>
</div>
<form action="@FormsAuthentication.LoginUrl?signout=true&amp;[email protected]" method="post">
<button type="submit" title="Signed in as @User.Identity.Name" class="btn btn-link pull-right">
Sign out &nbsp;<span class="glyphicon glyphicon-lock"></span>
</button>
</form>
<aside>
<p class="alert"></p>
</aside>
</nav>
@if (!string.IsNullOrEmpty(Blog.CurrentSlug))
{
<script src="@Blog.FingerPrint("/scripts/jquery-2.0.2.js", "//ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js")"></script>
<script src="@Blog.FingerPrint("/scripts/bootstrap-wysiwyg.js")" defer></script>
<script src="@Blog.FingerPrint("/scripts/admin.js")" defer></script>
}

+ 0
- 37
Sevomin.News/views/CommentForm.cshtml View File

@ -1,37 +0,0 @@
<form id="commentform" role="form" class="form-horizontal rtl" data-token="@Blog.UniqueId">
<fieldset>
<legend>ارسال نظرات</legend>
<div class="form-group">
<label for="commentname" class="control-label col-sm-2 col-sm-push-8">نام</label>
<div class="col-sm-7">
<input id="commentname" class="form-control" type="text" placeholder="نام" required />
</div>
</div>
<div class="form-group">
<label for="commentemail" class="control-label col-sm-2 col-sm-push-8">ایمیل</label>
<div class="col-sm-7">
<input id="commentemail" class="form-control" type="email" placeholder="آدرس ایمیل" required />
</div>
</div>
<div class="form-group">
<label for="commenturl" class="control-label col-sm-2 col-sm-push-8">وب سایت</label>
<div class="col-sm-7">
<input id="commenturl" class="form-control" type="url" placeholder="آدرس وب سایت" />
</div>
</div>
<div class="form-group">
<div class="col-sm-12">
<textarea id="commentcontent" class="form-control" rows="4" placeholder="نظر" required></textarea>
</div>
</div>
<div class="form-group col-sm-12">
<button class="btn btn-primary">ارسال نظر</button>
<span id="status" class="alert" role="status" aria-live="polite"></span>
</div>
</fieldset>
</form>

+ 0
- 59
Sevomin.News/views/Login.cshtml View File

@ -1,59 +0,0 @@
@{
Page.Title = "Sign in";
Layout = "~/themes/" + Blog.Theme + "/_Layout.cshtml";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
if (Request.HttpMethod == "POST")
{
string username = Request.Form["username"];
string password = Request.Form["password"];
string remember = Request.Form["remember"];
if (!string.IsNullOrEmpty(username) && !string.IsNullOrEmpty(password))
{
if (FormsAuthentication.Authenticate(username, password))
{
FormsAuthentication.RedirectFromLoginPage(username, remember == "on");
}
}
else if (!string.IsNullOrEmpty(Request.QueryString["signout"]))
{
FormsAuthentication.SignOut();
Response.Redirect(Request.QueryString["ReturnUrl"], true);
}
}
}
@if (!User.Identity.IsAuthenticated)
{
<form action="@Request.RawUrl" method="post" role="form" class="col-md-5 col-md-offset-3" id="login">
<fieldset>
<h1 class="text-center">Sign in</h1>
@if (Request.HttpMethod == "POST")
{
<p class="alert-danger">Username or password is incorrect</p>
}
<div class="form-group">
<label for="username">Username</label>
<input type="text" class="form-control" id="username" name="username" placeholder="Username" required autofocus />
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="password" class="form-control" id="password" name="password" placeholder="Password" required />
</div>
<div class="form-group">
<input type="checkbox" id="remember" name="remember" />
<label for="remember">&nbsp;Remember me</label>
</div>
<button type="submit" class="btn btn-primary">Sign in</button>
</fieldset>
</form>
}
else
{
<h3>You are already signed in</h3>
}

+ 0
- 14
Sevomin.News/views/Robots/RSD.cshtml View File

@ -1,14 +0,0 @@
@{
Response.ContentType = "text/xml";
}
<rsd version="1.0">
<service>
<enginename>MiniBlog</enginename>
<enginelink>http://github.com/madskristensen/miniblog/</enginelink>
<homepagelink>@Request.Url.Scheme://@Request.Url.Authority</homepagelink>
<apis>
<api name="MetaWeblog" preferred="true" apilink="@Request.Url.Scheme://@Request.Url.Authority/metaweblog" blogid="1" />
</apis>
</service>
</rsd>

+ 0
- 8
Sevomin.News/views/Robots/Robots.cshtml View File

@ -1,8 +0,0 @@
User-agent: *
Disallow: /views/
sitemap: @(Request.Url.Scheme + "://" + Request.Url.Authority)/sitemap.xml
@{
Response.ContentType = "text/plain";
}

+ 0
- 15
Sevomin.News/views/Robots/Sitemap.cshtml View File

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
@foreach (Post post in Storage.GetAllPosts())
{
<url>
<loc>@post.AbsoluteUrl</loc>
<lastmod>@post.LastModified.ToString("yyyy-MM-ddThh:mmzzz")</lastmod>
</url>
}
</urlset>
@{
Response.ContentType = "text/xml";
}

+ 0
- 28
Sevomin.News/wlwmanifest.xml View File

@ -1,28 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<manifest xmlns="http://schemas.microsoft.com/wlw/manifest/weblog">
<options>
<clientType>Metaweblog</clientType>
<supportsEmbeds>Yes</supportsEmbeds>
<supportsKeywords>No</supportsKeywords>
<supportsNewCategories>Yes</supportsNewCategories>
<supportsNewCategoriesInline>Yes</supportsNewCategoriesInline>
<supportsCommentPolicy>No</supportsCommentPolicy>
<supportsSlug>Yes</supportsSlug>
<supportsExcerpt>No</supportsExcerpt>
<supportsPages>No</supportsPages>
<supportsPageParent>No</supportsPageParent>
<supportsAuthor>No</supportsAuthor>
<supportsGetTags>No</supportsGetTags>
<requiresHtmlTitles>No</requiresHtmlTitles>
<supportsEmptyTitles>No</supportsEmptyTitles>
<fileUploadNameFormat>{FileName}</fileUploadNameFormat>
</options>
<weblog>
<ServiceName>MiniBlog</ServiceName>
<imageUrl>favicon.ico</imageUrl>
<watermarkImageUrl>favicon.ico</watermarkImageUrl>
<homepageLinkText>View your blog</homepageLinkText>
<adminLinkText>Manage your blog</adminLinkText>
<adminUrl><![CDATA[{blog-homepage-url}login/]]></adminUrl>
</weblog>
</manifest>

+ 10
- 10
Sevomin.WebFrontend.Controllers/GodController.cs View File

@ -1,6 +1,7 @@
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
using Sevomin.Models;
using Sevomin.Models.Enums;
using Sevomin.Models.Helpers;
using System;
using System.Collections.Generic;
@ -12,7 +13,7 @@ using System.Web.Mvc;
namespace Sevomin.WebFrontend.Controllers
{
public class GodController : AuthorizedController
{
{
[Authorize(Roles = "God")]
public ActionResult Index()
{
@ -30,7 +31,7 @@ namespace Sevomin.WebFrontend.Controllers
{
var user = new User("sevomin");
user.SignUpDate = DateTime.UtcNow;
await UserManager.CreateAsync(user, "wePwntheNight");
await UserManager.CreateAsync(user, "wePwntheNight");
}
var res = await UserManager.AddToRoleAsync((await UserManager.FindByNameAsync("sevomin")).Id, "God");
@ -38,15 +39,15 @@ namespace Sevomin.WebFrontend.Controllers
return HttpNotFound();
}
[Authorize(Roles="God")]
[Authorize(Roles = "God")]
public ActionResult RecalculateAffinity()
{
decimal a = 0;
var dovJob = SevominDbContext.Current.DovominJobs;
foreach (var dj in dovJob)
{
{
var oldAffy = dj.Affinity;
dj.CalculateAffinity();
dj.CalculateAffinity();
if (dj.Affinity > 1)
throw new InvalidOperationException();
if (oldAffy != dj.Affinity)
@ -55,20 +56,19 @@ namespace Sevomin.WebFrontend.Controllers
SevominDbContext.Current.SaveChanges();
return Content("boogh: " + a.ToString());
}
[Authorize(Roles = "God")]
[HttpPost]
public void UpdateParam(long paramId, string commentAvalin, string commentDovomin)
public void UpdateParam(long paramId, string commentAvalin, string commentDovomin, ParameterType type)
{
var param = SevominDbContext.Current.Parameters.FirstOrDefault(p => p.Id == paramId);
if (param != null)
{
param.CommentAvalin = commentAvalin;
param.CommentDovomin = commentDovomin;
SevominDbContext.Current.SaveChanges();
}
}
}
}
}

+ 18
- 9
Sevomin.WebFrontend/Views/Job/JobEditor.cshtml View File

@ -5,23 +5,28 @@
<strong>کارفرمای گرامی،</strong>
<br />
می‌توانید فرصت کاری مد نظر خود را به طور کامل در این صفحه تکمیل کنید. هیچکدام از فیلدها اجباری نیستند و می‌توانید آن‌ها را خالی بگذارید که نشان‌دهنده این است که محتوای آن بخش برای موقعیت شغل مد نظر شما اهمیتی ندارد. با این حال در نظر داشته باشید که:
</p>
</p>
<div id="learn-more" class="collapse">
<ul>
<li>اگر فرصت شغلی را با دقت کافی مشخص نکنید (به فیلدهای خیلی کمی مقدار دهید) تعداد رزومه‌هایی که دریافت خواهید کرد بی دلیل زیاد خواهند شد و باید زمان زیادی را صرف بررسی آن‌ها و حذف موارد نامناسب بکنید.
<li>
اگر فرصت شغلی را با دقت کافی مشخص نکنید (به فیلدهای خیلی کمی مقدار دهید) تعداد رزومه‌هایی که دریافت خواهید کرد بی دلیل زیاد خواهند شد و باید زمان زیادی را صرف بررسی آن‌ها و حذف موارد نامناسب بکنید.
</li>
<li>اگر در ثبت مشخصات فرصت شغلی زیاد از حد سخت‌گیری کنید ممکن است تعدادی از افرادی که بالقوه برای نیاز شما مناسب هستند را از دست بدهید.
<li>
اگر در ثبت مشخصات فرصت شغلی زیاد از حد سخت‌گیری کنید ممکن است تعدادی از افرادی که بالقوه برای نیاز شما مناسب هستند را از دست بدهید.
</li>
</ul>
<p>
بهترین نتیجه را با حفظ تعادل به دست خواهید آورد. مهم‌ترین عنصری که به حفظ این تعادل کمک می‌کند، استفاده از قابلیت موسکو (MoSCoW) در تعریف قابلیت‌های مد نظر شماست؛ یکی از تکنیک‌های رایج در مدیریت پروژه. در مقابل هر قابلیت کادر بازشویی قرار داد و می‌توانید بعد از مشخص کردن قابلیت یکی از اولویت‌های زیر را برای آن انتخاب کنید:
</p>
<ul>
<li>الزامی: اگر فرد آن قابلیت را نداشته باشد نمی‌تواند کار مد نظر شما را انجام دهید. به عنوان مثال اگر طبق قراردادی که با کارفرمای خود دارید ملزم هستید که فردی با مدرک PMP را برای این کار استخدام کنید، داشتن این مدرک «الزامی» خواهد بود.
<li>
الزامی: اگر فرد آن قابلیت را نداشته باشد نمی‌تواند کار مد نظر شما را انجام دهید. به عنوان مثال اگر طبق قراردادی که با کارفرمای خود دارید ملزم هستید که فردی با مدرک PMP را برای این کار استخدام کنید، داشتن این مدرک «الزامی» خواهد بود.
</li>
<li>خیلی مهم: اگر قابلیت برای شما خیلی مهم است، ولی نبود آن کار را مختل نمی‌کند و صرفا لازم است که راه حل دیگری برای پر کردن آن خلل بیابید، این گزینه را انتخاب کنید.
<li>
خیلی مهم: اگر قابلیت برای شما خیلی مهم است، ولی نبود آن کار را مختل نمی‌کند و صرفا لازم است که راه حل دیگری برای پر کردن آن خلل بیابید، این گزینه را انتخاب کنید.
</li>
<li>مفید: اگر قابلیت از نظر شما برای این کار مفید است، ولی نبود آن نیز مشکل بزرگی ایجاد نمی‌کند، این گزینه را انتخاب کنید.
<li>
مفید: اگر قابلیت از نظر شما برای این کار مفید است، ولی نبود آن نیز مشکل بزرگی ایجاد نمی‌کند، این گزینه را انتخاب کنید.
</li>
</ul>
<p>
@ -46,7 +51,7 @@
<div class="col-md-6">
<div class="form-group">
@Html.LabelFor(model => model.ResumeType)
@Html.DropDownListFor(model => model.ResumeType,
@Html.DropDownListFor(model => model.ResumeType,
Sevomin.Models.Helpers.StringEnum.GetSelectList(typeof(Sevomin.Models.Enums.ResumeTypes), false),
new { @class = "form-control" })
</div>
@ -70,7 +75,11 @@
@Html.DisplayNameFor(model => model.ShowCompanyLogo) @Html.CheckBoxFor(model => model.ShowCompanyLogo)
</label>
</div>
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Description)
@Html.TextAreaFor(model => model.Description, new { @class = "form-control", style = "height:68px;" })
</div>
</div>
<div class="col-md-6">
<div class="form-group">
@ -96,7 +105,7 @@
<div class="row rtl">
<div class="panel panel-default">
<div class="panel-heading">مشخصات تکمیلی آگهی</div>
<div class="panel-body">
<div class="panel-body">
<div class="col-md-12">
@foreach (var category in Model.Parameters.GroupBy(m => m.GroupName))
{


+ 5
- 5
Sevomin.WebFrontend/Views/Shared/DovominParameterViewModel.cshtml View File

@ -1,11 +1,11 @@
@model Sevomin.Models.DovominParameterViewModel
@{ string paramId = string.Format("value-{0}", Model.ParameterId.ToString()); }
@{ string paramId = string.Format("value-{0}", Model.ParameterId); }
<div class="form-group indented">
<div class="row">
<div class="col-md-3 pull-right">
@Html.Label(Model.ParameterName)
@if (!string.IsNullOrWhiteSpace(Model.CommentDovomin))
{
{
<span class="glyphicon glyphicon-exclamation-sign form-help" data-toggle="tooltip" data-for="@paramId" data-placement="top" title="@Model.CommentDovomin"></span>
}
</div>
@ -13,14 +13,14 @@
@switch (Model.DisplayMethod)
{
case 1:
@Html.TextBox(paramId, Model.StringValue, new { @class = "form-control" })
@Html.TextBox(paramId, Model.StringValue, new { @class = "form-control" })
break;
case 2:
@Html.TextArea(paramId, Model.StringValue, new { @class = "form-control" })
break;
case 3:
/* validator bezar baraye numeric gereftan */
@Html.TextBox(paramId, Model.StringValue, new { @class = "form-control" })
@Html.TextBox(paramId, Model.StringValue, new { @class = "form-control", data_val = "true", data_val_number = "لطفا در این فیلد فقط عدد وارد شود." })
@Html.ValidationMessage(paramId)
break;
case 4:
@Html.DropDownList(paramId, new SelectList(Model.ParameterValues, "item1", "item2", Model.StringValue), "انتخاب کنید ...", new { @class = "form-control" })


+ 9
- 8
Sevomin.WebFrontend/Views/Shared/JobParameterViewModel.cshtml View File

@ -1,12 +1,13 @@
@model Sevomin.Models.JobParameterViewModel
@{ string paramId = string.Format("value-{0}", Model.ParameterId.ToString());
string muscowId = string.Format("moscow-{0}", Model.ParameterId.ToString());
var MuSCoWList = Sevomin.Models.Helpers.StringEnum.GetSelectList(typeof(Sevomin.Models.Enums.MuSCoW), false); }
@{ string paramId = string.Format("value-{0}", Model.ParameterId);
string muscowId = string.Format("moscow-{0}", Model.ParameterId);
var MuSCoWList = Sevomin.Models.Helpers.StringEnum.GetSelectList(typeof(Sevomin.Models.Enums.MuSCoW), false); }
<div class="form-group indented">
<div class="row">
<div class="col-md-3 pull-right">
@Html.Label(Model.ParameterName)
@if (!string.IsNullOrWhiteSpace(Model.CommentAvalin)) {
@if (!string.IsNullOrWhiteSpace(Model.CommentAvalin))
{
<span class="glyphicon glyphicon-exclamation-sign form-help" data-toggle="tooltip" data-for="@paramId" data-placement="top" title="@Model.CommentAvalin"></span>
}
</div>
@ -14,14 +15,14 @@
@switch (Model.DisplayMethod)
{
case 1:
@Html.TextBox(paramId, Model.StringValue, new { @class = "form-control" })
@Html.TextBox(paramId, Model.StringValue, new { @class = "form-control" })
break;
case 2:
@Html.TextArea(paramId)
break;
case 3:
/* validator bezar baraye numeric gereftan */
@Html.TextBox(paramId, Model.StringValue, new { @class = "form-control" })
@Html.TextBox(paramId, Model.StringValue, new { @class = "form-control", data_val = "true", data_val_number = "لطفا در این فیلد فقط عدد وارد شود." })
@Html.ValidationMessage(paramId)
break;
case 4:
@Html.DropDownList(paramId, new SelectList(Model.ParameterValues, "item1", "item2", Model.StringValue), "انتخاب کنید ...", new { @class = "form-control" })
@ -33,7 +34,7 @@
</div>
<div class="col-md-3 pull-right">
@if (Model.HasMoscow)
{
{
@Html.DropDownList(muscowId, new SelectList(MuSCoWList, "Value", "Text", Model.MoscowValue == 0 ? 2 : Model.MoscowValue), new { @class = "form-control" })
}
</div>


+ 3
- 27
Sevomin.sln View File

@ -1,6 +1,8 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
# Visual Studio 2013
VisualStudioVersion = 12.0.30723.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sevomin.WebFrontend", "Sevomin.WebFrontend\Sevomin.WebFrontend.csproj", "{95C7D295-0E5E-43EB-AD46-8CED0B9FDB2F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sevomin.WebFrontend.Controllers", "Sevomin.WebFrontend.Controllers\Sevomin.WebFrontend.Controllers.csproj", "{1E1E197B-9300-4512-98CB-B1B8AAB75964}"
@ -9,28 +11,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sevomin.Models", "Sevomin.M
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sevomin.Tests", "Sevomin.Tests\Sevomin.Tests.csproj", "{217A906A-9DE8-403D-8646-7D1131D5F02F}"
EndProject
Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "Sevomin.News", "http://localhost:20963", "{C997BE96-E2C6-4A74-A072-6DD003796390}"
ProjectSection(WebsiteProperties) = preProject
UseIISExpress = "true"
TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.5.1"
Debug.AspNetCompiler.VirtualPath = "/localhost_20963"
Debug.AspNetCompiler.PhysicalPath = "Sevomin.News\"
Debug.AspNetCompiler.TargetPath = "PrecompiledWeb\localhost_20963\"
Debug.AspNetCompiler.Updateable = "true"
Debug.AspNetCompiler.ForceOverwrite = "true"
Debug.AspNetCompiler.FixedNames = "false"
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.VirtualPath = "/localhost_20963"
Release.AspNetCompiler.PhysicalPath = "Sevomin.News\"
Release.AspNetCompiler.TargetPath = "PrecompiledWeb\localhost_20963\"
Release.AspNetCompiler.Updateable = "true"
Release.AspNetCompiler.ForceOverwrite = "true"
Release.AspNetCompiler.FixedNames = "false"
Release.AspNetCompiler.Debug = "False"
SlnRelativePath = "Sevomin.News\"
DefaultWebSiteLanguage = "Visual C#"
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -53,10 +33,6 @@ Global
{217A906A-9DE8-403D-8646-7D1131D5F02F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{217A906A-9DE8-403D-8646-7D1131D5F02F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{217A906A-9DE8-403D-8646-7D1131D5F02F}.Release|Any CPU.Build.0 = Release|Any CPU
{C997BE96-E2C6-4A74-A072-6DD003796390}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C997BE96-E2C6-4A74-A072-6DD003796390}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C997BE96-E2C6-4A74-A072-6DD003796390}.Release|Any CPU.ActiveCfg = Debug|Any CPU
{C997BE96-E2C6-4A74-A072-6DD003796390}.Release|Any CPU.Build.0 = Debug|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE


Loading…
Cancel
Save