| <?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="874pt" height="876pt" viewBox="0.00 0.00 873.79 876.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 872)"> |
| <polygon fill="white" stroke="transparent" points="-4,4 -4,-872 869.79,-872 869.79,4 -4,4"/> |
| <text text-anchor="middle" x="432.9" y="-852.8" font-family="Times,serif" font-size="14.00">MOTION RECOGNIZER</text> |
| <g id="clust1" class="cluster"> |
| <title>cluster_initial_contender</title> |
| <polygon fill="none" stroke="black" points="165.29,-671 165.29,-837 711.29,-837 711.29,-671 165.29,-671"/> |
| <text text-anchor="middle" x="438.29" y="-821.8" font-family="Times,serif" font-size="14.00">InitialContender</text> |
| </g> |
| <g id="clust3" class="cluster"> |
| <title>cluster_matched_contender</title> |
| <polygon fill="none" stroke="black" points="142.79,-238 142.79,-439 676.79,-439 676.79,-238 142.79,-238"/> |
| <text text-anchor="middle" x="409.79" y="-423.8" font-family="Times,serif" font-size="14.00">MatchedContender</text> |
| </g> |
| <g id="clust2" class="cluster"> |
| <title>cluster_finger_down_contender</title> |
| <polygon fill="none" stroke="black" points="165.29,-447 165.29,-663 857.79,-663 857.79,-447 165.29,-447"/> |
| <text text-anchor="middle" x="511.54" y="-647.8" font-family="Times,serif" font-size="14.00">FingerDownContender</text> |
| <text text-anchor="middle" x="511.54" y="-632.8" font-family="Times,serif" font-size="14.00">`impl Contender`</text> |
| </g> |
| <g id="clust4" class="cluster"> |
| <title>cluster_winner</title> |
| <polygon fill="none" stroke="black" points="165.29,-8 165.29,-230 701.29,-230 701.29,-8 165.29,-8"/> |
| <text text-anchor="middle" x="433.29" y="-214.8" font-family="Times,serif" font-size="14.00">Winner</text> |
| </g> |
| <!-- arena --> |
| <g id="node1" class="node"> |
| <title>arena</title> |
| <ellipse fill="none" stroke="black" cx="33.9" cy="-355" rx="29.81" ry="29.81"/> |
| <ellipse fill="none" stroke="black" cx="33.9" cy="-355" rx="33.8" ry="33.8"/> |
| <text text-anchor="middle" x="33.9" y="-351.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="229.29,-785 173.29,-732 229.29,-679 285.29,-732 229.29,-785"/> |
| <text text-anchor="middle" x="229.29" y="-743.3" font-family="Times,serif" font-size="14.00">exactly</text> |
| <text text-anchor="middle" x="229.29" y="-728.3" font-family="Times,serif" font-size="14.00">one</text> |
| <text text-anchor="middle" x="229.29" y="-713.3" font-family="Times,serif" font-size="14.00">finger?</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.89,-388.46C50.27,-448.98 78.75,-578.58 142.79,-667 154.05,-682.54 170.08,-696.1 185.22,-706.75"/> |
| <polygon fill="black" stroke="black" points="183.27,-709.65 193.51,-712.36 187.19,-703.85 183.27,-709.65"/> |
| <text text-anchor="middle" x="109.29" y="-670.8" font-family="Times,serif" font-size="14.00">examine</text> |
| <text text-anchor="middle" x="109.29" y="-655.8" font-family="Times,serif" font-size="14.00">event()</text> |
| </g> |
| <!-- examine_at_finger_down_contender --> |
| <g id="node6" class="node"> |
| <title>examine_at_finger_down_contender</title> |
| <polygon fill="none" stroke="black" points="229.29,-561 173.29,-508 229.29,-455 285.29,-508 229.29,-561"/> |
| <text text-anchor="middle" x="229.29" y="-519.3" font-family="Times,serif" font-size="14.00">exactly</text> |
| <text text-anchor="middle" x="229.29" y="-504.3" font-family="Times,serif" font-size="14.00">one</text> |
| <text text-anchor="middle" x="229.29" y="-489.3" font-family="Times,serif" font-size="14.00">finger?</text> |
| </g> |
| <!-- arena->examine_at_finger_down_contender --> |
| <g id="edge6" class="edge"> |
| <title>arena->examine_at_finger_down_contender</title> |
| <path fill="none" stroke="black" d="M60.42,-376.23C82.16,-394.21 114.31,-420.57 142.79,-443 157.73,-454.77 174.34,-467.47 188.91,-478.5"/> |
| <polygon fill="black" stroke="black" points="187.14,-481.55 197.23,-484.79 191.36,-475.97 187.14,-481.55"/> |
| <text text-anchor="middle" x="109.29" y="-451.8" font-family="Times,serif" font-size="14.00">examine</text> |
| <text text-anchor="middle" x="109.29" y="-436.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="229.29,-408 173.29,-355 229.29,-302 285.29,-355 229.29,-408"/> |
| <text text-anchor="middle" x="229.29" y="-366.3" font-family="Times,serif" font-size="14.00">exactly</text> |
| <text text-anchor="middle" x="229.29" y="-351.3" font-family="Times,serif" font-size="14.00">one</text> |
| <text text-anchor="middle" x="229.29" y="-336.3" font-family="Times,serif" font-size="14.00">finger?</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.14,-355C94.16,-355 131.16,-355 163.04,-355"/> |
| <polygon fill="black" stroke="black" points="163.19,-358.5 173.19,-355 163.19,-351.5 163.19,-358.5"/> |
| <text text-anchor="middle" x="109.29" y="-373.8" font-family="Times,serif" font-size="14.00">verify</text> |
| <text text-anchor="middle" x="109.29" y="-358.8" font-family="Times,serif" font-size="14.00">event()</text> |
| </g> |
| <!-- return_winner_at_matched_contender --> |
| <g id="node16" class="node"> |
| <title>return_winner_at_matched_contender</title> |
| <polygon fill="none" stroke="black" points="307.79,-284 150.79,-284 150.79,-246 307.79,-246 307.79,-284"/> |
| <text text-anchor="middle" x="229.29" y="-268.8" font-family="Times,serif" font-size="14.00">return</text> |
| <text text-anchor="middle" x="229.29" y="-253.8" font-family="Times,serif" font-size="14.00">`events`, Winner, Motion</text> |
| </g> |
| <!-- arena->return_winner_at_matched_contender --> |
| <g id="edge18" class="edge"> |
| <title>arena->return_winner_at_matched_contender</title> |
| <path fill="none" stroke="black" d="M56.48,-329.67C64.88,-321.12 75.06,-312.19 85.79,-306 102.6,-296.3 121.86,-288.76 140.67,-282.95"/> |
| <polygon fill="black" stroke="black" points="141.85,-286.25 150.46,-280.07 139.87,-279.54 141.85,-286.25"/> |
| <text text-anchor="middle" x="109.29" y="-339.8" font-family="Times,serif" font-size="14.00">process</text> |
| <text text-anchor="middle" x="109.29" y="-324.8" font-family="Times,serif" font-size="14.00">buffered</text> |
| <text text-anchor="middle" x="109.29" y="-309.8" font-family="Times,serif" font-size="14.00">events()</text> |
| </g> |
| <!-- process_at_winner --> |
| <g id="node17" class="node"> |
| <title>process_at_winner</title> |
| <polygon fill="none" stroke="black" points="229.29,-181 173.29,-128 229.29,-75 285.29,-128 229.29,-181"/> |
| <text text-anchor="middle" x="229.29" y="-139.3" font-family="Times,serif" font-size="14.00">num</text> |
| <text text-anchor="middle" x="229.29" y="-124.3" font-family="Times,serif" font-size="14.00">fingers</text> |
| <text text-anchor="middle" x="229.29" y="-109.3" font-family="Times,serif" font-size="14.00">present</text> |
| </g> |
| <!-- arena->process_at_winner --> |
| <g id="edge19" class="edge"> |
| <title>arena->process_at_winner</title> |
| <path fill="none" stroke="black" d="M43.92,-322.59C52.02,-297.45 65.76,-262.68 85.79,-237 113,-202.13 153.86,-172.41 184.86,-152.85"/> |
| <polygon fill="black" stroke="black" points="187.07,-155.6 193.73,-147.37 183.39,-149.65 187.07,-155.6"/> |
| <text text-anchor="middle" x="109.29" y="-270.8" font-family="Times,serif" font-size="14.00">process</text> |
| <text text-anchor="middle" x="109.29" y="-255.8" font-family="Times,serif" font-size="14.00">new</text> |
| <text text-anchor="middle" x="109.29" y="-240.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="425.79,-755 362.79,-717 425.79,-679 488.79,-717 425.79,-755"/> |
| <text text-anchor="middle" x="425.79" y="-720.8" font-family="Times,serif" font-size="14.00">button</text> |
| <text text-anchor="middle" x="425.79" y="-705.8" font-family="Times,serif" font-size="14.00">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="M281.4,-728.06C305.24,-726.22 333.9,-724.01 359.3,-722.05"/> |
| <polygon fill="black" stroke="black" points="359.9,-725.52 369.6,-721.26 359.36,-718.54 359.9,-725.52"/> |
| <text text-anchor="middle" x="335.29" y="-727.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="668.79,-799 596.79,-799 596.79,-761 668.79,-761 668.79,-799"/> |
| <text text-anchor="middle" x="632.79" y="-783.8" font-family="Times,serif" font-size="14.00">return</text> |
| <text text-anchor="middle" x="632.79" y="-768.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="M272.58,-744.24C298.42,-751.21 332.25,-759.44 362.79,-764 440.88,-775.66 532.9,-778.9 586.56,-779.75"/> |
| <polygon fill="black" stroke="black" points="586.72,-783.26 596.77,-779.89 586.82,-776.26 586.72,-783.26"/> |
| <text text-anchor="middle" x="425.79" y="-779.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="M468.28,-729.75C502.71,-740.33 551.59,-755.35 586.93,-766.21"/> |
| <polygon fill="black" stroke="black" points="585.93,-769.57 596.52,-769.16 587.99,-762.88 585.93,-769.57"/> |
| <text text-anchor="middle" x="516.29" y="-749.8" font-family="Times,serif" font-size="14.00">yes</text> |
| </g> |
| <!-- return_finger_down_contender_at_initial_contender --> |
| <g id="node5" class="node"> |
| <title>return_finger_down_contender_at_initial_contender</title> |
| <polygon fill="none" stroke="black" points="703.29,-736 562.29,-736 562.29,-698 703.29,-698 703.29,-736"/> |
| <text text-anchor="middle" x="632.79" y="-720.8" font-family="Times,serif" font-size="14.00">return</text> |
| <text text-anchor="middle" x="632.79" y="-705.8" font-family="Times,serif" font-size="14.00">FingerDownContender</text> |
| </g> |
| <!-- examine2_at_initial_contender->return_finger_down_contender_at_initial_contender --> |
| <g id="edge4" class="edge"> |
| <title>examine2_at_initial_contender->return_finger_down_contender_at_initial_contender</title> |
| <path fill="none" stroke="black" d="M488.86,-717C508.71,-717 530.97,-717 551.9,-717"/> |
| <polygon fill="black" stroke="black" points="552.06,-720.5 562.06,-717 552.06,-713.5 552.06,-720.5"/> |
| <text text-anchor="middle" x="516.29" y="-720.8" font-family="Times,serif" font-size="14.00">no</text> |
| </g> |
| <!-- return_mismatch_at_finger_down_contender --> |
| <g id="node7" class="node"> |
| <title>return_mismatch_at_finger_down_contender</title> |
| <polygon fill="none" stroke="black" points="668.79,-493 596.79,-493 596.79,-455 668.79,-455 668.79,-493"/> |
| <text text-anchor="middle" x="632.79" y="-477.8" font-family="Times,serif" font-size="14.00">return</text> |
| <text text-anchor="middle" x="632.79" y="-462.8" font-family="Times,serif" font-size="14.00">Mismatch</text> |
| </g> |
| <!-- examine_at_finger_down_contender->return_mismatch_at_finger_down_contender --> |
| <g id="edge7" class="edge"> |
| <title>examine_at_finger_down_contender->return_mismatch_at_finger_down_contender</title> |
| <path fill="none" stroke="black" d="M274.81,-497.84C300.4,-492.44 333.24,-486.26 362.79,-483 440.95,-474.37 532.59,-473.2 586.22,-473.41"/> |
| <polygon fill="black" stroke="black" points="586.4,-476.91 596.42,-473.46 586.44,-469.91 586.4,-476.91"/> |
| <text text-anchor="middle" x="425.79" y="-486.8" font-family="Times,serif" font-size="14.00">no</text> |
| </g> |
| <!-- examine2_at_finger_down_contender --> |
| <g id="node8" class="node"> |
| <title>examine2_at_finger_down_contender</title> |
| <polygon fill="none" stroke="black" points="425.79,-583 362.79,-545 425.79,-507 488.79,-545 425.79,-583"/> |
| <text text-anchor="middle" x="425.79" y="-548.8" font-family="Times,serif" font-size="14.00">button</text> |
| <text text-anchor="middle" x="425.79" y="-533.8" font-family="Times,serif" font-size="14.00">pressed?</text> |
| </g> |
| <!-- examine_at_finger_down_contender->examine2_at_finger_down_contender --> |
| <g id="edge8" class="edge"> |
| <title>examine_at_finger_down_contender->examine2_at_finger_down_contender</title> |
| <path fill="none" stroke="black" d="M276.39,-516.77C303.62,-521.95 338.33,-528.55 367.34,-534.07"/> |
| <polygon fill="black" stroke="black" points="366.86,-537.54 377.34,-535.97 368.17,-530.67 366.86,-537.54"/> |
| <text text-anchor="middle" x="335.29" y="-531.8" font-family="Times,serif" font-size="14.00">yes</text> |
| </g> |
| <!-- examine2_at_finger_down_contender->return_mismatch_at_finger_down_contender --> |
| <g id="edge9" class="edge"> |
| <title>examine2_at_finger_down_contender->return_mismatch_at_finger_down_contender</title> |
| <path fill="none" stroke="black" d="M464.85,-530.53C487.65,-521.98 517.28,-511.08 543.79,-502 557.71,-497.23 572.95,-492.29 586.78,-487.9"/> |
| <polygon fill="black" stroke="black" points="588.08,-491.16 596.56,-484.82 585.97,-484.49 588.08,-491.16"/> |
| <text text-anchor="middle" x="516.29" y="-517.8" font-family="Times,serif" font-size="14.00">yes</text> |
| </g> |
| <!-- examine3_at_finger_down_contender --> |
| <g id="node9" class="node"> |
| <title>examine3_at_finger_down_contender</title> |
| <polygon fill="none" stroke="black" points="632.79,-617 543.79,-564 632.79,-511 721.79,-564 632.79,-617"/> |
| <text text-anchor="middle" x="632.79" y="-575.3" font-family="Times,serif" font-size="14.00">displacement</text> |
| <text text-anchor="middle" x="632.79" y="-560.3" font-family="Times,serif" font-size="14.00">></text> |
| <text text-anchor="middle" x="632.79" y="-545.3" font-family="Times,serif" font-size="14.00">threshold?</text> |
| </g> |
| <!-- examine2_at_finger_down_contender->examine3_at_finger_down_contender --> |
| <g id="edge10" class="edge"> |
| <title>examine2_at_finger_down_contender->examine3_at_finger_down_contender</title> |
| <path fill="none" stroke="black" d="M480.66,-549.99C500.51,-551.83 523.53,-553.97 545.53,-556.01"/> |
| <polygon fill="black" stroke="black" points="545.28,-559.5 555.56,-556.93 545.92,-552.53 545.28,-559.5"/> |
| <text text-anchor="middle" x="516.29" y="-556.8" font-family="Times,serif" font-size="14.00">no</text> |
| </g> |
| <!-- return_matched_contender_at_finger_down_contender --> |
| <g id="node10" class="node"> |
| <title>return_matched_contender_at_finger_down_contender</title> |
| <polygon fill="none" stroke="black" points="849.79,-549.5 776.79,-549.5 776.79,-496.5 849.79,-496.5 849.79,-549.5"/> |
| <text text-anchor="middle" x="813.29" y="-534.3" font-family="Times,serif" font-size="14.00">return</text> |
| <text text-anchor="middle" x="813.29" y="-519.3" font-family="Times,serif" font-size="14.00">Matched</text> |
| <text text-anchor="middle" x="813.29" y="-504.3" font-family="Times,serif" font-size="14.00">Contender</text> |
| </g> |
| <!-- examine3_at_finger_down_contender->return_matched_contender_at_finger_down_contender --> |
| <g id="edge11" class="edge"> |
| <title>examine3_at_finger_down_contender->return_matched_contender_at_finger_down_contender</title> |
| <path fill="none" stroke="black" d="M697.48,-549.37C720.37,-544.11 745.71,-538.3 766.74,-533.46"/> |
| <polygon fill="black" stroke="black" points="767.73,-536.83 776.69,-531.18 766.16,-530 767.73,-536.83"/> |
| <text text-anchor="middle" x="749.29" y="-541.8" font-family="Times,serif" font-size="14.00">yes</text> |
| </g> |
| <!-- return_self_at_finger_down_contender --> |
| <g id="node11" class="node"> |
| <title>return_self_at_finger_down_contender</title> |
| <polygon fill="none" stroke="black" points="840.29,-606 786.29,-606 786.29,-568 840.29,-568 840.29,-606"/> |
| <text text-anchor="middle" x="813.29" y="-590.8" font-family="Times,serif" font-size="14.00">return</text> |
| <text text-anchor="middle" x="813.29" y="-575.8" font-family="Times,serif" font-size="14.00">`self`</text> |
| </g> |
| <!-- examine3_at_finger_down_contender->return_self_at_finger_down_contender --> |
| <g id="edge12" class="edge"> |
| <title>examine3_at_finger_down_contender->return_self_at_finger_down_contender</title> |
| <path fill="none" stroke="black" d="M706.4,-573.35C730.4,-576.45 756.06,-579.75 776.12,-582.34"/> |
| <polygon fill="black" stroke="black" points="775.69,-585.81 786.05,-583.62 776.58,-578.87 775.69,-585.81"/> |
| <text text-anchor="middle" x="749.29" y="-582.8" font-family="Times,serif" font-size="14.00">no</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="668.79,-322 596.79,-322 596.79,-284 668.79,-284 668.79,-322"/> |
| <text text-anchor="middle" x="632.79" y="-306.8" font-family="Times,serif" font-size="14.00">return</text> |
| <text text-anchor="middle" x="632.79" y="-291.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="M266.36,-337C292.43,-325.02 328.88,-310.37 362.79,-304 440.25,-289.46 532.48,-293.65 586.35,-298.2"/> |
| <polygon fill="black" stroke="black" points="586.32,-301.71 596.59,-299.11 586.94,-294.74 586.32,-301.71"/> |
| <text text-anchor="middle" x="425.79" y="-307.8" font-family="Times,serif" font-size="14.00">no</text> |
| </g> |
| <!-- examine2_at_matched_contender --> |
| <g id="node14" class="node"> |
| <title>examine2_at_matched_contender</title> |
| <polygon fill="none" stroke="black" points="425.79,-404 362.79,-366 425.79,-328 488.79,-366 425.79,-404"/> |
| <text text-anchor="middle" x="425.79" y="-369.8" font-family="Times,serif" font-size="14.00">button</text> |
| <text text-anchor="middle" x="425.79" y="-354.8" font-family="Times,serif" font-size="14.00">pressed?</text> |
| </g> |
| <!-- verify_at_matched_contender->examine2_at_matched_contender --> |
| <g id="edge15" class="edge"> |
| <title>verify_at_matched_contender->examine2_at_matched_contender</title> |
| <path fill="none" stroke="black" d="M282.42,-357.95C305.66,-359.26 333.32,-360.83 358.05,-362.23"/> |
| <polygon fill="black" stroke="black" points="357.9,-365.72 368.09,-362.79 358.3,-358.73 357.9,-365.72"/> |
| <text text-anchor="middle" x="335.29" y="-364.8" font-family="Times,serif" font-size="14.00">yes</text> |
| </g> |
| <!-- examine2_at_matched_contender->return_mismatch_at_matched_contender --> |
| <g id="edge16" class="edge"> |
| <title>examine2_at_matched_contender->return_mismatch_at_matched_contender</title> |
| <path fill="none" stroke="black" d="M468.28,-353.25C502.71,-342.67 551.59,-327.65 586.93,-316.79"/> |
| <polygon fill="black" stroke="black" points="587.99,-320.12 596.52,-313.84 585.93,-313.43 587.99,-320.12"/> |
| <text text-anchor="middle" x="516.29" y="-343.8" font-family="Times,serif" font-size="14.00">yes</text> |
| </g> |
| <!-- return_self_at_matched_contender --> |
| <g id="node15" class="node"> |
| <title>return_self_at_matched_contender</title> |
| <polygon fill="none" stroke="black" points="659.79,-385 605.79,-385 605.79,-347 659.79,-347 659.79,-385"/> |
| <text text-anchor="middle" x="632.79" y="-369.8" font-family="Times,serif" font-size="14.00">return</text> |
| <text text-anchor="middle" x="632.79" y="-354.8" font-family="Times,serif" font-size="14.00">`self`</text> |
| </g> |
| <!-- examine2_at_matched_contender->return_self_at_matched_contender --> |
| <g id="edge17" class="edge"> |
| <title>examine2_at_matched_contender->return_self_at_matched_contender</title> |
| <path fill="none" stroke="black" d="M488.86,-366C523.7,-366 565.97,-366 595.47,-366"/> |
| <polygon fill="black" stroke="black" points="595.72,-369.5 605.72,-366 595.72,-362.5 595.72,-369.5"/> |
| <text text-anchor="middle" x="516.29" y="-369.8" font-family="Times,serif" font-size="14.00">no</text> |
| </g> |
| <!-- return_end_without_event_at_winner --> |
| <g id="node18" class="node"> |
| <title>return_end_without_event_at_winner</title> |
| <polygon fill="none" stroke="black" points="485.29,-54 366.29,-54 366.29,-16 485.29,-16 485.29,-54"/> |
| <text text-anchor="middle" x="425.79" y="-38.8" font-family="Times,serif" font-size="14.00">return</text> |
| <text text-anchor="middle" x="425.79" y="-23.8" font-family="Times,serif" font-size="14.00">EndGesture(None)</text> |
| </g> |
| <!-- process_at_winner->return_end_without_event_at_winner --> |
| <g id="edge20" class="edge"> |
| <title>process_at_winner->return_end_without_event_at_winner</title> |
| <path fill="none" stroke="black" d="M266.42,-109.89C292.97,-96.68 329.99,-78.45 362.79,-63 366.09,-61.45 369.48,-59.87 372.92,-58.28"/> |
| <polygon fill="black" stroke="black" points="374.39,-61.45 382.02,-54.1 371.47,-55.09 374.39,-61.45"/> |
| <text text-anchor="middle" x="335.29" y="-83.8" font-family="Times,serif" font-size="14.00">0</text> |
| </g> |
| <!-- process2_at_winner --> |
| <g id="node19" class="node"> |
| <title>process2_at_winner</title> |
| <polygon fill="none" stroke="black" points="425.79,-148 362.79,-110 425.79,-72 488.79,-110 425.79,-148"/> |
| <text text-anchor="middle" x="425.79" y="-113.8" font-family="Times,serif" font-size="14.00">button</text> |
| <text text-anchor="middle" x="425.79" y="-98.8" font-family="Times,serif" font-size="14.00">pressed?</text> |
| </g> |
| <!-- process_at_winner->process2_at_winner --> |
| <g id="edge21" class="edge"> |
| <title>process_at_winner->process2_at_winner</title> |
| <path fill="none" stroke="black" d="M280.64,-123.34C305.08,-121.08 334.72,-118.34 360.76,-115.93"/> |
| <polygon fill="black" stroke="black" points="361.28,-119.39 370.92,-114.99 360.64,-112.42 361.28,-119.39"/> |
| <text text-anchor="middle" x="335.29" y="-122.8" font-family="Times,serif" font-size="14.00">1</text> |
| </g> |
| <!-- return_end_with_event_at_winner --> |
| <g id="node20" class="node"> |
| <title>return_end_with_event_at_winner</title> |
| <polygon fill="none" stroke="black" points="693.29,-196 572.29,-196 572.29,-158 693.29,-158 693.29,-196"/> |
| <text text-anchor="middle" x="632.79" y="-180.8" font-family="Times,serif" font-size="14.00">return</text> |
| <text text-anchor="middle" x="632.79" y="-165.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="M273.58,-139.09C299.33,-145.29 332.74,-152.62 362.79,-157 430.06,-166.81 507.52,-171.93 561.99,-174.52"/> |
| <polygon fill="black" stroke="black" points="562.08,-178.02 572.23,-174.99 562.4,-171.03 562.08,-178.02"/> |
| <text text-anchor="middle" x="425.79" y="-172.8" font-family="Times,serif" font-size="14.00">>1</text> |
| </g> |
| <!-- process2_at_winner->return_end_with_event_at_winner --> |
| <g id="edge23" class="edge"> |
| <title>process2_at_winner->return_end_with_event_at_winner</title> |
| <path fill="none" stroke="black" d="M467.3,-123.24C494.79,-132.22 531.82,-144.32 563.78,-154.77"/> |
| <polygon fill="black" stroke="black" points="562.93,-158.17 573.52,-157.95 565.1,-151.52 562.93,-158.17"/> |
| <text text-anchor="middle" x="516.29" y="-144.8" font-family="Times,serif" font-size="14.00">yes</text> |
| </g> |
| <!-- return_continue_with_event_at_winner --> |
| <g id="node21" class="node"> |
| <title>return_continue_with_event_at_winner</title> |
| <polygon fill="none" stroke="black" points="689.29,-136.5 576.29,-136.5 576.29,-83.5 689.29,-83.5 689.29,-136.5"/> |
| <text text-anchor="middle" x="632.79" y="-121.3" font-family="Times,serif" font-size="14.00">return</text> |
| <text text-anchor="middle" x="632.79" y="-106.3" font-family="Times,serif" font-size="14.00">ContinueGesture(</text> |
| <text text-anchor="middle" x="632.79" y="-91.3" font-family="Times,serif" font-size="14.00">Some, self)</text> |
| </g> |
| <!-- process2_at_winner->return_continue_with_event_at_winner --> |
| <g id="edge24" class="edge"> |
| <title>process2_at_winner->return_continue_with_event_at_winner</title> |
| <path fill="none" stroke="black" d="M488.86,-110C513.3,-110 541.4,-110 566.18,-110"/> |
| <polygon fill="black" stroke="black" points="566.21,-113.5 576.21,-110 566.21,-106.5 566.21,-113.5"/> |
| <text text-anchor="middle" x="516.29" y="-113.8" font-family="Times,serif" font-size="14.00">no</text> |
| </g> |
| </g> |
| </svg> |