<mxfile host="app.diagrams.net" modified="2026-05-29T00:00:00.000Z" agent="Codex" version="24.7.17" type="device">
  <diagram id="flow-auth-otp" name="Flowchart Login OTP Detail">
    <mxGraphModel dx="1900" dy="1200" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1700" pageHeight="1750" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="title" value="Flowchart Detail Login dan Lupa Password OTP Email" style="text;html=1;strokeColor=none;fillColor=none;fontFamily=Arial;fontSize=24;fontStyle=1;fontColor=#2D2520;" vertex="1" parent="1"><mxGeometry x="360" y="20" width="980" height="42" as="geometry" /></mxCell>
        <mxCell id="lane_login" value="Alur Login Normal" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=15;fontStyle=1;fontColor=#2D2520;arcSize=4;" vertex="1" parent="1"><mxGeometry x="80" y="420" width="650" height="1030" as="geometry" /></mxCell>
        <mxCell id="lane_otp" value="Alur Lupa Password dengan OTP Email" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=15;fontStyle=1;fontColor=#2D2520;arcSize=4;" vertex="1" parent="1"><mxGeometry x="820" y="420" width="760" height="1030" as="geometry" /></mxCell>
        <mxCell id="start" value="Mulai" style="ellipse;whiteSpace=wrap;html=1;fillColor=#EAF8EF;strokeColor=#2E7D32;strokeWidth=2;fontFamily=Arial;fontSize=13;fontStyle=1;fontColor=#1F3D2A;" vertex="1" parent="1"><mxGeometry x="760" y="90" width="180" height="55" as="geometry" /></mxCell>
        <mxCell id="splash" value="Splash Screen" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="755" y="165" width="190" height="55" as="geometry" /></mxCell>
        <mxCell id="session" value="Apakah sesi login masih aktif?" style="rhombus;whiteSpace=wrap;html=1;fillColor=#FFF7D6;strokeColor=#B7791F;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;" vertex="1" parent="1"><mxGeometry x="720" y="250" width="260" height="90" as="geometry" /></mxCell>
        <mxCell id="dashboard" value="Masuk ke Dashboard Utama" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="1060" y="260" width="250" height="60" as="geometry" /></mxCell>
        <mxCell id="end" value="Selesai" style="ellipse;whiteSpace=wrap;html=1;fillColor=#EAF8EF;strokeColor=#2E7D32;strokeWidth=2;fontFamily=Arial;fontSize=13;fontStyle=1;fontColor=#1F3D2A;" vertex="1" parent="1"><mxGeometry x="1095" y="350" width="180" height="55" as="geometry" /></mxCell>
        <mxCell id="login_page" value="Tampilkan Halaman Login" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="725" y="525" width="250" height="60" as="geometry" /></mxCell>
        <mxCell id="choice" value="Pilih aksi pada halaman login" style="rhombus;whiteSpace=wrap;html=1;fillColor=#FFF7D6;strokeColor=#B7791F;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;" vertex="1" parent="1"><mxGeometry x="720" y="620" width="260" height="85" as="geometry" /></mxCell>
        <mxCell id="input_login" value="Input username/email dan password" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fillColor=#EAF4FF;strokeColor=#2B6CB0;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#1A365D;" vertex="1" parent="1"><mxGeometry x="245" y="760" width="310" height="65" as="geometry" /></mxCell>
        <mxCell id="api_login" value="Kirim data login ke API /api/login" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="255" y="855" width="290" height="60" as="geometry" /></mxCell>
        <mxCell id="db_login" value="Validasi akun pada tabel login" style="shape=cylinder3d;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fillColor=#EFF2F5;strokeColor=#4B5563;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;" vertex="1" parent="1"><mxGeometry x="260" y="940" width="280" height="65" as="geometry" /></mxCell>
        <mxCell id="valid_login" value="Apakah data login valid?" style="rhombus;whiteSpace=wrap;html=1;fillColor=#FFF7D6;strokeColor=#B7791F;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;" vertex="1" parent="1"><mxGeometry x="270" y="1040" width="260" height="85" as="geometry" /></mxCell>
        <mxCell id="login_success" value="Arahkan pengguna ke dashboard" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="250" y="1170" width="300" height="60" as="geometry" /></mxCell>
        <mxCell id="login_fail" value="Tampilkan pesan login gagal" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFECEC;strokeColor=#DC2626;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#7F1D1D;arcSize=10;" vertex="1" parent="1"><mxGeometry x="250" y="1290" width="300" height="60" as="geometry" /></mxCell>
        <mxCell id="login_back" value="Pengguna memperbaiki input login" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="250" y="1380" width="300" height="55" as="geometry" /></mxCell>
        <mxCell id="input_email" value="Input username/email akun" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fillColor=#EAF4FF;strokeColor=#2B6CB0;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#1A365D;" vertex="1" parent="1"><mxGeometry x="1040" y="760" width="310" height="65" as="geometry" /></mxCell>
        <mxCell id="send_otp" value="Kirim request OTP ke API /api/forgot-password/send-otp" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="1010" y="855" width="370" height="65" as="geometry" /></mxCell>
        <mxCell id="db_account" value="Cek akun pada tabel login" style="shape=cylinder3d;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fillColor=#EFF2F5;strokeColor=#4B5563;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;" vertex="1" parent="1"><mxGeometry x="1055" y="950" width="280" height="65" as="geometry" /></mxCell>
        <mxCell id="found" value="Apakah email/username terdaftar?" style="rhombus;whiteSpace=wrap;html=1;fillColor=#FFF7D6;strokeColor=#B7791F;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;" vertex="1" parent="1"><mxGeometry x="1035" y="1050" width="320" height="90" as="geometry" /></mxCell>
        <mxCell id="not_found" value="Tampilkan pesan akun tidak ditemukan" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFECEC;strokeColor=#DC2626;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#7F1D1D;arcSize=10;" vertex="1" parent="1"><mxGeometry x="1360" y="1065" width="300" height="60" as="geometry" /></mxCell>
        <mxCell id="gen_otp" value="Generate kode OTP 6 digit dan masa berlaku 10 menit" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="1015" y="1180" width="360" height="65" as="geometry" /></mxCell>
        <mxCell id="save_otp" value="Simpan OTP ke tabel password_reset_otps" style="shape=cylinder3d;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fillColor=#EFF2F5;strokeColor=#4B5563;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;" vertex="1" parent="1"><mxGeometry x="660" y="1180" width="320" height="65" as="geometry" /></mxCell>
        <mxCell id="email_otp" value="Kirim OTP ke email pengguna melalui SMTP" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F0FDF4;strokeColor=#16A34A;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#14532D;arcSize=10;" vertex="1" parent="1"><mxGeometry x="1015" y="1280" width="360" height="65" as="geometry" /></mxCell>
        <mxCell id="input_otp" value="Input kode OTP dari email" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fillColor=#EAF4FF;strokeColor=#2B6CB0;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#1A365D;" vertex="1" parent="1"><mxGeometry x="1045" y="1380" width="310" height="65" as="geometry" /></mxCell>
        <mxCell id="verify_otp" value="Kirim OTP ke API /api/forgot-password/verify-otp" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="1010" y="1475" width="370" height="65" as="geometry" /></mxCell>
        <mxCell id="db_otp" value="Cek OTP: sesuai, belum dipakai, belum kedaluwarsa" style="shape=cylinder3d;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fillColor=#EFF2F5;strokeColor=#4B5563;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;" vertex="1" parent="1"><mxGeometry x="1010" y="1570" width="370" height="65" as="geometry" /></mxCell>
        <mxCell id="otp_valid" value="Apakah OTP valid?" style="rhombus;whiteSpace=wrap;html=1;fillColor=#FFF7D6;strokeColor=#B7791F;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;" vertex="1" parent="1"><mxGeometry x="1065" y="1670" width="260" height="85" as="geometry" /></mxCell>
        <mxCell id="otp_fail" value="Tampilkan pesan OTP salah/kedaluwarsa" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFECEC;strokeColor=#DC2626;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#7F1D1D;arcSize=10;" vertex="1" parent="1"><mxGeometry x="1360" y="1680" width="300" height="60" as="geometry" /></mxCell>
        <mxCell id="new_pass" value="Input password baru" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fillColor=#EAF4FF;strokeColor=#2B6CB0;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#1A365D;" vertex="1" parent="1"><mxGeometry x="650" y="1680" width="300" height="65" as="geometry" /></mxCell>
        <mxCell id="reset_api" value="Kirim reset password ke API /api/forgot-password/reset" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="650" y="1780" width="370" height="65" as="geometry" /></mxCell>
        <mxCell id="update_pass" value="Update password tabel login dan tandai OTP sudah digunakan" style="shape=cylinder3d;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fillColor=#EFF2F5;strokeColor=#4B5563;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;" vertex="1" parent="1"><mxGeometry x="1020" y="1780" width="390" height="70" as="geometry" /></mxCell>
        <mxCell id="reset_ok" value="Reset password berhasil, kembali ke halaman login" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="1025" y="1890" width="390" height="60" as="geometry" /></mxCell>
        <mxCell id="e0" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="start" target="splash"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e1" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="splash" target="session"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e2" value="Ya" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="session" target="dashboard"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e3" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="dashboard" target="end"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e4" value="Tidak" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="session" target="login_page"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e5" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="login_page" target="choice"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e6" value="Login" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="choice" target="input_login"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e7" value="Lupa password" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="choice" target="input_email"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e8" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="input_login" target="api_login"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e9" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="api_login" target="db_login"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e10" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="db_login" target="valid_login"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e11" value="Ya" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="valid_login" target="login_success"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e12" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="login_success" target="dashboard"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e13" value="Tidak" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="valid_login" target="login_fail"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e14" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="login_fail" target="login_back"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e15" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="login_back" target="input_login"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e16" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="input_email" target="send_otp"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e17" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="send_otp" target="db_account"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e18" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="db_account" target="found"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e19" value="Ya" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="found" target="gen_otp"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e20" value="Tidak" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="found" target="not_found"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e21" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="not_found" target="input_email"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e22" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="gen_otp" target="save_otp"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e23" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="save_otp" target="email_otp"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e24" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="email_otp" target="input_otp"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e25" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="input_otp" target="verify_otp"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e26" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="verify_otp" target="db_otp"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e27" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="db_otp" target="otp_valid"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e28" value="Ya" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="otp_valid" target="new_pass"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e29" value="Tidak" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="otp_valid" target="otp_fail"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e30" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="otp_fail" target="input_otp"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e31" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="new_pass" target="reset_api"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e32" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="reset_api" target="update_pass"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e33" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="update_pass" target="reset_ok"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="e34" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="reset_ok" target="login_page"><mxGeometry relative="1" as="geometry" /></mxCell>

      </root>
    </mxGraphModel>
  </diagram>
</mxfile>