-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbreadcrumbs.js
More file actions
698 lines (656 loc) · 113 KB
/
Copy pathbreadcrumbs.js
File metadata and controls
698 lines (656 loc) · 113 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
function createCompressedBreadcrumbs(points,multipliers,end) {
let crumbs = createChessPathBreadcrumbs(points,multipliers,end,end,true);
let compressedBall = "";
for (let i=0;i<Object.keys(crumbs).length;i++) {
let parentX = parseInt(Object.keys(crumbs)[i].split("-")[0]);
let parentY = parseInt(Object.keys(crumbs)[i].split("-")[1]);
let childX = parseInt(crumbs[Object.keys(crumbs)[i]].split("-")[0]);
let childY = parseInt(crumbs[Object.keys(crumbs)[i]].split("-")[1]);
if (parentX>99||parentY>99||childX>99||childY>99) { console.error("too big"); return; }
parentX = parentX<10 ? "0"+parentX : parentX.toString();
parentY = parentY<10 ? "0"+parentY : parentY.toString();
childX = childX<10 ? "0"+childX : childX.toString();
childY = childY<10 ? "0"+childY : childY.toString();
compressedBall += parentX+parentY+childX+childY;
}
return compressedBall;
}
function decompileBreadcrumbs(compressedBall) {
let crumbs = {};
for (let i=0;i<compressedBall.length;i+=8) {
let parentX = (compressedBall[i]=="0" ? "":compressedBall[i])+compressedBall[i+1];
let parentY = (compressedBall[i+2]=="0" ? "":compressedBall[i+2])+compressedBall[i+3];
let childX = (compressedBall[i+4]=="0" ? "":compressedBall[i+4])+compressedBall[i+5];
let childY = (compressedBall[i+6]=="0" ? "":compressedBall[i+6])+compressedBall[i+7];
crumbs[parentX+"-"+parentY] = childX+"-"+childY;
}
return crumbs;
}
let leftChessFloor = [[461,534],[467,534],[468,544],[477,544],[477,556],[465,556],[465,553],[459,553],[458,559],[420,559],[420,552],[429,547],[429,538],[432,538],[432,530],[428,526],[417,526],[417,537],[412,541],[402,541],[399,535],[398,523],[402,523],[402,537],[412,538],[414,536],[414,525],[402,525],[402,522],[396,520],[390,520],[380,520],[380,511],[396,511],[396,505],[421,505],[426,501],[426,484],[462,484],[462,534]];
let leftChessCostMultiplierArea = [[463,503],[456,505],[456,511],[453,512],[453,519],[456,520],[456,522],[463,527],[483,533],[480,574],[384,553],[397,522],[399,519],[399,512],[394,507],[401,487],[440,484],[440,500],[465,500],[465,472],[378,473],[378,574],[489,577],[486,503]];
let leftChessTopLeft = [382,485];
let leftChessSize = [98,89];
let rightChessFloor = [[776,371],[816,395],[834,365],[824,357],[822,354],[822,346],[823,344],[831,331],[831,326],[831,319],[838,312],[826,303],[818,319],[814,320],[813,322],[810,323],[810,328],[806,332],[800,332],[797,329],[795,329],[795,321],[799,317],[809,317],[810,320],[813,320],[811,316],[808,314],[798,313],[798,317],[795,317],[795,320],[792,320],[792,332],[798,332],[798,345],[789,345],[789,338],[783,338],[780,333],[780,326],[773,322],[754,355],[756,357],[756,362],[750,366],[749,368],[744,368],[744,372],[758,380],[763,372],[770,374]];
let rightChessCostMultiplierArea = [[777,374],[785,368],[800,378],[798,390],[801,390],[813,369],[831,379],[839,360],[830,329],[817,319],[816,294],[835,295],[860,362],[822,413],[772,379]];
let rightChessTopLeft = [742,300];
let rightChessSize = [95,98];
let chessPrecision = 3;
let leftChessNodePoints = {};
let leftChessNodeCostMultipliers = {};
let rightChessNodePoints = {};
let rightChessNodeCostMultipliers = {};
c.beginPath();
c.moveTo(leftChessFloor[0][0],leftChessFloor[0][1])
for (let i=1;i<leftChessFloor.length;i++) {
c.lineTo(leftChessFloor[i][0],leftChessFloor[i][1]);
}
for (let fx=0;fx<leftChessSize[0];fx+=chessPrecision) {
for (let fy=0;fy<leftChessSize[1];fy+=chessPrecision) {
if (c.isPointInPath(fx+leftChessTopLeft[0],fy+leftChessTopLeft[1])) {
leftChessNodePoints[fx/chessPrecision+"-"+fy/chessPrecision] = [fx+leftChessTopLeft[0],fy+leftChessTopLeft[1]];
}
}
}
c.closePath();
leftChessNodePoints["6-14"][0] -= 1;
leftChessNodePoints["6-15"][0] -= 1.5;
leftChessNodePoints["6-16"][0] -= 1;
leftChessNodePoints["7-18"][0] -= 0.5;
leftChessNodePoints["7-18"][1] -= 1;
leftChessNodePoints["10-18"][1] -= 1;
leftChessNodePoints["11-17"][0] -= 1;
leftChessNodePoints["11-16"][0] += 0.5;
leftChessNodePoints["11-15"][0] += 1;
leftChessNodePoints["11-14"][0] += 0.5;
c.beginPath();
c.moveTo(rightChessFloor[0][0],rightChessFloor[0][1])
for (let i=1;i<rightChessFloor.length;i++) {
c.lineTo(rightChessFloor[i][0],rightChessFloor[i][1]);
}
for (let fx=0;fx<rightChessSize[0];fx+=chessPrecision) {
for (let fy=0;fy<rightChessSize[1];fy+=chessPrecision) {
if (c.isPointInPath(fx+rightChessTopLeft[0],fy+rightChessTopLeft[1])) {
rightChessNodePoints[fx/chessPrecision+"-"+fy/chessPrecision] = [fx+rightChessTopLeft[0],fy+rightChessTopLeft[1]];
}
}
}
c.closePath();
rightChessNodePoints["24-7"][0] -= 1;
rightChessNodePoints["23-6"][1] += 1.5;
rightChessNodePoints["22-5"][0] += 1;
rightChessNodePoints["22-5"][1] += 2.5;
rightChessNodePoints["21-5"][0] += 1;
rightChessNodePoints["21-5"][1] += 1.5;
rightChessNodePoints["20-5"][0] += 1;
rightChessNodePoints["20-5"][1] += 1;
rightChessNodePoints["19-5"][0] += 1;
rightChessNodePoints["19-5"][1] += 1.5;
rightChessNodePoints["18-6"][0] += 1;
rightChessNodePoints["17-7"][0] += 2;
rightChessNodePoints["17-8"][0] += 1;
rightChessNodePoints["17-9"][0] += 1;
rightChessNodePoints["17-10"][0] += 2;
rightChessNodePoints["18-10"][1] += 2;
rightChessNodePoints["18-10"][0] += 1;
c.beginPath();
c.moveTo(leftChessCostMultiplierArea[0][0],leftChessCostMultiplierArea[0][1])
for (let i=1;i<leftChessCostMultiplierArea.length;i++) {
c.lineTo(leftChessCostMultiplierArea[i][0],leftChessCostMultiplierArea[i][1]);
}
for (let fx=0;fx<leftChessSize[0];fx+=chessPrecision) {
for (let fy=0;fy<leftChessSize[1];fy+=chessPrecision) {
if (c.isPointInPath(fx+leftChessTopLeft[0],fy+leftChessTopLeft[1])) {
leftChessNodeCostMultipliers[fx/chessPrecision+"-"+fy/chessPrecision] = 2;
} else {
leftChessNodeCostMultipliers[fx/chessPrecision+"-"+fy/chessPrecision] = 1;
}
}
}
c.closePath();
c.beginPath();
c.moveTo(rightChessCostMultiplierArea[0][0],rightChessCostMultiplierArea[0][1]);
for (let i=1;i<rightChessCostMultiplierArea.length;i++) {
c.lineTo(rightChessCostMultiplierArea[i][0],rightChessCostMultiplierArea[i][1]);
}
for (let fx=0;fx<rightChessSize[0];fx+=chessPrecision) {
for (let fy=0;fy<rightChessSize[1];fy+=chessPrecision) {
if (c.isPointInPath(fx+rightChessTopLeft[0],fy+rightChessTopLeft[1])) {
rightChessNodeCostMultipliers[fx/chessPrecision+"-"+fy/chessPrecision] = 2;
} else {
rightChessNodeCostMultipliers[fx/chessPrecision+"-"+fy/chessPrecision] = 1;
}
}
}
c.closePath();
let leftJetWayPoints = [[537,436],[534,432],[532,428],[529,423],[526,418],[523,412],[520,407],[517,401],[514,396],[511,391],[509,386],[506,381],[502,378],[497,377],[492,379],[489,383],[488,388],[489,393],[492,397],[494,402],[497,406],[499,410],[502,415],[505,420],[507,424],[510,428],[513,433],[515,438],[518,442],[520,446],[522,450],[525,454],[527,458],[530,462],[532,467],[535,471],[538,476],[540,481],[543,486],[546,491],[549,496],[552,501],[555,506],[558,510],[560,516]];
let leftJetWayPositions = {};
for (let i=0;i<leftJetWayPoints.length;i++) {
leftJetWayPositions[i] = true;
}
let rightJetWayPoints = [[600,400],[598,396],[595,392],[593,387],[590,382],[588,378],[585,373],[582,368],[579,362],[575,357],[571,352],[568,347],[566,341],[567,335],[572,331],[578,331],[583,333],[586,337],[588,342],[591,347],[593,351],[596,355],[598,359],[600,364],[603,369],[606,374],[609,379],[612,384],[615,389],[618,394],[621,399],[624,404],[627,409],[630,415],[633,420],[636,425],[639,431],[642,437],[645,442],[648,447],[651,453],[655,457]];
let rightJetWayPositions = {};
for (let i=0;i<rightJetWayPoints.length;i++) {
rightJetWayPositions[i] = true;
}
let leftSingleRiderPoints = [[553,586],[556,581],[559,577],[564,571],[569,565],[573,557],[575,550],[576,544],[573,540],[569,536]];
let leftSingleRiderPositions = {};
for (let i=0;i<leftSingleRiderPoints.length;i++) {
leftSingleRiderPositions[i] = true;
}
let rightSingleRiderPoints = [[701,474],[707,475],[713,475],[721,475],[730,476],[738,475],[745,476],[746,482],[743,487],[735,487],[727,486],[719,487],[711,486],[703,487],[694,486],[686,487],[679,485],[673,478]];
let rightSingleRiderPositions = {};
for (let i=0;i<rightSingleRiderPoints.length;i++) {
rightSingleRiderPositions[i] = true;
}
let mainQueuePoints = [[1041,643],[1045,639],[1049,635],[1053,631],[1055,627],[1059,623],[1064,620],[1069,618],[1074,616],[1079,612],[1084,608],[1088,604],[1091,600],[1095,596],[1100,592],[1103,588],[1107,584],[1112,580],[1115,576],[1118,572],[1122,568],[1127,564],[1131,559],[1136,556],[1140,551],[1145,547],[1150,542],[1154,539],[1158,535],[1162,531],[1164,527],[1166,523],[1164,520],[1161,516],[1157,514],[1152,516],[1148,520],[1144,524],[1140,528],[1136,533],[1133,536],[1128,541],[1123,544],[1120,549],[1116,552],[1112,556],[1108,559],[1104,563],[1101,566],[1097,570],[1093,573],[1089,577],[1086,582],[1081,586],[1076,590],[1073,595],[1069,599],[1064,600],[1059,596],[1056,593],[1057,587],[1063,583],[1067,579],[1072,573],[1077,568],[1082,564],[1087,559],[1092,554],[1097,550],[1101,545],[1104,540],[1110,536],[1115,531],[1119,527],[1116,524],[1108,524],[1099,524],[1093,524],[1087,524],[1081,525],[1075,524],[1069,524],[1061,524],[1054,524],[1047,524],[1040,524],[1033,524],[1026,524],[1019,524],[1013,524],[1007,524],[1000,525],[994,524],[987,524],[980,525],[973,524],[966,524],[960,524],[953,524],[950,529],[951,536],[951,542],[951,548],[951,556],[951,563],[951,569],[951,575],[950,582],[951,588],[954,593],[960,597],[966,601],[972,604],[980,605],[988,604],[995,605],[1002,604],[1009,605],[1016,605],[1024,605],[1030,607],[1030,613],[1029,619],[1030,626],[1029,632],[1029,639],[1029,646],[1030,653],[1028,658],[1023,661],[1016,659],[1010,655],[1004,651],[998,647],[992,643],[986,639],[980,634],[973,631],[968,626],[961,622],[955,618],[948,614],[942,610],[937,605],[931,601],[924,597],[918,593],[913,589],[907,585],[902,581],[896,578],[890,574],[885,570],[880,567],[875,563],[868,560],[863,556],[857,553],[853,549],[847,546],[842,542],[837,538],[832,534],[826,531],[821,528],[816,525],[811,523],[805,522],[800,524],[797,528],[795,532],[793,536],[790,541],[786,545],[780,545],[774,545],[769,546],[763,547],[757,546],[752,547],[748,547],[744,547],[738,546],[734,545],[728,545],[723,546],[717,546],[707,547],[701,549],[697,551],[691,554],[685,555],[681,555],[675,557],[670,558],[665,560],[661,563],[656,565],[651,568],[647,570],[643,573],[639,575],[634,580],[631,583],[627,586],[621,590],[617,593],[614,597],[610,601],[608,606],[606,611],[603,614],[601,617],[598,621],[595,625],[593,629],[591,634],[589,638],[586,643],[585,648],[583,653],[581,658],[579,663],[578,668],[577,673],[577,677],[576,682],[574,687],[574,693],[574,697],[573,702],[573,709],[574,715],[576,720],[576,725],[577,731],[577,735],[574,739],[569,740],[563,739],[560,735],[559,730],[559,725],[558,719],[558,714],[559,709],[559,702],[559,695],[560,689],[561,683],[562,675],[563,669],[564,663],[566,657],[567,651],[570,645],[573,639],[575,632],[577,625],[581,620],[583,614],[586,609],[591,603],[594,598],[598,593],[603,588],[607,581],[613,579],[618,574],[624,571],[629,567],[634,563],[639,560],[644,555]];
let mainQueuePositions = {};
for (let i=0;i<mainQueuePoints.length;i++) {
mainQueuePositions[i] = true;
}
let LLQueuePoints = [[894,496],[899,500],[906,501],[913,501],[919,501],[927,501],[935,500],[943,501],[951,500],[958,501],[966,501],[973,501],[981,501],[989,501],[996,501],[1003,501],[1010,501],[1017,501],[1024,501],[1031,500],[1039,501],[1046,501],[1052,501],[1059,501],[1066,500],[1073,501],[1081,501],[1088,500],[1094,499],[1099,498],[1101,494],[1100,488],[1095,486],[1090,485],[1084,484],[1077,484],[1070,485],[1063,484],[1056,484],[1049,485],[1042,484],[1035,484],[1028,485],[1021,484],[1014,484],[1007,484],[1000,485],[993,484],[984,484],[975,485],[967,484],[959,484],[952,485],[945,484],[937,484],[929,484],[920,485],[912,484],[903,485],[894,484],[887,484],[878,484],[869,484],[862,484],[854,486],[847,484],[839,484],[831,485],[823,484],[815,485],[808,484],[802,484],[795,484],[788,484],[781,484],[775,487],[774,493],[775,500],[775,507],[775,514],[775,521],[773,527],[767,529],[760,530],[753,529],[746,529],[740,529],[734,529],[727,530],[720,530],[713,530],[707,531],[701,532],[695,533],[689,535],[683,537],[677,539],[672,542],[666,545],[660,547],[654,550]];
let LLQueuePositions = {};
for (let i=0;i<LLQueuePoints.length;i++) {
LLQueuePositions[i] = true;
}
let mainQueueCensus = 0;
let LLQueueCensus = 0;
let leftSingleRiderCensus = 0;
let rightSingleRiderCensus = 0;
function getChessNodeNeighbours(points,node) {
let x = parseInt(node.split("-")[0]);
let y = parseInt(node.split("-")[1]);
let neighbours = [];
for (let i=-1;i<2;i++) {
for (let j=-1;j<2;j++) {
if (i==0 && j==0) { continue; }
if (points[(x+i)+"-"+(y+j)]) { neighbours.push((x+i)+"-"+(y+j)); }
}
}
return neighbours;
}
function createChessPathBreadcrumbs(points,multipliers,start,end,coverInCrumbs=false) {
let currentNode = start;
let endNodeX = parseInt(end.split("-")[0]);
let endNodeY = parseInt(end.split("-")[1]);
let FCosts = {};
let GCosts = {};
GCosts[start] = 0;
let open = [start];
let closed = [];
let breadcrumbs = {};
let loops = 0;
while (loops<2000) {
loops++;
if (open.length==0) { console.warn("NO OPEN NODES"); break; }
open.splice(open.indexOf(currentNode),1);
closed.push(currentNode);
let currentNodeX = parseInt(currentNode.split("-")[0]);
let currentNodeY = parseInt(currentNode.split("-")[1]);
let neighbours = getChessNodeNeighbours(points,currentNode);
neighbours.forEach(function(neighbour) {
if (closed.includes(neighbour)) { return; }
let neighbourNodeX = parseInt(neighbour.split("-")[0]);
let neighbourNodeY = parseInt(neighbour.split("-")[1]);
let neighbourGCost = (GCosts[currentNode]+Math.sqrt(Math.pow(neighbourNodeX-currentNodeX,2)+Math.pow(neighbourNodeY-currentNodeY,2)))*multipliers[neighbour];
let neighbourFCost = Math.sqrt(Math.pow(neighbourNodeX-endNodeX,2)+Math.pow(neighbourNodeY-endNodeY,2))+neighbourGCost;
if (!FCosts[neighbour]||neighbourFCost < FCosts[neighbour]) {
FCosts[neighbour] = neighbourFCost;
breadcrumbs[neighbour] = currentNode;
GCosts[neighbour] = neighbourGCost;
}
if (!open.includes(neighbour)) { open.push(neighbour); }
});
if (open.length==0) { console.warn("NO NEXT NODE"); break; }
let lowestFCost = FCosts[open[0]];
let nextNode = open[0];
for (let i=0;i<open.length;i++) {
if (lowestFCost > FCosts[open[i]]) {
lowestFCost = FCosts[open[i]];
nextNode = open[i];
}
}
if (nextNode==end&&coverInCrumbs==false) {
break;
}
currentNode = nextNode;
}
return breadcrumbs;
}
function repathChessPathBreadcrumbs(breadcrumbs,start,end) {
let path = [end];
let currentBreadcrumb = breadcrumbs[end];
let loops = 0;
while (currentBreadcrumb!=start && loops < 500) {
loops++;
path.push(currentBreadcrumb);
currentBreadcrumb = breadcrumbs[currentBreadcrumb];
}
if (loops>=500) { console.log("It broke?",breadcrumbs,start,end); return; }
path.push(start);
return path.reverse();
}
function getChessPath(points,multipliers,start,end) {
let breadcrumbs = createChessPathBreadcrumbs(points,multipliers,start,end);
let path = repathChessPathBreadcrumbs(breadcrumbs,start,end);
return path;
}
let lastRepathTime = 0;
let guestCounter = 0;
class HumanishCircle {
constructor(NOGInit) {
this.path = [];
this.x = -10;
this.y = -10;
this.facing = 0;
this.targetFacing = 0;
this.target = [0,0];
this.lastTargetTime = ChoreoGraph.nowint;
this.velocity = [0,0];
this.speed = 0;
this.maxSpeed = 0.005;
this.turningSpeed = 40;
this.room = null;
this.repel = [0,0];
this.graphic = cg.createGraphic(guestGraphic);
this.removeWithNoPath = false;
this.brainSpeed = Math.random()*200+300;
this.delete = false;
this.id = guestCounter;
guestCounter++;
if (NOGInit.mode=="chess") {
this.x = NOGInit.points[NOGInit.pathPosition][0];
this.y = NOGInit.points[NOGInit.pathPosition][1];
this.target = [NOGInit.points[NOGInit.pathPosition][0],NOGInit.points[NOGInit.pathPosition][1]];
this.idle = false;
this.idleSince = 0;
this.pathPosition = NOGInit.pathPosition;
this.points = NOGInit.points;
this.multipliers = NOGInit.multipliers;
this.targets = Object.keys(NOGInit.points).filter(key => NOGInit.multipliers[key] === 1);
this.idleTime = Math.random()*15000;
this.room = NOGInit.room;
} else if (NOGInit.mode=="queue") {
this.x = NOGInit.x;
this.y = NOGInit.y;
this.idle = false;
this.idleSince = 0;
this.points = NOGInit.points;
this.positions = NOGInit.positions;
this.position = 0;
this.offset = [Math.random()*3-1.5,Math.random()*3-1.5];
this.maxSpeed = 0.005+(Math.random()*0.001-0.0005);
this.maxSpeed = 0.006; // I think the random max speed thing is being really b a d
this.room = NOGInit.room;
this.lastThoughtTime = 0;
} else if (NOGInit.mode=="directed") {
this.x = NOGInit.x;
this.y = NOGInit.y;
this.target = NOGInit.target;
} else if (NOGInit.mode=="cm") {
this.x = NOGInit.idle[0];
this.y = NOGInit.idle[1];
this.target = [NOGInit.idle[0],NOGInit.idle[1]];
this.idle = NOGInit.idle;
this.action0 = NOGInit.action0;
this.action1 = NOGInit.action1;
this.room = NOGInit.room;
}
this.mode = NOGInit.mode; // chess queue directed crowd invisible cm
}
newChessPath() {
let randomTarget = this.targets[Math.floor(Math.random()*this.targets.length)];
if (this.pathPosition==randomTarget) { return; }
let newPath = getChessPath(this.points,this.multipliers,this.pathPosition,randomTarget);
if (newPath.length==0) { console.warn("empty path"); return; }
this.pathPosition = randomTarget;
for (let i=0;i<newPath.length;i++) {
this.path.push(this.points[newPath[i]]);
}
this.target = this.path[0];
if (this.target==undefined) { console.error("lost target (check path)",this); }
this.idle = false;
}
pathToCrowdInitialSpot() {
let newPosition = this.cp.findSpot(true);
if (newPosition===false) { console.warn("no spot",this); return; }
this.crowdPosition = newPosition;
this.path.push(this.cp.spots[this.crowdPosition]);
}
update() {
if (ChoreoGraph.timeDelta>100||cg.paused) { return; } // Don't process movement on lag spikes/inactive tab
if (this.lastUpdate==ChoreoGraph.nowint) { return; }
this.lastUpdate = ChoreoGraph.nowint;
if (this.mode=="queue") { // Check if the guest can move ahead in the queue
if (this.position!=this.points.length-1&&this.path.length<2) { // not at the end of the points and not moving quite a long distance
this.target = this.points[this.position];
let can_continue = false;
if (ChoreoGraph.nowint-this.lastThoughtTime>this.brainSpeed) {
this.lastThoughtTime = ChoreoGraph.nowint;
can_continue = Math.random()>0.0003;
}
if (can_continue) { // Randomly decide if the guest should think about moving ahead
for (let i=this.position+1;i<this.points.length;i++) {
let positionClear = this.positions[i];
if (positionClear&&i!=this.points.length-1) { // If the current searched position is clear, then add it to the path
this.path.push([this.points[i][0]+this.offset[0],this.points[i][1]+this.offset[1]]);
} else { // If the current searched position is not clear, then change the guests position in the queue
this.positions[this.position] = true;
if (i==this.points.length-1&&positionClear) {
this.position = i;
} else if (i!=this.position) {
this.position = i-1;
}
this.positions[this.position] = false;
break;
}
}
}
}
}
let distanceFromTarget = Math.sqrt(Math.pow(this.target[0]-this.x,2)+Math.pow(this.target[1]-this.y,2));
if (this.path.length>0) {
if (distanceFromTarget<3) { // Close to target
if (this.path[0]==this.target) {
this.path.splice(0,1);
if (this.path.length==0) { return; }
}
this.target = this.path[0];
this.lastTargetTime = ChoreoGraph.nowint;
if (this.target==undefined) { console.error("a lost target (check path)",this); this.path.splice(0,1); }
}
if (this.path.length>1) {
this.speed += Math.min(ChoreoGraph.timeDelta/500000,0.01);
this.speed = Math.min(this.speed,this.maxSpeed);
} else { // Almost at target (>3) but still not there
this.speed -= Math.min(ChoreoGraph.timeDelta/80000,0.01);
if (distanceFromTarget<1) {
this.speed = Math.max(this.speed,0);
} else {
this.speed = Math.max(this.speed,0.004); // Keep moving slowly if not at target
}
}
} else {
this.speed -= Math.min(ChoreoGraph.timeDelta/80000,0.01);
if (distanceFromTarget<1) {
this.speed = Math.max(this.speed,0);
} else {
this.speed = Math.max(this.speed,0.004); // Keep moving slowly if not at target
}
}
if (this.speed>0) {
// Facing direction of target
this.targetFacing = Math.atan2(this.target[1]-this.y,this.target[0]-this.x);
// Ease facing towards target facing
if (Math.abs(this.targetFacing-this.facing)>0.01&&Math.abs(this.targetFacing-this.facing)<Math.PI) {
if (this.facing>this.targetFacing) {
this.facing -= Math.pow((this.facing-this.targetFacing)/Math.PI,2) / (ChoreoGraph.timeDelta/this.turningSpeed);
} else {
this.facing += Math.pow((this.facing-this.targetFacing)/Math.PI,2) / (ChoreoGraph.timeDelta/this.turningSpeed);
}
} else {
this.facing = this.targetFacing;
}
// Velocity in direction of target
this.velocity[0] = Math.cos(this.facing);
this.velocity[1] = Math.sin(this.facing);
this.repel = [0,0];
if (performanceMenu.guestRepel&&ChoreoGraph.nowint-this.lastTargetTime<20000) {
// Repel from other guests
// The number below is pretty significant
let distanceFromOtherGuests = 7.5*(1-(ChoreoGraph.nowint-this.lastTargetTime)/20000);
let guestsInRoom = humans.filter(guest => guest.room==this.room && ChoreoGraph.nowint-guest.lastTargetTime<20000 && (guest.mode!="queue"||guest.position>this.position));
for (let g=0;g<guestsInRoom.length;g++) {
if (guestsInRoom[g]==this) { continue; }
let distanceFromGuest = Math.sqrt(Math.pow(guestsInRoom[g].x-this.x,2)+Math.pow(guestsInRoom[g].y-this.y,2));
if (distanceFromGuest) {
if (distanceFromGuest<distanceFromOtherGuests) {
this.repel = [(this.x-guestsInRoom[g].x)/distanceFromGuest*0.5,(this.y-guestsInRoom[g].y)/distanceFromGuest*0.5];
this.velocity[0] += (this.x-guestsInRoom[g].x)/distanceFromGuest*0.5;
this.velocity[1] += (this.y-guestsInRoom[g].y)/distanceFromGuest*0.5;
}
}
}
}
// Apply velocity
this.x += this.velocity[0]*ChoreoGraph.timeDelta*this.speed;
this.y += this.velocity[1]*ChoreoGraph.timeDelta*this.speed;
} else {
if (this.mode=="chess") {
// Get new path when idle for a while
if (!this.idle) {
this.idleSince = ChoreoGraph.nowint;
}
this.idle = true;
if (ChoreoGraph.nowint-this.idleSince>this.idleTime&&ChoreoGraph.nowint-lastRepathTime>10||this.forceNewChessPath) {
this.forceNewChessPath = false;
lastRepathTime = ChoreoGraph.nowint;
this.newChessPath();
}
} else if (this.mode=="queue") {
// Get new path when idle for a while
if (!this.idle) {
this.idleSince = ChoreoGraph.nowint;
}
this.idle = true;
if (ChoreoGraph.nowint-this.idleSince>1000) {
this.idle = false;
this.speed = this.maxSpeed/1.5;
this.target = [this.points[this.position][0]+this.offset[0]+Math.random()/2,this.points[this.position][1]+this.offset[1]+Math.random()/2];
}
} else if (this.mode=="crowd") { // Attempt to move forward in the crowd
if (this.intention==1) {
if (ChoreoGraph.nowint-this.lastThoughtTime>this.brainSpeed+500) {
this.lastThoughtTime = ChoreoGraph.nowint;
// console.log(this.crowdPosition,this)
let closeSpot = this.cp.findCloseSpot(true,this.crowdPosition,70);
if (closeSpot!==false) {
this.crowdPosition = closeSpot;
this.path.push(this.cp.spots[this.crowdPosition]);
}
}
}
} else if (this.mode=="cm") {
if (this.startAction0) {
this.startAction0 = false;
for (let i=0;i<this.action0.length;i++) {
this.path.push(this.action0[i]);
}
this.path.push(this.idle);
} else if (this.startAction1) {
this.startAction1 = false;
for (let i=0;i<this.action1.length;i++) {
this.path.push(this.action1[i]);
}
this.path.push(this.idle);
}
} else if (this.mode=="directed"&&this.removeWithNoPath&&this.path.length==0) {
this.delete = true;
}
}
}
convertToDirectedFromQueue() {
this.mode = "directed";
}
convertToChessFromDirected(pathPosition,points,multipliers) {
this.mode = "chess";
this.idle = false;
this.idleSince = 0;
this.pathPosition = pathPosition;
this.points = points;
this.multipliers = multipliers;
this.targets = Object.keys(points).filter(key => multipliers[key] === 1);
this.idleTime = Math.random()*15000;
}
convertToDirectedFromChess() {
this.mode = "directed";
}
convertToCrowdFromDirected(cp) {
this.mode = "crowd";
this.cp = cp;
this.crowdPosition = null;
this.pathToCrowdInitialSpot();
this.lastThoughtTime = 0; // Last time the guest had a thought... because that makes sense I guess
this.intention = 0; // 0 - fill 1 - escape
}
convertToQueueFromCrowd(NOGInit) {
this.mode = "queue";
this.path = [];
this.idle = false;
this.idleSince = 0;
this.points = NOGInit.points;
this.positions = NOGInit.positions;
this.position = 0;
this.offset = [Math.random()*3-1.5,Math.random()*3-1.5];
this.maxSpeed = 0.005+(Math.random()*0.001-0.0005);
this.maxSpeed = 0.005; // I think the max speed thing is being really b a d
// if (Math.random()<0.05) { this.maxSpeed = 0.004; } // Ok... maybe...... YEAH NO, 1 slow person just makes the entire queue slow and they pile up and go through walls
this.room = NOGInit.room;
this.lastThoughtTime = 0;
}
}
class CrowdParameters {
constructor(CPInit) {
this.spots = CPInit.spots;
this.fillTargets = CPInit.fillTargets;
this.emptyTargets = CPInit.emptyTargets;
this.open = (new Array(CPInit.spots.length)).fill(true);
this.exits = CPInit.exits;
// Indexes of spots in order of distance from fill targets
this.fillSort = [];
for (let ii=0;ii<this.spots.length;ii++) {
let closest = 0;
let distance = 1000000;
for (let i=0;i<this.spots.length;i++) {
if (this.fillSort.includes(i)) { continue; }
for (let fi=0;fi<this.fillTargets.length;fi++) {
let newDistance = Math.sqrt(Math.pow(this.spots[i][0]-this.fillTargets[fi][0],2)+Math.pow(this.spots[i][1]-this.fillTargets[fi][1],2));
if (newDistance<distance) {
distance = newDistance;
closest = i;
}
}
}
this.fillSort.push(closest);
}
// Indexes of spots in order of distance from empty targets
this.emptySort = [];
for (let ii=0;ii<this.spots.length;ii++) {
let closest = 0;
let distance = 1000000;
for (let i=0;i<this.spots.length;i++) {
if (this.emptySort.includes(i)) { continue; }
for (let fi=0;fi<this.emptyTargets.length;fi++) {
let newDistance = Math.sqrt(Math.pow(this.spots[i][0]-this.emptyTargets[fi][0],2)+Math.pow(this.spots[i][1]-this.emptyTargets[fi][1],2));
if (newDistance<distance) {
distance = newDistance;
closest = i;
}
}
}
this.emptySort.push(closest);
}
}
findSpot(close) { // Find a spot that is open as close to the fill targets as possible
for (let i=0;i<this.fillSort.length;i++) {
let spotIndex = this.fillSort[i];
if (this.open[spotIndex]) {
if (close) {
this.open[spotIndex] = false;
}
return spotIndex;
}
}
console.error("NOPE")
return false;
}
findCloseSpot(closeAndOpen, origin, distance) { // Find a spot closer to the exit targets than the origin that is open
for (let i=0;i<this.emptySort.length;i++) {
let spotIndex = this.emptySort[i];
if (spotIndex==origin) { break; } // Dont check spots further from the exit than the origin
if (this.open[spotIndex]) {
if (Math.pow(this.spots[spotIndex][0]-this.spots[origin][0],2)+Math.pow(this.spots[spotIndex][1]-this.spots[origin][1],2)<distance) {
if (closeAndOpen) {
this.open[spotIndex] = false;
this.open[origin] = true;
}
return spotIndex;
}
}
}
return false;
}
}
let leftPreshowCPSpots = [[567,429],[564,434],[557,436],[550,440],[544,443],[538,445],[541,451],[548,447],[555,443],[562,441],[568,438],[575,440],[571,446],[565,447],[559,448],[554,451],[547,454],[545,461],[553,458],[560,455],[566,455],[571,451],[578,448],[581,453],[577,456],[571,459],[564,461],[558,462],[551,466],[552,471],[558,469],[565,467],[571,469],[574,465],[569,464],[580,461],[585,458],[588,463],[581,467],[577,471],[585,472],[590,468],[594,473],[590,477],[594,481],[589,485],[584,478],[577,477],[572,474],[566,473],[558,475],[558,480],[563,478],[568,479],[575,482],[581,485],[575,489],[569,485],[562,484],[563,491],[569,493],[571,434],[567,443],[541,457],[546,468],[553,477],[581,474],[584,490],[558,487],[550,461]];
let leftPreshowCP = new CrowdParameters({"spots":leftPreshowCPSpots,
"fillTargets":[[553,366],[491,404]],"emptyTargets":[[534,424]],"exits":[4,5]})
let rightPreshowCPSpots = [[580,423],[587,420],[593,415],[598,410],[602,409],[607,407],[610,412],[604,414],[599,416],[594,421],[586,426],[586,432],[592,428],[600,424],[603,420],[608,418],[614,418],[617,423],[611,424],[606,425],[600,429],[597,434],[590,435],[591,441],[597,440],[602,436],[606,431],[611,430],[620,428],[615,429],[623,433],[625,438],[619,435],[613,434],[608,438],[603,442],[596,444],[596,450],[602,448],[609,445],[614,441],[619,442],[626,443],[631,447],[625,449],[618,447],[614,450],[606,452],[600,455],[601,461],[608,459],[613,456],[619,454],[625,456],[631,453],[636,457],[629,461],[623,462],[616,461],[620,467],[615,471],[613,466],[607,466],[596,426],[582,428],[609,471],[635,451],[630,440],[587,438],[592,447]];
let rightPreshowCP = new CrowdParameters({"spots":rightPreshowCPSpots,
"fillTargets":[[604,362],[554,405]],"emptyTargets":[[599,396]],"exits":[3,4,5]})
let bakedCrumbRoles = {
"left" : {
"far" : {
"pilotL" : "26-1",
"pilotR" : "26-3",
"gunnerL" : "24-1",
"gunnerR" : "24-3",
"engineerL" : "22-1",
"engineerR" : "22-3",
},
"close" : {
"pilotL" : "0-11",
"pilotR" : "0-9",
"gunnerL" : "2-11",
"gunnerR" : "2-9",
"engineerL" : "4-11",
"engineerR" : "4-9",
}
},
"right" : {
"far" : {
"pilotL" : "24-31",
"pilotR" : "22-30",
"gunnerL" : "25-29",
"gunnerR" : "23-28",
"engineerL" : "26-27",
"engineerR" : "24-26",
},
"close" : {
"pilotL" : "28-3",
"pilotR" : "30-4",
"gunnerL" : "27-5",
"gunnerR" : "29-6",
"engineerL" : "26-7",
"engineerR" : "28-8",
}
}
}
let bakedBreadcumbs = {
"left" : {
"26-1" : decompileBreadcrumbs("25002601250126012502260126002601260226012400250124012501240225012503260226032602240325022300240123012401230224012504260326042603230324022404250323042403220023012201230122022301250526042605260422032302240525042204230323052404220523042100220121012201210222012506260526062605210322022406250525072606260726062407250621042203230624062307240622062306220723062308240724082407250824072208230721052206210622062107220623092408240924082509240822092308210822072005210620062106200721062109220820082107221023092310230924102309190520061906200619072006211022092009210819082007180419051805190518061906190419052004190522112310231123102411231018071906201021091803190419031904200319041909200821112210180819071802190319021903200219032011211019102009170418051705180517061806170318041707180622122311231223112412231118011902190119022001190218091908170218032112221117081807180019011900190120001901191120101810190917011802201221111604170516051705160617061607170616031704221323122313231224132312170918081602170325112412251224122513241217001801191220111811191021132212160817071601170217101809201321121505160615061606150716061504160516091708160017011503160418121911221423132314231324142313150216032514241317111810150116021913201226122513261325132614251321142213150816071610170915001601181319122014211317121811150916081406150614071506221523142315231424152314161117102515241419142013261525141408150721152214151016091713181216121711181419132015211414091508130714061511161022162315231623152416231517141813251624151915201416131712130814071410150926162515211622151512161118151914201621151309140814111510161417132217231623172316241723161715181415131612191620152517241613101409120713071208130726172516141215112117221627172616181619151209130820172116131114101413151217161815221823172318231724182317191720161210130925182417110712071108120713121411261825172118221718171916271826171211131011091208201821172817271728182717131314121717181622192318231923182419231819182017111012091212131125192418100711071008110726192518211922181818191727192618111112101009110812131312201921182819271817181817101011092220231923202319242023191919201811121211090710070908100725202419161817172120221926202519181919181011111027202619111312120909100820202119282027191719181810121111091010092920281919202019222123202321232024212320111412130807090708080907252124201619171821212220262125201820191909111010101311120809090827212620202121202821272017201819091210110810090919212020292128202222232123222321242223210707080707080807252224211620171930202920302129202122222126222521081109100913101218211920070908081115111427222621202221212822272117211820081209113120302031213020071008091922202129222821222323222323232224232322060707070608070716211720252324223022292108130912260826070711081021232222111611151822192106090708312230212023212217221821071208112823272206100709192320222923282222242323232423232424232305070607050806071622172125242423111711160713081206110710302329222124222318231922050906081522162131233022202421230612071117231822051006091924202310181117162317220613071205110610182419230409050815231622061407131724182314221522142315221624172326092508152416230918101813231422142415230615061425102409081809181324142326102509061606150718081806170616261125120410050904110510030904090310040903110410020903090210030902110310010902090110020901110210000901090010010900110110"),
"26-3" : decompileBreadcrumbs("25022603250326032504260326022603260426032402250324032503240425032501260226012602250526042605260424012502240525042302240323032403230424032500260126002601250626052606260523012402230524042400250124062505250726062607260624072506230024012306240623072406230824072408240725082407220523062206230622072306220823072309240824092408250924082105220621062206210722062209230821082207220223032203230322042303200521062006210620072106210922082210230923102309241023092201230220082107211022091905200619062006190720062009210822112310231123102411231019082007260826072200230120102109211122101805190618061906180719061909200818041905190419052004190520112110180819071803190419031904200319042212231123122311241223111910200921122211180219031902190320021903180919081705180617061806170718061704180519112010170318042012211117081807181019091801190219011902200119022213231223132312241323122511241225122412251324121702180319122011170918082113221216051706160617061607170618111910160417051800190119001901200019011603170417011802201321121602170317101809160817072609250822142313231423132414231321042205251424131812191126122513261325132614251319132012170017011609170821142213171118101601170215051606150616061507160615041605150316042014211318131912161017091508160715021603171218112215231423152314241523141600170125152414150116022510240926152514191420131509160816111710211522142610250914061506140715061713181215001601181419131510160920152114161217111408150722162315231623152416231525162415191520141511161026162515171418131409150821162215161317121307140618151914141015092016211515121611130814072217231623172316241723161614171325172416191620151715181414111510130914082617251615131612211722162717261618161915131014091412151120172116120713071208130722182317231823172418231717161815131114102518241719172016141315121209130821022203210322032618251721182217271826171817191613121411121013092817271728182717201821172101220211071207110812072219231823192318241923181717181612111310191820171313141225192418110912082619251821192218271926181818191712121311111012092019211828192718210022011007110710081107171818172220231923202319242023191213131211111210191920182520241910091108262025192120221916181717111212111819191827202619101011092020211928202719090710070908100717191818111312122920281910111110222123202321232024212320192020192521242009091008262125202121222026112512161917181012111111141213182019192721262009101009202121202821272008070907080809071720181910131112091110102921282022222321232223212422232119212020252224210809090830202920302129201620171921222221262225210912101118211920272226210810090920222121282227210913101207070807070808071721182011151114312030203121302008110910292228211922202122232322232323222423232207090808252324221621172030222921212322220812091118221921071008093122302120232122111611152823272208130912172218210607070706080707071108101923202229232822222423232324232324242323060907082524242316221721302329220712081121242223182319221117111606100709312330222024212315221621071308121723182205070607050806070611071019242023050906081623172206120711101811171824192305100609152316220613071217241823051106101422152214231522061407130409050816241723152416230918101813231422142415231324142306150614081809180616061507180818061706160410050904110510030904090310040903110410020903090210030902110310010902090110020901110210000901090010010900110110"),
"24-1" : decompileBreadcrumbs("23002401230124012302240124002401240224012500240125012401250224012200230122012301220223012303240224032402250324022600250126012501260225012203230226032502210022012101220121022201230424032404240325042403210322022204230326042503210422032000210120012101200221012305240424052404250524042003210222052304260525042004210321052204200521041900200119012001190220012306240524062405250624051903200222062305260625051800190118011901180219012307240624072406250724061803190222072306260725061904190321062206180419032107220617001801170118011702180123082407240824072508240717031802220823071805190419051904200621062007210617041803210822071600170116011701160217012309240824092408250924081705180420082107160317022209230818061905190619051907200616041703210922081605170420092108170618051908200715001601150116011502160118071906150316022210230923102309241023091504160321102209160617051909200817071806180819071505160420102109221123102311231024112310150616051910200916071706180919082111221017081807201121101507160618101909160817071709180822122311231223112412231114061505191120102112221114071506181119101508160717101809201221111609170819122011221323122313231224132312140815071711181025112412251224122513241221132212150916081610170913071406181219112013211213081407171218111409150816111710191320122214231323142313241423131510160925142413211422131813191226122513261325132614251313091408161217112014211314101509151116101207130712081307171318121914201322152314231523142415231425152414120913081613171221152214181419131310140915121611261525142015211414111510171418131107120711081207191520141210130915131612221623152316231524162315131114101412151111091208161417132516241521162215181519142616251520162115111012091715181410071107100811071211131014131512191620152217231623172316241723161312141110091108251724161816191521172216111112102617251620172116101011091212131113131412171618150907100709081007271726161917201622182317231823172418231710111110090910081112121125182417181719162118221726182517121313120910100920182117171718160807090708080907271826171012111119182017281727172818271709111010111312122219231823192318241923180809090825192418181819172119221826192518081009090912101120192118171818170707080707080807101311122719261811141213191920180811091028192718161817170709080822202319232023192420231909131012181919182520241921202219081209110710080926202519202021191719181806070707060807072720261907110810192020190813091216191718060907082820271922212320232123202421232018201919252124202920281921212220111511140712081106100709262125201720181905070607050806072021212027212620061107100713081219212020162017190509060828212720222223212322232124222321111611151821192025222421061207112921282021222221051006092622252117211820202221213020292030212920272226210613071205110610192220211621172004090508282227211117111622232322232323222423232218221921061407133120302031213020252324222922282121232222172218212023212230222921192320221622172110181117312230212823272222242323232423232424232318231922252424231522162129232822260825072124222317231822202421233023292206150614192420231623172231233022182419231523162209181018061606151724182314221522142315222609250816241723081809181524162306170616132314221424152325102409132414230718061726102509261125120410050904110510030904090310040903110410020903090210030902110310010902090110020901110210000901090010010900110110"),
"24-3" : decompileBreadcrumbs("23022403230324032304240324022403240424032502240325032403250424032202230322032303220423032301240224012402250124022305240424052404250524042602250326032503260425032201230222052304260125022605250421022203210322032104220323002401240024012500240123062405240624052506240521012202210522042200230126002501220623052606250523072406240724062507240622072306260725062100220121062206210722062308240724082407250824072208220721082207200521062006210620072106230924082409240825092408220922082008210721092208190520061906200619072006200921081908200722102309231023092410230920021903200319042004190518041905180519051806190619041905180719062110220919092008180319041903190420102109200119021808190722112310231123102411231018021903190219031910200917051806170618061707180617041805211122101809190817031804180119021901190220112110170818071702180320001901181019092212231123122311241223111911201016051706160617061607170617091808160417052608250718001901190019012112221116031704170118021602170318111910160817072012201117101809170018012213231223132312241323121601170219122011160917081505160615061606150716062511241225122412251324121504160521132212171118101503160415021603181219111508160716101709201320121600170126092508150116022214231323142313241423131712181115091608191320121406150614071506161117102514241321142213150016012612251326132513261425131813191215101609140815072014211316121711251024091713181214091508191420132215231423152314241523141511161013071406251524142610250921152214181419132615251416131712141015091308140715121611201521141714181313091408141115101915191422162315231623152416231515131612251624152116221516141713131014091815191426162515141215111207130712081307201621151715181413111410120913081916191522172316231723162417231614131512251724162117221612101309181619151312141126172516110712071108120720172116271726161716181512111310110912081313141219172016221823172318231724182317251824171110120912121311211822171817191610071107100811072618251720182117111112102718261717171816121313121009110819182017281727172818271722192318231923182419231811121211101011092519241818181917211922180907100709081007261925182019211810111110171818171113121227192618090910081919201828192718222023192320231924202319161817171012111109101009111412132520241918191918212022190807090708080907262025192020211910131112091110101719171827202619080909081920201928202719091210112221232023212320242123201619171826112512081009092521242018201919212122202920281907070807070808072621252009131012081109102021212017201819111511142721262007090808192120200812091128212720162017192222232123222321242223210710080918211920252224212122222129212820060707070608070708130912111611152622252107110810202221211721182030202920302129202722262106090708192220210712081116211620282227212223232223232322242323220610070918221921252324222922282131203020312130202123222211171116071308120507060705080607061107101722182120232122302229210509060819232022061207111622172131223021282327222224232323242323242423230510060910181117182319222524242329232822212422230613071215221621051106101723182220242123302329220409050806140713192420231623172231233022182419231523152217241823091810181422152214231522162417230615061415241623081809181323142214241523061606151324142307180818061706160410050904110510030904090310040903110410020903090210030902110310010902090110020901110210000901090010010900110110"),
"22-1" : decompileBreadcrumbs("21002201210122012102220122002201220222012300220123012201230222012000210120012101200221012103220222032202230322022400230124012301240223012003210224032302190020011901200119022001210422032204220323042203250024012501240125022401190320022004210324042303250324021800190118011901180219011803190219041903250424031804190317001801170118011702180117031803170418031805190419051904200519041600170116011701160217011603170317051804160417031806190519061905200619051500160115011601150216011605170417061805150316022105200622052106230522062600250126012501260225011907190620072006210620062107200618071906150416031606170522062106220721061505160424052306260325021707180623062206230722061506160518081907190819072008190721082007160717062208210724062306240723061708180723082207250524062604250315071606140615051809190819091908200919081608170721092008250624062507240622092108240823072309220814071506170918081508160725082407260525062606250626072506240923081609170818101909191019092010190921102009140815072210210923102209130714061710180915091608250924082410230913081407161017091811191019111910201119101409150821112010221121102311221015101609171118101309140824112310120713071208130716111710141015091812191119121911201219112112201122122111120913081511161017121811231222111310140924122311110712071108120816121711141115101813191219131912201319121210130921132012110912082213211215121611131114101713181223132212241323121007110710081108141215111110120916131712121113102511241225122412251324121814191319141913201419132114201310091108151316122214211313121411171418132314221311111210090710070908100710101109141315122414231316141713121213112514241318151914191519142015191409091008211520141313141210111110261225132613251326142513221521141715181411121211231522140910100908070907080809072415231412131312101211112515241418161915191619152016191508090908091110102116201511131212261525142216211517161815231622150810090907070807070808070912101124162315101311122516241508110910181719161917191620171916070908081114121321172016261625152217211617171816091310120710081023172216081209110607070706080707241723160711081025172416060907081818191719181917201819170813091221182017261725162218211717181817061007090712081123182217050706070508060711151114271726161618171724182317061107100713081205090608251824171819191819191918201919182119201826082507261825172219211817191818061207110510060911161115231922182718261716191718241923182510240905110611061307120409050828172717281827172519241818201919192019192020191926092508212020192619251817201819222021191117111606140713232022192719261816201719242023192819271826102509252024191821192019211920202119202121202010181117262025191721182022212120232122202720261916211720242123200615061428202719252124201822192119221921202219212122202129202819262125201722182122222121232222212721262006160615162217210918101824222321282127201522162125222421182319221923192220231922212320222921282026222521172318222223212206170616081809182323222227222621302029203021292016231722242323222822272115231622252324221824192319241923202419232124202329222821071806173120302031213020172418231422152214231522222421232324222330222921162417232611251224242323282327221524162331223021132314222524242329232822142415233023292213241423312330220410050904110510030904090310040903110410020903090210030902110310010902090110020901110210000901090010010900110110"),
"22-3" : decompileBreadcrumbs("21022203210322032104220322022203220422032302220323032203230422032002210320032103200421032101220222012202230122022105220422052204230522042402230324032303240423032001210220052104240123022405230419022003190320031904200321002201220022012300220121062205220622052306220525022403250324032504240319012002190520042000210124002301200621052406230525012402250524041802190318031903180419032107220622072206230722061801190218051904200721062407230619001901190619052500240125062406180019011806190519072006250724061702180317031803170418032108220722082207230822071701180117051805200820072408240717001801170618051908200725082407180719062605250626062506260725061602170316031703160417032109220822092208230922081601170116051705200920082409240817071806180819071600170116061705190920082509240815021603150316031504160321102209221022092310220916071706180919081708180715011602150516042010210924102309260225032603250326042503150016011506160519102009160817071709180815071606181019092601250221112210221122102311221020112110241123101508160717101809140615051911201016091708140715061811191021122211221222112312221126002501150916081610170920122111241223111408150717111810191220111409150816111710130714071812181115101609211322122213221223132212201321122413231213081407171218111913201225112412251224122513241214101509151116101309140816121711181318122114221322142213231422132608250720142113241423131310140915121611120713071208130717131812141115101914201325142413120913081613171218141913261225132613251326142513131114101412151121152214221522142315221412101309151316122609250817141813110712071108120720152114241523141915201425152414110912081614171312111310141315121312141118151914261525142510240921162215221622152316221511101209171517141007110710081108201621152416231512121311131314121916201525162415111112101009110826102509181619152616251521172216221722162317221610101109111212111716171509071007090810082017211624172316121313121011111019172016251724160909100818171916261725161113121209101009101211112118221722182217231822171717181627172616080709070808090720182117241823170911101010131112191820172518241708090908111412131818191726182517091210110810090921192218221922182319221817181817271826170707080707080807201921182419231808110910091310121618171728172717281827170709080819192018251924181819191826192518081209110710080921202219222022192320221911151114171918182719261806070707060807072020211924202319081309120711081016191718281927180609070819202019252024190712081118201919262025190610071011161115212122202221222023212220172018192720261905070607050806070713081220212120242123200611071016201719282027190509060819212020252124202611251206120711182119202621252029202819051006101117111621222221222222212322222117211820272126200613071205110610202221212422232116211720282127200409050819222021252224210614071310181117182219212622252129212820212322222223222223232222172218212722262130202920302129202023212224232322162217212822272119232022252324221522162129222821182319223120302031213020061506142124222322242223232422231723182209181018302229212024212324242323162317222823272219242023252424233122302115231622292328221824192306160615081809181724182314221522142315223023292216241723312330220617061615241623071808181323142214241523132414230410050904110510030904090310040903110410020903090210030902110310010902090110020901110210000901090010010900110110"),
"0-11" : decompileBreadcrumbs("00100011011000110111001100090010010900100210011102110111020901100310021103110211030902100410031104110311040903100510041105110411050904100508040905070508060705080608050806090508070706080708060807090608061006090710060906110610071106100612061107120611080707080808070808090708081007090811071006130612071306120812071109070808090808080909080809100809061406130911081008130712091208110615061409130812100709081008090810090908101009091011091010120911061606151013091211071008110810081109100811101009111110100617061611121011111310121114101312071108120811081209110812101109121111100718061712121111121311121307120813081208130912081310120913111210111511141312121113131212081807181116111514071308140813081409130814101309141113101406130714121311091808181117111614131312150714081508140815091408151014091511141015061407101811171512141115131412150514061607150816081508160915081610150916111510160615071612151116051506161315121614151317071608170816081709160815041505160415051710160917111610170616071712161117051606171316121503150416031504171416131807170818081708180917081704160518101709171516141811171018061707170316041812171115021503160215031805170618131712181417131907180819081808190918081804170519101809170216031501150216011502181517141906180719111810180317041912181117161715181617151905180619131812180217031701160219141813190418052007190820081908200919081500150116001501201019091717171618171716191518142006190720111910190318042012191118011702191618152005190617001601201319121902180316181717171817171818171719171816200419052014191321072008210820082109200821102009190118022015191416191618171917181800170121062007211120102003190421122011181917181918181720161915210520062113201220021903201719161900180121142013162016191720171922072108220821082209210820011902221021091919181820181917182017192115201422062107221121102212211121162015200019012205210616211620172117202213211221172016201919181920181918211720221421132307220823082208230922082310220921182017221521142306220723112210152216211622162117221721231222112216211521192018202019192305220619211820182217212313221222172116231422132407230824082308240923081422152214231522152315221623162224102309132314222218211721202019231522141723172220211920240623072411231019221821182317222412231123162215221921182405230613241423142414231524152324132312231722161624162322202119212120202414231325072408250824082509240820221921172417231923182223182217241523141824172325062407231922182416231525052406222121202122202125112412251224122513241220231922241723161924182323202219251424132418231725152414232122202222212121232022241923182024192325162415260525062606250626072506251724162420231923222221261225132613251326142513222321222124202325182417261525142421232025192418261625152422232123232222222421232617251625202419261825172521242024232322232422232619251825222421271726162620251925232422242423232718261726212520271926182622252125242423272026192817271728182717272126202819271827222621282027192821272028222721292028192823272229212820292228212923282230202920302129203022292130232922312030203121302031223021312330222104200521032004210220032204210521012002210020012304220524042305251024092608250826092508250424052610250926042505261125122203210422022103220121022303220422002101240323042503240426032504230222032301220223002201240223032502240326022503240123022400230125012402260125022500240126002501"),
"0-9" : decompileBreadcrumbs("00100009010900090110000900110010011100100209010902100109021101100309020903100209031102100409030904100309041103100508040905090409051004090511041005070508060705080608050806090508070706080708060807090608061006090710060906110610071106100807070808080708080907080810070906120611071206110811071009070808090808080909080808120711061306120713061209100809091108100813071209120811061406131007090810080908100909081010090909130812101109100615061410120911110710081108100811091008101309121110100911111010061606151112101112071108120811081209110811131012121011090617061611141013121111101212111113071208130812081309120812131112131012090718061713111210131212111115111413131212140713081408130814091308141013091406130714111310111611150818071814121311141313121507140815081408150914081510140911171116150614071511141009180818150514061512141115131412160715081608150816091508101811171610150916061507161115101605150616121511150415051604150516131512170716081708160817091608171016091706160716141513171116101503150416031504170516061712161117041605171316121807170818081708180917081502150316021503181017091703160418061707171416131811171018051706171516141812171118041705170216031501150216011502181317121907180819081808190918081803170419101809190618071814171319111810190518061802170317011602181517141500150116001501191218111904180519131812171617151816171520071908200819082009190819031804201019091801170219141813200619071700160120111910190218032005190619151814171717161817171620121911200419051901180218001701191618152013191221072008210820082109200820031904211020092014191321062007191718161618171717181717181817172111201020021903210520062015191419001801211220111619161817191718200119022016191521132012191818172207210822082108220921081819171822102109211420132206210720001901201719162211211022052106211520141620161917201719221221112018191719191818182017192116201522132112230722082308220823092208231022092214211321172016230622071621162017211720201919182311221019201819230522062215211418211720211820172312221122162115231322122407230824082308240923082119201820201919152216211622162117221721192118202410230923142213221721162406230718221721241123102405230623152214221821172412231121202019142215221423152215231522162316222021192023162215132314222413231217231722192218212219211825072408250824082509240818231722231722162414231325062407222021191324142314241423152415232121202025052406241523142318221720221921162416231923182217241723241623152511241225122412251324122319221818241723222121202417231625142413212220212320221920231922251524142605250626062506260725062418231719241823232122202516241522222121241923182123202225172416202419232612251326132513261425132420231926152514251824172322222122232122242123202124202326162515251924182617251624222321232322222520241922242123261825172521242026192518242323222324222325222421271726162620251927182617252324222621252024242323271926182622252127202619252424232817271728182717272126202819271827222621282027192821272028222721292028192823272229212820292228212923282230202920302129203022292130232922312030203121302031223021312330222104200521032004210220032204210521012002210020012304220524042305251024092504240526082508260925082610250926042505261125122203210422022103220121022303220422002101240323042503240426032504230222032301220223002201240223032502240326022503240123022400230125012402260125022500240126002501"),
"2-11" : decompileBreadcrumbs("01100211011102110210021103100211031102110010011100110111010902100209021003090210041003110411031100090110040903100510041105110411050904100508040905070508060705080608050806090508061006090708060807090609071006090707060806110610071106100612061107120611080807080809070908100709080707080811071006130612071306120812071109070808090808080909080809100809061406130911081008130712091208110913081206150614100709081008090810090908101009091011091010120911101309120616061511071008110810081109100811101009111110101112101111131012061706161114101312071108120811081209110812101109121111101212111107180617121311121307120813081208130912081310120913111210111511141312121113131212111611151407130814081308140913080818071814101309141113101406130714121311141313121117111609180818150714081508140815091408151014091511141015061407151214111018111715131412150514061607150816081508160915081610150916111510160615071612151116131512160515061614151317071608170816081709160817101609150415051604150517111610170616071712161117131612170516061503150416031504171416131807170818081708180917081704160518101709171516141811171018061707181217111703160415021503160215031805170618131712181417131907180819081808190918081804170519101809170216031815171419111810190618071501150216011502180317041912181117161715181617151905180619131812180217031914181320071908200819082009190817011602190418052010190915001501160015011717171618171716191518142011191020061907190318042012191119161815200519061801170220131912170016011902180316181717171817171818171719171816201419132107200821082008210920082004190521102009201519141901180221062007211120101619161817191718200319041800170121122011201619151918181718191718210520062113201220021903201719162114201322072108220821082209210819001801162016191720171922102109200119022115201420181917191918182206210722112110182017192212211121162015220521062000190122132112162116201721172021172016201919182214211319201819230722082308220823092208182117202310220921182017221521142306220723112210231222112216211523052206211920182020191915221621162216211722172119211820231322121822172122172116231422132407230824082308240923082410230922182117231522141422152214231522152315221623162224062307212020192411231020211920132314221723172219221821241223112316221522192118240523061823172224132312231722161324142314241423152415232414231322202119250724082508240825092408212120201624172320221921231822172415231419231822172417232506240718241723241623152319221825052406222121202511241225122412251324122122202124172316202319222320221925142413192418232418231725152414232122202222212121232022251624152419231826052506260625062607250620241923251724162420231926122513261325132614251323222221222321222518241726152514212420232421232025192418261625152422232123232222261725162520241922242123261825172521242024232322261925182324222325222421271726162620251925232422271826172424232326212520271926182622252127202619252424232817271728182717272126202819271827222621282027192821272028222721292028192823272229212820292228212923282230202920302129203022292130232922312030203121302031223021312330222104200521032004210220032204210521012002210020012304220524042305251024092608250826092508250424052610250926042505261125122203210422022103220121022303220422002101240323042503240426032504230222032301220223002201240223032502240326022503240123022400230125012402260125022500240126002501"),
"2-9" : decompileBreadcrumbs("01090209011002090210020903090209031002090009010900100109011102100211021003110210040903090410030900110110041103100508040905090409051004090511041005070508060705080608050806090508070706070708060807090609061006090710060906110610071106100807070708080708080907080810070906120611071206110811071009070808090808080909080808120711091008100613061207130612091108100912081108130712100709081008090810090908061406131010091010110910091308121012091106150614110710081108100811091008101309121110101011111010111210110616061512071108120811081209110811131012121011101211111011141013121211110617061613071208130812081309120812131112131012101311121007180617131212111115111414071308140813081409130813131212141013101406130714111310111611151412131115071408150814081509140814131312081807181510141015061407151114101117111615051406151214110918081815131412160715081608150816091508161015101018111716061507161115101605150616121511150415051604150516131512170716081708160817091608171016091706160716141513171116101705160615031504160315041712161117041605171316121807170818081708180917081810170917031604180617071502150316021503171416131811171018051706171516141812171118041705170216031813171215011502160115021907180819081808190918081910180918031704190618071814171319111810190518061802170318151714170116021912181115001501160015011904180519131812200719082008190820091908171617151816171520101909190318042006190719141813180117021700160120111910200519061902180319151814201219111717171618171716200419052013191219011802191618152107200821082008210920081800170120031904211020092106200720141913191718162111201016181717171817171818171721052006200219032015191421122011190018012001190221132012201619151619161817191718220721082208210822092108191818171819171822102109211420142206210720001901201719162211211022052106211520142212211120181917162016191720171919191818211620152213211218201719230722082308220823092208231022092214211323062207211720162311221020191918230522061621162017211720221521141920181923122211211820171821172022162115231322122407230824082308240923082119201824102309202019192314221324062307221721161921182015221621162216211722172124112310240523062315221518221721241223112218211721202019231622152413231220211920250724082508240825092408142215221423152215231522162316222219211819221821172317221323142224142313231722162506240718231722222021192505240624152315212120202318221720221921132414231424142315241523241623151624162325112412251224122513241219231822231922181724172318241723251424132417231622212120212220212320221926052506260625062607250625152415202319222418231719241823251624152321222024192318222221212123202225172416261225132613251326142513202419232420231926152515251824172322222122232122261625152421232025192418212420232617251624222321252024192323222226182517222421232521242026192518242323222717261623242223252224212620251927182617252324222621252024242323271926182622252127202619252424232817271728182717272126202819271827222621282027192821272028222721292028192823272229212820292228212923282230202920302129202104200530222921210320043023292231203020312130202102200331223021220421053123302221012002210020012304220524042305251024092504240526082508260925082610250926042505261125122203210422022103220121022303220422002101240323042503240426032504230222032301220223002201240223032502240326022503240123022400230125012402260125022500240126002501"),
"4-11" : decompileBreadcrumbs("03100411031104110410041105100411051104110210031102110311030904100409041005090410061005110611051106120511020903100609051007100611071106110712061107090610061306120713061208100711081107110812071105080609060806090708060906140613080907100813071201100211011102110808070905070508060706080707060809100811091108110912081106150614010902100909081009130812080707080908080906160615101009111011091110120911090708081009091010130912100809080617061611101011111110111112101110070908110910101113101211081009111410130718061711071008121011111211111112121111120911091213111312081109120711071115111400100111001101111310121113111211131212110818071813091209131312130009011013081209111611151307120809180818141013111411131114121311140913091413131311171116140813091018091814071308151014111511141115121411150914091513141314061307150814091507140816101511161115111612151115061407160915101613151216081509161415131505140616071508171016111711161117121611160615071709161017131612170816081714161416051506170716081715161418101711181117111812171115041505160415051706160718091710181317121808170918141713170516061503150416031504180717081815171417041605191018111911181119121811180617071716171518161715190918101913181217031604190818091914181318051706150215031602160319071807191518151717171618171716180417052010191120111911201219111906180719161815170216032009191020131912180317041501150216011602190518061917181620081909201419131618171717181717181817172007190720151915180217031904180517011602161916181719171821102011211120112112201120061907201619151918181715001501160016011819171821092010211320121903180420051906201719162108200921142013180117021902180316201619172017191700160121072008211520142004190520181917191918181820171922102111221121112212211121062007211620151901180222092110221321122003190418001701210520062117201622082109221421132019201816211620172117201920181920021903182117202207210822152114211820171900180123102211231122112312221122062107221621152001190221192018230922102313221220202019152216211622162117221721192118202205210622172116230822092314221318221721200019012307220823152214221821172120201920211920241023112411231124122311142215221423152215231522162316222306220723162215192218212219211817231722132314222409231024132312182317222305220623172217240823092414231322202119212120202318221724072308241523142022192113241423142414231524152316241623192318221724172324062307241623152319221818241723251124122512241225132412222121202405230624172316212221212514241323202219202319222418231725072408250824082509240825152414192418232321222022222121250624072516241524192318212320222505240625172416202419232612251326132513261425132420231923222221251824182615251422232122242123202124202326162515251924182422232126052506260625062607250626172516232322222520241922242123261825172521242026192518242323222324222325222421271726162620251927182617252324222621252024242323271926182622252127202619252424232817271728182717272126202819271827222621282027202821272028222721292028192823272229212820292228212923282221042005302029203021292130222921210320043023292231203020312130202102200322042105312230213123302221012002210020012304220525102411240423052611251226102511260825082609250825042405260425052203210422022103220121022303220422002101240323042503240426032504230222032301220223002201240223032502240326022503240123022400230125012402260125022500240126002501"),
"4-9" : decompileBreadcrumbs("03090409031004090410040905080409050904090510040905070508060705080608050806090508020903090210030903110410041104100511041006100509021103100611051007070608070806080709060807100609071106100807070808080708080907080810070906120611071206110811071001090209011002090812071109070808090808080909080809100809061306120713061201110210091108100813071209120811100709081008090810090908061406131010090909130812101109101012091111071008110810081109100806150614111010101013091211111010111210111207110812081108120911080616061511131012121011091211111011141013121211111307120713081208130912080617061612131112131012090009010900100109131112101312121100110110140713071408130814091308071806171115111413131212141013101406130714111310141213111116111515071407150814081509140814131312151014101506140708180718151114101505140611171116151214111607150816081508160915080918081815131413161015091606150716111510101811171605150616121511150415051604150517071608170816081709160816131513171016091706160616141513171116111705160615031504160315041712161117041605171316131807170818081708180917081810170918061707170316041714161315021503160215031811171018051706181217111715161418041705181317121907180819081808190918081702160315011502160115021910180919061807180317041814171319111810190518061912181218021703181517141701160219041805150015011600150119131812200719082008190820091908171617151816171520101909190318042006190719141813180117022011191017001601200519061902180319151814201219111717171618171716200419042013191221072008210820082109200819161815190118021800170121102009200319042106200720141913211120101917181621052006161817171718171718181717200219032015191421122011190018012113201322072108220821082209210820011902201619151619161817191718221021091918181722062107211420131819171822112110201719162000190122052106211520142212211120181917221321121620161917201719191918182116201523072208230822082309220818201719231022092306220722142113211720162311221023052206221521142019191823122211192018191621162017211720211820172313221222162115182117202407230824082308240923082410230921192018231422142406230722172116202019192411231024052306192118202315221415221621162216211722172124122311221821171822172123162215241323122120201925072408250824082509240820211920221921182414231325062407231722161922182114221522142315221523152216231622172317222505240613231422241523142220211918231722231822172121202024162315251124122512241225132412202219212319221813241423142414231524152319231822251424131624162324172316172417232221212018241723260525062606250626072506251524152122202123202219241823172023192225162415232122201924182324192318222221212612251326132513261425132517241621232022242023192615251520241923251824172322222126162515242123202223212225192418212420232617251624222321252024192323222226182517222421232521242026192518271726162423232225222421232422232620251927182617252324222621252027192618242423232622252127202619281727172818271725242423210420052721262028192718272226212103200428202719282127202102200328222721220421052920281921012002282327222921282021002001292228212923282230202920302129202304220530222921302329223120302031213020312230212404230531233022251024092504240526082508260925082610250926042505261125122203210422022103220121022303220422002101240323042503240426032504230222032301220223002201240223032502240326022503240123022400230125012402260125022500240126002501")
},
"right" : {
"24-31" : decompileBreadcrumbs("233024312430243125302431253124312329243024292430252924302229233022302330262925302328242924282429252824292228232926282529212922302128222821272228222722282327222820282128202721282126222722262227232622272026212719272028192820282125222622252226232522262425232624262326242723261926202720252126252524262526242625272426182719281925202621242225222422252324222524242325262525262626252626272526182619272524242520242125272526262726262627272626182519262624252519242025212322242223222423232224242323241726182717271827252324242023212418241925272426252825272628262726262325241725182619232024212222232222222323222223242223231626172727232624282427251724182525222423182319242022212326222523162517261922202328232724172318242722262329242825212122222221222223212222162417252421232218221923252124222021212228222723152516262621252229232824162317241722182319212022272126222120222122202221232022211524162524202321182119222821272229222823162217232520242120202121152316242620252117211822192020212720262129212822142415251425152530222923211922202219222023192220152216231820192124192320162117222820272120192120251924201423152426192520172018211521162219192020271926201324142514221523211822192218221923182219162017211819192024182319201821192518241913231424171918201421152226182519152016211918201913221423161917202117221822172218231722181818191914201521241723181223132412241324201721182517241813211422171818191519162026172518191720181222132316181719132014211419152021162217221622172316221718171918241623171123122412211322201621172516241715181619171718181319142026162517191620171122122312201321161717181418151918161917211522162215221623152216241523161121122220152116151716182515241612191320171618171318141926152516102211231023112310241123191520161120122114171518161617171218131918151916211422152214221523142215102111222414231511191220151616172014211513171418171518162514241509231023092410240922102326142515102011211914201514161517161517161118121912171318271426152113221422132214231322140921102210191120241323141515161613161417201321142513241411171218082309230824092408220923092010212613251419132014141515161018111912161317271326140821092221122213221222132312221309191020281327141315141615141615241223131017111811161217201221132512241308200921072308230724082407220823091810191414151519122013261225131215131610161117271226130721082208190920211122122211221223112212131414150917101828122713111512162411231220112112072008212511241206220723062307230624072306250724081809191413151415131514121413151911201226112512091610171015111606210722071908202711261208170918131314142210221123102211111412152811271224102311091510160620072107180819052206230523062305240623052506242510241105260625291128121213131408160917101411152610251106190720052106220717081818101911131214131113121423092210081509160914101524092310052006210618071904220523042305230424052304250524071608171212131325092410101311140814091505190620061707181112121307150816091310140518061923082309240823091709181017101810061607170322042303230423032404230325042412111312101211130714081508130914051706181111121206150716091210132407230802230323022403231011111208120913170817091110121112101211091110121010111101230223012402231707170811091210120912100910101110091110180617071108120910081109190518062005190521052005220521052306220527102611281027112910281126092510270926102508240926082509250724082809271029092810270826092808270926072508270726082606250729082809280727082907280827062607280627072605260627052606290628073006290728052706290528062704260528042705300529063105300629042805300429052703270428032704290328043104300530032904280227032902280328012802"),
"22-30" : decompileBreadcrumbs("212922302229223023292230233022302028212921282129222821292328222924292330243023302431233024282329202721282127212822272128232722281927202819282028202621272126212722262127232622271926202718271928252924302530243025312430182619272025212621252126222521262325222624272326252824291925202624252326242623261825192617261827172718272024212521242125222421252525242625262426252724262324222519242025172518262424232525242425182419251626172726252526262625262627252620232124212321242223212423232324172418251625172619231924242323242624252527252626272626262727262618231924252324241624172520222123212221232222212326232524232222231723182415251626272426251922202324222323282527262826272618221923162317241524162525222423272326242021202221212122222121222622252317221823282427252321222215231624262925301921202224212322272226231622172314241525142515251821192228232724252124222628252929242825202020212120212122202121172118222621252215221623142315242320232119202021282227232420232127212622162117221324142529232824182019211422152325202421282127222019202021192120221921201521162213231424172017212620252129222823231923201919202024192320272026211620172114211522132214231819192025192420292128222820272115201621122313241224132430222923171918202018211921182119221821192619262013211422231822191918201916191720271926202418231914201521122213231818191925182419151916201123122413201421122113221718181920172118211721182217211826182619231722181917191814191520112212231618161924172418122013211817191825172418151816191319142011211222171718182617261820162117211621172216211723162217141815191022112310231123102411231916201716171618121913201120122124162317181619172516241715171618131814191021112217161817111912202616251720152116211521162215211609231023092410241417151809221023231522161218131910201121191520161616171724152316181519161317141809211022251525161516161711181219101911201715181626152516201421152114211522142115082309230824092414161517082209231217131809201021231422151615171619142015101811192414231513161417082109221515161611171218091910202514241526142515201321142113211422132114121613170820092107230823072408241415151607220823231322141017111809181019191320142714261524132314131514160721082211161217081909201514161525132414091710182613261412151316072008212012211321122113221221131414151506220723062307230624072306250724101611170818091923122213191220132713261424122313131414150621072211151216071908200916101708170918281327142512241312141315062007212612251310151116071808191413151415131514052206230523062305240623052506242011211221112112221121120526062508160917231122121911201227122613111412150619072013131414052106222411231209151016071708182812271325112412121313140520062110141115061807190422052304230523042405232611251204250524221021110815091607160817231022112711261211131214051906201312141309141015061707182410231118101911281127120715081625102411121213131013111405180619032204230323042303240423081409150616071729112812032504242610251123092210111212130913101405170618240923100714081506150716250924101012111312111312081309141709181017101810022303230224032311111212091210132308230924082309101111120812091301230223012402230911101211101211121012111708170924072308101011110910101111091210120912101707170810091110110812091806170710081109190518062005190521052005220521052306220527102611281027112609251029102811270926102508240926082509250724082809271029092810270826092808270926072508270726082606250729082809280727082907280827062607280627072605260627052606290628073006290728052706290528062704260528042705300529063105300629042805300429052703270428032704290328043104300530032904280227032902280328012802"),
"25-29" : decompileBreadcrumbs("242825292429252924302529252825292530252926282529262925292328242923292429233024292427252825272528262725282431253025312530232724282727262822282329222923292230232924262527252625272626252722272328232624272726262724252526252525262625252621272228212822282129222823252426272526262226222728262726212622272225232628252726242425252524252526242525232423252724272520272127202821282026212722242325282427252125222624232524252325242623252423232324272327241927202719282028202521262124222529242825222323242823272419262027242225232522252326222523192520262123222429232824202421252322242327222623182719282222232328222723182619271924202520232124212222232922282318251926242125222521252226212522232124222721262218241925202221233022292322212322282127221726182717271827192320242121222229212822172518262420252125202521262025211823192419222023232024212720262120212122172418252220232128202721162617271723182419212022212021211625172518221923241925202519252026192520231924202719262020202121162417252219232017221823182119221920202116231724211921201525162524182519251825192618251923182419162217231820192120192120152416251721182222182319191920201523162421182219162117221720182124172518251725182617251818191920152216232018211914241525142515252317241822172318191820191423152415211622171918201620172121172218241625172516251726162517181819191422152320172018132414242316241715201621161917202216231717181819142115221917201813231424211622172415251625152516261525161817191813221423142015211618171920162017231524161519162017171818132114222215231619162017122313241224132421152216141915201518161918161917122213231617171813201421241425152514251526142515201521162314241527142615171618171221132213191420151716182214231519152016112312241418151921142215161617171220132118151916112212232413251425132514261325142014211513181419141715182313241427132614171518161121122215161617121913201914201522132314281327142113221416151716112012211022112310231123102411231218131914161517241225132512251326122513131714182013211423122413271226131515161611191220102111221913201422122313281227131217131813161417102011212112221314151516111812190922102309231023092410232411251225112512261125122012211315141615101911202311241227112612092110221117121813151416191220131216131722112312281127120920102114141515101811192111221229112812082209230823092308240923241025112510251126102511111612171215131620112112091910201314141510171118082109222310241119112012221023111413151415131514091810190820092110161117121413150722082307230823072408231115121608190920131314140917101807210822230924102409241025092410101511161114121508180919072008211213131409161017181019110622072306230723062407230625072407190820131214130817091806210722091510161113121410141115071808192308230924082309121213130816091706200721052206230523062305240623052506240526062509141015101311140717081806190720111212130815091617091810171018100521062206180719121113120716081724072308052006210814091510121113042205230423052304240523091310140425052406170718051906201111121207150816081309140912101306160717051806191011111207140815170817090322042303230423032404230325042405170618111012111210121106150716091110120812091310101111170717080223032302240323110912101209121009101011100911101806170711081209012302230124022310081109190518062005190521052005220521052306220527102611281027112910281126092510270926102508240926082509250724082809271029092810270826092808270926072508270726082606250729082809280727082907280827062607280627072605260627052606290628073006290728052706290528062704260528042705300529063105300629042805300429052703270428032704290328043104300530032904280227032902280328012802"),
"23-28" : decompileBreadcrumbs("222723282228232822292328232723282329232824272328242823282429232821272228212822282129222821262227222622272326222724262327223023292330232924302329252724282528242825292428202721282028212825262427253024292026212721252226222522262325222624252326252524262025212619272028192820281926202721242225222422252324222524242325262525262626252626272526252424251925202620242125243123302628252826292528182719282624252519242025182619272123222422232224232322242423232427252626272626262727262625312430182519262023212425232424272426252623252418241925192320241726182717271827212222232222222323222223282527262826272624222323172518262022212327232624182319242522242328242725262225231724182519222023162617272121222222212222232122222823272424212422272226231723182418221923162517252021202225212422292428251624172519212022262125222822272317221823292328242120222122202221232022212721262224202321162317241821192215251626202021212520242129222823282127221524162519202021162217231721182226202521211921202219222023192220272026211523162418201921241923202921282216211722201921203022292325192420282027211522162317201821142415251425152519192020261925202118211922182219231822191423152418191920271926201521162216201721241824192018211925182419142215231719182019182019132414251520162126182519211721182217221823172218142115221619172013231423181818192417241820172118251724181322142317181819142015211519162019172018261725181321142216181719181719181223132412241324211622172216221723162217141915202416231720162117122213231717181825162417132014211518161919162017261625171221132216171718131914201418151918161917112312242115221622152216231522162415231620152016122013211517161817161717112212222515251613181419191520162615251611211222161617171219132014171518181519162114221522142215231422152414231511201221151616172014211517151716102211221023112310241123121813191317141825142415191420152614251516151716102111221119122014161517121713182714261521132214221322142313221410201121151516162413231411181219131614172013211409221023092310230924102325132414191320141019112014151516261326140921102211171218121613172713261421122213221222132312221315141615092010211018111913151416241223130822092308230923082409232012211328132714111612172512241319122013091910201414151508210922101711181215131626122513271226132111221222112212231122120918101913141415082009212411231210161117111512160722082307230823072408232011211228122713251124121413151415131514081909201911201209171018121413150721082226112512101511162711271208180919131314142210221123102211072008210916101711141215241023110622072306230723062407232811271206250724251024110719082008170918121313140621072209151016101411152911281226102511181019111312141307180819081609171113121406200721230922100914101505220623052306230524062324092310052506240526062507170818121213130619072025092410081509161013111405210622061807190716081711121213052006210814091509131014170918101710181004220523042305230424052323082309240823090425052412111312061707180519062007150816101211130813091405180619061607171111121207140815091210130322042303230423032404232407230805170618032504240615071610111112081209131708170911101211121012110911101202230323022403231010111117071708110912101209121009101011100911100123022301240223180617071108120910081109190518062005190521052005220521052306220527102611281027112609251029102811270926102508240926082509250724082809271029092810270826092808270926072508270726082606250729082809280727082907280827062607280627072605260627052606290628073006290728052706290528062704260528042705300529063105300629042805300429052703270428032704290328043104300530032904280227032902280328012802"),
"26-27" : decompileBreadcrumbs("252626272527262725282627262626272628262727262627272726272525262626252626272526262425252624262526242725262825272628262726242825272529262826292628252426252624262527242625242925282424252528242725232524262326242623272426232424252924282525232624262326242723262424232524282327242225232622262326222723262323242429232824222423252328222725302629252226232622262327222623222323242422252328222723212522262126222621272226212822272228222723292228243025292322242329222823212422252129222822292228252126222621262227212622222223233022292321232224242125222821272220252126202621262027212620282127232124222921282220242125233024292122222325202621262026212720262122212322202321242420252128202721192520261926202619272026223021291928202821212222202221232320232119242024222023211923202425192620261926202719262020212122241925201825192618261926182719262120222119222023231924201824192522192320182319242020212119212022251826192618261924182419172518251726182617271826211922201822192319202021231824191724182520192120182119222218231917231824243125302531253025172618261726182417241816251725162617262118221917221823191920201820192123172418162417252018211917211822221723181623172418191920251626172616261724162417152516251918201917201821211721181622172223162417152416252017211816211722181819191719182022162317152316242515261626152616191720181620172121162217152216232415251617181819231524161424152514251525201621171521162218171918161917202215231614231524251426152614261527142615191620171520162117171818161817192115221614221523241425152314231513241425181619171519162020152016142115211617171822142315132314242513261426132614271326141915201614201521171618171518161921142215132214232413251428132714181519161419152023132414201420151321142116161717151716182213231412231324122413241914201513201421171518161418151925122613261226132712261321132214122213231516161724122513281227131319142016151716141715182312241320132114122113222212231311231224131814191913201412201321251126122611261227112612151516161416151721122213112212232411251228112712121913201317141820122113112112222311241229112812141515162211231212181319191220131120122115141615131614171022112310231123102411232111211224102511251025112610251112171318111912201414151513151416201121121021112223102411111812192210231112161317191120121020112113141415092210230923102309241023111712181019112014131514151315141215131609211022230924102409241025092410101811191116121709201021131314141214131508220923082309230824092310171118111512161810191109191020121313140821092210161117091810191312141311141215230823092408230908200921091710180722082307230823072408231015111608190920121213131113121407210822091610171709181017101810081809191014111507200821240723081112121308170918091510160622072306230723062407230719082012111312101311140625072406210722081609170914101507180819111112121012111306200721081509161708170907170818091310140522062305230623052406230619072005250624101111120526062505210622071608170814091506180719111012111210121109121013052006210715081606170718170717080813091404220523042305230424052305190620101011110911101204250524071408150616071708120913110912101209121005180619091010110615071605170618180617071009111003220423032304230324042303250424110812091905180610081109271026110223032302240323281027112005190529102811012302230124022321052005220521052609251023062205270926102508240926082509250724082809271029092810270826092808270926072508270726082606250729082809280727082907280827062607280627072605260627052606290628073006290728052706290528062704260528042705300529063105300629042805300429052703270428032704290328043104300530032904280227032902280328012802"),
"24-26" : decompileBreadcrumbs("232524262326242623272426242524262427242625252426252624262527242622252326222623262227232623242425242424252524242526252526262625262627252622242325262425252328242724282427252824272125222621262226212722262323242424232424252324242725262627262626272726262228222726282527212422252128222722232324262325242724262521232224272326242025212620262126202721262322242324222423252224232825272628262726212922282229222823292228202421252028212722222323262225232824272520232124212222232722262328232724242924282529242819252026192620261927202623212422242124222521242220222123282227231924202519282027222123222621252229242825262925282230212919232024212122222721262229232824182519261826192618271926232024212420242125202421192220232021212228212722292228231824192522202321262025211823192421202221272026211921202229212822172518261726182617271826231924202419242025192420182219232020212128202721302229232330222917241825221923202619252024302329182119221920202117231823211921202719272017221823201921201625172616261726231824192418241925182419182019211624172522182319261825191721182219192020162317242118221916221723201821191720182118191920152516262317241824172418251724181524162422172218261726181621172219182019171918202530242915231624211722181620172118181919152216232017211823162417241624172516241714241524142515252216221726162617152116221917201816191720171818191423152421162217152016211817191814221523201621171618171923152416241524162515241622152216261526161324142415191620171718181421152119161917132314242115221614201521181619171518161916171718132214232015211623142415241424152514241514191520171618171321142219152016221423152614251515171618211422152714261512231324122413241320142118151916141815191616171712221323201421152313241424132414251324141319142017151816141715181516161712211322191420152213231426132514243123302113211427132714112312241318141916151716122013201416151720132114281327141122122323122413241224132512241312191320131714181515161625312430112112221913201422122313261225131218131921122213271226131120122013161417141515162012211328122713102211231023112310241123111912201217131815141615231124122411241225112412191220131021112213151416221123122611251211181219121613171414151521112212271126121020112120112112281127120922102309231023092410231117121810191120231024112410241125102411121513161314141519112012291128120921102222102311261025111018111911161217141315141513151409201021121413150822092308230923082409231017111809191020111512161313141423092410240924102509241008210922101611170918101911141215121313141810191108200921091710180722082307230823072408231015111613121413081909201113121407210822091610172308230924082309081809191014111512121313072008210817091809151016062207230623072306240723170918101710181007190820101311141112121306250724062107220816091709141015121113120718081924072308101211130620072108150916071708180913101411111212052206230523062305240623061907200525062407160817052106220526062508140915170817090618071909121013101111120520062107150816061707180813091411101211121012110519062004220523042305230424052309111012042505240616071707140815051806191707170808120913101011110615071611091210120912100517061809101011032204230323042303240423032504241009111018061707110812090223032302240323100811091905180601230223012402232005190527102611210520052810271122052105230622052910281126092510270926102508240926082509250724082809271029092810270826092808270926072508270726082606250729082809280727082907280827062607280627072605260627052606290628073006290728052706290528062704260528042705300529063105300629042805300429052703270428032704290328043104300530032904280227032902280328012802"),
"28-3" : decompileBreadcrumbs("270328032704280328022803280428032902280329032803290428032801280227052804280528042905280430032903300429032605270430052904270628052806280529062805310430032606270530062905310530042707280628072806290728062607270625072606270828072808280729082807260827072508260724072507240825072709280828092808290928082609270825092608240925082306240723082407230924082205230621052205221023092310230924102309200521052311231024112410251024102511241022112310211122101905200523122311241224112512241126102511261125112612251122122311211222111806190523132312241324122513241222132312261325122011211120122111271126122712261227132612211322122811271228122712281327121911201119122011221423132314231324142313251424132013211229112812261425131707180627142613211422131913201218101911201421132215231423152314241523142515241426152514211522141914201317081707170918101710181020152114221623152316231524162315251624152616251521162215191520142016211518151914221723162317231624172316251724162617251619162015211722162017211618161915221823172318231724182317251824172618251719172016211822171715181517161815181719162018211722192318231923182419231825192418261925181615171516161715191820172719261817171816211922181818191720192118161717162220231923202319242023192520241915141615151516151516161526202519191920181718181727202619212022192820271918191918151716161618171720202119141315141414151414151515151315142221232023212320242123201416151525212420262125201719181819202019151816172721262021212220282127201417151618201919292128201619171813121413131314131314141420212120131514151316141522222321232223212422232125222421172018191418151719212020262225211519161827222621212222211317141628222721121113121212131212131313182119201620171912141314292228211215131520222121141915181216131530222921222323222323232224232322131814171721182025232422152016191922202126232522121713162123222227232622111012111111121111121212121012111113121328232722162117201114121418221921131914181115121514201519292328221116121520232122110912101209121012181317222423232324232324242323172218211521162025242423110812091923202213201419262425231117121621242223272426231010111110111111101211121009111012191318101311131622172110141114182319222824272314211520101511151016111520242123292428231118121710081109152216211723182222252324232523242425232412201319132114201924202325252424101711162625252411191218212522242725262409101011091110110912101209131013162317220914101414221521091510151824192328252724091610151221132010181117202521241120121915231622172418231322142122262325232623252426232509171016192520242526242510191118262625252126222516241723272626251423152208120912081309130814091408150915112112201825192408160915122213212826272509181017202621251020111915241623132314221725182408170916222723262327232624272326112212211926202509191018252724262627252614241523102111202127222616251724071408140715081527272626122313220716081518261925081809170920101920272126152516241324142317261825102211210717081611231222081909181927202609211020142515241626172512241323212822272228222723282227061507150616071507180817182719261023112208200919202821270922102117271826061707160719081819282027082109202129222822292228232922280618071709231022102411230720081908220921051706160619071809241023072108200823092205180617062007190722082122302129051906180824092306210720072308220520061906220721072408230521062006230722052206210624072305230622062507240422052105240623042305220525062404240523052606250322042203230422042505242710280928102809291028090324042302230322032504240224032301230223012402232428232725282427262825272429232823302229243023292529242826292528253024292431233025312430"),
"30-4" : decompileBreadcrumbs("290330042904300429053004300330043005300431043004310530042803290428042904280529042902300329063005300630052802290328062905270328042704280427052804290730062706280528012902280729062707280626052704260627052808290729082907260727062708280726082707280929082909290825072606270928082508260726092708250926082810290929102909271028092407250724082507261027092409250825102609241025092309241023102410231124102411241025112410221023102308230924122411251225112611251126122511221123102312241122122311251325122613261227112612271226122713261224132412211122102313241228112712281227122813271221122211221323122911281225142513261426132714261324142413231424132113221220112111201221112214231324152414251525142615251423152414201321122114221322152314191120111912201120142113241624152516251526162515231624151913201221152214221623151810191119142013201521142417241625172516261725162317241621162215191520141709181017101810221723162016211521172216231824172418241725182417261825171815191419162015170817092218231720172116181619151707170821182217231924182419241825192418191720162619251827192618180617071905180620182117221923182005190521052005220521052306220517151815171618151817191621192218191820172320241924202419252024192620251927202619171718162820271920192118222023191818191716151715161617152120221919192018232124202421242025212420161717161718181726212520272126202821272020202119292128201819191815141615151516151516161522212320161817171920201921212220171918181517161623222421242224212522242126222521272226212822272114131514141415141415151515131514202121201820191914161515292228212222232115181617161917183022292119212020212222211720181914171516232324222423242225232422262325221519161813121413131314131314141427232622131514152022212118211920131614152823272222232322162017191418151729232822192220211721182013171416212322221419151815201619232424232424242325242423262425231211131212121312121313131214131412151315272426231822192112161315202321222824272316211720131814172224232329242823142015191923202217221821121713162124222315211620131914182325242424252424252524241111121211121212111312131114121426252524111012111210121111151215182319221116121527252624202421231622172112181317282527242225232413201419142115201109121012091210172318221117121619242023152216211219131821252224110812091321142023262425242624252526242510121113101311131014111410111112101511151010111126262525182419231016111510091110162317221118121720252124272626251422152112201319282627252226232510081109172418231017111619252024152316221119121821262225122113201322142123272426242724262527242609121013091310130914101409151015091110121825192409161015091010111624172310181117262725262026212514231522112012192727262622272326122213211725182409171016152416231019111819262025132314221121122021272226081309140814091408150915081209131625172409181017182619250816091514241523102011192027212611221221122313221726182508170916152516240919101819272026132414231021112021282227222822272328222711231222162617250818091707140814071508151827192607160815142515240920101920282127122413231022112117271826071708160819091819282027092110202129222822292228232922281023112207180817082009190615071506160715092210211024112307190818061707160821092009231022061807170720081908220921223021290924102306190718051706160721082008230922062007190518061707220821082409230519061806210720072308220520061906220721072408230521062006230722052206210624072305230622062507240422052105240623042305220525062404240523052606250322042203230422042505240324042302230322032504240224032301230223012402232428242725282427262825272429232823302229243023292529242826292528253024292431233025312430"),
"27-5" : decompileBreadcrumbs("260527052606270527042705270627052804270528052705280627052703270428032704260727062707270628072706290428052905280529062805250726062903280429072806280227032608270727082707280827073004290530052905300629052902280325082607290828073003290424072507240825072609270827092708280927083104300531053005280128022509260829092808240925082306240723082407230924082205230621052205221023092310230924102309231123102411241025102410251124102211231020052105211122102312231124122411251224112610251126112511261225112212231119052005211222112313231224132412251324122213231226132512201121112012211127112612271226122713261218061905211322122811271228122712281327122710270928102709221423132314231324142313251424132013211219112011191220112614251327142613291128122910280921142213170718061913201220142113181019112215231423152314241523142515241426152514211522141914201317091810171018101708170720152114221623152316231524162315251624152616251521162215191520142016211518151914221723162317231624172316251724162617251619162015211722162017211618161915221823172318231724182317251824172618251719172016211822171715181517161815201821171817191622192318231923182419231825192418261925181918201716151715161617152719261817171816211922181818191720192118161717162220231923202319242023192520241915141615151516151516161526202519191920181718181727202619212022192820271918191918151716162020211916181717141315141414151414151515151315142221232023212320242123201416151525212420171918181920201926212520151816172121222027212620282127201417151618201919161917182021212029212820131214131313141313141414131514151316141522222321232223212422232125222421172018191921202014181517151916182622252121222221272226211317141628222721182119201620171920222121121113121212131212131313141915181214131429222821121513151216131522232322232323222423232217211820131814173022292125232422152016191922202126232522212322222723262212171316162117201822192128232722131914181420151920232122111112121112121211131213111012111210121111141214111512151116121529232822121813171722182122242323232423232424232315211620110912101209121019232022252424231320141926242523111712162124222311081209272426231622172112191318182319221421152028242723101111121012111210131113101411142024212310101111101511151009111010161115292428231118121717231822152216212225232423252324242523241220131919242023132114201008110925252424101711162625252421252224111912181623172227252624142215211824192328252724122113200912101309131013091410140911101209151015202521240910101109161015101811171523162217241823112012191322142122262325232623252426232519252024252624250917101626262525101911182126222516241723142315222726262518251924112112201222132108120913081309130814091408150915282627250816091509181017202621251020111915241623172518241323142222272326232723262427232619262025112212210817091625272426091910182627252614241523162517242127222610211120122313221826192527272626071408140715081508180917071608152027212609201019152516241324142317261825102211211123122219272026071708160819091814251524092110201626172512241323212822272228222723282227182719261023112207180817061507150616071508200919202821270922102117271826061707161928202707190818082109202129222822292228232922280923102210241123061807170720081908220921092410230619071805170616072108200823092205180617062007190722082122302129082409230519061806210720072308220520061906220721072408230521062006230722052206210624072305230622062507240422052105240623042305220525062404240523052606250322042203230422042505240324042302230322032504240224032301230223012402232428232725282427262825272429232823302229243023292529242826292528253024292431233025312430"),
"29-6" : decompileBreadcrumbs("280529062806290628072906290529062907290630052906300629062705280627062806270728062804290529042905300429052808290729082907310530062704280527082807310430052605270626062706260727062803290429032904300329042809290829092908260827072703280427092808260927082507260628022903290229032810290929102909250826072710280925092608261027092510260928012902281129102911291024072507240825072711281024092508261127102410250925112610230924102310241023112410241124102412251125122511261225112312241122102310230823092513251226132612271226122713261222112310241325122812271228132712221223112313241225142513261426132714261321112210241425132213231221122211231424132415251425152514261525142113221222142313201121112012211123152414211422132013211222152314241625152516251526162515231624151911201119122011201421132115221419132012221623152417251625172516261725162015211423172416181019111914201321162215221723161915201420162115241825172518251726182517211722162318241717091810171018102218231719162015181519142017211624192518251925182619251827192618211822172319241818161915191720161708170922192318201821171707170824202519252025192620251927202619282027192119221818171916171518151716181519182017180617072320241919051806201921182005190521052005220521052306220522202319171718161818191724212520252125202621252027212620282127202120221919192018161517151616171529212820232124202020211917181817222123201617171618191918242225212522252126222521272226211920201915141615151516151516161521212220282227211618171717191818232224212922282130222921202121201820191915171616222223212423252225232522262325221413151414141514141515151513151427232622192120201416151521222221161917181518161717201819282327222323242229232822202221211821192014171516222323221519161816201719131214131313141313141414242425232524252326242523131514151922202113161415272426231721182014181517212322222824272323242423292428231822192113171416202321221520161914191518162117202224232312121313121313131214131412151315121113121923202212161315242525242525252426252524172218211318141721242223272526241420151915211620282527242325242418231922121713162024212316221721131914182225232411131214111412141115121511121213192420231116121517231822121813171111121224262525252625252626252511101211121012111421152021252224132014191522162127262625282627252326242511091210120912101824192311171216162317221219131820252124132114201422152122262325110812091724182311181217101311141014111410151115192520241016111510121113101111121523162212201319242725262527252626272526101011112126222510091110272726262327242618251924101711161624172311191218202621251322142110081109122113201423152222272326172518241018111719262025091410150915101509161015091310141524162311201219091210130911101209101011212722261222132113231422162517241019111818261925091710161424152311211220202721261726182509181017152516241020111919272026081409150815091508160915081309140812091312231322112212211324142321282227222822272328222716261725091910181827192608170916142515241021112020282127112312221224132317271826081809170920101919282027071408150715081507160815102211212129222822292228232922280819091809211020071708161023112208200919071808170922102106150715061607151024112307190818082109200617071609231022223021290720081906180717082209210924102306190718072108200517061608230922062007190722082105180617082409230621072005190618072308220520061906220721072408230521062006230722052206210624072305230622062507240422052105240623042305220525062404240523052606250322042203230422042505240324042302230322032504240224032301230223012402232428252725282527262825272429232823302229243023292529252826292528253024292431233025312430"),
"26-7" : decompileBreadcrumbs("250726072508260726062607260826072706260727072607270826072407250724082507260526062705260625092608260926082709260828062707280727072808270724092508280527062809270823062407230824072704260525102609261026092710260929062807290728072908280723092408280427052410250928102709290528062909280822052306231023092904280529102809221023092311241024112410251124102105220522112310231224112412241125122411261125112612251121112210221223112005210523132412241324122513241226132512271126122712261227132612211222112213231230062907190520052811271228122712281327122011211120122111211322122314241324142413251424132614251327032704280327043005290627142613221423132911281218061905201321122114221319112011191220112315241424152414251524142615251429032804300429052215231419132012201421132115221418101911170718062316241524162415251624152616251519142013201521142216231521162215170918101710181019152014231724162417241625172416170817072617251620162115300329042217231618151914191620152117221623182417241824172518241726182517201721161816191522182317191720162118221723192418241924182519241817151815171618152018211726192518181719162219231827192618191820171717181621192218161517151616171523202419242024192520241918181917201921182620251922202319272026191919201816171716282027191718181721202219151416151515161515161615181919182321242024212420252124202020211916181717262125202221232027212620151716161920201917191818282127202121222014131514141415141415151515131514141615152921282018201919151816171619171823222421242224212522242120212120262225211417151622222321272226211720181919212020151916182822272113121413131314131314141413151415212222211316141531053006141815172922282118211920162017192022212123232422242324222523242230222921262325221317141628022703222323221721182027232622141915181922202115201619121213131213131312141314121113121215131528232722121613152123222213181417162117202902280331043005182219212923282214201519202321222324242324242423252424231217131626242523131914181722182122242323152116201923202227242623111212131113121311141214111512151111121211161215282427231110121112101211121813172124222316221721182319221320141914211520292428232024212311091210120912102325242424252424252524241117121612191318262525241723182215221621222523241924202327252624132114201108120910131114101411141015111510121113101611151118121710111112101011112825272421252224162317221220131910091110142215211824192320252124101711162326242524262425252624251119121810081109152316221724182326262525122113201322142122262325192520242726262510181117091310140914101409151015091610150912101309111012112012190910101116241723212622252826272514231522182519241222132109171016101911182026212523272426242724262527242615241623112112201725182413231422262725261926202522272326091810172727262608140915081509150816091508130914081209131020111916251724142415232127222611221221182619251223132208170916091910182027212610211120152516241324142317261825112312221927202608180917092010190714081507150815071608151425152416261725102211211224132321282227222822272328222718271926081909180717081609211020202821271727182610231122071808170820091919282027061507150616071509221021212922282229222823292228102411230719081806170716082109200923102207200819061807170822092109241023061907180721082005170616082309222230212906200719051806170722082108240923051906180621072007230822052006190622072107240823052106200623072205220621062407230523062206250724042205210524062304230522052506240424052305260625032204220323042204250524032404230223032203250424022403230123022301240223242824272528242726282527280128022429232823302229243023292529242826292528253024292431233025312430"),
"28-8" : decompileBreadcrumbs("270728082708280827092808280728082809280829072808290828082909280826072708260827082609270827062807280628072906280727102809281028092910280926062707261027093006290725072608250826082509260827052806280528062905280627112810281128102911281025102609260527063005290626112710251126103105300624102511241125112412251125122511261225112309241023102410231124112409241025132512261326122712261227132612231224112413251228122712281327122313241224072308240823092704280528042805290428052210231022112311251425132614261327142613221223112414251323082309300429052213231223142413211122112112221124152514251525142615251422142313310430052113221223152414201121112012211124162515251625152616251521142213221523142013211223162415211522142014211322162315191120111912201124172516251725162617251619132012231724162015211421162215191420132217231618101911241825172518251726182517201621151915201421172216231824172218231719162015201721162419251825192518261925181709181017101810271926181815191421182217231924181917201622192318181619152018211724202519252025192620251927202619170817092820271921192218181719161918201723202419170717081715181517161815201921182220231918181917242125202521252026212520272126202120221928212720180617071717181619192018232124202921282019051806202021191615171516161715222123201718181718191918200519052105200522052105242225212522252126222521230622052722262121212220161717161920201928222721232224211719181827032804280328042903280429222821202121201514161515151615151616153022292116181717182019192222232130032904242325222523252226232522192120201517161627232622212222211619171817201819282327222323242229232822141315141414151414151515151315142022212114161515151816171821192022232322162017192424252325242523262425231922202114171516212322221519161817211820272426232824272323242423292428231822192114181517131314141314141413151415202321221316141513121413152016191621172022242323192320221317141624252524252525242625252414191518172218212124222327252624152116202825272423252424182319221318141720242123121413151215131512161315121313141212131314201519162217211211131222252324192420231217131617231822131914182426252525262525262625252125222414211520152216212726262528262725232624251824192312181317132014191623172220252124111412151115121511161215111312141112121311111212142215212226232511101211121012111724182312191318192520241117121613211420152316222427252625272526262725262126222511091210120912102727262618251924111812172327242616241723122013192026212510141115101511151016111510131114101211131322142114231522110812091011111222272326101011111725182411191218100911101926202510171116122113201524162321272226132314221826192510181117162517241120121910081109202721260914101509151015091610151222132114241523091310140912101309111012091010111726182510191118152516241121122019272026091710161223132213241423212822272228222723282227162617251020111918271926091810171122122114251524202821270814091508150915081609150813091408120913122413231727182609191018102111201928202708170916112312222129222822292228232922280920101908180917102211210714081507150815071608150921102008190918102311220717081608200919092210210718081710241123223021290615071506160715082109200719081809231022061707160720081908220921061807170924102307210820082309220619071805170616072208210620071908240923051806170621072007230822051906180622072105200619072408230521062006230722052206210624072305230622062507240422052105240623042305220525062404240523052606250322042203230422042505240324042302230322032504240224032328022803290228030123022301240223242825272528252726282527242923282330222924302329252925282629252828012802253024292431233025312430")
}
}