Graphify / images /pf4.svg
ZahirJS's picture
Upload 52 files
da43f5e verified
<?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.43.0 (0)
-->
<!-- Title: ProcessFlowDiagram Pages: 1 -->
<svg width="1218pt" height="1813pt"
viewBox="0.00 0.00 1218.34 1813.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(36 1777)">
<title>ProcessFlowDiagram</title>
<polygon fill="white" stroke="transparent" points="-36,36 -36,-1777 1182.34,-1777 1182.34,36 -36,36"/>
<!-- Start Registration Process -->
<g id="node1" class="node">
<title>Start Registration Process</title>
<ellipse fill="#a8e6cf" stroke="black" cx="708.34" cy="-1723" rx="133.78" ry="18"/>
<text text-anchor="middle" x="708.34" y="-1719.3" font-family="Times,serif" font-size="14.00">Start Registration Process</text>
</g>
<!-- user_access_form -->
<g id="node2" class="node">
<title>user_access_form</title>
<path fill="#b8d4f1" stroke="black" d="M938.43,-1636C938.43,-1636 577.32,-1636 577.32,-1636 571.32,-1636 559.68,-1633.95 554.04,-1631.9 554.04,-1631.9 477.53,-1604.1 477.53,-1604.1 471.89,-1602.05 472.25,-1600 478.25,-1600 478.25,-1600 839.36,-1600 839.36,-1600 845.36,-1600 857,-1602.05 862.64,-1604.1 862.64,-1604.1 939.16,-1631.9 939.16,-1631.9 944.79,-1633.95 944.43,-1636 938.43,-1636"/>
<text text-anchor="middle" x="708.34" y="-1614.3" font-family="Times,serif" font-size="14.00">User Accesses Registration Form</text>
</g>
<!-- Start Registration Process&#45;&gt;user_access_form -->
<g id="edge1" class="edge">
<title>Start Registration Process&#45;&gt;user_access_form</title>
<path fill="none" stroke="#4a4a4a" d="M708.34,-1704.71C708.34,-1704.71 708.34,-1646.08 708.34,-1646.08"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="711.84,-1646.08 708.34,-1636.08 704.84,-1646.08 711.84,-1646.08"/>
<text text-anchor="middle" x="743.34" y="-1668" font-family="Times,serif" font-size="10.00" fill="#4a4a4a">User Request</text>
</g>
<!-- collect_user_data -->
<g id="node3" class="node">
<title>collect_user_data</title>
<path fill="#bebebe" stroke="black" d="M794.84,-1531C794.84,-1531 621.84,-1531 621.84,-1531 615.84,-1531 609.84,-1525 609.84,-1519 609.84,-1519 609.84,-1507 609.84,-1507 609.84,-1501 615.84,-1495 621.84,-1495 621.84,-1495 794.84,-1495 794.84,-1495 800.84,-1495 806.84,-1501 806.84,-1507 806.84,-1507 806.84,-1519 806.84,-1519 806.84,-1525 800.84,-1531 794.84,-1531"/>
<text text-anchor="middle" x="708.34" y="-1509.3" font-family="Times,serif" font-size="14.00">Collect Registration Data</text>
</g>
<!-- user_access_form&#45;&gt;collect_user_data -->
<g id="edge2" class="edge">
<title>user_access_form&#45;&gt;collect_user_data</title>
<path fill="none" stroke="#4a4a4a" d="M708.34,-1599.71C708.34,-1599.71 708.34,-1541.08 708.34,-1541.08"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="711.84,-1541.08 708.34,-1531.08 704.84,-1541.08 711.84,-1541.08"/>
<text text-anchor="middle" x="749.34" y="-1563" font-family="Times,serif" font-size="10.00" fill="#4a4a4a">Form Displayed</text>
</g>
<!-- validate_input_format -->
<g id="node4" class="node">
<title>validate_input_format</title>
<path fill="#bebebe" stroke="black" d="M782.84,-1426C782.84,-1426 633.84,-1426 633.84,-1426 627.84,-1426 621.84,-1420 621.84,-1414 621.84,-1414 621.84,-1402 621.84,-1402 621.84,-1396 627.84,-1390 633.84,-1390 633.84,-1390 782.84,-1390 782.84,-1390 788.84,-1390 794.84,-1396 794.84,-1402 794.84,-1402 794.84,-1414 794.84,-1414 794.84,-1420 788.84,-1426 782.84,-1426"/>
<text text-anchor="middle" x="708.34" y="-1404.3" font-family="Times,serif" font-size="14.00">Validate Input Format</text>
</g>
<!-- collect_user_data&#45;&gt;validate_input_format -->
<g id="edge3" class="edge">
<title>collect_user_data&#45;&gt;validate_input_format</title>
<path fill="none" stroke="#4a4a4a" d="M708.34,-1494.71C708.34,-1494.71 708.34,-1436.08 708.34,-1436.08"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="711.84,-1436.08 708.34,-1426.08 704.84,-1436.08 711.84,-1436.08"/>
<text text-anchor="middle" x="748.84" y="-1458" font-family="Times,serif" font-size="10.00" fill="#4a4a4a">Data Submitted</text>
</g>
<!-- is_format_valid -->
<g id="node5" class="node">
<title>is_format_valid</title>
<path fill="#fff9c4" stroke="black" d="M696.47,-1319.26C696.47,-1319.26 597.72,-1304.74 597.72,-1304.74 591.78,-1303.87 591.78,-1302.13 597.72,-1301.26 597.72,-1301.26 696.47,-1286.74 696.47,-1286.74 702.4,-1285.87 714.28,-1285.87 720.21,-1286.74 720.21,-1286.74 818.96,-1301.26 818.96,-1301.26 824.9,-1302.13 824.9,-1303.87 818.96,-1304.74 818.96,-1304.74 720.21,-1319.26 720.21,-1319.26 714.28,-1320.13 702.4,-1320.13 696.47,-1319.26"/>
<text text-anchor="middle" x="708.34" y="-1299.3" font-family="Times,serif" font-size="14.00">Is Format Valid?</text>
</g>
<!-- validate_input_format&#45;&gt;is_format_valid -->
<g id="edge4" class="edge">
<title>validate_input_format&#45;&gt;is_format_valid</title>
<path fill="none" stroke="#4a4a4a" d="M708.34,-1389.71C708.34,-1389.71 708.34,-1331.08 708.34,-1331.08"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="711.84,-1331.08 708.34,-1321.08 704.84,-1331.08 711.84,-1331.08"/>
<text text-anchor="middle" x="759.84" y="-1353" font-family="Times,serif" font-size="10.00" fill="#4a4a4a">Validation Complete</text>
</g>
<!-- check_email_exists -->
<g id="node6" class="node">
<title>check_email_exists</title>
<path fill="#bebebe" stroke="black" d="M701.34,-1216C701.34,-1216 497.34,-1216 497.34,-1216 491.34,-1216 485.34,-1210 485.34,-1204 485.34,-1204 485.34,-1192 485.34,-1192 485.34,-1186 491.34,-1180 497.34,-1180 497.34,-1180 701.34,-1180 701.34,-1180 707.34,-1180 713.34,-1186 713.34,-1192 713.34,-1192 713.34,-1204 713.34,-1204 713.34,-1210 707.34,-1216 701.34,-1216"/>
<text text-anchor="middle" x="599.34" y="-1194.3" font-family="Times,serif" font-size="14.00">Check if Email Already Exists</text>
</g>
<!-- is_format_valid&#45;&gt;check_email_exists -->
<g id="edge5" class="edge">
<title>is_format_valid&#45;&gt;check_email_exists</title>
<path fill="none" stroke="#4a4a4a" d="M649.72,-1293.31C649.72,-1293.31 649.72,-1226.02 649.72,-1226.02"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="653.22,-1226.02 649.72,-1216.02 646.22,-1226.02 653.22,-1226.02"/>
<text text-anchor="middle" x="694.84" y="-1248" font-family="Times,serif" font-size="10.00" fill="#4a4a4a">Valid Format</text>
</g>
<!-- rate_limit_check -->
<g id="node21" class="node">
<title>rate_limit_check</title>
<path fill="#fff9c4" stroke="black" d="M885.38,-1005C885.38,-1005 694.97,-989 694.97,-989 688.99,-988.5 688.99,-987.5 694.97,-987 694.97,-987 885.38,-971 885.38,-971 891.36,-970.5 903.32,-970.5 909.3,-971 909.3,-971 1099.71,-987 1099.71,-987 1105.69,-987.5 1105.69,-988.5 1099.71,-989 1099.71,-989 909.3,-1005 909.3,-1005 903.32,-1005.5 891.36,-1005.5 885.38,-1005"/>
<text text-anchor="middle" x="897.34" y="-984.3" font-family="Times,serif" font-size="14.00">Check Registration Rate Limit</text>
</g>
<!-- is_format_valid&#45;&gt;rate_limit_check -->
<g id="edge6" class="edge">
<title>is_format_valid&#45;&gt;rate_limit_check</title>
<path fill="none" stroke="#4a4a4a" d="M771.96,-1294.25C771.96,-1294.25 771.96,-1005.7 771.96,-1005.7"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="775.46,-1005.7 771.96,-995.7 768.46,-1005.7 775.46,-1005.7"/>
<text text-anchor="middle" x="835.34" y="-1143" font-family="Times,serif" font-size="10.00" fill="#4a4a4a">Invalid Format</text>
</g>
<!-- email_already_exists -->
<g id="node7" class="node">
<title>email_already_exists</title>
<path fill="#fff9c4" stroke="black" d="M430.39,-1109.87C430.39,-1109.87 264.26,-1094.13 264.26,-1094.13 258.28,-1093.57 258.28,-1092.43 264.26,-1091.87 264.26,-1091.87 430.39,-1076.13 430.39,-1076.13 436.37,-1075.57 448.31,-1075.57 454.29,-1076.13 454.29,-1076.13 620.43,-1091.87 620.43,-1091.87 626.4,-1092.43 626.4,-1093.57 620.43,-1094.13 620.43,-1094.13 454.29,-1109.87 454.29,-1109.87 448.31,-1110.43 436.37,-1110.43 430.39,-1109.87"/>
<text text-anchor="middle" x="442.34" y="-1089.3" font-family="Times,serif" font-size="14.00">Email Already Registered?</text>
</g>
<!-- check_email_exists&#45;&gt;email_already_exists -->
<g id="edge9" class="edge">
<title>check_email_exists&#45;&gt;email_already_exists</title>
<path fill="none" stroke="#4a4a4a" d="M558.97,-1179.71C558.97,-1179.71 558.97,-1110.26 558.97,-1110.26"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="562.47,-1110.26 558.97,-1100.26 555.47,-1110.26 562.47,-1110.26"/>
<text text-anchor="middle" x="602.84" y="-1143" font-family="Times,serif" font-size="10.00" fill="#4a4a4a">Database Check</text>
</g>
<!-- hash_password -->
<g id="node8" class="node">
<title>hash_password</title>
<path fill="#bebebe" stroke="black" d="M188.84,-1006C188.84,-1006 47.84,-1006 47.84,-1006 41.84,-1006 35.84,-1000 35.84,-994 35.84,-994 35.84,-982 35.84,-982 35.84,-976 41.84,-970 47.84,-970 47.84,-970 188.84,-970 188.84,-970 194.84,-970 200.84,-976 200.84,-982 200.84,-982 200.84,-994 200.84,-994 200.84,-1000 194.84,-1006 188.84,-1006"/>
<text text-anchor="middle" x="118.34" y="-984.3" font-family="Times,serif" font-size="14.00">Hash User Password</text>
</g>
<!-- email_already_exists&#45;&gt;hash_password -->
<g id="edge10" class="edge">
<title>email_already_exists&#45;&gt;hash_password</title>
<path fill="none" stroke="#4a4a4a" d="M251.99,-1093C181.47,-1093 118.34,-1093 118.34,-1093 118.34,-1093 118.34,-1016.29 118.34,-1016.29"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="121.84,-1016.29 118.34,-1006.29 114.84,-1016.29 121.84,-1016.29"/>
<text text-anchor="middle" x="256.34" y="-1038" font-family="Times,serif" font-size="10.00" fill="#4a4a4a">New Email</text>
</g>
<!-- show_duplicate_error -->
<g id="node18" class="node">
<title>show_duplicate_error</title>
<path fill="#b8d4f1" stroke="black" d="M628.76,-1006C628.76,-1006 337.12,-1006 337.12,-1006 331.12,-1006 319.63,-1003.57 314.15,-1001.14 314.15,-1001.14 254.89,-974.86 254.89,-974.86 249.4,-972.43 249.92,-970 255.92,-970 255.92,-970 547.56,-970 547.56,-970 553.56,-970 565.05,-972.43 570.53,-974.86 570.53,-974.86 629.79,-1001.14 629.79,-1001.14 635.28,-1003.57 634.76,-1006 628.76,-1006"/>
<text text-anchor="middle" x="442.34" y="-984.3" font-family="Times,serif" font-size="14.00">Display Email Exists Error</text>
</g>
<!-- email_already_exists&#45;&gt;show_duplicate_error -->
<g id="edge11" class="edge">
<title>email_already_exists&#45;&gt;show_duplicate_error</title>
<path fill="none" stroke="#4a4a4a" d="M442.34,-1074.71C442.34,-1074.71 442.34,-1016.08 442.34,-1016.08"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="445.84,-1016.08 442.34,-1006.08 438.84,-1016.08 445.84,-1016.08"/>
<text text-anchor="middle" x="483.34" y="-1038" font-family="Times,serif" font-size="10.00" fill="#4a4a4a">Duplicate Email</text>
</g>
<!-- create_user_record -->
<g id="node9" class="node">
<title>create_user_record</title>
<path fill="#bebebe" stroke="black" d="M278.34,-901C278.34,-901 72.34,-901 72.34,-901 66.34,-901 60.34,-895 60.34,-889 60.34,-889 60.34,-877 60.34,-877 60.34,-871 66.34,-865 72.34,-865 72.34,-865 278.34,-865 278.34,-865 284.34,-865 290.34,-871 290.34,-877 290.34,-877 290.34,-889 290.34,-889 290.34,-895 284.34,-901 278.34,-901"/>
<text text-anchor="middle" x="175.34" y="-879.3" font-family="Times,serif" font-size="14.00">Create User Database Record</text>
</g>
<!-- hash_password&#45;&gt;create_user_record -->
<g id="edge14" class="edge">
<title>hash_password&#45;&gt;create_user_record</title>
<path fill="none" stroke="#4a4a4a" d="M130.59,-969.71C130.59,-969.71 130.59,-911.08 130.59,-911.08"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="134.09,-911.08 130.59,-901.08 127.09,-911.08 134.09,-911.08"/>
<text text-anchor="middle" x="184.34" y="-933" font-family="Times,serif" font-size="10.00" fill="#4a4a4a">Password Secured</text>
</g>
<!-- generate_verification_token -->
<g id="node10" class="node">
<title>generate_verification_token</title>
<path fill="#bebebe" stroke="black" d="M293.34,-771C293.34,-771 57.34,-771 57.34,-771 51.34,-771 45.34,-765 45.34,-759 45.34,-759 45.34,-747 45.34,-747 45.34,-741 51.34,-735 57.34,-735 57.34,-735 293.34,-735 293.34,-735 299.34,-735 305.34,-741 305.34,-747 305.34,-747 305.34,-759 305.34,-759 305.34,-765 299.34,-771 293.34,-771"/>
<text text-anchor="middle" x="175.34" y="-749.3" font-family="Times,serif" font-size="14.00">Generate Email Verification Token</text>
</g>
<!-- create_user_record&#45;&gt;generate_verification_token -->
<g id="edge15" class="edge">
<title>create_user_record&#45;&gt;generate_verification_token</title>
<path fill="none" stroke="#4a4a4a" d="M175.34,-864.92C175.34,-864.92 175.34,-781.34 175.34,-781.34"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="178.84,-781.34 175.34,-771.34 171.84,-781.34 178.84,-781.34"/>
<text text-anchor="middle" x="209.34" y="-815.5" font-family="Times,serif" font-size="10.00" fill="#4a4a4a">User Created</text>
</g>
<!-- send_verification_email -->
<g id="node11" class="node">
<title>send_verification_email</title>
<path fill="#b8d4f1" stroke="black" d="M338.52,-666C338.52,-666 83.85,-666 83.85,-666 77.85,-666 66.49,-663.31 61.12,-660.61 61.12,-660.61 10.88,-635.39 10.88,-635.39 5.52,-632.69 6.16,-630 12.16,-630 12.16,-630 266.83,-630 266.83,-630 272.83,-630 284.2,-632.69 289.56,-635.39 289.56,-635.39 339.8,-660.61 339.8,-660.61 345.16,-663.31 344.52,-666 338.52,-666"/>
<text text-anchor="middle" x="175.34" y="-644.3" font-family="Times,serif" font-size="14.00">Send Verification Email</text>
</g>
<!-- generate_verification_token&#45;&gt;send_verification_email -->
<g id="edge16" class="edge">
<title>generate_verification_token&#45;&gt;send_verification_email</title>
<path fill="none" stroke="#4a4a4a" d="M175.34,-734.71C175.34,-734.71 175.34,-676.08 175.34,-676.08"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="178.84,-676.08 175.34,-666.08 171.84,-676.08 178.84,-676.08"/>
<text text-anchor="middle" x="208.84" y="-698" font-family="Times,serif" font-size="10.00" fill="#4a4a4a">Token Ready</text>
</g>
<!-- create_user_profile -->
<g id="node12" class="node">
<title>create_user_profile</title>
<polygon fill="#f0f8ff" stroke="black" points="285.34,-561 59.34,-561 59.34,-525 291.34,-525 291.34,-555 285.34,-561"/>
<polyline fill="none" stroke="black" points="285.34,-561 285.34,-555 "/>
<polyline fill="none" stroke="black" points="291.34,-555 285.34,-555 "/>
<text text-anchor="middle" x="175.34" y="-539.3" font-family="Times,serif" font-size="14.00">Create User Profile Document</text>
</g>
<!-- send_verification_email&#45;&gt;create_user_profile -->
<g id="edge17" class="edge">
<title>send_verification_email&#45;&gt;create_user_profile</title>
<path fill="none" stroke="#4a4a4a" d="M175.34,-629.71C175.34,-629.71 175.34,-571.08 175.34,-571.08"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="178.84,-571.08 175.34,-561.08 171.84,-571.08 178.84,-571.08"/>
<text text-anchor="middle" x="203.34" y="-593" font-family="Times,serif" font-size="10.00" fill="#4a4a4a">Email Sent</text>
</g>
<!-- setup_default_preferences -->
<g id="node13" class="node">
<title>setup_default_preferences</title>
<path fill="#bebebe" stroke="black" d="M286.84,-456C286.84,-456 65.84,-456 65.84,-456 59.84,-456 53.84,-450 53.84,-444 53.84,-444 53.84,-432 53.84,-432 53.84,-426 59.84,-420 65.84,-420 65.84,-420 286.84,-420 286.84,-420 292.84,-420 298.84,-426 298.84,-432 298.84,-432 298.84,-444 298.84,-444 298.84,-450 292.84,-456 286.84,-456"/>
<text text-anchor="middle" x="176.34" y="-434.3" font-family="Times,serif" font-size="14.00">Setup Default User Preferences</text>
</g>
<!-- create_user_profile&#45;&gt;setup_default_preferences -->
<g id="edge18" class="edge">
<title>create_user_profile&#45;&gt;setup_default_preferences</title>
<path fill="none" stroke="#4a4a4a" d="M175.34,-524.71C175.34,-524.71 175.34,-466.08 175.34,-466.08"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="178.84,-466.08 175.34,-456.08 171.84,-466.08 178.84,-466.08"/>
<text text-anchor="middle" x="213.84" y="-488" font-family="Times,serif" font-size="10.00" fill="#4a4a4a">Profile Created</text>
</g>
<!-- log_registration_event -->
<g id="node14" class="node">
<title>log_registration_event</title>
<polygon fill="#f0f8ff" stroke="black" points="273.84,-351 84.84,-351 84.84,-315 279.84,-315 279.84,-345 273.84,-351"/>
<polyline fill="none" stroke="black" points="273.84,-351 273.84,-345 "/>
<polyline fill="none" stroke="black" points="279.84,-345 273.84,-345 "/>
<text text-anchor="middle" x="182.34" y="-329.3" font-family="Times,serif" font-size="14.00">Log Registration Activity</text>
</g>
<!-- setup_default_preferences&#45;&gt;log_registration_event -->
<g id="edge19" class="edge">
<title>setup_default_preferences&#45;&gt;log_registration_event</title>
<path fill="none" stroke="#4a4a4a" d="M182.34,-419.71C182.34,-419.71 182.34,-361.08 182.34,-361.08"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="185.84,-361.08 182.34,-351.08 178.84,-361.08 185.84,-361.08"/>
<text text-anchor="middle" x="218.84" y="-383" font-family="Times,serif" font-size="10.00" fill="#4a4a4a">Preferences Set</text>
</g>
<!-- send_welcome_notification -->
<g id="node15" class="node">
<title>send_welcome_notification</title>
<path fill="#b8d4f1" stroke="black" d="M373.65,-246C373.65,-246 112.41,-246 112.41,-246 106.41,-246 95.02,-243.36 89.64,-240.71 89.64,-240.71 37.81,-215.29 37.81,-215.29 32.42,-212.64 33.04,-210 39.04,-210 39.04,-210 300.27,-210 300.27,-210 306.27,-210 317.66,-212.64 323.04,-215.29 323.04,-215.29 374.87,-240.71 374.87,-240.71 380.26,-243.36 379.65,-246 373.65,-246"/>
<text text-anchor="middle" x="206.34" y="-224.3" font-family="Times,serif" font-size="14.00">Send Welcome Message</text>
</g>
<!-- log_registration_event&#45;&gt;send_welcome_notification -->
<g id="edge20" class="edge">
<title>log_registration_event&#45;&gt;send_welcome_notification</title>
<path fill="none" stroke="#4a4a4a" d="M182.34,-314.71C182.34,-314.71 182.34,-256.08 182.34,-256.08"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="185.84,-256.08 182.34,-246.08 178.84,-256.08 185.84,-256.08"/>
<text text-anchor="middle" x="226.84" y="-278" font-family="Times,serif" font-size="10.00" fill="#4a4a4a">Event Logged</text>
</g>
<!-- redirect_to_verification -->
<g id="node16" class="node">
<title>redirect_to_verification</title>
<path fill="#b8d4f1" stroke="black" d="M498.04,-141C498.04,-141 186.86,-141 186.86,-141 180.86,-141 169.33,-138.69 163.79,-136.38 163.79,-136.38 99.72,-109.62 99.72,-109.62 94.18,-107.31 94.64,-105 100.64,-105 100.64,-105 411.82,-105 411.82,-105 417.82,-105 429.35,-107.31 434.89,-109.62 434.89,-109.62 498.97,-136.38 498.97,-136.38 504.5,-138.69 504.04,-141 498.04,-141"/>
<text text-anchor="middle" x="299.34" y="-119.3" font-family="Times,serif" font-size="14.00">Redirect to Verification Page</text>
</g>
<!-- send_welcome_notification&#45;&gt;redirect_to_verification -->
<g id="edge21" class="edge">
<title>send_welcome_notification&#45;&gt;redirect_to_verification</title>
<path fill="none" stroke="#4a4a4a" d="M237.12,-209.71C237.12,-209.71 237.12,-151.08 237.12,-151.08"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="240.62,-151.08 237.12,-141.08 233.62,-151.08 240.62,-151.08"/>
<text text-anchor="middle" x="273.84" y="-173" font-family="Times,serif" font-size="10.00" fill="#4a4a4a">Welcome Sent</text>
</g>
<!-- end_registration_process -->
<g id="node23" class="node">
<title>end_registration_process</title>
<ellipse fill="#ffb3ba" stroke="black" cx="631.34" cy="-18" rx="128.88" ry="18"/>
<text text-anchor="middle" x="631.34" y="-14.3" font-family="Times,serif" font-size="14.00">End Registration Process</text>
</g>
<!-- redirect_to_verification&#45;&gt;end_registration_process -->
<g id="edge22" class="edge">
<title>redirect_to_verification&#45;&gt;end_registration_process</title>
<path fill="none" stroke="#4a4a4a" d="M506.3,-122.92C506.3,-122.92 506.3,-32.38 506.3,-32.38"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="509.8,-32.38 506.3,-22.38 502.8,-32.38 509.8,-32.38"/>
<text text-anchor="middle" x="451.84" y="-68" font-family="Times,serif" font-size="10.00" fill="#4a4a4a">Success Path</text>
</g>
<!-- show_format_error -->
<g id="node17" class="node">
<title>show_format_error</title>
<path fill="#b8d4f1" stroke="black" d="M1003.03,-901C1003.03,-901 668.01,-901 668.01,-901 662.01,-901 650.42,-898.82 644.83,-896.64 644.83,-896.64 574.83,-869.36 574.83,-869.36 569.24,-867.18 569.65,-865 575.65,-865 575.65,-865 910.68,-865 910.68,-865 916.68,-865 928.27,-867.18 933.86,-869.36 933.86,-869.36 1003.85,-896.64 1003.85,-896.64 1009.44,-898.82 1009.03,-901 1003.03,-901"/>
<text text-anchor="middle" x="789.34" y="-879.3" font-family="Times,serif" font-size="14.00">Display Format Error Message</text>
</g>
<!-- log_failed_attempt -->
<g id="node20" class="node">
<title>log_failed_attempt</title>
<polygon fill="#f0f8ff" stroke="black" points="717.34,-771 539.34,-771 539.34,-735 723.34,-735 723.34,-765 717.34,-771"/>
<polyline fill="none" stroke="black" points="717.34,-771 717.34,-765 "/>
<polyline fill="none" stroke="black" points="723.34,-765 717.34,-765 "/>
<text text-anchor="middle" x="631.34" y="-749.3" font-family="Times,serif" font-size="14.00">Log Failed Registration</text>
</g>
<!-- show_format_error&#45;&gt;log_failed_attempt -->
<g id="edge23" class="edge">
<title>show_format_error&#45;&gt;log_failed_attempt</title>
<path fill="none" stroke="#4a4a4a" d="M643.42,-864.92C643.42,-864.92 643.42,-781.34 643.42,-781.34"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="646.92,-781.34 643.42,-771.34 639.92,-781.34 646.92,-781.34"/>
<text text-anchor="middle" x="778.34" y="-815.5" font-family="Times,serif" font-size="10.00" fill="#4a4a4a">Error Displayed</text>
</g>
<!-- suggest_login -->
<g id="node19" class="node">
<title>suggest_login</title>
<path fill="#bebebe" stroke="black" d="M508.84,-901C508.84,-901 355.84,-901 355.84,-901 349.84,-901 343.84,-895 343.84,-889 343.84,-889 343.84,-877 343.84,-877 343.84,-871 349.84,-865 355.84,-865 355.84,-865 508.84,-865 508.84,-865 514.84,-865 520.84,-871 520.84,-877 520.84,-877 520.84,-889 520.84,-889 520.84,-895 514.84,-901 508.84,-901"/>
<text text-anchor="middle" x="432.34" y="-879.3" font-family="Times,serif" font-size="14.00">Suggest Login Instead</text>
</g>
<!-- show_duplicate_error&#45;&gt;suggest_login -->
<g id="edge12" class="edge">
<title>show_duplicate_error&#45;&gt;suggest_login</title>
<path fill="none" stroke="#4a4a4a" d="M432.34,-969.71C432.34,-969.71 432.34,-911.08 432.34,-911.08"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="435.84,-911.08 432.34,-901.08 428.84,-911.08 435.84,-911.08"/>
<text text-anchor="middle" x="469.84" y="-933" font-family="Times,serif" font-size="10.00" fill="#4a4a4a">Error Shown</text>
</g>
<!-- suggest_login&#45;&gt;log_failed_attempt -->
<g id="edge13" class="edge">
<title>suggest_login&#45;&gt;log_failed_attempt</title>
<path fill="none" stroke="#4a4a4a" d="M515.39,-864.92C515.39,-829.2 515.39,-753 515.39,-753 515.39,-753 529.13,-753 529.13,-753"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="529.13,-756.5 539.13,-753 529.13,-749.5 529.13,-756.5"/>
<text text-anchor="middle" x="535.34" y="-815.5" font-family="Times,serif" font-size="10.00" fill="#4a4a4a">Alternative Provided</text>
</g>
<!-- log_failed_attempt&#45;&gt;end_registration_process -->
<g id="edge24" class="edge">
<title>log_failed_attempt&#45;&gt;end_registration_process</title>
<path fill="none" stroke="#4a4a4a" d="M631.34,-734.83C631.34,-734.83 631.34,-46.19 631.34,-46.19"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="634.84,-46.19 631.34,-36.19 627.84,-46.19 634.84,-46.19"/>
<text text-anchor="middle" x="670.34" y="-383" font-family="Times,serif" font-size="10.00" fill="#4a4a4a">Failure Logged</text>
</g>
<!-- rate_limit_check&#45;&gt;show_format_error -->
<g id="edge7" class="edge">
<title>rate_limit_check&#45;&gt;show_format_error</title>
<path fill="none" stroke="#4a4a4a" d="M849.18,-973.84C849.18,-973.84 849.18,-911.15 849.18,-911.15"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="852.68,-911.15 849.18,-901.15 845.68,-911.15 852.68,-911.15"/>
<text text-anchor="middle" x="877.34" y="-933" font-family="Times,serif" font-size="10.00" fill="#4a4a4a">Within Limits</text>
</g>
<!-- block_registration -->
<g id="node22" class="node">
<title>block_registration</title>
<path fill="#bebebe" stroke="black" d="M1124.34,-836C1124.34,-836 936.34,-836 936.34,-836 930.34,-836 924.34,-830 924.34,-824 924.34,-824 924.34,-812 924.34,-812 924.34,-806 930.34,-800 936.34,-800 936.34,-800 1124.34,-800 1124.34,-800 1130.34,-800 1136.34,-806 1136.34,-812 1136.34,-812 1136.34,-824 1136.34,-824 1136.34,-830 1130.34,-836 1124.34,-836"/>
<text text-anchor="middle" x="1030.34" y="-814.3" font-family="Times,serif" font-size="14.00">Block Registration Attempt</text>
</g>
<!-- rate_limit_check&#45;&gt;block_registration -->
<g id="edge8" class="edge">
<title>rate_limit_check&#45;&gt;block_registration</title>
<path fill="none" stroke="#4a4a4a" d="M1063.35,-983.8C1063.35,-983.8 1063.35,-846.26 1063.35,-846.26"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="1066.85,-846.26 1063.35,-836.26 1059.85,-846.26 1066.85,-846.26"/>
<text text-anchor="middle" x="1113.34" y="-933" font-family="Times,serif" font-size="10.00" fill="#4a4a4a">Rate Limited</text>
</g>
<!-- block_registration&#45;&gt;end_registration_process -->
<g id="edge25" class="edge">
<title>block_registration&#45;&gt;end_registration_process</title>
<path fill="none" stroke="#4a4a4a" d="M924.09,-818C841.78,-818 741.69,-818 741.69,-818 741.69,-818 741.69,-37.54 741.69,-37.54"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="745.19,-37.54 741.69,-27.54 738.19,-37.54 745.19,-37.54"/>
<text text-anchor="middle" x="932.84" y="-435.5" font-family="Times,serif" font-size="10.00" fill="#4a4a4a">Blocked</text>
</g>
</g>
</svg>