iruby 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +19 -0
- data/Gemfile +2 -0
- data/LICENSE +22 -0
- data/README.md +70 -0
- data/Rakefile +13 -0
- data/Ruby Notebook.ipynb +180 -0
- data/attic/output/html.rb +217 -0
- data/bin/iruby +6 -0
- data/iruby.gemspec +26 -0
- data/lib/iruby.rb +11 -0
- data/lib/iruby/command.rb +103 -0
- data/lib/iruby/completer.rb +19 -0
- data/lib/iruby/display_hook.rb +29 -0
- data/lib/iruby/kernel.rb +193 -0
- data/lib/iruby/out_stream.rb +93 -0
- data/lib/iruby/session.rb +300 -0
- data/lib/iruby/version.rb +3 -0
- data/static/base/images/favicon.ico +0 -0
- data/static/base/images/ipynblogo.png +0 -0
- data/static/base/images/src/ipynblogo.svg +768 -0
- data/static/base/images/src/ruby.svg +948 -0
- data/static/custom/custom.css +40 -0
- data/static/custom/custom.js +2 -0
- data/test/helper.rb +5 -0
- data/test/html_test.rb +17 -0
- data/test/output_maps_test.rb +110 -0
- metadata +134 -0
@@ -0,0 +1,300 @@
|
|
1
|
+
module IRuby
|
2
|
+
class Session
|
3
|
+
DELIM = '<IDS|MSG>'
|
4
|
+
|
5
|
+
def initialize(username, key, sign_scheme)
|
6
|
+
@username = username
|
7
|
+
@session = SecureRandom.uuid
|
8
|
+
@msg_id = 0
|
9
|
+
|
10
|
+
raise 'Unknown signature scheme' unless sign_scheme =~ /\Ahmac-(.*)\Z/
|
11
|
+
@digest = OpenSSL::Digest::Digest.new($1)
|
12
|
+
@key = key
|
13
|
+
end
|
14
|
+
|
15
|
+
# Sign a message with HMAC digest. If no auth, return b''.
|
16
|
+
|
17
|
+
# Parameters
|
18
|
+
# ----------
|
19
|
+
# msg_list : list
|
20
|
+
# The [p_header,p_parent,p_content] part of the message list.
|
21
|
+
def sign(msg_list)
|
22
|
+
return '' unless @key
|
23
|
+
hmac = OpenSSL::HMAC.new(@key, @digest)
|
24
|
+
msg_list.each do |m|
|
25
|
+
hmac.update(m)
|
26
|
+
end
|
27
|
+
hmac.hexdigest
|
28
|
+
end
|
29
|
+
|
30
|
+
def msg_header
|
31
|
+
h = {
|
32
|
+
msg_id: @msg_id,
|
33
|
+
username: @username,
|
34
|
+
session: @session
|
35
|
+
}
|
36
|
+
@msg_id += 1
|
37
|
+
h
|
38
|
+
end
|
39
|
+
|
40
|
+
def msg(msg_type, content=nil, parent=nil)
|
41
|
+
msg = {}
|
42
|
+
msg['header'] = msg_header
|
43
|
+
msg['parent_header'] = parent ? parent['header'] : {}
|
44
|
+
msg['metadata'] = {}
|
45
|
+
msg['header']['msg_type'] = msg_type
|
46
|
+
msg['content'] = content || {}
|
47
|
+
return msg
|
48
|
+
end
|
49
|
+
|
50
|
+
# Build and send a message via stream or socket.
|
51
|
+
#
|
52
|
+
# The message format used by this function internally is as follows:
|
53
|
+
#
|
54
|
+
# [ident1,ident2,...,DELIM,HMAC,p_header,p_parent,p_content,
|
55
|
+
# buffer1,buffer2,...]
|
56
|
+
#
|
57
|
+
# The serialize/unserialize methods convert the nested message dict into this
|
58
|
+
# format.
|
59
|
+
#
|
60
|
+
# Parameters
|
61
|
+
# ----------
|
62
|
+
#
|
63
|
+
# stream : zmq.Socket or ZMQStream
|
64
|
+
# The socket-like object used to send the data.
|
65
|
+
# msg_or_type : str or Message/dict
|
66
|
+
# Normally, msg_or_type will be a msg_type unless a message is being
|
67
|
+
# sent more than once. If a header is supplied, this can be set to
|
68
|
+
# None and the msg_type will be pulled from the header.
|
69
|
+
#
|
70
|
+
# content : dict or None
|
71
|
+
# The content of the message (ignored if msg_or_type is a message).
|
72
|
+
# header : dict or None
|
73
|
+
# The header dict for the message (ignores if msg_to_type is a message).
|
74
|
+
# parent : Message or dict or None
|
75
|
+
# The parent or parent header describing the parent of this message
|
76
|
+
# (ignored if msg_or_type is a message).
|
77
|
+
# ident : bytes or list of bytes
|
78
|
+
# The zmq.IDENTITY routing path.
|
79
|
+
# subheader : dict or None
|
80
|
+
# Extra header keys for this message's header (ignored if msg_or_type
|
81
|
+
# is a message).
|
82
|
+
# buffers : list or None
|
83
|
+
# The already-serialized buffers to be appended to the message.
|
84
|
+
# track : bool
|
85
|
+
# Whether to track. Only for use with Sockets, because ZMQStream
|
86
|
+
# objects cannot track messages.
|
87
|
+
#
|
88
|
+
# Returns
|
89
|
+
# -------
|
90
|
+
# msg : dict
|
91
|
+
# The constructed message.
|
92
|
+
# (msg,tracker) : (dict, MessageTracker)
|
93
|
+
# if track=True, then a 2-tuple will be returned,
|
94
|
+
# the first element being the constructed
|
95
|
+
# message, and the second being the MessageTracker
|
96
|
+
def send(stream, msg_or_type, content=nil, parent=nil, ident=nil, buffers=nil, subheader=nil, track=false, header=nil)
|
97
|
+
if !stream.is_a?(ZMQ::Socket)
|
98
|
+
raise "stream must be Socket or ZMQSocket, not %r"%stream.class
|
99
|
+
end
|
100
|
+
|
101
|
+
if msg_or_type.is_a?(Hash)
|
102
|
+
msg = msg_or_type
|
103
|
+
else
|
104
|
+
msg = self.msg(msg_or_type, content, parent)
|
105
|
+
end
|
106
|
+
|
107
|
+
buffers ||= []
|
108
|
+
to_send = self.serialize(msg, ident)
|
109
|
+
flag = 0
|
110
|
+
if buffers.any?
|
111
|
+
flag = ZMQ::SNDMORE
|
112
|
+
_track = false
|
113
|
+
else
|
114
|
+
_track=track
|
115
|
+
end
|
116
|
+
if track
|
117
|
+
to_send.each_with_index do |part, i|
|
118
|
+
if i == to_send.length - 1
|
119
|
+
flag = 0
|
120
|
+
else
|
121
|
+
flag = ZMQ::SNDMORE
|
122
|
+
end
|
123
|
+
stream.send_string(part, flag)
|
124
|
+
end
|
125
|
+
else
|
126
|
+
to_send.each_with_index do |part, i|
|
127
|
+
if i == to_send.length - 1
|
128
|
+
flag = 0
|
129
|
+
else
|
130
|
+
flag = ZMQ::SNDMORE
|
131
|
+
end
|
132
|
+
stream.send_string(part, flag)
|
133
|
+
end
|
134
|
+
end
|
135
|
+
# STDOUT.puts '-'*30
|
136
|
+
# STDOUT.puts "SENDING"
|
137
|
+
# STDOUT.puts to_send
|
138
|
+
# STDOUT.puts to_send.length
|
139
|
+
# STDOUT.puts '-'*30
|
140
|
+
|
141
|
+
#buffers.each do |b|
|
142
|
+
#stream.send(b, flag, copy=False)
|
143
|
+
#end
|
144
|
+
#if buffers:
|
145
|
+
#if track:
|
146
|
+
#tracker = stream.send(buffers[-1], copy=False, track=track)
|
147
|
+
#else:
|
148
|
+
#tracker = stream.send(buffers[-1], copy=False)
|
149
|
+
|
150
|
+
# omsg = Message(msg)
|
151
|
+
#if self.debug:
|
152
|
+
#pprint.pprint(msg)
|
153
|
+
#pprint.pprint(to_send)
|
154
|
+
#pprint.pprint(buffers)
|
155
|
+
|
156
|
+
#msg['tracker'] = tracker
|
157
|
+
|
158
|
+
return msg
|
159
|
+
end
|
160
|
+
|
161
|
+
def recv(socket, mode=ZMQ::NOBLOCK)
|
162
|
+
begin
|
163
|
+
msg = []
|
164
|
+
frame = ""
|
165
|
+
rc = socket.recv_string(frame, mode)
|
166
|
+
ZMQ::Util.error_check("zmq_msg_send", rc)
|
167
|
+
|
168
|
+
msg << frame
|
169
|
+
while socket.more_parts?
|
170
|
+
begin
|
171
|
+
frame = ""
|
172
|
+
rc = socket.recv_string(frame, mode)
|
173
|
+
ZMQ::Util.error_check("zmq_msg_send", rc)
|
174
|
+
msg << frame
|
175
|
+
rescue
|
176
|
+
end
|
177
|
+
end
|
178
|
+
# Skip everything before DELIM, then munge the three json objects into the
|
179
|
+
# one the rest of my code expects
|
180
|
+
i = msg.index(DELIM)
|
181
|
+
idents = msg[0..i-1]
|
182
|
+
msg_list = msg[i+1..-1]
|
183
|
+
end
|
184
|
+
return idents, unserialize(msg_list)
|
185
|
+
end
|
186
|
+
|
187
|
+
# Serialize the message components to bytes.
|
188
|
+
#
|
189
|
+
# This is roughly the inverse of unserialize. The serialize/unserialize
|
190
|
+
# methods work with full message lists, whereas pack/unpack work with
|
191
|
+
# the individual message parts in the message list.
|
192
|
+
#
|
193
|
+
# Parameters
|
194
|
+
# ----------
|
195
|
+
# msg : dict or Message
|
196
|
+
# The nexted message dict as returned by the self.msg method.
|
197
|
+
#
|
198
|
+
# Returns
|
199
|
+
# -------
|
200
|
+
# msg_list : list
|
201
|
+
# The list of bytes objects to be sent with the format:
|
202
|
+
# [ident1,ident2,...,DELIM,HMAC,p_header,p_parent,p_content,
|
203
|
+
# buffer1,buffer2,...]. In this list, the p_* entities are
|
204
|
+
# the packed or serialized versions, so if JSON is used, these
|
205
|
+
# are utf8 encoded JSON strings.
|
206
|
+
def serialize(msg, ident=nil)
|
207
|
+
content = msg.fetch('content', {})
|
208
|
+
if content.nil?
|
209
|
+
content = {}.to_json
|
210
|
+
elsif content.is_a?(Hash)
|
211
|
+
content = content.to_json
|
212
|
+
#elsif isinstance(content, bytes):
|
213
|
+
# content is already packed, as in a relayed message
|
214
|
+
#pass
|
215
|
+
#elsif isinstance(content, unicode):
|
216
|
+
# should be bytes, but JSON often spits out unicode
|
217
|
+
#content = content.encode('utf8')
|
218
|
+
else
|
219
|
+
raise "Content incorrect type: %s"%type(content)
|
220
|
+
end
|
221
|
+
|
222
|
+
real_message = [MultiJson.dump(msg['header']),
|
223
|
+
MultiJson.dump(msg['parent_header']),
|
224
|
+
MultiJson.dump(msg['metadata']),
|
225
|
+
MultiJson.dump(msg['content']),
|
226
|
+
]
|
227
|
+
|
228
|
+
to_send = []
|
229
|
+
|
230
|
+
if ident.is_a?(Array)
|
231
|
+
# accept list of idents
|
232
|
+
to_send += ident
|
233
|
+
elsif !ident.nil?
|
234
|
+
to_send << ident
|
235
|
+
end
|
236
|
+
to_send << DELIM
|
237
|
+
|
238
|
+
signature = self.sign(real_message)
|
239
|
+
to_send << signature
|
240
|
+
|
241
|
+
to_send += real_message
|
242
|
+
# STDOUT.puts to_send
|
243
|
+
# STDOUT.puts to_send.length
|
244
|
+
|
245
|
+
return to_send
|
246
|
+
end
|
247
|
+
|
248
|
+
# Unserialize a msg_list to a nested message dict.
|
249
|
+
# This is roughly the inverse of serialize. The serialize/unserialize
|
250
|
+
# methods work with full message lists, whereas pack/unpack work with
|
251
|
+
# the individual message parts in the message list.
|
252
|
+
|
253
|
+
# Parameters:
|
254
|
+
# -----------
|
255
|
+
# msg_list : list of bytes or Message objects
|
256
|
+
# The list of message parts of the form [HMAC,p_header,p_parent,
|
257
|
+
# p_content,buffer1,buffer2,...].
|
258
|
+
# content : bool (True)
|
259
|
+
# Whether to unpack the content dict (True), or leave it packed
|
260
|
+
# (False).
|
261
|
+
# copy : bool (True)
|
262
|
+
# Whether to return the bytes (True), or the non-copying Message
|
263
|
+
# object in each place (False).
|
264
|
+
|
265
|
+
# Returns
|
266
|
+
# -------
|
267
|
+
# msg : dict
|
268
|
+
# The nested message dict with top-level keys [header, parent_header,
|
269
|
+
# content, buffers].
|
270
|
+
def unserialize(msg_list, content=true, copy=true)
|
271
|
+
minlen = 5
|
272
|
+
message = {}
|
273
|
+
unless copy
|
274
|
+
minlen.times do |i|
|
275
|
+
msg_list[i] = msg_list[i].bytes
|
276
|
+
end
|
277
|
+
end
|
278
|
+
unless msg_list.length >= minlen
|
279
|
+
raise "malformed message, must have at least %i elements"%minlen
|
280
|
+
end
|
281
|
+
|
282
|
+
raise "Invalid signature" unless self.sign(msg_list[1..-1]) == msg_list[0]
|
283
|
+
|
284
|
+
header = msg_list[1]
|
285
|
+
message['header'] = MultiJson.load(header)
|
286
|
+
message['msg_id'] = header['msg_id']
|
287
|
+
message['msg_type'] = header['msg_type']
|
288
|
+
message['parent_header'] = MultiJson.load(msg_list[2])
|
289
|
+
message['metadata'] = MultiJson.load(msg_list[3])
|
290
|
+
if content
|
291
|
+
message['content'] = MultiJson.load(msg_list[4])
|
292
|
+
else
|
293
|
+
message['content'] = msg_list[4]
|
294
|
+
end
|
295
|
+
|
296
|
+
message['buffers'] = msg_list[4..-1]
|
297
|
+
return message
|
298
|
+
end
|
299
|
+
end
|
300
|
+
end
|
Binary file
|
Binary file
|
@@ -0,0 +1,768 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2
|
+
<svg
|
3
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
4
|
+
xmlns:cc="http://creativecommons.org/ns#"
|
5
|
+
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
6
|
+
xmlns:svg="http://www.w3.org/2000/svg"
|
7
|
+
xmlns="http://www.w3.org/2000/svg"
|
8
|
+
xmlns:xlink="http://www.w3.org/1999/xlink"
|
9
|
+
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
10
|
+
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
11
|
+
xml:space="preserve"
|
12
|
+
width="1408.3538"
|
13
|
+
height="148.04994"
|
14
|
+
style="fill-rule:evenodd"
|
15
|
+
viewBox="0 0 1408.3538 148.04846"
|
16
|
+
id="svg2"
|
17
|
+
version="1.1"
|
18
|
+
inkscape:version="0.48.4 r9939"
|
19
|
+
sodipodi:docname="ipynblogo.svg"
|
20
|
+
inkscape:export-filename="ipynblogo.png"
|
21
|
+
inkscape:export-xdpi="39.83239"
|
22
|
+
inkscape:export-ydpi="39.83239"><metadata
|
23
|
+
id="metadata121"><rdf:RDF><cc:Work
|
24
|
+
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
25
|
+
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
|
26
|
+
pagecolor="#ffffff"
|
27
|
+
bordercolor="#666666"
|
28
|
+
borderopacity="1"
|
29
|
+
objecttolerance="10"
|
30
|
+
gridtolerance="10"
|
31
|
+
guidetolerance="10"
|
32
|
+
inkscape:pageopacity="0"
|
33
|
+
inkscape:pageshadow="2"
|
34
|
+
inkscape:window-width="1276"
|
35
|
+
inkscape:window-height="992"
|
36
|
+
id="namedview119"
|
37
|
+
showgrid="false"
|
38
|
+
showguides="true"
|
39
|
+
inkscape:guide-bbox="true"
|
40
|
+
inkscape:zoom="0.26229415"
|
41
|
+
inkscape:cx="822.946"
|
42
|
+
inkscape:cy="63.610685"
|
43
|
+
inkscape:window-x="0"
|
44
|
+
inkscape:window-y="14"
|
45
|
+
inkscape:window-maximized="0"
|
46
|
+
inkscape:current-layer="svg2"
|
47
|
+
showborder="true"
|
48
|
+
fit-margin-top="0"
|
49
|
+
fit-margin-left="0"
|
50
|
+
fit-margin-right="0"
|
51
|
+
fit-margin-bottom="0" /><defs
|
52
|
+
id="defs4"><font
|
53
|
+
id="FontID0"
|
54
|
+
font-variant="normal"
|
55
|
+
font-weight="400"
|
56
|
+
horiz-origin-x="0"
|
57
|
+
horiz-origin-y="0"
|
58
|
+
horiz-adv-x="90"
|
59
|
+
vert-origin-x="45"
|
60
|
+
vert-origin-y="90"
|
61
|
+
vert-adv-y="90"
|
62
|
+
style="font-variant:normal;font-weight:400"><font-face
|
63
|
+
font-family="Droid Sans Mono"
|
64
|
+
id="font-face7" /><missing-glyph
|
65
|
+
id="missing-glyph9"><path
|
66
|
+
d="M0 0z"
|
67
|
+
id="path11" /></missing-glyph><glyph
|
68
|
+
unicode=" "
|
69
|
+
horiz-adv-x="600"
|
70
|
+
id="glyph13" /><glyph
|
71
|
+
unicode=":"
|
72
|
+
horiz-adv-x="600"
|
73
|
+
id="glyph15"><path
|
74
|
+
d="M299.831 549.838c41.3387,0 62.0033,-22.6678 62.0033,-67.8333 0,-45.3356 -20.6646,-68.0034 -62.0033,-68.0034 -41.3293,0 -61.9939,22.6678 -61.9939,68.0034 0,45.1655 20.6646,67.8333 61.9939,67.8333zm0 -427.834c41.3387,0 62.0033,-22.5072 62.0033,-67.8333 0,-45.5057 -20.6646,-68.3341 -62.0033,-68.3341 -41.3293,0 -61.9939,22.8284 -61.9939,68.3341 0,45.3261 20.6646,67.8333 61.9939,67.8333z"
|
75
|
+
id="path17" /></glyph><glyph
|
76
|
+
unicode="C"
|
77
|
+
horiz-adv-x="600"
|
78
|
+
id="glyph19"><path
|
79
|
+
d="M548.841 98.1632l0 -79.1712c-47.5084,-19.1621 -105.845,-28.8282 -174.84,-28.8282 -100.488,0 -177.504,32.0029 -230.994,95.8388 -53.3477,63.6657 -79.9932,154.317 -79.9932,271.841 0,112.648 29.14,201.826 87.3065,267.646 58.3366,65.6783 138.018,98.6734 238.846,98.6734 71.6594,0 133.993,-14.0031 187,-42.0092l-38.0124 -76.1664c-50.1446,25.3416 -99.8072,38.0124 -148.988,38.0124 -69.987,0 -125.829,-25.8235 -167.498,-77.3286 -41.669,-51.6753 -62.5035,-121.492 -62.5035,-209.677 0,-93.486 19.5022,-164.664 58.6768,-213.646 39.0045,-49.0107 96.1506,-73.5019 171.325,-73.5019 42.321,0 95.4986,9.496 159.675,28.3179z"
|
80
|
+
id="path21" /></glyph><glyph
|
81
|
+
unicode="I"
|
82
|
+
horiz-adv-x="600"
|
83
|
+
id="glyph23"><path
|
84
|
+
d="M488.838 0l-379.013 0 0 60.0064 144.001 9.83275 0 574.162 -144.001 9.83275 0 60.0064 379.013 0 0 -60.0064 -143.665 -9.83275 0 -574.162 143.665 -9.83275 0 -60.0064z"
|
85
|
+
id="path25" /></glyph><glyph
|
86
|
+
unicode="]"
|
87
|
+
horiz-adv-x="600"
|
88
|
+
id="glyph27"><path
|
89
|
+
d="M141.166 -85.0018l168.832 0 0 726.172 -168.832 0 0 72.6616 257.831 0 0 -871.996 -257.831 0 0 73.1624z"
|
90
|
+
id="path29" /></glyph><glyph
|
91
|
+
unicode="["
|
92
|
+
horiz-adv-x="600"
|
93
|
+
id="glyph31"><path
|
94
|
+
d="M458.997 -158.164l-257.831 0 0 871.996 257.831 0 0 -72.6616 -168.993 0 0 -726.172 168.993 0 0 -73.1624z"
|
95
|
+
id="path33" /></glyph><glyph
|
96
|
+
unicode="P"
|
97
|
+
horiz-adv-x="600"
|
98
|
+
id="glyph35"><path
|
99
|
+
d="M176.83 277.833l0 -277.833 -90.8334 0 0 713.84 197.169 0c167.334,0 251.01,-69.6797 251.01,-209.004 0,-71.1679 -22.5002,-126.834 -67.6777,-166.997 -45.0004,-40.0043 -110.499,-60.0064 -196.496,-60.0064l-93.172 0zm0 77.1738l83.0026 0c64.3292,0 110.499,11.6576 138.332,35.1676 27.8329,23.3329 41.8291,59.9887 41.8291,109.826 0,90.8334 -54.9926,136.17 -165.155,136.17l-98.0086 0 0 -281.164z"
|
100
|
+
id="path37" /></glyph><glyph
|
101
|
+
unicode="g"
|
102
|
+
horiz-adv-x="600"
|
103
|
+
id="glyph39"><path
|
104
|
+
d="M549.833 536.17l0 -55.1619 -95.6687 -13.181c21.1747,-27.666 31.6628,-62.3335 31.6628,-104.002 0,-52.4973 -17.3196,-94.1663 -51.9871,-125.319 -34.6675,-31.0108 -82.9979,-46.6863 -144.849,-46.6863 -17.8298,0 -31.8329,1.02047 -41.9808,3.00471 -32.5132,-18.17 -48.8406,-39.8265 -48.8406,-64.998 0,-27.3258 26.3337,-40.9887 78.6609,-40.9887l91.3317 0c56.6642,0 100.006,-12.5007 129.826,-37.5021 30.0187,-25.1715 45.0139,-61.0012 45.0139,-107.489 0,-122.683 -92.012,-184.024 -275.838,-184.024 -71.0074,0 -125.007,13.0109 -161.999,39.1746 -36.8218,26.3337 -55.3319,63.0138 -55.3319,110.182 0,68.9948 39.0045,112.988 117.155,131.81 -31.3226,15.3353 -46.8281,40.3368 -46.8281,75.1743 0,36.51 21.6849,67.8326 64.8279,93.8262 -28.8282,12.0188 -51.6469,32.0029 -68.3145,59.839 -16.4975,27.836 -24.8313,58.1666 -24.8313,90.9916 0,59.3571 17.3196,104.853 51.9871,137.026 34.6675,31.9746 84.0184,47.9902 148.166,47.9902 28.0061,0 52.3272,-3.17478 73.1617,-9.66608l184.676 0zm-259.822 -283.179c72.6515,0 108.991,37.332 108.991,112.166 0,77.8389 -36.6801,116.843 -110.012,116.843 -73.1617,0 -109.813,-39.4864 -109.813,-118.176 0,-73.9838 36.9919,-110.834 110.834,-110.834zm47.8202 -244.146l-91.6719 0c-75.0043,0 -112.336,-32.3431 -112.336,-96.6892 0,-56.6642 44.0218,-84.9821 132.349,-84.9821 128.494,0 192.84,36.3399 192.84,108.821 0,28.6864 -8.19207,48.0186 -24.5195,57.8264 -16.1574,10.0062 -48.5005,15.0235 -96.6608,15.0235z"
|
105
|
+
id="path41" /></glyph><glyph
|
106
|
+
unicode="m"
|
107
|
+
horiz-adv-x="600"
|
108
|
+
id="glyph43"><path
|
109
|
+
d="M477.011 0l0 345.173c0,47.48 -4.33698,80.6735 -12.8409,99.1553 -8.67396,18.5101 -23.1589,27.836 -43.3415,27.836 -28.3179,0 -48.8406,-13.4928 -61.6532,-40.5068 -12.8409,-26.9857 -19.3322,-72.3114 -19.3322,-135.835l0 -295.822 -78.6893 0 0 345.173c0,84.6703 -20.3243,126.991 -61.0012,126.991 -27.3258,0 -46.8281,-13.0109 -58.4784,-38.8344 -11.8487,-25.8235 -17.6881,-77.6688 -17.6881,-155.508l0 -277.822 -78.9727 0 0 536.17 61.9933 0 13.1527 -72.3397 4.84721 0c21.8266,54.68 54.4815,82.0058 98.1632,82.0058 53.0075,0 87.675,-29.5085 104.002,-88.8372l2.83463 0c24.8313,59.3288 60.491,88.8372 106.979,88.8372 41.669,0 72.0279,-14.9952 90.8498,-45.1556 18.8219,-30.0187 28.3179,-80.3334 28.3179,-150.519l0 -350.162 -79.1428 0z"
|
110
|
+
id="path45" /></glyph><glyph
|
111
|
+
unicode="i"
|
112
|
+
horiz-adv-x="600"
|
113
|
+
id="glyph47"><path
|
114
|
+
d="M309.173 756.846c34.4974,0 51.6469,-18.5101 51.6469,-55.6721 0,-18.8503 -5.15902,-32.9951 -15.307,-42.1793 -10.3464,-9.32593 -22.5069,-14.0031 -36.3399,-14.0031 -34.8376,0 -52.3272,18.6802 -52.3272,56.1823 0,37.162 17.4897,55.6721 52.3272,55.6721zm-45.0139 -291.003l-131.328 10.148 0 60.1791 220.166 0 0 -466.325 171.835 -9.83616 0 -60.0091 -428.652 0 0 60.0091 167.98 9.83616 0 395.998z"
|
115
|
+
id="path49" /></glyph><glyph
|
116
|
+
unicode="c"
|
117
|
+
horiz-adv-x="600"
|
118
|
+
id="glyph51"><path
|
119
|
+
d="M518 517.178l-30.1604 -77.1869c-48.8406,18.5101 -92.4939,27.836 -130.846,27.836 -120.84,0 -181.161,-67.3224 -181.161,-201.655 0,-132.179 58.6768,-198.339 176.172,-198.339 51.165,0 103.322,10.1763 156.84,30.3305l0 -78.1507c-43.6816,-19.8424 -97.171,-29.8486 -160.667,-29.8486 -83.6782,0 -148.676,23.6691 -194.852,71.1775 -46.1477,47.3383 -69.335,115.313 -69.335,203.838 0,91.4734 23.6691,161.149 70.8373,208.997 47.1682,47.8202 113.498,71.6594 199.161,71.6594 58.0248,0 112.676,-9.496 164.012,-28.6581z"
|
120
|
+
id="path53" /></glyph><glyph
|
121
|
+
unicode="a"
|
122
|
+
horiz-adv-x="600"
|
123
|
+
id="glyph55"><path
|
124
|
+
d="M436.986 0l-17.9999 74.1539 -3.99683 0c-25.0014,-31.4927 -50.6548,-53.3193 -77.1586,-65.65 -26.3337,-12.1606 -60.3209,-18.34 -101.99,-18.34 -53.0075,0 -94.6766,14.0031 -124.667,42.0092 -30.1604,28.0061 -45.184,67.3224 -45.184,117.665 0,108.169 82.9979,164.834 249.022,169.993l98.9852 3.34486 0 33.8171c0,76.8468 -39.6564,115.171 -118.998,115.171 -47.9902,0 -101.338,-13.3228 -160.156,-39.9966l-30.8408 66.8405c63.8358,31.3226 126.169,46.8281 187,46.8281 73.8421,0 127.331,-14.1731 160.497,-42.3493 32.9951,-28.3179 49.4926,-73.8137 49.4926,-136.317l0 -367.169 -64.0059 0zm-23.8109 262.175l-79.1712 -3.34486c-63.8358,-2.66455 -108.991,-12.6708 -135.835,-29.9904 -26.6738,-17.518 -39.9966,-44.1635 -39.9966,-79.8515 0,-57.9965 32.6549,-86.9947 97.6529,-86.9947 47.8485,0 86.0026,13.3511 114.519,39.8265 28.488,26.5038 42.8312,63.8358 42.8312,112.024l0 48.3304z"
|
125
|
+
id="path57" /></glyph><glyph
|
126
|
+
unicode="e"
|
127
|
+
horiz-adv-x="600"
|
128
|
+
id="glyph59"><path
|
129
|
+
d="M535.178 251.006l-377.998 0c2.66455,-122.172 58.6484,-183.174 167.98,-183.174 63.4957,0 123.675,12.3306 180.679,37.162l0 -78.1507c-53.9997,-24.3495 -113.328,-36.6801 -177.674,-36.6801 -79.8231,0 -143.659,24.3495 -191.507,72.9917 -47.8202,48.6706 -71.6594,115.681 -71.6594,201.003 0,86.6829 21.9967,155.168 66.1602,205.851 44.0218,50.6548 103.01,75.8263 177.023,75.8263 68.9948,0 123.987,-21.6566 165.145,-65.3382 41.1871,-43.6533 61.8516,-101.82 61.8516,-174.33l0 -55.1619zm-376.013 72.1696l279.834 0c0,99.3254 -44.3336,148.988 -132.831,148.988 -89.4892,0 -138.5,-49.6627 -147.004,-148.988z"
|
130
|
+
id="path61" /></glyph><glyph
|
131
|
+
unicode="n"
|
132
|
+
horiz-adv-x="600"
|
133
|
+
id="glyph63"><path
|
134
|
+
d="M433.173 0l0 345.174c0,84.668 -38.835,126.993 -116.345,126.993 -99.8335,0 -149.83,-64.8253 -149.83,-194.334l0 -277.833 -88.8314 0 0 536.16 71.664 0 13.3407 -72.3195 4.83665 0c33.4845,54.6559 88.1582,81.9928 163.986,81.9928 126.674,0 190.011,-65.1619 190.011,-195.663l0 -350.17 -88.8314 0z"
|
135
|
+
id="path65" /></glyph><glyph
|
136
|
+
unicode="o"
|
137
|
+
horiz-adv-x="600"
|
138
|
+
id="glyph67"><path
|
139
|
+
d="M297.835 -9.83275c-70.3352,0 -128.162,25.3348 -173.499,76.0045 -45.4964,50.6697 -68.1738,118.17 -68.1738,202.82 0,85.6778 22.0041,153.178 66.1718,202.679 44.1677,49.5004 103.501,74.162 178.495,74.162 70.8313,0 129.013,-25.1577 174.332,-75.6679 45.1775,-50.3331 67.8371,-117.497 67.8371,-201.173 0,-86.1562 -22.323,-154.33 -67.0045,-203.99 -44.4866,-49.837 -103.997,-74.8352 -178.159,-74.8352zm2.00198 73.8254c100.826,0 151.336,68.3332 151.336,205 0,135.515 -50.8469,203.175 -152.346,203.175 -100.666,0 -150.822,-67.66 -150.822,-203.175 0,-136.666 50.4925,-205 151.832,-205z"
|
140
|
+
id="path69" /></glyph><glyph
|
141
|
+
unicode="h"
|
142
|
+
horiz-adv-x="600"
|
143
|
+
id="glyph71"><path
|
144
|
+
d="M433.173 0l0 345.174c0,84.668 -38.835,126.993 -116.345,126.993 -99.8335,0 -149.83,-64.8253 -149.83,-194.334l0 -277.833 -88.8314 0 0 759.833 88.8314 0 0 -225.657 -3.8268 -70.3352 4.83665 0c33.4845,54.6559 88.1582,81.9928 163.986,81.9928 126.674,0 190.011,-65.1619 190.011,-195.663l0 -350.17 -88.8314 0z"
|
145
|
+
id="path73" /></glyph><glyph
|
146
|
+
unicode="u"
|
147
|
+
horiz-adv-x="600"
|
148
|
+
id="glyph75"><path
|
149
|
+
d="M450.167 0l-13.181 71.8295 -4.81887 0c-34.1573,-54.5099 -88.4971,-81.6656 -163.161,-81.6656 -127.161,0 -190.827,65.3382 -190.827,195.844l0 350.162 88.8089 0 0 -345.173c0,-84.6703 38.3525,-126.991 115.171,-126.991 52.4973,0 90.6797,14.9952 114.831,45.1556 24.0093,30.0187 36.1699,79.6814 36.1699,148.676l0 278.332 88.8372 0 0 -536.17 -71.8295 0z"
|
150
|
+
id="path77" /></glyph><glyph
|
151
|
+
unicode="p"
|
152
|
+
horiz-adv-x="600"
|
153
|
+
id="glyph79"><path
|
154
|
+
d="M165.996 67.8326l-5.83933 0c3.85509,-42.0092 5.83933,-68.3429 5.83933,-79.0011l0 -229.01 -88.8372 0 0 776.348 71.8295 0 13.181 -72.3397 3.82675 0c35.8297,54.68 88.1569,82.0058 157.18,82.0058 65.4799,0 116.815,-24.3495 154.147,-72.9917 37.1903,-48.6706 55.8422,-116.503 55.8422,-203.838 0,-87.8451 -18.6519,-156.33 -56.154,-205.34 -37.332,-49.0107 -88.6672,-73.5019 -153.835,-73.5019 -67.3508,0 -119.678,25.9935 -157.18,77.6688zm0 221.158l0 -19.9841c0,-73.8421 11.3385,-126.509 34.0155,-157.832 22.4786,-31.5211 58.6484,-47.1682 108.169,-47.1682 88.4971,0 132.831,68.6547 132.831,205.992 0,134.843 -44.6737,202.166 -133.851,202.166 -49.4926,0 -84.9821,-14.3432 -106.667,-43.0013 -21.6566,-28.6581 -33.1651,-75.3161 -34.4974,-140.172z"
|
155
|
+
id="path81" /></glyph><glyph
|
156
|
+
unicode="v"
|
157
|
+
horiz-adv-x="600"
|
158
|
+
id="glyph83"><path
|
159
|
+
d="M243.154 0l-203.158 536.17 91.8419 0 117.155 -318.329c27.666,-75.3444 43.9934,-128.182 48.8406,-158.682l3.00471 0c2.15432,14.1731 18.6519,67.1807 49.3225,158.682l116.673 318.329 92.3238 0 -203.158 -536.17 -112.847 0z"
|
160
|
+
id="path85" /></glyph><glyph
|
161
|
+
unicode="r"
|
162
|
+
horiz-adv-x="600"
|
163
|
+
id="glyph87"><path
|
164
|
+
d="M517.178 524.009l-24.0093 -81.1837c-39.9966,14.6834 -76.5066,21.9967 -109.332,21.9967 -53.1776,0 -93.9963,-14.9952 -122.824,-45.1556 -28.8565,-30.1604 -43.1714,-73.672 -43.1714,-130.676l0 -288.99 -89.0073 0 0 536.17 72.3397 0 10.6582 -98.1632 3.99683 0c24.6613,38.6643 51.3351,66.3303 79.5113,82.9979 28.3179,16.6676 63.1555,24.8313 104.484,24.8313 38.5226,0 77.4987,-7.34169 117.354,-21.8266z"
|
165
|
+
id="path89" /></glyph><glyph
|
166
|
+
unicode="t"
|
167
|
+
horiz-adv-x="600"
|
168
|
+
id="glyph91"><path
|
169
|
+
d="M497.998 73.1699l0 -67.3411c-42.3251,-10.3288 -83.3392,-15.6615 -122.989,-15.6615 -117.834,0 -176.848,56.0024 -176.848,168.007l0 310.999 -130.324 0 0 45.9925 130.324 23.8289 37.6657 140.174 51.3429 0 0 -143.009 213.823 0 0 -66.9867 -213.823 0 0 -310.999c0,-63.5143 31.1636,-95.174 93.6681,-95.174 30.3309,0 69.3253,3.33073 117.16,10.1694z"
|
170
|
+
id="path93" /></glyph><glyph
|
171
|
+
unicode="y"
|
172
|
+
horiz-adv-x="600"
|
173
|
+
id="glyph95"><path
|
174
|
+
d="M40.0043 536.16l91.8255 0 128.003 -319.325c26.6636,-66.8273 41.1736,-114.007 43.335,-141.663l2.99412 0c7.51187,36.4964 22.1636,83.9948 44.0082,142.655l116.664 318.333 92.3393 0 -232 -605.999c-21.8447,-56.6579 -47.1795,-99.1602 -76.1817,-127.666 -28.9845,-28.4884 -68.9887,-42.6618 -120.154,-42.6618 -28.0101,0 -55.3292,2.67522 -82.0105,8.16739l0 70.8313c20.1793,-3.8268 42.3429,-5.82879 66.3312,-5.82879 31.3408,0 55.6835,6.66147 73.0104,20.0021 17.5041,13.3229 33.0062,36.3369 46.6657,68.8293l28.329 73.3293 -223.159 540.996z"
|
175
|
+
id="path97" /></glyph></font><style
|
176
|
+
type="text/css"
|
177
|
+
id="style99">
|
178
|
+
|
179
|
+
@font-face { font-family:"Droid Sans Mono";src:url("#FontID0") format(svg)}
|
180
|
+
.fil2 {fill:black}
|
181
|
+
.fil0 {fill:#2B2828}
|
182
|
+
.fil1 {fill:#3465A4}
|
183
|
+
.fnt1 {font-weight:normal;font-size:41.6669;font-family:'Droid Sans Mono'}
|
184
|
+
.fnt0 {font-weight:normal;font-size:66.6661;font-family:'Droid Sans Mono'}
|
185
|
+
.fnt3 {font-weight:normal;font-size:125;font-family:'Droid Sans Mono'}
|
186
|
+
.fnt2 {font-weight:normal;font-size:150;font-family:'Droid Sans Mono'}
|
187
|
+
|
188
|
+
</style><linearGradient
|
189
|
+
y2="141.7533"
|
190
|
+
x2="132.27631"
|
191
|
+
y1="215.5488"
|
192
|
+
x1="174.0737"
|
193
|
+
gradientUnits="userSpaceOnUse"
|
194
|
+
id="linearGradient3448"
|
195
|
+
xlink:href="#XMLID_17_-9"
|
196
|
+
inkscape:collect="always" /><linearGradient
|
197
|
+
id="XMLID_17_-9"
|
198
|
+
gradientUnits="userSpaceOnUse"
|
199
|
+
x1="174.0737"
|
200
|
+
y1="215.5488"
|
201
|
+
x2="132.27631"
|
202
|
+
y2="141.7533"><stop
|
203
|
+
offset="0"
|
204
|
+
style="stop-color:#FB7655"
|
205
|
+
id="stop3272-4" /><stop
|
206
|
+
offset="0"
|
207
|
+
style="stop-color:#FB7655"
|
208
|
+
id="stop3274-5" /><stop
|
209
|
+
offset="0.41"
|
210
|
+
style="stop-color:#E42B1E"
|
211
|
+
id="stop3276-1" /><stop
|
212
|
+
offset="0.99"
|
213
|
+
style="stop-color:#990000"
|
214
|
+
id="stop3278-0" /><stop
|
215
|
+
offset="1"
|
216
|
+
style="stop-color:#990000"
|
217
|
+
id="stop3280-3" /></linearGradient><linearGradient
|
218
|
+
id="XMLID_18_-7"
|
219
|
+
gradientUnits="userSpaceOnUse"
|
220
|
+
x1="194.895"
|
221
|
+
y1="153.5576"
|
222
|
+
x2="141.0276"
|
223
|
+
y2="117.4093"><stop
|
224
|
+
offset="0"
|
225
|
+
style="stop-color:#871101"
|
226
|
+
id="stop3285-8" /><stop
|
227
|
+
offset="0"
|
228
|
+
style="stop-color:#871101"
|
229
|
+
id="stop3287-8" /><stop
|
230
|
+
offset="0.99"
|
231
|
+
style="stop-color:#911209"
|
232
|
+
id="stop3289-6" /><stop
|
233
|
+
offset="1"
|
234
|
+
style="stop-color:#911209"
|
235
|
+
id="stop3291-0" /></linearGradient><linearGradient
|
236
|
+
id="XMLID_19_-4"
|
237
|
+
gradientUnits="userSpaceOnUse"
|
238
|
+
x1="151.79539"
|
239
|
+
y1="217.7852"
|
240
|
+
x2="97.929703"
|
241
|
+
y2="181.638"><stop
|
242
|
+
offset="0"
|
243
|
+
style="stop-color:#871101"
|
244
|
+
id="stop3296-6" /><stop
|
245
|
+
offset="0"
|
246
|
+
style="stop-color:#871101"
|
247
|
+
id="stop3298-7" /><stop
|
248
|
+
offset="0.99"
|
249
|
+
style="stop-color:#911209"
|
250
|
+
id="stop3300-6" /><stop
|
251
|
+
offset="1"
|
252
|
+
style="stop-color:#911209"
|
253
|
+
id="stop3302-0" /></linearGradient><linearGradient
|
254
|
+
id="XMLID_20_-9"
|
255
|
+
gradientUnits="userSpaceOnUse"
|
256
|
+
x1="38.696301"
|
257
|
+
y1="127.3906"
|
258
|
+
x2="47.046902"
|
259
|
+
y2="181.66141"><stop
|
260
|
+
offset="0"
|
261
|
+
style="stop-color:#FFFFFF"
|
262
|
+
id="stop3307-7" /><stop
|
263
|
+
offset="0"
|
264
|
+
style="stop-color:#FFFFFF"
|
265
|
+
id="stop3309-5" /><stop
|
266
|
+
offset="0.23"
|
267
|
+
style="stop-color:#E57252"
|
268
|
+
id="stop3311-9" /><stop
|
269
|
+
offset="0.46"
|
270
|
+
style="stop-color:#DE3B20"
|
271
|
+
id="stop3313-7" /><stop
|
272
|
+
offset="0.99"
|
273
|
+
style="stop-color:#A60003"
|
274
|
+
id="stop3315-8" /><stop
|
275
|
+
offset="1"
|
276
|
+
style="stop-color:#A60003"
|
277
|
+
id="stop3317-5" /></linearGradient><linearGradient
|
278
|
+
id="XMLID_21_-3"
|
279
|
+
gradientUnits="userSpaceOnUse"
|
280
|
+
x1="96.132797"
|
281
|
+
y1="76.715302"
|
282
|
+
x2="99.209602"
|
283
|
+
y2="132.1021"><stop
|
284
|
+
offset="0"
|
285
|
+
style="stop-color:#FFFFFF"
|
286
|
+
id="stop3322-3" /><stop
|
287
|
+
offset="0"
|
288
|
+
style="stop-color:#FFFFFF"
|
289
|
+
id="stop3324-8" /><stop
|
290
|
+
offset="0.23"
|
291
|
+
style="stop-color:#E4714E"
|
292
|
+
id="stop3326-3" /><stop
|
293
|
+
offset="0.56"
|
294
|
+
style="stop-color:#BE1A0D"
|
295
|
+
id="stop3328-7" /><stop
|
296
|
+
offset="0.99"
|
297
|
+
style="stop-color:#A80D00"
|
298
|
+
id="stop3330-9" /><stop
|
299
|
+
offset="1"
|
300
|
+
style="stop-color:#A80D00"
|
301
|
+
id="stop3332-3" /></linearGradient><linearGradient
|
302
|
+
id="XMLID_22_-7"
|
303
|
+
gradientUnits="userSpaceOnUse"
|
304
|
+
x1="147.103"
|
305
|
+
y1="25.521"
|
306
|
+
x2="156.3141"
|
307
|
+
y2="65.216202"><stop
|
308
|
+
offset="0"
|
309
|
+
style="stop-color:#FFFFFF"
|
310
|
+
id="stop3337-8" /><stop
|
311
|
+
offset="0"
|
312
|
+
style="stop-color:#FFFFFF"
|
313
|
+
id="stop3339-7" /><stop
|
314
|
+
offset="0.18"
|
315
|
+
style="stop-color:#E46342"
|
316
|
+
id="stop3341-4" /><stop
|
317
|
+
offset="0.4"
|
318
|
+
style="stop-color:#C82410"
|
319
|
+
id="stop3343-1" /><stop
|
320
|
+
offset="0.99"
|
321
|
+
style="stop-color:#A80D00"
|
322
|
+
id="stop3345-9" /><stop
|
323
|
+
offset="1"
|
324
|
+
style="stop-color:#A80D00"
|
325
|
+
id="stop3347-0" /></linearGradient><linearGradient
|
326
|
+
id="XMLID_23_-9"
|
327
|
+
gradientUnits="userSpaceOnUse"
|
328
|
+
x1="118.9761"
|
329
|
+
y1="11.5415"
|
330
|
+
x2="158.66859"
|
331
|
+
y2="-8.3048"><stop
|
332
|
+
offset="0"
|
333
|
+
style="stop-color:#FFFFFF"
|
334
|
+
id="stop3352-8" /><stop
|
335
|
+
offset="0"
|
336
|
+
style="stop-color:#FFFFFF"
|
337
|
+
id="stop3354-8" /><stop
|
338
|
+
offset="0.54"
|
339
|
+
style="stop-color:#C81F11"
|
340
|
+
id="stop3356-5" /><stop
|
341
|
+
offset="0.99"
|
342
|
+
style="stop-color:#BF0905"
|
343
|
+
id="stop3358-8" /><stop
|
344
|
+
offset="1"
|
345
|
+
style="stop-color:#BF0905"
|
346
|
+
id="stop3360-4" /></linearGradient><linearGradient
|
347
|
+
id="XMLID_24_-3"
|
348
|
+
gradientUnits="userSpaceOnUse"
|
349
|
+
x1="3.9033"
|
350
|
+
y1="113.5547"
|
351
|
+
x2="7.1701999"
|
352
|
+
y2="146.2628"><stop
|
353
|
+
offset="0"
|
354
|
+
style="stop-color:#FFFFFF"
|
355
|
+
id="stop3365-7" /><stop
|
356
|
+
offset="0"
|
357
|
+
style="stop-color:#FFFFFF"
|
358
|
+
id="stop3367-1" /><stop
|
359
|
+
offset="0.31"
|
360
|
+
style="stop-color:#DE4024"
|
361
|
+
id="stop3369-3" /><stop
|
362
|
+
offset="0.99"
|
363
|
+
style="stop-color:#BF190B"
|
364
|
+
id="stop3371-8" /><stop
|
365
|
+
offset="1"
|
366
|
+
style="stop-color:#BF190B"
|
367
|
+
id="stop3373-0" /></linearGradient><linearGradient
|
368
|
+
id="XMLID_25_-9"
|
369
|
+
gradientUnits="userSpaceOnUse"
|
370
|
+
x1="-18.5557"
|
371
|
+
y1="155.10451"
|
372
|
+
x2="135.0152"
|
373
|
+
y2="-2.8092999"><stop
|
374
|
+
offset="0"
|
375
|
+
style="stop-color:#BD0012"
|
376
|
+
id="stop3380-7" /><stop
|
377
|
+
offset="0"
|
378
|
+
style="stop-color:#BD0012"
|
379
|
+
id="stop3382-9" /><stop
|
380
|
+
offset="0.07"
|
381
|
+
style="stop-color:#FFFFFF"
|
382
|
+
id="stop3384-9" /><stop
|
383
|
+
offset="0.17"
|
384
|
+
style="stop-color:#FFFFFF"
|
385
|
+
id="stop3386-3" /><stop
|
386
|
+
offset="0.27"
|
387
|
+
style="stop-color:#C82F1C"
|
388
|
+
id="stop3388-2" /><stop
|
389
|
+
offset="0.33"
|
390
|
+
style="stop-color:#820C01"
|
391
|
+
id="stop3390-4" /><stop
|
392
|
+
offset="0.46"
|
393
|
+
style="stop-color:#A31601"
|
394
|
+
id="stop3392-3" /><stop
|
395
|
+
offset="0.72"
|
396
|
+
style="stop-color:#B31301"
|
397
|
+
id="stop3394-7" /><stop
|
398
|
+
offset="0.99"
|
399
|
+
style="stop-color:#E82609"
|
400
|
+
id="stop3396-1" /><stop
|
401
|
+
offset="1"
|
402
|
+
style="stop-color:#E82609"
|
403
|
+
id="stop3398-2" /></linearGradient><linearGradient
|
404
|
+
id="XMLID_26_-2"
|
405
|
+
gradientUnits="userSpaceOnUse"
|
406
|
+
x1="99.074699"
|
407
|
+
y1="171.0332"
|
408
|
+
x2="52.817699"
|
409
|
+
y2="159.61659"><stop
|
410
|
+
offset="0"
|
411
|
+
style="stop-color:#8C0C01"
|
412
|
+
id="stop3403-0" /><stop
|
413
|
+
offset="0"
|
414
|
+
style="stop-color:#8C0C01"
|
415
|
+
id="stop3405-2" /><stop
|
416
|
+
offset="0.54"
|
417
|
+
style="stop-color:#990C00"
|
418
|
+
id="stop3407-1" /><stop
|
419
|
+
offset="0.99"
|
420
|
+
style="stop-color:#A80D0E"
|
421
|
+
id="stop3409-7" /><stop
|
422
|
+
offset="1"
|
423
|
+
style="stop-color:#A80D0E"
|
424
|
+
id="stop3411-5" /></linearGradient><linearGradient
|
425
|
+
id="XMLID_27_-1"
|
426
|
+
gradientUnits="userSpaceOnUse"
|
427
|
+
x1="178.52589"
|
428
|
+
y1="115.5146"
|
429
|
+
x2="137.43269"
|
430
|
+
y2="78.683998"><stop
|
431
|
+
offset="0"
|
432
|
+
style="stop-color:#7E110B"
|
433
|
+
id="stop3416-7" /><stop
|
434
|
+
offset="0"
|
435
|
+
style="stop-color:#7E110B"
|
436
|
+
id="stop3418-4" /><stop
|
437
|
+
offset="0.99"
|
438
|
+
style="stop-color:#9E0C00"
|
439
|
+
id="stop3420-1" /><stop
|
440
|
+
offset="1"
|
441
|
+
style="stop-color:#9E0C00"
|
442
|
+
id="stop3422-7" /></linearGradient><linearGradient
|
443
|
+
id="XMLID_28_-1"
|
444
|
+
gradientUnits="userSpaceOnUse"
|
445
|
+
x1="193.6235"
|
446
|
+
y1="47.937"
|
447
|
+
x2="173.15421"
|
448
|
+
y2="26.053801"><stop
|
449
|
+
offset="0"
|
450
|
+
style="stop-color:#79130D"
|
451
|
+
id="stop3427-1" /><stop
|
452
|
+
offset="0"
|
453
|
+
style="stop-color:#79130D"
|
454
|
+
id="stop3429-1" /><stop
|
455
|
+
offset="0.99"
|
456
|
+
style="stop-color:#9E120B"
|
457
|
+
id="stop3431-7" /><stop
|
458
|
+
offset="1"
|
459
|
+
style="stop-color:#9E120B"
|
460
|
+
id="stop3433-0" /></linearGradient><radialGradient
|
461
|
+
id="XMLID_29_-4"
|
462
|
+
cx="143.8315"
|
463
|
+
cy="79.388199"
|
464
|
+
r="50.357601"
|
465
|
+
gradientUnits="userSpaceOnUse"><stop
|
466
|
+
offset="0"
|
467
|
+
style="stop-color:#A80D00"
|
468
|
+
id="stop3440-0" /><stop
|
469
|
+
offset="0"
|
470
|
+
style="stop-color:#A80D00"
|
471
|
+
id="stop3442-8" /><stop
|
472
|
+
offset="0.99"
|
473
|
+
style="stop-color:#7E0E08"
|
474
|
+
id="stop3444-5" /><stop
|
475
|
+
offset="1"
|
476
|
+
style="stop-color:#7E0E08"
|
477
|
+
id="stop3446-1" /></radialGradient><radialGradient
|
478
|
+
id="XMLID_30_-6"
|
479
|
+
cx="74.0923"
|
480
|
+
cy="145.75101"
|
481
|
+
r="66.943703"
|
482
|
+
gradientUnits="userSpaceOnUse"><stop
|
483
|
+
offset="0"
|
484
|
+
style="stop-color:#A30C00"
|
485
|
+
id="stop3451-6" /><stop
|
486
|
+
offset="0"
|
487
|
+
style="stop-color:#A30C00"
|
488
|
+
id="stop3453-2" /><stop
|
489
|
+
offset="0.99"
|
490
|
+
style="stop-color:#800E08"
|
491
|
+
id="stop3455-1" /><stop
|
492
|
+
offset="1"
|
493
|
+
style="stop-color:#800E08"
|
494
|
+
id="stop3457-9" /></radialGradient><linearGradient
|
495
|
+
id="XMLID_31_-6"
|
496
|
+
gradientUnits="userSpaceOnUse"
|
497
|
+
x1="26.669901"
|
498
|
+
y1="197.33591"
|
499
|
+
x2="9.9886999"
|
500
|
+
y2="140.742"><stop
|
501
|
+
offset="0"
|
502
|
+
style="stop-color:#8B2114"
|
503
|
+
id="stop3462-4" /><stop
|
504
|
+
offset="0"
|
505
|
+
style="stop-color:#8B2114"
|
506
|
+
id="stop3464-8" /><stop
|
507
|
+
offset="0.43"
|
508
|
+
style="stop-color:#9E100A"
|
509
|
+
id="stop3466-0" /><stop
|
510
|
+
offset="0.99"
|
511
|
+
style="stop-color:#B3100C"
|
512
|
+
id="stop3468-8" /><stop
|
513
|
+
offset="1"
|
514
|
+
style="stop-color:#B3100C"
|
515
|
+
id="stop3470-1" /></linearGradient><linearGradient
|
516
|
+
id="XMLID_32_-0"
|
517
|
+
gradientUnits="userSpaceOnUse"
|
518
|
+
x1="154.6411"
|
519
|
+
y1="9.7979002"
|
520
|
+
x2="192.039"
|
521
|
+
y2="26.305901"><stop
|
522
|
+
offset="0"
|
523
|
+
style="stop-color:#B31000"
|
524
|
+
id="stop3475-2" /><stop
|
525
|
+
offset="0"
|
526
|
+
style="stop-color:#B31000"
|
527
|
+
id="stop3477-2" /><stop
|
528
|
+
offset="0.44"
|
529
|
+
style="stop-color:#910F08"
|
530
|
+
id="stop3479-9" /><stop
|
531
|
+
offset="0.99"
|
532
|
+
style="stop-color:#791C12"
|
533
|
+
id="stop3481-7" /><stop
|
534
|
+
offset="1"
|
535
|
+
style="stop-color:#791C12"
|
536
|
+
id="stop3483-5" /></linearGradient><linearGradient
|
537
|
+
y2="141.7533"
|
538
|
+
x2="132.27631"
|
539
|
+
y1="215.5488"
|
540
|
+
x1="174.0737"
|
541
|
+
gradientUnits="userSpaceOnUse"
|
542
|
+
id="linearGradient6236"
|
543
|
+
xlink:href="#XMLID_17_-9"
|
544
|
+
inkscape:collect="always" /><linearGradient
|
545
|
+
inkscape:collect="always"
|
546
|
+
xlink:href="#XMLID_25_-9"
|
547
|
+
id="linearGradient6479"
|
548
|
+
gradientUnits="userSpaceOnUse"
|
549
|
+
x1="-18.5557"
|
550
|
+
y1="155.10451"
|
551
|
+
x2="135.0152"
|
552
|
+
y2="-2.8092999"
|
553
|
+
gradientTransform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><linearGradient
|
554
|
+
inkscape:collect="always"
|
555
|
+
xlink:href="#XMLID_26_-2"
|
556
|
+
id="linearGradient6481"
|
557
|
+
gradientUnits="userSpaceOnUse"
|
558
|
+
x1="99.074699"
|
559
|
+
y1="171.0332"
|
560
|
+
x2="52.817699"
|
561
|
+
y2="159.61659"
|
562
|
+
gradientTransform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><linearGradient
|
563
|
+
inkscape:collect="always"
|
564
|
+
xlink:href="#XMLID_27_-1"
|
565
|
+
id="linearGradient6483"
|
566
|
+
gradientUnits="userSpaceOnUse"
|
567
|
+
x1="178.52589"
|
568
|
+
y1="115.5146"
|
569
|
+
x2="137.43269"
|
570
|
+
y2="78.683998"
|
571
|
+
gradientTransform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><linearGradient
|
572
|
+
inkscape:collect="always"
|
573
|
+
xlink:href="#XMLID_28_-1"
|
574
|
+
id="linearGradient6485"
|
575
|
+
gradientUnits="userSpaceOnUse"
|
576
|
+
x1="193.6235"
|
577
|
+
y1="47.937"
|
578
|
+
x2="173.15421"
|
579
|
+
y2="26.053801"
|
580
|
+
gradientTransform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><radialGradient
|
581
|
+
inkscape:collect="always"
|
582
|
+
xlink:href="#XMLID_29_-4"
|
583
|
+
id="radialGradient6487"
|
584
|
+
gradientUnits="userSpaceOnUse"
|
585
|
+
cx="143.8315"
|
586
|
+
cy="79.388199"
|
587
|
+
r="50.357601"
|
588
|
+
gradientTransform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><radialGradient
|
589
|
+
inkscape:collect="always"
|
590
|
+
xlink:href="#XMLID_30_-6"
|
591
|
+
id="radialGradient6489"
|
592
|
+
gradientUnits="userSpaceOnUse"
|
593
|
+
cx="74.0923"
|
594
|
+
cy="145.75101"
|
595
|
+
r="66.943703"
|
596
|
+
gradientTransform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><linearGradient
|
597
|
+
inkscape:collect="always"
|
598
|
+
xlink:href="#XMLID_31_-6"
|
599
|
+
id="linearGradient6491"
|
600
|
+
gradientUnits="userSpaceOnUse"
|
601
|
+
x1="26.669901"
|
602
|
+
y1="197.33591"
|
603
|
+
x2="9.9886999"
|
604
|
+
y2="140.742"
|
605
|
+
gradientTransform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><linearGradient
|
606
|
+
inkscape:collect="always"
|
607
|
+
xlink:href="#XMLID_32_-0"
|
608
|
+
id="linearGradient6493"
|
609
|
+
gradientUnits="userSpaceOnUse"
|
610
|
+
x1="154.6411"
|
611
|
+
y1="9.7979002"
|
612
|
+
x2="192.039"
|
613
|
+
y2="26.305901"
|
614
|
+
gradientTransform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><linearGradient
|
615
|
+
inkscape:collect="always"
|
616
|
+
xlink:href="#XMLID_18_-7"
|
617
|
+
id="linearGradient6495"
|
618
|
+
gradientUnits="userSpaceOnUse"
|
619
|
+
x1="194.895"
|
620
|
+
y1="153.5576"
|
621
|
+
x2="141.0276"
|
622
|
+
y2="117.4093" /><linearGradient
|
623
|
+
inkscape:collect="always"
|
624
|
+
xlink:href="#XMLID_19_-4"
|
625
|
+
id="linearGradient6497"
|
626
|
+
gradientUnits="userSpaceOnUse"
|
627
|
+
x1="151.79539"
|
628
|
+
y1="217.7852"
|
629
|
+
x2="97.929703"
|
630
|
+
y2="181.638" /><linearGradient
|
631
|
+
inkscape:collect="always"
|
632
|
+
xlink:href="#XMLID_20_-9"
|
633
|
+
id="linearGradient6499"
|
634
|
+
gradientUnits="userSpaceOnUse"
|
635
|
+
x1="38.696301"
|
636
|
+
y1="127.3906"
|
637
|
+
x2="47.046902"
|
638
|
+
y2="181.66141" /><linearGradient
|
639
|
+
inkscape:collect="always"
|
640
|
+
xlink:href="#XMLID_21_-3"
|
641
|
+
id="linearGradient6501"
|
642
|
+
gradientUnits="userSpaceOnUse"
|
643
|
+
x1="96.132797"
|
644
|
+
y1="76.715302"
|
645
|
+
x2="99.209602"
|
646
|
+
y2="132.1021" /><linearGradient
|
647
|
+
inkscape:collect="always"
|
648
|
+
xlink:href="#XMLID_22_-7"
|
649
|
+
id="linearGradient6503"
|
650
|
+
gradientUnits="userSpaceOnUse"
|
651
|
+
x1="147.103"
|
652
|
+
y1="25.521"
|
653
|
+
x2="156.3141"
|
654
|
+
y2="65.216202" /><linearGradient
|
655
|
+
inkscape:collect="always"
|
656
|
+
xlink:href="#XMLID_23_-9"
|
657
|
+
id="linearGradient6505"
|
658
|
+
gradientUnits="userSpaceOnUse"
|
659
|
+
x1="118.9761"
|
660
|
+
y1="11.5415"
|
661
|
+
x2="158.66859"
|
662
|
+
y2="-8.3048" /><linearGradient
|
663
|
+
inkscape:collect="always"
|
664
|
+
xlink:href="#XMLID_24_-3"
|
665
|
+
id="linearGradient6507"
|
666
|
+
gradientUnits="userSpaceOnUse"
|
667
|
+
x1="3.9033"
|
668
|
+
y1="113.5547"
|
669
|
+
x2="7.1701999"
|
670
|
+
y2="146.2628" /></defs><text
|
671
|
+
style="font-size:150px;font-weight:normal;fill:#000000;font-family:Droid Sans Mono"
|
672
|
+
id="text109"
|
673
|
+
class="fil2 fnt2"
|
674
|
+
y="116.84798"
|
675
|
+
x="179.64279">IRuby: <tspan
|
676
|
+
style="fill:#800000"
|
677
|
+
id="tspan6534">Notebook</tspan></text>
|
678
|
+
<polygon
|
679
|
+
style="fill:url(#linearGradient6236);fill-rule:evenodd"
|
680
|
+
clip-rule="evenodd"
|
681
|
+
points="198.13,39.95 153.5,130.41 40.38,197.58 186.849,187.641 "
|
682
|
+
id="polygon3282"
|
683
|
+
transform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><polygon
|
684
|
+
style="fill:url(#linearGradient6495);fill-rule:evenodd"
|
685
|
+
clip-rule="evenodd"
|
686
|
+
points="174.5,100.65 140.209,145.93 187.089,187.54 "
|
687
|
+
id="polygon3293"
|
688
|
+
transform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><polygon
|
689
|
+
style="fill:url(#linearGradient6497);fill-rule:evenodd"
|
690
|
+
clip-rule="evenodd"
|
691
|
+
points="95.03,180.3 40.87,197.391 187.259,187.54 "
|
692
|
+
id="polygon3304"
|
693
|
+
transform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><polygon
|
694
|
+
style="fill:url(#linearGradient6499);fill-rule:evenodd"
|
695
|
+
clip-rule="evenodd"
|
696
|
+
points="64.04,121.93 13.34,132.771 41,197.41 "
|
697
|
+
id="polygon3319"
|
698
|
+
transform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><polygon
|
699
|
+
style="fill:url(#linearGradient6501);fill-rule:evenodd"
|
700
|
+
clip-rule="evenodd"
|
701
|
+
points="119,63.14 58.33,120.01 140.2,146.18 "
|
702
|
+
id="polygon3334"
|
703
|
+
transform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><polygon
|
704
|
+
style="fill:url(#linearGradient6503);fill-rule:evenodd"
|
705
|
+
clip-rule="evenodd"
|
706
|
+
points="135.97,17.47 120,69.1 193.32,64.31 "
|
707
|
+
id="polygon3349"
|
708
|
+
transform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><polygon
|
709
|
+
style="fill:url(#linearGradient6505);fill-rule:evenodd"
|
710
|
+
clip-rule="evenodd"
|
711
|
+
points="132.77,19.41 111.49,0.52 166.5,0.77 "
|
712
|
+
id="polygon3362"
|
713
|
+
transform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><polygon
|
714
|
+
style="fill:url(#linearGradient6507);fill-rule:evenodd"
|
715
|
+
clip-rule="evenodd"
|
716
|
+
points="14.13,132.32 2.7,101.62 0,158.09 "
|
717
|
+
id="polygon3375"
|
718
|
+
transform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><path
|
719
|
+
style="fill:#ffffff;fill-rule:evenodd"
|
720
|
+
inkscape:connector-curvature="0"
|
721
|
+
clip-rule="evenodd"
|
722
|
+
d="M 1.41207,73.259327 9.78257,97.002459 46.15425,88.842299 87.67923,50.250629 99.39795,13.02808 80.94572,-8e-4 49.57451,11.739741 c -9.88375,9.193 -29.06313,27.382481 -29.7546,27.724581 -0.6842,0.34938 -12.66495,22.993412 -18.40784,33.795005 z"
|
723
|
+
id="path3377" /><path
|
724
|
+
style="fill:url(#linearGradient6479);fill-rule:evenodd"
|
725
|
+
inkscape:connector-curvature="0"
|
726
|
+
clip-rule="evenodd"
|
727
|
+
d="M 30.80346,30.606145 C 52.22469,9.366884 79.84008,-3.181593 90.43786,7.510822 101.02911,18.203238 89.79734,44.188202 68.37612,65.420173 46.95491,86.652139 19.68161,99.892099 9.0911,89.199679 -1.50669,78.514549 9.38224,51.838115 30.80346,30.606145 z"
|
728
|
+
id="path3400" /><path
|
729
|
+
style="fill:url(#linearGradient6481);fill-rule:evenodd"
|
730
|
+
inkscape:connector-curvature="0"
|
731
|
+
clip-rule="evenodd"
|
732
|
+
d="m 29.84268,143.66622 16.6391,-55.114331 55.25991,17.752751 c -19.98003,18.73537 -42.20191,34.57383 -71.89901,37.36158 z"
|
733
|
+
id="path3413" /><path
|
734
|
+
style="fill:url(#linearGradient6483);fill-rule:evenodd"
|
735
|
+
inkscape:connector-curvature="0"
|
736
|
+
clip-rule="evenodd"
|
737
|
+
d="m 87.75203,50.142169 14.18618,56.191581 c 16.69007,-17.548951 31.66963,-36.415343 39.00584,-59.750855 l -53.19202,3.559274 z"
|
738
|
+
id="path3424" /><path
|
739
|
+
style="fill:url(#linearGradient6485);fill-rule:evenodd"
|
740
|
+
inkscape:connector-curvature="0"
|
741
|
+
clip-rule="evenodd"
|
742
|
+
d="M 140.7992,46.866756 C 146.47659,29.732691 147.78676,5.152522 121.01496,0.588769 L 99.04784,12.722372 140.7992,46.866756 z"
|
743
|
+
id="path3435" /><path
|
744
|
+
style="fill:#9e1209;fill-rule:evenodd"
|
745
|
+
inkscape:connector-curvature="0"
|
746
|
+
clip-rule="evenodd"
|
747
|
+
d="m 0,114.82071 c 0.7861,28.27849 21.1883,28.69992 29.87907,28.94813 L 9.80442,96.885989 0,114.82071 z"
|
748
|
+
id="path3437" /><path
|
749
|
+
style="fill:url(#radialGradient6487);fill-rule:evenodd"
|
750
|
+
inkscape:connector-curvature="0"
|
751
|
+
clip-rule="evenodd"
|
752
|
+
d="m 87.83136,50.229523 c 12.82508,7.882825 38.67248,23.714005 39.19654,24.005157 0.81449,0.458556 11.14369,-17.417938 13.48744,-27.520772 l -52.68398,3.515615 z"
|
753
|
+
id="path3448" /><path
|
754
|
+
style="fill:url(#radialGradient6489);fill-rule:evenodd"
|
755
|
+
inkscape:connector-curvature="0"
|
756
|
+
clip-rule="evenodd"
|
757
|
+
d="m 46.45995,88.551889 22.24371,42.915221 c 13.15262,-7.13313 23.45198,-15.82391 32.88517,-25.13336 L 46.45995,88.551889 z"
|
758
|
+
id="path3459" /><path
|
759
|
+
style="fill:url(#linearGradient6491);fill-rule:evenodd"
|
760
|
+
inkscape:connector-curvature="0"
|
761
|
+
clip-rule="evenodd"
|
762
|
+
d="M 9.71706,96.944229 6.56538,134.47322 c 5.9467,8.12302 14.12797,8.82906 22.70955,8.19581 C 23.06621,127.21634 10.6633,96.318259 9.71706,96.944229 z"
|
763
|
+
id="path3472" /><path
|
764
|
+
style="fill:url(#linearGradient6493);fill-rule:evenodd"
|
765
|
+
inkscape:connector-curvature="0"
|
766
|
+
clip-rule="evenodd"
|
767
|
+
d="m 98.91756,12.816992 44.18899,6.20146 C 140.74825,9.024795 133.50594,2.575855 121.16126,0.559655 l -22.2437,12.257337 z"
|
768
|
+
id="path3485" /></svg>
|