- commit
- 005c5d2e09e5d7f5c1c573e18a20da3fb8227bea
- parent
- 0cd28a12366c21b728a38257c6a46186223680e2
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2023-12-20 12:16
2023-12-20
Diffstat
A | 2023/20/graph.py | 10 | ++++++++++ |
A | 2023/20/graph.svg | 1021 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
A | 2023/20/input.txt | 58 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
A | 2023/20/solution.rs | 171 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
A | 2023/20/test1.txt | 5 | +++++ |
A | 2023/20/test2.txt | 5 | +++++ |
6 files changed, 1270 insertions, 0 deletions
diff --git a/2023/20/graph.py b/2023/20/graph.py
@@ -0,0 +1,10 @@ -1 1 print('digraph {') -1 2 with open('input.txt') as fh: -1 3 for line in fh: -1 4 line = line.rstrip() -1 5 a, b = line.split(' -> ', 1) -1 6 aa = a.lstrip('&').lstrip('%') -1 7 print(f' {aa} [label="{a}"]') -1 8 for c in b.split(', '): -1 9 print(f' {aa} -> {c}'); -1 10 print('}')
diff --git a/2023/20/graph.svg b/2023/20/graph.svg
@@ -0,0 +1,1021 @@ -1 1 <?xml version="1.0" encoding="UTF-8" standalone="no"?> -1 2 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" -1 3 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -1 4 <!-- Generated by graphviz version 2.43.0 (0) -1 5 --> -1 6 <!-- Title: %3 Pages: 1 --> -1 7 <svg width="2085pt" height="1124pt" -1 8 viewBox="0.00 0.00 2085.35 1124.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> -1 9 <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1120)"> -1 10 <title>%3</title> -1 11 <polygon fill="white" stroke="transparent" points="-4,4 -4,-1120 2081.35,-1120 2081.35,4 -4,4"/> -1 12 <!-- jv --> -1 13 <g id="node1" class="node"> -1 14 <title>jv</title> -1 15 <ellipse fill="none" stroke="black" cx="287" cy="-1098" rx="27.9" ry="18"/> -1 16 <text text-anchor="middle" x="287" y="-1094.3" font-family="Times,serif" font-size="14.00">%jv</text> -1 17 </g> -1 18 <!-- rn --> -1 19 <g id="node2" class="node"> -1 20 <title>rn</title> -1 21 <ellipse fill="none" stroke="black" cx="209" cy="-1026" rx="29.8" ry="18"/> -1 22 <text text-anchor="middle" x="209" y="-1022.3" font-family="Times,serif" font-size="14.00">%rn</text> -1 23 </g> -1 24 <!-- jv->rn --> -1 25 <g id="edge1" class="edge"> -1 26 <title>jv->rn</title> -1 27 <path fill="none" stroke="black" d="M271.22,-1082.83C260.19,-1072.94 245.27,-1059.55 232.8,-1048.36"/> -1 28 <polygon fill="black" stroke="black" points="234.81,-1045.46 225.03,-1041.38 230.13,-1050.67 234.81,-1045.46"/> -1 29 </g> -1 30 <!-- jn --> -1 31 <g id="node3" class="node"> -1 32 <title>jn</title> -1 33 <ellipse fill="none" stroke="black" cx="190" cy="-810" rx="27.9" ry="18"/> -1 34 <text text-anchor="middle" x="190" y="-806.3" font-family="Times,serif" font-size="14.00">&jn</text> -1 35 </g> -1 36 <!-- jv->jn --> -1 37 <g id="edge2" class="edge"> -1 38 <title>jv->jn</title> -1 39 <path fill="none" stroke="black" d="M287.55,-1079.73C288.1,-1039.39 285.21,-936.88 246,-864 238.93,-850.85 227.38,-839.09 216.61,-830.02"/> -1 40 <polygon fill="black" stroke="black" points="218.6,-827.13 208.61,-823.62 214.23,-832.6 218.6,-827.13"/> -1 41 </g> -1 42 <!-- rn->jn --> -1 43 <g id="edge29" class="edge"> -1 44 <title>rn->jn</title> -1 45 <path fill="none" stroke="black" d="M195,-1009.83C186.39,-999.76 175.75,-985.89 169,-972 154.54,-942.23 154.26,-932.82 150,-900 147.94,-884.13 144.92,-879.17 150,-864 153.76,-852.79 160.93,-842.05 168.17,-833.21"/> -1 46 <polygon fill="black" stroke="black" points="170.82,-835.5 174.75,-825.66 165.54,-830.9 170.82,-835.5"/> -1 47 </g> -1 48 <!-- bk --> -1 49 <g id="node31" class="node"> -1 50 <title>bk</title> -1 51 <ellipse fill="none" stroke="black" cx="209" cy="-954" rx="30.59" ry="18"/> -1 52 <text text-anchor="middle" x="209" y="-950.3" font-family="Times,serif" font-size="14.00">%bk</text> -1 53 </g> -1 54 <!-- rn->bk --> -1 55 <g id="edge28" class="edge"> -1 56 <title>rn->bk</title> -1 57 <path fill="none" stroke="black" d="M209,-1007.7C209,-999.98 209,-990.71 209,-982.11"/> -1 58 <polygon fill="black" stroke="black" points="212.5,-982.1 209,-972.1 205.5,-982.1 212.5,-982.1"/> -1 59 </g> -1 60 <!-- hm --> -1 61 <g id="node18" class="node"> -1 62 <title>hm</title> -1 63 <ellipse fill="none" stroke="black" cx="160" cy="-378" rx="34.39" ry="18"/> -1 64 <text text-anchor="middle" x="160" y="-374.3" font-family="Times,serif" font-size="14.00">%hm</text> -1 65 </g> -1 66 <!-- jn->hm --> -1 67 <g id="edge76" class="edge"> -1 68 <title>jn->hm</title> -1 69 <path fill="none" stroke="black" d="M193.45,-791.82C202.09,-748.15 224,-633.65 224,-595 224,-595 224,-595 224,-521 224,-476.54 197.6,-430.62 178.71,-403.45"/> -1 70 <polygon fill="black" stroke="black" points="181.32,-401.07 172.64,-394.98 175.63,-405.15 181.32,-401.07"/> -1 71 </g> -1 72 <!-- ql --> -1 73 <g id="node19" class="node"> -1 74 <title>ql</title> -1 75 <ellipse fill="none" stroke="black" cx="160" cy="-306" rx="28.7" ry="18"/> -1 76 <text text-anchor="middle" x="160" y="-302.3" font-family="Times,serif" font-size="14.00">%ql</text> -1 77 </g> -1 78 <!-- jn->ql --> -1 79 <g id="edge78" class="edge"> -1 80 <title>jn->ql</title> -1 81 <path fill="none" stroke="black" d="M163.37,-804.14C133.63,-797.58 85.44,-783.4 53,-756 17.83,-726.29 0,-713.04 0,-667 0,-667 0,-667 0,-449 0,-382.08 79.26,-339.02 126.21,-319.38"/> -1 82 <polygon fill="black" stroke="black" points="127.74,-322.54 135.7,-315.54 125.12,-316.05 127.74,-322.54"/> -1 83 </g> -1 84 <!-- hs --> -1 85 <g id="node24" class="node"> -1 86 <title>hs</title> -1 87 <ellipse fill="none" stroke="black" cx="304" cy="-234" rx="30.59" ry="18"/> -1 88 <text text-anchor="middle" x="304" y="-230.3" font-family="Times,serif" font-size="14.00">%hs</text> -1 89 </g> -1 90 <!-- jn->hs --> -1 91 <g id="edge74" class="edge"> -1 92 <title>jn->hs</title> -1 93 <path fill="none" stroke="black" d="M215,-801.61C236.85,-793.82 267.72,-779.4 285,-756 309.03,-723.46 304,-707.45 304,-667 304,-667 304,-667 304,-377 304,-337 304,-290.65 304,-262.08"/> -1 94 <polygon fill="black" stroke="black" points="307.5,-262.05 304,-252.05 300.5,-262.05 307.5,-262.05"/> -1 95 </g> -1 96 <!-- lp --> -1 97 <g id="node32" class="node"> -1 98 <title>lp</title> -1 99 <ellipse fill="none" stroke="black" cx="114" cy="-450" rx="28.7" ry="18"/> -1 100 <text text-anchor="middle" x="114" y="-446.3" font-family="Times,serif" font-size="14.00">%lp</text> -1 101 </g> -1 102 <!-- jn->lp --> -1 103 <g id="edge75" class="edge"> -1 104 <title>jn->lp</title> -1 105 <path fill="none" stroke="black" d="M166.58,-799.96C123.95,-781.78 38,-736.52 38,-667 38,-667 38,-667 38,-593 38,-546.12 70.6,-499.74 93.09,-473.31"/> -1 106 <polygon fill="black" stroke="black" points="95.74,-475.6 99.7,-465.77 90.48,-470.98 95.74,-475.6"/> -1 107 </g> -1 108 <!-- ss --> -1 109 <g id="node34" class="node"> -1 110 <title>ss</title> -1 111 <ellipse fill="none" stroke="black" cx="114" cy="-522" rx="29.5" ry="18"/> -1 112 <text text-anchor="middle" x="114" y="-518.3" font-family="Times,serif" font-size="14.00">%ss</text> -1 113 </g> -1 114 <!-- jn->ss --> -1 115 <g id="edge80" class="edge"> -1 116 <title>jn->ss</title> -1 117 <path fill="none" stroke="black" d="M173.92,-795.12C163.27,-785.17 149.71,-770.94 141,-756 107.17,-697.95 105.35,-678.38 95,-612 92.54,-596.19 92.26,-591.76 95,-576 96.56,-567 99.52,-557.51 102.64,-549.09"/> -1 118 <polygon fill="black" stroke="black" points="105.9,-550.37 106.3,-539.78 99.38,-547.8 105.9,-550.37"/> -1 119 </g> -1 120 <!-- hn --> -1 121 <g id="node35" class="node"> -1 122 <title>hn</title> -1 123 <ellipse fill="none" stroke="black" cx="743" cy="-738" rx="30.59" ry="18"/> -1 124 <text text-anchor="middle" x="743" y="-734.3" font-family="Times,serif" font-size="14.00">&hn</text> -1 125 </g> -1 126 <!-- jn->hn --> -1 127 <g id="edge77" class="edge"> -1 128 <title>jn->hn</title> -1 129 <path fill="none" stroke="black" d="M217.42,-805.53C307.91,-794.08 597.23,-757.45 703.43,-744.01"/> -1 130 <polygon fill="black" stroke="black" points="703.93,-747.47 713.41,-742.75 703.05,-740.53 703.93,-747.47"/> -1 131 </g> -1 132 <!-- xt --> -1 133 <g id="node46" class="node"> -1 134 <title>xt</title> -1 135 <ellipse fill="none" stroke="black" cx="247" cy="-738" rx="28.7" ry="18"/> -1 136 <text text-anchor="middle" x="247" y="-734.3" font-family="Times,serif" font-size="14.00">%xt</text> -1 137 </g> -1 138 <!-- jn->xt --> -1 139 <g id="edge79" class="edge"> -1 140 <title>jn->xt</title> -1 141 <path fill="none" stroke="black" d="M197.67,-792.41C204.39,-782.87 214.09,-770.79 223.19,-760.53"/> -1 142 <polygon fill="black" stroke="black" points="225.81,-762.85 229.97,-753.11 220.64,-758.13 225.81,-762.85"/> -1 143 </g> -1 144 <!-- fb --> -1 145 <g id="node4" class="node"> -1 146 <title>fb</title> -1 147 <ellipse fill="none" stroke="black" cx="627" cy="-810" rx="28.7" ry="18"/> -1 148 <text text-anchor="middle" x="627" y="-806.3" font-family="Times,serif" font-size="14.00">&fb</text> -1 149 </g> -1 150 <!-- hb --> -1 151 <g id="node5" class="node"> -1 152 <title>hb</title> -1 153 <ellipse fill="none" stroke="black" cx="515" cy="-450" rx="31.4" ry="18"/> -1 154 <text text-anchor="middle" x="515" y="-446.3" font-family="Times,serif" font-size="14.00">%hb</text> -1 155 </g> -1 156 <!-- fb->hb --> -1 157 <g id="edge3" class="edge"> -1 158 <title>fb->hb</title> -1 159 <path fill="none" stroke="black" d="M605.04,-798.35C567.26,-778.31 494,-731.18 494,-667 494,-667 494,-667 494,-593 494,-552.56 502.44,-506.33 508.62,-477.9"/> -1 160 <polygon fill="black" stroke="black" points="512.08,-478.45 510.85,-467.93 505.25,-476.92 512.08,-478.45"/> -1 161 </g> -1 162 <!-- vk --> -1 163 <g id="node6" class="node"> -1 164 <title>vk</title> -1 165 <ellipse fill="none" stroke="black" cx="704" cy="-882" rx="30.59" ry="18"/> -1 166 <text text-anchor="middle" x="704" y="-878.3" font-family="Times,serif" font-size="14.00">%vk</text> -1 167 </g> -1 168 <!-- fb->vk --> -1 169 <g id="edge4" class="edge"> -1 170 <title>fb->vk</title> -1 171 <path fill="none" stroke="black" d="M646.14,-823.56C658.06,-833.1 673.14,-846.48 685.01,-857.93"/> -1 172 <polygon fill="black" stroke="black" points="682.71,-860.58 692.29,-865.12 687.63,-855.6 682.71,-860.58"/> -1 173 </g> -1 174 <!-- fz --> -1 175 <g id="node7" class="node"> -1 176 <title>fz</title> -1 177 <ellipse fill="none" stroke="black" cx="937" cy="-738" rx="27.1" ry="18"/> -1 178 <text text-anchor="middle" x="937" y="-734.3" font-family="Times,serif" font-size="14.00">&fz</text> -1 179 </g> -1 180 <!-- fb->fz --> -1 181 <g id="edge5" class="edge"> -1 182 <title>fb->fz</title> -1 183 <path fill="none" stroke="black" d="M655.2,-805.91C705.53,-799.87 813.73,-784.54 901,-756 902.87,-755.39 904.77,-754.7 906.67,-753.96"/> -1 184 <polygon fill="black" stroke="black" points="908.21,-757.11 916.04,-749.97 905.47,-750.67 908.21,-757.11"/> -1 185 </g> -1 186 <!-- kl --> -1 187 <g id="node8" class="node"> -1 188 <title>kl</title> -1 189 <ellipse fill="none" stroke="black" cx="626" cy="-666" rx="27.9" ry="18"/> -1 190 <text text-anchor="middle" x="626" y="-662.3" font-family="Times,serif" font-size="14.00">%kl</text> -1 191 </g> -1 192 <!-- fb->kl --> -1 193 <g id="edge6" class="edge"> -1 194 <title>fb->kl</title> -1 195 <path fill="none" stroke="black" d="M626.88,-791.87C626.71,-767.67 626.4,-723.21 626.19,-694.39"/> -1 196 <polygon fill="black" stroke="black" points="629.69,-694.16 626.12,-684.19 622.69,-694.21 629.69,-694.16"/> -1 197 </g> -1 198 <!-- cg --> -1 199 <g id="node9" class="node"> -1 200 <title>cg</title> -1 201 <ellipse fill="none" stroke="black" cx="861" cy="-738" rx="30.59" ry="18"/> -1 202 <text text-anchor="middle" x="861" y="-734.3" font-family="Times,serif" font-size="14.00">%cg</text> -1 203 </g> -1 204 <!-- fb->cg --> -1 205 <g id="edge7" class="edge"> -1 206 <title>fb->cg</title> -1 207 <path fill="none" stroke="black" d="M653.2,-802.43C689.89,-793.05 758.53,-774.87 816,-756 819.54,-754.84 823.21,-753.56 826.87,-752.25"/> -1 208 <polygon fill="black" stroke="black" points="828.21,-755.49 836.38,-748.75 825.79,-748.92 828.21,-755.49"/> -1 209 </g> -1 210 <!-- pd --> -1 211 <g id="node54" class="node"> -1 212 <title>pd</title> -1 213 <ellipse fill="none" stroke="black" cx="496" cy="-378" rx="31.4" ry="18"/> -1 214 <text text-anchor="middle" x="496" y="-374.3" font-family="Times,serif" font-size="14.00">%pd</text> -1 215 </g> -1 216 <!-- hb->pd --> -1 217 <g id="edge66" class="edge"> -1 218 <title>hb->pd</title> -1 219 <path fill="none" stroke="black" d="M510.4,-432.05C508.29,-424.26 505.72,-414.82 503.35,-406.08"/> -1 220 <polygon fill="black" stroke="black" points="506.69,-405.01 500.69,-396.28 499.93,-406.84 506.69,-405.01"/> -1 221 </g> -1 222 <!-- vk->fb --> -1 223 <g id="edge68" class="edge"> -1 224 <title>vk->fb</title> -1 225 <path fill="none" stroke="black" d="M684.11,-867.83C672.15,-858.22 657.23,-844.94 645.54,-833.64"/> -1 226 <polygon fill="black" stroke="black" points="647.95,-831.1 638.38,-826.55 643.03,-836.07 647.95,-831.1"/> -1 227 </g> -1 228 <!-- vk->cg --> -1 229 <g id="edge67" class="edge"> -1 230 <title>vk->cg</title> -1 231 <path fill="none" stroke="black" d="M719.92,-866.6C747.66,-841.51 804.99,-789.66 837.38,-760.37"/> -1 232 <polygon fill="black" stroke="black" points="839.97,-762.74 845.04,-753.44 835.28,-757.55 839.97,-762.74"/> -1 233 </g> -1 234 <!-- xn --> -1 235 <g id="node36" class="node"> -1 236 <title>xn</title> -1 237 <ellipse fill="none" stroke="black" cx="972" cy="-666" rx="30.59" ry="18"/> -1 238 <text text-anchor="middle" x="972" y="-662.3" font-family="Times,serif" font-size="14.00">&xn</text> -1 239 </g> -1 240 <!-- fz->xn --> -1 241 <g id="edge109" class="edge"> -1 242 <title>fz->xn</title> -1 243 <path fill="none" stroke="black" d="M945.12,-720.76C949.3,-712.4 954.49,-702.02 959.2,-692.61"/> -1 244 <polygon fill="black" stroke="black" points="962.34,-694.14 963.68,-683.63 956.08,-691.01 962.34,-694.14"/> -1 245 </g> -1 246 <!-- rs --> -1 247 <g id="node55" class="node"> -1 248 <title>rs</title> -1 249 <ellipse fill="none" stroke="black" cx="589" cy="-594" rx="28.7" ry="18"/> -1 250 <text text-anchor="middle" x="589" y="-590.3" font-family="Times,serif" font-size="14.00">%rs</text> -1 251 </g> -1 252 <!-- kl->rs --> -1 253 <g id="edge69" class="edge"> -1 254 <title>kl->rs</title> -1 255 <path fill="none" stroke="black" d="M617.42,-648.76C613,-640.4 607.51,-630.02 602.53,-620.61"/> -1 256 <polygon fill="black" stroke="black" points="605.56,-618.84 597.79,-611.63 599.37,-622.11 605.56,-618.84"/> -1 257 </g> -1 258 <!-- cg->kl --> -1 259 <g id="edge19" class="edge"> -1 260 <title>cg->kl</title> -1 261 <path fill="none" stroke="black" d="M834.04,-728.97C791.25,-716.22 707.8,-691.37 660.63,-677.32"/> -1 262 <polygon fill="black" stroke="black" points="661.45,-673.91 650.87,-674.41 659.45,-680.62 661.45,-673.91"/> -1 263 </g> -1 264 <!-- rr --> -1 265 <g id="node10" class="node"> -1 266 <title>rr</title> -1 267 <ellipse fill="none" stroke="black" cx="1144" cy="-306" rx="28.7" ry="18"/> -1 268 <text text-anchor="middle" x="1144" y="-302.3" font-family="Times,serif" font-size="14.00">%rr</text> -1 269 </g> -1 270 <!-- vm --> -1 271 <g id="node11" class="node"> -1 272 <title>vm</title> -1 273 <ellipse fill="none" stroke="black" cx="1144" cy="-234" rx="33.6" ry="18"/> -1 274 <text text-anchor="middle" x="1144" y="-230.3" font-family="Times,serif" font-size="14.00">%vm</text> -1 275 </g> -1 276 <!-- rr->vm --> -1 277 <g id="edge8" class="edge"> -1 278 <title>rr->vm</title> -1 279 <path fill="none" stroke="black" d="M1144,-287.7C1144,-279.98 1144,-270.71 1144,-262.11"/> -1 280 <polygon fill="black" stroke="black" points="1147.5,-262.1 1144,-252.1 1140.5,-262.1 1147.5,-262.1"/> -1 281 </g> -1 282 <!-- gp --> -1 283 <g id="node12" class="node"> -1 284 <title>gp</title> -1 285 <ellipse fill="none" stroke="black" cx="1237" cy="-810" rx="30.59" ry="18"/> -1 286 <text text-anchor="middle" x="1237" y="-806.3" font-family="Times,serif" font-size="14.00">&gp</text> -1 287 </g> -1 288 <!-- rr->gp --> -1 289 <g id="edge9" class="edge"> -1 290 <title>rr->gp</title> -1 291 <path fill="none" stroke="black" d="M1136.1,-323.62C1124.44,-349.71 1104,-402.13 1104,-449 1104,-667 1104,-667 1104,-667 1104,-725.95 1165.8,-770.51 1205.15,-792.91"/> -1 292 <polygon fill="black" stroke="black" points="1203.69,-796.1 1214.14,-797.87 1207.07,-789.97 1203.69,-796.1"/> -1 293 </g> -1 294 <!-- bf --> -1 295 <g id="node51" class="node"> -1 296 <title>bf</title> -1 297 <ellipse fill="none" stroke="black" cx="1355" cy="-162" rx="28.7" ry="18"/> -1 298 <text text-anchor="middle" x="1355" y="-158.3" font-family="Times,serif" font-size="14.00">%bf</text> -1 299 </g> -1 300 <!-- vm->bf --> -1 301 <g id="edge62" class="edge"> -1 302 <title>vm->bf</title> -1 303 <path fill="none" stroke="black" d="M1172.02,-223.7C1210.34,-210.99 1279.05,-188.2 1320.49,-174.45"/> -1 304 <polygon fill="black" stroke="black" points="1321.76,-177.71 1330.15,-171.24 1319.56,-171.07 1321.76,-177.71"/> -1 305 </g> -1 306 <!-- gp->vm --> -1 307 <g id="edge10" class="edge"> -1 308 <title>gp->vm</title> -1 309 <path fill="none" stroke="black" d="M1209.52,-801.88C1183.74,-794.08 1145.32,-779.46 1119,-756 1084.63,-725.37 1066,-713.04 1066,-667 1066,-667 1066,-667 1066,-377 1066,-330.35 1098.74,-284.55 1121.79,-258.07"/> -1 310 <polygon fill="black" stroke="black" points="1124.52,-260.28 1128.59,-250.5 1119.31,-255.6 1124.52,-260.28"/> -1 311 </g> -1 312 <!-- cb --> -1 313 <g id="node13" class="node"> -1 314 <title>cb</title> -1 315 <ellipse fill="none" stroke="black" cx="1509" cy="-738" rx="30.59" ry="18"/> -1 316 <text text-anchor="middle" x="1509" y="-734.3" font-family="Times,serif" font-size="14.00">%cb</text> -1 317 </g> -1 318 <!-- gp->cb --> -1 319 <g id="edge11" class="edge"> -1 320 <title>gp->cb</title> -1 321 <path fill="none" stroke="black" d="M1265.63,-803.58C1309,-795.08 1393.73,-777.38 1464,-756 1467.57,-754.92 1471.26,-753.69 1474.92,-752.41"/> -1 322 <polygon fill="black" stroke="black" points="1476.24,-755.65 1484.44,-748.95 1473.85,-749.08 1476.24,-755.65"/> -1 323 </g> -1 324 <!-- bd --> -1 325 <g id="node14" class="node"> -1 326 <title>bd</title> -1 327 <ellipse fill="none" stroke="black" cx="1315" cy="-666" rx="31.4" ry="18"/> -1 328 <text text-anchor="middle" x="1315" y="-662.3" font-family="Times,serif" font-size="14.00">%bd</text> -1 329 </g> -1 330 <!-- gp->bd --> -1 331 <g id="edge12" class="edge"> -1 332 <title>gp->bd</title> -1 333 <path fill="none" stroke="black" d="M1247.49,-792.99C1254.17,-782.59 1262.88,-768.66 1270,-756 1281.75,-735.12 1293.94,-710.81 1302.67,-692.88"/> -1 334 <polygon fill="black" stroke="black" points="1305.94,-694.16 1307.14,-683.63 1299.63,-691.11 1305.94,-694.16"/> -1 335 </g> -1 336 <!-- qm --> -1 337 <g id="node15" class="node"> -1 338 <title>qm</title> -1 339 <ellipse fill="none" stroke="black" cx="1166" cy="-378" rx="34.39" ry="18"/> -1 340 <text text-anchor="middle" x="1166" y="-374.3" font-family="Times,serif" font-size="14.00">%qm</text> -1 341 </g> -1 342 <!-- gp->qm --> -1 343 <g id="edge13" class="edge"> -1 344 <title>gp->qm</title> -1 345 <path fill="none" stroke="black" d="M1219.13,-794.95C1191.61,-771.59 1142,-721.87 1142,-667 1142,-667 1142,-667 1142,-521 1142,-480.43 1151.64,-434.24 1158.7,-405.85"/> -1 346 <polygon fill="black" stroke="black" points="1162.16,-406.45 1161.26,-395.89 1155.38,-404.71 1162.16,-406.45"/> -1 347 </g> -1 348 <!-- xf --> -1 349 <g id="node16" class="node"> -1 350 <title>xf</title> -1 351 <ellipse fill="none" stroke="black" cx="1010" cy="-738" rx="27.9" ry="18"/> -1 352 <text text-anchor="middle" x="1010" y="-734.3" font-family="Times,serif" font-size="14.00">&xf</text> -1 353 </g> -1 354 <!-- gp->xf --> -1 355 <g id="edge14" class="edge"> -1 356 <title>gp->xf</title> -1 357 <path fill="none" stroke="black" d="M1209.45,-802.08C1173.05,-792.72 1107.12,-774.99 1052,-756 1048.88,-754.92 1045.65,-753.74 1042.43,-752.52"/> -1 358 <polygon fill="black" stroke="black" points="1043.53,-749.19 1032.94,-748.8 1040.97,-755.71 1043.53,-749.19"/> -1 359 </g> -1 360 <!-- pk --> -1 361 <g id="node17" class="node"> -1 362 <title>pk</title> -1 363 <ellipse fill="none" stroke="black" cx="1237" cy="-882" rx="30.59" ry="18"/> -1 364 <text text-anchor="middle" x="1237" y="-878.3" font-family="Times,serif" font-size="14.00">%pk</text> -1 365 </g> -1 366 <!-- gp->pk --> -1 367 <g id="edge15" class="edge"> -1 368 <title>gp->pk</title> -1 369 <path fill="none" stroke="black" d="M1242.86,-827.79C1243.7,-835.59 1243.94,-845.07 1243.6,-853.85"/> -1 370 <polygon fill="black" stroke="black" points="1240.09,-853.83 1242.88,-864.05 1247.07,-854.33 1240.09,-853.83"/> -1 371 </g> -1 372 <!-- cb->bd --> -1 373 <g id="edge50" class="edge"> -1 374 <title>cb->bd</title> -1 375 <path fill="none" stroke="black" d="M1483.64,-727.85C1449.6,-715.57 1388.98,-693.69 1350.44,-679.79"/> -1 376 <polygon fill="black" stroke="black" points="1351.27,-676.37 1340.68,-676.26 1348.9,-682.95 1351.27,-676.37"/> -1 377 </g> -1 378 <!-- dt --> -1 379 <g id="node25" class="node"> -1 380 <title>dt</title> -1 381 <ellipse fill="none" stroke="black" cx="1275" cy="-594" rx="29.5" ry="18"/> -1 382 <text text-anchor="middle" x="1275" y="-590.3" font-family="Times,serif" font-size="14.00">%dt</text> -1 383 </g> -1 384 <!-- bd->dt --> -1 385 <g id="edge23" class="edge"> -1 386 <title>bd->dt</title> -1 387 <path fill="none" stroke="black" d="M1305.72,-648.76C1300.83,-640.19 1294.71,-629.49 1289.23,-619.9"/> -1 388 <polygon fill="black" stroke="black" points="1292.23,-618.09 1284.23,-611.15 1286.15,-621.57 1292.23,-618.09"/> -1 389 </g> -1 390 <!-- qm->rr --> -1 391 <g id="edge88" class="edge"> -1 392 <title>qm->rr</title> -1 393 <path fill="none" stroke="black" d="M1160.67,-360.05C1158.16,-352.06 1155.1,-342.33 1152.3,-333.4"/> -1 394 <polygon fill="black" stroke="black" points="1155.61,-332.28 1149.28,-323.79 1148.94,-334.38 1155.61,-332.28"/> -1 395 </g> -1 396 <!-- xf->xn --> -1 397 <g id="edge104" class="edge"> -1 398 <title>xf->xn</title> -1 399 <path fill="none" stroke="black" d="M1001.19,-720.76C996.65,-712.4 991.01,-702.02 985.9,-692.61"/> -1 400 <polygon fill="black" stroke="black" points="988.88,-690.75 981.03,-683.63 982.72,-694.09 988.88,-690.75"/> -1 401 </g> -1 402 <!-- pk->gp --> -1 403 <g id="edge70" class="edge"> -1 404 <title>pk->gp</title> -1 405 <path fill="none" stroke="black" d="M1231.12,-864.05C1230.29,-856.23 1230.05,-846.75 1230.41,-837.98"/> -1 406 <polygon fill="black" stroke="black" points="1233.92,-838.01 1231.14,-827.79 1226.93,-837.51 1233.92,-838.01"/> -1 407 </g> -1 408 <!-- pk->cb --> -1 409 <g id="edge71" class="edge"> -1 410 <title>pk->cb</title> -1 411 <path fill="none" stroke="black" d="M1259.26,-869.38C1307.59,-844.15 1422.27,-784.28 1477.8,-755.29"/> -1 412 <polygon fill="black" stroke="black" points="1479.57,-758.31 1486.82,-750.58 1476.33,-752.11 1479.57,-758.31"/> -1 413 </g> -1 414 <!-- hm->ql --> -1 415 <g id="edge16" class="edge"> -1 416 <title>hm->ql</title> -1 417 <path fill="none" stroke="black" d="M160,-359.7C160,-351.98 160,-342.71 160,-334.11"/> -1 418 <polygon fill="black" stroke="black" points="163.5,-334.1 160,-324.1 156.5,-334.1 163.5,-334.1"/> -1 419 </g> -1 420 <!-- ql->hs --> -1 421 <g id="edge96" class="edge"> -1 422 <title>ql->hs</title> -1 423 <path fill="none" stroke="black" d="M181.87,-294.37C205.8,-282.74 244.4,-263.97 271.79,-250.66"/> -1 424 <polygon fill="black" stroke="black" points="273.51,-253.72 280.97,-246.2 270.44,-247.42 273.51,-253.72"/> -1 425 </g> -1 426 <!-- cf --> -1 427 <g id="node20" class="node"> -1 428 <title>cf</title> -1 429 <ellipse fill="none" stroke="black" cx="496" cy="-306" rx="27.9" ry="18"/> -1 430 <text text-anchor="middle" x="496" y="-302.3" font-family="Times,serif" font-size="14.00">%cf</text> -1 431 </g> -1 432 <!-- cf->fb --> -1 433 <g id="edge18" class="edge"> -1 434 <title>cf->fb</title> -1 435 <path fill="none" stroke="black" d="M521.47,-313.51C572.41,-328.23 682,-369.17 682,-449 682,-595 682,-595 682,-595 682,-664.69 654.3,-743.25 638.21,-782.99"/> -1 436 <polygon fill="black" stroke="black" points="634.89,-781.87 634.3,-792.45 641.36,-784.55 634.89,-781.87"/> -1 437 </g> -1 438 <!-- dx --> -1 439 <g id="node21" class="node"> -1 440 <title>dx</title> -1 441 <ellipse fill="none" stroke="black" cx="458" cy="-234" rx="30.59" ry="18"/> -1 442 <text text-anchor="middle" x="458" y="-230.3" font-family="Times,serif" font-size="14.00">%dx</text> -1 443 </g> -1 444 <!-- cf->dx --> -1 445 <g id="edge17" class="edge"> -1 446 <title>cf->dx</title> -1 447 <path fill="none" stroke="black" d="M487.19,-288.76C482.65,-280.4 477.01,-270.02 471.9,-260.61"/> -1 448 <polygon fill="black" stroke="black" points="474.88,-258.75 467.03,-251.63 468.72,-262.09 474.88,-258.75"/> -1 449 </g> -1 450 <!-- dx->fb --> -1 451 <g id="edge31" class="edge"> -1 452 <title>dx->fb</title> -1 453 <path fill="none" stroke="black" d="M450.1,-251.62C438.44,-277.71 418,-330.13 418,-377 418,-667 418,-667 418,-667 418,-712.15 432.28,-727.13 467,-756 501.97,-785.08 553.45,-798.38 588.51,-804.35"/> -1 454 <polygon fill="black" stroke="black" points="588.4,-807.88 598.82,-805.98 589.49,-800.96 588.4,-807.88"/> -1 455 </g> -1 456 <!-- jm --> -1 457 <g id="node33" class="node"> -1 458 <title>jm</title> -1 459 <ellipse fill="none" stroke="black" cx="458" cy="-162" rx="31.4" ry="18"/> -1 460 <text text-anchor="middle" x="458" y="-158.3" font-family="Times,serif" font-size="14.00">%jm</text> -1 461 </g> -1 462 <!-- dx->jm --> -1 463 <g id="edge32" class="edge"> -1 464 <title>dx->jm</title> -1 465 <path fill="none" stroke="black" d="M458,-215.7C458,-207.98 458,-198.71 458,-190.11"/> -1 466 <polygon fill="black" stroke="black" points="461.5,-190.1 458,-180.1 454.5,-190.1 461.5,-190.1"/> -1 467 </g> -1 468 <!-- hv --> -1 469 <g id="node22" class="node"> -1 470 <title>hv</title> -1 471 <ellipse fill="none" stroke="black" cx="720" cy="-90" rx="30.59" ry="18"/> -1 472 <text text-anchor="middle" x="720" y="-86.3" font-family="Times,serif" font-size="14.00">%hv</text> -1 473 </g> -1 474 <!-- hv->fb --> -1 475 <g id="edge21" class="edge"> -1 476 <title>hv->fb</title> -1 477 <path fill="none" stroke="black" d="M720,-108.05C720,-134.71 720,-187.89 720,-233 720,-595 720,-595 720,-595 720,-670.2 703.08,-689.49 668,-756 662.43,-766.56 654.74,-777.16 647.52,-786.09"/> -1 478 <polygon fill="black" stroke="black" points="644.84,-783.84 641.1,-793.76 650.21,-788.33 644.84,-783.84"/> -1 479 </g> -1 480 <!-- kg --> -1 481 <g id="node23" class="node"> -1 482 <title>kg</title> -1 483 <ellipse fill="none" stroke="black" cx="761" cy="-18" rx="30.59" ry="18"/> -1 484 <text text-anchor="middle" x="761" y="-14.3" font-family="Times,serif" font-size="14.00">%kg</text> -1 485 </g> -1 486 <!-- hv->kg --> -1 487 <g id="edge20" class="edge"> -1 488 <title>hv->kg</title> -1 489 <path fill="none" stroke="black" d="M729.51,-72.76C734.53,-64.19 740.8,-53.49 746.42,-43.9"/> -1 490 <polygon fill="black" stroke="black" points="749.51,-45.55 751.54,-35.15 743.47,-42.01 749.51,-45.55"/> -1 491 </g> -1 492 <!-- kg->fb --> -1 493 <g id="edge53" class="edge"> -1 494 <title>kg->fb</title> -1 495 <path fill="none" stroke="black" d="M769.1,-35.6C781.05,-61.66 802,-114.04 802,-161 802,-667 802,-667 802,-667 802,-707.45 809.88,-725.77 783,-756 753.16,-789.56 701.25,-801.89 665.56,-806.41"/> -1 496 <polygon fill="black" stroke="black" points="665.05,-802.94 655.5,-807.53 665.83,-809.9 665.05,-802.94"/> -1 497 </g> -1 498 <!-- hs->jv --> -1 499 <g id="edge22" class="edge"> -1 500 <title>hs->jv</title> -1 501 <path fill="none" stroke="black" d="M311.51,-251.66C322.58,-277.8 342,-330.3 342,-377 342,-739 342,-739 342,-739 342,-863.91 308.89,-1010.51 294.05,-1069.94"/> -1 502 <polygon fill="black" stroke="black" points="290.56,-1069.45 291.5,-1080 297.35,-1071.17 290.56,-1069.45"/> -1 503 </g> -1 504 <!-- dt->gp --> -1 505 <g id="edge102" class="edge"> -1 506 <title>dt->gp</title> -1 507 <path fill="none" stroke="black" d="M1271.99,-611.94C1265.42,-648.92 1249.75,-737.2 1241.8,-781.97"/> -1 508 <polygon fill="black" stroke="black" points="1238.35,-781.39 1240.05,-791.85 1245.24,-782.62 1238.35,-781.39"/> -1 509 </g> -1 510 <!-- xv --> -1 511 <g id="node26" class="node"> -1 512 <title>xv</title> -1 513 <ellipse fill="none" stroke="black" cx="1239" cy="-522" rx="30.59" ry="18"/> -1 514 <text text-anchor="middle" x="1239" y="-518.3" font-family="Times,serif" font-size="14.00">%xv</text> -1 515 </g> -1 516 <!-- dt->xv --> -1 517 <g id="edge101" class="edge"> -1 518 <title>dt->xv</title> -1 519 <path fill="none" stroke="black" d="M1266.47,-576.41C1262.16,-568.04 1256.85,-557.71 1252.05,-548.37"/> -1 520 <polygon fill="black" stroke="black" points="1255.16,-546.76 1247.47,-539.47 1248.93,-549.96 1255.16,-546.76"/> -1 521 </g> -1 522 <!-- xv->gp --> -1 523 <g id="edge25" class="edge"> -1 524 <title>xv->gp</title> -1 525 <path fill="none" stroke="black" d="M1238.19,-540.18C1237.74,-550.55 1237.23,-564.03 1237,-576 1235.6,-650.38 1236.21,-738.15 1236.67,-781.67"/> -1 526 <polygon fill="black" stroke="black" points="1233.17,-781.79 1236.78,-791.75 1240.17,-781.71 1233.17,-781.79"/> -1 527 </g> -1 528 <!-- mv --> -1 529 <g id="node27" class="node"> -1 530 <title>mv</title> -1 531 <ellipse fill="none" stroke="black" cx="1204" cy="-450" rx="33.6" ry="18"/> -1 532 <text text-anchor="middle" x="1204" y="-446.3" font-family="Times,serif" font-size="14.00">%mv</text> -1 533 </g> -1 534 <!-- xv->mv --> -1 535 <g id="edge24" class="edge"> -1 536 <title>xv->mv</title> -1 537 <path fill="none" stroke="black" d="M1230.71,-504.41C1226.56,-496.13 1221.46,-485.92 1216.83,-476.66"/> -1 538 <polygon fill="black" stroke="black" points="1219.84,-474.85 1212.23,-467.47 1213.58,-477.98 1219.84,-474.85"/> -1 539 </g> -1 540 <!-- mv->gp --> -1 541 <g id="edge39" class="edge"> -1 542 <title>mv->gp</title> -1 543 <path fill="none" stroke="black" d="M1199.26,-467.89C1192.26,-494.34 1180,-547.25 1180,-593 1180,-667 1180,-667 1180,-667 1180,-710.68 1203.51,-756.82 1220.33,-784.25"/> -1 544 <polygon fill="black" stroke="black" points="1217.44,-786.22 1225.74,-792.8 1223.36,-782.48 1217.44,-786.22"/> -1 545 </g> -1 546 <!-- mv->qm --> -1 547 <g id="edge40" class="edge"> -1 548 <title>mv->qm</title> -1 549 <path fill="none" stroke="black" d="M1194.99,-432.41C1190.45,-424.04 1184.84,-413.71 1179.77,-404.37"/> -1 550 <polygon fill="black" stroke="black" points="1182.79,-402.59 1174.94,-395.47 1176.64,-405.93 1182.79,-402.59"/> -1 551 </g> -1 552 <!-- js --> -1 553 <g id="node28" class="node"> -1 554 <title>js</title> -1 555 <ellipse fill="none" stroke="black" cx="1860" cy="-450" rx="27.1" ry="18"/> -1 556 <text text-anchor="middle" x="1860" y="-446.3" font-family="Times,serif" font-size="14.00">%js</text> -1 557 </g> -1 558 <!-- zb --> -1 559 <g id="node29" class="node"> -1 560 <title>zb</title> -1 561 <ellipse fill="none" stroke="black" cx="1826" cy="-378" rx="30.59" ry="18"/> -1 562 <text text-anchor="middle" x="1826" y="-374.3" font-family="Times,serif" font-size="14.00">%zb</text> -1 563 </g> -1 564 <!-- js->zb --> -1 565 <g id="edge26" class="edge"> -1 566 <title>js->zb</title> -1 567 <path fill="none" stroke="black" d="M1852.11,-432.76C1848.1,-424.49 1843.11,-414.23 1838.58,-404.9"/> -1 568 <polygon fill="black" stroke="black" points="1841.6,-403.1 1834.08,-395.63 1835.3,-406.16 1841.6,-403.1"/> -1 569 </g> -1 570 <!-- jl --> -1 571 <g id="node30" class="node"> -1 572 <title>jl</title> -1 573 <ellipse fill="none" stroke="black" cx="1824" cy="-810" rx="27" ry="18"/> -1 574 <text text-anchor="middle" x="1824" y="-806.3" font-family="Times,serif" font-size="14.00">&jl</text> -1 575 </g> -1 576 <!-- js->jl --> -1 577 <g id="edge27" class="edge"> -1 578 <title>js->jl</title> -1 579 <path fill="none" stroke="black" d="M1856.64,-467.97C1851.69,-494.52 1843,-547.56 1843,-593 1843,-667 1843,-667 1843,-667 1843,-707.36 1835.37,-753.61 1829.78,-782.06"/> -1 580 <polygon fill="black" stroke="black" points="1826.31,-781.55 1827.75,-792.05 1833.17,-782.94 1826.31,-781.55"/> -1 581 </g> -1 582 <!-- lr --> -1 583 <g id="node42" class="node"> -1 584 <title>lr</title> -1 585 <ellipse fill="none" stroke="black" cx="1784" cy="-306" rx="27" ry="18"/> -1 586 <text text-anchor="middle" x="1784" y="-302.3" font-family="Times,serif" font-size="14.00">%lr</text> -1 587 </g> -1 588 <!-- zb->lr --> -1 589 <g id="edge98" class="edge"> -1 590 <title>zb->lr</title> -1 591 <path fill="none" stroke="black" d="M1816.26,-360.76C1811.12,-352.19 1804.7,-341.49 1798.94,-331.9"/> -1 592 <polygon fill="black" stroke="black" points="1801.83,-329.92 1793.69,-323.15 1795.83,-333.52 1801.83,-329.92"/> -1 593 </g> -1 594 <!-- jl->zb --> -1 595 <g id="edge46" class="edge"> -1 596 <title>jl->zb</title> -1 597 <path fill="none" stroke="black" d="M1820.25,-792.05C1814.71,-765.52 1805,-712.52 1805,-667 1805,-667 1805,-667 1805,-521 1805,-480.56 1813.44,-434.33 1819.62,-405.9"/> -1 598 <polygon fill="black" stroke="black" points="1823.08,-406.45 1821.85,-395.93 1816.25,-404.92 1823.08,-406.45"/> -1 599 </g> -1 600 <!-- ms --> -1 601 <g id="node38" class="node"> -1 602 <title>ms</title> -1 603 <ellipse fill="none" stroke="black" cx="1942" cy="-594" rx="33.29" ry="18"/> -1 604 <text text-anchor="middle" x="1942" y="-590.3" font-family="Times,serif" font-size="14.00">%ms</text> -1 605 </g> -1 606 <!-- jl->ms --> -1 607 <g id="edge43" class="edge"> -1 608 <title>jl->ms</title> -1 609 <path fill="none" stroke="black" d="M1844.97,-798.27C1860.9,-789.09 1882.19,-774.45 1895,-756 1923.62,-714.77 1935,-656.09 1939.39,-622.13"/> -1 610 <polygon fill="black" stroke="black" points="1942.89,-622.37 1940.58,-612.03 1935.94,-621.55 1942.89,-622.37"/> -1 611 </g> -1 612 <!-- km --> -1 613 <g id="node39" class="node"> -1 614 <title>km</title> -1 615 <ellipse fill="none" stroke="black" cx="1824" cy="-882" rx="33.6" ry="18"/> -1 616 <text text-anchor="middle" x="1824" y="-878.3" font-family="Times,serif" font-size="14.00">%km</text> -1 617 </g> -1 618 <!-- jl->km --> -1 619 <g id="edge41" class="edge"> -1 620 <title>jl->km</title> -1 621 <path fill="none" stroke="black" d="M1829.86,-827.79C1830.7,-835.59 1830.94,-845.07 1830.6,-853.85"/> -1 622 <polygon fill="black" stroke="black" points="1827.09,-853.83 1829.88,-864.05 1834.07,-854.33 1827.09,-853.83"/> -1 623 </g> -1 624 <!-- lm --> -1 625 <g id="node40" class="node"> -1 626 <title>lm</title> -1 627 <ellipse fill="none" stroke="black" cx="2016" cy="-738" rx="31.4" ry="18"/> -1 628 <text text-anchor="middle" x="2016" y="-734.3" font-family="Times,serif" font-size="14.00">%lm</text> -1 629 </g> -1 630 <!-- jl->lm --> -1 631 <g id="edge42" class="edge"> -1 632 <title>jl->lm</title> -1 633 <path fill="none" stroke="black" d="M1847.21,-800.75C1876.21,-790.42 1927.35,-772.11 1971,-756 1974.23,-754.81 1977.59,-753.56 1980.95,-752.3"/> -1 634 <polygon fill="black" stroke="black" points="1982.2,-755.57 1990.32,-748.78 1979.73,-749.02 1982.2,-755.57"/> -1 635 </g> -1 636 <!-- mp --> -1 637 <g id="node41" class="node"> -1 638 <title>mp</title> -1 639 <ellipse fill="none" stroke="black" cx="1591" cy="-738" rx="33.6" ry="18"/> -1 640 <text text-anchor="middle" x="1591" y="-734.3" font-family="Times,serif" font-size="14.00">&mp</text> -1 641 </g> -1 642 <!-- jl->mp --> -1 643 <g id="edge44" class="edge"> -1 644 <title>jl->mp</title> -1 645 <path fill="none" stroke="black" d="M1799.32,-802.45C1763.71,-792.88 1695.96,-774.23 1639,-756 1635.27,-754.81 1631.39,-753.52 1627.53,-752.2"/> -1 646 <polygon fill="black" stroke="black" points="1628.66,-748.89 1618.06,-748.91 1626.36,-755.5 1628.66,-748.89"/> -1 647 </g> -1 648 <!-- jl->lr --> -1 649 <g id="edge45" class="edge"> -1 650 <title>jl->lr</title> -1 651 <path fill="none" stroke="black" d="M1813.01,-793.22C1796.45,-767.85 1767,-715.88 1767,-667 1767,-667 1767,-667 1767,-449 1767,-408.71 1773.83,-362.44 1778.83,-333.96"/> -1 652 <polygon fill="black" stroke="black" points="1782.3,-334.43 1780.64,-323.97 1775.42,-333.19 1782.3,-334.43"/> -1 653 </g> -1 654 <!-- bg --> -1 655 <g id="node43" class="node"> -1 656 <title>bg</title> -1 657 <ellipse fill="none" stroke="black" cx="1902" cy="-522" rx="31.4" ry="18"/> -1 658 <text text-anchor="middle" x="1902" y="-518.3" font-family="Times,serif" font-size="14.00">%bg</text> -1 659 </g> -1 660 <!-- jl->bg --> -1 661 <g id="edge47" class="edge"> -1 662 <title>jl->bg</title> -1 663 <path fill="none" stroke="black" d="M1835.73,-793.57C1842.9,-783.41 1851.7,-769.52 1857,-756 1884.87,-684.96 1895.97,-594.74 1899.97,-550.29"/> -1 664 <polygon fill="black" stroke="black" points="1903.47,-550.52 1900.83,-540.26 1896.49,-549.93 1903.47,-550.52"/> -1 665 </g> -1 666 <!-- bk->jn --> -1 667 <g id="edge87" class="edge"> -1 668 <title>bk->jn</title> -1 669 <path fill="none" stroke="black" d="M218.23,-936.67C227.19,-918.63 238.32,-888.84 230,-864 226.24,-852.79 219.07,-842.05 211.83,-833.21"/> -1 670 <polygon fill="black" stroke="black" points="214.46,-830.9 205.25,-825.66 209.18,-835.5 214.46,-830.9"/> -1 671 </g> -1 672 <!-- dg --> -1 673 <g id="node48" class="node"> -1 674 <title>dg</title> -1 675 <ellipse fill="none" stroke="black" cx="190" cy="-882" rx="31.4" ry="18"/> -1 676 <text text-anchor="middle" x="190" y="-878.3" font-family="Times,serif" font-size="14.00">%dg</text> -1 677 </g> -1 678 <!-- bk->dg --> -1 679 <g id="edge86" class="edge"> -1 680 <title>bk->dg</title> -1 681 <path fill="none" stroke="black" d="M204.4,-936.05C202.29,-928.26 199.72,-918.82 197.35,-910.08"/> -1 682 <polygon fill="black" stroke="black" points="200.69,-909.01 194.69,-900.28 193.93,-910.84 200.69,-909.01"/> -1 683 </g> -1 684 <!-- lp->hm --> -1 685 <g id="edge30" class="edge"> -1 686 <title>lp->hm</title> -1 687 <path fill="none" stroke="black" d="M124.44,-433.12C130.12,-424.47 137.28,-413.58 143.68,-403.83"/> -1 688 <polygon fill="black" stroke="black" points="146.72,-405.59 149.28,-395.31 140.87,-401.74 146.72,-405.59"/> -1 689 </g> -1 690 <!-- jm->fb --> -1 691 <g id="edge95" class="edge"> -1 692 <title>jm->fb</title> -1 693 <path fill="none" stroke="black" d="M442.96,-178.1C420.29,-202.53 380,-253.25 380,-305 380,-667 380,-667 380,-667 380,-711.73 391.99,-728.15 427,-756 473.88,-793.29 544.54,-804.49 588.12,-807.76"/> -1 694 <polygon fill="black" stroke="black" points="588.11,-811.27 598.31,-808.42 588.56,-804.28 588.11,-811.27"/> -1 695 </g> -1 696 <!-- jm->hv --> -1 697 <g id="edge94" class="edge"> -1 698 <title>jm->hv</title> -1 699 <path fill="none" stroke="black" d="M486.04,-153.51C533.54,-140.82 629.82,-115.09 682.86,-100.92"/> -1 700 <polygon fill="black" stroke="black" points="683.8,-104.29 692.56,-98.33 681.99,-97.53 683.8,-104.29"/> -1 701 </g> -1 702 <!-- ss->lp --> -1 703 <g id="edge33" class="edge"> -1 704 <title>ss->lp</title> -1 705 <path fill="none" stroke="black" d="M114,-503.7C114,-495.98 114,-486.71 114,-478.11"/> -1 706 <polygon fill="black" stroke="black" points="117.5,-478.1 114,-468.1 110.5,-478.1 117.5,-478.1"/> -1 707 </g> -1 708 <!-- hn->xn --> -1 709 <g id="edge34" class="edge"> -1 710 <title>hn->xn</title> -1 711 <path fill="none" stroke="black" d="M769.72,-728.83C810.83,-716.27 889.67,-692.17 935.84,-678.05"/> -1 712 <polygon fill="black" stroke="black" points="936.91,-681.39 945.45,-675.11 934.87,-674.69 936.91,-681.39"/> -1 713 </g> -1 714 <!-- rx --> -1 715 <g id="node59" class="node"> -1 716 <title>rx</title> -1 717 <ellipse fill="none" stroke="black" cx="972" cy="-594" rx="27" ry="18"/> -1 718 <text text-anchor="middle" x="972" y="-590.3" font-family="Times,serif" font-size="14.00">rx</text> -1 719 </g> -1 720 <!-- xn->rx --> -1 721 <g id="edge108" class="edge"> -1 722 <title>xn->rx</title> -1 723 <path fill="none" stroke="black" d="M972,-647.7C972,-639.98 972,-630.71 972,-622.11"/> -1 724 <polygon fill="black" stroke="black" points="975.5,-622.1 972,-612.1 968.5,-622.1 975.5,-622.1"/> -1 725 </g> -1 726 <!-- bh --> -1 727 <g id="node37" class="node"> -1 728 <title>bh</title> -1 729 <ellipse fill="none" stroke="black" cx="1978" cy="-666" rx="31.4" ry="18"/> -1 730 <text text-anchor="middle" x="1978" y="-662.3" font-family="Times,serif" font-size="14.00">%bh</text> -1 731 </g> -1 732 <!-- bh->jl --> -1 733 <g id="edge35" class="edge"> -1 734 <title>bh->jl</title> -1 735 <path fill="none" stroke="black" d="M1973.05,-684.09C1966.63,-703.64 1953.73,-735.59 1933,-756 1912.01,-776.67 1881.38,-790.58 1857.93,-798.95"/> -1 736 <polygon fill="black" stroke="black" points="1856.71,-795.66 1848.37,-802.2 1858.96,-802.29 1856.71,-795.66"/> -1 737 </g> -1 738 <!-- bh->ms --> -1 739 <g id="edge36" class="edge"> -1 740 <title>bh->ms</title> -1 741 <path fill="none" stroke="black" d="M1969.47,-648.41C1965.16,-640.04 1959.85,-629.71 1955.05,-620.37"/> -1 742 <polygon fill="black" stroke="black" points="1958.16,-618.76 1950.47,-611.47 1951.93,-621.96 1958.16,-618.76"/> -1 743 </g> -1 744 <!-- ms->bg --> -1 745 <g id="edge97" class="edge"> -1 746 <title>ms->bg</title> -1 747 <path fill="none" stroke="black" d="M1932.52,-576.41C1927.74,-568.04 1921.83,-557.71 1916.5,-548.37"/> -1 748 <polygon fill="black" stroke="black" points="1919.41,-546.42 1911.41,-539.47 1913.33,-549.89 1919.41,-546.42"/> -1 749 </g> -1 750 <!-- km->jl --> -1 751 <g id="edge37" class="edge"> -1 752 <title>km->jl</title> -1 753 <path fill="none" stroke="black" d="M1818.12,-864.05C1817.29,-856.23 1817.05,-846.75 1817.41,-837.98"/> -1 754 <polygon fill="black" stroke="black" points="1820.92,-838.01 1818.14,-827.79 1813.93,-837.51 1820.92,-838.01"/> -1 755 </g> -1 756 <!-- km->lm --> -1 757 <g id="edge38" class="edge"> -1 758 <title>km->lm</title> -1 759 <path fill="none" stroke="black" d="M1843.11,-866.87C1877.5,-841.43 1949.89,-787.9 1989.21,-758.82"/> -1 760 <polygon fill="black" stroke="black" points="1991.57,-761.42 1997.53,-752.66 1987.41,-755.79 1991.57,-761.42"/> -1 761 </g> -1 762 <!-- lm->bh --> -1 763 <g id="edge103" class="edge"> -1 764 <title>lm->bh</title> -1 765 <path fill="none" stroke="black" d="M2006.99,-720.41C2002.45,-712.04 1996.84,-701.71 1991.77,-692.37"/> -1 766 <polygon fill="black" stroke="black" points="1994.79,-690.59 1986.94,-683.47 1988.64,-693.93 1994.79,-690.59"/> -1 767 </g> -1 768 <!-- mp->xn --> -1 769 <g id="edge65" class="edge"> -1 770 <title>mp->xn</title> -1 771 <path fill="none" stroke="black" d="M1566.08,-725.52C1560.55,-723.37 1554.66,-721.37 1549,-720 1446.74,-695.18 1126.24,-675.53 1012.52,-669.18"/> -1 772 <polygon fill="black" stroke="black" points="1012.66,-665.68 1002.48,-668.62 1012.28,-672.67 1012.66,-665.68"/> -1 773 </g> -1 774 <!-- pt --> -1 775 <g id="node44" class="node"> -1 776 <title>pt</title> -1 777 <ellipse fill="none" stroke="black" cx="1748" cy="-234" rx="29.5" ry="18"/> -1 778 <text text-anchor="middle" x="1748" y="-230.3" font-family="Times,serif" font-size="14.00">%pt</text> -1 779 </g> -1 780 <!-- lr->pt --> -1 781 <g id="edge61" class="edge"> -1 782 <title>lr->pt</title> -1 783 <path fill="none" stroke="black" d="M1775.65,-288.76C1771.35,-280.4 1766.01,-270.02 1761.17,-260.61"/> -1 784 <polygon fill="black" stroke="black" points="1764.24,-258.93 1756.55,-251.63 1758.02,-262.13 1764.24,-258.93"/> -1 785 </g> -1 786 <!-- bg->js --> -1 787 <g id="edge81" class="edge"> -1 788 <title>bg->js</title> -1 789 <path fill="none" stroke="black" d="M1892.26,-504.76C1887.12,-496.19 1880.7,-485.49 1874.94,-475.9"/> -1 790 <polygon fill="black" stroke="black" points="1877.83,-473.92 1869.69,-467.15 1871.83,-477.52 1877.83,-473.92"/> -1 791 </g> -1 792 <!-- pt->jl --> -1 793 <g id="edge49" class="edge"> -1 794 <title>pt->jl</title> -1 795 <path fill="none" stroke="black" d="M1744.25,-251.95C1738.71,-278.48 1729,-331.48 1729,-377 1729,-667 1729,-667 1729,-667 1729,-717.48 1770.99,-763.61 1799.14,-788.85"/> -1 796 <polygon fill="black" stroke="black" points="1797.17,-791.78 1807.02,-795.7 1801.77,-786.5 1797.17,-791.78"/> -1 797 </g> -1 798 <!-- jt --> -1 799 <g id="node45" class="node"> -1 800 <title>jt</title> -1 801 <ellipse fill="none" stroke="black" cx="1728" cy="-162" rx="27" ry="18"/> -1 802 <text text-anchor="middle" x="1728" y="-158.3" font-family="Times,serif" font-size="14.00">%jt</text> -1 803 </g> -1 804 <!-- pt->jt --> -1 805 <g id="edge48" class="edge"> -1 806 <title>pt->jt</title> -1 807 <path fill="none" stroke="black" d="M1743.16,-216.05C1740.9,-208.14 1738.15,-198.54 1735.63,-189.69"/> -1 808 <polygon fill="black" stroke="black" points="1738.91,-188.44 1732.8,-179.79 1732.18,-190.37 1738.91,-188.44"/> -1 809 </g> -1 810 <!-- jt->jl --> -1 811 <g id="edge73" class="edge"> -1 812 <title>jt->jl</title> -1 813 <path fill="none" stroke="black" d="M1720.69,-179.68C1709.91,-205.85 1691,-258.38 1691,-305 1691,-667 1691,-667 1691,-667 1691,-726.73 1754.45,-771.69 1793.7,-793.79"/> -1 814 <polygon fill="black" stroke="black" points="1792.18,-796.95 1802.63,-798.66 1795.53,-790.8 1792.18,-796.95"/> -1 815 </g> -1 816 <!-- hx --> -1 817 <g id="node52" class="node"> -1 818 <title>hx</title> -1 819 <ellipse fill="none" stroke="black" cx="1728" cy="-90" rx="30.59" ry="18"/> -1 820 <text text-anchor="middle" x="1728" y="-86.3" font-family="Times,serif" font-size="14.00">%hx</text> -1 821 </g> -1 822 <!-- jt->hx --> -1 823 <g id="edge72" class="edge"> -1 824 <title>jt->hx</title> -1 825 <path fill="none" stroke="black" d="M1728,-143.7C1728,-135.98 1728,-126.71 1728,-118.11"/> -1 826 <polygon fill="black" stroke="black" points="1731.5,-118.1 1728,-108.1 1724.5,-118.1 1731.5,-118.1"/> -1 827 </g> -1 828 <!-- xt->jn --> -1 829 <g id="edge51" class="edge"> -1 830 <title>xt->jn</title> -1 831 <path fill="none" stroke="black" d="M239.39,-755.51C232.61,-765.13 222.79,-777.37 213.61,-787.71"/> -1 832 <polygon fill="black" stroke="black" points="210.94,-785.43 206.77,-795.17 216.1,-790.16 210.94,-785.43"/> -1 833 </g> -1 834 <!-- jf --> -1 835 <g id="node47" class="node"> -1 836 <title>jf</title> -1 837 <ellipse fill="none" stroke="black" cx="169" cy="-666" rx="27" ry="18"/> -1 838 <text text-anchor="middle" x="169" y="-662.3" font-family="Times,serif" font-size="14.00">%jf</text> -1 839 </g> -1 840 <!-- xt->jf --> -1 841 <g id="edge52" class="edge"> -1 842 <title>xt->jf</title> -1 843 <path fill="none" stroke="black" d="M231.22,-722.83C219.94,-712.71 204.58,-698.93 191.95,-687.59"/> -1 844 <polygon fill="black" stroke="black" points="194.27,-684.98 184.49,-680.91 189.6,-690.19 194.27,-684.98"/> -1 845 </g> -1 846 <!-- jf->jn --> -1 847 <g id="edge92" class="edge"> -1 848 <title>jf->jn</title> -1 849 <path fill="none" stroke="black" d="M169.44,-684.17C170.11,-702.18 171.79,-731.25 176,-756 177.47,-764.67 179.71,-773.99 181.96,-782.36"/> -1 850 <polygon fill="black" stroke="black" points="178.59,-783.31 184.67,-791.99 185.33,-781.41 178.59,-783.31"/> -1 851 </g> -1 852 <!-- kz --> -1 853 <g id="node56" class="node"> -1 854 <title>kz</title> -1 855 <ellipse fill="none" stroke="black" cx="134" cy="-594" rx="29.8" ry="18"/> -1 856 <text text-anchor="middle" x="134" y="-590.3" font-family="Times,serif" font-size="14.00">%kz</text> -1 857 </g> -1 858 <!-- jf->kz --> -1 859 <g id="edge93" class="edge"> -1 860 <title>jf->kz</title> -1 861 <path fill="none" stroke="black" d="M160.88,-648.76C156.7,-640.4 151.51,-630.02 146.8,-620.61"/> -1 862 <polygon fill="black" stroke="black" points="149.92,-619.01 142.32,-611.63 143.66,-622.14 149.92,-619.01"/> -1 863 </g> -1 864 <!-- dg->jn --> -1 865 <g id="edge54" class="edge"> -1 866 <title>dg->jn</title> -1 867 <path fill="none" stroke="black" d="M190,-863.7C190,-855.98 190,-846.71 190,-838.11"/> -1 868 <polygon fill="black" stroke="black" points="193.5,-838.1 190,-828.1 186.5,-838.1 193.5,-838.1"/> -1 869 </g> -1 870 <!-- rt --> -1 871 <g id="node49" class="node"> -1 872 <title>rt</title> -1 873 <ellipse fill="none" stroke="black" cx="550" cy="-522" rx="27.9" ry="18"/> -1 874 <text text-anchor="middle" x="550" y="-518.3" font-family="Times,serif" font-size="14.00">%rt</text> -1 875 </g> -1 876 <!-- rt->fb --> -1 877 <g id="edge55" class="edge"> -1 878 <title>rt->fb</title> -1 879 <path fill="none" stroke="black" d="M548.85,-540.17C547.96,-558.17 547.4,-587.23 551,-612 560.57,-677.85 564.23,-695.53 592,-756 596.62,-766.07 603.01,-776.4 609.07,-785.24"/> -1 880 <polygon fill="black" stroke="black" points="606.29,-787.38 614.93,-793.51 612,-783.33 606.29,-787.38"/> -1 881 </g> -1 882 <!-- rt->hb --> -1 883 <g id="edge56" class="edge"> -1 884 <title>rt->hb</title> -1 885 <path fill="none" stroke="black" d="M541.88,-504.76C537.7,-496.4 532.51,-486.02 527.8,-476.61"/> -1 886 <polygon fill="black" stroke="black" points="530.92,-475.01 523.32,-467.63 524.66,-478.14 530.92,-475.01"/> -1 887 </g> -1 888 <!-- broadcaster --> -1 889 <g id="node50" class="node"> -1 890 <title>broadcaster</title> -1 891 <ellipse fill="none" stroke="black" cx="1009" cy="-954" rx="66.09" ry="18"/> -1 892 <text text-anchor="middle" x="1009" y="-950.3" font-family="Times,serif" font-size="14.00">broadcaster</text> -1 893 </g> -1 894 <!-- broadcaster->vk --> -1 895 <g id="edge60" class="edge"> -1 896 <title>broadcaster->vk</title> -1 897 <path fill="none" stroke="black" d="M960,-941.75C899.25,-927.81 797.02,-904.35 741.92,-891.7"/> -1 898 <polygon fill="black" stroke="black" points="742.4,-888.22 731.88,-889.4 740.84,-895.05 742.4,-888.22"/> -1 899 </g> -1 900 <!-- broadcaster->pk --> -1 901 <g id="edge59" class="edge"> -1 902 <title>broadcaster->pk</title> -1 903 <path fill="none" stroke="black" d="M1051.08,-940.08C1094.02,-926.9 1159.97,-906.65 1200.69,-894.15"/> -1 904 <polygon fill="black" stroke="black" points="1201.94,-897.43 1210.47,-891.14 1199.88,-890.73 1201.94,-897.43"/> -1 905 </g> -1 906 <!-- broadcaster->km --> -1 907 <g id="edge57" class="edge"> -1 908 <title>broadcaster->km</title> -1 909 <path fill="none" stroke="black" d="M1071.26,-947.65C1229.74,-934.04 1645.43,-898.34 1780.75,-886.71"/> -1 910 <polygon fill="black" stroke="black" points="1781.08,-890.2 1790.74,-885.86 1780.48,-883.23 1781.08,-890.2"/> -1 911 </g> -1 912 <!-- broadcaster->xt --> -1 913 <g id="edge58" class="edge"> -1 914 <title>broadcaster->xt</title> -1 915 <path fill="none" stroke="black" d="M946.79,-947.53C877.06,-940.45 761.05,-925.86 664,-900 515.7,-860.48 347.66,-785.93 278.89,-754.06"/> -1 916 <polygon fill="black" stroke="black" points="280.02,-750.73 269.48,-749.68 277.06,-757.08 280.02,-750.73"/> -1 917 </g> -1 918 <!-- bf->gp --> -1 919 <g id="edge85" class="edge"> -1 920 <title>bf->gp</title> -1 921 <path fill="none" stroke="black" d="M1358.75,-179.95C1364.29,-206.48 1374,-259.48 1374,-305 1374,-667 1374,-667 1374,-667 1374,-727.07 1309.73,-771.47 1269.23,-793.48"/> -1 922 <polygon fill="black" stroke="black" points="1267.46,-790.46 1260.24,-798.22 1270.72,-796.65 1267.46,-790.46"/> -1 923 </g> -1 924 <!-- fx --> -1 925 <g id="node57" class="node"> -1 926 <title>fx</title> -1 927 <ellipse fill="none" stroke="black" cx="1393" cy="-90" rx="28.7" ry="18"/> -1 928 <text text-anchor="middle" x="1393" y="-86.3" font-family="Times,serif" font-size="14.00">%fx</text> -1 929 </g> -1 930 <!-- bf->fx --> -1 931 <g id="edge84" class="edge"> -1 932 <title>bf->fx</title> -1 933 <path fill="none" stroke="black" d="M1363.81,-144.76C1368.42,-136.28 1374.16,-125.71 1379.32,-116.2"/> -1 934 <polygon fill="black" stroke="black" points="1382.54,-117.61 1384.23,-107.15 1376.39,-114.27 1382.54,-117.61"/> -1 935 </g> -1 936 <!-- hx->jl --> -1 937 <g id="edge64" class="edge"> -1 938 <title>hx->jl</title> -1 939 <path fill="none" stroke="black" d="M1713.54,-106.21C1691.75,-130.79 1653,-181.7 1653,-233 1653,-667 1653,-667 1653,-667 1653,-713.04 1671.63,-725.37 1706,-756 1729.98,-777.37 1763.99,-791.4 1789.35,-799.63"/> -1 940 <polygon fill="black" stroke="black" points="1788.35,-802.99 1798.94,-802.6 1790.42,-796.3 1788.35,-802.99"/> -1 941 </g> -1 942 <!-- qd --> -1 943 <g id="node53" class="node"> -1 944 <title>qd</title> -1 945 <ellipse fill="none" stroke="black" cx="1901" cy="-18" rx="31.4" ry="18"/> -1 946 <text text-anchor="middle" x="1901" y="-14.3" font-family="Times,serif" font-size="14.00">%qd</text> -1 947 </g> -1 948 <!-- hx->qd --> -1 949 <g id="edge63" class="edge"> -1 950 <title>hx->qd</title> -1 951 <path fill="none" stroke="black" d="M1752.42,-79.12C1782.26,-67.05 1832.93,-46.54 1866.68,-32.89"/> -1 952 <polygon fill="black" stroke="black" points="1868.19,-36.05 1876.14,-29.06 1865.56,-29.56 1868.19,-36.05"/> -1 953 </g> -1 954 <!-- qd->jl --> -1 955 <g id="edge107" class="edge"> -1 956 <title>qd->jl</title> -1 957 <path fill="none" stroke="black" d="M1928.19,-27.15C1977.12,-43.69 2075,-86.14 2075,-161 2075,-667 2075,-667 2075,-667 2075,-707.45 2084.4,-727.2 2056,-756 2029.1,-783.28 1919.42,-798.85 1861.01,-805.36"/> -1 958 <polygon fill="black" stroke="black" points="1860.3,-801.92 1850.74,-806.47 1861.05,-808.88 1860.3,-801.92"/> -1 959 </g> -1 960 <!-- pd->fb --> -1 961 <g id="edge106" class="edge"> -1 962 <title>pd->fb</title> -1 963 <path fill="none" stroke="black" d="M488.1,-395.62C476.44,-421.71 456,-474.13 456,-521 456,-667 456,-667 456,-667 456,-713.04 474.63,-725.37 509,-756 532.68,-777.1 566.15,-791.06 591.4,-799.32"/> -1 964 <polygon fill="black" stroke="black" points="590.39,-802.67 600.98,-802.32 592.48,-795.99 590.39,-802.67"/> -1 965 </g> -1 966 <!-- pd->cf --> -1 967 <g id="edge105" class="edge"> -1 968 <title>pd->cf</title> -1 969 <path fill="none" stroke="black" d="M496,-359.7C496,-351.98 496,-342.71 496,-334.11"/> -1 970 <polygon fill="black" stroke="black" points="499.5,-334.1 496,-324.1 492.5,-334.1 499.5,-334.1"/> -1 971 </g> -1 972 <!-- rs->fb --> -1 973 <g id="edge99" class="edge"> -1 974 <title>rs->fb</title> -1 975 <path fill="none" stroke="black" d="M587.51,-612.17C586.3,-630.18 585.32,-659.24 589,-684 594.22,-719.1 607.25,-757.98 616.6,-782.92"/> -1 976 <polygon fill="black" stroke="black" points="613.38,-784.29 620.22,-792.38 619.91,-781.79 613.38,-784.29"/> -1 977 </g> -1 978 <!-- rs->rt --> -1 979 <g id="edge100" class="edge"> -1 980 <title>rs->rt</title> -1 981 <path fill="none" stroke="black" d="M579.95,-576.76C575.18,-568.19 569.22,-557.49 563.87,-547.9"/> -1 982 <polygon fill="black" stroke="black" points="566.92,-546.18 559,-539.15 560.81,-549.59 566.92,-546.18"/> -1 983 </g> -1 984 <!-- kz->jn --> -1 985 <g id="edge83" class="edge"> -1 986 <title>kz->jn</title> -1 987 <path fill="none" stroke="black" d="M131.58,-611.96C129.52,-630.04 127.65,-659.39 133,-684 140.96,-720.63 160.62,-759.39 174.62,-783.86"/> -1 988 <polygon fill="black" stroke="black" points="171.79,-785.95 179.86,-792.81 177.83,-782.41 171.79,-785.95"/> -1 989 </g> -1 990 <!-- kz->ss --> -1 991 <g id="edge82" class="edge"> -1 992 <title>kz->ss</title> -1 993 <path fill="none" stroke="black" d="M129.16,-576.05C126.9,-568.14 124.15,-558.54 121.63,-549.69"/> -1 994 <polygon fill="black" stroke="black" points="124.91,-548.44 118.8,-539.79 118.18,-550.37 124.91,-548.44"/> -1 995 </g> -1 996 <!-- fx->gp --> -1 997 <g id="edge89" class="edge"> -1 998 <title>fx->gp</title> -1 999 <path fill="none" stroke="black" d="M1396.75,-107.95C1402.29,-134.48 1412,-187.48 1412,-233 1412,-667 1412,-667 1412,-667 1412,-737.61 1325.03,-779.23 1273.71,-797.65"/> -1 1000 <polygon fill="black" stroke="black" points="1272.27,-794.45 1263.96,-801.03 1274.56,-801.06 1272.27,-794.45"/> -1 1001 </g> -1 1002 <!-- dp --> -1 1003 <g id="node58" class="node"> -1 1004 <title>dp</title> -1 1005 <ellipse fill="none" stroke="black" cx="1422" cy="-18" rx="31.4" ry="18"/> -1 1006 <text text-anchor="middle" x="1422" y="-14.3" font-family="Times,serif" font-size="14.00">%dp</text> -1 1007 </g> -1 1008 <!-- fx->dp --> -1 1009 <g id="edge90" class="edge"> -1 1010 <title>fx->dp</title> -1 1011 <path fill="none" stroke="black" d="M1399.87,-72.41C1403.22,-64.34 1407.32,-54.43 1411.08,-45.35"/> -1 1012 <polygon fill="black" stroke="black" points="1414.38,-46.53 1414.98,-35.96 1407.91,-43.86 1414.38,-46.53"/> -1 1013 </g> -1 1014 <!-- dp->gp --> -1 1015 <g id="edge91" class="edge"> -1 1016 <title>dp->gp</title> -1 1017 <path fill="none" stroke="black" d="M1427.53,-35.84C1435.69,-62.21 1450,-115.02 1450,-161 1450,-667 1450,-667 1450,-667 1450,-749.77 1337.28,-787.26 1275.84,-801.55"/> -1 1018 <polygon fill="black" stroke="black" points="1274.73,-798.21 1265.73,-803.8 1276.25,-805.04 1274.73,-798.21"/> -1 1019 </g> -1 1020 </g> -1 1021 </svg>
diff --git a/2023/20/input.txt b/2023/20/input.txt
@@ -0,0 +1,58 @@ -1 1 %jv -> rn, jn -1 2 &fb -> hb, vk, fz, kl, cg -1 3 %rr -> vm, gp -1 4 &gp -> vm, cb, bd, qm, xf, pk -1 5 %hm -> ql -1 6 %cf -> dx, fb -1 7 %cg -> kl -1 8 %hv -> kg, fb -1 9 %hs -> jv -1 10 %bd -> dt -1 11 %xv -> mv, gp -1 12 %js -> zb, jl -1 13 %rn -> bk, jn -1 14 %lp -> hm -1 15 %dx -> fb, jm -1 16 %ss -> lp -1 17 &hn -> xn -1 18 %bh -> jl, ms -1 19 %km -> jl, lm -1 20 %mv -> gp, qm -1 21 &jl -> km, lm, ms, mp, lr, zb, bg -1 22 %pt -> jt, jl -1 23 %cb -> bd -1 24 %xt -> jn, jf -1 25 %kg -> fb -1 26 %dg -> jn -1 27 %rt -> fb, hb -1 28 broadcaster -> km, xt, pk, vk -1 29 %lr -> pt -1 30 %vm -> bf -1 31 %hx -> qd, jl -1 32 &mp -> xn -1 33 %hb -> pd -1 34 %vk -> cg, fb -1 35 %kl -> rs -1 36 %pk -> gp, cb -1 37 %jt -> hx, jl -1 38 &jn -> hs, lp, hm, hn, ql, xt, ss -1 39 %bg -> js -1 40 %kz -> ss, jn -1 41 %bf -> fx, gp -1 42 %bk -> dg, jn -1 43 %qm -> rr -1 44 %fx -> gp, dp -1 45 %dp -> gp -1 46 %jf -> jn, kz -1 47 %jm -> hv, fb -1 48 %ql -> hs -1 49 %ms -> bg -1 50 %zb -> lr -1 51 %rs -> fb, rt -1 52 %dt -> xv, gp -1 53 %lm -> bh -1 54 &xf -> xn -1 55 %pd -> cf, fb -1 56 %qd -> jl -1 57 &xn -> rx -1 58 &fz -> xn
diff --git a/2023/20/solution.rs b/2023/20/solution.rs
@@ -0,0 +1,171 @@ -1 1 use std::collections::VecDeque; -1 2 -1 3 #[path = "../lib.rs"] -1 4 mod lib; -1 5 -1 6 const LOW: bool = false; -1 7 const HIGH: bool = true; -1 8 -1 9 #[derive(Clone, Copy, Debug)] -1 10 enum Module { -1 11 Broadcaster, -1 12 FlipFlop, -1 13 Conjunction, -1 14 } -1 15 -1 16 fn parse_input() -> Vec<(String, Module, Vec<usize>)> { -1 17 let mut modules = vec![]; -1 18 let mut names = vec![ -1 19 "broadcaster".to_string(), -1 20 "sink".to_string(), -1 21 "hn".to_string(), -1 22 "fz".to_string(), -1 23 "xf".to_string(), -1 24 "mp".to_string(), -1 25 "xn".to_string(), -1 26 ]; -1 27 for _ in names.iter() { -1 28 modules.push((Module::Broadcaster, vec![])); -1 29 } -1 30 for line in lib::iter_input() { -1 31 let (head, tail) = line.split_once(" -> ").unwrap(); -1 32 let (name, module) = match head.bytes().next().unwrap() { -1 33 b'b' => (head.to_string(), Module::Broadcaster), -1 34 b'%' => (head[1..].to_string(), Module::FlipFlop), -1 35 b'&' => (head[1..].to_string(), Module::Conjunction), -1 36 _ => unreachable!(), -1 37 }; -1 38 let target_names = tail.split(", ").map(|s| s.to_string()).collect(); -1 39 if let Some(i) = names.iter().position(|n| *n == name) { -1 40 modules[i] = (module, target_names); -1 41 } else { -1 42 names.push(name); -1 43 modules.push((module, target_names)); -1 44 } -1 45 } -1 46 -1 47 return modules -1 48 .iter() -1 49 .enumerate() -1 50 .map(|(i, (module, target_names))| { -1 51 let targets = target_names -1 52 .iter() -1 53 .map(|name| match names.iter().position(|n| n == name) { -1 54 Some(i) => i, -1 55 None => 1, -1 56 }) -1 57 .collect(); -1 58 return (names[i].clone(), *module, targets); -1 59 }) -1 60 .collect(); -1 61 } -1 62 -1 63 fn push_the_button( -1 64 modules: &Vec<(String, Module, Vec<usize>)>, -1 65 state: &mut Vec<(bool, bool)>, -1 66 ) -> (usize, usize, [bool; 4]) { -1 67 let mut queue = VecDeque::new(); -1 68 let mut lows = 0; -1 69 let mut highs = 0; -1 70 let mut part2 = [false; 4]; -1 71 -1 72 queue.push_back((0, LOW)); -1 73 -1 74 while let Some((cur, pulse)) = queue.pop_front() { -1 75 if pulse == HIGH { -1 76 highs += 1; -1 77 } else { -1 78 lows += 1; -1 79 } -1 80 match &modules[cur] { -1 81 (_name, Module::Broadcaster, targets) => { -1 82 state[cur].1 = pulse; -1 83 for next in targets.iter() { -1 84 queue.push_back((*next, pulse)); -1 85 } -1 86 } -1 87 (_name, Module::FlipFlop, targets) => { -1 88 if pulse == LOW { -1 89 let p; -1 90 if state[cur].0 { -1 91 state[cur].0 = false; -1 92 p = LOW; -1 93 } else { -1 94 state[cur].0 = true; -1 95 p = HIGH; -1 96 } -1 97 state[cur].1 = p; -1 98 for next in targets.iter() { -1 99 queue.push_back((*next, p)); -1 100 } -1 101 } -1 102 } -1 103 (_name, Module::Conjunction, targets) => { -1 104 let all = -1 105 (0..modules.len()).all(|i| state[i].1 == HIGH || !modules[i].2.contains(&cur)); -1 106 let p = if all { LOW } else { HIGH }; -1 107 state[cur].1 = p; -1 108 match (cur, p) { -1 109 (2, true) => part2[0] = true, -1 110 (3, true) => part2[1] = true, -1 111 (4, true) => part2[2] = true, -1 112 (5, true) => part2[3] = true, -1 113 _ => {} -1 114 }; -1 115 for next in targets.iter() { -1 116 queue.push_back((*next, p)); -1 117 } -1 118 } -1 119 } -1 120 } -1 121 -1 122 return (highs, lows, part2); -1 123 } -1 124 -1 125 fn gcd(a: usize, b: usize) -> usize { -1 126 let mut x = a.max(b); -1 127 let mut y = a.min(b); -1 128 while y > 0 { -1 129 (x, y) = (y, x % y); -1 130 } -1 131 return x; -1 132 } -1 133 -1 134 fn lcm(a: usize, b: usize) -> usize { -1 135 return a * b / gcd(a, b); -1 136 } -1 137 -1 138 fn main() { -1 139 let modules = parse_input(); -1 140 let mut state = vec![(false, LOW); modules.len()]; -1 141 let mut highs = 0; -1 142 let mut lows = 0; -1 143 let mut part2 = [0; 4]; -1 144 -1 145 for i in 1.. { -1 146 let (h, l, p2) = push_the_button(&modules, &mut state); -1 147 if i <= 1000 { -1 148 highs += h; -1 149 lows += l; -1 150 } -1 151 for j in 0..4 { -1 152 if part2[j] == 0 && p2[j] { -1 153 part2[j] = i; -1 154 } -1 155 } -1 156 if i > 1000 && part2.iter().all(|&x| x != 0) { -1 157 break; -1 158 } -1 159 } -1 160 -1 161 println!("part1: {}", lows * highs); -1 162 -1 163 // part 2 is a bit shaky. I looked at the graph of nodes and -1 164 // realized that there are 4 subgraphs that each feed into &xn. -1 165 // I was not sure if they reset to the initial state after that, -1 166 // but simply calculating their lcm gave the correct answer. -1 167 println!( -1 168 "part2: {}", -1 169 lcm(lcm(part2[0], part2[1]), lcm(part2[2], part2[3])) -1 170 ); -1 171 }
diff --git a/2023/20/test1.txt b/2023/20/test1.txt
@@ -0,0 +1,5 @@ -1 1 broadcaster -> a, b, c -1 2 %a -> b -1 3 %b -> c -1 4 %c -> inv -1 5 &inv -> a
diff --git a/2023/20/test2.txt b/2023/20/test2.txt
@@ -0,0 +1,5 @@ -1 1 broadcaster -> a -1 2 %a -> inv, con -1 3 &inv -> b -1 4 %b -> con -1 5 &con -> output