| <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
| <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> |
| <!-- Generated by graphviz version 2.44.1 (20201121.0304) |
| --> |
| <!-- Pages: 1 --> |
| <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1274pt" height="777pt" viewBox="0.00 0.00 1274.46 777.00"><script> |
| (function() { |
| var enablePanZoom = false; |
| var enablePanZoomControls = false; |
| var panZoomScriptUrl = "https://graphviz.corp.google.com/svg-pan-zoom.js"; |
| |
| var isEmbedded = true; |
| try { |
| // This condition is true when the SVG is being displayed in a |
| // top-level browser window. If the parent location's href is |
| // different, or we can't access it (due to security constraints |
| // on accessing javascript properties on a different domain), |
| // then the document is embedded. |
| if (window.location.href == window.parent.location.href) { |
| isEmbedded = false; |
| } |
| } catch (e) {} |
| |
| if (!isEmbedded) enablePanZoom = true; |
| |
| if (enablePanZoom && typeof svgPanZoom === 'undefined') { |
| var panZoomScript = |
| document.createElementNS('http://www.w3.org/2000/svg', 'script'); |
| panZoomScript.setAttributeNS( |
| 'http://www.w3.org/1999/xlink', 'xlink:href', panZoomScriptUrl); |
| document.currentScript.parentElement.appendChild(panZoomScript); |
| } |
| |
| window.onload = function() { |
| var svg = document.getElementsByTagName("svg")[0]; |
| |
| if (!isEmbedded) { |
| svg.removeAttribute("width"); |
| svg.removeAttribute("height"); |
| } |
| |
| if (enablePanZoom) { |
| svgPanZoom(svg, { |
| minZoom: 0.2, |
| maxZoom: 100, |
| controlIconsEnabled: enablePanZoomControls |
| }); |
| } |
| |
| var links = document.getElementsByTagName("a"); |
| for (var i = 0; i < links.length; i++) { |
| if (!links[i].getAttribute("target")) { |
| links[i].setAttribute("target", "_top"); |
| } |
| } |
| }; |
| })(); |
| </script> |
| <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 773)"> |
| <polygon fill="white" stroke="transparent" points="-4,4 -4,-773 1270.46,-773 1270.46,4 -4,4"/> |
| <text text-anchor="middle" x="633.23" y="-753.8" font-family="Times,serif" font-size="14.00">TWO-FINGER SWIPE RECOGNIZER</text> |
| <g id="clust1" class="cluster"> |
| <title>cluster_initial_contender</title> |
| <polygon fill="none" stroke="black" points="142.79,-590 142.79,-738 935.46,-738 935.46,-590 142.79,-590"/> |
| <text text-anchor="middle" x="539.13" y="-722.8" font-family="Times,serif" font-size="14.00">InitialContender</text> |
| <text text-anchor="middle" x="539.13" y="-707.8" font-family="Times,serif" font-size="14.00">`impl Contender`</text> |
| </g> |
| <g id="clust4" class="cluster"> |
| <title>cluster_forward_motion</title> |
| <polygon fill="none" stroke="black" points="187.79,-8 187.79,-194 1242.46,-194 1242.46,-8 187.79,-8"/> |
| <text text-anchor="middle" x="715.13" y="-178.8" font-family="Times,serif" font-size="14.00">Winner</text> |
| </g> |
| <g id="clust3" class="cluster"> |
| <title>cluster_matched_contender</title> |
| <polygon fill="none" stroke="black" points="164.79,-202 164.79,-388 1217.96,-388 1217.96,-202 164.79,-202"/> |
| <text text-anchor="middle" x="691.38" y="-372.8" font-family="Times,serif" font-size="14.00">MatchedContender</text> |
| </g> |
| <g id="clust2" class="cluster"> |
| <title>cluster_finger_contact_contender</title> |
| <polygon fill="none" stroke="black" points="179.79,-396 179.79,-582 1258.46,-582 1258.46,-396 179.79,-396"/> |
| <text text-anchor="middle" x="719.13" y="-566.8" font-family="Times,serif" font-size="14.00">FingerContactContender</text> |
| <text text-anchor="middle" x="719.13" y="-551.8" font-family="Times,serif" font-size="14.00">`impl Contender`</text> |
| </g> |
| <!-- arena --> |
| <g id="node1" class="node"> |
| <title>arena</title> |
| <ellipse fill="none" stroke="black" cx="33.9" cy="-311" rx="29.81" ry="29.81"/> |
| <ellipse fill="none" stroke="black" cx="33.9" cy="-311" rx="33.8" ry="33.8"/> |
| <text text-anchor="middle" x="33.9" y="-307.3" font-family="Times,serif" font-size="14.00">arena</text> |
| </g> |
| <!-- examine_at_initial_contender --> |
| <g id="node2" class="node"> |
| <title>examine_at_initial_contender</title> |
| <polygon fill="none" stroke="black" points="258.79,-674 150.79,-636 258.79,-598 366.79,-636 258.79,-674"/> |
| <text text-anchor="middle" x="258.79" y="-639.8" font-family="Times,serif" font-size="14.00">exactly</text> |
| <text text-anchor="middle" x="258.79" y="-624.8" font-family="Times,serif" font-size="14.00">2 finger contact?</text> |
| </g> |
| <!-- arena->examine_at_initial_contender --> |
| <g id="edge1" class="edge"> |
| <title>arena->examine_at_initial_contender</title> |
| <path fill="none" stroke="black" d="M39.6,-344.66C49.19,-401.44 76.04,-516.78 142.79,-586 155.05,-598.71 171.08,-608.38 187.26,-615.67"/> |
| <polygon fill="black" stroke="black" points="186.21,-619.02 196.78,-619.69 188.93,-612.57 186.21,-619.02"/> |
| <text text-anchor="middle" x="109.29" y="-592.8" font-family="Times,serif" font-size="14.00">examine</text> |
| <text text-anchor="middle" x="109.29" y="-577.8" font-family="Times,serif" font-size="14.00">event()</text> |
| </g> |
| <!-- examine_at_finger_contact_contender --> |
| <g id="node6" class="node"> |
| <title>examine_at_finger_contact_contender</title> |
| <polygon fill="none" stroke="black" points="258.79,-480 187.79,-442 258.79,-404 329.79,-442 258.79,-480"/> |
| <text text-anchor="middle" x="258.79" y="-445.8" font-family="Times,serif" font-size="14.00">exactly</text> |
| <text text-anchor="middle" x="258.79" y="-430.8" font-family="Times,serif" font-size="14.00">2 fingers?</text> |
| </g> |
| <!-- arena->examine_at_finger_contact_contender --> |
| <g id="edge6" class="edge"> |
| <title>arena->examine_at_finger_contact_contender</title> |
| <path fill="none" stroke="black" d="M60.31,-332.78C81.45,-350.22 112.83,-374.56 142.79,-392 162.94,-403.72 186.34,-414.38 206.76,-422.82"/> |
| <polygon fill="black" stroke="black" points="205.63,-426.14 216.21,-426.66 208.26,-419.65 205.63,-426.14"/> |
| <text text-anchor="middle" x="109.29" y="-402.8" font-family="Times,serif" font-size="14.00">examine</text> |
| <text text-anchor="middle" x="109.29" y="-387.8" font-family="Times,serif" font-size="14.00">event()</text> |
| </g> |
| <!-- verify_at_matched_contender --> |
| <g id="node12" class="node"> |
| <title>verify_at_matched_contender</title> |
| <polygon fill="none" stroke="black" points="258.79,-349 184.79,-311 258.79,-273 332.79,-311 258.79,-349"/> |
| <text text-anchor="middle" x="258.79" y="-314.8" font-family="Times,serif" font-size="14.00">exactly</text> |
| <text text-anchor="middle" x="258.79" y="-299.8" font-family="Times,serif" font-size="14.00"> 2 fingers?</text> |
| </g> |
| <!-- arena->verify_at_matched_contender --> |
| <g id="edge13" class="edge"> |
| <title>arena->verify_at_matched_contender</title> |
| <path fill="none" stroke="black" d="M68.27,-311C96.24,-311 137.41,-311 174.23,-311"/> |
| <polygon fill="black" stroke="black" points="174.49,-314.5 184.49,-311 174.49,-307.5 174.49,-314.5"/> |
| <text text-anchor="middle" x="109.29" y="-329.8" font-family="Times,serif" font-size="14.00">verify</text> |
| <text text-anchor="middle" x="109.29" y="-314.8" font-family="Times,serif" font-size="14.00">event()</text> |
| </g> |
| <!-- return_winner_at_matched_contender --> |
| <g id="node17" class="node"> |
| <title>return_winner_at_matched_contender</title> |
| <polygon fill="none" stroke="black" points="344.79,-255 172.79,-255 172.79,-217 344.79,-217 344.79,-255"/> |
| <text text-anchor="middle" x="258.79" y="-239.8" font-family="Times,serif" font-size="14.00">return</text> |
| <text text-anchor="middle" x="258.79" y="-224.8" font-family="Times,serif" font-size="14.00">vec![events], Winner, Scroll</text> |
| </g> |
| <!-- arena->return_winner_at_matched_contender --> |
| <g id="edge20" class="edge"> |
| <title>arena->return_winner_at_matched_contender</title> |
| <path fill="none" stroke="black" d="M56.06,-284.89C64.42,-276.26 74.68,-267.48 85.79,-262 109.23,-250.44 136.47,-243.73 162.26,-239.9"/> |
| <polygon fill="black" stroke="black" points="163,-243.33 172.45,-238.53 162.07,-236.4 163,-243.33"/> |
| <text text-anchor="middle" x="109.29" y="-295.8" font-family="Times,serif" font-size="14.00">process</text> |
| <text text-anchor="middle" x="109.29" y="-280.8" font-family="Times,serif" font-size="14.00">buffered</text> |
| <text text-anchor="middle" x="109.29" y="-265.8" font-family="Times,serif" font-size="14.00">events()</text> |
| </g> |
| <!-- process_at_winner --> |
| <g id="node18" class="node"> |
| <title>process_at_winner</title> |
| <polygon fill="none" stroke="black" points="258.79,-146 195.79,-108 258.79,-70 321.79,-108 258.79,-146"/> |
| <text text-anchor="middle" x="258.79" y="-111.8" font-family="Times,serif" font-size="14.00">button</text> |
| <text text-anchor="middle" x="258.79" y="-96.8" font-family="Times,serif" font-size="14.00">pressed?</text> |
| </g> |
| <!-- arena->process_at_winner --> |
| <g id="edge21" class="edge"> |
| <title>arena->process_at_winner</title> |
| <path fill="none" stroke="black" d="M43.14,-278.18C50.76,-253.39 64.22,-219.85 85.79,-197 118.95,-161.88 169.06,-138.15 206.65,-124.08"/> |
| <polygon fill="black" stroke="black" points="208.21,-127.24 216.41,-120.54 205.82,-120.66 208.21,-127.24"/> |
| <text text-anchor="middle" x="109.29" y="-230.8" font-family="Times,serif" font-size="14.00">process</text> |
| <text text-anchor="middle" x="109.29" y="-215.8" font-family="Times,serif" font-size="14.00">new</text> |
| <text text-anchor="middle" x="109.29" y="-200.8" font-family="Times,serif" font-size="14.00">event()</text> |
| </g> |
| <!-- examine2_at_initial_contender --> |
| <g id="node3" class="node"> |
| <title>examine2_at_initial_contender</title> |
| <polygon fill="none" stroke="black" points="514.63,-640 421.96,-622 514.63,-604 607.3,-622 514.63,-640"/> |
| <text text-anchor="middle" x="514.63" y="-618.3" font-family="Times,serif" font-size="14.00">button pressed?</text> |
| </g> |
| <!-- examine_at_initial_contender->examine2_at_initial_contender --> |
| <g id="edge2" class="edge"> |
| <title>examine_at_initial_contender->examine2_at_initial_contender</title> |
| <path fill="none" stroke="black" d="M352.51,-630.89C378.4,-629.46 406.35,-627.92 431.57,-626.53"/> |
| <polygon fill="black" stroke="black" points="432.04,-630.01 441.83,-625.96 431.66,-623.02 432.04,-630.01"/> |
| <text text-anchor="middle" x="394.29" y="-632.8" font-family="Times,serif" font-size="14.00">yes</text> |
| </g> |
| <!-- return_mismatch_at_initial_contender --> |
| <g id="node4" class="node"> |
| <title>return_mismatch_at_initial_contender</title> |
| <polygon fill="none" stroke="black" points="888.46,-692 816.46,-692 816.46,-654 888.46,-654 888.46,-692"/> |
| <text text-anchor="middle" x="852.46" y="-676.8" font-family="Times,serif" font-size="14.00">return</text> |
| <text text-anchor="middle" x="852.46" y="-661.8" font-family="Times,serif" font-size="14.00">Mismatch</text> |
| </g> |
| <!-- examine_at_initial_contender->return_mismatch_at_initial_contender --> |
| <g id="edge3" class="edge"> |
| <title>examine_at_initial_contender->return_mismatch_at_initial_contender</title> |
| <path fill="none" stroke="black" d="M342.79,-644.46C356.8,-645.75 371.21,-646.98 384.79,-648 539.2,-659.54 722.73,-667.77 806.16,-671.21"/> |
| <polygon fill="black" stroke="black" points="806.17,-674.71 816.31,-671.62 806.46,-667.72 806.17,-674.71"/> |
| <text text-anchor="middle" x="514.63" y="-664.8" font-family="Times,serif" font-size="14.00">no</text> |
| </g> |
| <!-- examine2_at_initial_contender->return_mismatch_at_initial_contender --> |
| <g id="edge5" class="edge"> |
| <title>examine2_at_initial_contender->return_mismatch_at_initial_contender</title> |
| <path fill="none" stroke="black" d="M566.24,-630.03C594.54,-634.5 630.45,-640.12 662.46,-645 711.47,-652.47 767.67,-660.76 805.96,-666.37"/> |
| <polygon fill="black" stroke="black" points="805.87,-669.89 816.27,-667.88 806.88,-662.96 805.87,-669.89"/> |
| <text text-anchor="middle" x="634.96" y="-644.8" font-family="Times,serif" font-size="14.00">yes</text> |
| </g> |
| <!-- return_finger_contact_contender_at_initial_contender --> |
| <g id="node5" class="node"> |
| <title>return_finger_contact_contender_at_initial_contender</title> |
| <polygon fill="none" stroke="black" points="927.46,-636 777.46,-636 777.46,-598 927.46,-598 927.46,-636"/> |
| <text text-anchor="middle" x="852.46" y="-620.8" font-family="Times,serif" font-size="14.00">return</text> |
| <text text-anchor="middle" x="852.46" y="-605.8" font-family="Times,serif" font-size="14.00">FingerContactContender</text> |
| </g> |
| <!-- examine2_at_initial_contender->return_finger_contact_contender_at_initial_contender --> |
| <g id="edge4" class="edge"> |
| <title>examine2_at_initial_contender->return_finger_contact_contender_at_initial_contender</title> |
| <path fill="none" stroke="black" d="M591.54,-618.92C602.91,-618.55 614.5,-618.22 625.46,-618 672.4,-617.04 724.84,-616.76 767.38,-616.73"/> |
| <polygon fill="black" stroke="black" points="767.41,-620.23 777.41,-616.73 767.41,-613.23 767.41,-620.23"/> |
| <text text-anchor="middle" x="634.96" y="-621.8" font-family="Times,serif" font-size="14.00">no</text> |
| </g> |
| <!-- return_mismatch_at_finger_contact_contender --> |
| <g id="node7" class="node"> |
| <title>return_mismatch_at_finger_contact_contender</title> |
| <polygon fill="none" stroke="black" points="888.46,-442 816.46,-442 816.46,-404 888.46,-404 888.46,-442"/> |
| <text text-anchor="middle" x="852.46" y="-426.8" font-family="Times,serif" font-size="14.00">return</text> |
| <text text-anchor="middle" x="852.46" y="-411.8" font-family="Times,serif" font-size="14.00">Mismatch</text> |
| </g> |
| <!-- examine_at_finger_contact_contender->return_mismatch_at_finger_contact_contender --> |
| <g id="edge7" class="edge"> |
| <title>examine_at_finger_contact_contender->return_mismatch_at_finger_contact_contender</title> |
| <path fill="none" stroke="black" d="M321.69,-437.59C351.87,-435.59 388.71,-433.37 421.79,-432 561.99,-426.21 728.07,-424.07 806.36,-423.34"/> |
| <polygon fill="black" stroke="black" points="806.39,-426.84 816.36,-423.25 806.33,-419.84 806.39,-426.84"/> |
| <text text-anchor="middle" x="514.63" y="-435.8" font-family="Times,serif" font-size="14.00">no</text> |
| </g> |
| <!-- examine2_at_finger_contact_contender --> |
| <g id="node8" class="node"> |
| <title>examine2_at_finger_contact_contender</title> |
| <polygon fill="none" stroke="black" points="514.63,-532 451.63,-494 514.63,-456 577.63,-494 514.63,-532"/> |
| <text text-anchor="middle" x="514.63" y="-497.8" font-family="Times,serif" font-size="14.00">button</text> |
| <text text-anchor="middle" x="514.63" y="-482.8" font-family="Times,serif" font-size="14.00">pressed?</text> |
| </g> |
| <!-- examine_at_finger_contact_contender->examine2_at_finger_contact_contender --> |
| <g id="edge8" class="edge"> |
| <title>examine_at_finger_contact_contender->examine2_at_finger_contact_contender</title> |
| <path fill="none" stroke="black" d="M310.55,-452.4C352.97,-461.09 413.39,-473.46 457.29,-482.46"/> |
| <polygon fill="black" stroke="black" points="456.73,-485.92 467.23,-484.5 458.14,-479.06 456.73,-485.92"/> |
| <text text-anchor="middle" x="394.29" y="-474.8" font-family="Times,serif" font-size="14.00">yes</text> |
| </g> |
| <!-- examine2_at_finger_contact_contender->return_mismatch_at_finger_contact_contender --> |
| <g id="edge9" class="edge"> |
| <title>examine2_at_finger_contact_contender->return_mismatch_at_finger_contact_contender</title> |
| <path fill="none" stroke="black" d="M555.75,-480.62C585.05,-471.26 625.88,-459.03 662.46,-451 711.03,-440.34 767.53,-432.57 806.01,-427.95"/> |
| <polygon fill="black" stroke="black" points="806.85,-431.38 816.37,-426.73 806.03,-424.42 806.85,-431.38"/> |
| <text text-anchor="middle" x="634.96" y="-462.8" font-family="Times,serif" font-size="14.00">yes</text> |
| </g> |
| <!-- examine3_at_finger_contact_contender --> |
| <g id="node9" class="node"> |
| <title>examine3_at_finger_contact_contender</title> |
| <polygon fill="none" stroke="black" points="852.46,-536 662.46,-498 852.46,-460 1042.46,-498 852.46,-536"/> |
| <text text-anchor="middle" x="852.46" y="-501.8" font-family="Times,serif" font-size="14.00">movement > threshold && </text> |
| <text text-anchor="middle" x="852.46" y="-486.8" font-family="Times,serif" font-size="14.00"> director ~vertical ~horizontal ?</text> |
| </g> |
| <!-- examine2_at_finger_contact_contender->examine3_at_finger_contact_contender --> |
| <g id="edge10" class="edge"> |
| <title>examine2_at_finger_contact_contender->examine3_at_finger_contact_contender</title> |
| <path fill="none" stroke="black" d="M576.45,-494.72C601.26,-495.02 631.44,-495.38 662.59,-495.75"/> |
| <polygon fill="black" stroke="black" points="662.69,-499.25 672.73,-495.87 662.77,-492.25 662.69,-499.25"/> |
| <text text-anchor="middle" x="634.96" y="-498.8" font-family="Times,serif" font-size="14.00">no</text> |
| </g> |
| <!-- return_self_at_finger_contact_contender --> |
| <g id="node10" class="node"> |
| <title>return_self_at_finger_contact_contender</title> |
| <polygon fill="none" stroke="black" points="1200.96,-476 1146.96,-476 1146.96,-438 1200.96,-438 1200.96,-476"/> |
| <text text-anchor="middle" x="1173.96" y="-460.8" font-family="Times,serif" font-size="14.00">return</text> |
| <text text-anchor="middle" x="1173.96" y="-445.8" font-family="Times,serif" font-size="14.00">`self`</text> |
| </g> |
| <!-- examine3_at_finger_contact_contender->return_self_at_finger_contact_contender --> |
| <g id="edge11" class="edge"> |
| <title>examine3_at_finger_contact_contender->return_self_at_finger_contact_contender</title> |
| <path fill="none" stroke="black" d="M968.81,-483.2C1028.01,-475.6 1096.04,-466.87 1136.71,-461.65"/> |
| <polygon fill="black" stroke="black" points="1137.21,-465.12 1146.68,-460.37 1136.32,-458.17 1137.21,-465.12"/> |
| <text text-anchor="middle" x="1069.96" y="-474.8" font-family="Times,serif" font-size="14.00">no</text> |
| </g> |
| <!-- return_matched_contender --> |
| <g id="node11" class="node"> |
| <title>return_matched_contender</title> |
| <polygon fill="none" stroke="black" points="1250.46,-530 1097.46,-530 1097.46,-494 1250.46,-494 1250.46,-530"/> |
| <text text-anchor="middle" x="1173.96" y="-508.3" font-family="Times,serif" font-size="14.00">returnMatchedContender</text> |
| </g> |
| <!-- examine3_at_finger_contact_contender->return_matched_contender --> |
| <g id="edge12" class="edge"> |
| <title>examine3_at_finger_contact_contender->return_matched_contender</title> |
| <path fill="none" stroke="black" d="M1008.53,-504.79C1035.52,-505.98 1062.69,-507.17 1086.95,-508.23"/> |
| <polygon fill="black" stroke="black" points="1087.02,-511.74 1097.16,-508.68 1087.32,-504.74 1087.02,-511.74"/> |
| <text text-anchor="middle" x="1069.96" y="-510.8" font-family="Times,serif" font-size="14.00">yes</text> |
| </g> |
| <!-- return_mismatch_at_matched_contender --> |
| <g id="node13" class="node"> |
| <title>return_mismatch_at_matched_contender</title> |
| <polygon fill="none" stroke="black" points="1209.96,-267 1137.96,-267 1137.96,-229 1209.96,-229 1209.96,-267"/> |
| <text text-anchor="middle" x="1173.96" y="-251.8" font-family="Times,serif" font-size="14.00">return</text> |
| <text text-anchor="middle" x="1173.96" y="-236.8" font-family="Times,serif" font-size="14.00">Mismatch</text> |
| </g> |
| <!-- verify_at_matched_contender->return_mismatch_at_matched_contender --> |
| <g id="edge14" class="edge"> |
| <title>verify_at_matched_contender->return_mismatch_at_matched_contender</title> |
| <path fill="none" stroke="black" d="M304.39,-296.15C336.68,-285.87 381.55,-272.55 421.79,-264 692.01,-206.6 766.62,-216.13 1042.46,-231 1071.04,-232.54 1102.89,-236.64 1127.97,-240.43"/> |
| <polygon fill="black" stroke="black" points="1127.51,-243.9 1137.93,-241.97 1128.58,-236.98 1127.51,-243.9"/> |
| <text text-anchor="middle" x="634.96" y="-231.8" font-family="Times,serif" font-size="14.00">no</text> |
| </g> |
| <!-- verify2_at_matched_contender --> |
| <g id="node14" class="node"> |
| <title>verify2_at_matched_contender</title> |
| <polygon fill="none" stroke="black" points="514.63,-349 451.63,-311 514.63,-273 577.63,-311 514.63,-349"/> |
| <text text-anchor="middle" x="514.63" y="-314.8" font-family="Times,serif" font-size="14.00">button</text> |
| <text text-anchor="middle" x="514.63" y="-299.8" font-family="Times,serif" font-size="14.00">pressed?</text> |
| </g> |
| <!-- verify_at_matched_contender->verify2_at_matched_contender --> |
| <g id="edge15" class="edge"> |
| <title>verify_at_matched_contender->verify2_at_matched_contender</title> |
| <path fill="none" stroke="black" d="M332.87,-311C366.85,-311 407.15,-311 441.07,-311"/> |
| <polygon fill="black" stroke="black" points="441.37,-314.5 451.37,-311 441.37,-307.5 441.37,-314.5"/> |
| <text text-anchor="middle" x="394.29" y="-314.8" font-family="Times,serif" font-size="14.00">yes</text> |
| </g> |
| <!-- verify2_at_matched_contender->return_mismatch_at_matched_contender --> |
| <g id="edge16" class="edge"> |
| <title>verify2_at_matched_contender->return_mismatch_at_matched_contender</title> |
| <path fill="none" stroke="black" d="M550.29,-294.49C579.47,-281.52 622.68,-264.45 662.46,-257 831.76,-225.31 1038.16,-236.54 1127.81,-243.8"/> |
| <polygon fill="black" stroke="black" points="1127.64,-247.29 1137.9,-244.64 1128.22,-240.32 1127.64,-247.29"/> |
| <text text-anchor="middle" x="852.46" y="-260.8" font-family="Times,serif" font-size="14.00">yes</text> |
| </g> |
| <!-- verify3_at_matched_contender --> |
| <g id="node15" class="node"> |
| <title>verify3_at_matched_contender</title> |
| <polygon fill="none" stroke="black" points="852.46,-357 781.46,-319 852.46,-281 923.46,-319 852.46,-357"/> |
| <text text-anchor="middle" x="852.46" y="-322.8" font-family="Times,serif" font-size="14.00">on same</text> |
| <text text-anchor="middle" x="852.46" y="-307.8" font-family="Times,serif" font-size="14.00">direction?</text> |
| </g> |
| <!-- verify2_at_matched_contender->verify3_at_matched_contender --> |
| <g id="edge17" class="edge"> |
| <title>verify2_at_matched_contender->verify3_at_matched_contender</title> |
| <path fill="none" stroke="black" d="M575.28,-312.42C630.7,-313.74 713.53,-315.71 774.03,-317.16"/> |
| <polygon fill="black" stroke="black" points="774.21,-320.66 784.29,-317.4 774.38,-313.66 774.21,-320.66"/> |
| <text text-anchor="middle" x="634.96" y="-317.8" font-family="Times,serif" font-size="14.00">no</text> |
| </g> |
| <!-- verify3_at_matched_contender->return_mismatch_at_matched_contender --> |
| <g id="edge18" class="edge"> |
| <title>verify3_at_matched_contender->return_mismatch_at_matched_contender</title> |
| <path fill="none" stroke="black" d="M903.04,-307.98C964.51,-294.32 1068.42,-271.23 1127.78,-258.04"/> |
| <polygon fill="black" stroke="black" points="1128.62,-261.44 1137.62,-255.85 1127.1,-254.61 1128.62,-261.44"/> |
| <text text-anchor="middle" x="1069.96" y="-275.8" font-family="Times,serif" font-size="14.00">no</text> |
| </g> |
| <!-- return_self_at_matched_contender --> |
| <g id="node16" class="node"> |
| <title>return_self_at_matched_contender</title> |
| <polygon fill="none" stroke="black" points="1200.96,-338 1146.96,-338 1146.96,-300 1200.96,-300 1200.96,-338"/> |
| <text text-anchor="middle" x="1173.96" y="-322.8" font-family="Times,serif" font-size="14.00">return</text> |
| <text text-anchor="middle" x="1173.96" y="-307.8" font-family="Times,serif" font-size="14.00">`self`</text> |
| </g> |
| <!-- verify3_at_matched_contender->return_self_at_matched_contender --> |
| <g id="edge19" class="edge"> |
| <title>verify3_at_matched_contender->return_self_at_matched_contender</title> |
| <path fill="none" stroke="black" d="M923.58,-319C989.4,-319 1085.23,-319 1136.84,-319"/> |
| <polygon fill="black" stroke="black" points="1136.85,-322.5 1146.85,-319 1136.85,-315.5 1136.85,-322.5"/> |
| <text text-anchor="middle" x="1069.96" y="-322.8" font-family="Times,serif" font-size="14.00">yes</text> |
| </g> |
| <!-- return_end_with_event_at_winner --> |
| <g id="node19" class="node"> |
| <title>return_end_with_event_at_winner</title> |
| <polygon fill="none" stroke="black" points="1234.46,-73 1113.46,-73 1113.46,-35 1234.46,-35 1234.46,-73"/> |
| <text text-anchor="middle" x="1173.96" y="-57.8" font-family="Times,serif" font-size="14.00">return</text> |
| <text text-anchor="middle" x="1173.96" y="-42.8" font-family="Times,serif" font-size="14.00">EndGesture(Some)</text> |
| </g> |
| <!-- process_at_winner->return_end_with_event_at_winner --> |
| <g id="edge22" class="edge"> |
| <title>process_at_winner->return_end_with_event_at_winner</title> |
| <path fill="none" stroke="black" d="M293.84,-90.99C325.94,-75.93 375.84,-54.99 421.79,-46 668.48,2.25 969.48,-26.69 1103.2,-43.93"/> |
| <polygon fill="black" stroke="black" points="1102.93,-47.43 1113.3,-45.26 1103.84,-40.49 1102.93,-47.43"/> |
| <text text-anchor="middle" x="634.96" y="-26.8" font-family="Times,serif" font-size="14.00">yes</text> |
| </g> |
| <!-- process2_at_winner --> |
| <g id="node20" class="node"> |
| <title>process2_at_winner</title> |
| <polygon fill="none" stroke="black" points="514.63,-161 458.63,-108 514.63,-55 570.63,-108 514.63,-161"/> |
| <text text-anchor="middle" x="514.63" y="-119.3" font-family="Times,serif" font-size="14.00">num</text> |
| <text text-anchor="middle" x="514.63" y="-104.3" font-family="Times,serif" font-size="14.00">fingers</text> |
| <text text-anchor="middle" x="514.63" y="-89.3" font-family="Times,serif" font-size="14.00">present</text> |
| </g> |
| <!-- process_at_winner->process2_at_winner --> |
| <g id="edge23" class="edge"> |
| <title>process_at_winner->process2_at_winner</title> |
| <path fill="none" stroke="black" d="M321.89,-108C360.15,-108 409.16,-108 448.05,-108"/> |
| <polygon fill="black" stroke="black" points="448.22,-111.5 458.22,-108 448.22,-104.5 448.22,-111.5"/> |
| <text text-anchor="middle" x="394.29" y="-111.8" font-family="Times,serif" font-size="14.00">no</text> |
| </g> |
| <!-- process2_at_winner->return_end_with_event_at_winner --> |
| <g id="edge25" class="edge"> |
| <title>process2_at_winner->return_end_with_event_at_winner</title> |
| <path fill="none" stroke="black" d="M554.81,-92.71C583.98,-82.13 625.07,-68.94 662.46,-63 818.25,-38.26 1004.13,-43.56 1102.99,-49.1"/> |
| <polygon fill="black" stroke="black" points="1102.97,-52.6 1113.15,-49.69 1103.37,-45.62 1102.97,-52.6"/> |
| <text text-anchor="middle" x="852.46" y="-66.8" font-family="Times,serif" font-size="14.00">!=2</text> |
| </g> |
| <!-- process3_at_winner --> |
| <g id="node21" class="node"> |
| <title>process3_at_winner</title> |
| <polygon fill="none" stroke="black" points="852.46,-163 781.46,-125 852.46,-87 923.46,-125 852.46,-163"/> |
| <text text-anchor="middle" x="852.46" y="-128.8" font-family="Times,serif" font-size="14.00">on same</text> |
| <text text-anchor="middle" x="852.46" y="-113.8" font-family="Times,serif" font-size="14.00">direction?</text> |
| </g> |
| <!-- process2_at_winner->process3_at_winner --> |
| <g id="edge24" class="edge"> |
| <title>process2_at_winner->process3_at_winner</title> |
| <path fill="none" stroke="black" d="M568.1,-110.66C624.2,-113.5 713.61,-118.02 776.98,-121.23"/> |
| <polygon fill="black" stroke="black" points="777.14,-124.74 787.31,-121.75 777.5,-117.75 777.14,-124.74"/> |
| <text text-anchor="middle" x="634.96" y="-117.8" font-family="Times,serif" font-size="14.00">2</text> |
| </g> |
| <!-- process3_at_winner->return_end_with_event_at_winner --> |
| <g id="edge26" class="edge"> |
| <title>process3_at_winner->return_end_with_event_at_winner</title> |
| <path fill="none" stroke="black" d="M903.04,-113.98C956.75,-102.05 1042.86,-82.91 1103.35,-69.47"/> |
| <polygon fill="black" stroke="black" points="1104.2,-72.87 1113.2,-67.28 1102.68,-66.03 1104.2,-72.87"/> |
| <text text-anchor="middle" x="1069.96" y="-81.8" font-family="Times,serif" font-size="14.00">no</text> |
| </g> |
| <!-- return_continue_with_event_at_winner --> |
| <g id="node22" class="node"> |
| <title>return_continue_with_event_at_winner</title> |
| <polygon fill="none" stroke="black" points="1230.46,-151.5 1117.46,-151.5 1117.46,-98.5 1230.46,-98.5 1230.46,-151.5"/> |
| <text text-anchor="middle" x="1173.96" y="-136.3" font-family="Times,serif" font-size="14.00">return</text> |
| <text text-anchor="middle" x="1173.96" y="-121.3" font-family="Times,serif" font-size="14.00">ContinueGesture(</text> |
| <text text-anchor="middle" x="1173.96" y="-106.3" font-family="Times,serif" font-size="14.00">Some, self)</text> |
| </g> |
| <!-- process3_at_winner->return_continue_with_event_at_winner --> |
| <g id="edge27" class="edge"> |
| <title>process3_at_winner->return_continue_with_event_at_winner</title> |
| <path fill="none" stroke="black" d="M923.58,-125C978.28,-125 1053.72,-125 1107.27,-125"/> |
| <polygon fill="black" stroke="black" points="1107.34,-128.5 1117.34,-125 1107.34,-121.5 1107.34,-128.5"/> |
| <text text-anchor="middle" x="1069.96" y="-128.8" font-family="Times,serif" font-size="14.00">yes</text> |
| </g> |
| </g> |
| </svg> |