cubing 0.65.0 → 0.65.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/chunks/{chunk-NPXQ2ZXZ.js → chunk-Z5QOJAME.js} +3 -3
- package/dist/bin/chunks/chunk-Z5QOJAME.js.map +7 -0
- package/dist/bin/order.js +1 -1
- package/dist/bin/puzzle-geometry-bin.js +1 -1
- package/dist/bin/scramble.js +1 -1
- package/dist/bin/svg.js +1 -1
- package/dist/lib/cubing/alg/index.d.ts +2 -2
- package/dist/lib/cubing/alg/index.js +1 -1
- package/dist/lib/cubing/bluetooth/index.d.ts +25 -26
- package/dist/lib/cubing/bluetooth/index.js +5 -5
- package/dist/lib/cubing/chunks/{big-puzzle-orientation-G75BXW2W.js → big-puzzle-orientation-7WHPJCCO.js} +2 -2
- package/dist/lib/cubing/chunks/{chunk-DTYBGCI3.js → chunk-2BVL5OQE.js} +8 -6
- package/dist/lib/cubing/chunks/chunk-2BVL5OQE.js.map +7 -0
- package/dist/lib/cubing/chunks/{chunk-KHUP3BPA.js → chunk-2IA2R7XV.js} +4 -4
- package/dist/lib/cubing/chunks/{chunk-5LBACZOM.js → chunk-5FXQPBXH.js} +4 -4
- package/dist/lib/cubing/chunks/{chunk-GO2SL6SC.js → chunk-6K433TB5.js} +3 -3
- package/dist/lib/cubing/chunks/{chunk-THRYJMRP.js → chunk-BQPY6252.js} +2 -2
- package/dist/lib/cubing/chunks/{chunk-O2QJENHE.js → chunk-IRY6MBI2.js} +3 -3
- package/dist/lib/cubing/chunks/{chunk-7MYDNYZ3.js → chunk-MFKLAFPQ.js} +6 -4
- package/dist/lib/cubing/chunks/chunk-MFKLAFPQ.js.map +7 -0
- package/dist/lib/cubing/chunks/{chunk-UWJ575HH.js → chunk-MIHF623Z.js} +3 -3
- package/dist/lib/cubing/chunks/{chunk-YFNXHRNE.js → chunk-UP5VP7GL.js} +60 -7
- package/dist/lib/cubing/chunks/chunk-UP5VP7GL.js.map +7 -0
- package/dist/lib/cubing/chunks/{chunk-ALR6ZQFC.js → chunk-YSAQ6DRT.js} +2 -2
- package/dist/lib/cubing/chunks/{inside-A7LIP56H.js → inside-N5WSMI7I.js} +25 -20
- package/dist/lib/cubing/chunks/inside-N5WSMI7I.js.map +7 -0
- package/dist/lib/cubing/chunks/{search-dynamic-sgs-side-events-YSB3MWLK.js → search-dynamic-sgs-side-events-5EIXNDVI.js} +6 -6
- package/dist/lib/cubing/chunks/{search-dynamic-sgs-unofficial-OLK64DE6.js → search-dynamic-sgs-unofficial-Y7SIOVIX.js} +6 -6
- package/dist/lib/cubing/chunks/search-dynamic-sgs-unofficial-Y7SIOVIX.js.map +7 -0
- package/dist/lib/cubing/chunks/{search-dynamic-solve-4x4x4-WWFUMIDG.js → search-dynamic-solve-4x4x4-FRAX3IPQ.js} +7 -7
- package/dist/lib/cubing/chunks/search-dynamic-solve-4x4x4-FRAX3IPQ.js.map +7 -0
- package/dist/lib/cubing/chunks/{search-dynamic-solve-fto-ZZKLTONP.js → search-dynamic-solve-fto-TI4TFL6X.js} +2 -2
- package/dist/lib/cubing/chunks/search-dynamic-solve-fto-TI4TFL6X.js.map +7 -0
- package/dist/lib/cubing/chunks/{search-dynamic-solve-kilominx-PUF4PRHS.js → search-dynamic-solve-kilominx-UKFT6I42.js} +2 -2
- package/dist/lib/cubing/chunks/search-dynamic-solve-kilominx-UKFT6I42.js.map +7 -0
- package/dist/lib/cubing/chunks/search-worker-entry.js +1 -1
- package/dist/lib/cubing/chunks/{twips-LHO3IYJC.js → twips-UCWWA2WI.js} +2 -2
- package/dist/lib/cubing/chunks/{twisty-dynamic-3d-A2G22YLA.js → twisty-dynamic-3d-O5TGOSAO.js} +105 -90
- package/dist/lib/cubing/chunks/twisty-dynamic-3d-O5TGOSAO.js.map +7 -0
- package/dist/lib/cubing/{index-C2x6Sc62.d.ts → index-BQdS3h4z.d.ts} +165 -161
- package/dist/lib/cubing/{index-Doa1gNE4.d.ts → index-COSxNAgV.d.ts} +4 -5
- package/dist/lib/cubing/kpuzzle/index.d.ts +2 -2
- package/dist/lib/cubing/kpuzzle/index.js +2 -2
- package/dist/lib/cubing/notation/index.d.ts +4 -5
- package/dist/lib/cubing/notation/index.js +4 -4
- package/dist/lib/cubing/{outside-nf-4k7Tp.d.ts → outside-BRtF0DA2.d.ts} +12 -9
- package/dist/lib/cubing/protocol/index.d.ts +3 -4
- package/dist/lib/cubing/protocol/index.js +4 -4
- package/dist/lib/cubing/puzzle-geometry/index.d.ts +2 -2
- package/dist/lib/cubing/puzzle-geometry/index.js +1 -1
- package/dist/lib/cubing/puzzles/index.d.ts +2 -2
- package/dist/lib/cubing/puzzles/index.js +4 -4
- package/dist/lib/cubing/scramble/index.d.ts +1 -1
- package/dist/lib/cubing/scramble/index.js +6 -6
- package/dist/lib/cubing/search/index.d.ts +4 -5
- package/dist/lib/cubing/search/index.js +6 -6
- package/dist/lib/cubing/stream/index.d.ts +2 -2
- package/dist/lib/cubing/stream/index.js +1 -1
- package/dist/lib/cubing/twisty/index.d.ts +2 -2
- package/dist/lib/cubing/twisty/index.js +6 -6
- package/package.json +11 -10
- package/dist/bin/chunks/chunk-NPXQ2ZXZ.js.map +0 -7
- package/dist/lib/cubing/chunks/chunk-7MYDNYZ3.js.map +0 -7
- package/dist/lib/cubing/chunks/chunk-DTYBGCI3.js.map +0 -7
- package/dist/lib/cubing/chunks/chunk-YFNXHRNE.js.map +0 -7
- package/dist/lib/cubing/chunks/inside-A7LIP56H.js.map +0 -7
- package/dist/lib/cubing/chunks/search-dynamic-sgs-unofficial-OLK64DE6.js.map +0 -7
- package/dist/lib/cubing/chunks/search-dynamic-solve-4x4x4-WWFUMIDG.js.map +0 -7
- package/dist/lib/cubing/chunks/search-dynamic-solve-fto-ZZKLTONP.js.map +0 -7
- package/dist/lib/cubing/chunks/search-dynamic-solve-kilominx-PUF4PRHS.js.map +0 -7
- package/dist/lib/cubing/chunks/twisty-dynamic-3d-A2G22YLA.js.map +0 -7
- /package/dist/lib/cubing/chunks/{big-puzzle-orientation-G75BXW2W.js.map → big-puzzle-orientation-7WHPJCCO.js.map} +0 -0
- /package/dist/lib/cubing/chunks/{chunk-KHUP3BPA.js.map → chunk-2IA2R7XV.js.map} +0 -0
- /package/dist/lib/cubing/chunks/{chunk-5LBACZOM.js.map → chunk-5FXQPBXH.js.map} +0 -0
- /package/dist/lib/cubing/chunks/{chunk-GO2SL6SC.js.map → chunk-6K433TB5.js.map} +0 -0
- /package/dist/lib/cubing/chunks/{chunk-THRYJMRP.js.map → chunk-BQPY6252.js.map} +0 -0
- /package/dist/lib/cubing/chunks/{chunk-O2QJENHE.js.map → chunk-IRY6MBI2.js.map} +0 -0
- /package/dist/lib/cubing/chunks/{chunk-UWJ575HH.js.map → chunk-MIHF623Z.js.map} +0 -0
- /package/dist/lib/cubing/chunks/{chunk-ALR6ZQFC.js.map → chunk-YSAQ6DRT.js.map} +0 -0
- /package/dist/lib/cubing/chunks/{search-dynamic-sgs-side-events-YSB3MWLK.js.map → search-dynamic-sgs-side-events-5EIXNDVI.js.map} +0 -0
- /package/dist/lib/cubing/chunks/{twips-LHO3IYJC.js.map → twips-UCWWA2WI.js.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
countMoves
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-MIHF623Z.js";
|
|
4
4
|
import {
|
|
5
5
|
addOrientationSuffix,
|
|
6
6
|
expose,
|
|
@@ -10,24 +10,24 @@ import {
|
|
|
10
10
|
random333Scramble,
|
|
11
11
|
setIsInsideWorker,
|
|
12
12
|
solve333
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-2BVL5OQE.js";
|
|
14
14
|
import {
|
|
15
15
|
cube2x2x2,
|
|
16
16
|
puzzles,
|
|
17
17
|
wcaEvents
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-2IA2R7XV.js";
|
|
19
19
|
import {
|
|
20
20
|
LazyPromise
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-5FXQPBXH.js";
|
|
22
22
|
import {
|
|
23
23
|
KPattern,
|
|
24
24
|
KPuzzle
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-BQPY6252.js";
|
|
26
26
|
import {
|
|
27
27
|
Alg,
|
|
28
28
|
AlgBuilder,
|
|
29
29
|
Move
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-UP5VP7GL.js";
|
|
31
31
|
|
|
32
32
|
// src/cubing/search/inside/solve/puzzles/2x2x2.ts
|
|
33
33
|
import { randomPermuteInPlace, randomUIntBelow } from "random-uint-below";
|
|
@@ -61,6 +61,9 @@ function calculateMoves(kpuzzle, moveNames) {
|
|
|
61
61
|
return searchMoves;
|
|
62
62
|
}
|
|
63
63
|
var TrembleSolver = class {
|
|
64
|
+
searchMoves;
|
|
65
|
+
kpuzzle;
|
|
66
|
+
sgs;
|
|
64
67
|
constructor(kpuzzle, sgs, trembleMoveNames) {
|
|
65
68
|
this.kpuzzle = kpuzzle;
|
|
66
69
|
this.sgs = sgs;
|
|
@@ -69,9 +72,6 @@ var TrembleSolver = class {
|
|
|
69
72
|
trembleMoveNames ?? Object.keys(this.kpuzzle.definition.moves)
|
|
70
73
|
);
|
|
71
74
|
}
|
|
72
|
-
kpuzzle;
|
|
73
|
-
sgs;
|
|
74
|
-
searchMoves;
|
|
75
75
|
// public badRandomMoves(): KSolvePuzzleState {
|
|
76
76
|
// return badRandomMoves(this.moves, this.ksp);
|
|
77
77
|
// }
|
|
@@ -165,7 +165,7 @@ var TrembleSolver = class {
|
|
|
165
165
|
|
|
166
166
|
// src/cubing/search/inside/solve/twips.ts
|
|
167
167
|
var twipsPromise = new LazyPromise(
|
|
168
|
-
async () => import("./twips-
|
|
168
|
+
async () => import("./twips-UCWWA2WI.js")
|
|
169
169
|
);
|
|
170
170
|
async function wasmTwips(def, pattern, options) {
|
|
171
171
|
const { wasmTwips: wasmTwips2 } = await twipsPromise;
|
|
@@ -186,7 +186,7 @@ async function wasmDeriveScrambleForEvent(derivationSeedHex, derivationSaltHiera
|
|
|
186
186
|
|
|
187
187
|
// src/cubing/search/inside/solve/puzzles/dynamic/sgs-side-events/index.ts
|
|
188
188
|
var searchDynamicSideEvents = new LazyPromise(
|
|
189
|
-
() => import("./search-dynamic-sgs-side-events-
|
|
189
|
+
() => import("./search-dynamic-sgs-side-events-5EIXNDVI.js")
|
|
190
190
|
);
|
|
191
191
|
|
|
192
192
|
// src/cubing/search/inside/solve/puzzles/2x2x2.ts
|
|
@@ -213,7 +213,7 @@ async function solve222(pattern) {
|
|
|
213
213
|
|
|
214
214
|
// src/cubing/search/inside/solve/puzzles/dynamic/4x4x4/index.ts
|
|
215
215
|
var dynamic4x4x4Solver = new LazyPromise(
|
|
216
|
-
() => import("./search-dynamic-solve-4x4x4-
|
|
216
|
+
() => import("./search-dynamic-solve-4x4x4-FRAX3IPQ.js")
|
|
217
217
|
);
|
|
218
218
|
|
|
219
219
|
// src/cubing/search/inside/solve/puzzles/4x4x4.ts
|
|
@@ -234,12 +234,12 @@ async function random444OrientedScramble() {
|
|
|
234
234
|
|
|
235
235
|
// src/cubing/search/inside/solve/puzzles/dynamic/fto/index.ts
|
|
236
236
|
var dynamicFTO = new LazyPromise(
|
|
237
|
-
() => import("./search-dynamic-solve-fto-
|
|
237
|
+
() => import("./search-dynamic-solve-fto-TI4TFL6X.js")
|
|
238
238
|
);
|
|
239
239
|
|
|
240
240
|
// src/cubing/search/inside/solve/puzzles/fto.ts
|
|
241
241
|
var dynamic = new LazyPromise(
|
|
242
|
-
() => import("./search-dynamic-sgs-unofficial-
|
|
242
|
+
() => import("./search-dynamic-sgs-unofficial-Y7SIOVIX.js")
|
|
243
243
|
);
|
|
244
244
|
async function randomFTOScramble() {
|
|
245
245
|
mustBeInsideWorker();
|
|
@@ -247,7 +247,7 @@ async function randomFTOScramble() {
|
|
|
247
247
|
}
|
|
248
248
|
|
|
249
249
|
// src/cubing/search/inside/solve/puzzles/dynamic/kilominx/index.ts
|
|
250
|
-
var dynamicKilominxSolver = new LazyPromise(() => import("./search-dynamic-solve-kilominx-
|
|
250
|
+
var dynamicKilominxSolver = new LazyPromise(() => import("./search-dynamic-solve-kilominx-UKFT6I42.js"));
|
|
251
251
|
|
|
252
252
|
// src/cubing/search/inside/solve/puzzles/kilominx.ts
|
|
253
253
|
async function randomKilominxScramble() {
|
|
@@ -323,7 +323,7 @@ async function solvePyraminx(pattern) {
|
|
|
323
323
|
|
|
324
324
|
// src/cubing/search/inside/solve/puzzles/dynamic/sgs-unofficial/index.ts
|
|
325
325
|
var searchDynamicUnofficial = new LazyPromise(
|
|
326
|
-
() => import("./search-dynamic-sgs-unofficial-
|
|
326
|
+
() => import("./search-dynamic-sgs-unofficial-Y7SIOVIX.js")
|
|
327
327
|
);
|
|
328
328
|
|
|
329
329
|
// src/cubing/search/inside/solve/puzzles/redi_cube.ts
|
|
@@ -488,7 +488,12 @@ async function randomScrambleForEvent(eventID, options) {
|
|
|
488
488
|
}
|
|
489
489
|
})();
|
|
490
490
|
}
|
|
491
|
-
var
|
|
491
|
+
var PrefetchLevel = {
|
|
492
|
+
Auto: "auto",
|
|
493
|
+
None: "none",
|
|
494
|
+
Immediate: "immediate"
|
|
495
|
+
};
|
|
496
|
+
var currentPrefetchLevel = PrefetchLevel.Auto;
|
|
492
497
|
var insideAPI = {
|
|
493
498
|
initialize: async (eventID) => {
|
|
494
499
|
switch (eventID) {
|
|
@@ -514,7 +519,7 @@ var insideAPI = {
|
|
|
514
519
|
} else {
|
|
515
520
|
promise = randomScrambleForEvent(eventID);
|
|
516
521
|
}
|
|
517
|
-
if (currentPrefetchLevel !==
|
|
522
|
+
if (currentPrefetchLevel !== PrefetchLevel.None) {
|
|
518
523
|
promise.then(() => {
|
|
519
524
|
if (queuedPrefetchTimeoutID) {
|
|
520
525
|
clearTimeout(queuedPrefetchTimeoutID);
|
|
@@ -528,7 +533,7 @@ var insideAPI = {
|
|
|
528
533
|
})
|
|
529
534
|
);
|
|
530
535
|
},
|
|
531
|
-
currentPrefetchLevel ===
|
|
536
|
+
currentPrefetchLevel === PrefetchLevel.Immediate ? 0 : IDLE_PREFETCH_TIMEOUT_MS
|
|
532
537
|
);
|
|
533
538
|
});
|
|
534
539
|
}
|
|
@@ -589,4 +594,4 @@ var insideAPI = {
|
|
|
589
594
|
|
|
590
595
|
// src/cubing/search/inside/index.ts
|
|
591
596
|
expose(insideAPI);
|
|
592
|
-
//# sourceMappingURL=inside-
|
|
597
|
+
//# sourceMappingURL=inside-N5WSMI7I.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/cubing/search/inside/solve/puzzles/2x2x2.ts", "../../../../src/cubing/search/inside/solve/tremble.ts", "../../../../src/cubing/search/inside/solve/twips.ts", "../../../../src/cubing/search/inside/solve/puzzles/dynamic/sgs-side-events/index.ts", "../../../../src/cubing/search/inside/solve/puzzles/dynamic/4x4x4/index.ts", "../../../../src/cubing/search/inside/solve/puzzles/4x4x4.ts", "../../../../src/cubing/search/inside/solve/puzzles/dynamic/fto/index.ts", "../../../../src/cubing/search/inside/solve/puzzles/fto.ts", "../../../../src/cubing/search/inside/solve/puzzles/dynamic/kilominx/index.ts", "../../../../src/cubing/search/inside/solve/puzzles/kilominx.ts", "../../../../src/cubing/search/inside/solve/puzzles/dynamic/master_tetraminx/index.ts", "../../../../src/cubing/search/inside/solve/puzzles/master_tetraminx.ts", "../../../../src/cubing/search/inside/solve/puzzles/megaminx.ts", "../../../../src/cubing/search/inside/solve/puzzles/pyraminx.ts", "../../../../src/cubing/search/inside/solve/puzzles/dynamic/sgs-unofficial/index.ts", "../../../../src/cubing/search/inside/solve/puzzles/redi_cube.ts", "../../../../src/cubing/search/inside/solve/puzzles/skewb.ts", "../../../../src/cubing/search/inside/api.ts", "../../../../src/cubing/search/inside/index.ts"],
|
|
4
|
+
"sourcesContent": ["import { randomPermuteInPlace, randomUIntBelow } from \"random-uint-below\";\nimport type { Alg } from \"../../../../alg/index.ts\";\nimport type { KPuzzle } from \"../../../../kpuzzle/index.ts\";\nimport { KPattern } from \"../../../../kpuzzle/index.ts\";\nimport { cube2x2x2, puzzles } from \"../../../../puzzles/index.ts\";\nimport { mustBeInsideWorker } from \"../../inside-worker.ts\";\nimport type { SGSCachedData } from \"../parseSGS.ts\";\nimport { TrembleSolver } from \"../tremble.ts\";\nimport { wasmTwips } from \"../twips.ts\";\nimport { searchDynamicSideEvents } from \"./dynamic/sgs-side-events/index.ts\";\n\nlet cachedTrembleSolver: Promise<TrembleSolver> | null = null;\nasync function getCachedTrembleSolver(): Promise<TrembleSolver> {\n return (\n cachedTrembleSolver ||\n (cachedTrembleSolver = (async (): Promise<TrembleSolver> => {\n const sgsCachedData: SGSCachedData = await (\n await searchDynamicSideEvents\n ).cachedData222();\n return new TrembleSolver(\n await puzzles[\"2x2x2\"].kpuzzle(),\n sgsCachedData,\n \"URFLBD\".split(\"\"),\n );\n })())\n );\n}\n\nexport async function preInitialize222(): Promise<void> {\n await getCachedTrembleSolver();\n}\n\n// TODO: fix def consistency.\nexport async function solve222(pattern: KPattern): Promise<Alg> {\n mustBeInsideWorker();\n return wasmTwips((await cube2x2x2.kpuzzle()).definition, pattern, {\n generatorMoves: \"UFLR\".split(\"\"),\n });\n}\n\n// TODO: factor out and test.\nfunction mutatingRandomizeOrbit(\n kpuzzle: KPuzzle,\n orbitName: string,\n pattern: KPattern,\n options?: { orientationSum?: number },\n): void {\n randomPermuteInPlace(pattern.patternData[orbitName].pieces);\n\n const orbitDefinition = kpuzzle.lookupOrbitDefinition(orbitName);\n const ori = pattern.patternData[orbitName].orientation;\n\n let sum = 0;\n for (let i = 0; i < orbitDefinition.numPieces; i++) {\n const o = randomUIntBelow(orbitDefinition.numOrientations);\n ori[i] = o;\n sum += o;\n }\n\n // console.log(\"aaaa\", options && \"orientationSum\" in options);\n if (options && \"orientationSum\" in options) {\n // console.log(\"sfdsf\", options!.orientationSum),\n ori[0] =\n (((ori[0] + options.orientationSum! - sum) %\n orbitDefinition.numOrientations) +\n orbitDefinition.numOrientations) %\n orbitDefinition.numOrientations;\n }\n}\n\n// TODO: Use SGS?\nexport async function random222Pattern(): Promise<KPattern> {\n const kpuzzle = await puzzles[\"2x2x2\"].kpuzzle();\n const patternCopy: KPattern = new KPattern(\n kpuzzle,\n structuredClone(kpuzzle.defaultPattern().patternData),\n ); // TODO\n mutatingRandomizeOrbit(kpuzzle, \"CORNERS\", patternCopy, {\n orientationSum: 0,\n });\n return patternCopy;\n}\n", "import { randomChoice } from \"random-uint-below\";\nimport { Alg, AlgBuilder, Move, type QuantumMove } from \"../../../alg/index.ts\";\nimport type { KPuzzle, KTransformation } from \"../../../kpuzzle/index.ts\";\nimport type { KPattern } from \"../../../kpuzzle/KPattern.ts\";\nimport { experimentalCountMoves } from \"../../../notation/index.ts\";\nimport type { SGSCachedData } from \"./parseSGS.ts\";\n\nconst DEFAULT_STAGE1_DEPTH_LIMIT = 2; // Moderately performant default.\n\nconst DOUBLECHECK_PLACED_PIECES = true;\nconst DEBUG = false;\n\n// TODO: Take moves instead of move names?\nfunction calculateMoves(\n kpuzzle: KPuzzle,\n moveNames: string[],\n): {\n move: Move;\n transformation: KTransformation;\n}[] {\n const searchMoves: {\n move: Move;\n transformation: KTransformation;\n }[] = [];\n // const identity = identityTransformation(def); // TODO\n // TODO: Make it easy to filter moves.\n for (const moveName of moveNames) {\n const rootMove = new Move(moveName);\n if (rootMove.amount !== 1) {\n throw new Error(\n \"SGS cannot handle def moves with an amount other than 1 yet.\",\n );\n }\n let transformation = kpuzzle.identityTransformation();\n for (let i = 1; ; i++) {\n transformation = transformation.applyMove(rootMove);\n if (transformation.isIdentityTransformation()) {\n break;\n }\n searchMoves.push({\n move: rootMove.modified({ amount: i }),\n transformation,\n });\n }\n }\n return searchMoves;\n}\n\n// function badRandomMoves(moves: string[], ksp: KSolvePuzzle): KSolvePuzzleState {\n// // var sum = 0;\n// var scramble = \"\";\n// for (var i = 0; i < 1000; i++) {\n// scramble = scramble + \" \" + moves[Math.floor(moves.length * Math.random())];\n// }\n// // var sol = \"\";\n// const indexer = new TreeAlgIndexer(ksp, Alg.fromString(scramble));\n// return indexer.transformAtIndex(indexer.numMoves()) as any; // TODO\n// }\n\nexport class TrembleSolver {\n private searchMoves: {\n move: Move;\n transformation: KTransformation;\n }[];\n\n private kpuzzle: KPuzzle;\n private sgs: SGSCachedData;\n constructor(\n kpuzzle: KPuzzle,\n sgs: SGSCachedData,\n trembleMoveNames?: string[],\n ) {\n this.kpuzzle = kpuzzle;\n this.sgs = sgs;\n\n this.searchMoves = calculateMoves(\n this.kpuzzle,\n trembleMoveNames ?? Object.keys(this.kpuzzle.definition.moves),\n );\n }\n\n // public badRandomMoves(): KSolvePuzzleState {\n // return badRandomMoves(this.moves, this.ksp);\n // }\n\n public async solve(\n pattern: KPattern,\n stage1DepthLimit: number = DEFAULT_STAGE1_DEPTH_LIMIT,\n quantumMoveOrder?: (quantumMove: QuantumMove) => number,\n ): Promise<Alg> {\n const transformation = pattern.experimentalToTransformation();\n if (!transformation) {\n throw new Error(\n \"distinguishable pieces are not supported in tremble solver yt\",\n );\n }\n let bestAlg: Alg | null = null;\n let bestLen = 1000000;\n const recur = (\n recursiveTransformation: KTransformation, // TODO: Support KStatq1\n togo: number,\n sofar: Alg,\n ) => {\n // console.log(\"recur\");\n if (togo === 0) {\n const sgsAlg = this.sgsPhaseSolve(recursiveTransformation, bestLen);\n if (!sgsAlg) {\n return;\n }\n // console.log(\"sgs done!\", sofar.toString(), \"|\", sgsAlg.toString());\n const newAlg = sofar.concat(sgsAlg).experimentalSimplify({\n cancel: {\n directional: \"any-direction\",\n puzzleSpecificModWrap: \"canonical-centered\",\n },\n puzzleSpecificSimplifyOptions: { quantumMoveOrder },\n });\n\n const len = experimentalCountMoves(newAlg);\n if (bestAlg === null || len < bestLen) {\n if (DEBUG) {\n console.log(`New best (${len} moves): ${newAlg.toString()}`);\n console.log(`Tremble moves are: ${sofar.toString()}`);\n }\n bestAlg = newAlg;\n bestLen = len;\n }\n return;\n }\n for (const searchMove of this.searchMoves) {\n recur(\n recursiveTransformation.applyTransformation(\n searchMove.transformation,\n ),\n togo - 1,\n sofar.concat([searchMove.move]),\n );\n }\n };\n for (let d = 0; d <= stage1DepthLimit; d++) {\n recur(transformation, d, new Alg());\n }\n if (bestAlg === null) {\n throw new Error(\"SGS search failed.\");\n }\n return bestAlg;\n }\n\n private sgsPhaseSolve(\n initialTransformation: KTransformation, // TODO: Handle KPattern\n bestLenSofar: number,\n ): Alg | null {\n // const pieceNames = \"UFR URB UBL ULF DRF DFL DLB DBR\".split(\" \");\n\n // function loggo(s: string) {\n // // console.warn(s);\n // // document.body.appendChild(document.createElement(\"div\")).textContent = s;\n // }\n\n // console.log(\"sgsPhaseSolve\");\n const algBuilder = new AlgBuilder();\n let transformation = initialTransformation;\n for (const step of this.sgs.ordering) {\n const cubieSeq = step.pieceOrdering;\n let key = \"\";\n const inverseTransformation = transformation.invert();\n for (let i = 0; i < cubieSeq.length; i++) {\n const loc = cubieSeq[i];\n const orbitName = loc.orbitName;\n const idx = loc.permutationIdx;\n key += ` ${inverseTransformation.transformationData[orbitName].permutation[idx]} ${inverseTransformation.transformationData[orbitName].orientationDelta[idx]}`;\n }\n // console.log(key, step.lookup);\n const info = step.lookup[key];\n if (!info) {\n throw new Error(\"Missing algorithm in sgs or esgs?\");\n }\n algBuilder.experimentalPushAlg(info.alg);\n if (algBuilder.experimentalNumAlgNodes() >= bestLenSofar) {\n return null;\n }\n transformation = transformation.applyTransformation(info.transformation);\n if (DOUBLECHECK_PLACED_PIECES) {\n for (let i = 0; i < cubieSeq.length; i++) {\n const location = cubieSeq[i];\n const orbitName = location.orbitName;\n const idx = location.permutationIdx;\n if (\n transformation.transformationData[orbitName].permutation[idx] !==\n idx ||\n transformation.transformationData[orbitName].orientationDelta[\n idx\n ] !== 0\n ) {\n throw new Error(\"bad SGS :-(\");\n }\n }\n }\n }\n return algBuilder.toAlg();\n }\n}\n\nexport function randomPatternFromSGS(\n kpuzzle: KPuzzle,\n sgs: SGSCachedData,\n): KPattern {\n let transformation = kpuzzle.identityTransformation();\n for (const step of sgs.ordering) {\n const sgsAction = randomChoice(Object.values(step.lookup));\n transformation = transformation.applyTransformation(\n sgsAction.transformation,\n );\n }\n return transformation.toKPattern();\n}\n", "import { LazyPromise } from \"@cubing/lazy-promise\";\nimport type { Alg } from \"../../../alg/index.ts\";\nimport type {\n KPattern,\n KPatternData,\n KPuzzleDefinition,\n} from \"../../../kpuzzle/index.ts\";\n\nexport const twipsPromise = new LazyPromise(\n async () => import(\"../../../vendor/mpl/twips/index.js\"),\n);\n\nexport interface TwipsOptions {\n // TODO: start prune depth?\n generatorMoves?: string[];\n targetPattern?: KPatternData;\n minDepth?: number;\n maxDepth?: number;\n}\n\nexport async function wasmTwips(\n def: KPuzzleDefinition,\n pattern: KPattern,\n options?: TwipsOptions,\n): Promise<Alg> {\n const { wasmTwips } = await twipsPromise;\n return wasmTwips(def, pattern, options);\n}\n\nexport async function wasmRandomScrambleForEvent(\n eventID: string,\n): Promise<Alg> {\n const { wasmRandomScrambleForEvent } = await twipsPromise;\n return wasmRandomScrambleForEvent(eventID);\n}\n\nexport async function wasmDeriveScrambleForEvent(\n derivationSeedHex: string,\n derivationSaltHierarchy: string[],\n eventID: string,\n): Promise<Alg> {\n const { wasmDeriveScrambleForEvent } = await twipsPromise;\n return wasmDeriveScrambleForEvent(\n derivationSeedHex,\n derivationSaltHierarchy,\n eventID,\n );\n}\n", "import { LazyPromise } from \"@cubing/lazy-promise\";\n\nexport const searchDynamicSideEvents = new LazyPromise(\n () => import(\"./search-dynamic-sgs-side-events.ts\"),\n);\n", "import { LazyPromise } from \"@cubing/lazy-promise\";\n\nexport const dynamic4x4x4Solver = new LazyPromise(\n () => import(\"./search-dynamic-solve-4x4x4.ts\"),\n);\n", "import type { Alg } from \"../../../../alg/index.ts\";\nimport { mustBeInsideWorker } from \"../../inside-worker.ts\";\nimport { addOrientationSuffix } from \"../addOrientationSuffix.ts\";\nimport { dynamic4x4x4Solver } from \"./dynamic/4x4x4/index.ts\";\n\nconst randomSuffixes = [\n [null, \"x\", \"x2\", \"x'\", \"z\", \"z'\"],\n [null, \"y\", \"y2\", \"y'\"],\n];\n\nexport async function initialize444(): Promise<void> {\n return (await dynamic4x4x4Solver).initialize();\n}\n\nexport async function random444Scramble(): Promise<Alg> {\n mustBeInsideWorker();\n return (await dynamic4x4x4Solver).random444Scramble();\n}\n\nexport async function random444OrientedScramble(): Promise<Alg> {\n return addOrientationSuffix(await random444Scramble(), randomSuffixes);\n}\n", "import { LazyPromise } from \"@cubing/lazy-promise\";\n\nexport const dynamicFTO = new LazyPromise(\n () => import(\"./search-dynamic-solve-fto.ts\"),\n);\n", "import { LazyPromise } from \"@cubing/lazy-promise\";\nimport { Alg } from \"../../../../alg/index.ts\";\nimport type { KPattern } from \"../../../../kpuzzle/KPattern.ts\";\nimport { puzzles } from \"../../../../puzzles/index.ts\";\nimport { mustBeInsideWorker } from \"../../inside-worker.ts\";\nimport type { SGSCachedData } from \"../parseSGS.ts\";\nimport { TrembleSolver } from \"../tremble.ts\";\nimport { dynamicFTO } from \"./dynamic/fto/index.ts\";\n\nconst dynamic = new LazyPromise(\n () => import(\"./dynamic/sgs-unofficial/search-dynamic-sgs-unofficial.ts\"),\n);\n\nconst TREMBLE_DEPTH = 3;\n\nlet cachedTrembleSolver: Promise<TrembleSolver> | null = null;\nasync function getCachedTrembleSolver(): Promise<TrembleSolver> {\n return (\n cachedTrembleSolver ||\n (cachedTrembleSolver = (async (): Promise<TrembleSolver> => {\n const json: SGSCachedData = await (await dynamic).sgsDataFTO();\n return new TrembleSolver(await puzzles[\"fto\"].kpuzzle(), json, [\n \"U\",\n \"R\",\n \"F\",\n \"L\",\n \"D\",\n \"B\",\n \"BR\",\n \"BL\",\n ]);\n })())\n );\n}\n\nexport async function preInitializeFTO(): Promise<void> {\n await getCachedTrembleSolver();\n}\n\n// TODO: centers\nexport async function solveFTO(pattern: KPattern): Promise<Alg> {\n mustBeInsideWorker();\n const trembleSolver = await getCachedTrembleSolver();\n const alg = await trembleSolver.solve(\n pattern,\n TREMBLE_DEPTH,\n () => 3, // TODO: Attach quantum move order lookup to puzzle.\n );\n return alg;\n}\n\nexport async function randomFTOScramble(): Promise<Alg> {\n mustBeInsideWorker();\n return new Alg(await (await dynamicFTO).getRandomFTOScramble());\n}\n", "import { LazyPromise } from \"@cubing/lazy-promise\";\n\nexport const dynamicKilominxSolver = new LazyPromise<\n typeof import(\"./search-dynamic-solve-kilominx\")\n>(() => import(\"./search-dynamic-solve-kilominx.ts\"));\n", "import type { Alg } from \"../../../../alg/index.ts\";\nimport { mustBeInsideWorker } from \"../../inside-worker.ts\";\nimport { dynamicKilominxSolver } from \"./dynamic/kilominx/index.ts\";\n\nexport async function randomKilominxScramble(): Promise<Alg> {\n mustBeInsideWorker();\n return (await dynamicKilominxSolver).getRandomKilominxScramble();\n}\n", "import { LazyPromise } from \"@cubing/lazy-promise\";\n\nexport const dynamicMasterTetraminxSolver = new LazyPromise(\n () => import(\"./search-dynamic-solve-master_tetraminx.ts\"),\n);\n", "import { Alg } from \"../../../../alg/index.ts\";\nimport { mustBeInsideWorker } from \"../../inside-worker.ts\";\nimport { dynamicMasterTetraminxSolver } from \"./dynamic/master_tetraminx/index.ts\";\n\nexport async function randomMasterTetraminxScramble(): Promise<Alg> {\n mustBeInsideWorker();\n return new Alg(\n await (\n await dynamicMasterTetraminxSolver\n ).randomMasterTetraminxScrambleString(),\n );\n}\n", "import type { Alg } from \"../../../../alg/index.ts\";\nimport type { KPatternData } from \"../../../../kpuzzle/index.ts\";\nimport { KPattern } from \"../../../../kpuzzle/index.ts\";\nimport { mustBeInsideWorker } from \"../../inside-worker.ts\";\nimport type { SGSCachedData } from \"../parseSGS.ts\";\nimport { TrembleSolver } from \"../tremble.ts\";\nimport { searchDynamicSideEvents } from \"./dynamic/sgs-side-events/index.ts\";\n\nconst TREMBLE_DEPTH = 2;\n\nlet cachedTrembleSolver: Promise<TrembleSolver> | null = null;\nasync function getCachedTrembleSolver(): Promise<TrembleSolver> {\n return (\n cachedTrembleSolver ||\n (cachedTrembleSolver = (async (): Promise<TrembleSolver> => {\n const json: SGSCachedData = await (\n await searchDynamicSideEvents\n ).cachedSGSDataMegaminx();\n return new TrembleSolver(\n await (await searchDynamicSideEvents).cachedMegaminxKPuzzleWithoutMO(),\n json,\n [\"U\", \"R\", \"F\", \"L\", \"BR\", \"BL\", \"FR\", \"FL\", \"DR\", \"DL\", \"B\", \"D\"],\n );\n })())\n );\n}\n\nexport async function preInitializeMegaminx(): Promise<void> {\n await getCachedTrembleSolver();\n}\n\n// TODO: centers\nexport async function solveMegaminx(pattern: KPattern): Promise<Alg> {\n mustBeInsideWorker();\n const trembleSolver = await getCachedTrembleSolver();\n const patternDataWithoutMO: KPatternData = structuredClone(\n pattern.patternData,\n );\n patternDataWithoutMO[\"CENTERS\"].orientation = new Array(12).fill(0);\n const patternWithoutMO = new KPattern(\n await (await searchDynamicSideEvents).cachedMegaminxKPuzzleWithoutMO(),\n patternDataWithoutMO,\n );\n const alg = await trembleSolver.solve(\n patternWithoutMO,\n TREMBLE_DEPTH,\n () => 5, // TODO: Attach quantum move order lookup to puzzle.\n );\n return alg;\n}\n", "import type { Alg } from \"../../../../alg/index.ts\";\nimport type { KPattern } from \"../../../../kpuzzle/KPattern.ts\";\nimport { puzzles } from \"../../../../puzzles/index.ts\";\nimport { mustBeInsideWorker } from \"../../inside-worker.ts\";\nimport type { SGSCachedData } from \"../parseSGS.ts\";\nimport { randomPatternFromSGS, TrembleSolver } from \"../tremble.ts\";\nimport { searchDynamicSideEvents } from \"./dynamic/sgs-side-events/index.ts\";\n\nconst TREMBLE_DEPTH = 3;\n\nlet cachedTrembleSolver: Promise<TrembleSolver> | null = null;\nasync function getCachedTrembleSolver(): Promise<TrembleSolver> {\n return (\n cachedTrembleSolver ||\n (cachedTrembleSolver = (async (): Promise<TrembleSolver> => {\n const json: SGSCachedData = await (\n await searchDynamicSideEvents\n ).sgsDataPyraminx();\n return new TrembleSolver(\n await puzzles[\"pyraminx\"].kpuzzle(),\n json,\n \"RLUB\".split(\"\"),\n );\n })())\n );\n}\n\nexport async function preInitializePyraminx(): Promise<void> {\n await getCachedTrembleSolver();\n}\n\nexport async function solvePyraminx(pattern: KPattern): Promise<Alg> {\n mustBeInsideWorker();\n const trembleSolver = await getCachedTrembleSolver();\n const alg = await trembleSolver.solve(pattern, TREMBLE_DEPTH, () => 3); // TODO: Attach quantum move order lookup to puzzle.\n return alg;\n}\n\nexport async function randomPyraminxPatternFixedOrientation(): Promise<KPattern> {\n mustBeInsideWorker();\n // Note: this sets all center orientations to 0.\n return randomPatternFromSGS(\n await puzzles[\"pyraminx\"].kpuzzle(),\n await (await searchDynamicSideEvents).sgsDataPyraminxFixedOrientation(),\n );\n}\n", "import { LazyPromise } from \"@cubing/lazy-promise\";\n\nexport const searchDynamicUnofficial = new LazyPromise(\n () => import(\"./search-dynamic-sgs-unofficial.ts\"),\n);\n", "import type { Alg } from \"../../../../alg/index.ts\";\nimport { mustBeInsideWorker } from \"../../inside-worker.ts\";\nimport { searchDynamicUnofficial } from \"./dynamic/sgs-unofficial/index.ts\";\n\nexport async function randomRediCubeScramble(): Promise<Alg> {\n mustBeInsideWorker();\n return (await searchDynamicUnofficial).getRandomRediCubeScramble();\n}\n", "import type { Alg, QuantumMove } from \"../../../../alg/index.ts\";\nimport { KPattern } from \"../../../../kpuzzle/index.ts\";\nimport { mustBeInsideWorker } from \"../../inside-worker.ts\";\nimport type { SGSCachedData } from \"../parseSGS.ts\";\nimport { TrembleSolver } from \"../tremble.ts\";\nimport { searchDynamicSideEvents } from \"./dynamic/sgs-side-events/index.ts\";\n\nconst TREMBLE_DEPTH = 3;\n\nlet cachedTrembleSolver: Promise<TrembleSolver> | null = null;\nasync function getCachedTrembleSolver(): Promise<TrembleSolver> {\n return (\n cachedTrembleSolver ||\n (cachedTrembleSolver = (async (): Promise<TrembleSolver> => {\n const json: SGSCachedData = await (\n await searchDynamicSideEvents\n ).sgsDataSkewb();\n return new TrembleSolver(\n await (await searchDynamicSideEvents).skewbKPuzzleWithoutMOCached(),\n json,\n \"RLUB\".split(\"\"),\n );\n })())\n );\n}\n\nexport async function preInitializeSkewb(): Promise<void> {\n await getCachedTrembleSolver();\n}\n\nasync function resetCenterOrientation(pattern: KPattern): Promise<KPattern> {\n return new KPattern(\n await (await searchDynamicSideEvents).skewbKPuzzleWithoutMOCached(),\n {\n CORNERS: pattern.patternData[\"CORNERS\"],\n CENTERS: {\n pieces: pattern.patternData[\"CENTERS\"].pieces,\n orientation: new Array(6).fill(0),\n },\n },\n );\n}\n\n// TODO: fix def consistency.\nexport async function solveSkewb(pattern: KPattern): Promise<Alg> {\n mustBeInsideWorker();\n const trembleSolver = await getCachedTrembleSolver();\n const alg = await trembleSolver.solve(\n await resetCenterOrientation(pattern),\n TREMBLE_DEPTH,\n (quantumMove: QuantumMove) => (quantumMove.family === \"y\" ? 4 : 3), // TODO: Attach quantum move order lookup to puzzle.\n );\n return alg;\n}\n", "import type { Alg } from \"../../alg/index.ts\";\nimport {\n KPattern,\n type KPatternData,\n KPuzzle,\n type KPuzzleDefinition,\n} from \"../../kpuzzle/index.ts\";\nimport { puzzles, wcaEvents } from \"../../puzzles/index.ts\";\nimport { setIsInsideWorker } from \"./inside-worker.ts\";\nimport { preInitialize222, solve222 } from \"./solve/puzzles/2x2x2.ts\";\nimport {\n initialize333,\n random333OrientedScramble,\n random333Scramble,\n solve333,\n} from \"./solve/puzzles/3x3x3/index.ts\";\nimport {\n initialize444,\n random444OrientedScramble,\n random444Scramble,\n} from \"./solve/puzzles/4x4x4.ts\";\nimport { randomFTOScramble } from \"./solve/puzzles/fto.ts\";\nimport { randomKilominxScramble } from \"./solve/puzzles/kilominx.ts\";\nimport { randomMasterTetraminxScramble } from \"./solve/puzzles/master_tetraminx.ts\";\nimport { solveMegaminx } from \"./solve/puzzles/megaminx.ts\";\nimport { solvePyraminx } from \"./solve/puzzles/pyraminx.ts\";\nimport { randomRediCubeScramble } from \"./solve/puzzles/redi_cube.ts\";\nimport { solveSkewb } from \"./solve/puzzles/skewb.ts\";\nimport {\n type TwipsOptions,\n wasmDeriveScrambleForEvent,\n wasmRandomScrambleForEvent,\n wasmTwips,\n} from \"./solve/twips.ts\";\n\nconst IDLE_PREFETCH_TIMEOUT_MS = 1000;\n\nsetIsInsideWorker(true);\n\nlet DEBUG_MEASURE_PERF = true;\nexport function setDebugMeasurePerf(newDebugMeasurePerf: boolean): void {\n DEBUG_MEASURE_PERF = newDebugMeasurePerf;\n}\n\nlet DEBUG_FORCE_TWIPS_FOR_SCRAMBLES = false;\nexport function setDebugForceTwipsForScrambles(\n forceTwipsForScrambles: boolean,\n): void {\n DEBUG_FORCE_TWIPS_FOR_SCRAMBLES = forceTwipsForScrambles;\n}\n\nfunction now() {\n return (typeof performance === \"undefined\" ? Date : performance).now();\n}\n\nasync function measurePerf<T>(\n name: string,\n f: () => T | Promise<T>,\n options?: { isPrefetch?: boolean },\n): Promise<T> {\n if (!DEBUG_MEASURE_PERF) {\n return f();\n }\n\n const start = now();\n const result = f();\n if ((result as any)?.then) {\n await result;\n }\n const end = now();\n console.warn(\n `${name}${options?.isPrefetch ? \" (prefetched)\" : \"\"}: ${Math.round(\n end - start,\n )}ms`,\n );\n return result;\n}\n\nconst prefetchPromises: Map<string, Promise<Alg>> = new Map();\n// This would just be a number, except `node` is extremely silly and returns an object instead.\n// https://nodejs.org/api/timers.html#settimeoutcallback-delay-args\nlet queuedPrefetchTimeoutID: ReturnType<typeof setTimeout> | null = null;\n\n// This is used to ensure only one scramble is running (and measured) at a time, as interleaving scrambles within a single worker isn't supported (yet).\n// Scrambles may perform async work (e.g. loading code), and this guard this prevents unintended interleaving.\nlet scrambleActivityLock: Promise<Alg>;\n\nasync function randomScrambleForEvent(\n eventID: string,\n options?: { isPrefetch?: boolean },\n): Promise<Alg> {\n return (scrambleActivityLock = (async () => {\n await scrambleActivityLock;\n function wasm(): Promise<Alg> {\n return measurePerf(\n `wasmRandomScrambleForEvent(${JSON.stringify(eventID)})`,\n () => wasmRandomScrambleForEvent(eventID),\n {\n isPrefetch: options?.isPrefetch,\n },\n );\n }\n\n function twipsOverride(): Promise<Alg> | undefined {\n if (\n DEBUG_FORCE_TWIPS_FOR_SCRAMBLES &&\n (eventID in wcaEvents || [\"kilominx\"].includes(eventID))\n ) {\n console.log(`Using \\`twips\\` override for \\`${eventID}\\` scramble.`);\n return wasm();\n }\n return undefined;\n }\n\n switch (eventID) {\n // case \"333\":\n case \"222\":\n return (await wasm()).experimentalSimplify({\n puzzleSpecificSimplifyOptions: {\n quantumMoveOrder: () => 4,\n },\n });\n // case \"444\":\n case \"555\":\n case \"666\":\n case \"777\":\n // case \"333bf\":\n case \"333fm\":\n // case \"333oh\":\n case \"clock\":\n case \"minx\":\n case \"pyram\":\n case \"skewb\":\n case \"sq1\":\n // case \"444bf\":\n case \"555bf\":\n // case \"333mbf\":\n // case \"fto\":\n // case \"master_tetraminx\":\n // case \"kilominx\":\n // case \"redi_cube\":\n case \"baby_fto\":\n return wasm();\n case \"333\":\n case \"333oh\":\n case \"333ft\":\n return (\n twipsOverride() ??\n measurePerf(\"random333Scramble\", random333Scramble, {\n isPrefetch: options?.isPrefetch,\n })\n );\n case \"333bf\":\n case \"333mbf\":\n return (\n twipsOverride() ??\n measurePerf(\"random333OrientedScramble\", random333OrientedScramble)\n );\n case \"444\":\n return (\n twipsOverride() ??\n measurePerf(\"random444Scramble\", random444Scramble, {\n isPrefetch: options?.isPrefetch,\n })\n );\n case \"444bf\":\n return (\n twipsOverride() ??\n measurePerf(\"random444OrientedScramble\", random444OrientedScramble)\n );\n case \"fto\":\n return measurePerf(\"randomFTOScramble\", randomFTOScramble, {\n isPrefetch: options?.isPrefetch,\n });\n case \"master_tetraminx\":\n return measurePerf(\n \"randomMasterTetraminxScramble\",\n randomMasterTetraminxScramble,\n );\n case \"kilominx\":\n return (\n twipsOverride() ??\n measurePerf(\"randomKilominxScramble\", randomKilominxScramble, {\n isPrefetch: options?.isPrefetch,\n })\n );\n case \"redi_cube\":\n return measurePerf(\"randomRediCubeScramble\", randomRediCubeScramble, {\n isPrefetch: options?.isPrefetch,\n });\n default:\n throw new Error(`unsupported event: ${eventID}`);\n }\n })());\n}\n\nexport type PrefetchLevel = (typeof PrefetchLevel)[keyof typeof PrefetchLevel];\nexport const PrefetchLevel = {\n Auto: \"auto\",\n None: \"none\",\n Immediate: \"immediate\",\n};\n\nlet currentPrefetchLevel = PrefetchLevel.Auto;\n\nexport const insideAPI = {\n initialize: async (eventID: string) => {\n switch (eventID) {\n case \"222\":\n return measurePerf(\"preInitialize222\", preInitialize222);\n case \"333\":\n case \"333oh\":\n case \"333ft\":\n return measurePerf(\"initialize333\", initialize333);\n case \"444\":\n return measurePerf(\"initialize444\", initialize444);\n default:\n throw new Error(`unsupported event: ${eventID}`);\n }\n },\n\n setScramblePrefetchLevel(prefetchLevel: `${PrefetchLevel}`) {\n currentPrefetchLevel = prefetchLevel as PrefetchLevel;\n },\n\n randomScrambleForEvent: async (eventID: string): Promise<Alg> => {\n let promise = prefetchPromises.get(eventID);\n if (promise) {\n prefetchPromises.delete(eventID);\n } else {\n promise = randomScrambleForEvent(eventID);\n }\n if (currentPrefetchLevel !== PrefetchLevel.None) {\n promise.then(() => {\n // `queuedPrefetch` could be 0, but:\n // > Passing an invalid ID to clearTimeout() silently does nothing; no exception is thrown.\n // https://developer.mozilla.org/en-US/docs/Web/API/clearTimeout#notes\n if (queuedPrefetchTimeoutID) {\n clearTimeout(queuedPrefetchTimeoutID);\n }\n queuedPrefetchTimeoutID = setTimeout(\n () => {\n prefetchPromises.set(\n eventID,\n randomScrambleForEvent(eventID, {\n isPrefetch: true,\n }),\n );\n },\n currentPrefetchLevel === PrefetchLevel.Immediate\n ? 0\n : IDLE_PREFETCH_TIMEOUT_MS,\n );\n });\n }\n return promise;\n },\n\n randomScrambleStringForEvent: async (eventID: string): Promise<string> => {\n return (await insideAPI.randomScrambleForEvent(eventID)).toString();\n },\n\n deriveScrambleStringForEvent: async (\n derivationSeedHex: string,\n derivationSaltHierarchy: string[],\n eventID: string,\n ): Promise<string> => {\n const scramble = await measurePerf(\n `deriveScrambleForEvent(\u2026, ${JSON.stringify(eventID)})`,\n () =>\n wasmDeriveScrambleForEvent(\n derivationSeedHex,\n derivationSaltHierarchy,\n eventID,\n ),\n );\n return scramble.toString();\n },\n\n solve333ToString: async (patternData: KPatternData): Promise<string> => {\n const pattern = new KPattern(await puzzles[\"3x3x3\"].kpuzzle(), patternData);\n return (await solve333(pattern)).toString();\n },\n\n solve222ToString: async (patternData: KPatternData): Promise<string> => {\n const pattern = new KPattern(await puzzles[\"2x2x2\"].kpuzzle(), patternData);\n return (await solve222(pattern)).toString();\n },\n\n solveSkewbToString: async (patternData: KPatternData): Promise<string> => {\n const pattern = new KPattern(await puzzles[\"skewb\"].kpuzzle(), patternData);\n return (await solveSkewb(pattern)).toString();\n },\n\n solvePyraminxToString: async (patternData: KPatternData): Promise<string> => {\n const pattern = new KPattern(\n await puzzles[\"pyraminx\"].kpuzzle(),\n patternData,\n );\n return (await solvePyraminx(pattern)).toString();\n },\n\n solveMegaminxToString: async (patternData: KPatternData): Promise<string> => {\n const pattern = new KPattern(\n await puzzles[\"megaminx\"].kpuzzle(),\n patternData,\n );\n return (await solveMegaminx(pattern)).toString();\n },\n\n setDebugMeasurePerf: async (measure: boolean): Promise<void> => {\n setDebugMeasurePerf(measure);\n },\n\n setDebugForceTwipsForScrambles: async (measure: boolean): Promise<void> => {\n setDebugForceTwipsForScrambles(measure);\n },\n\n solveTwipsToString: async (\n def: KPuzzleDefinition,\n patternData: KPatternData,\n options?: TwipsOptions,\n ): Promise<string> => {\n const kpuzzle = new KPuzzle(def);\n const pattern = new KPattern(kpuzzle, patternData);\n return (await wasmTwips(def, pattern, options)).toString();\n },\n};\n\nexport type WorkerAPI = typeof insideAPI;\n", "import { expose } from \"@cubing/comlink-everywhere\";\nimport { insideAPI } from \"./api.ts\";\n\nexpose(insideAPI);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["wasmTwips", "wasmRandomScrambleForEvent", "wasmDeriveScrambleForEvent", "cachedTrembleSolver", "getCachedTrembleSolver", "getCachedTrembleSolver", "TREMBLE_DEPTH", "cachedTrembleSolver", "getCachedTrembleSolver", "getCachedTrembleSolver", "TREMBLE_DEPTH", "TREMBLE_DEPTH", "cachedTrembleSolver", "getCachedTrembleSolver", "getCachedTrembleSolver", "TREMBLE_DEPTH"]
|
|
7
|
+
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
parseSGS
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-YSAQ6DRT.js";
|
|
4
4
|
import {
|
|
5
5
|
cube2x2x2,
|
|
6
6
|
puzzles
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-2IA2R7XV.js";
|
|
8
|
+
import "./chunk-5FXQPBXH.js";
|
|
9
9
|
import {
|
|
10
10
|
KPuzzle
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-
|
|
11
|
+
} from "./chunk-BQPY6252.js";
|
|
12
|
+
import "./chunk-UP5VP7GL.js";
|
|
13
13
|
|
|
14
14
|
// src/cubing/search/inside/solve/puzzles/dynamic/sgs-side-events/2x2x2.sgs.ts
|
|
15
15
|
var cachedData = null;
|
|
@@ -1888,4 +1888,4 @@ export {
|
|
|
1888
1888
|
sgsDataSkewbFixedCorner,
|
|
1889
1889
|
skewbKPuzzleWithoutMOCached
|
|
1890
1890
|
};
|
|
1891
|
-
//# sourceMappingURL=search-dynamic-sgs-side-events-
|
|
1891
|
+
//# sourceMappingURL=search-dynamic-sgs-side-events-5EIXNDVI.js.map
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
parseSGS
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-YSAQ6DRT.js";
|
|
4
4
|
import {
|
|
5
5
|
puzzles
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-2IA2R7XV.js";
|
|
7
|
+
import "./chunk-5FXQPBXH.js";
|
|
8
|
+
import "./chunk-BQPY6252.js";
|
|
9
9
|
import {
|
|
10
10
|
Alg
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-UP5VP7GL.js";
|
|
12
12
|
|
|
13
13
|
// src/cubing/vendor/mpl/xyzzy/redi_cube.js
|
|
14
14
|
import { randomUIntBelow } from "random-uint-below";
|
|
@@ -1265,4 +1265,4 @@ export {
|
|
|
1265
1265
|
getRandomRediCubeScramble,
|
|
1266
1266
|
sgsDataFTO
|
|
1267
1267
|
};
|
|
1268
|
-
//# sourceMappingURL=search-dynamic-sgs-unofficial-
|
|
1268
|
+
//# sourceMappingURL=search-dynamic-sgs-unofficial-Y7SIOVIX.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/cubing/vendor/mpl/xyzzy/redi_cube.js", "../../../../src/cubing/search/inside/solve/puzzles/dynamic/sgs-unofficial/fto.sgs.ts"],
|
|
4
|
+
"sourcesContent": ["// @ts-nocheck\n\n/* Redi cube scramble generator */\n// From https://torchlight.github.io/rediscrambler.js\n// Added to `cubing.js` under the GPL license by permission from the author (@torchlight/xyzzy).\n\n\"use strict\";\n\nimport { Alg } from \"../../../alg/index.ts\";\nimport { randomUIntBelow } from \"random-uint-below\";\n\nfunction counter(A) {\n let counts = [];\n for (let a of A) {\n counts[a] = (counts[a] || 0) + 1;\n }\n return counts;\n}\n\n/* Combinatoric functions */\n\nfunction factorial(n) {\n if (n < 2) {\n return n;\n }\n let f = 1;\n for (let i = 2; i <= n; i++) {\n f *= i;\n }\n return f;\n}\n\nfunction C(n, k) {\n if (k < 0 || k > n) {\n return 0;\n }\n if (k === 0 || k === n) {\n return 1;\n }\n let c = 1;\n for (let i = 0; i < k; i++) {\n c = ((c * (n - i)) / (i + 1)) | 0;\n }\n return c;\n}\n\nfunction permutation_to_index(perm) {\n perm = perm.slice();\n let n = perm.length;\n let f = factorial(n - 1);\n let ind = 0;\n while (n > 1) {\n n--;\n // invariant: f === factorial(n)\n // also, perm stores meaningful values up to perm[n]\n let e = perm[0];\n ind += e * f;\n for (let i = 0; i < n; i++) {\n let x = perm[i + 1];\n perm[i] = x - (x > e);\n }\n f /= n;\n }\n return ind;\n}\n\nfunction index_to_permutation(ind, n) {\n let perm = [];\n let f = factorial(n - 1);\n for (let i = 0; i < n; i++) {\n perm[i] = (ind / f) | 0;\n ind %= f;\n f /= n - 1 - i;\n }\n // could probably use some kind of binary tree to make this linearithmic, but I am hella lazy.\n for (let i = n - 2; i >= 0; i--) {\n for (let j = i + 1; j < n; j++) {\n perm[j] += +(perm[j] >= perm[i]);\n }\n }\n return perm;\n}\n\nfunction permutation_parity(A) {\n let n = A.length;\n let parity = 0;\n // again, there is a linearithmic algorithm to count inversions, but >lazy\n for (let i = 0; i < n - 1; i++) {\n for (let j = i; j < n; j++) {\n if (A[i] > A[j]) {\n parity ^= 1;\n }\n }\n }\n return parity;\n}\n\nfunction index_to_evenpermutation(ind, n) {\n let perm = [];\n let f = factorial(n - 1) / 2;\n let parity = 0;\n for (let i = 0; i < n - 1; i++) {\n perm[i] = (ind / f) | 0;\n ind %= f;\n f /= n - 1 - i;\n }\n perm[n - 1] = 0;\n for (let i = n - 2; i >= 0; i--) {\n for (let j = i + 1; j < n; j++) {\n if (perm[j] >= perm[i]) {\n perm[j]++;\n } else {\n parity ^= 1;\n }\n }\n }\n if (parity === 1) {\n [perm[n - 2], perm[n - 1]] = [perm[n - 1], perm[n - 2]];\n }\n return perm;\n}\n\nfunction evenpermutation_to_index(perm) {\n return permutation_to_index(perm) >> 1;\n}\n\nfunction comb_to_index(l) {\n let bits = l.length;\n let ones = 0;\n for (let i = 0; i < bits; i++) {\n ones += +(l[i] === 1);\n }\n let zeros = bits - ones;\n if (zeros === 0 || ones === 0 || bits === 1) {\n return 0;\n }\n let b = C(bits - 1, ones);\n let ind = 0;\n for (let i = 0; zeros > 0 && ones > 0 && bits > 1; i++) {\n bits--;\n if (l[i] === 0) {\n b = (b * --zeros) / bits;\n } else {\n // l[i] === 1\n ind += b;\n b = (b * ones--) / bits;\n }\n }\n return ind;\n}\n\nfunction index_to_comb(ind, ones, bits) {\n let zeros = bits - ones;\n let b = C(bits - 1, ones);\n let l = [];\n let n = bits - 1;\n for (let i = 0; i < n; i++) {\n bits--;\n if (ind < b) {\n l.push(0);\n b = (b * --zeros) / bits;\n } else {\n l.push(1);\n ind -= b;\n b = (b * ones--) / bits;\n }\n }\n l.push(ones);\n return l;\n}\n\nfunction compose(A, B) {\n let C = [];\n for (let i = 0; i < B.length; i++) {\n C[i] = A[B[i]];\n }\n return C;\n}\n\nfunction permutation_from_cycle(cycle, n) {\n let perm = [];\n for (let i = 0; i < n; i++) {\n perm[i] = i;\n }\n for (let i = 0; i < cycle.length; i++) {\n perm[cycle[i]] = cycle[(i + 1) % cycle.length];\n }\n return perm;\n}\n\nfunction unsparsify_list(d, n) {\n let l = Array(n).fill(0);\n for (let k in d) {\n l[k] = d[k];\n }\n return l;\n}\n\nfunction compose_state(state1, state2) {\n let o = Array(8).fill(0);\n for (let i = 0; i < 8; i++) {\n o[i] = (state1[1][i] + state2[1][i]) % 3;\n }\n return [compose(state1[0], state2[0]), o];\n}\n\nlet move_UL = [\n permutation_from_cycle([0, 1, 4], 12),\n unsparsify_list({ 0: 2 }, 8),\n];\nlet move_U = [\n permutation_from_cycle([1, 2, 5], 12),\n unsparsify_list({ 1: 2 }, 8),\n];\nlet move_UR = [\n permutation_from_cycle([2, 3, 6], 12),\n unsparsify_list({ 2: 2 }, 8),\n];\nlet move_F = [\n permutation_from_cycle([3, 0, 7], 12),\n unsparsify_list({ 3: 2 }, 8),\n];\nlet move_L = [\n permutation_from_cycle([9, 8, 4], 12),\n unsparsify_list({ 4: 2 }, 8),\n];\nlet move_B = [\n permutation_from_cycle([10, 9, 5], 12),\n unsparsify_list({ 5: 2 }, 8),\n];\nlet move_R = [\n permutation_from_cycle([11, 10, 6], 12),\n unsparsify_list({ 6: 2 }, 8),\n];\nlet move_D = [\n permutation_from_cycle([8, 11, 7], 12),\n unsparsify_list({ 7: 2 }, 8),\n];\n\nlet solved = [index_to_permutation(0, 12), Array(8).fill(0)];\n\nlet moves = [move_UL, move_U, move_UR, move_F, move_L, move_B, move_R, move_D];\nlet move_names = [\"UL\", \"U\", \"UR\", \"F\", \"L\", \"B\", \"R\", \"D\"];\nlet tetrad = [0, 1, 0, 1, 1, 0, 1, 0];\n\nfunction apply_move_sequence(state, move_sequence) {\n for (let [m, r] of move_sequence) {\n for (let i = 0; i < r; i++) {\n state = compose_state(state, moves[m]);\n }\n }\n return state;\n}\n\nfunction stringify_move_sequence(move_sequence) {\n let suffixes = [\"0\", \"\", \"'\"];\n let s = move_sequence.map(([m, r]) => move_names[m] + suffixes[r]);\n return s.join(\" \");\n}\n\nfunction print_move_sequence(move_sequence) {\n console.log(stringify_move_sequence(move_sequence));\n}\n\nfunction generate_random_state() {\n let p = index_to_evenpermutation(\n Math.floor(randomUIntBelow(factorial(12)) / 2),\n 12,\n );\n let o = Array(8);\n for (let i = 0; i < 8; i++) {\n o[i] = randomUIntBelow(3);\n }\n return [p, o];\n}\n\nfunction generate_random_state_scramble() {\n return solve(generate_random_state());\n}\n\nfunction generate_scramble_sequence() {\n return stringify_move_sequence(generate_random_state_scramble());\n}\n\nfunction solve(state) {\n let phase1_indices = index_phase1(state);\n let phase1_mtables = [\n generate_phase1_edge_mtable(),\n generate_phase1_separate_mtable(),\n ];\n let phase1_ptables = [\n generate_phase1_edge_ptable(),\n generate_phase1_separate_ptable(),\n ];\n let phase2_mtables = [\n generate_phase2_edge_mtable(),\n generate_phase2_corner_mtable(),\n ];\n let phase2_ptables = [\n generate_phase2_edge_ptable(),\n generate_phase1_corner_ptable(),\n ];\n\n let phase1gen = ida_solve_gen(phase1_indices, phase1_mtables, phase1_ptables);\n let best = undefined;\n let intermediate_states = new Set();\n let start_time = +new Date();\n for (let i = 0; i < 25; i++) {\n let { value: sol1, done } = phase1gen.next();\n let new_state = state;\n for (let [m, r] of sol1) {\n for (let i = 0; i < r; i++) {\n new_state = compose_state(new_state, moves[m]);\n }\n }\n if (intermediate_states.has(new_state.toString())) {\n // console.log(\"skip\");\n continue;\n } else {\n intermediate_states.add(new_state.toString());\n }\n let edge_ind = evenpermutation_to_index(new_state[0].slice(0, 8));\n let corner_ind = 0;\n for (let i = 0; i < 4; i++) {\n corner_ind += new_state[1][i] * 3 ** i;\n }\n let phase2_indices = [edge_ind, corner_ind];\n //let sol2 = [];\n let moves_left = best ? best.length - sol1.length - 1 : 999999;\n let sol2 = ida_solve(\n phase2_indices,\n phase2_mtables,\n phase2_ptables,\n moves_left,\n );\n if (sol2 === undefined) {\n // console.log(\"prune\");\n continue;\n }\n // console.log(\n // `to ${new_state} in ${sol1.length} moves; total move count ${\n // sol1.length + sol2.length\n // }`,\n // );\n if (best === undefined || best.length > sol1.length + sol2.length) {\n best = sol1.concat(sol2);\n }\n // bail if we've spent too much time\n if (new Date() - start_time > 300) {\n break;\n }\n }\n return best;\n}\n\nfunction index_phase1(state) {\n let edge_ind = 0;\n for (let i = 0; i < 4; i++) {\n edge_ind += state[0].indexOf(i + 8) * 12 ** i;\n }\n let corner_ind = 0;\n for (let i = 0; i < 4; i++) {\n corner_ind += state[1][i + 4] * 3 ** i;\n }\n let filtered = state[0].map((x) => Math.max(-1, x - 8));\n let separate_ind =\n comb_to_index(filtered.map((x) => +(x >= 0))) * 2 +\n permutation_parity(filtered.filter((x) => x >= 0));\n return [edge_ind, corner_ind + 81 * separate_ind];\n}\n\nlet tables = {};\n\nfunction generate_phase1_corner_mtable() {\n if (tables.phase1cm) {\n return tables.phase1cm;\n }\n let mtable = [];\n for (let i = 0; i < 81; i++) {\n mtable[i] = Array(8);\n let o = [\n i % 3,\n Math.floor(i / 3) % 3,\n Math.floor(i / 9) % 3,\n Math.floor(i / 27),\n ];\n mtable[i][0] = mtable[i][1] = mtable[i][2] = mtable[i][3] = i;\n for (let j = 0; j < 4; j++) {\n o[j] = (o[j] + 2) % 3;\n mtable[i][4 + j] = o[0] + o[1] * 3 + o[2] * 9 + o[3] * 27;\n o[j] = (o[j] + 1) % 3;\n }\n }\n return (tables.phase1cm = mtable);\n}\n\nfunction generate_phase1_corner_ptable() {\n if (tables.phase1cp) {\n return tables.phase1cp;\n }\n let ptable = Array(81);\n for (let i = 0; i < 81; i++) {\n let o = [\n i % 3,\n Math.floor(i / 3) % 3,\n Math.floor(i / 9) % 3,\n Math.floor(i / 27),\n ];\n ptable[i] = (o[0] !== 0) + (o[1] !== 0) + (o[2] !== 0) + (o[3] !== 0);\n }\n return (tables.phase1cp = ptable);\n}\n\nfunction generate_phase1_edge_mtable() {\n if (tables.phase1em) {\n return tables.phase1em;\n }\n let mtable_single = [];\n for (let i = 0; i < 12; i++) {\n mtable_single[i] = [];\n for (let m = 0; m < 8; m++) {\n mtable_single[i][m] = moves[m][0].indexOf(i);\n }\n }\n let mtable = Array(12 ** 4);\n for (let i = 0; i < 12 ** 4; i++) {\n mtable[i] = Array(8);\n for (let m = 0; m < 8; m++) {\n let I = 0;\n for (let j = 0; j < 4; j++) {\n I += mtable_single[Math.floor(i / 12 ** j) % 12][m] * 12 ** j;\n }\n mtable[i][m] = I;\n }\n }\n return (tables.phase1em = mtable);\n}\n\nfunction generate_phase1_edge_ptable() {\n if (tables.phase1ep) {\n return tables.phase1ep;\n }\n return (tables.phase1ep = bfs(generate_phase1_edge_mtable(), [\n 8 + 12 * (9 + 12 * (10 + 12 * 11)),\n ]));\n}\n\nfunction generate_phase1_separate_mtable() {\n if (tables.phase1sm) {\n return tables.phase1sm;\n }\n const C12_4 = C(12, 4);\n let mtable_c = [];\n for (let i = 0; i < C12_4; i++) {\n mtable_c[i] = [];\n let comb = index_to_comb(i, 4, 12);\n let perm = [];\n for (let j = 0, k = 0; j < 12; j++) {\n if (comb[j] === 0) {\n perm[j] = -1;\n } else {\n perm[j] = k++;\n }\n }\n for (let m = 0; m < 8; m++) {\n let new_perm = compose(perm, moves[m][0]);\n let new_comb = compose(comb, moves[m][0]);\n let parity = permutation_parity(new_perm.filter((x) => x >= 0));\n mtable_c[i][m] = comb_to_index(new_comb) * 2 + parity;\n }\n }\n let mtable_co = generate_phase1_corner_mtable();\n let mtable = [];\n for (let j = 0; j < C12_4; j++) {\n for (let i = 0; i < 81; i++) {\n let m0 = (mtable[i + 81 * (2 * j)] = []);\n let m1 = (mtable[i + 81 * (2 * j + 1)] = []);\n for (let m = 0; m < 8; m++) {\n m0[m] = mtable_co[i][m] + 81 * mtable_c[j][m];\n m1[m] = mtable_co[i][m] + 81 * (mtable_c[j][m] ^ 1);\n }\n }\n }\n return (tables.phase1sm = mtable);\n}\n\nfunction generate_phase1_separate_ptable() {\n if (tables.phase1sp) {\n return tables.phase1sp;\n }\n return (tables.phase1sp = bfs(generate_phase1_separate_mtable(), [0]));\n}\n\nfunction generate_phase2_corner_mtable() {\n if (tables.phase2cm) {\n return tables.phase2cm;\n }\n let phase1_mtable = generate_phase1_corner_mtable();\n let mtable = Array(81);\n for (let i = 0; i < 81; i++) {\n mtable[i] = phase1_mtable[i].slice(4, 8);\n }\n return (tables.phase2cm = mtable);\n}\n\nfunction generate_phase2_edge_mtable() {\n if (tables.phase2em) {\n return tables.phase2em;\n }\n const n = 8;\n const HALFFACT8 = factorial(n) / 2;\n let mtable = Array(HALFFACT8);\n let perm = [0, 1, 2, 3, 4, 5, 6, 7];\n for (let i = 0; i < HALFFACT8; i++) {\n //perm = index_to_evenpermutation(i, 8);\n mtable[i] = Array(4);\n for (let m = 0; m < 4; m++) {\n let new_perm = compose(perm, moves[m][0].slice(0, 8));\n mtable[i][m] = evenpermutation_to_index(new_perm);\n }\n\n if (i === HALFFACT8 - 1) {\n break;\n }\n // update perm to lex-next even permutation\n let parity = 0;\n do {\n for (let k = n - 2; k >= 0; k--) {\n if (perm[k] > perm[k + 1]) {\n continue;\n }\n let l = k + 1;\n for (let L = l; L < n; L++) {\n if (perm[L] > perm[k]) {\n l = L;\n }\n }\n [perm[k], perm[l]] = [perm[l], perm[k]];\n parity ^= 1;\n for (let j = 0; k + 1 + j < n - 1 - j; j++, parity ^= 1) {\n [perm[k + 1 + j], perm[n - 1 - j]] = [\n perm[n - 1 - j],\n perm[k + 1 + j],\n ];\n }\n break;\n }\n } while (parity !== 0);\n }\n return (tables.phase2em = mtable);\n}\n\nfunction generate_phase2_edge_ptable() {\n if (tables.phase2ep) {\n return tables.phase2ep;\n }\n return (tables.phase2ep = bfs(generate_phase2_edge_mtable(), [0]));\n}\n\nfunction bfs(mtable, goal_states) {\n let N = mtable.length;\n let nmoves = mtable[0].length;\n let ptable = Array(N).fill(-1);\n let queue = goal_states.slice();\n let new_queue = [];\n let depth = 0;\n while (queue.length > 0) {\n new_queue.length = 0;\n for (let state of queue) {\n if (ptable[state] !== -1) {\n continue;\n }\n ptable[state] = depth;\n for (let move_index = 0; move_index < nmoves; move_index++) {\n let new_state = mtable[state][move_index];\n while (new_state !== state) {\n new_queue.push(new_state);\n new_state = mtable[new_state][move_index];\n }\n }\n }\n [queue, new_queue] = [new_queue, queue];\n depth += 1;\n }\n return ptable;\n}\n\nfunction ida_solve(indices, mtables, ptables, max_bound) {\n max_bound = max_bound || 999999;\n let ncoords = indices.length;\n let bound = 0;\n for (let i = 0; i < ncoords; i++) {\n bound = Math.max(bound, ptables[i][indices[i]]);\n }\n while (bound <= max_bound) {\n let path = ida_search(indices, mtables, ptables, bound, -1);\n if (path !== undefined) {\n return path;\n }\n bound++;\n }\n}\n\nfunction ida_search(indices, mtables, ptables, bound, last) {\n let ncoords = indices.length;\n let nmoves = mtables[0][0].length;\n let heuristic = 0;\n for (let i = 0; i < ncoords; i++) {\n heuristic = Math.max(heuristic, ptables[i][indices[i]]);\n }\n if (heuristic > bound) {\n return;\n }\n if (bound === 0) {\n return [];\n }\n if (heuristic === 0 && bound === 1) {\n return;\n }\n for (let m = 0; m < nmoves; m++) {\n if (m === last) {\n continue;\n }\n if (m < last && tetrad[m] === tetrad[last]) {\n continue;\n }\n let new_indices = indices.slice();\n for (let c = 0; c < ncoords; c++) {\n new_indices[c] = mtables[c][indices[c]][m];\n }\n let r = 1;\n while (indices.some((_, i) => indices[i] !== new_indices[i])) {\n let subpath = ida_search(new_indices, mtables, ptables, bound - 1, m);\n if (subpath !== undefined) {\n return [[m, r]].concat(subpath);\n }\n for (let c = 0; c < ncoords; c++) {\n new_indices[c] = mtables[c][new_indices[c]][m];\n }\n r++;\n }\n }\n return;\n}\n\nfunction* ida_solve_gen(indices, mtables, ptables) {\n let ncoords = indices.length;\n let bound = 0;\n for (let i = 0; i < ncoords; i++) {\n bound = Math.max(bound, ptables[i][indices[i]]);\n }\n while (true) {\n yield* ida_search_gen(indices, mtables, ptables, bound, -1);\n bound++;\n }\n}\n\nfunction* ida_search_gen(indices, mtables, ptables, bound, last) {\n let ncoords = indices.length;\n let nmoves = mtables[0][0].length;\n let heuristic = 0;\n for (let i = 0; i < ncoords; i++) {\n heuristic = Math.max(heuristic, ptables[i][indices[i]]);\n }\n if (heuristic > bound) {\n return;\n }\n if (bound === 0) {\n yield [];\n return;\n }\n if (heuristic === 0 && bound === 1) {\n return;\n }\n for (let m = 0; m < nmoves; m++) {\n if (m === last) {\n continue;\n }\n if (m < last && tetrad[m] === tetrad[last]) {\n continue;\n }\n let new_indices = indices.slice();\n for (let c = 0; c < ncoords; c++) {\n new_indices[c] = mtables[c][indices[c]][m];\n }\n let r = 1;\n while (indices.some((_, i) => indices[i] !== new_indices[i])) {\n let subpath_gen = ida_search_gen(\n new_indices,\n mtables,\n ptables,\n bound - 1,\n m,\n );\n while (true) {\n let { value: subpath, done } = subpath_gen.next();\n if (done) {\n break;\n }\n yield [[m, r]].concat(subpath);\n }\n for (let c = 0; c < ncoords; c++) {\n new_indices[c] = mtables[c][new_indices[c]][m];\n }\n r++;\n }\n }\n}\n\nexport async function getRandomRediCubeScramble() {\n return new Alg(stringify_move_sequence(generate_random_state_scramble()));\n}\n", "import { puzzles } from \"../../../../../../puzzles/index.ts\";\nimport { parseSGS, type SGSCachedData } from \"../../../parseSGS.ts\";\n\nlet cachedData: Promise<SGSCachedData> | null = null;\nexport async function sgsDataFTO() {\n return (cachedData ??= uncachedSGSDataFTO());\n}\n\n// TODO: Reduce info.\nasync function uncachedSGSDataFTO(): Promise<SGSCachedData> {\n return parseSGS(\n await puzzles[\"fto\"].kpuzzle(),\n `SubgroupSizes 24 12 11 12 12 11 10 9 11 8 10 9 7 8 10 10 6 9 8 5 7 6 5 4 4 8 7 3 6 6 360\n\nAlg T\nAlg B\nAlg B T\nAlg B'\nAlg B' T\nAlg U\nAlg U T\nAlg U'\nAlg U' T\nAlg B BL\nAlg B BL T\nAlg B BL'\nAlg B BL' T\nAlg B' BR\nAlg B' BR T\nAlg B' BR'\nAlg B' BR' T\nAlg U R'\nAlg U R' T\nAlg U' L\nAlg U' L T\nAlg B BL' D\nAlg B BL' D T\n\nAlg R\nAlg R'\nAlg R D\nAlg R D'\nAlg R BR\nAlg R BR'\nAlg R' F\nAlg R' L\nAlg R' L'\nAlg B L B'\nAlg U L' U'\n\nAlg B U B'\nAlg B U' B'\nAlg B R B'\nAlg B R' B'\nAlg B' U' B\nAlg B' U B L\nAlg B' U B L'\nAlg B' U' B BL'\nAlg B U' B' BR\nAlg B' R' B F\n\nAlg BR\nAlg BR'\nAlg BR BL\nAlg BR BL'\nAlg BR' F\nAlg BR' F'\nAlg BR' D\nAlg B BR B'\nAlg U F U'\nAlg BR BL L\nAlg BR' D BR'\n\nAlg B' BL B\nAlg B' BL' B\nAlg BR D' BR'\nAlg B' BL B D'\nAlg B' BL B BL\nAlg B' BL B BL'\nAlg B' BL L B\nAlg B' BL' B F'\nAlg B' BL' B L'\nAlg B' BL' B BL'\nAlg B' BL' L BL' B\n\nAlg R' BR R\nAlg R' BR' R\nAlg BR BL' D BR\nAlg R' BR D R\nAlg R' BR D' R\nAlg R' BR R BL\nAlg B' D' BL D B\nAlg BR B D' B' BR'\nAlg BR BL' D BR L'\nAlg BR BL' D BL BR\n\nAlg U BR U'\nAlg U BR' U'\nAlg U' R U\nAlg U' R' U\nAlg U BR B' U'\nAlg U BR' U' D\nAlg U BR' U' D'\nAlg U' R F' U\nAlg U' R' U L'\n\nAlg U B U'\nAlg U B' U'\nAlg U B U' L\nAlg U B U' L'\nAlg U B' U' BL'\nAlg U B U' L F\nAlg U B U' L F'\nAlg U B' U' BL' D'\n\nAlg B BL' L BL B'\nAlg B BL' L' BL B'\nAlg U B' D B U'\nAlg U B' D' B U'\nAlg U R D R' U'\nAlg U R D' R' U'\nAlg R' F L F' R\nAlg R' F L' F' R\nAlg B L' B F' D B\nAlg U B' D' B U' D\n\nAlg F\nAlg F'\nAlg F D\nAlg F D'\nAlg F' L\nAlg F' L'\nAlg F D' BL\n\nAlg F BL F'\nAlg F BL' F'\nAlg BR' BL BR\nAlg BR' BL' BR\nAlg F BR F' BR'\nAlg F BL F' BL'\nAlg F BL' F' L\nAlg F BL' L' F'\nAlg F BR' BL BR F'\n\nAlg F' BL F\nAlg F' BL' F\nAlg U BL U'\nAlg U BL' U'\nAlg F U' F' U\nAlg F' BL F D'\nAlg F' BL F BL'\nAlg F' BL D F\n\nAlg L\nAlg L'\nAlg L BL\nAlg L BL'\nAlg F' D F\nAlg L BL D\n\nAlg L' BL L\nAlg L' BL' L\nAlg L' BL D L\nAlg L' BL D' L\nAlg L' BL L BL'\nAlg L' BL D' L BL\nAlg L' BL D' L BL'\n\nAlg L D L'\nAlg L D' L'\nAlg R' D R\nAlg R' D' R\nAlg L D L' D'\nAlg L R L' R'\nAlg L' B' L B\nAlg R' D R BL\nAlg L BL' L' BL L'\n\nAlg U L' D L U'\nAlg U B D B' U'\nAlg U L' D' L U'\nAlg U B D' B' U'\nAlg R' D' BL' D R\nAlg U B D' B' U' D\nAlg U B' L B L' U'\nAlg U B D B' U' BL'\nAlg U B D' B' L' D' L U'\n\nAlg F L F'\nAlg F L' F'\nAlg F L F' D\nAlg F L F' D'\nAlg F L' F' BL'\n\nAlg L BL' D BL L'\nAlg L BL' D' BL L'\nAlg F D L D' L' F'\nAlg F L D L' D' F'\nAlg F L' B' L B F'\nAlg F' D' R' D R F\nAlg F D L D' L' F' BL'\nAlg F' R' B' R' B R' F\n\nAlg B D B'\nAlg B D' B'\nAlg L' D L\nAlg L' D' L\nAlg B D B' D'\nAlg B' L B L'\nAlg B D B' D' BL\n\nAlg D\nAlg D'\nAlg D BL\nAlg D BL'\n\nAlg D BL' D BL D'\nAlg D BL' D' BL D'\nAlg B D R D' R' B'\nAlg B R D R' D' B'\nAlg D BL' D BL D' BL\nAlg D BL' D BL D' BL'\n\nAlg D BL D BL' D'\nAlg D BL D' BL' D'\nAlg B' BL' B BR D' BR'\nAlg D BL D BL' D' BL\nAlg D BL D BL' D' BL'\n\nAlg D' BL D\nAlg D' BL' D\nAlg D' BL D BL\nAlg D' BL D BL'\n\nAlg B D' B' BL B D B'\nAlg B D' B' BL' B D B'\nAlg D' BL' D BL D' BL D\n\nAlg B R' B' BL B R B'\nAlg B R' B' BL' B R B'\nAlg L R L' BL' L R' L'\n\nAlg F BL' B' BL F' BL' B\nAlg F' R' F BL F' R F\nAlg F' R' F BL' F' R F\nAlg BR R BR' BL' BR R' BR'\nAlg F L' BL U BL' U' L F'\nAlg F' U' F D F' U F D'\nAlg F BL F' D F BL' F' BL D'\n\nAlg F D F U' F' U D' F'\nAlg F D F' BL F BL' D' F'\nAlg F U D BL' U' BL D' F'\nAlg F U' D F U F' D' F'\nAlg F' BR L F BR' F' L' F\nAlg U R BL' F BL F' R' U'\n\nAlg BL\nAlg BL'\n\nAlg F U BL U' BL' F'\nAlg F BL U BL' U' F'\nAlg U BL BR BL' BR' U'\nAlg BR F BL F' BL' BR'\nAlg F U' F' U BL' U BL U'\n\nAlg F U' F' D F U F' D'\nAlg B' U' F U B U' F' U\nAlg D F U' F' D' F U F'\nAlg BR' U BR D' BR' U' BR D\nAlg D' BR BL' F BL' F' BL BR' BL D\n\nAlg D BL D F' U' B L' BL' L R' BR' R L' BL L B' U F D\nAlg B D BR F' R' BR' R B' F D' BL D B BR' D' B'\nAlg L B' BR' L F BR L' B BR' L U F U' BR' F L BL BR'\nAlg L BL' D' BR' B R' U' R BR B' D BL' L'\nAlg B BR B' D' B D B F' R' B' R BR' B' BR F BR' BL\nAlg L' BL D L' D' L' D L' U' R' F' R U D'\nAlg U' L BL L U' D R' BL B' BL F' BL' B R BL' U D' L U\nAlg L BL BR' L U' D R' F' R BL' U BL D' BR L\nAlg D L' R F' R' L BL' BR BL' B' BL B BR' F BL' F' D'\nAlg B BL B BR' L R' U' R BR L' B\nAlg L B' R' BR B F BL D' BL' D BL' B' F' BR' R U B L'\nAlg D' L' BL F' D' BL' D B F' R' BR R B' F' BL' L D\nAlg B D' R D' R' BL BR' B BR' B' BL' D' BR B R' B' R B' BL' D'\nAlg U' L R' F U L' BL' L B BL' B' BL L U' L' F' R L' U\nAlg F' D BL' BR' BL' BR B' U' F L F' U B D F L U BL' U' L'\nAlg L' U BR' U D R' BL F R BL' U D' BR' L' BL' BR' L'\nAlg U' L' U' D R' BL B' BL F BL' B R BL' U D' L' BL' L' U\nAlg D F BL L' BL' B L' B' L' B L' B' L' BL L BL' F' D'\nAlg F' BR' B BL' BR BL B' F L' F' L B BR' B' BR L' F L BL'\nAlg F' L F' L U' D R' F R U D' L' BL' F L' F\nAlg F U' F' BR F' R' BR' U F' L' BL F' D' BL'\nAlg B BR' U R BR' R' BR U' B' BR\nAlg F' BR' B BR' R BR' BL' BR R' BR BL B' BR F\nAlg L' U BL B' U' BL U BL' B BR BL' BR' U' L\nAlg BR BL' BR' BL L' BL BR BL' BR' L\nAlg U BR' U' BR L' BL BR BL' BR' L\nAlg U' L F BL' F' BL F' BR F BR' L' U\nAlg F L F' BL D F' D' F BL' L'\nAlg U BR' U BR L BL BR BL' BR' L' U\nAlg F BR R BL' F' BL' F R' BL BR' BL F'\nAlg D BL D B U BR' D BR' L' U' BR' U BR L D' BR U' B' D\nAlg U BL' U' BL U BL D L' D BR D' L D BR U BR U D\nAlg B' U F U' B' U F' BR' U' B L B' U BR U' B L' B BL\nAlg B U' B BL U' BL L U' D R' F' R U' D' L' BL' U B\nAlg B L R F D' BR' D F' R' BL' U' L U L' U BL L' B'\nAlg D BL D F' BR' F BL' D R' BR' R F D' BL F' BR D\nAlg L' D F' R' U BR L BL B' BL B BL' BR' L' U' R D' L\nAlg F BL' U D L' U' BR R F' R' BR' U L D BL U' D BL F'\nAlg BR' BL' U' L' BL D F' L' F' L F L U L' D' BR L BL\nAlg B' L' BL U D R' F' R U D' L' BL L U BL' L B\nAlg B BL' L U B' L BL' L B' U' B' L' D L' U' B L' B' D'\nAlg B' R' L U L' R BR BL' B BR' B' BL B' BL' B'\nAlg F L R BL B' U' B R' BL' L' BL F' BL BR' BL L BL' BR L'\nAlg B' U' BL L U D R' F R U D' L' BL' U BL' B' U B'\nAlg U BR BL' BR' D' B D' F' D B' D' F BL' U' BL' F' BL' F D'\nAlg D' BL' D L BL L' D' BL D F' D F D' BL' D' BL D\nAlg B' BL' B' BL L' B' BL' F' D F L F' D' F BL' L BL' B L B\nAlg F BL' U D' BL' D' L' U' BR R F R' BR' U L U' D' BL F'\nAlg U' D' B D F' D' BR' D' BR D BR B' BL' D F BL U BL'\nAlg B BL BR D' BR L' R F R' BR' L D BL' BR' BL' B'\nAlg L' F L' U BR' U' BR L F' BR' L U BR U'\nAlg F' BL' D' BR' BL B' U' BL U B BL' BR D F\nAlg F' D' BR' U R' U BL U' R U' BL' BR D F\nAlg F U' BR F' U' BL' B U F BR' R F' U BL L\nAlg B' BL' U' BL U B BL' B BL BR BL' BR' B' BL\nAlg D' F' U BL U' L F U' F' U L' BL' F D\nAlg F' BL' D' BR' BL BR' F' BR U' B' BR' U R' BR' F'\nAlg B' U' B BL' B U' B BL' L U' L BL' L B\nAlg F' D' F U' F U F' BL F' BL' D F\nAlg F' D BR F' R F R' BR' F D'\nAlg D BL D B BR' D L' BL' L' BL' BR' BL L BL L D' BR B' D\nAlg B L BL L' BL' L' D F' R' BR R D' F L' BL' L' B'\nAlg B BL' F' BL BR D' BR' F D' B' D L F' BL' F L D L D' BL\nAlg B D' BR' D' BR' F D' BL' D' BL D BL F' D BR D' B'\nAlg B D' B U B' D B F' BR' F L' F BR F' L U' B BL\nAlg L BL' B' U BL L' BL L U L' BL' L BL' U' B BL' L'\nAlg U D F' D BR BL' BR' BL B D' F D B' D BR BL BR' U'\nAlg F' D BR L' U' R F' R' U BR' L D BR' BL BR D F\nAlg BR' L BL L' BL' BR BL' F BL' L R BL B' U B R' BL' L' F'\nAlg D BL BR D B F' R' U' BR' U R B' F D' BR' D'\nAlg D' B BR' D L' BL' L' BL' BR BL L BL L D' BR B' D' BL' D'\nAlg B U' R B' BL' B R' U' B BL' B' U' BL B' U' L U L'\nAlg B D' B' D' BR' BL BR D' B' L B BR' U B U' BL' BR BL L' BL'\nAlg B D BR' D' F BL' D' BL' D BL D F' BR D BR D B'\nAlg D' B D F' D' BR' D' BR D BR BL BR' BL' BR B' BL' D F\nAlg L BL B' U BL L' BL L U' L' BL' L BL' U' B BL L'\nAlg B' U B' D' B U' B' D BL' U BL' U' BL' B' U BL' U'\nAlg D' BR' B' L' U L' B' U B L U' L B BR D BL\nAlg L' D L' F U' F' L D' L' F U BR F' L F BR' F' L BL'\nAlg D BR D B F' R' U' BR U R B' F D' BR' BL' D'\nAlg BR BL D F BR' BL BR BL' BR F' BR' D' BL' BR'\nAlg BR' U' L' BL F' BL' F L BL' U BL BR\nAlg D' BR' B' U BR U' BL U' BL' U BR' B BR D\nAlg F U BR' U R U' BR B U' F' BL U' L' U BL' B'\nAlg B U' L F BR F' L F' BR' F L U B'\nAlg BR BL F BL' L F' BR' BL' F BL L' BL' F' BL\nAlg U' BR' L BL' BR L U' BR' U L' BL L' U' BR U'\nAlg L' F L' U BR' U' BR L F' L BL' BR BL BR'\nAlg F' D' BR' BL U R' U BL' U' R U' BR D F\nAlg F' BR' B F' U F BR U' BR' B' F BL BR BL'\nAlg L B' U' R' BR B F BL D' BL D BL' B' F' BR' R B L'\nAlg B F BL B L F BR' R' BL U' R BL' BR' F' L' F' BR' B\nAlg U BR F' D F BR' U' L' BL L' BL' L U L B' BL L' B U'\nAlg F' L B F BL B R U' R' B' BL' B' F' L BL L F\nAlg D BL D B BR' D BR' D' BR D BR BL BR' BL' D' B' D\nAlg D' BR' BL B BR B' BL' D BL D' B' BL B BR' BL' BR D\nAlg D F' U BR U' L U' BR' U L' D B D' F D B' D BL\nAlg L B BL' B L F R U' R' F' L' B' BL B' L' BL'\nAlg B D' B U B' D F' BR F L' F BR' F' L B U' B BL\nAlg B' BL L B' L' B' L B' BR' R' U' R BR L'\nAlg D' F' U' B L' BL' L R' BR R L' BL L B' U F D' BL' D'\nAlg B' F' BL' B' F U D' R BR R' BL U' BL' D B'\nAlg F' BL' D BL F BL' D' B' U' B D F' D' B' F U B\nAlg F' L' BL' L' B F BL B R U R' B' BL' B' F' L' F\nAlg L' BL U' D F D' BL' D BL F' BL' D' BL D F' U D' BL L\nAlg B' BR L R' U R BR F L' B' BL' B L F' BR L' B\nAlg B' L B' BR' B L' B' D F' U F D' F U' F' BR B' BL'\nAlg B' BR D' BL' BR' BL B L' R' L' R BR L D L BL BR' B BL\nAlg L' D F' L F L' F D' L' BL' L' D BL' BR' BL' BR BL' D'\nAlg B' F BR F BR L R' BL U R BL' BR L' B' BL' B' F\nAlg F L' F' BR' B BR' F' BR B' BR' F' L F' BR'\nAlg BR' B' BR BL' D' BR D BR' BL B\nAlg L' F L' U BR' U' L U' BR U F' L\nAlg F U' BR' R U' BR BL BR' U' BL' U' R' F' BR U\nAlg B' BR' R' U' BL D' BL U BL' D R BL' BR B\nAlg D BR' U' L BL' F' BL F L' BL U BL' BR D'\nAlg F' BL' D' F BR' BL BR BL' BR F' BR' D BL F\nAlg F' BR' BL' BR D' F' BR F BR' D BL F\nAlg F' BR R' BR BL' BR' R BR' BL F\nAlg B BR F' BR' B' F BL F BL' F'\nAlg B D' B U B' D BL' F R' F BL F' R B F' U' B BL\nAlg L BL' B' U L U L BL L B' BL B' U' BL' U' B' L' BL\nAlg L' BL' U' D F D' BL' D BL F BL' D' BL D F' U D' BL' L\nAlg F' L F' BL' D' BR' B R' U' R BR B' D BL' F L' F\nAlg U D' BR' D BR' U' L U BR L' D' BR D L U' L' BL\nAlg B' BR' B' BL B L F' BR' R' U' R BR F BR L' B\nAlg U' F' D BR' F' BR D L D L' U D' B D' B' F D' BL F\nAlg B F BL B F' L F BR' R' BL U' R BL' BR' F' BR' L' B\nAlg F' D' BL B BR' BL BR BL' BR' D' BR' D BR D F D' B' D\nAlg B' BR' B' BL B L F BR' R' U' R BR F' BR L' B\nAlg L' F BR L' R' BR BL' BR' R BR' BL B' L F' L' B L' BL'\nAlg B' U' BL' U D' BL' D F L' R U R' F' L U' BL U B\nAlg D' B D BL BR BL' BR' D' BR' D BR D' BR B' D' BL' D'\nAlg B' BR' L F' BR' R' U R BR F L' B' BL' B BR B\nAlg L U L' D' BR' D L U' L' U D' BR D BR BL BR' BL' U' BL'\nAlg F' L F' BL D' B BR' R' U R B' BR D BL F L' F\nAlg B' L B' BR' B L' F' R F' BL F R' F BL' B' BR B' BL'\nAlg F' L BL' BR' R' BL U R BR B L' B L B L' F BL' B\nAlg L' F D' BR U' BR' D BR' U BR L' B' L F' L' B L' BL'\nAlg B' BR' L F BR' R' U R BR F' L' B' BL' B BR B\nAlg L F' D' F BR' BL BR BL' BR F' BR' D F L'\nAlg F' BL' D F BL' F' BL D' BR' BL BR F\nAlg B' BR' R' BL D' BL U' BL' D BL' U R BR B\nAlg B' L BL' BR BL L' B' F BL F' BL' B BR' B\nAlg F U' BR' R BR F' U BL L U BL' B U'\nAlg B' BR B' BL F BL' B F' L BL' BR' BL L' B\nAlg U' L BL' U' R U' BL' U R' U BL' L' U\nAlg F U' BR' R' F' BR' F BL BR R BL' F' BR U\nAlg B U' L' F' BR F L' F BR' F' L' U B'\nAlg F' BR' B' F BR' BL' BR F BL B F' BL BR BL'\nAlg B BL' U' L U BL' B' BL' B' L' BL U B' U' BL L BL L\nAlg B R' U' B U R B' BR F D' B' D BL F' BL' BR' BL\nAlg U BL U' B BL U BL U' BL D' B U B' D B U' B\nAlg B BL B BL' B BR B' BL BR' R' L U' L' R B\nAlg U' L BL' B BL B' L' F U B' R U R' U F' U B BL\nAlg F' BL' D' BR' L' B' L B BL BR BL' B' L' B L D BL F BL\nAlg L B' L' F U B' R BR B BR' R' BR BL' BR' BL B U' F' BL\nAlg D' F BL B BR' B BR B' BL' D BL D' B' F' D\nAlg B' L' BL F U F' L' U B U' L F U' F' BL' L BL' B BL B\nAlg D BL D B U F' R' BR' R F U' B' D\nAlg B BR B' D' BL BR D BR D B' BL' B D BR' BL' D' BL' D'\nAlg B' R BR B' BR' R' B U' F' L B L' BL' F BL U BL'\nAlg U BR BL' BR' D' B D' F' D B' BL' BR BL BR' D' F U' D'\nAlg U' D' BR' U' BR' D' L' D BR' D' L D' BL' U' BL' U BL U'\nAlg L' F' BR F' R F' R' L F' BR' D L BL' L' BL D' F BL'\nAlg B D BL' D B U R BR R' U' B' D' BL D' B' BL\nAlg B' U L' U B BL L' F' BL F D' B' U B D B' L B L'\nAlg L BL' B' U L F R U' R' F' U L F' L B L' F\nAlg L' D R' U BR L BL B' BL' B BL' BR' L' U' R F D' L\nAlg D' B U F' R' BR R F U' B' D' BL' D'\nAlg B D BL' B' U' BL L' D L D' BL' U B BL B' D'\nAlg B U' BL' U' F U' B U B' F' U BL U' B U' B\nAlg U BR' U L BL' L U' BR U BR' L' BL BR L' U\nAlg F' D' BR' BL B' U' BL' U B BL' BR D BL F\nAlg B' L' B' F BL' F' BL F' BR F BR' B L B\nAlg F' BL' D' BR F' BR' F D BR' BL BR F\nAlg F D' F' U' F' D' BR D F' D' BR' D' F' U\nAlg BR' BL' U' BL L U' F U F' L' U BR\nAlg F BR R U' BR B U BR' F BR BL' BR D BL F\nAlg F' BR' F U' BL L' U BL' B' F' BL' BR D' BL F\nAlg B' U L' B' U L' D F L F' D' L U' B L U' L B L'\nAlg B BL B L F BR' R' U' R BR F' L' B\nAlg B D' B BR' R' U' B' U R BR U' D' F L' F' U L' D' L\nAlg L U' L' U B BL' U B BL B' U R B' BL B R' U B'\nAlg D F' D BL U' R U' BL' U R' U B D' F D B' D BL\nAlg B BL U B BR' L R' F' U' F R BR L' B' U' B'\nAlg B' U' B F' D F D' B' U B D BL F' BL' D' BL F\nAlg B D BR B F' U' R' BR' R U B' F BR' D' BL B'\nAlg L B' F R BL' U' R' BL B F' L U BR' U' BL L U BR U'\nAlg F' L F' BL L U' D R' F' R U D' L' F L' F\nAlg L U L' F' BL' F L B BL' U BL' U' BL B' BL L U' L\nAlg B' L F BR' R' U R BR F' L' B' BL' B'\nAlg U BR' U' L' U' BR' F' BR F BR D R' F R U D' L' BL' L'\nAlg B L BL L F' D R' BR' R F D' L BL L BL' L' B'\nAlg F' BL' D F' D' B D' B' U' D L D BR' L' F BR D' F U\nAlg B U B BR' L R' F' U F R BR L' B' U' BL' B'\nAlg U B' L BL' B L' U' L' BL L BL' L U BR F' D' F BR' U'\nAlg B BL' D BR B F' U' R' BR R U B' F BR' D' B'\nAlg B BR B F BR' U BL' L R BR' R' L' F' U BR U BL B BL'\nAlg B' BR' L R' U R BR L' B' BL' B'\nAlg B' U BR' R L F' BR' F L' R' BR U' B' BR B'\nAlg F' BL' F' BR R U' BR B F BR BL' D F U BL'\nAlg F' BR' B' U BR' F BR' F' BR U' BR B BR F\nAlg BR' BL' U' BL L' F' BL F BL' L U BR\nAlg U' L BL U' R U' BL U R' U BL L' U\nAlg F BR' F' U' L F BR U F' U' L' BL U BL'\nAlg L' F U' BR' U L' U BR U' L F' L\nAlg F' BR' B' U' BR' U F BR B U' BL U BR BL'\nAlg F' BR' U BR D' BR U' BR' D F\nAlg F BL' BR R BL' F' BL F R' BL BR' F'\nAlg L BL' B BL' U BL U' BL B' L' F' BL F L U' L U L\nAlg B F BL B F' L F' BR' R' BL U' R BL' BR' F BR' L' B\nAlg F BL B' F' BR B' BR' B L F BL B' BR B BL' BR' F' L' B\nAlg B F D' BL U R BL' BR' R' U' D B F' BL B\nAlg L B' U B' BR B BR U' BR' B L' F BL' B F' BR' B' BL'\nAlg U' L R' F L U L' BL' B BL B' L' BL L U' F' R L' U\nAlg BR BL F BL' F' L' F' BR' L B BR B' L' F L B BR' B' BL\nAlg B' BR' L F L' B' BL B L F' BR' R' U' R BR' L' B\nAlg D L U' BR U L U' R BL' F' R' F BL F' BR' U L D BL D\nAlg B F BL B F BR' L R' BL U' R BL' BR' L' F BR' B\nAlg L B' L' U L' B' U L' D F L' F' D' L U' B L U' B\nAlg B' BR L F' BR R' BL U R BL' BR F L' B' F BL' B' F'\nAlg B' BL L B L' B' BL' L' U BL' U R' L' R U' BL U' L B\nAlg B U' D' F D B BL' B' U D' R BR R' U' F' U D B'\nAlg D F L F' L' F R L' BL B L B' BL' L R' F' L D'\nAlg L BL D' B BR' R' U R B' BR D BL L'\nAlg D F D' B' U' B U' D F' D' F U B' U B F' BL'\nAlg D' BR' BL BR B' BL' B D BL' D' BL B BR' B' BL' BR D\nAlg U BR' U' L U R' L R BR L' B' L' B L U' L' BL'\nAlg BR' L R' U R BR B L' B L B L' BL' B\nAlg B BR' B U BR' R L F' BR F L' R' BR U' B\nAlg F' L B' BR' B L BL' L' B' BR B L BL L F\nAlg D F U' F' U D' BR U' D' F U F' D BR'\nAlg B' BL' BR D' BR' D BL BR' B BR\nAlg B BL U' BR' L U BR' F' BL D BL BR F BR\nAlg L' U BR BL BR' B' BL U' BL' U B BL' U' L\nAlg U B' BL U' L' BL' U' F BR' R' BR U F'\nAlg D BR' BL U' BL' L F' BL' F BL L' U BR D'\nAlg BR L' BL BR' BL' L BL' BR BL BR'\nAlg F BL F' BL' B F' BR F BR' B'\nAlg D BR L' U' R F' R' U BR L BL B' BL B BL' BR D'\nAlg D' BL' D BL D F' D' F D' BL' D L BL' L' D' BL D\nAlg B F D' F' U' BL' B U B' BL F D B U' B' U B' F' BL\nAlg B U F' D' R BR' R' U' D B BL B' U F U' B'\nAlg B BL B L B BR' F BR B' BR' R' U' R F' BR L' B\nAlg B BL B L F' U' F' U F BR' R' U' R BR' F BR' L' B\nAlg B' U' B F' D F D' B' U B U' D BL' F' BL D' F U BL\nAlg L F' BR B' F' R BL' U' R' BL B F' BR L BL BR L\nAlg D F' D' BL F' D' F R BL B' L U L' B R' F' BL' D F\nAlg B BL BR BL D' BR L' R F' R' BR' L D BR' BL' B'\nAlg B' L B' BR' B L' BL' U BL U' B' BR B' U BL' U'\nAlg D' B BR' F BL' F' D BR D' BL F' BR B' F D' BL' D'\nAlg B D F' L' R F D BR' D' F' R BR' L D B' BL' D' F D'\nAlg D L BL' F' R U R' B F' L BL' L' B' F' BL L' D'\nAlg B' BR' L F R' U R BR B BR' F' BR B' L' B' BL' B'\nAlg D L F BL F L BL' L D' BL' D' F' D' F' L BL D' BL'\nAlg D F BL F' BR B' BL' B BL BR' BL L' R F R' L D'\nAlg L BL' B' L B L B' L F R U R' B F'\nAlg F' D' BL F R B' L U' L' B R' BL' F' D F BL' D F D'\nAlg B' L' BL U' D' L' BL' L U' D R' F R U' BL' L B\nAlg L' F L' BL U' BL' U L F' L U' BL U BL'\nAlg D' F' BL L U' F U F' L' U BL' U' F D\nAlg B' U F D F' U F D' F U B U' F U\nAlg U B' BR' U R' U' R BR U' B\nAlg F' BL' D F BL F' BR F' BR' F BL' D' BL F\nAlg F' BR' BL' BR D BL' F BL F' D' BL F\nAlg U' F R F' BL' F R' F BL F U\nAlg F' BR F BR' L BL' BR' BL BR L'\nAlg F U' B F U' BR U BR' U F' U' B' U F'\nAlg D F' BR R F' R' F BR' D' F\nAlg B D' B U B' D B U' B BR BL BR' D BL BR BL BR' BL D'\nAlg B' U' L' D' F D' L' F' L D F' D L U B BL'\nAlg D L' F R L' BL B L' B' BL' L R' F' L F L' F' D'\nAlg D L' D' BL D F' D F D' BL' L BL D'\nAlg D' B R U' B' F' BL' L BL L' BL B F U R' BR' B' D\nAlg D L BL' F L BL L' B' F R U' R' B F BL L' D'\nAlg D F' BL F BL U BL F' D B D' F D B' D BR BL BR' U'\nAlg B F' BL B F' BR' F' L F R' U' R BL' BR BL F' L' B\nAlg L F BR B' D BL D' R U' R' D BL' D' B BR' F' L BL L\nAlg B F BL B F' BR' L R' U' R BL' BR BL L' B\nAlg D' B U BR' D BR' L' U' BR U BR L D' BR U' B' D' BL' D'\nAlg F' D' BR' BL' BR D' BR L' U' R F R' U BR' L D' F\nAlg D F U D' BL U' B D' F BR F' D' F' D BR' D B' BL\nAlg B U' D' F D BL' D' BR D' BR' D BL B' BL' B F' U D B'\nAlg L' BL' L' F BR B' D BL D' R U R' D BL' D' B BR' F' L'\nAlg B U F' U' B BL' B' U D' R BR R' D F U' B'\nAlg B L BL' U' L U' L' U R BL F D' BR D F' R' L' B'\nAlg B' L B' BR' B L' F' BL F BL' B' BR B' F U' F' U BL'\nAlg D' B BR R U' B' F' BL' L BL' L' BL B F U R' B' D\nAlg B BL' U' B BL' B D B D' B D B D' BL B' U BL B'\nAlg U BR' U' BR L' F BR' L' U BR U' L F' L\nAlg L' U BR BL BR' B U BR' U' BR B' BL' U' L\nAlg BR BL D BR' BL' L BL' BR BL L' BL D' BL' BR'\nAlg F' BL' D' BR' D BL BR' B U BR U' B' BR F\nAlg F U' F' D F' U' B' U F' U' B U' F' D'\nAlg B' U BR' R' U R U' BR B U'\nAlg L U BL U' BL' L' BL L' F' BL' F BL L BL'\nAlg U B' BL' BR' U F' BR' D' F BR' U BL' L' BL'\nAlg F BL' L' F' BL D' F' BR U' R' F' U F' BR'\nAlg U B U' BL L U' L' U BL' B'\nAlg U BL U' B BR' B U BL' U' BL L B' BR B L' B\nAlg B BL B L F' U' F U F BR' R' U' R BR' F' BR' L' B\nAlg B BR D L' D' F' D F D' F' D' F D' BR' L D' B D B\nAlg F' L B' L' F L' U' F R U R' F' L' U' B BL L'\nAlg B' L' F U F L' F R U' R' U L F R U R' U B F' BL\nAlg B U F' D' F' U R BR' R' U' F D B BL B' F U' B'\nAlg F BL U BL' U' F' BL L U' L D BR L' U L U' BR' U D' L\nAlg B U' D' B' F BL B BL' D' BR D BR' D BL D' F' U D B'\nAlg B BL' D' B' D B BL D BR' BL BR' R D R' BR BL' BR D' B'\nAlg B F U' F' D' F' U' R BL' BR' R' BL U' F D B BL B\nAlg D BR' BL B' BL' B BL' BR' L' U' R F R' U BR' L D'\nAlg B' F' U' F' BL' D' B BR' R' U R B' BR D F U B F\nAlg B' D' B' D BR L' D F' D F D F' D' F D L D' BR' B'\nAlg D' B F D BL' D' BL B BR' B' BR B' BL' F' D\nAlg B D B' F BL L' BL' F' L BL L' BL' BR L R L' R' BR' L' D'\nAlg B U B F' BL' B' D' F' U R BR R' U' F D F U' B'\nAlg BR BL' L' F' BR U F' U' BR L' B' BR' L F' BR L' B L'\nAlg D BL' L' BL D F' D' F D' BL' D L D'\nAlg F' BL' B F U' B U B' D' F' BL' B U' B' BL U F D B'\nAlg B' F' L BL' BR' R' BL U R BR L' B' F BL' B'\nAlg BR BL' BR' BL L' F L' BL' BR BL BR' L F' L\nAlg B BL BR' F U' L F U BR' F BL D BR' BL\nAlg B' BL' B' U BR' U' BR BL' BR BL BR' B BL B\nAlg BR' U' L F U' F' U L' BL' U BL BR\nAlg B U BR R' BR U' B' BR U' B' U BR' R' BR\nAlg B BR BL L BL BR' BL' L U' BL' U BL L BL' B'\nAlg F' BR' B BL' BR' R BR' BL BR R' BR B' BR F\nAlg F' BR' B U BR' U' B' BR BL' D' BR D BL F\nAlg D' F' BR U' R' F' U F' BR' F BL' L' F' BL\nAlg B BL U' L U L' BL' U B' U'\nAlg L' F' R B F' BR L' D' F' D BR' L B' F R' F BL L\nAlg D F BL L' BL' B L B' L B L B' L BL L BL' F' D'\nAlg B BL B BR' L R' U' R BR L' B U BR' U' BR BL' BR BL BR'\nAlg B' F R U' R' F' L' B L' B' L' B BL L'\nAlg B' L' F D R' F' L' U L F R' U D' L' B BL L F' L\nAlg D' L' BL F R' BR' R B' F D' BL D B F BL' L D\nAlg B' BR' R' U' BL' U' L R' F R F' L' R U' BL BR B BL\nAlg BR L BL BR L U' D R' BL F' R BL' U' D' BR U' L\nAlg BR L B' L F R F U F' U' R' L' B L F' BR' L BL\nAlg B F U D' R BL' BR' R' BL U' D B F' BL B\nAlg L' BL L' D B D' BL' B' D' L R' D R BL' U' L U BL'\nAlg L' D BL' U' R' BL F R U D' BR L' BL' BR' L'\nAlg U BR' U' L' BL' U BR U' L' B' F R BL' U R' BL B F' L'\nAlg BR L' BL' L' B' F R BL' U R' BL B F BR F BR L'\nAlg B' F' L F BR BL B' BR' B BL' F' L' B' BR B BR' B F BL'\nAlg B D BR B' D' BL' D B F' R' BR R F BR' D' B'\nAlg D BL' L' BL' L BL L' BL F' BL' L' F L BL F BL' L D'\nAlg U' D R' F R U L D' L D L D' BL' L\nAlg U D' BR D' L' D R F BR F' BR' R' BR' D' L U' D' BL'\nAlg B' F' BR' L R' BL U R BL' BR L' B' F BL' B'\nAlg L' F BL' F' BL F' BR F BR' L\nAlg L BL F' D F D' BL' F L' F'\nAlg F' D' BR U BR' D BR' U' BR F\nAlg BR' L BL' BR BL BR L' F' BR' F\nAlg B BR F BR' B' BR F' R' BR' BL' BR R BR' BL\nAlg BR' B U BR' R BR R' U' BR B'\nAlg F' BL' BR R' BR BL BR' R BR' F\nAlg BR L' BL BR' BL' BR' L U BR U'\nAlg U BR' U' BR BL' BR BL BR'\n`,\n );\n}\n"],
|
|
5
|
+
"mappings": "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AA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA4mBF;AACF;",
|
|
6
|
+
"names": ["C", "i"]
|
|
7
|
+
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import "./chunk-NAPITA3L.js";
|
|
2
|
-
import "./chunk-
|
|
2
|
+
import "./chunk-MFKLAFPQ.js";
|
|
3
3
|
import {
|
|
4
4
|
random333Scramble
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-2BVL5OQE.js";
|
|
6
6
|
import "./chunk-7GUL3OBQ.js";
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-2IA2R7XV.js";
|
|
8
|
+
import "./chunk-5FXQPBXH.js";
|
|
9
|
+
import "./chunk-BQPY6252.js";
|
|
10
10
|
import {
|
|
11
11
|
Alg
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-UP5VP7GL.js";
|
|
13
13
|
|
|
14
14
|
// src/cubing/vendor/mit/cs0x7f/cstimer/src/js/lib/mathlib.ts
|
|
15
15
|
var Cnk = [];
|
|
@@ -2920,4 +2920,4 @@ export {
|
|
|
2920
2920
|
initialize,
|
|
2921
2921
|
random444Scramble
|
|
2922
2922
|
};
|
|
2923
|
-
//# sourceMappingURL=search-dynamic-solve-4x4x4-
|
|
2923
|
+
//# sourceMappingURL=search-dynamic-solve-4x4x4-FRAX3IPQ.js.map
|