Skip to content

Module Dependencies

This page is generated by scripts/generate_dependency_graph.py from the live import graph of src/rwa_calc, built with the curfew dependency tool. It is a snapshot of how the code actually imports itself — not a hand-drawn design diagram.

Regenerate after structural refactors:

uv run python scripts/generate_dependency_graph.py

Inspect a single module's dependencies and dependents directly:

uv run curfew report rwa_calc.engine.classify

Last generated: 2026-09-05.

Package overview

Each node is a top-level subpackage of rwa_calc; an arrow A --> B means some module in A imports some module in B. Module-level imports are collapsed to their package here for readability.

flowchart LR
    p0["rwa_calc"]
    p1["rwa_calc.analysis"]
    p2["rwa_calc.api"]
    p3["rwa_calc.config"]
    p4["rwa_calc.contracts"]
    p5["rwa_calc.data"]
    p6["rwa_calc.domain"]
    p7["rwa_calc.engine"]
    p8["rwa_calc.observability"]
    p9["rwa_calc.reporting"]
    p10["rwa_calc.rulebook"]
    p11["rwa_calc.ui"]
    p12["rwa_calc.worker_bootstrap"]
    p1 --> p4
    p1 --> p5
    p1 --> p6
    p1 --> p7
    p1 --> p8
    p1 --> p9
    p1 --> p10
    p2 --> p1
    p2 --> p3
    p2 --> p4
    p2 --> p6
    p2 --> p7
    p2 --> p8
    p2 --> p9
    p2 --> p10
    p2 --> p12
    p4 --> p2
    p4 --> p5
    p4 --> p6
    p4 --> p7
    p4 --> p10
    p7 --> p3
    p7 --> p4
    p7 --> p5
    p7 --> p6
    p7 --> p8
    p7 --> p10
    p8 --> p4
    p9 --> p0
    p9 --> p4
    p9 --> p6
    p9 --> p7
    p9 --> p10
    p10 --> p4
    p10 --> p6
    p11 --> p1
    p11 --> p2
    p11 --> p4
    p11 --> p6
    p11 --> p7
    p11 --> p8
    p11 --> p9
    classDef first_party fill:#e8f0fe,stroke:#1a73e8,color:#202124
    class p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12 first_party

Full module graph

The complete graph, one node per module, exactly as curfew show --mermaid emits it.

