Home | History | Annotate | Download | only in Intersection
      1 <!-- path visualizer -->
      2 <html>
      3 <head>
      4 <div style="height:0">
      5 
      6 <div id="testSimplifyQuadratic1">
      7     SkPath path, out;
      8     path.moveTo(0, 0);
      9     path.quadTo(1, 0, 1, 1);
     10     path.close();
     11     path.moveTo(1, 0);
     12     path.quadTo(0, 0, 0, 1);
     13     path.close();
     14     testSimplify(path, true, out, bitmap);
     15 }
     16 </div>
     17 
     18 <div id="testSimplifyQuadratic2">
     19     SkPath path, out;
     20     path.moveTo(0, 0);
     21     path.quadTo(20, 0, 20, 20);
     22     path.close();
     23     path.moveTo(20, 0);
     24     path.quadTo(0, 0, 0, 20);
     25     path.close();
     26     testSimplify(path, true, out, bitmap);
     27 }
     28 </div>
     29 
     30 <div id="testSimplifyQuadratic3">
     31     SkPath path, out;
     32     path.moveTo(0, 0);
     33     path.quadTo(20, 0, 20, 20);
     34     path.close();
     35     path.moveTo(0, 20);
     36     path.quadTo(0, 0, 20, 0);
     37     path.close();
     38     testSimplify(path, true, out, bitmap);
     39 }
     40 </div>
     41 
     42 <div id="testSimplifyQuadratic4">
     43     SkPath path, out;
     44     path.moveTo(0, 20);
     45     path.quadTo(20, 0, 40, 20);
     46     path.close();
     47     path.moveTo(40, 10);
     48     path.quadTo(20, 30, 0, 10);
     49     path.close();
     50     testSimplify(path, true, out, bitmap);
     51     drawAsciiPaths(path, out, true);
     52 }
     53 </div>
     54 
     55 <div id="testSimplifyQuadratic5">
     56     SkPath path, out;
     57     path.moveTo(0, 0);
     58     path.quadTo(0, 0, 0, 0);
     59     path.lineTo(0, 0);
     60     path.close();
     61     path.moveTo(0, 0);
     62     path.lineTo(0, 0);
     63     path.quadTo(0, 0, 0, 1);
     64     path.close();
     65     testSimplify(path, true, out, bitmap);
     66     drawAsciiPaths(path, out, true);
     67 }
     68 </div>
     69 
     70 <div id="testSimplifyQuadratic6">
     71     SkPath path, out;
     72     path.moveTo(0, 0);
     73     path.quadTo(0, 0, 0, 0);
     74     path.lineTo(1, 0);
     75     path.close();
     76     path.moveTo(0, 0);
     77     path.lineTo(0, 0);
     78     path.quadTo(1, 0, 0, 1);
     79     path.close();
     80     testSimplify(path, true, out, bitmap);
     81     drawAsciiPaths(path, out, true);
     82 }
     83 </div>
     84 
     85 <div id="testSimplifyQuadratic7">
     86     SkPath path, out;
     87     path.moveTo(0, 0);
     88     path.quadTo(0, 0, 0, 0);
     89     path.lineTo(0, 1);
     90     path.close();
     91     path.moveTo(0, 0);
     92     path.lineTo(0, 0);
     93     path.quadTo(1, 0, 0, 2);
     94     path.close();
     95     testSimplify(path, true, out, bitmap);
     96     drawAsciiPaths(path, out, true);
     97 }
     98 </div>
     99 
    100 <div id="testSimplifyQuadratic8">
    101     SkPath path, out;
    102     path.moveTo(0, 0);
    103     path.quadTo(0, 0, 0, 0);
    104     path.lineTo(0, 0);
    105     path.close();
    106     path.moveTo(0, 0);
    107     path.lineTo(0, 0);
    108     path.quadTo(1, 0, 0, 2);
    109     path.close();
    110     testSimplify(path, true, out, bitmap);
    111     drawAsciiPaths(path, out, true);
    112 }
    113 </div>
    114 
    115 <div id="testSimplifyQuadratic9">
    116     SkPath path, out;
    117     path.moveTo(0, 0);
    118     path.quadTo(0, 0, 0, 0);
    119     path.lineTo(1, 1);
    120     path.close();
    121     path.moveTo(0, 0);
    122     path.lineTo(0, 0);
    123     path.quadTo(1, 0, 2, 2);
    124     path.close();
    125     testSimplify(path, true, out, bitmap);
    126     drawAsciiPaths(path, out, true);
    127 }
    128 </div>
    129 
    130 <div id="testSimplifyQuadratic10">
    131     SkPath path, out;
    132     path.moveTo(0, 0);
    133     path.quadTo(0, 0, 0, 0);
    134     path.lineTo(0, 0);
    135     path.close();
    136     path.moveTo(0, 0);
    137     path.lineTo(0, 1);
    138     path.quadTo(1, 1, 1, 2);
    139     path.close();
    140     testSimplify(path, true, out, bitmap);
    141     drawAsciiPaths(path, out, true);
    142 }
    143 </div>
    144 
    145 <div id="testSimplifyQuadratic11">
    146     SkPath path, out;
    147     path.moveTo(0, 0);
    148     path.quadTo(0, 0, 0, 0);
    149     path.lineTo(0, 2);
    150     path.close();
    151     path.moveTo(0, 0);
    152     path.lineTo(2, 1);
    153     path.quadTo(2, 2, 3, 3);
    154     path.close();
    155     testSimplify(path, true, out, bitmap);
    156     drawAsciiPaths(path, out, true);
    157 }
    158 </div>
    159 
    160 <div id="testSimplifyQuadratic12">
    161     SkPath path, out;
    162     path.moveTo(0, 0);
    163     path.lineTo(0, 2);
    164     path.lineTo(0, 0);
    165     path.close();
    166     path.moveTo(3, 0);
    167     path.quadTo(1, 1, 0, 2);
    168     path.lineTo(3, 0);
    169     path.close();
    170     testSimplify(path, true, out, bitmap);
    171     drawAsciiPaths(path, out, true);
    172 }
    173 </div>
    174 
    175 <div id="testSimplifyQuadratic13">
    176     SkPath path, out;
    177 path.moveTo(0, 0);
    178 path.quadTo(0, 0, 1, 0);
    179 path.lineTo(1, 1);
    180 path.lineTo(0, 0);
    181 path.close();
    182 path.moveTo(0, 0);
    183 path.quadTo(3, 0, 1, 1);
    184 path.lineTo(0, 0);
    185 path.close();
    186     testSimplify(path, true, out, bitmap);
    187     drawAsciiPaths(path, out, true);
    188 }
    189 </div>
    190 
    191 <div id="testSimplifyQuadratic14">
    192     SkPath path, out;
    193     path.moveTo(0, 0);
    194     path.quadTo(0, 0, 0, 0);
    195     path.lineTo(1, 1);
    196     path.close();
    197     path.moveTo(0, 0);
    198     path.lineTo(0, 0);
    199     path.quadTo(0, 1, 2, 1);
    200     path.close();
    201     testSimplify(path, true, out, bitmap);
    202     drawAsciiPaths(path, out, true);
    203 }
    204 </div>
    205 
    206 <div id="testSimplifyQuadratic15">
    207     SkPath path, out;
    208     path.moveTo(0, 0);
    209     path.quadTo(0, 0, 1, 3);
    210     path.lineTo(3, 3);
    211     path.close();
    212     path.moveTo(0, 1);
    213     path.lineTo(1, 1);
    214     path.quadTo(0, 3, 3, 3);
    215     path.close();
    216     testSimplify(path, true, out, bitmap);
    217     drawAsciiPaths(path, out, true);
    218 }
    219 </div>
    220 
    221 <div id="testSimplifyQuadratic16">
    222     SkPath path, out;
    223     path.moveTo(0, 0);
    224     path.quadTo(0, 0, 0, 0);
    225     path.lineTo(0, 1);
    226     path.close();
    227     path.moveTo(0, 0);
    228     path.lineTo(0, 0);
    229     path.quadTo(1, 0, 0, 1);
    230     path.close();
    231     testSimplify(path, true, out, bitmap);
    232     drawAsciiPaths(path, out, true);
    233 }
    234 </div>
    235 
    236 <div id="testSimplifyQuadratic17">
    237     SkPath path, out;
    238     path.moveTo(8, 8);
    239     path.quadTo(10, 10, 8, -10);
    240     path.close();
    241     path.moveTo(8, 8);
    242     path.quadTo(12, 12, 14, 4);
    243     path.close();
    244     path.moveTo(8, 8);
    245     path.quadTo(9, 9, 10, 8);
    246     path.close();
    247     testSimplify(path, true, out, bitmap);
    248     drawAsciiPaths(path, out, true);
    249 }
    250 </div>
    251 
    252 <div id="testSimplifyQuadratic18">
    253     SkPath path, out;
    254     path.moveTo(8.0000000000000071, 8.0000000000000071);
    255     path.quadTo(8.7289570079366854, 8.7289570079366889, 9.3914917259458743, 9.0593802763083691);
    256     path.close();
    257     path.moveTo(8.0000000000000142, 8.0000000000000142);
    258     path.quadTo(8.1250000000000107, 8.1250000000000071, 8.2500000000000071, 8.2187500000000053);
    259     path.close();
    260     testSimplify(path, true, out, bitmap);
    261     drawAsciiPaths(path, out, true);
    262 </div>
    263 
    264 <div id="testSimplifyQuadratic19">
    265     SkPath path, simple;
    266     path.moveTo(0,4);
    267     path.lineTo(6,4);
    268     path.lineTo(3,1);
    269     path.close();
    270     path.moveTo(2,3);
    271     path.lineTo(3,2);
    272     path.lineTo(4,3);
    273     path.close();
    274     testSimplifyx(path);
    275 </div>
    276 
    277 <div id="testSimplifyQuadratic20">
    278     SkPath path, simple;
    279     path.moveTo(0,4);
    280     path.lineTo(6,4);
    281     path.lineTo(3,1);
    282     path.close();
    283     path.moveTo(2,3);
    284     path.lineTo(4,3);
    285     path.lineTo(3,2);
    286     path.close();
    287     testSimplifyx(path);
    288 </div>
    289 
    290 <div id="testSimplifyQuadratic21">
    291     SkPath path, simple;
    292     path.moveTo(0,4);
    293     path.lineTo(8,4);
    294     path.lineTo(4,0);
    295     path.close();
    296     path.moveTo(2,2);
    297     path.lineTo(3,3);
    298     path.lineTo(4,2);
    299     path.close();
    300     testSimplifyx(path);
    301 </div>
    302 
    303 <div id="testLine5">
    304     path.moveTo(3,0);
    305     path.lineTo(6,2);
    306     path.lineTo(0,2);
    307     path.close();
    308     path.moveTo(3,0);
    309     path.lineTo(6,2);
    310     path.lineTo(0,2);
    311     path.close();
    312 </div>
    313 
    314 <div id="testLine6">
    315     SkPath path, simple;
    316     path.moveTo(0,0);
    317     path.lineTo(4,0);
    318     path.lineTo(2,2);
    319     path.close();
    320     path.moveTo(2,0);
    321     path.lineTo(6,0);
    322     path.lineTo(4,2);
    323     path.close();
    324     testSimplifyx(path);
    325 </div>
    326 
    327 <div id="testLine7">
    328     SkPath path, simple;
    329     path.moveTo(0,0);
    330     path.lineTo(4,0);
    331     path.lineTo(2,2);
    332     path.close();
    333     path.moveTo(6,0);
    334     path.lineTo(2,0);
    335     path.lineTo(4,2);
    336     path.close();
    337     testSimplifyx(path);
    338 </div>
    339 
    340 <div id="testLine7b">
    341     path.moveTo(0,0);
    342     path.lineTo(4,0);
    343     path.close();
    344     path.moveTo(6,0);
    345     path.lineTo(2,0);
    346     path.lineTo(4,2);
    347     path.close();
    348 </div>
    349 
    350 <div id="testLine9">
    351     SkPath path, simple;
    352     path.moveTo(0,4);
    353     path.lineTo(4,4);
    354     path.lineTo(2,2);
    355     path.close();
    356     path.moveTo(6,4);
    357     path.lineTo(2,4);
    358     path.lineTo(4,2);
    359     path.close();
    360     testSimplifyx(path);
    361 </div>
    362 
    363 <div id="testLine12">
    364     path.moveTo(0,4);
    365     path.lineTo(6,4);
    366     path.lineTo(3,1);
    367     path.close();
    368     path.moveTo(2,3);
    369     path.lineTo(3,2);
    370     path.lineTo(4,3);
    371     path.close();
    372 </div>
    373 
    374 <div id="testLine13">
    375     path.moveTo(6,4);
    376     path.lineTo(0,4);
    377     path.lineTo(3,1);
    378     path.close();
    379     path.moveTo(3,2);
    380     path.lineTo(2,3);
    381     path.lineTo(4,3);
    382     path.close();
    383 </div>
    384 
    385 <div id="testLine16">
    386     path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
    387     path.addRect(0, 4, 9, 9, SkPath::kCW_Direction);
    388 </div>
    389 
    390 <div id="testLine17">
    391     SkPath path, simple;
    392     path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
    393     path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
    394     testSimplifyx(path);
    395 </div>
    396 
    397 <div id="testLine19">
    398     SkPath path, simple;
    399     path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
    400     path.addRect(12, 16, 21, 21, SkPath::kCW_Direction);    
    401     testSimplifyx(path);
    402 </div>
    403 
    404 <div id="testLine22">
    405     path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
    406     path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
    407 </div>
    408 
    409 <div id="testLine24">
    410     path.addRect(0, 18, 12, 12, SkPath::kCW_Direction);
    411     path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
    412 </div>
    413 
    414 <div id="testLine28">
    415     SkPath path, simple;
    416     path.addRect(0, 6, 12, 12, SkPath::kCW_Direction);
    417     path.addRect(0, 0, 9, 9, SkPath::kCW_Direction);
    418     testSimplifyx(path);
    419 </div>
    420 
    421 <div id="testLine29">
    422     SkPath path, simple;
    423     path.addRect(0, 18, 12, 12, SkPath::kCW_Direction);
    424     path.addRect(12, 12, 21, 21, SkPath::kCW_Direction);
    425     testSimplifyx(path);
    426 </div>
    427 
    428 <div id="testLine30">
    429     path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
    430     path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
    431     path.addRect(4, 4, 13, 13, SkPath::kCW_Direction);
    432 </div>
    433 
    434 <div id="testLine31">
    435     path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
    436     path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
    437     path.addRect(0, 4, 9, 9, SkPath::kCW_Direction);
    438 </div>
    439 
    440 <div id="testLine32">
    441     path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
    442     path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
    443     path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
    444 </div>
    445 
    446 <div id="testLine33">
    447     path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
    448     path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
    449     path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
    450 </div>
    451 
    452 <div id="testLine34">
    453     path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
    454     path.addRect(0, 6, 12, 12, SkPath::kCW_Direction);
    455     path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
    456 </div>
    457 
    458 <div id="testLine35">
    459     path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
    460     path.addRect(6, 0, 18, 18, SkPath::kCW_Direction);
    461     path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
    462 </div>
    463 
    464 <div id="testLine36">
    465     path.addRect(0, 10, 20, 20, SkPath::kCW_Direction);
    466     path.addRect(6, 12, 18, 18, SkPath::kCW_Direction);
    467     path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
    468 </div>
    469 
    470 <div id="testLine37">
    471     path.addRect(0, 20, 20, 20, SkPath::kCW_Direction);
    472     path.addRect(18, 24, 30, 30, SkPath::kCW_Direction);
    473     path.addRect(0, 0, 9, 9, SkPath::kCW_Direction);
    474 </div>
    475 
    476 <div id="testLine38">
    477     path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
    478     path.addRect(6, 12, 18, 18, SkPath::kCW_Direction);
    479     path.addRect(12, 12, 21, 21, SkPath::kCW_Direction);
    480 </div>
    481 
    482 <div id="testLine39">
    483     path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
    484     path.addRect(12, 6, 24, 24, SkPath::kCW_Direction);
    485     path.addRect(12, 4, 21, 21, SkPath::kCW_Direction);
    486 </div>
    487 
    488 <div id="testLine40">
    489     path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
    490     path.addRect(12, 18, 24, 24, SkPath::kCW_Direction);
    491     path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
    492 </div>
    493 
    494 <div id="testLine41">
    495     path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
    496     path.addRect(18, 24, 30, 30, SkPath::kCW_Direction);
    497     path.addRect(12, 0, 21, 21, SkPath::kCW_Direction);
    498 </div>
    499 
    500 <div id="testLine42">
    501     path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
    502     path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
    503     path.addRect(8, 16, 17, 17, SkPath::kCW_Direction);
    504 </div>
    505 
    506 <div id="testLine43">
    507     path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
    508     path.addRect(6, 24, 18, 18, SkPath::kCW_Direction);
    509     path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
    510 </div>
    511 
    512 <div id="testLine44">
    513     path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
    514     path.addRect(18, 0, 30, 30, SkPath::kCW_Direction);
    515     path.addRect(18, 32, 27, 36, SkPath::kCCW_Direction);
    516 </div>
    517 
    518 <div id="testLine45">
    519     path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
    520     path.addRect(18, 0, 30, 30, SkPath::kCW_Direction);
    521     path.addRect(24, 32, 33, 36, SkPath::kCW_Direction);
    522 </div>
    523 
    524 <div id="testLine46">
    525     path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
    526     path.addRect(24, 0, 36, 36, SkPath::kCW_Direction);
    527     path.addRect(24, 32, 33, 36, SkPath::kCW_Direction);
    528 </div>
    529 
    530 <div id="testLine47">
    531     path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
    532     path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
    533     path.addRect(0, 0, 9, 9, SkPath::kCCW_Direction);
    534 </div>
    535 
    536 <div id="testLine48">
    537     path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
    538     path.addRect(0, 6, 12, 12, SkPath::kCW_Direction);
    539     path.addRect(0, 0, 9, 9, SkPath::kCCW_Direction);
    540 </div>
    541 
    542 <div id="testLine49">
    543     path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
    544     path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
    545     path.addRect(0, 0, 9, 9, SkPath::kCW_Direction);
    546 </div>
    547 
    548 <div id="testLine50">
    549     path.addRect(10, 30, 30, 30, SkPath::kCW_Direction);
    550     path.addRect(24, 20, 36, 30, SkPath::kCW_Direction);
    551 </div>
    552 
    553 <div id="testLine51">
    554     path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
    555     path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
    556     path.addRect(4, 12, 13, 13, SkPath::kCCW_Direction);
    557 </div>
    558 
    559 <div id="testLine52">
    560     path.addRect(0, 30, 20, 20, SkPath::kCW_Direction);
    561     path.addRect(6, 20, 18, 30, SkPath::kCW_Direction);
    562     path.addRect(32, 0, 36, 41, SkPath::kCW_Direction);
    563 </div>
    564 
    565 <div id="testLine53">
    566     path.addRect(10, 30, 30, 30, SkPath::kCW_Direction);
    567     path.addRect(12, 20, 24, 30, SkPath::kCW_Direction);
    568     path.addRect(12, 32, 21, 36, SkPath::kCCW_Direction);
    569 </div>
    570 
    571 <div id="testLine54">
    572     path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
    573     path.addRect(6, 0, 18, 18, SkPath::kCW_Direction);
    574     path.addRect(8, 4, 17, 17, SkPath::kCCW_Direction);
    575 </div>
    576 
    577 <div id="testLine55">
    578     path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
    579     path.addRect(6, 6, 18, 18, SkPath::kCW_Direction);
    580     path.addRect(4, 4, 13, 13, SkPath::kCCW_Direction);
    581 </div>
    582 
    583 <div id="testLine56">
    584     path.addRect(0, 20, 20, 20, SkPath::kCW_Direction);
    585     path.addRect(18, 20, 30, 30, SkPath::kCW_Direction);
    586     path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
    587 </div>
    588 
    589 <div id="testLine57">
    590     path.addRect(20, 0, 40, 40, SkPath::kCW_Direction);
    591     path.addRect(20, 0, 30, 40, SkPath::kCW_Direction);
    592     path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
    593 </div>
    594 
    595 <div id="testLine58">
    596     path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
    597     path.addRect(0, 0, 12, 12, SkPath::kCCW_Direction);
    598     path.addRect(0, 12, 9, 9, SkPath::kCCW_Direction);
    599 </div>
    600 
    601 <div id="testLine59">
    602     path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
    603     path.addRect(6, 6, 18, 18, SkPath::kCCW_Direction);
    604     path.addRect(4, 4, 13, 13, SkPath::kCCW_Direction);
    605 </div>
    606 
    607 <div id="testLine60">
    608     path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
    609     path.addRect(6, 12, 18, 18, SkPath::kCCW_Direction);
    610     path.addRect(4, 12, 13, 13, SkPath::kCCW_Direction);
    611 </div>
    612 
    613 <div id="testLine61">
    614     path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
    615     path.addRect(12, 0, 24, 24, SkPath::kCCW_Direction);
    616     path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
    617 </div>
    618 
    619 <div id="testLine62">
    620     path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
    621     path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
    622     path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
    623     path.addRect(4, 12, 13, 13, SkPath::kCCW_Direction);
    624 </div>
    625 
    626 <div id="testLine63">
    627     path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
    628     path.addRect(0, 10, 20, 20, SkPath::kCW_Direction);
    629     path.addRect(0, 6, 12, 12, SkPath::kCCW_Direction);
    630     path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
    631 </div>
    632 
    633 <div id="testLine64">
    634     path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
    635     path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
    636     path.addRect(18, 6, 30, 30, SkPath::kCW_Direction);
    637 </div>
    638 
    639 <div id="testLine65">
    640     path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
    641     path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
    642     path.addRect(24, 0, 36, 36, SkPath::kCW_Direction);
    643     path.addRect(32, 6, 36, 41, SkPath::kCCW_Direction);
    644 </div>
    645 
    646 <div id="testLine66">
    647     path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
    648     path.addRect(0, 30, 20, 20, SkPath::kCW_Direction);
    649     path.addRect(12, 20, 24, 30, SkPath::kCW_Direction);
    650 </div>
    651 
    652 <div id="testLine67">
    653     path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
    654     path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
    655     path.addRect(24, 20, 36, 30, SkPath::kCW_Direction);
    656     path.addRect(32, 0, 36, 41, SkPath::kCW_Direction);
    657 </div>
    658 
    659 <div id="testLine68a">
    660     path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
    661     path.addRect(2, 2, 6, 6, SkPath::kCW_Direction);
    662     path.addRect(1, 2, 4, 2, SkPath::kCW_Direction);
    663 </div>
    664 
    665 <div id="testLine68b">
    666     path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
    667     path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
    668     path.addRect(1, 2, 4, 2, SkPath::kCW_Direction);
    669 </div>
    670 
    671 <div id="testLine68c">
    672     path.addRect(0, 0, 8, 8, SkPath::kCCW_Direction);
    673     path.addRect(2, 2, 6, 6, SkPath::kCW_Direction);
    674     path.addRect(1, 2, 4, 2, SkPath::kCW_Direction);
    675 </div>
    676 
    677 <div id="testLine68d">
    678     path.addRect(0, 0, 8, 8, SkPath::kCCW_Direction);
    679     path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
    680     path.addRect(1, 2, 4, 2, SkPath::kCW_Direction);
    681 </div>
    682 
    683 <div id="testLine68e">
    684     path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
    685     path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
    686     path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
    687     path.addRect(1, 2, 2, 2, SkPath::kCW_Direction);
    688 </div>
    689 
    690 <div id="testLine68f">
    691     path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
    692     path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
    693     path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
    694     path.addRect(1, 2, 2, 2, SkPath::kCW_Direction);
    695 </div>
    696 
    697 <div id="testLine69">
    698     path.addRect(0, 20, 20, 20, SkPath::kCW_Direction);
    699     path.addRect(0, 20, 12, 30, SkPath::kCW_Direction);
    700     path.addRect(12, 32, 21, 36, SkPath::kCW_Direction);
    701 </div>
    702 
    703 <div id="testLine70">
    704     path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
    705     path.addRect(0, 24, 12, 12, SkPath::kCW_Direction);
    706     path.addRect(12, 32, 21, 36, SkPath::kCCW_Direction);
    707 </div>
    708 
    709 <div id="testLine71">
    710     path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
    711     path.addRect(12, 0, 24, 24, SkPath::kCW_Direction);
    712     path.addRect(12, 32, 21, 36, SkPath::kCW_Direction);
    713 </div>
    714 
    715 <div id="testLine72">
    716     path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
    717     path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
    718     path.addRect(6, 20, 18, 30, SkPath::kCW_Direction);
    719 </div>
    720 
    721 <div id="testLine73">
    722     path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
    723     path.addRect(0, 40, 20, 20, SkPath::kCW_Direction);
    724     path.addRect(0, 20, 12, 30, SkPath::kCW_Direction);
    725     path.addRect(0, 0, 9, 9, SkPath::kCCW_Direction);
    726 </div>
    727 
    728 <div id="testLine74">
    729     path.addRect(20, 30, 40, 40, SkPath::kCW_Direction);
    730     path.addRect(24, 20, 36, 30, SkPath::kCCW_Direction);
    731     path.addRect(32, 24, 36, 41, SkPath::kCCW_Direction);
    732 </div>
    733 
    734 <div id="testLine75">
    735     path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
    736     path.addRect(10, 0, 30, 30, SkPath::kCCW_Direction);
    737     path.addRect(18, 0, 30, 30, SkPath::kCCW_Direction);
    738     path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
    739 </div>
    740 
    741 <div id="testLine76">
    742     path.addRect(36, 0, 66, 60, SkPath::kCW_Direction);
    743     path.addRect(10, 20, 40, 30, SkPath::kCW_Direction);
    744     path.addRect(24, 20, 36, 30, SkPath::kCCW_Direction);
    745     path.addRect(32, 6, 36, 41, SkPath::kCCW_Direction);
    746 </div>
    747 
    748 <div id="testLine77">
    749     path.addRect(20, 0, 40, 40, SkPath::kCW_Direction);
    750     path.addRect(24, 6, 36, 36, SkPath::kCCW_Direction);
    751     path.addRect(24, 32, 33, 36, SkPath::kCCW_Direction);
    752 </div>
    753 
    754 <div id="testLine78">
    755     path.addRect(0, 0, 30, 60, SkPath::kCW_Direction);
    756     path.addRect(10, 20, 30, 30, SkPath::kCCW_Direction);
    757     path.addRect(18, 20, 30, 30, SkPath::kCCW_Direction);
    758     path.addRect(32, 0, 36, 41, SkPath::kCCW_Direction);
    759 </div>
    760 
    761 <div id="testLine79">
    762     path.addRect(0, 36, 60, 30, SkPath::kCW_Direction);
    763     path.addRect(10, 30, 40, 30, SkPath::kCW_Direction);
    764     path.addRect(0, 20, 12, 30, SkPath::kCCW_Direction);
    765     path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
    766 </div>
    767 
    768 <div id="testLine81">
    769     path.addRect(-1, -1, 3, 3, SkPath::kCW_Direction);
    770     path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
    771     path.addRect(1, 1, 2, 2, SkPath::kCCW_Direction);
    772 </div>
    773 
    774 <div id="testDegenerate1">
    775     path.moveTo(0, 0);
    776     path.lineTo(0, 0);
    777     path.lineTo(2, 0);
    778     path.close();
    779     path.moveTo(0, 0);
    780     path.lineTo(1, 0);
    781     path.lineTo(2, 0);
    782     path.close();
    783 </div>
    784 
    785 <div id="testDegenerate2">
    786     path.moveTo(0, 0);
    787     path.lineTo(0, 0);
    788     path.lineTo(0, 0);
    789     path.close();
    790     path.moveTo(0, 0);
    791     path.lineTo(1, 0);
    792     path.lineTo(0, 1);
    793     path.close();
    794 </div>
    795 
    796 <div id="testDegenerate3">
    797     path.moveTo(0, 0);
    798     path.lineTo(2, 0);
    799     path.lineTo(1, 0);
    800     path.close();
    801     path.moveTo(0, 0);
    802     path.lineTo(0, 0);
    803     path.lineTo(3, 0);
    804     path.close();
    805 </div>
    806 
    807 <div id="testDegenerate4">
    808     path.moveTo(0, 0);
    809     path.lineTo(1, 0);
    810     path.lineTo(1, 3);
    811     path.close();
    812     path.moveTo(1, 0);
    813     path.lineTo(1, 1);
    814     path.lineTo(1, 2);
    815     path.close();
    816 </div>
    817 
    818 <div id="testNondegenerate1">
    819     path.moveTo(0, 0);
    820     path.lineTo(3, 0);
    821     path.lineTo(1, 3);
    822     path.close();
    823     path.moveTo(1, 1);
    824     path.lineTo(2, 1);
    825     path.lineTo(1, 2);
    826     path.close();
    827 </div>
    828 
    829 <div id="testNondegenerate2">
    830     path.moveTo(1, 0);
    831     path.lineTo(0, 1);
    832     path.lineTo(1, 1);
    833     path.close();
    834     path.moveTo(0, 2);
    835     path.lineTo(0, 3);
    836     path.lineTo(1, 2);
    837     path.close();
    838 </div>
    839 
    840 <div id="testNondegenerate3">
    841     path.moveTo(0, 0);
    842     path.lineTo(1, 0);
    843     path.lineTo(2, 1);
    844     path.close();
    845     path.moveTo(0, 1);
    846     path.lineTo(1, 1);
    847     path.lineTo(0, 2);
    848     path.close();
    849 </div>
    850 
    851 <div id="testNondegenerate4">
    852     path.moveTo(1, 0);
    853     path.lineTo(0, 1);
    854     path.lineTo(1, 2);
    855     path.close();
    856     path.moveTo(0, 2);
    857     path.lineTo(0, 3);
    858     path.lineTo(1, 3);
    859     path.close();
    860 </div>
    861 
    862 <div id="testQuadralateral5">
    863     path.moveTo(0, 0);
    864     path.lineTo(0, 0);
    865     path.lineTo(1, 0);
    866     path.lineTo(1, 1);
    867     path.close();
    868     path.moveTo(0, 0);
    869     path.lineTo(2, 2);
    870     path.lineTo(3, 2);
    871     path.lineTo(3, 3);
    872     path.close();
    873 </div>
    874 
    875 <div id="testQuadralateral6">
    876     path.moveTo(0, 0);
    877     path.lineTo(0, 0);
    878     path.lineTo(1, 0);
    879     path.lineTo(1, 1);
    880     path.close();
    881     path.moveTo(1, 0);
    882     path.lineTo(2, 0);
    883     path.lineTo(0, 2);
    884     path.lineTo(2, 2);
    885     path.close();
    886 </div>
    887 
    888 <div id="testFauxQuadralateral6">
    889     path.moveTo(0, 0);
    890     path.lineTo(1, 0);
    891     path.lineTo(1, 1);
    892     path.close();
    893     path.moveTo(1, 0);
    894     path.lineTo(2, 0);
    895     path.lineTo(1.333, 0.667);
    896     path.close();
    897     path.moveTo(1.333, 0.667);
    898     path.lineTo(0, 2);
    899     path.lineTo(2, 2);
    900     path.close();
    901 </div>
    902 
    903 <div id="testFauxQuadralateral6a">
    904     path.moveTo(0, 0);
    905     path.lineTo(3, 0);
    906     path.lineTo(3, 3);
    907     path.close();
    908     path.moveTo(3, 0);
    909     path.lineTo(6, 0);
    910     path.lineTo(4, 2);
    911     path.close();
    912     path.moveTo(4, 2);
    913     path.lineTo(0, 6);
    914     path.lineTo(6, 6);
    915     path.close();
    916 </div>
    917 
    918 <div id="testFauxQuadralateral6b">
    919     path.moveTo(0, 0);
    920     path.lineTo(3, 0);
    921     path.lineTo(3, 3);
    922     path.close();
    923     path.moveTo(3, 0);
    924     path.lineTo(6, 0);
    925     path.lineTo(4, 2);
    926     path.close();
    927     path.moveTo(4, 2);
    928     path.lineTo(6, 6);
    929     path.lineTo(0, 6);
    930     path.close();
    931 </div>
    932 
    933 <div id="testFauxQuadralateral6c">
    934     path.moveTo(0, 0);
    935     path.lineTo(3, 3);
    936     path.lineTo(3, 0);
    937     path.close();
    938     path.moveTo(3, 0);
    939     path.lineTo(6, 0);
    940     path.lineTo(4, 2);
    941     path.close();
    942     path.moveTo(4, 2);
    943     path.lineTo(0, 6);
    944     path.lineTo(6, 6);
    945     path.close();
    946 </div>
    947 
    948 <div id="testFauxQuadralateral6d">
    949     path.moveTo(0, 0);
    950     path.lineTo(3, 3);
    951     path.lineTo(3, 0);
    952     path.close();
    953     path.moveTo(3, 0);
    954     path.lineTo(6, 0);
    955     path.lineTo(4, 2);
    956     path.close();
    957     path.moveTo(4, 2);
    958     path.lineTo(6, 6);
    959     path.lineTo(0, 6);
    960 </div>
    961 
    962 <div id="testQuadralateral6a">
    963     path.moveTo(0, 0);
    964     path.lineTo(0, 0);
    965     path.lineTo(3, 0);
    966     path.lineTo(3, 3);
    967     path.close();
    968     path.moveTo(3, 0);
    969     path.lineTo(6, 0);
    970     path.lineTo(0, 6);
    971     path.lineTo(6, 6);
    972 </div>
    973 
    974 <div id="testQuadralateral7">
    975     path.moveTo(0, 0);
    976     path.lineTo(0, 0);
    977     path.lineTo(1, 0);
    978     path.lineTo(2, 1);
    979     path.close();
    980     path.moveTo(1, 0);
    981     path.lineTo(1, 1);
    982     path.lineTo(2, 2);
    983     path.lineTo(1, 3);
    984     path.close();
    985 </div>
    986 
    987 <div id="testQuadralateral8">
    988     path.moveTo(0, 0);
    989     path.lineTo(3, 1);
    990     path.lineTo(1, 3);
    991     path.lineTo(3, 3);
    992     path.close();
    993     path.moveTo(2, 1);
    994     path.lineTo(0, 2);
    995     path.lineTo(3, 2);
    996     path.lineTo(2, 3);
    997     path.close();
    998 </div>
    999 
   1000 <div id="testQuadralateral9">
   1001     path.moveTo(0, 0);
   1002     path.lineTo(1, 0);
   1003     path.lineTo(1, 2);
   1004     path.lineTo(2, 2);
   1005     path.close();
   1006     path.moveTo(1, 1);
   1007     path.lineTo(2, 1);
   1008     path.lineTo(1, 3);
   1009     path.lineTo(2, 3);
   1010     path.close();
   1011 </div>
   1012 
   1013 <div id="testLine1x">
   1014     path.setFillType(SkPath::kEvenOdd_FillType);
   1015     path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
   1016     path.addRect(4, 0, 13, 13, SkPath::kCW_Direction);
   1017 </div>
   1018 
   1019 <div id="testLine2x">
   1020     path.setFillType(SkPath::kEvenOdd_FillType);
   1021     path.addRect(0, 20, 20, 20, SkPath::kCW_Direction);
   1022     path.addRect(0, 20, 12, 30, SkPath::kCW_Direction);
   1023     path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
   1024 </div>
   1025 
   1026 <div id="testLine3x">
   1027     path.setFillType(SkPath::kEvenOdd_FillType);
   1028     path.addRect(10, 30, 30, 30, SkPath::kCW_Direction);
   1029     path.addRect(18, 20, 30, 30, SkPath::kCCW_Direction);
   1030     path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
   1031 </div>
   1032 
   1033 <div id="testLine4x">
   1034     path.setFillType(SkPath::kEvenOdd_FillType);
   1035     path.addRect(10, 30, 30, 30, SkPath::kCW_Direction);
   1036     path.addRect(24, 20, 36, 30, SkPath::kCCW_Direction);
   1037     path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
   1038 </div>
   1039 
   1040 <div id="testQuadratic1">
   1041     path.moveTo(0, 0);
   1042     path.quadTo(0, 0, 0, 0);
   1043     path.lineTo(1, 0);
   1044     path.close();
   1045     path.moveTo(0, 0);
   1046     path.lineTo(0, 0);
   1047     path.quadTo(0, 0, 0, 0);
   1048     path.close();
   1049 </div>
   1050 
   1051 <div id="testQuadratic2">
   1052     path.moveTo(0, 0);
   1053     path.quadTo(0, 0, 0, 0);
   1054     path.lineTo(3, 0);
   1055     path.close();
   1056     path.moveTo(0, 0);
   1057     path.lineTo(0, 0);
   1058     path.quadTo(1, 0, 0, 1);
   1059     path.close();
   1060 </div>
   1061 
   1062 <div id="testQuadratic3">
   1063     path.moveTo(0, 0);
   1064     path.quadTo(0, 0, 1, 0);
   1065     path.lineTo(0, 2);
   1066     path.close();
   1067     path.moveTo(0, 0);
   1068     path.lineTo(0, 0);
   1069     path.quadTo(1, 0, 0, 1);
   1070     path.close();
   1071 </div>
   1072 
   1073 <div id="testQuadratic4x">
   1074     path.setFillType(SkPath::kEvenOdd_FillType);
   1075     path.moveTo(0, 0);
   1076     path.quadTo(0, 0, 1, 0);
   1077     path.lineTo(0, 2);
   1078     path.close();
   1079     path.moveTo(0, 0);
   1080     path.lineTo(0, 0);
   1081     path.quadTo(1, 0, 0, 2);
   1082     path.close();
   1083 </div>
   1084 
   1085 <div id="testQuadratic5">
   1086     path.moveTo(0, 0);
   1087     path.quadTo(0, 0, 0, 0);
   1088     path.lineTo(0, 1);
   1089     path.close();
   1090     path.moveTo(0, 0);
   1091     path.lineTo(1, 0);
   1092     path.quadTo(0, 1, 0, 2);
   1093     path.close();
   1094 </div>
   1095 
   1096 <div id="testQuadratic6">
   1097     path.moveTo(0, 0);
   1098     path.quadTo(0, 0, 1, 0);
   1099     path.lineTo(2, 1);
   1100     path.close();
   1101     path.moveTo(0, 0);
   1102     path.lineTo(0, 0);
   1103     path.quadTo(2, 0, 0, 1);
   1104     path.close();
   1105 </div>
   1106 
   1107 <div id="testQuadratic7">
   1108     path.moveTo(0, 0);
   1109     path.quadTo(0, 0, 1, 0);
   1110     path.lineTo(3, 1);
   1111     path.close();
   1112     path.moveTo(0, 0);
   1113     path.lineTo(0, 0);
   1114     path.quadTo(3, 0, 1, 2);
   1115     path.close();
   1116 </div>
   1117 
   1118 <div id="testQuadratic8">
   1119     path.moveTo(0, 0);
   1120     path.quadTo(0, 0, 1, 0);
   1121     path.lineTo(0, 2);
   1122     path.close();
   1123     path.moveTo(0, 0);
   1124     path.lineTo(1, 0);
   1125     path.quadTo(0, 1, 1, 2);
   1126     path.close();
   1127 </div>
   1128 
   1129 <div id="testQuadratic9">
   1130     path.moveTo(0, 0);
   1131     path.quadTo(0, 0, 1, 0);
   1132     path.lineTo(3, 1);
   1133     path.close();
   1134     path.moveTo(0, 0);
   1135     path.lineTo(1, 0);
   1136     path.quadTo(1, 2, 3, 2);
   1137     path.close();
   1138 </div>
   1139 
   1140 <div id="testQuadratic9a">
   1141     path.moveTo(1.08000004, 0.720000029);
   1142     path.lineTo(0, 0);
   1143     path.lineTo(1, 0);
   1144     path.lineTo(3, 1);
   1145     path.lineTo(1.01568651, 0.338562161);
   1146     path.quadTo(1.03542483, 0.541699469, 1.08000004, 0.720000029);
   1147     path.close();
   1148     path.moveTo(1.08000004, 0.720000029);
   1149     path.lineTo(3, 2);
   1150     path.quadTo(1.39999998, 2, 1.08000004, 0.720000029);
   1151     path.close();
   1152 
   1153 </div>
   1154 
   1155 <div id="testQuadratic10a">
   1156 path.moveTo(15.5, 15.5);
   1157 path.lineTo(46.5, 15.5);
   1158 path.quadTo(0, 31, 0, 46.5);
   1159 path.lineTo(15.5, 15.5);
   1160 path.close();
   1161 </div>
   1162 
   1163 <div id="testQuadratic10b">
   1164 path.moveTo(5.16666698, 36.1666641);
   1165 path.lineTo(15.5, 15.5);
   1166 path.lineTo(46.5, 15.5);
   1167 path.quadTo(15.5, 25.8333321, 5.16666698, 36.1666641);
   1168 path.close();
   1169 path.moveTo(5.16666698, 36.1666641);
   1170 path.lineTo(0, 46.5);
   1171 path.quadTo(0, 41.3333359, 5.16666698, 36.1666641);
   1172 path.close();
   1173 </div>
   1174 
   1175 <div id="testQuadratic11a">
   1176 path.moveTo(0, 0);
   1177 path.lineTo(15.5, 31);
   1178 path.lineTo(0, 0);
   1179 path.close();
   1180 path.moveTo(0, 15.5);
   1181 path.lineTo(15.5, 15.5);
   1182 path.quadTo(15.5, 15.5, 46.5, 31);
   1183 path.lineTo(0, 15.5);
   1184 path.close();
   1185 </div>
   1186 
   1187 <div id="testQuadratic11b">
   1188 path.moveTo(9.30000019, 18.6000004);
   1189 path.lineTo(0, 15.5);
   1190 path.lineTo(7.75, 15.5);
   1191 path.lineTo(15.5, 15.5);
   1192 path.lineTo(46.5, 31);
   1193 path.lineTo(9.30000019, 18.6000004);
   1194 path.close();
   1195 </div>
   1196 
   1197 <div id="testQuadratic12">
   1198     path.moveTo(0, 0);
   1199     path.quadTo(0, 0, 0, 0);
   1200     path.lineTo(1, 3);
   1201     path.close();
   1202     path.moveTo(1, 0);
   1203     path.lineTo(0, 1);
   1204     path.quadTo(1, 1, 0, 3);
   1205     path.close();
   1206 </div>
   1207 
   1208 <div id="testQuadratic13a">
   1209 path.moveTo(0, 0);
   1210 path.quadTo(0, 0, 15.5, 0);
   1211 path.lineTo(15.5, 31);
   1212 path.lineTo(0, 0);
   1213 path.close();
   1214 path.moveTo(0, 0);
   1215 path.quadTo(15.5, 46.5, 46.5, 46.5);
   1216 path.lineTo(0, 0);
   1217 path.close();
   1218 </div>
   1219 
   1220 <div id="testQuadratic13b">
   1221 path.moveTo(14.8800001, 29.7600002);
   1222 path.quadTo(6.20000029, 18.6000004, 0, 0);
   1223 path.lineTo(14.8800001, 29.7600002);
   1224 path.close();
   1225 path.moveTo(15.5, 30.5437222);
   1226 path.lineTo(15.5, 31);
   1227 path.lineTo(14.8800001, 29.7600002);
   1228 path.quadTo(15.1884346, 30.156559, 15.5, 30.5437222);
   1229 path.close();
   1230 path.moveTo(15.5, 15.5);
   1231 path.lineTo(0, 0);
   1232 path.lineTo(15.5, 0);
   1233 path.lineTo(15.5, 15.5);
   1234 path.close();
   1235 path.moveTo(15.5, 30.5437222);
   1236 path.lineTo(15.5, 15.5);
   1237 path.lineTo(46.5, 46.5);
   1238 path.quadTo(28.34062, 46.5, 15.5, 30.5437222);
   1239 path.close();
   1240 </div>
   1241 
   1242 <div id="testQuadratic14">
   1243     path.moveTo(0, 0);
   1244     path.quadTo(0, 0, 1, 0);
   1245     path.lineTo(3, 2);
   1246     path.close();
   1247     path.moveTo(0, 0);
   1248     path.lineTo(1, 0);
   1249     path.quadTo(3, 2, 3, 3);
   1250     path.close();
   1251 </div>
   1252 
   1253 <div id="testQuadratic15">
   1254     path.moveTo(0, 0);
   1255     path.quadTo(0, 0, 1, 0);
   1256     path.lineTo(1, 3);
   1257     path.close();
   1258     path.moveTo(1, 0);
   1259     path.lineTo(0, 1);
   1260     path.quadTo(1, 1, 0, 3);
   1261     path.close();
   1262 </div>
   1263 
   1264 <div id="testQuadratic16a">
   1265 path.moveTo(0, 0);
   1266 path.quadTo(0, 0, 31, 0);
   1267 path.lineTo(46.5, 31);
   1268 path.lineTo(0, 0);
   1269 path.close();
   1270 path.moveTo(46.5, 15.5);
   1271 path.lineTo(0, 31);
   1272 path.quadTo(0, 31, 15.5, 31);
   1273 path.lineTo(46.5, 15.5);
   1274 path.close();
   1275 </div>
   1276 
   1277 <div id="testQuadratic16b">
   1278 path.moveTo(31, 20.6666679);
   1279 path.lineTo(0, 0);
   1280 path.lineTo(31, 0);
   1281 path.lineTo(39.8571434, 17.7142868);
   1282 path.lineTo(31, 20.6666679);
   1283 path.close();
   1284 path.moveTo(33.214283, 22.1428585);
   1285 path.lineTo(15.5, 31);
   1286 path.lineTo(0, 31);
   1287 path.lineTo(31, 20.6666679);
   1288 path.lineTo(33.214283, 22.1428585);
   1289 path.close();
   1290 path.moveTo(40.2999992, 18.6000004);
   1291 path.lineTo(46.5, 31);
   1292 path.lineTo(33.214283, 22.1428585);
   1293 path.lineTo(40.2999992, 18.6000004);
   1294 path.close();
   1295 path.moveTo(39.8571434, 17.7142868);
   1296 path.lineTo(46.5, 15.5);
   1297 path.lineTo(40.2999992, 18.6000004);
   1298 path.lineTo(39.8571434, 17.7142868);
   1299 path.close();
   1300 </div>
   1301 
   1302 <div id="testQuadratic17x">
   1303     path.setFillType(SkPath::kEvenOdd_FillType);
   1304     path.moveTo(0, 0);
   1305     path.quadTo(0, 0, 3, 1);
   1306     path.lineTo(0, 2);
   1307     path.close();
   1308     path.moveTo(0, 0);
   1309     path.lineTo(1, 0);
   1310     path.quadTo(3, 1, 0, 2);
   1311     path.close();
   1312 </div>
   1313 
   1314 <div id="testQuadratic18">
   1315     path.moveTo(0, 0);
   1316     path.quadTo(1, 0, 0, 1);
   1317     path.lineTo(0, 1);
   1318     path.close();
   1319     path.moveTo(0, 0);
   1320     path.lineTo(0, 0);
   1321     path.quadTo(1, 0, 1, 1);
   1322     path.close();
   1323 </div>
   1324 
   1325 <div id="testQuadratic19">
   1326     path.moveTo(0, 0);
   1327     path.quadTo(1, 0, 0, 1);
   1328     path.lineTo(0, 1);
   1329     path.close();
   1330     path.moveTo(0, 0);
   1331     path.lineTo(0, 0);
   1332     path.quadTo(2, 0, 0, 1);
   1333     path.close();
   1334 </div>
   1335 
   1336 <div id="testQuadratic20">
   1337     path.moveTo(0, 0);
   1338     path.quadTo(1, 0, 0, 1);
   1339     path.lineTo(0, 1);
   1340     path.close();
   1341     path.moveTo(0, 0);
   1342     path.lineTo(0, 0);
   1343     path.quadTo(1, 0, 0, 1);
   1344     path.close();
   1345 </div>
   1346 
   1347 <div id="testQuadratic21">
   1348     path.moveTo(0, 0);
   1349     path.quadTo(1, 0, 0, 1);
   1350     path.lineTo(0, 1);
   1351     path.close();
   1352     path.moveTo(0, 0);
   1353     path.lineTo(0, 0);
   1354     path.quadTo(1, 0, 0, 2);
   1355     path.close();
   1356 </div>
   1357 
   1358 <div id="testQuadratic22">
   1359     path.moveTo(0, 0);
   1360     path.quadTo(1, 0, 0, 1);
   1361     path.lineTo(0, 1);
   1362     path.close();
   1363     path.moveTo(0, 0);
   1364     path.lineTo(0, 0);
   1365     path.quadTo(0, 1, 2, 1);
   1366     path.close();
   1367 </div>
   1368 
   1369 <div id="testQuadratic23">
   1370     path.moveTo(0, 0);
   1371     path.quadTo(1, 0, 0, 1);
   1372     path.lineTo(0, 1);
   1373     path.close();
   1374     path.moveTo(0, 0);
   1375     path.lineTo(0, 0);
   1376     path.quadTo(0, 2, 1, 2);
   1377     path.close();
   1378 </div>
   1379 
   1380 <div id="testQuadratic24">
   1381     path.moveTo(0, 0);
   1382     path.quadTo(1, 0, 0, 1);
   1383     path.lineTo(0, 1);
   1384     path.close();
   1385     path.moveTo(0, 0);
   1386     path.lineTo(1, 0);
   1387     path.quadTo(2, 0, 0, 1);
   1388     path.close();
   1389 </div>
   1390 
   1391 <div id="testQuadratic25">
   1392     path.moveTo(0, 0);
   1393     path.quadTo(1, 0, 1, 1);
   1394     path.lineTo(1, 1);
   1395     path.close();
   1396     path.moveTo(0, 0);
   1397     path.lineTo(0, 0);
   1398     path.quadTo(2, 1, 0, 2);
   1399     path.close();
   1400 </div>
   1401 
   1402 <div id="testQuadratic26">
   1403     path.moveTo(0, 0);
   1404     path.quadTo(1, 0, 1, 1);
   1405     path.lineTo(0, 2);
   1406     path.close();
   1407     path.moveTo(0, 0);
   1408     path.lineTo(0, 0);
   1409     path.quadTo(1, 0, 0, 1);
   1410     path.close();
   1411 </div>
   1412 
   1413 <div id="testQuadratic27">
   1414     path.moveTo(0, 0);
   1415     path.quadTo(1, 0, 1, 1);
   1416     path.lineTo(2, 1);
   1417     path.close();
   1418     path.moveTo(0, 0);
   1419     path.lineTo(0, 0);
   1420     path.quadTo(2, 1, 0, 2);
   1421     path.close();
   1422 </div>
   1423 
   1424 <div id="testQuadratic28">
   1425     path.moveTo(0, 0);
   1426     path.quadTo(1, 0, 0, 1);
   1427     path.lineTo(0, 1);
   1428     path.close();
   1429     path.moveTo(0, 0);
   1430     path.lineTo(0, 2);
   1431     path.quadTo(1, 2, 0, 3);
   1432     path.close();
   1433 </div>
   1434 
   1435 <div id="testQuadratic29">
   1436     path.moveTo(0, 0);
   1437     path.quadTo(1, 0, 2, 1);
   1438     path.lineTo(0, 2);
   1439     path.close();
   1440     path.moveTo(0, 0);
   1441     path.lineTo(0, 0);
   1442     path.quadTo(1, 0, 0, 1);
   1443     path.close();
   1444 </div>
   1445 
   1446 <div id="testQuadratic30">
   1447     path.moveTo(0, 0);
   1448     path.quadTo(1, 0, 1, 2);
   1449     path.lineTo(1, 2);
   1450     path.close();
   1451     path.moveTo(0, 0);
   1452     path.lineTo(1, 0);
   1453     path.quadTo(0, 1, 1, 2);
   1454     path.close();
   1455 </div>
   1456 
   1457 <div id="testQuadratic31">
   1458     path.moveTo(0, 0);
   1459     path.quadTo(1, 0, 1, 2);
   1460     path.lineTo(1, 2);
   1461     path.close();
   1462     path.moveTo(0, 0);
   1463     path.lineTo(1, 0);
   1464     path.quadTo(0, 1, 1, 3);
   1465     path.close();
   1466 </div>
   1467 
   1468 <div id="testQuadratic32">
   1469     path.moveTo(0, 0);
   1470     path.quadTo(1, 0, 2, 3);
   1471     path.lineTo(2, 3);
   1472     path.close();
   1473     path.moveTo(0, 0);
   1474     path.lineTo(0, 0);
   1475     path.quadTo(3, 1, 0, 2);
   1476     path.close();
   1477 </div>
   1478 
   1479 <div id="testQuadratic33">
   1480     path.moveTo(0, 0);
   1481     path.quadTo(2, 0, 0, 1);
   1482     path.lineTo(0, 1);
   1483     path.close();
   1484     path.moveTo(0, 0);
   1485     path.lineTo(1, 1);
   1486     path.quadTo(2, 1, 2, 2);
   1487     path.close();
   1488 </div>
   1489 
   1490 <div id="testQuadratic34">
   1491     path.moveTo(0, 0);
   1492     path.quadTo(2, 0, 0, 1);
   1493     path.lineTo(0, 1);
   1494     path.close();
   1495     path.moveTo(1, 0);
   1496     path.lineTo(1, 1);
   1497     path.quadTo(2, 1, 1, 2);
   1498     path.close();
   1499 </div>
   1500 
   1501 <div id="testQuadratic35">
   1502     path.moveTo(0, 0);
   1503     path.quadTo(0, 1, 1, 1);
   1504     path.lineTo(1, 3);
   1505     path.close();
   1506     path.moveTo(2, 0);
   1507     path.lineTo(3, 0);
   1508     path.quadTo(0, 1, 1, 1);
   1509     path.close();
   1510 </div>
   1511 
   1512 <div id="testQuadratic36">
   1513     path.moveTo(0, 0);
   1514     path.quadTo(2, 1, 2, 3);
   1515     path.lineTo(2, 3);
   1516     path.close();
   1517     path.moveTo(3, 1);
   1518     path.lineTo(1, 2);
   1519     path.quadTo(3, 2, 1, 3);
   1520     path.close();
   1521 </div>
   1522 
   1523 <div id="testQuadratic37">
   1524     path.moveTo(0, 0);
   1525     path.quadTo(0, 2, 1, 2);
   1526     path.lineTo(1, 2);
   1527     path.close();
   1528     path.moveTo(0, 0);
   1529     path.lineTo(3, 1);
   1530     path.quadTo(0, 2, 1, 2);
   1531     path.close();
   1532 </div>
   1533 
   1534 <div id="testQuadratic38">
   1535     path.moveTo(1, 0);
   1536     path.quadTo(0, 1, 1, 1);
   1537     path.lineTo(1, 1);
   1538     path.close();
   1539     path.moveTo(1, 0);
   1540     path.lineTo(1, 2);
   1541     path.quadTo(2, 2, 1, 3);
   1542     path.close();
   1543 </div>
   1544 
   1545 <div id="testQuadratic39">
   1546 path.moveTo(15.5, 0);
   1547 path.quadTo(46.5, 15.5, 46.5, 31);
   1548 path.lineTo(15.5, 0);
   1549 path.close();
   1550 path.moveTo(46.5, 15.5);
   1551 path.lineTo(0, 31);
   1552 path.quadTo(0, 31, 15.5, 31);
   1553 path.lineTo(46.5, 15.5);
   1554     path.close();
   1555 </div>
   1556 
   1557 <div id="testQuadratic39a">
   1558 path.moveTo(34.875, 19.375);
   1559 path.lineTo(15.5, 0);
   1560 path.quadTo(32.9687576, 8.73437881, 40.5937271, 17.4687576);
   1561 path.lineTo(34.875, 19.375);
   1562 path.close();
   1563 path.moveTo(36.1666641, 20.6666679);
   1564 path.lineTo(15.5, 31);
   1565 path.lineTo(0, 31);
   1566 path.lineTo(34.875, 19.375);
   1567 path.lineTo(36.1666641, 20.6666679);
   1568 path.close();
   1569 path.moveTo(41.1812401, 18.15938);
   1570 path.quadTo(46.5, 24.5796909, 46.5, 31);
   1571 path.lineTo(36.1666641, 20.6666679);
   1572 path.lineTo(41.1812401, 18.15938);
   1573 path.close();
   1574 path.moveTo(40.5937271, 17.4687576);
   1575 path.lineTo(46.5, 15.5);
   1576 path.lineTo(41.1812401, 18.15938);
   1577 path.quadTo(40.8951759, 17.8140678, 40.5937271, 17.4687576);
   1578     path.close();
   1579 </div>
   1580 
   1581 <div id="testQuadratic40x">
   1582     path.setFillType(SkPath::kEvenOdd_FillType);
   1583     path.moveTo(2, 0);
   1584     path.quadTo(3, 0, 2, 2);
   1585     path.lineTo(3, 2);
   1586     path.close();
   1587     path.moveTo(3, 1);
   1588     path.lineTo(0, 2);
   1589     path.quadTo(0, 2, 1, 2);
   1590     path.close();
   1591 </div>
   1592 
   1593 <div id="testQuadratic40xa">
   1594 path.moveTo(31, 0);
   1595 path.quadTo(41.3333359, 0, 37.8888893, 13.7777777);
   1596 path.lineTo(31, 0);
   1597 path.close();
   1598 path.moveTo(37.8888893, 13.7777777);
   1599 path.quadTo(37.2993202, 16.1360455, 36.3061028, 18.8979664);
   1600 path.lineTo(0, 31);
   1601 path.lineTo(15.5, 31);
   1602 path.lineTo(35.5182915, 20.9908543);
   1603 path.quadTo(33.7454262, 25.5091457, 31, 31);
   1604 path.lineTo(46.5, 31);
   1605 path.lineTo(40.2999992, 18.6000004);
   1606 path.lineTo(46.5, 15.5);
   1607 path.lineTo(39.8571434, 17.7142868);
   1608 path.lineTo(37.8888893, 13.7777777);
   1609 path.close();
   1610 path.moveTo(36.3061028, 18.8979664);
   1611 path.quadTo(35.9396667, 19.9169388, 35.5182915, 20.9908543);
   1612 path.lineTo(40.2999992, 18.6000004);
   1613 path.lineTo(39.8571434, 17.7142868);
   1614 path.lineTo(36.3061028, 18.8979664);
   1615 </div>
   1616 
   1617 <div id="testQuadratic40xb">
   1618 path.moveTo(31, 0);
   1619 path.quadTo(46.5, 0, 31, 31);
   1620 path.lineTo(46.5, 31);
   1621 path.lineTo(31, 0);
   1622 path.close();
   1623 path.moveTo(46.5, 15.5);
   1624 path.lineTo(0, 31);
   1625 path.quadTo(0, 31, 15.5, 31);
   1626 path.lineTo(46.5, 15.5);
   1627 path.close();
   1628 </div>
   1629 
   1630 <div id="testQuadratic41o">
   1631 path.moveTo(419.33905, 236.377808);
   1632 path.quadTo(398.847778, 242.58728, 384.255524, 242.58728);
   1633 path.quadTo(359.417633, 242.58728, 343.738708, 226.080429);
   1634 path.quadTo(328.059784, 209.573578, 328.059784, 183.286819);
   1635 path.quadTo(328.059784, 157.724487, 341.875854, 141.372879);
   1636 path.quadTo(355.691956, 125.021263, 377.218109, 125.021263);
   1637 path.quadTo(397.605896, 125.021263, 408.731201, 139.51004);
   1638 path.quadTo(419.856506, 153.99881, 419.856506, 180.699539);
   1639 path.lineTo(419.752991, 187.012497);
   1640 path.lineTo(348.861511, 187.012497);
   1641 path.quadTo(353.311646, 227.063599, 388.084686, 227.063599);
   1642 path.quadTo(400.814117, 227.063599, 419.33905, 220.233185);
   1643 path.lineTo(419.33905, 236.377808);
   1644 path.close();
   1645 path.moveTo(349.792938, 171.695801);
   1646 path.lineTo(399.365234, 171.695801);
   1647 path.quadTo(399.365234, 140.337967, 375.976227, 140.337967);
   1648 path.quadTo(352.483704, 140.337967, 349.792938, 171.695801);
   1649 path.close();
   1650 path.moveTo(378.682587, 277.360321);
   1651 path.lineTo(381.062897, 259.66333);
   1652 path.quadTo(398.759888, 268.046112, 415.939423, 268.046112);
   1653 path.quadTo(450.402008, 268.046112, 450.402008, 231.513718);
   1654 path.lineTo(450.402008, 213.816727);
   1655 path.quadTo(439.12146, 237.41272, 413.352142, 237.41272);
   1656 path.quadTo(393.171356, 237.41272, 381.269867, 222.716965);
   1657 path.quadTo(369.368378, 208.02121, 369.368378, 183.079834);
   1658 path.quadTo(369.368378, 157.414017, 382.92572, 141.269379);
   1659 path.quadTo(396.483093, 125.124756, 418.009247, 125.124756);
   1660 path.quadTo(436.844666, 125.124756, 450.402008, 140.441467);
   1661 path.lineTo(450.402008, 127.608543);
   1662 path.lineTo(470.89325, 127.608543);
   1663 path.lineTo(470.89325, 209.366608);
   1664 path.quadTo(470.89325, 235.756866, 468.150757, 248.43454);
   1665 path.quadTo(465.408234, 261.112213, 457.853363, 269.184509);
   1666 path.quadTo(444.502991, 283.362823, 416.353394, 283.362823);
   1667 path.quadTo(396.690063, 283.362823, 378.682587, 277.360321);
   1668 path.close();
   1669 path.moveTo(450.402008, 201.087311);
   1670 path.lineTo(450.402008, 154.412781);
   1671 path.quadTo(436.948151, 140.441467, 421.113983, 140.441467);
   1672 path.quadTo(407.039185, 140.441467, 399.070374, 151.722);
   1673 path.quadTo(391.101532, 163.002533, 391.101532, 182.665863);
   1674 path.quadTo(391.101532, 219.612228, 417.07782, 219.612228);
   1675 path.quadTo(434.774841, 219.612228, 450.402008, 201.087311);
   1676 path.close();
   1677 path.moveTo(482.9328, 236.377808);
   1678 path.quadTo(462.441528, 242.58728, 447.849274, 242.58728);
   1679 path.quadTo(423.011383, 242.58728, 407.332458, 226.080429);
   1680 path.quadTo(391.653534, 209.573578, 391.653534, 183.286819);
   1681 path.quadTo(391.653534, 157.724487, 405.469604, 141.372879);
   1682 path.quadTo(419.285706, 125.021263, 440.811859, 125.021263);
   1683 path.quadTo(461.199646, 125.021263, 472.324951, 139.51004);
   1684 path.quadTo(483.450256, 153.99881, 483.450256, 180.699539);
   1685 path.lineTo(483.346741, 187.012497);
   1686 path.lineTo(412.455261, 187.012497);
   1687 path.quadTo(416.905396, 227.063599, 451.678436, 227.063599);
   1688 path.quadTo(464.407867, 227.063599, 482.9328, 220.233185);
   1689 path.lineTo(482.9328, 236.377808);
   1690 path.close();
   1691 path.moveTo(413.386688, 171.695801);
   1692 path.lineTo(462.958984, 171.695801);
   1693 path.quadTo(462.958984, 140.337967, 439.569977, 140.337967);
   1694 path.quadTo(416.077454, 140.337967, 413.386688, 171.695801);
   1695 path.close();
   1696 </div>
   1697 
   1698 <div id="testQuadratic41s">
   1699 path.moveTo(341.875854, 141.372879);
   1700 path.quadTo(355.691956,125.021263, 377.218109,125.021263);
   1701 path.quadTo(388.787811,125.021263, 397.374664,129.687164);
   1702 path.quadTo(406.565979,125.124756, 418.009247,125.124756);
   1703 path.quadTo(423.583374,125.124756, 428.695251,126.466187);
   1704 path.quadTo(434.412903,125.021263, 440.811859,125.021263);
   1705 path.quadTo(449.427277,125.021263, 456.388672,127.608543);
   1706 path.lineTo(470.89325,127.608543);
   1707 path.lineTo(470.89325,137.749908);
   1708 path.quadTo(471.627319,138.601486, 472.324951,139.51004);
   1709 path.quadTo(483.450256,153.99881, 483.450256,180.699539);
   1710 path.lineTo(483.346741,187.012497);
   1711 path.lineTo(470.89325,187.012497);
   1712 path.lineTo(470.89325,209.366608);
   1713 path.quadTo(470.89325,217.414856, 470.638184,224.187729);
   1714 path.quadTo(476.428223,222.631516, 482.9328,220.233185);
   1715 path.lineTo(482.9328,236.377808);
   1716 path.quadTo(475.87207,238.517426, 469.511749,239.919785);
   1717 path.quadTo(468.946777,244.754791, 468.150757,248.43454);
   1718 path.quadTo(465.408234,261.112213, 457.853363,269.184509);
   1719 path.quadTo(444.502991,283.362823, 416.353394,283.362823);
   1720 path.quadTo(396.690063,283.362823, 378.682587,277.360321);
   1721 path.lineTo(381.062897,259.66333);
   1722 path.quadTo(398.759888,268.046112, 415.939423,268.046112);
   1723 path.quadTo(444.719147,268.046112, 449.464905,242.568665);
   1724 path.quadTo(448.648254,242.58728, 447.849274,242.58728);
   1725 path.quadTo(433.084625,242.58728, 421.556366,236.754425);
   1726 path.quadTo(418.89566,237.203537, 416.046783,237.346252);
   1727 path.quadTo(397.661652,242.58728, 384.255524,242.58728);
   1728 path.quadTo(359.417633,242.58728, 343.738708,226.080429);
   1729 path.quadTo(328.059784,209.573578, 328.059784,183.286819);
   1730 path.quadTo(328.059784,157.724487, 341.875854,141.372879);
   1731 path.close();
   1732 path.moveTo(442.014923, 226.179474);
   1733 path.quadTo(445.951935,226.953491, 450.402008,227.049881);
   1734 path.lineTo(450.402008,213.816727);
   1735 path.quadTo(446.904755,221.132065, 442.014923,226.179474);
   1736 path.close();
   1737 path.moveTo(395.347717, 206.501785);
   1738 path.quadTo(392.200165,197.593536, 391.734406,187.012497);
   1739 path.lineTo(391.197113,187.012497);
   1740 path.quadTo(391.738647,198.938644, 395.347717,206.501785);
   1741 path.close();
   1742 path.moveTo(391.808533, 171.695801);
   1743 path.lineTo(392.428436,171.695801);
   1744 path.quadTo(393.693451,162.656265, 397.02359,154.9935);
   1745 path.quadTo(397.023804,154.992996, 397.024048,154.992493);
   1746 path.quadTo(393.175995,143.845093, 383.003235,141.177292);
   1747 path.quadTo(382.964447,141.223267, 382.92572,141.269379);
   1748 </div>
   1749 
   1750 <div id="testQuadratic42o">
   1751 path.moveTo(421.962158, 236.285355);
   1752 path.quadTo(400.947845, 242.65332, 385.983124, 242.65332);
   1753 path.quadTo(360.511261, 242.65332, 344.432129, 225.725143);
   1754 path.quadTo(328.352997, 208.796951, 328.352997, 181.839218);
   1755 path.quadTo(328.352997, 155.62442, 342.521729, 138.855438);
   1756 path.quadTo(356.69046, 122.086449, 378.766083, 122.086449);
   1757 path.quadTo(399.674255, 122.086449, 411.083527, 136.945038);
   1758 path.quadTo(422.492798, 151.803635, 422.492798, 179.185898);
   1759 path.lineTo(422.386688, 185.660004);
   1760 path.lineTo(349.685699, 185.660004);
   1761 path.quadTo(354.24942, 226.733398, 389.910034, 226.733398);
   1762 path.quadTo(402.964386, 226.733398, 421.962158, 219.728638);
   1763 path.lineTo(421.962158, 236.285355);
   1764 path.close();
   1765 path.moveTo(350.6409, 169.952347);
   1766 path.lineTo(401.478516, 169.952347);
   1767 path.quadTo(401.478516, 137.794098, 377.492493, 137.794098);
   1768 path.quadTo(353.40036, 137.794098, 350.6409, 169.952347);
   1769 path.close();
   1770 path.moveTo(379.213562, 278.313934);
   1771 path.lineTo(381.654602, 260.165222);
   1772 path.quadTo(399.803314, 268.761993, 417.421356, 268.761993);
   1773 path.quadTo(452.763611, 268.761993, 452.763611, 231.297104);
   1774 path.lineTo(452.763611, 213.148392);
   1775 path.quadTo(441.195129, 237.34668, 414.768036, 237.34668);
   1776 path.quadTo(394.072144, 237.34668, 381.866882, 222.275818);
   1777 path.quadTo(369.661591, 207.204956, 369.661591, 181.626953);
   1778 path.quadTo(369.661591, 155.306015, 383.565002, 138.749298);
   1779 path.quadTo(397.468384, 122.192581, 419.544037, 122.192581);
   1780 path.quadTo(438.860199, 122.192581, 452.763611, 137.900238);
   1781 path.lineTo(452.763611, 124.739769);
   1782 path.lineTo(473.777893, 124.739769);
   1783 path.lineTo(473.777893, 208.584686);
   1784 path.quadTo(473.777893, 235.64856, 470.965363, 248.649826);
   1785 path.quadTo(468.152863, 261.651093, 460.405151, 269.929443);
   1786 path.quadTo(446.71402, 284.469666, 417.845886, 284.469666);
   1787 path.quadTo(397.680664, 284.469666, 379.213562, 278.313934);
   1788 path.close();
   1789 path.moveTo(452.763611, 200.094055);
   1790 path.lineTo(452.763611, 152.228165);
   1791 path.quadTo(438.966339, 137.900238, 422.727997, 137.900238);
   1792 path.quadTo(408.293945, 137.900238, 400.121704, 149.468719);
   1793 path.quadTo(391.949493, 161.037186, 391.949493, 181.202423);
   1794 path.quadTo(391.949493, 219.091827, 418.588837, 219.091827);
   1795 path.quadTo(436.737549, 219.091827, 452.763611, 200.094055);
   1796 path.close();
   1797 path.moveTo(485.555908, 236.285355);
   1798 path.quadTo(464.541595, 242.65332, 449.576874, 242.65332);
   1799 path.quadTo(424.105011, 242.65332, 408.025879, 225.725143);
   1800 path.quadTo(391.946747, 208.796951, 391.946747, 181.839218);
   1801 path.quadTo(391.946747, 155.62442, 406.115479, 138.855438);
   1802 path.quadTo(420.28421, 122.086449, 442.359833, 122.086449);
   1803 path.quadTo(463.268005, 122.086449, 474.677277, 136.945038);
   1804 path.quadTo(486.086548, 151.803635, 486.086548, 179.185898);
   1805 path.lineTo(485.980438, 185.660004);
   1806 path.lineTo(413.279449, 185.660004);
   1807 path.quadTo(417.84317, 226.733398, 453.503784, 226.733398);
   1808 path.quadTo(466.558136, 226.733398, 485.555908, 219.728638);
   1809 path.lineTo(485.555908, 236.285355);
   1810 path.close();
   1811 path.moveTo(414.23465, 169.952347);
   1812 path.lineTo(465.072266, 169.952347);
   1813 path.quadTo(465.072266, 137.794098, 441.086243, 137.794098);
   1814 path.quadTo(416.99411, 137.794098, 414.23465, 169.952347);
   1815 path.close();
   1816 </div>
   1817 
   1818 <div id="testQuadratic42s">
   1819 path.moveTo(342.521729, 138.855438);
   1820 path.quadTo(356.69046,122.086449, 378.766083,122.086449);
   1821 path.quadTo(390.293488,122.086449, 398.933502,126.603004);
   1822 path.quadTo(408.150299,122.192581, 419.544037,122.192581);
   1823 path.quadTo(425.108429,122.192581, 430.223633,123.496056);
   1824 path.quadTo(435.959412,122.086449, 442.359833,122.086449);
   1825 path.quadTo(451.19516,122.086449, 458.334229,124.739769);
   1826 path.lineTo(473.777893,124.739769);
   1827 path.lineTo(473.777893,135.814713);
   1828 path.quadTo(474.234741,136.368698, 474.677277,136.945038);
   1829 path.quadTo(486.086548,151.803635, 486.086548,179.185898);
   1830 path.lineTo(485.980438,185.660004);
   1831 path.lineTo(473.777893,185.660004);
   1832 path.lineTo(473.777893,208.584686);
   1833 path.quadTo(473.777893,216.745773, 473.522156,223.628113);
   1834 path.quadTo(479.207153,222.069519, 485.555908,219.728638);
   1835 path.lineTo(485.555908,236.285355);
   1836 path.quadTo(478.638306,238.381592, 472.376221,239.787796);
   1837 path.quadTo(471.792389,244.826782, 470.965363,248.649826);
   1838 path.quadTo(468.152863,261.651093, 460.405151,269.929443);
   1839 path.quadTo(446.71402,284.469666, 417.845886,284.469666);
   1840 path.quadTo(397.680664,284.469666, 379.213562,278.313934);
   1841 path.lineTo(381.654602,260.165222);
   1842 path.quadTo(399.803314,268.761993, 417.421356,268.761993);
   1843 path.quadTo(446.944275,268.761993, 451.80542,242.619034);
   1844 path.quadTo(450.674866,242.65332, 449.576874,242.65332);
   1845 path.quadTo(434.524628,242.65332, 422.75238,236.741913);
   1846 path.quadTo(420.864227,237.041901, 418.884674,237.193085);
   1847 path.quadTo(399.840271,242.65332, 385.983124,242.65332);
   1848 path.quadTo(360.511261,242.65332, 344.432129,225.725143);
   1849 path.quadTo(328.352997,208.796951, 328.352997,181.839218);
   1850 path.quadTo(328.352997,155.62442, 342.521729,138.855438);
   1851 path.close();
   1852 path.moveTo(383.823944, 138.443222);
   1853 path.quadTo(380.900299,137.794098, 377.492493,137.794098);
   1854 path.quadTo(353.40036,137.794098, 350.6409,169.952347);
   1855 path.lineTo(370.408203,169.952347);
   1856 path.quadTo(372.883484,151.469254, 383.565002,138.749298);
   1857 path.quadTo(383.694122,138.595551, 383.823944,138.443222);
   1858 path.close();
   1859 path.moveTo(369.740021, 185.660004);
   1860 path.lineTo(349.685699,185.660004);
   1861 path.quadTo(353.983734,224.342361, 385.863525,226.594208);
   1862 path.quadTo(383.762756,224.616837, 381.866882,222.275818);
   1863 path.quadTo(370.639954,208.41301, 369.740021,185.660004);
   1864 path.close();
   1865 path.moveTo(413.279449, 185.660004);
   1866 path.quadTo(415.737305,207.780716, 427.214905,217.987976);
   1867 path.quadTo(440.600586,214.512451, 452.763611,200.094055);
   1868 path.lineTo(452.763611,185.660004);
   1869 </div>
   1870 
   1871 <div id="testQuadratic43o">
   1872 path.moveTo(288.755981, 240);
   1873 path.lineTo(288.755981, 102.232819);
   1874 path.lineTo(315.843994, 102.232819);
   1875 path.lineTo(354.009216, 208.816208);
   1876 path.lineTo(393.291473, 102.232819);
   1877 path.lineTo(417.493835, 102.232819);
   1878 path.lineTo(417.493835, 240);
   1879 path.lineTo(399.248962, 240);
   1880 path.lineTo(399.248962, 127.92453);
   1881 path.lineTo(361.269928, 230.784485);
   1882 path.lineTo(342.373474, 230.784485);
   1883 path.lineTo(305.511444, 127.645271);
   1884 path.lineTo(305.511444, 240);
   1885 path.lineTo(288.755981, 240);
   1886 path.close();
   1887 path.moveTo(397.864014, 236.741989);
   1888 path.quadTo(379.433014, 242.327148, 366.307892, 242.327148);
   1889 path.quadTo(343.967255, 242.327148, 329.864746, 227.479935);
   1890 path.quadTo(315.762238, 212.632736, 315.762238, 188.988907);
   1891 path.quadTo(315.762238, 165.996674, 328.189209, 151.289093);
   1892 path.quadTo(340.61618, 136.581512, 359.978058, 136.581512);
   1893 path.quadTo(378.315979, 136.581512, 388.322723, 149.613556);
   1894 path.quadTo(398.329468, 162.645584, 398.329468, 186.661758);
   1895 path.lineTo(398.236359, 192.339996);
   1896 path.lineTo(334.472504, 192.339996);
   1897 path.quadTo(338.475189, 228.364258, 369.752075, 228.364258);
   1898 path.quadTo(381.20163, 228.364258, 397.864014, 222.220581);
   1899 path.lineTo(397.864014, 236.741989);
   1900 path.close();
   1901 path.moveTo(335.310272, 178.563278);
   1902 path.lineTo(379.898438, 178.563278);
   1903 path.quadTo(379.898438, 150.358246, 358.861023, 150.358246);
   1904 path.quadTo(337.730499, 150.358246, 335.310272, 178.563278);
   1905 path.close();
   1906 path.moveTo(346.052765, 240);
   1907 path.lineTo(346.052765, 138.908661);
   1908 path.lineTo(364.390686, 138.908661);
   1909 path.lineTo(364.390686, 157.898193);
   1910 path.quadTo(375.281769, 136.674606, 396.039917, 136.674606);
   1911 path.quadTo(398.832489, 136.674606, 401.904327, 137.140045);
   1912 path.lineTo(401.904327, 154.267853);
   1913 path.quadTo(397.156952, 152.685394, 393.526611, 152.685394);
   1914 path.quadTo(376.119537, 152.685394, 364.390686, 173.350464);
   1915 path.lineTo(364.390686, 240);
   1916 path.lineTo(346.052765, 240);
   1917 path.close();
   1918 path.moveTo(362.792297, 273.604034);
   1919 path.lineTo(364.933289, 257.68634);
   1920 path.quadTo(380.850983, 265.226288, 396.303253, 265.226288);
   1921 path.quadTo(427.300842, 265.226288, 427.300842, 232.366959);
   1922 path.lineTo(427.300842, 216.449265);
   1923 path.quadTo(417.15448, 237.672852, 393.976105, 237.672852);
   1924 path.quadTo(375.824341, 237.672852, 365.119446, 224.454651);
   1925 path.quadTo(354.414581, 211.23645, 354.414581, 188.802734);
   1926 path.quadTo(354.414581, 165.717422, 366.608826, 151.196014);
   1927 path.quadTo(378.803101, 136.674606, 398.164948, 136.674606);
   1928 path.quadTo(415.106598, 136.674606, 427.300842, 150.451324);
   1929 path.lineTo(427.300842, 138.908661);
   1930 path.lineTo(445.731873, 138.908661);
   1931 path.lineTo(445.731873, 212.446564);
   1932 path.quadTo(445.731873, 236.183472, 443.265106, 247.586502);
   1933 path.quadTo(440.798309, 258.989532, 434.003052, 266.250244);
   1934 path.quadTo(421.994965, 279.002991, 396.675598, 279.002991);
   1935 path.quadTo(378.989258, 279.002991, 362.792297, 273.604034);
   1936 path.close();
   1937 path.moveTo(427.300842, 204.999695);
   1938 path.lineTo(427.300842, 163.017929);
   1939 path.quadTo(415.199677, 150.451324, 400.95755, 150.451324);
   1940 path.quadTo(388.297852, 150.451324, 381.130249, 160.597687);
   1941 path.quadTo(373.962616, 170.744064, 373.962616, 188.430389);
   1942 path.quadTo(373.962616, 221.662079, 397.327179, 221.662079);
   1943 path.quadTo(413.244873, 221.662079, 427.300842, 204.999695);
   1944 path.close();
   1945 path.moveTo(461.457764, 236.741989);
   1946 path.quadTo(443.026764, 242.327148, 429.901642, 242.327148);
   1947 path.quadTo(407.561005, 242.327148, 393.458496, 227.479935);
   1948 path.quadTo(379.355988, 212.632736, 379.355988, 188.988907);
   1949 path.quadTo(379.355988, 165.996674, 391.782959, 151.289093);
   1950 path.quadTo(404.20993, 136.581512, 423.571808, 136.581512);
   1951 path.quadTo(441.909729, 136.581512, 451.916473, 149.613556);
   1952 path.quadTo(461.923218, 162.645584, 461.923218, 186.661758);
   1953 path.lineTo(461.830109, 192.339996);
   1954 path.lineTo(398.066254, 192.339996);
   1955 path.quadTo(402.068939, 228.364258, 433.345825, 228.364258);
   1956 path.quadTo(444.79538, 228.364258, 461.457764, 222.220581);
   1957 path.lineTo(461.457764, 236.741989);
   1958 path.close();
   1959 path.moveTo(398.904022, 178.563278);
   1960 path.lineTo(443.492188, 178.563278);
   1961 path.quadTo(443.492188, 150.358246, 422.454773, 150.358246);
   1962 path.quadTo(401.324249, 150.358246, 398.904022, 178.563278);
   1963 path.close();
   1964 </div>
   1965 
   1966 <div id="testQuadratic43s">
   1967 path.moveTo(288.755981, 240);
   1968 path.lineTo(288.755981,102.232819);
   1969 path.lineTo(315.843994,102.232819);
   1970 path.lineTo(331.979736,147.294876);
   1971 path.quadTo(343.453125,136.581512, 359.978058,136.581512);
   1972 path.quadTo(370.869446,136.581512, 378.822021,141.178574);
   1973 path.quadTo(378.893585,141.140915, 378.965302,141.103577);
   1974 path.lineTo(393.291473,102.232819);
   1975 path.lineTo(417.493835,102.232819);
   1976 path.lineTo(417.493835,136.965759);
   1977 path.quadTo(420.44223,136.581512, 423.571808,136.581512);
   1978 path.quadTo(431.320984,136.581512, 437.582458,138.908661);
   1979 path.lineTo(445.731873,138.908661);
   1980 path.lineTo(445.731873,143.392502);
   1981 path.quadTo(449.143951,146.002823, 451.916473,149.613556);
   1982 path.quadTo(461.923218,162.645584, 461.923218,186.661758);
   1983 path.lineTo(461.830109,192.339996);
   1984 path.lineTo(445.731873,192.339996);
   1985 path.lineTo(445.731873,212.446564);
   1986 path.quadTo(445.731873,220.39856, 445.455017,226.966339);
   1987 path.quadTo(452.7435,225.43367, 461.457764,222.220581);
   1988 path.lineTo(461.457764,236.741989);
   1989 path.quadTo(452.250824,239.531982, 444.367889,240.928268);
   1990 path.quadTo(443.897583,244.662796, 443.265106,247.586502);
   1991 path.quadTo(440.798309,258.989532, 434.003052,266.250244);
   1992 path.quadTo(421.994965,279.002991, 396.675598,279.002991);
   1993 path.quadTo(378.989258,279.002991, 362.792297,273.604034);
   1994 path.lineTo(364.933289,257.68634);
   1995 path.quadTo(380.850983,265.226288, 396.303253,265.226288);
   1996 path.quadTo(422.230743,265.226288, 426.471558,242.237076);
   1997 path.quadTo(419.570892,241.869324, 413.503387,240);
   1998 path.lineTo(399.248962,240);
   1999 path.lineTo(399.248962,237.37915);
   2000 path.quadTo(397.047638,237.633072, 394.711517,237.667465);
   2001 path.quadTo(378.296356,242.327148, 366.307892,242.327148);
   2002 path.quadTo(357.463165,242.327148, 349.909637,240);
   2003 path.lineTo(346.052765,240);
   2004 path.lineTo(346.052765,238.625916);
   2005 path.quadTo(336.926056,234.914124, 329.864746,227.479935);
   2006 path.quadTo(315.762238,212.632736, 315.762238,188.988907);
   2007 path.quadTo(315.762238,176.540054, 319.405273,166.519882);
   2008 path.lineTo(305.511444,127.645271);
   2009 path.lineTo(305.511444,240);
   2010 path.lineTo(288.755981,240);
   2011 path.close();
   2012 path.moveTo(375.464813, 192.339996);
   2013 path.lineTo(374.267029,195.583939);
   2014 path.quadTo(375.987579,214.575378, 387.432068,219.736267);
   2015 path.quadTo(380.122528,208.101486, 379.428741,192.339996);
   2016 path.lineTo(375.464813,192.339996);
   2017 path.close();
   2018 path.moveTo(427.300842, 178.563278);
   2019 path.lineTo(427.300842,163.017929);
   2020 path.quadTo(422.561523,158.096329, 417.493835,155.102234);
   2021 path.lineTo(417.493835,178.563278);
   2022 path.lineTo(427.300842,178.563278);
   2023 path.close();
   2024 path.moveTo(427.300842, 192.339996);
   2025 path.lineTo(417.493835,192.339996);
   2026 path.lineTo(417.493835,214.429169);
   2027 path.quadTo(422.505676,210.684036, 427.300842,204.999695);
   2028 path.lineTo(427.300842,192.339996);
   2029 path.close();
   2030 path.moveTo(420.700134, 226.556015);
   2031 path.quadTo(423.794342,227.54834, 427.300842,227.996094);
   2032 path.lineTo(427.300842,216.449265);
   2033 path.quadTo(424.497772,222.312531, 420.700134,226.556015);
   2034 path.close();
   2035 path.moveTo(368.744965, 228.354782);
   2036 path.quadTo(366.836426,226.574738, 365.119446,224.454651);
   2037 path.quadTo(364.748657,223.996796, 364.390686,223.527878);
   2038 path.lineTo(364.390686,228.077774);
   2039 path.quadTo(366.495239,228.312164, 368.744965,228.354782);
   2040 path.close();
   2041 path.moveTo(399.248962, 199.701065);
   2042 path.lineTo(399.248962,192.339996);
   2043 path.lineTo(398.236359,192.339996);
   2044 path.lineTo(398.066254,192.339996);
   2045 path.quadTo(398.498535,196.230621, 399.248962,199.701065);
   2046 path.close();
   2047 path.moveTo(399.248962, 178.563278);
   2048 path.lineTo(399.248962,175.376892);
   2049 path.quadTo(399.04483,176.922348, 398.904022,178.563278);
   2050 path.lineTo(399.248962,178.563278);
   2051 path.close();
   2052 path.moveTo(399.248962, 136.688828);
   2053 path.lineTo(399.248962,127.92453);
   2054 path.lineTo(396.018158,136.674606);
   2055 path.quadTo(396.029053,136.674606, 396.039917,136.674606);
   2056 path.quadTo(396.513672,136.674606, 396.995453,136.688004);
   2057 path.quadTo(397.576904,136.674606, 398.164948,136.674606);
   2058 path.quadTo(398.709412,136.674606, 399.248962,136.688828);
   2059 path.close();
   2060 path.moveTo(346.052765, 178.563278);
   2061 path.lineTo(346.052765,154.02713);
   2062 path.quadTo(340.97113,157.621338, 338.22525,164.736588);
   2063 path.lineTo(343.1763,178.563278);
   2064 path.lineTo(346.052765,178.563278);
   2065 path.close();
   2066 path.moveTo(364.390686, 150.922379);
   2067 path.lineTo(364.390686,154.048065);
   2068 path.quadTo(365.340851,152.726639, 366.38147,151.468765);
   2069 path.quadTo(365.420258,151.14975, 364.390686,150.922379);
   2070 path.close();
   2071 path.moveTo(367.863586, 152.032623);
   2072 path.quadTo(367.144043,151.721848, 366.38147,151.468765);
   2073 </div>
   2074 
   2075 <div id="testQuadratic44o">
   2076 path.moveTo(354.009216, 208.816208);
   2077 path.lineTo(393.291473, 102.232819);
   2078 path.lineTo(399.248962, 127.92453);
   2079 path.lineTo(361.269928, 230.784485);
   2080 path.lineTo(354.009216, 208.816208);
   2081 path.close();
   2082 path.moveTo(328.189209, 151.289093);
   2083 path.quadTo(340.61618, 136.581512, 359.978058, 136.581512);
   2084 path.quadTo(378.315979, 136.581512, 388.322723, 149.613556);
   2085 path.lineTo(328.189209, 151.289093);
   2086 path.close();
   2087 path.moveTo(346.052765, 138.908661);
   2088 path.lineTo(364.390686, 138.908661);
   2089 path.lineTo(364.390686, 157.898193);
   2090 path.quadTo(375.281769, 136.674606, 396.039917, 136.674606);
   2091 path.lineTo(346.052765, 138.908661);
   2092 path.close();
   2093 </div>
   2094 
   2095 <div id="testQuadratic44s">
   2096 path.moveTo(380.33902, 137.376312);
   2097 path.lineTo(393.291473,102.232819);
   2098 path.lineTo(399.248962,127.92453);
   2099 path.lineTo(396.018158,136.674606);
   2100 path.quadTo(396.029053,136.674606, 396.039917,136.674606);
   2101 path.lineTo(396.017792,136.675598);
   2102 path.lineTo(361.269928,230.784485);
   2103 path.lineTo(354.009216,208.816208);
   2104 path.lineTo(375.699249,149.965286);
   2105 path.lineTo(369.22699,150.14563);
   2106 path.quadTo(373.524384,144.511566, 378.917297,141.233871);
   2107 path.lineTo(380.33902,137.376312);
   2108 path.close();
   2109 path.moveTo(380.33902, 137.376312);
   2110 path.lineTo(378.917297,141.233856);
   2111 path.quadTo(375.048248,138.978912, 370.480499,137.816925);
   2112 path.lineTo(380.33902,137.376312);
   2113 path.close();
   2114 path.moveTo(392.55661, 136.830276);
   2115 path.lineTo(380.33902,137.376312);
   2116 </div>
   2117 
   2118 <div id="testQuadratic45o">
   2119 path.moveTo(315.843994, 102.232819);
   2120 path.lineTo(354.009216, 208.816208);
   2121 path.lineTo(393.291473, 102.232819);
   2122 path.lineTo(399.248962, 127.92453);
   2123 path.lineTo(361.269928, 230.784485);
   2124 path.lineTo(342.373474, 230.784485);
   2125 path.lineTo(305.511444, 127.645271);
   2126 path.lineTo(315.843994, 102.232819);
   2127 path.close();
   2128 path.moveTo(366.307892, 242.327148);
   2129 path.quadTo(343.967255, 242.327148, 329.864746, 227.479935);
   2130 path.quadTo(315.762238, 212.632736, 315.762238, 188.988907);
   2131 path.quadTo(315.762238, 165.996674, 328.189209, 151.289093);
   2132 path.quadTo(340.61618, 136.581512, 359.978058, 136.581512);
   2133 path.quadTo(378.315979, 136.581512, 388.322723, 149.613556);
   2134 path.quadTo(398.329468, 162.645584, 398.329468, 186.661758);
   2135 path.lineTo(398.236359, 192.339996);
   2136 path.lineTo(334.472504, 192.339996);
   2137 path.quadTo(338.475189, 228.364258, 369.752075, 228.364258);
   2138 path.quadTo(381.20163, 228.364258, 397.864014, 222.220581);
   2139 path.lineTo(366.307892, 242.327148);
   2140 path.close();
   2141 path.moveTo(335.310272, 178.563278);
   2142 path.lineTo(379.898438, 178.563278);
   2143 path.quadTo(379.898438, 150.358246, 358.861023, 150.358246);
   2144 path.quadTo(337.730499, 150.358246, 335.310272, 178.563278);
   2145 path.close();
   2146 path.moveTo(346.052765, 240);
   2147 path.lineTo(346.052765, 138.908661);
   2148 path.lineTo(364.390686, 138.908661);
   2149 path.lineTo(364.390686, 157.898193);
   2150 path.quadTo(375.281769, 136.674606, 396.039917, 136.674606);
   2151 path.lineTo(401.904327, 154.267853);
   2152 path.quadTo(397.156952, 152.685394, 393.526611, 152.685394);
   2153 path.quadTo(376.119537, 152.685394, 364.390686, 173.350464);
   2154 path.lineTo(364.390686, 240);
   2155 path.lineTo(346.052765, 240);
   2156 path.close();
   2157 path.moveTo(396.303253, 265.226288);
   2158 path.quadTo(427.300842, 265.226288, 427.300842, 232.366959);
   2159 path.lineTo(427.300842, 216.449265);
   2160 path.quadTo(417.15448, 237.672852, 393.976105, 237.672852);
   2161 path.quadTo(375.824341, 237.672852, 365.119446, 224.454651);
   2162 path.quadTo(354.414581, 211.23645, 354.414581, 188.802734);
   2163 path.quadTo(354.414581, 165.717422, 366.608826, 151.196014);
   2164 path.quadTo(378.803101, 136.674606, 398.164948, 136.674606);
   2165 path.lineTo(396.303253, 265.226288);
   2166 path.close();
   2167 path.moveTo(400.95755, 150.451324);
   2168 path.quadTo(388.297852, 150.451324, 381.130249, 160.597687);
   2169 path.quadTo(373.962616, 170.744064, 373.962616, 188.430389);
   2170 path.quadTo(373.962616, 221.662079, 397.327179, 221.662079);
   2171 path.lineTo(400.95755, 150.451324);
   2172 path.close();
   2173 path.moveTo(429.901642, 242.327148);
   2174 path.quadTo(407.561005, 242.327148, 393.458496, 227.479935);
   2175 path.quadTo(379.355988, 212.632736, 379.355988, 188.988907);
   2176 path.quadTo(379.355988, 165.996674, 391.782959, 151.289093);
   2177 path.quadTo(404.20993, 136.581512, 423.571808, 136.581512);
   2178 path.lineTo(429.901642, 242.327148);
   2179 path.close();
   2180 </div>
   2181 
   2182 <div id="testQuadratic45s">
   2183 path.moveTo(305.511444, 127.645271);
   2184 path.lineTo(315.843994,102.232819);
   2185 path.lineTo(331.979736,147.294876);
   2186 path.quadTo(343.453125,136.581512, 359.978058,136.581512);
   2187 path.quadTo(370.869446,136.581512, 378.822021,141.178574);
   2188 path.quadTo(378.893585,141.140915, 378.965302,141.103577);
   2189 path.lineTo(393.291473,102.232819);
   2190 path.lineTo(399.248962,127.92453);
   2191 path.lineTo(396.018158,136.674606);
   2192 path.quadTo(396.029053,136.674606, 396.039917,136.674606);
   2193 path.lineTo(396.054596,136.718628);
   2194 path.quadTo(397.098907,136.674606, 398.164948,136.674606);
   2195 path.lineTo(398.076477,142.784256);
   2196 path.lineTo(398.697632,144.647751);
   2197 path.quadTo(409.233032,136.581512, 423.571808,136.581512);
   2198 path.lineTo(429.901642,242.327148);
   2199 path.quadTo(428.161621,242.327148, 426.471558,242.237076);
   2200 path.quadTo(427.300842,237.741562, 427.300842,232.366959);
   2201 path.lineTo(427.300842,216.449265);
   2202 path.quadTo(419.710114,232.327133, 404.8255,236.326401);
   2203 path.quadTo(400.557983,233.971252, 396.803375,230.691772);
   2204 path.lineTo(396.7034,237.596863);
   2205 path.quadTo(395.363068,237.672852, 393.976105,237.672852);
   2206 path.quadTo(385.309937,237.672852, 378.341187,234.659912);
   2207 path.lineTo(366.307892,242.327148);
   2208 path.quadTo(357.463165,242.327148, 349.909637,240);
   2209 path.lineTo(346.052765,240);
   2210 path.lineTo(346.052765,238.625916);
   2211 path.quadTo(336.926056,234.914124, 329.864746,227.479935);
   2212 path.quadTo(315.762238,212.632736, 315.762238,188.988907);
   2213 path.quadTo(315.762238,176.540054, 319.405273,166.519882);
   2214 path.lineTo(305.511444,127.645271);
   2215 path.close();
   2216 path.moveTo(375.464813, 192.339996);
   2217 path.lineTo(374.267029,195.583939);
   2218 path.quadTo(375.987579,214.575378, 387.432068,219.736267);
   2219 path.quadTo(380.122528,208.101486, 379.428741,192.339996);
   2220 path.lineTo(375.464813,192.339996);
   2221 path.close();
   2222 path.moveTo(397.925934, 153.178131);
   2223 path.lineTo(397.615479,174.615356);
   2224 path.quadTo(398.329468,180.246704, 398.329468,186.661758);
   2225 path.lineTo(398.236359,192.339996);
   2226 path.lineTo(397.358795,192.339996);
   2227 path.lineTo(396.934174,221.659714);
   2228 path.quadTo(397.129852,221.662079, 397.327179,221.662079);
   2229 path.lineTo(400.781189,153.910889);
   2230 path.quadTo(399.295654,153.462463, 397.925934,153.178131);
   2231 path.close();
   2232 path.moveTo(400.914398, 151.298019);
   2233 path.lineTo(400.632721,150.453003);
   2234 path.quadTo(400.794678,150.451324, 400.95755,150.451324);
   2235 path.lineTo(400.914398,151.298019);
   2236 path.close();
   2237 path.moveTo(368.744965, 228.354782);
   2238 path.quadTo(366.836426,226.574738, 365.119446,224.454651);
   2239 path.quadTo(364.748657,223.996796, 364.390686,223.527878);
   2240 path.lineTo(364.390686,228.077774);
   2241 path.quadTo(366.495239,228.312164, 368.744965,228.354782);
   2242 path.close();
   2243 path.moveTo(346.052765, 178.563278);
   2244 path.lineTo(346.052765,154.02713);
   2245 path.quadTo(340.97113,157.621338, 338.22525,164.736588);
   2246 path.lineTo(343.1763,178.563278);
   2247 path.lineTo(346.052765,178.563278);
   2248 path.close();
   2249 path.moveTo(364.390686, 150.922379);
   2250 path.lineTo(364.390686,154.048065);
   2251 path.quadTo(365.340851,152.726639, 366.38147,151.468765);
   2252 path.quadTo(365.420258,151.14975, 364.390686,150.922379);
   2253 path.close();
   2254 path.moveTo(367.863586, 152.032623);
   2255 path.quadTo(367.144043,151.721848, 366.38147,151.468765);
   2256 </div>
   2257 
   2258 <div id="testQuadratic46o">
   2259 path.moveTo(366.608826, 151.196014);
   2260 path.quadTo(378.803101, 136.674606, 398.164948, 136.674606);
   2261 path.lineTo(354.009216, 208.816208);
   2262 path.lineTo(393.291473, 102.232819);
   2263 path.lineTo(359.978058, 136.581512);
   2264 path.quadTo(378.315979, 136.581512, 388.322723, 149.613556);
   2265 path.lineTo(364.390686, 157.898193);
   2266 path.quadTo(375.281769, 136.674606, 396.039917, 136.674606);
   2267 path.lineTo(350, 120);
   2268 path.lineTo(366.608826, 151.196014);
   2269 path.close();
   2270 </div>
   2271 
   2272 <div id="testQuadratic46s">
   2273 path.moveTo(369.285553, 126.984779);
   2274 path.lineTo(393.291473,102.232819);
   2275 path.lineTo(382.416199,131.740402);
   2276 path.lineTo(396.039917,136.674606);
   2277 path.quadTo(387.290802,136.674606, 380.294495,140.44487);
   2278 path.quadTo(379.623352,140.760971, 378.965302,141.103577);
   2279 path.lineTo(378.917297,141.233856);
   2280 path.quadTo(378.86972,141.206131, 378.822021,141.178574);
   2281 path.quadTo(372.011871,144.761871, 366.608826,151.196014);
   2282 path.lineTo(350,120);
   2283 path.lineTo(369.285553,126.984779);
   2284 path.close();
   2285 path.moveTo(374.00174, 154.571106);
   2286 path.lineTo(378.917297,141.233871);
   2287 path.quadTo(378.917297,141.233871, 378.917297,141.233856);
   2288 path.quadTo(384.294891,144.368011, 388.322723,149.613556);
   2289 path.lineTo(374.00174,154.571106);
   2290 path.close();
   2291 path.moveTo(378.917297, 141.233871);
   2292 path.quadTo(370.233887,146.511475, 364.390686,157.898193);
   2293 path.lineTo(374.00174,154.571106);
   2294 path.lineTo(354.009216,208.816208);
   2295 path.lineTo(398.164948,136.674606);
   2296 path.quadTo(388.299255,136.674606, 380.294495,140.44487);
   2297 </div>
   2298 
   2299 <div id="testQuadratic47o">
   2300 path.moveTo(343.939362, 212.598053);
   2301 path.lineTo(378.457642, 118.940636);
   2302 path.lineTo(383.692657, 141.516571);
   2303 path.lineTo(350.319519, 231.902115);
   2304 path.lineTo(343.939362, 212.598053);
   2305 path.close();
   2306 path.moveTo(325.429016, 162.047577);
   2307 path.quadTo(336.348907, 149.123688, 353.36264, 149.123688);
   2308 path.quadTo(369.476624, 149.123688, 378.269806, 160.575241);
   2309 path.lineTo(325.429016, 162.047577);
   2310 path.close();
   2311 path.moveTo(370.867188, 186.014069);
   2312 path.quadTo(370.867188, 161.229614, 352.381104, 161.229614);
   2313 path.quadTo(333.813202, 161.229614, 331.686493, 186.014069);
   2314 path.lineTo(370.867188, 186.014069);
   2315 path.close();
   2316 path.moveTo(353.161499, 195.011719);
   2317 path.quadTo(353.161499, 174.726105, 363.876862, 161.96579);
   2318 path.lineTo(353.161499, 195.011719);
   2319 path.close();
   2320 </div>
   2321 
   2322 <div id="testQuadratic47s">
   2323 path.moveTo(366.466309, 151.476364);
   2324 path.lineTo(378.457642,118.940636);
   2325 path.lineTo(383.692657,141.516571);
   2326 path.lineTo(377.159943,159.209305);
   2327 path.quadTo(377.728729,159.87059, 378.269806,160.575241);
   2328 path.lineTo(376.638824,160.620682);
   2329 path.lineTo(370.26593,177.8806);
   2330 path.quadTo(368.708496,168.390671, 363.116943,164.309357);
   2331 path.lineTo(356.079041,186.014069);
   2332 path.lineTo(367.262817,186.014069);
   2333 path.lineTo(350.319519,231.902115);
   2334 path.lineTo(343.939362,212.598053);
   2335 path.lineTo(353.736816,186.014923);
   2336 path.lineTo(353.737122,186.014069);
   2337 path.lineTo(353.736938,186.014069);
   2338 path.quadTo(353.736877,186.014496, 353.736816,186.014923);
   2339 path.quadTo(353.161499,190.31131, 353.161499,195.011719);
   2340 </div>
   2341 
   2342 <div id="testQuadratic48o">
   2343 path.moveTo(366.608826, 151.196014);
   2344 path.quadTo(378.803101, 136.674606, 398.164948, 136.674606);
   2345 path.lineTo(354.009216, 208.816208);
   2346 path.lineTo(393.291473, 102.232819);
   2347 path.lineTo(359.978058, 136.581512);
   2348 path.quadTo(378.315979, 136.581512, 388.322723, 149.613556);
   2349 path.lineTo(364.390686, 157.898193);
   2350 path.quadTo(375.281769, 136.674606, 396.039917, 136.674606);
   2351 path.lineTo(350, 120);
   2352 path.lineTo(366.608826, 151.196014);
   2353 path.close();
   2354 </div>
   2355 
   2356 <div id="testQuadratic48s">
   2357 path.moveTo(369.285553, 126.984779);
   2358 path.lineTo(393.291473,102.232819);
   2359 path.lineTo(382.416199,131.740402);
   2360 path.lineTo(396.039917,136.674606);
   2361 path.quadTo(387.290802,136.674606, 380.294495,140.44487);
   2362 path.quadTo(379.623352,140.760971, 378.965302,141.103577);
   2363 path.lineTo(378.917297,141.233856);
   2364 path.quadTo(378.86972,141.206131, 378.822021,141.178574);
   2365 path.quadTo(372.011871,144.761871, 366.608826,151.196014);
   2366 path.lineTo(350,120);
   2367 path.lineTo(369.285553,126.984779);
   2368 path.close();
   2369 </div>
   2370 
   2371 <div id="testQuadratic49s">
   2372 path.moveTo(366.400513, 204.162521);
   2373 path.lineTo(411.545044, 81.6732483);
   2374 path.lineTo(366.400513, 204.162521);
   2375 path.close();
   2376 path.moveTo(331.585693, 138.050415);
   2377 path.quadTo(345.867188, 121.147957, 368.11853, 121.147957);
   2378 path.quadTo(389.193115, 121.147957, 400.693176, 136.124817);
   2379 path.lineTo(331.585693, 138.050415);
   2380 path.close();
   2381 path.moveTo(369.863983, 145.645813);
   2382 path.quadTo(382.380371, 121.254936, 406.236359, 121.254936);
   2383 path.lineTo(369.863983, 145.645813);
   2384 path.close();
   2385 path.moveTo(369.970581, 137.94342);
   2386 path.quadTo(383.98465, 121.254936, 406.235992, 121.254936);
   2387 path.lineTo(369.970581, 137.94342);
   2388 path.close();
   2389 </div>
   2390 
   2391 <div id="testQuadratic50o">
   2392 path.moveTo(366.400513, 204.162521);
   2393 path.lineTo(411.545044, 81.6732483);
   2394 path.lineTo(366.400513, 204.162521);
   2395 path.close();
   2396 path.moveTo(331.585693, 138.050415);
   2397 path.quadTo(345.867188, 121.147957, 368.11853, 121.147957);
   2398 path.quadTo(389.193115, 121.147957, 400.693176, 136.124817);
   2399 path.lineTo(331.585693, 138.050415);
   2400 path.close();
   2401 path.moveTo(369.863983, 145.645813);
   2402 path.quadTo(382.380371, 121.254936, 406.236359, 121.254936);
   2403 path.lineTo(369.863983, 145.645813);
   2404 path.close();
   2405 path.moveTo(369.970581, 137.94342);
   2406 path.quadTo(383.98465, 121.254936, 406.235992, 121.254936);
   2407 path.lineTo(369.970581, 137.94342);
   2408 path.close();
   2409 </div>
   2410 
   2411 <div id="testQuadratic50s">
   2412 path.moveTo(331.585693, 138.050415);
   2413 path.quadTo(345.867188,121.147957, 368.11853,121.147957);
   2414 path.quadTo(378.797424,121.147957, 387.017914,124.993469);
   2415 path.quadTo(391.577667,123.030998, 396.645874,122.098694);
   2416 path.quadTo(401.232697,121.254936, 406.235992,121.254936);
   2417 path.lineTo(395.061676,126.397095);
   2418 path.lineTo(391.979187,127.81559);
   2419 path.quadTo(393.010406,128.517273, 393.994415,129.292801);
   2420 path.quadTo(394.053131,129.339066, 394.111664,129.385605);
   2421 path.lineTo(393.910492,129.520508);
   2422 path.lineTo(383.340973,136.608322);
   2423 path.lineTo(375.350006,136.830978);
   2424 path.quadTo(376.20224,135.708145, 377.092102,134.66626);
   2425 path.lineTo(372.197113,136.918823);
   2426 </div>
   2427 
   2428 <div id="testQuadratic51">
   2429 path.moveTo(369.863983, 145.645813);
   2430 path.quadTo(382.380371, 121.254936, 406.236359, 121.254936);
   2431 path.lineTo(369.863983, 145.645813);
   2432 path.close();
   2433 path.moveTo(369.970581, 137.94342);
   2434 path.quadTo(383.98465, 121.254936, 406.235992, 121.254936);
   2435 path.lineTo(369.970581, 137.94342);
   2436 path.close();
   2437 </div>
   2438 
   2439 <div id="testQuadratic52o">
   2440 path.moveTo(366.400513, 204.162521);
   2441 path.lineTo(411.545044, 81.6732483);
   2442 path.lineTo(366.400513, 204.162521);
   2443 path.close();
   2444 path.moveTo(331.585693, 138.050415);
   2445 path.quadTo(345.867188, 121.147957, 368.11853, 121.147957);
   2446 path.quadTo(389.193115, 121.147957, 400.693176, 136.124817);
   2447 path.lineTo(331.585693, 138.050415);
   2448 path.close();
   2449 path.moveTo(369.863983, 145.645813);
   2450 path.quadTo(382.380371, 121.254936, 406.236359, 121.254936);
   2451 path.lineTo(369.863983, 145.645813);
   2452 path.close();
   2453 path.moveTo(369.970581, 137.94342);
   2454 path.quadTo(383.98465, 121.254936, 406.235992, 121.254936);
   2455 path.lineTo(369.970581, 137.94342);
   2456 path.close();
   2457 </div>
   2458 
   2459 <div id="testQuadratic52s">
   2460 path.moveTo(331.585693, 138.050415);
   2461 path.quadTo(345.867188,121.147957, 368.11853,121.147957);
   2462 path.quadTo(378.797424,121.147957, 387.017914,124.993469);
   2463 path.quadTo(391.577667,123.030998, 396.645874,122.098694);
   2464 path.quadTo(401.232697,121.254936, 406.235992,121.254936);
   2465 path.close();
   2466 path.moveTo(383.340973, 136.608322);
   2467 path.lineTo(369.863983,145.645813);
   2468 path.quadTo(372.378204,140.746292, 375.350006,136.830978);
   2469 path.lineTo(372.197113,136.918823);
   2470 path.lineTo(369.970581,137.94342);
   2471 path.quadTo(370.390961,137.442825, 370.818756,136.95723);
   2472 path.lineTo(331.585693,138.050415);
   2473 path.quadTo(345.867188,121.147957, 368.11853,121.147957);
   2474 path.quadTo(378.797424,121.147957, 387.017914,124.993469);
   2475 path.quadTo(391.577667,123.030998, 396.645874,122.098694);
   2476 path.quadTo(401.232697,121.254936, 406.235992,121.254936);
   2477 path.close();
   2478 path.moveTo(383.340973, 136.608322);
   2479 path.lineTo(391.380798,136.384293);
   2480 path.lineTo(400.693176,136.124817);
   2481 path.quadTo(397.721985,132.255341, 394.111664,129.385605);
   2482 path.lineTo(406.236359,121.254936);
   2483 path.quadTo(406.236176,121.254936, 406.235992,121.254936);
   2484 path.lineTo(406.235992,121.254936);
   2485 path.quadTo(401.232697,121.254936, 396.645874,122.098694);
   2486 path.quadTo(391.577667,123.030998, 387.017914,124.993469);
   2487 path.quadTo(378.797424,121.147957, 368.11853,121.147957);
   2488 path.quadTo(345.867188,121.147957, 331.585693,138.050415);
   2489 path.lineTo(370.818756,136.95723);
   2490 path.quadTo(370.390961,137.442825, 369.970581,137.94342);
   2491 path.lineTo(372.197113,136.918823);
   2492 path.lineTo(375.350006,136.830978);
   2493 path.quadTo(372.378204,140.746292, 369.863983,145.645813);
   2494 path.lineTo(383.340973,136.608322);
   2495 path.close();
   2496 </div>
   2497 
   2498 <div id="testQuadratic52sa">
   2499 path.moveTo(331.585693, 138.050415);
   2500 path.quadTo(345.867188,121.147957, 368.11853,121.147957);
   2501 path.quadTo(378.797424,121.147957, 387.017914,124.993469);
   2502 path.quadTo(391.577667,123.030998, 396.645874,122.098694);
   2503 path.quadTo(401.232697,121.254936, 406.235992,121.254936);
   2504 path.close();
   2505 </div>
   2506 
   2507 <div id="testQuadratic52sb">
   2508 path.moveTo(383.340973, 136.608322);
   2509 path.lineTo(369.863983,145.645813);
   2510 path.quadTo(372.378204,140.746292, 375.350006,136.830978);
   2511 path.lineTo(372.197113,136.918823);
   2512 path.lineTo(369.970581,137.94342);
   2513 path.quadTo(370.390961,137.442825, 370.818756,136.95723);
   2514 path.lineTo(331.585693,138.050415);
   2515 path.quadTo(345.867188,121.147957, 368.11853,121.147957);
   2516 path.quadTo(378.797424,121.147957, 387.017914,124.993469);
   2517 path.quadTo(391.577667,123.030998, 396.645874,122.098694);
   2518 path.quadTo(401.232697,121.254936, 406.235992,121.254936);
   2519 path.close();
   2520 </div>
   2521 
   2522 <div id="testQuadratic52sc">
   2523 path.moveTo(383.340973, 136.608322);
   2524 path.lineTo(391.380798,136.384293);
   2525 path.lineTo(400.693176,136.124817);
   2526 path.quadTo(397.721985,132.255341, 394.111664,129.385605);
   2527 path.lineTo(406.236359,121.254936);
   2528 path.quadTo(406.236176,121.254936, 406.235992,121.254936);
   2529 path.lineTo(406.235992,121.254936);
   2530 path.quadTo(401.232697,121.254936, 396.645874,122.098694);
   2531 path.quadTo(391.577667,123.030998, 387.017914,124.993469);
   2532 path.quadTo(378.797424,121.147957, 368.11853,121.147957);
   2533 path.quadTo(345.867188,121.147957, 331.585693,138.050415);
   2534 path.lineTo(370.818756,136.95723);
   2535 path.quadTo(370.390961,137.442825, 369.970581,137.94342);
   2536 path.lineTo(372.197113,136.918823);
   2537 path.lineTo(375.350006,136.830978);
   2538 path.quadTo(372.378204,140.746292, 369.863983,145.645813);
   2539 path.lineTo(383.340973,136.608322);
   2540 path.close();
   2541 </div>
   2542 
   2543 <div id="testQuadratic53o">
   2544 path.moveTo(303.12088, 141.299606);
   2545 path.lineTo(330.463562, 217.659027);
   2546 path.lineTo(303.12088, 141.299606);
   2547 path.close();
   2548 path.moveTo(371.919067, 205.854996);
   2549 path.lineTo(326.236786, 205.854996);
   2550 path.quadTo(329.104431, 231.663818, 351.512085, 231.663818);
   2551 path.lineTo(371.919067, 205.854996);
   2552 path.close();
   2553 </div>
   2554 
   2555 <div id="testQuadratic53s">
   2556 path.moveTo(326.236786,205.854996);
   2557 path.lineTo(326.236786,205.854996);
   2558 path.close();
   2559 path.moveTo(371.919067,205.854996);
   2560 path.lineTo(326.236786,205.854996);
   2561 </div>
   2562 
   2563 <div id="testQuadratic54">
   2564 path.moveTo(303.12088, 141.299606);
   2565 path.lineTo(330.463562, 217.659027);
   2566 path.lineTo(358.606506, 141.299606);
   2567 path.lineTo(303.12088, 141.299606);
   2568 path.close();
   2569 path.moveTo(371.919067, 205.854996);
   2570 path.lineTo(326.236786, 205.854996);
   2571 path.quadTo(329.104431, 231.663818, 351.512085, 231.663818);
   2572 path.lineTo(371.919067, 205.854996);
   2573 path.close();
   2574 </div>
   2575 
   2576 <div id="testQuadratic55o">
   2577 path.moveTo(303.12088, 141.299606);
   2578 path.lineTo(330.463562, 217.659027);
   2579 path.lineTo(358.606506, 141.299606);
   2580 path.lineTo(303.12088, 141.299606);
   2581 path.close();
   2582 path.moveTo(326.236786, 205.854996);
   2583 path.quadTo(329.104431, 231.663818, 351.512085, 231.663818);
   2584 path.lineTo(326.236786, 205.854996);
   2585 path.close();
   2586 </div>
   2587 
   2588 <div id="testQuadratic55s">
   2589 path.moveTo(326.236786,205.854996);
   2590 path.lineTo(303.12088,141.299606);
   2591 path.lineTo(358.606506,141.299606);
   2592 path.lineTo(332.468719,212.218475);
   2593 path.lineTo(351.512085,231.663818);
   2594 path.quadTo(329.104431,231.663818, 326.236786,205.854996);
   2595 path.close();
   2596 </div>
   2597 
   2598 <div id="testQuadratic56o">
   2599 path.moveTo(366.608826, 151.196014);
   2600 path.quadTo(378.803101, 136.674606, 398.164948, 136.674606);
   2601 path.lineTo(354.009216, 208.816208);
   2602 path.lineTo(393.291473, 102.232819);
   2603 path.lineTo(359.978058, 136.581512);
   2604 path.quadTo(378.315979, 136.581512, 388.322723, 149.613556);
   2605 path.lineTo(364.390686, 157.898193);
   2606 path.quadTo(375.281769, 136.674606, 396.039917, 136.674606);
   2607 path.lineTo(350, 120);
   2608 path.lineTo(366.608826, 151.196014);
   2609 path.close();
   2610 </div>
   2611 
   2612 <div id="testQuadratic56s">
   2613 path.moveTo(369.285553,126.984779);
   2614 path.lineTo(393.291473,102.232819);
   2615 path.lineTo(382.416199,131.740402);
   2616 path.lineTo(396.039917,136.674606);
   2617 path.quadTo(387.290802,136.674606, 380.294495,140.44487);
   2618 path.quadTo(379.623352,140.760971, 378.965302,141.103577);
   2619 path.lineTo(378.917297,141.233856);
   2620 path.quadTo(378.86972,141.206131, 378.822021,141.178574);
   2621 path.quadTo(372.011871,144.761871, 366.608826,151.196014);
   2622 path.lineTo(350,120);
   2623 path.lineTo(369.285553,126.984779);
   2624 path.close();
   2625 path.moveTo(378.917297,141.233871);
   2626 path.lineTo(378.917297,141.233856);
   2627 path.quadTo(378.86972,141.206131, 378.822021,141.178574);
   2628 path.quadTo(372.011871,144.761871, 366.608826,151.196014);
   2629 </div>
   2630 
   2631 <div id="testQuadratic57o">
   2632 path.moveTo(303.12088, 141.299606);
   2633 path.lineTo(330.463562, 217.659027);
   2634 path.lineTo(358.606506, 141.299606);
   2635 path.lineTo(362.874634, 159.705902);
   2636 path.lineTo(335.665344, 233.397751);
   2637 path.lineTo(322.12738, 233.397751);
   2638 path.lineTo(295.718353, 159.505829);
   2639 path.lineTo(295.718353, 240);
   2640 path.lineTo(303.12088, 141.299606);
   2641 path.close();
   2642 path.moveTo(322.935669, 231.030273);
   2643 path.quadTo(312.832214, 220.393295, 312.832214, 203.454178);
   2644 path.quadTo(312.832214, 186.981888, 321.73526, 176.444946);
   2645 path.quadTo(330.638306, 165.90802, 344.509705, 165.90802);
   2646 path.lineTo(371.919067, 205.854996);
   2647 path.lineTo(326.236786, 205.854996);
   2648 path.quadTo(329.104431, 231.663818, 351.512085, 231.663818);
   2649 path.lineTo(322.935669, 231.030273);
   2650 path.close();
   2651 path.moveTo(326.837006, 195.984955);
   2652 path.lineTo(358.78125, 195.984955);
   2653 path.lineTo(343.709442, 175.778046);
   2654 path.quadTo(328.570923, 175.778046, 326.837006, 195.984955);
   2655 path.close();
   2656 </div>
   2657 
   2658 <div id="testQuadratic57s">
   2659 path.moveTo(300.708282,173.46756);
   2660 path.lineTo(303.12088,141.299606);
   2661 path.lineTo(317.770294,182.210785);
   2662 path.quadTo(319.462738,179.134506, 321.73526,176.444946);
   2663 path.quadTo(330.638306,165.90802, 344.509705,165.90802);
   2664 path.lineTo(347.780151,170.674438);
   2665 path.lineTo(358.606506,141.299606);
   2666 path.lineTo(362.874634,159.705902);
   2667 path.lineTo(354.960693,181.139511);
   2668 path.lineTo(371.919067,205.854996);
   2669 path.lineTo(345.834961,205.854996);
   2670 path.lineTo(337.609253,228.13298);
   2671 path.quadTo(342.649323,231.302383, 349.843323,231.626816);
   2672 path.lineTo(336.429047,231.329422);
   2673 path.lineTo(335.665344,233.397751);
   2674 path.lineTo(322.12738,233.397751);
   2675 path.lineTo(320.050781,227.587433);
   2676 path.quadTo(313.982483,219.336182, 313.015503,207.902908);
   2677 path.lineTo(300.708282,173.46756);
   2678 path.close();
   2679 path.moveTo(300.708282,173.46756);
   2680 path.lineTo(295.718353,240);
   2681 path.lineTo(295.718353,159.505829);
   2682 path.lineTo(300.708282,173.46756);
   2683 path.close();
   2684 path.moveTo(349.843323,231.626816);
   2685 path.lineTo(351.512085,231.663818);
   2686 path.quadTo(350.663696,231.663818, 349.843323,231.626816);
   2687 path.close();
   2688 path.moveTo(326.236786,205.854996);
   2689 path.lineTo(330.463562,217.659027);
   2690 path.lineTo(334.814056,205.854996);
   2691 path.lineTo(326.236786,205.854996);
   2692 path.close();
   2693 path.moveTo(334.814056,205.854996);
   2694 path.lineTo(338.451721,195.984955);
   2695 path.lineTo(349.479309,195.984955);
   2696 path.lineTo(352.559326,187.643173);
   2697 path.lineTo(358.78125,195.984955);
   2698 </div>
   2699 
   2700 <div id="testQuadratic58o">
   2701 path.moveTo(283.714233, 240);
   2702 path.lineTo(283.714233, 141.299606);
   2703 path.lineTo(303.12088, 141.299606);
   2704 path.lineTo(330.463562, 217.659027);
   2705 path.lineTo(358.606506, 141.299606);
   2706 path.lineTo(362.874634, 159.705902);
   2707 path.lineTo(335.665344, 233.397751);
   2708 path.lineTo(322.12738, 233.397751);
   2709 path.lineTo(295.718353, 159.505829);
   2710 path.lineTo(295.718353, 240);
   2711 path.lineTo(283.714233, 240);
   2712 path.close();
   2713 path.moveTo(322.935669, 231.030273);
   2714 path.quadTo(312.832214, 220.393295, 312.832214, 203.454178);
   2715 path.quadTo(312.832214, 186.981888, 321.73526, 176.444946);
   2716 path.quadTo(330.638306, 165.90802, 344.509705, 165.90802);
   2717 path.quadTo(357.647522, 165.90802, 364.81665, 175.244537);
   2718 path.lineTo(371.919067, 205.854996);
   2719 path.lineTo(326.236786, 205.854996);
   2720 path.quadTo(329.104431, 231.663818, 351.512085, 231.663818);
   2721 path.lineTo(322.935669, 231.030273);
   2722 path.close();
   2723 path.moveTo(326.837006, 195.984955);
   2724 path.lineTo(358.78125, 195.984955);
   2725 path.quadTo(358.78125, 175.778046, 343.709442, 175.778046);
   2726 path.quadTo(328.570923, 175.778046, 326.837006, 195.984955);
   2727 path.close();
   2728 </div>
   2729 
   2730 <div id="testQuadratic58s">
   2731 path.moveTo(283.714233,240);
   2732 path.lineTo(283.714233,141.299606);
   2733 path.lineTo(303.12088,141.299606);
   2734 path.lineTo(317.770294,182.210785);
   2735 path.quadTo(319.462738,179.134506, 321.73526,176.444946);
   2736 path.quadTo(330.638306,165.90802, 344.509705,165.90802);
   2737 path.quadTo(347.07132,165.90802, 349.406036,166.26297);
   2738 path.lineTo(358.606506,141.299606);
   2739 path.lineTo(362.874634,159.705902);
   2740 path.lineTo(359.116211,169.884979);
   2741 path.quadTo(362.326477,172.001541, 364.81665,175.244537);
   2742 path.lineTo(371.919067,205.854996);
   2743 path.lineTo(345.834961,205.854996);
   2744 path.lineTo(337.609253,228.13298);
   2745 path.quadTo(342.649323,231.302383, 349.843323,231.626816);
   2746 path.lineTo(336.429047,231.329422);
   2747 path.lineTo(335.665344,233.397751);
   2748 path.lineTo(322.12738,233.397751);
   2749 path.lineTo(320.050781,227.587433);
   2750 path.quadTo(313.982483,219.336182, 313.015503,207.902908);
   2751 path.lineTo(295.718353,159.505829);
   2752 path.lineTo(295.718353,240);
   2753 path.lineTo(283.714233,240);
   2754 path.close();
   2755 path.moveTo(349.843323,231.626816);
   2756 path.lineTo(351.512085,231.663818);
   2757 path.quadTo(350.663696,231.663818, 349.843323,231.626816);
   2758 path.close();
   2759 path.moveTo(326.236786,205.854996);
   2760 path.lineTo(330.463562,217.659027);
   2761 path.lineTo(334.814056,205.854996);
   2762 path.lineTo(326.236786,205.854996);
   2763 path.close();
   2764 path.moveTo(334.814056,205.854996);
   2765 path.lineTo(338.451721,195.984955);
   2766 path.lineTo(349.479309,195.984955);
   2767 path.lineTo(355.054535,180.885361);
   2768 path.quadTo(358.78125,185.936935, 358.78125,195.984955);
   2769 </div>
   2770 
   2771 <div id="testQuadratic58a">
   2772 path.moveTo(283.714233,240);
   2773 path.lineTo(283.714233,141.299606);
   2774 path.lineTo(303.12088,141.299606);
   2775 path.lineTo(317.770294,182.210785);
   2776 path.quadTo(319.462738,179.134506, 321.73526,176.444946);
   2777 path.quadTo(330.638306,165.90802, 344.509705,165.90802);
   2778 path.quadTo(347.07132,165.90802, 349.406036,166.26297);
   2779 path.lineTo(358.606506,141.299606);
   2780 path.lineTo(362.874634,159.705902);
   2781 path.lineTo(359.116211,169.884979);
   2782 path.quadTo(362.326477,172.001541, 364.81665,175.244537);
   2783 path.lineTo(371.919067,205.854996);
   2784 path.lineTo(345.834961,205.854996);
   2785 path.lineTo(337.609253,228.13298);
   2786 path.quadTo(342.649323,231.302383, 349.843323,231.626816);
   2787 path.lineTo(336.429047,231.329422);
   2788 path.lineTo(335.665344,233.397751);
   2789 path.lineTo(322.12738,233.397751);
   2790 path.lineTo(320.050781,227.587433);
   2791 path.quadTo(313.982483,219.336182, 313.015503,207.902908);
   2792 path.lineTo(295.718353,159.505829);
   2793 path.lineTo(295.718353,240);
   2794 path.lineTo(283.714233,240);
   2795 path.close();
   2796 path.moveTo(349.843323,231.626816);
   2797 path.lineTo(351.512085,231.663818);
   2798 path.quadTo(350.663696,231.663818, 349.843323,231.626816);
   2799 path.close();
   2800 path.moveTo(349.479309,195.984955);
   2801 path.lineTo(358.78125,195.984955);
   2802 path.quadTo(358.78125,185.936935, 355.054535,180.885361);
   2803 path.lineTo(349.479309,195.984955);
   2804 path.close();
   2805 path.moveTo(345.858368,175.888794);
   2806 path.lineTo(338.451721,195.984955);
   2807 path.lineTo(326.837006,195.984955);
   2808 path.quadTo(328.570923,175.778046, 343.709442,175.778046);
   2809 path.quadTo(344.825195,175.778046, 345.858368,175.888794);
   2810 path.close();
   2811 </div>
   2812 
   2813 <div id="testQuadratic59">
   2814     path.moveTo(0, 0);
   2815     path.quadTo(0, 0, 0, 0);
   2816     path.lineTo(2, 2);
   2817     path.close();
   2818     path.moveTo(0, 0);
   2819     path.lineTo(2, 0);
   2820     path.quadTo(3, 1, 1, 2);
   2821 </div>
   2822 
   2823 <div id="testQuadratic59o">
   2824 path.moveTo(369.863983, 145.645813);
   2825 path.quadTo(382.380371, 121.254936, 406.236359, 121.254936);
   2826 path.quadTo(409.445679, 121.254936, 412.975952, 121.789818);
   2827 path.lineTo(369.863983, 145.645813);
   2828 path.close();
   2829 path.moveTo(369.970581, 137.94342);
   2830 path.quadTo(383.98465, 121.254936, 406.235992, 121.254936);
   2831 path.quadTo(425.705902, 121.254936, 439.71994, 137.087616);
   2832 path.lineTo(369.970581, 137.94342);
   2833 path.close();
   2834 </div>
   2835 
   2836 <div id="testQuadratic59s">
   2837 path.moveTo(369.970581,137.94342);
   2838 path.quadTo(383.98465,121.254936, 406.235992,121.254936);
   2839 path.quadTo(406.237854,121.254936, 406.239746,121.254936);
   2840 path.lineTo(406.239532,121.254936);
   2841 path.quadTo(409.447418,121.255203, 412.975952,121.789818);
   2842 </div>
   2843 
   2844 <div id="testQuadratic60">
   2845 path.moveTo(360.416077, 166.795715);
   2846 path.quadTo(370.126831, 147.872162, 388.635406, 147.872162);
   2847 path.lineTo(360.416077, 166.795715);
   2848 path.close();
   2849 path.moveTo(353.2948, 194.351074);
   2850 path.quadTo(353.2948, 173.767563, 364.167572, 160.819855);
   2851 path.quadTo(375.040314, 147.872162, 392.303894, 147.872162);
   2852 path.lineTo(353.2948, 194.351074);
   2853 path.close();
   2854 </div>
   2855 
   2856 <div id="testQuadratic61">
   2857 path.moveTo(348.781738, 123.864815);
   2858 path.lineTo(369.848602, 123.864815);
   2859 path.lineTo(369.848602, 145.680267);
   2860 path.quadTo(382.360413, 121.298294, 406.207703, 121.298294);
   2861 path.lineTo(348.781738, 123.864815);
   2862 path.close();
   2863 path.moveTo(369.961151, 137.980698);
   2864 path.quadTo(383.970093, 121.298294, 406.213287, 121.298294);
   2865 path.lineTo(369.961151, 137.980698);
   2866 path.close();
   2867 </div>
   2868 
   2869 <div id="testQuadratic62x">
   2870     path.setFillType(SkPath::kEvenOdd_FillType);
   2871     path.moveTo(0, 0);
   2872     path.quadTo(0, 0, 0, 0);
   2873     path.lineTo(2, 2);
   2874     path.close();
   2875     path.moveTo(0, 0);
   2876     path.lineTo(2, 0);
   2877     path.quadTo(3, 1, 1, 2);
   2878     path.close();
   2879 </div>
   2880 
   2881 <div id="testLine1a">
   2882     path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
   2883     path.addRect(4, 0, 13, 13, SkPath::kCCW_Direction);
   2884     path.close();
   2885 </div>
   2886 
   2887 <div id="testQuadratic63">
   2888     path.moveTo(0, 0);
   2889     path.quadTo(0, 0, 0, 0);
   2890     path.lineTo(3, 2);
   2891     path.close();
   2892     path.moveTo(1, 0);
   2893     path.lineTo(2, 1);
   2894     path.quadTo(2, 1, 2, 2);
   2895     path.close();
   2896 </div>
   2897 
   2898 <div id="testQuadratic64">
   2899     path.moveTo(0, 0);
   2900     path.quadTo(0, 0, 0, 0);
   2901     path.lineTo(2, 3);
   2902     path.close();
   2903     path.moveTo(1, 2);
   2904     path.lineTo(2, 2);
   2905     path.quadTo(0, 3, 3, 3);
   2906     path.close();
   2907 </div>
   2908 
   2909 <div id="testQuadratic65">
   2910     path.moveTo(0, 0);
   2911     path.quadTo(0, 0, 0, 0);
   2912     path.lineTo(3, 2);
   2913     path.close();
   2914     path.moveTo(2, 1);
   2915     path.lineTo(2, 2);
   2916     path.quadTo(0, 3, 1, 3);
   2917     path.close();
   2918 </div>
   2919 
   2920 <div id="testQuadratic66">
   2921     path.moveTo(0, 0);
   2922     path.quadTo(0, 0, 0, 1);
   2923     path.lineTo(3, 2);
   2924     path.close();
   2925     path.moveTo(2, 0);
   2926     path.lineTo(1, 1);
   2927     path.quadTo(3, 2, 2, 3);
   2928     path.close();
   2929 </div>
   2930 
   2931 <div id="testQuadratic67x">
   2932     path.setFillType(SkPath::kEvenOdd_FillType);
   2933     path.moveTo(0, 0);
   2934     path.quadTo(0, 0, 2, 1);
   2935     path.lineTo(2, 2);
   2936     path.close();
   2937     path.moveTo(0, 0);
   2938     path.lineTo(2, 0);
   2939     path.quadTo(1, 1, 3, 2);
   2940     path.close();
   2941 </div>
   2942 
   2943 <div id="testQuadratic68">
   2944     path.moveTo(0, 0);
   2945     path.quadTo(1, 0, 0, 1);
   2946     path.lineTo(1, 2);
   2947     path.close();
   2948     path.moveTo(0, 0);
   2949     path.lineTo(0, 0);
   2950     path.quadTo(0, 1, 2, 1);
   2951     path.close();
   2952 </div>
   2953 
   2954 <div id="testQuadratic69">
   2955     path.moveTo(0, 0);
   2956     path.quadTo(0, 0, 0, 1);
   2957     path.lineTo(3, 2);
   2958     path.close();
   2959     path.moveTo(2, 0);
   2960     path.lineTo(1, 1);
   2961     path.quadTo(3, 2, 2, 3);
   2962     path.close();
   2963 </div>
   2964 
   2965 <div id="testQuadratic70x">
   2966     path.setFillType(SkPath::kEvenOdd_FillType);
   2967     path.moveTo(0, 0);
   2968     path.quadTo(1, 0, 0, 1);
   2969     path.lineTo(1, 2);
   2970     path.close();
   2971     path.moveTo(0, 0);
   2972     path.lineTo(0, 0);
   2973     path.quadTo(0, 1, 2, 1);
   2974     path.close();
   2975 </div>
   2976 
   2977 <div id="testQuadratic71">
   2978     path.moveTo(0, 0);
   2979     path.quadTo(1, 0, 1, 1);
   2980     path.lineTo(3, 2);
   2981     path.close();
   2982     path.moveTo(0, 0);
   2983     path.lineTo(0, 0);
   2984     path.quadTo(1, 1, 3, 1);
   2985     path.close();
   2986 </div>
   2987 
   2988 <div id="testQuadratic72">
   2989     path.moveTo(0, 0);
   2990     path.quadTo(1, 0, 1, 2);
   2991     path.lineTo(1, 2);
   2992     path.close();
   2993     path.moveTo(0, 0);
   2994     path.lineTo(1, 0);
   2995     path.quadTo(0, 1, 3, 2);
   2996     path.close();
   2997 </div>
   2998 
   2999 <div id="testQuadratic73">
   3000     path.moveTo(0, 0);
   3001     path.quadTo(1, 0, 0, 3);
   3002     path.lineTo(0, 3);
   3003     path.close();
   3004     path.moveTo(0, 0);
   3005     path.lineTo(1, 0);
   3006     path.quadTo(0, 1, 1, 1);
   3007     path.close();
   3008 </div>
   3009 
   3010 <div id="testQuadratic74">
   3011     path.moveTo(0, 0);
   3012     path.quadTo(1, 0, 1, 3);
   3013     path.lineTo(1, 3);
   3014     path.close();
   3015     path.moveTo(0, 0);
   3016     path.lineTo(0, 1);
   3017     path.quadTo(3, 2, 2, 3);
   3018     path.close();
   3019 </div>
   3020 
   3021 <div id="testQuadratic75">
   3022     path.moveTo(0, 0);
   3023     path.quadTo(1, 0, 1, 3);
   3024     path.lineTo(2, 3);
   3025     path.close();
   3026     path.moveTo(0, 0);
   3027     path.lineTo(0, 1);
   3028     path.quadTo(3, 2, 2, 3);
   3029     path.close();
   3030 </div>
   3031 
   3032 <div id="testQuadratic76">
   3033     path.moveTo(0, 0);
   3034     path.quadTo(0, 0, 0, 0);
   3035     path.lineTo(2, 3);
   3036     path.close();
   3037     path.moveTo(1, 0);
   3038     path.lineTo(1, 2);
   3039     path.quadTo(1, 2, 2, 2);
   3040     path.close();
   3041 </div>
   3042 
   3043 <div id="testQuadratic77">
   3044     path.moveTo(0, 0);
   3045     path.quadTo(1, 0, 1, 1);
   3046     path.lineTo(3, 1);
   3047     path.close();
   3048     path.moveTo(0, 0);
   3049     path.lineTo(1, 0);
   3050     path.quadTo(0, 1, 3, 2);
   3051     path.close();
   3052 </div>
   3053 
   3054 <div id="testQuadratic78">
   3055     path.moveTo(0, 0);
   3056     path.quadTo(1, 0, 1, 2);
   3057     path.lineTo(3, 2);
   3058     path.close();
   3059     path.moveTo(0, 0);
   3060     path.lineTo(0, 0);
   3061     path.quadTo(2, 1, 0, 2);
   3062     path.close();
   3063 </div>
   3064 
   3065 <div id="testQuadratic79">
   3066     path.moveTo(0, 0);
   3067     path.quadTo(1, 0, 1, 2);
   3068     path.lineTo(3, 2);
   3069     path.close();
   3070     path.moveTo(0, 0);
   3071     path.lineTo(1, 0);
   3072     path.quadTo(0, 1, 3, 2);
   3073     path.close();
   3074 </div>
   3075 
   3076 <div id="testQuadratic80">
   3077     path.moveTo(0, 0);
   3078     path.quadTo(1, 0, 2, 3);
   3079     path.lineTo(2, 3);
   3080     path.close();
   3081     path.moveTo(1, 0);
   3082     path.lineTo(3, 0);
   3083     path.quadTo(0, 1, 1, 1);
   3084     path.close();
   3085 </div>
   3086 
   3087 <div id="testQuadratic81">
   3088     path.moveTo(0, 0);
   3089     path.quadTo(2, 0, 1, 1);
   3090     path.lineTo(1, 1);
   3091     path.close();
   3092     path.moveTo(0, 0);
   3093     path.lineTo(0, 0);
   3094     path.quadTo(2, 1, 0, 2);
   3095     path.close();
   3096 </div>
   3097 
   3098 <div id="testQuadratic82">
   3099     path.moveTo(0, 0);
   3100     path.quadTo(2, 0, 1, 1);
   3101     path.lineTo(0, 3);
   3102     path.close();
   3103     path.moveTo(0, 0);
   3104     path.lineTo(0, 0);
   3105     path.quadTo(2, 1, 0, 2);
   3106     path.close();
   3107 </div>
   3108 
   3109 <div id="testQuadratic83">
   3110     path.moveTo(0, 0);
   3111     path.quadTo(0, 0, 2, 0);
   3112     path.lineTo(2, 2);
   3113     path.close();
   3114     path.moveTo(0, 1);
   3115     path.lineTo(0, 2);
   3116     path.quadTo(2, 2, 1, 3);
   3117     path.close();
   3118 </div>
   3119 
   3120 <div id="testQuadratic84">
   3121     path.moveTo(0, 0);
   3122     path.quadTo(2, 0, 1, 1);
   3123     path.lineTo(2, 1);
   3124     path.close();
   3125     path.moveTo(1, 0);
   3126     path.lineTo(2, 0);
   3127     path.quadTo(0, 1, 2, 2);
   3128     path.close();
   3129 </div>
   3130 
   3131 <div id="testQuadratic85">
   3132     path.moveTo(0, 0);
   3133     path.quadTo(3, 0, 1, 1);
   3134     path.lineTo(1, 1);
   3135     path.close();
   3136     path.moveTo(1, 0);
   3137     path.lineTo(3, 0);
   3138     path.quadTo(0, 1, 1, 2);
   3139     path.close();
   3140 </div>
   3141 
   3142 <div id="testQuadratic86">
   3143     path.moveTo(0, 0);
   3144     path.quadTo(0, 1, 1, 1);
   3145     path.lineTo(2, 3);
   3146     path.close();
   3147     path.moveTo(0, 0);
   3148     path.lineTo(0, 0);
   3149     path.quadTo(1, 1, 1, 3);
   3150     path.close();
   3151 </div>
   3152 
   3153 <div id="testQuadratic87">
   3154     path.moveTo(0, 0);
   3155     path.quadTo(2, 1, 0, 2);
   3156     path.lineTo(2, 3);
   3157     path.close();
   3158     path.moveTo(0, 0);
   3159     path.lineTo(1, 1);
   3160     path.quadTo(0, 2, 3, 2);
   3161     path.close();
   3162 </div>
   3163 
   3164 <div id="testQuadratic88">
   3165     path.moveTo(0, 0);
   3166     path.quadTo(2, 1, 0, 2);
   3167     path.lineTo(2, 2);
   3168     path.close();
   3169     path.moveTo(1, 0);
   3170     path.lineTo(1, 1);
   3171     path.quadTo(0, 2, 2, 2);
   3172     path.close();
   3173 </div>
   3174 
   3175 <div id="testQuadratic89x">
   3176     path.setFillType(SkPath::kEvenOdd_FillType);
   3177     path.moveTo(0, 0);
   3178     path.quadTo(3, 1, 2, 2);
   3179     path.lineTo(0, 3);
   3180     path.close();
   3181     path.moveTo(0, 0);
   3182     path.lineTo(2, 1);
   3183     path.quadTo(3, 1, 3, 3);
   3184     path.close();
   3185 </div>
   3186 
   3187 <div id="testQuadratic90x">
   3188     path.setFillType(SkPath::kEvenOdd_FillType);
   3189     path.moveTo(0, 0);
   3190     path.quadTo(3, 0, 2, 2);
   3191     path.lineTo(1, 3);
   3192     path.close();
   3193     path.moveTo(0, 0);
   3194     path.lineTo(0, 1);
   3195     path.quadTo(3, 2, 2, 3);
   3196     path.close();
   3197 </div>
   3198 
   3199 <div id="testQuadratic91">
   3200     path.moveTo(0, 0);
   3201     path.quadTo(3, 2, 2, 3);
   3202     path.lineTo(2, 3);
   3203     path.close();
   3204     path.moveTo(0, 0);
   3205     path.lineTo(1, 1);
   3206     path.quadTo(2, 1, 2, 3);
   3207     path.close();
   3208 </div>
   3209 
   3210 <div id="testQuadratic92x">
   3211     path.setFillType(SkPath::kEvenOdd_FillType);
   3212     path.moveTo(1, 0);
   3213     path.quadTo(3, 0, 2, 2);
   3214     path.lineTo(2, 2);
   3215     path.close();
   3216     path.moveTo(2, 0);
   3217     path.lineTo(0, 1);
   3218     path.quadTo(3, 2, 2, 3);
   3219     path.close();
   3220 </div>
   3221 
   3222 <div id="testLine82">
   3223     path.addRect(20, 0, 40, 40, SkPath::kCCWDirection);
   3224     path.addRect(24, 20, 36, 30, SkPath::kCCWDirection);
   3225     path.addRect(24, 32, 33, 36, SkPath::kCCWDirection);
   3226 </div>
   3227 
   3228 <div id="testLine82a">
   3229     SkPath path;
   3230     path.addRect(0, 0, 6, 10, SkPath::kCW_Direction);
   3231     path.addRect(2, 2, 4, 4, SkPath::kCW_Direction);
   3232     path.addRect(2, 6, 4, 8, SkPath::kCW_Direction);
   3233     testSimplifyx(path);
   3234 </div>
   3235 
   3236 <div id="testLine82b">
   3237     SkPath path;
   3238     path.addRect(0, 0, 6, 10, SkPath::kCW_Direction);
   3239     path.addRect(2, 2, 4, 4, SkPath::kCW_Direction);
   3240     path.addRect(2, 6, 4, 8, SkPath::kCCW_Direction);
   3241     testSimplifyx(path);
   3242 </div>
   3243 
   3244 <div id="testLine82c">
   3245     SkPath path;
   3246     path.addRect(0, 0, 6, 10, SkPath::kCW_Direction);
   3247     path.addRect(2, 2, 4, 4, SkPath::kCCW_Direction);
   3248     path.addRect(2, 6, 4, 8, SkPath::kCW_Direction);
   3249     testSimplifyx(path);
   3250 </div>
   3251 
   3252 
   3253 <div id="testLine82d">
   3254     SkPath path;
   3255     path.addRect(0, 0, 6, 10, SkPath::kCW_Direction);
   3256     path.addRect(2, 2, 4, 4, SkPath::kCCW_Direction);
   3257     path.addRect(2, 6, 4, 8, SkPath::kCCW_Direction);
   3258     testSimplifyx(path);
   3259 </div>
   3260 
   3261 <div id="testLine82e">
   3262     SkPath path;
   3263     path.addRect(0, 0, 6, 10, SkPath::kCCW_Direction);
   3264     path.addRect(2, 2, 4, 4, SkPath::kCW_Direction);
   3265     path.addRect(2, 6, 4, 8, SkPath::kCW_Direction);
   3266     testSimplifyx(path);
   3267 </div>
   3268 
   3269 <div id="testLine82f">
   3270     SkPath path;
   3271     path.addRect(0, 0, 6, 10, SkPath::kCCW_Direction);
   3272     path.addRect(2, 2, 4, 4, SkPath::kCW_Direction);
   3273     path.addRect(2, 6, 4, 8, SkPath::kCCW_Direction);
   3274     testSimplifyx(path);
   3275 </div>
   3276 
   3277 <div id="testLine82g">
   3278     SkPath path;
   3279     path.addRect(0, 0, 6, 10, SkPath::kCCW_Direction);
   3280     path.addRect(2, 2, 4, 4, SkPath::kCCW_Direction);
   3281     path.addRect(2, 6, 4, 8, SkPath::kCW_Direction);
   3282     testSimplifyx(path);
   3283 </div>
   3284 
   3285 <div id="testLine82h">
   3286     SkPath path;
   3287     path.addRect(0, 0, 6, 10, SkPath::kCCW_Direction);
   3288     path.addRect(2, 2, 4, 4, SkPath::kCCW_Direction);
   3289     path.addRect(2, 6, 4, 8, SkPath::kCCW_Direction);
   3290     testSimplifyx(path);
   3291 </div>
   3292 
   3293 <div id="testLine83">
   3294 path.addRect(10, 30, 30, 40, SkPath::kCCW_Direction);
   3295 path.addRect(0, 12, 12, 18, SkPath::kCCW_Direction);
   3296 path.addRect(4, 13, 13, 16, SkPath::kCCW_Direction);
   3297 </div>
   3298 
   3299 <div id="testLine84x">
   3300     path.setFillType(SkPath::kEvenOdd_FillType);
   3301     path.addRect(0, 12, 60, 30, SkPath::kCCW_Direction);
   3302     path.addRect(10, 20, 40, 30, SkPath::kCCW_Direction);
   3303     path.addRect(0, 12, 12, 12, SkPath::kCCW_Direction);
   3304     path.addRect(4, 12, 13, 13, SkPath::kCCW_Direction);
   3305 </div>
   3306 
   3307 <div id="testLine85">
   3308     path.addRect(36, 0, 66, 60, SkPath::kCCW_Direction);
   3309     path.addRect(20, 0, 40, 40, SkPath::kCCW_Direction);
   3310     path.addRect(12, 0, 24, 24, SkPath::kCCW_Direction);
   3311     path.addRect(32, 0, 36, 41, SkPath::kCCW_Direction);
   3312 </div>
   3313 
   3314 <div id="testQuadralateral1">
   3315     path.moveTo(0, 0);
   3316     path.lineTo(0, 0);
   3317     path.lineTo(0, 0);
   3318     path.lineTo(3, 2);
   3319     path.close();
   3320     path.moveTo(0, 0);
   3321     path.lineTo(2, 1);
   3322     path.lineTo(2, 2);
   3323     path.lineTo(2, 3);
   3324     path.close();
   3325 </div>
   3326 
   3327 <div id="testCubic1">
   3328     path.moveTo(0, 0);
   3329     path.cubicTo(0, 1, 1, 1, 1, 0);
   3330     path.close();
   3331     path.moveTo(1, 0);
   3332     path.cubicTo(0, 0, 0, 1, 1, 1);
   3333     path.close();
   3334 </div>
   3335 
   3336 <div id="testQuadratic93">
   3337     path.moveTo(3, 0);
   3338     path.quadTo(0, 1, 3, 2);
   3339     path.lineTo(0, 3);
   3340     path.close();
   3341     path.moveTo(1, 0);
   3342     path.lineTo(2, 0);
   3343     path.quadTo(1, 1, 2, 2);
   3344     path.close();
   3345 </div>
   3346 
   3347 <div id="cubicOp1d">
   3348     path.setFillType(SkPath::kWinding_FillType);
   3349     path.moveTo(0,1);
   3350     path.cubicTo(0,2, 1,0, 1,0);
   3351     path.close();
   3352     pathB.setFillType(SkPath::kWinding_FillType);
   3353     pathB.moveTo(0,1);
   3354     pathB.cubicTo(0,1, 1,0, 2,0);
   3355     pathB.close();
   3356 </div>
   3357 
   3358 <div id="cubicOp2d">
   3359     path.setFillType(SkPath::kWinding_FillType);
   3360     path.moveTo(0,2);
   3361     path.cubicTo(0,1, 1,0, 1,0);
   3362     path.close();
   3363     pathB.setFillType(SkPath::kWinding_FillType);
   3364     pathB.moveTo(0,1);
   3365     pathB.cubicTo(0,1, 2,0, 1,0);
   3366     pathB.close();
   3367 </div>
   3368 
   3369 <div id="cubicOp3d">
   3370     path.setFillType(SkPath::kWinding_FillType);
   3371     path.moveTo(0,1);
   3372     path.cubicTo(2,3, 1,0, 1,0);
   3373     path.close();
   3374     pathB.setFillType(SkPath::kWinding_FillType);
   3375     pathB.moveTo(0,1);
   3376     pathB.cubicTo(0,1, 1,0, 3,2);
   3377     pathB.close();
   3378 </div>
   3379 
   3380 <div id="cubicOp4d">
   3381     path.setFillType(SkPath::kWinding_FillType);
   3382     path.moveTo(0,1);
   3383     path.cubicTo(0,2, 1,0, 2,0);
   3384     path.close();
   3385     pathB.setFillType(SkPath::kWinding_FillType);
   3386     pathB.moveTo(0,1);
   3387     pathB.cubicTo(0,2, 1,0, 2,0);
   3388     pathB.close();
   3389 </div>
   3390 
   3391 <div id="cubicOp5d">
   3392     path.setFillType(SkPath::kWinding_FillType);
   3393     path.moveTo(0,1);
   3394     path.cubicTo(0,2, 1,0, 2,0);
   3395     path.close();
   3396     pathB.setFillType(SkPath::kWinding_FillType);
   3397     pathB.moveTo(0,1);
   3398     pathB.cubicTo(0,2, 1,0, 2,0);
   3399     pathB.close();
   3400 </div>
   3401 
   3402 <div id="cubicOp6d">
   3403     path.setFillType(SkPath::kWinding_FillType);
   3404     path.moveTo(0,1);
   3405     path.cubicTo(0,6, 1,0, 3,0);
   3406     path.close();
   3407     pathB.setFillType(SkPath::kWinding_FillType);
   3408     pathB.moveTo(0,1);
   3409     pathB.cubicTo(0,3, 1,0, 6,0);
   3410     pathB.close();
   3411 </div>
   3412 
   3413 <div id="cubicOp7d">
   3414     path.setFillType(SkPath::kWinding_FillType);
   3415     path.moveTo(0,1);
   3416     path.cubicTo(3,4, 1,0, 3,0);
   3417     path.close();
   3418     pathB.setFillType(SkPath::kWinding_FillType);
   3419     pathB.moveTo(0,1);
   3420     pathB.cubicTo(0,3, 1,0, 4,3);
   3421     pathB.close();
   3422 </div>
   3423 
   3424 <div id="cubicOp8d">
   3425     path.setFillType(SkPath::kWinding_FillType);
   3426     path.moveTo(0,1);
   3427     path.cubicTo(0,5, 1,0, 4,0);
   3428     path.close();
   3429     pathB.setFillType(SkPath::kWinding_FillType);
   3430     pathB.moveTo(0,1);
   3431     pathB.cubicTo(0,4, 1,0, 5,0);
   3432     pathB.close();
   3433 </div>
   3434 
   3435 <div id="cubicOp9d">
   3436     path.setFillType(SkPath::kWinding_FillType);
   3437     path.moveTo(0,1);
   3438     path.cubicTo(1,6, 1,0, 2,1);
   3439     path.close();
   3440     pathB.setFillType(SkPath::kWinding_FillType);
   3441     pathB.moveTo(0,1);
   3442     pathB.cubicTo(1,2, 1,0, 6,1);
   3443     pathB.close();
   3444 </div>
   3445 
   3446 <div id="quadOp9d">
   3447     path.setFillType(SkPath::kWinding_FillType);
   3448     path.moveTo(0,1);
   3449     path.quadTo(1,6, 1.5f,1);
   3450     path.quadTo(1.5f,0.8f, 2,1);
   3451     path.close();
   3452     pathB.setFillType(SkPath::kWinding_FillType);
   3453     pathB.moveTo(0,1);
   3454     pathB.quadTo(1,2, 1.4f,1);
   3455     pathB.quadTo(3,0.4f, 6,1);
   3456     pathB.close();
   3457 </div>
   3458 
   3459 <div id="lineOp9d">
   3460     path.setFillType(SkPath::kWinding_FillType);
   3461     path.moveTo(0,1);
   3462     path.lineTo(1,6);
   3463     path.lineTo(1.5f,1);
   3464     path.lineTo(1.8f,0.8f);
   3465     path.lineTo(2,1);
   3466     path.close();
   3467     pathB.setFillType(SkPath::kWinding_FillType);
   3468     pathB.moveTo(0,1);
   3469     pathB.lineTo(1,2);
   3470     pathB.lineTo(1.4f,1);
   3471     pathB.lineTo(3,0.4f);
   3472     pathB.lineTo(6,1);
   3473     pathB.close();
   3474 </div>
   3475 
   3476 <div id="cubicOp1i">
   3477     path.setFillType(SkPath::kWinding_FillType);
   3478     path.moveTo(0,1);
   3479     path.cubicTo(1,2, 1,0, 2,1);
   3480     path.close();
   3481     pathB.setFillType(SkPath::kWinding_FillType);
   3482     pathB.moveTo(0,1);
   3483     pathB.cubicTo(1,2, 1,0, 2,1);
   3484     pathB.close();
   3485 </div>
   3486 
   3487 <div id="cubicOp10d">
   3488     path.setFillType(SkPath::kWinding_FillType);
   3489     path.moveTo(0,1);
   3490     path.cubicTo(1,3, 1,0, 4,1);
   3491     path.close();
   3492     pathB.setFillType(SkPath::kWinding_FillType);
   3493     pathB.moveTo(0,1);
   3494     pathB.cubicTo(1,4, 1,0, 3,1);
   3495     pathB.close();
   3496 </div>
   3497 
   3498 <div id="cubicOp11d">
   3499     path.setFillType(SkPath::kWinding_FillType);
   3500     path.moveTo(0,1);
   3501     path.cubicTo(3,4, 1,0, 5,1);
   3502     path.close();
   3503     pathB.setFillType(SkPath::kWinding_FillType);
   3504     pathB.moveTo(0,1);
   3505     pathB.cubicTo(1,5, 1,0, 4,3);
   3506     pathB.close();
   3507 </div>
   3508 
   3509 <div id="cubicOp12d">
   3510     path.setFillType(SkPath::kWinding_FillType);
   3511     path.moveTo(0,1);
   3512     path.cubicTo(1,6, 1,0, 1,0);
   3513     path.close();
   3514     pathB.setFillType(SkPath::kWinding_FillType);
   3515     pathB.moveTo(0,1);
   3516     pathB.cubicTo(0,1, 1,0, 6,1);
   3517     pathB.close();
   3518 </div>
   3519 
   3520 <div id="cubicOp13d">
   3521     path.setFillType(SkPath::kWinding_FillType);
   3522     path.moveTo(0,1);
   3523     path.cubicTo(4,5, 1,0, 5,3);
   3524     path.close();
   3525     pathB.setFillType(SkPath::kWinding_FillType);
   3526     pathB.moveTo(0,1);
   3527     pathB.cubicTo(3,5, 1,0, 5,4);
   3528     pathB.close();
   3529 </div>
   3530 
   3531 <div id="cubicOp14d">
   3532     path.setFillType(SkPath::kWinding_FillType);
   3533     path.moveTo(0,1);
   3534     path.cubicTo(0,2, 2,0, 2,1);
   3535     path.close();
   3536     pathB.setFillType(SkPath::kWinding_FillType);
   3537     pathB.moveTo(0,2);
   3538     pathB.cubicTo(1,2, 1,0, 2,0);
   3539     pathB.close();
   3540 </div>
   3541 
   3542 <div id="cubicOp15d">
   3543     path.setFillType(SkPath::kWinding_FillType);
   3544     path.moveTo(0,1);
   3545     path.cubicTo(3,6, 2,0, 2,1);
   3546     path.close();
   3547     pathB.setFillType(SkPath::kWinding_FillType);
   3548     pathB.moveTo(0,2);
   3549     pathB.cubicTo(1,2, 1,0, 6,3);
   3550     pathB.close();
   3551 </div>
   3552 
   3553 <div id="cubicOp16d">
   3554     path.setFillType(SkPath::kWinding_FillType);
   3555     path.moveTo(0,2);
   3556     path.cubicTo(0,1, 3,0, 1,0);
   3557     path.close();
   3558     pathB.setFillType(SkPath::kWinding_FillType);
   3559     pathB.moveTo(0,3);
   3560     pathB.cubicTo(0,1, 2,0, 1,0);
   3561     pathB.close();
   3562 </div>
   3563 
   3564 <div id="cubicOp17d">
   3565     path.setFillType(SkPath::kWinding_FillType);
   3566     path.moveTo(0,2);
   3567     path.cubicTo(0,2, 4,0, 2,1);
   3568     path.close();
   3569     pathB.setFillType(SkPath::kWinding_FillType);
   3570     pathB.moveTo(0,4);
   3571     pathB.cubicTo(1,2, 2,0, 2,0);
   3572     pathB.close();
   3573 </div>
   3574 
   3575 <div id="cubicOp18d">
   3576     path.setFillType(SkPath::kWinding_FillType);
   3577     path.moveTo(0,1);
   3578     path.cubicTo(3,5, 2,0, 2,1);
   3579     path.close();
   3580     pathB.setFillType(SkPath::kWinding_FillType);
   3581     pathB.moveTo(0,2);
   3582     pathB.cubicTo(1,2, 1,0, 5,3);
   3583     pathB.close();
   3584 </div>
   3585 
   3586 <div id="cubicOp19i">
   3587     path.setFillType(SkPath::kWinding_FillType);
   3588     path.moveTo(0,2);
   3589     path.cubicTo(0,1, 2,1, 6,2);
   3590     path.close();
   3591     pathB.setFillType(SkPath::kWinding_FillType);
   3592     pathB.moveTo(1,2);
   3593     pathB.cubicTo(2,6, 2,0, 1,0);
   3594     pathB.close();
   3595 </div>
   3596 
   3597 <div id="cubicOp20d">
   3598     path.setFillType(SkPath::kWinding_FillType);
   3599     path.moveTo(0,1);
   3600     path.cubicTo(0,1, 6,0, 2,1);
   3601     path.close();
   3602     pathB.setFillType(SkPath::kWinding_FillType);
   3603     pathB.moveTo(0,6);
   3604     pathB.cubicTo(1,2, 1,0, 1,0);
   3605     pathB.close();
   3606 </div>
   3607 
   3608 <div id="cubicOp21d">
   3609     path.setFillType(SkPath::kWinding_FillType);
   3610     path.moveTo(0,1);
   3611     path.cubicTo(0,1, 2,1, 6,5);
   3612     path.close();
   3613     pathB.setFillType(SkPath::kWinding_FillType);
   3614     pathB.moveTo(1,2);
   3615     pathB.cubicTo(5,6, 1,0, 1,0);
   3616     pathB.close();
   3617 </div>
   3618 
   3619 <div id="cubicOp22d">
   3620     path.setFillType(SkPath::kWinding_FillType);
   3621     path.moveTo(0,1);
   3622     path.cubicTo(2,3, 3,0, 2,1);
   3623     path.close();
   3624     pathB.setFillType(SkPath::kWinding_FillType);
   3625     pathB.moveTo(0,3);
   3626     pathB.cubicTo(1,2, 1,0, 3,2);
   3627     pathB.close();
   3628 </div>
   3629 
   3630 <div id="cubicOp23d">
   3631     path.setFillType(SkPath::kWinding_FillType);
   3632     path.moveTo(0,1);
   3633     path.cubicTo(1,2, 4,0, 2,1);
   3634     path.close();
   3635     pathB.setFillType(SkPath::kWinding_FillType);
   3636     pathB.moveTo(0,4);
   3637     pathB.cubicTo(1,2, 1,0, 2,1);
   3638     pathB.close();
   3639 </div>
   3640 
   3641 <div id="cubicOp24d">
   3642     path.setFillType(SkPath::kWinding_FillType);
   3643     path.moveTo(0,1);
   3644     path.cubicTo(1,2, 2,0, 3,2);
   3645     path.close();
   3646     pathB.setFillType(SkPath::kWinding_FillType);
   3647     pathB.moveTo(0,2);
   3648     pathB.cubicTo(2,3, 1,0, 2,1);
   3649     pathB.close();
   3650 </div>
   3651 
   3652 <div id="cubicOp25i">
   3653     path.setFillType(SkPath::kWinding_FillType);
   3654     path.moveTo(0,1);
   3655     path.cubicTo(2,4, 5,0, 3,2);
   3656     path.close();
   3657     pathB.setFillType(SkPath::kWinding_FillType);
   3658     pathB.moveTo(0,5);
   3659     pathB.cubicTo(2,3, 1,0, 4,2);
   3660     pathB.close();
   3661 </div>
   3662 
   3663 <div id="cubicOp26d">
   3664     path.setFillType(SkPath::kWinding_FillType);
   3665     path.moveTo(0,1);
   3666     path.cubicTo(3,4, 4,0, 3,2);
   3667     path.close();
   3668     pathB.setFillType(SkPath::kWinding_FillType);
   3669     pathB.moveTo(0,4);
   3670     pathB.cubicTo(2,3, 1,0, 4,3);
   3671     pathB.close();
   3672 </div>
   3673 
   3674 <div id="cubicOp27d">
   3675     path.setFillType(SkPath::kWinding_FillType);
   3676     path.moveTo(0,1);
   3677     path.cubicTo(3,6, 1,0, 5,2);
   3678     path.close();
   3679     pathB.setFillType(SkPath::kWinding_FillType);
   3680     pathB.moveTo(0,1);
   3681     pathB.cubicTo(2,5, 1,0, 6,3);
   3682     pathB.close();
   3683 </div>
   3684 
   3685 <div id="cubicOp28u">
   3686     path.setFillType(SkPath::kWinding_FillType);
   3687     path.moveTo(0,1);
   3688     path.cubicTo(1,4, 6,0, 3,2);
   3689     path.close();
   3690     pathB.setFillType(SkPath::kWinding_FillType);
   3691     pathB.moveTo(0,6);
   3692     pathB.cubicTo(2,3, 1,0, 4,1);
   3693     pathB.close();
   3694 </div>
   3695 
   3696 <div id="cubicOp29d">
   3697     path.setFillType(SkPath::kWinding_FillType);
   3698     path.moveTo(0,1);
   3699     path.cubicTo(2,5, 6,0, 4,2);
   3700     path.close();
   3701     pathB.setFillType(SkPath::kWinding_FillType);
   3702     pathB.moveTo(0,6);
   3703     pathB.cubicTo(2,4, 1,0, 5,2);
   3704     pathB.close();
   3705 </div>
   3706 
   3707 <div id="cubicOp30d">
   3708     path.setFillType(SkPath::kWinding_FillType);
   3709     path.moveTo(0,1);
   3710     path.cubicTo(2,5, 6,0, 5,3);
   3711     path.close();
   3712     pathB.setFillType(SkPath::kWinding_FillType);
   3713     pathB.moveTo(0,6);
   3714     pathB.cubicTo(3,5, 1,0, 5,2);
   3715     pathB.close();
   3716 </div>
   3717 
   3718 <div id="cubicOp31d">
   3719     path.setFillType(SkPath::kWinding_FillType);
   3720     path.moveTo(0,2);
   3721     path.cubicTo(0,3, 2,1, 4,0);
   3722     path.close();
   3723     pathB.setFillType(SkPath::kWinding_FillType);
   3724     pathB.moveTo(1,2);
   3725     pathB.cubicTo(0,4, 2,0, 3,0);
   3726     pathB.close();
   3727 </div>
   3728 
   3729 <div id="cubicOp32d">
   3730     path.setFillType(SkPath::kWinding_FillType);
   3731     path.moveTo(0,1);
   3732     path.cubicTo(1,2, 6,0, 3,1);
   3733     path.close();
   3734     pathB.setFillType(SkPath::kWinding_FillType);
   3735     pathB.moveTo(0,6);
   3736     pathB.cubicTo(1,3, 1,0, 2,1);
   3737     pathB.close();
   3738 </div>
   3739 
   3740 <div id="cubicOp33i">
   3741     path.setFillType(SkPath::kWinding_FillType);
   3742     path.moveTo(0,1);
   3743     path.cubicTo(1,2, 6,0, 3,1);
   3744     path.close();
   3745     pathB.setFillType(SkPath::kWinding_FillType);
   3746     pathB.moveTo(0,6);
   3747     pathB.cubicTo(1,3, 1,0, 2,1);
   3748     pathB.close();
   3749 </div>
   3750 
   3751 <div id="cubicOp34d">
   3752     path.setFillType(SkPath::kWinding_FillType);
   3753     path.moveTo(0,1);
   3754     path.cubicTo(3,5, 2,1, 3,1);
   3755     path.close();
   3756     pathB.setFillType(SkPath::kWinding_FillType);
   3757     pathB.moveTo(1,2);
   3758     pathB.cubicTo(1,3, 1,0, 5,3);
   3759     pathB.close();
   3760 </div>
   3761 
   3762 <div id="cubicOp35d">
   3763     path.setFillType(SkPath::kWinding_FillType);
   3764     path.moveTo(0,1);
   3765     path.cubicTo(1,5, 2,1, 4,0);
   3766     path.close();
   3767     pathB.setFillType(SkPath::kWinding_FillType);
   3768     pathB.moveTo(1,2);
   3769     pathB.cubicTo(0,4, 1,0, 5,1);
   3770     pathB.close();
   3771 </div>
   3772 
   3773 <div id="cubicOp36u">
   3774     path.setFillType(SkPath::kWinding_FillType);
   3775     path.moveTo(0,1);
   3776     path.cubicTo(1,6, 2,0, 5,1);
   3777     path.close();
   3778     pathB.setFillType(SkPath::kWinding_FillType);
   3779     pathB.moveTo(0,2);
   3780     pathB.cubicTo(1,5, 1,0, 6,1);
   3781     pathB.close();
   3782 </div>
   3783 
   3784 <div id="cubicOp37d">
   3785     path.setFillType(SkPath::kWinding_FillType);
   3786     path.moveTo(0,1);
   3787     path.cubicTo(2,6, 6,1, 4,3);
   3788     path.close();
   3789     pathB.setFillType(SkPath::kWinding_FillType);
   3790     pathB.moveTo(1,6);
   3791     pathB.cubicTo(3,4, 1,0, 6,2);
   3792     pathB.close();
   3793 </div>
   3794 
   3795 <div id="cubicOp38d">
   3796     path.setFillType(SkPath::kWinding_FillType);
   3797     path.moveTo(0,1);
   3798     path.cubicTo(0,6, 3,2, 4,1);
   3799     path.close();
   3800     pathB.setFillType(SkPath::kWinding_FillType);
   3801     pathB.moveTo(2,3);
   3802     pathB.cubicTo(1,4, 1,0, 6,0);
   3803     pathB.close();
   3804 </div>
   3805 
   3806 <div id="cubicOp39d">
   3807     path.setFillType(SkPath::kWinding_FillType);
   3808     path.moveTo(0,1);
   3809     path.cubicTo(2,3, 5,1, 4,3);
   3810     path.close();
   3811     pathB.setFillType(SkPath::kWinding_FillType);
   3812     pathB.moveTo(1,5);
   3813     pathB.cubicTo(3,4, 1,0, 3,2);
   3814     pathB.close();
   3815 </div>
   3816 
   3817 <div id="cubicOp40d">
   3818     path.setFillType(SkPath::kWinding_FillType);
   3819     path.moveTo(0,1);
   3820     path.cubicTo(1,5, 3,2, 4,2);
   3821     path.close();
   3822     pathB.setFillType(SkPath::kWinding_FillType);
   3823     pathB.moveTo(2,3);
   3824     pathB.cubicTo(2,4, 1,0, 5,1);
   3825     pathB.close();
   3826 </div>
   3827 
   3828 <div id="cubicOp41i">
   3829     path.setFillType(SkPath::kWinding_FillType);
   3830     path.moveTo(0,1);
   3831     path.cubicTo(2,6, 4,3, 6,4);
   3832     path.close();
   3833     pathB.setFillType(SkPath::kWinding_FillType);
   3834     pathB.moveTo(3,4);
   3835     pathB.cubicTo(4,6, 1,0, 6,2);
   3836     pathB.close();
   3837 </div>
   3838 
   3839 <div id="cubicOp42d">
   3840     path.setFillType(SkPath::kWinding_FillType);
   3841     path.moveTo(0,1);
   3842     path.cubicTo(1,2, 6,5, 5,4);
   3843     path.close();
   3844     pathB.setFillType(SkPath::kWinding_FillType);
   3845     pathB.moveTo(5,6);
   3846     pathB.cubicTo(4,5, 1,0, 2,1);
   3847     pathB.close();
   3848 </div>
   3849 
   3850 <div id="cubicOp43d">
   3851     path.setFillType(SkPath::kWinding_FillType);
   3852     path.moveTo(0,2);
   3853     path.cubicTo(1,2, 4,0, 3,1);
   3854     path.close();
   3855     pathB.setFillType(SkPath::kWinding_FillType);
   3856     pathB.moveTo(0,4);
   3857     pathB.cubicTo(1,3, 2,0, 2,1);
   3858     pathB.close();
   3859 </div>
   3860 
   3861 <div id="cubicOp44d">
   3862     path.setFillType(SkPath::kWinding_FillType);
   3863     path.moveTo(0,2);
   3864     path.cubicTo(3,6, 4,0, 3,2);
   3865     path.close();
   3866     pathB.setFillType(SkPath::kWinding_FillType);
   3867     pathB.moveTo(0,4);
   3868     pathB.cubicTo(2,3, 2,0, 6,3);
   3869     pathB.close();
   3870 </div>
   3871 
   3872 <div id="cubicOp45d">
   3873     path.setFillType(SkPath::kWinding_FillType);
   3874     path.moveTo(0,2);
   3875     path.cubicTo(2,4, 4,0, 3,2);
   3876     path.close();
   3877     pathB.setFillType(SkPath::kWinding_FillType);
   3878     pathB.moveTo(0,4);
   3879     pathB.cubicTo(2,3, 2,0, 4,2);
   3880     pathB.close();
   3881 </div>
   3882 
   3883 <div id="cubicOp46d">
   3884     path.setFillType(SkPath::kWinding_FillType);
   3885     path.moveTo(0,2);
   3886     path.cubicTo(3,5, 5,0, 4,2);
   3887     path.close();
   3888     pathB.setFillType(SkPath::kWinding_FillType);
   3889     pathB.moveTo(0,5);
   3890     pathB.cubicTo(2,4, 2,0, 5,3);
   3891     pathB.close();
   3892 </div>
   3893 
   3894 <div id="cubicOp47d">
   3895     path.setFillType(SkPath::kWinding_FillType);
   3896     path.moveTo(0,1);
   3897     path.cubicTo(1,6, 6,2, 5,4);
   3898     path.close();
   3899     pathB.setFillType(SkPath::kWinding_FillType);
   3900     pathB.moveTo(2,6);
   3901     pathB.cubicTo(4,5, 1,0, 6,1);
   3902     pathB.close();
   3903 </div>
   3904 
   3905 <div id="cubicOp48d">
   3906     path.setFillType(SkPath::kWinding_FillType);
   3907     path.moveTo(0,2);
   3908     path.cubicTo(2,3, 5,1, 3,2);
   3909     path.close();
   3910     pathB.setFillType(SkPath::kWinding_FillType);
   3911     pathB.moveTo(1,5);
   3912     pathB.cubicTo(2,3, 2,0, 3,2);
   3913     pathB.close();
   3914 </div>
   3915 
   3916 <div id="cubicOp49d">
   3917     path.setFillType(SkPath::kWinding_FillType);
   3918     path.moveTo(0,2);
   3919     path.cubicTo(1,5, 3,2, 4,1);
   3920     path.close();
   3921     pathB.setFillType(SkPath::kWinding_FillType);
   3922     pathB.moveTo(2,3);
   3923     pathB.cubicTo(1,4, 2,0, 5,1);
   3924     pathB.close();
   3925 </div>
   3926 
   3927 <div id="cubicOp50d">
   3928     path.setFillType(SkPath::kWinding_FillType);
   3929     path.moveTo(0,3);
   3930     path.cubicTo(1,6, 5,0, 5,1);
   3931     path.close();
   3932     pathB.setFillType(SkPath::kWinding_FillType);
   3933     pathB.moveTo(0,5);
   3934     pathB.cubicTo(1,5, 3,0, 6,1);
   3935     pathB.close();
   3936 </div>
   3937 
   3938 <div id="cubicOp51d">
   3939     path.setFillType(SkPath::kWinding_FillType);
   3940     path.moveTo(0,3);
   3941     path.cubicTo(1,2, 4,1, 6,0);
   3942     path.close();
   3943     pathB.setFillType(SkPath::kWinding_FillType);
   3944     pathB.moveTo(1,4);
   3945     pathB.cubicTo(0,6, 3,0, 2,1);
   3946     pathB.close();
   3947 </div>
   3948 
   3949 <div id="cubicOp52d">
   3950     path.setFillType(SkPath::kWinding_FillType);
   3951     path.moveTo(0,2);
   3952     path.cubicTo(1,2, 5,4, 4,3);
   3953     path.close();
   3954     pathB.setFillType(SkPath::kWinding_FillType);
   3955     pathB.moveTo(4,5);
   3956     pathB.cubicTo(3,4, 2,0, 2,1);
   3957     pathB.close();
   3958 </div>
   3959 
   3960 <div id="cubicOp53d">
   3961     path.setFillType(SkPath::kWinding_FillType);
   3962     path.moveTo(0,3);
   3963     path.cubicTo(1,2, 5,3, 2,1);
   3964     path.close();
   3965     pathB.setFillType(SkPath::kWinding_FillType);
   3966     pathB.moveTo(3,5);
   3967     pathB.cubicTo(1,2, 3,0, 2,1);
   3968     pathB.close();
   3969 </div>
   3970 
   3971 <div id="cubicOp54d">
   3972     path.setFillType(SkPath::kWinding_FillType);
   3973     path.moveTo(0,4);
   3974     path.cubicTo(1,3, 5,4, 4,2);
   3975     path.close();
   3976     pathB.setFillType(SkPath::kWinding_FillType);
   3977     pathB.moveTo(4,5);
   3978     pathB.cubicTo(2,4, 4,0, 3,1);
   3979     pathB.close();
   3980 </div>
   3981 
   3982 <div id="cubicOp55d">
   3983     path.setFillType(SkPath::kWinding_FillType);
   3984     path.moveTo(0,5);
   3985     path.cubicTo(1,3, 3,2, 5,0);
   3986     path.close();
   3987     pathB.setFillType(SkPath::kWinding_FillType);
   3988     pathB.moveTo(2,3);
   3989     pathB.cubicTo(0,5, 5,0, 3,1);
   3990     pathB.close();
   3991 </div>
   3992 
   3993 <div id="cubicOp56d">
   3994     path.setFillType(SkPath::kWinding_FillType);
   3995     path.moveTo(0,1);
   3996     path.cubicTo(2,6, 5,0, 2,1);
   3997     path.close();
   3998     pathB.setFillType(SkPath::kWinding_FillType);
   3999     pathB.moveTo(0,5);
   4000     pathB.cubicTo(1,2, 1,0, 6,2);
   4001     pathB.close();
   4002 </div>
   4003 
   4004 <div id="cubicOp57d">
   4005     path.setFillType(SkPath::kWinding_FillType);
   4006     path.moveTo(0,5);
   4007     path.cubicTo(0,5, 5,4, 6,4);
   4008     path.close();
   4009     pathB.setFillType(SkPath::kWinding_FillType);
   4010     pathB.moveTo(4,5);
   4011     pathB.cubicTo(4,6, 5,0, 5,0);
   4012     pathB.close();
   4013 </div>
   4014 
   4015 <div id="cubicOp58d">
   4016     path.setFillType(SkPath::kWinding_FillType);
   4017     path.moveTo(0,5);
   4018     path.cubicTo(3,4, 6,5, 5,3);
   4019     path.close();
   4020     pathB.setFillType(SkPath::kWinding_FillType);
   4021     pathB.moveTo(5,6);
   4022     pathB.cubicTo(3,5, 5,0, 4,3);
   4023     pathB.close();
   4024 </div>
   4025 
   4026 <div id="cubicOp59d">
   4027     path.setFillType(SkPath::kWinding_FillType);
   4028     path.moveTo(0,1);
   4029     path.cubicTo(5,6, 4,0, 4,1);
   4030     path.close();
   4031     pathB.setFillType(SkPath::kWinding_FillType);
   4032     pathB.moveTo(0,4);
   4033     pathB.cubicTo(1,4, 1,0, 6,5);
   4034     pathB.close();
   4035 </div>
   4036 
   4037 <div id="cubicOp60d">
   4038     path.setFillType(SkPath::kWinding_FillType);
   4039     path.moveTo(0,2);
   4040     path.cubicTo(4,6, 6,0, 5,2);
   4041     path.close();
   4042     pathB.setFillType(SkPath::kWinding_FillType);
   4043     pathB.moveTo(0,6);
   4044     pathB.cubicTo(2,5, 2,0, 6,4);
   4045     pathB.close();
   4046 </div>
   4047 
   4048 <div id="cubicOp61d">
   4049     path.setFillType(SkPath::kWinding_FillType);
   4050     path.moveTo(1,2);
   4051     path.cubicTo(0,5, 3,2, 6,1);
   4052     path.close();
   4053     pathB.setFillType(SkPath::kWinding_FillType);
   4054     pathB.moveTo(2,3);
   4055     pathB.cubicTo(1,6, 2,1, 5,0);
   4056     pathB.close();
   4057 </div>
   4058 
   4059 <div id="cubicOp62d">
   4060     path.setFillType(SkPath::kWinding_FillType);
   4061     path.moveTo(1,3);
   4062     path.cubicTo(5,6, 5,3, 5,4);
   4063     path.close();
   4064     pathB.setFillType(SkPath::kWinding_FillType);
   4065     pathB.moveTo(3,5);
   4066     pathB.cubicTo(4,5, 3,1, 6,5);
   4067     pathB.close();
   4068 </div>
   4069 
   4070 <div id="cubicOp63d">
   4071     path.setFillType(SkPath::kWinding_FillType);
   4072     path.moveTo(2,3);
   4073     path.cubicTo(0,4, 3,2, 5,3);
   4074     path.close();
   4075     pathB.setFillType(SkPath::kWinding_FillType);
   4076     pathB.moveTo(2,3);
   4077     pathB.cubicTo(3,5, 3,2, 4,0);
   4078     pathB.close();
   4079 </div>
   4080 
   4081 <div id="testQuadratic94">
   4082     SkPath path;
   4083     path.moveTo(0, 0);
   4084     path.lineTo(8, 8);
   4085     path.quadTo(8, 4, 4, 4);
   4086     path.quadTo(4, 0, 0, 0);
   4087     path.close();
   4088     testSimplify(reporter, path);
   4089 </div>
   4090 
   4091 <div id="testQuadratic95">
   4092     SkPath path;
   4093     path.moveTo(8, 8);
   4094     path.lineTo(0, 0);
   4095     path.quadTo(4, 0, 4, 4);
   4096     path.quadTo(8, 4, 8, 8);
   4097     path.close();
   4098     testSimplify(reporter, path);
   4099 </div>
   4100 
   4101 <div id="testQuadratic96">
   4102     SkPath path;
   4103     path.moveTo(8, 0);
   4104     path.lineTo(0, 8);
   4105     path.quadTo(0, 4, 4, 4);
   4106     path.quadTo(4, 0, 8, 0);
   4107     path.close();
   4108     testSimplify(reporter, path);
   4109 </div>
   4110 
   4111 <div id="testQuadratic97">
   4112     SkPath path;
   4113     path.moveTo(0, 8);
   4114     path.lineTo(8, 0);
   4115     path.quadTo(4, 0, 4, 4);
   4116     path.quadTo(0, 4, 0, 8);
   4117     path.close();
   4118     testSimplify(reporter, path);
   4119 </div>
   4120 
   4121 <div id="testTriangle2">
   4122     path.moveTo(0, 0);
   4123     path.lineTo(1, 0);
   4124     path.lineTo(3, 3);
   4125     path.close();
   4126     path.moveTo(1, 1);
   4127     path.lineTo(2, 3);
   4128     path.lineTo(1, 2);
   4129     path.close();
   4130 </div>
   4131 
   4132 </div>
   4133 
   4134 <script type="text/javascript">
   4135 
   4136 var testDivs = [
   4137     testTriangle2,
   4138     testQuadratic97,
   4139     testQuadratic96,
   4140     testQuadratic95,
   4141     testQuadratic94,
   4142     testLine16,
   4143     cubicOp63d,
   4144     cubicOp62d,
   4145     cubicOp61d,
   4146     cubicOp60d,
   4147     cubicOp59d,
   4148     cubicOp58d,
   4149     cubicOp57d,
   4150     cubicOp56d,
   4151     cubicOp55d,
   4152     cubicOp54d,
   4153     cubicOp53d,
   4154     cubicOp52d,
   4155     cubicOp51d,
   4156     cubicOp50d,
   4157     cubicOp49d,
   4158     cubicOp48d,
   4159     cubicOp47d,
   4160     cubicOp46d,
   4161     cubicOp45d,
   4162     cubicOp44d,
   4163     cubicOp43d,
   4164     cubicOp42d,
   4165     cubicOp41i,
   4166     cubicOp40d,
   4167     cubicOp39d,
   4168     cubicOp38d,
   4169     cubicOp37d,
   4170     cubicOp36u,
   4171     cubicOp35d,
   4172     cubicOp34d,
   4173     cubicOp33i,
   4174     cubicOp32d,
   4175     cubicOp31d,
   4176     cubicOp30d,
   4177     cubicOp29d,
   4178     cubicOp28u,
   4179     cubicOp27d,
   4180     cubicOp26d,
   4181     cubicOp25i,
   4182     cubicOp24d,
   4183     cubicOp23d,
   4184     cubicOp18d,
   4185     cubicOp15d,
   4186     cubicOp14d,
   4187     cubicOp13d,
   4188     cubicOp11d,
   4189     cubicOp9d,
   4190     cubicOp8d,
   4191     cubicOp7d,
   4192     cubicOp6d,
   4193     cubicOp5d,
   4194     cubicOp10d,
   4195     cubicOp22d,
   4196     cubicOp21d,
   4197     cubicOp20d,
   4198     cubicOp19i,
   4199     cubicOp17d,
   4200     cubicOp16d,
   4201     cubicOp12d,
   4202     cubicOp1i,
   4203     lineOp9d,
   4204     quadOp9d,
   4205     cubicOp4d,
   4206     cubicOp3d,
   4207     cubicOp2d,
   4208     cubicOp1d,
   4209     testQuadratic93,
   4210     testCubic1,
   4211     testQuadralateral1,
   4212     testLine85,
   4213     testLine84x,
   4214     testLine83,
   4215     testLine82h,
   4216     testLine82g,
   4217     testLine82f,
   4218     testLine82e,
   4219     testLine82d,
   4220     testLine82c,
   4221     testLine82b,
   4222     testLine82a,
   4223     testLine82,
   4224     testQuadratic92x,
   4225     testQuadratic91,
   4226     testQuadratic90x,
   4227     testQuadratic89x,
   4228     testQuadratic88,
   4229     testQuadratic87,
   4230     testQuadratic86,
   4231     testQuadratic85,
   4232     testQuadratic84,
   4233     testQuadratic83,
   4234     testQuadratic82,
   4235     testQuadratic81,
   4236     testQuadratic80,
   4237     testQuadratic79,
   4238     testQuadratic78,
   4239     testQuadratic77,
   4240     testQuadratic76,
   4241     testQuadratic75,
   4242     testQuadratic74,
   4243     testQuadratic73,
   4244     testQuadratic72,
   4245     testQuadratic71,
   4246     testQuadratic70x,
   4247     testQuadratic69,
   4248     testQuadratic68,
   4249     testQuadratic67x,
   4250     testQuadratic66,
   4251     testQuadratic65,
   4252     testQuadratic64,
   4253     testQuadratic63,
   4254     testLine1a,
   4255     testQuadratic62x,
   4256     testLine81,
   4257     testQuadratic61,
   4258     testQuadratic60,
   4259     testQuadratic59,
   4260     testQuadratic59o,
   4261     testQuadratic59s,
   4262     testQuadratic58o,
   4263     testQuadratic58a,
   4264     testQuadratic58s,
   4265     testQuadratic57o,
   4266     testQuadratic57s,
   4267     testQuadratic56o,
   4268     testQuadratic56s,
   4269     testQuadratic55o,
   4270     testQuadratic55s,
   4271     testQuadratic54,
   4272     testQuadratic53o,
   4273     testQuadratic53s,
   4274     testQuadratic52sa,
   4275     testQuadratic52sb,
   4276     testQuadratic52sc,
   4277     testQuadratic52o,
   4278     testQuadratic52s,
   4279     testQuadratic51,
   4280     testQuadratic50o,
   4281     testQuadratic50s,
   4282     testQuadratic49s,
   4283     testQuadratic48o,
   4284     testQuadratic48s,
   4285     testQuadratic47o,
   4286     testQuadratic47s,
   4287     testQuadratic46o,
   4288     testQuadratic46s,
   4289     testQuadratic45o,
   4290     testQuadratic45s,
   4291     testQuadratic44o,
   4292     testQuadratic44s,
   4293     testQuadratic43o,
   4294     testQuadratic43s,
   4295     testQuadratic42o,
   4296     testQuadratic42s,
   4297     testQuadratic41o,
   4298     testQuadratic41s,
   4299     testQuadratic40xb,
   4300     testQuadratic40xa,
   4301     testQuadratic40x,
   4302     testQuadratic39,
   4303     testQuadratic39a,
   4304     testQuadratic38,
   4305     testQuadratic37,
   4306     testQuadratic36,
   4307     testQuadratic35,
   4308     testQuadratic34,
   4309     testQuadratic33,
   4310     testQuadratic32,
   4311     testQuadratic31,
   4312     testQuadratic30,
   4313     testQuadratic29,
   4314     testQuadratic28,
   4315     testQuadratic27,
   4316     testQuadratic26,
   4317     testQuadratic25,
   4318     testQuadratic24,
   4319     testQuadratic23,
   4320     testQuadratic22,
   4321     testQuadratic21,
   4322     testQuadratic20,
   4323     testQuadratic19,
   4324     testQuadratic18,
   4325     testQuadratic17x,
   4326     testQuadratic16b,
   4327     testQuadratic16a,
   4328     testQuadratic15,
   4329     testQuadratic14,
   4330     testQuadratic13b,
   4331     testQuadratic13a,
   4332     testQuadratic12,
   4333     testQuadratic11b,
   4334     testQuadratic11a,
   4335     testQuadratic10b,
   4336     testQuadratic10a,
   4337     testQuadratic9a,
   4338     testQuadratic9,
   4339     testQuadratic8,
   4340     testQuadratic7,
   4341     testQuadratic6,
   4342     testQuadratic5,
   4343     testQuadratic4x,
   4344     testQuadratic3,
   4345     testQuadratic2,
   4346     testQuadratic1,
   4347     testLine4x,
   4348     testLine3x,
   4349     testLine2x,
   4350     testLine1x,
   4351     testQuadralateral9,
   4352     testQuadralateral8,
   4353     testQuadralateral7,
   4354     testFauxQuadralateral6d,
   4355     testFauxQuadralateral6c,
   4356     testFauxQuadralateral6b,
   4357     testFauxQuadralateral6a,
   4358     testFauxQuadralateral6,
   4359     testQuadralateral6a,
   4360     testQuadralateral6,
   4361     testQuadralateral5,
   4362     testNondegenerate4,
   4363     testNondegenerate3,
   4364     testNondegenerate2,
   4365     testNondegenerate1,
   4366     testDegenerate4,
   4367     testDegenerate3,
   4368     testDegenerate2,
   4369     testDegenerate1,
   4370     testLine79,
   4371     testLine78,
   4372     testLine77,
   4373     testLine76,
   4374     testLine75,
   4375     testLine74,
   4376     testLine73,
   4377     testLine72,
   4378     testLine71,
   4379     testLine70,
   4380     testLine69,
   4381     testLine68f,
   4382     testLine68e,
   4383     testLine68d,
   4384     testLine68c,
   4385     testLine68b,
   4386     testLine68a,
   4387     testLine67,
   4388     testLine66,
   4389     testLine65,
   4390     testLine64,
   4391     testLine63,
   4392     testLine62,
   4393     testLine61,
   4394     testLine60,
   4395     testLine59,
   4396     testLine58,
   4397     testLine57,
   4398     testLine56,
   4399     testLine55,
   4400     testLine54,
   4401     testLine53,
   4402     testLine52,
   4403     testLine51,
   4404     testLine50,
   4405     testLine49,
   4406     testLine48,
   4407     testLine47,
   4408     testLine46,
   4409     testLine45,
   4410     testLine44,
   4411     testLine43,
   4412     testLine42,
   4413     testLine41,
   4414     testLine40,
   4415     testLine39,
   4416     testLine38,
   4417     testLine37,
   4418     testLine36,
   4419     testLine35,
   4420     testLine34,
   4421     testLine33,
   4422     testLine32,
   4423     testLine31,
   4424     testLine30,
   4425     testLine29,
   4426     testLine28,
   4427     testLine24,
   4428     testLine22,
   4429     testLine19,
   4430     testLine17,
   4431     testLine16,
   4432     testLine13,
   4433     testLine12,
   4434     testLine9,
   4435     testLine7b,
   4436     testLine7,
   4437     testLine6,
   4438     testLine5,
   4439     testSimplifyQuadratic21,
   4440     testSimplifyQuadratic20,
   4441     testSimplifyQuadratic19,
   4442     testSimplifyQuadratic18,
   4443     testSimplifyQuadratic17,
   4444     testSimplifyQuadratic16,
   4445     testSimplifyQuadratic15,
   4446     testSimplifyQuadratic14,
   4447     testSimplifyQuadratic13,
   4448     testSimplifyQuadratic12,
   4449     testSimplifyQuadratic11,
   4450     testSimplifyQuadratic10,
   4451     testSimplifyQuadratic9,
   4452     testSimplifyQuadratic8,
   4453     testSimplifyQuadratic7,
   4454     testSimplifyQuadratic6,
   4455     testSimplifyQuadratic5,
   4456     testSimplifyQuadratic4,
   4457     testSimplifyQuadratic3,
   4458     testSimplifyQuadratic2,
   4459     testSimplifyQuadratic1,
   4460 ];
   4461 
   4462 var scale, columns, rows, xStart, yStart;
   4463 
   4464 var ticks = 0.1;
   4465 var at_x = 13 + 0.5;
   4466 var at_y = 13 + 0.5;
   4467 var decimal_places = 0; // make this 3 to show more precision
   4468 
   4469 var tests = [];
   4470 var testTitles = [];
   4471 var testIndex = 0;
   4472 var hasXor = false;
   4473 var draw_labels = true;
   4474 
   4475 var ctx;
   4476 
   4477 function parse(test, title) {
   4478     var contours = [];
   4479     var contourStrs = test.split("path.close();");
   4480     var pattern = /-?\d+\.*\d*/g;
   4481     hasXor = test.split("kEvenOdd_FillType").length > 1;
   4482     for (var c in contourStrs) {
   4483         var contour = contourStrs[c];
   4484         var verbStrs = contour.split("path");
   4485         var verbs = [];
   4486         for (var v in verbStrs) {
   4487             var verbStr = verbStrs[v];
   4488             var points = verbStr.match(pattern);
   4489             var pts = [];
   4490             for (var wd in points) {
   4491                 var num = parseFloat(points[wd]);
   4492                 if (isNaN(num)) continue;
   4493                 pts.push(num);
   4494             }
   4495             if (pts.length > 0)
   4496                 verbs.push(pts);
   4497         }
   4498         if (verbs.length > 0) {
   4499             var lastIndex = verbs.length - 1;
   4500             var lastVerb = verbs[lastIndex];
   4501             var lastLen = lastVerb.length;
   4502             if (verbs[0][0] != lastVerb[lastLen - 2] && verbs[0][1] != lastVerb[lastLen - 1]) {
   4503                 var lastPts = [];
   4504                 lastPts.push(verbs[0][0]);
   4505                 lastPts.push(verbs[0][1]);
   4506                 verbs.push(lastPts);
   4507             }
   4508             contours.push(verbs);
   4509         }
   4510     }
   4511     if (contours.length > 0) {
   4512         tests.push(contours);
   4513         testTitles.push(title);
   4514     }
   4515 }
   4516 
   4517 function parseRect(test, title) {
   4518     var contours = [];
   4519     var rectStrs = test.split("path.addRect");
   4520     var pattern = /-?\d+\.*\d*/g;
   4521     hasXor = test.split("kEvenOdd_FillType").length > 1;
   4522     for (var r in rectStrs) {
   4523         var rect = rectStrs[r];
   4524         var sideStrs = rect.match(pattern);
   4525         var ccw = rect.split("kCCW_Direction").length > 1;
   4526         var sides = [];
   4527         for (var wd in sideStrs) {
   4528             var num = parseFloat(sideStrs[wd]);
   4529             if (isNaN(num)) continue;
   4530             sides.push(num);
   4531         }
   4532         if (sides.length == 0)
   4533             continue;
   4534         var verbs = [];
   4535         var topLeft = [];
   4536         topLeft.push(sides[0]); topLeft.push(sides[1]);
   4537         var topRight = [];
   4538         topRight.push(sides[2]); topRight.push(sides[1]);
   4539         var botLeft = [];
   4540         botLeft.push(sides[0]); botLeft.push(sides[3]);
   4541         var botRight = [];
   4542         botRight.push(sides[2]); botRight.push(sides[3]);
   4543         verbs.push(topLeft);
   4544         if (!ccw) {
   4545             verbs.push(topRight);
   4546             verbs.push(botRight);
   4547             verbs.push(botLeft);
   4548         } else {
   4549             verbs.push(botLeft);
   4550             verbs.push(botRight);
   4551             verbs.push(topRight);
   4552         }
   4553         verbs.push(topLeft);
   4554         contours.push(verbs);
   4555     }
   4556     if (contours.length > 0) {
   4557         tests.push(contours);
   4558         testTitles.push(title);
   4559     }
   4560 }
   4561 
   4562 function init(test) {
   4563     var canvas = document.getElementById('canvas');
   4564     if (!canvas.getContext) return;
   4565     canvas.width = window.innerWidth - at_x;
   4566     canvas.height = window.innerHeight - at_y;
   4567     ctx = canvas.getContext('2d');
   4568     var xmin = Infinity;
   4569     var xmax = -Infinity;
   4570     var ymin = Infinity;
   4571     var ymax = -Infinity;
   4572     for (var contours in test) {
   4573         var contour = test[contours];
   4574         for (var verbs in contour) {
   4575             var verb = contour[verbs];
   4576             var last = verb.length;
   4577             for (var idx = 0; idx < last; idx += 2) {
   4578                 xmin = Math.min(xmin, verb[idx]);
   4579                 xmax = Math.max(xmax, verb[idx]);
   4580                 ymin = Math.min(ymin, verb[idx + 1]);
   4581                 ymax = Math.max(ymax, verb[idx + 1]);
   4582             }
   4583         }
   4584     }
   4585     var subscale = 1;
   4586     while ((xmax - xmin) * subscale < 0.1 && (ymax - ymin) * subscale < 0.1) {
   4587         subscale *= 10;
   4588     }
   4589     columns = Math.ceil(xmax) - Math.floor(xmin) + 1;
   4590     rows = Math.ceil(ymax) - Math.floor(ymin) + 1;
   4591     xStart = Math.floor(xmin);
   4592     yStart = Math.floor(ymin);
   4593     var hscale = ctx.canvas.width / columns / ticks;
   4594     var vscale = ctx.canvas.height / rows / ticks;
   4595     scale = Math.floor(Math.min(hscale, vscale)) * subscale;
   4596 }
   4597 
   4598 function drawPoint(px, py, xoffset, yoffset, unit) {
   4599     var label = px.toFixed(decimal_places) + ", " + py.toFixed(decimal_places);
   4600     var _px = px * unit + xoffset;
   4601     var _py = py * unit + yoffset;
   4602     ctx.beginPath();
   4603     ctx.arc(_px, _py, 3, 0, Math.PI*2, true);
   4604     ctx.closePath();
   4605     ctx.fill();
   4606     ctx.fillText(label, _px + 5, _py);
   4607 }
   4608 
   4609 function draw(test, title, _at_x, _at_y, scale) {
   4610     ctx.fillStyle = "rgba(0,0,0, 0.1)";
   4611     ctx.font = "normal 50px Arial";
   4612     ctx.fillText(title, 50, 50);
   4613     ctx.font = "normal 10px Arial";
   4614     
   4615     var unit = scale * ticks;
   4616     ctx.lineWidth = 1;
   4617     var i;
   4618     for (i = 0; i <= rows * ticks; ++i) {
   4619         ctx.strokeStyle = (i % ticks) != 0 ? "rgb(160,160,160)" : "black";
   4620         ctx.beginPath();
   4621         ctx.moveTo(_at_x + 0, _at_y + i * scale);
   4622         ctx.lineTo(_at_x + unit * columns, _at_y + i * scale);
   4623         ctx.stroke();
   4624     }
   4625     for (i = 0; i <= columns * ticks; ++i) {
   4626         ctx.strokeStyle = (i % ticks) != 0 ? "rgb(160,160,160)" : "black";
   4627         ctx.beginPath();
   4628         ctx.moveTo(_at_x + i * scale, _at_y + 0);
   4629         ctx.lineTo(_at_x + i * scale, _at_y + unit * rows);
   4630         ctx.stroke();
   4631     }
   4632  
   4633     var xoffset = xStart * -unit + _at_x;
   4634     var yoffset = yStart * -unit + _at_y;
   4635 
   4636     ctx.fillStyle = "rgb(40,80,60)"
   4637     for (i = 0; i <= columns; i += (1 / ticks))
   4638     {
   4639         num = (xoffset - _at_x) / -unit + i; 
   4640         ctx.fillText(num.toFixed(0), i * unit + _at_y - 5, 10);
   4641     }
   4642     for (i = 0; i <= rows; i += (1 / ticks))
   4643     {
   4644         num = (yoffset - _at_x) / -unit + i; 
   4645         ctx.fillText(num.toFixed(0), 0, i * unit + _at_y + 0);
   4646     }
   4647 
   4648     ctx.strokeStyle = "red";
   4649     var contours, verbs, pts;
   4650     ctx.beginPath();
   4651     for (contours in test) {
   4652         var contour = test[contours];
   4653         if (contours == 2) ctx.strokeStyle = "blue";
   4654         var first = true;
   4655         for (verbs in contour) {
   4656             var verb = contour[verbs];
   4657             switch (verb.length) {
   4658                 case 2:
   4659                     if (first) {
   4660                         ctx.moveTo(xoffset + verb[0] * unit, yoffset + verb[1] * unit);
   4661                         first = false;
   4662                     } else
   4663                         ctx.lineTo(xoffset + verb[0] * unit, yoffset + verb[1] * unit);
   4664                     break;
   4665                 case 4:
   4666                     ctx.quadraticCurveTo(xoffset + verb[0] * unit, yoffset + verb[1] * unit,
   4667                         xoffset + verb[2] * unit, yoffset + verb[3] * unit);
   4668                     break;
   4669                 case 6:
   4670                     ctx.bezierCurveTo(xoffset + verb[0] * unit, yoffset + verb[1] * unit,
   4671                         xoffset + verb[2] * unit, yoffset + verb[3] * unit,
   4672                         xoffset + verb[4] * unit, yoffset + verb[5] * unit);
   4673                     break;
   4674             }
   4675         }
   4676         ctx.closePath();
   4677     }
   4678   // uncomment if ever part of the standard
   4679   //  ctx.fillRule=hasXor ? evenodd : nonzero;
   4680     ctx.stroke();
   4681     ctx.fillStyle="rgba(192,192,255, 0.3)";
   4682     ctx.fill();
   4683     
   4684     if (!draw_labels) {
   4685         return;
   4686     }
   4687     ctx.fillStyle="blue";
   4688     for (contours in test) {
   4689         var contour = test[contours];
   4690         for (verbs in contour) {
   4691             var verb = contour[verbs];
   4692             for (i = 0; i < verb.length; i += 2) {
   4693                 x = verb[i];
   4694                 y = verb[i + 1];
   4695                 drawPoint(x, y, xoffset, yoffset, unit);
   4696             }
   4697         }
   4698     }
   4699 }
   4700 
   4701 var mouseX = Infinity, mouseY;
   4702 
   4703 function calcXY() {
   4704     var e = window.event;
   4705 	var tgt = e.target || e.srcElement;
   4706     var left = tgt.offsetLeft;
   4707     var top = tgt.offsetTop;
   4708     var unit = scale * ticks;
   4709     mouseX = (e.clientX - left - Math.ceil(at_x) + 1) / unit + xStart;
   4710     mouseY = (e.clientY - top - Math.ceil(at_y)) / unit + yStart;
   4711 }
   4712 
   4713 function handleMouseOver() {
   4714     calcXY();
   4715     var num = mouseX.toFixed(3) + ", " + mouseY.toFixed(3);
   4716     ctx.beginPath();
   4717     ctx.rect(300,0,72,9);
   4718     ctx.fillStyle="white";
   4719     ctx.fill();
   4720     ctx.fillStyle="black";
   4721     ctx.fillText(num, 300, 7);
   4722 }
   4723 
   4724 function handleMouseClick() {
   4725     calcXY();
   4726 //    drawInset();
   4727 }
   4728 
   4729 function drawTop() {
   4730     init(tests[testIndex]);
   4731     redraw();
   4732 }
   4733 
   4734 function redraw() {
   4735     ctx.beginPath();
   4736     ctx.rect(0, 0, ctx.canvas.width, ctx.canvas.height);
   4737     ctx.fillStyle="white";
   4738     ctx.fill();
   4739     draw(tests[testIndex], testTitles[testIndex], at_x, at_y, scale);
   4740 //    if (insetScale != scale && mouseX != Infinity)
   4741 //        drawInset();
   4742 }
   4743 
   4744 function doKeyPress(evt) {
   4745     var char = String.fromCharCode(evt.charCode);
   4746     switch (char) {
   4747     case 'N':
   4748         testIndex += 9;
   4749     case 'n':
   4750         if (++testIndex >= tests.length)
   4751             testIndex = 0;
   4752         mouseX = Infinity;
   4753         drawTop();
   4754         break;
   4755     case 'P':
   4756         testIndex -= 9;
   4757     case 'p':
   4758         if (--testIndex < 0)
   4759             testIndex = tests.length - 1;
   4760         mouseX = Infinity;
   4761         drawTop();
   4762         break;
   4763     case 'T':
   4764     case 't':
   4765         break;
   4766     case '-':
   4767         drawTop();
   4768         break;
   4769     case '=':
   4770     case '+':
   4771         drawTop();
   4772         break;
   4773     case 'x':
   4774         draw_labels ^= true;
   4775         drawTop();
   4776         break;
   4777     }
   4778 }
   4779 
   4780 function start() {
   4781     for (i = 0; i < testDivs.length; ++i) {
   4782         var title = testDivs[i].id.toString();
   4783         var str = testDivs[i].firstChild.data;
   4784         if (str.split("addRect").length > 1) {
   4785             parseRect(str, title);
   4786         } else {
   4787             parse(str, title);
   4788         }
   4789     }
   4790     drawTop();
   4791     window.addEventListener('keypress', doKeyPress, true);
   4792     window.onresize = function() {
   4793         drawTop();
   4794     }
   4795 }
   4796 
   4797 </script>
   4798 </head>
   4799 
   4800 <body onLoad="start();">
   4801 <canvas id="canvas" width="750" height="500"
   4802     onmousemove="handleMouseOver()"
   4803     onclick="handleMouseClick()"
   4804     ></canvas >
   4805 </body>
   4806 </html>
   4807