<mxfile host="app.diagrams.net" modified="2026-04-22T12:00:00.000Z" agent="Codex" version="25.0.2">
  <diagram id="attendance-review-v2-detection-formula-engine" name="Attendance Review V2 Detection Formula Engine">
    <mxGraphModel dx="1662" dy="931" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2400" pageHeight="2000" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />

        <mxCell id="title" value="Attendance Review V2 - Detection Formula Engine" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=24;fontStyle=1;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="30" y="20" width="760" height="30" as="geometry" />
        </mxCell>
        <mxCell id="subtitle" value="Flow dari route detect, queue job, detection harian, overlay review matrix, sampai kalkulasi jam normal dan overtime weighted." style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=12;fontColor=#475569;" vertex="1" parent="1">
          <mxGeometry x="30" y="52" width="1200" height="20" as="geometry" />
        </mxCell>

        <mxCell id="sec1" value="1. Trigger &amp; Input Layer" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=#cbd5e1;fillColor=#f8fafc;fontSize=16;fontStyle=1;fontColor=#0f172a;align=left;verticalAlign=top;spacingTop=12;spacingLeft=14;" vertex="1" parent="1">
          <mxGeometry x="30" y="90" width="2310" height="160" as="geometry" />
        </mxCell>
        <mxCell id="sec2" value="2. Detection Core Per Karyawan x Tanggal" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=#bbf7d0;fillColor=#f0fdf4;fontSize=16;fontStyle=1;fontColor=#0f172a;align=left;verticalAlign=top;spacingTop=12;spacingLeft=14;" vertex="1" parent="1">
          <mxGeometry x="30" y="270" width="2310" height="720" as="geometry" />
        </mxCell>
        <mxCell id="sec3" value="3. ReviewData Overlay (V2 Matrix)" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=#bfdbfe;fillColor=#eff6ff;fontSize=16;fontStyle=1;fontColor=#0f172a;align=left;verticalAlign=top;spacingTop=12;spacingLeft=14;" vertex="1" parent="1">
          <mxGeometry x="30" y="1010" width="2310" height="250" as="geometry" />
        </mxCell>
        <mxCell id="sec4" value="4. CalculationData Formula Layer" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=#d8b4fe;fillColor=#faf5ff;fontSize=16;fontStyle=1;fontColor=#0f172a;align=left;verticalAlign=top;spacingTop=12;spacingLeft=14;" vertex="1" parent="1">
          <mxGeometry x="30" y="1280" width="2310" height="460" as="geometry" />
        </mxCell>

        <mxCell id="n1" value="Route V2&#xa;POST /attendance-review-v2/detect&#xa;runDetection()" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#64748b;fontSize=13;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="70" y="135" width="220" height="72" as="geometry" />
        </mxCell>
        <mxCell id="n2" value="AttendanceExportJob&#xa;status: pending - processing - done" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#64748b;fontSize=13;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="340" y="135" width="230" height="72" as="geometry" />
        </mxCell>
        <mxCell id="n3" value="RunAttendanceDetectionJob&#xa;handle() -> processDetectionJob()" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e2e8f0;strokeColor=#475569;fontSize=13;fontStyle=1;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="630" y="135" width="260" height="72" as="geometry" />
        </mxCell>
        <mxCell id="n4" value="Input Engine&#xa;- profil bulan&#xa;- assignment aktif&#xa;- custom shift schedule&#xa;- log mentah&#xa;- rounding rule&#xa;- approved SPL" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#64748b;fontSize=13;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="970" y="118" width="270" height="110" as="geometry" />
        </mxCell>
        <mxCell id="n5" value="Loop chunk 150 user&#xa;lalu loop per tanggal profil bulan" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#64748b;fontSize=13;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="1310" y="135" width="220" height="72" as="geometry" />
        </mxCell>

        <mxCell id="d1" value="Resolve shift aktif&#xa;priority: custom schedule -> assignment -> weekly rotate" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#16a34a;fontSize=13;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="70" y="330" width="270" height="86" as="geometry" />
        </mxCell>
        <mxCell id="d2" value="Build planning&#xa;shiftStart = tanggal + start_time&#xa;shiftEnd = tanggal + end_time&#xa;jika end &lt;= start -> cross-day +1 hari" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#16a34a;fontSize=13;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="390" y="320" width="290" height="106" as="geometry" />
        </mxCell>
        <mxCell id="d3" value="Resolve approved SPL window&#xa;allow_pre / pre_start&#xa;allow_post / post_end" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#16a34a;fontSize=13;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="740" y="332" width="240" height="82" as="geometry" />
        </mxCell>
        <mxCell id="d4" value="Candidate log window&#xa;windowStart = shiftStart - 6 jam&#xa;windowEnd = shiftEnd + 8 jam&#xa;ambil log yang jatuh di window" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dcfce7;strokeColor=#15803d;fontSize=13;fontStyle=1;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="1040" y="320" width="310" height="106" as="geometry" />
        </mxCell>
        <mxCell id="d5" value="Jumlah kandidat log?" style="rhombus;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#15803d;fontSize=13;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="1430" y="340" width="120" height="70" as="geometry" />
        </mxCell>

        <mxCell id="d6" value="count = 0&#xa;status = no_log&#xa;reason = Tidak ada log dalam window shift&#xa;confidence = 0" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8fafc;strokeColor=#64748b;fontSize=13;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="1620" y="285" width="280" height="96" as="geometry" />
        </mxCell>
        <mxCell id="d7" value="count = 1&#xa;jika log &lt;= shiftStart + 4 jam -> missing_out&#xa;checkin = log, suggestedOut = shiftEnd, conf = 62.5&#xa;lainnya -> missing_in&#xa;checkout = log, suggestedIn = shiftStart, conf = 58.0" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#15803d;fontSize=13;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="1620" y="400" width="340" height="142" as="geometry" />
        </mxCell>
        <mxCell id="d8" value="count &gt;= 2&#xa;checkin = firstLog&#xa;checkout = lastLog&#xa;startDiff = |shiftStart - checkin|&#xa;endDiff = |shiftEnd - checkout|&#xa;confidence = clamp(100 - ((startDiff + endDiff) / 4), 10, 100)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#15803d;fontSize=13;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="1620" y="565" width="350" height="142" as="geometry" />
        </mxCell>
        <mxCell id="d9" value="Rule status multi-log&#xa;normal: startDiff &lt;= 180 &amp;&amp; endDiff &lt;= 240&#xa;shift_transition:&#xa;- startDiff &gt; 240 &amp;&amp; endDiff &lt;= 240&#xa;- startDiff &lt;= 180 &amp;&amp; endDiff &gt; 300&#xa;else unpaired + suggestedIn/out = shift" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#15803d;fontSize=13;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="2010" y="565" width="290" height="142" as="geometry" />
        </mxCell>

        <mxCell id="d10" value="Apply rounding&#xa;method: floor / ceil / nearest&#xa;discipline_mode: checkin=ceil, checkout=floor" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#16a34a;fontSize=13;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="390" y="500" width="280" height="86" as="geometry" />
        </mxCell>
        <mxCell id="d11" value="Cap checkin lebih awal&#xa;if auto OT full_actual -> keep actual&#xa;elseif no pre SPL -> cap ke shiftStart&#xa;elseif pre_start ada -> cap ke pre_start" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#16a34a;fontSize=13;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="730" y="486" width="300" height="114" as="geometry" />
        </mxCell>
        <mxCell id="d12" value="Cap checkout lebih akhir&#xa;if auto OT without SPL -> keep actual&#xa;elseif no post SPL -> cap ke shiftEnd&#xa;elseif post_end ada -> cap ke post_end" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#16a34a;fontSize=13;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="1080" y="486" width="310" height="114" as="geometry" />
        </mxCell>
        <mxCell id="d13" value="Tambahkan trace reason&#xa;SPL Approved + No Job + jenis SPL + window" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#16a34a;fontSize=13;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="1450" y="505" width="250" height="76" as="geometry" />
        </mxCell>
        <mxCell id="d14" value="Review lama approved?" style="rhombus;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#15803d;fontSize=13;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="1770" y="508" width="120" height="70" as="geometry" />
        </mxCell>
        <mxCell id="d15" value="Bandingkan core detection&#xa;- status&#xa;- effective in/out&#xa;- planned shift&#xa;- suggested in/out&#xa;- cross-day" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#16a34a;fontSize=13;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="1960" y="488" width="250" height="110" as="geometry" />
        </mxCell>
        <mxCell id="d16" value="Jika berubah -> reset approval&#xa;Jika sama -> approval dipertahankan" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dcfce7;strokeColor=#15803d;fontSize=13;fontStyle=1;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="1960" y="630" width="250" height="76" as="geometry" />
        </mxCell>
        <mxCell id="d17" value="Save AttendanceDailyReview&#xa;Save History: created/updated_by_detection" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dcfce7;strokeColor=#15803d;fontSize=13;fontStyle=1;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="2240" y="540" width="90" height="116" as="geometry" />
        </mxCell>

        <mxCell id="r1" value="buildCalendarMarks&#xa;weekend default + event workday/holiday/holiday_special" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#2563eb;fontSize=13;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="70" y="1070" width="260" height="82" as="geometry" />
        </mxCell>
        <mxCell id="r2" value="Tag source map&#xa;leave approved&#xa;overtime draft/submitted/in_review/approved&#xa;forgetting clock draft/submitted/in_review/approved" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#2563eb;fontSize=13;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="400" y="1058" width="330" height="108" as="geometry" />
        </mxCell>
        <mxCell id="r3" value="Tag priority&#xa;Leave > Overtime > Forgetting Clock" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dbeafe;strokeColor=#1d4ed8;fontSize=13;fontStyle=1;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="800" y="1072" width="220" height="80" as="geometry" />
        </mxCell>
        <mxCell id="r4" value="Effective status&#xa;leave_approved override&#xa;overtime_approved bisa override no_log" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#2563eb;fontSize=13;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="1080" y="1070" width="250" height="82" as="geometry" />
        </mxCell>
        <mxCell id="r5" value="Flag Butuh SPL&#xa;rawOut &gt; plannedEnd&#xa;tidak ada SPL&#xa;bukan auto OT&#xa;>= threshold" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#2563eb;fontSize=13;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="1390" y="1070" width="220" height="82" as="geometry" />
        </mxCell>
        <mxCell id="r6" value="Flag Butuh Extend SPL&#xa;ada SPL approved&#xa;rawOut &gt; post_end&#xa;bukan auto OT&#xa;>= threshold" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#2563eb;fontSize=13;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="1660" y="1070" width="240" height="82" as="geometry" />
        </mxCell>
        <mxCell id="r7" value="Output review matrix V2&#xa;status, tag, confidence, raw in/out, reason, Butuh SPL, Extend SPL, offline pending" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dbeafe;strokeColor=#1d4ed8;fontSize=13;fontStyle=1;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="1960" y="1058" width="330" height="108" as="geometry" />
        </mxCell>

        <mxCell id="c1" value="resolveDayTypeForCalculation&#xa;workday_map -> holiday_special_map -> holiday_map -> weekend -> workday" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#9333ea;fontSize=13;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="70" y="1340" width="330" height="92" as="geometry" />
        </mxCell>
        <mxCell id="c2" value="plannedMinutes&#xa;shift.work_minutes_per_day&#xa;else planned shift diff&#xa;else fallback 480 menit" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#9333ea;fontSize=13;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="460" y="1340" width="250" height="92" as="geometry" />
        </mxCell>
        <mxCell id="c3" value="Effective actual in/out&#xa;pakai hasil cap SPL / auto OT dari review" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#9333ea;fontSize=13;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="770" y="1340" width="230" height="92" as="geometry" />
        </mxCell>
        <mxCell id="c4" value="Rumus jam&#xa;actualMinutes = diff(in,out)&#xa;normalMinutes = workday ? min(actual, planned) : 0&#xa;overtimeMinutes = workday ? max(0, actual-planned) : (splApproved ? actual : 0)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f3e8ff;strokeColor=#7e22ce;fontSize=13;fontStyle=1;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="1060" y="1328" width="410" height="116" as="geometry" />
        </mxCell>
        <mxCell id="c5" value="Break deduction&#xa;ambil rule is_break per dayType&#xa;NoRest-2 skip BREAK x0 -> deduction = 0" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#9333ea;fontSize=13;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="1530" y="1340" width="280" height="92" as="geometry" />
        </mxCell>
        <mxCell id="c6" value="overtimeHoursGross = overtimeMinutes / 60&#xa;overtimeHours = gross - breakDeduction" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#9333ea;fontSize=13;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="1870" y="1340" width="240" height="92" as="geometry" />
        </mxCell>
        <mxCell id="c7" value="buildOvertimeTimeline&#xa;slot per jam ke-1, ke-2, dst&#xa;pakai multiplier profile per dayType" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#9333ea;fontSize=13;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="70" y="1490" width="260" height="92" as="geometry" />
        </mxCell>
        <mxCell id="c8" value="Fallback holiday_special&#xa;jika tidak ada rule khusus -> 1 s/d 24 jam = x4" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffedd5;strokeColor=#f97316;fontSize=13;fontStyle=1;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="390" y="1490" width="270" height="92" as="geometry" />
        </mxCell>
        <mxCell id="c9" value="weightedOvertimeHours&#xa;sum(chunkHour x multiplier)&#xa;+ OT bucket dinamis per multiplier" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f3e8ff;strokeColor=#7e22ce;fontSize=13;fontStyle=1;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="730" y="1490" width="280" height="92" as="geometry" />
        </mxCell>
        <mxCell id="c10" value="Output calculationData&#xa;summary employee&#xa;daily rows approved&#xa;OT columns dinamis&#xa;weighted OT -> basis payroll" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ede9fe;strokeColor=#6d28d9;fontSize=13;fontStyle=1;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="1080" y="1490" width="320" height="92" as="geometry" />
        </mxCell>

        <mxCell id="e1" edge="1" parent="1" source="n1" target="n2" style="endArrow=block;endFill=1;strokeColor=#64748b;" />
        <mxCell id="e2" edge="1" parent="1" source="n2" target="n3" style="endArrow=block;endFill=1;strokeColor=#64748b;" />
        <mxCell id="e3" edge="1" parent="1" source="n3" target="n4" style="endArrow=block;endFill=1;strokeColor=#64748b;" />
        <mxCell id="e4" edge="1" parent="1" source="n4" target="n5" style="endArrow=block;endFill=1;strokeColor=#64748b;" />

        <mxCell id="e5" edge="1" parent="1" source="n5" target="d1" style="endArrow=block;endFill=1;strokeColor=#15803d;" />
        <mxCell id="e6" edge="1" parent="1" source="d1" target="d2" style="endArrow=block;endFill=1;strokeColor=#15803d;" />
        <mxCell id="e7" edge="1" parent="1" source="d2" target="d3" style="endArrow=block;endFill=1;strokeColor=#15803d;" />
        <mxCell id="e8" edge="1" parent="1" source="d3" target="d4" style="endArrow=block;endFill=1;strokeColor=#15803d;" />
        <mxCell id="e9" edge="1" parent="1" source="d4" target="d5" style="endArrow=block;endFill=1;strokeColor=#15803d;" />
        <mxCell id="e10" edge="1" parent="1" source="d5" target="d6" style="endArrow=block;endFill=1;strokeColor=#15803d;" />
        <mxCell id="e11" edge="1" parent="1" source="d5" target="d7" style="endArrow=block;endFill=1;strokeColor=#15803d;" />
        <mxCell id="e12" edge="1" parent="1" source="d5" target="d8" style="endArrow=block;endFill=1;strokeColor=#15803d;" />
        <mxCell id="e13" edge="1" parent="1" source="d8" target="d9" style="endArrow=block;endFill=1;strokeColor=#15803d;" />
        <mxCell id="e14" edge="1" parent="1" source="d6" target="d10" style="endArrow=block;endFill=1;strokeColor=#15803d;" />
        <mxCell id="e15" edge="1" parent="1" source="d7" target="d10" style="endArrow=block;endFill=1;strokeColor=#15803d;" />
        <mxCell id="e16" edge="1" parent="1" source="d9" target="d10" style="endArrow=block;endFill=1;strokeColor=#15803d;" />
        <mxCell id="e17" edge="1" parent="1" source="d10" target="d11" style="endArrow=block;endFill=1;strokeColor=#15803d;" />
        <mxCell id="e18" edge="1" parent="1" source="d11" target="d12" style="endArrow=block;endFill=1;strokeColor=#15803d;" />
        <mxCell id="e19" edge="1" parent="1" source="d12" target="d13" style="endArrow=block;endFill=1;strokeColor=#15803d;" />
        <mxCell id="e20" edge="1" parent="1" source="d13" target="d14" style="endArrow=block;endFill=1;strokeColor=#15803d;" />
        <mxCell id="e21" edge="1" parent="1" source="d14" target="d15" style="endArrow=block;endFill=1;strokeColor=#15803d;" />
        <mxCell id="e22" edge="1" parent="1" source="d15" target="d16" style="endArrow=block;endFill=1;strokeColor=#15803d;" />
        <mxCell id="e23" edge="1" parent="1" source="d16" target="d17" style="endArrow=block;endFill=1;strokeColor=#15803d;" />

        <mxCell id="e24" edge="1" parent="1" source="d17" target="r1" style="endArrow=block;endFill=1;strokeColor=#1d4ed8;" />
        <mxCell id="e25" edge="1" parent="1" source="r1" target="r2" style="endArrow=block;endFill=1;strokeColor=#1d4ed8;" />
        <mxCell id="e26" edge="1" parent="1" source="r2" target="r3" style="endArrow=block;endFill=1;strokeColor=#1d4ed8;" />
        <mxCell id="e27" edge="1" parent="1" source="r3" target="r4" style="endArrow=block;endFill=1;strokeColor=#1d4ed8;" />
        <mxCell id="e28" edge="1" parent="1" source="r4" target="r5" style="endArrow=block;endFill=1;strokeColor=#1d4ed8;" />
        <mxCell id="e29" edge="1" parent="1" source="r5" target="r6" style="endArrow=block;endFill=1;strokeColor=#1d4ed8;" />
        <mxCell id="e30" edge="1" parent="1" source="r6" target="r7" style="endArrow=block;endFill=1;strokeColor=#1d4ed8;" />

        <mxCell id="e31" edge="1" parent="1" source="r7" target="c1" style="endArrow=block;endFill=1;strokeColor=#7e22ce;" />
        <mxCell id="e32" edge="1" parent="1" source="c1" target="c2" style="endArrow=block;endFill=1;strokeColor=#7e22ce;" />
        <mxCell id="e33" edge="1" parent="1" source="c2" target="c3" style="endArrow=block;endFill=1;strokeColor=#7e22ce;" />
        <mxCell id="e34" edge="1" parent="1" source="c3" target="c4" style="endArrow=block;endFill=1;strokeColor=#7e22ce;" />
        <mxCell id="e35" edge="1" parent="1" source="c4" target="c5" style="endArrow=block;endFill=1;strokeColor=#7e22ce;" />
        <mxCell id="e36" edge="1" parent="1" source="c5" target="c6" style="endArrow=block;endFill=1;strokeColor=#7e22ce;" />
        <mxCell id="e37" edge="1" parent="1" source="c6" target="c7" style="endArrow=block;endFill=1;strokeColor=#7e22ce;" />
        <mxCell id="e38" edge="1" parent="1" source="c7" target="c8" style="endArrow=block;endFill=1;strokeColor=#7e22ce;" />
        <mxCell id="e39" edge="1" parent="1" source="c8" target="c9" style="endArrow=block;endFill=1;strokeColor=#7e22ce;" />
        <mxCell id="e40" edge="1" parent="1" source="c9" target="c10" style="endArrow=block;endFill=1;strokeColor=#7e22ce;" />
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
