Merge lp:~daker/loco-team-portal/fix.616547 into lp:loco-team-portal
- fix.616547
- Merge into 0.2
Proposed by
Adnane Belmadiaf
on 2012-05-27
| Status: | Merged | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Approved by: | Adnane Belmadiaf on 2012-11-05 | ||||||||||||||||
| Approved revision: | 533 | ||||||||||||||||
| Merged at revision: | 554 | ||||||||||||||||
| Proposed branch: | lp:~daker/loco-team-portal/fix.616547 | ||||||||||||||||
| Merge into: | lp:loco-team-portal | ||||||||||||||||
| Diff against target: |
1674 lines (+1291/-172) 14 files modified
loco_directory/common/templatetags/smart_if.py (+401/-0) loco_directory/events/urls.py (+4/-2) loco_directory/events/views.py (+73/-4) loco_directory/media/css/styles.css (+360/-34) loco_directory/media/fonts/entypo-webfont.svg (+198/-0) loco_directory/media/fonts/stylesheet.css (+16/-0) loco_directory/media/js/comments.js (+50/-0) loco_directory/settings.py (+2/-0) loco_directory/templates/events/team_event_comment_new.inc.html (+12/-17) loco_directory/templates/events/team_event_detail.html (+1/-0) loco_directory/templates/events/team_event_detail.inc.html (+116/-51) loco_directory/templates/events/team_event_detail_attendee.inc.html (+10/-18) loco_directory/templates/events/team_event_detail_attendees.inc.html (+10/-32) loco_directory/templates/events/team_event_detail_comments.inc.html (+38/-14) |
||||||||||||||||
| To merge this branch: | bzr merge lp:~daker/loco-team-portal/fix.616547 | ||||||||||||||||
| Related bugs: |
|
| Reviewer | Review Type | Date Requested | Status |
|---|---|---|---|
| Chris Johnston | 2012-05-27 | Needs Fixing on 2012-06-30 | |
|
Review via email:
|
|||
Commit Message
Fix the event layout
Description of the Change
To post a comment you must log in.
lp:~daker/loco-team-portal/fix.616547
updated
on 2012-05-27
- 528. By Adnane Belmadiaf on 2012-05-27
-
* Added inline editing of comments
* Added the ability to delete your own comments
lp:~daker/loco-team-portal/fix.616547
updated
on 2012-10-30
- 529. By Adnane Belmadiaf on 2012-09-08
-
* A lot fixes for the event page.
- 530. By Adnane Belmadiaf on 2012-09-08
-
* Minor fix
- 531. By Adnane Belmadiaf on 2012-09-16
-
Removes nickname from sreg fields as it is already required by STRICT_USERNAMES
- 532. By Adnane Belmadiaf on 2012-10-30
-
Fixed the mugshot url
- 533. By Adnane Belmadiaf on 2012-10-30
-
* More fixes
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
| 1 | === added file 'loco_directory/common/templatetags/smart_if.py' |
| 2 | --- loco_directory/common/templatetags/smart_if.py 1970-01-01 00:00:00 +0000 |
| 3 | +++ loco_directory/common/templatetags/smart_if.py 2012-10-30 12:31:21 +0000 |
| 4 | @@ -0,0 +1,401 @@ |
| 5 | +""" |
| 6 | +A smarter {% if %} tag for django templates. |
| 7 | + |
| 8 | +While retaining current Django functionality, it also handles equality, |
| 9 | +greater than and less than operators. Some common case examples:: |
| 10 | + |
| 11 | + {% if articles|length >= 5 %}...{% endif %} |
| 12 | + {% if "ifnotequal tag" != "beautiful" %}...{% endif %} |
| 13 | +""" |
| 14 | +import unittest |
| 15 | +from django import template |
| 16 | + |
| 17 | + |
| 18 | +register = template.Library() |
| 19 | + |
| 20 | + |
| 21 | +#============================================================================== |
| 22 | +# Calculation objects |
| 23 | +#============================================================================== |
| 24 | + |
| 25 | +class BaseCalc(object): |
| 26 | + def __init__(self, var1, var2=None, negate=False): |
| 27 | + self.var1 = var1 |
| 28 | + self.var2 = var2 |
| 29 | + self.negate = negate |
| 30 | + |
| 31 | + def resolve(self, context): |
| 32 | + try: |
| 33 | + var1, var2 = self.resolve_vars(context) |
| 34 | + outcome = self.calculate(var1, var2) |
| 35 | + except: |
| 36 | + outcome = False |
| 37 | + if self.negate: |
| 38 | + return not outcome |
| 39 | + return outcome |
| 40 | + |
| 41 | + def resolve_vars(self, context): |
| 42 | + var2 = self.var2 and self.var2.resolve(context) |
| 43 | + return self.var1.resolve(context), var2 |
| 44 | + |
| 45 | + def calculate(self, var1, var2): |
| 46 | + raise NotImplementedError() |
| 47 | + |
| 48 | + |
| 49 | +class Or(BaseCalc): |
| 50 | + def calculate(self, var1, var2): |
| 51 | + return var1 or var2 |
| 52 | + |
| 53 | + |
| 54 | +class And(BaseCalc): |
| 55 | + def calculate(self, var1, var2): |
| 56 | + return var1 and var2 |
| 57 | + |
| 58 | + |
| 59 | +class Equals(BaseCalc): |
| 60 | + def calculate(self, var1, var2): |
| 61 | + return var1 == var2 |
| 62 | + |
| 63 | + |
| 64 | +class Greater(BaseCalc): |
| 65 | + def calculate(self, var1, var2): |
| 66 | + return var1 > var2 |
| 67 | + |
| 68 | + |
| 69 | +class GreaterOrEqual(BaseCalc): |
| 70 | + def calculate(self, var1, var2): |
| 71 | + return var1 >= var2 |
| 72 | + |
| 73 | + |
| 74 | +class In(BaseCalc): |
| 75 | + def calculate(self, var1, var2): |
| 76 | + return var1 in var2 |
| 77 | + |
| 78 | + |
| 79 | +#============================================================================== |
| 80 | +# Tests |
| 81 | +#============================================================================== |
| 82 | + |
| 83 | +class TestVar(object): |
| 84 | + """ |
| 85 | + A basic self-resolvable object similar to a Django template variable. Used |
| 86 | + to assist with tests. |
| 87 | + """ |
| 88 | + def __init__(self, value): |
| 89 | + self.value = value |
| 90 | + |
| 91 | + def resolve(self, context): |
| 92 | + return self.value |
| 93 | + |
| 94 | + |
| 95 | +class SmartIfTests(unittest.TestCase): |
| 96 | + def setUp(self): |
| 97 | + self.true = TestVar(True) |
| 98 | + self.false = TestVar(False) |
| 99 | + self.high = TestVar(9000) |
| 100 | + self.low = TestVar(1) |
| 101 | + |
| 102 | + def assertCalc(self, calc, context=None): |
| 103 | + """ |
| 104 | + Test a calculation is True, also checking the inverse "negate" case. |
| 105 | + """ |
| 106 | + context = context or {} |
| 107 | + self.assert_(calc.resolve(context)) |
| 108 | + calc.negate = not calc.negate |
| 109 | + self.assertFalse(calc.resolve(context)) |
| 110 | + |
| 111 | + def assertCalcFalse(self, calc, context=None): |
| 112 | + """ |
| 113 | + Test a calculation is False, also checking the inverse "negate" case. |
| 114 | + """ |
| 115 | + context = context or {} |
| 116 | + self.assertFalse(calc.resolve(context)) |
| 117 | + calc.negate = not calc.negate |
| 118 | + self.assert_(calc.resolve(context)) |
| 119 | + |
| 120 | + def test_or(self): |
| 121 | + self.assertCalc(Or(self.true)) |
| 122 | + self.assertCalcFalse(Or(self.false)) |
| 123 | + self.assertCalc(Or(self.true, self.true)) |
| 124 | + self.assertCalc(Or(self.true, self.false)) |
| 125 | + self.assertCalc(Or(self.false, self.true)) |
| 126 | + self.assertCalcFalse(Or(self.false, self.false)) |
| 127 | + |
| 128 | + def test_and(self): |
| 129 | + self.assertCalc(And(self.true, self.true)) |
| 130 | + self.assertCalcFalse(And(self.true, self.false)) |
| 131 | + self.assertCalcFalse(And(self.false, self.true)) |
| 132 | + self.assertCalcFalse(And(self.false, self.false)) |
| 133 | + |
| 134 | + def test_equals(self): |
| 135 | + self.assertCalc(Equals(self.low, self.low)) |
| 136 | + self.assertCalcFalse(Equals(self.low, self.high)) |
| 137 | + |
| 138 | + def test_greater(self): |
| 139 | + self.assertCalc(Greater(self.high, self.low)) |
| 140 | + self.assertCalcFalse(Greater(self.low, self.low)) |
| 141 | + self.assertCalcFalse(Greater(self.low, self.high)) |
| 142 | + |
| 143 | + def test_greater_or_equal(self): |
| 144 | + self.assertCalc(GreaterOrEqual(self.high, self.low)) |
| 145 | + self.assertCalc(GreaterOrEqual(self.low, self.low)) |
| 146 | + self.assertCalcFalse(GreaterOrEqual(self.low, self.high)) |
| 147 | + |
| 148 | + def test_in(self): |
| 149 | + list_ = TestVar([1,2,3]) |
| 150 | + invalid_list = TestVar(None) |
| 151 | + self.assertCalc(In(self.low, list_)) |
| 152 | + self.assertCalcFalse(In(self.low, invalid_list)) |
| 153 | + |
| 154 | + def test_parse_bits(self): |
| 155 | + var = IfParser([True]).parse() |
| 156 | + self.assert_(var.resolve({})) |
| 157 | + var = IfParser([False]).parse() |
| 158 | + self.assertFalse(var.resolve({})) |
| 159 | + |
| 160 | + var = IfParser([False, 'or', True]).parse() |
| 161 | + self.assert_(var.resolve({})) |
| 162 | + |
| 163 | + var = IfParser([False, 'and', True]).parse() |
| 164 | + self.assertFalse(var.resolve({})) |
| 165 | + |
| 166 | + var = IfParser(['not', False, 'and', 'not', False]).parse() |
| 167 | + self.assert_(var.resolve({})) |
| 168 | + |
| 169 | + var = IfParser(['not', 'not', True]).parse() |
| 170 | + self.assert_(var.resolve({})) |
| 171 | + |
| 172 | + var = IfParser([1, '=', 1]).parse() |
| 173 | + self.assert_(var.resolve({})) |
| 174 | + |
| 175 | + var = IfParser([1, 'not', '=', 1]).parse() |
| 176 | + self.assertFalse(var.resolve({})) |
| 177 | + |
| 178 | + var = IfParser([1, 'not', 'not', '=', 1]).parse() |
| 179 | + self.assert_(var.resolve({})) |
| 180 | + |
| 181 | + var = IfParser([1, '!=', 1]).parse() |
| 182 | + self.assertFalse(var.resolve({})) |
| 183 | + |
| 184 | + var = IfParser([3, '>', 2]).parse() |
| 185 | + self.assert_(var.resolve({})) |
| 186 | + |
| 187 | + var = IfParser([1, '<', 2]).parse() |
| 188 | + self.assert_(var.resolve({})) |
| 189 | + |
| 190 | + var = IfParser([2, 'not', 'in', [2, 3]]).parse() |
| 191 | + self.assertFalse(var.resolve({})) |
| 192 | + |
| 193 | + var = IfParser([1, 'or', 1, '=', 2]).parse() |
| 194 | + self.assert_(var.resolve({})) |
| 195 | + |
| 196 | + def test_boolean(self): |
| 197 | + var = IfParser([True, 'and', True, 'and', True]).parse() |
| 198 | + self.assert_(var.resolve({})) |
| 199 | + var = IfParser([False, 'or', False, 'or', True]).parse() |
| 200 | + self.assert_(var.resolve({})) |
| 201 | + var = IfParser([True, 'and', False, 'or', True]).parse() |
| 202 | + self.assert_(var.resolve({})) |
| 203 | + var = IfParser([False, 'or', True, 'and', True]).parse() |
| 204 | + self.assert_(var.resolve({})) |
| 205 | + |
| 206 | + var = IfParser([True, 'and', True, 'and', False]).parse() |
| 207 | + self.assertFalse(var.resolve({})) |
| 208 | + var = IfParser([False, 'or', False, 'or', False]).parse() |
| 209 | + self.assertFalse(var.resolve({})) |
| 210 | + var = IfParser([False, 'or', True, 'and', False]).parse() |
| 211 | + self.assertFalse(var.resolve({})) |
| 212 | + var = IfParser([False, 'and', True, 'or', False]).parse() |
| 213 | + self.assertFalse(var.resolve({})) |
| 214 | + |
| 215 | + def test_invalid(self): |
| 216 | + self.assertRaises(ValueError, IfParser(['not']).parse) |
| 217 | + self.assertRaises(ValueError, IfParser(['==']).parse) |
| 218 | + self.assertRaises(ValueError, IfParser([1, 'in']).parse) |
| 219 | + self.assertRaises(ValueError, IfParser([1, '>', 'in']).parse) |
| 220 | + self.assertRaises(ValueError, IfParser([1, '==', 'not', 'not']).parse) |
| 221 | + self.assertRaises(ValueError, IfParser([1, 2]).parse) |
| 222 | + |
| 223 | + |
| 224 | +OPERATORS = { |
| 225 | + '=': (Equals, True), |
| 226 | + '==': (Equals, True), |
| 227 | + '!=': (Equals, False), |
| 228 | + '>': (Greater, True), |
| 229 | + '>=': (GreaterOrEqual, True), |
| 230 | + '<=': (Greater, False), |
| 231 | + '<': (GreaterOrEqual, False), |
| 232 | + 'or': (Or, True), |
| 233 | + 'and': (And, True), |
| 234 | + 'in': (In, True), |
| 235 | +} |
| 236 | +BOOL_OPERATORS = ('or', 'and') |
| 237 | + |
| 238 | + |
| 239 | +class IfParser(object): |
| 240 | + error_class = ValueError |
| 241 | + |
| 242 | + def __init__(self, tokens): |
| 243 | + self.tokens = tokens |
| 244 | + |
| 245 | + def _get_tokens(self): |
| 246 | + return self._tokens |
| 247 | + |
| 248 | + def _set_tokens(self, tokens): |
| 249 | + self._tokens = tokens |
| 250 | + self.len = len(tokens) |
| 251 | + self.pos = 0 |
| 252 | + |
| 253 | + tokens = property(_get_tokens, _set_tokens) |
| 254 | + |
| 255 | + def parse(self): |
| 256 | + if self.at_end(): |
| 257 | + raise self.error_class('No variables provided.') |
| 258 | + var1 = self.get_bool_var() |
| 259 | + while not self.at_end(): |
| 260 | + op, negate = self.get_operator() |
| 261 | + var2 = self.get_bool_var() |
| 262 | + var1 = op(var1, var2, negate=negate) |
| 263 | + return var1 |
| 264 | + |
| 265 | + def get_token(self, eof_message=None, lookahead=False): |
| 266 | + negate = True |
| 267 | + token = None |
| 268 | + pos = self.pos |
| 269 | + while token is None or token == 'not': |
| 270 | + if pos >= self.len: |
| 271 | + if eof_message is None: |
| 272 | + raise self.error_class() |
| 273 | + raise self.error_class(eof_message) |
| 274 | + token = self.tokens[pos] |
| 275 | + negate = not negate |
| 276 | + pos += 1 |
| 277 | + if not lookahead: |
| 278 | + self.pos = pos |
| 279 | + return token, negate |
| 280 | + |
| 281 | + def at_end(self): |
| 282 | + return self.pos >= self.len |
| 283 | + |
| 284 | + def create_var(self, value): |
| 285 | + return TestVar(value) |
| 286 | + |
| 287 | + def get_bool_var(self): |
| 288 | + """ |
| 289 | + Returns either a variable by itself or a non-boolean operation (such as |
| 290 | + ``x == 0`` or ``x < 0``). |
| 291 | + |
| 292 | + This is needed to keep correct precedence for boolean operations (i.e. |
| 293 | + ``x or x == 0`` should be ``x or (x == 0)``, not ``(x or x) == 0``). |
| 294 | + """ |
| 295 | + var = self.get_var() |
| 296 | + if not self.at_end(): |
| 297 | + op_token = self.get_token(lookahead=True)[0] |
| 298 | + if isinstance(op_token, basestring) and (op_token not in |
| 299 | + BOOL_OPERATORS): |
| 300 | + op, negate = self.get_operator() |
| 301 | + return op(var, self.get_var(), negate=negate) |
| 302 | + return var |
| 303 | + |
| 304 | + def get_var(self): |
| 305 | + token, negate = self.get_token('Reached end of statement, still ' |
| 306 | + 'expecting a variable.') |
| 307 | + if isinstance(token, basestring) and token in OPERATORS: |
| 308 | + raise self.error_class('Expected variable, got operator (%s).' % |
| 309 | + token) |
| 310 | + var = self.create_var(token) |
| 311 | + if negate: |
| 312 | + return Or(var, negate=True) |
| 313 | + return var |
| 314 | + |
| 315 | + def get_operator(self): |
| 316 | + token, negate = self.get_token('Reached end of statement, still ' |
| 317 | + 'expecting an operator.') |
| 318 | + if not isinstance(token, basestring) or token not in OPERATORS: |
| 319 | + raise self.error_class('%s is not a valid operator.' % token) |
| 320 | + if self.at_end(): |
| 321 | + raise self.error_class('No variable provided after "%s".' % token) |
| 322 | + op, true = OPERATORS[token] |
| 323 | + if not true: |
| 324 | + negate = not negate |
| 325 | + return op, negate |
| 326 | + |
| 327 | + |
| 328 | +#============================================================================== |
| 329 | +# Actual templatetag code. |
| 330 | +#============================================================================== |
| 331 | + |
| 332 | +class TemplateIfParser(IfParser): |
| 333 | + error_class = template.TemplateSyntaxError |
| 334 | + |
| 335 | + def __init__(self, parser, *args, **kwargs): |
| 336 | + self.template_parser = parser |
| 337 | + return super(TemplateIfParser, self).__init__(*args, **kwargs) |
| 338 | + |
| 339 | + def create_var(self, value): |
| 340 | + return self.template_parser.compile_filter(value) |
| 341 | + |
| 342 | + |
| 343 | +class SmartIfNode(template.Node): |
| 344 | + def __init__(self, var, nodelist_true, nodelist_false=None): |
| 345 | + self.nodelist_true, self.nodelist_false = nodelist_true, nodelist_false |
| 346 | + self.var = var |
| 347 | + |
| 348 | + def render(self, context): |
| 349 | + if self.var.resolve(context): |
| 350 | + return self.nodelist_true.render(context) |
| 351 | + if self.nodelist_false: |
| 352 | + return self.nodelist_false.render(context) |
| 353 | + return '' |
| 354 | + |
| 355 | + def __repr__(self): |
| 356 | + return "<Smart If node>" |
| 357 | + |
| 358 | + def __iter__(self): |
| 359 | + for node in self.nodelist_true: |
| 360 | + yield node |
| 361 | + if self.nodelist_false: |
| 362 | + for node in self.nodelist_false: |
| 363 | + yield node |
| 364 | + |
| 365 | + def get_nodes_by_type(self, nodetype): |
| 366 | + nodes = [] |
| 367 | + if isinstance(self, nodetype): |
| 368 | + nodes.append(self) |
| 369 | + nodes.extend(self.nodelist_true.get_nodes_by_type(nodetype)) |
| 370 | + if self.nodelist_false: |
| 371 | + nodes.extend(self.nodelist_false.get_nodes_by_type(nodetype)) |
| 372 | + return nodes |
| 373 | + |
| 374 | + |
| 375 | +@register.tag('if') |
| 376 | +def smart_if(parser, token): |
| 377 | + """ |
| 378 | + A smarter {% if %} tag for django templates. |
| 379 | + |
| 380 | + While retaining current Django functionality, it also handles equality, |
| 381 | + greater than and less than operators. Some common case examples:: |
| 382 | + |
| 383 | + {% if articles|length >= 5 %}...{% endif %} |
| 384 | + {% if "ifnotequal tag" != "beautiful" %}...{% endif %} |
| 385 | + |
| 386 | + Arguments and operators _must_ have a space between them, so |
| 387 | + ``{% if 1>2 %}`` is not a valid smart if tag. |
| 388 | + |
| 389 | + All supported operators are: ``or``, ``and``, ``in``, ``=`` (or ``==``), |
| 390 | + ``!=``, ``>``, ``>=``, ``<`` and ``<=``. |
| 391 | + """ |
| 392 | + bits = token.split_contents()[1:] |
| 393 | + var = TemplateIfParser(parser, bits).parse() |
| 394 | + nodelist_true = parser.parse(('else', 'endif')) |
| 395 | + token = parser.next_token() |
| 396 | + if token.contents == 'else': |
| 397 | + nodelist_false = parser.parse(('endif',)) |
| 398 | + parser.delete_first_token() |
| 399 | + else: |
| 400 | + nodelist_false = None |
| 401 | + return SmartIfNode(var, nodelist_true, nodelist_false) |
| 402 | + |
| 403 | + |
| 404 | +if __name__ == '__main__': |
| 405 | + unittest.main() |
| 406 | |
| 407 | === modified file 'loco_directory/events/urls.py' |
| 408 | --- loco_directory/events/urls.py 2012-06-30 23:44:14 +0000 |
| 409 | +++ loco_directory/events/urls.py 2012-10-30 12:31:21 +0000 |
| 410 | @@ -29,8 +29,10 @@ |
| 411 | url(r'^(?P<team_slug>[a-zA-Z0-9\-\.\+?]+)/add/$', 'events.views.team_event_new', name='team-event-new'), |
| 412 | url(r'^(?P<team_slug>[a-zA-Z0-9\-\.\+?]+)/rss/$', 'events.views.team_events_rss', name='team-events-rss'), |
| 413 | url(r'^(?P<team_slug>[a-zA-Z0-9\-\.\+?]+)/ical/$', 'events.views.team_event_list_ical', name='team-event-list-ical'), |
| 414 | - url(r'^add/$', 'events.views.team_event_select', name='team-event-select'), |
| 415 | - |
| 416 | + url(r'^add/$', 'events.views.team_event_select', name='team-event-select'), |
| 417 | + url(r'^comment-update/$', 'events.views.team_event_comment_edit', name='team-event-comment-edit'), |
| 418 | + url(r'^comment-delete/(?P<pk>\d+)/$', 'events.views.team_event_comment_delete', name='team-event-comment-delete'), |
| 419 | + |
| 420 | # Old url notations |
| 421 | url(r'^team/locations/$', 'events.views.team_event_locations'), |
| 422 | url(r'^team/ical/$', 'events.views.teams_event_list_ical'), |
| 423 | |
| 424 | === modified file 'loco_directory/events/views.py' |
| 425 | --- loco_directory/events/views.py 2012-07-14 20:07:11 +0000 |
| 426 | +++ loco_directory/events/views.py 2012-10-30 12:31:21 +0000 |
| 427 | @@ -1,7 +1,6 @@ |
| 428 | from django.template import RequestContext |
| 429 | from django.http import HttpResponse, HttpResponseRedirect, Http404 |
| 430 | -from django.shortcuts import render_to_response |
| 431 | -from django.shortcuts import get_object_or_404 |
| 432 | +from django.shortcuts import render_to_response, redirect, get_object_or_404 |
| 433 | from django.contrib.auth.decorators import login_required |
| 434 | from django.utils import simplejson |
| 435 | from django.utils.translation import ugettext as _ |
| 436 | @@ -10,7 +9,7 @@ |
| 437 | from events.models import TeamEvent |
| 438 | from events.models import GlobalEvent |
| 439 | from teams.models import Team, Country, Continent |
| 440 | -from events.models import Attendee |
| 441 | +from events.models import Attendee, TeamEventComment |
| 442 | |
| 443 | from forms import TeamEventForm |
| 444 | from forms import TeamEventCommentForm |
| 445 | @@ -153,7 +152,7 @@ |
| 446 | profile = create_profile(request.user.username) |
| 447 | team_event_comment.commenter_profile = profile |
| 448 | team_event_comment.save() |
| 449 | - request.user.message_set.create(message=_('Comment saved.')) |
| 450 | + request.user.message_set.create(message=_('Your comment has been saved.')) |
| 451 | return redirect(team_event_object) |
| 452 | else: |
| 453 | form = TeamEventCommentForm() |
| 454 | @@ -378,6 +377,34 @@ |
| 455 | return render_to_response('events/team_event_register.html', |
| 456 | context, RequestContext(request)) |
| 457 | |
| 458 | +@login_required |
| 459 | +def team_event_comment_new(request, team_slug, team_event_id): |
| 460 | + """ |
| 461 | + create a comment for a team event |
| 462 | + """ |
| 463 | + team_event_object = get_object_or_404(TeamEvent, pk=team_event_id) |
| 464 | + |
| 465 | + if request.method == 'POST': |
| 466 | + form = TeamEventCommentForm(data=request.POST) |
| 467 | + if form.is_valid(): |
| 468 | + team_event_comment = form.save(commit=False) |
| 469 | + team_event_comment.team_event = team_event_object |
| 470 | + from userprofiles.models import create_profile |
| 471 | + profile = create_profile(request.user.username) |
| 472 | + team_event_comment.commenter_profile = profile |
| 473 | + team_event_comment.save() |
| 474 | + request.user.message_set.create(message=_('Comment saved.')) |
| 475 | + return redirect( team_event_object ) |
| 476 | + else: |
| 477 | + form = TeamEventCommentForm() |
| 478 | + |
| 479 | + context = { |
| 480 | + 'team_event_object': team_event_object, |
| 481 | + 'form': form, |
| 482 | + } |
| 483 | + return render_to_response('events/team_event_comment_new.html', |
| 484 | + context, RequestContext(request)) |
| 485 | + |
| 486 | |
| 487 | ################################################################# |
| 488 | # Global Events |
| 489 | @@ -563,3 +590,45 @@ |
| 490 | 'global_event_object': global_event_object, |
| 491 | } |
| 492 | return render_to_response('events/global_jam_dashboard.html', context, RequestContext(request)) |
| 493 | + |
| 494 | +@login_required |
| 495 | +def team_event_comment_edit(request): |
| 496 | + """ |
| 497 | + update a comment for a team event |
| 498 | + """ |
| 499 | + if request.method == 'POST': |
| 500 | + response_dict = {} |
| 501 | + id = request.POST.get('id', False) |
| 502 | + comment = request.POST.get('comment', False) |
| 503 | + if id and comment: |
| 504 | + try: |
| 505 | + comment_obj = TeamEventComment.objects.get(pk=id) |
| 506 | + if comment_obj.commenter_profile.user == request.user: |
| 507 | + comment_obj.comment = comment |
| 508 | + comment_obj.save() |
| 509 | + response_dict.update({'success': True, 'response': comment_obj.comment}) |
| 510 | + else: |
| 511 | + response_dict.update({'success': False, 'response': _('Your are not authorized to edit this comment.') }) |
| 512 | + except TeamEventComment.DoesNotExist: |
| 513 | + response_dict.update({'success': False, 'response': _('This comment does not exist.') }) |
| 514 | + else: |
| 515 | + response_dict.update({'success': False, 'response': _('Missing arguments.') }) |
| 516 | + else: |
| 517 | + response_dict.update({'success': False, 'response': _('You can\'t edit this comment using this method.') }) |
| 518 | + return HttpResponse(simplejson.dumps(response_dict), mimetype='application/json') |
| 519 | + |
| 520 | +@login_required |
| 521 | +def team_event_comment_delete(request, pk): |
| 522 | + """ |
| 523 | + delete a comment for a team event |
| 524 | + """ |
| 525 | + next = request.GET.get('next', None) |
| 526 | + comment = get_object_or_404(TeamEventComment, pk=pk) |
| 527 | + if comment.commenter_profile.user == request.user: |
| 528 | + comment.delete() |
| 529 | + request.user.message_set.create(message=_('Your comment has been removed.')) |
| 530 | + if next: redirect_to = next |
| 531 | + else: redirect_to = '/' |
| 532 | + return redirect(redirect_to) |
| 533 | + else: |
| 534 | + raise Http404 |
| 535 | |
| 536 | === modified file 'loco_directory/media/css/styles.css' |
| 537 | --- loco_directory/media/css/styles.css 2012-06-18 22:31:29 +0000 |
| 538 | +++ loco_directory/media/css/styles.css 2012-10-30 12:31:21 +0000 |
| 539 | @@ -1,13 +1,30 @@ |
| 540 | /* |
| 541 | - * newstyle.css |
| 542 | + * styles.css |
| 543 | * |
| 544 | * Base style for the LoCo Team Portal. This is an implementation |
| 545 | * of the ( at the time of this writing ) new Ubuntu branding. |
| 546 | * |
| 547 | * Author: Michael Hall ( mhall119 ) |
| 548 | * Author: Paul Tagliamonte ( paultag ) |
| 549 | + * Author: Adnane Belmadiaf ( daker ) |
| 550 | */ |
| 551 | |
| 552 | +* { |
| 553 | + outline: none; |
| 554 | +} |
| 555 | + |
| 556 | + @font-face { |
| 557 | + font-family: 'EntypoRegular'; |
| 558 | + src: url('../fonts/entypo-webfont.eot'); |
| 559 | + src: url('../fonts/entypo-webfont.eot?#iefix') format('embedded-opentype'), |
| 560 | + url('../fonts/entypo-webfont.woff') format('woff'), |
| 561 | + url('../fonts/entypo-webfont.ttf') format('truetype'), |
| 562 | + url('../fonts/entypo-webfont.svg#EntypoRegular') format('svg'); |
| 563 | + font-weight: normal; |
| 564 | + font-style: normal; |
| 565 | +} |
| 566 | + |
| 567 | + |
| 568 | h1.centered { |
| 569 | text-align: center; |
| 570 | } |
| 571 | @@ -192,30 +209,6 @@ |
| 572 | display: inline; |
| 573 | } |
| 574 | |
| 575 | -.message .content-shim { |
| 576 | - margin: 0px; /* buffer the bulb in */ |
| 577 | - padding: 5px; /* un-suck the text */ |
| 578 | - background-repeat: no-repeat; |
| 579 | - background-image: url(../img/infobox-icon.png); |
| 580 | - padding-left: 30px; /* infobox icon is 22x22 */ |
| 581 | -} |
| 582 | - |
| 583 | -.message { |
| 584 | - width: 70%; |
| 585 | - margin-left: auto; |
| 586 | - margin-right: auto; |
| 587 | - background-color: #FFFFB6; |
| 588 | - border-radius: 0px; |
| 589 | - box-shadow: 0px 1px 1px #FFE4B6; |
| 590 | -} |
| 591 | - |
| 592 | -.message { /* noncss 3. XXX: remove me in 20 years. */ |
| 593 | - -webkit-border-radius: 8px; |
| 594 | - -moz-border-radius: 8px; |
| 595 | - -moz-box-shadow: 0px 0px 1px #FFE4B6; |
| 596 | - -webkit-box-shadow: 0px 0px 1px #FFE4B6; |
| 597 | -} |
| 598 | - |
| 599 | /* UI Errors ( To yell at the user when they don't fill out a form ) */ |
| 600 | |
| 601 | /* |
| 602 | @@ -472,12 +465,43 @@ |
| 603 | } |
| 604 | */ |
| 605 | |
| 606 | +h3.attendees-title { |
| 607 | + display: inline-block; |
| 608 | + font-size: 12px; |
| 609 | + font-weight: bold; |
| 610 | + margin: 0; |
| 611 | + max-width: 200px; |
| 612 | + overflow: hidden; |
| 613 | + text-overflow: ellipsis; |
| 614 | + vertical-align: middle; |
| 615 | + white-space: nowrap; |
| 616 | + text-transform: uppercase; |
| 617 | + margin-top: 10px; |
| 618 | +} |
| 619 | +ul.attendees { |
| 620 | + margin: 0; |
| 621 | + padding: 0; |
| 622 | +} |
| 623 | + |
| 624 | .attendee-cell { |
| 625 | - padding-top:10px; |
| 626 | + height: 32px; |
| 627 | + list-style-type: none; |
| 628 | + margin: 0; |
| 629 | + padding: 0; |
| 630 | + margin-top: 10px; |
| 631 | } |
| 632 | |
| 633 | .attendee-mugshot { |
| 634 | - vertical-align: middle; |
| 635 | + cursor: pointer; |
| 636 | + float: left; |
| 637 | + height: 32px; |
| 638 | + margin-right: 10px; |
| 639 | + width: 32px; |
| 640 | +} |
| 641 | + |
| 642 | +.attendee-infos { |
| 643 | + height: 32px; |
| 644 | + float: left; |
| 645 | } |
| 646 | |
| 647 | .agenda-list { |
| 648 | @@ -647,11 +671,6 @@ |
| 649 | width: 300px; |
| 650 | } |
| 651 | |
| 652 | -.map { |
| 653 | - min-height: 170px; |
| 654 | - width: 250px; |
| 655 | -} |
| 656 | - |
| 657 | /* Blog Styling */ |
| 658 | article.blog-entry { |
| 659 | border: 1px solid #DFDCD9; |
| 660 | @@ -725,10 +744,317 @@ |
| 661 | } |
| 662 | |
| 663 | .rsvp-link { |
| 664 | - font-size: 0.8em; |
| 665 | - font-weight: bold; |
| 666 | + margin: 0 auto; |
| 667 | + margin-top: 10px!important; |
| 668 | + width: 185px; |
| 669 | } |
| 670 | |
| 671 | table.side-table { |
| 672 | width: 280px; |
| 673 | } |
| 674 | + |
| 675 | + |
| 676 | +/* Comments */ |
| 677 | + |
| 678 | +h3.comments-nbr { |
| 679 | + margin: 0 0 10px 20px; |
| 680 | +} |
| 681 | +ol.comments { |
| 682 | + list-style: none; |
| 683 | + width: 100%; |
| 684 | + margin: 0; |
| 685 | + padding: 0; |
| 686 | + margin-bottom: 10px; |
| 687 | +} |
| 688 | + |
| 689 | +ol.comments::after { |
| 690 | + content: ''!important; |
| 691 | +} |
| 692 | + |
| 693 | +ol.comments li { |
| 694 | + position: relative; |
| 695 | + overflow: auto; |
| 696 | +} |
| 697 | + |
| 698 | +ol.comments li.response { |
| 699 | + float: none; |
| 700 | + width: auto; |
| 701 | + margin: 0; |
| 702 | + padding: 20px 20px 0 20px; |
| 703 | + font-size: 1em; |
| 704 | + line-height: 1.4em; |
| 705 | + color: #555; |
| 706 | + border-top: 1px dotted rgba(0, 0, 0, 0.2); |
| 707 | +} |
| 708 | + |
| 709 | +ol.comments li:last-child { |
| 710 | + border-bottom: none; |
| 711 | +} |
| 712 | + |
| 713 | +ol.comments li div.mugshot { |
| 714 | + float: left; |
| 715 | + width: 50px; |
| 716 | +} |
| 717 | + |
| 718 | +ol.comments li div.mugshot img { |
| 719 | + float: left; |
| 720 | + width: 50px; |
| 721 | + margin: 3px 10px 0 0; |
| 722 | + -webkit-border-radius: 4px; |
| 723 | + -moz-border-radius: 4px; |
| 724 | + border-radius: 4px; |
| 725 | +} |
| 726 | + |
| 727 | +ol.comments li div.mugshot a:hover img { |
| 728 | + opacity: .8; |
| 729 | +} |
| 730 | + |
| 731 | +ol.comments li div.comment-body { |
| 732 | + width: 595px; |
| 733 | + margin: 0; |
| 734 | + margin-left: 10px; |
| 735 | + overflow: hidden; |
| 736 | + font-size: 12px; |
| 737 | + float: left; |
| 738 | +} |
| 739 | + |
| 740 | +ol.comments li div.comment-body div { |
| 741 | + margin: 0; |
| 742 | + padding: 0; |
| 743 | +} |
| 744 | + |
| 745 | +ol.comments li form { |
| 746 | + width: 515px; |
| 747 | +} |
| 748 | + |
| 749 | +ol.comments li div.comment-error{ |
| 750 | + padding: 5px!important; |
| 751 | + background-color:#ffebe8; |
| 752 | + border:1px solid #dd3c10 |
| 753 | +} |
| 754 | + |
| 755 | +ol.comments li form textarea.edit { |
| 756 | + width: 490px; |
| 757 | + max-width: 490px; |
| 758 | + margin-right: 0; |
| 759 | +} |
| 760 | + |
| 761 | +ol.comments li div.comment-comment a.save { |
| 762 | + background: url('../images/bg_btn.png') center 0 repeat-x #DD4814; |
| 763 | + padding: 5px 10px 7px 10px; |
| 764 | + color: white !important; |
| 765 | + -moz-border-radius: 4px; |
| 766 | + -webkit-border-radius: 4px; |
| 767 | + border-radius: 4px; |
| 768 | + font-size: 13px; |
| 769 | + text-shadow: none; |
| 770 | +} |
| 771 | + |
| 772 | +ol.comments li a.posted:hover { |
| 773 | + text-decoration: none; |
| 774 | + color: #777777; |
| 775 | + |
| 776 | +} |
| 777 | + |
| 778 | +ol.comments li p.comment-meta { |
| 779 | + margin: 10px 0 15px 0; |
| 780 | + padding: 0; |
| 781 | + line-height: 1; |
| 782 | + color: #ccc; |
| 783 | +} |
| 784 | + |
| 785 | +ol.comments li p.comment-meta a { |
| 786 | + color: #999999; |
| 787 | + font-size: 12px; |
| 788 | + font-style: italic; |
| 789 | +} |
| 790 | + |
| 791 | +ol.comments li p.comment-meta a:hover { |
| 792 | + color: #666; |
| 793 | +} |
| 794 | + |
| 795 | +ol.comments li p.comment-meta span.sep { |
| 796 | + margin: 0 3px; |
| 797 | +} |
| 798 | + |
| 799 | +.comment-form { |
| 800 | + overflow: auto; |
| 801 | + margin: 0 20px 20px 20px; |
| 802 | +} |
| 803 | + |
| 804 | +.comment-form div.mugshot { |
| 805 | + float: left; |
| 806 | + width: 50px; |
| 807 | +} |
| 808 | + |
| 809 | +.comment-form div.mugshot img { |
| 810 | + float: left; |
| 811 | + width: 50px; |
| 812 | + margin: 5px 10px 0 0; |
| 813 | + -webkit-border-radius: 4px; |
| 814 | + -moz-border-radius: 4px; |
| 815 | + border-radius: 4px; |
| 816 | +} |
| 817 | + |
| 818 | +.comment-form div.mugshot a:hover img { |
| 819 | + opacity: .8; |
| 820 | +} |
| 821 | + |
| 822 | +.comment-form form { |
| 823 | + width: 597px; |
| 824 | + margin: 4px 0 0 10px; |
| 825 | + overflow: hidden; |
| 826 | + font-size: 12px; |
| 827 | + float: left; |
| 828 | +} |
| 829 | + |
| 830 | + |
| 831 | +#id_comment { |
| 832 | + width: 450px!important; |
| 833 | + max-width: 600px!important; |
| 834 | +} |
| 835 | + |
| 836 | +.submit-button { |
| 837 | + background: transparent url(../images/bg_btn.png) repeat-x top left !important; |
| 838 | + -webkit-border-radius: 4px!important; |
| 839 | + -moz-border-radius: 4px!important; |
| 840 | + border-radius: 4px!important; |
| 841 | + cursor: default; |
| 842 | + font-size: 14px!important; |
| 843 | + text-align: center; |
| 844 | + white-space: nowrap; |
| 845 | + margin-right: 16px; |
| 846 | + margin-top: 0; |
| 847 | + height: 27px; |
| 848 | + line-height: 27px; |
| 849 | + min-width: 54px; |
| 850 | + outline: 0; |
| 851 | + padding: 0 8px!important; |
| 852 | + color: white; |
| 853 | + text-shadow: 0 1px rgba(0, 0, 0, 0.1); |
| 854 | + color: white!important; |
| 855 | + display: block; |
| 856 | +} |
| 857 | + |
| 858 | + |
| 859 | +.message { |
| 860 | + background-color: #FFE99A; |
| 861 | + color: #A28348; |
| 862 | + position: relative; |
| 863 | + margin-bottom: 20px; |
| 864 | + border: 1px solid #F1D982; |
| 865 | + border-radius: 3px; |
| 866 | + -moz-border-radius: 3px; |
| 867 | + -webkit-border-radius: 3px; |
| 868 | + padding: 10px; |
| 869 | + width: 500px; |
| 870 | + margin: 0 auto; |
| 871 | + margin-bottom: 10px; |
| 872 | +} |
| 873 | + |
| 874 | +/* Event detail */ |
| 875 | + |
| 876 | +.pagelet h3{ |
| 877 | + margin-bottom: 0; |
| 878 | +} |
| 879 | + |
| 880 | +.event-partofglobal-event { |
| 881 | + line-height: 22px; |
| 882 | + font-size: 12px; |
| 883 | + font-style: italic; |
| 884 | + margin-bottom: 5px; |
| 885 | +} |
| 886 | + |
| 887 | +.map { |
| 888 | + border: 1px solid #dedede; |
| 889 | + background: #fafafa; |
| 890 | + padding: 5px; |
| 891 | + margin: 0 20px 0 20px; |
| 892 | + border-radius: 2px; |
| 893 | + -webkit-border-radius: 2px; |
| 894 | + -moz-border-radius: 2px; |
| 895 | +} |
| 896 | + |
| 897 | +.map_img { |
| 898 | + width: 642px; |
| 899 | + border: 1px solid #dedede; |
| 900 | +} |
| 901 | + |
| 902 | +.box_content { |
| 903 | + -moz-border-radius: 4px; |
| 904 | + -webkit-border-radius: 4px; |
| 905 | + border-radius: 4px; |
| 906 | + border: 1px solid #AEA79F; |
| 907 | + padding: 0; |
| 908 | + background: white; |
| 909 | +} |
| 910 | + |
| 911 | +.sidebar-inner { |
| 912 | + padding: 10px; |
| 913 | +} |
| 914 | + |
| 915 | +.pagelet { |
| 916 | + padding: 17px 20px 5px 20px; |
| 917 | + position: relative; |
| 918 | +} |
| 919 | + |
| 920 | +.event-venue { |
| 921 | + padding: 5px 20px 5px 20px; |
| 922 | +} |
| 923 | + |
| 924 | +.event-venue .event-venue-name { |
| 925 | + line-height: 22px; |
| 926 | +} |
| 927 | + |
| 928 | + |
| 929 | +.event-venue .event-venue-city { |
| 930 | + line-height: 22px; |
| 931 | +} |
| 932 | + |
| 933 | +.event-venue .event-venue-adress { |
| 934 | + line-height: 22px; |
| 935 | +} |
| 936 | + |
| 937 | +.event-infos { |
| 938 | + padding: 5px 20px 5px 20px; |
| 939 | + width: 350px; |
| 940 | + float: left; |
| 941 | +} |
| 942 | + |
| 943 | +/* Pictos */ |
| 944 | + |
| 945 | +.pictogram { |
| 946 | + font-family: 'EntypoRegular'; |
| 947 | + font-size: 35px; |
| 948 | + position: relative; |
| 949 | + color: #1a3d51; |
| 950 | + margin: 4px 5px 0 0; |
| 951 | + width: 10px; |
| 952 | + height: 10px; |
| 953 | +} |
| 954 | + |
| 955 | +.pictogram-l { |
| 956 | + position: relative; |
| 957 | + top: -3px; |
| 958 | +} |
| 959 | + |
| 960 | +.team:after { content: ","; } |
| 961 | +.link:after { content: ";"; } |
| 962 | +.calendar:after { content: "P"; } |
| 963 | +.rss:after { content: "S"; } |
| 964 | +.tags:after { content: "C"; } |
| 965 | +.comments:after { content: "9"; } |
| 966 | +.place:after { content: "0"; } |
| 967 | +.personne:after { content: "+"; } |
| 968 | +.announcement:after { content: "K"} |
| 969 | +.geo:after { content: "2"; font-size: 75px;} |
| 970 | + |
| 971 | +.share .fb-like { |
| 972 | + position: relative; |
| 973 | + top: -2px; |
| 974 | +} |
| 975 | + |
| 976 | + |
| 977 | +.highlight{ |
| 978 | + background: #FFE99A; |
| 979 | +} |
| 980 | \ No newline at end of file |
| 981 | |
| 982 | === added directory 'loco_directory/media/fonts' |
| 983 | === added file 'loco_directory/media/fonts/entypo-webfont.eot' |
| 984 | Binary files loco_directory/media/fonts/entypo-webfont.eot 1970-01-01 00:00:00 +0000 and loco_directory/media/fonts/entypo-webfont.eot 2012-10-30 12:31:21 +0000 differ |
| 985 | === added file 'loco_directory/media/fonts/entypo-webfont.svg' |
| 986 | --- loco_directory/media/fonts/entypo-webfont.svg 1970-01-01 00:00:00 +0000 |
| 987 | +++ loco_directory/media/fonts/entypo-webfont.svg 2012-10-30 12:31:21 +0000 |
| 988 | @@ -0,0 +1,198 @@ |
| 989 | +<?xml version="1.0" standalone="no"?> |
| 990 | +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > |
| 991 | +<svg xmlns="http://www.w3.org/2000/svg"> |
| 992 | +<metadata> |
| 993 | +This is a custom SVG webfont generated by Font Squirrel. |
| 994 | +Copyright : Creative Commons CC BYSA 2012 |
| 995 | +Designer : Daniel Bruce |
| 996 | +Foundry : Daniel Bruce |
| 997 | +Foundry URL : wwwdanielbrucese |
| 998 | +</metadata> |
| 999 | +<defs> |
| 1000 | +<font id="EntypoRegular" horiz-adv-x="1228" > |
| 1001 | +<font-face units-per-em="2048" ascent="1536" descent="-512" /> |
| 1002 | +<missing-glyph horiz-adv-x="1024" /> |
| 1003 | +<glyph unicode=" " horiz-adv-x="1024" /> |
| 1004 | +<glyph unicode="	" horiz-adv-x="1024" /> |
| 1005 | +<glyph unicode=" " horiz-adv-x="1024" /> |
| 1006 | +<glyph unicode="!" horiz-adv-x="972" d="M103 246q1 10 2 28.5t14.5 35t36.5 34.5q39 31 67.5 44t52 4t33.5 -17t37 -37q43 -43 198.5 114.5t114.5 198.5q-49 49 -55 74q-8 43 49 117q18 23 36 37t35 15t28.5 1t29 -12.5t23.5 -17.5t24.5 -24.5t20.5 -21.5q47 -47 -6 -186t-196.5 -282.5t-283 -196t-186.5 -4.5 l-20 18q-20 20 -24.5 25.5t-18 24t-12.5 28.5z" /> |
| 1007 | +<glyph unicode=""" horiz-adv-x="798" d="M102 113v798q0 41 31 72t72 31h389q43 0 72.5 -31t29.5 -72v-798q0 -43 -29.5 -73t-72.5 -30h-389q-41 0 -72 30t-31 73zM184 205h430v676h-430v-676zM328 102.5q0 -20.5 21.5 -36t49.5 -15.5q31 0 51.5 14.5t20.5 37t-20.5 37t-51.5 14.5q-29 0 -50 -15.5t-21 -36z" /> |
| 1008 | +<glyph unicode="#" horiz-adv-x="780" d="M109 971q-18 31 14 49q33 16 47 -16l102 -197q82 23 158 -16t102 -119l136 -385q27 -82 -19.5 -162t-140.5 -113q-96 -29 -179 8t-106 119l-110 396q-20 68 6 136t88 107zM244 614.5q8 -28.5 34.5 -43t55.5 -4.5q27 10 41 37t4 53q-8 29 -34 43.5t-54 4.5q-27 -8 -41 -35 t-6 -55.5z" /> |
| 1009 | +<glyph unicode="$" d="M102 639q0 10 11 18l120 82q8 8 27 13q14 6 29 6h182v194q0 20 21 21h45q20 0 20 -21v-880q0 -20 -20 -21h-45q-20 0 -21 21v450h-182q-8 0 -29 4q-20 8 -27 13l-120 84q-11 4 -11 16zM588 860h350q12 0 29 -6q18 -4 26 -12l121 -82q12 -10 12 -19q0 -10 -12 -16 l-121 -84q-6 -4 -26 -12q-20 -4 -29 -4h-309z" /> |
| 1010 | +<glyph unicode="%" horiz-adv-x="1128" d="M104 264v375q0 12 1 14t18 -2q23 -12 202 -106t193 -101q20 -10 47 -10q25 0 45 10q14 6 193.5 100.5t202.5 106.5q20 10 20 -12v-375q0 -16 -17.5 -32.5t-33.5 -16.5h-821q-16 0 -33 16.5t-17 32.5zM106.5 797.5q4.5 11.5 24.5 11.5h866q20 0 24.5 -11.5t-4.5 -24.5 t-22 -19q-373 -201 -385 -207q-20 -10 -45 -10q-27 0 -47 10q-12 6 -385 207q-12 6 -21.5 19t-5 24.5z" /> |
| 1011 | +<glyph unicode="&" horiz-adv-x="1005" d="M102 113l52 243l297 295l258 260q55 10 129 -63q72 -72 63 -129l-258 -258l-297 -297zM166 258q33 -18 47 -35q23 -23 37 -47l82 19l24 22q-2 45 -51 96q-23 23 -47.5 36t-36.5 16l-14 2l-23 -25z" /> |
| 1012 | +<glyph unicode="'" horiz-adv-x="1165" d="M104 252q-2 98 84 197q37 35 236 234.5t272 270.5q82 82 181 56q45 -12 79.5 -47t47.5 -82q27 -98 -54 -179l-485 -485q-43 -45 -90 -47q-49 -6 -82 27q-31 25 -28 76t46 96l342 340q27 27 49 0q27 -25 0 -52l-340 -340q-45 -45 -20 -69q8 -8 25 -8q20 2 47 26l485 486 q51 53 35 110q-14 61 -78 78q-57 16 -108 -35l-508 -508q-66 -76 -64 -144.5t53 -119.5q49 -51 119 -53t146 63l505 508q25 25 51.5 0.5t0.5 -51.5l-508 -508q-84 -84 -189 -84q-102 0 -176 74q-72 72 -74 170z" /> |
| 1013 | +<glyph unicode="(" horiz-adv-x="1126" d="M102 528l369 332v-198q317 0 483 -312q51 -100 70 -186q-88 156 -214 201t-339 45v-224z" /> |
| 1014 | +<glyph unicode=")" d="M102 530l371 330v-137l-217 -193l217 -200v-144zM358 530l371 330v-198q106 0 186 -51.5t118 -124t61.5 -146.5t27.5 -125l4 -51q-88 158 -172 202t-225 44v-224z" /> |
| 1015 | +<glyph unicode="*" horiz-adv-x="1126" d="M102 164q4 20 13.5 54t51.5 119t98.5 150.5t159.5 120t230 54.5v198l369 -330l-369 -344v224q-213 0 -339 -45t-214 -201z" /> |
| 1016 | +<glyph unicode="+" horiz-adv-x="1167" d="M102 51v109q0 47 209 125q96 35 132 69.5t36 98.5q0 23 -23.5 49t-31.5 76q-2 12 -23.5 24t-25.5 62q0 16 5 26t9 15l6 2q-10 51 -14 90q-4 55 42 115.5t160.5 60.5t162 -60.5t42.5 -115.5l-14 -90q18 -8 19 -43q-2 -29 -9.5 -44.5t-14.5 -17.5t-14 -7t-10 -17 q-8 -49 -31.5 -76t-23.5 -49q0 -63 36 -98.5t130 -69.5q209 -78 209 -125v-109h-481h-482z" /> |
| 1017 | +<glyph unicode="," d="M102 76v180q0 45 88 80q76 31 105 61.5t29 85.5q0 20 -18.5 45t-26.5 68q-2 10 -18.5 21.5t-20.5 54.5q0 14 4 23.5t8 13.5l4 2q-8 45 -10 80q-4 49 32.5 102t129 53t130 -53t33.5 -102l-10 -80q14 -8 14 -39q-2 -27 -7 -40.5t-11 -14.5t-11 -6t-7 -15 q-8 -43 -26.5 -67.5t-18.5 -45.5q0 -55 28.5 -85.5t104.5 -61.5q188 -76 188 -125v-135h-713zM688 616q0 10 3 17.5t5 9.5l4 2q-6 33 -8 60q-2 37 25.5 76.5t97.5 39.5q68 0 96.5 -40t26.5 -76l-8 -60q10 -6 10 -29q-2 -33 -14.5 -41t-14.5 -16q-6 -33 -19 -51.5t-13 -32.5 q0 -41 21.5 -65.5t78.5 -47.5q113 -45 135 -79q4 -8 7 -59.5t5 -100.5v-47h-229v147q0 53 -30.5 80t-157.5 88q43 31 43 84q0 14 -14.5 32.5t-20.5 51.5q-2 8 -14.5 16t-14.5 41z" /> |
| 1018 | +<glyph unicode="-" d="M102 51v205q18 8 48 17.5t34 11.5q96 35 132 69.5t36 98.5q0 23 -23.5 49t-31.5 76q-2 12 -23.5 24t-25.5 62q0 16 5 26t9 15l6 2q-10 51 -14 90q-4 55 43 115.5t164 60.5q115 0 162 -60.5t43 -115.5l-15 -90q20 -8 21 -43q-4 -49 -25.5 -61.5t-23.5 -24.5 q-8 -49 -32 -76t-24 -49q0 -63 36 -98.5t132 -69.5q186 -70 187 -125v-109h-820zM717 461v102h153v154h103v-154h153v-102h-153v-154h-103v154h-153z" /> |
| 1019 | +<glyph unicode="." d="M102 205v614q0 41 30 72t73 31h819q41 0 71.5 -31t30.5 -72v-614q0 -43 -30.5 -73t-71.5 -30h-819q-43 0 -73 30t-30 73zM205 205h819v614h-819v-614zM307 311v92h256v-92h-256zM307 465v92h256v-92h-256zM307 618v93h256v-93h-256zM666 311q0 72 4 72q88 25 88 68 q0 16 -29 57t-29 90q0 113 93 113q51 0 71.5 -28t20.5 -85q0 -49 -28 -90t-28 -57q0 -18 21.5 -36t42.5 -26l22 -6l7 -72h-256z" /> |
| 1020 | +<glyph unicode="/" d="M102 164v563q0 23 14.5 37t37.5 14h295q-33 -25 -62 -50.5t-39 -39.5l-12 -12h-131v-461h665v55l103 86v-192q0 -20 -15.5 -35.5t-35.5 -15.5h-768q-23 0 -37.5 15.5t-14.5 35.5zM373 342q0 8 1 23.5t9 57.5t22.5 81t45 86t72.5 81t110.5 57.5t152.5 23.5v159l340 -256 l-340 -266v182q-170 0 -248.5 -43t-164.5 -186z" /> |
| 1021 | +<glyph unicode="0" horiz-adv-x="716" d="M102 666q0 106 75 181t181.5 75t181 -75t74.5 -181q0 -211 -223 -519l-33 -45q-10 12 -27.5 36t-61.5 91.5t-77.5 133t-61.5 150.5t-28 153zM219 662q0 -57 41 -97.5t98.5 -40.5t97.5 40t40 97.5t-40 98.5t-98 41q-59 0 -99 -40t-40 -99z" /> |
| 1022 | +<glyph unicode="1" d="M102 137v600q0 18 17 29l239 152q18 10 35 0l221 -140l224 140q18 10 34 0l240 -152q14 -10 14 -29v-600q0 -20 -16 -31q-8 -4 -16.5 -4t-16.5 4l-223 140l-221 -140q-18 -10 -35 0l-221 140l-223 -140q-16 -10 -33 0q-19 11 -19 31zM170 199l172 108v518l-172 -108v-518 zM410 307l172 -108v518l-172 108v-518zM649 199l172 108v518l-172 -108v-518zM889 307l172 -108v518l-172 108v-518z" /> |
| 1023 | +<glyph unicode="2" horiz-adv-x="1191" d="M104 506q-2 203 139.5 348t344.5 150q205 2 350 -139.5t149 -346.5q2 -203 -140 -349t-345 -149q-205 -4 -350.5 138.5t-147.5 347.5zM207 506q4 -160 117.5 -272.5t275.5 -110.5t273.5 117.5t109.5 275.5q-2 162 -116.5 273.5t-276.5 109.5t-273.5 -116.5t-109.5 -276.5 zM362 281q4 27 12.5 68.5t42.5 131.5t77 133q45 45 128 78t144 45l61 11q-4 -27 -11 -69t-41 -132t-79 -133q-45 -45 -128 -78t-144 -45zM524 514q0 -31 20.5 -51.5t50.5 -20.5t50 21q53 53 90 192q-137 -37 -190 -90q-21 -20 -21 -51z" /> |
| 1024 | +<glyph unicode="3" horiz-adv-x="1085" d="M102 516q453 254 711 379q23 10 50.5 25.5t38.5 20.5t26.5 9t24 1t16.5 -11t11 -17.5t-1 -23.5t-9 -25.5t-20.5 -40t-25.5 -49.5q-55 -115 -149.5 -293t-160.5 -298l-67 -121l-58 389zM565 553l29 -238l283 525z" /> |
| 1025 | +<glyph unicode="4" horiz-adv-x="1085" d="M102 512q0 182 129 311t311.5 129t311.5 -129t129 -311t-129 -311t-311.5 -129t-311.5 129t-129 311zM184 475q14 -127 104.5 -217t217.5 -102v196h72v-196q127 12 217 102t104 217h-199v72h199q-14 127 -104 218t-217 103v-198h-72v198q-127 -12 -217 -103t-105 -218 h199v-72h-199z" /> |
| 1026 | +<glyph unicode="5" horiz-adv-x="1024" d="M102 512q0 63 45.5 108.5t108.5 45.5q53 0 92 -33l268 162q-2 8 -2 24q0 63 45.5 108.5t108.5 45.5t108.5 -45t45.5 -108.5t-45.5 -108.5t-108.5 -45q-49 0 -94 30l-268 -159q4 -16 4 -24.5t-4 -25.5l268 -161q43 33 94 32q63 0 108.5 -45t45.5 -108.5t-45.5 -108.5 t-108.5 -45t-108.5 45t-45.5 109q0 16 2 24l-268 160q-41 -31 -92 -31q-63 0 -108.5 45.5t-45.5 108.5z" /> |
| 1027 | +<glyph unicode="6" horiz-adv-x="1089" d="M104 651q0 94 72 160q66 57 156 57t153 -57l60 -53l57 53q66 57 156 57t155 -57q72 -66 72 -160t-72 -159l-368 -338l-369 338q-72 65 -72 159z" /> |
| 1028 | +<glyph unicode="7" horiz-adv-x="1105" d="M102 618h328l123 345l121 -345h330l-269 -202l94 -355l-276 213l-279 -213l95 355z" /> |
| 1029 | +<glyph unicode="8" horiz-adv-x="1126" d="M102 227v316q0 45 43 45h162v-410h-160q-45 0 -45 49zM358 178v410h17q57 0 128.5 75.5t90.5 133.5q6 23 8 66.5t12.5 63t38.5 19.5q74 0 74 -141l-10 -160q129 4 188 4q119 0 119 -149v-246q0 -61 -72.5 -119.5t-152.5 -58.5h-215q-51 0 -109 51t-117 51z" /> |
| 1030 | +<glyph unicode="9" d="M102 307v307q0 41 31 72t72 31h194v-318h359h10v-92q0 -43 -29.5 -72.5t-72.5 -29.5h-256l-154 -154v154h-51q-41 0 -72 29.5t-31 72.5zM461 461v409q0 41 30.5 72t71.5 31h461q43 0 72.5 -31t29.5 -72v-307q0 -43 -29.5 -72.5t-72.5 -29.5h-51v-154l-154 154h-358z" /> |
| 1031 | +<glyph unicode=":" horiz-adv-x="1024" d="M102 410v358q0 41 30 71.5t73 30.5h614q41 0 72 -30.5t31 -71.5v-358q0 -43 -31 -73t-72 -30h-205v-153l-204 153h-205q-43 0 -73 30t-30 73z" /> |
| 1032 | +<glyph unicode=";" horiz-adv-x="983" d="M102 174v72q115 0 185 110q55 88 26 150q-16 37 -63 37q-61 0 -104.5 45t-43.5 108.5t43 108.5t105 45q150 0 188 -150q39 -143 -41 -309q-82 -172 -227 -209q-33 -8 -68 -8zM532 174v72q115 0 185 110q55 88 26 150q-16 37 -63 37q-61 0 -104.5 45t-43.5 108.5t43 108.5 t105 45q150 0 188 -150q39 -143 -41 -309q-82 -172 -227 -209q-33 -8 -68 -8z" /> |
| 1033 | +<glyph unicode="<" horiz-adv-x="1208" d="M102 393v180q0 23 17.5 42.5t38.5 19.5h891q20 0 38.5 -19.5t18.5 -42.5v-180q0 -20 -18.5 -40.5t-38.5 -20.5h-101l45 -256h-778l45 256h-102q-20 0 -38 20.5t-18 40.5zM146.5 716q3.5 9 11.5 11q23 10 104.5 38t99.5 28h48v153h389v-153h45q18 0 100 -28t105 -38 q8 -2 11 -11t-3 -17.5t-19 -8.5h-870q-12 0 -18.5 8.5t-3 17.5zM317 178h574l-72 334h-430z" /> |
| 1034 | +<glyph unicode="=" horiz-adv-x="1026" d="M105.5 672.5q9.5 109.5 113.5 197.5q18 14 24.5 29.5t6.5 25t6 19.5t25 17q27 10 48 -10.5t54 -20.5q135 2 204.5 -67.5t164.5 -274.5q16 -35 40.5 -53.5t46 -22.5t45 -23.5t36.5 -56.5q23 -63 -77 -164.5t-259 -161.5q-168 -57 -303.5 -44.5t-157.5 75.5 q-20 57 12.5 115.5t18.5 114.5q-58 196 -48.5 305.5zM193 164q4 -12 51 -23.5t137 -5.5t180 39t163 87t101.5 93t24.5 54q-6 20 -48 31.5t-128 1t-190.5 -49.5t-177.5 -88t-96 -85t-17 -54zM274 231q82 72 224 121q8 4 39 15v-2q14 -41 -18 -84t-89 -64q-99 -39 -156 14z " /> |
| 1035 | +<glyph unicode=">" horiz-adv-x="1024" d="M102 295q0 78 58 135l153 152q72 72 147 81t130 -47q16 -14 16 -34.5t-16 -36.5q-14 -16 -36 -16.5t-36 16.5q-49 49 -133 -35l-154 -152q-27 -27 -26 -63q0 -35 26 -66q27 -27 66 -26.5t65 26.5l41 43q37 33 72 -2q16 -14 16.5 -35.5t-16.5 -35.5l-41 -41 q-57 -55 -137 -55.5t-137 55.5q-58 57 -58 137zM436 401q-35 37 0 72q14 14 35 14t37 -14q49 -49 123 25l164 161q27 27 26 64q0 35 -26 65q-68 61 -121 9l-51 -52q-37 -33 -72 3q-14 14 -14 34.5t14 36.5l51 51q55 53 130 50.5t134 -60.5q55 -55 56 -137q0 -80 -56 -135 l-164 -162q-76 -76 -153 -76q-64 0 -113 51z" /> |
| 1036 | +<glyph unicode="?" horiz-adv-x="1126" d="M102 815l95 33q92 68 155.5 88t99 4t64.5 -51t63.5 -73t81 -63.5t132.5 -20.5t204 52q14 6 22.5 -1t0.5 -19q-98 -141 -169 -218t-114 -92.5t-73.5 -2t-61.5 38t-65.5 40t-95 -4t-140.5 -87.5l92 -362h-104z" /> |
| 1037 | +<glyph unicode="@" horiz-adv-x="1064" d="M102 377q82 47 82 135q0 78 -82 125q12 43 35 86q76 -18 139 45q55 55 35 139q43 23 84 35q51 -82 137 -82q84 0 136 82q41 -12 84 -35q-20 -84 34 -139q63 -63 140 -45q20 -39 37 -86q-84 -47 -84 -125t84 -125q-16 -47 -37 -86q-76 18 -140 -45q-55 -59 -34 -139 q-43 -23 -84 -35q-51 82 -136 82q-86 0 -137 -82q-41 12 -84 35q20 80 -35 139q-55 55 -139 35q-23 43 -35 86zM344 512q0 -78 55.5 -132t133 -54t132 54t54.5 132t-54.5 132t-132 54t-133 -54t-55.5 -132z" /> |
| 1038 | +<glyph unicode="A" horiz-adv-x="1128" d="M109 183q-5 16 -5 29q0 19 11 30l417 417q-2 18 -2 37q0 30 7 61q10 48 26 64l137 137q13 15 40 16q23 0 56 -11q71 -25 132 -86q63 -63 88 -135q11 -33 11 -55q0 -26 -15 -38l-140 -139q-16 -16 -63 -27q-29 -6 -61 -6q-19 0 -37 2l-418 -418q-11 -11 -28 -10 q-13 0 -29 5q-39 13 -76 50q-39 37 -51 77zM458 487q0 -17 11 -28q13 -13 30 -14q24 0 54 28q20 20 23.5 44t-11 38t-38 10t-44.5 -24q-25 -25 -25 -54zM737 921.5q-2 -1.5 -2 -7.5q0 -7 3 -21q5 -25 25.5 -62.5t51.5 -68.5q29 -29 68 -49.5t63 -25.5q14 -3 21 -3q6 0 8 2 q2 1 1 5q0 7 -3 22q-6 25 -27.5 62.5t-50.5 66.5q-31 31 -69 51t-61 27q-14 4 -21 3q-5 0 -7 -1.5z" /> |
| 1039 | +<glyph unicode="B" horiz-adv-x="1126" d="M102 852q0 16 10.5 26.5t26.5 10.5h176q51 94 248 94q199 0 250 -94h176q14 0 24.5 -11.5t10.5 -25.5q0 -78 -21.5 -140.5t-64.5 -109.5t-76 -73.5t-90 -63.5q-80 -53 -113.5 -89t-33.5 -87v-68q74 -8 121 -31.5t47 -56.5q0 -39 -67 -65.5t-163 -26.5q-94 0 -160.5 26.5 t-66.5 65.5q0 33 47 56.5t121 31.5v68q0 51 -34 86t-116 90q-57 39 -89 63.5t-76 72.5t-65.5 110.5t-21.5 140.5zM176 817q8 -94 55.5 -153.5t128.5 -116.5q-49 106 -55 270h-129zM369 841.5q0 -12.5 18.5 -29.5t65.5 -32.5t110 -15.5q66 0 113 15.5t64.5 32.5t17.5 29.5 t-17.5 30t-64.5 33t-113 15.5q-63 0 -110 -15.5t-65.5 -33t-18.5 -30zM766 547q82 55 129 115.5t55 154.5h-129q-2 -157 -55 -270z" /> |
| 1040 | +<glyph unicode="C" horiz-adv-x="1189" d="M104 368q4 22 21 33l477 338q25 16 55 17l162 2q31 -4 47 -27l29 -41q132 98 132 216q0 37 -13 77q-10 29 18 39q8 3 14 3q18 0 25 -21q16 -48 16 -94q0 -57 -25 -110q-46 -95 -132 -161l18 -27q16 -23 8 -55l-51 -160q-12 -31 -35 -47l-477 -338q-18 -13 -33 -13 q-17 0 -30 17l-217 314q-9 12 -10 27q0 6 1 11zM723 605q-2 -8 -2 -16q0 -24 14 -44q20 -29 53 -35q8 -1 15 -1q24 0 47 15q34 24 34 65q0 8 -1 17l-31 -18q-4 -2 -14 -2q-20 0 -27 16q-14 27 14 43q2 0 25 12q-24 19 -49 19l-45 -17q-27 -20 -33 -54z" /> |
| 1041 | +<glyph unicode="D" d="M102 205v461q0 41 31 71.5t72 30.5h123q33 0 41 29l32 96q8 29 39 29h348q35 0 41 -29l33 -96q6 -29 39 -29h123q43 0 72.5 -30.5t29.5 -71.5v-461q0 -43 -29.5 -73t-72.5 -30h-819q-41 0 -72 30t-31 73zM358 460.5q0 -106.5 75 -181t181.5 -74.5t181 74.5t74.5 181 t-74.5 181.5t-181 75t-181.5 -75t-75 -181.5zM461 460.5q0 63.5 45 108.5t108.5 45t108.5 -45t45 -108.5t-45 -108.5t-108.5 -45t-108.5 45t-45 108.5zM952 628.5q0 -14.5 11.5 -24.5t26 -10t24.5 10t10 25q0 37 -35 37q-14 0 -25.5 -11.5t-11.5 -26z" /> |
| 1042 | +<glyph unicode="E" horiz-adv-x="1046" d="M102 322q100 -58 216 -59q30 0 62 4q151 19 259.5 128t127.5 259q4 31 4 62q0 115 -58 216q55 -31 98 -74q131 -133 131 -317.5t-131 -317.5q-131 -131 -316.5 -131t-316.5 131q-43 44 -76 99z" /> |
| 1043 | +<glyph unicode="F" horiz-adv-x="1210" d="M104 475q10 121 107.5 241t220.5 156q100 28 196 29q188 0 353 -110q74 -49 104 -114q24 -50 24 -87q0 -11 -2 -21q-9 -43 -36 -49q-16 -4 -55 10q-30 11 -63 12q-9 0 -19 -1q-43 -4 -84 -47q-24 -36 -24 -62q0 -8 2 -14q9 -29 35 -67t26 -52q0 -18 -22.5 -45 t-65.5 -57.5t-123 -52t-178 -21.5q-190 0 -298 102q-98 93 -98 225q-1 12 0 25zM578 389q0 -31 22.5 -53.5t55 -22.5t55 22.5t22.5 53.5q0 33 -22.5 55.5t-55 22.5t-55 -22.5t-22.5 -55.5z" /> |
| 1044 | +<glyph unicode="G" horiz-adv-x="1169" d="M104 180q45 102 132.5 197.5t181.5 157t181 108.5t142 68l58 20q-16 0 -43 -1t-106 -14.5t-152.5 -39t-166.5 -86t-163 -144.5q-4 30 -4 59q0 203 180 308q135 79 347 79q80 0 171 -11q174 -20 203 -52q2 -2 2 -4q0 -3 -4 -6q-78 -41 -133.5 -111.5t-81 -135t-67.5 -134 t-95 -106.5q-73 -52 -175 -52q-96 0 -216 46q-68 -76 -115 -179q-7 -15 -23 -14q-11 0 -26 6q-29 13 -29 31q0 5 2 10z" /> |
| 1045 | +<glyph unicode="H" horiz-adv-x="800" d="M111 115q-7 19 -7 38q0 39 27 79q41 60 119 90q45 17 87 16q39 0 75 -14v669h82q0 -37 31.5 -80t69.5 -79.5t70.5 -89t32.5 -105.5t-43 -129q-20 -33 -26 -14q-2 6 0 14q10 18 7 58t-13.5 80t-45 74t-83.5 42v-547q2 -51 -39 -98t-107 -72q-46 -17 -89 -17q-29 0 -57 8 q-68 20 -91 77z" /> |
| 1046 | +<glyph unicode="I" horiz-adv-x="1087" d="M104 774q-1 6 -1 13q0 30 26 49q8 8 57.5 46t55.5 44q18 16 55 16h494q35 0 57 -16q8 -8 57 -46t56 -44q24 -20 23 -49q0 -6 -1 -13l-98 -663q-10 -29 -41 -29h-600q-31 0 -41 29q-95 636 -99 663zM184 768h721l-114 117h-494zM334 674q49 -283 211 -283q160 0 209 283 h-95q-39 -190 -114 -191q-78 0 -117 191h-94z" /> |
| 1047 | +<glyph unicode="J" d="M102 338l82 174l-82 174h103l114 -102h183l-127 409h102l230 -409h266h16q10 0 37 -4.5t47.5 -11.5t36.5 -21.5t16 -34.5q0 -33 -38.5 -50.5t-75.5 -19.5l-39 -2h-266l-230 -409h-102l127 409h-183l-114 -102h-103z" /> |
| 1048 | +<glyph unicode="K" horiz-adv-x="1150" d="M104 512q0 191 134 328q135 139 329 143h6q191 0 329 -134q140 -136 145 -331v-6q0 -191 -135 -329q-136 -140 -330 -142h-12q-187 0 -323 133q-143 140 -143 338zM211 324l106 63q-29 57 -28.5 125t28.5 125l-106 63q-45 -86 -45 -185q0 -107 45 -191zM350 512 q0 -94 65.5 -159.5t159.5 -65.5q92 0 159 65.5t67 159.5t-66.5 159.5t-159.5 65.5q-94 0 -159.5 -65.5t-65.5 -159.5zM385 147q94 -45 187 -45h8q94 0 184 48l-64 104q-61 -29 -125 -29q-66 0 -126 29zM385 874l64 -104q61 29 126 29q63 0 125 -29l64 104q-90 47 -195 48 q-100 -5 -184 -48zM831 387l107 -63q47 88 47 194q-2 98 -47 182l-107 -63q31 -61 31 -125t-31 -125z" /> |
| 1049 | +<glyph unicode="L" horiz-adv-x="1146" d="M102 352q0 96 54.5 175t142.5 114q12 143 118.5 242.5t254.5 99.5q154 0 263 -109.5t109 -263.5q0 -145 -99 -251.5t-243 -118.5q-35 -88 -113.5 -143.5t-176.5 -55.5q-127 0 -218.5 91t-91.5 220zM102 868q0 43 31 75t76 32q43 0 73.5 -32t30.5 -75q0 -45 -30.5 -75.5 t-73.5 -30.5q-45 0 -76 30.5t-31 75.5zM150 868.5q0 -24.5 17 -42t42 -17.5q23 0 40 17.5t17 42t-17.5 41t-39.5 16.5q-25 0 -42 -16.5t-17 -41zM205 352q0 -86 61.5 -146.5t145.5 -60.5q119 0 180 103q-106 23 -184 99.5t-101 182.5q-102 -61 -102 -178zM416 559 q14 -76 70.5 -131t134.5 -72q-2 82 -61.5 141.5t-143.5 61.5zM416 662q125 0 215 -89.5t92 -216.5q90 16 149.5 89t59.5 165q0 106 -77 183t-183 77q-94 0 -166 -59t-90 -149z" /> |
| 1050 | +<glyph unicode="M" d="M102 512q0 14 20.5 45t64.5 73t101.5 80t144.5 63.5t181.5 25.5t181.5 -25.5t144 -63.5t101 -80t64.5 -73t20.5 -45t-20.5 -45t-64.5 -73t-101 -80t-144 -63.5t-181.5 -25.5t-181.5 25.5t-144.5 63.5t-101.5 80t-64.5 73t-20.5 45zM385 512q0 -92 66.5 -156.5 t162.5 -64.5q94 0 161 64.5t67 156.5q0 90 -66.5 155.5t-161 65.5t-162 -65.5t-67.5 -155.5zM500 512q0 45 33.5 78t80.5 33q14 0 10.5 -24t-12 -48.5t1.5 -38.5q6 -8 36 -3t51.5 11t25.5 -8q0 -45 -32.5 -78t-80 -33t-81 33t-33.5 78z" /> |
| 1051 | +<glyph unicode="N" horiz-adv-x="1146" d="M102 512q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM205 512q0 -152 107.5 -260.5t260.5 -108.5q152 0 260.5 108.5t108.5 260.5t-108.5 260.5t-260.5 108.5q-154 0 -261 -108.5t-107 -260.5zM537 498v280h71v-252 l154 -153l-51 -49z" /> |
| 1052 | +<glyph unicode="O" horiz-adv-x="860" d="M102 492v141q0 20 21 20h31q20 0 20 -20v-141q0 -68 60.5 -126.5t195.5 -58.5t195.5 59.5t60.5 125.5v141q0 20 21 20h30q20 0 21 -20v-141q0 -94 -71 -168t-206 -86v-136h133q20 0 21 -20v-62q0 -20 -21 -20h-368q-20 0 -21 20v62q0 20 21 20h133v136q-135 12 -206 86 t-71 168zM276 492v161h308v-161q0 -31 -37 -56.5t-117 -25.5q-82 0 -118 25.5t-36 56.5zM276 725v217q0 31 36 56.5t118 25.5q80 0 117 -25.5t37 -56.5v-217h-308z" /> |
| 1053 | +<glyph unicode="P" horiz-adv-x="1126" d="M102 154v614q0 41 30 71.5t73 30.5h45v-102h164v102h297v-102h163v102h48q41 0 71.5 -30.5t30.5 -71.5v-614q0 -43 -30.5 -73t-71.5 -30h-717q-43 0 -73 30t-30 73zM205 154h717v409h-717v-409zM297 799v174h72v-174h-72zM758 799v174h71v-174h-71z" /> |
| 1054 | +<glyph unicode="Q" horiz-adv-x="618" d="M104 536q0 16 86 122q90 112 184 215q90 99 98 100q5 -4 -76 -191q-79 -182 -79 -192q2 -5 97.5 -44.5t99.5 -56.5q0 -17 -88 -124q-90 -111 -183 -214q-90 -99 -97 -100q-5 2 35 94.5t81 187.5q39 91 39 100q-2 7 -97 47q-100 42 -100 56z" /> |
| 1055 | +<glyph unicode="R" horiz-adv-x="778" d="M102 115v118q0 37 31 79t69 73t68.5 66.5t30.5 60.5q0 27 -30.5 61.5t-68.5 65.5t-69 72t-31 77v121q0 35 88.5 75t199 40t198.5 -40t88 -75v-121q0 -37 -31 -77.5t-68.5 -71.5t-68.5 -65.5t-31 -61.5q0 -25 31 -60.5t68.5 -66.5t68.5 -73t31 -79v-118q0 -35 -88 -75 t-198.5 -40t-199 40t-88.5 75zM164 840l2 -52q0 -35 92 -122q6 -6 22.5 -21.5t23.5 -22.5l20 -20q12 -12 17 -21.5t11 -20.5t9.5 -23.5t3.5 -24.5q0 -14 -5.5 -29.5t-9.5 -24.5t-18.5 -25.5t-20.5 -23t-26.5 -25.5t-26.5 -26q-92 -88 -92 -125v-67q8 4 68.5 23.5t95.5 45 t35 60.5q0 18 12 25.5t25.5 0t13.5 -25.5q0 -35 34.5 -60.5t95 -45t68.5 -23.5v67q0 35 -94 125q-4 4 -29.5 29t-31.5 32t-20.5 25.5t-18.5 34t-4 33.5t4 33.5t18.5 34t20.5 25.5t31.5 32t29.5 29q94 90 94 122l2 52q-106 -53 -227 -54q-123 1 -225 54zM164 889q-1 -3 -2 -5 q0 -5 6 -7q90 -55 221 -56q135 0 225 51q5 3 6 9q0 10 -22 24q-96 55 -205 56q-125 0 -211 -56z" /> |
| 1056 | +<glyph unicode="S" horiz-adv-x="983" d="M102 240q0 47 34 80.5t81 33.5q49 0 83 -33.5t34 -80.5q0 -49 -34 -83t-83 -34q-47 0 -81 34t-34 83zM102 537v120q221 0 378 -156.5t157 -377.5h-121q0 172 -122 293t-292 121zM102 780v121q322 0 550.5 -228.5t228.5 -549.5h-123q0 272 -192 464.5t-464 192.5z" /> |
| 1057 | +<glyph unicode="T" horiz-adv-x="1208" d="M102 711q209 211 503 211t501 -211l-72 -72q-178 180 -430 180t-430 -180zM246 567q150 150 359.5 150t357.5 -150l-72 -73q-119 121 -286 120.5t-288 -120.5zM389 422q90 90 215 90t215 -90l-71 -72q-59 59 -143.5 59.5t-143.5 -59.5zM504 205q0 43 29.5 72.5t70.5 29.5 q43 0 73 -29.5t30 -72.5t-30 -73t-73 -30q-41 0 -70.5 30t-29.5 73z" /> |
| 1058 | +<glyph unicode="U" horiz-adv-x="921" d="M102 178v400q0 23 15.5 42t36.5 19h102v72q0 236 205 235q100 0 152.5 -61.5t52.5 -173.5v-72h92q20 0 40.5 -20.5t20.5 -40.5v-400q0 -20 -14 -39.5t-35 -25.5l-61 -21q-53 -16 -101 -16h-297q-47 0 -100 16l-61 21q-20 6 -34 25.5t-14 39.5zM358 639h205v92 q0 113 -102.5 113t-102.5 -113v-92z" /> |
| 1059 | +<glyph unicode="V" horiz-adv-x="921" d="M102 154v399q0 23 15.5 42t36.5 19h409v144q0 53 -27.5 82.5t-74.5 29.5q-102 0 -103 -112v-41h-102v20q0 113 52 174.5t152.5 61.5t153 -61.5t52.5 -174.5v-123h92q20 0 40.5 -20.5t20.5 -40.5v-399q0 -20 -14 -41t-35 -27l-61 -18q-43 -16 -101 -17h-297q-57 0 -100 17 l-61 18q-20 6 -34 25.5t-14 42.5z" /> |
| 1060 | +<glyph unicode="W" horiz-adv-x="890" d="M104 476q4 30 29 48q23 16 52.5 12t45.5 -26l121 -160l303 488q14 25 44 31q9 2 18 3q20 0 37 -12q25 -14 31 -44q2 -9 3 -17q0 -20 -12 -37l-356 -576q-23 -33 -58 -32h-4q-35 0 -57 28l-182 242q-15 18 -15 42q-1 5 0 10z" /> |
| 1061 | +<glyph unicode="X" horiz-adv-x="686" d="M102 306.5q0 25.5 19 43.5l141 162l-141 162q-18 16 -18.5 41.5t18 44t44 18.5t42.5 -18l137 -156l135 156q18 18 44 18t42 -18q18 -18 18.5 -44t-18.5 -42l-141 -162l141 -162q18 -18 18.5 -43.5t-18.5 -42.5q-16 -18 -41.5 -18t-44.5 18l-135 154l-137 -154 q-16 -18 -42 -18t-44 18q-19 17 -19 42.5z" /> |
| 1062 | +<glyph unicode="Y" horiz-adv-x="1064" d="M102 512q0 178 126 304t304.5 126t304.5 -126t126 -304t-126 -304t-304.5 -126t-304.5 126t-126 304zM272 461h519v104h-519v-104z" /> |
| 1063 | +<glyph unicode="Z" horiz-adv-x="1064" d="M102 512q0 178 126 304t304.5 126t304.5 -126t126 -304t-126 -304t-304.5 -126t-304.5 126t-126 304zM274 459h207v-205h105v205h207v104h-207v207h-105v-207h-207v-104z" /> |
| 1064 | +<glyph unicode="[" horiz-adv-x="1064" d="M102 512q0 178 126 304t304.5 126t304.5 -126t126 -304t-126 -304t-304.5 -126t-304.5 126t-126 304zM287 354l88 -88l157 158l156 -158l88 88l-155 158l155 156l-88 90l-156 -158l-157 158l-88 -90l155 -156z" /> |
| 1065 | +<glyph unicode="\" horiz-adv-x="798" d="M102 512q0 51 31 51h533q31 0 30.5 -51t-30.5 -51h-533q-31 0 -31 51z" /> |
| 1066 | +<glyph unicode="]" horiz-adv-x="798" d="M102 512q0 51 31 51h215v215q0 31 51.5 31t51.5 -31v-215h215q31 0 30.5 -51t-30.5 -51h-215v-215q0 -31 -51.5 -31t-51.5 31v215h-215q-31 0 -31 51z" /> |
| 1067 | +<glyph unicode="^" horiz-adv-x="1146" d="M102 512q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM215 512q0 -131 80 -227l504 503q-98 82 -226 82q-150 0 -254 -104t-104 -254zM319 258zM346 233q100 -80 227 -79q147 0 253 104t106 254q0 129 -82 227zM825 766z " /> |
| 1068 | +<glyph unicode="_" horiz-adv-x="675" d="M102 487q92 80 193.5 129.5t155.5 49.5q78 0 34 -166l-71 -275q-16 -66 6 -65q43 0 123 61l30 -41q-88 -88 -180 -134t-143 -46q-102 0 -55 180l61 260q16 59 0 60q-14 0 -56 -18.5t-71 -39.5zM326 897q0 45 36.5 86t98.5 41q49 0 76.5 -28.5t27.5 -71.5q0 -51 -40 -90 t-97 -39q-49 0 -76.5 27.5t-25.5 74.5z" /> |
| 1069 | +<glyph unicode="`" horiz-adv-x="1150" d="M104 506q-2 195 134.5 335t330.5 142q195 4 335 -133t142.5 -331.5t-134 -334t-330.5 -143.5q-195 -2 -334.5 134t-143.5 331zM410 508l16 -29q47 35 78 35q8 0 0 -35l-39 -153q-29 -109 35 -109q31 0 86 27.5t108 81.5l-18 24q-49 -37 -74 -37q-12 0 -4 39l43 162 q27 98 -20 98q-31 0 -92.5 -28.5t-118.5 -75.5zM532 750q-2 -29 15.5 -44.5t50.5 -15.5q39 0 62.5 22.5t23.5 53.5q0 59 -61 59q-43 0 -67 -23t-24 -52z" /> |
| 1070 | +<glyph unicode="a" horiz-adv-x="798" d="M102 692q6 168 115 236q70 45 170 45q133 0 221 -63.5t88 -186.5q0 -68 -43 -129q-20 -25 -92 -80l-45 -33q-41 -29 -51 -61q-6 -18 -6 -45q0 -14 -17 -15h-131q-16 0 -16 15q4 100 27 127q18 20 51 46.5t57 43.5l25 16q25 20 32 35q29 37 29 70q0 47 -27 82 q-25 37 -94 36q-68 0 -96 -45q-29 -47 -29 -94h-168zM310 233q30 27 69 27h6q47 -2 77 -32q28 -28 28 -70q0 -3 -1 -6q-2 -47 -32 -75q-29 -26 -72 -26h-6q-45 2 -75 31q-28 27 -28 70q0 50 34 81z" /> |
| 1071 | +<glyph unicode="b" horiz-adv-x="1150" d="M104 512q0 191 134 328q135 139 329 143h6q191 0 329 -134q140 -136 145 -331v-6q0 -191 -135 -329q-136 -140 -330 -142h-12q-187 0 -323 133q-143 140 -143 338zM389 616h113v7q0 29 18 55q16 25 53 24q41 0 55.5 -20t14.5 -47q0 -18 -16 -41q-8 -14 -19 -19l-6 -4 l-16.5 -11t-20.5 -15t-21.5 -18.5t-17.5 -18.5q-14 -16 -18 -78v-10h108v4q0 10 5 31q6 16 30 34l29 21q47 39 55 49q27 35 27 82q0 80 -55.5 119t-137.5 39q-61 0 -106 -29q-68 -43 -74 -147v-7zM497 290q0 -25 18 -43q19 -19 50 -22h2q29 0 48.5 18.5t21.5 47.5 q0 68 -70 71h-2q-29 0 -48.5 -19t-19.5 -53z" /> |
| 1072 | +<glyph unicode="c" horiz-adv-x="1189" d="M109 94q-5 9 -5.5 18t5.5 17l454 801q12 18 33 18q23 0 31 -18l454 -801q5 -8 5 -17t-5 -18q-10 -16 -30 -16h-912q-20 0 -30 16zM532 180h125v103h-125v-103zM532 360h125v308h-125v-308z" /> |
| 1073 | +<glyph unicode="d" horiz-adv-x="1167" d="M102 512q0 174 122 297t296 123q170 0 292 -120t126 -290h127l-188 -209l-189 209h146q-4 127 -95.5 216t-218.5 89q-131 0 -222 -92t-91 -223t91 -223t222 -92q102 0 187 61l71 -78q-115 -88 -258 -88q-174 0 -296 123t-122 297z" /> |
| 1074 | +<glyph unicode="e" horiz-adv-x="1167" d="M102 522h125q4 170 126 290t292 120q174 0 297 -123t123 -297t-123 -297t-297 -123q-143 0 -258 88l72 78q84 -61 186 -61q131 0 222 92t91 223t-91 223t-222 92q-127 0 -218 -89t-95 -216h145l-188 -209z" /> |
| 1075 | +<glyph unicode="f" d="M102 205v143h109q55 0 107.5 33t82 67.5t84.5 106.5q63 84 103.5 129t120 90t168.5 45h34v123l215 -184l-215 -185v103h-34q-55 0 -108.5 -33t-83.5 -67.5t-85 -106.5q-49 -63 -76.5 -96t-79 -79t-108.5 -67.5t-125 -21.5h-109zM102 666v143h109q139 0 258 -109 q-57 -72 -63 -82q-8 -12 -25 -32q-80 80 -170 80h-109zM608 313q47 59 74 95q0 2 6 9t8 11q90 -90 181 -90h34v102l215 -184l-215 -184v123h-34q-146 -1 -269 118z" /> |
| 1076 | +<glyph unicode="g" horiz-adv-x="1075" d="M102 635l215 184v-112h553q43 0 73 -30t30 -73v-297q0 -43 -30 -72.5t-73 -29.5h-706v143h665v215h-512v-112z" /> |
| 1077 | +<glyph unicode="h" d="M102 614l195 205l195 -205h-123v-266h227l131 -143h-399q-43 0 -73 29.5t-30 72.5v307h-123zM502 819h399q41 0 72 -29.5t31 -72.5v-307h122l-194 -205l-195 205h123v266h-227z" /> |
| 1078 | +<glyph unicode="i" horiz-adv-x="921" d="M102 307.5q0 20.5 14.5 35.5t37.5 15h614q20 0 35.5 -15t15.5 -35.5t-15.5 -36t-35.5 -15.5h-614q-23 0 -37.5 15.5t-14.5 36zM102 512q0 20 14.5 35.5t37.5 15.5h614q20 0 35.5 -15.5t15.5 -35.5t-15.5 -35.5t-35.5 -15.5h-614q-23 0 -37.5 15.5t-14.5 35.5zM102 716.5 q0 20.5 14.5 36t37.5 15.5h614q20 0 35.5 -15.5t15.5 -36t-15.5 -35.5t-35.5 -15h-614q-23 0 -37.5 15t-14.5 35.5z" /> |
| 1079 | +<glyph unicode="j" d="M102 307.5q0 20.5 15.5 35.5t36.5 15h307q23 0 37 -15t14 -35.5t-14.5 -36t-36.5 -15.5h-307q-20 0 -36 15.5t-16 36zM102 512q0 20 15.5 35.5t36.5 15.5h307q23 0 37 -15.5t14 -35.5t-14.5 -35.5t-36.5 -15.5h-307q-20 0 -36 15.5t-16 35.5zM102 716.5q0 20.5 15.5 36 t36.5 15.5h307q23 0 37 -15.5t14 -36t-14.5 -35.5t-36.5 -15h-307q-20 0 -36 15t-16 35.5zM621 512q0 51 30 51h168v174q0 31 51.5 31t51.5 -31v-174h174q31 0 30.5 -51t-30.5 -51h-174v-174q0 -31 -51.5 -31t-51.5 31v174h-168q-30 0 -30 51z" /> |
| 1080 | +<glyph unicode="k" horiz-adv-x="819" d="M102 287v92q0 82 82 82h92q82 0 82 -82v-92q0 -82 -82 -82h-92q-82 0 -82 82zM102 645v92q0 82 82 82h92q82 0 82 -82v-92q0 -82 -82 -82h-92q-82 0 -82 82zM461 287v92q0 82 82 82h92q82 0 82 -82v-92q0 -82 -82 -82h-92q-82 0 -82 82zM461 645v92q0 82 82 82h92 q82 0 82 -82v-92q0 -82 -82 -82h-92q-82 0 -82 82z" /> |
| 1081 | +<glyph unicode="l" horiz-adv-x="921" d="M102 154v716q0 41 30 72t73 31h512q41 0 71.5 -31t30.5 -72v-716q0 -43 -30.5 -73t-71.5 -30h-512q-43 0 -73 30t-30 73zM205 154h512v716h-512v-716zM317 268v88h287v-88h-287zM317 670v90h287v-90h-287zM319 467v92h287v-92h-287z" /> |
| 1082 | +<glyph unicode="m" horiz-adv-x="921" d="M102 154v716q0 41 31 72t72 31h512q43 0 72.5 -31t29.5 -72v-716q0 -43 -29.5 -73t-72.5 -30h-512q-41 0 -72 30t-31 73zM205 154h512v716h-512v-716z" /> |
| 1083 | +<glyph unicode="n" horiz-adv-x="921" d="M102 307v615q0 20 15.5 35.5t36.5 15.5h409q23 0 37 -15.5t14 -35.5v-154h154q23 0 37 -15.5t14 -35.5v-615q0 -20 -14 -35.5t-37 -15.5h-410q-20 0 -35.5 15.5t-15.5 35.5v154h-153q-20 0 -36 15.5t-16 35.5zM205 358h102v359q0 20 14.5 35.5t36.5 15.5h154v102h-307 v-512zM410 154h307v512h-307v-512z" /> |
| 1084 | +<glyph unicode="o" horiz-adv-x="1024" d="M0 256v512q0 41 30.5 71.5t71.5 30.5h820q43 0 72.5 -30.5t29.5 -71.5v-512q0 -43 -29.5 -72.5t-72.5 -29.5h-820q-41 0 -71.5 29.5t-30.5 72.5zM102 256h820v512h-820v-512z" /> |
| 1085 | +<glyph unicode="p" d="M106 690q-3 8 -2 15q0 9 4 17q7 15 21 19l696 254q10 4 18 4q22 0 31 -28l107 -289h-102l-127 154l-222 -154h-182q-55 0 -93 -39t-38 -94v-164zM309 66v483q0 16 11.5 28.5t27.5 12.5h739q16 0 27.5 -12.5t11.5 -28.5v-483q0 -16 -11 -28.5t-28 -12.5h-739 q-16 0 -27.5 12.5t-11.5 28.5zM418 129h614v164l-74 166l-172 -62l-133 -137l-141 176l-94 -219v-88z" /> |
| 1086 | +<glyph unicode="q" horiz-adv-x="1208" d="M102 195v61h103v102h-103v103h103v102h-103v103h103v102h-103v61q0 16 12.5 28.5t28.5 12.5h922q18 0 29.5 -12t11.5 -29v-61h-102v-102h102v-103h-102v-102h102v-103h-102v-102h102v-61q0 -16 -11.5 -28.5t-29.5 -12.5h-922q-16 0 -28.5 12.5t-12.5 28.5zM492 358 l256 154l-256 154v-308z" /> |
| 1087 | +<glyph unicode="r" horiz-adv-x="921" d="M102 154v716q0 41 31 72t72 31h512q43 0 72.5 -31t29.5 -72v-716q0 -43 -29.5 -73t-72.5 -30h-512q-41 0 -72 30t-31 73zM289 289q10 -33 53 -45q20 -6 40 -6q24 0 48 8q88 27 88 100v266q53 -8 69 -51q9 -24 8 -44q0 -17 -5 -32q-4 -10 2 -10q4 0 12 10q26 35 26 73 q0 11 -2 22q-9 49 -34 80.5t-50.5 67.5t-25.5 54h-61v-376q-19 8 -41 7q-24 0 -49 -10q-45 -16 -68 -49q-15 -21 -15 -42q1 -11 5 -23z" /> |
| 1088 | +<glyph unicode="s" horiz-adv-x="1232" d="M104 614q-2 27 6.5 39.5t41.5 12.5h929q33 0 41 -12.5t6 -39.5l-43 -460q-2 -27 -12 -39.5t-43 -12.5h-827q-33 0 -43 12.5t-13 39.5zM190 737l15 133q4 23 20.5 37.5t36.5 14.5h168q51 0 88 -37l29 -29q37 -37 88 -37h350q20 0 38.5 -12t23.5 -29l10 -41h-867z" /> |
| 1089 | +<glyph unicode="t" horiz-adv-x="1210" d="M103 651q0 7 1 12q2 7 7.5 15t8.5 12t12 13l13 14l31 31v-82h858v82l29 -31q4 -4 14 -13.5t13.5 -13.5t8.5 -12t6 -15.5t1 -19.5t-2 -29q-6 -29 -23.5 -130t-36 -211.5t-20.5 -118.5q-10 -51 -61 -52h-715q-53 0 -62 52q-6 25 -39.5 228.5t-40.5 231.5q-3 28 -3 37z M248 717v51q0 23 13 36t26 15h12h612q6 0 14.5 -1t23 -14t14.5 -36v-51h-715zM350 870q0 23 13.5 36.5t25.5 15.5h12h408q6 0 14 -1t22.5 -14.5t14.5 -36.5h-510zM401 440q0 -51 52 -51h305q23 0 36 12.5t13 24.5l2 14v103h-72v-82h-264v82h-72v-103z" /> |
| 1090 | +<glyph unicode="u" horiz-adv-x="903" d="M104 801q-6 47 93.5 89t255 42t254 -42t92.5 -89l-74 -608q-2 -12 -35 -36t-98.5 -44.5t-139 -20.5t-140 20.5t-99.5 44t-35 36.5zM178 790.5q0 -12.5 33 -30t100.5 -32.5t141 -15t140 15t99.5 32.5t33 30t-33 30t-99.5 32.5t-140 15t-141 -15t-100.5 -32.5t-33 -30z" /> |
| 1091 | +<glyph unicode="v" horiz-adv-x="1230" d="M104 283q-2 9 -2 18q0 36 35 55l164 111h100l-174 -135h181q10 0 12 -6l43 -115h305l43 115q4 6 12 6h181l-175 135h103l162 -111q35 -20 34 -55q0 -9 -2 -18l-28 -158q-4 -20 -22.5 -33.5t-41.5 -13.5h-835q-51 0 -66 47zM340 688l276 260l277 -260h-154v-252h-245v252 h-154z" /> |
| 1092 | +<glyph unicode="w" horiz-adv-x="1024" d="M0 283q-2 9 -2 18q0 36 35 55l164 109h100l-174 -133h180q8 0 12 -6l43 -115h306l43 115q2 6 12 6h180l-174 133h100l164 -109q35 -20 35 -55q0 -9 -2 -18l-29 -158q-4 -20 -23.5 -34.5t-39.5 -14.5h-836q-20 0 -39.5 14t-25.5 35zM236 694h153v252h246v-252h153 l-276 -260z" /> |
| 1093 | +<glyph unicode="x" horiz-adv-x="1128" d="M104 369q-2 13 -2 26q0 38 19 70l160 385q23 45 75 45h107l-21 -207h-139l262 -217l260 217h-137l-20 207h104q53 0 76 -45l162 -385q17 -33 16 -69q0 -13 -2 -27l-35 -191q-4 -20 -22.5 -35.5t-38.5 -15.5h-727q-20 0 -39 15.5t-23 35.5zM190 326l13 -74 q2 -20 19.5 -35.5t39.5 -15.5h604q23 0 40.5 15t19.5 36l14 74q2 20 -10 35.5t-35 15.5h-662q-20 0 -33.5 -14t-9.5 -37z" /> |
| 1094 | +<glyph unicode="y" d="M102 360q0 76 54.5 129.5t130.5 53.5q4 0 11 -1t11 -1q-4 25 -4 39q0 111 80 188.5t193 77.5q92 0 163.5 -53.5t98.5 -137.5q25 4 41 4q102 0 173.5 -69.5t71.5 -170t-71.5 -170t-173.5 -69.5h-594q-76 0 -130.5 53t-54.5 127z" /> |
| 1095 | +<glyph unicode="z" d="M102 360.5q0 75.5 54.5 128t132.5 52.5h22q-4 25 -4 37q0 111 80 188.5t193 77.5q90 0 162.5 -53.5t99.5 -135.5q12 2 41 2q102 0 172.5 -69.5t70.5 -169.5q0 -98 -71.5 -169t-171.5 -71h-197v195h109l-181 235l-178 -235h107v-195h-254q-78 0 -132.5 53.5t-54.5 129z " /> |
| 1096 | +<glyph unicode="{" horiz-adv-x="716" d="M102 248v528q0 29 16.5 39t41.5 -6l438 -270q16 -12 16 -27l-16 -27l-438 -270q-25 -16 -41.5 -6t-16.5 39z" /> |
| 1097 | +<glyph unicode="|" horiz-adv-x="747" d="M102 219v584q0 68 92.5 67.5t92.5 -67.5v-584q0 -66 -92.5 -66t-92.5 66zM461 219v584q0 68 92 67.5t92 -67.5v-584q0 -66 -92 -66t-92 66z" /> |
| 1098 | +<glyph unicode="}" horiz-adv-x="921" d="M102 512q0 150 104.5 254t254.5 104q147 0 252.5 -104t105.5 -254t-105.5 -254t-252.5 -104q-150 0 -254.5 104t-104.5 254z" /> |
| 1099 | +<glyph unicode="~" horiz-adv-x="819" d="M102 270v482q0 68 78 67h461q76 0 76 -67v-482q0 -66 -76 -65h-461q-78 -1 -78 65z" /> |
| 1100 | +<glyph unicode="©" horiz-adv-x="1191" d="M104 506q-2 203 139.5 348t344.5 150q205 2 350 -139.5t149 -346.5q2 -203 -140 -349t-345 -149q-205 -4 -350.5 138.5t-147.5 347.5zM207 506q4 -160 117.5 -272.5t275.5 -110.5t273.5 117.5t109.5 275.5q-2 162 -116.5 273.5t-276.5 109.5t-273.5 -116.5t-109.5 -276.5 zM328 512q0 68 39 106q37 39 98 39q88 0 125 -67l-64 -33q-10 23 -24 29q-16 10 -27 10q-63 0 -63 -84q0 -35 16 -61q16 -23 47 -23q41 0 57 41l60 -29q-16 -31 -53 -55q-35 -20 -72 -20q-59 0 -102 38q-37 39 -37 109zM600 512q0 68 39 106q37 39 98 39q88 0 125 -67 l-63 -33q-10 23 -25 29q-16 10 -26 10q-63 0 -64 -84q0 -39 16.5 -61.5t47.5 -22.5q39 0 57 41l59 -29q-20 -35 -53 -55q-37 -20 -72 -20q-59 0 -102 38q-37 39 -37 109z" /> |
| 1101 | +<glyph unicode="ª" horiz-adv-x="798" d="M102 692q6 168 115 236q70 45 170 45q133 0 221 -63.5t88 -186.5q0 -68 -43 -129q-20 -25 -92 -80l-45 -33q-41 -29 -51 -61q-6 -18 -6 -45q0 -14 -17 -15h-131q-16 0 -16 15q4 100 27 127q18 20 51 46.5t57 43.5l25 16q25 20 32 35q29 37 29 70q0 47 -27 82 q-25 37 -94 36q-68 0 -96 -45q-29 -47 -29 -94h-168zM310 233q30 27 69 27h6q47 -2 77 -32q28 -28 28 -70q0 -3 -1 -6q-2 -47 -32 -75q-29 -26 -72 -26h-6q-45 2 -75 31q-28 27 -28 70q0 50 34 81z" /> |
| 1102 | +<glyph unicode="­" d="M102 51v205q18 8 48 17.5t34 11.5q96 35 132 69.5t36 98.5q0 23 -23.5 49t-31.5 76q-2 12 -23.5 24t-25.5 62q0 16 5 26t9 15l6 2q-10 51 -14 90q-4 55 43 115.5t164 60.5q115 0 162 -60.5t43 -115.5l-15 -90q20 -8 21 -43q-4 -49 -25.5 -61.5t-23.5 -24.5 q-8 -49 -32 -76t-24 -49q0 -63 36 -98.5t132 -69.5q186 -70 187 -125v-109h-820zM717 461v102h153v154h103v-154h153v-102h-153v-154h-103v154h-153z" /> |
| 1103 | +<glyph unicode="®" horiz-adv-x="1126" d="M102 256v205h308v-256h-267q-41 0 -41 51zM102 563v205q0 51 41 51h267v-256h-308zM512 205v256h512v-205q0 -20 -15.5 -35.5t-35.5 -15.5h-461zM512 563v256h461q20 0 35.5 -15.5t15.5 -35.5v-205h-512z" /> |
| 1104 | +<glyph unicode="²" horiz-adv-x="1191" d="M104 506q-2 203 139.5 348t344.5 150q205 2 350 -139.5t149 -346.5q2 -203 -140 -349t-345 -149q-205 -4 -350.5 138.5t-147.5 347.5zM207 506q4 -160 117.5 -272.5t275.5 -110.5t273.5 117.5t109.5 275.5q-2 162 -116.5 273.5t-276.5 109.5t-273.5 -116.5t-109.5 -276.5 zM362 281q4 27 12.5 68.5t42.5 131.5t77 133q45 45 128 78t144 45l61 11q-4 -27 -11 -69t-41 -132t-79 -133q-45 -45 -128 -78t-144 -45zM524 514q0 -31 20.5 -51.5t50.5 -20.5t50 21q53 53 90 192q-137 -37 -190 -90q-21 -20 -21 -51z" /> |
| 1105 | +<glyph unicode="³" horiz-adv-x="1085" d="M102 516q453 254 711 379q23 10 50.5 25.5t38.5 20.5t26.5 9t24 1t16.5 -11t11 -17.5t-1 -23.5t-9 -25.5t-20.5 -40t-25.5 -49.5q-55 -115 -149.5 -293t-160.5 -298l-67 -121l-58 389zM565 553l29 -238l283 525z" /> |
| 1106 | +<glyph unicode="¹" d="M102 137v600q0 18 17 29l239 152q18 10 35 0l221 -140l224 140q18 10 34 0l240 -152q14 -10 14 -29v-600q0 -20 -16 -31q-8 -4 -16.5 -4t-16.5 4l-223 140l-221 -140q-18 -10 -35 0l-221 140l-223 -140q-16 -10 -33 0q-19 11 -19 31zM170 199l172 108v518l-172 -108v-518 zM410 307l172 -108v518l-172 108v-518zM649 199l172 108v518l-172 -108v-518zM889 307l172 -108v518l-172 108v-518z" /> |
| 1107 | +<glyph unicode="º" horiz-adv-x="1024" d="M0 256v512q0 41 30.5 71.5t71.5 30.5h820q43 0 72.5 -30.5t29.5 -71.5v-512q0 -43 -29.5 -72.5t-72.5 -29.5h-820q-41 0 -71.5 29.5t-30.5 72.5zM102 256h820v512h-820v-512z" /> |
| 1108 | +<glyph unicode="À" horiz-adv-x="1128" d="M237 1612q-2 195 134.5 335t330.5 142q195 4 335 -133t142.5 -331.5t-134 -334t-330.5 -143.5q-195 -2 -334.5 134t-143.5 331zM543 1614l16 -29q47 35 78 35q8 0 0 -35l-39 -153q-29 -109 35 -109q31 0 86 27.5t108 81.5l-18 24q-49 -37 -74 -37q-12 0 -4 39l43 162 q27 98 -20 98q-31 0 -92.5 -28.5t-118.5 -75.5zM665 1856q-2 -29 15.5 -44.5t50.5 -15.5q39 0 62.5 22.5t23.5 53.5q0 59 -61 59q-43 0 -67 -23t-24 -52zM109 183q-5 16 -5 29q0 19 11 30l417 417q-2 18 -2 37q0 30 7 61q10 48 26 64l137 137q13 15 40 16q23 0 56 -11 q71 -25 132 -86q63 -63 88 -135q11 -33 11 -55q0 -26 -15 -38l-140 -139q-16 -16 -63 -27q-29 -6 -61 -6q-19 0 -37 2l-418 -418q-11 -11 -28 -10q-13 0 -29 5q-39 13 -76 50q-39 37 -51 77zM458 487q0 -17 11 -28q13 -13 30 -14q24 0 54 28q20 20 23.5 44t-11 38t-38 10 t-44.5 -24q-25 -25 -25 -54zM737 921.5q-2 -1.5 -2 -7.5q0 -7 3 -21q5 -25 25.5 -62.5t51.5 -68.5q29 -29 68 -49.5t63 -25.5q14 -3 21 -3q6 0 8 2q2 1 1 5q0 7 -3 22q-6 25 -27.5 62.5t-50.5 66.5q-31 31 -69 51t-61 27q-14 4 -21 3q-5 0 -7 -1.5z" /> |
| 1109 | +<glyph unicode="Â" horiz-adv-x="1128" d="M174 1618q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM287 1618q0 -131 80 -227l504 503q-98 82 -226 82q-150 0 -254 -104t-104 -254zM391 1364zM418 1339q100 -80 227 -79q147 0 253 104t106 254q0 129 -82 227z M897 1872zM109 183q-5 16 -5 29q0 19 11 30l417 417q-2 18 -2 37q0 30 7 61q10 48 26 64l137 137q13 15 40 16q23 0 56 -11q71 -25 132 -86q63 -63 88 -135q11 -33 11 -55q0 -26 -15 -38l-140 -139q-16 -16 -63 -27q-29 -6 -61 -6q-19 0 -37 2l-418 -418q-11 -11 -28 -10 q-13 0 -29 5q-39 13 -76 50q-39 37 -51 77zM458 487q0 -17 11 -28q13 -13 30 -14q24 0 54 28q20 20 23.5 44t-11 38t-38 10t-44.5 -24q-25 -25 -25 -54zM737 921.5q-2 -1.5 -2 -7.5q0 -7 3 -21q5 -25 25.5 -62.5t51.5 -68.5q29 -29 68 -49.5t63 -25.5q14 -3 21 -3q6 0 8 2 q2 1 1 5q0 7 -3 22q-6 25 -27.5 62.5t-50.5 66.5q-31 31 -69 51t-61 27q-14 4 -21 3q-5 0 -7 -1.5z" /> |
| 1110 | +<glyph unicode="Ã" horiz-adv-x="1128" d="M362 1212v482q0 68 78 67h461q76 0 76 -67v-482q0 -66 -76 -65h-461q-78 -1 -78 65zM109 183q-5 16 -5 29q0 19 11 30l417 417q-2 18 -2 37q0 30 7 61q10 48 26 64l137 137q13 15 40 16q23 0 56 -11q71 -25 132 -86q63 -63 88 -135q11 -33 11 -55q0 -26 -15 -38 l-140 -139q-16 -16 -63 -27q-29 -6 -61 -6q-19 0 -37 2l-418 -418q-11 -11 -28 -10q-13 0 -29 5q-39 13 -76 50q-39 37 -51 77zM458 487q0 -17 11 -28q13 -13 30 -14q24 0 54 28q20 20 23.5 44t-11 38t-38 10t-44.5 -24q-25 -25 -25 -54zM737 921.5q-2 -1.5 -2 -7.5 q0 -7 3 -21q5 -25 25.5 -62.5t51.5 -68.5q29 -29 68 -49.5t63 -25.5q14 -3 21 -3q6 0 8 2q2 1 1 5q0 7 -3 22q-6 25 -27.5 62.5t-50.5 66.5q-31 31 -69 51t-61 27q-14 4 -21 3q-5 0 -7 -1.5z" /> |
| 1111 | +<glyph unicode="Ä" horiz-adv-x="1105" d="M102 266v492q0 29 15.5 38t38.5 -5l368 -254q14 -10 15 -25l-15 -25l-368 -254q-23 -14 -38.5 -5t-15.5 38zM553 266v492q0 27 16.5 37t36.5 -4l383 -254q14 -10 15 -25l-15 -25l-383 -254q-20 -14 -36.5 -4t-16.5 37z" /> |
| 1112 | +<glyph unicode="Å" horiz-adv-x="1105" d="M102 512l15 25l383 254q20 14 36.5 3.5t16.5 -36.5v-492q0 -27 -16.5 -37t-36.5 4l-383 254q-15 11 -15 25zM567 512l15 25l368 254q23 14 38.5 4.5t15.5 -37.5v-492q0 -29 -15.5 -38t-38.5 5l-368 254q-15 11 -15 25z" /> |
| 1113 | +<glyph unicode="Ç" horiz-adv-x="819" d="M102 274v478q0 59 76 59q78 0 78 -59v-478q0 -59 -78 -59q-76 0 -76 59zM281 512l12 23l373 235q23 14 37 5t14 -36v-452q0 -27 -14.5 -36t-36.5 5l-373 233q-12 11 -12 23z" /> |
| 1114 | +<glyph unicode="È" horiz-adv-x="1046" d="M202 1612q-2 195 134.5 335t330.5 142q195 4 335 -133t142.5 -331.5t-134 -334t-330.5 -143.5q-195 -2 -334.5 134t-143.5 331zM508 1614l16 -29q47 35 78 35q8 0 0 -35l-39 -153q-29 -109 35 -109q31 0 86 27.5t108 81.5l-18 24q-49 -37 -74 -37q-12 0 -4 39l43 162 q27 98 -20 98q-31 0 -92.5 -28.5t-118.5 -75.5zM630 1856q-2 -29 15.5 -44.5t50.5 -15.5q39 0 62.5 22.5t23.5 53.5q0 59 -61 59q-43 0 -67 -23t-24 -52zM102 322q100 -58 216 -59q30 0 62 4q151 19 259.5 128t127.5 259q4 31 4 62q0 115 -58 216q55 -31 98 -74 q131 -133 131 -317.5t-131 -317.5q-131 -131 -316.5 -131t-316.5 131q-43 44 -76 99z" /> |
| 1115 | +<glyph unicode="É" horiz-adv-x="819" d="M102 285v454q0 27 14.5 35t35.5 -6l372 -233q12 -10 13 -23l-13 -23l-372 -233q-20 -14 -35 -6t-15 35zM563 274v476q0 59 76 59q78 0 78 -59v-476q0 -59 -78 -59q-76 0 -76 59z" /> |
| 1116 | +<glyph unicode="Ê" horiz-adv-x="1046" d="M139 1618q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM252 1618q0 -131 80 -227l504 503q-98 82 -226 82q-150 0 -254 -104t-104 -254zM356 1364zM383 1339q100 -80 227 -79q147 0 253 104t106 254q0 129 -82 227z M862 1872zM102 322q100 -58 216 -59q30 0 62 4q151 19 259.5 128t127.5 259q4 31 4 62q0 115 -58 216q55 -31 98 -74q131 -133 131 -317.5t-131 -317.5q-131 -131 -316.5 -131t-316.5 131q-43 44 -76 99z" /> |
| 1117 | +<glyph unicode="Ì" horiz-adv-x="1087" d="M34 1612q-2 195 134.5 335t330.5 142q195 4 335 -133t142.5 -331.5t-134 -334t-330.5 -143.5q-195 -2 -334.5 134t-143.5 331zM340 1614l16 -29q47 35 78 35q8 0 0 -35l-39 -153q-29 -109 35 -109q31 0 86 27.5t108 81.5l-18 24q-49 -37 -74 -37q-12 0 -4 39l43 162 q27 98 -20 98q-31 0 -92.5 -28.5t-118.5 -75.5zM462 1856q-2 -29 15.5 -44.5t50.5 -15.5q39 0 62.5 22.5t23.5 53.5q0 59 -61 59q-43 0 -67 -23t-24 -52zM104 774q-1 6 -1 13q0 30 26 49q8 8 57.5 46t55.5 44q18 16 55 16h494q35 0 57 -16q8 -8 57 -46t56 -44q24 -20 23 -49 q0 -6 -1 -13l-98 -663q-10 -29 -41 -29h-600q-31 0 -41 29q-95 636 -99 663zM184 768h721l-114 117h-494zM334 674q49 -283 211 -283q160 0 209 283h-95q-39 -190 -114 -191q-78 0 -117 191h-94z" /> |
| 1118 | +<glyph unicode="Î" horiz-adv-x="1087" d="M-29 1618q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM84 1618q0 -131 80 -227l504 503q-98 82 -226 82q-150 0 -254 -104t-104 -254zM188 1364zM215 1339q100 -80 227 -79q147 0 253 104t106 254q0 129 -82 227zM694 1872 zM104 774q-1 6 -1 13q0 30 26 49q8 8 57.5 46t55.5 44q18 16 55 16h494q35 0 57 -16q8 -8 57 -46t56 -44q24 -20 23 -49q0 -6 -1 -13l-98 -663q-10 -29 -41 -29h-600q-31 0 -41 29q-95 636 -99 663zM184 768h721l-114 117h-494zM334 674q49 -283 211 -283q160 0 209 283h-95 q-39 -190 -114 -191q-78 0 -117 191h-94z" /> |
| 1119 | +<glyph unicode="Ñ" horiz-adv-x="1024" d="M102 102l23 287l80 -82l143 148l103 -103l-146 -147l80 -80zM573 672l146 147l-80 80l283 23l-21 -287l-80 82l-145 -148z" /> |
| 1120 | +<glyph unicode="Ò" horiz-adv-x="860" d="M-66 1612q-2 195 134.5 335t330.5 142q195 4 335 -133t142.5 -331.5t-134 -334t-330.5 -143.5q-195 -2 -334.5 134t-143.5 331zM240 1614l16 -29q47 35 78 35q8 0 0 -35l-39 -153q-29 -109 35 -109q31 0 86 27.5t108 81.5l-18 24q-49 -37 -74 -37q-12 0 -4 39l43 162 q27 98 -20 98q-31 0 -92.5 -28.5t-118.5 -75.5zM362 1856q-2 -29 15.5 -44.5t50.5 -15.5q39 0 62.5 22.5t23.5 53.5q0 59 -61 59q-43 0 -67 -23t-24 -52zM102 492v141q0 20 21 20h31q20 0 20 -20v-141q0 -68 60.5 -126.5t195.5 -58.5t195.5 59.5t60.5 125.5v141q0 20 21 20 h30q20 0 21 -20v-141q0 -94 -71 -168t-206 -86v-136h133q20 0 21 -20v-62q0 -20 -21 -20h-368q-20 0 -21 20v62q0 20 21 20h133v136q-135 12 -206 86t-71 168zM276 492v161h308v-161q0 -31 -37 -56.5t-117 -25.5q-82 0 -118 25.5t-36 56.5zM276 725v217q0 31 36 56.5 t118 25.5q80 0 117 -25.5t37 -56.5v-217h-308z" /> |
| 1121 | +<glyph unicode="Ô" horiz-adv-x="860" d="M-129 1618q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM-16 1618q0 -131 80 -227l504 503q-98 82 -226 82q-150 0 -254 -104t-104 -254zM88 1364zM115 1339q100 -80 227 -79q147 0 253 104t106 254q0 129 -82 227z M594 1872zM102 492v141q0 20 21 20h31q20 0 20 -20v-141q0 -68 60.5 -126.5t195.5 -58.5t195.5 59.5t60.5 125.5v141q0 20 21 20h30q20 0 21 -20v-141q0 -94 -71 -168t-206 -86v-136h133q20 0 21 -20v-62q0 -20 -21 -20h-368q-20 0 -21 20v62q0 20 21 20h133v136 q-135 12 -206 86t-71 168zM276 492v161h308v-161q0 -31 -37 -56.5t-117 -25.5q-82 0 -118 25.5t-36 56.5zM276 725v217q0 31 36 56.5t118 25.5q80 0 117 -25.5t37 -56.5v-217h-308z" /> |
| 1122 | +<glyph unicode="Õ" horiz-adv-x="860" d="M59 1212v482q0 68 78 67h461q76 0 76 -67v-482q0 -66 -76 -65h-461q-78 -1 -78 65zM102 492v141q0 20 21 20h31q20 0 20 -20v-141q0 -68 60.5 -126.5t195.5 -58.5t195.5 59.5t60.5 125.5v141q0 20 21 20h30q20 0 21 -20v-141q0 -94 -71 -168t-206 -86v-136h133 q20 0 21 -20v-62q0 -20 -21 -20h-368q-20 0 -21 20v62q0 20 21 20h133v136q-135 12 -206 86t-71 168zM276 492v161h308v-161q0 -31 -37 -56.5t-117 -25.5q-82 0 -118 25.5t-36 56.5zM276 725v217q0 31 36 56.5t118 25.5q80 0 117 -25.5t37 -56.5v-217h-308z" /> |
| 1123 | +<glyph unicode="Ö" horiz-adv-x="1044" d="M102 197l150 151l-82 82l291 23l-23 -293l-82 82l-149 -150zM586 571l22 293l82 -84l150 152l102 -107l-147 -149l82 -82z" /> |
| 1124 | +<glyph unicode="Ù" horiz-adv-x="921" d="M-48 1612q-2 195 134.5 335t330.5 142q195 4 335 -133t142.5 -331.5t-134 -334t-330.5 -143.5q-195 -2 -334.5 134t-143.5 331zM258 1614l16 -29q47 35 78 35q8 0 0 -35l-39 -153q-29 -109 35 -109q31 0 86 27.5t108 81.5l-18 24q-49 -37 -74 -37q-12 0 -4 39l43 162 q27 98 -20 98q-31 0 -92.5 -28.5t-118.5 -75.5zM380 1856q-2 -29 15.5 -44.5t50.5 -15.5q39 0 62.5 22.5t23.5 53.5q0 59 -61 59q-43 0 -67 -23t-24 -52zM102 178v400q0 23 15.5 42t36.5 19h102v72q0 236 205 235q100 0 152.5 -61.5t52.5 -173.5v-72h92q20 0 40.5 -20.5 t20.5 -40.5v-400q0 -20 -14 -39.5t-35 -25.5l-61 -21q-53 -16 -101 -16h-297q-47 0 -100 16l-61 21q-20 6 -34 25.5t-14 39.5zM358 639h205v92q0 113 -102.5 113t-102.5 -113v-92z" /> |
| 1125 | +<glyph unicode="Û" horiz-adv-x="921" d="M-111 1618q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM2 1618q0 -131 80 -227l504 503q-98 82 -226 82q-150 0 -254 -104t-104 -254zM106 1364zM133 1339q100 -80 227 -79q147 0 253 104t106 254q0 129 -82 227zM612 1872 zM102 178v400q0 23 15.5 42t36.5 19h102v72q0 236 205 235q100 0 152.5 -61.5t52.5 -173.5v-72h92q20 0 40.5 -20.5t20.5 -40.5v-400q0 -20 -14 -39.5t-35 -25.5l-61 -21q-53 -16 -101 -16h-297q-47 0 -100 16l-61 21q-20 6 -34 25.5t-14 39.5zM358 639h205v92 q0 113 -102.5 113t-102.5 -113v-92z" /> |
| 1126 | +<glyph unicode="Ü" horiz-adv-x="1124" d="M103 266.5q-3 12.5 26 30.5l821 463q29 16 50.5 4t21.5 -45v-383q0 -33 -23.5 -57.5t-58.5 -24.5h-799q-35 0 -38 12.5z" /> |
| 1127 | +<glyph unicode="à" horiz-adv-x="1110" d="M102 110.5q0 20.5 17 36.5l801 801q35 35 71 0q16 -14 16.5 -35.5t-16.5 -35.5l-801 -801q-14 -14 -34 -15q-23 0 -37 15q-17 14 -17 34.5zM211 340q-41 135 28.5 289.5t135.5 220.5q37 33 108.5 12.5t161.5 -86.5l-53 -53q-39 27 -78 44t-58.5 19t-29.5 -2 q-4 -10 -2 -30.5t19.5 -58.5t43.5 -79zM373 156l284 284q45 -33 90.5 -55.5t69 -25.5t33.5 1q4 10 1 34t-25.5 69t-55.5 90l51 51q76 -94 103.5 -176t-6.5 -119q-25 -25 -76 -57.5t-135 -71.5t-166 -46t-168 22z" /> |
| 1128 | +<glyph unicode="á" horiz-adv-x="1136" d="M104.5 303.5q-10.5 104.5 29.5 197.5t80 158.5t69 94.5q43 45 151.5 -4.5t221 -162t161.5 -222t6 -152.5q-29 -29 -94 -69t-159.5 -78.5t-199 -28.5t-180 86t-86 180.5zM332 688q-8 -8 2 -48t50 -104.5t97 -121.5q59 -59 123 -98.5t104 -50.5t48 -1q8 8 -2.5 48 t-50 104.5t-97 122t-122 97.5t-104.5 50t-48 2zM555 824.5q-6 21.5 4 39.5l55 99q10 18 31 23t39 -5t24.5 -30.5t-3.5 -39.5l-56 -98q-16 -27 -45 -27q-14 0 -24 9q-19 8 -25 29.5zM713 717.5q0 21.5 14 36.5l98 98q14 16 35 16t37 -16t16 -36.5t-16 -35.5l-96 -98 q-14 -14 -37 -14t-37 14t-14 35.5zM834.5 573.5q5.5 20.5 23.5 30.5l100 55q43 25 70 -20q23 -45 -20 -70l-99 -55q-12 -6 -24 -6q-33 0 -45 27q-11 18 -5.5 38.5z" /> |
| 1129 | +<glyph unicode="â" horiz-adv-x="952" d="M102 512l390 389v-196h358v-386h-358v-196z" /> |
| 1130 | +<glyph unicode="ã" horiz-adv-x="983" d="M102 498l390 387l389 -387h-197v-361h-385v361h-197z" /> |
| 1131 | +<glyph unicode="ä" horiz-adv-x="983" d="M102 526h197v359h385v-359h197l-389 -389z" /> |
| 1132 | +<glyph unicode="å" horiz-adv-x="952" d="M102 317v388h359v196l389 -389l-389 -389v194h-359z" /> |
| 1133 | +<glyph unicode="ç" horiz-adv-x="952" d="M102 512l390 338v-197h358v-282h-358v-197z" /> |
| 1134 | +<glyph unicode="è" horiz-adv-x="880" d="M102 498l338 387l338 -387h-196v-361h-285v361h-195z" /> |
| 1135 | +<glyph unicode="é" horiz-adv-x="880" d="M102 526h195v359h285v-359h196l-338 -389z" /> |
| 1136 | +<glyph unicode="ê" horiz-adv-x="952" d="M102 369v284h359l2 197l387 -338l-389 -338l2 195h-361z" /> |
| 1137 | +<glyph unicode="ë" horiz-adv-x="1146" d="M102 512q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM205 512q0 -152 107.5 -260.5t260.5 -108.5q152 0 260.5 108.5t108.5 260.5t-108.5 260.5t-260.5 108.5q-154 0 -261 -108.5t-107 -260.5zM365 512l196 207v-115h209 v-184h-209v-115z" /> |
| 1138 | +<glyph unicode="ì" horiz-adv-x="1146" d="M102 512q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM205 512q0 -152 107.5 -260.5t260.5 -108.5q152 0 260.5 108.5t108.5 260.5t-108.5 260.5t-260.5 108.5q-154 0 -261 -108.5t-107 -260.5zM365 524l208 195l207 -195 h-114v-209h-185v209h-116z" /> |
| 1139 | +<glyph unicode="í" horiz-adv-x="1146" d="M102 512q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM205 512q0 -152 108.5 -260.5t260 -108.5t260 108.5t108.5 260.5q0 154 -108.5 261.5t-260 107.5t-260 -107.5t-108.5 -261.5zM367 500h114v211h185v-211h114 l-207 -195z" /> |
| 1140 | +<glyph unicode="î" horiz-adv-x="1146" d="M102 512q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM205 512q0 -152 107.5 -260.5t260.5 -108.5q152 0 260.5 108.5t108.5 260.5t-108.5 260.5t-260.5 108.5q-154 0 -261 -108.5t-107 -260.5zM375 420v184h211v115 l194 -207l-194 -207v115h-211z" /> |
| 1141 | +<glyph unicode="ï" horiz-adv-x="1128" d="M104.5 468q-6.5 11 10.5 28l411 411q14 16 37 16.5t39 -16.5l412 -411q16 -16 10 -27.5t-29 -11.5h-86v-316q0 -14 -1 -21t-8 -13.5t-21 -6.5h-209v316h-209v-316h-201q-18 0 -28.5 6.5t-11.5 13.5t-1 21v316h-86q-22 0 -28.5 11z" /> |
| 1142 | +<glyph unicode="ñ" horiz-adv-x="573" d="M102 51v871q0 51 41 51h277q23 0 37 -15.5t14 -35.5v-871l-184 185z" /> |
| 1143 | +<glyph unicode="ò" horiz-adv-x="1024" d="M102 205v307h103v-307h307v-103h-307q-43 0 -73 30t-30 73zM307 410v409q0 43 30 73t71 30h411q41 0 72 -31t31 -72v-409q0 -43 -31 -73t-72 -30h-409q-43 0 -73 30t-30 73zM410 410h409v409h-409v-409z" /> |
| 1144 | +<glyph unicode="ó" horiz-adv-x="1126" d="M102 266v656q0 25 23 43q25 14 49 4l389 -156l391 156q25 10 50 -4q20 -16 20 -43v-656q0 -33 -31 -47l-409 -164q-8 -2 -11 -4h-10h-8l-10 4l-410 164q-33 14 -33 47zM184 287l328 -131v573l-328 131v-573zM246 408v69l207 -82v-69zM246 621v69l207 -82v-69zM614 156 l328 131v573l-328 -131v-573zM676 326v69l207 82v-69zM676 539v69l207 82v-69z" /> |
| 1145 | +<glyph unicode="ô" horiz-adv-x="1013" d="M102 600q0 131 93.5 223t224.5 92t228 -97t97 -228q0 -90 -45 -164l193 -195q35 -35 6 -61l-47 -49q-33 -33 -70 0l-194 194q-76 -43 -160 -43q-131 0 -228.5 98.5t-97.5 229.5zM201 600q0 -90 68.5 -159.5t158.5 -69.5q92 0 156.5 64.5t64.5 154.5t-69.5 159.5 t-159.5 69.5t-154.5 -64.5t-64.5 -154.5z" /> |
| 1146 | +<glyph unicode="õ" horiz-adv-x="1024" d="M141 1058v482q0 68 78 67h461q76 0 76 -67v-482q0 -66 -76 -65h-461q-78 -1 -78 65zM0 256v512q0 41 30.5 71.5t71.5 30.5h820q43 0 72.5 -30.5t29.5 -71.5v-512q0 -43 -29.5 -72.5t-72.5 -29.5h-820q-41 0 -71.5 29.5t-30.5 72.5zM102 256h820v512h-820v-512z" /> |
| 1147 | +<glyph unicode="ö" horiz-adv-x="1146" d="M102 512q0 47 33 80t80 33t80 -34t33 -79t-33 -79t-80 -34t-80 33t-33 80zM461 512q0 47 32.5 80t79.5 33q45 0 79 -34t34 -79t-34 -79t-79 -34q-47 0 -79.5 33t-32.5 80zM819 512q0 47 33 80t80 33t79.5 -34t32.5 -79t-32.5 -79t-79.5 -34t-80 33t-33 80z" /> |
| 1148 | +<glyph unicode="ù" horiz-adv-x="903" d="M-43 1520q-2 195 134.5 335t330.5 142q195 4 335 -133t142.5 -331.5t-134 -334t-330.5 -143.5q-195 -2 -334.5 134t-143.5 331zM263 1522l16 -29q47 35 78 35q8 0 0 -35l-39 -153q-29 -109 35 -109q31 0 86 27.5t108 81.5l-18 24q-49 -37 -74 -37q-12 0 -4 39l43 162 q27 98 -20 98q-31 0 -92.5 -28.5t-118.5 -75.5zM385 1764q-2 -29 15.5 -44.5t50.5 -15.5q39 0 62.5 22.5t23.5 53.5q0 59 -61 59q-43 0 -67 -23t-24 -52zM104 801q-6 47 93.5 89t255 42t254 -42t92.5 -89l-74 -608q-2 -12 -35 -36t-98.5 -44.5t-139 -20.5t-140 20.5 t-99.5 44t-35 36.5zM178 790.5q0 -12.5 33 -30t100.5 -32.5t141 -15t140 15t99.5 32.5t33 30t-33 30t-99.5 32.5t-140 15t-141 -15t-100.5 -32.5t-33 -30z" /> |
| 1149 | +<glyph unicode="û" horiz-adv-x="903" d="M-107 1526q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM6 1526q0 -131 80 -227l504 503q-98 82 -226 82q-150 0 -254 -104t-104 -254zM110 1272zM137 1247q100 -80 227 -79q147 0 253 104t106 254q0 129 -82 227zM616 1780 zM104 801q-6 47 93.5 89t255 42t254 -42t92.5 -89l-74 -608q-2 -12 -35 -36t-98.5 -44.5t-139 -20.5t-140 20.5t-99.5 44t-35 36.5zM178 790.5q0 -12.5 33 -30t100.5 -32.5t141 -15t140 15t99.5 32.5t33 30t-33 30t-99.5 32.5t-140 15t-141 -15t-100.5 -32.5t-33 -30z" /> |
| 1150 | +<glyph unicode="Œ" horiz-adv-x="1906" d="M962 322q100 -58 216 -59q30 0 62 4q151 19 259.5 128t127.5 259q4 31 4 62q0 115 -58 216q55 -31 98 -74q131 -133 131 -317.5t-131 -317.5q-131 -131 -316.5 -131t-316.5 131q-43 44 -76 99zM102 492v141q0 20 21 20h31q20 0 20 -20v-141q0 -68 60.5 -126.5 t195.5 -58.5t195.5 59.5t60.5 125.5v141q0 20 21 20h30q20 0 21 -20v-141q0 -94 -71 -168t-206 -86v-136h133q20 0 21 -20v-62q0 -20 -21 -20h-368q-20 0 -21 20v62q0 20 21 20h133v136q-135 12 -206 86t-71 168zM276 492v161h308v-161q0 -31 -37 -56.5t-117 -25.5 q-82 0 -118 25.5t-36 56.5zM276 725v217q0 31 36 56.5t118 25.5q80 0 117 -25.5t37 -56.5v-217h-308z" /> |
| 1151 | +<glyph unicode="œ" horiz-adv-x="2191" d="M1126 522h125q4 170 126 290t292 120q174 0 297 -123t123 -297t-123 -297t-297 -123q-143 0 -258 88l72 78q84 -61 186 -61q131 0 222 92t91 223t-91 223t-222 92q-127 0 -218 -89t-95 -216h145l-188 -209zM0 256v512q0 41 30.5 71.5t71.5 30.5h820q43 0 72.5 -30.5 t29.5 -71.5v-512q0 -43 -29.5 -72.5t-72.5 -29.5h-820q-41 0 -71.5 29.5t-30.5 72.5zM102 256h820v512h-820v-512z" /> |
| 1152 | +<glyph unicode="ˆ" horiz-adv-x="1146" d="M102 512q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM215 512q0 -131 80 -227l504 503q-98 82 -226 82q-150 0 -254 -104t-104 -254zM319 258zM346 233q100 -80 227 -79q147 0 253 104t106 254q0 129 -82 227zM825 766z " /> |
| 1153 | +<glyph unicode="˜" horiz-adv-x="1024" d="M-371 188v482q0 68 78 67h461q76 0 76 -67v-482q0 -66 -76 -65h-461q-78 -1 -78 65z" /> |
| 1154 | +<glyph unicode=" " horiz-adv-x="1044" /> |
| 1155 | +<glyph unicode=" " horiz-adv-x="2088" /> |
| 1156 | +<glyph unicode=" " horiz-adv-x="1044" /> |
| 1157 | +<glyph unicode=" " horiz-adv-x="2088" /> |
| 1158 | +<glyph unicode=" " horiz-adv-x="696" /> |
| 1159 | +<glyph unicode=" " horiz-adv-x="522" /> |
| 1160 | +<glyph unicode=" " horiz-adv-x="348" /> |
| 1161 | +<glyph unicode=" " horiz-adv-x="348" /> |
| 1162 | +<glyph unicode=" " horiz-adv-x="260" /> |
| 1163 | +<glyph unicode=" " horiz-adv-x="417" /> |
| 1164 | +<glyph unicode=" " horiz-adv-x="114" /> |
| 1165 | +<glyph unicode="‐" d="M102 51v205q18 8 48 17.5t34 11.5q96 35 132 69.5t36 98.5q0 23 -23.5 49t-31.5 76q-2 12 -23.5 24t-25.5 62q0 16 5 26t9 15l6 2q-10 51 -14 90q-4 55 43 115.5t164 60.5q115 0 162 -60.5t43 -115.5l-15 -90q20 -8 21 -43q-4 -49 -25.5 -61.5t-23.5 -24.5 q-8 -49 -32 -76t-24 -49q0 -63 36 -98.5t132 -69.5q186 -70 187 -125v-109h-820zM717 461v102h153v154h103v-154h153v-102h-153v-154h-103v154h-153z" /> |
| 1166 | +<glyph unicode="‑" d="M102 51v205q18 8 48 17.5t34 11.5q96 35 132 69.5t36 98.5q0 23 -23.5 49t-31.5 76q-2 12 -23.5 24t-25.5 62q0 16 5 26t9 15l6 2q-10 51 -14 90q-4 55 43 115.5t164 60.5q115 0 162 -60.5t43 -115.5l-15 -90q20 -8 21 -43q-4 -49 -25.5 -61.5t-23.5 -24.5 q-8 -49 -32 -76t-24 -49q0 -63 36 -98.5t132 -69.5q186 -70 187 -125v-109h-820zM717 461v102h153v154h103v-154h153v-102h-153v-154h-103v154h-153z" /> |
| 1167 | +<glyph unicode="‒" d="M102 51v205q18 8 48 17.5t34 11.5q96 35 132 69.5t36 98.5q0 23 -23.5 49t-31.5 76q-2 12 -23.5 24t-25.5 62q0 16 5 26t9 15l6 2q-10 51 -14 90q-4 55 43 115.5t164 60.5q115 0 162 -60.5t43 -115.5l-15 -90q20 -8 21 -43q-4 -49 -25.5 -61.5t-23.5 -24.5 q-8 -49 -32 -76t-24 -49q0 -63 36 -98.5t132 -69.5q186 -70 187 -125v-109h-820zM717 461v102h153v154h103v-154h153v-102h-153v-154h-103v154h-153z" /> |
| 1168 | +<glyph unicode="–" horiz-adv-x="1024" d="M102 51v922h820v-922h-820z" /> |
| 1169 | +<glyph unicode="—" horiz-adv-x="2048" d="M102 51v922h1844v-922h-1844z" /> |
| 1170 | +<glyph unicode="‘" horiz-adv-x="1150" d="M104 506q-2 195 134.5 335t330.5 142q195 4 335 -133t142.5 -331.5t-134 -334t-330.5 -143.5q-195 -2 -334.5 134t-143.5 331zM410 508l16 -29q47 35 78 35q8 0 0 -35l-39 -153q-29 -109 35 -109q31 0 86 27.5t108 81.5l-18 24q-49 -37 -74 -37q-12 0 -4 39l43 162 q27 98 -20 98q-31 0 -92.5 -28.5t-118.5 -75.5zM532 750q-2 -29 15.5 -44.5t50.5 -15.5q39 0 62.5 22.5t23.5 53.5q0 59 -61 59q-43 0 -67 -23t-24 -52z" /> |
| 1171 | +<glyph unicode="’" horiz-adv-x="1165" d="M104 252q-2 98 84 197q37 35 236 234.5t272 270.5q82 82 181 56q45 -12 79.5 -47t47.5 -82q27 -98 -54 -179l-485 -485q-43 -45 -90 -47q-49 -6 -82 27q-31 25 -28 76t46 96l342 340q27 27 49 0q27 -25 0 -52l-340 -340q-45 -45 -20 -69q8 -8 25 -8q20 2 47 26l485 486 q51 53 35 110q-14 61 -78 78q-57 16 -108 -35l-508 -508q-66 -76 -64 -144.5t53 -119.5q49 -51 119 -53t146 63l505 508q25 25 51.5 0.5t0.5 -51.5l-508 -508q-84 -84 -189 -84q-102 0 -176 74q-72 72 -74 170z" /> |
| 1172 | +<glyph unicode="“" horiz-adv-x="798" d="M102 113v798q0 41 31 72t72 31h389q43 0 72.5 -31t29.5 -72v-798q0 -43 -29.5 -73t-72.5 -30h-389q-41 0 -72 30t-31 73zM184 205h430v676h-430v-676zM328 102.5q0 -20.5 21.5 -36t49.5 -15.5q31 0 51.5 14.5t20.5 37t-20.5 37t-51.5 14.5q-29 0 -50 -15.5t-21 -36z" /> |
| 1173 | +<glyph unicode="”" horiz-adv-x="798" d="M102 113v798q0 41 31 72t72 31h389q43 0 72.5 -31t29.5 -72v-798q0 -43 -29.5 -73t-72.5 -30h-389q-41 0 -72 30t-31 73zM184 205h430v676h-430v-676zM328 102.5q0 -20.5 21.5 -36t49.5 -15.5q31 0 51.5 14.5t20.5 37t-20.5 37t-51.5 14.5q-29 0 -50 -15.5t-21 -36z" /> |
| 1174 | +<glyph unicode="…" horiz-adv-x="3686" d="M2560 205v614q0 41 30 72t73 31h819q41 0 71.5 -31t30.5 -72v-614q0 -43 -30.5 -73t-71.5 -30h-819q-43 0 -73 30t-30 73zM2663 205h819v614h-819v-614zM2765 311v92h256v-92h-256zM2765 465v92h256v-92h-256zM2765 618v93h256v-93h-256zM3124 311q0 72 4 72q88 25 88 68 q0 16 -29 57t-29 90q0 113 93 113q51 0 71.5 -28t20.5 -85q0 -49 -28 -90t-28 -57q0 -18 21.5 -36t42.5 -26l22 -6l7 -72h-256zM1331 205v614q0 41 30 72t73 31h819q41 0 71.5 -31t30.5 -72v-614q0 -43 -30.5 -73t-71.5 -30h-819q-43 0 -73 30t-30 73zM1434 205h819v614 h-819v-614zM1536 311v92h256v-92h-256zM1536 465v92h256v-92h-256zM1536 618v93h256v-93h-256zM1895 311q0 72 4 72q88 25 88 68q0 16 -29 57t-29 90q0 113 93 113q51 0 71.5 -28t20.5 -85q0 -49 -28 -90t-28 -57q0 -18 21.5 -36t42.5 -26l22 -6l7 -72h-256zM102 205v614 q0 41 30 72t73 31h819q41 0 71.5 -31t30.5 -72v-614q0 -43 -30.5 -73t-71.5 -30h-819q-43 0 -73 30t-30 73zM205 205h819v614h-819v-614zM307 311v92h256v-92h-256zM307 465v92h256v-92h-256zM307 618v93h256v-93h-256zM666 311q0 72 4 72q88 25 88 68q0 16 -29 57t-29 90 q0 113 93 113q51 0 71.5 -28t20.5 -85q0 -49 -28 -90t-28 -57q0 -18 21.5 -36t42.5 -26l22 -6l7 -72h-256z" /> |
| 1175 | +<glyph unicode=" " horiz-adv-x="417" /> |
| 1176 | +<glyph unicode="‹" horiz-adv-x="1208" d="M102 393v180q0 23 17.5 42.5t38.5 19.5h891q20 0 38.5 -19.5t18.5 -42.5v-180q0 -20 -18.5 -40.5t-38.5 -20.5h-101l45 -256h-778l45 256h-102q-20 0 -38 20.5t-18 40.5zM146.5 716q3.5 9 11.5 11q23 10 104.5 38t99.5 28h48v153h389v-153h45q18 0 100 -28t105 -38 q8 -2 11 -11t-3 -17.5t-19 -8.5h-870q-12 0 -18.5 8.5t-3 17.5zM317 178h574l-72 334h-430z" /> |
| 1177 | +<glyph unicode="›" horiz-adv-x="1024" d="M102 295q0 78 58 135l153 152q72 72 147 81t130 -47q16 -14 16 -34.5t-16 -36.5q-14 -16 -36 -16.5t-36 16.5q-49 49 -133 -35l-154 -152q-27 -27 -26 -63q0 -35 26 -66q27 -27 66 -26.5t65 26.5l41 43q37 33 72 -2q16 -14 16.5 -35.5t-16.5 -35.5l-41 -41 q-57 -55 -137 -55.5t-137 55.5q-58 57 -58 137zM436 401q-35 37 0 72q14 14 35 14t37 -14q49 -49 123 25l164 161q27 27 26 64q0 35 -26 65q-68 61 -121 9l-51 -52q-37 -33 -72 3q-14 14 -14 34.5t14 36.5l51 51q55 53 130 50.5t134 -60.5q55 -55 56 -137q0 -80 -56 -135 l-164 -162q-76 -76 -153 -76q-64 0 -113 51z" /> |
| 1178 | +<glyph unicode=" " horiz-adv-x="522" /> |
| 1179 | +<glyph unicode="™" horiz-adv-x="948" d="M102 500l193 331l123 -69q68 -39 94 -105l213 367l57 -35l-108 -188l63 -39q78 -45 100.5 -121t-18.5 -145q-55 -92 -157 -97q49 -90 -5 -182q-41 -72 -117.5 -90t-154.5 25l-66 38l-108 -190l-59 33l213 366q-68 -10 -138 29zM193 520l65 -39q53 -29 102.5 -15.5t78 63 t14 99.5t-65.5 81l-65 36zM350 244l66 -39q53 -31 102 -17.5t78 62.5t15.5 100t-64.5 80l-66 39q0 -2 -2 -6zM512 520l66 -37q53 -29 102 -15.5t77.5 63t15.5 99.5t-64 79l-66 39l-129 -222q0 -4 -2 -6z" /> |
| 1180 | +<glyph unicode="" horiz-adv-x="895" d="M0 895h895v-895h-895v895z" /> |
| 1181 | +<glyph unicode="fi" horiz-adv-x="2150" d="M1331 307.5q0 20.5 14.5 35.5t37.5 15h614q20 0 35.5 -15t15.5 -35.5t-15.5 -36t-35.5 -15.5h-614q-23 0 -37.5 15.5t-14.5 36zM1331 512q0 20 14.5 35.5t37.5 15.5h614q20 0 35.5 -15.5t15.5 -35.5t-15.5 -35.5t-35.5 -15.5h-614q-23 0 -37.5 15.5t-14.5 35.5z M1331 716.5q0 20.5 14.5 36t37.5 15.5h614q20 0 35.5 -15.5t15.5 -36t-15.5 -35.5t-35.5 -15h-614q-23 0 -37.5 15t-14.5 35.5zM102 205v143h109q55 0 107.5 33t82 67.5t84.5 106.5q63 84 103.5 129t120 90t168.5 45h34v123l215 -184l-215 -185v103h-34q-55 0 -108.5 -33 t-83.5 -67.5t-85 -106.5q-49 -63 -76.5 -96t-79 -79t-108.5 -67.5t-125 -21.5h-109zM102 666v143h109q139 0 258 -109q-57 -72 -63 -82q-8 -12 -25 -32q-80 80 -170 80h-109zM608 313q47 59 74 95q0 2 6 9t8 11q90 -90 181 -90h34v102l215 -184l-215 -184v123h-34 q-146 -1 -269 118z" /> |
| 1182 | +<glyph unicode="fl" horiz-adv-x="2150" d="M1331 154v716q0 41 30 72t73 31h512q41 0 71.5 -31t30.5 -72v-716q0 -43 -30.5 -73t-71.5 -30h-512q-43 0 -73 30t-30 73zM1434 154h512v716h-512v-716zM1546 268v88h287v-88h-287zM1546 670v90h287v-90h-287zM1548 467v92h287v-92h-287zM102 205v143h109q55 0 107.5 33 t82 67.5t84.5 106.5q63 84 103.5 129t120 90t168.5 45h34v123l215 -184l-215 -185v103h-34q-55 0 -108.5 -33t-83.5 -67.5t-85 -106.5q-49 -63 -76.5 -96t-79 -79t-108.5 -67.5t-125 -21.5h-109zM102 666v143h109q139 0 258 -109q-57 -72 -63 -82q-8 -12 -25 -32 q-80 80 -170 80h-109zM608 313q47 59 74 95q0 2 6 9t8 11q90 -90 181 -90h34v102l215 -184l-215 -184v123h-34q-146 -1 -269 118z" /> |
| 1183 | +<glyph unicode="ffi" horiz-adv-x="3379" d="M2560 307.5q0 20.5 14.5 35.5t37.5 15h614q20 0 35.5 -15t15.5 -35.5t-15.5 -36t-35.5 -15.5h-614q-23 0 -37.5 15.5t-14.5 36zM2560 512q0 20 14.5 35.5t37.5 15.5h614q20 0 35.5 -15.5t15.5 -35.5t-15.5 -35.5t-35.5 -15.5h-614q-23 0 -37.5 15.5t-14.5 35.5z M2560 716.5q0 20.5 14.5 36t37.5 15.5h614q20 0 35.5 -15.5t15.5 -36t-15.5 -35.5t-35.5 -15h-614q-23 0 -37.5 15t-14.5 35.5zM1331 205v143h109q55 0 107.5 33t82 67.5t84.5 106.5q63 84 103.5 129t120 90t168.5 45h34v123l215 -184l-215 -185v103h-34q-55 0 -108.5 -33 t-83.5 -67.5t-85 -106.5q-49 -63 -76.5 -96t-79 -79t-108.5 -67.5t-125 -21.5h-109zM1331 666v143h109q139 0 258 -109q-57 -72 -63 -82q-8 -12 -25 -32q-80 80 -170 80h-109zM1837 313q47 59 74 95q0 2 6 9t8 11q90 -90 181 -90h34v102l215 -184l-215 -184v123h-34 q-146 -1 -269 118zM102 205v143h109q55 0 107.5 33t82 67.5t84.5 106.5q63 84 103.5 129t120 90t168.5 45h34v123l215 -184l-215 -185v103h-34q-55 0 -108.5 -33t-83.5 -67.5t-85 -106.5q-49 -63 -76.5 -96t-79 -79t-108.5 -67.5t-125 -21.5h-109zM102 666v143h109 q139 0 258 -109q-57 -72 -63 -82q-8 -12 -25 -32q-80 80 -170 80h-109zM608 313q47 59 74 95q0 2 6 9t8 11q90 -90 181 -90h34v102l215 -184l-215 -184v123h-34q-146 -1 -269 118z" /> |
| 1184 | +<glyph unicode="ffl" horiz-adv-x="3379" d="M2560 154v716q0 41 30 72t73 31h512q41 0 71.5 -31t30.5 -72v-716q0 -43 -30.5 -73t-71.5 -30h-512q-43 0 -73 30t-30 73zM2663 154h512v716h-512v-716zM2775 268v88h287v-88h-287zM2775 670v90h287v-90h-287zM2777 467v92h287v-92h-287zM1331 205v143h109q55 0 107.5 33 t82 67.5t84.5 106.5q63 84 103.5 129t120 90t168.5 45h34v123l215 -184l-215 -185v103h-34q-55 0 -108.5 -33t-83.5 -67.5t-85 -106.5q-49 -63 -76.5 -96t-79 -79t-108.5 -67.5t-125 -21.5h-109zM1331 666v143h109q139 0 258 -109q-57 -72 -63 -82q-8 -12 -25 -32 q-80 80 -170 80h-109zM1837 313q47 59 74 95q0 2 6 9t8 11q90 -90 181 -90h34v102l215 -184l-215 -184v123h-34q-146 -1 -269 118zM102 205v143h109q55 0 107.5 33t82 67.5t84.5 106.5q63 84 103.5 129t120 90t168.5 45h34v123l215 -184l-215 -185v103h-34q-55 0 -108.5 -33 t-83.5 -67.5t-85 -106.5q-49 -63 -76.5 -96t-79 -79t-108.5 -67.5t-125 -21.5h-109zM102 666v143h109q139 0 258 -109q-57 -72 -63 -82q-8 -12 -25 -32q-80 80 -170 80h-109zM608 313q47 59 74 95q0 2 6 9t8 11q90 -90 181 -90h34v102l215 -184l-215 -184v123h-34 q-146 -1 -269 118z" /> |
| 1185 | +</font> |
| 1186 | +</defs></svg> |
| 1187 | \ No newline at end of file |
| 1188 | |
| 1189 | === added file 'loco_directory/media/fonts/entypo-webfont.ttf' |
| 1190 | Binary files loco_directory/media/fonts/entypo-webfont.ttf 1970-01-01 00:00:00 +0000 and loco_directory/media/fonts/entypo-webfont.ttf 2012-10-30 12:31:21 +0000 differ |
| 1191 | === added file 'loco_directory/media/fonts/entypo-webfont.woff' |
| 1192 | Binary files loco_directory/media/fonts/entypo-webfont.woff 1970-01-01 00:00:00 +0000 and loco_directory/media/fonts/entypo-webfont.woff 2012-10-30 12:31:21 +0000 differ |
| 1193 | === added file 'loco_directory/media/fonts/stylesheet.css' |
| 1194 | --- loco_directory/media/fonts/stylesheet.css 1970-01-01 00:00:00 +0000 |
| 1195 | +++ loco_directory/media/fonts/stylesheet.css 2012-10-30 12:31:21 +0000 |
| 1196 | @@ -0,0 +1,16 @@ |
| 1197 | +/* Generated by Font Squirrel (http://www.fontsquirrel.com) on February 10, 2012 */ |
| 1198 | + |
| 1199 | + |
| 1200 | + |
| 1201 | +@font-face { |
| 1202 | + font-family: 'EntypoRegular'; |
| 1203 | + src: url('entypo-webfont.eot'); |
| 1204 | + src: url('entypo-webfont.eot?#iefix') format('embedded-opentype'), |
| 1205 | + url('entypo-webfont.woff') format('woff'), |
| 1206 | + url('entypo-webfont.ttf') format('truetype'), |
| 1207 | + url('entypo-webfont.svg#EntypoRegular') format('svg'); |
| 1208 | + font-weight: normal; |
| 1209 | + font-style: normal; |
| 1210 | + |
| 1211 | +} |
| 1212 | + |
| 1213 | |
| 1214 | === added file 'loco_directory/media/images/bg_btn.png' |
| 1215 | Binary files loco_directory/media/images/bg_btn.png 1970-01-01 00:00:00 +0000 and loco_directory/media/images/bg_btn.png 2012-10-30 12:31:21 +0000 differ |
| 1216 | === added file 'loco_directory/media/js/comments.js' |
| 1217 | --- loco_directory/media/js/comments.js 1970-01-01 00:00:00 +0000 |
| 1218 | +++ loco_directory/media/js/comments.js 2012-10-30 12:31:21 +0000 |
| 1219 | @@ -0,0 +1,50 @@ |
| 1220 | +$(document).ready(function(){ |
| 1221 | + |
| 1222 | + $(".edit").bind("click", updateText); |
| 1223 | + |
| 1224 | + var orig_comment, new_comment; |
| 1225 | + |
| 1226 | + $(".save").live("click", function (e) { |
| 1227 | + $(this).text("Saving..."); |
| 1228 | + |
| 1229 | + new_comment = $(this).siblings("form").children(".edit").val(); |
| 1230 | + var comment_id = $(this).parent().parent().parent().attr('id').match(/\d+/); |
| 1231 | + data = 'id=' + comment_id + '&comment=' + new_comment; |
| 1232 | + save_obj = $(this); |
| 1233 | + alert(comment_id); |
| 1234 | + |
| 1235 | + $.post("/events/comment-update/", data, function (result) { |
| 1236 | + if (result.success) |
| 1237 | + save_obj.parent().html(result.response.replace(/\n/g, "<br />")).removeClass("selected"); |
| 1238 | + else |
| 1239 | + { |
| 1240 | + save_obj.parent().parent().children('div.comment-error').html(result.response); |
| 1241 | + save_obj.parent().parent().children('div.comment-error').show(); |
| 1242 | + save_obj.parent().html(orig_comment); |
| 1243 | + } |
| 1244 | + |
| 1245 | + }, "json"); |
| 1246 | + |
| 1247 | + $(this).parent().children('.comment-meta').children('.edit').show(); |
| 1248 | + e.preventDefault(); |
| 1249 | + |
| 1250 | + }); |
| 1251 | + |
| 1252 | + $(".revert").live("click", function (e) { |
| 1253 | + $(this).parent().parent().children('.comment-meta').children('.edit').show(); |
| 1254 | + $(this).parent().html(orig_comment).removeClass("selected"); |
| 1255 | + e.preventDefault(); |
| 1256 | + }); |
| 1257 | + |
| 1258 | + function updateText(e) { |
| 1259 | + $(this).hide(); |
| 1260 | + orig_comment = $.trim($(this).parent().parent().children("div.comment-comment").text()); |
| 1261 | + $(this).parent().parent().children("div.comment-comment").addClass("selected").html('<form ><textarea class="edit">' + orig_comment + ' </textarea> </form><a href="#" class="save">Save</a> or <a href="#" class="revert">Cancel</a>').unbind('click', updateText); |
| 1262 | + e.preventDefault(); |
| 1263 | + } |
| 1264 | + |
| 1265 | + if(window.location.hash) { |
| 1266 | + $(window.location.hash).addClass("highlight"); |
| 1267 | + } |
| 1268 | + |
| 1269 | +}); |
| 1270 | |
| 1271 | === modified file 'loco_directory/settings.py' |
| 1272 | --- loco_directory/settings.py 2012-09-08 22:44:15 +0000 |
| 1273 | +++ loco_directory/settings.py 2012-10-30 12:31:21 +0000 |
| 1274 | @@ -184,6 +184,8 @@ |
| 1275 | # Automatically map lp team membership to ld group membership |
| 1276 | OPENID_LAUNCHPAD_TEAMS_MAPPING_AUTO = True |
| 1277 | |
| 1278 | +OPENID_SREG_REQUIRED_FIELDS = ['email'] |
| 1279 | + |
| 1280 | # Tell django.contrib.auth to use the OpenID signin URLs. |
| 1281 | LOGIN_URL = '/openid/login' |
| 1282 | LOGIN_REDIRECT_URL = '/' |
| 1283 | |
| 1284 | === modified file 'loco_directory/templates/events/team_event_comment_new.inc.html' |
| 1285 | --- loco_directory/templates/events/team_event_comment_new.inc.html 2012-06-30 23:38:17 +0000 |
| 1286 | +++ loco_directory/templates/events/team_event_comment_new.inc.html 2012-10-30 12:31:21 +0000 |
| 1287 | @@ -1,24 +1,19 @@ |
| 1288 | {% load i18n %} |
| 1289 | |
| 1290 | +<div class="comment-form"> |
| 1291 | {% if user.is_authenticated %} |
| 1292 | -<div class="row"> |
| 1293 | - <section class="span-8"> |
| 1294 | - <form action="." method="post"> |
| 1295 | - <fieldset> |
| 1296 | - <h3>{%trans "Team Event Comment" %}</h3> |
| 1297 | - {{ form.as_template }} |
| 1298 | - </fieldset> |
| 1299 | - {% if is_popup %}<input type="hidden" name="_popup" value="1">{% endif %} |
| 1300 | - <input type="submit" name="submit" value="{% trans "Submit" %}" class="submit-button" /> |
| 1301 | - </form> |
| 1302 | - </section> |
| 1303 | + <div class="mugshot"> |
| 1304 | + <a href="https://launchpad.net/~{{ user.username }}" class="url" rel="contact" title="{{ user.get_full_name }}"> |
| 1305 | + <img alt="" class="photo fn" src="{% if comment.commenter_profile.mugshot %}{{ comment.commenter_profile.mugshot }}{% else %}{{MEDIA_URL}}img/default-mugshot.png{% endif %}"> |
| 1306 | + </a> |
| 1307 | + </div> |
| 1308 | + <form action="." method="post"> |
| 1309 | + <textarea required id="id_comment" rows="10" cols="40" name="comment"></textarea> |
| 1310 | + <input type="submit" name="submit" value="{% trans "Submit" %}" class="submit-button" /> |
| 1311 | + </form> |
| 1312 | </div> |
| 1313 | - |
| 1314 | {% else %} |
| 1315 | - |
| 1316 | -<div class="row"> |
| 1317 | - <section class="span-8"> |
| 1318 | - {% blocktrans with team_event_object.get_absolute_url as login_next %}To post your comment you need to <a href="/openid/login?next={{login_next}}">login</a> or <a href="/openid/login/?next={{ login_next }}">create</a> a new account{% endblocktrans %} |
| 1319 | - </section> |
| 1320 | +<div style="padding:10px;"> |
| 1321 | + {% blocktrans with team_event_object.get_absolute_url as login_next %}To post your comment you need to <a href="/openid/login?next={{login_next}}">login</a> or <a href="/openid/login/?next={{ login_next }}">create</a> a new account{% endblocktrans %} |
| 1322 | </div> |
| 1323 | {% endif %} |
| 1324 | |
| 1325 | === modified file 'loco_directory/templates/events/team_event_detail.html' |
| 1326 | --- loco_directory/templates/events/team_event_detail.html 2012-06-30 23:38:17 +0000 |
| 1327 | +++ loco_directory/templates/events/team_event_detail.html 2012-10-30 12:31:21 +0000 |
| 1328 | @@ -19,6 +19,7 @@ |
| 1329 | <meta property="og:street-address" content="{{ team_event_object.venue.name }} "/> |
| 1330 | <meta property="og:locality" content="{% if team_event_object.venue.city %}{{ team_event_object.venue.city }}{% endif %}"/> |
| 1331 | {% endif %} |
| 1332 | +<script type="text/javascript" src="{{ MEDIA_URL }}js/comments.js"></script> |
| 1333 | {{form.media}} |
| 1334 | <script type="text/javascript"> |
| 1335 | $(document).ready(function(){ |
| 1336 | |
| 1337 | === modified file 'loco_directory/templates/events/team_event_detail.inc.html' |
| 1338 | --- loco_directory/templates/events/team_event_detail.inc.html 2012-07-01 13:02:49 +0000 |
| 1339 | +++ loco_directory/templates/events/team_event_detail.inc.html 2012-10-30 12:31:21 +0000 |
| 1340 | @@ -1,57 +1,122 @@ |
| 1341 | {% load i18n markup %} |
| 1342 | <div class="row"> |
| 1343 | - <section class="span-6"> |
| 1344 | - <h2>{{team_event_object.name}}</h2> |
| 1345 | - {% if team_event_object.description %} |
| 1346 | - <table id="team-event-basic"> |
| 1347 | - <tr> |
| 1348 | - <td class="form-item-value">{{ team_event_object.description|markdown:'safe'|linebreaks }}</td> |
| 1349 | - </tr> |
| 1350 | - </table> |
| 1351 | + <section class="span-9"> |
| 1352 | + <div class="box_content"> |
| 1353 | + <div class="pagelet"> |
| 1354 | + <h3>{{ team_event_object.name }}</h3> |
| 1355 | + {% if team_event_object.global_event %} |
| 1356 | + <div class="event-partofglobal-event"> |
| 1357 | + {% trans "This event is part of" %} |
| 1358 | + <a href="{{ team_event_object.global_event.get_absolute_url }}">{{team_event_object.global_event.name }}</a> |
| 1359 | + </div> |
| 1360 | + {% endif %} |
| 1361 | + <div class="share"> |
| 1362 | + <div id="fb-root"></div> |
| 1363 | + <script>(function(d, s, id) { |
| 1364 | + var js, fjs = d.getElementsByTagName(s)[0]; |
| 1365 | + if (d.getElementById(id)) {return;} |
| 1366 | + js = d.createElement(s); js.id = id; |
| 1367 | + js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=127188230723188"; |
| 1368 | + fjs.parentNode.insertBefore(js, fjs); |
| 1369 | + }(document, 'script', 'facebook-jssdk'));</script> |
| 1370 | + <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script> |
| 1371 | + <script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> |
| 1372 | + <g:plusone size="medium"></g:plusone> |
| 1373 | + <a href="http://twitter.com/share" class="twitter-share-button" data-lang="en">Tweet</a> |
| 1374 | + <div class="fb-like" data-href="http://loco.ubuntu.com{% url team-event-detail team_event_object.first_team.lp_name team_event_object.id %}" data-send="false" data-layout="button_count" data-width="40" data-show-faces="false" data-font="arial"></div> |
| 1375 | + </div> |
| 1376 | + |
| 1377 | + {% if team_event_object.global_event %} |
| 1378 | + <div> |
| 1379 | + <span class="pictogram calendar"></span> |
| 1380 | + <span class="pictogram-l"> |
| 1381 | + {% ifequal team_event_object.local_date_begin|date team_event_object.local_date_end|date %} |
| 1382 | + {{ team_event_object.local_date_begin|date:"D, d N Y H:i" }} - {{ team_event_object.local_date_end|date:"H:i T" }} |
| 1383 | + {% else %} |
| 1384 | + {{ team_event_object.local_date_begin|date:"D, d N Y H:i" }} - {{ team_event_object.local_date_end|date:"D, d N Y H:i T" }} |
| 1385 | + {% endifequal %} |
| 1386 | + </span> |
| 1387 | + </div> |
| 1388 | + {% endif %} |
| 1389 | + |
| 1390 | + {% if team_event_object.description %} |
| 1391 | + <p>{{ team_event_object.description|markdown:'safe'|linebreaks }}</p> |
| 1392 | + {% endif %} |
| 1393 | + |
| 1394 | + {% if team_event_object.announce %} |
| 1395 | + <div> |
| 1396 | + <span class="pictogram announcement"></span> |
| 1397 | + <a class="pictogram-l" href="{{ team_event_object.announce }}">{{team_event_object.announce }}</a> |
| 1398 | + </div> |
| 1399 | + {% endif %} |
| 1400 | + </div> |
| 1401 | + |
| 1402 | + <div class="map"> |
| 1403 | + <img class="map_img" src="http://maps.googleapis.com/maps/api/staticmap?center=Brooklyn+Bridge,New+York,NY&zoom=13&size=640x100&scale=1&maptype=roadmap&markers=color:orange%7Clabel:S%7C40.702147,-74.015794&sensor=false"> |
| 1404 | + </div> |
| 1405 | + {% if team_event_object.venue %} |
| 1406 | + <div class="event-venue"> |
| 1407 | + <a title="{% trans "show venue details" %}" href="{{ team_event_object.venue.get_absolute_url }}"> |
| 1408 | + <div class="event-venue-name"> |
| 1409 | + {{ team_event_object.venue.name }} |
| 1410 | + </div> |
| 1411 | + </a> |
| 1412 | + |
| 1413 | + <div class="event-venue-city"> |
| 1414 | + {% if team_event_object.venue.city %}{{ team_event_object.venue.city }}{% endif %} |
| 1415 | + </div> |
| 1416 | + |
| 1417 | + <div class="event-venue-adress"> |
| 1418 | + {% if team_event_object.venue.address %}{{ team_event_object.venue.address }}{% endif %}{% if team_event_object.venue.spr %}, {{ team_event_object.venue.spr }}{% endif %} |
| 1419 | + </div> |
| 1420 | + </div> |
| 1421 | + {% endif %} |
| 1422 | + <div> |
| 1423 | + |
| 1424 | + {% if team_event_object.teameventcomment_set.all %} |
| 1425 | + {% include "events/team_event_detail_comments.inc.html" %} |
| 1426 | {% endif %} |
| 1427 | - <h3>{% trans "Details" %}</h3> |
| 1428 | - {% include "events/team_event_detail_basic.inc.html" %} |
| 1429 | - <div class="share"> |
| 1430 | - <a href="http://www.reddit.com/submit" onclick="window.location = 'http://www.reddit.com/submit?url=' + encodeURIComponent(window.location); return false"> <img style="padding-bottom: 4px;"src="http://www.reddit.com/static/spreddit7.gif" alt="submit to reddit" border="0" /></a><br /> |
| 1431 | - <div id="fb-root"></div> |
| 1432 | - <script>(function(d, s, id) { |
| 1433 | - var js, fjs = d.getElementsByTagName(s)[0]; |
| 1434 | - if (d.getElementById(id)) {return;} |
| 1435 | - js = d.createElement(s); js.id = id; |
| 1436 | - js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=127188230723188"; |
| 1437 | - fjs.parentNode.insertBefore(js, fjs); |
| 1438 | - }(document, 'script', 'facebook-jssdk'));</script> |
| 1439 | - <div class="fb-like" data-href="http://loco.ubuntu.com{% url team-event-detail team_event_object.first_team.lp_name team_event_object.id %}" data-send="false" data-layout="box_count" data-width="40" data-show-faces="false" data-font="arial"></div> |
| 1440 | - <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script> |
| 1441 | - <g:plusone size="tall"></g:plusone> |
| 1442 | - <a href="http://twitter.com/share" class="twitter-share-button" data-count="vertical" data-lang="en">Tweet</a> |
| 1443 | - <script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> |
| 1444 | - <script src="http://www.stumbleupon.com/hostedbadge.php?s=5"></script> |
| 1445 | -</div> |
| 1446 | + {% include "events/team_event_comment_new.inc.html" %} |
| 1447 | + </div> |
| 1448 | + </div> |
| 1449 | </section> |
| 1450 | - <section class="span-6 last"> |
| 1451 | - <h3> |
| 1452 | - {% if team_event_object.registration %} |
| 1453 | - <a class="rsvp-link" href="{{team_event_object.registration}}" target="external_registration">{% trans 'Register' %}</a> |
| 1454 | + <section class="span-3 box_content last"> |
| 1455 | + <div class="sidebar-inner"> |
| 1456 | + <div class="event-info"> |
| 1457 | + {% if team_event_object %} |
| 1458 | + {% if team_event_object.channel %} |
| 1459 | + <div> |
| 1460 | + <span class="pictogram comments"></span> |
| 1461 | + {{ team_event_object.channel }} |
| 1462 | + </div> |
| 1463 | + {% endif %} |
| 1464 | + |
| 1465 | + {% if team_event_object.contact %} |
| 1466 | + <div> |
| 1467 | + <span class="pictogram personne"></span> |
| 1468 | + <a class="pictogram-l" title="{{ team_event_object.contact.realname }}" href="https://launchpad.net/~{{ team_event_object.contact.user }}">{{ team_event_object.contact.realname }}</a> |
| 1469 | + </div> |
| 1470 | + {% endif %} |
| 1471 | + |
| 1472 | + {% if team_event_object.teams.all %} |
| 1473 | + <div> |
| 1474 | + <span class="pictogram team"></span> |
| 1475 | + {% for team in team_event_object.teams.all %}<a class="pictogram-l" title="{% trans "Get more information about this team" %}" href="{{ team.get_absolute_url }}">{{ team.name }}</a>{% if not forloop.last %},{% endif %}{% endfor %} |
| 1476 | + </div> |
| 1477 | + {% endif %} |
| 1478 | + {% endif %} |
| 1479 | + </div> |
| 1480 | + |
| 1481 | + {% if team_event_object.registration %} |
| 1482 | + <a class="submit-button rsvp-link" href="{{team_event_object.registration}}" target="external_registration">{% trans 'Register' %}</a> |
| 1483 | + {% else %} |
| 1484 | + {% if user.is_authenticated and user_is_attending %} |
| 1485 | + <a class="submit-button rsvp-link" href="{% url team-event-register team_event_object.first_team.lp_name team_event_object.id %}">{% trans 'Update Registration' %}</a> |
| 1486 | {% else %} |
| 1487 | - {% if user.is_authenticated and user_is_attending %} |
| 1488 | - <a class="rsvp-link" href="{% url team-event-register team_event_object.first_team.lp_name team_event_object.id %}">{% trans 'Update Registration' %}</a> |
| 1489 | - {% else %} |
| 1490 | - <a class="rsvp-link" href="{% url team-event-register team_event_object.first_team.lp_name team_event_object.id %}">{% trans 'Register' %}</a> |
| 1491 | - {% endif %} |
| 1492 | + <a class="submit-button rsvp-link" href="{% url team-event-register team_event_object.first_team.lp_name team_event_object.id %}">{% trans 'Register' %}</a> |
| 1493 | {% endif %} |
| 1494 | - </h3> |
| 1495 | - {% include "events/team_event_detail_attendees.inc.html" %} |
| 1496 | - </section> |
| 1497 | -</div> |
| 1498 | - |
| 1499 | -{% if team_event_object.teameventcomment_set.all %} |
| 1500 | -<div class="row"> |
| 1501 | - <section class="span-12"> |
| 1502 | - <h3>{% blocktrans with team_event_object.teameventcomment_set.all.count as comment_count %}Event Comments ({{ comment_count }}){% endblocktrans %}</h3> |
| 1503 | - {% include "events/team_event_detail_comments.inc.html" %} |
| 1504 | - </section> |
| 1505 | -</div> |
| 1506 | -{% endif %} |
| 1507 | -{% include "events/team_event_comment_new.inc.html" %} |
| 1508 | - |
| 1509 | + {% endif %} |
| 1510 | + {% include "events/team_event_detail_attendees.inc.html" %} |
| 1511 | + </div> |
| 1512 | + </section> |
| 1513 | +</div> |
| 1514 | |
| 1515 | === modified file 'loco_directory/templates/events/team_event_detail_attendee.inc.html' |
| 1516 | --- loco_directory/templates/events/team_event_detail_attendee.inc.html 2011-11-04 04:15:25 +0000 |
| 1517 | +++ loco_directory/templates/events/team_event_detail_attendee.inc.html 2012-10-30 12:31:21 +0000 |
| 1518 | @@ -1,20 +1,12 @@ |
| 1519 | {% load i18n %} |
| 1520 | |
| 1521 | -<!--Alternative display using mugshots, enable when bug #734520 is fixed. |
| 1522 | -<tr> |
| 1523 | - <td class="attendee-cell"> |
| 1524 | - {% for registration in people %} |
| 1525 | - <a href="https://launchpad.net/~{{registration.attendee_profile.user.username}}" > |
| 1526 | - <img src="{% if registration.attendee_profile.mugshot %}{{registration.attendee_profile.mugshot}}{% else %}{{MEDIA_URL}}img/default-mugshot.png{% endif %}" title="{{registration.attendee_profile.realname}}" valign="top" width="32" height="32"> |
| 1527 | - </a> |
| 1528 | - {% endfor %} |
| 1529 | - </td> |
| 1530 | -</tr>--> |
| 1531 | - |
| 1532 | -<!--Disable when you have mugshot functionality--> |
| 1533 | - <tr class="team_event_list_row {% cycle "odd" "even" %}"> |
| 1534 | - <td align="center" class="attendee-cell"> |
| 1535 | - <a href="https://launchpad.net/~{{registration.attendee_profile.user.username}}" >{{registration.attendee_profile.realname}}</a> |
| 1536 | - {% if registration.guests %}(+{{registration.guests}}){% endif %} |
| 1537 | - </td> |
| 1538 | - </tr> |
| 1539 | +<li class="attendee-cell"> |
| 1540 | + <div class="attendee-mugshot"> |
| 1541 | + <a href="https://launchpad.net/~{{ registration.attendee_profile.user.username }}" traget="_blank"> |
| 1542 | + <img src="{% if registration.attendee_profile.mugshot %}{{ registration.attendee_profile.mugshot }}{% else %}{{MEDIA_URL}}img/default-mugshot.png{% endif %}" width="32px" height="32px" alt="{{ registration.attendee_profile.realname }}" class="Zb Gtb"> |
| 1543 | + </a> |
| 1544 | + </div> |
| 1545 | + <div class="attendee-infos"> |
| 1546 | + <a href="https://launchpad.net/~{{ registration.attendee_profile.user.username}}" target="_blank">{{ registration.attendee_profile.realname }} {% if registration.guests %}(+{{registration.guests}}){% endif %}</a> |
| 1547 | + </div> |
| 1548 | +</li> |
| 1549 | |
| 1550 | === modified file 'loco_directory/templates/events/team_event_detail_attendees.inc.html' |
| 1551 | --- loco_directory/templates/events/team_event_detail_attendees.inc.html 2012-06-20 11:02:00 +0000 |
| 1552 | +++ loco_directory/templates/events/team_event_detail_attendees.inc.html 2012-10-30 12:31:21 +0000 |
| 1553 | @@ -1,50 +1,28 @@ |
| 1554 | {% load i18n %} |
| 1555 | |
| 1556 | -<table id="team-event-attendees" class="basic side-table"> |
| 1557 | {% if team_event_object.attending %} |
| 1558 | - <thead> |
| 1559 | - <tr id="team_event_list_header"> |
| 1560 | - <th>{% trans 'Attending' %} ({{ team_event_object.total_attending }})</th> |
| 1561 | - </tr> |
| 1562 | - </thead> |
| 1563 | - <tfoot> |
| 1564 | - </tfoot> |
| 1565 | - <tbody> |
| 1566 | + <h3 class="attendees-title">{% trans 'Attending' %} ({{ team_event_object.total_attending }})</h3> |
| 1567 | + <ul class="attendees"> |
| 1568 | {% for registration in team_event_object.attending %} |
| 1569 | {% include "events/team_event_detail_attendee.inc.html" %} |
| 1570 | {% endfor %} |
| 1571 | - </tbody> |
| 1572 | + </ul> |
| 1573 | {% endif %} |
| 1574 | |
| 1575 | {% if team_event_object.maybe_attending %} |
| 1576 | - <thead> |
| 1577 | - <tr id="team_event_list_header"> |
| 1578 | - <th>{% trans 'Maybe Attending' %} ({{ team_event_object.total_maybe_attending }})</th> |
| 1579 | - </tr> |
| 1580 | - </thead> |
| 1581 | - <tfoot> |
| 1582 | - </tfoot> |
| 1583 | - <tbody> |
| 1584 | + <h3 class="attendees-title">{% trans 'Maybe Attending' %} ({{ team_event_object.total_maybe_attending }})</h3> |
| 1585 | + <ul class="attendees"> |
| 1586 | {% for registration in team_event_object.maybe_attending %} |
| 1587 | {% include "events/team_event_detail_attendee.inc.html" %} |
| 1588 | {% endfor %} |
| 1589 | - </tbody> |
| 1590 | + </ul> |
| 1591 | {% endif %} |
| 1592 | |
| 1593 | {% if team_event_object.not_attending %} |
| 1594 | - <thead> |
| 1595 | - <tr id="team_event_list_header"> |
| 1596 | - <th>{% trans 'Not Attending' %} ({{ team_event_object.not_attending|length }})</th> |
| 1597 | - </tr> |
| 1598 | - </thead> |
| 1599 | - <tfoot> |
| 1600 | - </tfoot> |
| 1601 | - <tbody> |
| 1602 | + <h3 class="attendees-title">{% trans 'Not Attending' %} ({{ team_event_object.not_attending|length }})</h3> |
| 1603 | + <ul class="attendees"> |
| 1604 | {% for registration in team_event_object.not_attending %} |
| 1605 | {% include "events/team_event_detail_attendee.inc.html" %} |
| 1606 | {% endfor %} |
| 1607 | - </tbody> |
| 1608 | -{% endif %} |
| 1609 | - |
| 1610 | - |
| 1611 | -</table> |
| 1612 | + </ul> |
| 1613 | +{% endif %} |
| 1614 | \ No newline at end of file |
| 1615 | |
| 1616 | === modified file 'loco_directory/templates/events/team_event_detail_comments.inc.html' |
| 1617 | --- loco_directory/templates/events/team_event_detail_comments.inc.html 2012-06-30 23:41:51 +0000 |
| 1618 | +++ loco_directory/templates/events/team_event_detail_comments.inc.html 2012-10-30 12:31:21 +0000 |
| 1619 | @@ -1,17 +1,41 @@ |
| 1620 | -{% load i18n %} |
| 1621 | +{% load i18n smart_if %} |
| 1622 | {% if team_event_object.teameventcomment_set.all %} |
| 1623 | -<table id="team-event-comments"> |
| 1624 | -{% regroup team_event_object.teameventcomment_set.all by local_date_created|date:"D d M Y" as comment_list %} |
| 1625 | -{% for comment_date in comment_list %} |
| 1626 | - <tr> |
| 1627 | - <th class="form-item-label" scope="row" colspan=2><label>{{comment_date.grouper}}</label></th> |
| 1628 | - </tr> |
| 1629 | - {% for comment in comment_date.list %} |
| 1630 | - <tr> |
| 1631 | - <th class="form-item-label" scope="row"><a href="https://launchpad.net/~{{comment.commenter_profile.user.username}}">{{comment.commenter_profile.realname}}</a>:</th> |
| 1632 | - <td class="form-item-value">{{comment.comment|linebreaks}}</td> |
| 1633 | - </tr> |
| 1634 | + |
| 1635 | +<h3 class="comments-nbr"> |
| 1636 | +{% blocktrans with team_event_object.teameventcomment_set.all.count as comment_count %} |
| 1637 | + {{ comment_count }} Comments |
| 1638 | +{% endblocktrans %} |
| 1639 | +</h3> |
| 1640 | + |
| 1641 | +<ol id="comments" class="comments"> |
| 1642 | + {% for comment in team_event_object.teameventcomment_set.all %} |
| 1643 | + <li id="comment-{{ comment.pk }}" class="response"> |
| 1644 | + <div class="mugshot"> |
| 1645 | + <a href="https://launchpad.net/~{{ comment.commenter_profile.user.username }}" class="url" title="{{ comment.commenter_profile.user.get_full_name }}"> |
| 1646 | + <img alt="" class="photo fn" src="{% if comment.commenter_profile.mugshot %}{{ comment.commenter_profile.mugshot }}{% else %}{{MEDIA_URL}}img/default-mugshot.png{% endif %}"> |
| 1647 | + </a> |
| 1648 | + </div> |
| 1649 | + <div class="comment-body"> |
| 1650 | + <a href="https://launchpad.net/~{{ comment.commenter_profile.user.username }}" class="url" title="{{ comment.commenter_profile.user.get_full_name }}"> |
| 1651 | + {% if comment.commenter_profile.user.get_full_name %} |
| 1652 | + {{ comment.commenter_profile.user.get_full_name }} |
| 1653 | + {% else %} |
| 1654 | + {{ comment.commenter_profile.realname }} |
| 1655 | + {% endif %} |
| 1656 | + </a> |
| 1657 | + <div class="comment-error" style="display:none;"></div> |
| 1658 | + <div class="comment-comment"> |
| 1659 | + {{ comment.comment|linebreaks|urlize }} |
| 1660 | + </div> |
| 1661 | + <p class="comment-meta"> |
| 1662 | + <a href="#comment-{{ comment.pk }}" class="posted" title="{{ comment.local_date_created }}"> |
| 1663 | + {{ comment.local_date_created|date:"d F Y" }}</a> |
| 1664 | + {% if comment.commenter_profile.user.username == user.username %} |
| 1665 | + ยท <a class="edit" href="#">Edit</a> - <a href="{% url team-event-comment-delete comment.id %}?next={% url team-event-detail team_event_object.first_team.lp_name team_event_object.id %}">Delete</a> |
| 1666 | + {% endif %} |
| 1667 | + </p> |
| 1668 | + </div> |
| 1669 | + </li> |
| 1670 | {% endfor %} |
| 1671 | -{% endfor %} |
| 1672 | -</table> |
| 1673 | +</ol> |
| 1674 | {% endif %} |


Text conflict in loco_directory/ events/ views.py media/css/ newstyle. css templates/ events/ team_event_ detail. html templates/ events/ team_event_ detail_ comments. inc.html
Contents conflict in loco_directory/
Text conflict in loco_directory/
Text conflict in loco_directory/
4 conflicts encountered.