sequence-diagram-raphael.js 120 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454
  1. /** js sequence diagrams 2.0.1
  2. * https://bramp.github.io/js-sequence-diagrams/
  3. * (c) 2012-2017 Andrew Brampton (bramp.net)
  4. * @license Simplified BSD license.
  5. */
  6. (function() {
  7. 'use strict';
  8. /*global Diagram */
  9. // The following are included by preprocessor */
  10. /** js sequence diagrams
  11. * https://bramp.github.io/js-sequence-diagrams/
  12. * (c) 2012-2017 Andrew Brampton (bramp.net)
  13. * Simplified BSD license.
  14. */
  15. /*global grammar _ */
  16. function Diagram() {
  17. this.title = undefined;
  18. this.actors = [];
  19. this.signals = [];
  20. }
  21. /*
  22. * Return an existing actor with this alias, or creates a new one with alias and name.
  23. */
  24. Diagram.prototype.getActor = function(alias, name) {
  25. alias = alias.trim();
  26. var i;
  27. var actors = this.actors;
  28. for (i in actors) {
  29. if (actors[i].alias == alias) {
  30. return actors[i];
  31. }
  32. }
  33. i = actors.push(new Diagram.Actor(alias, (name || alias), actors.length));
  34. return actors[ i - 1 ];
  35. };
  36. /*
  37. * Parses the input as either a alias, or a "name as alias", and returns the corresponding actor.
  38. */
  39. Diagram.prototype.getActorWithAlias = function(input) {
  40. input = input.trim();
  41. // We are lazy and do some of the parsing in javascript :(. TODO move into the .jison file.
  42. var s = /([\s\S]+) as (\S+)$/im.exec(input);
  43. var alias;
  44. var name;
  45. if (s) {
  46. name = s[1].trim();
  47. alias = s[2].trim();
  48. } else {
  49. name = alias = input;
  50. }
  51. return this.getActor(alias, name);
  52. };
  53. Diagram.prototype.setTitle = function(title) {
  54. this.title = title;
  55. };
  56. Diagram.prototype.addSignal = function(signal) {
  57. this.signals.push(signal);
  58. };
  59. Diagram.Actor = function(alias, name, index) {
  60. this.alias = alias;
  61. this.name = name;
  62. this.index = index;
  63. };
  64. Diagram.Signal = function(actorA, signaltype, actorB, message) {
  65. this.type = 'Signal';
  66. this.actorA = actorA;
  67. this.actorB = actorB;
  68. this.linetype = signaltype & 3;
  69. this.arrowtype = (signaltype >> 2) & 3;
  70. this.message = message;
  71. };
  72. Diagram.Signal.prototype.isSelf = function() {
  73. return this.actorA.index == this.actorB.index;
  74. };
  75. Diagram.Note = function(actor, placement, message) {
  76. this.type = 'Note';
  77. this.actor = actor;
  78. this.placement = placement;
  79. this.message = message;
  80. if (this.hasManyActors() && actor[0] == actor[1]) {
  81. throw new Error('Note should be over two different actors');
  82. }
  83. };
  84. Diagram.Note.prototype.hasManyActors = function() {
  85. return _.isArray(this.actor);
  86. };
  87. Diagram.unescape = function(s) {
  88. // Turn "\\n" into "\n"
  89. return s.trim().replace(/^"(.*)"$/m, '$1').replace(/\\n/gm, '\n');
  90. };
  91. Diagram.LINETYPE = {
  92. SOLID: 0,
  93. DOTTED: 1
  94. };
  95. Diagram.ARROWTYPE = {
  96. FILLED: 0,
  97. OPEN: 1
  98. };
  99. Diagram.PLACEMENT = {
  100. LEFTOF: 0,
  101. RIGHTOF: 1,
  102. OVER: 2
  103. };
  104. // Some older browsers don't have getPrototypeOf, thus we polyfill it
  105. // https://github.com/bramp/js-sequence-diagrams/issues/57
  106. // https://github.com/zaach/jison/issues/194
  107. // Taken from http://ejohn.org/blog/objectgetprototypeof/
  108. if (typeof Object.getPrototypeOf !== 'function') {
  109. /* jshint -W103 */
  110. if (typeof 'test'.__proto__ === 'object') {
  111. Object.getPrototypeOf = function(object) {
  112. return object.__proto__;
  113. };
  114. } else {
  115. Object.getPrototypeOf = function(object) {
  116. // May break if the constructor has been tampered with
  117. return object.constructor.prototype;
  118. };
  119. }
  120. /* jshint +W103 */
  121. }
  122. /** The following is included by preprocessor */
  123. /* parser generated by jison 0.4.15 */
  124. /*
  125. Returns a Parser object of the following structure:
  126. Parser: {
  127. yy: {}
  128. }
  129. Parser.prototype: {
  130. yy: {},
  131. trace: function(),
  132. symbols_: {associative list: name ==> number},
  133. terminals_: {associative list: number ==> name},
  134. productions_: [...],
  135. performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
  136. table: [...],
  137. defaultActions: {...},
  138. parseError: function(str, hash),
  139. parse: function(input),
  140. lexer: {
  141. EOF: 1,
  142. parseError: function(str, hash),
  143. setInput: function(input),
  144. input: function(),
  145. unput: function(str),
  146. more: function(),
  147. less: function(n),
  148. pastInput: function(),
  149. upcomingInput: function(),
  150. showPosition: function(),
  151. test_match: function(regex_match_array, rule_index),
  152. next: function(),
  153. lex: function(),
  154. begin: function(condition),
  155. popState: function(),
  156. _currentRules: function(),
  157. topState: function(),
  158. pushState: function(condition),
  159. options: {
  160. ranges: boolean (optional: true ==> token location info will include a .range[] member)
  161. flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
  162. backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
  163. },
  164. performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
  165. rules: [...],
  166. conditions: {associative list: name ==> set},
  167. }
  168. }
  169. token location info (@$, _$, etc.): {
  170. first_line: n,
  171. last_line: n,
  172. first_column: n,
  173. last_column: n,
  174. range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)
  175. }
  176. the parseError function receives a 'hash' object with these members for lexer and parser errors: {
  177. text: (matched text)
  178. token: (the produced terminal token, if any)
  179. line: (yylineno)
  180. }
  181. while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
  182. loc: (yylloc)
  183. expected: (string describing the set of expected tokens)
  184. recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
  185. }
  186. */
  187. var parser = function() {
  188. function Parser() {
  189. this.yy = {};
  190. }
  191. var o = function(k, v, o, l) {
  192. for (o = o || {}, l = k.length; l--; o[k[l]] = v) ;
  193. return o;
  194. }, $V0 = [ 5, 8, 9, 13, 15, 24 ], $V1 = [ 1, 13 ], $V2 = [ 1, 17 ], $V3 = [ 24, 29, 30 ], parser = {
  195. trace: function() {},
  196. yy: {},
  197. symbols_: {
  198. error: 2,
  199. start: 3,
  200. document: 4,
  201. EOF: 5,
  202. line: 6,
  203. statement: 7,
  204. NL: 8,
  205. participant: 9,
  206. actor_alias: 10,
  207. signal: 11,
  208. note_statement: 12,
  209. title: 13,
  210. message: 14,
  211. note: 15,
  212. placement: 16,
  213. actor: 17,
  214. over: 18,
  215. actor_pair: 19,
  216. ",": 20,
  217. left_of: 21,
  218. right_of: 22,
  219. signaltype: 23,
  220. ACTOR: 24,
  221. linetype: 25,
  222. arrowtype: 26,
  223. LINE: 27,
  224. DOTLINE: 28,
  225. ARROW: 29,
  226. OPENARROW: 30,
  227. MESSAGE: 31,
  228. $accept: 0,
  229. $end: 1
  230. },
  231. terminals_: {
  232. 2: "error",
  233. 5: "EOF",
  234. 8: "NL",
  235. 9: "participant",
  236. 13: "title",
  237. 15: "note",
  238. 18: "over",
  239. 20: ",",
  240. 21: "left_of",
  241. 22: "right_of",
  242. 24: "ACTOR",
  243. 27: "LINE",
  244. 28: "DOTLINE",
  245. 29: "ARROW",
  246. 30: "OPENARROW",
  247. 31: "MESSAGE"
  248. },
  249. productions_: [ 0, [ 3, 2 ], [ 4, 0 ], [ 4, 2 ], [ 6, 1 ], [ 6, 1 ], [ 7, 2 ], [ 7, 1 ], [ 7, 1 ], [ 7, 2 ], [ 12, 4 ], [ 12, 4 ], [ 19, 1 ], [ 19, 3 ], [ 16, 1 ], [ 16, 1 ], [ 11, 4 ], [ 17, 1 ], [ 10, 1 ], [ 23, 2 ], [ 23, 1 ], [ 25, 1 ], [ 25, 1 ], [ 26, 1 ], [ 26, 1 ], [ 14, 1 ] ],
  250. performAction: function(yytext, yyleng, yylineno, yy, yystate, $$, _$) {
  251. /* this == yyval */
  252. var $0 = $$.length - 1;
  253. switch (yystate) {
  254. case 1:
  255. return yy.parser.yy;
  256. case 4:
  257. break;
  258. case 6:
  259. $$[$0];
  260. break;
  261. case 7:
  262. case 8:
  263. yy.parser.yy.addSignal($$[$0]);
  264. break;
  265. case 9:
  266. yy.parser.yy.setTitle($$[$0]);
  267. break;
  268. case 10:
  269. this.$ = new Diagram.Note($$[$0 - 1], $$[$0 - 2], $$[$0]);
  270. break;
  271. case 11:
  272. this.$ = new Diagram.Note($$[$0 - 1], Diagram.PLACEMENT.OVER, $$[$0]);
  273. break;
  274. case 12:
  275. case 20:
  276. this.$ = $$[$0];
  277. break;
  278. case 13:
  279. this.$ = [ $$[$0 - 2], $$[$0] ];
  280. break;
  281. case 14:
  282. this.$ = Diagram.PLACEMENT.LEFTOF;
  283. break;
  284. case 15:
  285. this.$ = Diagram.PLACEMENT.RIGHTOF;
  286. break;
  287. case 16:
  288. this.$ = new Diagram.Signal($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0]);
  289. break;
  290. case 17:
  291. this.$ = yy.parser.yy.getActor(Diagram.unescape($$[$0]));
  292. break;
  293. case 18:
  294. this.$ = yy.parser.yy.getActorWithAlias(Diagram.unescape($$[$0]));
  295. break;
  296. case 19:
  297. this.$ = $$[$0 - 1] | $$[$0] << 2;
  298. break;
  299. case 21:
  300. this.$ = Diagram.LINETYPE.SOLID;
  301. break;
  302. case 22:
  303. this.$ = Diagram.LINETYPE.DOTTED;
  304. break;
  305. case 23:
  306. this.$ = Diagram.ARROWTYPE.FILLED;
  307. break;
  308. case 24:
  309. this.$ = Diagram.ARROWTYPE.OPEN;
  310. break;
  311. case 25:
  312. this.$ = Diagram.unescape($$[$0].substring(1));
  313. }
  314. },
  315. table: [ o($V0, [ 2, 2 ], {
  316. 3: 1,
  317. 4: 2
  318. }), {
  319. 1: [ 3 ]
  320. }, {
  321. 5: [ 1, 3 ],
  322. 6: 4,
  323. 7: 5,
  324. 8: [ 1, 6 ],
  325. 9: [ 1, 7 ],
  326. 11: 8,
  327. 12: 9,
  328. 13: [ 1, 10 ],
  329. 15: [ 1, 12 ],
  330. 17: 11,
  331. 24: $V1
  332. }, {
  333. 1: [ 2, 1 ]
  334. }, o($V0, [ 2, 3 ]), o($V0, [ 2, 4 ]), o($V0, [ 2, 5 ]), {
  335. 10: 14,
  336. 24: [ 1, 15 ]
  337. }, o($V0, [ 2, 7 ]), o($V0, [ 2, 8 ]), {
  338. 14: 16,
  339. 31: $V2
  340. }, {
  341. 23: 18,
  342. 25: 19,
  343. 27: [ 1, 20 ],
  344. 28: [ 1, 21 ]
  345. }, {
  346. 16: 22,
  347. 18: [ 1, 23 ],
  348. 21: [ 1, 24 ],
  349. 22: [ 1, 25 ]
  350. }, o([ 20, 27, 28, 31 ], [ 2, 17 ]), o($V0, [ 2, 6 ]), o($V0, [ 2, 18 ]), o($V0, [ 2, 9 ]), o($V0, [ 2, 25 ]), {
  351. 17: 26,
  352. 24: $V1
  353. }, {
  354. 24: [ 2, 20 ],
  355. 26: 27,
  356. 29: [ 1, 28 ],
  357. 30: [ 1, 29 ]
  358. }, o($V3, [ 2, 21 ]), o($V3, [ 2, 22 ]), {
  359. 17: 30,
  360. 24: $V1
  361. }, {
  362. 17: 32,
  363. 19: 31,
  364. 24: $V1
  365. }, {
  366. 24: [ 2, 14 ]
  367. }, {
  368. 24: [ 2, 15 ]
  369. }, {
  370. 14: 33,
  371. 31: $V2
  372. }, {
  373. 24: [ 2, 19 ]
  374. }, {
  375. 24: [ 2, 23 ]
  376. }, {
  377. 24: [ 2, 24 ]
  378. }, {
  379. 14: 34,
  380. 31: $V2
  381. }, {
  382. 14: 35,
  383. 31: $V2
  384. }, {
  385. 20: [ 1, 36 ],
  386. 31: [ 2, 12 ]
  387. }, o($V0, [ 2, 16 ]), o($V0, [ 2, 10 ]), o($V0, [ 2, 11 ]), {
  388. 17: 37,
  389. 24: $V1
  390. }, {
  391. 31: [ 2, 13 ]
  392. } ],
  393. defaultActions: {
  394. 3: [ 2, 1 ],
  395. 24: [ 2, 14 ],
  396. 25: [ 2, 15 ],
  397. 27: [ 2, 19 ],
  398. 28: [ 2, 23 ],
  399. 29: [ 2, 24 ],
  400. 37: [ 2, 13 ]
  401. },
  402. parseError: function(str, hash) {
  403. if (!hash.recoverable) throw new Error(str);
  404. this.trace(str);
  405. },
  406. parse: function(input) {
  407. function lex() {
  408. var token;
  409. return token = lexer.lex() || EOF, "number" != typeof token && (token = self.symbols_[token] || token),
  410. token;
  411. }
  412. var self = this, stack = [ 0 ], vstack = [ null ], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1, args = lstack.slice.call(arguments, 1), lexer = Object.create(this.lexer), sharedState = {
  413. yy: {}
  414. };
  415. for (var k in this.yy) Object.prototype.hasOwnProperty.call(this.yy, k) && (sharedState.yy[k] = this.yy[k]);
  416. lexer.setInput(input, sharedState.yy), sharedState.yy.lexer = lexer, sharedState.yy.parser = this,
  417. "undefined" == typeof lexer.yylloc && (lexer.yylloc = {});
  418. var yyloc = lexer.yylloc;
  419. lstack.push(yyloc);
  420. var ranges = lexer.options && lexer.options.ranges;
  421. "function" == typeof sharedState.yy.parseError ? this.parseError = sharedState.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError;
  422. for (var symbol, preErrorSymbol, state, action, r, p, len, newState, expected, yyval = {}; ;) {
  423. if (state = stack[stack.length - 1], this.defaultActions[state] ? action = this.defaultActions[state] : (null !== symbol && "undefined" != typeof symbol || (symbol = lex()),
  424. action = table[state] && table[state][symbol]), "undefined" == typeof action || !action.length || !action[0]) {
  425. var errStr = "";
  426. expected = [];
  427. for (p in table[state]) this.terminals_[p] && p > TERROR && expected.push("'" + this.terminals_[p] + "'");
  428. errStr = lexer.showPosition ? "Parse error on line " + (yylineno + 1) + ":\n" + lexer.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'" : "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"),
  429. this.parseError(errStr, {
  430. text: lexer.match,
  431. token: this.terminals_[symbol] || symbol,
  432. line: lexer.yylineno,
  433. loc: yyloc,
  434. expected: expected
  435. });
  436. }
  437. if (action[0] instanceof Array && action.length > 1) throw new Error("Parse Error: multiple actions possible at state: " + state + ", token: " + symbol);
  438. switch (action[0]) {
  439. case 1:
  440. stack.push(symbol), vstack.push(lexer.yytext), lstack.push(lexer.yylloc), stack.push(action[1]),
  441. symbol = null, preErrorSymbol ? (symbol = preErrorSymbol, preErrorSymbol = null) : (yyleng = lexer.yyleng,
  442. yytext = lexer.yytext, yylineno = lexer.yylineno, yyloc = lexer.yylloc, recovering > 0 && recovering--);
  443. break;
  444. case 2:
  445. if (len = this.productions_[action[1]][1], yyval.$ = vstack[vstack.length - len],
  446. yyval._$ = {
  447. first_line: lstack[lstack.length - (len || 1)].first_line,
  448. last_line: lstack[lstack.length - 1].last_line,
  449. first_column: lstack[lstack.length - (len || 1)].first_column,
  450. last_column: lstack[lstack.length - 1].last_column
  451. }, ranges && (yyval._$.range = [ lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1] ]),
  452. r = this.performAction.apply(yyval, [ yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack ].concat(args)),
  453. "undefined" != typeof r) return r;
  454. len && (stack = stack.slice(0, -1 * len * 2), vstack = vstack.slice(0, -1 * len),
  455. lstack = lstack.slice(0, -1 * len)), stack.push(this.productions_[action[1]][0]),
  456. vstack.push(yyval.$), lstack.push(yyval._$), newState = table[stack[stack.length - 2]][stack[stack.length - 1]],
  457. stack.push(newState);
  458. break;
  459. case 3:
  460. return !0;
  461. }
  462. }
  463. return !0;
  464. }
  465. }, lexer = function() {
  466. var lexer = {
  467. EOF: 1,
  468. parseError: function(str, hash) {
  469. if (!this.yy.parser) throw new Error(str);
  470. this.yy.parser.parseError(str, hash);
  471. },
  472. // resets the lexer, sets new input
  473. setInput: function(input, yy) {
  474. return this.yy = yy || this.yy || {}, this._input = input, this._more = this._backtrack = this.done = !1,
  475. this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = [ "INITIAL" ],
  476. this.yylloc = {
  477. first_line: 1,
  478. first_column: 0,
  479. last_line: 1,
  480. last_column: 0
  481. }, this.options.ranges && (this.yylloc.range = [ 0, 0 ]), this.offset = 0, this;
  482. },
  483. // consumes and returns one char from the input
  484. input: function() {
  485. var ch = this._input[0];
  486. this.yytext += ch, this.yyleng++, this.offset++, this.match += ch, this.matched += ch;
  487. var lines = ch.match(/(?:\r\n?|\n).*/g);
  488. return lines ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
  489. this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1),
  490. ch;
  491. },
  492. // unshifts one char (or a string) into the input
  493. unput: function(ch) {
  494. var len = ch.length, lines = ch.split(/(?:\r\n?|\n)/g);
  495. this._input = ch + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - len),
  496. //this.yyleng -= len;
  497. this.offset -= len;
  498. var oldLines = this.match.split(/(?:\r\n?|\n)/g);
  499. this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1),
  500. lines.length - 1 && (this.yylineno -= lines.length - 1);
  501. var r = this.yylloc.range;
  502. return this.yylloc = {
  503. first_line: this.yylloc.first_line,
  504. last_line: this.yylineno + 1,
  505. first_column: this.yylloc.first_column,
  506. last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len
  507. }, this.options.ranges && (this.yylloc.range = [ r[0], r[0] + this.yyleng - len ]),
  508. this.yyleng = this.yytext.length, this;
  509. },
  510. // When called from action, caches matched text and appends it on next action
  511. more: function() {
  512. return this._more = !0, this;
  513. },
  514. // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
  515. reject: function() {
  516. return this.options.backtrack_lexer ? (this._backtrack = !0, this) : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), {
  517. text: "",
  518. token: null,
  519. line: this.yylineno
  520. });
  521. },
  522. // retain first n characters of the match
  523. less: function(n) {
  524. this.unput(this.match.slice(n));
  525. },
  526. // displays already matched input, i.e. for error messages
  527. pastInput: function() {
  528. var past = this.matched.substr(0, this.matched.length - this.match.length);
  529. return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, "");
  530. },
  531. // displays upcoming input, i.e. for error messages
  532. upcomingInput: function() {
  533. var next = this.match;
  534. return next.length < 20 && (next += this._input.substr(0, 20 - next.length)), (next.substr(0, 20) + (next.length > 20 ? "..." : "")).replace(/\n/g, "");
  535. },
  536. // displays the character position where the lexing error occurred, i.e. for error messages
  537. showPosition: function() {
  538. var pre = this.pastInput(), c = new Array(pre.length + 1).join("-");
  539. return pre + this.upcomingInput() + "\n" + c + "^";
  540. },
  541. // test the lexed token: return FALSE when not a match, otherwise return token
  542. test_match: function(match, indexed_rule) {
  543. var token, lines, backup;
  544. if (this.options.backtrack_lexer && (// save context
  545. backup = {
  546. yylineno: this.yylineno,
  547. yylloc: {
  548. first_line: this.yylloc.first_line,
  549. last_line: this.last_line,
  550. first_column: this.yylloc.first_column,
  551. last_column: this.yylloc.last_column
  552. },
  553. yytext: this.yytext,
  554. match: this.match,
  555. matches: this.matches,
  556. matched: this.matched,
  557. yyleng: this.yyleng,
  558. offset: this.offset,
  559. _more: this._more,
  560. _input: this._input,
  561. yy: this.yy,
  562. conditionStack: this.conditionStack.slice(0),
  563. done: this.done
  564. }, this.options.ranges && (backup.yylloc.range = this.yylloc.range.slice(0))), lines = match[0].match(/(?:\r\n?|\n).*/g),
  565. lines && (this.yylineno += lines.length), this.yylloc = {
  566. first_line: this.yylloc.last_line,
  567. last_line: this.yylineno + 1,
  568. first_column: this.yylloc.last_column,
  569. last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match[0].length
  570. }, this.yytext += match[0], this.match += match[0], this.matches = match, this.yyleng = this.yytext.length,
  571. this.options.ranges && (this.yylloc.range = [ this.offset, this.offset += this.yyleng ]),
  572. this._more = !1, this._backtrack = !1, this._input = this._input.slice(match[0].length),
  573. this.matched += match[0], token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]),
  574. this.done && this._input && (this.done = !1), token) return token;
  575. if (this._backtrack) {
  576. // recover context
  577. for (var k in backup) this[k] = backup[k];
  578. return !1;
  579. }
  580. return !1;
  581. },
  582. // return next match in input
  583. next: function() {
  584. if (this.done) return this.EOF;
  585. this._input || (this.done = !0);
  586. var token, match, tempMatch, index;
  587. this._more || (this.yytext = "", this.match = "");
  588. for (var rules = this._currentRules(), i = 0; i < rules.length; i++) if (tempMatch = this._input.match(this.rules[rules[i]]),
  589. tempMatch && (!match || tempMatch[0].length > match[0].length)) {
  590. if (match = tempMatch, index = i, this.options.backtrack_lexer) {
  591. if (token = this.test_match(tempMatch, rules[i]), token !== !1) return token;
  592. if (this._backtrack) {
  593. match = !1;
  594. continue;
  595. }
  596. // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
  597. return !1;
  598. }
  599. if (!this.options.flex) break;
  600. }
  601. return match ? (token = this.test_match(match, rules[index]), token !== !1 && token) : "" === this._input ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
  602. text: "",
  603. token: null,
  604. line: this.yylineno
  605. });
  606. },
  607. // return next match that has a token
  608. lex: function() {
  609. var r = this.next();
  610. return r ? r : this.lex();
  611. },
  612. // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
  613. begin: function(condition) {
  614. this.conditionStack.push(condition);
  615. },
  616. // pop the previously active lexer condition state off the condition stack
  617. popState: function() {
  618. var n = this.conditionStack.length - 1;
  619. return n > 0 ? this.conditionStack.pop() : this.conditionStack[0];
  620. },
  621. // produce the lexer rule set which is active for the currently active lexer condition state
  622. _currentRules: function() {
  623. return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules;
  624. },
  625. // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
  626. topState: function(n) {
  627. return n = this.conditionStack.length - 1 - Math.abs(n || 0), n >= 0 ? this.conditionStack[n] : "INITIAL";
  628. },
  629. // alias for begin(condition)
  630. pushState: function(condition) {
  631. this.begin(condition);
  632. },
  633. // return the number of states currently on the stack
  634. stateStackSize: function() {
  635. return this.conditionStack.length;
  636. },
  637. options: {
  638. "case-insensitive": !0
  639. },
  640. performAction: function(yy, yy_, $avoiding_name_collisions, YY_START) {
  641. switch ($avoiding_name_collisions) {
  642. case 0:
  643. return 8;
  644. case 1:
  645. /* skip whitespace */
  646. break;
  647. case 2:
  648. /* skip comments */
  649. break;
  650. case 3:
  651. return 9;
  652. case 4:
  653. return 21;
  654. case 5:
  655. return 22;
  656. case 6:
  657. return 18;
  658. case 7:
  659. return 15;
  660. case 8:
  661. return 13;
  662. case 9:
  663. return 20;
  664. case 10:
  665. return 24;
  666. case 11:
  667. return 24;
  668. case 12:
  669. return 28;
  670. case 13:
  671. return 27;
  672. case 14:
  673. return 30;
  674. case 15:
  675. return 29;
  676. case 16:
  677. return 31;
  678. case 17:
  679. return 5;
  680. case 18:
  681. return "INVALID";
  682. }
  683. },
  684. rules: [ /^(?:[\r\n]+)/i, /^(?:\s+)/i, /^(?:#[^\r\n]*)/i, /^(?:participant\b)/i, /^(?:left of\b)/i, /^(?:right of\b)/i, /^(?:over\b)/i, /^(?:note\b)/i, /^(?:title\b)/i, /^(?:,)/i, /^(?:[^\->:,\r\n"]+)/i, /^(?:"[^"]+")/i, /^(?:--)/i, /^(?:-)/i, /^(?:>>)/i, /^(?:>)/i, /^(?:[^\r\n]+)/i, /^(?:$)/i, /^(?:.)/i ],
  685. conditions: {
  686. INITIAL: {
  687. rules: [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 ],
  688. inclusive: !0
  689. }
  690. }
  691. };
  692. return lexer;
  693. }();
  694. return parser.lexer = lexer, Parser.prototype = parser, parser.Parser = Parser,
  695. new Parser();
  696. }();
  697. "undefined" != typeof require && "undefined" != typeof exports && (exports.parser = parser,
  698. exports.Parser = parser.Parser, exports.parse = function() {
  699. return parser.parse.apply(parser, arguments);
  700. }, exports.main = function(args) {
  701. args[1] || (console.log("Usage: " + args[0] + " FILE"), process.exit(1));
  702. var source = require("fs").readFileSync(require("path").normalize(args[1]), "utf8");
  703. return exports.parser.parse(source);
  704. }, "undefined" != typeof module && require.main === module && exports.main(process.argv.slice(1)));
  705. /**
  706. * jison doesn't have a good exception, so we make one.
  707. * This is brittle as it depends on jison internals
  708. */
  709. function ParseError(message, hash) {
  710. _.extend(this, hash);
  711. this.name = 'ParseError';
  712. this.message = (message || '');
  713. }
  714. ParseError.prototype = new Error();
  715. Diagram.ParseError = ParseError;
  716. Diagram.parse = function(input) {
  717. // TODO jison v0.4.17 changed their API slightly, so parser is no longer defined:
  718. // Create the object to track state and deal with errors
  719. parser.yy = new Diagram();
  720. parser.yy.parseError = function(message, hash) {
  721. throw new ParseError(message, hash);
  722. };
  723. // Parse
  724. var diagram = parser.parse(input);
  725. // Then clean up the parseError key that a user won't care about
  726. delete diagram.parseError;
  727. return diagram;
  728. };
  729. /** js sequence diagrams
  730. * https://bramp.github.io/js-sequence-diagrams/
  731. * (c) 2012-2017 Andrew Brampton (bramp.net)
  732. * Simplified BSD license.
  733. */
  734. /*global Diagram, _ */
  735. // Following the CSS convention
  736. // Margin is the gap outside the box
  737. // Padding is the gap inside the box
  738. // Each object has x/y/width/height properties
  739. // The x/y should be top left corner
  740. // width/height is with both margin and padding
  741. // TODO
  742. // Image width is wrong, when there is a note in the right hand col
  743. // Title box could look better
  744. // Note box could look better
  745. var DIAGRAM_MARGIN = 10;
  746. var ACTOR_MARGIN = 10; // Margin around a actor
  747. var ACTOR_PADDING = 10; // Padding inside a actor
  748. var SIGNAL_MARGIN = 5; // Margin around a signal
  749. var SIGNAL_PADDING = 5; // Padding inside a signal
  750. var NOTE_MARGIN = 10; // Margin around a note
  751. var NOTE_PADDING = 5; // Padding inside a note
  752. var NOTE_OVERLAP = 15; // Overlap when using a "note over A,B"
  753. var TITLE_MARGIN = 0;
  754. var TITLE_PADDING = 5;
  755. var SELF_SIGNAL_WIDTH = 20; // How far out a self signal goes
  756. var PLACEMENT = Diagram.PLACEMENT;
  757. var LINETYPE = Diagram.LINETYPE;
  758. var ARROWTYPE = Diagram.ARROWTYPE;
  759. var ALIGN_LEFT = 0;
  760. var ALIGN_CENTER = 1;
  761. function AssertException(message) { this.message = message; }
  762. AssertException.prototype.toString = function() {
  763. return 'AssertException: ' + this.message;
  764. };
  765. function assert(exp, message) {
  766. if (!exp) {
  767. throw new AssertException(message);
  768. }
  769. }
  770. if (!String.prototype.trim) {
  771. String.prototype.trim = function() {
  772. return this.replace(/^\s+|\s+$/g, '');
  773. };
  774. }
  775. Diagram.themes = {};
  776. function registerTheme(name, theme) {
  777. Diagram.themes[name] = theme;
  778. }
  779. /******************
  780. * Drawing extras
  781. ******************/
  782. function getCenterX(box) {
  783. return box.x + box.width / 2;
  784. }
  785. function getCenterY(box) {
  786. return box.y + box.height / 2;
  787. }
  788. /******************
  789. * SVG Path extras
  790. ******************/
  791. function clamp(x, min, max) {
  792. if (x < min) {
  793. return min;
  794. }
  795. if (x > max) {
  796. return max;
  797. }
  798. return x;
  799. }
  800. function wobble(x1, y1, x2, y2) {
  801. assert(_.all([x1,x2,y1,y2], _.isFinite), 'x1,x2,y1,y2 must be numeric');
  802. // Wobble no more than 1/25 of the line length
  803. var factor = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)) / 25;
  804. // Distance along line where the control points are
  805. // Clamp between 20% and 80% so any arrow heads aren't angled too much
  806. var r1 = clamp(Math.random(), 0.2, 0.8);
  807. var r2 = clamp(Math.random(), 0.2, 0.8);
  808. var xfactor = Math.random() > 0.5 ? factor : -factor;
  809. var yfactor = Math.random() > 0.5 ? factor : -factor;
  810. var p1 = {
  811. x: (x2 - x1) * r1 + x1 + xfactor,
  812. y: (y2 - y1) * r1 + y1 + yfactor
  813. };
  814. var p2 = {
  815. x: (x2 - x1) * r2 + x1 - xfactor,
  816. y: (y2 - y1) * r2 + y1 - yfactor
  817. };
  818. return 'C' + p1.x.toFixed(1) + ',' + p1.y.toFixed(1) + // start control point
  819. ' ' + p2.x.toFixed(1) + ',' + p2.y.toFixed(1) + // end control point
  820. ' ' + x2.toFixed(1) + ',' + y2.toFixed(1); // end point
  821. }
  822. /**
  823. * Draws a wobbly (hand drawn) rect
  824. */
  825. function handRect(x, y, w, h) {
  826. assert(_.all([x, y, w, h], _.isFinite), 'x, y, w, h must be numeric');
  827. return 'M' + x + ',' + y +
  828. wobble(x, y, x + w, y) +
  829. wobble(x + w, y, x + w, y + h) +
  830. wobble(x + w, y + h, x, y + h) +
  831. wobble(x, y + h, x, y);
  832. }
  833. /**
  834. * Draws a wobbly (hand drawn) line
  835. */
  836. function handLine(x1, y1, x2, y2) {
  837. assert(_.all([x1,x2,y1,y2], _.isFinite), 'x1,x2,y1,y2 must be numeric');
  838. return 'M' + x1.toFixed(1) + ',' + y1.toFixed(1) + wobble(x1, y1, x2, y2);
  839. }
  840. /******************
  841. * BaseTheme
  842. ******************/
  843. var BaseTheme = function(diagram, options) {
  844. this.init(diagram, options);
  845. };
  846. _.extend(BaseTheme.prototype, {
  847. // Init called while creating the Theme
  848. init: function(diagram, options) {
  849. this.diagram = diagram;
  850. this.actorsHeight_ = 0;
  851. this.signalsHeight_ = 0;
  852. this.title_ = undefined; // hack - This should be somewhere better
  853. },
  854. setupPaper: function(container) {},
  855. draw: function(container) {
  856. this.setupPaper(container);
  857. this.layout();
  858. var titleHeight = this.title_ ? this.title_.height : 0;
  859. var y = DIAGRAM_MARGIN + titleHeight;
  860. this.drawTitle();
  861. this.drawActors(y);
  862. this.drawSignals(y + this.actorsHeight_);
  863. },
  864. layout: function() {
  865. // Local copies
  866. var diagram = this.diagram;
  867. var font = this.font_;
  868. var actors = diagram.actors;
  869. var signals = diagram.signals;
  870. diagram.width = 0; // min width
  871. diagram.height = 0; // min height
  872. // Setup some layout stuff
  873. if (diagram.title) {
  874. var title = this.title_ = {};
  875. var bb = this.textBBox(diagram.title, font);
  876. title.textBB = bb;
  877. title.message = diagram.title;
  878. title.width = bb.width + (TITLE_PADDING + TITLE_MARGIN) * 2;
  879. title.height = bb.height + (TITLE_PADDING + TITLE_MARGIN) * 2;
  880. title.x = DIAGRAM_MARGIN;
  881. title.y = DIAGRAM_MARGIN;
  882. diagram.width += title.width;
  883. diagram.height += title.height;
  884. }
  885. _.each(actors, function(a) {
  886. var bb = this.textBBox(a.name, font);
  887. a.textBB = bb;
  888. a.x = 0; a.y = 0;
  889. a.width = bb.width + (ACTOR_PADDING + ACTOR_MARGIN) * 2;
  890. a.height = bb.height + (ACTOR_PADDING + ACTOR_MARGIN) * 2;
  891. a.distances = [];
  892. a.paddingRight = 0;
  893. this.actorsHeight_ = Math.max(a.height, this.actorsHeight_);
  894. }, this);
  895. function actorEnsureDistance(a, b, d) {
  896. assert(a < b, 'a must be less than or equal to b');
  897. if (a < 0) {
  898. // Ensure b has left margin
  899. b = actors[b];
  900. b.x = Math.max(d - b.width / 2, b.x);
  901. } else if (b >= actors.length) {
  902. // Ensure a has right margin
  903. a = actors[a];
  904. a.paddingRight = Math.max(d, a.paddingRight);
  905. } else {
  906. a = actors[a];
  907. a.distances[b] = Math.max(d, a.distances[b] ? a.distances[b] : 0);
  908. }
  909. }
  910. _.each(signals, function(s) {
  911. // Indexes of the left and right actors involved
  912. var a;
  913. var b;
  914. var bb = this.textBBox(s.message, font);
  915. //var bb = t.attr("text", s.message).getBBox();
  916. s.textBB = bb;
  917. s.width = bb.width;
  918. s.height = bb.height;
  919. var extraWidth = 0;
  920. if (s.type == 'Signal') {
  921. s.width += (SIGNAL_MARGIN + SIGNAL_PADDING) * 2;
  922. s.height += (SIGNAL_MARGIN + SIGNAL_PADDING) * 2;
  923. if (s.isSelf()) {
  924. // TODO Self signals need a min height
  925. a = s.actorA.index;
  926. b = a + 1;
  927. s.width += SELF_SIGNAL_WIDTH;
  928. } else {
  929. a = Math.min(s.actorA.index, s.actorB.index);
  930. b = Math.max(s.actorA.index, s.actorB.index);
  931. }
  932. } else if (s.type == 'Note') {
  933. s.width += (NOTE_MARGIN + NOTE_PADDING) * 2;
  934. s.height += (NOTE_MARGIN + NOTE_PADDING) * 2;
  935. // HACK lets include the actor's padding
  936. extraWidth = 2 * ACTOR_MARGIN;
  937. if (s.placement == PLACEMENT.LEFTOF) {
  938. b = s.actor.index;
  939. a = b - 1;
  940. } else if (s.placement == PLACEMENT.RIGHTOF) {
  941. a = s.actor.index;
  942. b = a + 1;
  943. } else if (s.placement == PLACEMENT.OVER && s.hasManyActors()) {
  944. // Over multiple actors
  945. a = Math.min(s.actor[0].index, s.actor[1].index);
  946. b = Math.max(s.actor[0].index, s.actor[1].index);
  947. // We don't need our padding, and we want to overlap
  948. extraWidth = -(NOTE_PADDING * 2 + NOTE_OVERLAP * 2);
  949. } else if (s.placement == PLACEMENT.OVER) {
  950. // Over single actor
  951. a = s.actor.index;
  952. actorEnsureDistance(a - 1, a, s.width / 2);
  953. actorEnsureDistance(a, a + 1, s.width / 2);
  954. this.signalsHeight_ += s.height;
  955. return; // Bail out early
  956. }
  957. } else {
  958. throw new Error('Unhandled signal type:' + s.type);
  959. }
  960. actorEnsureDistance(a, b, s.width + extraWidth);
  961. this.signalsHeight_ += s.height;
  962. }, this);
  963. // Re-jig the positions
  964. var actorsX = 0;
  965. _.each(actors, function(a) {
  966. a.x = Math.max(actorsX, a.x);
  967. // TODO This only works if we loop in sequence, 0, 1, 2, etc
  968. _.each(a.distances, function(distance, b) {
  969. // lodash (and possibly others) do not like sparse arrays
  970. // so sometimes they return undefined
  971. if (typeof distance == 'undefined') {
  972. return;
  973. }
  974. b = actors[b];
  975. distance = Math.max(distance, a.width / 2, b.width / 2);
  976. b.x = Math.max(b.x, a.x + a.width / 2 + distance - b.width / 2);
  977. });
  978. actorsX = a.x + a.width + a.paddingRight;
  979. }, this);
  980. diagram.width = Math.max(actorsX, diagram.width);
  981. // TODO Refactor a little
  982. diagram.width += 2 * DIAGRAM_MARGIN;
  983. diagram.height += 2 * DIAGRAM_MARGIN + 2 * this.actorsHeight_ + this.signalsHeight_;
  984. return this;
  985. },
  986. // TODO Instead of one textBBox function, create a function for each element type, e.g
  987. // layout_title, layout_actor, etc that returns it's bounding box
  988. textBBox: function(text, font) {},
  989. drawTitle: function() {
  990. var title = this.title_;
  991. if (title) {
  992. this.drawTextBox(title, title.message, TITLE_MARGIN, TITLE_PADDING, this.font_, ALIGN_LEFT);
  993. }
  994. },
  995. drawActors: function(offsetY) {
  996. var y = offsetY;
  997. _.each(this.diagram.actors, function(a) {
  998. // Top box
  999. this.drawActor(a, y, this.actorsHeight_);
  1000. // Bottom box
  1001. this.drawActor(a, y + this.actorsHeight_ + this.signalsHeight_, this.actorsHeight_);
  1002. // Veritical line
  1003. var aX = getCenterX(a);
  1004. this.drawLine(
  1005. aX, y + this.actorsHeight_ - ACTOR_MARGIN,
  1006. aX, y + this.actorsHeight_ + ACTOR_MARGIN + this.signalsHeight_);
  1007. }, this);
  1008. },
  1009. drawActor: function(actor, offsetY, height) {
  1010. actor.y = offsetY;
  1011. actor.height = height;
  1012. this.drawTextBox(actor, actor.name, ACTOR_MARGIN, ACTOR_PADDING, this.font_, ALIGN_CENTER);
  1013. },
  1014. drawSignals: function(offsetY) {
  1015. var y = offsetY;
  1016. _.each(this.diagram.signals, function(s) {
  1017. // TODO Add debug mode, that draws padding/margin box
  1018. if (s.type == 'Signal') {
  1019. if (s.isSelf()) {
  1020. this.drawSelfSignal(s, y);
  1021. } else {
  1022. this.drawSignal(s, y);
  1023. }
  1024. } else if (s.type == 'Note') {
  1025. this.drawNote(s, y);
  1026. }
  1027. y += s.height;
  1028. }, this);
  1029. },
  1030. drawSelfSignal: function(signal, offsetY) {
  1031. assert(signal.isSelf(), 'signal must be a self signal');
  1032. var textBB = signal.textBB;
  1033. var aX = getCenterX(signal.actorA);
  1034. var x = aX + SELF_SIGNAL_WIDTH + SIGNAL_PADDING;
  1035. var y = offsetY + SIGNAL_PADDING + signal.height / 2 + textBB.y;
  1036. this.drawText(x, y, signal.message, this.font_, ALIGN_LEFT);
  1037. var y1 = offsetY + SIGNAL_MARGIN + SIGNAL_PADDING;
  1038. var y2 = y1 + signal.height - 2 * SIGNAL_MARGIN - SIGNAL_PADDING;
  1039. // Draw three lines, the last one with a arrow
  1040. this.drawLine(aX, y1, aX + SELF_SIGNAL_WIDTH, y1, signal.linetype);
  1041. this.drawLine(aX + SELF_SIGNAL_WIDTH, y1, aX + SELF_SIGNAL_WIDTH, y2, signal.linetype);
  1042. this.drawLine(aX + SELF_SIGNAL_WIDTH, y2, aX, y2, signal.linetype, signal.arrowtype);
  1043. },
  1044. drawSignal: function(signal, offsetY) {
  1045. var aX = getCenterX(signal.actorA);
  1046. var bX = getCenterX(signal.actorB);
  1047. // Mid point between actors
  1048. var x = (bX - aX) / 2 + aX;
  1049. var y = offsetY + SIGNAL_MARGIN + 2 * SIGNAL_PADDING;
  1050. // Draw the text in the middle of the signal
  1051. this.drawText(x, y, signal.message, this.font_, ALIGN_CENTER);
  1052. // Draw the line along the bottom of the signal
  1053. y = offsetY + signal.height - SIGNAL_MARGIN - SIGNAL_PADDING;
  1054. this.drawLine(aX, y, bX, y, signal.linetype, signal.arrowtype);
  1055. },
  1056. drawNote: function(note, offsetY) {
  1057. note.y = offsetY;
  1058. var actorA = note.hasManyActors() ? note.actor[0] : note.actor;
  1059. var aX = getCenterX(actorA);
  1060. switch (note.placement) {
  1061. case PLACEMENT.RIGHTOF:
  1062. note.x = aX + ACTOR_MARGIN;
  1063. break;
  1064. case PLACEMENT.LEFTOF:
  1065. note.x = aX - ACTOR_MARGIN - note.width;
  1066. break;
  1067. case PLACEMENT.OVER:
  1068. if (note.hasManyActors()) {
  1069. var bX = getCenterX(note.actor[1]);
  1070. var overlap = NOTE_OVERLAP + NOTE_PADDING;
  1071. note.x = Math.min(aX, bX) - overlap;
  1072. note.width = (Math.max(aX, bX) + overlap) - note.x;
  1073. } else {
  1074. note.x = aX - note.width / 2;
  1075. }
  1076. break;
  1077. default:
  1078. throw new Error('Unhandled note placement: ' + note.placement);
  1079. }
  1080. return this.drawTextBox(note, note.message, NOTE_MARGIN, NOTE_PADDING, this.font_, ALIGN_LEFT);
  1081. },
  1082. /**
  1083. * Draw text surrounded by a box
  1084. */
  1085. drawTextBox: function(box, text, margin, padding, font, align) {
  1086. var x = box.x + margin;
  1087. var y = box.y + margin;
  1088. var w = box.width - 2 * margin;
  1089. var h = box.height - 2 * margin;
  1090. // Draw inner box
  1091. this.drawRect(x, y, w, h);
  1092. // Draw text (in the center)
  1093. if (align == ALIGN_CENTER) {
  1094. x = getCenterX(box);
  1095. y = getCenterY(box);
  1096. } else {
  1097. x += padding;
  1098. y += padding;
  1099. }
  1100. return this.drawText(x, y, text, font, align);
  1101. }
  1102. });
  1103. /** js sequence diagrams
  1104. * https://bramp.github.io/js-sequence-diagrams/
  1105. * (c) 2012-2017 Andrew Brampton (bramp.net)
  1106. * Simplified BSD license.
  1107. */
  1108. /*global Diagram, Raphael, _ */
  1109. if (typeof Raphael != 'undefined') {
  1110. var LINE = {
  1111. 'stroke': '#000000',
  1112. 'stroke-width': 2,
  1113. 'fill': 'none'
  1114. };
  1115. var RECT = {
  1116. 'stroke': '#000000',
  1117. 'stroke-width': 2,
  1118. 'fill': '#fff'
  1119. };
  1120. /******************
  1121. * Raphaël extras
  1122. ******************/
  1123. Raphael.fn.line = function(x1, y1, x2, y2) {
  1124. assert(_.all([x1,x2,y1,y2], _.isFinite), 'x1,x2,y1,y2 must be numeric');
  1125. return this.path('M{0},{1} L{2},{3}', x1, y1, x2, y2);
  1126. };
  1127. /******************
  1128. * RaphaelTheme
  1129. ******************/
  1130. var RaphaelTheme = function(diagram, options, resume) {
  1131. this.init(diagram, _.defaults(options, {
  1132. 'font-size': 16,
  1133. 'font-family': 'Andale Mono, monospace'
  1134. }), resume);
  1135. };
  1136. _.extend(RaphaelTheme.prototype, BaseTheme.prototype, {
  1137. init: function(diagram, options, resume) {
  1138. BaseTheme.prototype.init.call(this, diagram);
  1139. this.paper_ = undefined;
  1140. this.font_ = {
  1141. 'font-size': options['font-size'],
  1142. 'font-family': options['font-family']
  1143. };
  1144. var a = this.arrowTypes_ = {};
  1145. a[ARROWTYPE.FILLED] = 'block';
  1146. a[ARROWTYPE.OPEN] = 'open';
  1147. var l = this.lineTypes_ = {};
  1148. l[LINETYPE.SOLID] = '';
  1149. l[LINETYPE.DOTTED] = '-';
  1150. resume(this);
  1151. },
  1152. setupPaper: function(container) {
  1153. this.paper_ = new Raphael(container, 320, 200);
  1154. this.paper_.setStart();
  1155. },
  1156. draw: function(container) {
  1157. BaseTheme.prototype.draw.call(this, container);
  1158. this.paper_.setFinish();
  1159. },
  1160. layout: function() {
  1161. BaseTheme.prototype.layout.call(this);
  1162. this.paper_.setSize(
  1163. this.diagram.width,
  1164. this.diagram.height
  1165. );
  1166. },
  1167. /**
  1168. * Strip whitespace from each newline
  1169. */
  1170. cleanText: function(text) {
  1171. text = _.invoke(text.split('\n'), 'trim');
  1172. return text.join('\n');
  1173. },
  1174. /**
  1175. * Returns the text's bounding box
  1176. */
  1177. textBBox: function(text, font) {
  1178. text = this.cleanText(text);
  1179. font = font || {};
  1180. var p;
  1181. if (font.obj_) {
  1182. p = this.paper_.print(0, 0, text, font.obj_, font['font-size']);
  1183. } else {
  1184. p = this.paper_.text(0, 0, text);
  1185. p.attr(font);
  1186. }
  1187. var bb = p.getBBox();
  1188. p.remove();
  1189. return bb;
  1190. },
  1191. drawLine: function(x1, y1, x2, y2, linetype, arrowhead) {
  1192. var line = this.paper_.line(x1, y1, x2, y2).attr(LINE);
  1193. if (arrowhead !== undefined) {
  1194. line.attr('arrow-end', this.arrowTypes_[arrowhead] + '-wide-long');
  1195. }
  1196. if (arrowhead !== undefined) {
  1197. line.attr('stroke-dasharray', this.lineTypes_[linetype]);
  1198. }
  1199. return line;
  1200. },
  1201. drawRect: function(x, y, w, h) {
  1202. return this.paper_.rect(x, y, w, h).attr(RECT);
  1203. },
  1204. /**
  1205. * Draws text with a optional white background
  1206. * x,y (int) x,y top left point of the text, or the center of the text (depending on align param)
  1207. * text (string) text to print
  1208. * font (Object)
  1209. * align (string) ALIGN_LEFT or ALIGN_CENTER
  1210. */
  1211. drawText: function(x, y, text, font, align) {
  1212. text = this.cleanText(text);
  1213. font = font || {};
  1214. align = align || ALIGN_LEFT;
  1215. var paper = this.paper_;
  1216. var bb = this.textBBox(text, font);
  1217. if (align == ALIGN_CENTER) {
  1218. x = x - bb.width / 2;
  1219. y = y - bb.height / 2;
  1220. }
  1221. var t;
  1222. if (font.obj_) {
  1223. // When using a font, we have to use .print(..)
  1224. t = paper.print(x - bb.x, y - bb.y, text, font.obj_, font['font-size']);
  1225. } else {
  1226. t = paper.text(x - bb.x - bb.width / 2, y - bb.y, text);
  1227. t.attr(font);
  1228. t.attr({'text-anchor': 'start'});
  1229. }
  1230. return t;
  1231. }
  1232. });
  1233. /******************
  1234. * RaphaelHandTheme
  1235. ******************/
  1236. var RaphaelHandTheme = function(diagram, options, resume) {
  1237. this.init(diagram, _.defaults(options, {
  1238. 'font-size': 16,
  1239. 'font-family': 'daniel'
  1240. }), resume);
  1241. };
  1242. // Take the standard RaphaelTheme and make all the lines wobbly
  1243. _.extend(RaphaelHandTheme.prototype, RaphaelTheme.prototype, {
  1244. setupPaper: function(container) {
  1245. RaphaelTheme.prototype.setupPaper.call(this, container);
  1246. this.font_.obj_ = this.paper_.getFont('daniel');
  1247. },
  1248. drawLine: function(x1, y1, x2, y2, linetype, arrowhead) {
  1249. var line = this.paper_.path(handLine(x1, y1, x2, y2)).attr(LINE);
  1250. if (arrowhead !== undefined) {
  1251. line.attr('arrow-end', this.arrowTypes_[arrowhead] + '-wide-long');
  1252. }
  1253. if (arrowhead !== undefined) {
  1254. line.attr('stroke-dasharray', this.lineTypes_[linetype]);
  1255. }
  1256. return line;
  1257. },
  1258. drawRect: function(x, y, w, h) {
  1259. return this.paper_.path(handRect(x, y, w, h)).attr(RECT);
  1260. }
  1261. });
  1262. registerTheme('raphaelSimple', RaphaelTheme);
  1263. registerTheme('raphaelHand', RaphaelHandTheme);
  1264. }
  1265. /*!
  1266. * The following copyright notice may not be removed under any circumstances.
  1267. *
  1268. * Copyright:
  1269. * Copyright (c) 2011 by Daniel Midgley. All rights reserved.
  1270. *
  1271. * Trademark:
  1272. * Please refer to the Copyright section for the font trademark attribution
  1273. * notices.
  1274. *
  1275. * Full name:
  1276. * Daniel-Bold
  1277. *
  1278. * Description:
  1279. * Daniel Bold is a font by Daniel Midgley.
  1280. *
  1281. * Designer:
  1282. * Daniel Midgley
  1283. *
  1284. * Vendor URL:
  1285. * http://goodreasonblog.blogspot.com/p/fontery.html
  1286. *
  1287. * License information:
  1288. * http://creativecommons.org/licenses/by-nd/3.0/
  1289. */
  1290. if (typeof Raphael != 'undefined') {
  1291. Raphael.registerFont({
  1292. "w": 209,
  1293. "face": {
  1294. "font-family": "Daniel",
  1295. "font-weight": 700,
  1296. "font-stretch": "normal",
  1297. "units-per-em": "360",
  1298. "panose-1": "2 11 8 0 0 0 0 0 0 0",
  1299. "ascent": "288",
  1300. "descent": "-72",
  1301. "x-height": "7",
  1302. "bbox": "-92.0373 -310.134 519 184.967",
  1303. "underline-thickness": "3.51562",
  1304. "underline-position": "-25.1367",
  1305. "unicode-range": "U+0009-U+F002"
  1306. },
  1307. "glyphs": {
  1308. " ": {
  1309. "w": 179
  1310. },
  1311. "\t": {
  1312. "w": 179
  1313. },
  1314. "\r": {
  1315. "w": 179
  1316. },
  1317. "!": {
  1318. "d": "66,-306v9,3,18,11,19,24v-18,73,-20,111,-37,194v0,10,2,34,-12,34v-12,0,-18,-9,-18,-28v0,-85,23,-136,38,-214v1,-7,4,-10,10,-10xm25,-30v15,-1,28,34,5,35v-11,-1,-38,-36,-5,-35",
  1319. "w": 115
  1320. },
  1321. "\"": {
  1322. "d": "91,-214v-32,3,-25,-40,-20,-68v3,-16,7,-25,12,-27v35,13,14,56,8,95xm8,-231v4,-31,1,-40,18,-75v37,7,11,51,11,79v-3,3,-4,8,-5,13v-17,4,-16,-10,-24,-17",
  1323. "w": 117
  1324. },
  1325. "#": {
  1326. "d": "271,-64v-30,26,-96,-7,-102,51v-6,2,-13,2,-24,-2v-2,-11,10,-21,2,-28v-14,5,-48,0,-48,22v0,23,-11,14,-29,10v-7,-6,6,-19,-1,-24r-32,4v-19,-8,-15,-24,5,-28r33,-6v4,0,24,-23,11,-27v-26,0,-63,14,-74,-10v3,-1,9,-17,16,-10v15,-8,81,4,89,-30v8,-14,16,-34,24,-38v23,9,24,38,5,49v37,24,55,-38,72,-43v19,10,20,23,-1,45v2,8,23,1,29,4v3,3,6,6,10,11v-14,13,-20,12,-45,12v-17,0,-16,17,-19,29v18,-7,49,3,67,-2v4,0,8,4,12,11xm161,-104v-30,-1,-44,10,-44,37v14,1,24,0,40,-5v0,-1,3,-10,8,-26v0,-4,-1,-6,-4,-6",
  1327. "w": 285
  1328. },
  1329. "$": {
  1330. "d": "164,-257v29,4,1,42,-3,50v5,5,38,13,41,24v8,4,6,15,-2,21v-18,3,-36,-17,-49,-17v-17,1,-31,40,-28,48v5,4,8,8,9,10v13,1,35,37,28,44v-10,21,-36,20,-65,28v-10,10,-12,40,-17,51v-9,-3,-28,1,-18,-17v0,-13,5,-24,-1,-35v-18,1,-59,-10,-42,-29v21,0,56,16,55,-16v5,-4,9,-18,9,-26v-14,-15,-55,-41,-53,-65v2,-33,56,-19,98,-26v10,-14,31,-43,38,-45xm93,-152v11,-10,15,-15,14,-29v-17,-3,-37,1,-43,6v10,12,20,19,29,23xm111,-103v-8,1,-11,12,-10,22v10,0,28,2,27,-8v0,-4,-13,-15,-17,-14",
  1331. "w": 225
  1332. },
  1333. "%": {
  1334. "d": "181,-96v24,-7,67,-13,104,1v14,18,21,19,22,44v-13,43,-99,61,-146,36v-9,-9,-22,-11,-32,-29v0,-27,24,-53,52,-52xm139,-185v-9,68,-138,73,-131,-5v0,-3,3,-9,9,-17v13,1,27,1,17,-16v5,-39,63,0,93,-6v36,1,80,-9,102,11v15,32,12,32,-8,56v-16,21,-103,78,-152,125r-14,28v-23,11,-25,-7,-29,-20v34,-71,133,-98,171,-162v-13,-12,-52,-5,-61,1v0,1,1,3,3,5xm38,-190v0,34,55,29,70,8v0,-14,-20,-11,-32,-14v-14,-3,-24,-9,-40,-10v1,0,5,11,2,16xm172,-53v12,27,90,18,102,-5v-18,-7,-32,-10,-40,-10v-29,3,-57,-4,-62,15",
  1335. "w": 308
  1336. },
  1337. "&": {
  1338. "d": "145,-82v17,-8,47,-15,71,-26v13,2,25,12,9,23v-23,7,-40,16,-53,27r0,6v13,8,30,21,36,38v0,8,-4,12,-11,12v-19,0,-43,-39,-59,-44v-30,12,-65,29,-97,32v-32,3,-45,-41,-23,-63v21,-20,52,-26,70,-48v-4,-31,-12,-47,9,-73v13,-16,20,-29,23,-39v15,-15,32,-22,51,-22v30,9,62,64,32,96v-2,3,-47,42,-69,48v-15,8,-11,9,0,22v6,7,10,11,11,11xm114,-138v25,-13,62,-38,74,-62v0,-9,-10,-31,-20,-29v-28,7,-60,42,-60,75v0,10,2,15,6,16xm99,-91v-18,10,-54,18,-59,45v26,5,61,-12,77,-22v-1,-5,-13,-23,-18,-23",
  1339. "w": 253
  1340. },
  1341. "'": {
  1342. "d": "36,-182v-36,7,-34,-61,-17,-80v15,1,21,19,21,20r-1,-1v0,0,-1,12,-5,35v1,5,3,17,2,26",
  1343. "w": 63
  1344. },
  1345. "(": {
  1346. "d": "130,-306v13,2,23,43,-1,43v-49,43,-77,77,-90,148v5,49,27,67,64,101v4,14,5,6,2,19r-15,0v-35,-17,-79,-58,-79,-120v0,-58,66,-176,119,-191",
  1347. "w": 120
  1348. },
  1349. ")": {
  1350. "d": "108,-138v-2,73,-48,120,-98,153v-17,-5,-16,-20,-6,-31v52,-64,73,-62,74,-135v1,-42,-40,-98,-58,-128v0,-5,-1,-12,-2,-22v18,-18,25,0,42,27v25,39,50,66,48,136",
  1351. "w": 120
  1352. },
  1353. "*": {
  1354. "d": "121,-271v15,-5,36,-8,40,9v-5,10,-31,19,-47,31v0,11,34,43,14,53v-18,8,-24,-24,-34,-20v-4,10,-4,19,-12,41v-25,7,-15,-30,-17,-47v-13,-1,-17,9,-46,30r-10,0v-20,-32,37,-43,54,-64v-10,-11,-36,-33,-16,-51v3,0,14,8,33,24v8,-10,26,-39,32,-42v14,7,15,23,9,36",
  1355. "w": 177
  1356. },
  1357. "+": {
  1358. "d": "163,-64v-7,22,-65,2,-77,21v-2,10,-6,21,-11,35v-20,4,-21,-12,-19,-29v3,-23,-44,6,-39,-27v-8,-22,36,-8,49,-18v8,-13,6,-36,24,-40v19,-4,14,32,11,39v18,3,19,2,54,8v2,1,5,5,8,11",
  1359. "w": 170
  1360. },
  1361. ",": {
  1362. "d": "25,63v-26,21,-48,-2,-22,-24v14,-12,35,-40,35,-69v3,-2,3,-11,12,-9v35,17,5,88,-25,102",
  1363. "w": 97
  1364. },
  1365. "-": {
  1366. "d": "57,-94v19,4,55,-5,54,17v-15,23,-54,20,-91,15v-4,2,-13,-10,-11,-16v-1,-22,28,-15,48,-16",
  1367. "w": 124
  1368. },
  1369. ".": {
  1370. "d": "40,-48v21,20,21,44,-4,44v-33,0,-26,-24,-10,-44r14,0",
  1371. "w": 67
  1372. },
  1373. "\/": {
  1374. "d": "21,20v-22,-45,21,-95,41,-126v38,-57,115,-158,193,-201v2,0,4,3,7,11v11,29,-15,34,-25,55v-81,56,-189,208,-197,261r-19,0",
  1375. "w": 275
  1376. },
  1377. "0": {
  1378. "d": "78,-237v70,-47,269,-41,270,59v0,34,-11,53,-29,76v-13,35,-30,32,-85,64v-6,2,-10,6,-7,8v-73,14,-98,38,-173,1v-7,-13,-52,-48,-46,-88v9,-57,27,-75,70,-120xm123,-38v100,0,202,-46,195,-153v-32,-55,-144,-73,-211,-35v-16,34,-68,54,-53,108v6,25,1,22,-3,39v6,24,41,41,72,41",
  1379. "w": 353
  1380. },
  1381. "1": {
  1382. "d": "39,-208v0,-14,6,-59,29,-39v3,4,6,13,10,24r-22,128r8,87v-4,6,-9,3,-16,2v-44,-38,-9,-137,-9,-202",
  1383. "w": 93
  1384. },
  1385. "2": {
  1386. "d": "88,-35v47,-10,119,-24,168,-9v0,12,-23,13,-35,16v1,1,3,1,5,1v-74,8,-118,23,-194,23v-14,0,-20,-13,-21,-28v55,-40,83,-61,123,-104v26,-13,65,-67,71,-102v-1,-9,-11,-16,-22,-16v-20,-1,-120,29,-156,49v-10,-2,-30,-20,-10,-28v50,-21,111,-51,178,-48v25,10,44,22,36,39v12,30,-19,64,-34,83v-39,48,-37,39,-115,109v0,5,-3,8,-8,11v4,3,8,4,14,4",
  1387. "w": 265
  1388. },
  1389. "3": {
  1390. "d": "188,-282v34,-10,74,25,47,51v-19,32,-55,50,-92,70v28,14,116,25,108,70v8,14,-49,40,-63,48v-29,9,-130,22,-168,42v-6,-5,-19,-7,-12,-22v56,-36,175,-21,210,-76v-9,-20,-88,-42,-97,-33v-20,-1,-41,2,-56,-7r5,-21v56,-25,103,-36,137,-78v1,-1,2,-5,4,-11v-15,-14,-56,7,-79,0v-10,9,-73,22,-92,31v-11,-4,-28,-23,-13,-30v50,-22,96,-26,154,-37v0,-1,8,3,7,3",
  1391. "w": 260
  1392. },
  1393. "4": {
  1394. "d": "79,-249v-7,17,-29,75,-33,96v0,6,3,8,8,8v43,-2,111,6,141,-6v17,-47,20,-100,63,-148v9,4,16,7,21,10v-17,31,-44,95,-51,141v7,4,24,-4,23,10v-1,16,-29,12,-31,23v-10,22,-9,69,-7,103v-3,2,-7,5,-10,9v-47,-11,-23,-74,-16,-114v0,-4,-2,-6,-7,-6v-65,2,-89,13,-162,4v-22,-22,-2,-53,5,-76v16,-15,17,-57,35,-70v6,-1,21,11,21,16",
  1395. "w": 267
  1396. },
  1397. "5": {
  1398. "d": "185,-272v30,7,45,-8,53,18v1,16,-17,18,-34,14v0,0,-95,-11,-129,1v-6,9,-24,33,-29,54v76,10,171,5,214,47v11,11,22,30,5,52v-14,12,-30,14,-34,27v-26,11,-141,63,-157,60v-16,-2,-25,-19,-4,-27v48,-18,128,-39,170,-86v4,-14,-65,-41,-85,-41r-92,0v-10,-4,-66,-1,-57,-23v0,-23,23,-51,35,-83v11,-28,133,-10,144,-13",
  1399. "w": 284
  1400. },
  1401. "6": {
  1402. "d": "70,-64v9,-51,63,-74,123,-71v43,2,109,3,111,41r-25,47v0,1,1,2,2,3v-5,0,-39,10,-41,20v-15,3,-22,4,-22,11v-39,1,-77,20,-119,13v-42,-7,-35,-9,-77,-46v-56,-118,94,-201,176,-229v7,0,21,8,20,15v-2,17,-23,15,-43,24v-69,31,-119,72,-134,145v-5,25,36,68,78,64v59,-6,128,-18,153,-61v-7,-14,-13,-9,-32,-21v-67,-15,-118,-5,-150,43r0,12v-13,4,-17,-3,-20,-10",
  1403. "w": 310
  1404. },
  1405. "7": {
  1406. "d": "37,-228v33,-14,173,-17,181,-19v28,-1,24,31,9,45v-17,15,-45,49,-59,69v-17,26,-55,67,-61,113v-10,13,-9,14,-14,20v-33,-13,-20,-25,-11,-53v16,-48,73,-115,109,-156v2,-7,5,-14,-10,-12v-26,4,-54,6,-76,13v-23,-5,-83,31,-94,-9v2,-8,18,-19,26,-11",
  1407. "w": 245
  1408. },
  1409. "8": {
  1410. "d": "57,-236v40,-50,166,-51,213,-10v22,28,10,63,-22,78r-35,17v8,5,54,24,53,44v-5,14,-4,33,-18,42v-13,13,-35,18,-44,34v-60,27,-190,49,-194,-42v7,-41,17,-54,59,-70r0,-4v-32,-9,-73,-62,-26,-85v4,0,8,-2,14,-4xm142,-160v24,-2,160,-31,99,-72v-28,-18,-108,-33,-146,-5v-16,12,-28,30,-33,59v24,12,37,20,80,18xm41,-62v30,65,189,6,199,-37v3,-14,-60,-30,-74,-30v-70,0,-118,10,-125,67",
  1411. "w": 290
  1412. },
  1413. "9": {
  1414. "d": "11,-192v15,-49,119,-61,161,-23v16,15,27,55,11,79v-20,62,-51,79,-96,118v-10,4,-45,27,-50,6v9,-15,66,-52,98,-99v-7,-7,-8,-3,-25,0v-49,-11,-96,-25,-99,-81xm145,-131v7,-5,13,-34,13,-41v-2,-51,-104,-38,-114,-6v-2,10,37,35,46,35v23,1,43,-1,55,12",
  1415. "w": 198
  1416. },
  1417. ":": {
  1418. "d": "39,-125v15,-8,40,-1,40,15v0,15,-6,22,-19,22v-13,0,-29,-21,-21,-37xm66,-17v-8,27,-51,19,-46,-8v-1,-6,8,-22,14,-20v29,0,30,6,32,28",
  1419. "w": 95
  1420. },
  1421. ";": {
  1422. "d": "56,-93v2,-30,37,-22,40,2v0,2,-1,7,-3,15v-13,8,-15,6,-27,4xm64,-44v11,-11,30,-4,32,14v-21,39,-63,71,-92,85v-5,0,-11,-2,-18,-8v11,-23,36,-36,50,-61v11,-7,19,-20,28,-30",
  1423. "w": 107
  1424. },
  1425. "<": {
  1426. "d": "166,-202v12,0,29,15,24,29v0,4,-119,64,-120,73v15,21,89,64,91,86v2,29,-18,12,-30,15v-27,-29,-59,-54,-95,-75v-18,-10,-25,-13,-24,-41",
  1427. "w": 176
  1428. },
  1429. "=": {
  1430. "d": "125,-121v18,7,55,-9,69,14v0,17,-45,26,-135,26v-18,0,-27,-7,-27,-21v-1,-37,60,-5,93,-19xm138,-71v20,0,48,-1,50,16v-13,24,-86,32,-131,29v-29,-2,-43,-10,-43,-24v-7,-23,36,-14,39,-17v27,6,57,-4,85,-4",
  1431. "w": 196
  1432. },
  1433. ">": {
  1434. "d": "4,-14v20,-48,77,-59,118,-94v-16,-19,-58,-52,-81,-75v-11,-7,-15,-38,-1,-40v33,16,83,71,121,105v26,23,-6,35,-41,53v-29,16,-56,28,-73,54v-21,15,-16,20,-34,15v-3,0,-9,-16,-9,-18",
  1435. "w": 174
  1436. },
  1437. "?": {
  1438. "d": "105,-291v57,-13,107,-4,107,39v0,67,-136,85,-155,137v-1,6,10,23,-4,23v-23,1,-33,-35,-23,-57v31,-41,124,-60,149,-103v-8,-21,-72,-5,-88,-1v-23,6,-59,39,-71,8v0,0,-1,0,1,-17v10,-4,45,-20,84,-29xm80,-25v-6,4,-8,39,-24,22v-24,3,-22,-21,-13,-35v17,-7,29,5,37,13",
  1439. "w": 216
  1440. },
  1441. "@": {
  1442. "d": "218,-207v23,8,42,14,47,37v44,68,-27,137,-87,85r1,0v0,2,-59,19,-61,17v-35,0,-42,-47,-17,-68r0,-4v-19,-1,-45,37,-49,40v-37,76,58,72,121,62v11,-2,34,-13,36,3v-14,31,-69,31,-114,33v-51,2,-99,-41,-80,-92v2,-30,22,-40,42,-63v35,-20,91,-53,161,-50xm217,-101v23,0,35,-19,35,-41v0,-43,-75,-41,-102,-19v36,3,55,16,62,41v-6,5,-6,19,5,19xm127,-110v8,5,51,-15,28,-16v-4,0,-25,4,-28,16",
  1443. "w": 291
  1444. },
  1445. "A": {
  1446. "d": "97,-81v-23,-10,-39,38,-52,60v-8,6,-8,6,-22,18v-22,-7,-23,-37,-4,-49v7,-8,11,-15,15,-23r-1,1v-14,-26,23,-29,31,-40v1,-1,15,-29,26,-36v17,-31,39,-58,54,-92v16,-20,20,-51,41,-66v29,5,34,62,45,92v9,64,21,103,49,155v-3,25,-44,11,-54,0v-34,-12,-97,-29,-128,-20xm107,-118v20,6,80,10,111,17v6,-7,-4,-15,-7,-24v-11,-28,-9,-92,-30,-117v-9,9,-19,44,-34,55v-9,23,-27,40,-40,69",
  1447. "w": 294
  1448. },
  1449. "B": {
  1450. "d": "256,-179v41,10,115,34,91,91v-6,3,-14,12,-19,20v-37,19,-50,34,-63,25v-9,10,-12,11,-34,13r3,-3v-4,-4,-12,-4,-18,0v0,0,2,2,5,4v-21,14,-26,6,-44,15v-4,0,-7,-2,-8,-5v-6,11,-20,-5,-18,11v-36,4,-91,35,-114,4v-7,-62,-10,-138,4,-199v-1,-19,-37,2,-37,-27v0,-8,2,-13,6,-15v68,-31,231,-92,311,-39v8,12,12,20,12,25v-8,42,-32,49,-77,80xm79,-160v72,-17,135,-39,184,-70v20,-13,31,-23,31,-27v1,-6,-30,-13,-38,-12v-54,0,-116,13,-186,41v11,21,1,48,9,68xm262,-43v0,-4,3,-6,-4,-5v0,1,1,2,4,5xm211,-140v-34,7,-94,24,-139,15v-6,20,-4,56,-4,82v0,29,43,1,56,2v48,-11,108,-25,154,-48v20,-10,32,-17,32,-25v0,-18,-33,-26,-99,-26xm195,-20v6,1,6,-2,5,-7v-3,2,-7,2,-5,7",
  1451. "w": 364
  1452. },
  1453. "C": {
  1454. "d": "51,-114v-12,75,96,76,166,71r145,-10v9,2,9,5,9,18v-37,18,-85,28,-109,22v-18,10,-47,10,-71,10v-29,0,-68,1,-105,-11v-6,-1,-10,-3,-10,-8v-33,-13,-48,-33,-66,-59v-19,-114,146,-150,224,-177v35,0,88,-31,99,7v-1,29,-49,14,-76,28v-55,8,-115,35,-175,71v-13,8,-23,21,-31,38",
  1455. "w": 376
  1456. },
  1457. "D": {
  1458. "d": "312,-78v-2,1,-3,7,-10,5v6,-3,10,-4,10,-5xm4,-252v2,-27,83,-38,106,-39v130,-7,267,1,291,109v0,0,-2,8,-3,25v-5,9,-4,28,-23,34v-4,4,-2,5,-7,0v-3,3,-15,7,-5,10v0,0,-10,14,-13,2v-11,1,-8,5,-20,14v1,2,7,3,9,1v-4,13,-22,13,-11,4v0,-3,1,-6,-3,-5v-40,29,-103,38,-141,65v10,6,22,-7,34,-3v-41,20,-127,44,-171,46v-21,1,-47,-33,-11,-39v15,-2,43,-6,56,-11v-16,-101,-5,-130,9,-207v2,0,4,-1,6,-3v-16,-17,-91,38,-103,-3xm297,-69v-7,3,-17,8,-25,7v1,1,3,2,5,2v-4,2,-11,5,-23,9v4,-11,30,-21,43,-18xm240,-51v10,0,12,2,0,6r0,-6xm220,-36v-1,-3,4,-6,6,-3v0,1,-2,1,-6,3xm125,-48v16,6,137,-46,155,-53v29,-18,101,-44,82,-93v-21,-53,-84,-61,-168,-67v-20,7,-50,3,-77,8v33,54,-12,132,8,205xm159,-22v-4,-1,-15,-5,-15,2v7,-1,12,-2,15,-2",
  1459. "w": 381
  1460. },
  1461. "E": {
  1462. "d": "45,-219v-19,-36,34,-41,63,-36v44,-10,133,-8,194,-15v3,2,38,11,52,15v-73,19,-171,21,-246,38v-9,11,-16,32,-20,61v35,11,133,-6,183,3v1,6,2,7,3,14v-46,24,-118,16,-193,27v-15,13,-22,52,-22,66v60,1,121,-20,188,-20v22,10,53,-7,74,5v16,29,-23,26,-43,32v-73,4,-139,13,-216,27r-52,-10v-4,-22,23,-69,26,-98v-3,0,-10,-15,-12,-24v20,-12,34,-23,35,-67v2,-1,5,-5,5,-7v0,-4,-14,-11,-19,-11",
  1463. "w": 353
  1464. },
  1465. "F": {
  1466. "d": "270,-258v13,2,59,6,48,34v-78,-3,-143,1,-212,22v-10,16,-21,43,-24,69r145,-9v8,3,29,-3,16,21v-14,-1,-59,13,-60,7v-12,13,-67,18,-108,21v-2,1,-4,3,-7,6v-2,23,-8,43,-7,69v1,28,-30,11,-40,5r10,-80r-26,-14v5,-10,10,-33,28,-25v21,-3,15,-46,26,-59v-1,-3,-32,-13,-28,-24v2,-22,45,-16,59,-30v47,4,99,-14,151,-9v5,-3,25,-3,29,-4",
  1467. "w": 236
  1468. },
  1469. "G": {
  1470. "d": "311,-168v53,0,94,57,74,110v-31,37,-71,34,-136,52v-13,-7,-41,10,-57,7v-73,-1,-122,-17,-162,-59v-49,-51,-24,-80,5,-130v35,-61,138,-93,214,-106v16,4,42,-1,40,21v-5,40,-39,2,-73,21v-76,19,-162,65,-177,142v28,103,237,76,312,29v2,-3,3,-7,3,-13v-10,-35,-37,-43,-87,-45v-16,-13,-53,-9,-78,1v-4,-3,-5,-7,-5,-11v17,-29,73,-17,108,-24v12,4,18,5,19,5",
  1471. "w": 391
  1472. },
  1473. "H": {
  1474. "d": "300,-268v18,12,19,32,4,51v-35,44,-34,140,-46,217v-1,5,-5,13,-11,12v-6,1,-19,-14,-18,-27r7,-106v-28,7,-76,22,-116,14v-18,2,-36,6,-55,3v-43,-8,-14,53,-33,75v-29,1,-26,-67,-21,-97v5,-31,28,-73,43,-98v2,2,7,3,14,3v13,33,-11,48,-13,78v61,4,118,2,176,2v8,0,13,-6,15,-20v4,-47,21,-87,54,-107",
  1475. "w": 288
  1476. },
  1477. "I": {
  1478. "d": "63,-266v34,10,-4,105,-8,128r-24,126v-2,2,-3,1,-9,6v-12,-10,-12,-15,-12,-47v0,-93,9,-156,28,-188v10,-17,19,-25,25,-25",
  1479. "w": 79
  1480. },
  1481. "J": {
  1482. "d": "235,-291v26,11,31,104,31,142v0,37,-2,95,-32,126v-33,34,-121,26,-167,1v-18,-11,-54,-29,-59,-59v0,-3,5,-15,16,-14v31,36,90,57,162,51v63,-30,56,-148,32,-226v-1,-16,11,-13,17,-21",
  1483. "w": 282
  1484. },
  1485. "K": {
  1486. "d": "212,-219v17,-5,80,-60,80,-19v0,9,-2,14,-5,16r-132,78v-34,23,-54,32,-21,50v39,21,74,23,124,41v5,2,7,5,7,9v-4,24,-55,15,-79,8v-67,-19,-98,-36,-116,-83v9,-24,38,-35,66,-61v7,-4,49,-30,76,-39xm47,-194v11,-20,11,-45,31,-55v2,2,4,3,6,0v29,39,-21,96,-18,128v-17,24,-15,62,-29,113v-4,3,-10,7,-19,11v-12,-13,-10,-28,-8,-53v3,-31,17,-79,37,-144",
  1487. "w": 270
  1488. },
  1489. "L": {
  1490. "d": "84,-43v58,0,179,-27,242,-4v3,17,-29,24,-40,26v-85,-4,-202,46,-268,3v-24,-16,-2,-33,-4,-57v26,-76,38,-108,86,-191v14,-7,26,-50,45,-32v6,22,5,31,-12,46v-20,39,-50,82,-67,142v-7,6,-19,46,-19,54v0,9,12,13,37,13",
  1491. "w": 331
  1492. },
  1493. "M": {
  1494. "d": "174,-236v-1,52,-11,92,-7,143v10,5,15,-12,22,-18v42,-55,90,-130,136,-174r15,-18v42,2,32,53,11,80v-12,58,-54,143,-34,210v0,3,-3,12,-9,10v-31,-5,-32,-57,-27,-92v4,-27,12,-58,25,-93v-5,-10,5,-19,6,-30v-46,44,-66,110,-129,172v-11,10,-18,15,-22,15v-34,6,-28,-103,-28,-152v-28,22,-65,119,-96,170v-9,15,-34,3,-31,-19v30,-64,91,-177,139,-229v12,-1,29,13,29,25",
  1495. "w": 343
  1496. },
  1497. "N": {
  1498. "d": "248,-20v-3,17,-37,18,-43,3v-24,-35,-53,-145,-80,-203v-32,40,-55,120,-92,174v-13,3,-26,-13,-27,-22r87,-171v4,-13,20,-57,42,-32v42,48,46,139,82,198v29,-45,46,-88,65,-153v12,-19,23,-42,38,-60v27,-1,14,18,4,44v-6,46,-32,68,-37,121v-15,29,-33,69,-39,101",
  1499. "w": 307
  1500. },
  1501. "O": {
  1502. "d": "240,-268v85,1,163,29,150,125v13,7,-12,18,-5,26v-23,63,-133,112,-228,124v-80,-16,-171,-56,-148,-153v11,-47,20,-43,53,-83v17,-9,39,-22,73,-29v45,-10,81,-10,105,-10xm363,-156v16,-51,-62,-85,-111,-79v-25,-11,-50,8,-81,0v-15,10,-70,16,-85,31v6,20,-27,24,-39,45v-42,75,40,128,115,128v56,0,209,-71,201,-125",
  1503. "w": 383
  1504. },
  1505. "P": {
  1506. "d": "70,-225v-7,-12,-36,16,-49,19v-4,0,-9,-5,-14,-17v21,-47,114,-55,172,-59v41,-3,132,33,99,87v-21,34,-72,59,-144,80v-2,16,-79,3,-74,46v3,25,-5,47,-10,68v-22,-1,-23,-29,-22,-56v2,-25,-20,-32,-8,-50v21,-5,10,-35,25,-57v6,-28,14,-48,25,-61xm71,-229v47,14,-2,50,-1,99v41,-3,113,-37,173,-76v5,-9,8,-14,8,-15v-28,-47,-125,-29,-180,-8",
  1507. "w": 252
  1508. },
  1509. "Q": {
  1510. "d": "374,-217v20,59,-11,127,-48,156r30,38v-1,6,-8,16,-14,9v-3,0,-19,-9,-47,-26v-72,35,-173,75,-236,12v-70,-40,-67,-213,26,-217r8,5v24,-20,72,-48,112,-38v21,-4,22,-1,50,-2v66,-2,94,20,119,63xm296,-88v13,5,61,-49,63,-84v4,-62,-54,-78,-119,-76v-14,-6,-49,5,-71,3v-42,16,-89,41,-93,94v-9,11,1,25,-7,38v-12,-19,-7,-67,-1,-88v-56,30,-37,137,19,155v27,17,92,19,119,0v12,-2,29,-9,52,-20v2,-2,3,-3,3,-6v-11,-12,-46,-27,-54,-56v0,-13,3,-19,9,-19v18,1,60,52,80,59",
  1511. "w": 379
  1512. },
  1513. "R": {
  1514. "d": "100,-275v96,-23,196,-10,208,78v-3,18,-17,52,-49,62v-14,20,-54,23,-79,40v-2,0,-14,2,-36,6v-40,8,-30,14,-3,33v37,27,52,30,118,55v16,6,31,23,12,27v-58,-2,-104,-29,-143,-61v-14,-3,-16,-15,-39,-27v-23,-19,-28,-12,-15,-38v63,-19,111,-15,163,-53v27,-20,43,-36,43,-49v0,-64,-120,-62,-173,-38v-9,4,-38,9,-40,18v-10,32,-16,70,-13,116v-10,21,-8,47,-6,75v2,31,-9,29,-27,22v-9,-55,5,-140,15,-190v-8,-6,-24,10,-24,-11v0,-34,16,-34,42,-55v2,-1,17,-4,46,-10",
  1515. "w": 297
  1516. },
  1517. "S": {
  1518. "d": "13,-3v-7,-3,-22,-18,-5,-22v68,-15,119,-32,154,-45v51,-19,39,-34,3,-53v-46,-25,-82,-30,-121,-64v-33,-29,-50,-35,-25,-58v37,-20,119,-29,181,-29v29,0,44,6,44,18v-9,26,-62,6,-104,14v-17,2,-72,6,-92,16v37,53,132,58,180,111v8,9,11,20,11,30v-4,17,-23,35,-42,34v-21,16,-17,1,-49,17v-14,7,-41,9,-56,20v-25,-3,-49,10,-79,11",
  1519. "w": 234
  1520. },
  1521. "T": {
  1522. "d": "141,-3v-36,-6,1,-49,-3,-79v10,-19,6,-35,15,-64r26,-85v-51,-9,-100,10,-141,14v-16,2,-30,-26,-11,-32v26,-8,143,-8,179,-19r12,6v67,-2,142,-1,200,-1v8,0,14,3,19,10v-18,16,-74,3,-103,14v-48,-4,-60,4,-113,7v-42,22,-36,130,-58,187v1,12,-9,44,-22,42",
  1523. "w": 277
  1524. },
  1525. "U": {
  1526. "d": "365,-262v13,56,-22,104,-36,141v-19,22,-30,38,-57,56v-4,18,-60,35,-78,50v-53,28,-142,0,-161,-34v-31,-56,-37,-108,-11,-164v17,-33,29,-50,48,-29v-2,2,-3,7,-4,13v-44,36,-38,149,7,174v30,26,55,19,102,4v56,-17,66,-34,120,-76v12,-24,56,-68,46,-122r0,-16v0,1,-1,3,-1,6v4,-13,11,-10,25,-3",
  1527. "w": 368
  1528. },
  1529. "V": {
  1530. "d": "246,-258v21,-22,31,-26,44,-8v1,1,-12,22,-28,35v-15,25,-41,38,-56,69v-13,15,-20,31,-28,57v-15,13,-11,29,-27,72v3,21,-5,24,-27,27v-33,-45,-54,-118,-84,-167v-5,-26,-18,-50,-25,-76v-3,-12,24,-8,29,-5v8,13,18,52,26,70r52,115v9,-2,4,-9,10,-21r25,-47v25,-44,46,-76,89,-121",
  1531. "w": 234
  1532. },
  1533. "W": {
  1534. "d": "31,-213v16,46,17,106,41,151v31,-35,49,-89,76,-127v30,-15,39,27,52,56v10,22,21,48,35,67v2,0,4,-1,5,-3v16,-28,50,-76,79,-121v14,-21,40,-63,64,-83r5,8v-30,58,-76,110,-97,173v-18,28,-25,37,-33,63v-11,1,-16,25,-30,15v-21,-31,-44,-89,-62,-131v0,-2,-1,-3,-5,-5v-17,11,-16,36,-31,50v-20,33,-20,84,-68,94v-24,-19,-23,-81,-39,-111v-1,-15,-29,-94,-10,-108v9,2,12,5,18,12",
  1535. "w": 331
  1536. },
  1537. "X": {
  1538. "d": "143,-183v43,-25,69,-36,126,-62v22,-10,86,-10,56,21v-51,3,-158,61,-154,64v10,15,41,30,50,52v27,17,46,60,70,82v9,14,-6,30,-24,20v-35,-43,-75,-100,-116,-132v-48,13,-100,47,-118,94v-1,49,-26,34,-27,4v-1,-26,13,-27,17,-48v22,-27,68,-55,90,-77v-9,-12,-60,-39,-79,-57v-6,-10,-6,-25,12,-25",
  1539. "w": 312
  1540. },
  1541. "Y": {
  1542. "d": "216,-240v19,-14,42,10,22,26v-54,66,-121,109,-156,197v-8,21,-11,15,-30,4v3,-37,27,-61,33,-76v12,-12,15,-19,32,-42v-8,-6,-40,5,-45,5v-48,-6,-69,-65,-56,-113v14,0,13,-1,24,7v2,33,12,75,42,73v36,-2,102,-57,134,-81",
  1543. "w": 189
  1544. },
  1545. "Z": {
  1546. "d": "60,-255v66,12,200,-34,240,21v-13,42,-63,62,-98,89v-19,15,-47,33,-82,55v-25,16,-47,32,-66,47v58,24,129,-6,208,-6v23,0,36,12,13,19v-33,2,-53,5,-86,10v-32,18,-88,15,-135,15v-9,-1,-55,-1,-48,-29v1,-24,30,-24,40,-41v64,-50,151,-86,208,-147v-38,-17,-155,12,-198,-4v0,0,-11,-33,4,-29",
  1547. "w": 310
  1548. },
  1549. "[": {
  1550. "d": "72,-258r-15,250v30,4,55,-3,80,-6v7,-1,8,17,9,23v-28,15,-73,23,-121,21v-7,0,-10,-6,-10,-17v0,-60,25,-193,22,-288v0,-16,13,-20,33,-19v9,-3,34,-12,51,-12v16,0,15,16,19,29v-16,7,-48,10,-68,19",
  1551. "w": 151
  1552. },
  1553. "\\": {
  1554. "d": "236,38v20,-18,-8,-74,-13,-90v-44,-78,-112,-190,-200,-253v-2,0,-5,4,-7,12v-11,31,13,36,24,58v74,61,174,219,180,273r16,0",
  1555. "w": 257
  1556. },
  1557. "]": {
  1558. "d": "133,-258v-23,-13,-84,6,-85,-32v0,-10,5,-15,14,-15v0,0,30,2,90,7v10,1,15,13,15,36v2,7,-8,59,-13,112r-11,125v-9,48,9,90,-59,71v-20,-4,-39,-1,-59,-4v-5,-10,-25,-12,-14,-30v8,-3,61,-13,78,-8v14,1,8,-7,10,-17v15,-69,21,-166,34,-245",
  1559. "w": 171
  1560. },
  1561. "^": {
  1562. "d": "68,-306v20,15,47,36,58,60v-1,4,0,7,-9,7v-26,0,-47,-38,-49,-32v-15,9,-41,50,-54,30v-2,-31,17,-23,33,-51v8,-9,15,-14,21,-14",
  1563. "w": 135
  1564. },
  1565. "_": {
  1566. "d": "11,15v-8,33,18,45,50,34r205,2r197,-5v11,-5,14,-9,7,-28v-95,-21,-258,-10,-376,-10v-25,0,-72,-3,-83,7",
  1567. "w": 485
  1568. },
  1569. "`": {
  1570. "d": "75,-264v16,8,56,14,39,43v-30,-8,-65,-23,-105,-44v-1,-3,-3,-28,5,-25v16,5,44,17,61,26",
  1571. "w": 129
  1572. },
  1573. "a": {
  1574. "d": "124,-56v10,4,59,41,65,50v1,7,-6,17,-12,17r-60,-30v-22,2,-42,21,-65,19v-33,4,-68,-67,-15,-81v41,-27,96,-39,110,9v0,6,-4,12,-11,16v-33,-25,-67,-5,-88,12v10,16,61,-18,76,-12",
  1575. "w": 196
  1576. },
  1577. "b": {
  1578. "d": "80,-140v69,1,123,0,134,52v5,26,-71,71,-97,70v-11,11,-88,22,-94,22v-11,-3,-26,-18,-6,-24v19,-5,-2,-19,-1,-35v1,-18,11,-36,-5,-47v-6,-17,-6,-21,14,-32v6,-45,18,-89,28,-124v2,-7,8,-12,17,-15v5,3,10,11,16,28v-12,27,-13,63,-23,96v0,6,6,9,17,9xm87,-107v-40,-9,-31,31,-39,54v8,15,0,25,12,22v30,-8,60,-18,88,-32v39,-18,49,-33,-1,-42v-20,-4,-45,-7,-60,-2",
  1579. "w": 217
  1580. },
  1581. "c": {
  1582. "d": "128,-123v29,-7,37,29,12,33v-27,-4,-40,6,-79,25v-8,4,-13,11,-16,22v30,32,91,3,134,11v5,13,-8,26,-22,19v-51,25,-139,28,-150,-30v6,-50,69,-82,121,-80",
  1583. "w": 194
  1584. },
  1585. "d": {
  1586. "d": "224,-201v0,-35,-17,-111,24,-94v7,86,-2,119,0,197v-4,2,-8,21,-18,16v-62,-7,-154,-8,-185,29v6,17,28,26,51,26v16,0,100,-15,132,-18v7,5,-6,20,-10,22v-24,8,-122,42,-163,25v-32,-5,-62,-53,-36,-80v35,-37,118,-46,198,-43v1,-22,7,-49,7,-80",
  1587. "w": 265
  1588. },
  1589. "e": {
  1590. "d": "4,-57v0,-58,51,-71,110,-74v33,-1,45,16,59,35v1,14,2,39,-7,42v-24,-2,-73,13,-99,11v-2,2,-2,3,-2,3v0,3,12,8,37,15v21,0,69,9,31,22v-9,14,-34,6,-56,6v-27,-5,-73,-28,-73,-60xm123,-102v-22,2,-68,5,-65,26v24,-2,66,5,79,-6v-5,-13,-1,-13,-14,-20",
  1591. "w": 182
  1592. },
  1593. "f": {
  1594. "d": "6,-59v6,-29,53,-4,53,-43v0,-64,29,-118,84,-150v45,-25,167,-24,155,51v-1,2,-7,6,0,6r-10,2v-45,-58,-165,-39,-186,39v-7,26,-11,42,-9,62v44,8,95,-21,135,-7v-12,25,-39,21,-76,30v-19,5,-18,7,-54,19v-2,8,15,32,17,35v-6,25,-26,26,-40,-5r-15,-24v-41,10,-44,12,-54,-15",
  1595. "w": 234
  1596. },
  1597. "g": {
  1598. "d": "132,-97v30,27,21,75,30,117v-12,31,-11,66,-36,103v-32,46,-105,83,-167,39v-31,-21,-49,-29,-51,-75v-2,-37,77,-50,121,-57v37,-6,68,-10,95,-11v7,-6,3,-32,4,-46v0,0,-1,1,-1,2v0,-18,-5,-31,-14,-45v-44,5,-79,20,-94,-18v3,-54,73,-54,125,-50v12,7,12,13,4,25v-30,-11,-76,8,-90,20v23,3,50,-16,74,-4xm-34,121v60,53,168,1,159,-86v-47,-7,-93,24,-142,30v-12,7,-45,19,-42,29v0,10,8,19,25,27",
  1599. "w": 188
  1600. },
  1601. "h": {
  1602. "d": "100,-310v11,-2,10,19,11,20v-11,52,-40,133,-53,189v-6,30,-9,37,-9,47v27,0,113,-34,143,-34v42,0,31,47,39,79v0,4,-5,17,-16,16v4,2,11,3,4,6v-24,-1,-28,-34,-25,-64v-1,-1,-2,-3,-5,-5v-51,0,-110,38,-162,51v-9,1,-15,-15,-16,-23v17,-89,39,-141,71,-264v0,-9,6,-19,18,-18",
  1603. "w": 251
  1604. },
  1605. "i": {
  1606. "d": "62,-209v7,18,9,23,-5,38v-23,-6,-21,-18,-11,-36v2,0,8,-1,16,-2xm34,-7v-18,-21,-8,-73,-1,-106v7,-10,20,-8,23,6v-1,36,7,72,-2,104v-8,2,-8,0,-20,-4",
  1607. "w": 80
  1608. },
  1609. "j": {
  1610. "d": "88,-191v5,28,-18,40,-28,21v0,-20,12,-29,28,-21xm82,-99v28,-1,16,35,16,61v0,60,-19,150,-35,202v-12,8,-19,31,-35,16v-32,-7,-43,-19,-56,-44r2,-17v11,4,49,45,61,18v10,-55,27,-107,30,-171v0,-16,0,-59,17,-65",
  1611. "w": 120
  1612. },
  1613. "k": {
  1614. "d": "59,-66v33,26,114,37,155,62v8,-4,22,-2,19,-17v0,-4,-12,-11,-30,-24v-36,-25,-54,-22,-99,-33v14,-21,119,-13,103,-63r-16,-7r-123,47r25,-93v-3,-15,16,-49,18,-81v1,-15,-21,-14,-25,-3v-31,82,-49,168,-75,257v2,2,22,30,27,10v2,-5,4,-9,9,-11v4,-16,4,-15,12,-44",
  1615. "w": 236
  1616. },
  1617. "l": {
  1618. "d": "66,-300v21,-6,37,23,30,55v-10,51,-28,135,-28,208v0,11,6,36,-13,37v-29,-5,-30,-48,-25,-83r28,-177v-6,-17,1,-29,8,-40",
  1619. "w": 102
  1620. },
  1621. "m": {
  1622. "d": "348,-59v-2,21,0,57,3,73v-17,3,-30,-1,-32,-16v-8,-7,-5,-44,-13,-70v-35,3,-82,49,-111,70v-12,8,-40,4,-39,-15r2,-56v-1,-13,4,-28,-8,-29v-35,8,-79,72,-115,87v-6,2,-20,-18,-21,-22v1,-20,14,-105,39,-64r8,15v17,-14,72,-56,93,-54v27,3,49,40,43,80v24,-2,66,-55,124,-53v11,14,28,23,27,54",
  1623. "w": 368
  1624. },
  1625. "n": {
  1626. "d": "121,-136v37,6,62,54,62,111v0,32,-16,25,-31,17v-18,-30,-5,-45,-22,-85v-37,-13,-71,55,-92,65v-20,-3,-39,-39,-21,-62v2,-12,3,-15,11,-30v12,-8,20,11,29,12",
  1627. "w": 194
  1628. },
  1629. "o": {
  1630. "d": "108,-139v52,-24,104,18,104,63v0,59,-66,67,-114,83v-52,-2,-115,-50,-80,-105v23,-18,52,-35,90,-41xm45,-60v16,54,125,16,131,-23v-12,-59,-129,-8,-131,23",
  1631. "w": 217
  1632. },
  1633. "p": {
  1634. "d": "82,14v-10,12,-8,117,-24,142v-15,2,-19,0,-29,-13v0,-76,9,-113,22,-192v14,-27,35,-6,37,13v0,8,-3,21,-7,38v2,2,3,2,4,2v26,-9,116,-33,126,-72v-7,-17,-24,-33,-49,-31v-40,3,-116,13,-116,47v-5,7,-2,17,-16,20v-17,-12,-18,-20,-12,-38v8,-25,74,-61,110,-59v55,-15,113,15,118,70v-15,52,-84,79,-146,83v-5,0,-11,-4,-18,-10",
  1635. "w": 251
  1636. },
  1637. "q": {
  1638. "d": "144,-147v27,-8,89,-3,97,31v-9,29,-42,-4,-73,1v-32,6,-118,20,-111,49v0,7,13,13,21,13v21,0,78,-24,104,-34v2,0,9,8,22,21v1,1,1,2,1,5v-27,90,-22,70,-43,203v11,15,-15,54,-33,33v-6,-8,-10,-20,-3,-28v1,-72,5,-114,15,-172v-35,3,-35,10,-59,8v-41,-4,-98,-41,-56,-85v33,-34,59,-27,118,-45",
  1639. "w": 248
  1640. },
  1641. "r": {
  1642. "d": "242,-117v2,22,5,10,-14,23v-73,-7,-166,-23,-174,56v-8,6,-3,20,-8,36v-29,10,-40,-9,-33,-46v6,-31,7,-69,32,-55v58,-37,66,-42,175,-19v3,5,15,4,22,5",
  1643. "w": 229
  1644. },
  1645. "s": {
  1646. "d": "154,-151v19,1,27,24,13,32v-4,1,-22,4,-53,7v-16,8,-22,-2,-39,9v23,21,89,16,96,62v-13,24,-85,35,-124,42v-9,-3,-18,-3,-27,0v-6,-4,-21,-16,-8,-25v30,-6,83,-13,102,-24v-17,-16,-80,-33,-97,-48v-3,-2,-4,-7,-4,-15v-6,-6,3,-13,15,-18v22,-9,94,-23,126,-22",
  1647. "w": 188
  1648. },
  1649. "t": {
  1650. "d": "85,-150v10,-41,35,-126,65,-134v4,1,24,19,11,36v-17,22,-29,57,-36,104v26,8,50,-7,73,5v14,0,22,3,22,9v-1,19,-44,18,-57,23v-10,1,-46,0,-54,10v-10,24,-4,67,-20,98v-21,-3,-26,1,-26,-20v0,-9,2,-36,8,-81v-15,-13,-81,9,-77,-27v4,-38,71,6,91,-23",
  1651. "w": 194
  1652. },
  1653. "u": {
  1654. "d": "207,-136v-1,-2,11,-14,14,-13v6,0,10,7,10,22v-3,40,-23,56,-40,82v-13,19,-62,43,-93,43v-67,-2,-111,-75,-71,-133v26,-3,21,29,19,49v-1,27,26,44,57,42v41,-2,93,-55,104,-92",
  1655. "w": 242
  1656. },
  1657. "v": {
  1658. "d": "24,-127r52,71v42,-16,70,-54,124,-65v5,4,8,7,8,11v-8,19,-4,8,-33,32v0,1,-1,3,-1,5v-61,45,-93,68,-97,68v-40,-15,-50,-72,-68,-100v6,-14,10,-22,15,-22",
  1659. "w": 214
  1660. },
  1661. "w": {
  1662. "d": "15,-139v38,-2,27,57,45,86v30,2,67,-66,101,-78v26,6,36,69,60,78v47,-35,51,-54,119,-104v3,0,7,-2,15,-4v19,23,-9,28,-21,49v-33,28,-68,90,-107,109v-10,6,-52,-47,-72,-71v-20,17,-85,74,-97,73v-38,7,-41,-98,-52,-122v0,-1,3,-7,9,-16",
  1663. "w": 325
  1664. },
  1665. "x": {
  1666. "d": "95,-124v22,-13,78,-32,99,-31v16,0,23,6,23,18v0,22,-17,11,-49,21v-3,0,-45,20,-42,24v0,1,2,4,8,10v20,24,49,41,44,80v-35,3,-27,-9,-60,-44v-40,-43,-37,-26,-79,9v-1,1,-2,3,-3,8v-12,8,-28,10,-27,-11v-6,-8,45,-65,48,-65v-17,-21,-61,-52,-24,-68v9,0,48,37,62,49",
  1667. "w": 223
  1668. },
  1669. "y": {
  1670. "d": "44,-65v22,33,70,4,99,-8v5,-4,28,-15,41,-31r17,0v25,47,-26,70,-40,114v-5,4,-9,8,-10,21v-16,12,-11,33,-27,51v-5,18,-12,43,-23,71v-1,-1,-2,34,-18,29v-12,1,-22,-12,-22,-23v20,-70,24,-65,68,-177v-47,16,-111,8,-116,-39v-11,-13,-7,-62,8,-62v18,0,22,26,23,54",
  1671. "w": 216
  1672. },
  1673. "z": {
  1674. "d": "189,-43v9,-1,46,-6,41,12v0,7,-5,13,-15,14v-45,6,-148,24,-181,13v0,-3,-5,-8,-14,-15v5,-44,66,-46,90,-85v-15,-18,-84,21,-84,-14v0,-10,5,-17,14,-18v33,-3,79,-13,109,-3v4,-2,14,11,12,15v0,23,-26,51,-78,84v28,10,73,-3,106,-3",
  1675. "w": 244
  1676. },
  1677. "{": {
  1678. "d": "94,-303v27,-9,90,-14,79,26v-20,17,-55,-5,-87,13v-4,1,-6,4,-6,8v33,42,31,44,7,85v-6,10,-13,16,-13,13v5,6,17,17,15,31r-33,78v7,35,28,49,57,63r49,0v7,42,-51,41,-86,20v-43,-13,-51,-51,-56,-89v-2,-25,25,-54,27,-71v-3,-4,-46,-5,-41,-21v2,-10,-3,-29,11,-25v2,0,51,-17,52,-38v4,-3,-25,-23,-25,-49v0,-41,8,-30,50,-44",
  1679. "w": 179
  1680. },
  1681. "|": {
  1682. "d": "30,-308v26,5,14,50,15,80v5,78,-8,153,-3,225v-2,15,-1,31,-11,36v-8,-3,-25,-22,-25,-32r9,-183v0,-40,0,-78,1,-112v0,-4,9,-15,14,-14",
  1683. "w": 63
  1684. },
  1685. "}": {
  1686. "d": "47,-298v34,-17,118,-18,112,36v6,25,-76,98,-69,103v4,16,39,7,44,28v7,34,-34,17,-37,39v8,29,49,83,23,123v-15,23,-43,26,-73,46v-34,8,-43,11,-49,-17v1,-15,30,-15,33,-20v24,-12,70,-27,55,-61v-14,-33,-37,-68,-19,-103v-46,-50,46,-100,60,-141v-10,-16,-68,6,-77,-12",
  1687. "w": 143
  1688. },
  1689. "~": {
  1690. "d": "7,-254v2,-6,59,-50,67,-46v11,-1,35,19,46,26v5,0,27,-10,66,-31v21,8,-1,25,-7,38v-27,21,-48,31,-65,31v-24,-11,-37,-39,-65,-9v-7,7,-26,36,-42,11v3,-5,-3,-17,0,-20",
  1691. "w": 199
  1692. },
  1693. "\u00a0": {
  1694. "w": 179
  1695. },
  1696. "\u00a1": {
  1697. "d": "86,-197v8,16,-7,41,-24,25v-11,-11,-4,-16,-3,-29v13,0,15,-2,27,4xm46,-107v4,-8,11,-16,23,-7v19,26,-5,57,-6,87v-7,0,-5,18,-9,28v0,14,-17,52,-11,70v-2,7,-15,28,-25,12v-4,-6,-15,-7,-6,-16v2,-39,14,-96,34,-174",
  1698. "w": 95
  1699. },
  1700. "\u00a2": {
  1701. "d": "105,-188v13,-12,14,-18,26,-15v7,23,7,15,-3,49v6,0,18,14,17,20v-3,5,-12,19,-26,13v-14,1,-14,5,-16,21v10,10,46,-13,38,18v-9,17,-23,16,-54,20v-17,16,-4,55,-29,60v-37,-10,19,-64,-24,-71v-20,-10,-37,-47,-6,-62v23,-20,73,-4,77,-53xm65,-101v4,-9,7,-8,3,-13v-14,4,-22,10,-3,13",
  1702. "w": 154
  1703. },
  1704. "\u00a3": {
  1705. "d": "153,-170v3,22,62,0,49,39v-18,6,-31,12,-58,9v-12,-1,-17,30,-23,39v19,26,50,56,91,35v9,-2,27,-13,27,4v0,27,-27,39,-58,42v-32,-5,-59,-19,-78,-39v-6,1,-35,44,-57,39v-25,0,-37,-15,-37,-46v0,-41,43,-53,73,-50v4,1,12,-18,12,-21v-7,-15,-49,0,-44,-30v-2,-31,31,-16,60,-19v16,-30,25,-119,93,-113v16,2,75,16,50,44v-4,5,-7,7,-12,8v-18,-12,-32,-18,-41,-18v-35,-1,-38,52,-47,77xm43,-45v4,5,12,-2,11,-9v-1,2,-12,1,-11,9",
  1706. "w": 242
  1707. },
  1708. "\u00a4": {
  1709. "d": "308,-133r-200,16v-2,1,-6,4,-10,10v70,-2,144,-14,211,-8v3,0,8,4,13,8v-1,4,-3,9,-9,17v-57,11,-164,6,-219,25v26,32,112,25,173,25v9,0,35,2,35,19v0,9,-4,13,-12,14v-115,12,-146,23,-211,-19v-12,-4,-22,-9,-25,-27v-6,-29,-61,3,-43,-49v17,-1,36,7,42,-12v-32,7,-36,-39,-11,-40v29,14,63,-25,73,-30v52,-25,72,-44,142,-44v23,0,21,41,-1,39v-35,-3,-61,9,-102,31v2,2,5,4,8,4v18,-6,101,-9,115,-9v7,0,55,13,31,30",
  1710. "w": 312
  1711. },
  1712. "\u20ac": {
  1713. "d": "308,-133r-200,16v-2,1,-6,4,-10,10v70,-2,144,-14,211,-8v3,0,8,4,13,8v-1,4,-3,9,-9,17v-57,11,-164,6,-219,25v26,32,112,25,173,25v9,0,35,2,35,19v0,9,-4,13,-12,14v-115,12,-146,23,-211,-19v-12,-4,-22,-9,-25,-27v-6,-29,-61,3,-43,-49v17,-1,36,7,42,-12v-32,7,-36,-39,-11,-40v29,14,63,-25,73,-30v52,-25,72,-44,142,-44v23,0,21,41,-1,39v-35,-3,-61,9,-102,31v2,2,5,4,8,4v18,-6,101,-9,115,-9v7,0,55,13,31,30",
  1714. "w": 312
  1715. },
  1716. "\u00a5": {
  1717. "d": "31,-248v30,-3,64,64,74,59v37,-22,77,-65,107,-82v20,-11,34,18,21,32v-28,19,-52,38,-70,57v-18,8,-40,21,-35,60v2,19,39,7,64,7v25,0,16,21,2,27v-36,16,-46,8,-68,18v6,11,101,-20,66,24v-21,11,-42,12,-75,20v-2,1,-5,6,-10,18v-8,3,-11,10,-24,8v-7,-17,-2,-18,-9,-26v-13,5,-39,3,-53,-2v-10,-17,-7,-27,0,-34v23,-1,45,1,64,-5v-11,-7,-28,-4,-64,-6v-13,-8,-15,-24,-6,-35v33,-2,102,9,76,-37v-14,-14,-33,-38,-60,-66v-10,-10,-8,-28,0,-37",
  1718. "w": 219
  1719. },
  1720. "\u00a7": {
  1721. "d": "141,-115v12,10,29,36,28,56v-4,68,-129,69,-152,16v-1,-12,-10,-22,8,-23v17,3,47,21,67,23v16,1,40,-8,38,-21v-8,-49,-119,-30,-117,-85v1,-28,15,-45,-3,-64v-1,-53,55,-61,103,-62v15,-5,6,-5,20,-2v16,17,23,27,23,30v-1,26,-29,7,-45,7v-21,0,-51,2,-62,17v19,14,87,8,97,43v18,14,16,57,-5,65xm64,-147r57,17v10,-28,-22,-43,-47,-44v-25,-1,-35,19,-10,27",
  1722. "w": 174
  1723. },
  1724. "\u00a8": {
  1725. "d": "124,-259v0,9,-4,13,-12,13v-18,0,-22,-21,-17,-35v19,-1,30,1,29,22xm23,-285v7,2,30,9,29,18v1,10,-9,19,-18,19v-19,0,-28,-26,-11,-37",
  1726. "w": 136
  1727. },
  1728. "\u00a9": {
  1729. "d": "102,-29v-74,5,-124,-84,-70,-140v22,-22,53,-35,97,-38v46,-4,88,49,74,100v0,44,-51,75,-101,78xm96,-66v42,-3,75,-23,75,-69v0,-23,-4,-38,-44,-38v-16,0,-33,6,-49,20v36,-4,55,-12,62,20v-5,16,-49,1,-50,21v10,15,53,-14,54,11v0,18,-14,27,-42,27v-22,1,-46,-11,-46,-31v0,-25,7,-39,20,-44v-1,-1,-2,-2,-3,-2v-51,22,-32,89,23,85",
  1730. "w": 217
  1731. },
  1732. "\u00aa": {
  1733. "d": "6,-265v1,-31,58,-53,80,-22v-11,14,25,28,25,36v-2,8,-15,12,-27,10v-22,-29,-68,19,-78,-24xm52,-281v-8,1,-24,10,-9,13v11,1,24,-10,9,-13",
  1734. "w": 117
  1735. },
  1736. "\u00ab": {
  1737. "d": "191,-64v16,6,87,37,53,63v-39,-9,-71,-28,-107,-40v-14,-13,-13,-34,10,-47v27,-15,48,-55,84,-62v9,-2,21,10,21,18r-13,21v-16,5,-44,22,-51,41v0,4,1,6,3,6xm71,-65v17,6,87,35,55,62v-39,-8,-66,-27,-108,-40v-14,-13,-13,-36,10,-46v23,-18,50,-56,84,-63v9,-2,21,10,21,18r-13,22v-20,6,-32,17,-51,37v0,3,-1,11,2,10",
  1738. "w": 265
  1739. },
  1740. "\u00ac": {
  1741. "d": "141,-99v47,7,103,-3,149,6v14,24,18,15,10,39v-10,34,-7,31,-26,76v-4,6,-15,8,-16,21v-4,2,-4,1,-13,5v-22,-33,-4,-33,16,-104v-5,-9,-28,-4,-38,-6r-183,4v-14,0,-41,-29,-17,-36v31,-9,82,5,118,-5",
  1742. "w": 315
  1743. },
  1744. "\u00ae": {
  1745. "d": "75,-194v78,-29,116,9,130,84v-2,42,-22,47,-57,67v-74,20,-161,-19,-129,-110v6,-18,29,-34,57,-40xm46,-86v51,36,84,21,129,-15v7,-15,0,-39,-10,-49v-13,-37,-49,-26,-86,-18v-28,7,-49,46,-33,82xm72,-123v-5,-43,68,-57,75,-14v-17,26,-18,17,3,32v2,25,-25,18,-45,7r-4,-4v-1,8,-3,20,-12,24v-10,-3,-21,-34,-17,-45xm112,-135v-10,-1,-20,13,-9,14v6,-6,9,-11,9,-14",
  1746. "w": 217
  1747. },
  1748. "\u00af": {
  1749. "d": "63,-295v28,-7,73,10,105,7v11,1,6,8,5,19v-37,21,-72,11,-136,11v-23,0,-31,-14,-27,-36v12,-15,40,0,53,-1",
  1750. "w": 183
  1751. },
  1752. "\u00b0": {
  1753. "d": "106,-268v0,36,-35,38,-51,46v-48,5,-60,-58,-25,-78v33,-11,76,-9,76,32xm38,-257v16,7,39,2,38,-17v-13,-9,-28,-1,-32,11v-5,3,-7,0,-6,6",
  1754. "w": 114
  1755. },
  1756. "\u00b1": {
  1757. "d": "93,-163v-7,46,76,-4,46,47v-14,6,-27,13,-38,8v-24,2,-14,28,-28,44r-14,0v-7,-12,-5,-15,-7,-33v-12,-7,-41,-1,-37,-24v2,-11,23,-17,36,-14r28,-38v4,0,9,4,14,10xm113,-27v-12,18,-58,27,-85,24v-16,2,-22,-23,-13,-36v28,-7,85,-11,98,12",
  1758. "w": 151
  1759. },
  1760. "\u00b4": {
  1761. "d": "52,-284v29,-11,50,-34,62,-14v3,12,-86,54,-94,56v-14,0,-16,-12,-12,-23v11,-5,25,-11,44,-19",
  1762. "w": 120
  1763. },
  1764. "\u00b6": {
  1765. "d": "121,-237v21,-9,44,-13,63,-1v-1,7,5,6,7,11r-4,190v-2,33,4,39,-15,40v-16,1,-10,-20,-10,-33r4,-161v0,-17,-1,-34,-16,-25v2,10,1,23,1,35v-9,46,-6,75,-15,156v-3,4,-7,5,-12,5v-17,-10,-3,-89,-10,-115v-43,14,-98,10,-101,-29v-4,-53,59,-63,104,-75v3,1,4,2,4,2xm95,-204v2,9,-30,50,1,50v35,0,23,-13,29,-43v0,-1,-2,-7,-4,-15v-12,-1,-14,2,-26,8",
  1766. "w": 206
  1767. },
  1768. "\u00b8": {
  1769. "d": "74,16v32,2,49,14,55,36v-3,7,-14,31,-29,33v-28,4,-57,11,-88,14v-19,-6,-13,-31,8,-33v20,-1,59,-5,73,-14v-17,-14,-68,8,-53,-37v9,-10,2,-28,24,-30v8,8,13,17,10,31",
  1770. "w": 129
  1771. },
  1772. "\u00ba": {
  1773. "d": "13,-273v1,-31,56,-41,83,-18v36,8,14,48,-9,52v-35,6,-64,-5,-74,-34xm81,-269v-7,-7,-20,-11,-29,-6v5,13,13,11,29,6",
  1774. "w": 128
  1775. },
  1776. "\u00bb": {
  1777. "d": "120,-129v9,-33,48,-10,64,5v9,20,86,52,50,86v-36,11,-66,31,-107,40v-6,-7,-9,-13,-9,-17v-2,-13,50,-46,63,-46v11,-18,-33,-42,-48,-47xm1,-128v10,-33,46,-8,64,6v8,19,86,50,51,85v-40,13,-69,30,-108,40v-6,-7,-8,-12,-8,-16v-2,-14,50,-46,63,-47v7,-13,-9,-20,-19,-30v-10,-9,-20,-15,-30,-17",
  1778. "w": 252
  1779. },
  1780. "\u00bf": {
  1781. "d": "181,-247v3,1,31,2,29,15v-4,22,-37,27,-41,4v1,-5,7,-20,12,-19xm161,-34v-45,-1,-105,19,-124,51v0,11,18,17,54,17v39,0,82,-13,112,4v-10,35,-58,31,-100,31v-47,0,-80,-10,-99,-31v-10,-56,22,-73,64,-90v8,-3,32,-9,74,-18v21,-15,7,-62,22,-92v-1,-5,-1,-11,4,-12v16,0,24,7,24,22v-8,30,-8,73,-17,111v-3,5,-7,7,-14,7",
  1782. "w": 213
  1783. },
  1784. "\u00c0": {
  1785. "d": "161,-217v20,53,23,124,54,170v-2,20,-34,9,-42,0v-27,-12,-78,-18,-101,-18v-26,6,-29,51,-54,63v-18,-4,-19,-30,-3,-38v5,-9,15,-16,8,-29v1,-12,23,-9,26,-19v6,-10,11,-20,20,-27r70,-121v12,-4,16,4,22,19xm82,-91v17,3,62,7,86,13v-13,-33,-13,-80,-29,-109v-15,30,-38,63,-57,96xm150,-268v14,10,54,14,37,41v-28,-7,-62,-22,-100,-42v-2,-3,-2,-26,5,-23v16,4,42,17,58,24"
  1786. },
  1787. "\u00c1": {
  1788. "d": "161,-217v20,53,23,124,54,170v-2,20,-34,9,-42,0v-27,-12,-78,-18,-101,-18v-26,6,-29,51,-54,63v-18,-4,-19,-30,-3,-38v5,-9,15,-16,8,-29v1,-12,23,-9,26,-19v6,-10,11,-20,20,-27r70,-121v12,-4,16,4,22,19xm82,-91v17,3,62,7,86,13v-13,-33,-13,-80,-29,-109v-15,30,-38,63,-57,96xm84,-250v31,-5,83,-53,100,-31v0,5,-11,15,-35,28v-16,5,-51,28,-53,25v-14,1,-16,-11,-12,-22"
  1789. },
  1790. "\u00c2": {
  1791. "d": "161,-217v20,53,23,124,54,170v-2,20,-34,9,-42,0v-27,-12,-78,-18,-101,-18v-26,6,-29,51,-54,63v-18,-4,-19,-30,-3,-38v5,-9,15,-16,8,-29v1,-12,23,-9,26,-19v6,-10,11,-20,20,-27r70,-121v12,-4,16,4,22,19xm82,-91v17,3,62,7,86,13v-13,-33,-13,-80,-29,-109v-15,30,-38,63,-57,96xm202,-219v-27,-6,-40,-26,-61,-37v-21,7,-39,46,-65,23v-2,-4,-3,-10,-4,-14v19,-4,43,-32,61,-43v27,6,40,22,62,37v12,8,18,17,18,25v0,6,-3,9,-11,9"
  1792. },
  1793. "\u00c3": {
  1794. "d": "161,-217v20,53,23,124,54,170v-2,20,-34,9,-42,0v-27,-12,-78,-18,-101,-18v-26,6,-29,51,-54,63v-18,-4,-19,-30,-3,-38v5,-9,15,-16,8,-29v1,-12,23,-9,26,-19v6,-10,11,-20,20,-27r70,-121v12,-4,16,4,22,19xm82,-91v17,3,62,7,86,13v-13,-33,-13,-80,-29,-109v-15,30,-38,63,-57,96xm100,-285v26,-19,54,19,69,22v4,0,15,-5,34,-13v23,-9,22,-17,31,-12v3,11,-9,9,-7,21v-26,20,-46,30,-59,30v-3,3,-50,-26,-49,-29v-12,1,-31,35,-51,32v-3,-8,-5,-14,-5,-18v10,-9,16,-17,37,-33"
  1795. },
  1796. "\u00c4": {
  1797. "d": "161,-217v20,53,23,124,54,170v-2,20,-34,9,-42,0v-27,-12,-78,-18,-101,-18v-26,6,-29,51,-54,63v-18,-4,-19,-30,-3,-38v5,-9,15,-16,8,-29v1,-12,23,-9,26,-19v6,-10,11,-20,20,-27r70,-121v12,-4,16,4,22,19xm82,-91v17,3,62,7,86,13v-13,-33,-13,-80,-29,-109v-15,30,-38,63,-57,96xm187,-259v0,8,-4,13,-12,13v-18,0,-21,-20,-16,-34v18,-1,28,2,28,21xm90,-284v7,3,28,11,28,18v0,9,-9,18,-18,17v-17,0,-25,-24,-10,-35"
  1798. },
  1799. "\u00c5": {
  1800. "d": "161,-217v20,53,23,124,54,170v-2,20,-34,9,-42,0v-27,-12,-78,-18,-101,-18v-26,6,-29,51,-54,63v-18,-4,-19,-30,-3,-38v5,-9,15,-16,8,-29v1,-12,23,-9,26,-19v6,-10,11,-20,20,-27r70,-121v12,-4,16,4,22,19xm82,-91v17,3,62,7,86,13v-13,-33,-13,-80,-29,-109v-15,30,-38,63,-57,96xm112,-239v-31,-17,-9,-61,29,-56v12,2,22,3,33,12v24,39,-30,62,-62,44xm119,-262v2,14,41,8,41,-4v0,-4,-8,-6,-24,-9v-10,-2,-17,10,-17,13"
  1801. },
  1802. "\u00c6": {
  1803. "d": "335,-259v0,30,-102,12,-122,34v10,21,2,79,16,100v24,-6,59,-13,86,-16v23,-2,32,21,13,26r-103,29v-3,22,-4,38,8,43v28,-5,60,-6,86,-14v5,-1,14,7,14,11v6,16,-90,40,-107,40v-29,0,-39,-19,-32,-46v-2,-4,0,-26,-9,-28v-29,2,-58,6,-88,6v-31,0,-40,74,-82,73v-18,-23,4,-37,12,-50v40,-65,112,-126,165,-207v20,-17,69,-11,112,-13v21,0,31,4,31,12xm123,-111v28,1,44,-2,67,-10v-4,-22,5,-49,-7,-65v-3,6,-65,61,-60,75",
  1804. "w": 348
  1805. },
  1806. "\u00c7": {
  1807. "d": "48,-108v-12,70,90,71,159,67r138,-9v9,-1,7,9,7,17v-37,16,-80,27,-103,21v-14,9,-40,3,-67,9v-30,0,-64,1,-100,-10v-6,-1,-10,-4,-10,-8v-32,-12,-46,-31,-63,-56v-16,-61,47,-103,83,-121v82,-42,118,-45,200,-60v21,-4,36,34,11,37v-90,11,-148,31,-225,77v-12,8,-23,20,-30,36xm172,18v29,4,47,14,53,35v-2,7,-14,31,-27,31v-28,7,-55,9,-84,14v-18,-5,-13,-32,7,-32v21,0,55,-5,69,-13v-16,-14,-63,10,-50,-35v9,-10,1,-27,23,-29v7,8,11,16,9,29",
  1808. "w": 331
  1809. },
  1810. "\u00c8": {
  1811. "d": "49,-160v1,-4,-10,-9,-15,-8v-15,-35,32,-30,57,-31r142,-8v2,1,30,7,40,10v-52,16,-133,17,-190,30v-7,9,-12,24,-15,47v26,10,102,-6,141,3v1,3,1,6,2,10v-36,18,-92,12,-149,21v-11,9,-16,41,-16,51v55,-1,111,-21,168,-13v15,-8,48,1,31,18v-53,16,-130,13,-198,29r-39,-8v-4,-19,17,-53,20,-76v-1,0,-7,-11,-9,-18v18,-7,22,-28,30,-57xm184,-236v6,9,5,13,0,23v-28,-7,-62,-21,-100,-41v-3,-2,-3,-27,5,-23v34,11,60,25,95,41",
  1812. "w": 252
  1813. },
  1814. "\u00c9": {
  1815. "d": "49,-160v1,-4,-10,-9,-15,-8v-15,-35,32,-30,57,-31r142,-8v2,1,30,7,40,10v-52,16,-133,17,-190,30v-7,9,-12,24,-15,47v26,10,102,-6,141,3v1,3,1,6,2,10v-36,18,-92,12,-149,21v-11,9,-16,41,-16,51v55,-1,111,-21,168,-13v15,-8,48,1,31,18v-53,16,-130,13,-198,29r-39,-8v-4,-19,17,-53,20,-76v-1,0,-7,-11,-9,-18v18,-7,22,-28,30,-57xm133,-248v27,-11,48,-32,59,-14v3,11,-79,52,-88,53v-14,1,-16,-11,-12,-21v10,-4,23,-11,41,-18",
  1816. "w": 252
  1817. },
  1818. "\u00ca": {
  1819. "d": "49,-160v1,-4,-10,-9,-15,-8v-15,-35,32,-30,57,-31r142,-8v2,1,30,7,40,10v-52,16,-133,17,-190,30v-7,9,-12,24,-15,47v26,10,102,-6,141,3v1,3,1,6,2,10v-36,18,-92,12,-149,21v-11,9,-16,41,-16,51v55,-1,111,-21,168,-13v15,-8,48,1,31,18v-53,16,-130,13,-198,29r-39,-8v-4,-19,17,-53,20,-76v-1,0,-7,-11,-9,-18v18,-7,22,-28,30,-57xm199,-211v-27,-6,-39,-26,-60,-37v-21,7,-40,47,-65,22v-2,-7,-2,-7,-4,-13v18,-5,44,-31,61,-43v27,6,41,22,62,37v12,9,18,17,18,25v0,6,-4,9,-12,9",
  1820. "w": 252
  1821. },
  1822. "\u00cb": {
  1823. "d": "49,-160v1,-4,-10,-9,-15,-8v-15,-35,32,-30,57,-31r142,-8v2,1,30,7,40,10v-52,16,-133,17,-190,30v-7,9,-12,24,-15,47v26,10,102,-6,141,3v1,3,1,6,2,10v-36,18,-92,12,-149,21v-11,9,-17,41,-17,51v55,0,112,-21,169,-13v15,-8,48,1,31,18v-53,16,-130,13,-198,29r-39,-8v-3,-21,17,-53,20,-76v-1,0,-7,-11,-9,-18v18,-7,22,-28,30,-57xm191,-236v0,8,-4,13,-12,13v-17,0,-19,-19,-16,-34v18,-1,29,1,28,21xm95,-261v7,3,29,9,28,18v0,7,-9,17,-18,17v-18,0,-26,-25,-10,-35",
  1824. "w": 252
  1825. },
  1826. "\u00cc": {
  1827. "d": "33,-5v-9,-6,-9,-12,-9,-36v0,-71,8,-119,22,-144v8,-13,14,-20,19,-20v27,20,-11,87,-10,120r-15,76v-1,1,-4,2,-7,4xm72,-247v7,6,55,15,36,40v-28,-7,-61,-21,-99,-41v-3,-2,-3,-27,5,-23v18,3,41,17,58,24",
  1828. "w": 111
  1829. },
  1830. "\u00cd": {
  1831. "d": "26,-5v-9,-6,-9,-12,-9,-36v0,-71,7,-119,21,-144v8,-13,14,-20,19,-20v28,19,-7,89,-10,120v-2,21,-8,47,-14,76v-2,1,-2,0,-7,4xm6,-233v31,-6,83,-53,101,-31v2,11,-80,53,-89,53v-14,1,-14,-11,-12,-22",
  1832. "w": 104
  1833. },
  1834. "\u00ce": {
  1835. "d": "53,-9v-15,7,-16,-3,-16,-32v0,-71,7,-119,21,-144v8,-13,14,-20,19,-20v28,19,-7,89,-10,120v-2,21,-8,47,-14,76xm137,-209v-27,-6,-40,-26,-61,-37v-8,0,-9,4,-13,10v-11,13,-50,37,-56,0v18,-5,43,-32,61,-43v28,5,40,21,62,36v12,9,18,17,18,25v0,6,-4,9,-11,9",
  1836. "w": 144
  1837. },
  1838. "\u00cf": {
  1839. "d": "33,-5v-9,-6,-9,-12,-9,-36v0,-71,8,-119,22,-144v8,-13,14,-20,19,-20v27,20,-11,87,-10,120r-15,76v-1,1,-4,2,-7,4xm111,-222v0,8,-4,12,-12,12v-18,0,-19,-19,-16,-33v18,-1,29,1,28,21xm15,-247v8,2,29,9,28,17v0,21,-37,24,-36,1v0,-7,2,-13,8,-18",
  1840. "w": 110
  1841. },
  1842. "\u00d1": {
  1843. "d": "224,-182v1,-17,15,-24,22,-38v20,0,13,10,3,33v-3,36,-25,52,-28,94v-10,24,-30,55,-29,82r-19,7v-32,-8,-36,-70,-58,-111v-2,-23,-7,-27,-19,-54v-28,36,-41,93,-71,133v-9,5,-20,-9,-20,-17r73,-149v9,-24,31,-5,36,7v19,41,31,98,53,139v22,-35,34,-69,50,-118v2,-3,3,-3,7,-8xm203,-257v22,-8,41,-24,65,-26v3,11,-8,9,-7,21v-26,20,-46,31,-59,31v-2,3,-49,-27,-49,-29v-11,0,-32,31,-46,32v-11,-2,-12,-21,-4,-23v4,-6,28,-30,48,-34v17,-4,43,28,52,28",
  1844. "w": 219
  1845. },
  1846. "\u00d2": {
  1847. "d": "62,-184v78,-31,249,-50,238,74v-6,65,-102,105,-179,115v-77,-7,-152,-71,-101,-149v2,-5,24,-33,42,-40xm279,-120v14,-38,-47,-64,-85,-61v-20,-9,-41,7,-62,0v-11,7,-54,12,-66,24v0,20,-51,35,-38,66v-1,43,50,67,96,67v44,0,162,-55,155,-96xm161,-262v14,10,52,13,37,41v-28,-7,-62,-21,-100,-41v-3,-3,-3,-26,5,-24v16,5,42,17,58,24",
  1848. "w": 273
  1849. },
  1850. "\u00d3": {
  1851. "d": "62,-184v78,-31,249,-50,238,74v-6,65,-102,105,-179,115v-77,-7,-152,-71,-101,-149v2,-5,24,-33,42,-40xm279,-120v14,-38,-47,-64,-85,-61v-20,-9,-41,7,-62,0v-11,7,-54,12,-66,24v0,20,-51,35,-38,66v-1,43,50,67,96,67v44,0,162,-55,155,-96xm142,-250v27,-11,47,-32,59,-14v2,11,-80,53,-89,53v-13,1,-15,-11,-12,-21v10,-5,24,-11,42,-18",
  1852. "w": 273
  1853. },
  1854. "\u00d4": {
  1855. "d": "62,-184v78,-31,249,-50,238,74v-6,65,-102,105,-179,115v-77,-7,-152,-71,-101,-149v2,-5,24,-33,42,-40xm279,-120v14,-38,-47,-64,-85,-61v-20,-9,-41,7,-62,0v-11,7,-54,12,-66,24v0,20,-51,35,-38,66v-1,43,50,67,96,67v44,0,162,-55,155,-96xm157,-282v17,18,52,34,54,63v-24,12,-52,-36,-53,-29r-42,34v-23,-4,-6,-31,5,-34v1,1,27,-37,36,-34",
  1856. "w": 273
  1857. },
  1858. "\u00d5": {
  1859. "d": "62,-184v78,-31,249,-50,238,74v-6,65,-102,105,-179,115v-77,-7,-152,-71,-101,-149v2,-5,24,-33,42,-40xm279,-120v14,-38,-47,-64,-85,-61v-20,-9,-41,7,-62,0v-11,7,-54,12,-66,24v0,20,-51,35,-38,66v-1,43,50,67,96,67v44,0,162,-55,155,-96xm116,-270v26,-19,54,19,69,22v4,0,15,-5,34,-13v23,-10,22,-16,31,-12v3,11,-8,9,-7,21v-45,28,-47,42,-88,16v-29,-19,-12,-20,-43,2v-8,5,-12,18,-23,15v-13,-3,-12,-20,-4,-23v4,-6,14,-15,31,-28",
  1860. "w": 273
  1861. },
  1862. "\u00d6": {
  1863. "d": "62,-184v78,-31,249,-50,238,74v-6,65,-102,105,-179,115v-77,-7,-152,-71,-101,-149v2,-5,24,-33,42,-40xm279,-120v14,-38,-47,-64,-85,-61v-20,-9,-41,7,-62,0v-11,7,-54,12,-66,24v0,20,-51,35,-38,66v-1,43,50,67,96,67v44,0,162,-55,155,-96xm197,-229v0,8,-4,13,-12,13v-17,0,-19,-19,-16,-34v18,-1,29,1,28,21xm101,-254v7,3,28,9,27,18v1,8,-8,17,-17,17v-18,0,-26,-24,-10,-35",
  1864. "w": 273
  1865. },
  1866. "\u00d8": {
  1867. "d": "76,-211v41,-13,100,-22,140,-3v26,-19,40,-29,44,-29v10,0,15,7,15,20v0,15,-23,23,-30,35v23,39,29,114,-21,139v-36,19,-102,35,-147,18v-14,-5,-29,29,-46,35v-25,-13,-19,-24,3,-56v-9,-17,-28,-27,-28,-60v0,-38,23,-72,70,-99xm107,-66v55,15,125,-12,123,-70v0,-16,-5,-25,-13,-29r-110,95r0,4xm39,-108v-1,3,17,31,22,27v8,-6,109,-90,123,-106v-15,-11,-43,1,-63,2v-33,10,-80,35,-82,77",
  1868. "w": 270
  1869. },
  1870. "\u00d9": {
  1871. "d": "281,-202v6,67,-30,121,-71,152v-3,14,-47,26,-60,39v-41,20,-110,1,-125,-26v-24,-44,-28,-84,-8,-127v12,-26,23,-38,37,-22v-2,2,-3,5,-3,10v-34,26,-30,116,5,134v22,32,86,-1,109,-8v38,-28,104,-64,97,-149v2,-10,7,-8,19,-3xm151,-243v14,10,54,14,37,41v-28,-7,-61,-22,-99,-42v-3,-2,-4,-25,4,-23v16,5,42,17,58,24",
  1872. "w": 262
  1873. },
  1874. "\u00da": {
  1875. "d": "281,-202v6,67,-30,121,-71,152v-3,14,-47,26,-60,39v-41,20,-110,1,-125,-26v-24,-44,-28,-84,-8,-127v12,-26,23,-38,37,-22v-2,2,-3,5,-3,10v-34,26,-30,116,5,134v22,32,86,-1,109,-8v38,-28,104,-64,97,-149v2,-10,7,-8,19,-3xm194,-265v3,-1,11,4,11,6v3,12,-81,52,-89,54v-14,0,-13,-9,-12,-22",
  1876. "w": 262
  1877. },
  1878. "\u00db": {
  1879. "d": "281,-202v6,67,-30,121,-71,152v-3,14,-47,26,-60,39v-41,20,-110,1,-125,-26v-24,-44,-28,-84,-8,-127v12,-26,23,-38,37,-22v-2,2,-3,5,-3,10v-34,26,-30,116,5,134v22,32,86,-1,109,-8v38,-28,104,-64,97,-149v2,-10,7,-8,19,-3xm150,-266v24,11,58,27,73,46v0,5,-3,6,-10,6v-28,2,-61,-30,-63,-25v-10,0,-57,40,-69,23v3,-10,-8,-15,8,-19v17,-1,34,-29,61,-31",
  1880. "w": 262
  1881. },
  1882. "\u00dc": {
  1883. "d": "281,-202v6,67,-30,121,-71,152v-3,14,-47,26,-60,39v-41,20,-110,1,-125,-26v-24,-44,-28,-84,-8,-127v12,-26,23,-38,37,-22v-2,2,-3,5,-3,10v-34,26,-29,116,5,134v22,32,86,-1,109,-8v38,-28,104,-64,97,-149v2,-10,7,-8,19,-3xm197,-227v0,8,-4,13,-12,13v-18,0,-21,-20,-16,-34v18,-1,28,2,28,21xm101,-252v7,3,27,10,27,18v0,8,-9,18,-18,17v-18,-1,-24,-25,-9,-35",
  1884. "w": 262
  1885. },
  1886. "\u00df": {
  1887. "d": "33,10v-29,4,-28,-32,-16,-70v18,-58,17,-137,56,-176v12,-24,46,-58,82,-43v20,8,47,24,47,54v0,30,-62,59,-67,90v33,23,56,33,63,63v-18,21,-22,36,-48,54v-24,17,-27,41,-53,16v-2,-19,7,-35,24,-42v15,-13,26,-22,34,-40v-13,-17,-78,-29,-56,-70v-3,-27,64,-54,66,-86v-8,-25,-41,-4,-52,8v-29,30,-47,83,-51,141v-17,25,-8,71,-29,101"
  1888. },
  1889. "\u00e0": {
  1890. "d": "118,-53v10,4,55,41,62,47v0,7,-5,16,-12,16r-57,-28v-20,3,-40,19,-61,18v-10,2,-43,-17,-42,-36v0,-14,7,-40,27,-41v39,-26,92,-36,104,9v0,6,-2,11,-9,15v-32,-24,-64,-6,-84,11v8,15,58,-17,72,-11xm99,-137v7,6,56,14,37,40v-28,-7,-62,-21,-100,-41v-2,-3,-2,-26,5,-23v16,4,42,17,58,24",
  1891. "w": 173
  1892. },
  1893. "\u00e1": {
  1894. "d": "118,-53v10,4,55,41,62,47v0,7,-5,16,-12,16r-57,-28v-20,3,-40,19,-61,18v-10,2,-43,-17,-42,-36v0,-14,7,-40,27,-41v39,-26,92,-36,104,9v0,6,-2,11,-9,15v-32,-24,-64,-6,-84,11v8,15,58,-17,72,-11xm32,-117v24,-3,85,-55,101,-32v3,11,-80,53,-89,53v-13,2,-14,-10,-12,-21",
  1895. "w": 173
  1896. },
  1897. "\u00e2": {
  1898. "d": "118,-53v10,4,55,41,62,47v0,7,-5,16,-12,16r-57,-28v-20,3,-40,19,-61,18v-10,2,-43,-17,-42,-36v0,-14,7,-40,27,-41v39,-26,92,-36,104,9v0,6,-2,11,-9,15v-32,-24,-64,-6,-84,11v8,15,58,-17,72,-11xm147,-97v-27,-6,-39,-26,-60,-37v-21,7,-38,46,-65,23v-2,-5,-3,-10,-4,-14v18,-4,43,-31,61,-42v28,5,40,21,62,36v12,8,18,17,18,25v0,6,-4,9,-12,9",
  1899. "w": 173
  1900. },
  1901. "\u00e3": {
  1902. "d": "118,-53v10,4,55,41,62,47v0,7,-5,16,-12,16r-57,-28v-20,3,-40,19,-61,18v-10,2,-43,-17,-42,-36v0,-14,7,-40,27,-41v39,-26,92,-36,104,9v0,6,-2,11,-9,15v-32,-24,-64,-6,-84,11v8,15,58,-17,72,-11xm114,-136v22,-8,41,-24,64,-26v3,11,-7,10,-7,21v-26,20,-45,30,-58,30v-3,3,-49,-26,-49,-28v-10,-1,-32,35,-51,31v-12,-32,8,-29,32,-51v24,-21,54,20,69,23",
  1903. "w": 173
  1904. },
  1905. "\u00e4": {
  1906. "d": "118,-53v10,4,55,41,62,47v0,7,-5,16,-12,16r-57,-28v-20,3,-40,19,-61,18v-32,5,-66,-64,-15,-77v39,-26,92,-36,104,9v0,6,-3,11,-9,15v-32,-24,-64,-6,-84,11v8,15,58,-17,72,-11xm142,-119v0,8,-4,13,-12,13v-18,0,-21,-20,-16,-34v18,-1,28,2,28,21xm46,-144v7,3,28,9,27,18v1,8,-9,18,-18,17v-18,-1,-25,-25,-9,-35",
  1907. "w": 173
  1908. },
  1909. "\u00e5": {
  1910. "d": "118,-53v10,4,55,41,62,47v0,7,-5,16,-12,16r-57,-28v-20,3,-40,19,-61,18v-10,2,-43,-17,-42,-36v0,-14,7,-40,27,-41v39,-26,92,-36,104,9v0,6,-2,11,-9,15v-32,-24,-64,-6,-84,11v8,15,58,-17,72,-11xm54,-101v-37,-20,-9,-71,34,-65v13,1,25,3,38,13v27,45,-34,73,-72,52xm61,-128v4,20,48,7,49,-5v0,-5,-9,-7,-28,-10v-12,-2,-21,11,-21,15",
  1911. "w": 173
  1912. },
  1913. "\u00e6": {
  1914. "d": "145,-44r33,7v2,42,-59,29,-85,16v-6,7,-35,24,-48,15v-19,2,-35,-21,-33,-37v2,-24,5,-19,28,-36v-6,-8,-45,3,-33,-21v21,-22,58,-12,85,-1v6,-5,35,-28,45,-15v20,-4,36,17,36,35v0,23,-4,21,-28,37xm111,-72v12,3,49,-16,19,-17v-5,0,-20,12,-19,17xm74,-50v-14,-4,-48,16,-19,17v4,1,19,-14,19,-17",
  1915. "w": 184
  1916. },
  1917. "\u00e7": {
  1918. "d": "108,-118v30,-6,56,21,25,33v-24,-6,-39,5,-75,23v-7,4,-12,12,-15,22v31,28,86,3,128,9v3,28,-29,16,-44,28v-53,15,-106,10,-120,-37v0,-48,62,-70,101,-78xm92,18v23,4,45,12,48,32v-2,6,-12,28,-25,28v-24,6,-50,10,-77,13v-16,-4,-11,-28,7,-29v17,-1,51,-4,63,-12v-14,-15,-57,10,-46,-32v9,-8,0,-25,21,-26v6,6,12,14,9,26",
  1919. "w": 171
  1920. },
  1921. "\u00e8": {
  1922. "d": "108,-124v42,-3,70,39,50,73v-22,-1,-70,12,-94,10v-1,1,-2,3,-2,3v0,3,12,7,35,14v18,0,64,7,30,21v-10,14,-31,6,-53,6v-26,-7,-70,-26,-70,-58v0,-54,48,-65,104,-69xm130,-78v-2,-35,-66,-13,-77,3v16,6,62,6,77,-3xm95,-166v7,6,54,14,37,40v-28,-7,-62,-21,-100,-41v-3,-3,-3,-26,5,-24v16,5,42,18,58,25",
  1923. "w": 161
  1924. },
  1925. "\u00e9": {
  1926. "d": "108,-124v42,-3,70,39,50,73v-22,-1,-70,12,-94,10v-1,1,-2,3,-2,3v0,3,12,7,35,14v18,0,64,7,30,21v-10,14,-31,6,-53,6v-26,-7,-70,-26,-70,-58v0,-54,48,-65,104,-69xm130,-78v-2,-35,-66,-13,-77,3v16,6,62,6,77,-3xm76,-169v26,-11,48,-32,59,-14v3,10,-80,53,-89,53v-14,1,-14,-10,-12,-21v15,-7,16,-7,42,-18",
  1927. "w": 161
  1928. },
  1929. "\u00ea": {
  1930. "d": "108,-124v42,-3,70,39,50,73v-22,-1,-70,12,-94,10v-1,1,-2,3,-2,3v0,3,12,7,35,14v18,0,64,7,30,21v-10,14,-31,6,-53,6v-26,-7,-70,-26,-70,-58v0,-54,48,-65,104,-69xm130,-78v-2,-35,-66,-13,-77,3v16,6,62,6,77,-3xm145,-129v-27,-6,-39,-26,-60,-37v-8,0,-10,4,-14,10v-11,15,-51,34,-56,0v17,-4,44,-32,61,-43v28,5,41,21,63,36v12,8,17,17,17,25v0,6,-3,9,-11,9",
  1931. "w": 161
  1932. },
  1933. "\u00eb": {
  1934. "d": "108,-124v42,-3,70,39,50,73v-22,-1,-70,12,-94,10r-3,3v0,3,12,7,36,14v18,0,64,7,30,21v-10,14,-31,6,-53,6v-26,-7,-67,-27,-71,-58v7,-52,48,-65,105,-69xm130,-78v-2,-35,-66,-13,-77,3v16,6,62,6,77,-3xm140,-144v0,8,-4,12,-12,12v-18,0,-19,-19,-16,-33v18,-1,29,1,28,21xm44,-169v7,3,28,9,28,17v0,9,-9,18,-18,18v-18,0,-25,-24,-10,-35",
  1935. "w": 161
  1936. },
  1937. "\u00ec": {
  1938. "d": "57,-98v22,5,13,50,11,95v-7,1,-11,2,-20,-4v1,-7,-12,-18,-10,-24v4,-22,-2,-64,19,-67xm70,-139v14,10,54,14,37,41v-28,-7,-61,-22,-99,-42v-3,-2,-3,-25,5,-23v15,5,41,17,57,24",
  1939. "w": 109
  1940. },
  1941. "\u00ed": {
  1942. "d": "59,-98v20,4,15,53,10,95v-6,1,-11,2,-19,-4v1,-7,-12,-18,-10,-24v4,-22,-4,-65,19,-67xm50,-139v27,-11,49,-32,59,-14v3,11,-80,53,-89,53v-14,1,-14,-12,-11,-22v15,-7,14,-6,41,-17",
  1943. "w": 105
  1944. },
  1945. "\u00ee": {
  1946. "d": "72,-98v20,5,12,51,10,95v-6,2,-13,1,-20,-4v1,-8,-12,-18,-10,-24v4,-22,-3,-65,20,-67xm134,-94v-26,-7,-39,-25,-60,-37v-7,0,-9,4,-13,10v-14,15,-51,34,-56,-1v18,-4,45,-33,61,-43v27,6,40,22,62,37v12,8,18,17,18,25v0,6,-4,9,-12,9",
  1947. "w": 143
  1948. },
  1949. "\u00ef": {
  1950. "d": "55,-97v19,5,15,53,10,95v-17,5,-26,-14,-30,-28v6,-20,-3,-65,20,-67xm110,-118v0,8,-4,13,-12,13v-17,0,-19,-19,-16,-34v18,-1,29,1,28,21xm14,-143v6,3,28,8,28,17v0,9,-9,18,-18,18v-18,0,-25,-24,-10,-35",
  1951. "w": 107
  1952. },
  1953. "\u00f1": {
  1954. "d": "115,-129v34,6,59,50,59,105v0,31,-15,24,-30,17v-15,-29,-5,-42,-20,-81v-35,-13,-68,52,-88,61v-20,-4,-38,-36,-19,-59v0,-12,3,-14,10,-28v11,-8,18,11,27,12xm117,-166v22,-7,41,-23,64,-26v3,11,-7,10,-7,21v-26,20,-45,30,-58,30v-3,3,-49,-26,-49,-28v-10,-1,-32,35,-51,31v-5,-12,-8,-16,0,-23v4,-6,28,-29,48,-33v17,-3,43,28,53,28",
  1955. "w": 171
  1956. },
  1957. "\u00f2": {
  1958. "d": "102,-132v50,-20,99,16,99,60v0,54,-60,64,-108,79v-50,-2,-110,-48,-76,-100v22,-17,49,-33,85,-39xm136,-104v-34,0,-91,27,-94,47v16,51,125,16,125,-22v0,-17,-10,-25,-31,-25xm115,-181v14,10,51,13,37,40v-28,-7,-62,-21,-100,-41v-3,-2,-3,-26,5,-23v16,5,42,17,58,24",
  1959. "w": 191
  1960. },
  1961. "\u00f3": {
  1962. "d": "102,-132v50,-20,99,16,99,60v0,54,-60,64,-108,79v-50,-2,-110,-48,-76,-100v22,-17,49,-33,85,-39xm136,-104v-34,0,-91,27,-94,47v16,51,125,16,125,-22v0,-17,-10,-25,-31,-25xm49,-154v24,-3,85,-55,101,-32v3,11,-80,53,-89,53v-14,0,-13,-8,-12,-21",
  1963. "w": 191
  1964. },
  1965. "\u00f4": {
  1966. "d": "102,-132v50,-20,99,16,99,60v0,54,-60,64,-108,79v-50,-2,-110,-48,-76,-100v22,-17,49,-33,85,-39xm136,-104v-34,0,-91,27,-94,47v16,51,125,16,125,-22v0,-17,-10,-25,-31,-25xm110,-177v-22,6,-38,45,-65,22v-2,-4,-3,-9,-4,-13v18,-4,43,-32,61,-43v27,6,40,21,62,36v12,9,18,17,18,25v1,11,-15,10,-23,7",
  1967. "w": 191
  1968. },
  1969. "\u00f5": {
  1970. "d": "102,-132v50,-20,99,16,99,60v0,54,-60,64,-108,79v-50,-2,-110,-48,-76,-100v22,-17,49,-33,85,-39xm136,-104v-34,0,-91,27,-94,47v16,51,125,16,125,-22v0,-17,-10,-25,-31,-25xm58,-199v26,-21,54,18,69,22v4,0,15,-5,34,-13v22,-9,21,-16,31,-13v3,11,-9,9,-7,22v-26,20,-46,30,-59,30v-2,4,-49,-28,-49,-29v-11,0,-32,31,-46,32v-12,-3,-13,-21,-4,-23v4,-6,14,-15,31,-28",
  1971. "w": 191
  1972. },
  1973. "\u00f6": {
  1974. "d": "102,-132v50,-20,99,16,99,60v0,54,-60,64,-108,79v-50,-2,-110,-48,-76,-100v22,-17,49,-33,85,-39xm136,-104v-34,0,-91,27,-94,47v16,51,125,16,125,-22v0,-17,-10,-25,-31,-25xm161,-160v0,8,-4,13,-12,13v-17,0,-19,-19,-16,-34v18,-1,29,1,28,21xm65,-185v7,3,28,9,28,18v0,7,-9,18,-18,17v-18,1,-25,-24,-10,-35",
  1975. "w": 191
  1976. },
  1977. "\u00f7": {
  1978. "d": "167,-158v-4,3,-7,9,-10,20v-23,4,-34,-8,-29,-31v14,-6,18,1,39,11xm78,-72v-53,11,-53,12,-69,-15v-1,-12,11,-17,22,-14v71,-13,151,-18,230,-24v11,1,21,16,23,28v-28,20,-90,11,-126,16v-36,5,-62,5,-80,9xm123,-40v19,-17,41,-1,41,17v0,13,-6,19,-17,19v-15,0,-29,-14,-24,-36",
  1979. "w": 293
  1980. },
  1981. "\u00f8": {
  1982. "d": "76,-136v17,7,33,-8,51,0v9,-6,21,-13,36,-21v23,22,-13,31,3,50v11,13,4,21,14,35v-4,5,-1,14,-4,23v-14,23,-45,41,-84,39v-12,2,-29,28,-41,38v-2,-11,-34,-10,-15,-30v3,-7,5,-11,5,-11v-15,-24,-60,-54,-22,-89v23,-21,25,-32,57,-34xm102,-54v18,1,50,-19,30,-32v-12,7,-22,18,-30,32xm85,-92v-14,3,-26,8,-38,17v2,20,17,13,26,0v6,-8,12,-13,12,-17",
  1983. "w": 188
  1984. },
  1985. "\u00f9": {
  1986. "d": "196,-129v-1,-4,12,-13,15,-13v6,0,8,7,8,21v0,24,-7,25,-13,45v-7,7,-14,21,-24,29v-9,24,-61,45,-89,45v-63,0,-105,-72,-67,-126v24,-3,19,27,18,46v-1,26,23,42,54,40v38,-3,88,-51,98,-87xm126,-166v7,6,56,14,37,40v-28,-7,-62,-22,-100,-42v-2,-3,-2,-26,5,-23v16,4,42,18,58,25",
  1987. "w": 213
  1988. },
  1989. "\u00fa": {
  1990. "d": "196,-129v-1,-4,12,-13,15,-13v6,0,8,7,8,21v0,24,-7,25,-13,45v-7,7,-14,21,-24,29v-9,24,-61,45,-89,45v-63,0,-105,-72,-67,-126v24,-3,19,27,18,46v-1,26,23,42,54,40v38,-3,88,-51,98,-87xm106,-174v26,-11,48,-32,59,-14v3,11,-81,53,-89,54v-13,1,-15,-12,-11,-22v15,-7,14,-7,41,-18",
  1991. "w": 213
  1992. },
  1993. "\u00fb": {
  1994. "d": "196,-129v-1,-4,12,-13,15,-13v6,0,8,7,8,21v0,24,-7,25,-13,45v-7,7,-14,21,-24,29v-9,24,-61,45,-89,45v-63,0,-105,-72,-67,-126v24,-3,19,27,18,46v-1,26,23,42,54,40v38,-3,88,-51,98,-87xm172,-143v-27,-6,-39,-26,-60,-37v-8,0,-10,4,-14,10v-11,15,-49,35,-56,0v17,-4,44,-32,61,-43v27,6,41,21,63,36v12,9,17,17,17,25v0,6,-3,9,-11,9",
  1995. "w": 213
  1996. },
  1997. "\u00fc": {
  1998. "d": "196,-129v-1,-4,12,-13,15,-13v6,0,8,7,8,21v0,24,-7,25,-13,45v-7,7,-14,21,-24,29v-9,24,-61,45,-89,45v-63,0,-105,-72,-67,-126v24,-3,19,27,18,46v-1,26,23,42,54,40v38,-3,88,-51,98,-87xm168,-161v0,8,-3,13,-11,13v-17,0,-20,-19,-17,-34v18,-1,29,1,28,21xm72,-186v7,3,29,9,28,18v0,7,-9,18,-18,17v-18,1,-25,-24,-10,-35",
  1999. "w": 213
  2000. },
  2001. "\u00ff": {
  2002. "d": "118,85v-11,11,-11,38,-22,61v-2,-1,-2,31,-17,27v-11,0,-21,-10,-21,-22v20,-66,23,-61,64,-168v-22,1,-38,16,-58,4v-22,4,-51,-16,-51,-42v-11,-13,-7,-59,7,-58v16,1,21,24,22,51v21,33,66,5,94,-7v4,-3,26,-14,38,-29r17,0v23,44,-23,59,-34,102v-6,9,-13,9,-13,26v-15,6,-12,33,-27,48v0,2,1,4,1,7xm158,-136v0,8,-4,13,-12,13v-18,0,-21,-20,-16,-34v18,-1,29,1,28,21xm62,-161v7,3,28,9,27,18v1,8,-8,17,-17,17v-18,0,-26,-24,-10,-35",
  2003. "w": 190
  2004. },
  2005. "\u0131": {
  2006. "d": "43,-103v21,4,16,56,11,100v-7,2,-11,1,-20,-5v0,-7,-13,-18,-11,-25v4,-23,-3,-68,20,-70",
  2007. "w": 80
  2008. },
  2009. "\u0152": {
  2010. "d": "247,-243v71,4,161,-7,245,-8v17,0,27,6,27,17v-8,27,-70,14,-104,23v-3,1,-52,0,-65,7r0,4v16,16,17,29,17,65v32,10,74,-14,99,16v-14,25,-76,17,-127,24v-17,18,-55,32,-75,51v85,0,128,-3,204,-11v15,-2,21,11,20,29v-78,24,-177,12,-270,24v-24,3,-24,-29,-48,-15v-46,7,-70,4,-105,-4v-19,-18,-42,-22,-52,-55v-10,-34,0,-47,12,-78v-18,-59,48,-78,105,-84v17,-18,103,-13,117,-5xm125,-45v76,-9,186,-43,209,-105v-26,-67,-137,-83,-217,-54v3,34,-45,25,-60,58v-41,48,5,108,68,101",
  2011. "w": 492
  2012. },
  2013. "\u0153": {
  2014. "d": "185,-54v25,28,107,-17,104,33v-12,12,-60,14,-87,14v0,0,1,1,2,1v-11,1,-39,-9,-50,-17v-28,17,-75,32,-114,7v-22,-14,-34,-11,-34,-41v0,-36,33,-49,48,-75v29,-16,72,-3,95,11v12,-9,48,-27,59,-26v30,0,64,15,65,40v0,7,-6,20,-20,37v-29,1,-44,11,-68,16xm226,-106v-21,-7,-41,-2,-48,13v14,1,42,-7,48,-13xm132,-87v-21,-35,-94,11,-92,24v-2,14,43,21,61,21v25,0,36,-20,31,-45",
  2015. "w": 295
  2016. },
  2017. "\u0178": {
  2018. "d": "176,-189v35,20,-25,54,-39,72v-26,34,-57,57,-74,104v-10,15,-4,14,-23,3r0,-10v19,-44,27,-46,50,-81v-9,-5,-24,4,-34,4v-38,0,-54,-50,-44,-87v21,-5,18,19,22,35v4,18,15,27,29,27v41,0,60,-39,113,-67xm153,-222v0,8,-3,12,-11,12v-18,0,-21,-19,-16,-33v18,-1,28,2,27,21xm57,-247v8,2,29,9,28,17v0,21,-37,24,-36,1v0,-7,2,-13,8,-18",
  2019. "w": 135
  2020. },
  2021. "\u0192": {
  2022. "d": "115,-262v-23,6,-39,63,-38,96v1,3,57,2,54,16v1,22,-45,15,-51,30v3,34,12,68,10,103v14,17,-18,53,-28,63v-48,8,-89,5,-95,-37v20,-5,77,21,83,-18v17,-29,-4,-61,0,-98v0,-5,-3,-10,-7,-17v-33,4,-43,-17,-25,-37v10,-4,27,5,27,-10v0,-43,15,-77,32,-109v12,-7,16,-22,38,-20v11,1,51,35,25,55v-9,1,-16,-17,-25,-17",
  2023. "w": 145
  2024. },
  2025. "\u02c6": {
  2026. "d": "144,-220v-29,0,-41,-27,-63,-39v-8,0,-11,5,-15,11v-17,12,-32,31,-54,13v-2,-5,-3,-9,-4,-14v20,-5,45,-33,64,-45v28,6,43,23,65,38v12,9,19,19,19,27v0,6,-4,9,-12,9",
  2027. "w": 165
  2028. },
  2029. "\u02c7": {
  2030. "d": "39,-286v33,46,63,-4,96,-16v6,0,9,6,9,19v0,24,-49,46,-77,46v-32,0,-52,-28,-59,-48v0,-25,23,-17,31,-1",
  2031. "w": 153
  2032. },
  2033. "\u02d8": {
  2034. "d": "65,-269v20,-11,45,-31,74,-36v20,30,-42,40,-59,66v-5,6,-11,8,-18,8v-8,-3,-45,-32,-51,-54v5,-24,14,-13,34,1",
  2035. "w": 158
  2036. },
  2037. "\u02d9": {
  2038. "d": "23,-302v15,-13,32,1,32,18v1,22,-36,29,-39,4v0,0,3,-7,7,-22",
  2039. "w": 70
  2040. },
  2041. "\u02da": {
  2042. "d": "23,-225v-43,-24,-11,-85,41,-78v16,2,31,4,46,17v32,54,-41,86,-87,61xm33,-257v2,20,57,11,57,-6v0,-6,-11,-9,-33,-12v-14,-2,-24,13,-24,18",
  2043. "w": 123
  2044. },
  2045. "\u02db": {
  2046. "d": "82,-5v-8,12,-16,55,-21,75v0,4,2,7,7,7v6,0,22,-7,50,-20v8,0,12,7,12,20v-2,22,-6,14,-27,30v-15,12,-26,16,-30,16v-47,-8,-59,-14,-56,-75v8,-27,12,-54,25,-77v19,-21,35,15,40,24",
  2047. "w": 138
  2048. },
  2049. "\u02dc": {
  2050. "d": "47,-300v26,-21,57,19,72,23v4,0,16,-5,36,-14v24,-10,22,-16,32,-13v3,12,-7,11,-7,23v-27,21,-48,32,-62,32v-3,2,-52,-27,-51,-31v-12,-2,-34,40,-54,33v-4,-13,-8,-18,1,-24v5,-7,16,-15,33,-29",
  2051. "w": 186
  2052. },
  2053. "\u02dd": {
  2054. "d": "91,-249v15,-11,38,-53,57,-29v0,9,0,14,-3,23v-2,3,-20,22,-54,55v-5,5,-10,8,-16,8v-17,2,-6,-22,-7,-31v-1,0,-2,0,-4,1v-17,21,-29,31,-50,27v-5,-18,-3,-15,3,-27v23,-27,40,-46,48,-59v7,-12,31,3,29,9v-1,14,-3,24,-13,31v4,4,9,-1,10,-8",
  2055. "w": 151
  2056. },
  2057. "\u2013": {
  2058. "d": "6,-66v-8,-72,79,-21,146,-39v37,-10,79,7,111,0v9,8,14,13,14,17v2,26,-72,13,-99,21v-83,4,-124,21,-172,1",
  2059. "w": 282
  2060. },
  2061. "\u2014": {
  2062. "d": "175,-106v86,-9,201,1,286,-1v11,6,13,11,6,30v-118,15,-246,10,-377,10v-25,0,-73,3,-82,-8r-2,-26v11,-13,32,-9,52,-7v38,3,84,-5,117,2",
  2063. "w": 485
  2064. },
  2065. "\u2018": {
  2066. "d": "73,-262v-10,7,-41,39,-38,69v-15,13,-27,-16,-28,-28v-2,-20,51,-83,66,-83v20,0,25,41,0,42",
  2067. "w": 95
  2068. },
  2069. "\u2019": {
  2070. "d": "74,-300v13,31,-1,99,-44,101v-13,0,-19,-5,-19,-15v6,-10,31,-34,35,-59v2,-11,1,-32,11,-32v6,0,11,2,17,5",
  2071. "w": 90
  2072. },
  2073. "\u201a": {
  2074. "d": "25,63v-26,21,-48,-2,-22,-24v14,-12,35,-40,35,-69v3,-2,3,-11,12,-9v35,17,5,88,-25,102",
  2075. "w": 97
  2076. },
  2077. "\u201c": {
  2078. "d": "66,-261v-21,5,-37,51,-22,77v0,4,-2,6,-7,6v-31,-9,-38,-62,-12,-94v12,-15,21,-28,31,-34v16,-1,19,24,22,34v10,-11,22,-32,43,-23v-2,8,4,16,5,19v-6,11,-51,53,-29,74v-12,21,-30,5,-33,-17v-6,-13,9,-28,2,-42",
  2079. "w": 118
  2080. },
  2081. "\u201d": {
  2082. "d": "120,-294v12,3,30,26,19,34v2,15,-40,70,-55,66v-40,-10,10,-51,14,-64v3,-3,8,-31,22,-36xm70,-306v14,3,26,34,16,49v-19,30,-31,45,-58,59v-12,-11,-33,-17,-7,-36v13,-19,36,-27,36,-59v0,-5,9,-13,13,-13",
  2083. "w": 148
  2084. },
  2085. "\u201e": {
  2086. "d": "25,63v-26,21,-48,-2,-22,-24v11,-9,36,-41,35,-69v3,-2,4,-12,12,-9v36,14,5,89,-25,102xm84,64v-24,20,-45,-1,-21,-24v21,-20,32,-35,35,-69v3,-2,3,-11,12,-9v36,17,9,86,-26,102",
  2087. "w": 135
  2088. },
  2089. "\u2020": {
  2090. "d": "22,-286v15,6,5,-20,19,-19v9,-3,15,21,17,22v6,1,12,3,20,6v3,10,5,16,-9,16v-34,-10,-6,51,-34,52v-20,-7,11,-47,-15,-49v-14,3,-25,-5,-17,-24v7,-2,14,-4,19,-4",
  2091. "w": 77
  2092. },
  2093. "\u2021": {
  2094. "d": "102,-284v16,2,42,-2,33,18v-7,15,-42,1,-38,30v3,3,31,1,30,11v4,15,-29,19,-36,24v-2,18,-4,24,-16,29r-25,-26v-25,7,-53,3,-42,-25v4,-10,70,0,51,-22v-17,4,-41,12,-39,-15v-5,-16,39,-18,44,-20v4,-2,7,-10,10,-24v19,-3,23,6,28,20",
  2095. "w": 145
  2096. },
  2097. "\u2022": {
  2098. "d": "130,-114v0,47,-124,54,-120,-8r6,-31v44,-28,64,-34,104,0v8,6,10,20,10,39",
  2099. "w": 139
  2100. },
  2101. "\u2026": {
  2102. "d": "244,-24v-1,21,-38,32,-41,3v-2,-19,23,-22,34,-17v0,7,0,15,7,14xm113,-24v0,-22,28,-21,38,-8v5,34,-39,40,-38,8xm35,-2v-10,-2,-36,-17,-18,-29v-1,-15,17,-17,31,-6v7,17,6,33,-13,35",
  2103. "w": 258
  2104. },
  2105. "\u2030": {
  2106. "d": "398,-131v58,-1,87,13,72,65v-1,30,-66,63,-99,65v-56,3,-99,-58,-62,-102v2,2,5,2,8,2v20,-16,51,-17,81,-30xm202,-279v33,0,94,-24,95,18v-7,31,-33,27,-54,55v-36,32,-71,74,-112,99v-18,18,-40,34,-51,58v-19,14,-25,37,-56,40v-17,2,-25,-29,-10,-40v15,-11,40,-37,52,-52r87,-72v-51,13,-100,6,-116,-27v1,-5,-6,-30,-9,-36v-3,-5,22,-41,27,-39v29,2,16,34,5,49v0,15,14,23,42,23v42,0,59,-31,28,-38v-17,-4,-53,3,-50,-23v0,-7,1,-12,4,-16v16,-9,36,4,49,5v0,0,23,-4,69,-4xm222,-118v33,-2,55,18,50,57v-29,36,-48,45,-96,50v-27,-5,-56,-17,-58,-51v13,-37,64,-43,104,-56xm335,-61v13,44,101,7,108,-31v-11,-3,-20,-4,-30,-4v-18,-1,-82,18,-78,35xm225,-244v-18,0,-29,-1,-46,3v7,15,6,28,0,43v15,-14,34,-30,46,-46xm164,-53v26,5,59,-10,76,-26v-17,-16,-49,2,-67,14v1,8,-8,6,-9,12",
  2107. "w": 485
  2108. },
  2109. "\u2039": {
  2110. "d": "64,-107v9,17,86,17,87,43v0,11,-4,16,-13,16v-36,-11,-70,-22,-109,-31v-19,-4,-18,-14,-9,-36v59,-56,93,-84,101,-84v17,0,19,20,13,29",
  2111. "w": 159
  2112. },
  2113. "\u203a": {
  2114. "d": "41,-181v26,27,112,44,70,91r-82,60v-20,3,-25,-23,-13,-32r70,-51r-66,-46v-5,-6,-4,-28,5,-29v4,2,9,4,16,7",
  2115. "w": 137
  2116. },
  2117. "\u2044": {
  2118. "d": "193,-305v7,6,17,31,3,41v-10,7,-12,13,-21,25v-79,56,-190,209,-197,260r-18,0v-23,-19,9,-70,15,-85v52,-83,121,-179,218,-241",
  2119. "w": 120
  2120. },
  2121. "\u2122": {
  2122. "d": "213,-307v28,9,11,49,7,75v-1,4,-4,6,-11,6v-7,1,-11,-14,-11,-34v-14,-6,-34,34,-46,28v-2,0,-10,-9,-24,-27v-10,7,-3,36,-27,31v-15,-24,-3,-27,1,-48v-6,-7,-27,-1,-31,3v-3,14,-7,30,-11,51v-5,10,-29,9,-24,-12v-5,-8,1,-18,3,-35v-13,6,-33,2,-29,-18v20,-17,64,-17,100,-19v28,-1,29,30,45,39v11,-6,35,-32,58,-40",
  2123. "w": 239
  2124. },
  2125. "\u2206": {
  2126. "d": "18,-1v-24,-30,8,-48,25,-71v14,-19,34,-28,40,-56v20,-35,29,-14,57,4v9,39,43,62,57,102v0,16,-34,17,-50,14v-28,2,-72,4,-129,7xm139,-47r-22,-52v-12,-5,-12,15,-24,27v-7,6,-14,16,-23,28v23,1,36,-1,69,-3",
  2127. "w": 199
  2128. },
  2129. "\u2219": {
  2130. "d": "57,-77v6,18,-7,21,-19,23v-34,6,-25,-40,-9,-43v18,-3,29,8,28,20",
  2131. "w": 67
  2132. },
  2133. "\u221a": {
  2134. "d": "364,-218v43,-21,80,-51,104,-32v-3,19,-24,21,-44,40v-41,15,-78,53,-136,78r-137,98v-20,16,-79,66,-91,68v-3,1,-25,-11,-24,-13v-4,-28,-43,-61,-30,-85v26,-15,42,19,58,32r295,-188v0,1,2,2,5,2",
  2135. "w": 474
  2136. },
  2137. "\u221e": {
  2138. "d": "322,-72v-4,22,-54,41,-76,41v-43,0,-83,-17,-114,-35v-46,19,-125,53,-128,-18v-1,-14,10,-22,13,-35v29,-10,62,-31,97,-4v37,28,47,5,75,-8v40,-19,73,-10,114,1v13,1,18,55,19,58xm228,-69v15,0,62,-12,61,-25v-19,-23,-89,-10,-105,11v0,2,1,4,2,4v28,6,42,10,42,10xm75,-102v-13,2,-41,4,-44,19v0,4,3,7,10,7v21,0,40,-6,54,-17v-9,-6,-16,-9,-20,-9",
  2139. "w": 330
  2140. },
  2141. "\u222b": {
  2142. "d": "62,-151v-7,-70,20,-130,63,-150v28,1,39,10,70,23v20,8,6,33,-6,35v-29,-13,-45,-20,-49,-20v-20,-4,-45,51,-43,70v8,60,5,129,5,189v0,62,-27,93,-79,93v-37,-1,-71,-14,-63,-57v21,0,79,34,91,-2v16,-3,14,-64,21,-85v-2,-31,-1,-74,-10,-96",
  2143. "w": 156
  2144. },
  2145. "\u2248": {
  2146. "d": "133,-112v21,15,48,-30,78,-17v3,3,5,7,5,9v-8,30,-47,45,-76,45v-19,0,-64,-48,-90,-21r-29,20v-6,-1,-17,-16,-15,-32v24,-17,70,-42,107,-21v4,4,10,9,20,17xm138,-57v28,2,48,-25,76,-26v13,30,-21,42,-40,53v-41,24,-77,-15,-114,-23v-15,14,-46,32,-49,-1v-3,-9,27,-28,54,-30",
  2147. "w": 223
  2148. },
  2149. "\u2260": {
  2150. "d": "48,-130v29,11,49,-57,60,-50v25,6,7,27,-1,46v22,5,29,7,21,22v-18,2,-48,-1,-50,15v9,8,53,-7,54,10v-4,22,-46,20,-72,24v-7,13,-18,32,-34,57v-8,6,-15,-3,-13,-14v-1,-9,15,-39,14,-45v-30,5,-24,-17,-13,-25v12,-1,36,4,29,-13v-14,0,-47,6,-36,-12v0,-18,27,-13,41,-15",
  2151. "w": 140
  2152. },
  2153. "\u2264": {
  2154. "d": "73,-109v10,15,87,16,87,42v0,11,-5,16,-13,16v-36,-11,-69,-24,-109,-31v-18,-8,-18,-13,-9,-36v59,-56,93,-83,101,-83v16,0,18,17,14,28v-27,24,-42,35,-71,64xm10,-29v35,-12,117,-26,148,-3v1,2,-5,19,-8,18r-124,15v-16,2,-26,-18,-16,-30",
  2155. "w": 168
  2156. },
  2157. "\u2265": {
  2158. "d": "115,-174v20,7,53,36,20,57v-19,11,-91,68,-82,59v-18,3,-25,-22,-13,-31v15,-10,14,-10,70,-51r-50,-37v-5,-4,-5,-27,4,-28v16,7,40,17,51,31xm14,-32v33,-10,86,-14,127,-10v12,12,5,23,-11,27v-49,9,-82,13,-99,13v-22,0,-24,-16,-17,-30",
  2159. "w": 163
  2160. },
  2161. "\u25ca": {
  2162. "d": "76,-158v48,-8,64,11,100,36v28,19,-5,39,-22,54v-15,13,-40,32,-48,49v-17,5,-12,0,-27,-16v-6,-6,-86,-31,-68,-53r2,-9v27,-23,48,-44,63,-61xm93,-65v12,-2,35,-31,41,-38v-5,-10,-16,-14,-34,-24v-12,12,-36,29,-40,44v19,11,30,18,33,18",
  2163. "w": 199
  2164. }
  2165. }
  2166. });
  2167. }
  2168. /** js sequence diagrams
  2169. * https://bramp.github.io/js-sequence-diagrams/
  2170. * (c) 2012-2017 Andrew Brampton (bramp.net)
  2171. * Simplified BSD license.
  2172. */
  2173. /*global Diagram, _ */
  2174. if (typeof Raphael == 'undefined' && typeof Snap == 'undefined') {
  2175. throw new Error('Raphael or Snap.svg is required to be included.');
  2176. }
  2177. if (_.isEmpty(Diagram.themes)) {
  2178. // If you are using stock js-sequence-diagrams you should never see this. This only
  2179. // happens if you have removed the built in themes.
  2180. throw new Error('No themes were registered. Please call registerTheme(...).');
  2181. }
  2182. // Set the default hand/simple based on which theme is available.
  2183. Diagram.themes.hand = Diagram.themes.snapHand || Diagram.themes.raphaelHand;
  2184. Diagram.themes.simple = Diagram.themes.snapSimple || Diagram.themes.raphaelSimple;
  2185. /* Draws the diagram. Creates a SVG inside the container
  2186. * container (HTMLElement|string) DOM element or its ID to draw on
  2187. * options (Object)
  2188. */
  2189. Diagram.prototype.drawSVG = function(container, options) {
  2190. var defaultOptions = {
  2191. theme: 'hand'
  2192. };
  2193. options = _.defaults(options || {}, defaultOptions);
  2194. if (!(options.theme in Diagram.themes)) {
  2195. throw new Error('Unsupported theme: ' + options.theme);
  2196. }
  2197. // TODO Write tests for this check
  2198. var div = _.isString(container) ? document.getElementById(container) : container;
  2199. if (div === null || !div.tagName) {
  2200. throw new Error('Invalid container: ' + container);
  2201. }
  2202. var Theme = Diagram.themes[options.theme];
  2203. new Theme(this, options, function(drawing) {
  2204. drawing.draw(div);
  2205. });
  2206. }; // end of drawSVG
  2207. /** js sequence diagrams
  2208. * https://bramp.github.io/js-sequence-diagrams/
  2209. * (c) 2012-2017 Andrew Brampton (bramp.net)
  2210. * Simplified BSD license.
  2211. */
  2212. /*global jQuery */
  2213. if (typeof jQuery != 'undefined') {
  2214. (function($) {
  2215. $.fn.sequenceDiagram = function(options) {
  2216. return this.each(function() {
  2217. var $this = $(this);
  2218. var diagram = Diagram.parse($this.text());
  2219. $this.html('');
  2220. diagram.drawSVG(this, options);
  2221. });
  2222. };
  2223. })(jQuery);
  2224. }
  2225. // Taken from underscore.js:
  2226. // Establish the root object, `window` (`self`) in the browser, or `global` on the server.
  2227. // We use `self` instead of `window` for `WebWorker` support.
  2228. var root = (typeof self == 'object' && self.self == self && self) ||
  2229. (typeof global == 'object' && global.global == global && global);
  2230. // Export the Diagram object for **Node.js**, with
  2231. // backwards-compatibility for their old module API. If we're in
  2232. // the browser, add `Diagram` as a global object.
  2233. if (typeof exports !== 'undefined') {
  2234. if (typeof module !== 'undefined' && module.exports) {
  2235. exports = module.exports = Diagram;
  2236. }
  2237. exports.Diagram = Diagram;
  2238. } else {
  2239. root.Diagram = Diagram;
  2240. }
  2241. }());