Files
the-biergarten-app/docs/website/diagrams-out/authentication-flow.svg
Aaron Po c825d99b0a Refactor comments and update documentation for backend and pipeline (#246)
* Remove restating comments in backend

* Remove restating comments in frontend stories

* Remove restating comments in pipeline

* Remove restating comments in pipeline scripts

* Restore location-clear comment in BreweryRepository

* Remove stale/restating comments found in second pass

* Restore mock curated-data branch comment in main.cc

* Remove more restating/filler comments in backend

* Document account-management endpoints, compose files, and env generator

* Squashed commit of the following:

commit a8a5b8abd9969859c695092fae6990d03b2135ed
Author: Aaron Po <aaron.po97@gmail.com>
Date:   Sun Aug 23 23:53:56 2026 -0400

    Add reverse geocoding for brewery street addresses (#245)

    * Add geocoding to seed application, remove postal codes from generator

    Update comments

* Update pipeline class diagram for OpenAI generator

* Update pipeline activity diagram for brewery coordinates and OpenAI backend

* Add mailpit, production, db-only, and minimal environments to deployment diagram

* Fix authentication flow diagram for Identity migration

* Add account-management flows to authentication diagram

* Fix database schema diagram note referencing removed AuthRepository
2026-08-24 01:09:48 -04:00

1 line
432 KiB
XML

<?plantuml 1.2026.2?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" data-diagram-type="SEQUENCE" height="18200px" preserveAspectRatio="none" style="width:4492px;height:18200px;background:#FFFFFF;" version="1.1" viewBox="0 0 4492 18200" width="4492px" zoomAndPan="magnify"><title>User Authentication Flow - Expanded</title><defs/><g><text fill="#000000" font-family="Arial" font-size="22" font-weight="bold" lengthAdjust="spacing" textLength="402.1338" x="2043.9308" y="38.5181">User Authentication Flow - Expanded</text><rect fill="#ADD8E6" height="18137.3871" style="stroke:#000000;stroke-width:1;" width="2395.9355" x="854.4169" y="56.9641"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="90.7011" x="2007.0341" y="70.8611">Handler Layer</text><rect fill="#90EE90" height="18137.3871" style="stroke:#000000;stroke-width:1;" width="666.2564" x="3262.3524" y="56.9641"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="130.1008" x="3530.4302" y="70.8611">Infrastructure Layer</text><rect fill="#FFFFE0" height="18137.3871" style="stroke:#000000;stroke-width:1;" width="416.6368" x="3940.6088" y="56.9641"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="150.5466" x="4073.6539" y="70.8611">Repository / Cross-slice</text><g><title>API</title><rect fill="#FFFFFF" height="4019.9083" style="stroke:#000000;stroke-width:1;" width="10" x="327.7901" y="409.6401"/></g><g><title>API</title><rect fill="#FFFFFF" height="1867.3668" style="stroke:#000000;stroke-width:1;" width="10" x="327.7901" y="4516.6664"/></g><g><title>API</title><rect fill="#FFFFFF" height="1392.5405" style="stroke:#000000;stroke-width:1;" width="10" x="327.7901" y="6488.8573"/></g><g><title>API</title><rect fill="#FFFFFF" height="1355.8526" style="stroke:#000000;stroke-width:1;" width="10" x="327.7901" y="7986.2218"/></g><g><title>API</title><rect fill="#FFFFFF" height="952.5563" style="stroke:#000000;stroke-width:1;" width="10" x="327.7901" y="9446.8985"/></g><g><title>API</title><rect fill="#FFFFFF" height="1276.0104" style="stroke:#000000;stroke-width:1;" width="10" x="327.7901" y="10585.3969"/></g><g><title>API</title><rect fill="#FFFFFF" height="1329.1284" style="stroke:#000000;stroke-width:1;" width="10" x="327.7901" y="11966.2314"/></g><g><title>API</title><rect fill="#FFFFFF" height="1710.9764" style="stroke:#000000;stroke-width:1;" width="10" x="327.7901" y="13417.8899"/></g><g><title>API</title><rect fill="#FFFFFF" height="1314.1284" style="stroke:#000000;stroke-width:1;" width="10" x="327.7901" y="15251.3964"/></g><g><title>API</title><rect fill="#FFFFFF" height="1223.5802" style="stroke:#000000;stroke-width:1;" width="10" x="327.7901" y="16652.6429"/></g><g><title>MediatR pipeline</title><rect fill="#FFFFFF" height="3775.1421" style="stroke:#000000;stroke-width:1;" width="10" x="665.0594" y="441.3461"/></g><g><title>MediatR pipeline</title><rect fill="#FFFFFF" height="671.3564" style="stroke:#000000;stroke-width:1;" width="10" x="670.0594" y="3253.0897"/></g><g><title>MediatR pipeline</title><rect fill="#FFFFFF" height="1633.3067" style="stroke:#000000;stroke-width:1;" width="10" x="665.0594" y="4548.3724"/></g><g><title>MediatR pipeline</title><rect fill="#FFFFFF" height="1247.0104" style="stroke:#000000;stroke-width:1;" width="10" x="665.0594" y="6520.5633"/></g><g><title>MediatR pipeline</title><rect fill="#FFFFFF" height="1217.3225" style="stroke:#000000;stroke-width:1;" width="10" x="665.0594" y="8017.9279"/></g><g><title>MediatR pipeline</title><rect fill="#FFFFFF" height="853.7322" style="stroke:#000000;stroke-width:1;" width="10" x="665.0594" y="9478.6045"/></g><g><title>MediatR pipeline</title><rect fill="#FFFFFF" height="165.9421" style="stroke:#000000;stroke-width:1;" width="10" x="670.0594" y="10088.9826"/></g><g><title>MediatR pipeline</title><rect fill="#FFFFFF" height="1095.0683" style="stroke:#000000;stroke-width:1;" width="10" x="665.0594" y="10652.5149"/></g><g><title>MediatR pipeline</title><rect fill="#FFFFFF" height="1148.1863" style="stroke:#000000;stroke-width:1;" width="10" x="665.0594" y="12033.3494"/></g><g><title>MediatR pipeline</title><rect fill="#FFFFFF" height="1512.3283" style="stroke:#000000;stroke-width:1;" width="10" x="665.0594" y="13502.7139"/></g><g><title>MediatR pipeline</title><rect fill="#FFFFFF" height="1115.4803" style="stroke:#000000;stroke-width:1;" width="10" x="665.0594" y="15336.2205"/></g><g><title>MediatR pipeline</title><rect fill="#FFFFFF" height="1085.0502" style="stroke:#000000;stroke-width:1;" width="10" x="665.0594" y="16702.0549"/></g><g><title>RegisterUserHandler</title><rect fill="#FFFFFF" height="3425.276" style="stroke:#000000;stroke-width:1;" width="10" x="939.2477" y="759.5062"/></g><g><title>LoginHandler</title><rect fill="#FFFFFF" height="1354.2646" style="stroke:#000000;stroke-width:1;" width="10" x="1141.5458" y="4795.7085"/></g><g><title>RefreshTokenHandler</title><rect fill="#FFFFFF" height="950.2623" style="stroke:#000000;stroke-width:1;" width="10" x="1302.0323" y="6785.6054"/></g><g><title>ConfirmUserHandler</title><rect fill="#FFFFFF" height="1153.9105" style="stroke:#000000;stroke-width:1;" width="10" x="1486.1228" y="8049.6339"/></g><g><title>ResendConfirmationEmailHandler</title><rect fill="#FFFFFF" height="790.3202" style="stroke:#000000;stroke-width:1;" width="10" x="1710.5121" y="9510.3105"/></g><g><title>UpdateUsernameHandler</title><rect fill="#FFFFFF" height="851.4383" style="stroke:#000000;stroke-width:1;" width="10" x="1951.1414" y="10864.4389"/></g><g><title>UpdateEmailHandler</title><rect fill="#FFFFFF" height="904.5563" style="stroke:#000000;stroke-width:1;" width="10" x="2148.2098" y="12245.2734"/></g><g><title>UpdatePasswordHandler</title><rect fill="#FFFFFF" height="1268.6983" style="stroke:#000000;stroke-width:1;" width="10" x="2343.0242" y="13714.6379"/></g><g><title>UpdateProfileHandler</title><rect fill="#FFFFFF" height="871.8503" style="stroke:#000000;stroke-width:1;" width="10" x="2541.1917" y="15548.1445"/></g><g><title>DeleteAccountHandler</title><rect fill="#FFFFFF" height="1021.6381" style="stroke:#000000;stroke-width:1;" width="10" x="2731.3231" y="16733.7609"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="1238.7129" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="853.6242"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="344.8842" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="4827.4145"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="312.1782" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="5378.2227"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="211.6481" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="7156.0595"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="193.9421" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="8364.6759"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="284.7662" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="8869.3661"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="193.9421" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="9542.0165"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="193.9421" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="10896.145"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="213.9421" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="11278.3051"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="126.8241" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="12276.9794"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="334.1782" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="12574.3155"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="95.118" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="13746.344"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="625.9263" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="14047.386"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="95.118" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="15579.8505"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="197.6481" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="16016.4226"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="95.118" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="16765.467"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="353.1601" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="17031.097"/></g><g><title>TokenService</title><rect fill="#FFFFFF" height="346.1782" style="stroke:#000000;stroke-width:1;" width="10" x="3180.8616" y="2404.4972"/></g><g><title>TokenService</title><rect fill="#FFFFFF" height="185.9421" style="stroke:#000000;stroke-width:1;" width="10" x="3180.8616" y="2782.3814"/></g><g><title>TokenService</title><rect fill="#FFFFFF" height="185.9421" style="stroke:#000000;stroke-width:1;" width="10" x="3180.8616" y="3000.0295"/></g><g><title>TokenService</title><rect fill="#FFFFFF" height="95.118" style="stroke:#000000;stroke-width:1;" width="10" x="3180.8616" y="5860.9129"/></g><g><title>TokenService</title><rect fill="#FFFFFF" height="95.118" style="stroke:#000000;stroke-width:1;" width="10" x="3180.8616" y="5987.737"/></g><g><title>TokenService</title><rect fill="#FFFFFF" height="851.4383" style="stroke:#000000;stroke-width:1;" width="10" x="3180.8616" y="6817.3114"/></g><g><title>TokenService</title><rect fill="#FFFFFF" height="112.8241" style="stroke:#000000;stroke-width:1;" width="10" x="3180.8616" y="8081.3399"/></g><g><title>TokenService</title><rect fill="#FFFFFF" height="31.706" style="stroke:#000000;stroke-width:1;" width="10" x="3180.8616" y="10025.5705"/></g><g><title>Argon2PasswordHasher</title><rect fill="#FFFFFF" height="175.6481" style="stroke:#000000;stroke-width:1;" width="10" x="3358.0191" y="885.3302"/></g><g><title>Argon2PasswordHasher</title><rect fill="#FFFFFF" height="122.5301" style="stroke:#000000;stroke-width:1;" width="10" x="3358.0191" y="5536.1648"/></g><g><title>Argon2PasswordHasher</title><rect fill="#FFFFFF" height="31.706" style="stroke:#000000;stroke-width:1;" width="10" x="3358.0191" y="14114.5041"/></g><g><title>Argon2PasswordHasher</title><rect fill="#FFFFFF" height="31.706" style="stroke:#000000;stroke-width:1;" width="10" x="3358.0191" y="14288.7221"/></g><g><title>JWT</title><rect fill="#FFFFFF" height="265.0602" style="stroke:#000000;stroke-width:1;" width="10" x="3527.7597" y="2453.9092"/></g><g><title>JWT</title><rect fill="#FFFFFF" height="104.8241" style="stroke:#000000;stroke-width:1;" width="10" x="3527.7597" y="2831.7934"/></g><g><title>JWT</title><rect fill="#FFFFFF" height="104.8241" style="stroke:#000000;stroke-width:1;" width="10" x="3527.7597" y="3049.4416"/></g><g><title>JWT</title><rect fill="#FFFFFF" height="31.706" style="stroke:#000000;stroke-width:1;" width="10" x="3527.7597" y="5892.6189"/></g><g><title>JWT</title><rect fill="#FFFFFF" height="31.706" style="stroke:#000000;stroke-width:1;" width="10" x="3527.7597" y="6019.443"/></g><g><title>JWT</title><rect fill="#FFFFFF" height="104.8241" style="stroke:#000000;stroke-width:1;" width="10" x="3527.7597" y="6849.0174"/></g><g><title>JWT</title><rect fill="#FFFFFF" height="31.706" style="stroke:#000000;stroke-width:1;" width="10" x="3527.7597" y="8130.7519"/></g><g><title>Email</title><rect fill="#FFFFFF" height="229.6481" style="stroke:#000000;stroke-width:1;" width="10" x="3699.9238" y="3694.798"/></g><g><title>Template</title><rect fill="#FFFFFF" height="202.6481" style="stroke:#000000;stroke-width:1;" width="10" x="3871.7109" y="3460.4439"/></g><g><title>DapperUserStore</title><rect fill="#FFFFFF" height="134.2361" style="stroke:#000000;stroke-width:1;" width="10" x="4065.9694" y="1215.2145"/></g><g><title>DapperUserStore</title><rect fill="#FFFFFF" height="116.5301" style="stroke:#000000;stroke-width:1;" width="10" x="4065.9694" y="1381.1566"/></g><g><title>DapperUserStore</title><rect fill="#FFFFFF" height="422.7083" style="stroke:#000000;stroke-width:1;" width="10" x="4065.9694" y="1637.9228"/></g><g><title>DapperUserStore</title><rect fill="#FFFFFF" height="281.4722" style="stroke:#000000;stroke-width:1;" width="10" x="4065.9694" y="4859.1205"/></g><g><title>DapperUserStore</title><rect fill="#FFFFFF" height="148.2361" style="stroke:#000000;stroke-width:1;" width="10" x="4065.9694" y="7187.7655"/></g><g><title>DapperUserStore</title><rect fill="#FFFFFF" height="130.5301" style="stroke:#000000;stroke-width:1;" width="10" x="4065.9694" y="8396.3819"/></g><g><title>DapperUserStore</title><rect fill="#FFFFFF" height="221.3541" style="stroke:#000000;stroke-width:1;" width="10" x="4065.9694" y="8901.0721"/></g><g><title>DapperUserStore</title><rect fill="#FFFFFF" height="130.5301" style="stroke:#000000;stroke-width:1;" width="10" x="4065.9694" y="9573.7225"/></g><g><title>DapperUserStore</title><rect fill="#FFFFFF" height="130.5301" style="stroke:#000000;stroke-width:1;" width="10" x="4065.9694" y="10927.851"/></g><g><title>DapperUserStore</title><rect fill="#FFFFFF" height="256.7662" style="stroke:#000000;stroke-width:1;" width="10" x="4065.9694" y="14369.8401"/></g><g><title>DapperUserStore</title><rect fill="#FFFFFF" height="297.7481" style="stroke:#000000;stroke-width:1;" width="10" x="4065.9694" y="17062.803"/></g><g><title>EmailDispatcher</title><rect fill="#FFFFFF" height="604.2384" style="stroke:#000000;stroke-width:1;" width="10" x="4275.2878" y="3320.2078"/></g><g><title>EmailDispatcher</title><rect fill="#FFFFFF" height="98.8241" style="stroke:#000000;stroke-width:1;" width="10" x="4275.2878" y="10156.1006"/></g><g><title>SQL Server</title><rect fill="#FFFFFF" height="31.706" style="stroke:#000000;stroke-width:1;" width="10" x="4402.1205" y="1317.7446"/></g><g><title>SQL Server</title><rect fill="#FFFFFF" height="31.706" style="stroke:#000000;stroke-width:1;" width="10" x="4402.1205" y="1465.9806"/></g><g><title>SQL Server</title><rect fill="#FFFFFF" height="250.7662" style="stroke:#000000;stroke-width:1;" width="10" x="4402.1205" y="1669.6288"/></g><g><title>SQL Server</title><rect fill="#FFFFFF" height="31.706" style="stroke:#000000;stroke-width:1;" width="10" x="4402.1205" y="4961.6506"/></g><g><title>SQL Server</title><rect fill="#FFFFFF" height="31.706" style="stroke:#000000;stroke-width:1;" width="10" x="4402.1205" y="7272.5895"/></g><g><title>SQL Server</title><rect fill="#FFFFFF" height="31.706" style="stroke:#000000;stroke-width:1;" width="10" x="4402.1205" y="8463.5"/></g><g><title>SQL Server</title><rect fill="#FFFFFF" height="31.706" style="stroke:#000000;stroke-width:1;" width="10" x="4402.1205" y="9640.8406"/></g><g><title>SQL Server</title><rect fill="#FFFFFF" height="31.706" style="stroke:#000000;stroke-width:1;" width="10" x="4402.1205" y="10994.969"/></g><rect fill="#FFFFFF" height="3839.9662" style="stroke:#000000;stroke-width:1;" width="4419.9953" x="36" y="582.5822"/><rect fill="#FFFFFF" height="3703.7301" style="stroke:none;stroke-width:1;" width="4419.9953" x="36" y="718.8183"/><rect fill="#FFFFFF" height="2308.2113" style="stroke:#000000;stroke-width:1;" width="4317.2456" x="46" y="2107.3371"/><rect fill="#FFFFFF" height="2051.7391" style="stroke:none;stroke-width:1;" width="4317.2456" x="46" y="2363.8093"/><rect fill="#FFFFFF" height="161.512" style="stroke:#000000;stroke-width:1;" width="233.3888" x="848.4169" y="3939.4461"/><rect fill="#FFFFFF" height="97.0999" style="stroke:none;stroke-width:1;" width="233.3888" x="848.4169" y="4003.8582"/><rect fill="#FFFFFF" height="1758.2488" style="stroke:#000000;stroke-width:1;" width="4429.9953" x="26" y="4618.7845"/><rect fill="#FFFFFF" height="1622.0127" style="stroke:none;stroke-width:1;" width="4429.9953" x="26" y="4755.0206"/><rect fill="#FFFFFF" height="1182.7345" style="stroke:#000000;stroke-width:1;" width="3837.0144" x="36" y="5187.2987"/><rect fill="#FFFFFF" height="1050.2044" style="stroke:none;stroke-width:1;" width="3837.0144" x="36" y="5319.8288"/><rect fill="#FFFFFF" height="657.6323" style="stroke:#000000;stroke-width:1;" width="3559.8335" x="46" y="5705.4009"/><rect fill="#FFFFFF" height="542.8082" style="stroke:none;stroke-width:1;" width="3559.8335" x="46" y="5820.225"/><rect fill="#FFFFFF" height="1265.7164" style="stroke:#000000;stroke-width:1;" width="4439.9953" x="26" y="6608.6814"/><rect fill="#FFFFFF" height="1129.4803" style="stroke:none;stroke-width:1;" width="4439.9953" x="26" y="6744.9175"/><rect fill="#FFFFFF" height="898.5563" style="stroke:#000000;stroke-width:1;" width="4419.9953" x="36" y="6968.8415"/><rect fill="#FFFFFF" height="752.0262" style="stroke:none;stroke-width:1;" width="4419.9953" x="36" y="7115.3715"/><rect fill="#FFFFFF" height="477.6902" style="stroke:#000000;stroke-width:1;" width="3559.8335" x="46" y="7382.7076"/><rect fill="#FFFFFF" height="313.4541" style="stroke:none;stroke-width:1;" width="3559.8335" x="46" y="7546.9437"/><rect fill="#FFFFFF" height="1125.9105" style="stroke:#000000;stroke-width:1;" width="4429.9953" x="36" y="8209.164"/><rect fill="#FFFFFF" height="1011.0864" style="stroke:none;stroke-width:1;" width="4429.9953" x="36" y="8323.988"/><rect fill="#FFFFFF" height="754.4564" style="stroke:#000000;stroke-width:1;" width="4409.9953" x="46" y="8573.618"/><rect fill="#FFFFFF" height="621.9263" style="stroke:none;stroke-width:1;" width="4409.9953" x="46" y="8706.1481"/><rect fill="#FFFFFF" height="518.9661" style="stroke:#000000;stroke-width:1;" width="3806.4899" x="566.7557" y="9750.9586"/><rect fill="#FFFFFF" height="436.848" style="stroke:none;stroke-width:1;" width="3806.4899" x="566.7557" y="9833.0767"/><rect fill="#FFFFFF" height="342.4541" style="stroke:#000000;stroke-width:1;" width="3786.4899" x="576.7557" y="9920.4706"/><rect fill="#FFFFFF" height="278.0421" style="stroke:none;stroke-width:1;" width="3786.4899" x="576.7557" y="9984.8826"/><rect fill="#FFFFFF" height="1131.4803" style="stroke:#000000;stroke-width:1;" width="4439.9953" x="26" y="10722.927"/><rect fill="#FFFFFF" height="1030.6562" style="stroke:none;stroke-width:1;" width="4439.9953" x="26" y="10823.751"/><rect fill="#FFFFFF" height="742.3202" style="stroke:#000000;stroke-width:1;" width="4419.9953" x="36" y="11105.0871"/><rect fill="#FFFFFF" height="627.4961" style="stroke:none;stroke-width:1;" width="4419.9953" x="36" y="11219.9111"/><rect fill="#FFFFFF" height="333.1601" style="stroke:#000000;stroke-width:1;" width="2021.715" x="46" y="11507.2472"/><rect fill="#FFFFFF" height="182.924" style="stroke:none;stroke-width:1;" width="2021.715" x="46" y="11657.4833"/><rect fill="#FFFFFF" height="1184.5984" style="stroke:#000000;stroke-width:1;" width="4439.9953" x="26" y="12103.7614"/><rect fill="#FFFFFF" height="1083.7743" style="stroke:none;stroke-width:1;" width="4439.9953" x="26" y="12204.5855"/><rect fill="#FFFFFF" height="862.5563" style="stroke:#000000;stroke-width:1;" width="4419.9953" x="36" y="12418.8035"/><rect fill="#FFFFFF" height="747.7322" style="stroke:none;stroke-width:1;" width="4419.9953" x="36" y="12533.6276"/><rect fill="#FFFFFF" height="350.8661" style="stroke:#000000;stroke-width:1;" width="2202.7045" x="46" y="12923.4937"/><rect fill="#FFFFFF" height="200.63" style="stroke:none;stroke-width:1;" width="2202.7045" x="46" y="13073.7298"/><rect fill="#FFFFFF" height="1548.7403" style="stroke:#000000;stroke-width:1;" width="4449.9953" x="26" y="13573.126"/><rect fill="#FFFFFF" height="1447.9163" style="stroke:none;stroke-width:1;" width="4449.9953" x="26" y="13673.95"/><rect fill="#FFFFFF" height="1258.4043" style="stroke:#000000;stroke-width:1;" width="4429.9953" x="36" y="13856.462"/><rect fill="#FFFFFF" height="1143.5802" style="stroke:none;stroke-width:1;" width="4429.9953" x="36" y="13971.2861"/><rect fill="#FFFFFF" height="505.1022" style="stroke:#000000;stroke-width:1;" width="2217.2908" x="2238.7045" y="14161.2101"/><rect fill="#FFFFFF" height="435.9842" style="stroke:none;stroke-width:1;" width="2217.2908" x="2238.7045" y="14230.3281"/><rect fill="#FFFFFF" height="427.554" style="stroke:#000000;stroke-width:1;" width="2411.3439" x="46" y="14680.3123"/><rect fill="#FFFFFF" height="112.0999" style="stroke:none;stroke-width:1;" width="2411.3439" x="46" y="14812.8424"/><rect fill="#FFFFFF" height="182.924" style="stroke:none;stroke-width:1;" width="2411.3439" x="46" y="14924.9423"/><rect fill="#FFFFFF" height="1151.8923" style="stroke:#000000;stroke-width:1;" width="4439.9953" x="26" y="15406.6325"/><rect fill="#FFFFFF" height="1051.0683" style="stroke:none;stroke-width:1;" width="4439.9953" x="26" y="15507.4566"/><rect fill="#FFFFFF" height="861.5563" style="stroke:#000000;stroke-width:1;" width="4419.9953" x="36" y="15689.9685"/><rect fill="#FFFFFF" height="746.7322" style="stroke:none;stroke-width:1;" width="4419.9953" x="36" y="15804.7926"/><rect fill="#FFFFFF" height="315.4541" style="stroke:#000000;stroke-width:1;" width="2599.0394" x="46" y="16229.0708"/><rect fill="#FFFFFF" height="200.63" style="stroke:none;stroke-width:1;" width="2599.0394" x="46" y="16343.8948"/><rect fill="#FFFFFF" height="993.6381" style="stroke:#000000;stroke-width:1;" width="4419.9953" x="36" y="16875.585"/><rect fill="#FFFFFF" height="878.8141" style="stroke:none;stroke-width:1;" width="4419.9953" x="36" y="16990.4091"/><rect fill="#FFFFFF" height="117.806" style="stroke:#000000;stroke-width:1;" width="1379.7232" x="2827.6068" y="17235.7451"/><rect fill="#FFFFFF" height="48.6879" style="stroke:none;stroke-width:1;" width="1379.7232" x="2827.6068" y="17304.8632"/><rect fill="#FFFFFF" height="462.9661" style="stroke:#000000;stroke-width:1;" width="2791.6068" x="46" y="17399.2571"/><rect fill="#FFFFFF" height="112.0999" style="stroke:none;stroke-width:1;" width="2791.6068" x="46" y="17602.6112"/><rect fill="#FFFFFF" height="147.512" style="stroke:none;stroke-width:1;" width="2791.6068" x="46" y="17714.7112"/><g class="participant-lifeline" data-entity-uid="part1" data-qualified-name="User" id="part1-lifeline"><g><title>User</title><rect fill="#000000" fill-opacity="0.00000" height="17960.4094" width="8" x="70.3089" y="150.8739"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="74" x2="74" y1="150.8739" y2="18111.2833"/></g></g><g class="participant-lifeline" data-entity-uid="part2" data-qualified-name="API" id="part2-lifeline"><g><title>API</title><rect fill="#000000" fill-opacity="0.00000" height="17960.4094" width="8" x="328.7901" y="150.8739"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="332.7012" x2="332.7012" y1="150.8739" y2="18111.2833"/></g></g><g class="participant-lifeline" data-entity-uid="part3" data-qualified-name="Mediator" id="part3-lifeline"><g><title>MediatR pipeline</title><rect fill="#000000" fill-opacity="0.00000" height="17960.4094" width="8" x="666.0594" y="150.8739"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="669.7557" x2="669.7557" y1="150.8739" y2="18111.2833"/></g></g><g class="participant-lifeline" data-entity-uid="part4" data-qualified-name="RegHandler" id="part4-lifeline"><g><title>RegisterUserHandler</title><rect fill="#000000" fill-opacity="0.00000" height="17960.4094" width="8" x="940.2477" y="150.8739"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="943.4169" x2="943.4169" y1="150.8739" y2="18111.2833"/></g></g><g class="participant-lifeline" data-entity-uid="part5" data-qualified-name="LoginHandler" id="part5-lifeline"><g><title>LoginHandler</title><rect fill="#000000" fill-opacity="0.00000" height="17960.4094" width="8" x="1142.5458" y="150.8739"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="1145.816" x2="1145.816" y1="150.8739" y2="18111.2833"/></g></g><g class="participant-lifeline" data-entity-uid="part6" data-qualified-name="RefreshHandler" id="part6-lifeline"><g><title>RefreshTokenHandler</title><rect fill="#000000" fill-opacity="0.00000" height="17960.4094" width="8" x="1303.0323" y="150.8739"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="1306.2756" x2="1306.2756" y1="150.8739" y2="18111.2833"/></g></g><g class="participant-lifeline" data-entity-uid="part7" data-qualified-name="ConfirmHandler" id="part7-lifeline"><g><title>ConfirmUserHandler</title><rect fill="#000000" fill-opacity="0.00000" height="17960.4094" width="8" x="1487.1228" y="150.8739"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="1490.7891" x2="1490.7891" y1="150.8739" y2="18111.2833"/></g></g><g class="participant-lifeline" data-entity-uid="part8" data-qualified-name="ResendHandler" id="part8-lifeline"><g><title>ResendConfirmationEmailHandler</title><rect fill="#000000" fill-opacity="0.00000" height="17960.4094" width="8" x="1711.5121" y="150.8739"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="1715.4565" x2="1715.4565" y1="150.8739" y2="18111.2833"/></g></g><g class="participant-lifeline" data-entity-uid="part9" data-qualified-name="UpdateUsernameHandler" id="part9-lifeline"><g><title>UpdateUsernameHandler</title><rect fill="#000000" fill-opacity="0.00000" height="17960.4094" width="8" x="1952.1414" y="150.8739"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="1955.5677" x2="1955.5677" y1="150.8739" y2="18111.2833"/></g></g><g class="participant-lifeline" data-entity-uid="part10" data-qualified-name="UpdateEmailHandler" id="part10-lifeline"><g><title>UpdateEmailHandler</title><rect fill="#000000" fill-opacity="0.00000" height="17960.4094" width="8" x="2149.2098" y="150.8739"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="2152.715" x2="2152.715" y1="150.8739" y2="18111.2833"/></g></g><g class="participant-lifeline" data-entity-uid="part11" data-qualified-name="UpdatePasswordHandler" id="part11-lifeline"><g><title>UpdatePasswordHandler</title><rect fill="#000000" fill-opacity="0.00000" height="17960.4094" width="8" x="2344.0242" y="150.8739"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="2347.7045" x2="2347.7045" y1="150.8739" y2="18111.2833"/></g></g><g class="participant-lifeline" data-entity-uid="part12" data-qualified-name="UpdateProfileHandler" id="part12-lifeline"><g><title>UpdateProfileHandler</title><rect fill="#000000" fill-opacity="0.00000" height="17960.4094" width="8" x="2542.1917" y="150.8739"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="2545.3439" x2="2545.3439" y1="150.8739" y2="18111.2833"/></g></g><g class="participant-lifeline" data-entity-uid="part13" data-qualified-name="DeleteAccountHandler" id="part13-lifeline"><g><title>DeleteAccountHandler</title><rect fill="#000000" fill-opacity="0.00000" height="17960.4094" width="8" x="2732.3231" y="150.8739"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="2736.0394" x2="2736.0394" y1="150.8739" y2="18111.2833"/></g></g><g class="participant-lifeline" data-entity-uid="part14" data-qualified-name="UserMgr" id="part14-lifeline"><g><title>UserManager.ApplicationUser.</title><rect fill="#000000" fill-opacity="0.00000" height="17960.4094" width="8" x="2955.7814" y="150.8739"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="2959.6068" x2="2959.6068" y1="150.8739" y2="18111.2833"/></g></g><g class="participant-lifeline" data-entity-uid="part15" data-qualified-name="TokenSvc" id="part15-lifeline"><g><title>TokenService</title><rect fill="#000000" fill-opacity="0.00000" height="17960.4094" width="8" x="3181.8616" y="150.8739"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="3185.3708" x2="3185.3708" y1="150.8739" y2="18111.2833"/></g></g><g class="participant-lifeline" data-entity-uid="part16" data-qualified-name="Argon2" id="part16-lifeline"><g><title>Argon2PasswordHasher</title><rect fill="#000000" fill-opacity="0.00000" height="17960.4094" width="8" x="3359.0191" y="150.8739"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="3362.3524" x2="3362.3524" y1="150.8739" y2="18111.2833"/></g></g><g class="participant-lifeline" data-entity-uid="part17" data-qualified-name="JWT" id="part17-lifeline"><g><title>JWT</title><rect fill="#000000" fill-opacity="0.00000" height="17960.4094" width="8" x="3528.7597" y="150.8739"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="3532.6858" x2="3532.6858" y1="150.8739" y2="18111.2833"/></g></g><g class="participant-lifeline" data-entity-uid="part18" data-qualified-name="SMTP" id="part18-lifeline"><g><title>Email</title><rect fill="#000000" fill-opacity="0.00000" height="17960.4094" width="8" x="3700.9238" y="150.8739"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="3704.0569" x2="3704.0569" y1="150.8739" y2="18111.2833"/></g></g><g class="participant-lifeline" data-entity-uid="part19" data-qualified-name="Template" id="part19-lifeline"><g><title>Template</title><rect fill="#000000" fill-opacity="0.00000" height="17960.4094" width="8" x="3872.7109" y="150.8739"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="3875.813" x2="3875.813" y1="150.8739" y2="18111.2833"/></g></g><g class="participant-lifeline" data-entity-uid="part20" data-qualified-name="UserStore" id="part20-lifeline"><g><title>DapperUserStore</title><rect fill="#000000" fill-opacity="0.00000" height="17960.4094" width="8" x="4066.9694" y="150.8739"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="4070.6088" x2="4070.6088" y1="150.8739" y2="18111.2833"/></g></g><g class="participant-lifeline" data-entity-uid="part21" data-qualified-name="EmailDispatcher" id="part21-lifeline"><g><title>EmailDispatcher</title><rect fill="#000000" fill-opacity="0.00000" height="17960.4094" width="8" x="4276.2878" y="150.8739"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="4279.33" x2="4279.33" y1="150.8739" y2="18111.2833"/></g></g><g class="participant-lifeline" data-entity-uid="part22" data-qualified-name="DB" id="part22-lifeline"><g><title>SQL Server</title><rect fill="#000000" fill-opacity="0.00000" height="17960.4094" width="8" x="4403.1205" y="150.8739"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="4406.2456" x2="4406.2456" y1="150.8739" y2="18111.2833"/></g></g><g class="participant participant-head" data-entity-uid="part1" data-qualified-name="User" id="part1-head"><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="30.6179" x="56" y="146.7719">User</text><ellipse cx="74.3089" cy="79.806" fill="#FFFFFF" rx="8" ry="8" style="stroke:#000000;stroke-width:1;"/><path d="M74.3089,87.806 L74.3089,114.806 M61.3089,95.806 L87.3089,95.806 M74.3089,114.806 L61.3089,129.806 M74.3089,114.806 L87.3089,129.806" fill="none" style="stroke:#000000;stroke-width:1;"/></g><g class="participant participant-tail" data-entity-uid="part1" data-qualified-name="User" id="part1-tail"><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="30.6179" x="56" y="18125.2492">User</text><ellipse cx="74.3089" cy="18138.3512" fill="#FFFFFF" rx="8" ry="8" style="stroke:#000000;stroke-width:1;"/><path d="M74.3089,18146.3512 L74.3089,18173.3512 M61.3089,18154.3512 L87.3089,18154.3512 M74.3089,18173.3512 L61.3089,18188.3512 M74.3089,18173.3512 L87.3089,18188.3512" fill="none" style="stroke:#000000;stroke-width:1;"/></g><g class="participant participant-head" data-entity-uid="part2" data-qualified-name="API" id="part2-head"><rect fill="#FFFFFF" height="52.1358" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="80.1777" x="292.7012" y="97.738"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="22.1619" x="321.7092" y="119.704">API</text><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="66.1777" x="299.7012" y="138.7719">Controller</text></g><g class="participant participant-tail" data-entity-uid="part2" data-qualified-name="API" id="part2-tail"><rect fill="#FFFFFF" height="52.1358" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="80.1777" x="292.7012" y="18110.2833"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="22.1619" x="321.7092" y="18132.2492">API</text><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="66.1777" x="299.7012" y="18151.3172">Controller</text></g><g class="participant participant-head" data-entity-uid="part3" data-qualified-name="Mediator" id="part3-head"><rect fill="#FFFFFF" height="52.1358" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="146.6075" x="596.7557" y="97.738"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="110.5716" x="614.7736" y="119.704">MediatR pipeline</text><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="132.6075" x="603.7557" y="138.7719">(ValidationBehavior)</text></g><g class="participant participant-tail" data-entity-uid="part3" data-qualified-name="Mediator" id="part3-tail"><rect fill="#FFFFFF" height="52.1358" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="146.6075" x="596.7557" y="18110.2833"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="110.5716" x="614.7736" y="18132.2492">MediatR pipeline</text><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="132.6075" x="603.7557" y="18151.3172">(ValidationBehavior)</text></g><g class="participant participant-head" data-entity-uid="part4" data-qualified-name="RegHandler" id="part4-head"><rect fill="#FFFFFF" height="33.0679" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="151.6615" x="868.4169" y="116.806"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="137.6615" x="875.4169" y="138.7719">RegisterUserHandler</text></g><g class="participant participant-tail" data-entity-uid="part4" data-qualified-name="RegHandler" id="part4-tail"><rect fill="#FFFFFF" height="33.0679" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="151.6615" x="868.4169" y="18110.2833"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="137.6615" x="875.4169" y="18132.2492">RegisterUserHandler</text></g><g class="participant participant-head" data-entity-uid="part5" data-qualified-name="LoginHandler" id="part5-head"><rect fill="#FFFFFF" height="33.0679" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="103.4597" x="1094.816" y="116.806"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="89.4597" x="1101.816" y="138.7719">LoginHandler</text></g><g class="participant participant-tail" data-entity-uid="part5" data-qualified-name="LoginHandler" id="part5-tail"><rect fill="#FFFFFF" height="33.0679" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="103.4597" x="1094.816" y="18110.2833"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="89.4597" x="1101.816" y="18132.2492">LoginHandler</text></g><g class="participant participant-head" data-entity-uid="part6" data-qualified-name="RefreshHandler" id="part6-head"><rect fill="#FFFFFF" height="33.0679" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="157.5134" x="1228.2756" y="116.806"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="143.5134" x="1235.2756" y="138.7719">RefreshTokenHandler</text></g><g class="participant participant-tail" data-entity-uid="part6" data-qualified-name="RefreshHandler" id="part6-tail"><rect fill="#FFFFFF" height="33.0679" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="157.5134" x="1228.2756" y="18110.2833"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="143.5134" x="1235.2756" y="18132.2492">RefreshTokenHandler</text></g><g class="participant participant-head" data-entity-uid="part7" data-qualified-name="ConfirmHandler" id="part7-head"><rect fill="#FFFFFF" height="33.0679" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="150.6675" x="1415.7891" y="116.806"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="136.6675" x="1422.7891" y="138.7719">ConfirmUserHandler</text></g><g class="participant participant-tail" data-entity-uid="part7" data-qualified-name="ConfirmHandler" id="part7-tail"><rect fill="#FFFFFF" height="33.0679" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="150.6675" x="1415.7891" y="18110.2833"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="136.6675" x="1422.7891" y="18132.2492">ConfirmUserHandler</text></g><g class="participant participant-head" data-entity-uid="part8" data-qualified-name="ResendHandler" id="part8-head"><rect fill="#FFFFFF" height="33.0679" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="238.1111" x="1596.4565" y="116.806"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="224.1111" x="1603.4565" y="138.7719">ResendConfirmationEmailHandler</text></g><g class="participant participant-tail" data-entity-uid="part8" data-qualified-name="ResendHandler" id="part8-tail"><rect fill="#FFFFFF" height="33.0679" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="238.1111" x="1596.4565" y="18110.2833"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="224.1111" x="1603.4565" y="18132.2492">ResendConfirmationEmailHandler</text></g><g class="participant participant-head" data-entity-uid="part9" data-qualified-name="UpdateUsernameHandler" id="part9-head"><rect fill="#FFFFFF" height="33.0679" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="183.1474" x="1864.5677" y="116.806"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="169.1474" x="1871.5677" y="138.7719">UpdateUsernameHandler</text></g><g class="participant participant-tail" data-entity-uid="part9" data-qualified-name="UpdateUsernameHandler" id="part9-tail"><rect fill="#FFFFFF" height="33.0679" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="183.1474" x="1864.5677" y="18110.2833"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="169.1474" x="1871.5677" y="18132.2492">UpdateUsernameHandler</text></g><g class="participant participant-head" data-entity-uid="part10" data-qualified-name="UpdateEmailHandler" id="part10-head"><rect fill="#FFFFFF" height="33.0679" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="150.9895" x="2077.715" y="116.806"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="136.9895" x="2084.715" y="138.7719">UpdateEmailHandler</text></g><g class="participant participant-tail" data-entity-uid="part10" data-qualified-name="UpdateEmailHandler" id="part10-tail"><rect fill="#FFFFFF" height="33.0679" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="150.9895" x="2077.715" y="18110.2833"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="136.9895" x="2084.715" y="18132.2492">UpdateEmailHandler</text></g><g class="participant participant-head" data-entity-uid="part11" data-qualified-name="UpdatePasswordHandler" id="part11-head"><rect fill="#FFFFFF" height="33.0679" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="178.6394" x="2258.7045" y="116.806"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="164.6394" x="2265.7045" y="138.7719">UpdatePasswordHandler</text></g><g class="participant participant-tail" data-entity-uid="part11" data-qualified-name="UpdatePasswordHandler" id="part11-tail"><rect fill="#FFFFFF" height="33.0679" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="178.6394" x="2258.7045" y="18110.2833"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="164.6394" x="2265.7045" y="18132.2492">UpdatePasswordHandler</text></g><g class="participant participant-head" data-entity-uid="part12" data-qualified-name="UpdateProfileHandler" id="part12-head"><rect fill="#FFFFFF" height="33.0679" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="157.6955" x="2467.3439" y="116.806"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="143.6955" x="2474.3439" y="138.7719">UpdateProfileHandler</text></g><g class="participant participant-tail" data-entity-uid="part12" data-qualified-name="UpdateProfileHandler" id="part12-tail"><rect fill="#FFFFFF" height="33.0679" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="157.6955" x="2467.3439" y="18110.2833"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="143.6955" x="2474.3439" y="18132.2492">UpdateProfileHandler</text></g><g class="participant participant-head" data-entity-uid="part13" data-qualified-name="DeleteAccountHandler" id="part13-head"><rect fill="#FFFFFF" height="33.0679" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="162.5674" x="2655.0394" y="116.806"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="148.5674" x="2662.0394" y="138.7719">DeleteAccountHandler</text></g><g class="participant participant-tail" data-entity-uid="part13" data-qualified-name="DeleteAccountHandler" id="part13-tail"><rect fill="#FFFFFF" height="33.0679" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="162.5674" x="2655.0394" y="18110.2833"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="148.5674" x="2662.0394" y="18132.2492">DeleteAccountHandler</text></g><g class="participant participant-head" data-entity-uid="part14" data-qualified-name="UserMgr" id="part14-head"><rect fill="#FFFFFF" height="33.0679" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="224.3492" x="2847.6068" y="116.806"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="210.3492" x="2854.6068" y="138.7719">UserManager&lt;ApplicationUser&gt;</text></g><g class="participant participant-tail" data-entity-uid="part14" data-qualified-name="UserMgr" id="part14-tail"><rect fill="#FFFFFF" height="33.0679" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="224.3492" x="2847.6068" y="18110.2833"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="210.3492" x="2854.6068" y="18132.2492">UserManager&lt;ApplicationUser&gt;</text></g><g class="participant participant-head" data-entity-uid="part15" data-qualified-name="TokenSvc" id="part15-head"><rect fill="#FFFFFF" height="33.0679" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="100.9816" x="3135.3708" y="116.806"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="86.9816" x="3142.3708" y="138.7719">TokenService</text></g><g class="participant participant-tail" data-entity-uid="part15" data-qualified-name="TokenSvc" id="part15-tail"><rect fill="#FFFFFF" height="33.0679" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="100.9816" x="3135.3708" y="18110.2833"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="86.9816" x="3142.3708" y="18132.2492">TokenService</text></g><g class="participant participant-head" data-entity-uid="part16" data-qualified-name="Argon2" id="part16-head"><rect fill="#FFFFFF" height="33.0679" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="173.3334" x="3276.3524" y="116.806"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="159.3334" x="3283.3524" y="138.7719">Argon2PasswordHasher</text></g><g class="participant participant-tail" data-entity-uid="part16" data-qualified-name="Argon2" id="part16-tail"><rect fill="#FFFFFF" height="33.0679" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="173.3334" x="3276.3524" y="18110.2833"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="159.3334" x="3283.3524" y="18132.2492">Argon2PasswordHasher</text></g><g class="participant participant-head" data-entity-uid="part17" data-qualified-name="JWT" id="part17-head"><rect fill="#FFFFFF" height="52.1358" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="106.1477" x="3479.6858" y="97.738"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="24.6259" x="3520.4467" y="119.704">JWT</text><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="92.1477" x="3486.6858" y="138.7719">Infrastructure</text></g><g class="participant participant-tail" data-entity-uid="part17" data-qualified-name="JWT" id="part17-tail"><rect fill="#FFFFFF" height="52.1358" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="106.1477" x="3479.6858" y="18110.2833"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="24.6259" x="3520.4467" y="18132.2492">JWT</text><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="92.1477" x="3486.6858" y="18151.3172">Infrastructure</text></g><g class="participant participant-head" data-entity-uid="part18" data-qualified-name="SMTP" id="part18-head"><rect fill="#FFFFFF" height="52.1358" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="69.7338" x="3670.0569" y="97.738"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="35.9519" x="3686.9479" y="119.704">Email</text><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="55.7338" x="3677.0569" y="138.7719">Provider</text></g><g class="participant participant-tail" data-entity-uid="part18" data-qualified-name="SMTP" id="part18-tail"><rect fill="#FFFFFF" height="52.1358" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="69.7338" x="3670.0569" y="18110.2833"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="35.9519" x="3686.9479" y="18132.2492">Email</text><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="55.7338" x="3677.0569" y="18151.3172">Provider</text></g><g class="participant participant-head" data-entity-uid="part19" data-qualified-name="Template" id="part19-head"><rect fill="#FFFFFF" height="52.1358" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="75.7958" x="3838.813" y="97.738"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="61.7958" x="3845.813" y="119.704">Template</text><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="55.7338" x="3848.844" y="138.7719">Provider</text></g><g class="participant participant-tail" data-entity-uid="part19" data-qualified-name="Template" id="part19-tail"><rect fill="#FFFFFF" height="52.1358" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="75.7958" x="3838.813" y="18110.2833"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="61.7958" x="3845.813" y="18132.2492">Template</text><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="55.7338" x="3848.844" y="18151.3172">Provider</text></g><g class="participant participant-head" data-entity-uid="part20" data-qualified-name="UserStore" id="part20-head"><rect fill="#FFFFFF" height="71.2038" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="232.7212" x="3954.6088" y="78.6701"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="114.4776" x="4013.7306" y="100.6361">DapperUserStore</text><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="218.7212" x="3961.6088" y="119.704">(IUserStore/IUserPasswordStore/</text><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="110.4036" x="4015.7676" y="138.7719">IUserEmailStore)</text></g><g class="participant participant-tail" data-entity-uid="part20" data-qualified-name="UserStore" id="part20-tail"><rect fill="#FFFFFF" height="71.2038" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="232.7212" x="3954.6088" y="18110.2833"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="114.4776" x="4013.7306" y="18132.2492">DapperUserStore</text><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="218.7212" x="3961.6088" y="18151.3172">(IUserStore/IUserPasswordStore/</text><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="110.4036" x="4015.7676" y="18170.3851">IUserEmailStore)</text></g><g class="participant participant-head" data-entity-uid="part21" data-qualified-name="EmailDispatcher" id="part21-head"><rect fill="#FFFFFF" height="52.1358" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="125.9156" x="4217.33" y="97.738"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="107.0576" x="4226.759" y="119.704">EmailDispatcher</text><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="111.9156" x="4224.33" y="138.7719">(Features.Emails)</text></g><g class="participant participant-tail" data-entity-uid="part21" data-qualified-name="EmailDispatcher" id="part21-tail"><rect fill="#FFFFFF" height="52.1358" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="125.9156" x="4217.33" y="18110.2833"/><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="107.0576" x="4226.759" y="18132.2492">EmailDispatcher</text><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="111.9156" x="4224.33" y="18151.3172">(Features.Emails)</text></g><g class="participant participant-head" data-entity-uid="part22" data-qualified-name="DB" id="part22-head"><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="71.7497" x="4368.2456" y="146.7719">SQL Server</text><path d="M4389.1205,95.806 C4389.1205,85.806 4407.1205,85.806 4407.1205,85.806 C4407.1205,85.806 4425.1205,85.806 4425.1205,95.806 L4425.1205,121.806 C4425.1205,131.806 4407.1205,131.806 4407.1205,131.806 C4407.1205,131.806 4389.1205,131.806 4389.1205,121.806 L4389.1205,95.806" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M4389.1205,95.806 C4389.1205,105.806 4407.1205,105.806 4407.1205,105.806 C4407.1205,105.806 4425.1205,105.806 4425.1205,95.806" fill="none" style="stroke:#000000;stroke-width:1;"/></g><g class="participant participant-tail" data-entity-uid="part22" data-qualified-name="DB" id="part22-tail"><text fill="#000000" font-family="Arial" font-size="14" lengthAdjust="spacing" textLength="71.7497" x="4368.2456" y="18125.2492">SQL Server</text><path d="M4389.1205,18139.3512 C4389.1205,18129.3512 4407.1205,18129.3512 4407.1205,18129.3512 C4407.1205,18129.3512 4425.1205,18129.3512 4425.1205,18139.3512 L4425.1205,18165.3512 C4425.1205,18175.3512 4407.1205,18175.3512 4407.1205,18175.3512 C4407.1205,18175.3512 4389.1205,18175.3512 4389.1205,18165.3512 L4389.1205,18139.3512" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M4389.1205,18139.3512 C4389.1205,18149.3512 4407.1205,18149.3512 4407.1205,18149.3512 C4407.1205,18149.3512 4425.1205,18149.3512 4425.1205,18139.3512" fill="none" style="stroke:#000000;stroke-width:1;"/></g><g><title>API</title><rect fill="#FFFFFF" height="4019.9083" style="stroke:#000000;stroke-width:1;" width="10" x="327.7901" y="409.6401"/></g><g><title>API</title><rect fill="#FFFFFF" height="1867.3668" style="stroke:#000000;stroke-width:1;" width="10" x="327.7901" y="4516.6664"/></g><g><title>API</title><rect fill="#FFFFFF" height="1392.5405" style="stroke:#000000;stroke-width:1;" width="10" x="327.7901" y="6488.8573"/></g><g><title>API</title><rect fill="#FFFFFF" height="1355.8526" style="stroke:#000000;stroke-width:1;" width="10" x="327.7901" y="7986.2218"/></g><g><title>API</title><rect fill="#FFFFFF" height="952.5563" style="stroke:#000000;stroke-width:1;" width="10" x="327.7901" y="9446.8985"/></g><g><title>API</title><rect fill="#FFFFFF" height="1276.0104" style="stroke:#000000;stroke-width:1;" width="10" x="327.7901" y="10585.3969"/></g><g><title>API</title><rect fill="#FFFFFF" height="1329.1284" style="stroke:#000000;stroke-width:1;" width="10" x="327.7901" y="11966.2314"/></g><g><title>API</title><rect fill="#FFFFFF" height="1710.9764" style="stroke:#000000;stroke-width:1;" width="10" x="327.7901" y="13417.8899"/></g><g><title>API</title><rect fill="#FFFFFF" height="1314.1284" style="stroke:#000000;stroke-width:1;" width="10" x="327.7901" y="15251.3964"/></g><g><title>API</title><rect fill="#FFFFFF" height="1223.5802" style="stroke:#000000;stroke-width:1;" width="10" x="327.7901" y="16652.6429"/></g><g><title>MediatR pipeline</title><rect fill="#FFFFFF" height="3775.1421" style="stroke:#000000;stroke-width:1;" width="10" x="665.0594" y="441.3461"/></g><g><title>MediatR pipeline</title><rect fill="#FFFFFF" height="671.3564" style="stroke:#000000;stroke-width:1;" width="10" x="670.0594" y="3253.0897"/></g><g><title>MediatR pipeline</title><rect fill="#FFFFFF" height="1633.3067" style="stroke:#000000;stroke-width:1;" width="10" x="665.0594" y="4548.3724"/></g><g><title>MediatR pipeline</title><rect fill="#FFFFFF" height="1247.0104" style="stroke:#000000;stroke-width:1;" width="10" x="665.0594" y="6520.5633"/></g><g><title>MediatR pipeline</title><rect fill="#FFFFFF" height="1217.3225" style="stroke:#000000;stroke-width:1;" width="10" x="665.0594" y="8017.9279"/></g><g><title>MediatR pipeline</title><rect fill="#FFFFFF" height="853.7322" style="stroke:#000000;stroke-width:1;" width="10" x="665.0594" y="9478.6045"/></g><g><title>MediatR pipeline</title><rect fill="#FFFFFF" height="165.9421" style="stroke:#000000;stroke-width:1;" width="10" x="670.0594" y="10088.9826"/></g><g><title>MediatR pipeline</title><rect fill="#FFFFFF" height="1095.0683" style="stroke:#000000;stroke-width:1;" width="10" x="665.0594" y="10652.5149"/></g><g><title>MediatR pipeline</title><rect fill="#FFFFFF" height="1148.1863" style="stroke:#000000;stroke-width:1;" width="10" x="665.0594" y="12033.3494"/></g><g><title>MediatR pipeline</title><rect fill="#FFFFFF" height="1512.3283" style="stroke:#000000;stroke-width:1;" width="10" x="665.0594" y="13502.7139"/></g><g><title>MediatR pipeline</title><rect fill="#FFFFFF" height="1115.4803" style="stroke:#000000;stroke-width:1;" width="10" x="665.0594" y="15336.2205"/></g><g><title>MediatR pipeline</title><rect fill="#FFFFFF" height="1085.0502" style="stroke:#000000;stroke-width:1;" width="10" x="665.0594" y="16702.0549"/></g><g><title>RegisterUserHandler</title><rect fill="#FFFFFF" height="3425.276" style="stroke:#000000;stroke-width:1;" width="10" x="939.2477" y="759.5062"/></g><g><title>LoginHandler</title><rect fill="#FFFFFF" height="1354.2646" style="stroke:#000000;stroke-width:1;" width="10" x="1141.5458" y="4795.7085"/></g><g><title>RefreshTokenHandler</title><rect fill="#FFFFFF" height="950.2623" style="stroke:#000000;stroke-width:1;" width="10" x="1302.0323" y="6785.6054"/></g><g><title>ConfirmUserHandler</title><rect fill="#FFFFFF" height="1153.9105" style="stroke:#000000;stroke-width:1;" width="10" x="1486.1228" y="8049.6339"/></g><g><title>ResendConfirmationEmailHandler</title><rect fill="#FFFFFF" height="790.3202" style="stroke:#000000;stroke-width:1;" width="10" x="1710.5121" y="9510.3105"/></g><g><title>UpdateUsernameHandler</title><rect fill="#FFFFFF" height="851.4383" style="stroke:#000000;stroke-width:1;" width="10" x="1951.1414" y="10864.4389"/></g><g><title>UpdateEmailHandler</title><rect fill="#FFFFFF" height="904.5563" style="stroke:#000000;stroke-width:1;" width="10" x="2148.2098" y="12245.2734"/></g><g><title>UpdatePasswordHandler</title><rect fill="#FFFFFF" height="1268.6983" style="stroke:#000000;stroke-width:1;" width="10" x="2343.0242" y="13714.6379"/></g><g><title>UpdateProfileHandler</title><rect fill="#FFFFFF" height="871.8503" style="stroke:#000000;stroke-width:1;" width="10" x="2541.1917" y="15548.1445"/></g><g><title>DeleteAccountHandler</title><rect fill="#FFFFFF" height="1021.6381" style="stroke:#000000;stroke-width:1;" width="10" x="2731.3231" y="16733.7609"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="1238.7129" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="853.6242"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="344.8842" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="4827.4145"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="312.1782" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="5378.2227"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="211.6481" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="7156.0595"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="193.9421" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="8364.6759"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="284.7662" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="8869.3661"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="193.9421" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="9542.0165"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="193.9421" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="10896.145"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="213.9421" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="11278.3051"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="126.8241" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="12276.9794"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="334.1782" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="12574.3155"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="95.118" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="13746.344"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="625.9263" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="14047.386"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="95.118" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="15579.8505"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="197.6481" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="16016.4226"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="95.118" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="16765.467"/></g><g><title>UserManager.ApplicationUser.</title><rect fill="#FFFFFF" height="353.1601" style="stroke:#000000;stroke-width:1;" width="10" x="2954.7814" y="17031.097"/></g><g><title>TokenService</title><rect fill="#FFFFFF" height="346.1782" style="stroke:#000000;stroke-width:1;" width="10" x="3180.8616" y="2404.4972"/></g><g><title>TokenService</title><rect fill="#FFFFFF" height="185.9421" style="stroke:#000000;stroke-width:1;" width="10" x="3180.8616" y="2782.3814"/></g><g><title>TokenService</title><rect fill="#FFFFFF" height="185.9421" style="stroke:#000000;stroke-width:1;" width="10" x="3180.8616" y="3000.0295"/></g><g><title>TokenService</title><rect fill="#FFFFFF" height="95.118" style="stroke:#000000;stroke-width:1;" width="10" x="3180.8616" y="5860.9129"/></g><g><title>TokenService</title><rect fill="#FFFFFF" height="95.118" style="stroke:#000000;stroke-width:1;" width="10" x="3180.8616" y="5987.737"/></g><g><title>TokenService</title><rect fill="#FFFFFF" height="851.4383" style="stroke:#000000;stroke-width:1;" width="10" x="3180.8616" y="6817.3114"/></g><g><title>TokenService</title><rect fill="#FFFFFF" height="112.8241" style="stroke:#000000;stroke-width:1;" width="10" x="3180.8616" y="8081.3399"/></g><g><title>TokenService</title><rect fill="#FFFFFF" height="31.706" style="stroke:#000000;stroke-width:1;" width="10" x="3180.8616" y="10025.5705"/></g><g><title>Argon2PasswordHasher</title><rect fill="#FFFFFF" height="175.6481" style="stroke:#000000;stroke-width:1;" width="10" x="3358.0191" y="885.3302"/></g><g><title>Argon2PasswordHasher</title><rect fill="#FFFFFF" height="122.5301" style="stroke:#000000;stroke-width:1;" width="10" x="3358.0191" y="5536.1648"/></g><g><title>Argon2PasswordHasher</title><rect fill="#FFFFFF" height="31.706" style="stroke:#000000;stroke-width:1;" width="10" x="3358.0191" y="14114.5041"/></g><g><title>Argon2PasswordHasher</title><rect fill="#FFFFFF" height="31.706" style="stroke:#000000;stroke-width:1;" width="10" x="3358.0191" y="14288.7221"/></g><g><title>JWT</title><rect fill="#FFFFFF" height="265.0602" style="stroke:#000000;stroke-width:1;" width="10" x="3527.7597" y="2453.9092"/></g><g><title>JWT</title><rect fill="#FFFFFF" height="104.8241" style="stroke:#000000;stroke-width:1;" width="10" x="3527.7597" y="2831.7934"/></g><g><title>JWT</title><rect fill="#FFFFFF" height="104.8241" style="stroke:#000000;stroke-width:1;" width="10" x="3527.7597" y="3049.4416"/></g><g><title>JWT</title><rect fill="#FFFFFF" height="31.706" style="stroke:#000000;stroke-width:1;" width="10" x="3527.7597" y="5892.6189"/></g><g><title>JWT</title><rect fill="#FFFFFF" height="31.706" style="stroke:#000000;stroke-width:1;" width="10" x="3527.7597" y="6019.443"/></g><g><title>JWT</title><rect fill="#FFFFFF" height="104.8241" style="stroke:#000000;stroke-width:1;" width="10" x="3527.7597" y="6849.0174"/></g><g><title>JWT</title><rect fill="#FFFFFF" height="31.706" style="stroke:#000000;stroke-width:1;" width="10" x="3527.7597" y="8130.7519"/></g><g><title>Email</title><rect fill="#FFFFFF" height="229.6481" style="stroke:#000000;stroke-width:1;" width="10" x="3699.9238" y="3694.798"/></g><g><title>Template</title><rect fill="#FFFFFF" height="202.6481" style="stroke:#000000;stroke-width:1;" width="10" x="3871.7109" y="3460.4439"/></g><g><title>DapperUserStore</title><rect fill="#FFFFFF" height="134.2361" style="stroke:#000000;stroke-width:1;" width="10" x="4065.9694" y="1215.2145"/></g><g><title>DapperUserStore</title><rect fill="#FFFFFF" height="116.5301" style="stroke:#000000;stroke-width:1;" width="10" x="4065.9694" y="1381.1566"/></g><g><title>DapperUserStore</title><rect fill="#FFFFFF" height="422.7083" style="stroke:#000000;stroke-width:1;" width="10" x="4065.9694" y="1637.9228"/></g><g><title>DapperUserStore</title><rect fill="#FFFFFF" height="281.4722" style="stroke:#000000;stroke-width:1;" width="10" x="4065.9694" y="4859.1205"/></g><g><title>DapperUserStore</title><rect fill="#FFFFFF" height="148.2361" style="stroke:#000000;stroke-width:1;" width="10" x="4065.9694" y="7187.7655"/></g><g><title>DapperUserStore</title><rect fill="#FFFFFF" height="130.5301" style="stroke:#000000;stroke-width:1;" width="10" x="4065.9694" y="8396.3819"/></g><g><title>DapperUserStore</title><rect fill="#FFFFFF" height="221.3541" style="stroke:#000000;stroke-width:1;" width="10" x="4065.9694" y="8901.0721"/></g><g><title>DapperUserStore</title><rect fill="#FFFFFF" height="130.5301" style="stroke:#000000;stroke-width:1;" width="10" x="4065.9694" y="9573.7225"/></g><g><title>DapperUserStore</title><rect fill="#FFFFFF" height="130.5301" style="stroke:#000000;stroke-width:1;" width="10" x="4065.9694" y="10927.851"/></g><g><title>DapperUserStore</title><rect fill="#FFFFFF" height="256.7662" style="stroke:#000000;stroke-width:1;" width="10" x="4065.9694" y="14369.8401"/></g><g><title>DapperUserStore</title><rect fill="#FFFFFF" height="297.7481" style="stroke:#000000;stroke-width:1;" width="10" x="4065.9694" y="17062.803"/></g><g><title>EmailDispatcher</title><rect fill="#FFFFFF" height="604.2384" style="stroke:#000000;stroke-width:1;" width="10" x="4275.2878" y="3320.2078"/></g><g><title>EmailDispatcher</title><rect fill="#FFFFFF" height="98.8241" style="stroke:#000000;stroke-width:1;" width="10" x="4275.2878" y="10156.1006"/></g><g><title>SQL Server</title><rect fill="#FFFFFF" height="31.706" style="stroke:#000000;stroke-width:1;" width="10" x="4402.1205" y="1317.7446"/></g><g><title>SQL Server</title><rect fill="#FFFFFF" height="31.706" style="stroke:#000000;stroke-width:1;" width="10" x="4402.1205" y="1465.9806"/></g><g><title>SQL Server</title><rect fill="#FFFFFF" height="250.7662" style="stroke:#000000;stroke-width:1;" width="10" x="4402.1205" y="1669.6288"/></g><g><title>SQL Server</title><rect fill="#FFFFFF" height="31.706" style="stroke:#000000;stroke-width:1;" width="10" x="4402.1205" y="4961.6506"/></g><g><title>SQL Server</title><rect fill="#FFFFFF" height="31.706" style="stroke:#000000;stroke-width:1;" width="10" x="4402.1205" y="7272.5895"/></g><g><title>SQL Server</title><rect fill="#FFFFFF" height="31.706" style="stroke:#000000;stroke-width:1;" width="10" x="4402.1205" y="8463.5"/></g><g><title>SQL Server</title><rect fill="#FFFFFF" height="31.706" style="stroke:#000000;stroke-width:1;" width="10" x="4402.1205" y="9640.8406"/></g><g><title>SQL Server</title><rect fill="#FFFFFF" height="31.706" style="stroke:#000000;stroke-width:1;" width="10" x="4402.1205" y="10994.969"/></g><path d="M2789,165.8739 L2789,281.8739 L3130,281.8739 L3130,175.8739 L3120,165.8739 L2789,165.8739" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M3120,165.8739 L3120,175.8739 L3130,175.8739 L3120,165.8739" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="280.4102" x="2795" y="184.7709">ASP.NET Core Identity's UserManager&lt;TUser&gt;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="282.3602" x="2795" y="202.4769">replaces the deleted AuthRepository: handlers</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="261.7162" x="2795" y="220.1829">no longer issue SQL or call Argon2 directly,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="273.2733" x="2795" y="237.8889">they delegate to UserManager, which in turn</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="244.1662" x="2795" y="255.5949">calls DapperUserStore (persistence) and</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="320.5022" x="2795" y="273.301">Argon2PasswordHasher (IPasswordHasher&lt;TUser&gt;).</text><rect fill="#FFFFFF" height="3" style="stroke:#FFFFFF;stroke-width:1;" width="4480.9953" x="5" y="308.963"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="4485.9953" y1="308.963" y2="308.963"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="4485.9953" y1="311.963" y2="311.963"/><rect fill="#FFFFFF" height="25.706" style="stroke:#000000;stroke-width:1;" width="129.7391" x="2180.6281" y="297.11"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="112.3591" x="2186.6281" y="315.007">Registration Flow</text><g class="message" data-entity-1="part1" data-entity-2="part2" id="msg1"><polygon fill="#000000" points="315.7901,405.6401,325.7901,409.6401,315.7901,413.6401,319.7901,409.6401" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="74.3089" x2="321.7901" y1="409.6401" y2="409.6401"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="32.383" x="128.7305" y="350.713">POST</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="161.1135" y="350.713">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="108.8751" x="164.4935" y="350.713">/api/auth/register</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="70.2001" x="132.13" y="368.419">{username,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="202.33" y="368.419">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="64.259" x="205.71" y="368.419">firstName,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="61.711" x="170.194" y="386.125">lastName,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.972" x="109.4579" y="403.831">email,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="146.43" y="403.831">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="75.3221" x="149.81" y="403.831">dateOfBirth,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="225.1321" y="403.831">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="64.129" x="228.5121" y="403.831">password}</text></g><g class="message" data-entity-1="part2" data-entity-2="part3" id="msg2"><polygon fill="#000000" points="653.0594,437.3461,663.0594,441.3461,653.0594,445.3461,657.0594,441.3461" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="337.7901" x2="659.0594" y1="441.3461" y2="441.3461"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="180.8302" x="411.0097" y="435.5371">Send(RegisterUserCommand)</text></g><path d="M680,454.3461 L680,570.3461 L1141,570.3461 L1141,464.3461 L1131,454.3461 L680,454.3461" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M1131,454.3461 L1131,464.3461 L1141,464.3461 L1131,454.3461" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="283.5952" x="686" y="473.2431">ValidationBehavior runs RegisterUserValidator</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="228.4882" x="686" y="490.9491">(FluentValidation) before the handler:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="268.2552" x="686" y="508.6551">- Username: 3-64 chars, alphanumeric + [._-]</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="217.0612" x="686" y="526.3611">- Email: valid format, max 128 chars</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="440.9343" x="686" y="544.0671">- Password: min 8 chars, uppercase,\n lowercase, number, special char</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="222.0922" x="686" y="561.7732">- DateOfBirth: must be 19+ years old</text><path d="M36,582.5822 L97.5588,582.5822 L97.5588,592.2882 L87.5588,602.2882 L36,602.2882 L36,582.5822" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="3839.9662" style="stroke:#000000;stroke-width:1;" width="4419.9953" x="36" y="582.5822"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="16.5588" x="51" y="597.4792">alt</text><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="88.4862" x="112.5588" y="596.3411">[Validation fails]</text><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg3"><polygon fill="#000000" points="348.7901,639.7002,338.7901,643.7002,348.7901,647.7002,344.7901,643.7002" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="342.7901" x2="664.0594" y1="643.7002" y2="643.7002"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="42.406" x="480.2217" y="620.1852">throws</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="223.3662" x="389.7417" y="637.8912">FluentValidation.ValidationException</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg4"><polygon fill="#000000" points="85.3089,706.8183,75.3089,710.8183,85.3089,714.8183,81.3089,710.8183" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="710.8183" y2="710.8183"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="149.797" y="669.5972">400</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="172.105" y="669.5972">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="23.738" x="175.485" y="669.5972">Bad</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="199.223" y="669.5972">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="49.6991" x="202.603" y="669.5972">Request</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="62.985" x="111.7135" y="687.3032">{message:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="174.6985" y="687.3032">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="66.3391" x="178.0785" y="687.3032">"Validation</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="244.4176" y="687.3032">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="42.588" x="247.7976" y="687.3032">failed",</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="41.015" x="166.216" y="705.0093">errors:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="207.231" y="705.0093">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="25.272" x="210.611" y="705.0093">{...}}</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="36" x2="4455.9953" y1="719.8183" y2="719.8183"/><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="115.6862" x="41" y="731.5772">[Validation succeeds]</text><g class="message" data-entity-1="part3" data-entity-2="part4" id="msg5"><polygon fill="#000000" points="927.2477,755.5062,937.2477,759.5062,927.2477,763.5062,931.2477,759.5062" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="675.0594" x2="933.2477" y1="759.5062" y2="759.5062"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="113.1781" x="750.5645" y="753.6972">Handle(command)</text></g><g class="message" data-entity-1="part4" data-entity-2="part4" id="msg6"><line style="stroke:#000000;stroke-width:1;" x1="949.2477" x2="991.2477" y1="808.9182" y2="808.9182"/><line style="stroke:#000000;stroke-width:1;" x1="991.2477" x2="991.2477" y1="808.9182" y2="821.9182"/><line style="stroke:#000000;stroke-width:1;" x1="950.2477" x2="991.2477" y1="821.9182" y2="821.9182"/><polygon fill="#000000" points="960.2477,817.9182,950.2477,821.9182,960.2477,825.9182,956.2477,821.9182" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="26.962" x="956.2477" y="785.4032">user</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="983.2097" y="785.4032">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="7.436" x="986.5897" y="785.4032">=</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="994.0257" y="785.4032">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="25.584" x="997.4057" y="785.4032">new</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1022.9897" y="785.4032">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="98.1761" x="1026.3697" y="785.4032">UserAccount{...}</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="123.2921" x="978.7507" y="803.1092">.ToApplicationUser()</text></g><g class="message" data-entity-1="part4" data-entity-2="part14" id="msg7"><polygon fill="#000000" points="2942.7814,849.6242,2952.7814,853.6242,2942.7814,857.6242,2946.7814,853.6242" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="949.2477" x2="2948.7814" y1="853.6242" y2="853.6242"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="110.0191" x="1863.7705" y="847.8152">CreateAsync(user,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1973.7896" y="847.8152">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="63.0891" x="1977.1696" y="847.8152">password)</text></g><g class="message" data-entity-1="part14" data-entity-2="part16" id="msg8"><polygon fill="#000000" points="3346.0191,881.3302,3356.0191,885.3302,3346.0191,889.3302,3350.0191,885.3302" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2964.7814" x2="3352.0191" y1="885.3302" y2="885.3302"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="124.5921" x="3065.8697" y="879.5212">HashPassword(user,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3190.4618" y="879.5212">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="63.0891" x="3193.8418" y="879.5212">password)</text></g><path d="M3373,898.3302 L3373,1031.3302 L3661,1031.3302 L3661,908.3302 L3651,898.3302 L3373,898.3302" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M3651,898.3302 L3651,908.3302 L3661,908.3302 L3651,898.3302" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="267.5532" x="3379" y="917.2272">Delegates to IPasswordInfrastructure.Hash:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="134.2771" x="3379" y="934.9333">Argon2id parameters:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="141.7522" x="3379" y="952.6393">- Salt: 16 bytes (128-bit)</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="100.6851" x="3379" y="970.3453">- Memory: 64MB</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="81.1331" x="3379" y="988.0513">- Iterations: 4</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="145.2101" x="3379" y="1005.7573">- Parallelism: CPU count</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="141.4402" x="3379" y="1023.4633">- Hash output: 32 bytes</text><g class="message" data-entity-1="part16" data-entity-2="part14" id="msg9"><polygon fill="#000000" points="2975.7814,1056.9784,2965.7814,1060.9784,2975.7814,1064.9784,2971.7814,1060.9784" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2969.7814" x2="3362.0191" y1="1060.9784" y2="1060.9784"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="168.2851" x="3079.7577" y="1055.1694">"base64(salt):base64(hash)"</text></g><g class="message" data-entity-1="part14" data-entity-2="part20" id="msg10"><polygon fill="#000000" points="4058.9694,1106.3904,4068.9694,1110.3904,4058.9694,1114.3904,4062.9694,1110.3904" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2964.7814" x2="4064.9694" y1="1110.3904" y2="1110.3904"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="179.1922" x="3428.2793" y="1086.8754">SetPasswordHashAsync(user,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="33.488" x="3501.1314" y="1104.5814">hash)</text></g><path d="M4075,1123.3904 L4075,1186.3904 L4359,1186.3904 L4359,1133.3904 L4349,1123.3904 L4075,1123.3904" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M4349,1123.3904 L4349,1133.3904 L4359,1133.3904 L4349,1123.3904" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="206.2972" x="4081" y="1142.2874">user.Id is still empty at this point -</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="263.1462" x="4081" y="1159.9934">only sets the in-memory hash. CreateAsync</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="222.9762" x="4081" y="1177.6994">writes it to dbo.UserCredential itself.</text><g class="message" data-entity-1="part14" data-entity-2="part20" id="msg11"><polygon fill="#000000" points="4053.9694,1211.2145,4063.9694,1215.2145,4053.9694,1219.2145,4057.9694,1215.2145" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2964.7814" x2="4059.9694" y1="1215.2145" y2="1215.2145"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="182.8842" x="3423.9333" y="1209.4055">FindByNameAsync(username)</text></g><g class="message" data-entity-1="part20" data-entity-2="part22" id="msg12"><polygon fill="#000000" points="4390.1205,1313.7446,4400.1205,1317.7446,4390.1205,1321.7446,4394.1205,1317.7446" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="4075.9694" x2="4396.1205" y1="1317.7446" y2="1317.7446"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="43.8491" x="4167.8179" y="1241.1115">SELECT</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4211.6669" y="1241.1115">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="95.2251" x="4215.0469" y="1241.1115">UserAccountID,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="66.729" x="4198.7644" y="1258.8175">Username,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4265.4934" y="1258.8175">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="10.452" x="4268.8735" y="1258.8175">...</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.7771" x="4166.3749" y="1276.5235">FROM</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4203.1519" y="1276.5235">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="105.1831" x="4206.5319" y="1276.5235">dbo.UserAccount</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="44.2651" x="4178.1919" y="1294.2295">WHERE</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4222.4569" y="1294.2295">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="63.245" x="4225.8369" y="1294.2295">Username</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4289.082" y="1294.2295">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="7.436" x="4292.462" y="1294.2295">=</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="74.9321" x="4201.5789" y="1311.9355">@Username</text></g><g class="message" data-entity-1="part22" data-entity-2="part20" id="msg13"><polygon fill="#000000" points="4081.9694,1345.4506,4071.9694,1349.4506,4081.9694,1353.4506,4077.9694,1349.4506" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="4075.9694" x2="4406.1205" y1="1349.4506" y2="1349.4506"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.776" x="4168.4289" y="1343.6416">null</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4191.2049" y="1343.6416">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="30.862" x="4194.5849" y="1343.6416">(user</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4225.4469" y="1343.6416">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="45.071" x="4228.8269" y="1343.6416">doesn't</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4273.898" y="1343.6416">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="32.383" x="4277.278" y="1343.6416">exist)</text></g><g class="message" data-entity-1="part14" data-entity-2="part20" id="msg14"><polygon fill="#000000" points="4053.9694,1377.1566,4063.9694,1381.1566,4053.9694,1385.1566,4057.9694,1381.1566" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2964.7814" x2="4059.9694" y1="1381.1566" y2="1381.1566"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="151.3202" x="3439.7153" y="1375.3476">FindByEmailAsync(email)</text></g><g class="message" data-entity-1="part20" data-entity-2="part22" id="msg15"><polygon fill="#000000" points="4390.1205,1461.9806,4400.1205,1465.9806,4390.1205,1469.9806,4394.1205,1465.9806" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="4075.9694" x2="4396.1205" y1="1465.9806" y2="1465.9806"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="43.8491" x="4167.8179" y="1407.0536">SELECT</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4211.6669" y="1407.0536">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="95.2251" x="4215.0469" y="1407.0536">UserAccountID,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="66.729" x="4198.7644" y="1424.7596">Username,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4265.4934" y="1424.7596">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="10.452" x="4268.8735" y="1424.7596">...</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.7771" x="4166.3749" y="1442.4656">FROM</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4203.1519" y="1442.4656">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="105.1831" x="4206.5319" y="1442.4656">dbo.UserAccount</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="44.2651" x="4168.8969" y="1460.1716">WHERE</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4213.1619" y="1460.1716">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="33.384" x="4216.5419" y="1460.1716">Email</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4249.926" y="1460.1716">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="7.436" x="4253.306" y="1460.1716">=</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4260.742" y="1460.1716">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="45.071" x="4264.122" y="1460.1716">@Email</text></g><g class="message" data-entity-1="part22" data-entity-2="part20" id="msg16"><polygon fill="#000000" points="4081.9694,1493.6867,4071.9694,1497.6867,4081.9694,1501.6867,4077.9694,1497.6867" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="4075.9694" x2="4406.1205" y1="1497.6867" y2="1497.6867"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.776" x="4165.1659" y="1491.8777">null</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4187.9419" y="1491.8777">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="37.388" x="4191.3219" y="1491.8777">(email</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4228.7099" y="1491.8777">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="45.071" x="4232.0899" y="1491.8777">doesn't</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4277.161" y="1491.8777">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="32.383" x="4280.541" y="1491.8777">exist)</text></g><path d="M2969,1510.6867 L2969,1608.6867 L3249,1608.6867 L3249,1520.6867 L3239,1510.6867 L2969,1510.6867" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M3239,1510.6867 L3239,1520.6867 L3249,1520.6867 L3239,1510.6867" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="233.1812" x="2975" y="1529.5837">Default UserManager validators check</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="248.7942" x="2975" y="1547.2897">uniqueness before CreateAsync is called;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="259.8702" x="2975" y="1564.9957">DapperUserStore.CreateAsync also guards</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="215.6442" x="2975" y="1582.7017">against a genuine race via a caught</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="241.8522" x="2975" y="1600.4077">duplicate-key SqlException (2601/2627).</text><g class="message" data-entity-1="part14" data-entity-2="part20" id="msg17"><polygon fill="#000000" points="4053.9694,1633.9228,4063.9694,1637.9228,4053.9694,1641.9228,4057.9694,1637.9228" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2964.7814" x2="4059.9694" y1="1637.9228" y2="1637.9228"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="110.4351" x="3460.1579" y="1632.1138">CreateAsync(user)</text></g><g class="message" data-entity-1="part20" data-entity-2="part22" id="msg18"><polygon fill="#000000" points="4390.1205,1665.6288,4400.1205,1669.6288,4390.1205,1673.6288,4394.1205,1669.6288" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="4075.9694" x2="4396.1205" y1="1669.6288" y2="1669.6288"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="39.429" x="4173.2259" y="1663.8198">BEGIN</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4212.6549" y="1663.8198">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="88.8291" x="4216.0349" y="1663.8198">TRANSACTION</text></g><g class="message" data-entity-1="part20" data-entity-2="part22" id="msg19"><polygon fill="#000000" points="4390.1205,1785.8649,4400.1205,1789.8649,4390.1205,1793.8649,4394.1205,1789.8649" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="4075.9694" x2="4396.1205" y1="1789.8649" y2="1789.8649"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="43.966" x="4145.2563" y="1695.5258">INSERT</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4189.2224" y="1695.5258">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="31.668" x="4192.6024" y="1695.5258">INTO</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4224.2704" y="1695.5258">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="105.1831" x="4227.6504" y="1695.5258">dbo.UserAccount</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="70.6291" x="4168.7734" y="1713.2318">(Username,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4239.4024" y="1713.2318">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="66.5341" x="4242.7824" y="1713.2318">FirstName,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="65.1691" x="4206.4604" y="1730.9378">LastName,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="76.8171" x="4180.3044" y="1748.6438">DateOfBirth,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4257.1215" y="1748.6438">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="37.284" x="4260.5015" y="1748.6438">Email)</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="51.4801" x="4213.3049" y="1766.3499">OUTPUT</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="155.9091" x="4161.0904" y="1784.0559">INSERTED.UserAccountID</text></g><g class="message" data-entity-1="part22" data-entity-2="part20" id="msg20"><polygon fill="#000000" points="4086.9694,1817.5709,4076.9694,1821.5709,4086.9694,1825.5709,4082.9694,1821.5709" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="4080.9694" x2="4401.1205" y1="1821.5709" y2="1821.5709"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="90.2461" x="4171.8999" y="1815.7619">UserAccountId</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4262.146" y="1815.7619">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="40.664" x="4265.526" y="1815.7619">(GUID)</text></g><g class="message" data-entity-1="part20" data-entity-2="part22" id="msg21"><polygon fill="#000000" points="4390.1205,1884.6889,4400.1205,1888.6889,4390.1205,1892.6889,4394.1205,1888.6889" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="4075.9694" x2="4396.1205" y1="1888.6889" y2="1888.6889"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="43.966" x="4199.5379" y="1847.4679">INSERT</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4243.5039" y="1847.4679">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="31.668" x="4246.8839" y="1847.4679">INTO</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="118.7421" x="4179.6739" y="1865.1739">dbo.UserCredential</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="97.6301" x="4170.9964" y="1882.8799">(UserAccountId,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4268.6265" y="1882.8799">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="35.087" x="4272.0065" y="1882.8799">Hash)</text></g><g class="message" data-entity-1="part20" data-entity-2="part22" id="msg22"><polygon fill="#000000" points="4395.1205,1916.395,4405.1205,1920.395,4395.1205,1924.395,4399.1205,1920.395" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="4075.9694" x2="4401.1205" y1="1920.395" y2="1920.395"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="53.5861" x="4168.6474" y="1914.586">COMMIT</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4222.2334" y="1914.586">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="88.8291" x="4225.6134" y="1914.586">TRANSACTION</text></g><path d="M4080,1933.395 L4080,2013.395 L4359,2013.395 L4359,1943.395 L4349,1933.395 L4080,1933.395" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M4349,1933.395 L4349,1943.395 L4359,1943.395 L4349,1933.395" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="204.5552" x="4086" y="1952.292">Both statements run via Dapper's</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="256.1392" x="4086" y="1969.998">ExecuteScalarAsync/ExecuteAsync against</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="220.4542" x="4086" y="1987.704">a single DbTransaction, not a stored</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="258.2712" x="4086" y="2005.41">procedure - no manual parameter binding</text><g class="message" data-entity-1="part20" data-entity-2="part14" id="msg23"><polygon fill="#000000" points="2975.7814,2056.6311,2965.7814,2060.6311,2975.7814,2064.6311,2971.7814,2060.6311" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2969.7814" x2="4069.9694" y1="2060.6311" y2="2060.6311"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="135.7851" x="3449.9828" y="2037.116">IdentityResult.Success</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="46.748" x="3481.7354" y="2054.8221">(user.Id</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3528.4834" y="2054.8221">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.152" x="3531.8634" y="2054.8221">set)</text></g><g class="message" data-entity-1="part14" data-entity-2="part4" id="msg24"><polygon fill="#000000" points="960.2477,2088.3371,950.2477,2092.3371,960.2477,2096.3371,956.2477,2092.3371" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="954.2477" x2="2958.7814" y1="2092.3371" y2="2092.3371"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="84.8641" x="1912.0825" y="2086.5281">IdentityResult</text></g><path d="M46,2107.3371 L107.5588,2107.3371 L107.5588,2117.0431 L97.5588,2127.0431 L46,2127.0431 L46,2107.3371" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="2308.2113" style="stroke:#000000;stroke-width:1;" width="4317.2456" x="46" y="2107.3371"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="16.5588" x="61" y="2122.2341">alt</text><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="104.8375" x="122.5588" y="2121.096">[!result.Succeeded]</text><g class="message" data-entity-1="part4" data-entity-2="part3" id="msg25"><polygon fill="#000000" points="686.0594,2252.9852,676.0594,2256.9852,686.0594,2260.9852,682.0594,2256.9852" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="680.0594" x2="938.2477" y1="2256.9852" y2="2256.9852"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.179" x="734.451" y="2144.9401">throw</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="770.63" y="2144.9401">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="105.8461" x="774.01" y="2144.9401">ConflictException</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="222.7812" x="695.7629" y="2162.6461">(DuplicateUserName/DuplicateEmail</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="35.659" x="781.823" y="2180.3521">codes</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="817.482" y="2180.3521">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="11.622" x="820.862" y="2180.3521">-&gt;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="68.549" x="721.815" y="2198.0582">"Username</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="790.364" y="2198.0582">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.234" x="793.744" y="2198.0582">or</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="806.978" y="2198.0582">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="33.488" x="810.358" y="2198.0582">email</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="843.8461" y="2198.0582">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="45.266" x="847.2261" y="2198.0582">already</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="43.498" x="785.4045" y="2215.7642">exists";</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="60.424" x="738.9425" y="2233.4702">otherwise</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="799.3665" y="2233.4702">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="37.934" x="802.7465" y="2233.4702">joined</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="840.6806" y="2233.4702">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="31.304" x="844.0606" y="2233.4702">error</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="78.5851" x="767.861" y="2251.1762">descriptions)</text></g><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg26"><polygon fill="#000000" points="348.7901,2284.6912,338.7901,2288.6912,348.7901,2292.6912,344.7901,2288.6912" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="342.7901" x2="664.0594" y1="2288.6912" y2="2288.6912"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="63.83" x="469.5097" y="2282.8822">propagate</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg27"><polygon fill="#000000" points="85.3089,2351.8093,75.3089,2355.8093,85.3089,2359.8093,81.3089,2355.8093" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="2355.8093" y2="2355.8093"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="165.0915" y="2314.5882">409</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="187.3995" y="2314.5882">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="46.228" x="190.7795" y="2314.5882">Conflict</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="68.549" x="115.711" y="2332.2943">"Username</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="184.26" y="2332.2943">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.234" x="187.64" y="2332.2943">or</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="200.874" y="2332.2943">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="33.488" x="204.254" y="2332.2943">email</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="237.7421" y="2332.2943">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="45.266" x="241.1221" y="2332.2943">already</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="40.014" x="181.0425" y="2350.0003">exists"</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="46" x2="4363.2456" y1="2364.8093" y2="2364.8093"/><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="101.5348" x="51" y="2376.5682">[result.Succeeded]</text><g class="message" data-entity-1="part4" data-entity-2="part15" id="msg28"><polygon fill="#000000" points="3168.8616,2400.4972,3178.8616,2404.4972,3168.8616,2408.4972,3172.8616,2404.4972" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="949.2477" x2="3174.8616" y1="2404.4972" y2="2404.4972"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="169.5851" x="1980.2621" y="2398.6882">GenerateAccessToken(user)</text></g><g class="message" data-entity-1="part15" data-entity-2="part17" id="msg29"><polygon fill="#000000" points="3515.7597,2449.9092,3525.7597,2453.9092,3515.7597,2457.9092,3519.7597,2453.9092" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="3190.8616" x2="3521.7597" y1="2453.9092" y2="2453.9092"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="122.0571" x="3263.9621" y="2430.3942">GenerateJwt(userId,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3386.0191" y="2430.3942">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="65.2601" x="3389.3992" y="2430.3942">username,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="41.457" x="3338.5821" y="2448.1002">expiry)</text></g><path d="M3542,2466.9092 L3542,2599.9092 L3732,2599.9092 L3732,2476.9092 L3722,2466.9092 L3542,2466.9092" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M3722,2466.9092 L3722,2476.9092 L3732,2476.9092 L3722,2466.9092" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="114.3091" x="3548" y="2485.8062">JWT Configuration:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="114.6341" x="3548" y="2503.5122">- Algorithm: HS256</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="98.9301" x="3548" y="2521.2183">- Expires: 1 hour</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="51.649" x="3548" y="2538.9243">- Claims:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="79.0271" x="3554.76" y="2556.6303">* sub: userId</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="162.5522" x="3554.76" y="2574.3363">* unique_name: username</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="48.8801" x="3554.76" y="2592.0423">* iat / jti</text><g class="message" data-entity-1="part17" data-entity-2="part17" id="msg30"><line style="stroke:#000000;stroke-width:1;" x1="3537.7597" x2="3579.7597" y1="2629.5573" y2="2629.5573"/><line style="stroke:#000000;stroke-width:1;" x1="3579.7597" x2="3579.7597" y1="2629.5573" y2="2642.5573"/><line style="stroke:#000000;stroke-width:1;" x1="3538.7597" x2="3579.7597" y1="2642.5573" y2="2642.5573"/><polygon fill="#000000" points="3548.7597,2638.5573,3538.7597,2642.5573,3548.7597,2646.5573,3544.7597,2642.5573" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="40.235" x="3544.7597" y="2623.7483">Create</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3584.9947" y="2623.7483">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.867" x="3588.3747" y="2623.7483">JWT</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3611.2417" y="2623.7483">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="26.299" x="3614.6217" y="2623.7483">with</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3640.9207" y="2623.7483">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="38.623" x="3644.3008" y="2623.7483">claims</text></g><g class="message" data-entity-1="part17" data-entity-2="part17" id="msg31"><line style="stroke:#000000;stroke-width:1;" x1="3537.7597" x2="3579.7597" y1="2674.2634" y2="2674.2634"/><line style="stroke:#000000;stroke-width:1;" x1="3579.7597" x2="3579.7597" y1="2674.2634" y2="2687.2634"/><line style="stroke:#000000;stroke-width:1;" x1="3538.7597" x2="3579.7597" y1="2687.2634" y2="2687.2634"/><polygon fill="#000000" points="3548.7597,2683.2634,3538.7597,2687.2634,3548.7597,2691.2634,3544.7597,2687.2634" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="26.52" x="3544.7597" y="2668.4544">Sign</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3571.2797" y="2668.4544">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="26.299" x="3574.6597" y="2668.4544">with</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3600.9587" y="2668.4544">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="37.193" x="3604.3387" y="2668.4544">secret</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3641.5318" y="2668.4544">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="20.904" x="3644.9118" y="2668.4544">key</text></g><g class="message" data-entity-1="part17" data-entity-2="part15" id="msg32"><polygon fill="#000000" points="3201.8616,2714.9694,3191.8616,2718.9694,3201.8616,2722.9694,3197.8616,2718.9694" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="3195.8616" x2="3531.7597" y1="2718.9694" y2="2718.9694"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="40.573" x="3321.1336" y="2713.1604">Access</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3361.7066" y="2713.1604">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="37.401" x="3365.0866" y="2713.1604">Token</text></g><g class="message" data-entity-1="part15" data-entity-2="part4" id="msg33"><polygon fill="#000000" points="960.2477,2746.6754,950.2477,2750.6754,960.2477,2754.6754,956.2477,2750.6754" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="954.2477" x2="3184.8616" y1="2750.6754" y2="2750.6754"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="40.573" x="2026.8776" y="2744.8664">Access</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2067.4506" y="2744.8664">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="37.401" x="2070.8306" y="2744.8664">Token</text></g><g class="message" data-entity-1="part4" data-entity-2="part15" id="msg34"><polygon fill="#000000" points="3168.8616,2778.3814,3178.8616,2782.3814,3168.8616,2786.3814,3172.8616,2782.3814" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="949.2477" x2="3174.8616" y1="2782.3814" y2="2782.3814"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="175.8641" x="1977.1226" y="2776.5724">GenerateRefreshToken(user)</text></g><g class="message" data-entity-1="part15" data-entity-2="part17" id="msg35"><polygon fill="#000000" points="3515.7597,2827.7934,3525.7597,2831.7934,3515.7597,2835.7934,3519.7597,2831.7934" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="3190.8616" x2="3521.7597" y1="2831.7934" y2="2831.7934"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="122.0571" x="3263.9621" y="2808.2784">GenerateJwt(userId,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3386.0191" y="2808.2784">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="65.2601" x="3389.3992" y="2808.2784">username,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="41.457" x="3338.5821" y="2825.9844">expiry)</text></g><path d="M3542,2844.7934 L3542,2907.7934 L3970,2907.7934 L3970,2854.7934 L3960,2844.7934 L3542,2844.7934" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M3960,2844.7934 L3960,2854.7934 L3970,2854.7934 L3960,2844.7934" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="91.1171" x="3548" y="2863.6905">Refresh Token:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="177.6062" x="3548" y="2881.3965">- Expires: 21 days (504 hours)</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="407.5894" x="3548" y="2899.1025">- Same structure as access token,\n signed with a separate secret</text><g class="message" data-entity-1="part17" data-entity-2="part15" id="msg36"><polygon fill="#000000" points="3201.8616,2932.6175,3191.8616,2936.6175,3201.8616,2940.6175,3197.8616,2936.6175" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="3195.8616" x2="3531.7597" y1="2936.6175" y2="2936.6175"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="46.852" x="3317.9941" y="2930.8085">Refresh</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3364.8461" y="2930.8085">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="37.401" x="3368.2261" y="2930.8085">Token</text></g><g class="message" data-entity-1="part15" data-entity-2="part4" id="msg37"><polygon fill="#000000" points="960.2477,2964.3235,950.2477,2968.3235,960.2477,2972.3235,956.2477,2968.3235" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="954.2477" x2="3184.8616" y1="2968.3235" y2="2968.3235"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="46.852" x="2023.7381" y="2962.5145">Refresh</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2070.5901" y="2962.5145">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="37.401" x="2073.9701" y="2962.5145">Token</text></g><g class="message" data-entity-1="part4" data-entity-2="part15" id="msg38"><polygon fill="#000000" points="3168.8616,2996.0295,3178.8616,3000.0295,3168.8616,3004.0295,3172.8616,3000.0295" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="949.2477" x2="3174.8616" y1="3000.0295" y2="3000.0295"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="209.7162" x="1960.1965" y="2994.2205">GenerateConfirmationToken(user)</text></g><g class="message" data-entity-1="part15" data-entity-2="part17" id="msg39"><polygon fill="#000000" points="3515.7597,3045.4416,3525.7597,3049.4416,3515.7597,3053.4416,3519.7597,3049.4416" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="3190.8616" x2="3521.7597" y1="3049.4416" y2="3049.4416"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="122.0571" x="3263.9621" y="3025.9266">GenerateJwt(userId,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3386.0191" y="3025.9266">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="65.2601" x="3389.3992" y="3025.9266">username,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="41.457" x="3338.5821" y="3043.6326">expiry)</text></g><path d="M3542,3062.4416 L3542,3125.4416 L3786,3125.4416 L3786,3072.4416 L3776,3062.4416 L3542,3062.4416" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M3776,3062.4416 L3776,3072.4416 L3786,3072.4416 L3776,3062.4416" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="124.9691" x="3548" y="3081.3386">Confirmation Token:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="195.3382" x="3548" y="3099.0446">- Expires: 30 minutes (0.5 hours)</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="223.5612" x="3548" y="3116.7506">- Signed with a third, separate secret</text><g class="message" data-entity-1="part17" data-entity-2="part15" id="msg40"><polygon fill="#000000" points="3201.8616,3150.2656,3191.8616,3154.2656,3201.8616,3158.2656,3197.8616,3154.2656" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="3195.8616" x2="3531.7597" y1="3154.2656" y2="3154.2656"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="80.7041" x="3301.0681" y="3148.4566">Confirmation</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3381.7722" y="3148.4566">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="37.401" x="3385.1522" y="3148.4566">Token</text></g><g class="message" data-entity-1="part15" data-entity-2="part4" id="msg41"><polygon fill="#000000" points="960.2477,3181.9717,950.2477,3185.9717,960.2477,3189.9717,956.2477,3185.9717" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="954.2477" x2="3184.8616" y1="3185.9717" y2="3185.9717"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="80.7041" x="2006.8121" y="3180.1627">Confirmation</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2087.5161" y="3180.1627">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="37.401" x="2090.8961" y="3180.1627">Token</text></g><g class="message" data-entity-1="part4" data-entity-2="part3" id="msg42"><polygon fill="#000000" points="691.0594,3249.0897,681.0594,3253.0897,691.0594,3257.0897,687.0594,3253.0897" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="685.0594" x2="938.2477" y1="3253.0897" y2="3253.0897"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="240.1882" x="689.5594" y="3211.8687">Send(SendRegistrationEmailCommand)</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="119.0281" x="717.1389" y="3229.5747">(Shared.Application</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="836.1671" y="3229.5747">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="62.621" x="839.5471" y="3229.5747">cross-slice</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="54.3271" x="782.49" y="3247.2807">contract)</text></g><g class="message" data-entity-1="part3" data-entity-2="part21" id="msg43"><polygon fill="#000000" points="4263.2878,3316.2078,4273.2878,3320.2078,4263.2878,3324.2078,4267.2878,3320.2078" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="680.0594" x2="4269.2878" y1="3320.2078" y2="3320.2078"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="177.5152" x="2388.916" y="3278.9867">SendRegistrationEmailAsync(</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="2421.9881" y="3296.6927">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="64.259" x="2428.7481" y="3296.6927">firstName,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2493.0071" y="3296.6927">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.972" x="2496.3871" y="3296.6927">email,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="120.0291" x="2417.659" y="3314.3988">confirmationToken)</text></g><path d="M685,3333.2078 L685,3413.2078 L896,3413.2078 L896,3343.2078 L886,3333.2078 L685,3333.2078" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M886,3333.2078 L886,3343.2078 L896,3343.2078 L886,3333.2078" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="162.3702" x="691" y="3352.1048">Routed to Features.Emails'</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="190.6712" x="691" y="3369.8108">SendRegistrationEmailHandler,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="153.7121" x="691" y="3387.5168">the only cross-slice call in</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="75.2701" x="691" y="3405.2228">the backend</text><g class="message" data-entity-1="part21" data-entity-2="part19" id="msg44"><polygon fill="#000000" points="3892.7109,3456.4439,3882.7109,3460.4439,3892.7109,3464.4439,3888.7109,3460.4439" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="3886.7109" x2="4274.2878" y1="3460.4439" y2="3460.4439"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="211.0162" x="3972.9913" y="3436.9288">RenderUserRegisteredEmailAsync(</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="3987.4148" y="3454.6349">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="64.259" x="3994.1748" y="3454.6349">firstName,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4058.4338" y="3454.6349">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="107.7701" x="4061.8138" y="3454.6349">confirmationLink)</text></g><path d="M3886,3473.4439 L3886,3571.4439 L4048,3571.4439 L4048,3483.4439 L4038,3473.4439 L3886,3473.4439" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M4038,3473.4439 L4038,3483.4439 L4048,3483.4439 L4038,3473.4439" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="113.7761" x="3892" y="3492.3409">Razor Component:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="141.6481" x="3892" y="3510.0469">- Header with branding</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="121.8751" x="3892" y="3527.7529">- Welcome message</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="132.9641" x="3892" y="3545.4589">- Confirmation button</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="47.437" x="3892" y="3563.1649">- Footer</text><g class="message" data-entity-1="part19" data-entity-2="part19" id="msg45"><line style="stroke:#000000;stroke-width:1;" x1="3881.7109" x2="3923.7109" y1="3618.386" y2="3618.386"/><line style="stroke:#000000;stroke-width:1;" x1="3923.7109" x2="3923.7109" y1="3618.386" y2="3631.386"/><line style="stroke:#000000;stroke-width:1;" x1="3882.7109" x2="3923.7109" y1="3631.386" y2="3631.386"/><polygon fill="#000000" points="3892.7109,3627.386,3882.7109,3631.386,3892.7109,3635.386,3888.7109,3631.386" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="44.148" x="3888.7109" y="3594.871">Render</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3932.859" y="3594.871">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="34.723" x="3936.239" y="3594.871">Razor</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3970.962" y="3594.871">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="70.2131" x="3974.342" y="3594.871">component</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="12.558" x="3940.932" y="3612.577">to</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3953.49" y="3612.577">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="35.4641" x="3956.87" y="3612.577">HTML</text></g><g class="message" data-entity-1="part19" data-entity-2="part21" id="msg46"><polygon fill="#000000" points="4263.2878,3659.092,4273.2878,3663.092,4263.2878,3667.092,4267.2878,3663.092" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="3876.7109" x2="4269.2878" y1="3663.092" y2="3663.092"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="35.4641" x="4014.6978" y="3657.283">HTML</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4050.1618" y="3657.283">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="33.488" x="4053.5419" y="3657.283">email</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4087.0299" y="3657.283">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="46.8911" x="4090.4099" y="3657.283">content</text></g><g class="message" data-entity-1="part21" data-entity-2="part18" id="msg47"><polygon fill="#000000" points="3720.9238,3690.798,3710.9238,3694.798,3720.9238,3698.798,3716.9238,3694.798" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="3714.9238" x2="4274.2878" y1="3694.798" y2="3694.798"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="106.8081" x="3894.9497" y="3688.989">SendAsync(email,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4001.7578" y="3688.989">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="47.3591" x="4005.1378" y="3688.989">subject,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4052.4969" y="3688.989">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="34.385" x="4055.8769" y="3688.989">body)</text></g><path d="M3714,3707.798 L3714,3787.798 L4026,3787.798 L4026,3717.798 L4016,3707.798 L3714,3707.798" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M4016,3707.798 L4016,3717.798 L4026,3717.798 L4016,3707.798" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="178.5292" x="3720" y="3726.695">SMTP Configuration (MailKit):</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="291.9023" x="3720" y="3744.401">- Host/port: from env (SMTP_HOST/SMTP_PORT)</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="249.7303" x="3720" y="3762.1071">- TLS: StartTLS when SMTP_USE_SSL=true</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="254.0592" x="3720" y="3779.8131">- Auth: username/password, if configured</text><g class="message" data-entity-1="part18" data-entity-2="part18" id="msg48"><line style="stroke:#000000;stroke-width:1;" x1="3709.9238" x2="3751.9238" y1="3817.3281" y2="3817.3281"/><line style="stroke:#000000;stroke-width:1;" x1="3751.9238" x2="3751.9238" y1="3817.3281" y2="3830.3281"/><line style="stroke:#000000;stroke-width:1;" x1="3710.9238" x2="3751.9238" y1="3830.3281" y2="3830.3281"/><polygon fill="#000000" points="3720.9238,3826.3281,3710.9238,3830.3281,3720.9238,3834.3281,3716.9238,3830.3281" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="31.187" x="3716.9238" y="3811.5191">Build</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3748.1108" y="3811.5191">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="35.217" x="3751.4908" y="3811.5191">MIME</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3786.7079" y="3811.5191">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="54.561" x="3790.0879" y="3811.5191">message</text></g><g class="message" data-entity-1="part18" data-entity-2="part18" id="msg49"><line style="stroke:#000000;stroke-width:1;" x1="3709.9238" x2="3751.9238" y1="3879.7401" y2="3879.7401"/><line style="stroke:#000000;stroke-width:1;" x1="3751.9238" x2="3751.9238" y1="3879.7401" y2="3892.7401"/><line style="stroke:#000000;stroke-width:1;" x1="3710.9238" x2="3751.9238" y1="3892.7401" y2="3892.7401"/><polygon fill="#000000" points="3720.9238,3888.7401,3710.9238,3892.7401,3720.9238,3896.7401,3716.9238,3892.7401" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="53.8981" x="3716.9238" y="3856.2251">Connect,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3770.8218" y="3856.2251">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="80.5091" x="3774.2018" y="3856.2251">authenticate,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="33.072" x="3734.5843" y="3873.9311">send,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3767.6563" y="3873.9311">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="66.0141" x="3771.0363" y="3873.9311">disconnect</text></g><g class="message" data-entity-1="part18" data-entity-2="part21" id="msg50"><polygon fill="#000000" points="4268.2878,3920.4461,4278.2878,3924.4461,4268.2878,3928.4461,4272.2878,3924.4461" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="3704.9238" x2="4274.2878" y1="3924.4461" y2="3924.4461"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="47.437" x="3941.8863" y="3918.6371">Success</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3989.3233" y="3918.6371">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="4.836" x="3992.7033" y="3918.6371">/</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3997.5393" y="3918.6371">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="42.406" x="4000.9193" y="3918.6371">throws</text></g><path d="M848.4169,3939.4461 L909.9757,3939.4461 L909.9757,3949.1522 L899.9757,3959.1522 L848.4169,3959.1522 L848.4169,3939.4461" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="161.512" style="stroke:#000000;stroke-width:1;" width="233.3888" x="848.4169" y="3939.4461"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="16.5588" x="863.4169" y="3954.3432">alt</text><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="132.5904" x="924.9757" y="3953.2051">[Email sent successfully]</text><g class="message" data-entity-1="part4" data-entity-2="part4" id="msg51"><line style="stroke:#000000;stroke-width:1;" x1="949.2477" x2="991.2477" y1="3982.8582" y2="3982.8582"/><line style="stroke:#000000;stroke-width:1;" x1="991.2477" x2="991.2477" y1="3982.8582" y2="3995.8582"/><line style="stroke:#000000;stroke-width:1;" x1="950.2477" x2="991.2477" y1="3995.8582" y2="3995.8582"/><polygon fill="#000000" points="960.2477,3991.8582,950.2477,3995.8582,960.2477,3999.8582,956.2477,3995.8582" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="60.6841" x="956.2477" y="3977.0492">emailSent</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1016.9317" y="3977.0492">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="7.436" x="1020.3117" y="3977.0492">=</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1027.7477" y="3977.0492">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="25.428" x="1031.1277" y="3977.0492">true</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="848.4169" x2="1081.8057" y1="4004.8582" y2="4004.8582"/><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="129.3839" x="853.4169" y="4016.6171">[mediator.Send throws]</text><g class="message" data-entity-1="part4" data-entity-2="part4" id="msg52"><line style="stroke:#000000;stroke-width:1;" x1="949.2477" x2="991.2477" y1="4079.9581" y2="4079.9581"/><line style="stroke:#000000;stroke-width:1;" x1="991.2477" x2="991.2477" y1="4079.9581" y2="4092.9581"/><line style="stroke:#000000;stroke-width:1;" x1="950.2477" x2="991.2477" y1="4092.9581" y2="4092.9581"/><polygon fill="#000000" points="960.2477,4088.9581,950.2477,4092.9581,960.2477,4096.9581,956.2477,4092.9581" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="103.4021" x="956.3256" y="4038.7371">catch(Exception),</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="19.214" x="968.5261" y="4056.4431">log</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="987.7402" y="4056.4431">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="12.558" x="991.1202" y="4056.4431">to</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1003.6782" y="4056.4431">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="40.469" x="1007.0582" y="4056.4431">stderr,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="60.6841" x="956.2477" y="4074.1491">emailSent</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1016.9317" y="4074.1491">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="7.436" x="1020.3117" y="4074.1491">=</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1027.7477" y="4074.1491">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="28.678" x="1031.1277" y="4074.1491">false</text></g><g class="message" data-entity-1="part4" data-entity-2="part3" id="msg53"><polygon fill="#000000" points="686.0594,4180.7822,676.0594,4184.7822,686.0594,4188.7822,682.0594,4184.7822" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="680.0594" x2="943.2477" y1="4184.7822" y2="4184.7822"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="126.4901" x="746.4085" y="4125.8551">RegistrationPayload(</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="725.8229" y="4143.5611">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="92.2611" x="732.583" y="4143.5611">userAccountId,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="824.844" y="4143.5611">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="65.2601" x="828.2241" y="4143.5611">username,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="721.8515" y="4161.2672">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="85.0201" x="728.6115" y="4161.2672">refreshToken,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="813.6315" y="4161.2672">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="80.4441" x="817.0115" y="4161.2672">accessToken,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="734.6694" y="4178.9732">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="143.2081" x="741.4295" y="4178.9732">confirmationEmailSent)</text></g><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg54"><polygon fill="#000000" points="348.7901,4212.4882,338.7901,4216.4882,348.7901,4220.4882,344.7901,4216.4882" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="342.7901" x2="669.0594" y1="4216.4882" y2="4216.4882"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="122.5901" x="442.6297" y="4210.6792">RegistrationPayload</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg55"><polygon fill="#000000" points="85.3089,4403.5484,75.3089,4407.5484,85.3089,4411.5484,81.3089,4407.5484" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="4407.5484" y2="4407.5484"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="164.0905" y="4242.3852">201</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="186.3985" y="4242.3852">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="48.23" x="189.7785" y="4242.3852">Created</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="4.94" x="198.5795" y="4260.0912">{</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="116.9005" y="4277.7972">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="58.045" x="123.6605" y="4277.7972">message:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="181.7055" y="4277.7972">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="33.735" x="185.0855" y="4277.7972">"User</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="218.8205" y="4277.7972">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="62.998" x="222.2005" y="4277.7972">registered</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="84.6431" x="158.728" y="4295.5033">successfully.",</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="167.555" y="4313.2093">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="51.909" x="174.315" y="4313.2093">payload:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="226.2241" y="4313.2093">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="4.94" x="229.6041" y="4313.2093">{</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.52" x="113.8389" y="4330.9153">&#160;&#160;&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="92.2611" x="127.359" y="4330.9153">userAccountId,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="219.6201" y="4330.9153">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="65.2601" x="223.0001" y="4330.9153">username,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.52" x="109.8675" y="4348.6213">&#160;&#160;&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="85.0201" x="123.3875" y="4348.6213">refreshToken,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="208.4075" y="4348.6213">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="80.4441" x="211.7875" y="4348.6213">accessToken,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.52" x="124.6355" y="4366.3273">&#160;&#160;&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="139.3081" x="138.1555" y="4366.3273">confirmationEmailSent</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="195.1995" y="4384.0333">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="4.94" x="201.9595" y="4384.0333">}</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="4.94" x="198.5795" y="4401.7394">}</text></g><rect fill="#FFFFFF" height="3" style="stroke:#FFFFFF;stroke-width:1;" width="4480.9953" x="5" y="4451.4014"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="4485.9953" y1="4451.4014" y2="4451.4014"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="4485.9953" y1="4454.4014" y2="4454.4014"/><rect fill="#FFFFFF" height="25.706" style="stroke:#000000;stroke-width:1;" width="86.6603" x="2202.1675" y="4439.5484"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="69.2803" x="2208.1675" y="4457.4454">Login Flow</text><g class="message" data-entity-1="part1" data-entity-2="part2" id="msg56"><polygon fill="#000000" points="315.7901,4512.6664,325.7901,4516.6664,315.7901,4520.6664,319.7901,4516.6664" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="74.3089" x2="321.7901" y1="4516.6664" y2="4516.6664"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="32.383" x="137.265" y="4493.1514">POST</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="169.648" y="4493.1514">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="91.8061" x="173.028" y="4493.1514">/api/auth/login</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="70.2001" x="132.195" y="4510.8574">{username,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="202.395" y="4510.8574">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="64.129" x="205.775" y="4510.8574">password}</text></g><g class="message" data-entity-1="part2" data-entity-2="part3" id="msg57"><polygon fill="#000000" points="653.0594,4544.3724,663.0594,4548.3724,653.0594,4552.3724,657.0594,4548.3724" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="337.7901" x2="659.0594" y1="4548.3724" y2="4548.3724"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="136.0712" x="433.3892" y="4542.5634">Send(LoginCommand)</text></g><path d="M680,4561.3724 L680,4606.3724 L1007,4606.3724 L1007,4571.3724 L997,4561.3724 L680,4561.3724" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M997,4561.3724 L997,4571.3724 L1007,4571.3724 L997,4561.3724" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="242.3202" x="686" y="4580.2694">ValidationBehavior runs LoginValidator:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="306.5143" x="686" y="4597.9755">username and password must both be non-empty</text><path d="M26,4618.7845 L87.5588,4618.7845 L87.5588,4628.4905 L77.5588,4638.4905 L26,4638.4905 L26,4618.7845" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="1758.2488" style="stroke:#000000;stroke-width:1;" width="4429.9953" x="26" y="4618.7845"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="16.5588" x="41" y="4633.6815">alt</text><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="88.4862" x="102.5588" y="4632.5434">[Validation fails]</text><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg58"><polygon fill="#000000" points="348.7901,4675.9025,338.7901,4679.9025,348.7901,4683.9025,344.7901,4679.9025" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="342.7901" x2="664.0594" y1="4679.9025" y2="4679.9025"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="42.406" x="480.2217" y="4656.3875">throws</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="223.3662" x="389.7417" y="4674.0935">FluentValidation.ValidationException</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg59"><polygon fill="#000000" points="85.3089,4743.0206,75.3089,4747.0206,85.3089,4751.0206,81.3089,4747.0206" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="4747.0206" y2="4747.0206"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="149.797" y="4705.7995">400</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="172.105" y="4705.7995">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="23.738" x="175.485" y="4705.7995">Bad</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="199.223" y="4705.7995">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="49.6991" x="202.603" y="4705.7995">Request</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="62.985" x="111.7135" y="4723.5055">{message:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="174.6985" y="4723.5055">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="66.3391" x="178.0785" y="4723.5055">"Validation</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="244.4176" y="4723.5055">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="42.588" x="247.7976" y="4723.5055">failed",</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="41.015" x="166.216" y="4741.2116">errors:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="207.231" y="4741.2116">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="25.272" x="210.611" y="4741.2116">{...}}</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="26" x2="4455.9953" y1="4756.0206" y2="4756.0206"/><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="115.6862" x="31" y="4767.7795">[Validation succeeds]</text><g class="message" data-entity-1="part3" data-entity-2="part5" id="msg60"><polygon fill="#000000" points="1129.5458,4791.7085,1139.5458,4795.7085,1129.5458,4799.7085,1133.5458,4795.7085" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="675.0594" x2="1135.5458" y1="4795.7085" y2="4795.7085"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="113.1781" x="851.7135" y="4789.8995">Handle(command)</text></g><g class="message" data-entity-1="part5" data-entity-2="part14" id="msg61"><polygon fill="#000000" points="2942.7814,4823.4145,2952.7814,4827.4145,2942.7814,4831.4145,2946.7814,4827.4145" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="1151.5458" x2="2948.7814" y1="4827.4145" y2="4827.4145"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="182.8842" x="1961.7215" y="4821.6055">FindByNameAsync(username)</text></g><g class="message" data-entity-1="part14" data-entity-2="part20" id="msg62"><polygon fill="#000000" points="4053.9694,4855.1205,4063.9694,4859.1205,4053.9694,4863.1205,4057.9694,4859.1205" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2964.7814" x2="4059.9694" y1="4859.1205" y2="4859.1205"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="182.8842" x="3423.9333" y="4853.3115">FindByNameAsync(username)</text></g><g class="message" data-entity-1="part20" data-entity-2="part22" id="msg63"><polygon fill="#000000" points="4390.1205,4957.6506,4400.1205,4961.6506,4390.1205,4965.6506,4394.1205,4961.6506" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="4075.9694" x2="4396.1205" y1="4961.6506" y2="4961.6506"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="43.8491" x="4167.8179" y="4885.0175">SELECT</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4211.6669" y="4885.0175">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="95.2251" x="4215.0469" y="4885.0175">UserAccountID,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="66.729" x="4198.7644" y="4902.7235">Username,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4265.4934" y="4902.7235">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="10.452" x="4268.8735" y="4902.7235">...</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.7771" x="4166.3749" y="4920.4295">FROM</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4203.1519" y="4920.4295">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="105.1831" x="4206.5319" y="4920.4295">dbo.UserAccount</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="44.2651" x="4178.1919" y="4938.1356">WHERE</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4222.4569" y="4938.1356">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="63.245" x="4225.8369" y="4938.1356">Username</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4289.082" y="4938.1356">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="7.436" x="4292.462" y="4938.1356">=</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="74.9321" x="4201.5789" y="4955.8416">@Username</text></g><g class="message" data-entity-1="part22" data-entity-2="part20" id="msg64"><polygon fill="#000000" points="4086.9694,4989.3566,4076.9694,4993.3566,4086.9694,4997.3566,4082.9694,4993.3566" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="4080.9694" x2="4406.1205" y1="4993.3566" y2="4993.3566"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="77.8441" x="4167.8219" y="4987.5476">UserAccount</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4245.6659" y="4987.5476">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="23.452" x="4249.0459" y="4987.5476">row</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4272.498" y="4987.5476">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.234" x="4275.878" y="4987.5476">or</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4289.112" y="4987.5476">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.776" x="4292.492" y="4987.5476">null</text></g><g class="message" data-entity-1="part20" data-entity-2="part20" id="msg65"><line style="stroke:#000000;stroke-width:1;" x1="4075.9694" x2="4117.9694" y1="5095.8867" y2="5095.8867"/><line style="stroke:#000000;stroke-width:1;" x1="4117.9694" x2="4117.9694" y1="5095.8867" y2="5108.8867"/><line style="stroke:#000000;stroke-width:1;" x1="4076.9694" x2="4117.9694" y1="5108.8867" y2="5108.8867"/><polygon fill="#000000" points="4086.9694,5104.8867,4076.9694,5108.8867,4086.9694,5112.8867,4082.9694,5108.8867" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="84.3831" x="4105.5569" y="5019.2536">HydrateAsync</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="30.407" x="4113.0969" y="5036.9596">(load</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4143.504" y="5036.9596">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="35.516" x="4146.884" y="5036.9596">active</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="129.5581" x="4082.9694" y="5054.6656">UserCredential.Hash,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="97.5911" x="4091.4519" y="5072.3717">UserVerification</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4189.043" y="5072.3717">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="11.622" x="4192.423" y="5072.3717">-&gt;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="102.0761" x="4096.7104" y="5090.0777">EmailConfirmed)</text></g><g class="message" data-entity-1="part20" data-entity-2="part14" id="msg66"><polygon fill="#000000" points="2975.7814,5136.5927,2965.7814,5140.5927,2975.7814,5144.5927,2971.7814,5140.5927" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2969.7814" x2="4069.9694" y1="5140.5927" y2="5140.5927"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="96.9151" x="3448.0328" y="5134.7837">ApplicationUser</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3544.9479" y="5134.7837">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.234" x="3548.3279" y="5134.7837">or</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3561.5619" y="5134.7837">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.776" x="3564.942" y="5134.7837">null</text></g><g class="message" data-entity-1="part14" data-entity-2="part5" id="msg67"><polygon fill="#000000" points="1162.5458,5168.2987,1152.5458,5172.2987,1162.5458,5176.2987,1158.5458,5172.2987" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="1156.5458" x2="2958.7814" y1="5172.2987" y2="5172.2987"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="96.9151" x="1985.821" y="5166.4897">ApplicationUser</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2082.7361" y="5166.4897">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.234" x="2086.1161" y="5166.4897">or</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2099.3501" y="5166.4897">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.776" x="2102.7301" y="5166.4897">null</text></g><path d="M36,5187.2987 L97.5588,5187.2987 L97.5588,5197.0047 L87.5588,5207.0047 L36,5207.0047 L36,5187.2987" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="1182.7345" style="stroke:#000000;stroke-width:1;" width="3837.0144" x="36" y="5187.2987"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="16.5588" x="51" y="5202.1957">alt</text><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="90.0509" x="112.5588" y="5201.0576">[User not found]</text><g class="message" data-entity-1="part5" data-entity-2="part3" id="msg68"><polygon fill="#000000" points="686.0594,5244.4168,676.0594,5248.4168,686.0594,5252.4168,682.0594,5248.4168" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="680.0594" x2="1140.5458" y1="5248.4168" y2="5248.4168"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.179" x="816.906" y="5224.9017">throw</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="853.0851" y="5224.9017">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="143.2341" x="856.4651" y="5224.9017">UnauthorizedException</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="46.345" x="808.5665" y="5242.6078">"Invalid</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="854.9116" y="5242.6078">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="61.776" x="858.2916" y="5242.6078">username</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="920.0676" y="5242.6078">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.234" x="923.4476" y="5242.6078">or</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="936.6816" y="5242.6078">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="67.9771" x="940.0616" y="5242.6078">password."</text></g><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg69"><polygon fill="#000000" points="348.7901,5276.1228,338.7901,5280.1228,348.7901,5284.1228,344.7901,5280.1228" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="342.7901" x2="664.0594" y1="5280.1228" y2="5280.1228"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="63.83" x="469.5097" y="5274.3138">propagate</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg70"><polygon fill="#000000" points="85.3089,5307.8288,75.3089,5311.8288,85.3089,5315.8288,81.3089,5311.8288" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="5311.8288" y2="5311.8288"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="146.3975" y="5306.0198">401</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="168.7055" y="5306.0198">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="83.6161" x="172.0855" y="5306.0198">Unauthorized</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="36" x2="3873.0144" y1="5320.8288" y2="5320.8288"/><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="68.7358" x="41" y="5332.5877">[User found]</text><g class="message" data-entity-1="part5" data-entity-2="part14" id="msg71"><polygon fill="#000000" points="2942.7814,5374.2227,2952.7814,5378.2227,2942.7814,5382.2227,2946.7814,5378.2227" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="1151.5458" x2="2948.7814" y1="5378.2227" y2="5378.2227"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="165.6071" x="1970.36" y="5354.7077">CheckPasswordAsync(user,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="63.0891" x="2021.6191" y="5372.4137">password)</text></g><path d="M2969,5391.2227 L2969,5471.2227 L3238,5471.2227 L3238,5401.2227 L3228,5391.2227 L2969,5391.2227" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M3228,5391.2227 L3228,5401.2227 L3238,5401.2227 L3228,5391.2227" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="248.9112" x="2975" y="5410.1197">HasPasswordAsync short-circuits to false</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="243.2172" x="2975" y="5427.8257">(no active UserCredential was hydrated)</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="226.2912" x="2975" y="5445.5318">without calling the hasher; otherwise</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="230.3082" x="2975" y="5463.2378">delegates to Argon2PasswordHasher.</text><g class="message" data-entity-1="part14" data-entity-2="part16" id="msg72"><polygon fill="#000000" points="3346.0191,5532.1648,3356.0191,5536.1648,3346.0191,5540.1648,3350.0191,5536.1648" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2964.7814" x2="3352.0191" y1="5536.1648" y2="5536.1648"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="144.4301" x="3089.1852" y="5494.9438">VerifyHashedPassword(</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="3079.0192" y="5512.6498">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="30.446" x="3085.7792" y="5512.6498">user,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3116.2252" y="5512.6498">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="124.1761" x="3119.6052" y="5512.6498">user.PasswordHash,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="63.0891" x="3129.8558" y="5530.3558">password)</text></g><path d="M3373,5549.1648 L3373,5629.1648 L3863,5629.1648 L3863,5559.1648 L3853,5549.1648 L3373,5549.1648" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M3853,5549.1648 L3853,5559.1648 L3863,5559.1648 L3853,5549.1648" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="271.3232" x="3379" y="5568.0618">Delegates to IPasswordInfrastructure.Verify:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="188.7732" x="3379" y="5585.7679">1. Split stored hash: "salt:hash"</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="280.3973" x="3379" y="5603.4739">2. Hash provided password with the same salt</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="469.0144" x="3379" y="5621.1799">3. Constant-time comparison\n (CryptographicOperations.FixedTimeEquals)</text><g class="message" data-entity-1="part16" data-entity-2="part14" id="msg73"><polygon fill="#000000" points="2975.7814,5654.6949,2965.7814,5658.6949,2975.7814,5662.6949,2971.7814,5658.6949" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2969.7814" x2="3362.0191" y1="5658.6949" y2="5658.6949"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="88.3481" x="3119.7262" y="5652.8859">Success/Failed</text></g><g class="message" data-entity-1="part14" data-entity-2="part5" id="msg74"><polygon fill="#000000" points="1162.5458,5686.4009,1152.5458,5690.4009,1162.5458,5694.4009,1158.5458,5690.4009" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="1156.5458" x2="2958.7814" y1="5690.4009" y2="5690.4009"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="58.942" x="2026.1926" y="5684.5919">true/false</text></g><path d="M46,5705.4009 L107.5588,5705.4009 L107.5588,5715.1069 L97.5588,5725.1069 L46,5725.1069 L46,5705.4009" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="657.6323" style="stroke:#000000;stroke-width:1;" width="3559.8335" x="46" y="5705.4009"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="16.5588" x="61" y="5720.2979">alt</text><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="99.7501" x="122.5588" y="5719.1598">[Password invalid]</text><g class="message" data-entity-1="part5" data-entity-2="part3" id="msg75"><polygon fill="#000000" points="686.0594,5744.813,676.0594,5748.813,686.0594,5752.813,682.0594,5748.813" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="680.0594" x2="1140.5458" y1="5748.813" y2="5748.813"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.179" x="816.906" y="5743.004">throw</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="853.0851" y="5743.004">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="143.2341" x="856.4651" y="5743.004">UnauthorizedException</text></g><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg76"><polygon fill="#000000" points="348.7901,5776.519,338.7901,5780.519,348.7901,5784.519,344.7901,5780.519" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="342.7901" x2="664.0594" y1="5780.519" y2="5780.519"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="63.83" x="469.5097" y="5774.71">propagate</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg77"><polygon fill="#000000" points="85.3089,5808.225,75.3089,5812.225,85.3089,5816.225,81.3089,5812.225" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="5812.225" y2="5812.225"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="146.3975" y="5806.416">401</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="168.7055" y="5806.416">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="83.6161" x="172.0855" y="5806.416">Unauthorized</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="46" x2="3605.8335" y1="5821.225" y2="5821.225"/><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="89.4267" x="51" y="5832.9839">[Password valid]</text><g class="message" data-entity-1="part5" data-entity-2="part15" id="msg78"><polygon fill="#000000" points="3168.8616,5856.9129,3178.8616,5860.9129,3168.8616,5864.9129,3172.8616,5860.9129" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="1151.5458" x2="3174.8616" y1="5860.9129" y2="5860.9129"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="169.5851" x="2081.4111" y="5855.1039">GenerateAccessToken(user)</text></g><g class="message" data-entity-1="part15" data-entity-2="part17" id="msg79"><polygon fill="#000000" points="3515.7597,5888.6189,3525.7597,5892.6189,3515.7597,5896.6189,3519.7597,5892.6189" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="3190.8616" x2="3521.7597" y1="5892.6189" y2="5892.6189"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="93.5611" x="3312.5301" y="5886.8099">GenerateJwt(...)</text></g><g class="message" data-entity-1="part17" data-entity-2="part15" id="msg80"><polygon fill="#000000" points="3201.8616,5920.3249,3191.8616,5924.3249,3201.8616,5928.3249,3197.8616,5924.3249" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="3195.8616" x2="3531.7597" y1="5924.3249" y2="5924.3249"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="40.573" x="3321.1336" y="5918.5159">Access</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3361.7066" y="5918.5159">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="37.401" x="3365.0866" y="5918.5159">Token</text></g><g class="message" data-entity-1="part15" data-entity-2="part5" id="msg81"><polygon fill="#000000" points="1162.5458,5952.031,1152.5458,5956.031,1162.5458,5960.031,1158.5458,5956.031" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="1156.5458" x2="3184.8616" y1="5956.031" y2="5956.031"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="40.573" x="2128.0267" y="5950.2219">Access</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2168.5997" y="5950.2219">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="37.401" x="2171.9797" y="5950.2219">Token</text></g><g class="message" data-entity-1="part5" data-entity-2="part15" id="msg82"><polygon fill="#000000" points="3168.8616,5983.737,3178.8616,5987.737,3168.8616,5991.737,3172.8616,5987.737" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="1151.5458" x2="3174.8616" y1="5987.737" y2="5987.737"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="175.8641" x="2078.2716" y="5981.928">GenerateRefreshToken(user)</text></g><g class="message" data-entity-1="part15" data-entity-2="part17" id="msg83"><polygon fill="#000000" points="3515.7597,6015.443,3525.7597,6019.443,3515.7597,6023.443,3519.7597,6019.443" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="3190.8616" x2="3521.7597" y1="6019.443" y2="6019.443"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="93.5611" x="3312.5301" y="6013.634">GenerateJwt(...)</text></g><g class="message" data-entity-1="part17" data-entity-2="part15" id="msg84"><polygon fill="#000000" points="3201.8616,6047.149,3191.8616,6051.149,3201.8616,6055.149,3197.8616,6051.149" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="3195.8616" x2="3531.7597" y1="6051.149" y2="6051.149"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="46.852" x="3317.9941" y="6045.34">Refresh</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3364.8461" y="6045.34">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="37.401" x="3368.2261" y="6045.34">Token</text></g><g class="message" data-entity-1="part15" data-entity-2="part5" id="msg85"><polygon fill="#000000" points="1162.5458,6078.855,1152.5458,6082.855,1162.5458,6086.855,1158.5458,6082.855" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="1156.5458" x2="3184.8616" y1="6082.855" y2="6082.855"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="46.852" x="2124.8872" y="6077.046">Refresh</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2171.7392" y="6077.046">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="37.401" x="2175.1192" y="6077.046">Token</text></g><g class="message" data-entity-1="part5" data-entity-2="part3" id="msg86"><polygon fill="#000000" points="686.0594,6145.9731,676.0594,6149.9731,686.0594,6153.9731,682.0594,6149.9731" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="680.0594" x2="1145.5458" y1="6149.9731" y2="6149.9731"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="86.2551" x="867.6751" y="6108.752">LoginPayload(</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="826.972" y="6126.458">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="92.2611" x="833.732" y="6126.458">userAccountId,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="925.9931" y="6126.458">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="65.2601" x="929.3731" y="6126.458">username,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="822.7925" y="6144.1641">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="85.0201" x="829.5525" y="6144.1641">refreshToken,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="914.5726" y="6144.1641">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="80.8601" x="917.9526" y="6144.1641">accessToken)</text></g><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg87"><polygon fill="#000000" points="348.7901,6177.6791,338.7901,6181.6791,348.7901,6185.6791,344.7901,6181.6791" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="342.7901" x2="669.0594" y1="6181.6791" y2="6181.6791"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="82.3551" x="462.7472" y="6175.8701">LoginPayload</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg88"><polygon fill="#000000" points="85.3089,6351.0332,75.3089,6355.0332,85.3089,6359.0332,81.3089,6355.0332" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="6355.0332" y2="6355.0332"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="179.1055" y="6207.5761">200</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="201.4135" y="6207.5761">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="18.2" x="204.7935" y="6207.5761">OK</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="4.94" x="198.5795" y="6225.2821">{</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="133.924" y="6242.9881">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="58.045" x="140.684" y="6242.9881">message:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="198.729" y="6242.9881">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="51.298" x="202.109" y="6242.9881">"Logged</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="253.4071" y="6242.9881">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="11.388" x="256.7871" y="6242.9881">in</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="84.6431" x="158.728" y="6260.6941">successfully.",</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="167.555" y="6278.4002">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="51.909" x="174.315" y="6278.4002">payload:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="226.2241" y="6278.4002">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="4.94" x="229.6041" y="6278.4002">{</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.52" x="113.8389" y="6296.1062">&#160;&#160;&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="92.2611" x="127.359" y="6296.1062">userAccountId,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="219.6201" y="6296.1062">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="65.2601" x="223.0001" y="6296.1062">username,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.52" x="111.6095" y="6313.8122">&#160;&#160;&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="85.0201" x="125.1295" y="6313.8122">refreshToken,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="210.1495" y="6313.8122">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="76.9601" x="213.5295" y="6313.8122">accessToken</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="195.1995" y="6331.5182">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="4.94" x="201.9595" y="6331.5182">}</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="4.94" x="198.5795" y="6349.2242">}</text></g><rect fill="#FFFFFF" height="3" style="stroke:#FFFFFF;stroke-width:1;" width="4480.9953" x="5" y="6405.8862"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="4485.9953" y1="6405.8862" y2="6405.8862"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="4485.9953" y1="6408.8862" y2="6408.8862"/><rect fill="#FFFFFF" height="25.706" style="stroke:#000000;stroke-width:1;" width="143.0771" x="2173.9591" y="6394.0332"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="125.6971" x="2179.9591" y="6411.9302">Refresh Token Flow</text><g class="message" data-entity-1="part1" data-entity-2="part2" id="msg89"><polygon fill="#000000" points="315.7901,6484.8573,325.7901,6488.8573,315.7901,6492.8573,319.7901,6488.8573" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="74.3089" x2="321.7901" y1="6488.8573" y2="6488.8573"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="32.383" x="130.4985" y="6447.6363">POST</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="162.8815" y="6447.6363">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="105.3391" x="166.2615" y="6447.6363">/api/auth/refresh</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="48.438" x="123.277" y="6465.3423">Header:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="171.715" y="6465.3423">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="103.7271" x="175.095" y="6465.3423">X-Refresh-Token:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="49.738" x="176.1805" y="6483.0483">&lt;token&gt;</text></g><g class="message" data-entity-1="part2" data-entity-2="part3" id="msg90"><polygon fill="#000000" points="653.0594,6516.5633,663.0594,6520.5633,653.0594,6524.5633,657.0594,6520.5633" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="337.7901" x2="659.0594" y1="6520.5633" y2="6520.5633"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="275.6003" x="363.6246" y="6514.7543">Send(RefreshTokenCommand(refreshToken))</text></g><path d="M680,6533.5633 L680,6596.5633 L993,6596.5633 L993,6543.5633 L983,6533.5633 L680,6533.5633" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M983,6533.5633 L983,6543.5633 L993,6543.5633 L983,6533.5633" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="292.5132" x="686" y="6552.4603">ValidationBehavior runs RefreshTokenValidator:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="285.0513" x="686" y="6570.1663">refreshToken must be non-empty. Anonymous</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="224.5622" x="686" y="6587.8724">endpoint - no Bearer token required.</text><path d="M26,6608.6814 L87.5588,6608.6814 L87.5588,6618.3874 L77.5588,6628.3874 L26,6628.3874 L26,6608.6814" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="1265.7164" style="stroke:#000000;stroke-width:1;" width="4439.9953" x="26" y="6608.6814"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="16.5588" x="41" y="6623.5784">alt</text><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="88.4862" x="102.5588" y="6622.4403">[Validation fails]</text><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg91"><polygon fill="#000000" points="348.7901,6665.7994,338.7901,6669.7994,348.7901,6673.7994,344.7901,6669.7994" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="342.7901" x2="664.0594" y1="6669.7994" y2="6669.7994"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="42.406" x="480.2217" y="6646.2844">throws</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="223.3662" x="389.7417" y="6663.9904">FluentValidation.ValidationException</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg92"><polygon fill="#000000" points="85.3089,6732.9175,75.3089,6736.9175,85.3089,6740.9175,81.3089,6736.9175" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="6736.9175" y2="6736.9175"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="149.797" y="6695.6964">400</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="172.105" y="6695.6964">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="23.738" x="175.485" y="6695.6964">Bad</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="199.223" y="6695.6964">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="49.6991" x="202.603" y="6695.6964">Request</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="62.985" x="111.7135" y="6713.4024">{message:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="174.6985" y="6713.4024">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="66.3391" x="178.0785" y="6713.4024">"Validation</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="244.4176" y="6713.4024">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="42.588" x="247.7976" y="6713.4024">failed",</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="41.015" x="166.216" y="6731.1085">errors:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="207.231" y="6731.1085">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="25.272" x="210.611" y="6731.1085">{...}}</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="26" x2="4465.9953" y1="6745.9175" y2="6745.9175"/><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="115.6862" x="31" y="6757.6764">[Validation succeeds]</text><g class="message" data-entity-1="part3" data-entity-2="part6" id="msg93"><polygon fill="#000000" points="1290.0323,6781.6054,1300.0323,6785.6054,1290.0323,6789.6054,1294.0323,6785.6054" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="675.0594" x2="1296.0323" y1="6785.6054" y2="6785.6054"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="113.1781" x="931.9568" y="6779.7964">Handle(command)</text></g><g class="message" data-entity-1="part6" data-entity-2="part15" id="msg94"><polygon fill="#000000" points="3168.8616,6813.3114,3178.8616,6817.3114,3168.8616,6821.3114,3172.8616,6817.3114" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="1312.0323" x2="3174.8616" y1="6817.3114" y2="6817.3114"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="209.0272" x="2141.9334" y="6811.5024">RefreshTokenAsync(refreshToken)</text></g><g class="message" data-entity-1="part15" data-entity-2="part17" id="msg95"><polygon fill="#000000" points="3515.7597,6845.0174,3525.7597,6849.0174,3515.7597,6853.0174,3519.7597,6849.0174" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="3190.8616" x2="3521.7597" y1="6849.0174" y2="6849.0174"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="258.1412" x="3230.24" y="6843.2084">ValidateRefreshTokenAsync(refreshToken)</text></g><path d="M3542,6862.0174 L3542,6925.0174 L3794,6925.0174 L3794,6872.0174 L3784,6862.0174 L3542,6862.0174" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M3784,6862.0174 L3784,6872.0174 L3794,6872.0174 L3784,6862.0174" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="231.1532" x="3548" y="6880.9144">Validates signature/expiry against the</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="226.1222" x="3548" y="6898.6204">refresh token secret, extracts userId/</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="107.2631" x="3548" y="6916.3264">username claims.</text><g class="message" data-entity-1="part17" data-entity-2="part15" id="msg96"><polygon fill="#000000" points="3201.8616,6949.8415,3191.8616,6953.8415,3201.8616,6957.8415,3197.8616,6953.8415" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="3195.8616" x2="3531.7597" y1="6953.8415" y2="6953.8415"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="94.5101" x="3283.3556" y="6948.0325">ValidatedToken</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3377.8656" y="6948.0325">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.234" x="3381.2457" y="6948.0325">or</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3394.4797" y="6948.0325">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="42.406" x="3397.8597" y="6948.0325">throws</text></g><path d="M36,6968.8415 L97.5588,6968.8415 L97.5588,6978.5475 L87.5588,6988.5475 L36,6988.5475 L36,6968.8415" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="898.5563" style="stroke:#000000;stroke-width:1;" width="4419.9953" x="36" y="6968.8415"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="16.5588" x="51" y="6983.7385">alt</text><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="139.5423" x="112.5588" y="6982.6004">[Token invalid or expired]</text><g class="message" data-entity-1="part15" data-entity-2="part6" id="msg97"><polygon fill="#000000" points="1323.0323,7008.2535,1313.0323,7012.2535,1323.0323,7016.2535,1319.0323,7012.2535" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="1317.0323" x2="3179.8616" y1="7012.2535" y2="7012.2535"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.179" x="2155.0504" y="7006.4445">throw</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2191.2294" y="7006.4445">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="143.2341" x="2194.6094" y="7006.4445">UnauthorizedException</text></g><g class="message" data-entity-1="part6" data-entity-2="part3" id="msg98"><polygon fill="#000000" points="686.0594,7039.9595,676.0594,7043.9595,686.0594,7047.9595,682.0594,7043.9595" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="680.0594" x2="1301.0323" y1="7043.9595" y2="7043.9595"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="63.83" x="956.6309" y="7038.1505">propagate</text></g><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg99"><polygon fill="#000000" points="348.7901,7071.6655,338.7901,7075.6655,348.7901,7079.6655,344.7901,7075.6655" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="342.7901" x2="664.0594" y1="7075.6655" y2="7075.6655"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="63.83" x="469.5097" y="7069.8565">propagate</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg100"><polygon fill="#000000" points="85.3089,7103.3715,75.3089,7107.3715,85.3089,7111.3715,81.3089,7107.3715" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="7107.3715" y2="7107.3715"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="146.3975" y="7101.5625">401</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="168.7055" y="7101.5625">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="83.6161" x="172.0855" y="7101.5625">Unauthorized</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="36" x2="4455.9953" y1="7116.3715" y2="7116.3715"/><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="70.0695" x="41" y="7128.1305">[Token valid]</text><g class="message" data-entity-1="part15" data-entity-2="part14" id="msg101"><polygon fill="#000000" points="2975.7814,7152.0595,2965.7814,7156.0595,2975.7814,7160.0595,2971.7814,7156.0595" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2969.7814" x2="3179.8616" y1="7156.0595" y2="7156.0595"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="197.0802" x="2974.2814" y="7150.2505">FindByIdAsync(validated.UserId)</text></g><g class="message" data-entity-1="part14" data-entity-2="part20" id="msg102"><polygon fill="#000000" points="4053.9694,7183.7655,4063.9694,7187.7655,4053.9694,7191.7655,4057.9694,7187.7655" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2964.7814" x2="4059.9694" y1="7187.7655" y2="7187.7655"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="136.2141" x="3447.2683" y="7181.9565">FindByIdAsync(userId)</text></g><g class="message" data-entity-1="part20" data-entity-2="part22" id="msg103"><polygon fill="#000000" points="4390.1205,7268.5895,4400.1205,7272.5895,4390.1205,7276.5895,4394.1205,7272.5895" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="4075.9694" x2="4396.1205" y1="7272.5895" y2="7272.5895"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="43.8491" x="4167.8179" y="7213.6625">SELECT</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4211.6669" y="7213.6625">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="95.2251" x="4215.0469" y="7213.6625">UserAccountID,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="66.729" x="4198.7644" y="7231.3685">Username,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4265.4934" y="7231.3685">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="10.452" x="4268.8735" y="7231.3685">...</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.7771" x="4166.3749" y="7249.0745">FROM</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4203.1519" y="7249.0745">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="105.1831" x="4206.5319" y="7249.0745">dbo.UserAccount</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="44.2651" x="4150.2094" y="7266.7805">WHERE</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4194.4744" y="7266.7805">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="91.7411" x="4197.8544" y="7266.7805">UserAccountID</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4289.5955" y="7266.7805">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="7.436" x="4292.9755" y="7266.7805">=</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4300.4115" y="7266.7805">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="24.089" x="4303.7915" y="7266.7805">@Id</text></g><g class="message" data-entity-1="part22" data-entity-2="part20" id="msg104"><polygon fill="#000000" points="4086.9694,7300.2956,4076.9694,7304.2956,4086.9694,7308.2956,4082.9694,7304.2956" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="4080.9694" x2="4406.1205" y1="7304.2956" y2="7304.2956"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="23.452" x="4208.4339" y="7298.4865">row</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4231.8859" y="7298.4865">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.234" x="4235.2659" y="7298.4865">or</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4248.4999" y="7298.4865">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.776" x="4251.8799" y="7298.4865">null</text></g><g class="message" data-entity-1="part20" data-entity-2="part14" id="msg105"><polygon fill="#000000" points="2975.7814,7332.0016,2965.7814,7336.0016,2975.7814,7340.0016,2971.7814,7336.0016" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2969.7814" x2="4069.9694" y1="7336.0016" y2="7336.0016"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="96.9151" x="3448.0328" y="7330.1926">ApplicationUser</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3544.9479" y="7330.1926">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.234" x="3548.3279" y="7330.1926">or</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3561.5619" y="7330.1926">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.776" x="3564.942" y="7330.1926">null</text></g><g class="message" data-entity-1="part14" data-entity-2="part15" id="msg106"><polygon fill="#000000" points="3168.8616,7363.7076,3178.8616,7367.7076,3168.8616,7371.7076,3172.8616,7367.7076" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2959.7814" x2="3174.8616" y1="7367.7076" y2="7367.7076"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="96.9151" x="3000.4789" y="7361.8986">ApplicationUser</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3097.394" y="7361.8986">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.234" x="3100.774" y="7361.8986">or</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3114.008" y="7361.8986">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.776" x="3117.388" y="7361.8986">null</text></g><path d="M46,7382.7076 L107.5588,7382.7076 L107.5588,7392.4136 L97.5588,7402.4136 L46,7402.4136 L46,7382.7076" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="477.6902" style="stroke:#000000;stroke-width:1;" width="3559.8335" x="46" y="7382.7076"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="16.5588" x="61" y="7397.6046">alt</text><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="90.0509" x="122.5588" y="7396.4665">[User not found]</text><g class="message" data-entity-1="part15" data-entity-2="part6" id="msg107"><polygon fill="#000000" points="1323.0323,7439.8256,1313.0323,7443.8256,1323.0323,7447.8256,1319.0323,7443.8256" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="1317.0323" x2="3179.8616" y1="7443.8256" y2="7443.8256"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.179" x="2155.0504" y="7420.3106">throw</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2191.2294" y="7420.3106">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="143.2341" x="2194.6094" y="7420.3106">UnauthorizedException</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="33.735" x="2169.1619" y="7438.0166">"User</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2202.8969" y="7438.0166">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="48.399" x="2206.2769" y="7438.0166">account</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2254.676" y="7438.0166">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="20.592" x="2258.056" y="7438.0166">not</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2278.648" y="7438.0166">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="41.704" x="2282.028" y="7438.0166">found"</text></g><g class="message" data-entity-1="part6" data-entity-2="part3" id="msg108"><polygon fill="#000000" points="686.0594,7471.5317,676.0594,7475.5317,686.0594,7479.5317,682.0594,7475.5317" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="680.0594" x2="1301.0323" y1="7475.5317" y2="7475.5317"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="63.83" x="956.6309" y="7469.7226">propagate</text></g><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg109"><polygon fill="#000000" points="348.7901,7503.2377,338.7901,7507.2377,348.7901,7511.2377,344.7901,7507.2377" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="342.7901" x2="664.0594" y1="7507.2377" y2="7507.2377"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="63.83" x="469.5097" y="7501.4287">propagate</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg110"><polygon fill="#000000" points="85.3089,7534.9437,75.3089,7538.9437,85.3089,7542.9437,81.3089,7538.9437" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="7538.9437" y2="7538.9437"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="146.3975" y="7533.1347">401</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="168.7055" y="7533.1347">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="83.6161" x="172.0855" y="7533.1347">Unauthorized</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="46" x2="3605.8335" y1="7547.9437" y2="7547.9437"/><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="68.7358" x="51" y="7559.7026">[User found]</text><g class="message" data-entity-1="part15" data-entity-2="part17" id="msg111"><polygon fill="#000000" points="3520.7597,7601.3376,3530.7597,7605.3376,3520.7597,7609.3376,3524.7597,7605.3376" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="3190.8616" x2="3526.7597" y1="7605.3376" y2="7605.3376"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="169.5851" x="3277.0181" y="7581.8226">GenerateAccessToken(user)</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="175.8641" x="3273.8786" y="7599.5286">GenerateRefreshToken(user)</text></g><g class="message" data-entity-1="part17" data-entity-2="part15" id="msg112"><polygon fill="#000000" points="3201.8616,7633.0436,3191.8616,7637.0436,3201.8616,7641.0436,3197.8616,7637.0436" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="3195.8616" x2="3531.7597" y1="7637.0436" y2="7637.0436"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="25.584" x="3276.1471" y="7631.2346">new</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3301.7311" y="7631.2346">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="39.559" x="3305.1111" y="7631.2346">access</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3344.6701" y="7631.2346">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="7.436" x="3348.0501" y="7631.2346">+</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3355.4861" y="7631.2346">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="44.135" x="3358.8661" y="7631.2346">refresh</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3403.0012" y="7631.2346">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="41.093" x="3406.3812" y="7631.2346">tokens</text></g><g class="message" data-entity-1="part15" data-entity-2="part6" id="msg113"><polygon fill="#000000" points="1323.0323,7664.7496,1313.0323,7668.7496,1323.0323,7672.7496,1319.0323,7668.7496" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="1317.0323" x2="3184.8616" y1="7668.7496" y2="7668.7496"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="121.9791" x="2187.9574" y="7662.9406">RefreshTokenResult</text></g><g class="message" data-entity-1="part6" data-entity-2="part3" id="msg114"><polygon fill="#000000" points="686.0594,7731.8677,676.0594,7735.8677,686.0594,7739.8677,682.0594,7735.8677" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="680.0594" x2="1306.0323" y1="7735.8677" y2="7735.8677"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="86.2551" x="947.9183" y="7694.6467">LoginPayload(</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="931.9218" y="7712.3527">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="42.848" x="938.6818" y="7712.3527">userId,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="981.5299" y="7712.3527">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="65.2601" x="984.9099" y="7712.3527">username,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="903.0358" y="7730.0587">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="85.0201" x="909.7958" y="7730.0587">refreshToken,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="994.8159" y="7730.0587">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="80.8601" x="998.1959" y="7730.0587">accessToken)</text></g><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg115"><polygon fill="#000000" points="348.7901,7763.5737,338.7901,7767.5737,348.7901,7771.5737,344.7901,7767.5737" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="342.7901" x2="669.0594" y1="7767.5737" y2="7767.5737"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="82.3551" x="462.7472" y="7761.7647">LoginPayload</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg116"><polygon fill="#000000" points="85.3089,7848.3978,75.3089,7852.3978,85.3089,7856.3978,81.3089,7852.3978" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="7852.3978" y2="7852.3978"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="179.1055" y="7793.4707">200</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="201.4135" y="7793.4707">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="18.2" x="204.7935" y="7793.4707">OK</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="62.985" x="115.0935" y="7811.1767">{message:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="178.0785" y="7811.1767">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="42.705" x="181.4585" y="7811.1767">"Token</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="224.1636" y="7811.1767">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="59.462" x="227.5436" y="7811.1767">refreshed</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="84.6431" x="158.728" y="7828.8828">successfully.",</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="51.909" x="160.769" y="7846.5888">payload:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="212.678" y="7846.5888">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="25.272" x="216.058" y="7846.5888">{...}}</text></g><rect fill="#FFFFFF" height="3" style="stroke:#FFFFFF;stroke-width:1;" width="4480.9953" x="5" y="7903.2508"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="4485.9953" y1="7903.2508" y2="7903.2508"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="4485.9953" y1="7906.2508" y2="7906.2508"/><rect fill="#FFFFFF" height="25.706" style="stroke:#000000;stroke-width:1;" width="136.3138" x="2177.3407" y="7891.3978"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="118.9338" x="2183.3407" y="7909.2948">Confirm User Flow</text><g class="message" data-entity-1="part1" data-entity-2="part2" id="msg117"><polygon fill="#000000" points="315.7901,7982.2218,325.7901,7986.2218,315.7901,7990.2218,319.7901,7986.2218" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="74.3089" x2="321.7901" y1="7986.2218" y2="7986.2218"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="32.383" x="184.858" y="7945.0008">POST</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="206.3752" x="97.862" y="7962.7068">/api/auth/confirm?token=&lt;token&gt;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="54.912" x="108.7885" y="7980.4128">(requires</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="163.7005" y="7980.4128">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="41.145" x="167.0805" y="7980.4128">Bearer</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="208.2255" y="7980.4128">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="39.559" x="211.6055" y="7980.4128">access</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="251.1646" y="7980.4128">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="38.766" x="254.5446" y="7980.4128">token)</text></g><g class="message" data-entity-1="part2" data-entity-2="part3" id="msg118"><polygon fill="#000000" points="653.0594,8013.9279,663.0594,8017.9279,653.0594,8021.9279,657.0594,8017.9279" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="337.7901" x2="659.0594" y1="8017.9279" y2="8017.9279"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="222.5732" x="390.1382" y="8012.1189">Send(ConfirmUserCommand(token))</text></g><g class="message" data-entity-1="part3" data-entity-2="part7" id="msg119"><polygon fill="#000000" points="1474.1228,8045.6339,1484.1228,8049.6339,1474.1228,8053.6339,1478.1228,8049.6339" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="675.0594" x2="1480.1228" y1="8049.6339" y2="8049.6339"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="113.1781" x="1024.002" y="8043.8249">Handle(command)</text></g><g class="message" data-entity-1="part7" data-entity-2="part15" id="msg120"><polygon fill="#000000" points="3168.8616,8077.3399,3178.8616,8081.3399,3168.8616,8085.3399,3172.8616,8081.3399" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="1496.1228" x2="3174.8616" y1="8081.3399" y2="8081.3399"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="245.3232" x="2215.8306" y="8075.5309">ValidateConfirmationTokenAsync(token)</text></g><g class="message" data-entity-1="part15" data-entity-2="part17" id="msg121"><polygon fill="#000000" points="3515.7597,8126.7519,3525.7597,8130.7519,3515.7597,8134.7519,3519.7597,8130.7519" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="3190.8616" x2="3521.7597" y1="8130.7519" y2="8130.7519"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="49.114" x="3269.5651" y="8107.2369">Validate</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3318.6791" y="8107.2369">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="44.889" x="3322.0591" y="8107.2369">against</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3366.9481" y="8107.2369">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="78.7281" x="3370.3281" y="8107.2369">confirmation</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="34.866" x="3275.5386" y="8124.9429">token</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3310.4046" y="8124.9429">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="40.677" x="3313.7846" y="8124.9429">secret,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3354.4616" y="8124.9429">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="42.497" x="3357.8416" y="8124.9429">extract</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3400.3387" y="8124.9429">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="39.364" x="3403.7187" y="8124.9429">userId</text></g><g class="message" data-entity-1="part17" data-entity-2="part15" id="msg122"><polygon fill="#000000" points="3201.8616,8158.4579,3191.8616,8162.4579,3201.8616,8166.4579,3197.8616,8162.4579" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="3195.8616" x2="3531.7597" y1="8162.4579" y2="8162.4579"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="94.5101" x="3283.3556" y="8156.6489">ValidatedToken</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3377.8656" y="8156.6489">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.234" x="3381.2457" y="8156.6489">or</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3394.4797" y="8156.6489">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="42.406" x="3397.8597" y="8156.6489">throws</text></g><g class="message" data-entity-1="part15" data-entity-2="part7" id="msg123"><polygon fill="#000000" points="1507.1228,8190.164,1497.1228,8194.164,1507.1228,8198.164,1503.1228,8194.164" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="1501.1228" x2="3184.8616" y1="8194.164" y2="8194.164"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="94.5101" x="2293.7372" y="8188.355">ValidatedToken</text></g><path d="M36,8209.164 L97.5588,8209.164 L97.5588,8218.87 L87.5588,8228.87 L36,8228.87 L36,8209.164" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="1125.9105" style="stroke:#000000;stroke-width:1;" width="4429.9953" x="36" y="8209.164"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="16.5588" x="51" y="8224.061">alt</text><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="139.5423" x="112.5588" y="8222.9229">[Token invalid or expired]</text><g class="message" data-entity-1="part7" data-entity-2="part3" id="msg124"><polygon fill="#000000" points="686.0594,8248.576,676.0594,8252.576,686.0594,8256.576,682.0594,8252.576" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="680.0594" x2="1485.1228" y1="8252.576" y2="8252.576"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.179" x="989.1945" y="8246.767">throw</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1025.3736" y="8246.767">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="143.2341" x="1028.7536" y="8246.767">UnauthorizedException</text></g><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg125"><polygon fill="#000000" points="348.7901,8280.282,338.7901,8284.282,348.7901,8288.282,344.7901,8284.282" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="342.7901" x2="664.0594" y1="8284.282" y2="8284.282"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="63.83" x="469.5097" y="8278.473">propagate</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg126"><polygon fill="#000000" points="85.3089,8311.988,75.3089,8315.988,85.3089,8319.988,81.3089,8315.988" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="8315.988" y2="8315.988"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="146.3975" y="8310.179">401</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="168.7055" y="8310.179">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="83.6161" x="172.0855" y="8310.179">Unauthorized</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="36" x2="4465.9953" y1="8324.988" y2="8324.988"/><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="70.0695" x="41" y="8336.7469">[Token valid]</text><g class="message" data-entity-1="part7" data-entity-2="part14" id="msg127"><polygon fill="#000000" points="2942.7814,8360.6759,2952.7814,8364.6759,2942.7814,8368.6759,2946.7814,8364.6759" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="1496.1228" x2="2948.7814" y1="8364.6759" y2="8364.6759"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="234.4812" x="2108.2115" y="8358.8669">FindByIdAsync(validatedToken.UserId)</text></g><g class="message" data-entity-1="part14" data-entity-2="part20" id="msg128"><polygon fill="#000000" points="4053.9694,8392.3819,4063.9694,8396.3819,4053.9694,8400.3819,4057.9694,8396.3819" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2964.7814" x2="4059.9694" y1="8396.3819" y2="8396.3819"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="136.2141" x="3447.2683" y="8390.5729">FindByIdAsync(userId)</text></g><g class="message" data-entity-1="part20" data-entity-2="part22" id="msg129"><polygon fill="#000000" points="4390.1205,8459.5,4400.1205,8463.5,4390.1205,8467.5,4394.1205,8463.5" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="4075.9694" x2="4396.1205" y1="8463.5" y2="8463.5"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="43.8491" x="4210.2044" y="8422.279">SELECT</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4254.0535" y="8422.279">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="10.452" x="4257.4335" y="8422.279">...</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.7771" x="4166.3749" y="8439.985">FROM</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4203.1519" y="8439.985">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="105.1831" x="4206.5319" y="8439.985">dbo.UserAccount</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="44.2651" x="4150.2094" y="8457.691">WHERE</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4194.4744" y="8457.691">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="91.7411" x="4197.8544" y="8457.691">UserAccountID</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4289.5955" y="8457.691">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="7.436" x="4292.9755" y="8457.691">=</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4300.4115" y="8457.691">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="24.089" x="4303.7915" y="8457.691">@Id</text></g><g class="message" data-entity-1="part22" data-entity-2="part20" id="msg130"><polygon fill="#000000" points="4086.9694,8491.206,4076.9694,8495.206,4086.9694,8499.206,4082.9694,8495.206" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="4080.9694" x2="4406.1205" y1="8495.206" y2="8495.206"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="23.452" x="4208.4339" y="8489.397">row</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4231.8859" y="8489.397">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.234" x="4235.2659" y="8489.397">or</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4248.4999" y="8489.397">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.776" x="4251.8799" y="8489.397">null</text></g><g class="message" data-entity-1="part20" data-entity-2="part14" id="msg131"><polygon fill="#000000" points="2975.7814,8522.912,2965.7814,8526.912,2975.7814,8530.912,2971.7814,8526.912" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2969.7814" x2="4069.9694" y1="8526.912" y2="8526.912"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="96.9151" x="3448.0328" y="8521.103">ApplicationUser</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3544.9479" y="8521.103">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.234" x="3548.3279" y="8521.103">or</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3561.5619" y="8521.103">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.776" x="3564.942" y="8521.103">null</text></g><g class="message" data-entity-1="part14" data-entity-2="part7" id="msg132"><polygon fill="#000000" points="1507.1228,8554.618,1497.1228,8558.618,1507.1228,8562.618,1503.1228,8558.618" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="1501.1228" x2="2958.7814" y1="8558.618" y2="8558.618"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="96.9151" x="2158.1095" y="8552.809">ApplicationUser</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2255.0246" y="8552.809">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.234" x="2258.4046" y="8552.809">or</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2271.6386" y="8552.809">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.776" x="2275.0186" y="8552.809">null</text></g><path d="M46,8573.618 L107.5588,8573.618 L107.5588,8583.3241 L97.5588,8593.3241 L46,8593.3241 L46,8573.618" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="754.4564" style="stroke:#000000;stroke-width:1;" width="4409.9953" x="46" y="8573.618"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="16.5588" x="61" y="8588.5151">alt</text><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="90.0509" x="122.5588" y="8587.377">[User not found]</text><g class="message" data-entity-1="part7" data-entity-2="part3" id="msg133"><polygon fill="#000000" points="686.0594,8630.7361,676.0594,8634.7361,686.0594,8638.7361,682.0594,8634.7361" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="680.0594" x2="1485.1228" y1="8634.7361" y2="8634.7361"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.179" x="989.1945" y="8611.2211">throw</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1025.3736" y="8611.2211">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="143.2341" x="1028.7536" y="8611.2211">UnauthorizedException</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="33.735" x="1003.306" y="8628.9271">"User</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1037.041" y="8628.9271">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="48.399" x="1040.4211" y="8628.9271">account</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1088.8201" y="8628.9271">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="20.592" x="1092.2001" y="8628.9271">not</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1112.7921" y="8628.9271">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="41.704" x="1116.1721" y="8628.9271">found"</text></g><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg134"><polygon fill="#000000" points="348.7901,8662.4421,338.7901,8666.4421,348.7901,8670.4421,344.7901,8666.4421" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="342.7901" x2="664.0594" y1="8666.4421" y2="8666.4421"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="63.83" x="469.5097" y="8660.6331">propagate</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg135"><polygon fill="#000000" points="85.3089,8694.1481,75.3089,8698.1481,85.3089,8702.1481,81.3089,8698.1481" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="8698.1481" y2="8698.1481"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="146.3975" y="8692.3391">401</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="168.7055" y="8692.3391">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="83.6161" x="172.0855" y="8692.3391">Unauthorized</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="46" x2="4455.9953" y1="8707.1481" y2="8707.1481"/><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="68.7358" x="51" y="8718.907">[User found]</text><g class="message" data-entity-1="part7" data-entity-2="part20" id="msg136"><polygon fill="#000000" points="4058.9694,8760.542,4068.9694,8764.542,4058.9694,8768.542,4062.9694,8764.542" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="1496.1228" x2="4064.9694" y1="8764.542" y2="8764.542"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="187.1222" x="2689.985" y="8741.027">SetEmailConfirmedAsync(user,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="29.328" x="2768.8821" y="8758.733">true)</text></g><path d="M4075,8777.542 L4075,8840.542 L4385,8840.542 L4385,8787.542 L4375,8777.542 L4075,8777.542" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M4375,8777.542 L4375,8787.542 L4385,8787.542 L4375,8777.542" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="275.0803" x="4081" y="8796.4391">IUserEmailStore&lt;ApplicationUser&gt; is injected</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="289.3282" x="4081" y="8814.1451">directly into the handler (not via UserManager),</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="263.8483" x="4081" y="8831.8511">setting the confirmed flag in-memory here.</text><g class="message" data-entity-1="part7" data-entity-2="part14" id="msg137"><polygon fill="#000000" points="2942.7814,8865.3661,2952.7814,8869.3661,2942.7814,8873.3661,2946.7814,8869.3661" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="1496.1228" x2="2948.7814" y1="8869.3661" y2="8869.3661"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="115.0111" x="2167.9466" y="8863.5571">UpdateAsync(user)</text></g><g class="message" data-entity-1="part14" data-entity-2="part20" id="msg138"><polygon fill="#000000" points="4053.9694,8897.0721,4063.9694,8901.0721,4053.9694,8905.0721,4057.9694,8901.0721" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2964.7814" x2="4059.9694" y1="8901.0721" y2="8901.0721"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="115.0111" x="3457.8699" y="8895.2631">UpdateAsync(user)</text></g><g class="message" data-entity-1="part20" data-entity-2="part22" id="msg139"><polygon fill="#000000" points="4395.1205,8928.7781,4405.1205,8932.7781,4395.1205,8936.7781,4399.1205,8932.7781" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="4075.9694" x2="4401.1205" y1="8932.7781" y2="8932.7781"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="49.621" x="4143.0503" y="8926.9691">UPDATE</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4192.6714" y="8926.9691">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="105.1831" x="4196.0514" y="8926.9691">dbo.UserAccount</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4301.2345" y="8926.9691">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="21.593" x="4304.6145" y="8926.9691">SET</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4326.2075" y="8926.9691">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="10.452" x="4329.5875" y="8926.9691">...</text></g><g class="message" data-entity-1="part20" data-entity-2="part22" id="msg140"><polygon fill="#000000" points="4395.1205,9013.6022,4405.1205,9017.6022,4395.1205,9021.6022,4399.1205,9017.6022" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="4075.9694" x2="4401.1205" y1="9017.6022" y2="9017.6022"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="43.966" x="4202.0379" y="8958.6752">INSERT</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4246.0039" y="8958.6752">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="31.668" x="4249.3839" y="8958.6752">INTO</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="124.9301" x="4179.0799" y="8976.3812">dbo.UserVerification</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="97.6301" x="4192.7299" y="8994.0872">(UserAccountId,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="131.9371" x="4175.5764" y="9011.7932">VerificationDateTime)</text></g><path d="M4080,9030.6022 L4080,9093.6022 L4325,9093.6022 L4325,9040.6022 L4315,9030.6022 L4080,9030.6022" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M4315,9030.6022 L4315,9040.6022 L4325,9040.6022 L4315,9030.6022" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="215.8652" x="4086" y="9049.4992">Idempotent: skipped (duplicate-key</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="224.0812" x="4086" y="9067.2052">exception swallowed) if a verification</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="113.6721" x="4086" y="9084.9113">row already exists.</text><g class="message" data-entity-1="part20" data-entity-2="part14" id="msg141"><polygon fill="#000000" points="2975.7814,9118.4263,2965.7814,9122.4263,2975.7814,9126.4263,2971.7814,9122.4263" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2969.7814" x2="4069.9694" y1="9122.4263" y2="9122.4263"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="135.7851" x="3449.9828" y="9116.6173">IdentityResult.Success</text></g><g class="message" data-entity-1="part14" data-entity-2="part7" id="msg142"><polygon fill="#000000" points="1507.1228,9150.1323,1497.1228,9154.1323,1507.1228,9158.1323,1503.1228,9154.1323" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="1501.1228" x2="2958.7814" y1="9154.1323" y2="9154.1323"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="84.8641" x="2185.5201" y="9148.3233">IdentityResult</text></g><g class="message" data-entity-1="part7" data-entity-2="part3" id="msg143"><polygon fill="#000000" points="686.0594,9199.5443,676.0594,9203.5443,686.0594,9207.5443,682.0594,9203.5443" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="680.0594" x2="1490.1228" y1="9203.5443" y2="9203.5443"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="132.8991" x="1016.6415" y="9180.0293">ConfirmationPayload(</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="997.525" y="9197.7353">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="46.332" x="1004.285" y="9197.7353">user.Id,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1050.6171" y="9197.7353">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="114.6601" x="1053.9971" y="9197.7353">DateTime.UtcNow)</text></g><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg144"><polygon fill="#000000" points="348.7901,9231.2503,338.7901,9235.2503,348.7901,9239.2503,344.7901,9235.2503" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="342.7901" x2="669.0594" y1="9235.2503" y2="9235.2503"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="128.9991" x="439.4252" y="9229.4413">ConfirmationPayload</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg145"><polygon fill="#000000" points="85.3089,9316.0744,75.3089,9320.0744,85.3089,9324.0744,81.3089,9320.0744" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="9320.0744" y2="9320.0744"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="179.1055" y="9261.1474">200</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="201.4135" y="9261.1474">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="18.2" x="204.7935" y="9261.1474">OK</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="62.985" x="108.7365" y="9278.8534">{message:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="171.7215" y="9278.8534">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="33.735" x="175.1015" y="9278.8534">"User</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="208.8365" y="9278.8534">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="26.299" x="212.2165" y="9278.8534">with</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="238.5156" y="9278.8534">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.897" x="241.8956" y="9278.8534">ID</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="255.7926" y="9278.8534">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="21.229" x="259.1726" y="9278.8534">{id}</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="280.4016" y="9278.8534">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="9.581" x="283.7816" y="9278.8534">is</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="75.0881" x="163.5055" y="9296.5594">confirmed.",</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="51.909" x="160.769" y="9314.2654">payload:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="212.678" y="9314.2654">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="25.272" x="216.058" y="9314.2654">{...}}</text></g><rect fill="#FFFFFF" height="3" style="stroke:#FFFFFF;stroke-width:1;" width="4480.9953" x="5" y="9363.9274"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="4485.9953" y1="9363.9274" y2="9363.9274"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="4485.9953" y1="9366.9274" y2="9366.9274"/><rect fill="#FFFFFF" height="25.706" style="stroke:#000000;stroke-width:1;" width="225.7669" x="2132.6142" y="9352.0744"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="208.3869" x="2138.6142" y="9369.9714">Resend Confirmation Email Flow</text><g class="message" data-entity-1="part1" data-entity-2="part2" id="msg146"><polygon fill="#000000" points="315.7901,9442.8985,325.7901,9446.8985,315.7901,9450.8985,319.7901,9446.8985" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="74.3089" x2="321.7901" y1="9446.8985" y2="9446.8985"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="32.383" x="184.858" y="9405.6774">POST</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="234.4812" x="83.8089" y="9423.3835">/api/auth/confirm/resend?userId=&lt;id&gt;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="54.912" x="108.7885" y="9441.0895">(requires</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="163.7005" y="9441.0895">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="41.145" x="167.0805" y="9441.0895">Bearer</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="208.2255" y="9441.0895">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="39.559" x="211.6055" y="9441.0895">access</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="251.1646" y="9441.0895">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="38.766" x="254.5446" y="9441.0895">token)</text></g><g class="message" data-entity-1="part2" data-entity-2="part3" id="msg147"><polygon fill="#000000" points="653.0594,9474.6045,663.0594,9478.6045,653.0594,9482.6045,657.0594,9478.6045" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="337.7901" x2="659.0594" y1="9478.6045" y2="9478.6045"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="308.2693" x="347.2901" y="9472.7955">Send(ResendConfirmationEmailCommand(userId))</text></g><g class="message" data-entity-1="part3" data-entity-2="part8" id="msg148"><polygon fill="#000000" points="1698.5121,9506.3105,1708.5121,9510.3105,1698.5121,9514.3105,1702.5121,9510.3105" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="675.0594" x2="1704.5121" y1="9510.3105" y2="9510.3105"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="113.1781" x="1136.1967" y="9504.5015">Handle(command)</text></g><g class="message" data-entity-1="part8" data-entity-2="part14" id="msg149"><polygon fill="#000000" points="2942.7814,9538.0165,2952.7814,9542.0165,2942.7814,9546.0165,2946.7814,9542.0165" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="1720.5121" x2="2948.7814" y1="9542.0165" y2="9542.0165"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="136.2141" x="2269.5397" y="9536.2075">FindByIdAsync(userId)</text></g><g class="message" data-entity-1="part14" data-entity-2="part20" id="msg150"><polygon fill="#000000" points="4053.9694,9569.7225,4063.9694,9573.7225,4053.9694,9577.7225,4057.9694,9573.7225" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2964.7814" x2="4059.9694" y1="9573.7225" y2="9573.7225"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="136.2141" x="3447.2683" y="9567.9135">FindByIdAsync(userId)</text></g><g class="message" data-entity-1="part20" data-entity-2="part22" id="msg151"><polygon fill="#000000" points="4390.1205,9636.8406,4400.1205,9640.8406,4390.1205,9644.8406,4394.1205,9640.8406" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="4075.9694" x2="4396.1205" y1="9640.8406" y2="9640.8406"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="43.8491" x="4210.2044" y="9599.6196">SELECT</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4254.0535" y="9599.6196">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="10.452" x="4257.4335" y="9599.6196">...</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.7771" x="4166.3749" y="9617.3256">FROM</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4203.1519" y="9617.3256">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="105.1831" x="4206.5319" y="9617.3256">dbo.UserAccount</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="44.2651" x="4150.2094" y="9635.0316">WHERE</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4194.4744" y="9635.0316">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="91.7411" x="4197.8544" y="9635.0316">UserAccountID</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4289.5955" y="9635.0316">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="7.436" x="4292.9755" y="9635.0316">=</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4300.4115" y="9635.0316">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="24.089" x="4303.7915" y="9635.0316">@Id</text></g><g class="message" data-entity-1="part22" data-entity-2="part20" id="msg152"><polygon fill="#000000" points="4086.9694,9668.5466,4076.9694,9672.5466,4086.9694,9676.5466,4082.9694,9672.5466" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="4080.9694" x2="4406.1205" y1="9672.5466" y2="9672.5466"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="23.452" x="4208.4339" y="9666.7376">row</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4231.8859" y="9666.7376">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.234" x="4235.2659" y="9666.7376">or</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4248.4999" y="9666.7376">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.776" x="4251.8799" y="9666.7376">null</text></g><g class="message" data-entity-1="part20" data-entity-2="part14" id="msg153"><polygon fill="#000000" points="2975.7814,9700.2526,2965.7814,9704.2526,2975.7814,9708.2526,2971.7814,9704.2526" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2969.7814" x2="4069.9694" y1="9704.2526" y2="9704.2526"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="96.9151" x="3448.0328" y="9698.4436">ApplicationUser</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3544.9479" y="9698.4436">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.234" x="3548.3279" y="9698.4436">or</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3561.5619" y="9698.4436">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.776" x="3564.942" y="9698.4436">null</text></g><g class="message" data-entity-1="part14" data-entity-2="part8" id="msg154"><polygon fill="#000000" points="1731.5121,9731.9586,1721.5121,9735.9586,1731.5121,9739.9586,1727.5121,9735.9586" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="1725.5121" x2="2958.7814" y1="9735.9586" y2="9735.9586"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="96.9151" x="2270.3042" y="9730.1496">ApplicationUser</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2367.2193" y="9730.1496">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.234" x="2370.5993" y="9730.1496">or</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2383.8333" y="9730.1496">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.776" x="2387.2133" y="9730.1496">null</text></g><path d="M566.7557,9750.9586 L628.3144,9750.9586 L628.3144,9760.6647 L618.3144,9770.6647 L566.7557,9770.6647 L566.7557,9750.9586" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="518.9661" style="stroke:#000000;stroke-width:1;" width="3806.4899" x="566.7557" y="9750.9586"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="16.5588" x="581.7557" y="9765.8557">alt</text><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="90.0509" x="643.3144" y="9764.7176">[User not found]</text><g class="message" data-entity-1="part8" data-entity-2="part8" id="msg155"><line style="stroke:#000000;stroke-width:1;" x1="1720.5121" x2="1762.5121" y1="9812.0767" y2="9812.0767"/><line style="stroke:#000000;stroke-width:1;" x1="1762.5121" x2="1762.5121" y1="9812.0767" y2="9825.0767"/><line style="stroke:#000000;stroke-width:1;" x1="1721.5121" x2="1762.5121" y1="9825.0767" y2="9825.0767"/><polygon fill="#000000" points="1731.5121,9821.0767,1721.5121,9825.0767,1731.5121,9829.0767,1727.5121,9825.0767" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="38.831" x="1772.2191" y="9788.5617">return</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1811.0502" y="9788.5617">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="42.978" x="1814.4302" y="9788.5617">silently</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="57.4861" x="1727.5121" y="9806.2677">(prevents</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1784.9982" y="9806.2677">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="26.962" x="1788.3782" y="9806.2677">user</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1815.3402" y="9806.2677">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="83.3951" x="1818.7202" y="9806.2677">enumeration)</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="566.7557" x2="4373.2456" y1="9834.0767" y2="9834.0767"/><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="68.7358" x="571.7557" y="9845.8356">[User found]</text><g class="message" data-entity-1="part8" data-entity-2="part14" id="msg156"><polygon fill="#000000" points="2947.7814,9869.7646,2957.7814,9873.7646,2947.7814,9877.7646,2951.7814,9873.7646" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="1720.5121" x2="2953.7814" y1="9873.7646" y2="9873.7646"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="179.0102" x="2250.6417" y="9867.9556">IsEmailConfirmedAsync(user)</text></g><g class="message" data-entity-1="part14" data-entity-2="part8" id="msg157"><polygon fill="#000000" points="1731.5121,9901.4706,1721.5121,9905.4706,1731.5121,9909.4706,1727.5121,9905.4706" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="1725.5121" x2="2958.7814" y1="9905.4706" y2="9905.4706"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="27.079" x="2326.6073" y="9899.6616">bool</text></g><path d="M576.7557,9920.4706 L638.3144,9920.4706 L638.3144,9930.1766 L628.3144,9940.1766 L576.7557,9940.1766 L576.7557,9920.4706" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="342.4541" style="stroke:#000000;stroke-width:1;" width="3786.4899" x="576.7557" y="9920.4706"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="16.5588" x="591.7557" y="9935.3676">alt</text><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="108.5968" x="653.3144" y="9934.2295">[Already confirmed]</text><g class="message" data-entity-1="part8" data-entity-2="part8" id="msg158"><line style="stroke:#000000;stroke-width:1;" x1="1720.5121" x2="1762.5121" y1="9963.8826" y2="9963.8826"/><line style="stroke:#000000;stroke-width:1;" x1="1762.5121" x2="1762.5121" y1="9963.8826" y2="9976.8826"/><line style="stroke:#000000;stroke-width:1;" x1="1721.5121" x2="1762.5121" y1="9976.8826" y2="9976.8826"/><polygon fill="#000000" points="1731.5121,9972.8826,1721.5121,9976.8826,1731.5121,9980.8826,1727.5121,9976.8826" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="38.831" x="1727.5121" y="9958.0736">return</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1766.3431" y="9958.0736">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="42.978" x="1769.7232" y="9958.0736">silently</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1812.7012" y="9958.0736">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="43.7451" x="1816.0812" y="9958.0736">(no-op)</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="576.7557" x2="4363.2456" y1="9985.8826" y2="9985.8826"/><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="106.724" x="581.7557" y="9997.6416">[Not yet confirmed]</text><g class="message" data-entity-1="part8" data-entity-2="part15" id="msg159"><polygon fill="#000000" points="3168.8616,10021.5705,3178.8616,10025.5705,3168.8616,10029.5705,3172.8616,10025.5705" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="1720.5121" x2="3174.8616" y1="10025.5705" y2="10025.5705"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="209.7162" x="2345.8288" y="10019.7615">GenerateConfirmationToken(user)</text></g><g class="message" data-entity-1="part15" data-entity-2="part8" id="msg160"><polygon fill="#000000" points="1731.5121,10053.2766,1721.5121,10057.2766,1731.5121,10061.2766,1727.5121,10057.2766" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="1725.5121" x2="3184.8616" y1="10057.2766" y2="10057.2766"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="78.7281" x="2394.6998" y="10051.4676">confirmation</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2473.4279" y="10051.4676">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="34.866" x="2476.8079" y="10051.4676">token</text></g><g class="message" data-entity-1="part8" data-entity-2="part3" id="msg161"><polygon fill="#000000" points="691.0594,10084.9826,681.0594,10088.9826,691.0594,10092.9826,687.0594,10088.9826" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="685.0594" x2="1709.5121" y1="10088.9826" y2="10088.9826"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="291.6033" x="1049.4841" y="10083.1736">Send(SendResendConfirmationEmailCommand)</text></g><g class="message" data-entity-1="part3" data-entity-2="part21" id="msg162"><polygon fill="#000000" points="4263.2878,10152.1006,4273.2878,10156.1006,4263.2878,10160.1006,4267.2878,10156.1006" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="680.0594" x2="4269.2878" y1="10156.1006" y2="10156.1006"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="228.9302" x="2363.2085" y="10114.8796">SendResendConfirmationEmailAsync(</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="2421.9881" y="10132.5856">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="64.259" x="2428.7481" y="10132.5856">firstName,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2493.0071" y="10132.5856">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.972" x="2496.3871" y="10132.5856">email,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="120.0291" x="2417.659" y="10150.2916">confirmationToken)</text></g><g class="message" data-entity-1="part21" data-entity-2="part19" id="msg163"><polygon fill="#000000" points="3887.7109,10219.2187,3877.7109,10223.2187,3887.7109,10227.2187,3883.7109,10223.2187" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="3881.7109" x2="4274.2878" y1="10223.2187" y2="10223.2187"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="44.148" x="4035.4913" y="10181.9976">Render</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4079.6394" y="10181.9976">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="33.488" x="4083.0194" y="10181.9976">email</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.907" x="4003.9793" y="10199.7037">(same</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4040.8863" y="10199.7037">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="34.723" x="4044.2663" y="10199.7037">Razor</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4078.9894" y="10199.7037">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="48.75" x="4082.3694" y="10199.7037">pipeline</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4131.1194" y="10199.7037">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.52" x="4134.4994" y="10199.7037">as</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="75.4781" x="4038.2603" y="10217.4097">registration)</text></g><g class="message" data-entity-1="part21" data-entity-2="part18" id="msg164"><polygon fill="#000000" points="3715.9238,10250.9247,3705.9238,10254.9247,3715.9238,10258.9247,3711.9238,10254.9247" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="3709.9238" x2="4279.2878" y1="10254.9247" y2="10254.9247"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="106.8081" x="3894.9497" y="10249.1157">SendAsync(email,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4001.7578" y="10249.1157">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="47.3591" x="4005.1378" y="10249.1157">subject,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4052.4969" y="10249.1157">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="34.385" x="4055.8769" y="10249.1157">body)</text></g><g class="message" data-entity-1="part8" data-entity-2="part3" id="msg165"><polygon fill="#000000" points="686.0594,10296.6307,676.0594,10300.6307,686.0594,10304.6307,682.0594,10300.6307" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="680.0594" x2="1714.5121" y1="10300.6307" y2="10300.6307"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="33.618" x="1178.4767" y="10294.8217">(void)</text></g><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg166"><polygon fill="#000000" points="348.7901,10328.3367,338.7901,10332.3367,348.7901,10336.3367,344.7901,10332.3367" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="342.7901" x2="669.0594" y1="10332.3367" y2="10332.3367"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="33.618" x="487.1157" y="10326.5277">(void)</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg167"><polygon fill="#000000" points="85.3089,10395.4548,75.3089,10399.4548,85.3089,10403.4548,81.3089,10399.4548" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="331.7901" y1="10399.4548" y2="10399.4548"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="181.6055" y="10358.2337">200</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="203.9135" y="10358.2337">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="18.2" x="207.2935" y="10358.2337">OK</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="62.985" x="109.917" y="10375.9398">{message:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="172.902" y="10375.9398">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="84.0321" x="176.282" y="10375.9398">"confirmation</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="260.3141" y="10375.9398">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="33.488" x="263.6941" y="10375.9398">email</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="21.554" x="149.4305" y="10393.6458">has</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="170.9845" y="10393.6458">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="30.693" x="174.3645" y="10393.6458">been</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="205.0575" y="10393.6458">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="49.231" x="208.4375" y="10393.6458">resent"}</text></g><path d="M337,10412.4548 L337,10475.4548 L666,10475.4548 L666,10422.4548 L656,10412.4548 L337,10412.4548" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M656,10412.4548 L656,10422.4548 L666,10422.4548 L656,10412.4548" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="278.4862" x="343" y="10431.3518">Always 200 OK regardless of outcome above -</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="308.7502" x="343" y="10449.0578">same user-enumeration precaution as a not-found</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="233.1942" x="343" y="10466.7638">user or an already-confirmed account.</text><rect fill="#FFFFFF" height="3" style="stroke:#FFFFFF;stroke-width:1;" width="4480.9953" x="5" y="10502.4258"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="4485.9953" y1="10502.4258" y2="10502.4258"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="4485.9953" y1="10505.4258" y2="10505.4258"/><rect fill="#FFFFFF" height="25.706" style="stroke:#000000;stroke-width:1;" width="167.6926" x="2161.6514" y="10490.5728"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="150.3126" x="2167.6514" y="10508.4698">Update Username Flow</text><g class="message" data-entity-1="part1" data-entity-2="part2" id="msg168"><polygon fill="#000000" points="315.7901,10581.3969,325.7901,10585.3969,315.7901,10589.3969,319.7901,10585.3969" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="74.3089" x2="321.7901" y1="10585.3969" y2="10585.3969"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="41.249" x="117.245" y="10544.1759">PATCH</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="158.494" y="10544.1759">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="122.9801" x="161.874" y="10544.1759">/api/auth/username</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="98.7091" x="151.695" y="10561.8819">{newUsername}</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="54.912" x="108.7885" y="10579.5879">(requires</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="163.7005" y="10579.5879">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="41.145" x="167.0805" y="10579.5879">Bearer</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="208.2255" y="10579.5879">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="39.559" x="211.6055" y="10579.5879">access</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="251.1646" y="10579.5879">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="38.766" x="254.5446" y="10579.5879">token)</text></g><g class="message" data-entity-1="part2" data-entity-2="part3" id="msg169"><polygon fill="#000000" points="653.0594,10648.5149,663.0594,10652.5149,653.0594,10656.5149,657.0594,10652.5149" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="337.7901" x2="659.0594" y1="10652.5149" y2="10652.5149"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="210.0672" x="396.3912" y="10611.2939">Send(UpdateUsernameCommand(</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="418.2247" y="10628.9999">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="159.6402" x="424.9847" y="10628.9999">GetAuthenticatedUserId(),</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="96.6291" x="453.1102" y="10646.7059">newUsername))</text></g><path d="M680,10665.5149 L680,10710.5149 L1013,10710.5149 L1013,10675.5149 L1003,10665.5149 L680,10665.5149" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M1003,10665.5149 L1003,10675.5149 L1013,10675.5149 L1003,10665.5149" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="312.8323" x="686" y="10684.412">ValidationBehavior runs UpdateUsernameValidator</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="211.5882" x="686" y="10702.118">(same format rules as registration)</text><path d="M26,10722.927 L87.5588,10722.927 L87.5588,10732.633 L77.5588,10742.633 L26,10742.633 L26,10722.927" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="1131.4803" style="stroke:#000000;stroke-width:1;" width="4439.9953" x="26" y="10722.927"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="16.5588" x="41" y="10737.824">alt</text><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="88.4862" x="102.5588" y="10736.6859">[Validation fails]</text><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg170"><polygon fill="#000000" points="348.7901,10780.045,338.7901,10784.045,348.7901,10788.045,344.7901,10784.045" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="342.7901" x2="664.0594" y1="10784.045" y2="10784.045"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="42.406" x="480.2217" y="10760.53">throws</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="223.3662" x="389.7417" y="10778.236">FluentValidation.ValidationException</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg171"><polygon fill="#000000" points="85.3089,10811.751,75.3089,10815.751,85.3089,10819.751,81.3089,10815.751" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="10815.751" y2="10815.751"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="149.797" y="10809.942">400</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="172.105" y="10809.942">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="23.738" x="175.485" y="10809.942">Bad</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="199.223" y="10809.942">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="49.6991" x="202.603" y="10809.942">Request</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="26" x2="4465.9953" y1="10824.751" y2="10824.751"/><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="115.6862" x="31" y="10836.51">[Validation succeeds]</text><g class="message" data-entity-1="part3" data-entity-2="part9" id="msg172"><polygon fill="#000000" points="1939.1414,10860.4389,1949.1414,10864.4389,1939.1414,10868.4389,1943.1414,10864.4389" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="675.0594" x2="1945.1414" y1="10864.4389" y2="10864.4389"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="113.1781" x="1256.5113" y="10858.6299">Handle(command)</text></g><g class="message" data-entity-1="part9" data-entity-2="part14" id="msg173"><polygon fill="#000000" points="2942.7814,10892.145,2952.7814,10896.145,2942.7814,10900.145,2946.7814,10896.145" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="1961.1414" x2="2948.7814" y1="10896.145" y2="10896.145"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="185.6272" x="2365.1478" y="10890.336">FindByIdAsync(userAccountId)</text></g><g class="message" data-entity-1="part14" data-entity-2="part20" id="msg174"><polygon fill="#000000" points="4053.9694,10923.851,4063.9694,10927.851,4053.9694,10931.851,4057.9694,10927.851" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2964.7814" x2="4059.9694" y1="10927.851" y2="10927.851"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="185.6272" x="3422.5618" y="10922.042">FindByIdAsync(userAccountId)</text></g><g class="message" data-entity-1="part20" data-entity-2="part22" id="msg175"><polygon fill="#000000" points="4390.1205,10990.969,4400.1205,10994.969,4390.1205,10998.969,4394.1205,10994.969" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="4075.9694" x2="4396.1205" y1="10994.969" y2="10994.969"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="43.8491" x="4210.2044" y="10953.748">SELECT</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4254.0535" y="10953.748">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="10.452" x="4257.4335" y="10953.748">...</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.7771" x="4166.3749" y="10971.454">FROM</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4203.1519" y="10971.454">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="105.1831" x="4206.5319" y="10971.454">dbo.UserAccount</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="44.2651" x="4150.2094" y="10989.16">WHERE</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4194.4744" y="10989.16">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="91.7411" x="4197.8544" y="10989.16">UserAccountID</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4289.5955" y="10989.16">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="7.436" x="4292.9755" y="10989.16">=</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4300.4115" y="10989.16">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="24.089" x="4303.7915" y="10989.16">@Id</text></g><g class="message" data-entity-1="part22" data-entity-2="part20" id="msg176"><polygon fill="#000000" points="4086.9694,11022.675,4076.9694,11026.675,4086.9694,11030.675,4082.9694,11026.675" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="4080.9694" x2="4406.1205" y1="11026.675" y2="11026.675"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="23.452" x="4208.4339" y="11020.866">row</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4231.8859" y="11020.866">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.234" x="4235.2659" y="11020.866">or</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4248.4999" y="11020.866">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.776" x="4251.8799" y="11020.866">null</text></g><g class="message" data-entity-1="part20" data-entity-2="part14" id="msg177"><polygon fill="#000000" points="2975.7814,11054.3811,2965.7814,11058.3811,2975.7814,11062.3811,2971.7814,11058.3811" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2969.7814" x2="4069.9694" y1="11058.3811" y2="11058.3811"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="96.9151" x="3448.0328" y="11052.5721">ApplicationUser</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3544.9479" y="11052.5721">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.234" x="3548.3279" y="11052.5721">or</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3561.5619" y="11052.5721">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.776" x="3564.942" y="11052.5721">null</text></g><g class="message" data-entity-1="part14" data-entity-2="part9" id="msg178"><polygon fill="#000000" points="1972.1414,11086.0871,1962.1414,11090.0871,1972.1414,11094.0871,1968.1414,11090.0871" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="1966.1414" x2="2958.7814" y1="11090.0871" y2="11090.0871"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="96.9151" x="2390.6188" y="11084.2781">ApplicationUser</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2487.5339" y="11084.2781">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.234" x="2490.9139" y="11084.2781">or</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2504.1479" y="11084.2781">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.776" x="2507.5279" y="11084.2781">null</text></g><path d="M36,11105.0871 L97.5588,11105.0871 L97.5588,11114.7931 L87.5588,11124.7931 L36,11124.7931 L36,11105.0871" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="742.3202" style="stroke:#000000;stroke-width:1;" width="4419.9953" x="36" y="11105.0871"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="16.5588" x="51" y="11119.9841">alt</text><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="108.836" x="112.5588" y="11118.846">[Account not found]</text><g class="message" data-entity-1="part9" data-entity-2="part3" id="msg179"><polygon fill="#000000" points="686.0594,11144.4991,676.0594,11148.4991,686.0594,11152.4991,682.0594,11148.4991" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="680.0594" x2="1950.1414" y1="11148.4991" y2="11148.4991"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.179" x="1232.9553" y="11142.6901">throw</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1269.1343" y="11142.6901">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="120.7311" x="1272.5143" y="11142.6901">NotFoundException</text></g><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg180"><polygon fill="#000000" points="348.7901,11176.2051,338.7901,11180.2051,348.7901,11184.2051,344.7901,11180.2051" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="342.7901" x2="664.0594" y1="11180.2051" y2="11180.2051"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="63.83" x="469.5097" y="11174.3961">propagate</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg181"><polygon fill="#000000" points="85.3089,11207.9111,75.3089,11211.9111,85.3089,11215.9111,81.3089,11211.9111" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="11211.9111" y2="11211.9111"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="155.959" y="11206.1021">404</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="178.267" y="11206.1021">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.438" x="181.647" y="11206.1021">Not</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="204.085" y="11206.1021">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="38.675" x="207.465" y="11206.1021">Found</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="36" x2="4455.9953" y1="11220.9111" y2="11220.9111"/><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="87.5209" x="41" y="11232.6701">[Account found]</text><g class="message" data-entity-1="part9" data-entity-2="part14" id="msg182"><polygon fill="#000000" points="2942.7814,11274.3051,2952.7814,11278.3051,2942.7814,11282.3051,2946.7814,11278.3051" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="1961.1414" x2="2948.7814" y1="11278.3051" y2="11278.3051"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="154.0371" x="2380.9428" y="11254.79">SetUserNameAsync(user,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="92.7291" x="2411.5969" y="11272.4961">newUsername)</text></g><g class="message" data-entity-1="part14" data-entity-2="part20" id="msg183"><polygon fill="#000000" points="4058.9694,11306.0111,4068.9694,11310.0111,4058.9694,11314.0111,4062.9694,11310.0111" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2964.7814" x2="4064.9694" y1="11310.0111" y2="11310.0111"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="209.9372" x="3412.9068" y="11304.2021">FindByNameAsync(newUsername)</text></g><path d="M2969,11323.0111 L2969,11350.0111 L3223,11350.0111 L3223,11333.0111 L3213,11323.0111 L2969,11323.0111" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M3213,11323.0111 L3213,11333.0111 L3223,11333.0111 L3213,11323.0111" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="233.9092" x="2975" y="11341.9081">Uniqueness check before the UPDATE.</text><g class="message" data-entity-1="part14" data-entity-2="part20" id="msg184"><polygon fill="#000000" points="4058.9694,11375.4231,4068.9694,11379.4231,4058.9694,11383.4231,4062.9694,11379.4231" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2964.7814" x2="4064.9694" y1="11379.4231" y2="11379.4231"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="115.0111" x="3460.3699" y="11373.6141">UpdateAsync(user)</text></g><g class="message" data-entity-1="part20" data-entity-2="part22" id="msg185"><polygon fill="#000000" points="4395.1205,11424.8351,4405.1205,11428.8351,4395.1205,11432.8351,4399.1205,11428.8351" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="4070.9694" x2="4401.1205" y1="11428.8351" y2="11428.8351"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="49.621" x="4159.9529" y="11405.3201">UPDATE</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4209.5739" y="11405.3201">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="105.1831" x="4212.9539" y="11405.3201">dbo.UserAccount</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="21.593" x="4140.7908" y="11423.0261">SET</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4162.3839" y="11423.0261">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="63.245" x="4165.7639" y="11423.0261">Username</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4229.0089" y="11423.0261">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="7.436" x="4232.3889" y="11423.0261">=</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4239.8249" y="11423.0261">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="80.2621" x="4243.2049" y="11423.0261">@UserName,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4323.467" y="11423.0261">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="10.452" x="4326.847" y="11423.0261">...</text></g><g class="message" data-entity-1="part20" data-entity-2="part14" id="msg186"><polygon fill="#000000" points="2975.7814,11456.5412,2965.7814,11460.5412,2975.7814,11464.5412,2971.7814,11460.5412" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2969.7814" x2="4069.9694" y1="11460.5412" y2="11460.5412"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="84.8641" x="3475.4434" y="11454.7322">IdentityResult</text></g><g class="message" data-entity-1="part14" data-entity-2="part9" id="msg187"><polygon fill="#000000" points="1972.1414,11488.2472,1962.1414,11492.2472,1972.1414,11496.2472,1968.1414,11492.2472" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="1966.1414" x2="2958.7814" y1="11492.2472" y2="11492.2472"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="84.8641" x="2418.0293" y="11486.4382">IdentityResult</text></g><path d="M46,11507.2472 L107.5588,11507.2472 L107.5588,11516.9532 L97.5588,11526.9532 L46,11526.9532 L46,11507.2472" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="333.1601" style="stroke:#000000;stroke-width:1;" width="2021.715" x="46" y="11507.2472"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="16.5588" x="61" y="11522.1442">alt</text><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="104.8375" x="122.5588" y="11521.0061">[!result.Succeeded]</text><g class="message" data-entity-1="part9" data-entity-2="part3" id="msg188"><polygon fill="#000000" points="686.0594,11582.0712,676.0594,11586.0712,686.0594,11590.0712,682.0594,11586.0712" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="680.0594" x2="1950.1414" y1="11586.0712" y2="11586.0712"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.179" x="1240.3978" y="11544.8502">throw</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1276.5768" y="11544.8502">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="105.8461" x="1279.9568" y="11544.8502">ConflictException</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="126.7761" x="1225.8053" y="11562.5562">(DuplicateUserName</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1352.5814" y="11562.5562">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="29.432" x="1355.9614" y="11562.5562">code</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1385.3934" y="11562.5562">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="11.622" x="1388.7734" y="11562.5562">-&gt;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="68.549" x="1230.8558" y="11580.2622">"Username</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1299.4049" y="11580.2622">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="45.266" x="1302.7849" y="11580.2622">already</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1348.0509" y="11580.2622">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="43.914" x="1351.4309" y="11580.2622">exists")</text></g><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg189"><polygon fill="#000000" points="348.7901,11613.7773,338.7901,11617.7773,348.7901,11621.7773,344.7901,11617.7773" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="342.7901" x2="664.0594" y1="11617.7773" y2="11617.7773"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="63.83" x="469.5097" y="11611.9683">propagate</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg190"><polygon fill="#000000" points="85.3089,11645.4833,75.3089,11649.4833,85.3089,11653.4833,81.3089,11649.4833" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="11649.4833" y2="11649.4833"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="165.0915" y="11643.6743">409</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="187.3995" y="11643.6743">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="46.228" x="190.7795" y="11643.6743">Conflict</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="46" x2="2067.715" y1="11658.4833" y2="11658.4833"/><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="101.5348" x="51" y="11670.2422">[result.Succeeded]</text><g class="message" data-entity-1="part9" data-entity-2="part3" id="msg191"><polygon fill="#000000" points="686.0594,11711.8772,676.0594,11715.8772,686.0594,11719.8772,682.0594,11715.8772" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="680.0594" x2="1955.1414" y1="11715.8772" y2="11715.8772"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="160.2511" x="1235.4748" y="11692.3622">UpdateUsernamePayload(</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="1237.6458" y="11710.0682">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="46.332" x="1244.4058" y="11710.0682">user.Id,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1290.7379" y="11710.0682">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="99.4371" x="1294.1179" y="11710.0682">user.UserName)</text></g><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg192"><polygon fill="#000000" points="348.7901,11743.5832,338.7901,11747.5832,348.7901,11751.5832,344.7901,11747.5832" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="342.7901" x2="669.0594" y1="11747.5832" y2="11747.5832"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="156.3511" x="425.7492" y="11741.7742">UpdateUsernamePayload</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg193"><polygon fill="#000000" points="85.3089,11828.4073,75.3089,11832.4073,85.3089,11836.4073,81.3089,11832.4073" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="11832.4073" y2="11832.4073"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="179.1055" y="11773.4802">200</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="201.4135" y="11773.4802">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="18.2" x="204.7935" y="11773.4802">OK</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="62.985" x="106.234" y="11791.1862">{message:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="169.219" y="11791.1862">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="68.549" x="172.599" y="11791.1862">"Username</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="241.148" y="11791.1862">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="51.3371" x="244.5281" y="11791.1862">updated</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="84.6431" x="158.728" y="11808.8923">successfully.",</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="51.909" x="160.769" y="11826.5983">payload:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="212.678" y="11826.5983">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="25.272" x="216.058" y="11826.5983">{...}}</text></g><rect fill="#FFFFFF" height="3" style="stroke:#FFFFFF;stroke-width:1;" width="4480.9953" x="5" y="11883.2603"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="4485.9953" y1="11883.2603" y2="11883.2603"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="4485.9953" y1="11886.2603" y2="11886.2603"/><rect fill="#FFFFFF" height="25.706" style="stroke:#000000;stroke-width:1;" width="136.6129" x="2177.1912" y="11871.4073"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="119.2328" x="2183.1912" y="11889.3043">Update Email Flow</text><g class="message" data-entity-1="part1" data-entity-2="part2" id="msg194"><polygon fill="#000000" points="315.7901,11962.2314,325.7901,11966.2314,315.7901,11970.2314,319.7901,11966.2314" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="74.3089" x2="321.7901" y1="11966.2314" y2="11966.2314"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="41.249" x="131.389" y="11925.0103">PATCH</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="172.638" y="11925.0103">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="94.6921" x="176.018" y="11925.0103">/api/auth/email</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="68.8481" x="166.6255" y="11942.7163">{newEmail}</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="54.912" x="108.7885" y="11960.4223">(requires</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="163.7005" y="11960.4223">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="41.145" x="167.0805" y="11960.4223">Bearer</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="208.2255" y="11960.4223">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="39.559" x="211.6055" y="11960.4223">access</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="251.1646" y="11960.4223">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="38.766" x="254.5446" y="11960.4223">token)</text></g><g class="message" data-entity-1="part2" data-entity-2="part3" id="msg195"><polygon fill="#000000" points="653.0594,12029.3494,663.0594,12033.3494,653.0594,12037.3494,657.0594,12033.3494" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="337.7901" x2="659.0594" y1="12033.3494" y2="12033.3494"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="180.2062" x="411.3217" y="11992.1284">Send(UpdateEmailCommand(</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="418.2247" y="12009.8344">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="159.6402" x="424.9847" y="12009.8344">GetAuthenticatedUserId(),</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="66.7681" x="468.0407" y="12027.5404">newEmail))</text></g><path d="M680,12046.3494 L680,12091.3494 L983,12091.3494 L983,12056.3494 L973,12046.3494 L680,12046.3494" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M973,12046.3494 L973,12056.3494 L983,12056.3494 L973,12046.3494" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="282.9713" x="686" y="12065.2464">ValidationBehavior runs UpdateEmailValidator</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="211.5882" x="686" y="12082.9524">(same format rules as registration)</text><path d="M26,12103.7614 L87.5588,12103.7614 L87.5588,12113.4675 L77.5588,12123.4675 L26,12123.4675 L26,12103.7614" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="1184.5984" style="stroke:#000000;stroke-width:1;" width="4439.9953" x="26" y="12103.7614"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="16.5588" x="41" y="12118.6584">alt</text><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="88.4862" x="102.5588" y="12117.5203">[Validation fails]</text><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg196"><polygon fill="#000000" points="348.7901,12160.8795,338.7901,12164.8795,348.7901,12168.8795,344.7901,12164.8795" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="342.7901" x2="664.0594" y1="12164.8795" y2="12164.8795"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="42.406" x="480.2217" y="12141.3645">throws</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="223.3662" x="389.7417" y="12159.0705">FluentValidation.ValidationException</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg197"><polygon fill="#000000" points="85.3089,12192.5855,75.3089,12196.5855,85.3089,12200.5855,81.3089,12196.5855" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="12196.5855" y2="12196.5855"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="149.797" y="12190.7765">400</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="172.105" y="12190.7765">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="23.738" x="175.485" y="12190.7765">Bad</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="199.223" y="12190.7765">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="49.6991" x="202.603" y="12190.7765">Request</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="26" x2="4465.9953" y1="12205.5855" y2="12205.5855"/><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="115.6862" x="31" y="12217.3444">[Validation succeeds]</text><g class="message" data-entity-1="part3" data-entity-2="part10" id="msg198"><polygon fill="#000000" points="2136.2098,12241.2734,2146.2098,12245.2734,2136.2098,12249.2734,2140.2098,12245.2734" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="675.0594" x2="2142.2098" y1="12245.2734" y2="12245.2734"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="113.1781" x="1355.0455" y="12239.4644">Handle(command)</text></g><g class="message" data-entity-1="part10" data-entity-2="part14" id="msg199"><polygon fill="#000000" points="2942.7814,12272.9794,2952.7814,12276.9794,2942.7814,12280.9794,2946.7814,12276.9794" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2158.2098" x2="2948.7814" y1="12276.9794" y2="12276.9794"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="185.6272" x="2463.682" y="12271.1704">FindByIdAsync(userAccountId)</text></g><g class="message" data-entity-1="part14" data-entity-2="part20" id="msg200"><polygon fill="#000000" points="4058.9694,12304.6854,4068.9694,12308.6854,4058.9694,12312.6854,4062.9694,12308.6854" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2964.7814" x2="4064.9694" y1="12308.6854" y2="12308.6854"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="185.6272" x="3425.0618" y="12302.8764">FindByIdAsync(userAccountId)</text></g><g class="message" data-entity-1="part20" data-entity-2="part22" id="msg201"><polygon fill="#000000" points="4395.1205,12336.3915,4405.1205,12340.3915,4395.1205,12344.3915,4399.1205,12340.3915" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="4070.9694" x2="4401.1205" y1="12340.3915" y2="12340.3915"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="43.8491" x="4210.2044" y="12334.5825">SELECT</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4254.0535" y="12334.5825">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="10.452" x="4257.4335" y="12334.5825">...</text></g><g class="message" data-entity-1="part20" data-entity-2="part14" id="msg202"><polygon fill="#000000" points="2975.7814,12368.0975,2965.7814,12372.0975,2975.7814,12376.0975,2971.7814,12372.0975" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2969.7814" x2="4069.9694" y1="12372.0975" y2="12372.0975"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="96.9151" x="3448.0328" y="12366.2885">ApplicationUser</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3544.9479" y="12366.2885">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.234" x="3548.3279" y="12366.2885">or</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3561.5619" y="12366.2885">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.776" x="3564.942" y="12366.2885">null</text></g><g class="message" data-entity-1="part14" data-entity-2="part10" id="msg203"><polygon fill="#000000" points="2169.2098,12399.8035,2159.2098,12403.8035,2169.2098,12407.8035,2165.2098,12403.8035" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2163.2098" x2="2958.7814" y1="12403.8035" y2="12403.8035"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="96.9151" x="2489.153" y="12397.9945">ApplicationUser</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2586.0681" y="12397.9945">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.234" x="2589.4481" y="12397.9945">or</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2602.6821" y="12397.9945">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.776" x="2606.0621" y="12397.9945">null</text></g><path d="M36,12418.8035 L97.5588,12418.8035 L97.5588,12428.5095 L87.5588,12438.5095 L36,12438.5095 L36,12418.8035" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="862.5563" style="stroke:#000000;stroke-width:1;" width="4419.9953" x="36" y="12418.8035"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="16.5588" x="51" y="12433.7005">alt</text><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="108.836" x="112.5588" y="12432.5624">[Account not found]</text><g class="message" data-entity-1="part10" data-entity-2="part3" id="msg204"><polygon fill="#000000" points="686.0594,12458.2155,676.0594,12462.2155,686.0594,12466.2155,682.0594,12462.2155" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="680.0594" x2="2147.2098" y1="12462.2155" y2="12462.2155"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.179" x="1331.4895" y="12456.4065">throw</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1367.6685" y="12456.4065">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="120.7311" x="1371.0485" y="12456.4065">NotFoundException</text></g><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg205"><polygon fill="#000000" points="348.7901,12489.9215,338.7901,12493.9215,348.7901,12497.9215,344.7901,12493.9215" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="342.7901" x2="664.0594" y1="12493.9215" y2="12493.9215"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="63.83" x="469.5097" y="12488.1125">propagate</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg206"><polygon fill="#000000" points="85.3089,12521.6276,75.3089,12525.6276,85.3089,12529.6276,81.3089,12525.6276" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="12525.6276" y2="12525.6276"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="155.959" y="12519.8186">404</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="178.267" y="12519.8186">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.438" x="181.647" y="12519.8186">Not</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="204.085" y="12519.8186">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="38.675" x="207.465" y="12519.8186">Found</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="36" x2="4455.9953" y1="12534.6276" y2="12534.6276"/><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="87.5209" x="41" y="12546.3865">[Account found]</text><g class="message" data-entity-1="part10" data-entity-2="part14" id="msg207"><polygon fill="#000000" points="2942.7814,12570.3155,2952.7814,12574.3155,2942.7814,12578.3155,2946.7814,12574.3155" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2158.2098" x2="2948.7814" y1="12574.3155" y2="12574.3155"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="122.3301" x="2462.2065" y="12568.5065">SetEmailAsync(user,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2584.5366" y="12568.5065">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="62.8681" x="2587.9166" y="12568.5065">newEmail)</text></g><g class="message" data-entity-1="part14" data-entity-2="part20" id="msg208"><polygon fill="#000000" points="4058.9694,12602.0215,4068.9694,12606.0215,4058.9694,12610.0215,4062.9694,12606.0215" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2964.7814" x2="4064.9694" y1="12606.0215" y2="12606.0215"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="176.8002" x="3429.4753" y="12600.2125">FindByEmailAsync(newEmail)</text></g><path d="M2969,12619.0215 L2969,12699.0215 L3185,12699.0215 L3185,12629.0215 L3175,12619.0215 L2969,12619.0215" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M3175,12619.0215 L3175,12629.0215 L3185,12629.0215 L3175,12619.0215" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="183.4172" x="2975" y="12637.9185">Uniqueness check. Also resets</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="179.0621" x="2975" y="12655.6245">user.EmailConfirmed = false -</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="179.2572" x="2975" y="12673.3305">the caller must re-confirm via</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="195.0652" x="2975" y="12691.0365">POST /api/auth/confirm/resend.</text><g class="message" data-entity-1="part14" data-entity-2="part20" id="msg209"><polygon fill="#000000" points="4058.9694,12724.5516,4068.9694,12728.5516,4058.9694,12732.5516,4062.9694,12728.5516" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2964.7814" x2="4064.9694" y1="12728.5516" y2="12728.5516"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="115.0111" x="3460.3699" y="12722.7426">UpdateAsync(user)</text></g><g class="message" data-entity-1="part20" data-entity-2="part22" id="msg210"><polygon fill="#000000" points="4395.1205,12773.9636,4405.1205,12777.9636,4395.1205,12781.9636,4399.1205,12777.9636" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="4070.9694" x2="4401.1205" y1="12777.9636" y2="12777.9636"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="49.621" x="4159.9529" y="12754.4486">UPDATE</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4209.5739" y="12754.4486">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="105.1831" x="4212.9539" y="12754.4486">dbo.UserAccount</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="21.593" x="4171.5749" y="12772.1546">SET</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4193.1679" y="12772.1546">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="33.384" x="4196.5479" y="12772.1546">Email</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4229.9319" y="12772.1546">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="7.436" x="4233.3119" y="12772.1546">=</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4240.7479" y="12772.1546">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="48.5551" x="4244.1279" y="12772.1546">@Email,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4292.683" y="12772.1546">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="10.452" x="4296.063" y="12772.1546">...</text></g><g class="message" data-entity-1="part20" data-entity-2="part22" id="msg211"><polygon fill="#000000" points="4395.1205,12841.0816,4405.1205,12845.0816,4395.1205,12849.0816,4399.1205,12845.0816" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="4070.9694" x2="4401.1205" y1="12845.0816" y2="12845.0816"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="45.2141" x="4196.3594" y="12803.8606">DELETE</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4241.5734" y="12803.8606">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.7771" x="4244.9534" y="12803.8606">FROM</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="124.9301" x="4176.5799" y="12821.5666">dbo.UserVerification</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="44.2651" x="4150.2094" y="12839.2726">WHERE</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4194.4744" y="12839.2726">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="91.7411" x="4197.8544" y="12839.2726">UserAccountID</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4289.5955" y="12839.2726">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="7.436" x="4292.9755" y="12839.2726">=</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4300.4115" y="12839.2726">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="24.089" x="4303.7915" y="12839.2726">@Id</text></g><g class="message" data-entity-1="part20" data-entity-2="part14" id="msg212"><polygon fill="#000000" points="2975.7814,12872.7877,2965.7814,12876.7877,2975.7814,12880.7877,2971.7814,12876.7877" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2969.7814" x2="4069.9694" y1="12876.7877" y2="12876.7877"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="84.8641" x="3475.4434" y="12870.9787">IdentityResult</text></g><g class="message" data-entity-1="part14" data-entity-2="part10" id="msg213"><polygon fill="#000000" points="2169.2098,12904.4937,2159.2098,12908.4937,2169.2098,12912.4937,2165.2098,12908.4937" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2163.2098" x2="2958.7814" y1="12908.4937" y2="12908.4937"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="84.8641" x="2516.5636" y="12902.6847">IdentityResult</text></g><path d="M46,12923.4937 L107.5588,12923.4937 L107.5588,12933.1997 L97.5588,12943.1997 L46,12943.1997 L46,12923.4937" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="350.8661" style="stroke:#000000;stroke-width:1;" width="2202.7045" x="46" y="12923.4937"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="16.5588" x="61" y="12938.3907">alt</text><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="104.8375" x="122.5588" y="12937.2526">[!result.Succeeded]</text><g class="message" data-entity-1="part10" data-entity-2="part3" id="msg214"><polygon fill="#000000" points="686.0594,12998.3177,676.0594,13002.3177,686.0594,13006.3177,682.0594,13002.3177" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="680.0594" x2="2147.2098" y1="13002.3177" y2="13002.3177"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.179" x="1338.932" y="12961.0967">throw</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1375.1111" y="12961.0967">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="105.8461" x="1378.4911" y="12961.0967">ConflictException</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="95.0691" x="1340.193" y="12978.8027">(DuplicateEmail</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1435.2621" y="12978.8027">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="29.432" x="1438.6421" y="12978.8027">code</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1468.0741" y="12978.8027">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="11.622" x="1471.4542" y="12978.8027">-&gt;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="38.688" x="1318.4115" y="12996.5087">"Email</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1357.0996" y="12996.5087">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="48.438" x="1360.4796" y="12996.5087">address</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1408.9176" y="12996.5087">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="45.266" x="1412.2976" y="12996.5087">already</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1457.5636" y="12996.5087">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="43.914" x="1460.9436" y="12996.5087">exists")</text></g><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg215"><polygon fill="#000000" points="348.7901,13030.0238,338.7901,13034.0238,348.7901,13038.0238,344.7901,13034.0238" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="342.7901" x2="664.0594" y1="13034.0238" y2="13034.0238"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="63.83" x="469.5097" y="13028.2148">propagate</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg216"><polygon fill="#000000" points="85.3089,13061.7298,75.3089,13065.7298,85.3089,13069.7298,81.3089,13065.7298" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="13065.7298" y2="13065.7298"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="165.0915" y="13059.9208">409</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="187.3995" y="13059.9208">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="46.228" x="190.7795" y="13059.9208">Conflict</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="46" x2="2248.7045" y1="13074.7298" y2="13074.7298"/><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="101.5348" x="51" y="13086.4887">[result.Succeeded]</text><g class="message" data-entity-1="part10" data-entity-2="part3" id="msg217"><polygon fill="#000000" points="686.0594,13145.8297,676.0594,13149.8297,686.0594,13153.8297,682.0594,13149.8297" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="680.0594" x2="2152.2098" y1="13149.8297" y2="13149.8297"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="130.3901" x="1348.9395" y="13108.6087">UpdateEmailPayload(</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="1352.2415" y="13126.3147">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="46.332" x="1359.0015" y="13126.3147">user.Id,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1405.3336" y="13126.3147">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="67.3141" x="1408.7136" y="13126.3147">user.Email,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="1323.0565" y="13144.0207">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="128.6221" x="1329.8165" y="13144.0207">user.EmailConfirmed</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1458.4386" y="13144.0207">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="7.436" x="1461.8186" y="13144.0207">=</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1469.2547" y="13144.0207">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="32.578" x="1472.6347" y="13144.0207">false)</text></g><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg218"><polygon fill="#000000" points="348.7901,13177.5357,338.7901,13181.5357,348.7901,13185.5357,344.7901,13181.5357" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="342.7901" x2="669.0594" y1="13181.5357" y2="13181.5357"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="126.4901" x="440.6797" y="13175.7267">UpdateEmailPayload</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg219"><polygon fill="#000000" points="85.3089,13262.3598,75.3089,13266.3598,85.3089,13270.3598,81.3089,13266.3598" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="13266.3598" y2="13266.3598"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="179.1055" y="13207.4327">200</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="201.4135" y="13207.4327">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="18.2" x="204.7935" y="13207.4327">OK</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="62.985" x="121.1645" y="13225.1388">{message:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="184.1495" y="13225.1388">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="38.688" x="187.5295" y="13225.1388">"Email</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="226.2175" y="13225.1388">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="51.3371" x="229.5975" y="13225.1388">updated</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="84.6431" x="158.728" y="13242.8448">successfully.",</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="51.909" x="160.769" y="13260.5508">payload:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="212.678" y="13260.5508">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="25.272" x="216.058" y="13260.5508">{...}}</text></g><rect fill="#FFFFFF" height="3" style="stroke:#FFFFFF;stroke-width:1;" width="4480.9953" x="5" y="13317.2128"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="4485.9953" y1="13317.2128" y2="13317.2128"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="4485.9953" y1="13320.2128" y2="13320.2128"/><rect fill="#FFFFFF" height="25.706" style="stroke:#000000;stroke-width:1;" width="163.5066" x="2163.7444" y="13305.3598"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="146.1266" x="2169.7444" y="13323.2568">Update Password Flow</text><g class="message" data-entity-1="part1" data-entity-2="part2" id="msg220"><polygon fill="#000000" points="315.7901,13413.8899,325.7901,13417.8899,315.7901,13421.8899,319.7901,13417.8899" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="74.3089" x2="321.7901" y1="13417.8899" y2="13417.8899"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="41.249" x="118.5385" y="13358.9628">PATCH</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="159.7875" y="13358.9628">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="120.3931" x="163.1675" y="13358.9628">/api/auth/password</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="112.5541" x="144.7725" y="13376.6688">{currentPassword,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="89.5831" x="156.258" y="13394.3749">newPassword}</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="54.912" x="108.7885" y="13412.0809">(requires</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="163.7005" y="13412.0809">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="41.145" x="167.0805" y="13412.0809">Bearer</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="208.2255" y="13412.0809">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="39.559" x="211.6055" y="13412.0809">access</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="251.1646" y="13412.0809">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="38.766" x="254.5446" y="13412.0809">token)</text></g><g class="message" data-entity-1="part2" data-entity-2="part3" id="msg221"><polygon fill="#000000" points="653.0594,13498.7139,663.0594,13502.7139,653.0594,13506.7139,657.0594,13502.7139" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="337.7901" x2="659.0594" y1="13502.7139" y2="13502.7139"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="205.8812" x="398.4842" y="13443.7869">Send(UpdatePasswordCommand(</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="418.2247" y="13461.4929">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="159.6402" x="424.9847" y="13461.4929">GetAuthenticatedUserId(),</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="444.2377" y="13479.1989">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="107.6141" x="450.9977" y="13479.1989">currentPassword,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="92.4431" x="455.2032" y="13496.9049">newPassword))</text></g><path d="M680,13515.7139 L680,13560.7139 L1009,13560.7139 L1009,13525.7139 L999,13515.7139 L680,13515.7139" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M999,13515.7139 L999,13525.7139 L1009,13525.7139 L999,13515.7139" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="308.6462" x="686" y="13534.611">ValidationBehavior runs UpdatePasswordValidator</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="284.6873" x="686" y="13552.317">(same password strength rules as registration)</text><path d="M26,13573.126 L87.5588,13573.126 L87.5588,13582.832 L77.5588,13592.832 L26,13592.832 L26,13573.126" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="1548.7403" style="stroke:#000000;stroke-width:1;" width="4449.9953" x="26" y="13573.126"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="16.5588" x="41" y="13588.023">alt</text><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="88.4862" x="102.5588" y="13586.8849">[Validation fails]</text><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg222"><polygon fill="#000000" points="348.7901,13630.244,338.7901,13634.244,348.7901,13638.244,344.7901,13634.244" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="342.7901" x2="664.0594" y1="13634.244" y2="13634.244"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="42.406" x="480.2217" y="13610.729">throws</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="223.3662" x="389.7417" y="13628.435">FluentValidation.ValidationException</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg223"><polygon fill="#000000" points="85.3089,13661.95,75.3089,13665.95,85.3089,13669.95,81.3089,13665.95" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="13665.95" y2="13665.95"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="149.797" y="13660.141">400</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="172.105" y="13660.141">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="23.738" x="175.485" y="13660.141">Bad</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="199.223" y="13660.141">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="49.6991" x="202.603" y="13660.141">Request</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="26" x2="4475.9953" y1="13674.95" y2="13674.95"/><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="115.6862" x="31" y="13686.709">[Validation succeeds]</text><g class="message" data-entity-1="part3" data-entity-2="part11" id="msg224"><polygon fill="#000000" points="2331.0242,13710.6379,2341.0242,13714.6379,2331.0242,13718.6379,2335.0242,13714.6379" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="675.0594" x2="2337.0242" y1="13714.6379" y2="13714.6379"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="113.1781" x="1452.4528" y="13708.8289">Handle(command)</text></g><g class="message" data-entity-1="part11" data-entity-2="part14" id="msg225"><polygon fill="#000000" points="2942.7814,13742.344,2952.7814,13746.344,2942.7814,13750.344,2946.7814,13746.344" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2353.0242" x2="2948.7814" y1="13746.344" y2="13746.344"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="185.6272" x="2561.0892" y="13740.535">FindByIdAsync(userAccountId)</text></g><g class="message" data-entity-1="part14" data-entity-2="part20" id="msg226"><polygon fill="#000000" points="4058.9694,13774.05,4068.9694,13778.05,4058.9694,13782.05,4062.9694,13778.05" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2964.7814" x2="4064.9694" y1="13778.05" y2="13778.05"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="185.6272" x="3425.0618" y="13772.241">FindByIdAsync(userAccountId)</text></g><g class="message" data-entity-1="part20" data-entity-2="part14" id="msg227"><polygon fill="#000000" points="2975.7814,13805.756,2965.7814,13809.756,2975.7814,13813.756,2971.7814,13809.756" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2969.7814" x2="4069.9694" y1="13809.756" y2="13809.756"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="96.9151" x="3448.0328" y="13803.947">ApplicationUser</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3544.9479" y="13803.947">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.234" x="3548.3279" y="13803.947">or</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3561.5619" y="13803.947">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.776" x="3564.942" y="13803.947">null</text></g><g class="message" data-entity-1="part14" data-entity-2="part11" id="msg228"><polygon fill="#000000" points="2364.0242,13837.462,2354.0242,13841.462,2364.0242,13845.462,2360.0242,13841.462" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2358.0242" x2="2958.7814" y1="13841.462" y2="13841.462"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="96.9151" x="2586.5603" y="13835.653">ApplicationUser</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2683.4753" y="13835.653">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.234" x="2686.8553" y="13835.653">or</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2700.0894" y="13835.653">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.776" x="2703.4694" y="13835.653">null</text></g><path d="M36,13856.462 L97.5588,13856.462 L97.5588,13866.168 L87.5588,13876.168 L36,13876.168 L36,13856.462" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="1258.4043" style="stroke:#000000;stroke-width:1;" width="4429.9953" x="36" y="13856.462"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="16.5588" x="51" y="13871.359">alt</text><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="108.836" x="112.5588" y="13870.2209">[Account not found]</text><g class="message" data-entity-1="part11" data-entity-2="part3" id="msg229"><polygon fill="#000000" points="686.0594,13895.874,676.0594,13899.874,686.0594,13903.874,682.0594,13899.874" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="680.0594" x2="2342.0242" y1="13899.874" y2="13899.874"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.179" x="1428.8967" y="13894.065">throw</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1465.0758" y="13894.065">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="120.7311" x="1468.4558" y="13894.065">NotFoundException</text></g><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg230"><polygon fill="#000000" points="348.7901,13927.5801,338.7901,13931.5801,348.7901,13935.5801,344.7901,13931.5801" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="342.7901" x2="664.0594" y1="13931.5801" y2="13931.5801"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="63.83" x="469.5097" y="13925.7711">propagate</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg231"><polygon fill="#000000" points="85.3089,13959.2861,75.3089,13963.2861,85.3089,13967.2861,81.3089,13963.2861" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="13963.2861" y2="13963.2861"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="155.959" y="13957.4771">404</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="178.267" y="13957.4771">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.438" x="181.647" y="13957.4771">Not</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="204.085" y="13957.4771">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="38.675" x="207.465" y="13957.4771">Found</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="36" x2="4465.9953" y1="13972.2861" y2="13972.2861"/><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="87.5209" x="41" y="13984.045">[Account found]</text><g class="message" data-entity-1="part11" data-entity-2="part14" id="msg232"><polygon fill="#000000" points="2942.7814,14043.386,2952.7814,14047.386,2942.7814,14051.386,2946.7814,14047.386" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2353.0242" x2="2948.7814" y1="14047.386" y2="14047.386"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="145.3011" x="2581.2523" y="14006.165">ChangePasswordAsync(</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="2579.8028" y="14023.871">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="30.446" x="2586.5628" y="14023.871">user,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2617.0088" y="14023.871">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="107.6141" x="2620.3888" y="14023.871">currentPassword,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="88.5431" x="2609.6313" y="14041.577">newPassword)</text></g><g class="message" data-entity-1="part14" data-entity-2="part16" id="msg233"><polygon fill="#000000" points="3346.0191,14110.5041,3356.0191,14114.5041,3346.0191,14118.5041,3350.0191,14114.5041" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2964.7814" x2="3352.0191" y1="14114.5041" y2="14114.5041"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="144.4301" x="3089.1852" y="14073.283">VerifyHashedPassword(</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="3079.0192" y="14090.989">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="30.446" x="3085.7792" y="14090.989">user,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3116.2252" y="14090.989">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="124.1761" x="3119.6052" y="14090.989">user.PasswordHash,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="108.0301" x="3107.3852" y="14108.6951">currentPassword)</text></g><g class="message" data-entity-1="part16" data-entity-2="part14" id="msg234"><polygon fill="#000000" points="2975.7814,14142.2101,2965.7814,14146.2101,2975.7814,14150.2101,2971.7814,14146.2101" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2969.7814" x2="3362.0191" y1="14146.2101" y2="14146.2101"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="88.3481" x="3119.7262" y="14140.4011">Success/Failed</text></g><path d="M2238.7045,14161.2101 L2300.2633,14161.2101 L2300.2633,14170.9161 L2290.2633,14180.9161 L2238.7045,14180.9161 L2238.7045,14161.2101" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="505.1022" style="stroke:#000000;stroke-width:1;" width="2217.2908" x="2238.7045" y="14161.2101"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="16.5588" x="2253.7045" y="14176.1071">alt</text><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="162.3397" x="2315.2633" y="14174.969">[Current password mismatch]</text><g class="message" data-entity-1="part14" data-entity-2="part11" id="msg235"><polygon fill="#000000" points="2364.0242,14218.3281,2354.0242,14222.3281,2364.0242,14226.3281,2360.0242,14222.3281" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2358.0242" x2="2953.7814" y1="14222.3281" y2="14222.3281"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="124.4231" x="2591.6913" y="14198.8131">IdentityResult.Failed</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="126.6461" x="2590.5798" y="14216.5191">(PasswordMismatch)</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2238.7045" x2="4455.9953" y1="14231.3281" y2="14231.3281"/><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="155.077" x="2243.7045" y="14243.087">[Current password matches]</text><g class="message" data-entity-1="part14" data-entity-2="part16" id="msg236"><polygon fill="#000000" points="3346.0191,14284.7221,3356.0191,14288.7221,3346.0191,14292.7221,3350.0191,14288.7221" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2964.7814" x2="3352.0191" y1="14288.7221" y2="14288.7221"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="124.5921" x="3099.1042" y="14265.207">HashPassword(user,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="88.5431" x="3117.1287" y="14282.913">newPassword)</text></g><g class="message" data-entity-1="part16" data-entity-2="part14" id="msg237"><polygon fill="#000000" points="2975.7814,14316.4281,2965.7814,14320.4281,2975.7814,14324.4281,2971.7814,14320.4281" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2969.7814" x2="3362.0191" y1="14320.4281" y2="14320.4281"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="25.584" x="3134.6243" y="14314.6191">new</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3160.2083" y="14314.6191">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="29.588" x="3163.5883" y="14314.6191">hash</text></g><g class="message" data-entity-1="part14" data-entity-2="part20" id="msg238"><polygon fill="#000000" points="4053.9694,14365.8401,4063.9694,14369.8401,4053.9694,14373.8401,4057.9694,14369.8401" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2964.7814" x2="4059.9694" y1="14369.8401" y2="14369.8401"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="179.1922" x="3425.7793" y="14346.3251">SetPasswordHashAsync(user,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="60.6711" x="3485.0399" y="14364.0311">newHash)</text></g><g class="message" data-entity-1="part20" data-entity-2="part22" id="msg239"><polygon fill="#000000" points="4395.1205,14468.3702,4405.1205,14472.3702,4395.1205,14476.3702,4399.1205,14472.3702" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="4075.9694" x2="4401.1205" y1="14472.3702" y2="14472.3702"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="49.621" x="4155.6734" y="14395.7371">UPDATE</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4205.2944" y="14395.7371">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="118.7421" x="4208.6744" y="14395.7371">dbo.UserCredential</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="21.593" x="4145.4294" y="14413.4431">SET</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4167.0224" y="14413.4431">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="62.79" x="4170.4024" y="14413.4431">IsRevoked</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4233.1924" y="14413.4431">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="7.436" x="4236.5724" y="14413.4431">=</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4244.0084" y="14413.4431">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="10.92" x="4247.3884" y="14413.4431">1,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4258.3085" y="14413.4431">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="65.1561" x="4261.6885" y="14413.4431">RevokedAt</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4326.8445" y="14413.4431">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="7.436" x="4330.2245" y="14413.4431">=</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="63.9731" x="4209.5584" y="14431.1491">GETDATE()</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="44.2651" x="4153.4568" y="14448.8552">WHERE</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4197.7219" y="14448.8552">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="90.2461" x="4201.1019" y="14448.8552">UserAccountId</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4291.348" y="14448.8552">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="7.436" x="4294.728" y="14448.8552">=</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4302.164" y="14448.8552">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="24.089" x="4305.544" y="14448.8552">@Id</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="27.677" x="4183.8054" y="14466.5612">AND</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4211.4824" y="14466.5612">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="62.79" x="4214.8624" y="14466.5612">IsRevoked</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4277.6525" y="14466.5612">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="7.436" x="4281.0325" y="14466.5612">=</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4288.4685" y="14466.5612">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="7.436" x="4291.8485" y="14466.5612">0</text></g><g class="message" data-entity-1="part20" data-entity-2="part22" id="msg240"><polygon fill="#000000" points="4395.1205,14535.4882,4405.1205,14539.4882,4395.1205,14543.4882,4399.1205,14539.4882" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="4075.9694" x2="4401.1205" y1="14539.4882" y2="14539.4882"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="43.966" x="4202.0379" y="14498.2672">INSERT</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4246.0039" y="14498.2672">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="31.668" x="4249.3839" y="14498.2672">INTO</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="118.7421" x="4182.1739" y="14515.9732">dbo.UserCredential</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="97.6301" x="4173.4964" y="14533.6792">(UserAccountId,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4271.1265" y="14533.6792">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="35.087" x="4274.5065" y="14533.6792">Hash)</text></g><path d="M4080,14552.4882 L4080,14597.4882 L4318,14597.4882 L4318,14562.4882 L4308,14552.4882 L4080,14552.4882" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M4308,14552.4882 L4308,14562.4882 L4318,14562.4882 L4308,14552.4882" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="212.9662" x="4086" y="14571.3852">Revoke-then-insert runs inside one</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="217.3212" x="4086" y="14589.0913">DbTransaction (credential rotation).</text><g class="message" data-entity-1="part20" data-entity-2="part14" id="msg241"><polygon fill="#000000" points="2975.7814,14622.6063,2965.7814,14626.6063,2975.7814,14630.6063,2971.7814,14626.6063" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2969.7814" x2="4069.9694" y1="14626.6063" y2="14626.6063"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="33.618" x="3501.0664" y="14620.7973">(void)</text></g><g class="message" data-entity-1="part14" data-entity-2="part11" id="msg242"><polygon fill="#000000" points="2364.0242,14654.3123,2354.0242,14658.3123,2364.0242,14662.3123,2360.0242,14658.3123" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2358.0242" x2="2953.7814" y1="14658.3123" y2="14658.3123"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="135.7851" x="2586.0103" y="14652.5033">IdentityResult.Success</text></g><path d="M46,14680.3123 L107.5588,14680.3123 L107.5588,14690.0183 L97.5588,14700.0183 L46,14700.0183 L46,14680.3123" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="427.554" style="stroke:#000000;stroke-width:1;" width="2411.3439" x="46" y="14680.3123"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="16.5588" x="61" y="14695.2093">alt</text><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="169.5529" x="122.5588" y="14694.0712">[Current password is incorrect]</text><g class="message" data-entity-1="part11" data-entity-2="part3" id="msg243"><polygon fill="#000000" points="686.0594,14737.4303,676.0594,14741.4303,686.0594,14745.4303,682.0594,14741.4303" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="680.0594" x2="2342.0242" y1="14741.4303" y2="14741.4303"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.179" x="1417.6452" y="14717.9153">throw</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1453.8243" y="14717.9153">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="143.2341" x="1457.2043" y="14717.9153">UnauthorizedException</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="52.351" x="1413.5112" y="14735.6213">"Current</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1465.8623" y="14735.6213">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="59.189" x="1469.2423" y="14735.6213">password</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1528.4313" y="14735.6213">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="9.581" x="1531.8113" y="14735.6213">is</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1541.3923" y="14735.6213">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="59.8" x="1544.7723" y="14735.6213">incorrect"</text></g><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg244"><polygon fill="#000000" points="348.7901,14769.1364,338.7901,14773.1364,348.7901,14777.1364,344.7901,14773.1364" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="342.7901" x2="664.0594" y1="14773.1364" y2="14773.1364"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="63.83" x="469.5097" y="14767.3274">propagate</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg245"><polygon fill="#000000" points="85.3089,14800.8424,75.3089,14804.8424,85.3089,14808.8424,81.3089,14804.8424" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="14804.8424" y2="14804.8424"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="146.3975" y="14799.0334">401</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="168.7055" y="14799.0334">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="83.6161" x="172.0855" y="14799.0334">Unauthorized</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="46" x2="2457.3439" y1="14813.8424" y2="14813.8424"/><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="183.3165" x="51" y="14825.6013">[!result.Succeeded (other failure)]</text><g class="message" data-entity-1="part11" data-entity-2="part3" id="msg246"><polygon fill="#000000" points="686.0594,14849.5303,676.0594,14853.5303,686.0594,14857.5303,682.0594,14853.5303" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="680.0594" x2="2342.0242" y1="14853.5303" y2="14853.5303"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.179" x="1436.3392" y="14847.7213">throw</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1472.5183" y="14847.7213">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="105.8461" x="1475.8983" y="14847.7213">ConflictException</text></g><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg247"><polygon fill="#000000" points="348.7901,14881.2363,338.7901,14885.2363,348.7901,14889.2363,344.7901,14885.2363" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="342.7901" x2="664.0594" y1="14885.2363" y2="14885.2363"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="63.83" x="469.5097" y="14879.4273">propagate</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg248"><polygon fill="#000000" points="85.3089,14912.9423,75.3089,14916.9423,85.3089,14920.9423,81.3089,14916.9423" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="14916.9423" y2="14916.9423"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="165.0915" y="14911.1333">409</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="187.3995" y="14911.1333">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="46.228" x="190.7795" y="14911.1333">Conflict</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="46" x2="2457.3439" y1="14925.9423" y2="14925.9423"/><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="101.5348" x="51" y="14937.7012">[result.Succeeded]</text><g class="message" data-entity-1="part11" data-entity-2="part3" id="msg249"><polygon fill="#000000" points="686.0594,14979.3362,676.0594,14983.3362,686.0594,14987.3362,682.0594,14983.3362" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="680.0594" x2="2347.0242" y1="14983.3362" y2="14983.3362"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="156.0651" x="1433.5093" y="14959.8212">UpdatePasswordPayload(</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="1425.9757" y="14977.5272">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="46.332" x="1432.7357" y="14977.5272">user.Id,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1479.0678" y="14977.5272">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="114.6601" x="1482.4478" y="14977.5272">DateTime.UtcNow)</text></g><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg250"><polygon fill="#000000" points="348.7901,15011.0423,338.7901,15015.0423,348.7901,15019.0423,344.7901,15015.0423" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="342.7901" x2="669.0594" y1="15015.0423" y2="15015.0423"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="152.1651" x="427.8422" y="15009.2333">UpdatePasswordPayload</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg251"><polygon fill="#000000" points="85.3089,15095.8663,75.3089,15099.8663,85.3089,15103.8663,81.3089,15099.8663" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="15099.8663" y2="15099.8663"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="179.1055" y="15040.9393">200</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="201.4135" y="15040.9393">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="18.2" x="204.7935" y="15040.9393">OK</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="62.985" x="108.327" y="15058.6453">{message:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="171.312" y="15058.6453">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="64.363" x="174.692" y="15058.6453">"Password</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="239.055" y="15058.6453">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="51.3371" x="242.4351" y="15058.6453">updated</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="84.6431" x="158.728" y="15076.3513">successfully.",</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="51.909" x="160.769" y="15094.0573">payload:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="212.678" y="15094.0573">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="25.272" x="216.058" y="15094.0573">{...}}</text></g><rect fill="#FFFFFF" height="3" style="stroke:#FFFFFF;stroke-width:1;" width="4480.9953" x="5" y="15150.7193"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="4485.9953" y1="15150.7193" y2="15150.7193"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="4485.9953" y1="15153.7193" y2="15153.7193"/><rect fill="#FFFFFF" height="25.706" style="stroke:#000000;stroke-width:1;" width="143.6523" x="2173.6715" y="15138.8663"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="126.2723" x="2179.6715" y="15156.7633">Update Profile Flow</text><g class="message" data-entity-1="part1" data-entity-2="part2" id="msg252"><polygon fill="#000000" points="315.7901,15247.3964,325.7901,15251.3964,315.7901,15255.3964,319.7901,15251.3964" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="74.3089" x2="321.7901" y1="15251.3964" y2="15251.3964"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="41.249" x="128.2625" y="15192.4694">PATCH</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="169.5115" y="15192.4694">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="100.9451" x="172.8915" y="15192.4694">/api/auth/profile</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="69.1991" x="133.9045" y="15210.1754">{firstName,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="203.1035" y="15210.1754">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="61.711" x="206.4835" y="15210.1754">lastName,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="76.7781" x="162.6605" y="15227.8814">dateOfBirth}</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="54.912" x="108.7885" y="15245.5874">(requires</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="163.7005" y="15245.5874">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="41.145" x="167.0805" y="15245.5874">Bearer</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="208.2255" y="15245.5874">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="39.559" x="211.6055" y="15245.5874">access</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="251.1646" y="15245.5874">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="38.766" x="254.5446" y="15245.5874">token)</text></g><g class="message" data-entity-1="part2" data-entity-2="part3" id="msg253"><polygon fill="#000000" points="653.0594,15332.2205,663.0594,15336.2205,653.0594,15340.2205,657.0594,15336.2205" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="337.7901" x2="659.0594" y1="15336.2205" y2="15336.2205"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="186.4332" x="408.2082" y="15277.2934">Send(UpdateProfileCommand(</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="418.2247" y="15294.9994">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="159.6402" x="424.9847" y="15294.9994">GetAuthenticatedUserId(),</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="433.3697" y="15312.7055">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="64.259" x="440.1297" y="15312.7055">firstName,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="504.3888" y="15312.7055">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="61.711" x="507.7688" y="15312.7055">lastName,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="79.6381" x="461.6057" y="15330.4115">dateOfBirth))</text></g><path d="M680,15349.2205 L680,15394.2205 L990,15394.2205 L990,15359.2205 L980,15349.2205 L680,15349.2205" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M980,15349.2205 L980,15359.2205 L990,15359.2205 L980,15349.2205" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="289.1982" x="686" y="15368.1175">ValidationBehavior runs UpdateProfileValidator</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="282.7242" x="686" y="15385.8235">(same name/DateOfBirth rules as registration)</text><path d="M26,15406.6325 L87.5588,15406.6325 L87.5588,15416.3385 L77.5588,15426.3385 L26,15426.3385 L26,15406.6325" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="1151.8923" style="stroke:#000000;stroke-width:1;" width="4439.9953" x="26" y="15406.6325"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="16.5588" x="41" y="15421.5295">alt</text><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="88.4862" x="102.5588" y="15420.3914">[Validation fails]</text><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg254"><polygon fill="#000000" points="348.7901,15463.7506,338.7901,15467.7506,348.7901,15471.7506,344.7901,15467.7506" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="342.7901" x2="664.0594" y1="15467.7506" y2="15467.7506"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="42.406" x="480.2217" y="15444.2355">throws</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="223.3662" x="389.7417" y="15461.9416">FluentValidation.ValidationException</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg255"><polygon fill="#000000" points="85.3089,15495.4566,75.3089,15499.4566,85.3089,15503.4566,81.3089,15499.4566" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="15499.4566" y2="15499.4566"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="149.797" y="15493.6476">400</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="172.105" y="15493.6476">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="23.738" x="175.485" y="15493.6476">Bad</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="199.223" y="15493.6476">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="49.6991" x="202.603" y="15493.6476">Request</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="26" x2="4465.9953" y1="15508.4566" y2="15508.4566"/><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="115.6862" x="31" y="15520.2155">[Validation succeeds]</text><g class="message" data-entity-1="part3" data-entity-2="part12" id="msg256"><polygon fill="#000000" points="2529.1917,15544.1445,2539.1917,15548.1445,2529.1917,15552.1445,2533.1917,15548.1445" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="675.0594" x2="2535.1917" y1="15548.1445" y2="15548.1445"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="113.1781" x="1551.5365" y="15542.3355">Handle(command)</text></g><g class="message" data-entity-1="part12" data-entity-2="part14" id="msg257"><polygon fill="#000000" points="2942.7814,15575.8505,2952.7814,15579.8505,2942.7814,15583.8505,2946.7814,15579.8505" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2551.1917" x2="2948.7814" y1="15579.8505" y2="15579.8505"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="185.6272" x="2660.1729" y="15574.0415">FindByIdAsync(userAccountId)</text></g><g class="message" data-entity-1="part14" data-entity-2="part20" id="msg258"><polygon fill="#000000" points="4058.9694,15607.5565,4068.9694,15611.5565,4058.9694,15615.5565,4062.9694,15611.5565" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2964.7814" x2="4064.9694" y1="15611.5565" y2="15611.5565"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="185.6272" x="3425.0618" y="15605.7475">FindByIdAsync(userAccountId)</text></g><g class="message" data-entity-1="part20" data-entity-2="part14" id="msg259"><polygon fill="#000000" points="2975.7814,15639.2625,2965.7814,15643.2625,2975.7814,15647.2625,2971.7814,15643.2625" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2969.7814" x2="4069.9694" y1="15643.2625" y2="15643.2625"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="96.9151" x="3448.0328" y="15637.4535">ApplicationUser</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3544.9479" y="15637.4535">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.234" x="3548.3279" y="15637.4535">or</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3561.5619" y="15637.4535">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.776" x="3564.942" y="15637.4535">null</text></g><g class="message" data-entity-1="part14" data-entity-2="part12" id="msg260"><polygon fill="#000000" points="2562.1917,15670.9685,2552.1917,15674.9685,2562.1917,15678.9685,2558.1917,15674.9685" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2556.1917" x2="2958.7814" y1="15674.9685" y2="15674.9685"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="96.9151" x="2685.644" y="15669.1595">ApplicationUser</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2782.5591" y="15669.1595">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.234" x="2785.9391" y="15669.1595">or</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2799.1731" y="15669.1595">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.776" x="2802.5531" y="15669.1595">null</text></g><path d="M36,15689.9685 L97.5588,15689.9685 L97.5588,15699.6746 L87.5588,15709.6746 L36,15709.6746 L36,15689.9685" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="861.5563" style="stroke:#000000;stroke-width:1;" width="4419.9953" x="36" y="15689.9685"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="16.5588" x="51" y="15704.8656">alt</text><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="108.836" x="112.5588" y="15703.7275">[Account not found]</text><g class="message" data-entity-1="part12" data-entity-2="part3" id="msg261"><polygon fill="#000000" points="686.0594,15729.3806,676.0594,15733.3806,686.0594,15737.3806,682.0594,15733.3806" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="680.0594" x2="2540.1917" y1="15733.3806" y2="15733.3806"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.179" x="1527.9805" y="15727.5716">throw</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1564.1595" y="15727.5716">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="120.7311" x="1567.5395" y="15727.5716">NotFoundException</text></g><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg262"><polygon fill="#000000" points="348.7901,15761.0866,338.7901,15765.0866,348.7901,15769.0866,344.7901,15765.0866" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="342.7901" x2="664.0594" y1="15765.0866" y2="15765.0866"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="63.83" x="469.5097" y="15759.2776">propagate</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg263"><polygon fill="#000000" points="85.3089,15792.7926,75.3089,15796.7926,85.3089,15800.7926,81.3089,15796.7926" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="15796.7926" y2="15796.7926"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="155.959" y="15790.9836">404</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="178.267" y="15790.9836">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.438" x="181.647" y="15790.9836">Not</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="204.085" y="15790.9836">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="38.675" x="207.465" y="15790.9836">Found</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="36" x2="4455.9953" y1="15805.7926" y2="15805.7926"/><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="87.5209" x="41" y="15817.5515">[Account found]</text><g class="message" data-entity-1="part12" data-entity-2="part12" id="msg264"><line style="stroke:#000000;stroke-width:1;" x1="2551.1917" x2="2593.1917" y1="15880.8925" y2="15880.8925"/><line style="stroke:#000000;stroke-width:1;" x1="2593.1917" x2="2593.1917" y1="15880.8925" y2="15893.8925"/><line style="stroke:#000000;stroke-width:1;" x1="2552.1917" x2="2593.1917" y1="15893.8925" y2="15893.8925"/><polygon fill="#000000" points="2562.1917,15889.8925,2552.1917,15893.8925,2562.1917,15897.8925,2558.1917,15893.8925" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="93.4961" x="2563.3332" y="15839.6715">user.FirstName</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2656.8293" y="15839.6715">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="7.436" x="2660.2093" y="15839.6715">=</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2667.6453" y="15839.6715">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="10.452" x="2671.0253" y="15839.6715">...</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="92.1311" x="2564.0157" y="15857.3775">user.LastName</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2656.1468" y="15857.3775">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="7.436" x="2659.5268" y="15857.3775">=</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2666.9628" y="15857.3775">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="10.452" x="2670.3428" y="15857.3775">...</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="103.7791" x="2558.1917" y="15875.0835">user.DateOfBirth</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2661.9708" y="15875.0835">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="7.436" x="2665.3508" y="15875.0835">=</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2672.7868" y="15875.0835">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="10.452" x="2676.1668" y="15875.0835">...</text></g><path d="M2556,15906.8925 L2556,15986.8925 L2838,15986.8925 L2838,15916.8925 L2828,15906.8925 L2556,15906.8925" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M2828,15906.8925 L2828,15916.8925 L2838,15916.8925 L2828,15906.8925" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="235.9502" x="2562" y="15925.7896">First/last name and date of birth aren't</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="239.6552" x="2562" y="15943.4956">tracked by any Identity store interface -</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="247.0392" x="2562" y="15961.2016">mutated directly on the ApplicationUser,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="261.6902" x="2562" y="15978.9076">then saved via UserManager.UpdateAsync.</text><g class="message" data-entity-1="part12" data-entity-2="part14" id="msg265"><polygon fill="#000000" points="2942.7814,16012.4226,2952.7814,16016.4226,2942.7814,16020.4226,2946.7814,16016.4226" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2551.1917" x2="2948.7814" y1="16016.4226" y2="16016.4226"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="115.0111" x="2695.481" y="16010.6136">UpdateAsync(user)</text></g><g class="message" data-entity-1="part14" data-entity-2="part20" id="msg266"><polygon fill="#000000" points="4058.9694,16044.1286,4068.9694,16048.1286,4058.9694,16052.1286,4062.9694,16048.1286" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2964.7814" x2="4064.9694" y1="16048.1286" y2="16048.1286"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="115.0111" x="3460.3699" y="16042.3196">UpdateAsync(user)</text></g><g class="message" data-entity-1="part20" data-entity-2="part22" id="msg267"><polygon fill="#000000" points="4395.1205,16146.6587,4405.1205,16150.6587,4395.1205,16154.6587,4399.1205,16150.6587" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="4070.9694" x2="4401.1205" y1="16150.6587" y2="16150.6587"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="49.621" x="4159.9529" y="16074.0257">UPDATE</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4209.5739" y="16074.0257">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="105.1831" x="4212.9539" y="16074.0257">dbo.UserAccount</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="21.593" x="4148.8249" y="16091.7317">SET</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4170.4179" y="16091.7317">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="63.05" x="4173.7979" y="16091.7317">FirstName</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4236.8479" y="16091.7317">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="7.436" x="4240.2279" y="16091.7317">=</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4247.6639" y="16091.7317">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="78.2211" x="4251.044" y="16091.7317">@FirstName,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.52" x="4155.9164" y="16109.4377">&#160;&#160;&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="61.685" x="4169.4364" y="16109.4377">LastName</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4231.1214" y="16109.4377">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="7.436" x="4234.5014" y="16109.4377">=</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4241.9374" y="16109.4377">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="76.8561" x="4245.3174" y="16109.4377">@LastName,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.52" x="4144.2683" y="16127.1437">&#160;&#160;&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="73.3331" x="4157.7884" y="16127.1437">DateOfBirth</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4231.1214" y="16127.1437">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="7.436" x="4234.5014" y="16127.1437">=</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4241.9374" y="16127.1437">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="88.5041" x="4245.3174" y="16127.1437">@DateOfBirth,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="10.452" x="4233.8189" y="16144.8497">...</text></g><g class="message" data-entity-1="part20" data-entity-2="part14" id="msg268"><polygon fill="#000000" points="2975.7814,16178.3647,2965.7814,16182.3647,2975.7814,16186.3647,2971.7814,16182.3647" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2969.7814" x2="4069.9694" y1="16182.3647" y2="16182.3647"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="84.8641" x="3475.4434" y="16176.5557">IdentityResult</text></g><g class="message" data-entity-1="part14" data-entity-2="part12" id="msg269"><polygon fill="#000000" points="2562.1917,16210.0708,2552.1917,16214.0708,2562.1917,16218.0708,2558.1917,16214.0708" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2556.1917" x2="2958.7814" y1="16214.0708" y2="16214.0708"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="84.8641" x="2713.0545" y="16208.2618">IdentityResult</text></g><path d="M46,16229.0708 L107.5588,16229.0708 L107.5588,16238.7768 L97.5588,16248.7768 L46,16248.7768 L46,16229.0708" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="315.4541" style="stroke:#000000;stroke-width:1;" width="2599.0394" x="46" y="16229.0708"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="16.5588" x="61" y="16243.9678">alt</text><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="104.8375" x="122.5588" y="16242.8297">[!result.Succeeded]</text><g class="message" data-entity-1="part12" data-entity-2="part3" id="msg270"><polygon fill="#000000" points="686.0594,16268.4828,676.0594,16272.4828,686.0594,16276.4828,682.0594,16272.4828" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="680.0594" x2="2540.1917" y1="16272.4828" y2="16272.4828"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.179" x="1535.423" y="16266.6738">throw</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1571.602" y="16266.6738">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="105.8461" x="1574.982" y="16266.6738">ConflictException</text></g><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg271"><polygon fill="#000000" points="348.7901,16300.1888,338.7901,16304.1888,348.7901,16308.1888,344.7901,16304.1888" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="342.7901" x2="664.0594" y1="16304.1888" y2="16304.1888"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="63.83" x="469.5097" y="16298.3798">propagate</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg272"><polygon fill="#000000" points="85.3089,16331.8948,75.3089,16335.8948,85.3089,16339.8948,81.3089,16335.8948" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="16335.8948" y2="16335.8948"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="165.0915" y="16330.0858">409</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="187.3995" y="16330.0858">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="46.228" x="190.7795" y="16330.0858">Conflict</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="46" x2="2645.0394" y1="16344.8948" y2="16344.8948"/><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="101.5348" x="51" y="16356.6537">[result.Succeeded]</text><g class="message" data-entity-1="part12" data-entity-2="part3" id="msg273"><polygon fill="#000000" points="686.0594,16415.9948,676.0594,16419.9948,686.0594,16423.9948,682.0594,16419.9948" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="680.0594" x2="2545.1917" y1="16419.9948" y2="16419.9948"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="136.6171" x="1542.317" y="16378.7737">UpdateProfilePayload(</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="1550.26" y="16396.4797">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="46.332" x="1557.02" y="16396.4797">user.Id,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1603.352" y="16396.4797">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="64.259" x="1606.732" y="16396.4797">firstName,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="1536.831" y="16414.1858">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="61.711" x="1543.591" y="16414.1858">lastName,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1605.302" y="16414.1858">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="75.7381" x="1608.682" y="16414.1858">dateOfBirth)</text></g><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg274"><polygon fill="#000000" points="348.7901,16447.7008,338.7901,16451.7008,348.7901,16455.7008,344.7901,16451.7008" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="342.7901" x2="669.0594" y1="16451.7008" y2="16451.7008"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="132.7171" x="437.5662" y="16445.8918">UpdateProfilePayload</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg275"><polygon fill="#000000" points="85.3089,16532.5248,75.3089,16536.5248,85.3089,16540.5248,81.3089,16536.5248" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="16536.5248" y2="16536.5248"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="179.1055" y="16477.5978">200</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="201.4135" y="16477.5978">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="18.2" x="204.7935" y="16477.5978">OK</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="62.985" x="118.051" y="16495.3038">{message:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="181.036" y="16495.3038">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="44.915" x="184.416" y="16495.3038">"Profile</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="229.331" y="16495.3038">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="51.3371" x="232.711" y="16495.3038">updated</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="84.6431" x="158.728" y="16513.0098">successfully.",</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="51.909" x="160.769" y="16530.7158">payload:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="212.678" y="16530.7158">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="25.272" x="216.058" y="16530.7158">{...}}</text></g><rect fill="#FFFFFF" height="3" style="stroke:#FFFFFF;stroke-width:1;" width="4480.9953" x="5" y="16587.3779"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="4485.9953" y1="16587.3779" y2="16587.3779"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="4485.9953" y1="16590.3779" y2="16590.3779"/><rect fill="#FFFFFF" height="25.706" style="stroke:#000000;stroke-width:1;" width="148.1764" x="2171.4095" y="16575.5248"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="130.7964" x="2177.4095" y="16593.4219">Delete Account Flow</text><g class="message" data-entity-1="part1" data-entity-2="part2" id="msg276"><polygon fill="#000000" points="315.7901,16648.6429,325.7901,16652.6429,315.7901,16656.6429,319.7901,16652.6429" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="74.3089" x2="321.7901" y1="16652.6429" y2="16652.6429"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="45.2141" x="121.951" y="16629.1279">DELETE</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="167.165" y="16629.1279">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="109.6031" x="170.545" y="16629.1279">/api/auth/account</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="54.912" x="108.7885" y="16646.8339">(requires</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="163.7005" y="16646.8339">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="41.145" x="167.0805" y="16646.8339">Bearer</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="208.2255" y="16646.8339">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="39.559" x="211.6055" y="16646.8339">access</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="251.1646" y="16646.8339">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="38.766" x="254.5446" y="16646.8339">token)</text></g><g class="message" data-entity-1="part2" data-entity-2="part3" id="msg277"><polygon fill="#000000" points="653.0594,16698.0549,663.0594,16702.0549,653.0594,16706.0549,657.0594,16702.0549" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="337.7901" x2="659.0594" y1="16702.0549" y2="16702.0549"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="190.9572" x="405.9462" y="16678.5399">Send(DeleteAccountCommand(</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="6.76" x="416.0667" y="16696.2459">&#160;&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="163.9562" x="422.8267" y="16696.2459">GetAuthenticatedUserId()))</text></g><g class="message" data-entity-1="part3" data-entity-2="part13" id="msg278"><polygon fill="#000000" points="2719.3231,16729.7609,2729.3231,16733.7609,2719.3231,16737.7609,2723.3231,16733.7609" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="675.0594" x2="2725.3231" y1="16733.7609" y2="16733.7609"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="113.1781" x="1646.6022" y="16727.9519">Handle(command)</text></g><g class="message" data-entity-1="part13" data-entity-2="part14" id="msg279"><polygon fill="#000000" points="2942.7814,16761.467,2952.7814,16765.467,2942.7814,16769.467,2946.7814,16765.467" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2741.3231" x2="2948.7814" y1="16765.467" y2="16765.467"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="185.6272" x="2755.2387" y="16759.658">FindByIdAsync(userAccountId)</text></g><g class="message" data-entity-1="part14" data-entity-2="part20" id="msg280"><polygon fill="#000000" points="4058.9694,16793.173,4068.9694,16797.173,4058.9694,16801.173,4062.9694,16797.173" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2964.7814" x2="4064.9694" y1="16797.173" y2="16797.173"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="185.6272" x="3425.0618" y="16791.364">FindByIdAsync(userAccountId)</text></g><g class="message" data-entity-1="part20" data-entity-2="part14" id="msg281"><polygon fill="#000000" points="2975.7814,16824.879,2965.7814,16828.879,2975.7814,16832.879,2971.7814,16828.879" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2969.7814" x2="4069.9694" y1="16828.879" y2="16828.879"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="96.9151" x="3448.0328" y="16823.07">ApplicationUser</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3544.9479" y="16823.07">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.234" x="3548.3279" y="16823.07">or</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="3561.5619" y="16823.07">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.776" x="3564.942" y="16823.07">null</text></g><g class="message" data-entity-1="part14" data-entity-2="part13" id="msg282"><polygon fill="#000000" points="2752.3231,16856.585,2742.3231,16860.585,2752.3231,16864.585,2748.3231,16860.585" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2746.3231" x2="2958.7814" y1="16860.585" y2="16860.585"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="96.9151" x="2780.7097" y="16854.776">ApplicationUser</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2877.6248" y="16854.776">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.234" x="2881.0048" y="16854.776">or</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="2894.2388" y="16854.776">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.776" x="2897.6188" y="16854.776">null</text></g><path d="M36,16875.585 L97.5588,16875.585 L97.5588,16885.291 L87.5588,16895.291 L36,16895.291 L36,16875.585" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="993.6381" style="stroke:#000000;stroke-width:1;" width="4419.9953" x="36" y="16875.585"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="16.5588" x="51" y="16890.482">alt</text><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="108.836" x="112.5588" y="16889.3439">[Account not found]</text><g class="message" data-entity-1="part13" data-entity-2="part3" id="msg283"><polygon fill="#000000" points="686.0594,16914.997,676.0594,16918.997,686.0594,16922.997,682.0594,16918.997" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="680.0594" x2="2730.3231" y1="16918.997" y2="16918.997"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.179" x="1623.0462" y="16913.188">throw</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1659.2252" y="16913.188">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="120.7311" x="1662.6052" y="16913.188">NotFoundException</text></g><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg284"><polygon fill="#000000" points="348.7901,16946.7031,338.7901,16950.7031,348.7901,16954.7031,344.7901,16950.7031" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="342.7901" x2="664.0594" y1="16950.7031" y2="16950.7031"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="63.83" x="469.5097" y="16944.8941">propagate</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg285"><polygon fill="#000000" points="85.3089,16978.4091,75.3089,16982.4091,85.3089,16986.4091,81.3089,16982.4091" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="16982.4091" y2="16982.4091"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="155.959" y="16976.6001">404</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="178.267" y="16976.6001">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.438" x="181.647" y="16976.6001">Not</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="204.085" y="16976.6001">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="38.675" x="207.465" y="16976.6001">Found</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="36" x2="4455.9953" y1="16991.4091" y2="16991.4091"/><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="87.5209" x="41" y="17003.168">[Account found]</text><g class="message" data-entity-1="part13" data-entity-2="part14" id="msg286"><polygon fill="#000000" points="2942.7814,17027.097,2952.7814,17031.097,2942.7814,17035.097,2946.7814,17031.097" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2741.3231" x2="2948.7814" y1="17031.097" y2="17031.097"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="109.7331" x="2793.1857" y="17025.288">DeleteAsync(user)</text></g><g class="message" data-entity-1="part14" data-entity-2="part20" id="msg287"><polygon fill="#000000" points="4053.9694,17058.803,4063.9694,17062.803,4053.9694,17066.803,4057.9694,17062.803" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="2964.7814" x2="4059.9694" y1="17062.803" y2="17062.803"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="109.7331" x="3460.5089" y="17056.994">DeleteAsync(user)</text></g><g class="message" data-entity-1="part20" data-entity-2="part22" id="msg288"><polygon fill="#000000" points="4395.1205,17108.215,4405.1205,17112.215,4395.1205,17116.215,4399.1205,17112.215" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="4075.9694" x2="4401.1205" y1="17112.215" y2="17112.215"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="45.2141" x="4144.5778" y="17088.7">DELETE</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4189.7919" y="17088.7">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.7771" x="4193.1719" y="17088.7">FROM</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4229.9489" y="17088.7">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="105.1831" x="4233.3289" y="17088.7">dbo.UserAccount</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="44.2651" x="4152.7094" y="17106.406">WHERE</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4196.9744" y="17106.406">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="91.7411" x="4200.3544" y="17106.406">UserAccountID</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4292.0955" y="17106.406">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="7.436" x="4295.4755" y="17106.406">=</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="4302.9115" y="17106.406">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="24.089" x="4306.2915" y="17106.406">@Id</text></g><path d="M4080,17125.215 L4080,17223.215 L4387,17223.215 L4387,17135.215 L4377,17125.215 L4080,17125.215" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M4377,17125.215 L4377,17135.215 L4387,17135.215 L4377,17125.215" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="266.6562" x="4086" y="17144.112">UserCredential/UserVerification/UserAvatar</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="273.6503" x="4086" y="17161.8181">cascade on delete. Posts, comments, photos,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="286.1303" x="4086" y="17179.5241">and follows use ON DELETE NO ACTION - if any</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="268.2553" x="4086" y="17197.2301">reference this account, the DELETE throws a</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="223.6392" x="4086" y="17214.9361">foreign key violation (SQL error 547).</text><path d="M2827.6068,17235.7451 L2889.1656,17235.7451 L2889.1656,17245.4511 L2879.1656,17255.4511 L2827.6068,17255.4511 L2827.6068,17235.7451" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="117.806" style="stroke:#000000;stroke-width:1;" width="1379.7232" x="2827.6068" y="17235.7451"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="16.5588" x="2842.6068" y="17250.6421">alt</text><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="264.6472" x="2904.1656" y="17249.504">[Foreign key violation (dependent records exist)]</text><g class="message" data-entity-1="part20" data-entity-2="part14" id="msg289"><polygon fill="#000000" points="2975.7814,17292.8632,2965.7814,17296.8632,2975.7814,17300.8632,2971.7814,17296.8632" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2969.7814" x2="4064.9694" y1="17296.8632" y2="17296.8632"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="124.4231" x="3453.1639" y="17273.3481">IdentityResult.Failed</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="197.7172" x="3416.5168" y="17291.0542">(AccountHasDependentRecords)</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2827.6068" x2="4207.33" y1="17305.8632" y2="17305.8632"/><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="96.1173" x="2832.6068" y="17317.6221">[Delete succeeds]</text><g class="message" data-entity-1="part20" data-entity-2="part14" id="msg290"><polygon fill="#000000" points="2975.7814,17341.5511,2965.7814,17345.5511,2975.7814,17349.5511,2971.7814,17345.5511" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2969.7814" x2="4064.9694" y1="17345.5511" y2="17345.5511"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="135.7851" x="3447.4828" y="17339.7421">IdentityResult.Success</text></g><g class="message" data-entity-1="part14" data-entity-2="part13" id="msg291"><polygon fill="#000000" points="2752.3231,17380.2571,2742.3231,17384.2571,2752.3231,17388.2571,2748.3231,17384.2571" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="2746.3231" x2="2958.7814" y1="17384.2571" y2="17384.2571"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="84.8641" x="2808.1202" y="17378.4481">IdentityResult</text></g><path d="M46,17399.2571 L107.5588,17399.2571 L107.5588,17408.9631 L97.5588,17418.9631 L46,17418.9631 L46,17399.2571" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="462.9661" style="stroke:#000000;stroke-width:1;" width="2791.6068" x="46" y="17399.2571"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="16.5588" x="61" y="17414.1541">alt</text><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="181.2238" x="122.5588" y="17413.016">[Account has dependent records]</text><g class="message" data-entity-1="part13" data-entity-2="part3" id="msg292"><polygon fill="#000000" points="686.0594,17527.1992,676.0594,17531.1992,686.0594,17535.1992,682.0594,17531.1992" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="680.0594" x2="2730.3231" y1="17531.1992" y2="17531.1992"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.179" x="1630.4887" y="17436.8601">throw</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1666.6677" y="17436.8601">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="105.8461" x="1670.0477" y="17436.8601">ConflictException</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="54.7171" x="1619.0032" y="17454.5661">"Account</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1673.7202" y="17454.5661">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="42.159" x="1677.1002" y="17454.5661">cannot</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1719.2593" y="17454.5661">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="15.327" x="1722.6393" y="17454.5661">be</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1737.9663" y="17454.5661">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="46.033" x="1741.3463" y="17454.5661">deleted</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="32.292" x="1669.1507" y="17472.2721">while</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1701.4427" y="17472.2721">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="8.047" x="1704.8227" y="17472.2721">it</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1712.8698" y="17472.2721">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="20.982" x="1716.2498" y="17472.2721">still</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="21.554" x="1638.5292" y="17489.9782">has</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1660.0832" y="17489.9782">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="64.519" x="1663.4632" y="17489.9782">associated</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1727.9823" y="17489.9782">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.491" x="1731.3623" y="17489.9782">posts,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="68.1851" x="1644.3272" y="17507.6842">comments,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1712.5123" y="17507.6842">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="46.1631" x="1715.8923" y="17507.6842">photos,</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="13.234" x="1668.8127" y="17525.3902">or</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1682.0467" y="17525.3902">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="52.143" x="1685.4267" y="17525.3902">follows."</text></g><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg293"><polygon fill="#000000" points="348.7901,17558.9052,338.7901,17562.9052,348.7901,17566.9052,344.7901,17562.9052" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="342.7901" x2="664.0594" y1="17562.9052" y2="17562.9052"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="63.83" x="469.5097" y="17557.0962">propagate</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg294"><polygon fill="#000000" points="85.3089,17590.6112,75.3089,17594.6112,85.3089,17598.6112,81.3089,17594.6112" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="17594.6112" y2="17594.6112"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="165.0915" y="17588.8022">409</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="187.3995" y="17588.8022">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="46.228" x="190.7795" y="17588.8022">Conflict</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="46" x2="2837.6068" y1="17603.6112" y2="17603.6112"/><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="183.3165" x="51" y="17615.3701">[!result.Succeeded (other failure)]</text><g class="message" data-entity-1="part13" data-entity-2="part3" id="msg295"><polygon fill="#000000" points="686.0594,17639.2991,676.0594,17643.2991,686.0594,17647.2991,682.0594,17643.2991" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="680.0594" x2="2730.3231" y1="17643.2991" y2="17643.2991"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="36.179" x="1630.4887" y="17637.4901">throw</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1666.6677" y="17637.4901">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="105.8461" x="1670.0477" y="17637.4901">ConflictException</text></g><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg296"><polygon fill="#000000" points="348.7901,17671.0052,338.7901,17675.0052,348.7901,17679.0052,344.7901,17675.0052" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="342.7901" x2="664.0594" y1="17675.0052" y2="17675.0052"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="63.83" x="469.5097" y="17669.1962">propagate</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg297"><polygon fill="#000000" points="85.3089,17702.7112,75.3089,17706.7112,85.3089,17710.7112,81.3089,17706.7112" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="17706.7112" y2="17706.7112"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="165.0915" y="17700.9022">409</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="187.3995" y="17700.9022">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="46.228" x="190.7795" y="17700.9022">Conflict</text></g><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="46" x2="2837.6068" y1="17715.7112" y2="17715.7112"/><text fill="#000000" font-family="Arial" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="101.5348" x="51" y="17727.4701">[result.Succeeded]</text><g class="message" data-entity-1="part13" data-entity-2="part3" id="msg298"><polygon fill="#000000" points="686.0594,17751.3991,676.0594,17755.3991,686.0594,17759.3991,682.0594,17755.3991" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="680.0594" x2="2735.3231" y1="17755.3991" y2="17755.3991"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="33.618" x="1688.8822" y="17749.5901">(void)</text></g><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg299"><polygon fill="#000000" points="348.7901,17783.1051,338.7901,17787.1051,348.7901,17791.1051,344.7901,17787.1051" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="342.7901" x2="669.0594" y1="17787.1051" y2="17787.1051"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="33.618" x="487.1157" y="17781.2961">(void)</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg300"><polygon fill="#000000" points="85.3089,17850.2231,75.3089,17854.2231,85.3089,17858.2231,81.3089,17854.2231" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="79.3089" x2="326.7901" y1="17854.2231" y2="17854.2231"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="22.308" x="179.1055" y="17813.0021">200</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="201.4135" y="17813.0021">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="18.2" x="204.7935" y="17813.0021">OK</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="62.985" x="115.802" y="17830.7081">{message:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="178.787" y="17830.7081">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="54.7171" x="182.167" y="17830.7081">"Account</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="3.38" x="236.8841" y="17830.7081">&#160;</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="46.033" x="240.2641" y="17830.7081">deleted</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="86.0991" x="158" y="17848.4141">successfully."}</text></g><rect fill="#FFFFFF" height="3" style="stroke:#FFFFFF;stroke-width:1;" width="4480.9953" x="5" y="17898.0762"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="4485.9953" y1="17898.0762" y2="17898.0762"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="4485.9953" y1="17901.0762" y2="17901.0762"/><rect fill="#FFFFFF" height="25.706" style="stroke:#000000;stroke-width:1;" width="270.0092" x="2110.493" y="17886.2231"/><text fill="#000000" font-family="Arial" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="252.6292" x="2116.493" y="17904.1202">Error Handling (Global Exception Filter)</text><path d="M10,17926.9292 L10,18095.9292 L656,18095.9292 L656,17936.9292 L646,17926.9292 L10,17926.9292" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M646,17926.9292 L646,17936.9292 L656,17936.9292 L646,17926.9292" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="248.0922" x="16" y="17945.8262">API.Core's GlobalExceptionFilter catches:</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="625.4436" x="16" y="17963.5322">- FluentValidation.ValidationException -&gt; 400 Bad Request\n {message, errors} (grouped by property)</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="203.7102" x="16" y="17981.2382">- ConflictException -&gt; 409 Conflict</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="236.8602" x="16" y="17998.9442">- NotFoundException -&gt; 404 Not Found</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="278.4863" x="16" y="18016.6502">- UnauthorizedException -&gt; 401 Unauthorized</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="236.6262" x="16" y="18034.3563">- ForbiddenException -&gt; 403 Forbidden</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="370.1104" x="16" y="18052.0623">- Domain.Exceptions.ValidationException -&gt; 400 Bad Request</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="398.4633" x="16" y="18069.7683">- Microsoft.Data.SqlClient.SqlException -&gt; 503 Service Unavailable</text><text fill="#000000" font-family="Arial" font-size="13" lengthAdjust="spacing" textLength="235.1702" x="16" y="18087.4743">- All others -&gt; 500 Internal Server Error</text><?plantuml-src vLtjUzisal-klmBh_H1fAycEc-PsrRfRloRgnYzhATkxvtnF7ug4BJOKgPAK7RLF_lUR6G0a088IfIZDNguVKXa41iF1OEQ7mG3yKpxbCyxcaHV6hUnT6C-zr9knYUU_UqYJHHoS9b6IiZzVq7zQZO3VUuielqZY_Ce32iTfw4NQyup_kk2npozvbdaF_3WA7sBcypZdgLPhvhsN5KRXRvmT7XoqMdcOHvozpNZAZXV0Nfo7lfU7ISmkekI9zTZv-xaN1pnejJm_1-QmQWleGRqGdkHix_XcU1UV0cjf4aKytMDUng3Ch7J9Wz3BRzaydFCeZFbTtFwN5uK1zNN2fzvZcAGTQYkg9cbhahndUw-XTw3AtdXBfFtdD-73D3-95joaVyiVmWnU5zcJJOWObCi_pVflaeSmrYlg1JRf-vHdqt7oZiScQIftjW5nt8VfpEP65jTqat7K0Af1OZcVUM5azeXLdAtVpa6K7FkBGK7qHiudhiQLxgh5hcOtNfOz9MbGRMazSJPEa_imSl1hFZ2Rdl68v_pOzs7Av7fJrmEhLn33fHV354Y_EvxF8wdiMFozw1qhF5YjQEX7F7qCVKwrHC6ZtuBXOA2cGbM7yNtgPNcwyFD5oasDVPLo7blp9dr8uiDIIDbKJHvwO5R-yQVnNMnsG7MXtAn8mtKNW_mUmq0I75sERwmtuZEmGZctAgfYyxrk-Jp9GfYHIxRFJjCaotfPHA8Gx_PVF09ROOsHDv-BsJY2XZZTXyKV-_HJlRWeWfV3GkAUIZh5SD2VZfSy2xEvb_iWDQ1-mJsKITQdHvbeRLKhtWeKp9ju6MTxet--OJYmIe5EMgquoJbBeAJG1SQEHpVzg_Cnp5yOrs60LZ9VFfFQ8jLfJ4e4bLCEClHvni2SWkL6bGp8k9Po7B2fqCuCwiS9Yv8OIB0monQS8KzWQ7qlYgGgi21CkPz7oovK1wfB8li00yNoH6UYovwceJzbOSn06Z7KHYhmNkPei3RybQ6z19_HOS0AlgD37LbxQ1R8j-pqIPOegbRhw8W9wvjgZkFegDKYhzBx7ft1WDrSZyPitvk7-nw8OZ-Lzlek_dqXJLENWUNBoC5rMUJ9NtSnnr7iChGAr_SdOPfFksmkkVg0NYbyH4cWosd1FzYZSY436DmuQElEuJIPpU25EsN3mj-8eKzHfLboNvOpLdLLB5t46TC9opfKltq13YhEosOTDk7tA7dK2Jds0wZOOyem3zZNlPSlc3_rqgpBl6WEjHOpdeO--uhzT__dtlzGTLBf0Nj4oWmeWgVeecDdpm__AXfJDJLg0pO3NVYh8hj0DV11yq6i3Fw3aP9_C-XiWWgKpRaFu89Q4AcpKkv0RP7by2hi-T--OaiED5aI1PekU56k2OlTurm4AagKXJRaqpHvofWjfdxvy_ozp-Vu0rLJZ2gAQi1U71om4oy0sGFcoN9Ge9a0DGEsPtNDWxqkuscQfDc0_TxlzpzyQF48vhrMBrluFkU1pMM96mPC_6ZxIdCOAtH7WnTGNFvbaq0TPqSiva_q5j954KjtSN-SMBwetQcIazPe01OOR1q_pfQntqQwvMmmM5FM2yhaJv8-pN9yfsogb6GL5UcB63FdHb7CoEcYAShG5XNcmdHLVUnkGDL5Ir1UmgHW6s5iw46FZK1x1kpvIpPP8hasg7Hl4kOT-VYIpyXqldnnUIABXj2SX0RZ-qAMtG1TmA5HcCr0LZTl6ObQFaG-MBB8vmlewUj3qHCyApHOCSXwkiZtq5kyVD7EWCFEGFun1LgTFMWHS5jSfimBkulcADSDgZw8HAuYwD81uWjWpVum04V1iZm4_m3-EbyoBuS91MNp90JlsAEgIHmjOLsG2pSKnhqPYO-wwUiwHBMVqX157kOuYC4awPEfJ3cvEh06OPxnwBwlIwhs7I_2E3XPel4kNmyjN4KxrNkLVWa8dPs0bCxVd9-EzPaoFEiMbhBBODhSnHUtrvS5gxBQNVpJw_FRyw8gJBaVr6-zzpDKeBEJOf0bv_42H4hyiY3XMVmiP_mz6FYEESZKMlkxV9SrCY7ZBOH2JkqFb0XrZUAW7urbGMnkAGoNAWiuXKQ35hGwTX4-3Url1iw7---4niSXBct1mYiFggakpWC4E3puLb0rOKvVh-f5MS8U5bvAfXxU_m4MuU3CFFR0umMiI5aAe8qzXXuK-Tu2cAPwmK9OPjvx1xXhz6jKE2RMFdnvy7p_yENXVtIQpGpRSjUClqi1JivV3Q_O-FRuQdHyEXvUNrM6iD9aU3Kwlnt3_yRNLQrebxfpKQAkDoNgEjFX5YbDvow-VZk-UJkMbC_F-eO-EjL8hn6mzgktmxDEKsPB-oFvBGXroP0x2PrUNruEnvQaR7rTPMDFadmArXNgpg3p384UQOLGhcT2UyxVSt-Hyn5edvVIWExB8gbjGhk4fh4iZ1yYw7eoJhquGrQIk8jCu3FiEA2AypJnUO1Bnnuk2W1iBC3q5dwIJS2802M7gaa9w2vBhL9kUGOJhJz2c9Db84ZbGy0tT9hOCGl9c7Ih12JaG23ufrJhcmVoBKrKKo9rWeGK8O7vbXUp33W-KrCGwQDwxXSbmgpvIG3Eg_VzNRnNM7w0SS9uUH7Ckc0fZ5Usz-qT20vMCayXuC1Vm672uemW8hn8vgSXTPe9p561hJ12Sm_1Ze0o9YpzMy5y4pvm516ALcJa498ADmpOAp25gKSn3XXDAYyiYMOGYlW4bge_aDAFFurB8Zy-vTGOvrEv2EFlvs6wj0XYc04Bp8cZIXd-4i6jXuK0P0FveCUEeuS4qCKKqDZhqU4tBui7vzWH1-Jsd4sJHLgKdqPUECiK0SR-0XXz8Y3qCD1AXMluMIoU5gMNLyzXwDW--oKFgKn3U89T9GrXbAde2TXaFdLVgJR2a2fLoBYVyfo1EoWh6OCa1aSK21_2Au8i1yMQNwiQ5yFQI4VqkEM_XP98XaHVWweU73w7HVuIWFyt1oz89UGq56i3c4jbRCtBe5iIL8x4v78sWp62wKoZ19QLe-a4LiI0rMY18Jg3mus7RcNhpSPE3mF_-moWpbNjA7vzW3671QtW3lhVL0RI62DOjgJ0rnP3LULbu_5QJsBLe5an9ln73uEHPrB19d1Yewa7VhwlBVIPNuPImON5qD3FhH7HOb2cEx92cuA9Ily2QkBaq49hCfxcsohMSOozqJz809REC7YmHhJYhSza1ISNKcXTMGVNexGwDTuVevrXh5N1NJ4U1rLTA8HZXtS5CZCBQNh9g3REq3WG2mGLkUD1lQ1q2Rq9utVsz5F1yghOZ4SWDkyt63LGXdaI0teg9yrhG0J08qs62M132U_4mvzuv2TWzMHug_IFkjfE5dcUnCMpYoJ1FR-Ap1H3Bd58zdp5tbqCu_jwVFd6QkdIEgmcyGrgC9U15dqAAL7KZGvkJWZrrLR6NVJvlt0_xx994jXsYlOpgb8lYXdzD049Qry2tN-4UKSJVvBb-_CapGViFarc8B97riQcFx--7ettwTVDzUsuj5xZDoFWDVVI77wnfocFgQkVtuxEVnwDtXo1Woe72cF-9JBPL_6rBWllXMu1RzoXuCHy8PcJHHW5x79uUMveWba9NZKcQNdb9Ywkud2_iCk2CFD51QsfquY8LGB09X6WjGUJ96mNsjFGUbo6rsaCOLqWG3kmbeleQvRTBw9eMQ24kY0gQSO8cnsnGj04ecUoZpwgaSxxAd8-yjik5XeT45UKFA1notAO5gdQUf0ztdlGangigaCmF89k0c-yPPHu0HcNXRc8BTmnFairkDQLw6PSW1lVtXT6hZgshBLmjEamr0B6mTZgyJBME8S7poLS3kxYtv6jClHEcprfOLMDaUtlqJlCHOS3zhk0QwkaiKuUDHB1Hn_kuWzYZOmR4oqzEejRH4T7Og-_sJvLX5MDJQhDjfwegvtkEH75OhC9ZPdY3JVo2lRaLWq6CoOSR4lSerZnbx5NOx6fvswitAunaZpWWVwtiSVIE8Oj0ffVMY1SeyGmAWDYndYm8v9ciAnHUBqCKXNh1FIByrxqAjwu3EtHrX1CQTf2vMbuhz2nyayIxl2WKn_iihRFtFpQabRHBLDx6fFI0brK4SDvzvZ4HNRJrYmxplKsHlEIfE5lW43BMDVUC1PRkmijVgIcT7zlYwZKSwCh5NKYZWMtJdRBpKQCnAijgxezH-USM1N-PnY_DQYo33ZCUtwO-eimfxt4qk4oreuJj_gm9ozZKw5iWS9fYATXfKAB2a3KSjCTynU-PKNmJzODzErBLmv4lmhG7FkffBfBQX4K-whAvGlVrjVfrWfGsrcjtN9jkEagU59mztcVZK2rSnbn9e606SOjpG7-tfFr3ljYbtGk4eCqZqBB59HbHi4OByfbaw_x242pt8lpNXxEEAqbl3JCKALnz4xJvJnF7b9lFWtzwxdQjErVXEzvC8OMvxykOBGxLL6xTcCbIjs_8BTXunTDJlMp7E7ZVgbWxgaj9hSIBgnEQMhATzvgWiksQsRm-ZaiPt71cc2iXhEcqUFwsDBQ-1Bu8GUDCd3KA4fQ4xwfX70iUxs6Z1d2QIQVciZf7ooWQZXnEmcjfRDEH8PsqwEFNjDqN7mOw4mzhwvXT0vSPCm5Z6CHSy2k_r5Plm3L1uwJ_1EkNBJLYLf7bl-lMQiOezSqjuwQtCKYl3HW_zcJL7eYQCk-ewZvzmsJvygtaGkPjlw6dLsbqfKaZTMDtbUHVrQiP_hi67ulPyb2fl7871ZSG3tXNWfIedS5ChykGep0Vf4h83CNVKtAcf6stc9M2NCP8IeGyCyO-vRB8hOSnb2-0z-0dZ1lxhq8HIwZFHyAHU-BBOqYiGE0IakRZL8Dn0O3xdzGk3sJsuhxHNeLWMwn1zWt4yEg5bfn4GZbXA4eGa-McPOB1L5F0WdQ6gPTaw2oWsEFvpfCKHt2SXQRu68NgmVn6Xheq5ctrj13kMfuLBAYPUfmrRfXrMfwg2r2d4JAH8vFivekMkAIMkv7cqjYruBQN4HNbz5Rh6nhrxOcxjK0LtDI1W1sh6wtLbQP6O5EaO8B1TazSu-uWIBl3aPhY-4rKAu2dE_YjPYnQZOm2rZkNdzbcgUivK1pjdZrdeeid3MGpXRhUaYtEPOpuj26Zza0oQt0SMuKLxhJiVJprBKh0bsYEE5SJUnLWxza-4aeIIFu9GFJVwSHFP9GwovkImIIALoY9p1q6a4nxLIPGc9vFGJJfuTvyAoA3uhcrWcrblatSxg_IhA2CD7sYnKwMGiE2j-jn_PnEzBXkLK-aE5cDt3HbeCsPfmjBPD8opdFrhZtgXoR1WnMMhdL5ixbhAkCh7FOH43psXl6lwiUUwFOzvPEULs4kt5KUsTXPbkfTXHetbAnrZZYJn5ZTcjUUJ32ZFRhiMQCrdLgGiebwc7CEa9OEU69-U9XZ6a5lF0tycGTbEU9VZeBGyuv9VvgEUeTbSEIyJnNaMLViSpk8-z1Fsh1Ksv5ZrS8WZHC77urCyGtGiaD2An0o6zlpex7v_PCWwb8yz3TnfMvhM_aL7EtzQUOPeu1u4R36y2IFy4aam7BteNpEOYyRUJdgy1AaQAVFNbuDfK77KowyDYZrhMiZ5F4pCsjYVWtJh9k3ivjcr19hgv7vhOI6HDVzyWsiElZ42Ynzz_c_bNoL4aai6206xuvUjaecQ22uCXYq2u3MFBVm-037V1Gqwi6mwt0RkAyl9am9P9FDW5o-ocH-RjmO4VVXS5kq5pDWN-5xAI_N0ljZ4i1LY0xy_A0bl7d2XYWt7P52pVn-Owfi5D_htllrRxUzFGR-dddd3OFIXXZqP0EpMcdUwyCajK10E952bOkZC1kH4jGotdA7-dO2frYutI4M9n0RZcSShqI3BCwTzof70unM9eaIQJWoh4qgyKKbh6gZLuA7N4lcNSKhBW2-InvhX5rKzrjKdMLJNsD8gRzkknXYq5d0l4ga_2HkS5Eqbja2AzC_6kGVYl8WwxIDh98FbNNmc1YVwhbg7K-FcjqYqp5qgdOPj8OjlPZ4iAW674FtSPMFMQrHMdJrpb7Gzz4oktKmrEH5FJ0RCgz3zQs2peVyBhH4vwg42HHkbuAx86lWXh98gSSOs-IF78wEKo3WlEYfnaFWF_S1v-8F_7e1HgfdZ9I2sdQl5ZXg5u9YUNwGjjrSVXf0LhBPAKQxtmyFdsjkMSLdG8fnVn9DVwm4zziNfgZN39EarSyrovAue5O5xSxNQOniQCzCPCBuu896YPn_mFKXU6ipfpFkS_LUEFAUJlHolqhztr6w9HS3zOWcs9Lyf61ZNew_s_Y6pKZkKsOuzWEIeY5KztusW4FG0WNsChS8jiifF62SCQ5x9oqMN6bXJJMgzo8v-hKgXxHq6t5TXjX9SKAhLLvTs_By_Hqo5w_bqQi_bVdkwqDDJICATp565ImqrElr3vSyqLtPKrTeuSRBAthpovle8ID3ZBJoMNhuB9rJhYpvMPNUHgvtEZQx9sCbpBhE6CAz4EzcMDJo6suw_Q6d1sks2HgjaTKI7b1v7UrIIG1pChOWeLU90X6w4BDTebRZ3Z2Mj0YBdVO9M8XYbymND5FDJR0AiODYWLGqKi_1qfP0KYsGGXL4snAQTSum1RVvmO1jSEfTZOizt-kBW3QmlThz4nActZ-FYmCiuIMZhdAEo0JRWP-rCatUQsKE9jBb-wa8XilvMgvXxibijBAIEeVYJ3CUu-wzTiOPw3zGCH0ukOsnkeSe8y1A-PCsIbIMJTDLiAKydOLWL74truGfAX5dmkecA_aG2bKeHwY24qeojtgNejV36E-6hpeV7mqSX6o_oImfJX6q0ovgFCWm9w_I5DGrflYP3EO8_N7BW6Deja8qz1nsHMCxHJgAA9Lj5CScm68m-E7VFe501_hHkS6sCU-0xg0FzQ3puo0jiKu5O7i6kOunFIvaSwgaJkTUl43DyyBbgVWLixAHb1e--DsLj_rf-wsFd5MUEHJqPLs53lCPhZbeDpOUZMo4Wj4ls1GLSLBIR5J-inghxJBaTcThhm3jZ8WRXcvfOHvhNYIiEhhZAORtumATDLrVokIMTO3G_q-GSI6m-oMFu8hGgV_lCla7yTusSEhyp4sRNTSi2yGi8yTNvqPD0xg-DZsSiFrAJ5CSjr3HzWBOtYS2_S4lyC0Bzefgnht3xAsNnwYJPDSEAD-UJIf1EUrbb9kPrMHacDWDbDuFPD67PDQ1O8hoa-PNdwIfkhIamqCQbt2tCfEzdQSb5w1zQnDHvS95IpI0g0sVgiAql-Zy7g5DmTaLtMQ9oiveBcDDLQZSwlBZmRe1Oh-D1XTV0-ZAKGNjO4_rvNw-bNwEqNfejV687qTRxi5weAvAawdkvcqssw_19XkV3ob2KetlxPIWdIZ_FygHhUaiNE8NX7IPqVerM5pIe8iR77zCo0OseocKdKJj56epvAZ8fHc8HINGWaBIZtjurHdnNL5PDoWsOI8Wlc9dob_ZSSy45XDbb1pMI04SNy5vclpz1wlx5Q1oTaY9xjRf7HZNjQKs-EjNKC8yyXxX1PMbdTVYpkwyhVNperFbCMzKU1J7zOVoYk-nGbrRNH_qExy5dUewsFyWt4D-2usPcqTt6cqS_rK_7meo6BD1O945IS6kZT6qEqkQt6HQpBMmYA3YOz7HHAtx1OKYGzz5GRG3OfaHBz4HLvn-Vt78nxZKsDD4C_wH6xNryjMv7CxFtRMSfKszzjR9tbhD3RqsBg5S4jWqongbw-k4qiJJxt90JpTIxjzzDe1aXNgFnAn2asjRLoRZkRQ_sgKYROgG646ElRjFJKgE0RUF65EV2_pFGfQoE-czTbDakKPfYBFw6iCNJQV9dcI2IUE0E8-mGC-bE_Ehg_KQrnTC_7n1zQZWp_nKjq5mLFyw9duNeuq25s22RAb1ErY8nDJe_3UT_pq1ome8dcJB7wXJNmpu9iNrMz_e0vUk1i6V8ufq7Yh7lTXhPYLdrHfUiQe20KMAfITAQgtWcYHAY_DfFQ9gyrFCWbRt23_pprvD_XSX9egcDLS4LJngQacizYngRcdgFjUZ8PXKdwQxscA3eekHWkZw2x6_c4jd_WXUQnvZGRUnKcgj6-hc_aC2B51p6ThAUo4HoV8SRFaIfQtBxzmEJ4tF74JCE38EZ2YT42Dl0b6rXmcEwS9JppYoS_sgoYPU14hFmTq4KQm9EaG42a_8Ybpy6-6VVnuvBECYNP5Cz5AN4RCC_5Dm2OH0tpHokL2A0JrlkekeG-iZHyNdekL58usJtCw6z6hgeYWQenwh-eKHIrpHTfpXqr5rKgG4sygJoTX05FSglfr-KHyVZ2PUM7SBsfb3OL1ZIz3l6C-kSznwUhrHxz6fr48ekqRtt62njz0l_83hyZg8ymtRnBnblY0IIHkZSn4pGCsnBLd38ClFXqgLACC4Fql?></g></svg>