Full module-level graph (258 modules)
flowchart LR
    n0["rwa_calc"]
    n1["rwa_calc.analysis"]
    n2["rwa_calc.analysis.attribution"]
    n3["rwa_calc.analysis.comparison"]
    n4["rwa_calc.analysis.legacy_ledger"]
    n5["rwa_calc.analysis.recon_registry"]
    n6["rwa_calc.analysis.reconciliation"]
    n7["rwa_calc.analysis.return_recon"]
    n8["rwa_calc.analysis.transition"]
    n9["rwa_calc.api"]
    n10["rwa_calc.api.batch"]
    n11["rwa_calc.api.errors"]
    n12["rwa_calc.api.export"]
    n13["rwa_calc.api.formatters"]
    n14["rwa_calc.api.models"]
    n15["rwa_calc.api.reconciliation"]
    n16["rwa_calc.api.rest"]
    n17["rwa_calc.api.results_cache"]
    n18["rwa_calc.api.run_index"]
    n19["rwa_calc.api.service"]
    n20["rwa_calc.api.validation"]
    n21["rwa_calc.config"]
    n22["rwa_calc.config.data_sources"]
    n23["rwa_calc.contracts"]
    n24["rwa_calc.contracts.bundles"]
    n25["rwa_calc.contracts.config"]
    n26["rwa_calc.contracts.context"]
    n27["rwa_calc.contracts.edges"]
    n28["rwa_calc.contracts.errors"]
    n29["rwa_calc.contracts.protocols"]
    n30["rwa_calc.contracts.results"]
    n31["rwa_calc.contracts.validation"]
    n32["rwa_calc.data"]
    n33["rwa_calc.data.column_spec"]
    n34["rwa_calc.data.schemas"]
    n35["rwa_calc.domain"]
    n36["rwa_calc.domain.branch_reasons"]
    n37["rwa_calc.domain.enums"]
    n38["rwa_calc.engine"]
    n39["rwa_calc.engine.aggregator"]
    n40["rwa_calc.engine.aggregator._collapse"]
    n41["rwa_calc.engine.aggregator._el_summary"]
    n42["rwa_calc.engine.aggregator._equity_prep"]
    n43["rwa_calc.engine.aggregator._facility_share"]
    n44["rwa_calc.engine.aggregator._floor"]
    n45["rwa_calc.engine.aggregator._lgd_floor_check"]
    n46["rwa_calc.engine.aggregator._schemas"]
    n47["rwa_calc.engine.aggregator._securitisation"]
    n48["rwa_calc.engine.aggregator._summaries"]
    n49["rwa_calc.engine.aggregator._supporting_factors"]
    n50["rwa_calc.engine.aggregator._utils"]
    n51["rwa_calc.engine.aggregator.aggregator"]
    n52["rwa_calc.engine.branch_reason"]
    n53["rwa_calc.engine.branch_split"]
    n54["rwa_calc.engine.ccf"]
    n55["rwa_calc.engine.ccr"]
    n56["rwa_calc.engine.ccr.adjusted_notional"]
    n57["rwa_calc.engine.ccr.ccp"]
    n58["rwa_calc.engine.ccr.default_fund"]
    n59["rwa_calc.engine.ccr.failed_trades"]
    n60["rwa_calc.engine.ccr.hedging_sets"]
    n61["rwa_calc.engine.ccr.maturity_factor"]
    n62["rwa_calc.engine.ccr.pfe"]
    n63["rwa_calc.engine.ccr.pipeline_adapter"]
    n64["rwa_calc.engine.ccr.rc"]
    n65["rwa_calc.engine.ccr.sa_ccr"]
    n66["rwa_calc.engine.ccr.supervisory_delta"]
    n67["rwa_calc.engine.ccr.wwr"]
    n68["rwa_calc.engine.classify"]
    n69["rwa_calc.engine.classify.approach"]
    n70["rwa_calc.engine.classify.attributes"]
    n71["rwa_calc.engine.classify.audit"]
    n72["rwa_calc.engine.classify.classifier"]
    n73["rwa_calc.engine.classify.permissions"]
    n74["rwa_calc.engine.classify.subtypes"]
    n75["rwa_calc.engine.crm"]
    n76["rwa_calc.engine.crm.collateral"]
    n77["rwa_calc.engine.crm.collateral_type_check"]
    n78["rwa_calc.engine.crm.eligibility"]
    n79["rwa_calc.engine.crm.expressions"]
    n80["rwa_calc.engine.crm.guarantees"]
    n81["rwa_calc.engine.crm.haircut_tables"]
    n82["rwa_calc.engine.crm.haircuts"]
    n83["rwa_calc.engine.crm.life_insurance"]
    n84["rwa_calc.engine.crm.link_allocation"]
    n85["rwa_calc.engine.crm.look_through"]
    n86["rwa_calc.engine.crm.min_collateralisation"]
    n87["rwa_calc.engine.crm.ofcp_routing"]
    n88["rwa_calc.engine.crm.processor"]
    n89["rwa_calc.engine.crm.provisions"]
    n90["rwa_calc.engine.crm.simple_method"]
    n91["rwa_calc.engine.crm.third_party_deposit"]
    n92["rwa_calc.engine.cva"]
    n93["rwa_calc.engine.cva.ba_cva"]
    n94["rwa_calc.engine.entity_class_maps"]
    n95["rwa_calc.engine.equity"]
    n96["rwa_calc.engine.equity.calculator"]
    n97["rwa_calc.engine.eu_sovereign"]
    n98["rwa_calc.engine.fx"]
    n99["rwa_calc.engine.fx.conversion"]
    n100["rwa_calc.engine.fx.converter"]
    n101["rwa_calc.engine.fx_rate_sync"]
    n102["rwa_calc.engine.hierarchy"]
    n103["rwa_calc.engine.hierarchy.enrich"]
    n104["rwa_calc.engine.hierarchy.facility_undrawn"]
    n105["rwa_calc.engine.hierarchy.graph"]
    n106["rwa_calc.engine.hierarchy.ratings"]
    n107["rwa_calc.engine.hierarchy.resolver"]
    n108["rwa_calc.engine.hierarchy.unify"]
    n109["rwa_calc.engine.irb"]
    n110["rwa_calc.engine.irb.adjustments"]
    n111["rwa_calc.engine.irb.calculator"]
    n112["rwa_calc.engine.irb.formulas"]
    n113["rwa_calc.engine.irb.guarantee"]
    n114["rwa_calc.engine.irb.stats_backend"]
    n115["rwa_calc.engine.irb.transforms"]
    n116["rwa_calc.engine.kernels"]
    n117["rwa_calc.engine.kernels.allocation"]
    n118["rwa_calc.engine.loader"]
    n119["rwa_calc.engine.materialise"]
    n120["rwa_calc.engine.orchestrator"]
    n121["rwa_calc.engine.pipeline"]
    n122["rwa_calc.engine.re_split"]
    n123["rwa_calc.engine.re_split.carriers"]
    n124["rwa_calc.engine.re_split.flagging"]
    n125["rwa_calc.engine.re_split.params"]
    n126["rwa_calc.engine.re_split.splitter"]
    n127["rwa_calc.engine.registry"]
    n128["rwa_calc.engine.sa"]
    n129["rwa_calc.engine.sa.b31_risk_weight_tables"]
    n130["rwa_calc.engine.sa.calculator"]
    n131["rwa_calc.engine.sa.central_bank"]
    n132["rwa_calc.engine.sa.covered_bond"]
    n133["rwa_calc.engine.sa.cqs_lift"]
    n134["rwa_calc.engine.sa.crr_risk_weight_tables"]
    n135["rwa_calc.engine.sa.factors_output"]
    n136["rwa_calc.engine.sa.guarantor_rw"]
    n137["rwa_calc.engine.sa.jurisdiction"]
    n138["rwa_calc.engine.sa.re_residual_rw"]
    n139["rwa_calc.engine.sa.rgla"]
    n140["rwa_calc.engine.sa.risk_weights"]
    n141["rwa_calc.engine.sa.rw_adjustments"]
    n142["rwa_calc.engine.sa.sovereign_derived"]
    n143["rwa_calc.engine.sa.sovereign_floor"]
    n144["rwa_calc.engine.scope"]
    n145["rwa_calc.engine.scope.resolver"]
    n146["rwa_calc.engine.securitisation"]
    n147["rwa_calc.engine.securitisation.allocator"]
    n148["rwa_calc.engine.sft"]
    n149["rwa_calc.engine.sft.fccm"]
    n150["rwa_calc.engine.slotting"]
    n151["rwa_calc.engine.slotting.calculator"]
    n152["rwa_calc.engine.slotting.transforms"]
    n153["rwa_calc.engine.stages"]
    n154["rwa_calc.engine.stages._ccr_shared"]
    n155["rwa_calc.engine.stages.aggregate"]
    n156["rwa_calc.engine.stages.calc"]
    n157["rwa_calc.engine.stages.ccr"]
    n158["rwa_calc.engine.stages.classify"]
    n159["rwa_calc.engine.stages.crm"]
    n160["rwa_calc.engine.stages.equity"]
    n161["rwa_calc.engine.stages.hierarchy"]
    n162["rwa_calc.engine.stages.re_split"]
    n163["rwa_calc.engine.stages.scope"]
    n164["rwa_calc.engine.stages.securitisation"]
    n165["rwa_calc.engine.stages.sft"]
    n166["rwa_calc.engine.supporting_factors"]
    n167["rwa_calc.engine.thresholds"]
    n168["rwa_calc.engine.utils"]
    n169["rwa_calc.observability"]
    n170["rwa_calc.observability.audit_cache"]
    n171["rwa_calc.observability.context"]
    n172["rwa_calc.observability.formatters"]
    n173["rwa_calc.observability.logging_setup"]
    n174["rwa_calc.observability.safe_values"]
    n175["rwa_calc.reporting"]
    n176["rwa_calc.reporting.catalog"]
    n177["rwa_calc.reporting.cellspec"]
    n178["rwa_calc.reporting.corep"]
    n179["rwa_calc.reporting.corep.c02"]
    n180["rwa_calc.reporting.corep.c07"]
    n181["rwa_calc.reporting.corep.c08"]
    n182["rwa_calc.reporting.corep.c08_03_cells"]
    n183["rwa_calc.reporting.corep.c08_06_cells"]
    n184["rwa_calc.reporting.corep.c08_07"]
    n185["rwa_calc.reporting.corep.c09"]
    n186["rwa_calc.reporting.corep.c34"]
    n187["rwa_calc.reporting.corep.crm_substitution"]
    n188["rwa_calc.reporting.corep.generator"]
    n189["rwa_calc.reporting.corep.of02"]
    n190["rwa_calc.reporting.corep.pd_scale"]
    n191["rwa_calc.reporting.corep.postpass"]
    n192["rwa_calc.reporting.corep.templates"]
    n193["rwa_calc.reporting.facts"]
    n194["rwa_calc.reporting.kernel"]
    n195["rwa_calc.reporting.kernel.bases"]
    n196["rwa_calc.reporting.kernel.columns"]
    n197["rwa_calc.reporting.kernel.excel"]
    n198["rwa_calc.reporting.kernel.filters"]
    n199["rwa_calc.reporting.kernel.rows"]
    n200["rwa_calc.reporting.kernel.sums"]
    n201["rwa_calc.reporting.lineage"]
    n202["rwa_calc.reporting.membership"]
    n203["rwa_calc.reporting.metadata"]
    n204["rwa_calc.reporting.pillar3"]
    n205["rwa_calc.reporting.pillar3.ccr"]
    n206["rwa_calc.reporting.pillar3.cms1"]
    n207["rwa_calc.reporting.pillar3.cms2"]
    n208["rwa_calc.reporting.pillar3.cr10"]
    n209["rwa_calc.reporting.pillar3.cr4"]
    n210["rwa_calc.reporting.pillar3.cr5"]
    n211["rwa_calc.reporting.pillar3.cr6"]
    n212["rwa_calc.reporting.pillar3.cr6a"]
    n213["rwa_calc.reporting.pillar3.cr7"]
    n214["rwa_calc.reporting.pillar3.cr7a"]
    n215["rwa_calc.reporting.pillar3.cr8"]
    n216["rwa_calc.reporting.pillar3.cr9"]
    n217["rwa_calc.reporting.pillar3.generator"]
    n218["rwa_calc.reporting.pillar3.irb_scope"]
    n219["rwa_calc.reporting.pillar3.ov1"]
    n220["rwa_calc.reporting.pillar3.sa_scope"]
    n221["rwa_calc.reporting.pillar3.templates"]
    n222["rwa_calc.reporting.plans"]
    n223["rwa_calc.reporting.tieouts"]
    n224["rwa_calc.reporting.validations"]
    n225["rwa_calc.reporting.validations.checker"]
    n226["rwa_calc.reporting.validations.evaluate"]
    n227["rwa_calc.reporting.validations.rules"]
    n228["rwa_calc.reporting.validations.scope"]
    n229["rwa_calc.rulebook"]
    n230["rwa_calc.rulebook.audit"]
    n231["rwa_calc.rulebook.compile"]
    n232["rwa_calc.rulebook.model"]
    n233["rwa_calc.rulebook.packs"]
    n234["rwa_calc.rulebook.packs.b31"]
    n235["rwa_calc.rulebook.packs.common"]
    n236["rwa_calc.rulebook.packs.crr"]
    n237["rwa_calc.rulebook.registry"]
    n238["rwa_calc.rulebook.resolve"]
    n239["rwa_calc.rulebook.v0"]
    n240["rwa_calc.ui"]
    n241["rwa_calc.ui.app"]
    n242["rwa_calc.ui.app.calculator_state"]
    n243["rwa_calc.ui.app.main"]
    n244["rwa_calc.ui.app.output_writer"]
    n245["rwa_calc.ui.app.progress"]
    n246["rwa_calc.ui.app.recon_signoff"]
    n247["rwa_calc.ui.app.recon_state"]
    n248["rwa_calc.ui.views"]
    n249["rwa_calc.ui.views.charts"]
    n250["rwa_calc.ui.views.comparison"]
    n251["rwa_calc.ui.views.hierarchy"]
    n252["rwa_calc.ui.views.lineage"]
    n253["rwa_calc.ui.views.method_split"]
    n254["rwa_calc.ui.views.reconciliation"]
    n255["rwa_calc.ui.views.report_templates"]
    n256["rwa_calc.ui.views.return_recon"]
    n257["rwa_calc.worker_bootstrap"]
    n2 --> n24
    n3 --> n2
    n3 --> n24
    n3 --> n25
    n3 --> n121
    n3 --> n229
    n3 --> n238
    n4 --> n5
    n4 --> n34
    n4 --> n37
    n4 --> n192
    n6 --> n5
    n6 --> n24
    n6 --> n28
    n6 --> n40
    n6 --> n48
    n7 --> n4
    n7 --> n169
    n7 --> n177
    n7 --> n188
    n7 --> n194
    n7 --> n201
    n7 --> n202
    n7 --> n203
    n7 --> n222
    n8 --> n24
    n8 --> n25
    n8 --> n37
    n8 --> n121
    n9 --> n5
    n9 --> n10
    n9 --> n12
    n9 --> n14
    n9 --> n15
    n9 --> n16
    n9 --> n17
    n9 --> n19
    n9 --> n20
    n10 --> n11
    n10 --> n14
    n10 --> n18
    n10 --> n19
    n10 --> n37
    n10 --> n257
    n11 --> n14
    n11 --> n28
    n12 --> n14
    n12 --> n24
    n12 --> n25
    n12 --> n28
    n12 --> n30
    n12 --> n188
    n12 --> n193
    n12 --> n194
    n12 --> n217
    n12 --> n224
    n13 --> n11
    n13 --> n14
    n13 --> n17
    n13 --> n24
    n14 --> n4
    n14 --> n6
    n14 --> n11
    n14 --> n12
    n14 --> n24
    n15 --> n5
    n16 --> n12
    n16 --> n14
    n16 --> n15
    n16 --> n18
    n16 --> n19
    n16 --> n20
    n16 --> n37
    n16 --> n176
    n16 --> n188
    n16 --> n193
    n16 --> n194
    n16 --> n201
    n16 --> n217
    n16 --> n224
    n18 --> n14
    n18 --> n24
    n19 --> n4
    n19 --> n5
    n19 --> n6
    n19 --> n11
    n19 --> n13
    n19 --> n14
    n19 --> n15
    n19 --> n17
    n19 --> n20
    n19 --> n24
    n19 --> n25
    n19 --> n28
    n19 --> n29
    n19 --> n37
    n19 --> n118
    n19 --> n121
    n19 --> n169
    n19 --> n229
    n20 --> n11
    n20 --> n14
    n20 --> n22
    n23 --> n24
    n23 --> n25
    n23 --> n27
    n23 --> n28
    n23 --> n29
    n23 --> n31
    n23 --> n37
    n24 --> n27
    n24 --> n28
    n24 --> n37
    n25 --> n37
    n27 --> n33
    n27 --> n34
    n27 --> n36
    n28 --> n37
    n29 --> n14
    n29 --> n24
    n29 --> n25
    n29 --> n28
    n29 --> n30
    n29 --> n84
    n29 --> n238
    n31 --> n24
    n31 --> n27
    n31 --> n28
    n31 --> n33
    n31 --> n34
    n31 --> n36
    n34 --> n33
    n35 --> n37
    n38 --> n102
    n38 --> n118
    n38 --> n121
    n39 --> n43
    n39 --> n51
    n40 --> n34
    n41 --> n24
    n41 --> n46
    n41 --> n50
    n42 --> n37
    n43 --> n28
    n43 --> n46
    n43 --> n50
    n44 --> n24
    n44 --> n46
    n44 --> n50
    n44 --> n231
    n44 --> n238
    n45 --> n28
    n45 --> n37
    n45 --> n238
    n49 --> n46
    n49 --> n50
    n51 --> n24
    n51 --> n25
    n51 --> n27
    n51 --> n28
    n51 --> n37
    n51 --> n41
    n51 --> n42
    n51 --> n43
    n51 --> n44
    n51 --> n45
    n51 --> n46
    n51 --> n47
    n51 --> n48
    n51 --> n49
    n51 --> n50
    n51 --> n140
    n51 --> n229
    n51 --> n238
    n52 --> n36
    n53 --> n37
    n54 --> n25
    n54 --> n34
    n54 --> n37
    n54 --> n229
    n54 --> n231
    n54 --> n238
    n55 --> n56
    n55 --> n60
    n55 --> n61
    n55 --> n62
    n55 --> n63
    n55 --> n64
    n55 --> n65
    n55 --> n66
    n55 --> n67
    n56 --> n231
    n56 --> n238
    n57 --> n231
    n57 --> n238
    n58 --> n25
    n58 --> n231
    n58 --> n238
    n59 --> n25
    n59 --> n231
    n59 --> n238
    n60 --> n34
    n61 --> n231
    n61 --> n238
    n62 --> n25
    n62 --> n33
    n62 --> n34
    n62 --> n64
    n62 --> n231
    n62 --> n238
    n63 --> n24
    n63 --> n25
    n63 --> n28
    n63 --> n33
    n63 --> n34
    n63 --> n37
    n63 --> n56
    n63 --> n60
    n63 --> n61
    n63 --> n62
    n63 --> n64
    n63 --> n66
    n63 --> n231
    n63 --> n238
    n65 --> n24
    n65 --> n25
    n65 --> n28
    n65 --> n37
    n66 --> n114
    n66 --> n231
    n66 --> n238
    n67 --> n24
    n67 --> n28
    n67 --> n33
    n67 --> n34
    n67 --> n37
    n67 --> n231
    n67 --> n238
    n68 --> n72
    n69 --> n25
    n69 --> n33
    n69 --> n34
    n69 --> n37
    n69 --> n70
    n69 --> n73
    n69 --> n97
    n69 --> n167
    n69 --> n229
    n69 --> n238
    n70 --> n25
    n70 --> n34
    n70 --> n37
    n70 --> n94
    n70 --> n167
    n70 --> n168
    n70 --> n229
    n70 --> n238
    n71 --> n24
    n71 --> n25
    n71 --> n28
    n71 --> n37
    n71 --> n70
    n71 --> n74
    n71 --> n167
    n71 --> n229
    n71 --> n238
    n72 --> n24
    n72 --> n25
    n72 --> n27
    n72 --> n28
    n72 --> n69
    n72 --> n70
    n72 --> n71
    n72 --> n73
    n72 --> n74
    n72 --> n119
    n72 --> n124
    n72 --> n229
    n72 --> n238
    n73 --> n25
    n73 --> n28
    n73 --> n37
    n74 --> n25
    n74 --> n34
    n74 --> n37
    n74 --> n70
    n74 --> n112
    n74 --> n167
    n74 --> n168
    n74 --> n229
    n74 --> n238
    n75 --> n82
    n75 --> n83
    n75 --> n88
    n76 --> n25
    n76 --> n28
    n76 --> n33
    n76 --> n34
    n76 --> n37
    n76 --> n78
    n76 --> n79
    n76 --> n82
    n76 --> n86
    n76 --> n170
    n76 --> n229
    n76 --> n231
    n76 --> n238
    n77 --> n28
    n77 --> n79
    n78 --> n34
    n78 --> n37
    n79 --> n34
    n79 --> n117
    n79 --> n231
    n79 --> n238
    n80 --> n25
    n80 --> n28
    n80 --> n33
    n80 --> n34
    n80 --> n37
    n80 --> n54
    n80 --> n79
    n80 --> n94
    n80 --> n97
    n80 --> n117
    n80 --> n168
    n80 --> n229
    n80 --> n231
    n80 --> n238
    n81 --> n238
    n82 --> n25
    n82 --> n28
    n82 --> n33
    n82 --> n34
    n82 --> n37
    n82 --> n78
    n82 --> n81
    n82 --> n229
    n82 --> n231
    n82 --> n238
    n83 --> n25
    n83 --> n28
    n83 --> n34
    n83 --> n97
    n83 --> n168
    n83 --> n231
    n83 --> n238
    n84 --> n25
    n84 --> n28
    n84 --> n79
    n84 --> n117
    n85 --> n28
    n85 --> n33
    n86 --> n25
    n86 --> n28
    n86 --> n37
    n86 --> n229
    n86 --> n231
    n86 --> n238
    n87 --> n25
    n87 --> n33
    n87 --> n37
    n87 --> n76
    n87 --> n229
    n87 --> n238
    n88 --> n24
    n88 --> n25
    n88 --> n27
    n88 --> n28
    n88 --> n37
    n88 --> n54
    n88 --> n76
    n88 --> n77
    n88 --> n79
    n88 --> n80
    n88 --> n82
    n88 --> n83
    n88 --> n84
    n88 --> n85
    n88 --> n86
    n88 --> n87
    n88 --> n89
    n88 --> n90
    n88 --> n91
    n88 --> n117
    n88 --> n119
    n88 --> n140
    n88 --> n168
    n88 --> n170
    n88 --> n229
    n88 --> n238
    n89 --> n25
    n89 --> n37
    n89 --> n54
    n89 --> n117
    n89 --> n229
    n89 --> n238
    n90 --> n25
    n90 --> n37
    n90 --> n78
    n90 --> n129
    n90 --> n134
    n90 --> n229
    n90 --> n231
    n90 --> n238
    n91 --> n28
    n91 --> n34
    n91 --> n37
    n91 --> n136
    n92 --> n93
    n93 --> n231
    n93 --> n238
    n94 --> n238
    n95 --> n96
    n96 --> n24
    n96 --> n25
    n96 --> n28
    n96 --> n33
    n96 --> n37
    n96 --> n112
    n96 --> n129
    n96 --> n134
    n96 --> n229
    n96 --> n231
    n96 --> n238
    n97 --> n238
    n98 --> n99
    n98 --> n100
    n99 --> n25
    n99 --> n100
    n100 --> n25
    n102 --> n107
    n103 --> n24
    n103 --> n28
    n103 --> n94
    n103 --> n117
    n103 --> n168
    n104 --> n24
    n104 --> n25
    n104 --> n54
    n104 --> n105
    n104 --> n168
    n105 --> n24
    n105 --> n27
    n105 --> n28
    n105 --> n37
    n105 --> n106
    n105 --> n168
    n107 --> n24
    n107 --> n25
    n107 --> n27
    n107 --> n28
    n107 --> n98
    n107 --> n103
    n107 --> n104
    n107 --> n105
    n107 --> n106
    n107 --> n108
    n108 --> n24
    n108 --> n25
    n108 --> n28
    n108 --> n103
    n108 --> n104
    n108 --> n105
    n109 --> n111
    n109 --> n112
    n110 --> n25
    n110 --> n28
    n110 --> n37
    n110 --> n229
    n110 --> n238
    n111 --> n25
    n111 --> n28
    n111 --> n115
    n111 --> n166
    n111 --> n229
    n111 --> n238
    n112 --> n25
    n112 --> n37
    n112 --> n79
    n112 --> n110
    n112 --> n114
    n112 --> n167
    n112 --> n229
    n112 --> n231
    n112 --> n238
    n113 --> n25
    n113 --> n80
    n113 --> n94
    n113 --> n97
    n113 --> n112
    n113 --> n136
    n113 --> n167
    n113 --> n229
    n113 --> n231
    n113 --> n238
    n115 --> n25
    n115 --> n28
    n115 --> n33
    n115 --> n36
    n115 --> n37
    n115 --> n52
    n115 --> n110
    n115 --> n112
    n115 --> n113
    n115 --> n167
    n115 --> n168
    n115 --> n229
    n115 --> n231
    n115 --> n238
    n116 --> n117
    n117 --> n34
    n117 --> n168
    n118 --> n22
    n118 --> n24
    n118 --> n27
    n118 --> n28
    n118 --> n29
    n118 --> n31
    n118 --> n33
    n118 --> n34
    n118 --> n168
    n119 --> n25
    n119 --> n27
    n120 --> n24
    n120 --> n25
    n120 --> n26
    n120 --> n27
    n120 --> n28
    n120 --> n29
    n120 --> n39
    n120 --> n68
    n120 --> n88
    n120 --> n96
    n120 --> n102
    n120 --> n111
    n120 --> n122
    n120 --> n130
    n120 --> n147
    n120 --> n151
    n120 --> n169
    n120 --> n229
    n121 --> n24
    n121 --> n25
    n121 --> n26
    n121 --> n28
    n121 --> n29
    n121 --> n31
    n121 --> n37
    n121 --> n39
    n121 --> n101
    n121 --> n118
    n121 --> n119
    n121 --> n120
    n121 --> n127
    n121 --> n169
    n121 --> n170
    n121 --> n229
    n121 --> n230
    n122 --> n124
    n122 --> n126
    n124 --> n25
    n124 --> n37
    n124 --> n229
    n124 --> n238
    n125 --> n231
    n125 --> n238
    n126 --> n24
    n126 --> n25
    n126 --> n27
    n126 --> n28
    n126 --> n37
    n126 --> n123
    n126 --> n125
    n126 --> n229
    n126 --> n238
    n127 --> n120
    n127 --> n155
    n127 --> n156
    n127 --> n157
    n127 --> n158
    n127 --> n159
    n127 --> n160
    n127 --> n161
    n127 --> n162
    n127 --> n163
    n127 --> n164
    n127 --> n165
    n128 --> n130
    n129 --> n37
    n129 --> n134
    n129 --> n238
    n130 --> n25
    n130 --> n28
    n130 --> n37
    n130 --> n53
    n130 --> n135
    n130 --> n140
    n130 --> n141
    n130 --> n229
    n130 --> n238
    n131 --> n134
    n131 --> n238
    n132 --> n37
    n132 --> n129
    n132 --> n134
    n134 --> n37
    n134 --> n238
    n135 --> n25
    n135 --> n28
    n135 --> n33
    n135 --> n166
    n135 --> n238
    n136 --> n37
    n136 --> n231
    n136 --> n238
    n138 --> n37
    n138 --> n134
    n138 --> n142
    n138 --> n231
    n138 --> n238
    n139 --> n37
    n139 --> n134
    n140 --> n25
    n140 --> n33
    n140 --> n34
    n140 --> n37
    n140 --> n97
    n140 --> n129
    n140 --> n131
    n140 --> n132
    n140 --> n133
    n140 --> n134
    n140 --> n136
    n140 --> n137
    n140 --> n138
    n140 --> n139
    n140 --> n142
    n140 --> n143
    n140 --> n229
    n140 --> n231
    n140 --> n238
    n141 --> n25
    n141 --> n28
    n141 --> n37
    n141 --> n80
    n141 --> n94
    n141 --> n97
    n141 --> n136
    n141 --> n140
    n141 --> n229
    n141 --> n231
    n141 --> n238
    n142 --> n37
    n143 --> n36
    n143 --> n37
    n143 --> n52
    n143 --> n134
    n143 --> n142
    n144 --> n145
    n145 --> n24
    n145 --> n25
    n145 --> n27
    n145 --> n28
    n145 --> n37
    n146 --> n147
    n147 --> n24
    n147 --> n25
    n147 --> n28
    n147 --> n37
    n148 --> n149
    n149 --> n24
    n149 --> n81
    n149 --> n238
    n150 --> n151
    n151 --> n25
    n151 --> n28
    n151 --> n152
    n151 --> n166
    n151 --> n229
    n151 --> n238
    n152 --> n25
    n152 --> n28
    n152 --> n141
    n152 --> n168
    n152 --> n229
    n152 --> n231
    n152 --> n232
    n152 --> n238
    n154 --> n24
    n155 --> n25
    n155 --> n26
    n155 --> n27
    n155 --> n92
    n155 --> n120
    n155 --> n229
    n156 --> n25
    n156 --> n26
    n156 --> n27
    n156 --> n28
    n156 --> n33
    n156 --> n37
    n156 --> n46
    n156 --> n53
    n156 --> n119
    n156 --> n120
    n156 --> n166
    n156 --> n229
    n157 --> n25
    n157 --> n26
    n157 --> n27
    n157 --> n55
    n157 --> n58
    n157 --> n59
    n157 --> n119
    n157 --> n120
    n157 --> n154
    n157 --> n229
    n158 --> n25
    n158 --> n26
    n158 --> n120
    n158 --> n170
    n158 --> n229
    n159 --> n25
    n159 --> n26
    n159 --> n120
    n159 --> n229
    n160 --> n25
    n160 --> n26
    n160 --> n120
    n160 --> n170
    n160 --> n229
    n161 --> n25
    n161 --> n26
    n161 --> n27
    n161 --> n119
    n161 --> n120
    n161 --> n147
    n161 --> n170
    n161 --> n229
    n162 --> n25
    n162 --> n26
    n162 --> n27
    n162 --> n119
    n162 --> n120
    n162 --> n170
    n162 --> n229
    n163 --> n25
    n163 --> n26
    n163 --> n120
    n163 --> n145
    n163 --> n229
    n164 --> n25
    n164 --> n26
    n164 --> n120
    n164 --> n229
    n165 --> n25
    n165 --> n26
    n165 --> n27
    n165 --> n119
    n165 --> n120
    n165 --> n149
    n165 --> n154
    n165 --> n229
    n166 --> n25
    n166 --> n28
    n166 --> n37
    n166 --> n167
    n166 --> n229
    n166 --> n231
    n166 --> n238
    n167 --> n238
    n169 --> n170
    n169 --> n171
    n169 --> n172
    n169 --> n173
    n169 --> n174
    n170 --> n25
    n170 --> n171
    n173 --> n171
    n173 --> n172
    n175 --> n188
    n175 --> n217
    n175 --> n223
    n176 --> n188
    n176 --> n192
    n176 --> n217
    n176 --> n221
    n177 --> n194
    n177 --> n203
    n178 --> n188
    n178 --> n192
    n179 --> n24
    n179 --> n25
    n179 --> n192
    n179 --> n194
    n180 --> n37
    n180 --> n177
    n180 --> n187
    n180 --> n191
    n180 --> n192
    n180 --> n194
    n180 --> n195
    n180 --> n203
    n180 --> n222
    n181 --> n177
    n181 --> n182
    n181 --> n183
    n181 --> n187
    n181 --> n190
    n181 --> n191
    n181 --> n192
    n181 --> n194
    n181 --> n203
    n181 --> n222
    n182 --> n177
    n183 --> n191
    n184 --> n177
    n184 --> n192
    n184 --> n194
    n184 --> n203
    n184 --> n222
    n185 --> n177
    n185 --> n180
    n185 --> n191
    n185 --> n192
    n185 --> n194
    n185 --> n203
    n185 --> n222
    n186 --> n177
    n186 --> n192
    n186 --> n194
    n186 --> n203
    n186 --> n222
    n188 --> n24
    n188 --> n25
    n188 --> n30
    n188 --> n179
    n188 --> n180
    n188 --> n181
    n188 --> n184
    n188 --> n185
    n188 --> n186
    n188 --> n189
    n188 --> n192
    n188 --> n193
    n188 --> n194
    n188 --> n203
    n189 --> n25
    n189 --> n177
    n189 --> n192
    n189 --> n203
    n189 --> n222
    n190 --> n192
    n190 --> n196
    n191 --> n177
    n191 --> n187
    n191 --> n194
    n193 --> n0
    n193 --> n176
    n193 --> n188
    n193 --> n217
    n194 --> n195
    n194 --> n196
    n194 --> n197
    n194 --> n198
    n194 --> n199
    n194 --> n200
    n196 --> n119
    n198 --> n196
    n201 --> n177
    n201 --> n180
    n201 --> n181
    n201 --> n184
    n201 --> n185
    n201 --> n186
    n201 --> n189
    n201 --> n194
    n201 --> n203
    n201 --> n205
    n201 --> n206
    n201 --> n207
    n201 --> n208
    n201 --> n209
    n201 --> n210
    n201 --> n211
    n201 --> n212
    n201 --> n213
    n201 --> n214
    n201 --> n215
    n201 --> n216
    n201 --> n219
    n201 --> n222
    n202 --> n177
    n202 --> n194
    n202 --> n201
    n202 --> n203
    n202 --> n222
    n203 --> n24
    n203 --> n232
    n204 --> n217
    n205 --> n177
    n205 --> n194
    n205 --> n203
    n205 --> n221
    n205 --> n222
    n206 --> n177
    n206 --> n203
    n206 --> n221
    n206 --> n222
    n207 --> n177
    n207 --> n203
    n207 --> n206
    n207 --> n221
    n207 --> n222
    n208 --> n37
    n208 --> n177
    n208 --> n203
    n208 --> n218
    n208 --> n221
    n208 --> n222
    n209 --> n177
    n209 --> n203
    n209 --> n220
    n209 --> n221
    n209 --> n222
    n210 --> n177
    n210 --> n203
    n210 --> n220
    n210 --> n221
    n210 --> n222
    n211 --> n177
    n211 --> n203
    n211 --> n218
    n211 --> n221
    n211 --> n222
    n212 --> n177
    n212 --> n203
    n212 --> n221
    n212 --> n222
    n213 --> n177
    n213 --> n203
    n213 --> n221
    n213 --> n222
    n214 --> n177
    n214 --> n203
    n214 --> n221
    n214 --> n222
    n215 --> n177
    n215 --> n194
    n215 --> n203
    n215 --> n221
    n215 --> n222
    n216 --> n177
    n216 --> n203
    n216 --> n221
    n216 --> n222
    n217 --> n24
    n217 --> n30
    n217 --> n193
    n217 --> n194
    n217 --> n203
    n217 --> n205
    n217 --> n206
    n217 --> n207
    n217 --> n208
    n217 --> n209
    n217 --> n210
    n217 --> n211
    n217 --> n212
    n217 --> n213
    n217 --> n214
    n217 --> n215
    n217 --> n216
    n217 --> n219
    n217 --> n221
    n219 --> n24
    n219 --> n37
    n219 --> n177
    n219 --> n203
    n219 --> n221
    n219 --> n222
    n222 --> n177
    n222 --> n203
    n223 --> n28
    n223 --> n37
    n223 --> n188
    n223 --> n217
    n224 --> n225
    n224 --> n226
    n224 --> n227
    n224 --> n228
    n225 --> n28
    n225 --> n37
    n225 --> n188
    n225 --> n217
    n225 --> n226
    n225 --> n227
    n225 --> n228
    n226 --> n227
    n226 --> n228
    n228 --> n188
    n228 --> n217
    n228 --> n227
    n229 --> n239
    n230 --> n238
    n231 --> n232
    n234 --> n37
    n234 --> n232
    n235 --> n37
    n235 --> n232
    n236 --> n37
    n236 --> n232
    n237 --> n37
    n238 --> n232
    n238 --> n237
    n239 --> n25
    n239 --> n37
    n239 --> n237
    n239 --> n238
    n243 --> n3
    n243 --> n13
    n243 --> n14
    n243 --> n15
    n243 --> n16
    n243 --> n17
    n243 --> n18
    n243 --> n19
    n243 --> n20
    n243 --> n24
    n243 --> n25
    n243 --> n37
    n243 --> n118
    n243 --> n169
    n243 --> n176
    n243 --> n201
    n243 --> n242
    n243 --> n244
    n243 --> n245
    n243 --> n246
    n243 --> n247
    n243 --> n249
    n243 --> n250
    n243 --> n251
    n243 --> n252
    n243 --> n253
    n243 --> n254
    n243 --> n255
    n243 --> n256
    n244 --> n14
    n244 --> n30
    n245 --> n127
    n250 --> n24
    n252 --> n201
    n252 --> n255
    n253 --> n249
    n254 --> n5
    n254 --> n6
    n254 --> n7
    n254 --> n14
    n254 --> n246
    n254 --> n253
    n254 --> n256
    n255 --> n176
    n255 --> n188
    n255 --> n201
    n255 --> n217
    n256 --> n4
    n256 --> n7
    n256 --> n14
    n256 --> n169
    n256 --> n176
    n256 --> n188
    n256 --> n203
    n256 --> n255
    classDef first_party fill:#e8f0fe,stroke:#1a73e8,color:#202124
    class n0,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,n18,n19,n20,n21,n22,n23,n24,n25,n26,n27,n28,n29,n30,n31,n32,n33,n34,n35,n36,n37,n38,n39,n40,n41,n42,n43,n44,n45,n46,n47,n48,n49,n50,n51,n52,n53,n54,n55,n56,n57,n58,n59,n60,n61,n62,n63,n64,n65,n66,n67,n68,n69,n70,n71,n72,n73,n74,n75,n76,n77,n78,n79,n80,n81,n82,n83,n84,n85,n86,n87,n88,n89,n90,n91,n92,n93,n94,n95,n96,n97,n98,n99,n100,n101,n102,n103,n104,n105,n106,n107,n108,n109,n110,n111,n112,n113,n114,n115,n116,n117,n118,n119,n120,n121,n122,n123,n124,n125,n126,n127,n128,n129,n130,n131,n132,n133,n134,n135,n136,n137,n138,n139,n140,n141,n142,n143,n144,n145,n146,n147,n148,n149,n150,n151,n152,n153,n154,n155,n156,n157,n158,n159,n160,n161,n162,n163,n164,n165,n166,n167,n168,n169,n170,n171,n172,n173,n174,n175,n176,n177,n178,n179,n180,n181,n182,n183,n184,n185,n186,n187,n188,n189,n190,n191,n192,n193,n194,n195,n196,n197,n198,n199,n200,n201,n202,n203,n204,n205,n206,n207,n208,n209,n210,n211,n212,n213,n214,n215,n216,n217,n218,n219,n220,n221,n222,n223,n224,n225,n226,n227,n228,n229,n230,n231,n232,n233,n234,n235,n236,n237,n238,n239,n240,n241,n242,n243,n244,n245,n246,n247,n248,n249,n250,n251,n252,n253,n254,n255,n256,n257 first_party