graph.js 80.9 KB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684
/**
* This file is part of Qunee for HTML5.
* Copyright (c) 2015 by qunee.com
**/
var graphs = {
    clickAndLoad: {
        draw: function(g){
            g.fillStyle = '#777';
            g.translate(100, 20);
            g.font = 'lighter 18px "Open Sans", "Helvetica Neue", Arial, sans-serif';
            g.textAlign = "center";
            g.fillText('Click', 0, 0);
            g.fillText('Load Demo', 0, 20);
            g.strokeStyle = '#999';
            g.moveTo(-8, 30);
            g.lineTo(0, 35);
            g.lineTo(8, 30);
            g.lineWidth = 1;
            g.stroke();
        }
    },
    group_cloud: {
        draw: function(ctx) {
            ctx.save();
            ctx.beginPath();
            ctx.moveTo(0,0);
            ctx.lineTo(595.28,0);
            ctx.lineTo(595.28,841.89);
            ctx.lineTo(0,841.89);
            ctx.closePath();
            ctx.clip();
            ctx.strokeStyle = 'rgba(0,0,0,0)';
            ctx.lineCap = 'butt';
            ctx.lineJoin = 'miter';
            ctx.miterLimit = 4;
            ctx.save();
            ctx.fillStyle = "rgba(255,255,255,0.8)";
            ctx.strokeStyle = "#888";
            ctx.miterLimit = 10;
            ctx.beginPath();
            ctx.moveTo(19.411,28.528);
            ctx.bezierCurveTo(19.411,28.528,17.749000000000002,21.104,24.065,16.781999999999996);
            ctx.bezierCurveTo(30.381,12.459999999999997,37.252,15.229999999999997,37.252,15.229999999999997);
            ctx.bezierCurveTo(37.252,15.229999999999997,43.125,8.581999999999997,52.987,8.470999999999997);
            ctx.bezierCurveTo(62.849000000000004,8.359999999999996,69.054,13.900999999999996,70.384,15.894999999999996);
            ctx.bezierCurveTo(70.384,15.894999999999996,76.733,13.446999999999996,81.609,19.097999999999995);
            ctx.bezierCurveTo(86.029,24.220999999999997,82.463,28.526999999999994,82.463,28.526999999999994);
            ctx.bezierCurveTo(82.463,28.526999999999994,88.942,29.144999999999992,89.00099999999999,35.507999999999996);
            ctx.bezierCurveTo(89.04599999999999,40.382999999999996,84.78999999999999,42.04599999999999,84.78999999999999,42.04599999999999);
            ctx.bezierCurveTo(84.78999999999999,42.04599999999999,87.728,46.89999999999999,84.62499999999999,52.88399999999999);
            ctx.bezierCurveTo(82.22799999999998,57.507999999999996,75.70399999999998,60.10799999999999,68.94399999999999,58.888999999999996);
            ctx.bezierCurveTo(68.94399999999999,58.888999999999996,65.39799999999998,65.87899999999999,51.76799999999999,64.88199999999999);
            ctx.bezierCurveTo(38.137999999999984,63.88499999999999,35.36799999999999,56.45099999999999,35.36799999999999,56.45099999999999);
            ctx.bezierCurveTo(35.36799999999999,56.45099999999999,30.270999999999987,59.663999999999994,23.511999999999986,56.45099999999999);
            ctx.bezierCurveTo(18.722999999999985,54.17399999999999,15.754999999999987,49.57999999999999,16.641999999999985,44.92699999999999);
            ctx.bezierCurveTo(16.641999999999985,44.92699999999999,9.801999999999985,42.48899999999999,11.987999999999985,34.39999999999999);
            ctx.bezierCurveTo(13.354,29.342,19.411,28.528,19.411,28.528);
            ctx.closePath();
            ctx.lineWidth = 0.7;
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.restore();
        }
    },
    skype: {
        name: "Skype",
        draw: function(ctx){

ctx.save();
ctx.beginPath();
ctx.moveTo(0,0);
ctx.lineTo(40,0);
ctx.lineTo(40,40);
ctx.lineTo(0,40);
ctx.closePath();
ctx.clip();
ctx.strokeStyle = 'rgba(0,0,0,0)';
ctx.lineCap = 'butt';
ctx.lineJoin = 'miter';
ctx.miterLimit = 4;
ctx.save();
ctx.restore();
ctx.save();
ctx.fillStyle = "rgba(0, 0, 0, 0)";
ctx.strokeStyle = "#ffffff";
ctx.lineWidth = 3;
ctx.lineJoin = "round";
ctx.transform(1,0,0,1,4,4);
ctx.globalAlpha = 0;
ctx.beginPath();
ctx.moveTo(28.777,18.438);
ctx.bezierCurveTo(28.986,17.49,29.095000000000002,16.503999999999998,29.095000000000002,15.494);
ctx.bezierCurveTo(29.095000000000002,7.9159999999999995,22.951,1.7720000000000002,15.371000000000002,1.7720000000000002);
ctx.bezierCurveTo(14.572000000000003,1.7720000000000002,13.787000000000003,1.8410000000000002,13.025000000000002,1.9720000000000002);
ctx.bezierCurveTo(11.801,1.199,10.35,0.75,8.793,0.75);
ctx.bezierCurveTo(4.398,0.75,0.8349999999999991,4.311999999999999,0.8349999999999991,8.708);
ctx.bezierCurveTo(0.8349999999999991,10.178,1.233999999999999,11.553,1.9289999999999992,12.732);
ctx.bezierCurveTo(1.745999999999999,13.625,1.6519999999999992,14.546,1.6519999999999992,15.491999999999999);
ctx.bezierCurveTo(1.6519999999999992,23.072,7.795999999999999,29.215,15.373999999999999,29.215);
ctx.bezierCurveTo(16.232999999999997,29.215,17.073,29.137,17.889,28.985);
ctx.bezierCurveTo(19.008,29.589,20.288,29.93,21.651,29.93);
ctx.bezierCurveTo(26.046,29.93,29.608,26.368,29.608,21.971);
ctx.bezierCurveTo(29.605,20.701,29.309,19.502,28.777,18.438);
ctx.closePath();
ctx.moveTo(22.412,22.051);
ctx.bezierCurveTo(21.776999999999997,22.948999999999998,20.839,23.659999999999997,19.622999999999998,24.165999999999997);
ctx.bezierCurveTo(18.419999999999998,24.665999999999997,16.976999999999997,24.919999999999998,15.335999999999999,24.919999999999998);
ctx.bezierCurveTo(13.364999999999998,24.919999999999998,11.711999999999998,24.573999999999998,10.421999999999999,23.889);
ctx.bezierCurveTo(9.5,23.391,8.74,22.717,8.163,21.885);
ctx.bezierCurveTo(7.58,21.043000000000003,7.284000000000001,20.209000000000003,7.284000000000001,19.406000000000002);
ctx.bezierCurveTo(7.284000000000001,18.903000000000002,7.476000000000001,18.467000000000002,7.857000000000001,18.110000000000003);
ctx.bezierCurveTo(8.232000000000001,17.756000000000004,8.714,17.578000000000003,9.289000000000001,17.578000000000003);
ctx.bezierCurveTo(9.760000000000002,17.578000000000003,10.167000000000002,17.719,10.498000000000001,18.000000000000004);
ctx.bezierCurveTo(10.813,18.269000000000002,11.084000000000001,18.662000000000003,11.303,19.174000000000003);
ctx.bezierCurveTo(11.545000000000002,19.732000000000003,11.811,20.201000000000004,12.091000000000001,20.571);
ctx.bezierCurveTo(12.360000000000001,20.926000000000002,12.747000000000002,21.227,13.242,21.461000000000002);
ctx.bezierCurveTo(13.739,21.696,14.41,21.815,15.234000000000002,21.815);
ctx.bezierCurveTo(16.369000000000003,21.815,17.298000000000002,21.574,17.998,21.094);
ctx.bezierCurveTo(18.682000000000002,20.629,19.014000000000003,20.069000000000003,19.014000000000003,19.383000000000003);
ctx.bezierCurveTo(19.014000000000003,18.840000000000003,18.841000000000005,18.414,18.485000000000003,18.080000000000002);
ctx.bezierCurveTo(18.112000000000002,17.732000000000003,17.620000000000005,17.459000000000003,17.020000000000003,17.273000000000003);
ctx.bezierCurveTo(16.397000000000002,17.078000000000003,15.550000000000002,16.869000000000003,14.502000000000002,16.650000000000002);
ctx.bezierCurveTo(13.078000000000003,16.344,11.868000000000002,15.982000000000003,10.906000000000002,15.574000000000002);
ctx.bezierCurveTo(9.922000000000002,15.155000000000001,9.129000000000003,14.574000000000002,8.549000000000003,13.847000000000001);
ctx.bezierCurveTo(7.959000000000003,13.111,7.660000000000003,12.185000000000002,7.660000000000003,11.097000000000001);
ctx.bezierCurveTo(7.660000000000003,10.061000000000002,7.974000000000003,9.126000000000001,8.593000000000004,8.321000000000002);
ctx.bezierCurveTo(9.206000000000003,7.521000000000002,10.103000000000003,6.8980000000000015,11.256000000000004,6.472000000000001);
ctx.bezierCurveTo(12.395000000000003,6.050000000000002,13.750000000000004,5.8370000000000015,15.283000000000005,5.8370000000000015);
ctx.bezierCurveTo(16.508000000000006,5.8370000000000015,17.586000000000006,5.9780000000000015,18.484000000000005,6.258000000000002);
ctx.bezierCurveTo(19.388000000000005,6.540000000000002,20.152000000000005,6.920000000000002,20.751000000000005,7.388000000000002);
ctx.bezierCurveTo(21.355000000000004,7.860000000000001,21.805000000000003,8.365000000000002,22.086000000000006,8.888000000000002);
ctx.bezierCurveTo(22.370000000000005,9.417000000000002,22.516000000000005,9.945000000000002,22.516000000000005,10.453000000000001);
ctx.bezierCurveTo(22.516000000000005,10.943000000000001,22.327000000000005,11.39,21.953000000000007,11.777000000000001);
ctx.bezierCurveTo(21.578000000000007,12.168000000000001,21.102000000000007,12.366000000000001,20.545000000000005,12.366000000000001);
ctx.bezierCurveTo(20.036000000000005,12.366000000000001,19.640000000000004,12.242,19.362000000000005,11.997000000000002);
ctx.bezierCurveTo(19.104000000000006,11.770000000000001,18.839000000000006,11.417000000000002,18.543000000000006,10.907000000000002);
ctx.bezierCurveTo(18.201000000000008,10.257000000000001,17.787000000000006,9.745000000000001,17.314000000000007,9.384000000000002);
ctx.bezierCurveTo(16.851000000000006,9.033000000000001,16.082000000000008,8.855000000000002,15.022000000000007,8.855000000000002);
ctx.bezierCurveTo(14.038000000000007,8.855000000000002,13.238000000000007,9.052000000000001,12.643000000000008,9.443000000000001);
ctx.bezierCurveTo(12.071000000000009,9.818000000000001,11.793000000000008,10.248000000000001,11.793000000000008,10.757000000000001);
ctx.bezierCurveTo(11.793000000000008,11.069,11.883000000000008,11.331000000000001,12.066000000000008,11.556000000000001);
ctx.bezierCurveTo(12.261000000000008,11.794,12.537000000000008,12.003,12.884000000000007,12.177000000000001);
ctx.bezierCurveTo(13.244000000000007,12.359000000000002,13.616000000000007,12.503000000000002,13.988000000000007,12.606000000000002);
ctx.bezierCurveTo(14.370000000000006,12.712000000000002,15.009000000000007,12.869000000000002,15.887000000000008,13.072000000000001);
ctx.bezierCurveTo(16.997000000000007,13.31,18.018000000000008,13.578000000000001,18.921000000000006,13.865);
ctx.bezierCurveTo(19.834000000000007,14.158,20.624000000000006,14.519,21.269000000000005,14.937000000000001);
ctx.bezierCurveTo(21.925000000000004,15.366000000000001,22.447000000000006,15.916,22.816000000000006,16.572000000000003);
ctx.bezierCurveTo(23.185000000000006,17.230000000000004,23.374000000000006,18.043000000000003,23.374000000000006,18.988000000000003);
ctx.bezierCurveTo(23.371,20.119,23.049,21.148,22.412,22.051);
ctx.closePath();
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.save();
ctx.fillStyle = "#555555";
ctx.strokeStyle = "rgba(0, 0, 0, 0)";
ctx.transform(1,0,0,1,4,4);
ctx.beginPath();
ctx.moveTo(28.777,18.438);
ctx.bezierCurveTo(28.986,17.49,29.095000000000002,16.503999999999998,29.095000000000002,15.494);
ctx.bezierCurveTo(29.095000000000002,7.9159999999999995,22.951,1.7720000000000002,15.371000000000002,1.7720000000000002);
ctx.bezierCurveTo(14.572000000000003,1.7720000000000002,13.787000000000003,1.8410000000000002,13.025000000000002,1.9720000000000002);
ctx.bezierCurveTo(11.801,1.199,10.35,0.75,8.793,0.75);
ctx.bezierCurveTo(4.398,0.75,0.8349999999999991,4.311999999999999,0.8349999999999991,8.708);
ctx.bezierCurveTo(0.8349999999999991,10.178,1.233999999999999,11.553,1.9289999999999992,12.732);
ctx.bezierCurveTo(1.745999999999999,13.625,1.6519999999999992,14.546,1.6519999999999992,15.491999999999999);
ctx.bezierCurveTo(1.6519999999999992,23.072,7.795999999999999,29.215,15.373999999999999,29.215);
ctx.bezierCurveTo(16.232999999999997,29.215,17.073,29.137,17.889,28.985);
ctx.bezierCurveTo(19.008,29.589,20.288,29.93,21.651,29.93);
ctx.bezierCurveTo(26.046,29.93,29.608,26.368,29.608,21.971);
ctx.bezierCurveTo(29.605,20.701,29.309,19.502,28.777,18.438);
ctx.closePath();
ctx.moveTo(22.412,22.051);
ctx.bezierCurveTo(21.776999999999997,22.948999999999998,20.839,23.659999999999997,19.622999999999998,24.165999999999997);
ctx.bezierCurveTo(18.419999999999998,24.665999999999997,16.976999999999997,24.919999999999998,15.335999999999999,24.919999999999998);
ctx.bezierCurveTo(13.364999999999998,24.919999999999998,11.711999999999998,24.573999999999998,10.421999999999999,23.889);
ctx.bezierCurveTo(9.5,23.391,8.74,22.717,8.163,21.885);
ctx.bezierCurveTo(7.58,21.043000000000003,7.284000000000001,20.209000000000003,7.284000000000001,19.406000000000002);
ctx.bezierCurveTo(7.284000000000001,18.903000000000002,7.476000000000001,18.467000000000002,7.857000000000001,18.110000000000003);
ctx.bezierCurveTo(8.232000000000001,17.756000000000004,8.714,17.578000000000003,9.289000000000001,17.578000000000003);
ctx.bezierCurveTo(9.760000000000002,17.578000000000003,10.167000000000002,17.719,10.498000000000001,18.000000000000004);
ctx.bezierCurveTo(10.813,18.269000000000002,11.084000000000001,18.662000000000003,11.303,19.174000000000003);
ctx.bezierCurveTo(11.545000000000002,19.732000000000003,11.811,20.201000000000004,12.091000000000001,20.571);
ctx.bezierCurveTo(12.360000000000001,20.926000000000002,12.747000000000002,21.227,13.242,21.461000000000002);
ctx.bezierCurveTo(13.739,21.696,14.41,21.815,15.234000000000002,21.815);
ctx.bezierCurveTo(16.369000000000003,21.815,17.298000000000002,21.574,17.998,21.094);
ctx.bezierCurveTo(18.682000000000002,20.629,19.014000000000003,20.069000000000003,19.014000000000003,19.383000000000003);
ctx.bezierCurveTo(19.014000000000003,18.840000000000003,18.841000000000005,18.414,18.485000000000003,18.080000000000002);
ctx.bezierCurveTo(18.112000000000002,17.732000000000003,17.620000000000005,17.459000000000003,17.020000000000003,17.273000000000003);
ctx.bezierCurveTo(16.397000000000002,17.078000000000003,15.550000000000002,16.869000000000003,14.502000000000002,16.650000000000002);
ctx.bezierCurveTo(13.078000000000003,16.344,11.868000000000002,15.982000000000003,10.906000000000002,15.574000000000002);
ctx.bezierCurveTo(9.922000000000002,15.155000000000001,9.129000000000003,14.574000000000002,8.549000000000003,13.847000000000001);
ctx.bezierCurveTo(7.959000000000003,13.111,7.660000000000003,12.185000000000002,7.660000000000003,11.097000000000001);
ctx.bezierCurveTo(7.660000000000003,10.061000000000002,7.974000000000003,9.126000000000001,8.593000000000004,8.321000000000002);
ctx.bezierCurveTo(9.206000000000003,7.521000000000002,10.103000000000003,6.8980000000000015,11.256000000000004,6.472000000000001);
ctx.bezierCurveTo(12.395000000000003,6.050000000000002,13.750000000000004,5.8370000000000015,15.283000000000005,5.8370000000000015);
ctx.bezierCurveTo(16.508000000000006,5.8370000000000015,17.586000000000006,5.9780000000000015,18.484000000000005,6.258000000000002);
ctx.bezierCurveTo(19.388000000000005,6.540000000000002,20.152000000000005,6.920000000000002,20.751000000000005,7.388000000000002);
ctx.bezierCurveTo(21.355000000000004,7.860000000000001,21.805000000000003,8.365000000000002,22.086000000000006,8.888000000000002);
ctx.bezierCurveTo(22.370000000000005,9.417000000000002,22.516000000000005,9.945000000000002,22.516000000000005,10.453000000000001);
ctx.bezierCurveTo(22.516000000000005,10.943000000000001,22.327000000000005,11.39,21.953000000000007,11.777000000000001);
ctx.bezierCurveTo(21.578000000000007,12.168000000000001,21.102000000000007,12.366000000000001,20.545000000000005,12.366000000000001);
ctx.bezierCurveTo(20.036000000000005,12.366000000000001,19.640000000000004,12.242,19.362000000000005,11.997000000000002);
ctx.bezierCurveTo(19.104000000000006,11.770000000000001,18.839000000000006,11.417000000000002,18.543000000000006,10.907000000000002);
ctx.bezierCurveTo(18.201000000000008,10.257000000000001,17.787000000000006,9.745000000000001,17.314000000000007,9.384000000000002);
ctx.bezierCurveTo(16.851000000000006,9.033000000000001,16.082000000000008,8.855000000000002,15.022000000000007,8.855000000000002);
ctx.bezierCurveTo(14.038000000000007,8.855000000000002,13.238000000000007,9.052000000000001,12.643000000000008,9.443000000000001);
ctx.bezierCurveTo(12.071000000000009,9.818000000000001,11.793000000000008,10.248000000000001,11.793000000000008,10.757000000000001);
ctx.bezierCurveTo(11.793000000000008,11.069,11.883000000000008,11.331000000000001,12.066000000000008,11.556000000000001);
ctx.bezierCurveTo(12.261000000000008,11.794,12.537000000000008,12.003,12.884000000000007,12.177000000000001);
ctx.bezierCurveTo(13.244000000000007,12.359000000000002,13.616000000000007,12.503000000000002,13.988000000000007,12.606000000000002);
ctx.bezierCurveTo(14.370000000000006,12.712000000000002,15.009000000000007,12.869000000000002,15.887000000000008,13.072000000000001);
ctx.bezierCurveTo(16.997000000000007,13.31,18.018000000000008,13.578000000000001,18.921000000000006,13.865);
ctx.bezierCurveTo(19.834000000000007,14.158,20.624000000000006,14.519,21.269000000000005,14.937000000000001);
ctx.bezierCurveTo(21.925000000000004,15.366000000000001,22.447000000000006,15.916,22.816000000000006,16.572000000000003);
ctx.bezierCurveTo(23.185000000000006,17.230000000000004,23.374000000000006,18.043000000000003,23.374000000000006,18.988000000000003);
ctx.bezierCurveTo(23.371,20.119,23.049,21.148,22.412,22.051);
ctx.closePath();
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.save();
ctx.fillStyle = "#000000";
ctx.strokeStyle = "#000000";
ctx.globalAlpha = 0;
ctx.beginPath();
ctx.moveTo(0,0);
ctx.lineTo(32,0);
ctx.quadraticCurveTo(32,0,32,0);
ctx.lineTo(32,32);
ctx.quadraticCurveTo(32,32,32,32);
ctx.lineTo(0,32);
ctx.quadraticCurveTo(0,32,0,32);
ctx.lineTo(0,0);
ctx.quadraticCurveTo(0,0,0,0);
ctx.closePath();
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.restore();
        }
    },
    group: {
        name: "Group",
        draw: function(ctx){
ctx.save();
ctx.beginPath();
ctx.moveTo(0,0);
ctx.lineTo(40,0);
ctx.lineTo(40,40);
ctx.lineTo(0,40);
ctx.closePath();
ctx.clip();
ctx.strokeStyle = 'rgba(0,0,0,0)';
ctx.lineCap = 'butt';
ctx.lineJoin = 'miter';
ctx.miterLimit = 4;
ctx.save();
ctx.restore();
ctx.save();
ctx.fillStyle = "rgba(0, 0, 0, 0)";
ctx.strokeStyle = "#ffffff";
ctx.lineWidth = 3;
ctx.lineJoin = "round";
ctx.transform(1,0,0,1,4,4);
ctx.globalAlpha = 0;
ctx.beginPath();
ctx.moveTo(21.066,20.667);
ctx.bezierCurveTo(22.293,19.985000000000003,22.134,17.356,20.712,14.793000000000003);
ctx.bezierCurveTo(20.101,13.689000000000004,19.353,12.795000000000003,18.603,12.170000000000002);
ctx.bezierCurveTo(17.728,12.811000000000002,16.662000000000003,13.201000000000002,15.501000000000001,13.201000000000002);
ctx.bezierCurveTo(14.337000000000002,13.201000000000002,13.270000000000001,12.810000000000002,12.397000000000002,12.170000000000002);
ctx.bezierCurveTo(11.647000000000002,12.795000000000002,10.899000000000003,13.689000000000002,10.286000000000001,14.793000000000003);
ctx.bezierCurveTo(8.864,17.356,8.708000000000002,19.985000000000003,9.936000000000002,20.667);
ctx.bezierCurveTo(10.485000000000001,20.979000000000003,11.063000000000002,20.745,11.659000000000002,20.171000000000003);
ctx.bezierCurveTo(11.554000000000002,20.753000000000004,11.493000000000002,21.384000000000004,11.493000000000002,22.044000000000004);
ctx.bezierCurveTo(11.493000000000002,24.982000000000003,12.632000000000001,27.356000000000005,14.036000000000001,27.356000000000005);
ctx.bezierCurveTo(14.882000000000001,27.356000000000005,15.301000000000002,26.491000000000007,15.502,25.168000000000006);
ctx.bezierCurveTo(15.702,26.482000000000006,16.122,27.356000000000005,16.963,27.356000000000005);
ctx.bezierCurveTo(18.359,27.356000000000005,19.508000000000003,24.981000000000005,19.508000000000003,22.044000000000004);
ctx.bezierCurveTo(19.508000000000003,21.384000000000004,19.446,20.753000000000004,19.340000000000003,20.171000000000003);
ctx.bezierCurveTo(19.939,20.745,20.516,20.983,21.066,20.667);
ctx.closePath();
ctx.moveTo(15.5,12.201);
ctx.bezierCurveTo(17.861,12.201,19.777,10.285,19.777,7.922000000000001);
ctx.bezierCurveTo(19.777,5.559000000000001,17.861,3.644,15.5,3.644);
ctx.bezierCurveTo(13.137,3.644,11.219999999999999,5.5600000000000005,11.219999999999999,7.923);
ctx.bezierCurveTo(11.219999999999999,10.286,13.137,12.201,15.5,12.201);
ctx.closePath();
ctx.moveTo(24.094,14.914);
ctx.bezierCurveTo(26.032,14.914,27.606,13.341,27.606,11.401);
ctx.bezierCurveTo(27.606,9.462,26.033,7.888,24.094,7.888);
ctx.bezierCurveTo(22.154,7.888,20.581000000000003,9.461,20.581000000000003,11.401);
ctx.bezierCurveTo(20.581,13.341,22.153,14.914,24.094,14.914);
ctx.closePath();
ctx.moveTo(28.374,17.043);
ctx.bezierCurveTo(27.872,16.136,27.258,15.402,26.642,14.889);
ctx.bezierCurveTo(25.924,15.415,25.048,15.735,24.096,15.735);
ctx.bezierCurveTo(23.34,15.735,22.637,15.527999999999999,22.02,15.184999999999999);
ctx.bezierCurveTo(22.516,16.278,22.823,17.384999999999998,22.881,18.375);
ctx.bezierCurveTo(22.974,19.891,22.5,21.016,21.552,21.54);
ctx.bezierCurveTo(21.348,21.657,21.126,21.723,20.899,21.764);
ctx.bezierCurveTo(20.843,22.156,20.804000000000002,22.564999999999998,20.804000000000002,22.995);
ctx.bezierCurveTo(20.804000000000002,25.407,21.739,27.356,22.892000000000003,27.356);
ctx.bezierCurveTo(23.586000000000002,27.356,23.931000000000004,26.646,24.096000000000004,25.560000000000002);
ctx.bezierCurveTo(24.259000000000004,26.639000000000003,24.604000000000003,27.356,25.295000000000005,27.356);
ctx.bezierCurveTo(26.441000000000006,27.356,27.385000000000005,25.406000000000002,27.385000000000005,22.995);
ctx.bezierCurveTo(27.385000000000005,22.453,27.333000000000006,21.935000000000002,27.246000000000006,21.457);
ctx.bezierCurveTo(27.738000000000007,21.929000000000002,28.212000000000007,22.124000000000002,28.664000000000005,21.864);
ctx.bezierCurveTo(29.671,21.305,29.541,19.146,28.374,17.043);
ctx.closePath();
ctx.moveTo(6.906,14.914);
ctx.bezierCurveTo(8.844999999999999,14.914,10.418,13.341,10.418,11.401);
ctx.bezierCurveTo(10.418,9.462,8.844999999999999,7.888,6.905999999999999,7.888);
ctx.bezierCurveTo(4.965999999999999,7.888,3.391999999999999,9.461,3.391999999999999,11.401);
ctx.bezierCurveTo(3.392,13.341,4.966,14.914,6.906,14.914);
ctx.closePath();
ctx.moveTo(9.441,21.536);
ctx.bezierCurveTo(7.848000000000001,20.651,7.702000000000001,18.012,8.984,15.182000000000002);
ctx.bezierCurveTo(8.365,15.528000000000002,7.662,15.735000000000003,6.906000000000001,15.735000000000003);
ctx.bezierCurveTo(5.950000000000001,15.735000000000003,5.074000000000001,15.414000000000003,4.357000000000001,14.889000000000003);
ctx.bezierCurveTo(3.741000000000001,15.402000000000003,3.128000000000001,16.136000000000003,2.624000000000001,17.043000000000003);
ctx.bezierCurveTo(1.457000000000001,19.147000000000002,1.329000000000001,21.305000000000003,2.337000000000001,21.864000000000004);
ctx.bezierCurveTo(2.788000000000001,22.121000000000006,3.2620000000000013,21.928000000000004,3.7510000000000012,21.457000000000004);
ctx.bezierCurveTo(3.6650000000000014,21.936000000000003,3.615000000000001,22.453000000000003,3.615000000000001,22.995000000000005);
ctx.bezierCurveTo(3.615000000000001,25.407000000000004,4.550000000000001,27.356000000000005,5.703000000000001,27.356000000000005);
ctx.bezierCurveTo(6.397000000000001,27.356000000000005,6.742000000000001,26.646000000000004,6.907000000000001,25.560000000000006);
ctx.bezierCurveTo(7.072000000000001,26.639000000000006,7.416000000000001,27.356000000000005,8.108,27.356000000000005);
ctx.bezierCurveTo(9.254000000000001,27.356000000000005,10.197000000000001,25.406000000000006,10.197000000000001,22.995000000000005);
ctx.bezierCurveTo(10.197000000000001,22.563000000000006,10.157000000000002,22.154000000000003,10.100000000000001,21.762000000000004);
ctx.bezierCurveTo(9.874,21.721,9.651,21.656,9.441,21.536);
ctx.closePath();
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.save();
ctx.fillStyle = "#555555";
ctx.strokeStyle = "rgba(0, 0, 0, 0)";
ctx.transform(1,0,0,1,4,4);
ctx.beginPath();
ctx.moveTo(21.066,20.667);
ctx.bezierCurveTo(22.293,19.985000000000003,22.134,17.356,20.712,14.793000000000003);
ctx.bezierCurveTo(20.101,13.689000000000004,19.353,12.795000000000003,18.603,12.170000000000002);
ctx.bezierCurveTo(17.728,12.811000000000002,16.662000000000003,13.201000000000002,15.501000000000001,13.201000000000002);
ctx.bezierCurveTo(14.337000000000002,13.201000000000002,13.270000000000001,12.810000000000002,12.397000000000002,12.170000000000002);
ctx.bezierCurveTo(11.647000000000002,12.795000000000002,10.899000000000003,13.689000000000002,10.286000000000001,14.793000000000003);
ctx.bezierCurveTo(8.864,17.356,8.708000000000002,19.985000000000003,9.936000000000002,20.667);
ctx.bezierCurveTo(10.485000000000001,20.979000000000003,11.063000000000002,20.745,11.659000000000002,20.171000000000003);
ctx.bezierCurveTo(11.554000000000002,20.753000000000004,11.493000000000002,21.384000000000004,11.493000000000002,22.044000000000004);
ctx.bezierCurveTo(11.493000000000002,24.982000000000003,12.632000000000001,27.356000000000005,14.036000000000001,27.356000000000005);
ctx.bezierCurveTo(14.882000000000001,27.356000000000005,15.301000000000002,26.491000000000007,15.502,25.168000000000006);
ctx.bezierCurveTo(15.702,26.482000000000006,16.122,27.356000000000005,16.963,27.356000000000005);
ctx.bezierCurveTo(18.359,27.356000000000005,19.508000000000003,24.981000000000005,19.508000000000003,22.044000000000004);
ctx.bezierCurveTo(19.508000000000003,21.384000000000004,19.446,20.753000000000004,19.340000000000003,20.171000000000003);
ctx.bezierCurveTo(19.939,20.745,20.516,20.983,21.066,20.667);
ctx.closePath();
ctx.moveTo(15.5,12.201);
ctx.bezierCurveTo(17.861,12.201,19.777,10.285,19.777,7.922000000000001);
ctx.bezierCurveTo(19.777,5.559000000000001,17.861,3.644,15.5,3.644);
ctx.bezierCurveTo(13.137,3.644,11.219999999999999,5.5600000000000005,11.219999999999999,7.923);
ctx.bezierCurveTo(11.219999999999999,10.286,13.137,12.201,15.5,12.201);
ctx.closePath();
ctx.moveTo(24.094,14.914);
ctx.bezierCurveTo(26.032,14.914,27.606,13.341,27.606,11.401);
ctx.bezierCurveTo(27.606,9.462,26.033,7.888,24.094,7.888);
ctx.bezierCurveTo(22.154,7.888,20.581000000000003,9.461,20.581000000000003,11.401);
ctx.bezierCurveTo(20.581,13.341,22.153,14.914,24.094,14.914);
ctx.closePath();
ctx.moveTo(28.374,17.043);
ctx.bezierCurveTo(27.872,16.136,27.258,15.402,26.642,14.889);
ctx.bezierCurveTo(25.924,15.415,25.048,15.735,24.096,15.735);
ctx.bezierCurveTo(23.34,15.735,22.637,15.527999999999999,22.02,15.184999999999999);
ctx.bezierCurveTo(22.516,16.278,22.823,17.384999999999998,22.881,18.375);
ctx.bezierCurveTo(22.974,19.891,22.5,21.016,21.552,21.54);
ctx.bezierCurveTo(21.348,21.657,21.126,21.723,20.899,21.764);
ctx.bezierCurveTo(20.843,22.156,20.804000000000002,22.564999999999998,20.804000000000002,22.995);
ctx.bezierCurveTo(20.804000000000002,25.407,21.739,27.356,22.892000000000003,27.356);
ctx.bezierCurveTo(23.586000000000002,27.356,23.931000000000004,26.646,24.096000000000004,25.560000000000002);
ctx.bezierCurveTo(24.259000000000004,26.639000000000003,24.604000000000003,27.356,25.295000000000005,27.356);
ctx.bezierCurveTo(26.441000000000006,27.356,27.385000000000005,25.406000000000002,27.385000000000005,22.995);
ctx.bezierCurveTo(27.385000000000005,22.453,27.333000000000006,21.935000000000002,27.246000000000006,21.457);
ctx.bezierCurveTo(27.738000000000007,21.929000000000002,28.212000000000007,22.124000000000002,28.664000000000005,21.864);
ctx.bezierCurveTo(29.671,21.305,29.541,19.146,28.374,17.043);
ctx.closePath();
ctx.moveTo(6.906,14.914);
ctx.bezierCurveTo(8.844999999999999,14.914,10.418,13.341,10.418,11.401);
ctx.bezierCurveTo(10.418,9.462,8.844999999999999,7.888,6.905999999999999,7.888);
ctx.bezierCurveTo(4.965999999999999,7.888,3.391999999999999,9.461,3.391999999999999,11.401);
ctx.bezierCurveTo(3.392,13.341,4.966,14.914,6.906,14.914);
ctx.closePath();
ctx.moveTo(9.441,21.536);
ctx.bezierCurveTo(7.848000000000001,20.651,7.702000000000001,18.012,8.984,15.182000000000002);
ctx.bezierCurveTo(8.365,15.528000000000002,7.662,15.735000000000003,6.906000000000001,15.735000000000003);
ctx.bezierCurveTo(5.950000000000001,15.735000000000003,5.074000000000001,15.414000000000003,4.357000000000001,14.889000000000003);
ctx.bezierCurveTo(3.741000000000001,15.402000000000003,3.128000000000001,16.136000000000003,2.624000000000001,17.043000000000003);
ctx.bezierCurveTo(1.457000000000001,19.147000000000002,1.329000000000001,21.305000000000003,2.337000000000001,21.864000000000004);
ctx.bezierCurveTo(2.788000000000001,22.121000000000006,3.2620000000000013,21.928000000000004,3.7510000000000012,21.457000000000004);
ctx.bezierCurveTo(3.6650000000000014,21.936000000000003,3.615000000000001,22.453000000000003,3.615000000000001,22.995000000000005);
ctx.bezierCurveTo(3.615000000000001,25.407000000000004,4.550000000000001,27.356000000000005,5.703000000000001,27.356000000000005);
ctx.bezierCurveTo(6.397000000000001,27.356000000000005,6.742000000000001,26.646000000000004,6.907000000000001,25.560000000000006);
ctx.bezierCurveTo(7.072000000000001,26.639000000000006,7.416000000000001,27.356000000000005,8.108,27.356000000000005);
ctx.bezierCurveTo(9.254000000000001,27.356000000000005,10.197000000000001,25.406000000000006,10.197000000000001,22.995000000000005);
ctx.bezierCurveTo(10.197000000000001,22.563000000000006,10.157000000000002,22.154000000000003,10.100000000000001,21.762000000000004);
ctx.bezierCurveTo(9.874,21.721,9.651,21.656,9.441,21.536);
ctx.closePath();
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.save();
ctx.fillStyle = "#000000";
ctx.strokeStyle = "#000000";
ctx.globalAlpha = 0;
ctx.beginPath();
ctx.moveTo(0,0);
ctx.lineTo(32,0);
ctx.quadraticCurveTo(32,0,32,0);
ctx.lineTo(32,32);
ctx.quadraticCurveTo(32,32,32,32);
ctx.lineTo(0,32);
ctx.quadraticCurveTo(0,32,0,32);
ctx.lineTo(0,0);
ctx.quadraticCurveTo(0,0,0,0);
ctx.closePath();
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.restore();
}
    },
    twitter : {
        name: "Twitter",
        draw : function(ctx) {
ctx.save();
ctx.beginPath();
ctx.moveTo(0,0);
ctx.lineTo(40,0);
ctx.lineTo(40,40);
ctx.lineTo(0,40);
ctx.closePath();
ctx.clip();
ctx.strokeStyle = 'rgba(0,0,0,0)';
ctx.lineCap = 'butt';
ctx.lineJoin = 'miter';
ctx.miterLimit = 4;
ctx.save();
ctx.restore();
ctx.save();
ctx.fillStyle = "rgba(0, 0, 0, 0)";
ctx.strokeStyle = "#ffffff";
ctx.lineWidth = 3;
ctx.lineJoin = "round";
ctx.transform(1,0,0,1,4,4);
ctx.globalAlpha = 0;
ctx.beginPath();
ctx.moveTo(26.492,9.493);
ctx.bezierCurveTo(25.721,9.836,24.89,10.067,24.019000000000002,10.171000000000001);
ctx.bezierCurveTo(24.909000000000002,9.638000000000002,25.581000000000003,8.795000000000002,25.912000000000003,7.7890000000000015);
ctx.bezierCurveTo(25.080000000000002,8.282000000000002,24.159000000000002,8.641000000000002,23.178000000000004,8.833000000000002);
ctx.bezierCurveTo(22.393000000000004,7.996000000000002,21.276000000000003,7.474000000000002,20.036000000000005,7.474000000000002);
ctx.bezierCurveTo(17.659000000000006,7.474000000000002,15.730000000000004,9.402000000000001,15.730000000000004,11.780000000000001);
ctx.bezierCurveTo(15.730000000000004,12.117,15.769000000000004,12.446000000000002,15.842000000000004,12.759);
ctx.bezierCurveTo(12.264000000000005,12.579,9.092000000000004,10.865,6.9680000000000035,8.260000000000002);
ctx.bezierCurveTo(6.597000000000003,8.896,6.385000000000003,9.635000000000002,6.385000000000003,10.425);
ctx.bezierCurveTo(6.385000000000003,11.919,7.145000000000003,13.237,8.300000000000004,14.008000000000001);
ctx.bezierCurveTo(7.594000000000005,13.986,6.930000000000004,13.792000000000002,6.350000000000004,13.47);
ctx.bezierCurveTo(6.350000000000004,13.488000000000001,6.350000000000004,13.506,6.350000000000004,13.523000000000001);
ctx.bezierCurveTo(6.350000000000004,15.609000000000002,7.834000000000004,17.352,9.804000000000004,17.745);
ctx.bezierCurveTo(9.443000000000003,17.844,9.063000000000004,17.892,8.670000000000003,17.892);
ctx.bezierCurveTo(8.392000000000003,17.892,8.123000000000003,17.869,7.860000000000003,17.816);
ctx.bezierCurveTo(8.408000000000003,19.526999999999997,9.998000000000003,20.771,11.882000000000003,20.805999999999997);
ctx.bezierCurveTo(10.408000000000003,21.951999999999998,8.552000000000003,22.647999999999996,6.535000000000003,22.647999999999996);
ctx.bezierCurveTo(6.187000000000003,22.647999999999996,5.845000000000002,22.626999999999995,5.508000000000003,22.585999999999995);
ctx.bezierCurveTo(7.413000000000003,23.810999999999996,9.676000000000002,24.523999999999994,12.108000000000002,24.523999999999994);
ctx.bezierCurveTo(20.027,24.523999999999994,24.356,17.961999999999993,24.356,12.273999999999994);
ctx.bezierCurveTo(24.356,12.086999999999994,24.354000000000003,11.901999999999994,24.346,11.716999999999993);
ctx.bezierCurveTo(25.186,11.115,25.915,10.356,26.492,9.493);
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.save();
ctx.fillStyle = "#555555";
ctx.strokeStyle = "rgba(0, 0, 0, 0)";
ctx.transform(1,0,0,1,4,4);
ctx.beginPath();
ctx.moveTo(26.492,9.493);
ctx.bezierCurveTo(25.721,9.836,24.89,10.067,24.019000000000002,10.171000000000001);
ctx.bezierCurveTo(24.909000000000002,9.638000000000002,25.581000000000003,8.795000000000002,25.912000000000003,7.7890000000000015);
ctx.bezierCurveTo(25.080000000000002,8.282000000000002,24.159000000000002,8.641000000000002,23.178000000000004,8.833000000000002);
ctx.bezierCurveTo(22.393000000000004,7.996000000000002,21.276000000000003,7.474000000000002,20.036000000000005,7.474000000000002);
ctx.bezierCurveTo(17.659000000000006,7.474000000000002,15.730000000000004,9.402000000000001,15.730000000000004,11.780000000000001);
ctx.bezierCurveTo(15.730000000000004,12.117,15.769000000000004,12.446000000000002,15.842000000000004,12.759);
ctx.bezierCurveTo(12.264000000000005,12.579,9.092000000000004,10.865,6.9680000000000035,8.260000000000002);
ctx.bezierCurveTo(6.597000000000003,8.896,6.385000000000003,9.635000000000002,6.385000000000003,10.425);
ctx.bezierCurveTo(6.385000000000003,11.919,7.145000000000003,13.237,8.300000000000004,14.008000000000001);
ctx.bezierCurveTo(7.594000000000005,13.986,6.930000000000004,13.792000000000002,6.350000000000004,13.47);
ctx.bezierCurveTo(6.350000000000004,13.488000000000001,6.350000000000004,13.506,6.350000000000004,13.523000000000001);
ctx.bezierCurveTo(6.350000000000004,15.609000000000002,7.834000000000004,17.352,9.804000000000004,17.745);
ctx.bezierCurveTo(9.443000000000003,17.844,9.063000000000004,17.892,8.670000000000003,17.892);
ctx.bezierCurveTo(8.392000000000003,17.892,8.123000000000003,17.869,7.860000000000003,17.816);
ctx.bezierCurveTo(8.408000000000003,19.526999999999997,9.998000000000003,20.771,11.882000000000003,20.805999999999997);
ctx.bezierCurveTo(10.408000000000003,21.951999999999998,8.552000000000003,22.647999999999996,6.535000000000003,22.647999999999996);
ctx.bezierCurveTo(6.187000000000003,22.647999999999996,5.845000000000002,22.626999999999995,5.508000000000003,22.585999999999995);
ctx.bezierCurveTo(7.413000000000003,23.810999999999996,9.676000000000002,24.523999999999994,12.108000000000002,24.523999999999994);
ctx.bezierCurveTo(20.027,24.523999999999994,24.356,17.961999999999993,24.356,12.273999999999994);
ctx.bezierCurveTo(24.356,12.086999999999994,24.354000000000003,11.901999999999994,24.346,11.716999999999993);
ctx.bezierCurveTo(25.186,11.115,25.915,10.356,26.492,9.493);
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.save();
ctx.fillStyle = "#000000";
ctx.strokeStyle = "#000000";
ctx.globalAlpha = 0;
ctx.beginPath();
ctx.moveTo(0,0);
ctx.lineTo(32,0);
ctx.quadraticCurveTo(32,0,32,0);
ctx.lineTo(32,32);
ctx.quadraticCurveTo(32,32,32,32);
ctx.lineTo(0,32);
ctx.quadraticCurveTo(0,32,0,32);
ctx.lineTo(0,0);
ctx.quadraticCurveTo(0,0,0,0);
ctx.closePath();
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.restore();
        }
    },
    windows : {
        name: "Windows",
        draw : function(ctx) {

ctx.save();
ctx.beginPath();
ctx.moveTo(0,0);
ctx.lineTo(40,0);
ctx.lineTo(40,40);
ctx.lineTo(0,40);
ctx.closePath();
ctx.clip();
ctx.strokeStyle = 'rgba(0,0,0,0)';
ctx.lineCap = 'butt';
ctx.lineJoin = 'miter';
ctx.miterLimit = 4;
ctx.save();
ctx.restore();
ctx.save();
ctx.fillStyle = "rgba(0, 0, 0, 0)";
ctx.strokeStyle = "#ffffff";
ctx.lineWidth = 3;
ctx.lineJoin = "round";
ctx.transform(1,0,0,1,4,4);
ctx.globalAlpha = 0;
ctx.beginPath();
ctx.moveTo(20.023,17.484);
ctx.bezierCurveTo(18.291,17.279000000000003,17.001,16.576,15.811,15.783000000000001);
ctx.lineTo(15.811,15.783000000000001);
ctx.lineTo(15.252,16.062);
ctx.lineTo(12.674000000000001,24.986);
ctx.lineTo(12.674000000000001,24.986);
ctx.bezierCurveTo(13.891000000000002,25.791,15.579,26.693,17.356,26.900000000000002);
ctx.bezierCurveTo(20.042,27.212000000000003,22.916,26.156000000000002,23.747,25.705000000000002);
ctx.lineTo(26.364,16.644000000000002);
ctx.lineTo(25.805,16.365000000000002);
ctx.bezierCurveTo(25.805,16.365,23.193,17.857,20.023,17.484);
ctx.closePath();
ctx.moveTo(14.424,14.825);
ctx.bezierCurveTo(13.157,13.955,11.846,13.173,10.049,13.008999999999999);
ctx.bezierCurveTo(9.731,12.979999999999999,9.421999999999999,12.966999999999999,9.123999999999999,12.966999999999999);
ctx.bezierCurveTo(6.112999999999999,12.966999999999999,4.175999999999998,14.313999999999998,4.175999999999998,14.313999999999998);
ctx.lineTo(1.6109999999999984,23.191);
ctx.lineTo(1.6109999999999984,23.191);
ctx.lineTo(2.1369999999999987,23.471999999999998);
ctx.bezierCurveTo(3.1179999999999986,22.996,4.916999999999998,22.326999999999998,7.2269999999999985,22.488);
ctx.bezierCurveTo(8.892,22.601,10.146999999999998,23.269,11.343999999999998,24.019);
ctx.lineTo(11.850999999999997,23.758999999999997);
ctx.lineTo(11.850999999999997,23.758999999999997);
ctx.lineTo(14.424,14.825);
ctx.closePath();
ctx.moveTo(10.201,12.094);
ctx.bezierCurveTo(11.865,12.208,13.122,12.873999999999999,14.318000000000001,13.626999999999999);
ctx.lineTo(14.827000000000002,13.366999999999999);
ctx.lineTo(14.827000000000002,13.366999999999999);
ctx.lineTo(17.4,4.431);
ctx.bezierCurveTo(16.13,3.561,14.820999999999998,2.778,13.023,2.615);
ctx.bezierCurveTo(12.705,2.5860000000000003,12.397,2.5730000000000004,12.099,2.5730000000000004);
ctx.bezierCurveTo(9.088,2.573,7.15,3.92,7.15,3.92);
ctx.lineTo(4.5840000000000005,12.798);
ctx.lineTo(5.11,13.08);
ctx.bezierCurveTo(6.092,12.604,7.891,11.936,10.201,12.094);
ctx.closePath();
ctx.moveTo(28.779,5.971);
ctx.lineTo(28.779,5.971);
ctx.bezierCurveTo(28.779,5.972,26.17,7.463,23,7.09);
ctx.bezierCurveTo(21.266,6.886,19.977,6.183,18.787,5.388999999999999);
ctx.lineTo(18.227,5.67);
ctx.lineTo(15.651,14.593);
ctx.lineTo(15.651,14.593);
ctx.bezierCurveTo(16.866,15.396,18.557,16.302,20.331,16.508);
ctx.bezierCurveTo(23.018,16.82,25.889,15.763,26.723,15.311);
ctx.lineTo(29.338,6.252000000000001);
ctx.lineTo(28.779,5.971);
ctx.closePath();
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.save();
ctx.fillStyle = "#555555";
ctx.strokeStyle = "rgba(0, 0, 0, 0)";
ctx.transform(1,0,0,1,4,4);
ctx.beginPath();
ctx.moveTo(20.023,17.484);
ctx.bezierCurveTo(18.291,17.279000000000003,17.001,16.576,15.811,15.783000000000001);
ctx.lineTo(15.811,15.783000000000001);
ctx.lineTo(15.252,16.062);
ctx.lineTo(12.674000000000001,24.986);
ctx.lineTo(12.674000000000001,24.986);
ctx.bezierCurveTo(13.891000000000002,25.791,15.579,26.693,17.356,26.900000000000002);
ctx.bezierCurveTo(20.042,27.212000000000003,22.916,26.156000000000002,23.747,25.705000000000002);
ctx.lineTo(26.364,16.644000000000002);
ctx.lineTo(25.805,16.365000000000002);
ctx.bezierCurveTo(25.805,16.365,23.193,17.857,20.023,17.484);
ctx.closePath();
ctx.moveTo(14.424,14.825);
ctx.bezierCurveTo(13.157,13.955,11.846,13.173,10.049,13.008999999999999);
ctx.bezierCurveTo(9.731,12.979999999999999,9.421999999999999,12.966999999999999,9.123999999999999,12.966999999999999);
ctx.bezierCurveTo(6.112999999999999,12.966999999999999,4.175999999999998,14.313999999999998,4.175999999999998,14.313999999999998);
ctx.lineTo(1.6109999999999984,23.191);
ctx.lineTo(1.6109999999999984,23.191);
ctx.lineTo(2.1369999999999987,23.471999999999998);
ctx.bezierCurveTo(3.1179999999999986,22.996,4.916999999999998,22.326999999999998,7.2269999999999985,22.488);
ctx.bezierCurveTo(8.892,22.601,10.146999999999998,23.269,11.343999999999998,24.019);
ctx.lineTo(11.850999999999997,23.758999999999997);
ctx.lineTo(11.850999999999997,23.758999999999997);
ctx.lineTo(14.424,14.825);
ctx.closePath();
ctx.moveTo(10.201,12.094);
ctx.bezierCurveTo(11.865,12.208,13.122,12.873999999999999,14.318000000000001,13.626999999999999);
ctx.lineTo(14.827000000000002,13.366999999999999);
ctx.lineTo(14.827000000000002,13.366999999999999);
ctx.lineTo(17.4,4.431);
ctx.bezierCurveTo(16.13,3.561,14.820999999999998,2.778,13.023,2.615);
ctx.bezierCurveTo(12.705,2.5860000000000003,12.397,2.5730000000000004,12.099,2.5730000000000004);
ctx.bezierCurveTo(9.088,2.573,7.15,3.92,7.15,3.92);
ctx.lineTo(4.5840000000000005,12.798);
ctx.lineTo(5.11,13.08);
ctx.bezierCurveTo(6.092,12.604,7.891,11.936,10.201,12.094);
ctx.closePath();
ctx.moveTo(28.779,5.971);
ctx.lineTo(28.779,5.971);
ctx.bezierCurveTo(28.779,5.972,26.17,7.463,23,7.09);
ctx.bezierCurveTo(21.266,6.886,19.977,6.183,18.787,5.388999999999999);
ctx.lineTo(18.227,5.67);
ctx.lineTo(15.651,14.593);
ctx.lineTo(15.651,14.593);
ctx.bezierCurveTo(16.866,15.396,18.557,16.302,20.331,16.508);
ctx.bezierCurveTo(23.018,16.82,25.889,15.763,26.723,15.311);
ctx.lineTo(29.338,6.252000000000001);
ctx.lineTo(28.779,5.971);
ctx.closePath();
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.save();
ctx.fillStyle = "#000000";
ctx.strokeStyle = "#000000";
ctx.globalAlpha = 0;
ctx.beginPath();
ctx.moveTo(0,0);
ctx.lineTo(32,0);
ctx.quadraticCurveTo(32,0,32,0);
ctx.lineTo(32,32);
ctx.quadraticCurveTo(32,32,32,32);
ctx.lineTo(0,32);
ctx.quadraticCurveTo(0,32,0,32);
ctx.lineTo(0,0);
ctx.quadraticCurveTo(0,0,0,0);
ctx.closePath();
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.restore();
        }
    },
    apple: {
        name: "Apple",
        draw: function(ctx){

ctx.save();
ctx.beginPath();
ctx.moveTo(0,0);
ctx.lineTo(40,0);
ctx.lineTo(40,40);
ctx.lineTo(0,40);
ctx.closePath();
ctx.clip();
ctx.strokeStyle = 'rgba(0,0,0,0)';
ctx.lineCap = 'butt';
ctx.lineJoin = 'miter';
ctx.miterLimit = 4;
ctx.save();
ctx.restore();
ctx.save();
ctx.fillStyle = "rgba(0, 0, 0, 0)";
ctx.strokeStyle = "#ffffff";
ctx.lineWidth = 3;
ctx.lineJoin = "round";
ctx.transform(1,0,0,1,4,4);
ctx.globalAlpha = 0;
ctx.beginPath();
ctx.moveTo(24.32,10.85);
ctx.bezierCurveTo(22.577,12.083,21.705,13.568999999999999,21.705,15.305);
ctx.bezierCurveTo(21.705,17.384,22.782999999999998,18.978,24.936999999999998,20.091);
ctx.bezierCurveTo(24.358999999999998,21.768,23.520999999999997,23.225,22.423,24.466);
ctx.bezierCurveTo(21.325999999999997,25.707,20.325,26.328000000000003,19.418999999999997,26.328000000000003);
ctx.bezierCurveTo(18.991999999999997,26.328000000000003,18.409999999999997,26.185000000000002,17.670999999999996,25.905000000000005);
ctx.lineTo(17.316999999999997,25.767000000000003);
ctx.bezierCurveTo(16.591999999999995,25.486000000000004,15.953999999999997,25.344000000000005,15.396999999999997,25.344000000000005);
ctx.bezierCurveTo(14.871999999999996,25.344000000000005,14.296999999999997,25.454000000000004,13.671999999999997,25.675000000000004);
ctx.lineTo(13.226999999999997,25.835000000000004);
ctx.lineTo(12.666999999999996,26.064000000000004);
ctx.bezierCurveTo(12.225999999999996,26.240000000000002,11.778999999999996,26.328000000000003,11.329999999999997,26.328000000000003);
ctx.bezierCurveTo(10.270999999999997,26.328000000000003,9.101999999999997,25.456000000000003,7.822999999999997,23.712000000000003);
ctx.bezierCurveTo(5.979999999999997,21.214000000000002,5.0589999999999975,18.491000000000003,5.0589999999999975,15.545000000000003);
ctx.bezierCurveTo(5.0589999999999975,13.450000000000003,5.632999999999997,11.764000000000003,6.783999999999997,10.484000000000004);
ctx.bezierCurveTo(7.932999999999997,9.205000000000004,9.456999999999997,8.564000000000004,11.351999999999997,8.564000000000004);
ctx.bezierCurveTo(12.060999999999996,8.564000000000004,12.722999999999997,8.694000000000004,13.339999999999996,8.953000000000003);
ctx.lineTo(13.762999999999996,9.125000000000004);
ctx.lineTo(14.207999999999997,9.308000000000003);
ctx.bezierCurveTo(14.603999999999997,9.475000000000003,14.923999999999996,9.559000000000003,15.166999999999996,9.559000000000003);
ctx.bezierCurveTo(15.478999999999996,9.559000000000003,15.825999999999997,9.487000000000004,16.206999999999997,9.342000000000002);
ctx.lineTo(16.788999999999998,9.113000000000003);
ctx.lineTo(17.223999999999997,8.953000000000003);
ctx.bezierCurveTo(17.916999999999998,8.702000000000004,18.682999999999996,8.576000000000002,19.520999999999997,8.576000000000002);
ctx.bezierCurveTo(21.512,8.576,23.109,9.334,24.32,10.85);
ctx.closePath();
ctx.moveTo(19.615,3.287);
ctx.bezierCurveTo(19.636,3.554,19.648,3.76,19.648,3.904);
ctx.bezierCurveTo(19.648,5.221,19.169,6.377,18.21,7.371);
ctx.bezierCurveTo(17.251,8.365000000000002,16.135,8.861,14.863000000000001,8.861);
ctx.bezierCurveTo(14.825000000000001,8.564,14.805000000000001,8.351,14.805000000000001,8.222000000000001);
ctx.bezierCurveTo(14.805000000000001,7.102000000000001,15.250000000000002,6.051000000000002,16.142000000000003,5.069000000000001);
ctx.bezierCurveTo(17.033,4.087000000000001,18.064000000000004,3.511000000000001,19.238000000000003,3.3440000000000007);
ctx.bezierCurveTo(19.32,3.329,19.447,3.311,19.615,3.287);
ctx.closePath();
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.save();
ctx.fillStyle = "#555555";
ctx.strokeStyle = "rgba(0, 0, 0, 0)";
ctx.transform(1,0,0,1,4,4);
ctx.beginPath();
ctx.moveTo(24.32,10.85);
ctx.bezierCurveTo(22.577,12.083,21.705,13.568999999999999,21.705,15.305);
ctx.bezierCurveTo(21.705,17.384,22.782999999999998,18.978,24.936999999999998,20.091);
ctx.bezierCurveTo(24.358999999999998,21.768,23.520999999999997,23.225,22.423,24.466);
ctx.bezierCurveTo(21.325999999999997,25.707,20.325,26.328000000000003,19.418999999999997,26.328000000000003);
ctx.bezierCurveTo(18.991999999999997,26.328000000000003,18.409999999999997,26.185000000000002,17.670999999999996,25.905000000000005);
ctx.lineTo(17.316999999999997,25.767000000000003);
ctx.bezierCurveTo(16.591999999999995,25.486000000000004,15.953999999999997,25.344000000000005,15.396999999999997,25.344000000000005);
ctx.bezierCurveTo(14.871999999999996,25.344000000000005,14.296999999999997,25.454000000000004,13.671999999999997,25.675000000000004);
ctx.lineTo(13.226999999999997,25.835000000000004);
ctx.lineTo(12.666999999999996,26.064000000000004);
ctx.bezierCurveTo(12.225999999999996,26.240000000000002,11.778999999999996,26.328000000000003,11.329999999999997,26.328000000000003);
ctx.bezierCurveTo(10.270999999999997,26.328000000000003,9.101999999999997,25.456000000000003,7.822999999999997,23.712000000000003);
ctx.bezierCurveTo(5.979999999999997,21.214000000000002,5.0589999999999975,18.491000000000003,5.0589999999999975,15.545000000000003);
ctx.bezierCurveTo(5.0589999999999975,13.450000000000003,5.632999999999997,11.764000000000003,6.783999999999997,10.484000000000004);
ctx.bezierCurveTo(7.932999999999997,9.205000000000004,9.456999999999997,8.564000000000004,11.351999999999997,8.564000000000004);
ctx.bezierCurveTo(12.060999999999996,8.564000000000004,12.722999999999997,8.694000000000004,13.339999999999996,8.953000000000003);
ctx.lineTo(13.762999999999996,9.125000000000004);
ctx.lineTo(14.207999999999997,9.308000000000003);
ctx.bezierCurveTo(14.603999999999997,9.475000000000003,14.923999999999996,9.559000000000003,15.166999999999996,9.559000000000003);
ctx.bezierCurveTo(15.478999999999996,9.559000000000003,15.825999999999997,9.487000000000004,16.206999999999997,9.342000000000002);
ctx.lineTo(16.788999999999998,9.113000000000003);
ctx.lineTo(17.223999999999997,8.953000000000003);
ctx.bezierCurveTo(17.916999999999998,8.702000000000004,18.682999999999996,8.576000000000002,19.520999999999997,8.576000000000002);
ctx.bezierCurveTo(21.512,8.576,23.109,9.334,24.32,10.85);
ctx.closePath();
ctx.moveTo(19.615,3.287);
ctx.bezierCurveTo(19.636,3.554,19.648,3.76,19.648,3.904);
ctx.bezierCurveTo(19.648,5.221,19.169,6.377,18.21,7.371);
ctx.bezierCurveTo(17.251,8.365000000000002,16.135,8.861,14.863000000000001,8.861);
ctx.bezierCurveTo(14.825000000000001,8.564,14.805000000000001,8.351,14.805000000000001,8.222000000000001);
ctx.bezierCurveTo(14.805000000000001,7.102000000000001,15.250000000000002,6.051000000000002,16.142000000000003,5.069000000000001);
ctx.bezierCurveTo(17.033,4.087000000000001,18.064000000000004,3.511000000000001,19.238000000000003,3.3440000000000007);
ctx.bezierCurveTo(19.32,3.329,19.447,3.311,19.615,3.287);
ctx.closePath();
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.save();
ctx.fillStyle = "#000000";
ctx.strokeStyle = "#000000";
ctx.globalAlpha = 0;
ctx.beginPath();
ctx.moveTo(0,0);
ctx.lineTo(32,0);
ctx.quadraticCurveTo(32,0,32,0);
ctx.lineTo(32,32);
ctx.quadraticCurveTo(32,32,32,32);
ctx.lineTo(0,32);
ctx.quadraticCurveTo(0,32,0,32);
ctx.lineTo(0,0);
ctx.quadraticCurveTo(0,0,0,0);
ctx.closePath();
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.restore();
        }
    },
    iphone : {
        name: "iPhone",
        width : 60,
        height : 80,
        draw : function(ctx) {
            ctx.save();
            ctx.beginPath();
            ctx.moveTo(0, 0);
            ctx.lineTo(48, 0);
            ctx.lineTo(48, 48);
            ctx.lineTo(0, 48);
            ctx.closePath();
            ctx.clip();
            ctx.strokeStyle = 'rgba(0,0,0,0)';
            ctx.lineCap = 'butt';
            ctx.lineJoin = 'miter';
            ctx.miterLimit = 4;
            ctx.save();
            ctx.restore();
            ctx.save();
            ctx.restore();
            ctx.save();
            ctx.save();
            var g = ctx.createRadialGradient(30.428225, 45.153285071108, 0,
                    30.428225, 45.153285071108, 13.474453);
            g.addColorStop(0, "rgba(0, 0, 0, 1)");
            g.addColorStop(1, "rgba(0, 0, 0, 0)");
            ctx.fillStyle = g;
            ctx.strokeStyle = "rgba(0, 0, 0, 0)";
            ctx.lineWidth = 1.7999999523162842;
            ctx.lineCap = "round";
            ctx.lineJoin = "round";
            ctx.miterLimit = 4;
            ctx.transform(1.001896, 0, 0, 2.0113314, -5.9859152, -48.289433);
            ctx.globalAlpha = 0.44999992847442627;
            ctx.beginPath();
            ctx.moveTo(43.902678, 45.153286);
            ctx.translate(30.428225, 45.153286);
            ctx.rotate(0);
            ctx.scale(1, 0.20187792409829178);
            ctx.arc(0, 0, 13.474453, 0, 3.141592653589793, 0);
            ctx.scale(1, 4.9534886217331655);
            ctx.rotate(0);
            ctx.translate(-30.428225, -45.153286);
            ctx.translate(30.428225, 45.153286);
            ctx.rotate(0);
            ctx.scale(1, 0.20187792409829178);
            ctx.arc(0, 0, 13.474453, 3.141592653589793, 6.283185307179586, 0);
            ctx.scale(1, 4.9534886217331655);
            ctx.rotate(0);
            ctx.translate(-30.428225, -45.153286);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            ctx.fillStyle = "#222222";
            ctx.strokeStyle = "#454545";
            ctx.lineWidth = 1;
            ctx.lineCap = "butt";
            ctx.lineJoin = "miter";
            ctx.miterLimit = 4;
            ctx.beginPath();
            ctx.moveTo(17.48867, 2.5);
            ctx.lineTo(31.5, 2.5);
            ctx.quadraticCurveTo(36.5, 2.5, 36.5, 7.5);
            ctx.lineTo(36.5, 39.51133);
            ctx.quadraticCurveTo(36.5, 44.51133, 31.5, 44.51133);
            ctx.lineTo(17.48867, 44.51133);
            ctx.quadraticCurveTo(12.48867, 44.51133, 12.48867, 39.51133);
            ctx.lineTo(12.48867, 7.5);
            ctx.quadraticCurveTo(12.48867, 2.5, 17.48867, 2.5);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            ctx.fillStyle = "#eaeef9";
            ctx.strokeStyle = "rgba(0, 0, 0, 0)";
            ctx.lineWidth = 0.4888661205768585;
            ctx.lineCap = "butt";
            ctx.lineJoin = "miter";
            ctx.miterLimit = 4;
            ctx.beginPath();
            ctx.moveTo(15.46316305, 12);
            ctx.lineTo(33.53683695, 12);
            ctx.quadraticCurveTo(34, 12, 34, 12.4886471);
            ctx.lineTo(34, 33.5113529);
            ctx.quadraticCurveTo(34, 34, 33.53683695, 34);
            ctx.lineTo(15.46316305, 34);
            ctx.quadraticCurveTo(15, 34, 15, 33.5113529);
            ctx.lineTo(15, 12.4886471);
            ctx.quadraticCurveTo(15, 12, 15.46316305, 12);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            ctx.fillStyle = "#2e3436";
            ctx.strokeStyle = "rgba(0, 0, 0, 0)";
            ctx.lineWidth = 0.4888661205768585;
            ctx.lineCap = "butt";
            ctx.lineJoin = "miter";
            ctx.miterLimit = 4;
            ctx.beginPath();
            ctx.moveTo(14.235984, 31);
            ctx.lineTo(34.747119, 31);
            ctx.quadraticCurveTo(34.747119, 31, 34.747119, 31);
            ctx.lineTo(34.747119, 34.5056648);
            ctx.quadraticCurveTo(34.747119, 34.5056648, 34.747119, 34.5056648);
            ctx.lineTo(14.235984, 34.5056648);
            ctx.quadraticCurveTo(14.235984, 34.5056648, 14.235984, 34.5056648);
            ctx.lineTo(14.235984, 31);
            ctx.quadraticCurveTo(14.235984, 31, 14.235984, 31);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            ctx.fillStyle = "#729fcf";
            ctx.strokeStyle = "rgba(0, 0, 0, 0)";
            ctx.lineWidth = 0.4888661205768585;
            ctx.lineCap = "butt";
            ctx.lineJoin = "miter";
            ctx.miterLimit = 4;
            ctx.beginPath();
            ctx.moveTo(15, 14);
            ctx.lineTo(34, 14);
            ctx.quadraticCurveTo(34, 14, 34, 14);
            ctx.lineTo(34, 17);
            ctx.quadraticCurveTo(34, 17, 34, 17);
            ctx.lineTo(15, 17);
            ctx.quadraticCurveTo(15, 17, 15, 17);
            ctx.lineTo(15, 14);
            ctx.quadraticCurveTo(15, 14, 15, 14);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            ctx.fillStyle = "rgba(0, 0, 0, 0)";
            ctx.strokeStyle = "#000000";
            ctx.lineWidth = 1;
            ctx.lineCap = "butt";
            ctx.lineJoin = "miter";
            ctx.miterLimit = 4;
            ctx.beginPath();
            ctx.moveTo(14.500002, 11.5);
            ctx.lineTo(34.500002, 11.5);
            ctx.quadraticCurveTo(34.500002, 11.5, 34.500002, 11.5);
            ctx.lineTo(34.500002, 34.500001999999995);
            ctx.quadraticCurveTo(34.500002, 34.500001999999995, 34.500002,
                    34.500001999999995);
            ctx.lineTo(14.500002, 34.500001999999995);
            ctx.quadraticCurveTo(14.500002, 34.500001999999995, 14.500002,
                    34.500001999999995);
            ctx.lineTo(14.500002, 11.5);
            ctx.quadraticCurveTo(14.500002, 11.5, 14.500002, 11.5);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            ctx.fillStyle = "rgba(0, 0, 0, 0)";
            g = ctx.createLinearGradient(12.9943351, 3.0056657, 47.3693351,
                    63.7556647);
            g.addColorStop(0, "rgba(255, 255, 255, 1)");
            g.addColorStop(1, "rgba(255, 255, 255, 0)");
            ctx.strokeStyle = "[object CanvasGradient]";
            ctx.lineWidth = 0.988142192363739;
            ctx.lineCap = "butt";
            ctx.lineJoin = "miter";
            ctx.miterLimit = 4;
            ctx.beginPath();
            ctx.moveTo(17.488405999999998, 3.4997368);
            ctx.lineTo(31.500264, 3.4997368);
            ctx.quadraticCurveTo(35.500264, 3.4997368, 35.500264, 7.4997368);
            ctx.lineTo(35.500264, 39.5115928);
            ctx.quadraticCurveTo(35.500264, 43.5115928, 31.500264, 43.5115928);
            ctx.lineTo(17.488405999999998, 43.5115928);
            ctx.quadraticCurveTo(13.488406, 43.5115928, 13.488406, 39.5115928);
            ctx.lineTo(13.488406, 7.4997368);
            ctx.quadraticCurveTo(13.488406, 3.4997368, 17.488405999999998,
                    3.4997368);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            ctx.fillStyle = "#cee14b";
            ctx.strokeStyle = "rgba(0, 0, 0, 0)";
            ctx.lineWidth = 0.25;
            ctx.lineCap = "round";
            ctx.lineJoin = "round";
            ctx.miterLimit = 4;
            ctx.beginPath();
            ctx.moveTo(31.49804866, 12);
            ctx.lineTo(32.50195804, 12);
            ctx.quadraticCurveTo(33.0000067, 12, 33.0000067, 12);
            ctx.lineTo(33.0000067, 12.99999988);
            ctx.quadraticCurveTo(33.0000067, 12.99999988, 32.50195804,
                    12.99999988);
            ctx.lineTo(31.49804866, 12.99999988);
            ctx.quadraticCurveTo(31, 12.99999988, 31, 12.99999988);
            ctx.lineTo(31, 12);
            ctx.quadraticCurveTo(31, 12, 31.49804866, 12);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            ctx.fillStyle = "#8d8d8d";
            ctx.strokeStyle = "rgba(0, 0, 0, 0)";
            ctx.lineWidth = 0.25;
            ctx.lineCap = "round";
            ctx.lineJoin = "round";
            ctx.miterLimit = 4;
            ctx.beginPath();
            ctx.moveTo(21, 12);
            ctx.lineTo(28, 12);
            ctx.quadraticCurveTo(28, 12, 28, 13.2374361);
            ctx.lineTo(28, 11.7640681);
            ctx.quadraticCurveTo(28, 13.0015042, 28, 13.0015042);
            ctx.lineTo(21, 13.0015042);
            ctx.quadraticCurveTo(21, 13.0015042, 21, 11.7640681);
            ctx.lineTo(21, 13.2374361);
            ctx.quadraticCurveTo(21, 12, 21, 12);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            ctx.fillStyle = "#8d8d8d";
            ctx.strokeStyle = "rgba(0, 0, 0, 0)";
            ctx.lineWidth = 0.25;
            ctx.lineCap = "round";
            ctx.lineJoin = "round";
            ctx.miterLimit = 4;
            ctx.beginPath();
            ctx.moveTo(16, 23.002401);
            ctx.lineTo(28, 23.002401);
            ctx.quadraticCurveTo(28, 23.002401, 28, 24.2398371);
            ctx.lineTo(28, 22.76256283);
            ctx.quadraticCurveTo(28, 23.99999893, 28, 23.99999893);
            ctx.lineTo(16, 23.99999893);
            ctx.quadraticCurveTo(16, 23.99999893, 16, 22.76256283);
            ctx.lineTo(16, 24.2398371);
            ctx.quadraticCurveTo(16, 23.002401, 16, 23.002401);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            ctx.fillStyle = "#8d8d8d";
            ctx.strokeStyle = "rgba(0, 0, 0, 0)";
            ctx.lineWidth = 0.25;
            ctx.lineCap = "round";
            ctx.lineJoin = "round";
            ctx.miterLimit = 4;
            ctx.beginPath();
            ctx.moveTo(16, 25.002401);
            ctx.lineTo(24, 25.002401);
            ctx.quadraticCurveTo(24, 25.002401, 24, 26.2398371);
            ctx.lineTo(24, 24.76256283);
            ctx.quadraticCurveTo(24, 25.99999893, 24, 25.99999893);
            ctx.lineTo(16, 25.99999893);
            ctx.quadraticCurveTo(16, 25.99999893, 16, 24.76256283);
            ctx.lineTo(16, 26.2398371);
            ctx.quadraticCurveTo(16, 25.002401, 16, 25.002401);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            ctx.fillStyle = "#8d8d8d";
            ctx.strokeStyle = "rgba(0, 0, 0, 0)";
            ctx.lineWidth = 0.25;
            ctx.lineCap = "round";
            ctx.lineJoin = "round";
            ctx.miterLimit = 4;
            ctx.beginPath();
            ctx.moveTo(16, 27.002401);
            ctx.lineTo(26, 27.002401);
            ctx.quadraticCurveTo(26, 27.002401, 26, 28.2398371);
            ctx.lineTo(26, 26.76256283);
            ctx.quadraticCurveTo(26, 27.99999893, 26, 27.99999893);
            ctx.lineTo(16, 27.99999893);
            ctx.quadraticCurveTo(16, 27.99999893, 16, 26.76256283);
            ctx.lineTo(16, 28.2398371);
            ctx.quadraticCurveTo(16, 27.002401, 16, 27.002401);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            ctx.fillStyle = "#8d8d8d";
            ctx.strokeStyle = "rgba(0, 0, 0, 0)";
            ctx.lineWidth = 0.25;
            ctx.lineCap = "round";
            ctx.lineJoin = "round";
            ctx.miterLimit = 4;
            ctx.beginPath();
            ctx.moveTo(16, 29.002401);
            ctx.lineTo(26, 29.002401);
            ctx.quadraticCurveTo(26, 29.002401, 26, 30.2398371);
            ctx.lineTo(26, 28.76256283);
            ctx.quadraticCurveTo(26, 29.99999893, 26, 29.99999893);
            ctx.lineTo(16, 29.99999893);
            ctx.quadraticCurveTo(16, 29.99999893, 16, 28.76256283);
            ctx.lineTo(16, 30.2398371);
            ctx.quadraticCurveTo(16, 29.002401, 16, 29.002401);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            ctx.fillStyle = "#8d8d8d";
            ctx.strokeStyle = "rgba(0, 0, 0, 0)";
            ctx.lineWidth = 0.25;
            ctx.lineCap = "round";
            ctx.lineJoin = "round";
            ctx.miterLimit = 4;
            ctx.beginPath();
            ctx.moveTo(32, 23.002401);
            ctx.lineTo(33, 23.002401);
            ctx.quadraticCurveTo(33, 23.002401, 33, 24.2398371);
            ctx.lineTo(33, 22.76256283);
            ctx.quadraticCurveTo(33, 23.99999893, 33, 23.99999893);
            ctx.lineTo(32, 23.99999893);
            ctx.quadraticCurveTo(32, 23.99999893, 32, 22.76256283);
            ctx.lineTo(32, 24.2398371);
            ctx.quadraticCurveTo(32, 23.002401, 32, 23.002401);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            ctx.fillStyle = "#8d8d8d";
            ctx.strokeStyle = "rgba(0, 0, 0, 0)";
            ctx.lineWidth = 0.25;
            ctx.lineCap = "round";
            ctx.lineJoin = "round";
            ctx.miterLimit = 4;
            ctx.beginPath();
            ctx.moveTo(32, 25.002401);
            ctx.lineTo(33, 25.002401);
            ctx.quadraticCurveTo(33, 25.002401, 33, 26.2398371);
            ctx.lineTo(33, 24.76256283);
            ctx.quadraticCurveTo(33, 25.99999893, 33, 25.99999893);
            ctx.lineTo(32, 25.99999893);
            ctx.quadraticCurveTo(32, 25.99999893, 32, 24.76256283);
            ctx.lineTo(32, 26.2398371);
            ctx.quadraticCurveTo(32, 25.002401, 32, 25.002401);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            ctx.fillStyle = "#8d8d8d";
            ctx.strokeStyle = "rgba(0, 0, 0, 0)";
            ctx.lineWidth = 0.25;
            ctx.lineCap = "round";
            ctx.lineJoin = "round";
            ctx.miterLimit = 4;
            ctx.beginPath();
            ctx.moveTo(32, 27.002401);
            ctx.lineTo(33, 27.002401);
            ctx.quadraticCurveTo(33, 27.002401, 33, 28.2398371);
            ctx.lineTo(33, 26.76256283);
            ctx.quadraticCurveTo(33, 27.99999893, 33, 27.99999893);
            ctx.lineTo(32, 27.99999893);
            ctx.quadraticCurveTo(32, 27.99999893, 32, 26.76256283);
            ctx.lineTo(32, 28.2398371);
            ctx.quadraticCurveTo(32, 27.002401, 32, 27.002401);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            ctx.fillStyle = "#8d8d8d";
            ctx.strokeStyle = "rgba(0, 0, 0, 0)";
            ctx.lineWidth = 0.25;
            ctx.lineCap = "round";
            ctx.lineJoin = "round";
            ctx.miterLimit = 4;
            ctx.beginPath();
            ctx.moveTo(32, 29.002401);
            ctx.lineTo(33, 29.002401);
            ctx.quadraticCurveTo(33, 29.002401, 33, 30.2398371);
            ctx.lineTo(33, 28.76256283);
            ctx.quadraticCurveTo(33, 29.99999893, 33, 29.99999893);
            ctx.lineTo(32, 29.99999893);
            ctx.quadraticCurveTo(32, 29.99999893, 32, 28.76256283);
            ctx.lineTo(32, 30.2398371);
            ctx.quadraticCurveTo(32, 29.002401, 32, 29.002401);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            ctx.fillStyle = "#555753";
            ctx.strokeStyle = "rgba(0, 0, 0, 0)";
            ctx.lineWidth = 0.25;
            ctx.lineCap = "round";
            ctx.lineJoin = "round";
            ctx.miterLimit = 4;
            ctx.beginPath();
            ctx.moveTo(27.625, 31.5);
            ctx.lineTo(29.625, 31.5);
            ctx.quadraticCurveTo(29.625, 31.5, 29.625, 31.5);
            ctx.lineTo(29.625, 33.5);
            ctx.quadraticCurveTo(29.625, 33.5, 29.625, 33.5);
            ctx.lineTo(27.625, 33.5);
            ctx.quadraticCurveTo(27.625, 33.5, 27.625, 33.5);
            ctx.lineTo(27.625, 31.5);
            ctx.quadraticCurveTo(27.625, 31.5, 27.625, 31.5);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            ctx.fillStyle = "#555753";
            ctx.strokeStyle = "rgba(0, 0, 0, 0)";
            ctx.lineWidth = 0.5;
            ctx.lineCap = "butt";
            ctx.lineJoin = "miter";
            ctx.miterLimit = 4;
            ctx.transform(0.1721091, 0.1072115, -0.1023985, 0.1801987,
                    18.708736, 28.85398);
            ctx.beginPath();
            ctx.moveTo(1.4894626, 22.96164);
            ctx.lineTo(-0.37207557, 25.909981);
            ctx.lineTo(-1.5799401, 22.639033);
            ctx.lineTo(-4.9592258, 21.779693);
            ctx.lineTo(-2.2216198, 19.620167);
            ctx.lineTo(-2.4485951, 16.140724);
            ctx.lineTo(0.45120293, 18.077012);
            ctx.lineTo(3.6902102, 16.785939);
            ctx.lineTo(2.744778, 20.142156);
            ctx.lineTo(4.9735699, 22.823672);
            ctx.lineTo(1.4894626, 22.96164);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            ctx.fillStyle = "#555753";
            ctx.strokeStyle = "rgba(0, 0, 0, 0)";
            ctx.lineWidth = 0.5;
            ctx.lineCap = "butt";
            ctx.lineJoin = "miter";
            ctx.miterLimit = 4;
            ctx.transform(0.627451, 0, 0, 0.627451, -5.5122557, 11.656862);
            ctx.beginPath();
            ctx.moveTo(43.25, 33.21875);
            ctx.translate(41.65625, 33.21875);
            ctx.rotate(0);
            ctx.scale(1, 1);
            ctx.arc(0, 0, 1.59375, 0, 3.141592653589793, 0);
            ctx.scale(1, 1);
            ctx.rotate(0);
            ctx.translate(-41.65625, -33.21875);
            ctx.translate(41.65625, 33.21875);
            ctx.rotate(0);
            ctx.scale(1, 1);
            ctx.arc(0, 0, 1.59375, 3.141592653589793, 6.283185307179586, 0);
            ctx.scale(1, 1);
            ctx.rotate(0);
            ctx.translate(-41.65625, -33.21875);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            ctx.fillStyle = "#555753";
            ctx.strokeStyle = "rgba(0, 0, 0, 0)";
            ctx.lineWidth = 0.5;
            ctx.lineCap = "butt";
            ctx.lineJoin = "miter";
            ctx.miterLimit = 4;
            ctx.transform(0.64, 0, 0, 0.64, 5.645, 14.12);
            ctx.beginPath();
            ctx.moveTo(41.375, 28.71875);
            ctx.translate(40.59375, 28.71875);
            ctx.rotate(0);
            ctx.scale(1, 1);
            ctx.arc(0, 0, 0.78125, 0, 3.141592653589793, 0);
            ctx.scale(1, 1);
            ctx.rotate(0);
            ctx.translate(-40.59375, -28.71875);
            ctx.translate(40.59375, 28.71875);
            ctx.rotate(0);
            ctx.scale(1, 1);
            ctx.arc(0, 0, 0.78125, 3.141592653589793, 6.283185307179586, 0);
            ctx.scale(1, 1);
            ctx.rotate(0);
            ctx.translate(-40.59375, -28.71875);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            ctx.fillStyle = "#555753";
            ctx.strokeStyle = "rgba(0, 0, 0, 0)";
            ctx.lineWidth = 0.5;
            ctx.lineCap = "butt";
            ctx.lineJoin = "miter";
            ctx.miterLimit = 4;
            ctx.transform(0.64, 0, 0, 0.64, 7.02, 14.12);
            ctx.beginPath();
            ctx.moveTo(41.375, 28.71875);
            ctx.translate(40.59375, 28.71875);
            ctx.rotate(0);
            ctx.scale(1, 1);
            ctx.arc(0, 0, 0.78125, 0, 3.141592653589793, 0);
            ctx.scale(1, 1);
            ctx.rotate(0);
            ctx.translate(-40.59375, -28.71875);
            ctx.translate(40.59375, 28.71875);
            ctx.rotate(0);
            ctx.scale(1, 1);
            ctx.arc(0, 0, 0.78125, 3.141592653589793, 6.283185307179586, 0);
            ctx.scale(1, 1);
            ctx.rotate(0);
            ctx.translate(-40.59375, -28.71875);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            ctx.fillStyle = "#729fcf";
            ctx.strokeStyle = "rgba(0, 0, 0, 0)";
            ctx.lineWidth = 0.5;
            ctx.lineCap = "butt";
            ctx.lineJoin = "miter";
            ctx.miterLimit = 4;
            ctx.transform(0.538748, 0, 0, 0.538748, -3.4940494, 13.021049);
            ctx.beginPath();
            ctx.moveTo(53.121399, 35.227882);
            ctx.translate(52.193321499999996, 35.22839176634375);
            ctx.rotate(0);
            ctx.scale(1, 1);
            ctx.arc(0, 0, 0.92807764, -0.0005492712542802616,
                    3.142141924844066, 0);
            ctx.scale(1, 1);
            ctx.rotate(0);
            ctx.translate(-52.193321499999996, -35.22839176634375);
            ctx.translate(52.193321499999996, 35.227372233656254);
            ctx.rotate(0);
            ctx.scale(1, 1);
            ctx.arc(0, 0, 0.92807764, 3.141043382335513, 6.283734578433859, 0);
            ctx.scale(1, 1);
            ctx.rotate(0);
            ctx.translate(-52.193321499999996, -35.227372233656254);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            ctx.fillStyle = "#729fcf";
            ctx.strokeStyle = "rgba(0, 0, 0, 0)";
            ctx.lineWidth = 0.5;
            ctx.lineCap = "butt";
            ctx.lineJoin = "miter";
            ctx.miterLimit = 4;
            ctx.beginPath();
            ctx.moveTo(23.84753092, 32.5);
            ctx.lineTo(25.40246908, 32.5);
            ctx.quadraticCurveTo(25.625, 32.5, 25.625, 32.72253092);
            ctx.lineTo(25.625, 33.27746908);
            ctx.quadraticCurveTo(25.625, 33.5, 25.40246908, 33.5);
            ctx.lineTo(23.84753092, 33.5);
            ctx.quadraticCurveTo(23.625, 33.5, 23.625, 33.27746908);
            ctx.lineTo(23.625, 32.72253092);
            ctx.quadraticCurveTo(23.625, 32.5, 23.84753092, 32.5);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            ctx.fillStyle = "#729fcf";
            ctx.strokeStyle = "rgba(0, 0, 0, 0)";
            ctx.lineWidth = 0.25;
            ctx.lineCap = "round";
            ctx.lineJoin = "round";
            ctx.miterLimit = 4;
            ctx.beginPath();
            ctx.moveTo(16.49804166, 12);
            ctx.lineTo(17.50195104, 12);
            ctx.quadraticCurveTo(17.9999997, 12, 17.9999997, 12);
            ctx.lineTo(17.9999997, 12.99999988);
            ctx.quadraticCurveTo(17.9999997, 12.99999988, 17.50195104,
                    12.99999988);
            ctx.lineTo(16.49804166, 12.99999988);
            ctx
                    .quadraticCurveTo(15.999993, 12.99999988, 15.999993,
                            12.99999988);
            ctx.lineTo(15.999993, 12);
            ctx.quadraticCurveTo(15.999993, 12, 16.49804166, 12);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            ctx.fillStyle = "#729fcf";
            ctx.strokeStyle = "rgba(0, 0, 0, 0)";
            ctx.lineWidth = 0.25;
            ctx.lineCap = "round";
            ctx.lineJoin = "round";
            ctx.miterLimit = 4;
            ctx.beginPath();
            ctx.moveTo(15, 21);
            ctx.lineTo(34, 21);
            ctx.quadraticCurveTo(34, 21, 34, 22.2404156);
            ctx.lineTo(34, 20.7595844);
            ctx.quadraticCurveTo(34, 22, 34, 22);
            ctx.lineTo(15, 22);
            ctx.quadraticCurveTo(15, 22, 15, 20.7595844);
            ctx.lineTo(15, 22.2404156);
            ctx.quadraticCurveTo(15, 21, 15, 21);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            ctx.fillStyle = "#8d8d8d";
            ctx.strokeStyle = "rgba(0, 0, 0, 0)";
            ctx.lineWidth = 0.25;
            ctx.lineCap = "round";
            ctx.lineJoin = "round";
            ctx.miterLimit = 4;
            ctx.beginPath();
            ctx.moveTo(16, 19.002401);
            ctx.lineTo(26, 19.002401);
            ctx.quadraticCurveTo(26, 19.002401, 26, 20.2398371);
            ctx.lineTo(26, 18.76256283);
            ctx.quadraticCurveTo(26, 19.99999893, 26, 19.99999893);
            ctx.lineTo(16, 19.99999893);
            ctx.quadraticCurveTo(16, 19.99999893, 16, 18.76256283);
            ctx.lineTo(16, 20.2398371);
            ctx.quadraticCurveTo(16, 19.002401, 16, 19.002401);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            ctx.fillStyle = "#8d8d8d";
            ctx.strokeStyle = "rgba(0, 0, 0, 0)";
            ctx.lineWidth = 0.25;
            ctx.lineCap = "round";
            ctx.lineJoin = "round";
            ctx.miterLimit = 4;
            ctx.beginPath();
            ctx.moveTo(32, 19.002401);
            ctx.lineTo(33, 19.002401);
            ctx.quadraticCurveTo(33, 19.002401, 33, 20.2398371);
            ctx.lineTo(33, 18.76256283);
            ctx.quadraticCurveTo(33, 19.99999893, 33, 19.99999893);
            ctx.lineTo(32, 19.99999893);
            ctx.quadraticCurveTo(32, 19.99999893, 32, 18.76256283);
            ctx.lineTo(32, 20.2398371);
            ctx.quadraticCurveTo(32, 19.002401, 32, 19.002401);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            ctx.fillStyle = "#3465a4";
            ctx.strokeStyle = "rgba(0, 0, 0, 0)";
            ctx.lineWidth = 0.25;
            ctx.lineCap = "round";
            ctx.lineJoin = "round";
            ctx.miterLimit = 4;
            ctx.beginPath();
            ctx.moveTo(30, 15);
            ctx.lineTo(33, 15);
            ctx.quadraticCurveTo(33, 15, 33, 16.2404157);
            ctx.lineTo(33, 14.7595843);
            ctx.quadraticCurveTo(33, 16, 33, 16);
            ctx.lineTo(30, 16);
            ctx.quadraticCurveTo(30, 16, 30, 14.7595843);
            ctx.lineTo(30, 16.2404157);
            ctx.quadraticCurveTo(30, 15, 30, 15);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            g = ctx.createLinearGradient(19.119335, 3.0054398033000003,
                    19.119335, 44.0054400033);
            g.addColorStop(0, "rgba(255, 255, 255, 1)");
            g.addColorStop(1, "rgba(255, 255, 255, 0)");
            ctx.fillStyle = g;
            ctx.strokeStyle = "rgba(0, 0, 0, 0)";
            ctx.lineWidth = 1;
            ctx.lineCap = "butt";
            ctx.lineJoin = "miter";
            ctx.miterLimit = 4;
            ctx.globalAlpha = 0.25;
            ctx.beginPath();
            ctx.moveTo(17.994339, 3.0054398);
            ctx.lineTo(30.994339, 3.0054398);
            ctx.bezierCurveTo(23.836313, 7.1381278, 20.853778, 19.364879,
                    24.494339, 23.00544);
            ctx.bezierCurveTo(33.610675, 32.121776, 17.994339, 44.00544,
                    17.994339, 44.00544);
            ctx.bezierCurveTo(15.224339, 44.00544, 12.994339, 41.77544,
                    12.994339, 39.00544);
            ctx.lineTo(12.994339, 8.0054398);
            ctx.bezierCurveTo(12.994339, 5.2354398, 15.224339, 3.0054398,
                    17.994339, 3.0054398);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            ctx.fillStyle = "#000000";
            ctx.strokeStyle = "rgba(0, 0, 0, 0)";
            ctx.lineWidth = 0.2625642418861389;
            ctx.lineCap = "butt";
            ctx.lineJoin = "miter";
            ctx.miterLimit = 4;
            ctx.beginPath();
            ctx.moveTo(22.1666667, 7);
            ctx.lineTo(26.8333333, 7);
            ctx.quadraticCurveTo(28, 7, 28, 8);
            ctx.lineTo(28, 8);
            ctx.quadraticCurveTo(28, 9, 26.8333333, 9);
            ctx.lineTo(22.1666667, 9);
            ctx.quadraticCurveTo(21, 9, 21, 8);
            ctx.lineTo(21, 8);
            ctx.quadraticCurveTo(21, 7, 22.1666667, 7);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            g = ctx.createLinearGradient(24.499999250000002, 7.9999999,
                    24.499999250000002, 8.9999999);
            g.addColorStop(0, "rgba(255, 255, 255, 0)");
            g.addColorStop(1, "rgba(255, 255, 255, 1)");
            ctx.fillStyle = g;
            ctx.strokeStyle = "rgba(0, 0, 0, 0)";
            ctx.lineWidth = 0.2625642418861389;
            ctx.lineCap = "butt";
            ctx.lineJoin = "miter";
            ctx.miterLimit = 4;
            ctx.beginPath();
            ctx.moveTo(22.1666667, 7);
            ctx.lineTo(26.8333333, 7);
            ctx.quadraticCurveTo(28, 7, 28, 8);
            ctx.lineTo(28, 8);
            ctx.quadraticCurveTo(28, 9, 26.8333333, 9);
            ctx.lineTo(22.1666667, 9);
            ctx.quadraticCurveTo(21, 9, 21, 8);
            ctx.lineTo(21, 8);
            ctx.quadraticCurveTo(21, 7, 22.1666667, 7);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            ctx.fillStyle = "#000000";
            ctx.strokeStyle = "rgba(0, 0, 0, 0)";
            ctx.lineWidth = 1;
            ctx.lineCap = "butt";
            ctx.lineJoin = "miter";
            ctx.miterLimit = 4;
            ctx.transform(1.2384383, 0, 0, 1.2374368, -51.908369, -9.0844674);
            ctx.beginPath();
            ctx.moveTo(64.523495, 38.45406);
            ctx.translate(61.695068, 38.45481212061619);
            ctx.rotate(0);
            ctx.scale(1, 1);
            ctx.arc(0, 0, 2.8284271, -0.0002659147991268235,
                    3.1418585683892366, 0);
            ctx.scale(1, 1);
            ctx.rotate(0);
            ctx.translate(-61.695068, -38.45481212061619);
            ctx.translate(61.695068, 38.45330787938381);
            ctx.rotate(0);
            ctx.scale(1, 1);
            ctx.arc(0, 0, 2.8284271, 3.1413267387906663, 6.28345122197903, 0);
            ctx.scale(1, 1);
            ctx.rotate(0);
            ctx.translate(-61.695068, -38.45330787938381);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            ctx.fillStyle = "rgba(0, 0, 0, 0)";
            ctx.strokeStyle = "#ffffff";
            ctx.lineWidth = 1;
            ctx.lineCap = "butt";
            ctx.lineJoin = "miter";
            ctx.miterLimit = 4;
            ctx.globalAlpha = 0.800000011920929;
            ctx.beginPath();
            ctx.moveTo(23.6125001, 36.5);
            ctx.lineTo(25.3874999, 36.5);
            ctx.quadraticCurveTo(26.5, 36.5, 26.5, 37.6125);
            ctx.lineTo(26.5, 39.3875);
            ctx.quadraticCurveTo(26.5, 40.5, 25.3874999, 40.5);
            ctx.lineTo(23.6125001, 40.5);
            ctx.quadraticCurveTo(22.5, 40.5, 22.5, 39.3875);
            ctx.lineTo(22.5, 37.6125);
            ctx.quadraticCurveTo(22.5, 36.5, 23.6125001, 36.5);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.save();
            g = ctx.createLinearGradient(24.4943322015625, 42.000000609375,
                    24.4943322015625, 38.937437259375);
            g.addColorStop(0, "rgba(255, 255, 255, 1)");
            g.addColorStop(1, "rgba(255, 255, 255, 0)");
            ctx.fillStyle = g;
            ctx.strokeStyle = "rgba(0, 0, 0, 0)";
            ctx.lineWidth = 1;
            ctx.lineCap = "butt";
            ctx.lineJoin = "miter";
            ctx.miterLimit = 4;
            ctx.globalAlpha = 0.5;
            ctx.beginPath();
            ctx.moveTo(27.953175, 38.937438);
            ctx.bezierCurveTo(27.028904, 39.748992, 25.833693, 40.249964,
                    24.508006, 40.249964);
            ctx.bezierCurveTo(23.189263, 40.249964, 21.957911, 39.768752,
                    21.035493, 38.964782);
            ctx.bezierCurveTo(21.263181, 40.677198, 22.733765, 42, 24.508006,
                    42);
            ctx.bezierCurveTo(26.291154, 42, 27.736877, 40.662361, 27.953175,
                    38.937438);
            ctx.closePath();
            ctx.fill();
            ctx.stroke();
            ctx.restore();
            ctx.restore();
            ctx.restore();
        }
    }
}

var icons = [];
for (var a in Q.Graphs) {
    var g = Q.Graphs[a];
    if(g instanceof Object){
        if(!g.name){
            g.name = a;
        }
        icons.push(g);
    }
}
for (var a in graphs) {
    var g = graphs[a];
    if(!g.name){
        g.name = a;
    }
    Q.registerImage(g.name, g);
	icons.push(g);
}
function randomIcon() {
	return icons[Q.randomInt(icons.length)];
}

if(Q.loadClassPath){
    Q.loadClassPath(graphs, "graphs");
}