sublime_video_layout 2.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +21 -0
- data/Rakefile +29 -0
- data/app/assets/fonts/SublimeIcons.eot +0 -0
- data/app/assets/fonts/SublimeIcons.svg +34 -0
- data/app/assets/fonts/SublimeIcons.ttf +0 -0
- data/app/assets/fonts/SublimeIcons.woff +0 -0
- data/app/assets/images/back_texture_my.png +0 -0
- data/app/assets/images/close_popup.png +0 -0
- data/app/assets/images/custom_checkbox.png +0 -0
- data/app/assets/images/custom_radio.png +0 -0
- data/app/assets/images/custom_select.png +0 -0
- data/app/assets/images/dm_banner.png +0 -0
- data/app/assets/images/dm_banner_bg.png +0 -0
- data/app/assets/images/fields/card_icon.png +0 -0
- data/app/assets/images/fields/domain_icon.png +0 -0
- data/app/assets/images/fields/email_icon.png +0 -0
- data/app/assets/images/fields/password_icon.png +0 -0
- data/app/assets/images/fields/path_icon.png +0 -0
- data/app/assets/images/fields/ticket_icon.png +0 -0
- data/app/assets/images/fields/user_icon.png +0 -0
- data/app/assets/images/fields/valid_icon.png +0 -0
- data/app/assets/images/footer_break.png +0 -0
- data/app/assets/images/footer_texture.png +0 -0
- data/app/assets/images/header_back_light.png +0 -0
- data/app/assets/images/header_inner_shadow.png +0 -0
- data/app/assets/images/header_repeat.jpg +0 -0
- data/app/assets/images/header_repeat.png +0 -0
- data/app/assets/images/header_repeat_max.jpg +0 -0
- data/app/assets/images/header_repeat_old.png +0 -0
- data/app/assets/images/header_signup_btn.png +0 -0
- data/app/assets/images/header_stars.png +0 -0
- data/app/assets/images/info_icon.png +0 -0
- data/app/assets/images/jilion.png +0 -0
- data/app/assets/images/jobs_highlight_note.png +0 -0
- data/app/assets/images/logout.png +0 -0
- data/app/assets/images/menu_bullet.png +0 -0
- data/app/assets/images/menu_bullet_active.png +0 -0
- data/app/assets/images/newsletter_btn_arrow.png +0 -0
- data/app/assets/images/plans/plays_icon.png +0 -0
- data/app/assets/images/plans/ssl_icon.png +0 -0
- data/app/assets/images/plans/stats_icon.png +0 -0
- data/app/assets/images/plans/support_icon.png +0 -0
- data/app/assets/images/popup_break.png +0 -0
- data/app/assets/images/popup_sign_up_btn.png +0 -0
- data/app/assets/images/sublimevideo_logo.png +0 -0
- data/app/assets/images/sublimevideo_logo@2x.png +0 -0
- data/app/assets/images/sublimevideo_maintenance.png +0 -0
- data/app/assets/images/twitter.png +0 -0
- data/app/assets/images/user_header_icon.png +0 -0
- data/app/assets/images/user_header_icon_active.png +0 -0
- data/app/assets/javascripts/form/password_checker.js.coffee +18 -0
- data/app/assets/javascripts/form/pseudo_placeholder.js.coffee +91 -0
- data/app/assets/javascripts/form/show_password.js.coffee +91 -0
- data/app/assets/javascripts/form/submit_manager.js.coffee +53 -0
- data/app/assets/javascripts/media/preloader.js.coffee +30 -0
- data/app/assets/javascripts/misc/browser_bugs_fixer.js.coffee +12 -0
- data/app/assets/javascripts/misc/cookie.js.coffee +42 -0
- data/app/assets/javascripts/misc/utils.js.coffee +17 -0
- data/app/assets/javascripts/sublimevideo.js.coffee +66 -0
- data/app/assets/javascripts/ui/link.js.coffee +24 -0
- data/app/assets/javascripts/ui/menu.js.coffee +36 -0
- data/app/assets/javascripts/ui/popup.js.coffee +121 -0
- data/app/assets/javascripts/ui/table.js.coffee +8 -0
- data/app/assets/javascripts/ui/utils.js.coffee +41 -0
- data/app/assets/stylesheets/_css3.scss +41 -0
- data/app/assets/stylesheets/ie.css.scss +2 -0
- data/app/assets/stylesheets/sublime_icons.css.scss.erb +46 -0
- data/app/assets/stylesheets/sublimevideo.css.scss.erb +947 -0
- data/app/controllers/maintenance_controller.rb +12 -0
- data/app/helpers/sublime_video_layout/engine_helper.rb +111 -0
- data/app/views/layouts/_facebook.html.haml +1 -0
- data/app/views/layouts/_footer.html.haml +54 -0
- data/app/views/layouts/_googleplus.html.haml +7 -0
- data/app/views/layouts/_gosquared.html.haml +11 -0
- data/app/views/layouts/_header_menu.html.haml +44 -0
- data/app/views/layouts/_ie.html.haml +14 -0
- data/app/views/layouts/_twitter.html.haml +2 -0
- data/app/views/layouts/maintenance.html.erb +79 -0
- data/app/views/layouts/sublimevideo.html.haml +61 -0
- data/app/views/users/new.html.haml +24 -0
- data/app/views/users/sessions/new.html.haml +25 -0
- data/config/locales/en.yml +14 -0
- data/config/routes.rb +5 -0
- data/lib/heroku-pages/error.html +82 -0
- data/lib/heroku-pages/maintenance.html +77 -0
- data/lib/heroku-pages/sublimevideo_maintenance.png +0 -0
- data/lib/rack/maintenance.rb +32 -0
- data/lib/site_token.rb +22 -0
- data/lib/sublime_video_layout.rb +18 -0
- data/lib/sublime_video_layout/version.rb +3 -0
- data/lib/tasks/sublime_video_layout_tasks.rake +4 -0
- data/public/404.html +28 -0
- data/public/404.png +0 -0
- data/public/422.html +29 -0
- data/public/500.html +28 -0
- data/public/500.png +0 -0
- data/public/apple-touch-icon-precomposed.png +0 -0
- data/public/error.png +0 -0
- data/public/errors.css +60 -0
- data/public/favicon.ico +0 -0
- data/public/robots.txt +5 -0
- data/public/sublimevideo.png +0 -0
- data/vendor/assets/javascripts/modernizr.js +1265 -0
- metadata +203 -0
@@ -0,0 +1,14 @@
|
|
1
|
+
en:
|
2
|
+
mailer:
|
3
|
+
info:
|
4
|
+
email: "info@sublimevideo.net"
|
5
|
+
email_full: "SublimeVideo <info@sublimevideo.net>"
|
6
|
+
billing:
|
7
|
+
email: "billing@sublimevideo.net"
|
8
|
+
email_full: "SublimeVideo Billing <billing@sublimevideo.net>"
|
9
|
+
sales:
|
10
|
+
email: "sales@sublimevideo.net"
|
11
|
+
email_full: "SublimeVideo Sales <sales@sublimevideo.net>"
|
12
|
+
press:
|
13
|
+
email: "press@sublimevideo.net"
|
14
|
+
email_full: "SublimeVideo Press <press@sublimevideo.net>"
|
data/config/routes.rb
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'>
|
3
|
+
<head>
|
4
|
+
<title>SublimeVideo - HTML5 Video Player</title>
|
5
|
+
<meta content='text/html;charset=UTF-8' http-equiv='Content-Type'>
|
6
|
+
<script src="//use.typekit.com/vcc7hji.js" type="text/javascript"></script>
|
7
|
+
<script type="text/javascript">
|
8
|
+
//<![CDATA[
|
9
|
+
try { Typekit.load(); } catch(e) { }
|
10
|
+
//]]>
|
11
|
+
</script>
|
12
|
+
<style type="text/css" media="screen">
|
13
|
+
* {
|
14
|
+
margin:0;
|
15
|
+
padding:0;
|
16
|
+
}
|
17
|
+
|
18
|
+
body {
|
19
|
+
font-family:proxima-nova-1,proxima-nova-2, Helvetica, Arial, sans-serif;
|
20
|
+
font-size:26px;
|
21
|
+
background:#b0c2d8;
|
22
|
+
text-rendering:optimizeLegibility;
|
23
|
+
text-align:center;
|
24
|
+
color:#596e85;
|
25
|
+
line-height:42px;
|
26
|
+
text-shadow:rgba(255,255,255,0.25) 0 1px 0;
|
27
|
+
}
|
28
|
+
|
29
|
+
#global {
|
30
|
+
width:888px;
|
31
|
+
margin:0 auto;
|
32
|
+
}
|
33
|
+
|
34
|
+
#content {
|
35
|
+
position:relative;
|
36
|
+
z-index:2;
|
37
|
+
top:-80px;
|
38
|
+
padding:0 140px;
|
39
|
+
}
|
40
|
+
|
41
|
+
#global img {
|
42
|
+
position:relative;
|
43
|
+
/* top:-50px;*/
|
44
|
+
}
|
45
|
+
|
46
|
+
a.sublimevideo {
|
47
|
+
display:block;
|
48
|
+
margin:60px auto 0;
|
49
|
+
width:278px;
|
50
|
+
height:38px;
|
51
|
+
background:url("sublimevideo.png") no-repeat;
|
52
|
+
border:none;
|
53
|
+
}
|
54
|
+
|
55
|
+
a.sublimevideo span {display:none}
|
56
|
+
|
57
|
+
a {
|
58
|
+
font-weight:600;
|
59
|
+
color:#283a4e;
|
60
|
+
text-decoration:none;
|
61
|
+
border-bottom:1px solid #77889c;
|
62
|
+
}
|
63
|
+
|
64
|
+
img {
|
65
|
+
border:none;
|
66
|
+
-moz-user-select: none;
|
67
|
+
-webkit-user-select: none;
|
68
|
+
-webkit-user-drag: none;
|
69
|
+
}
|
70
|
+
</style>
|
71
|
+
</head>
|
72
|
+
<body>
|
73
|
+
<div id='global'>
|
74
|
+
<img alt="SublimeVideo Error" src="error.png" />
|
75
|
+
<div id='content'>
|
76
|
+
<p>Sorry, an issue has just occured, we've been informed and will have a look into it.</p>
|
77
|
+
<p>Please try again later.</p>
|
78
|
+
<a href="http://sublimevideo.net" class="sublimevideo"><span>SublimeVideo</span></a>
|
79
|
+
</div>
|
80
|
+
</div>
|
81
|
+
</body>
|
82
|
+
</html>
|
@@ -0,0 +1,77 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta content='text/html;charset=UTF-8' http-equiv='Content-Type' />
|
5
|
+
<title>SublimeVideo</title>
|
6
|
+
|
7
|
+
<script src="http://use.typekit.com/vcc7hji.js" type="text/javascript"></script>
|
8
|
+
<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
|
9
|
+
|
10
|
+
<style type="text/css">
|
11
|
+
* {
|
12
|
+
margin:0;
|
13
|
+
padding:0;
|
14
|
+
}
|
15
|
+
|
16
|
+
html{height:100%}
|
17
|
+
|
18
|
+
body {
|
19
|
+
height:100%;
|
20
|
+
font-family:proxima-nova-1, proxima-nova-2, Helvetica, Arial, sans-serif;
|
21
|
+
text-rendering:optimizeLegibility;
|
22
|
+
color:#4a648e;
|
23
|
+
font-size:20px;
|
24
|
+
line-height:30px;
|
25
|
+
text-shadow:rgba(255,255,255,0.75) 0 1px 0;
|
26
|
+
background:#dee4f0;
|
27
|
+
}
|
28
|
+
|
29
|
+
#distance{
|
30
|
+
float:left;
|
31
|
+
width:1px;
|
32
|
+
height:50%;
|
33
|
+
margin-bottom:-150px
|
34
|
+
}
|
35
|
+
|
36
|
+
#global {
|
37
|
+
width:390px;
|
38
|
+
height:240px;
|
39
|
+
margin:0 auto;
|
40
|
+
position:relative;
|
41
|
+
clear:left;
|
42
|
+
}
|
43
|
+
|
44
|
+
h1 {
|
45
|
+
display:block;
|
46
|
+
width:292px;
|
47
|
+
height:41px;
|
48
|
+
background:url(sublimevideo_maintenance.png) no-repeat;
|
49
|
+
}
|
50
|
+
|
51
|
+
h1 span {display:none}
|
52
|
+
|
53
|
+
p {
|
54
|
+
padding:30px 0 0;
|
55
|
+
}
|
56
|
+
|
57
|
+
p.team {
|
58
|
+
padding-top:15px;
|
59
|
+
font-size:17px;
|
60
|
+
}
|
61
|
+
|
62
|
+
a {
|
63
|
+
text-decoration:none;
|
64
|
+
color:#00a1cf;
|
65
|
+
}
|
66
|
+
</style>
|
67
|
+
</head>
|
68
|
+
|
69
|
+
<body>
|
70
|
+
<div id="distance"></div>
|
71
|
+
<div id="global">
|
72
|
+
<h1><span>SublimeVideo</span></h1>
|
73
|
+
<p>We are updating the site and we'll be back in seconds.</p>
|
74
|
+
<p class="team">—The Jilion Team</p>
|
75
|
+
</div>
|
76
|
+
</body>
|
77
|
+
</html>
|
Binary file
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Rack
|
2
|
+
class Maintenance
|
3
|
+
def initialize(app, options={})
|
4
|
+
@app = app
|
5
|
+
@domain = options[:domain]
|
6
|
+
end
|
7
|
+
|
8
|
+
def call(env)
|
9
|
+
case env["PATH_INFO"]
|
10
|
+
when '/maintenance'
|
11
|
+
env["MAINTENANCE"] = true
|
12
|
+
@app.call(env)
|
13
|
+
when "/private/#{ENV['MAINTENANCE_CODE']}"
|
14
|
+
headers = {}
|
15
|
+
Rack::Utils.set_cookie_header!(headers, :maintenance, {
|
16
|
+
value: ENV['MAINTENANCE_CODE'],
|
17
|
+
expires: 1.week.from_now,
|
18
|
+
path: '/',
|
19
|
+
domain: ".#{@domain}"
|
20
|
+
})
|
21
|
+
[302, headers.merge('Location' => '/'), ['Redirected to /']]
|
22
|
+
else
|
23
|
+
request = ActionDispatch::Request.new(env)
|
24
|
+
if request.cookie_jar[:maintenance] == ENV['MAINTENANCE_CODE'] || env['HTTP_HOST'] == "admin.#{@domain}" || env['HTTP_HOST'] == "api.#{@domain}" || env['REQUEST_METHOD'] != 'GET'
|
25
|
+
@app.call(env)
|
26
|
+
else
|
27
|
+
[302, {'Location' => '/maintenance'}, ['Redirected to /maintenance']]
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/lib/site_token.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
module SiteToken
|
2
|
+
|
3
|
+
class << self
|
4
|
+
TOKENS = {
|
5
|
+
www: 'ibvjcopp',
|
6
|
+
badged: 't0cf1489',
|
7
|
+
my: 'mtrrhukx',
|
8
|
+
docs: 'z2g631ff',
|
9
|
+
test: 'mtf8cxlm',
|
10
|
+
gruber: 's96w44sn',
|
11
|
+
}
|
12
|
+
|
13
|
+
def [](name)
|
14
|
+
TOKENS[name]
|
15
|
+
end
|
16
|
+
|
17
|
+
def tokens
|
18
|
+
TOKENS.values
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'rails'
|
2
|
+
require 'jquery-rails'
|
3
|
+
require 'haml'
|
4
|
+
|
5
|
+
module SublimeVideoLayout
|
6
|
+
class Engine < ::Rails::Engine
|
7
|
+
initializer 'assets' do |app|
|
8
|
+
# Should be duplicated to application when initialize_on_precompile is false
|
9
|
+
app.config.assets.precompile += %w[errors.css ie.css]
|
10
|
+
end
|
11
|
+
initializer 'static assets' do |app|
|
12
|
+
app.middleware.insert_before ::Rack::Runtime, ::ActionDispatch::Static, "#{root}/public"
|
13
|
+
end
|
14
|
+
initializer 'helpers' do |app|
|
15
|
+
ActionView::Base.send :include, SublimeVideoLayout::EngineHelper
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/public/404.html
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>The page you were looking for doesn't exist. (404)</title>
|
5
|
+
<link href="errors.css" media="screen" rel="stylesheet" type="text/css" />
|
6
|
+
<script type="text/javascript" src="//use.typekit.com/vcc7hji.js"></script>
|
7
|
+
<script type="text/javascript">try { Typekit.load(); } catch(e) {}</script>
|
8
|
+
</head>
|
9
|
+
|
10
|
+
<body>
|
11
|
+
<div id="global">
|
12
|
+
<img src="404.png" alt="SublimeVideo 404" />
|
13
|
+
<div class="dialog">
|
14
|
+
<div id="content">
|
15
|
+
<p>Sorry, the page you were looking for doesn't exist.</p>
|
16
|
+
<p>Go back to <a id="subdomain_link" href="http://sublimevideo.net">sublimevideo.net</a> or <a href="http://sublimevideo.net/contact">contact us</a> about a problem.</p>
|
17
|
+
<a href="http://sublimevideo.net" class="sublimevideo"><span>SublimeVideo</span></a>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
<script type="text/javascript">
|
22
|
+
var subdomainLink = document.getElementById('subdomain_link');
|
23
|
+
var host = document.location.host;
|
24
|
+
subdomainLink.href = subdomainLink.href.replace(/sublimevideo\.net/, document.location.host);
|
25
|
+
subdomainLink.innerText = host;
|
26
|
+
</script>
|
27
|
+
</body>
|
28
|
+
</html>
|
data/public/404.png
ADDED
Binary file
|
data/public/422.html
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>The change you wanted was rejected (422)</title>
|
5
|
+
<link href="errors.css" media="screen" rel="stylesheet" type="text/css" />
|
6
|
+
<script type="text/javascript" src="//use.typekit.com/vcc7hji.js"></script>
|
7
|
+
<script type="text/javascript">try { Typekit.load(); } catch(e) {}</script>
|
8
|
+
</head>
|
9
|
+
|
10
|
+
<body>
|
11
|
+
<div id="global">
|
12
|
+
<img src="error.png" alt="SublimeVideo error" />
|
13
|
+
<div class="dialog">
|
14
|
+
<div id="content" class="error">
|
15
|
+
<p>The change you wanted was rejected.</p>
|
16
|
+
<p>Maybe you tried to change something you didn't have access to.</p>
|
17
|
+
<p>Go back to <a id="subdomain_link" href="http://sublimevideo.net">sublimevideo.net</a> or <a href="http://sublimevideo.net/contact">contact us</a> about a problem.</p>
|
18
|
+
<a href="http://sublimevideo.net" class="sublimevideo"><span>SublimeVideo</span></a>
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
<script type="text/javascript">
|
23
|
+
var subdomainLink = document.getElementById('subdomain_link');
|
24
|
+
var host = document.location.host;
|
25
|
+
subdomainLink.href = subdomainLink.href.replace(/sublimevideo\.net/, document.location.host);
|
26
|
+
subdomainLink.innerText = host;
|
27
|
+
</script>
|
28
|
+
</body>
|
29
|
+
</html>
|
data/public/500.html
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>Something Went Wrong (500)</title>
|
5
|
+
<link href="errors.css" media="screen" rel="stylesheet" type="text/css" />
|
6
|
+
<script type="text/javascript" src="//use.typekit.com/vcc7hji.js"></script>
|
7
|
+
<script type="text/javascript">try { Typekit.load(); } catch(e) {}</script>
|
8
|
+
</head>
|
9
|
+
|
10
|
+
<body>
|
11
|
+
<div id="global">
|
12
|
+
<img src="500.png" alt="SublimeVideo 500" />
|
13
|
+
<div class="dialog">
|
14
|
+
<div id="content">
|
15
|
+
<p>Sorry, an issue has just occured, we've been informed and will have a look into it.</p>
|
16
|
+
<p>Go back to <a id="subdomain_link" href="http://sublimevideo.net">sublimevideo.net</a> or <a href="http://sublimevideo.net/contact">contact us</a> about a problem.</p>
|
17
|
+
<a href="http://sublimevideo.net" class="sublimevideo"><span>SublimeVideo</span></a>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
<script type="text/javascript">
|
22
|
+
var subdomainLink = document.getElementById('subdomain_link');
|
23
|
+
var host = document.location.host;
|
24
|
+
subdomainLink.href = subdomainLink.href.replace(/sublimevideo\.net/, document.location.host);
|
25
|
+
subdomainLink.innerText = host;
|
26
|
+
</script>
|
27
|
+
</body>
|
28
|
+
</html>
|
data/public/500.png
ADDED
Binary file
|
Binary file
|
data/public/error.png
ADDED
Binary file
|
data/public/errors.css
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
* {
|
2
|
+
margin:0;
|
3
|
+
padding:0;
|
4
|
+
}
|
5
|
+
|
6
|
+
body {
|
7
|
+
font-family:proxima-nova-1,proxima-nova-2, Helvetica, Arial, sans-serif;
|
8
|
+
font-size:26px;
|
9
|
+
background:#b0c2d8;
|
10
|
+
text-rendering:optimizeLegibility;
|
11
|
+
text-align:center;
|
12
|
+
color:#596e85;
|
13
|
+
line-height:42px;
|
14
|
+
text-shadow:rgba(255,255,255,0.25) 0 1px 0;
|
15
|
+
}
|
16
|
+
|
17
|
+
#global {
|
18
|
+
width:974px;
|
19
|
+
margin:0 auto;
|
20
|
+
}
|
21
|
+
|
22
|
+
#content {
|
23
|
+
position:relative;
|
24
|
+
z-index:2;
|
25
|
+
top:-210px;
|
26
|
+
}
|
27
|
+
|
28
|
+
#content.error {
|
29
|
+
top:-110px;
|
30
|
+
}
|
31
|
+
|
32
|
+
#global img {
|
33
|
+
position:relative;
|
34
|
+
top:-50px;
|
35
|
+
}
|
36
|
+
|
37
|
+
a.sublimevideo {
|
38
|
+
display:block;
|
39
|
+
margin:60px auto 0;
|
40
|
+
width:278px;
|
41
|
+
height:38px;
|
42
|
+
background:url('sublimevideo.png') no-repeat;
|
43
|
+
border:none;
|
44
|
+
}
|
45
|
+
|
46
|
+
a.sublimevideo span {display:none}
|
47
|
+
|
48
|
+
a {
|
49
|
+
font-weight:600;
|
50
|
+
color:#283a4e;
|
51
|
+
text-decoration:none;
|
52
|
+
border-bottom:1px solid #77889c;
|
53
|
+
}
|
54
|
+
|
55
|
+
img {
|
56
|
+
border:none;
|
57
|
+
-moz-user-select: none;
|
58
|
+
-webkit-user-select: none;
|
59
|
+
-webkit-user-drag: none;
|
60
|
+
}
|
data/public/favicon.ico
ADDED
Binary file
|