cubing 0.22.1 → 0.23.0

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.
Files changed (141) hide show
  1. package/README.md +1 -1
  2. package/alg/package.json +1 -3
  3. package/bluetooth/package.json +1 -3
  4. package/dist/bundle-global/cubing.bundle-global.js +2979 -242
  5. package/dist/esm/2x2x2.sgs.json-FRBWMMA7.js +122 -0
  6. package/dist/esm/2x2x2.sgs.json-FRBWMMA7.js.map +7 -0
  7. package/dist/esm/{3d-M7GBIT3X.js → 3d-Q4WSD4BC.js} +3 -3
  8. package/dist/esm/{3d-M7GBIT3X.js.map → 3d-Q4WSD4BC.js.map} +0 -0
  9. package/dist/esm/bluetooth/index.d.ts +1 -1
  10. package/dist/esm/bluetooth/index.js +1 -1
  11. package/dist/esm/chunk-37EHU3GZ.js +66 -0
  12. package/dist/esm/chunk-37EHU3GZ.js.map +7 -0
  13. package/dist/esm/chunk-BJIOROQC.js +18 -0
  14. package/dist/esm/chunk-BJIOROQC.js.map +7 -0
  15. package/dist/esm/{chunk-R3HRHYIW.js → chunk-DK6PXBB2.js} +1 -1
  16. package/dist/esm/{chunk-R3HRHYIW.js.map → chunk-DK6PXBB2.js.map} +0 -0
  17. package/dist/esm/chunk-DPMEZY7V.js +1552 -0
  18. package/dist/esm/chunk-DPMEZY7V.js.map +7 -0
  19. package/dist/esm/chunk-FK2SCC3Z.js +499 -0
  20. package/dist/esm/chunk-FK2SCC3Z.js.map +7 -0
  21. package/dist/esm/chunk-JZWB7AIU.js +115 -0
  22. package/dist/esm/chunk-JZWB7AIU.js.map +7 -0
  23. package/dist/esm/chunk-MLOCDLUF.js +226 -0
  24. package/dist/esm/chunk-MLOCDLUF.js.map +7 -0
  25. package/dist/esm/{chunk-GF76PWEV.js → chunk-N3RNWU5T.js} +2 -2
  26. package/dist/esm/{chunk-GF76PWEV.js.map → chunk-N3RNWU5T.js.map} +0 -0
  27. package/dist/esm/chunk-PUPUQWJC.js +4065 -0
  28. package/dist/esm/chunk-PUPUQWJC.js.map +7 -0
  29. package/dist/esm/chunk-XVZOMB6J.js +89 -0
  30. package/dist/esm/chunk-XVZOMB6J.js.map +7 -0
  31. package/dist/esm/chunk-Z6X7HTPP.js +103 -0
  32. package/dist/esm/chunk-Z6X7HTPP.js.map +7 -0
  33. package/dist/esm/entry-L6CE2HLF.js +531 -0
  34. package/dist/esm/entry-L6CE2HLF.js.map +7 -0
  35. package/dist/esm/esm-test-worker.js +3 -14
  36. package/dist/esm/esm-test-worker.js.map +3 -3
  37. package/dist/esm/fto.sgs.json-62YNULOK.js +649 -0
  38. package/dist/esm/fto.sgs.json-62YNULOK.js.map +7 -0
  39. package/dist/esm/gwt-B7CBESZR.js +1669 -0
  40. package/dist/esm/gwt-B7CBESZR.js.map +7 -0
  41. package/dist/esm/megaminx.sgs.json-PRL46G5J.js +16 -0
  42. package/dist/esm/megaminx.sgs.json-PRL46G5J.js.map +7 -0
  43. package/dist/esm/module-entry-J2N3UZP7.js +18 -0
  44. package/dist/esm/module-entry-J2N3UZP7.js.map +7 -0
  45. package/dist/esm/{node-HFBX5WHK.js → node-W3AD4HBK.js} +2 -1
  46. package/dist/esm/node-W3AD4HBK.js.map +7 -0
  47. package/dist/esm/puzzle-geometry/index.js +11 -4051
  48. package/dist/esm/puzzle-geometry/index.js.map +3 -3
  49. package/dist/esm/puzzles/index.js +1 -1
  50. package/dist/esm/pyraminx.sgs.json-7QMPT5XP.js +14 -0
  51. package/dist/esm/pyraminx.sgs.json-7QMPT5XP.js.map +7 -0
  52. package/dist/esm/scramble/index.js +4 -2
  53. package/dist/esm/scramble_444-JP3CWLJM.js +2572 -0
  54. package/dist/esm/scramble_444-JP3CWLJM.js.map +7 -0
  55. package/dist/esm/scramble_sq1-PQ2AYBFW.js +706 -0
  56. package/dist/esm/scramble_sq1-PQ2AYBFW.js.map +7 -0
  57. package/dist/esm/search/index.js +6 -3
  58. package/dist/esm/skewb.sgs.json-FWHYACJG.js +16 -0
  59. package/dist/esm/skewb.sgs.json-FWHYACJG.js.map +7 -0
  60. package/dist/esm/twisty/index.js +3 -3
  61. package/dist/esm/worker-inside-generated-string-OWJA5IIQ.js +3450 -0
  62. package/dist/esm/worker-inside-generated-string-OWJA5IIQ.js.map +7 -0
  63. package/dist/types/search/inside/module-entry-path-getter.d.ts +2 -0
  64. package/dist/types/search/inside/module-entry-path-getter.d.ts.map +1 -0
  65. package/dist/types/search/inside/module-entry.d.ts +2 -0
  66. package/dist/types/search/inside/module-entry.d.ts.map +1 -0
  67. package/dist/types/search/inside/solve/puzzles/3x3x3/index.d.ts.map +1 -1
  68. package/dist/types/search/inside/solve/puzzles/4x4x4.d.ts +2 -1
  69. package/dist/types/search/inside/solve/puzzles/4x4x4.d.ts.map +1 -1
  70. package/dist/types/search/inside/solve/puzzles/sq1.d.ts.map +1 -1
  71. package/dist/types/search/instantiator.d.ts +1 -2
  72. package/dist/types/search/instantiator.d.ts.map +1 -1
  73. package/dist/types/search/worker-inside-generated-string.d.ts +1 -1
  74. package/dist/types/search/worker-inside-generated-string.d.ts.map +1 -1
  75. package/dist/types/vendor/comlink-everywhere/outside/node.d.ts.map +1 -1
  76. package/docs/.DS_Store +0 -0
  77. package/docs/cubing/.DS_Store +0 -0
  78. package/docs/cubing/index.html +1 -1
  79. package/kpuzzle/package.json +1 -3
  80. package/notation/package.json +1 -3
  81. package/package.json +2 -6
  82. package/protocol/package.json +1 -3
  83. package/puzzle-geometry/package.json +1 -3
  84. package/puzzles/package.json +1 -3
  85. package/scramble/package.json +1 -3
  86. package/search/package.json +1 -3
  87. package/src/cubing/.DS_Store +0 -0
  88. package/src/cubing/search/.DS_Store +0 -0
  89. package/src/cubing/search/inside/.DS_Store +0 -0
  90. package/src/cubing/search/inside/module-entry-path-getter.ts +5 -0
  91. package/src/cubing/search/inside/module-entry.ts +20 -0
  92. package/src/cubing/search/inside/solve/puzzles/3x3x3/index.ts +13 -3
  93. package/src/cubing/search/inside/solve/puzzles/4x4x4.ts +19 -5
  94. package/src/cubing/search/inside/solve/puzzles/fto.sgs.json.ts +356 -13
  95. package/src/cubing/search/inside/solve/puzzles/sq1.ts +12 -2
  96. package/src/cubing/search/instantiator.ts +75 -40
  97. package/src/cubing/search/worker-inside-generated-string.js +1 -1
  98. package/src/cubing/vendor/.DS_Store +0 -0
  99. package/src/cubing/vendor/comlink-everywhere/.DS_Store +0 -0
  100. package/src/cubing/vendor/comlink-everywhere/outside/node.js +1 -0
  101. package/src/cubing/vendor/cstimer/.DS_Store +0 -0
  102. package/src/cubing/{search/inside/solve/puzzles → vendor/cstimer/src}/.DS_Store +0 -0
  103. package/src/cubing/vendor/random-uint-below/random53BitValue.ts +1 -1
  104. package/src/cubing/vendor/sq12phase/scramble_sq1.js +2 -2
  105. package/src/cubing/{twisty/heavy-code-imports → vendor/three}/.DS_Store +0 -0
  106. package/src/cubing/{twisty/old/animation → vendor/three/examples}/.DS_Store +0 -0
  107. package/stream/package.json +1 -3
  108. package/twisty/package.json +1 -3
  109. package/alg/index.d.ts +0 -1
  110. package/bluetooth/index.d.ts +0 -1
  111. package/dist/.DS_Store +0 -0
  112. package/dist/esm/chunk-6BZSKSG7.js +0 -1368
  113. package/dist/esm/chunk-6BZSKSG7.js.map +0 -7
  114. package/dist/esm/index.d.ts +0 -1
  115. package/dist/esm/node-HFBX5WHK.js.map +0 -7
  116. package/dist/esm/worker-inside-generated-string-RQYYANYQ.js +0 -3107
  117. package/dist/esm/worker-inside-generated-string-RQYYANYQ.js.map +0 -7
  118. package/kpuzzle/index.d.ts +0 -1
  119. package/notation/index.d.ts +0 -1
  120. package/protocol/index.d.ts +0 -1
  121. package/puzzle-geometry/index.d.ts +0 -1
  122. package/puzzles/index.d.ts +0 -1
  123. package/scramble/index.d.ts +0 -1
  124. package/search/index.d.ts +0 -1
  125. package/src/cubing/puzzles/.DS_Store +0 -0
  126. package/src/cubing/puzzles/implementations/.DS_Store +0 -0
  127. package/src/cubing/search/inside/solve/.DS_Store +0 -0
  128. package/src/cubing/search/inside/solve/vendor/.DS_Store +0 -0
  129. package/src/cubing/twisty/.DS_Store +0 -0
  130. package/src/cubing/twisty/controllers/.DS_Store +0 -0
  131. package/src/cubing/twisty/controllers/animation/.DS_Store +0 -0
  132. package/src/cubing/twisty/controllers/indexer/.DS_Store +0 -0
  133. package/src/cubing/twisty/model/.DS_Store +0 -0
  134. package/src/cubing/twisty/model/props/.DS_Store +0 -0
  135. package/src/cubing/twisty/model/props/puzzle/.DS_Store +0 -0
  136. package/src/cubing/twisty/old/.DS_Store +0 -0
  137. package/src/cubing/twisty/old/dom/.DS_Store +0 -0
  138. package/src/cubing/twisty/views/.DS_Store +0 -0
  139. package/src/cubing/twisty/views/3D/.DS_Store +0 -0
  140. package/stream/index.d.ts +0 -1
  141. package/twisty/index.d.ts +0 -1
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/cubing/vendor/random-uint-below/get-random-values.ts", "../../src/cubing/vendor/random-uint-below/random53BitValue.ts", "../../src/cubing/vendor/random-uint-below/random-choice.ts", "../../src/cubing/vendor/random-uint-below/index.ts", "../../src/cubing/search/inside/solve/puzzles/clock.ts", "../../src/cubing/search/inside/solve/puzzles/wca-minx.ts", "../../src/cubing/vendor/comlink-everywhere/outside/index.js", "../../src/cubing/search/instantiator.ts", "../../src/cubing/search/outside.ts", "../../src/cubing/search/inside/solve/puzzles/3x3x3/convert.ts", "../../src/cubing/search/inside/solve/puzzles/3x3x3/filter.ts", "../../src/cubing/search/inside/solve/puzzles/3x3x3/legacy-sgs.ts", "../../src/cubing/vendor/min2phase/gwt.js", "../../src/cubing/search/inside/solve/puzzles/3x3x3/index.ts"],
4
- "sourcesContent": ["export type GetRandomValuesFunction = (arr: Uint32Array) => void;\n\n// This is a workaround for a `node` segfault.\n// In theory, imports are cached and safe to import multiple times: https://nodejs.org/api/esm.html#esm_urls\n// In practice, a rapid series of inline imports inside a worker causes a segfault(!) in `node`.\n// So we cache a single import reference. We avoid populating it until we first need it, so that we don't attempt to perform the import in environments that don't need or have it (e.g. browsers, `deno`).\nlet cryptoPromise: Promise<typeof import(\"crypto\")> | null = null;\n\n// `@types/node` is... lacking. This type may cause an error in the future, at which point we can hopefully use `@types/node` directly.\ntype NodeWebCrypto = typeof import(\"crypto\").webcrypto & {\n getRandomValues: GetRandomValuesFunction;\n};\n\n// We could use top-level await to define this more statically, but that has limited transpilation support.\nexport async function getRandomValuesFactory(): Promise<GetRandomValuesFunction> {\n if (!globalThis?.crypto?.getRandomValues) {\n const nodeWebcrypto = (await (cryptoPromise ??= import(\"crypto\")))\n .webcrypto as NodeWebCrypto;\n return nodeWebcrypto.getRandomValues;\n } else {\n return crypto.getRandomValues.bind(crypto) as GetRandomValuesFunction;\n }\n}\n", "import {\n getRandomValuesFactory,\n GetRandomValuesFunction,\n} from \"./get-random-values\";\n\n/*\n * randomInt.below(max) returns a random non-negative integer less than max (0 <= output < max).\n * `max` must be at most 2^53.\n */\n\nconst MAX_JS_PRECISE_INT = 9007199254740992;\n\nconst UPPER_HALF_MULTIPLIER = 2097152; // 2^21. We have to use multiplication because bit shifts truncate to 32 bits.\nconst LOWER_HALF_DIVIDER = 2048;\n\nfunction random53BitValue(getRandomValues: GetRandomValuesFunction): number {\n // Construct a random 53-bit value from a 32-bit upper half and a 21-bit lower half.\n const arr = new Uint32Array(2);\n getRandomValues(arr);\n const upper = arr[0];\n const lower = arr[1];\n return (\n Math.floor(upper * UPPER_HALF_MULTIPLIER) +\n Math.floor(lower / LOWER_HALF_DIVIDER)\n );\n}\n\nfunction validateMax(max: number): void {\n if (typeof max !== \"number\" || max < 0 || Math.floor(max) !== max) {\n throw new Error(\n \"randomInt.below() not called with a positive integer value.\",\n );\n }\n if (max > MAX_JS_PRECISE_INT) {\n throw new Error(\n `Called randomInt.below() with max == ${max}, which is larger than Javascript can handle with integer precision.`,\n );\n }\n}\n\n// TODO: cache generated `randomUIntBelow`?\nexport async function randomUIntBelowFactory(): Promise<\n (max: number) => number\n> {\n const getRandomValues = await getRandomValuesFactory();\n const randomUIntBelow = (max: number): number => {\n validateMax(max);\n\n const val = random53BitValue(getRandomValues);\n const maxUniformSamplingRange = Math.floor(MAX_JS_PRECISE_INT / max) * max;\n\n // Rejection sampling:\n if (val < maxUniformSamplingRange) {\n return val % max;\n } else {\n // val % max would produce a biased result. This bias an be very bad if `max` is on the order of MAX_JS_PRECISE_INT. We have to try again, so just call ourselves recursively.\n // For some values of `max` just above 9007199254740992 / 2, this happens about once on average. For other values of `max`, it's less than that (and for small values of `max` it's extremely unlikely).\n\n // TODO: Use more bits of accuracy instead of rejection sampling to avoid DoS.\n return randomUIntBelow(max);\n }\n };\n return randomUIntBelow;\n}\n", "import { randomUIntBelowFactory } from \"./random53BitValue\";\n\n// Inspired by https://reference.wolfram.com/language/ref/RandomChoice.html\n// This library itself should be kept small, but a wrapper library may want to implement selecting multiple element without replacement as with replacement:\n// https://reference.wolfram.com/language/ref/RandomSample.html\nexport async function randomChoiceFactory<T>(): Promise<(arr: Array<T>) => T> {\n const randomUIntBelow = await randomUIntBelowFactory();\n return (arr: Array<T>): T => arr[randomUIntBelow(arr.length)];\n}\n", "export { randomChoiceFactory } from \"./random-choice\";\nexport { randomUIntBelowFactory } from \"./random53BitValue\";\n\n// TODO: reuse factory properly, move this to a separate file, add to impl.\nimport { randomUIntBelowFactory } from \"./random53BitValue\";\nconst randomUIntBelowPromise = randomUIntBelowFactory();\nexport async function randomPermute<T>(list: T[]): Promise<void> {\n for (let i = 1; i < list.length; i++) {\n const j = (await randomUIntBelowPromise)(i);\n [list[i], list[j]] = [list[j], list[i]];\n }\n}\n", "import { randomUIntBelowFactory } from \"../../../../vendor/random-uint-below\";\n\nconst pins = [\"UR\", \"DR\", \"DL\", \"UL\"];\nconst backMoves = [\"U\", \"R\", \"D\", \"L\", \"ALL\"];\nconst frontMoves = pins.concat(backMoves);\n\nconst randomUIntBelowPromise = randomUIntBelowFactory();\n\nexport async function randomClockScrambleString(): Promise<string> {\n const randomUIntBelow = await randomUIntBelowPromise;\n\n let filteringMoveCount = 0;\n\n async function randomSuffix(randomUIntBelow: (max: number) => number) {\n const amount = randomUIntBelow(12);\n if (amount !== 0) {\n filteringMoveCount++;\n }\n if (amount <= 6) {\n return `${amount}+`;\n } else {\n return `${12 - amount}-`;\n }\n }\n\n const moves = [];\n async function side(families: string[]): Promise<void> {\n for (const family of families) {\n moves.push(`${family}${await randomSuffix(randomUIntBelow)}`);\n }\n }\n\n await side(frontMoves);\n moves.push(\"y2\");\n await side(backMoves);\n\n // https://www.worldcubeassociation.org/regulations/#4b3\n if (filteringMoveCount < 2) {\n return randomClockScrambleString();\n }\n\n for (const pin of pins) {\n if (randomUIntBelow(2) === 0) {\n moves.push(pin);\n }\n }\n return moves.join(\" \");\n}\n", "import { randomUIntBelowFactory } from \"../../../../vendor/random-uint-below\";\n\nconst randomUIntBelowPromise = randomUIntBelowFactory();\n\nconst suffixes = [\"++\", \"--\"];\n\nexport async function randomMegaminxScrambleString(): Promise<string> {\n const randomUIntBelow = await randomUIntBelowPromise;\n\n function rdPair(): string {\n return `R${suffixes[randomUIntBelow(2)]} D${suffixes[randomUIntBelow(2)]}`;\n }\n\n function randomU(): string {\n return `U${[\"\", \"'\"][randomUIntBelow(2)]}`;\n }\n\n function row(): string {\n const chunks = [];\n for (let i = 0; i < 5; i++) {\n chunks.push(rdPair());\n }\n chunks.push(randomU());\n return chunks.join(\" \");\n }\n\n const chunks = [];\n for (let i = 0; i < 6; i++) {\n chunks.push(row());\n }\n return chunks.join(\"\\n\");\n}\n", "export { wrap } from \"comlink\";\n\nconst useNodeWorkarounds =\n typeof globalThis.Worker === \"undefined\" &&\n typeof globalThis.WorkerNavigator === \"undefined\";\n\nexport async function workerFileConstructor() {\n if (useNodeWorkarounds) {\n return await (await import(\"./node.js\")).NodeWorkerWrapper();\n } else {\n return globalThis.Worker;\n }\n}\n\nexport async function constructWorkerFromString(stringSource, options) {\n let worker;\n if (useNodeWorkarounds) {\n const constructor = await (\n await import(\"./node.js\")\n ).NodeWorkerStringWrapper();\n const worker = new constructor(stringSource);\n return worker;\n } else {\n const blob = new Blob([stringSource], { type: \"application/javascript\" });\n const workerURL = URL.createObjectURL(blob);\n worker = new globalThis.Worker(workerURL, {\n type: options ? options.type : undefined, // TODO: Is it safe to use `options?.type`?\n });\n }\n return worker;\n}\n", "import type { WorkerInsideAPI } from \"./inside/api\";\n\nimport {\n constructWorkerFromString,\n workerFileConstructor,\n wrap,\n} from \"../vendor/comlink-everywhere/outside\";\n\nimport type { esmTestAPIImplementation } from \"./esm-test-worker\";\ntype ESMTestAPI = typeof esmTestAPIImplementation;\n\n// Blocked on:\n// - https://github.com/evanw/esbuild/issues/312\n// - https://bugzilla.mozilla.org/show_bug.cgi?id=1558780\nconst TEST_RELATIVE_URL_WORKER = false;\n\nexport async function instantiateRelativeURLWorker(): Promise<void> {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve, reject) => {\n setTimeout(() => {\n reject();\n }, 1000);\n\n const Worker = await workerFileConstructor();\n const worker = new Worker(new URL(\"./esm-test-worker.js\", import.meta.url));\n const api = wrap<ESMTestAPI>(worker);\n\n if ((await api.test(\"to worker\")) === \"from worker\") {\n resolve();\n } else {\n reject();\n }\n\n // TODO: terminate worker.\n });\n}\n\nexport async function relativeURLWorkerTest(): Promise<void> {\n try {\n await instantiateRelativeURLWorker();\n console.info(\"Successful relative URL worker instantiation.\");\n } catch (e) {\n console.warn(\n \"WARNING: Could not instantiate and communicate with a relative URL worker. This means that your app may have issues with `cubing/solve` in the future.\",\n );\n }\n}\n\nexport async function instantiateWorker(): Promise<WorkerInsideAPI> {\n const { workerSource } = await import(\"./worker-inside-generated-string.js\");\n // console.log({ workerSource });\n\n const worker = await constructWorkerFromString(workerSource);\n\n if (TEST_RELATIVE_URL_WORKER) {\n relativeURLWorkerTest(); // do not wait for the result\n }\n\n return wrap(worker);\n}\n", "import { Alg } from \"../alg\";\n// import { preInitialize222 } from \"../implementations/2x2x2\";\nimport { randomClockScrambleString } from \"./inside/solve/puzzles/clock\"; // TODO: don't reach into `inside` code.\nimport { randomMegaminxScrambleString } from \"./inside/solve/puzzles/wca-minx\"; // TODO: don't reach into `inside` code.\nimport { instantiateWorker } from \"./instantiator\";\nimport type { WorkerInsideAPI } from \"./inside/api\";\nimport type { Transformation } from \"../kpuzzle\";\n\nlet cachedWorkerInstance: Promise<WorkerInsideAPI> | null = null;\nasync function getCachedWorkerInstance(): Promise<WorkerInsideAPI> {\n return await (cachedWorkerInstance ??= instantiateWorker());\n}\n\n// Pre-initialize the scrambler for the given event. (Otherwise, an event is\n// initialized the first time you ask for a scramble for that event.)\n//\n// Some typical numbers for a fast computer:\n// - 3x3x3 initialization: 200ms\n// - Each 3x3x3 scramble: 50ms\n// - 4x4x4 initialization: 2500ms\n// - Each 4x4x4 scramble: 300ms to 800ms\n//\n// It is safe to immediately call for a scramble\n// any time after starting pre-initialization, or to call for them without\n// pre-initializing. Pre-initializing essentially gives the scramble worker a\n// head start in case a scramble doesn't get requested immediately.\n//\n// Note that events cannot be pre-initialized in parallel. Attempting to\n// pre-initialize multiple events will initialize them consecutively. Scrambles\n// for a given event cannot be computed while another event is being initialized.\nexport function _preInitializationHintForEvent(\n eventID: string,\n // callback?: () => void\n): void {\n switch (eventID) {\n case \"clock\":\n case \"minx\":\n return;\n case \"333oh\":\n return _preInitializationHintForEvent(\"333\");\n }\n (async () => {\n await (await getCachedWorkerInstance()).initialize(eventID);\n })();\n}\n\nexport async function randomScrambleForEvent(eventID: string): Promise<Alg> {\n switch (eventID) {\n case \"clock\":\n return Alg.fromString(await randomClockScrambleString());\n case \"minx\":\n return Alg.fromString(await randomMegaminxScrambleString());\n }\n const prom = _randomScrambleStringForEvent(eventID);\n const wat = await prom;\n return Alg.fromString(wat);\n}\n\nexport async function _randomScrambleStringForEvent(\n eventID: string,\n): Promise<string> {\n const cwi = await getCachedWorkerInstance();\n return cwi.randomScrambleStringForEvent(eventID);\n}\n\nexport async function randomScrambleStringForEvent(\n eventID: string,\n): Promise<string> {\n switch (eventID) {\n case \"clock\":\n return randomClockScrambleString();\n case \"minx\":\n return randomMegaminxScrambleString();\n }\n return await _randomScrambleStringForEvent(eventID);\n}\n\nexport async function experimentalSolve3x3x3IgnoringCenters(\n s: Transformation,\n): Promise<Alg> {\n const cwi = await getCachedWorkerInstance();\n return Alg.fromString(await cwi.solve333ToString(s));\n}\n\nexport async function experimentalSolve2x2x2(s: Transformation): Promise<Alg> {\n const cwi = await getCachedWorkerInstance();\n return Alg.fromString(await cwi.solve222ToString(s));\n}\n\nexport async function solveSkewb(s: Transformation): Promise<Alg> {\n const cwi = await getCachedWorkerInstance();\n return Alg.fromString(await cwi.solveSkewbToString(s));\n}\n\nexport async function solvePyraminx(s: Transformation): Promise<Alg> {\n const cwi = await getCachedWorkerInstance();\n return Alg.fromString(await cwi.solvePyraminxToString(s));\n}\n\nexport async function solveMegaminx(s: Transformation): Promise<Alg> {\n const cwi = await getCachedWorkerInstance();\n return Alg.fromString(await cwi.solveMegaminxToString(s));\n}\n\nexport function setDebug(options: { logPerf?: boolean }): void {\n const { logPerf } = options;\n if (typeof logPerf !== \"undefined\") {\n getCachedWorkerInstance().then((cwi) => cwi.setDebugMeasurePerf(logPerf));\n }\n}\n", "/*\n\nFace order:\n\n U\nLFRB\n D\n\n | 0| 1| 2|\n | 3| 4| 5|\n | 6| 7| 8|\n| 9|10|11|18|19|20|27|28|29|36|37|38|\n|12|13|14|21|22|23|30|31|32|39|40|41|\n|15|16|17|24|25|26|33|34|35|42|43|44|\n |45|46|47|\n |48|49|50|\n |51|52|53|\n*/\n\nimport type { Transformation } from \"../../../../../kpuzzle\";\n\nconst reidEdgeOrder = \"UF UR UB UL DF DR DB DL FR FL BR BL\".split(\" \");\nconst reidCornerOrder = \"UFR URB UBL ULF DRF DFL DLB DBR\".split(\" \");\nconst centerOrder = \"U L F R B D\".split(\" \");\n\n// const stickers = [reidEdgeOrder, reidCornerOrder, centerOrder];\n\n// /*\n// |1 20|0 20|1 10|\n// |0 30|2 00|0 10|\n// |1 30|0 00|1 00|\n// |1 22|0 31|1 31|1 32|0 01|1 01|1 02|0 11|1 11|1 12|0 21|1 21|\n// |0111|2 10|0 91|0 90|2 20|0 80|0 81|2 30|0101|0100|2 40|0110|\n// |1 61|0 71|1 52|1 51|0 41|1 42|1 41|0 51|1 72|1 71|0 61|1 62|\n// |1 50|0 40|1 40|\n// |0 70|2 50|0 50|\n// |1 60|0 60|1 70|\n// */\n\nconst map: [number, number, number][] = [\n [1, 2, 0],\n [0, 2, 0],\n [1, 1, 0],\n [0, 3, 0],\n [2, 0, 0],\n [0, 1, 0],\n [1, 3, 0],\n [0, 0, 0],\n [1, 0, 0],\n [1, 0, 2],\n [0, 1, 1],\n [1, 1, 1],\n [0, 8, 1],\n [2, 3, 0],\n [0, 10, 1],\n [1, 4, 1],\n [0, 5, 1],\n [1, 7, 2],\n [1, 3, 2],\n [0, 0, 1],\n [1, 0, 1],\n [0, 9, 0],\n [2, 2, 0],\n [0, 8, 0],\n [1, 5, 1],\n [0, 4, 1],\n [1, 4, 2],\n [1, 5, 0],\n [0, 4, 0],\n [1, 4, 0],\n [0, 7, 0],\n [2, 5, 0],\n [0, 5, 0],\n [1, 6, 0],\n [0, 6, 0],\n [1, 7, 0],\n [1, 2, 2],\n [0, 3, 1],\n [1, 3, 1],\n [0, 11, 1],\n [2, 1, 0],\n [0, 9, 1],\n [1, 6, 1],\n [0, 7, 1],\n [1, 5, 2],\n [1, 1, 2],\n [0, 2, 1],\n [1, 2, 1],\n [0, 10, 0],\n [2, 4, 0],\n [0, 11, 0],\n [1, 7, 1],\n [0, 6, 1],\n [1, 6, 2],\n];\n\nfunction rotateLeft(s: string, i: number): string {\n return s.slice(i) + s.slice(0, i);\n}\n\nfunction toReid333Struct(state: Transformation): string[][] {\n const output: string[][] = [[], []];\n for (let i = 0; i < 6; i++) {\n if (state[\"CENTERS\"].permutation[i] !== i) {\n throw new Error(\"non-oriented puzzles are not supported\");\n }\n }\n for (let i = 0; i < 12; i++) {\n output[0].push(\n rotateLeft(\n reidEdgeOrder[state[\"EDGES\"].permutation[i]],\n state[\"EDGES\"].orientation[i],\n ),\n );\n }\n for (let i = 0; i < 8; i++) {\n output[1].push(\n rotateLeft(\n reidCornerOrder[state[\"CORNERS\"].permutation[i]],\n state[\"CORNERS\"].orientation[i],\n ),\n );\n }\n output.push(centerOrder);\n return output;\n}\n\n// function toReid333String(state: Transformation): string {\n// return toReid333Struct(state)\n// .map((l) => l.join(\" \"))\n// .join(\" \");\n// }\n\nexport function toMin2PhaseState(state: Transformation): string {\n const reid = toReid333Struct(state);\n return map.map(([orbit, perm, ori]) => reid[orbit][perm][ori]).join(\"\");\n}\n", "import { Move } from \"../../../../../alg\";\nimport {\n KPuzzle,\n areOrbitTransformationsEquivalent,\n KPuzzleDefinition,\n Transformation,\n} from \"../../../../../kpuzzle\";\n\nexport function isEquivalentTranformationIgnoringCENTERS(\n def: KPuzzleDefinition,\n t1: Transformation,\n t2: Transformation,\n): boolean {\n for (const orbitName in def.orbits) {\n if (\n !areOrbitTransformationsEquivalent(def, orbitName, t1, t2, {\n ignoreOrientation: orbitName === \"CENTERS\",\n })\n ) {\n return false;\n }\n }\n return true;\n}\n\nexport function passesFilter(\n def: KPuzzleDefinition,\n state: Transformation,\n): boolean {\n const kpuzzle = new KPuzzle(def);\n if (isEquivalentTranformationIgnoringCENTERS(def, kpuzzle.state, state)) {\n return false;\n }\n\n for (const face of \"ULFRBD\") {\n for (let amount = 1; amount < 4; amount++) {\n kpuzzle.reset();\n kpuzzle.applyMove(new Move(face, amount));\n if (isEquivalentTranformationIgnoringCENTERS(def, kpuzzle.state, state)) {\n return false;\n }\n }\n }\n\n return true;\n}\n\n// TODO: implement tests\n// {\n// const def = await puzzles[\"3x3x3\"].def();\n// const kpuzzle = new KPuzzle(def);\n// console.log(passesFilter(def, kpuzzle.state));\n// kpuzzle.applyAlg(parse(\"R\"));\n// console.log(passesFilter(def, kpuzzle.state));\n// kpuzzle.applyAlg(parse(\"D\"));\n// console.log(passesFilter(def, kpuzzle.state));\n// kpuzzle.reset();\n// kpuzzle.applyAlg(parse(\"(R' U' R U')5\"));\n// console.log(passesFilter(def, kpuzzle.state));\n// }\n", "// TODO: Verify\nexport const sgs3x3x3: string[][] = [\n [\n \"R U'\",\n \"R2 B\", //\n \"D2 B2\",\n \"D' L B'\", //\n \"R' U'\",\n \"B\", //\n \"D B2\",\n \"R' B\", //\n \"L' U\",\n \"L2 B'\", //\n \"B2\",\n \"D L B'\", //\n \"L U\",\n \"B'\", //\n \"U'\",\n \"R B\", //\n \"D' B2\",\n \"L B'\", //\n \"U2\",\n \"U L' B'\", //\n \"\",\n \"U' L' B'\", //\n \"U\",\n \"L' B'\",\n ],\n [\n \"F2 L2\",\n \"F' L'\",\n \"R' F L2\", //\n \"D' L2\",\n \"F L2\",\n \"F2 L'\", //\n \"R' F' L'\",\n \"R2 F L2\",\n \"R2 F2 L'\", //\n \"L2\",\n \"F L'\",\n \"D' L\", //\n \"D2 L2\",\n \"R2 F' L'\",\n \"D L\", //\n \"\",\n \"L2 F L'\",\n \"L F' L2\", //\n \"L F L'\",\n \"F' L2\",\n \"L'\", //\n \"D L2\",\n \"D F L'\",\n \"L\",\n ],\n [\n \"R B U2 B'\",\n \"R2 B U' B'\", //\n \"F2 B U B'\",\n \"F B2 L' B2\", //\n \"B2 L B2\",\n \"B U' B'\", //\n \"R2 B U2 B'\",\n \"R' B U' B'\", //\n \"B2 L' B2\",\n \"F B U B'\", //\n \"B2 U' B2\",\n \"B' L B\", //\n \"L F' B D' B'\",\n \"B' U' B2 D B'\", //\n \"B U2 B'\",\n \"R B U' B'\", //\n \"B2 L2 B2\",\n \"D' B' L B\", //\n \"B U B'\",\n \"F' B2 L' B2\", //\n \"\",\n \"B2 L' B' U' B'\",\n ],\n [\n \"U F2 L2 U'\",\n \"F' U L' U'\", //\n \"F2 U L' U'\",\n \"U F L2 U'\", //\n \"U2 B2 U2\",\n \"R' U' B U\", //\n \"D2 U L U'\",\n \"D U2 B' U2\", //\n \"U L2 U'\",\n \"F U L' U'\", //\n \"D U L U'\",\n \"U2 B' U2\", //\n \"\",\n \"U2 B' U' L' U'\", //\n \"U2 L' U2\",\n \"U' B U\", //\n \"U L U'\",\n \"D' U2 B' U2\", //\n \"U L' U'\",\n \"U2 B U2\",\n ],\n [\n \"R' D' F2\",\n \"F'\", //\n \"F2\",\n \"D R F'\", //\n \"R D' F2\",\n \"R2 F'\", //\n \"D' F2\",\n \"R F'\", //\n \"F2 R' D' F2\",\n \"F\", //\n \"D2 F2\",\n \"D' R F'\", //\n \"R2 D' F2\",\n \"R' F'\", //\n \"D F2\",\n \"D2 R F'\", //\n \"\",\n \"F R' D' F2\",\n ],\n [\n \"R' D2 F' D F\",\n \"R F2 R2 F2\",\n \"R2 F' D2 F\", //\n \"F' R2 D2 F\",\n \"L D' L'\",\n \"D F' D2 F\", //\n \"F2 R2 F2\",\n \"R F' D2 F\",\n \"F' R2 D' F\", //\n \"F' R' D2 F\",\n \"F2 R' F2\",\n \"L D L'\", //\n \"F' R D' F\",\n \"F2 R F2\",\n \"F' D2 F\", //\n \"\",\n \"L D2 R D' L'\",\n \"F' D2 F' R F2\", //\n \"D2 R2 F2 R2 F2\",\n \"D F' D' F\",\n \"F' D F\",\n ],\n [\n \"U F2 U'\",\n \"R U F' U'\", //\n \"D R U F2 U'\",\n \"U F U'\", //\n \"R2 U F2 U'\",\n \"R' U F' U'\", //\n \"R U F2 U'\",\n \"R2 U F' U'\", //\n \"\",\n \"U L D L' F U'\", //\n \"F2 D' R D F2\",\n \"D2 U F U'\", //\n \"R' U F2 U'\",\n \"U F' U'\", //\n \"F2 D2 R D2 F2\",\n \"D U F U'\",\n ],\n [\n \"R2\",\n \"R' B' D B\", //\n \"D R'\",\n \"F' R2 F\", //\n \"\",\n \"R B' D B\", //\n \"R'\",\n \"B' D B\", //\n \"D' R'\",\n \"D2 F' R2 F\", //\n \"R\",\n \"R2 B' D B\", //\n \"D2 R'\",\n \"B' D' B\",\n ],\n [\n \"R2 D' R2\",\n \"F' R' F R\",\n \"R D' R2 D R'\", //\n \"D2 R2 D2 R2\",\n \"R' D' F' R F\",\n \"U F D F' U'\", //\n \"\",\n \"R2 D2 B R' B' R'\",\n \"R' F D' F2 R F\", //\n \"R2 D R2\",\n \"F2 U F U' F\",\n \"R' D F' R F\", //\n \"D R2 D2 R2\",\n \"U F D' F' U'\",\n \"D R' D2 F' R F\", //\n \"R2 D2 R2\",\n \"U F D2 F' U'\",\n \"R' D2 F' R F\",\n ],\n [\n \"B R B'\",\n \"F D F' B R2 B'\", //\n \"D B R2 B'\",\n \"D2 B R' B'\", //\n \"B R2 B'\",\n \"D B R' B'\", //\n \"D' B R2 B'\",\n \"B R' B'\", //\n \"\",\n \"B R2 B' D B R' B'\", //\n \"D2 B R2 B'\",\n \"D' B R' B'\",\n ],\n [\n \"\",\n \"R' D R F D2 F'\", //\n \"R' D R\",\n \"D F D' F'\", //\n \"R F' R' F\",\n \"F D' F'\", //\n \"R' D' R\",\n \"F D2 F'\", //\n \"R' D2 R\",\n \"F D F'\",\n ],\n [\n \"\",\n \"F2 D2 R F' R' D2 F' D2 F'\",\n \"F2 D2 F' D' F D' F' D2 F'\", //\n \"F2 D F2 D F2 D2 F2\",\n \"D2 F L D2 L' D2 F'\",\n \"D F D2 L D2 L' F'\", //\n \"R' D B' D2 B D' R\",\n \"R' D2 B' D2 B R\",\n \"F D2 F' D F D F'\", //\n \"F D' L D2 L' D F'\",\n \"B D' F D B' D' F'\",\n \"F D2 L D2 L' F'\", //\n \"F D' L D L' D F'\",\n \"F L D2 L' D2 F'\",\n \"R' B' D2 B D2 R\",\n ],\n [\n \"D'\",\n \"F L D L' D' F'\", //\n \"D2\",\n \"L B D B' D' L'\", //\n \"D\",\n \"B' L' D' L D B\", //\n \"\",\n \"D F L D L' D' F'\",\n ],\n [\n \"F' D2 F D F' D F\",\n \"F' D' R' D R F\", //\n \"F' R' D' R D F\",\n \"B D R D' R' B'\", //\n \"\",\n \"D B' D' L' D L B\",\n ],\n [\n \"D F D F' D F D2 F'\",\n \"F' U2 B' R' B U2 F' L F' L' F'\", //\n \"\",\n \"D2 L D L2 F L F2 D F\",\n ],\n [\n \"L B' L' F L B L' F'\",\n \"F2 U F' D2 F U' F' D2 F'\",\n \"D' F' D B D' F D B'\", //\n \"F L2 F R2 F' L2 F R2 F2\",\n \"D B D' F' D B' D' F\",\n \"R F L F' R' F L' F'\", //\n \"\",\n \"D2 B L' U2 L B' D2 B L' U2 L B'\",\n \"D2 F R' U2 R F' D2 F R' U2 R F'\", //\n \"R F L' F' R' F L F'\",\n \"D F D' B' D F' D' B\",\n \"L2 F2 L' B2 L F2 L' B2 L'\",\n ],\n [\n \"L B R' B' L' B R B'\",\n \"R' B R F' R' B' R F\",\n \"L D2 L U L' D2 L U' L2\", //\n \"\",\n \"D2 B' D2 F D' L2 F L2 F' D2 B D' F'\",\n \"D2 F' R' F R2 B' D2 B D2 R' F D2 F'\", //\n \"L B L' F L B' L' F'\",\n \"F' D2 F' U' F D2 F' U F2\",\n \"D' B' D F D' B D F'\",\n ],\n [\"\", \"D2 F' L U2 L' F D2 F' L U2 L' F\", \"D2 B' R U2 R' B D2 B' R U2 R' B\"],\n];\n", "var $intern_3 = { 3: 1 },\n $intern_9 = 4194303,\n $intern_10 = 1048575,\n $intern_11 = 524288,\n $intern_20 = 65535,\n $intern_26 = { 11: 1, 3: 1 },\n $intern_27 = { 17: 1, 3: 1 },\n $intern_28 = 14540032,\n $intern_29 = 286331153,\n $intern_30 = { 10: 1, 3: 1 };\nvar _;\nvar prototypesByTypeId_0 = {};\nfunction typeMarkerFn() {}\n\nfunction portableObjCreate(obj) {\n function F() {}\n\n F.prototype = obj || {};\n return new F();\n}\n\nfunction maybeGetClassLiteralFromPlaceHolder_0(entry) {\n return entry instanceof Array ? entry[0] : null;\n}\n\nfunction defineClass(typeId, superTypeId, castableTypeMap) {\n var prototypesByTypeId = prototypesByTypeId_0;\n var createSubclassPrototype = createSubclassPrototype_0;\n var maybeGetClassLiteralFromPlaceHolder =\n maybeGetClassLiteralFromPlaceHolder_0;\n var prototype_0 = prototypesByTypeId[typeId];\n var clazz = maybeGetClassLiteralFromPlaceHolder(prototype_0);\n if (prototype_0 && !clazz) {\n _ = prototype_0;\n } else {\n _ = prototypesByTypeId[typeId] = !superTypeId\n ? {}\n : createSubclassPrototype(superTypeId);\n _.castableTypeMap$ = castableTypeMap;\n _.constructor = _;\n !superTypeId && (_.typeMarker$ = typeMarkerFn);\n }\n for (var i = 3; i < arguments.length; ++i) {\n arguments[i].prototype = _;\n }\n clazz && (_.___clazz$ = clazz);\n}\n\nfunction createSubclassPrototype_0(superTypeId) {\n var prototypesByTypeId = prototypesByTypeId_0;\n return portableObjCreate(prototypesByTypeId[superTypeId]);\n}\n\nfunction Object_0() {}\n\ndefineClass(1, null, {}, Object_0);\n\nfunction narrow_byte(x_0) {\n return (x_0 << 24) >> 24;\n}\n\nfunction Class() {\n this.typeName = null;\n this.simpleName = null;\n this.packageName = null;\n this.compoundName = null;\n this.canonicalName = null;\n this.typeId = null;\n this.arrayLiterals = null;\n}\n\nfunction createClassObject(packageName, compoundClassName) {\n var clazz;\n clazz = new Class();\n clazz.packageName = packageName;\n clazz.compoundName = compoundClassName;\n return clazz;\n}\n\nfunction createForClass(packageName, compoundClassName, typeId) {\n var clazz;\n clazz = createClassObject(packageName, compoundClassName);\n maybeSetClassLiteral(typeId, clazz);\n return clazz;\n}\n\nfunction createForInterface(packageName, compoundClassName) {\n var clazz;\n clazz = createClassObject(packageName, compoundClassName);\n clazz.modifiers = 2;\n return clazz;\n}\n\nfunction createForPrimitive(className, primitiveTypeId) {\n var clazz;\n clazz = createClassObject(\"\", className);\n clazz.typeId = primitiveTypeId;\n clazz.modifiers = 1;\n return clazz;\n}\n\nfunction getClassLiteralForArray_0(leafClass, dimensions) {\n var arrayLiterals = (leafClass.arrayLiterals = leafClass.arrayLiterals || []);\n return (\n arrayLiterals[dimensions] ||\n (arrayLiterals[dimensions] =\n leafClass.createClassLiteralForArray(dimensions))\n );\n}\n\nfunction getPrototypeForClass(clazz) {\n if (clazz.isPrimitive()) {\n return null;\n }\n var typeId = clazz.typeId;\n var prototype_0 = prototypesByTypeId_0[typeId];\n return prototype_0;\n}\n\nfunction maybeSetClassLiteral(typeId, clazz) {\n if (!typeId) {\n return;\n }\n clazz.typeId = typeId;\n var prototype_0 = getPrototypeForClass(clazz);\n if (!prototype_0) {\n prototypesByTypeId_0[typeId] = [clazz];\n return;\n }\n prototype_0.___clazz$ = clazz;\n}\n\ndefineClass(79, 1, {}, Class);\n_.createClassLiteralForArray = function createClassLiteralForArray(dimensions) {\n var clazz;\n clazz = new Class();\n clazz.modifiers = 4;\n dimensions > 1\n ? (clazz.componentType = getClassLiteralForArray_0(this, dimensions - 1))\n : (clazz.componentType = this);\n return clazz;\n};\n_.isPrimitive = function isPrimitive() {\n return (this.modifiers & 1) != 0;\n};\n\nfunction getClassLiteralForArray(clazz, dimensions) {\n return getClassLiteralForArray_0(clazz, dimensions);\n}\n\nfunction initDim(\n leafClassLiteral,\n castableTypeMap,\n elementTypeId,\n length_0,\n elementTypeCategory,\n dimensions,\n) {\n var result;\n result = initializeArrayElementsWithDefaults(elementTypeCategory, length_0);\n initValues(\n getClassLiteralForArray(leafClassLiteral, dimensions),\n castableTypeMap,\n elementTypeId,\n elementTypeCategory,\n result,\n );\n return result;\n}\n\nfunction initDims(\n leafClassLiteral,\n castableTypeMapExprs,\n elementTypeIds,\n leafElementTypeCategory,\n dimExprs,\n count,\n) {\n return initDims_0(\n leafClassLiteral,\n castableTypeMapExprs,\n elementTypeIds,\n leafElementTypeCategory,\n dimExprs,\n 0,\n count,\n );\n}\n\nfunction initDims_0(\n leafClassLiteral,\n castableTypeMapExprs,\n elementTypeIds,\n leafElementTypeCategory,\n dimExprs,\n index_0,\n count,\n) {\n var elementTypeCategory, i, isLastDim, length_0, result;\n length_0 = dimExprs[index_0];\n isLastDim = index_0 == count - 1;\n elementTypeCategory = isLastDim ? leafElementTypeCategory : 0;\n result = initializeArrayElementsWithDefaults(elementTypeCategory, length_0);\n initValues(\n getClassLiteralForArray(leafClassLiteral, count - index_0),\n castableTypeMapExprs[index_0],\n elementTypeIds[index_0],\n elementTypeCategory,\n result,\n );\n if (!isLastDim) {\n ++index_0;\n for (i = 0; i < length_0; ++i) {\n result[i] = initDims_0(\n leafClassLiteral,\n castableTypeMapExprs,\n elementTypeIds,\n leafElementTypeCategory,\n dimExprs,\n index_0,\n count,\n );\n }\n }\n return result;\n}\n\nfunction initValues(\n arrayClass,\n castableTypeMap,\n elementTypeId,\n elementTypeCategory,\n array,\n) {\n array.___clazz$ = arrayClass;\n array.castableTypeMap$ = castableTypeMap;\n array.typeMarker$ = typeMarkerFn;\n array.__elementTypeId$ = elementTypeId;\n array.__elementTypeCategory$ = elementTypeCategory;\n return array;\n}\n\nfunction initializeArrayElementsWithDefaults(elementTypeCategory, length_0) {\n var array = new Array(length_0);\n var initValue;\n switch (elementTypeCategory) {\n case 6:\n initValue = { l: 0, m: 0, h: 0 };\n break;\n case 7:\n initValue = 0;\n break;\n case 8:\n initValue = false;\n break;\n default:\n return array;\n }\n for (var i = 0; i < length_0; ++i) {\n array[i] = initValue;\n }\n return array;\n}\n\nfunction create(value_0) {\n var a0, a1, a2;\n a0 = value_0 & $intern_9;\n a1 = (value_0 >> 22) & $intern_9;\n a2 = value_0 < 0 ? $intern_10 : 0;\n return create0(a0, a1, a2);\n}\n\nfunction create0(l, m, h) {\n return { l: l, m: m, h: h };\n}\n\nfunction add_1(a, b) {\n var sum0, sum1, sum2;\n sum0 = a.l + b.l;\n sum1 = a.m + b.m + (sum0 >> 22);\n sum2 = a.h + b.h + (sum1 >> 22);\n return { l: sum0 & $intern_9, m: sum1 & $intern_9, h: sum2 & $intern_10 };\n}\n\nfunction and(a, b) {\n return { l: a.l & b.l, m: a.m & b.m, h: a.h & b.h };\n}\n\nfunction fromInt(value_0) {\n var rebase, result;\n if (value_0 > -129 && value_0 < 128) {\n rebase = value_0 + 128;\n boxedValues == null &&\n (boxedValues = initDim(\n Lcom_google_gwt_lang_LongLibBase$LongEmul_2_classLit,\n $intern_3,\n 293,\n 256,\n 0,\n 1,\n ));\n result = boxedValues[rebase];\n !result && (result = boxedValues[rebase] = create(value_0));\n return result;\n }\n return create(value_0);\n}\n\nfunction gte(a, b) {\n var signa, signb;\n signa = a.h >> 19;\n signb = b.h >> 19;\n return signa == 0\n ? signb != 0 ||\n a.h > b.h ||\n (a.h == b.h && a.m > b.m) ||\n (a.h == b.h && a.m == b.m && a.l >= b.l)\n : !(\n signb == 0 ||\n a.h < b.h ||\n (a.h == b.h && a.m < b.m) ||\n (a.h == b.h && a.m == b.m && a.l < b.l)\n );\n}\n\nfunction neq(a, b) {\n return a.l != b.l || a.m != b.m || a.h != b.h;\n}\n\nfunction or(a, b) {\n return { l: a.l | b.l, m: a.m | b.m, h: a.h | b.h };\n}\n\nfunction shl(a, n) {\n var res0, res1, res2;\n n &= 63;\n if (n < 22) {\n res0 = a.l << n;\n res1 = (a.m << n) | (a.l >> (22 - n));\n res2 = (a.h << n) | (a.m >> (22 - n));\n } else if (n < 44) {\n res0 = 0;\n res1 = a.l << (n - 22);\n res2 = (a.m << (n - 22)) | (a.l >> (44 - n));\n } else {\n res0 = 0;\n res1 = 0;\n res2 = a.l << (n - 44);\n }\n return { l: res0 & $intern_9, m: res1 & $intern_9, h: res2 & $intern_10 };\n}\n\nfunction shr(a, n) {\n var a2, negative, res0, res1, res2;\n n &= 63;\n a2 = a.h;\n negative = (a2 & $intern_11) != 0;\n negative && (a2 |= -1048576);\n if (n < 22) {\n res2 = a2 >> n;\n res1 = (a.m >> n) | (a2 << (22 - n));\n res0 = (a.l >> n) | (a.m << (22 - n));\n } else if (n < 44) {\n res2 = negative ? $intern_10 : 0;\n res1 = a2 >> (n - 22);\n res0 = (a.m >> (n - 22)) | (a2 << (44 - n));\n } else {\n res2 = negative ? $intern_10 : 0;\n res1 = negative ? $intern_9 : 0;\n res0 = a2 >> (n - 44);\n }\n return { l: res0 & $intern_9, m: res1 & $intern_9, h: res2 & $intern_10 };\n}\n\nfunction sub_0(a, b) {\n var sum0, sum1, sum2;\n sum0 = a.l - b.l;\n sum1 = a.m - b.m + (sum0 >> 22);\n sum2 = a.h - b.h + (sum1 >> 22);\n return { l: sum0 & $intern_9, m: sum1 & $intern_9, h: sum2 & $intern_10 };\n}\n\nfunction toInt(a) {\n return a.l | (a.m << 22);\n}\n\nvar boxedValues;\n\nfunction AbstractStringBuilder(string) {\n this.string = string;\n}\n\nfunction max_0(x_0, y_0) {\n return x_0 > y_0 ? x_0 : y_0;\n}\n\nfunction min_0(x_0, y_0) {\n return x_0 < y_0 ? x_0 : y_0;\n}\n\nfunction $indexOf_0(this$static, str) {\n return this$static.indexOf(str);\n}\n\nfunction _String(value_0) {\n return __valueOf(value_0, 0, value_0.length);\n}\n\nfunction __valueOf(x_0, start_0, end) {\n var s = \"\";\n for (var batchStart = start_0; batchStart < end; ) {\n var batchEnd = Math.min(batchStart + 10000, end);\n s += String.fromCharCode.apply(null, x_0.slice(batchStart, batchEnd));\n batchStart = batchEnd;\n }\n return s;\n}\n\nfunction fromCodePoint(codePoint) {\n return String.fromCharCode(codePoint & $intern_20);\n}\n\nvar Ljava_lang_String_2_classLit = createForClass(\"java.lang\", \"String\", 2);\n\nfunction $append(this$static) {\n this$static.string += \" \";\n return this$static;\n}\n\nfunction $append_1(this$static, x_0) {\n this$static.string += x_0;\n return this$static;\n}\n\nfunction StringBuffer() {\n AbstractStringBuilder.call(this, \"\");\n}\n\nfunction equals_7(array1, array2) {\n var i;\n if (array1 === array2) {\n return true;\n }\n if (array1.length != array2.length) {\n return false;\n }\n for (i = 0; i < array1.length; ++i) {\n if (array1[i] != array2[i]) {\n return false;\n }\n }\n return true;\n}\n\nlet $clinit_CoordCube_ran = false;\nfunction $clinit_CoordCube() {\n if ($clinit_CoordCube_ran) {\n return;\n }\n $clinit_CoordCube_ran = true;\n UDSliceMove = initDims(\n C_classLit,\n [$intern_3, $intern_26],\n [11, 0],\n 7,\n [495, 18],\n 2,\n );\n TwistMove = initDims(\n C_classLit,\n [$intern_3, $intern_26],\n [11, 0],\n 7,\n [324, 18],\n 2,\n );\n FlipMove = initDims(\n C_classLit,\n [$intern_3, $intern_26],\n [11, 0],\n 7,\n [336, 18],\n 2,\n );\n UDSliceConj = initDims(\n C_classLit,\n [$intern_3, $intern_26],\n [11, 0],\n 7,\n [495, 8],\n 2,\n );\n UDSliceTwistPrun = initDim(I_classLit, $intern_27, 0, 20048, 7, 1);\n UDSliceFlipPrun = initDim(I_classLit, $intern_27, 0, 20791, 7, 1);\n TwistFlipPrun = initDim(I_classLit, $intern_27, 0, 82945, 7, 1);\n CPermMove = initDims(\n C_classLit,\n [$intern_3, $intern_26],\n [11, 0],\n 7,\n [2768, 10],\n 2,\n );\n EPermMove = initDims(\n C_classLit,\n [$intern_3, $intern_26],\n [11, 0],\n 7,\n [2768, 10],\n 2,\n );\n MPermMove = initDims(\n C_classLit,\n [$intern_3, $intern_26],\n [11, 0],\n 7,\n [24, 10],\n 2,\n );\n MPermConj = initDims(\n C_classLit,\n [$intern_3, $intern_26],\n [11, 0],\n 7,\n [24, 16],\n 2,\n );\n CCombPConj = initDims(\n C_classLit,\n [$intern_3, $intern_26],\n [11, 0],\n 7,\n [140, 16],\n 2,\n );\n MCPermPrun = initDim(I_classLit, $intern_27, 0, 8305, 7, 1);\n EPermCCombPPrun = initDim(I_classLit, $intern_27, 0, 48441, 7, 1);\n}\n\nfunction $doMovePrun(this$static, cc, m) {\n this$static.slice_0 = UDSliceMove[cc.slice_0][m];\n this$static.flip =\n FlipMove[cc.flip][($clinit_CubieCube(), Sym8Move)[(m << 3) | cc.fsym]];\n this$static.fsym = (this$static.flip & 7) ^ cc.fsym;\n this$static.flip >>= 3;\n this$static.twist = TwistMove[cc.twist][Sym8Move[(m << 3) | cc.tsym]];\n this$static.tsym = (this$static.twist & 7) ^ cc.tsym;\n this$static.twist >>= 3;\n this$static.prun = max_0(\n max_0(\n getPruning(\n UDSliceTwistPrun,\n this$static.twist * 495 +\n UDSliceConj[this$static.slice_0][this$static.tsym],\n ),\n getPruning(\n UDSliceFlipPrun,\n this$static.flip * 495 +\n UDSliceConj[this$static.slice_0][this$static.fsym],\n ),\n ),\n getPruning(\n TwistFlipPrun,\n (this$static.twist << 11) |\n FlipS2RF[\n (this$static.flip << 3) | (this$static.fsym ^ this$static.tsym)\n ],\n ),\n );\n return this$static.prun;\n}\n\nfunction $doMovePrunConj(this$static, cc, m) {\n m = ($clinit_CubieCube(), SymMove_0)[3][m];\n this$static.flipc =\n FlipMove[cc.flipc >> 3][Sym8Move[(m << 3) | (cc.flipc & 7)]] ^\n (cc.flipc & 7);\n this$static.twistc =\n TwistMove[cc.twistc >> 3][Sym8Move[(m << 3) | (cc.twistc & 7)]] ^\n (cc.twistc & 7);\n return getPruning(\n TwistFlipPrun,\n ((this$static.twistc >> 3) << 11) |\n FlipS2RF[this$static.flipc ^ (this$static.twistc & 7)],\n );\n}\n\nfunction $setWithPrun(this$static, cc, depth) {\n var pc;\n this$static.twist = ($clinit_CubieCube(), TwistR2S)[$getTwist(cc)];\n this$static.flip = FlipR2S[$getFlip(cc)];\n this$static.tsym = this$static.twist & 7;\n this$static.twist = this$static.twist >> 3;\n this$static.prun = getPruning(\n TwistFlipPrun,\n (this$static.twist << 11) | FlipS2RF[this$static.flip ^ this$static.tsym],\n );\n if (this$static.prun > depth) {\n return false;\n }\n this$static.fsym = this$static.flip & 7;\n this$static.flip = this$static.flip >> 3;\n this$static.slice_0 = 494 - getComb(cc.ea, 8, true);\n this$static.prun = max_0(\n this$static.prun,\n max_0(\n getPruning(\n UDSliceTwistPrun,\n this$static.twist * 495 +\n UDSliceConj[this$static.slice_0][this$static.tsym],\n ),\n getPruning(\n UDSliceFlipPrun,\n this$static.flip * 495 +\n UDSliceConj[this$static.slice_0][this$static.fsym],\n ),\n ),\n );\n if (this$static.prun > depth) {\n return false;\n }\n pc = new CubieCube();\n CornConjugate(cc, 1, pc);\n EdgeConjugate(cc, 1, pc);\n this$static.twistc = TwistR2S[$getTwist(pc)];\n this$static.flipc = FlipR2S[$getFlip(pc)];\n this$static.prun = max_0(\n this$static.prun,\n getPruning(\n TwistFlipPrun,\n ((this$static.twistc >> 3) << 11) |\n FlipS2RF[this$static.flipc ^ (this$static.twistc & 7)],\n ),\n );\n return this$static.prun <= depth;\n}\n\nfunction CoordCube() {\n $clinit_CoordCube();\n}\n\nfunction getPruning(table, index_0) {\n $clinit_CoordCube();\n return (table[index_0 >> 3] >> (index_0 << 2)) & 15;\n}\n\nfunction init_0(fullInit) {\n $clinit_CoordCube();\n if (initLevel == 2 || (initLevel == 1 && !fullInit)) {\n return;\n }\n if (initLevel == 0) {\n initPermSym2Raw();\n initCPermMove();\n initEPermMove();\n initMPermMoveConj();\n initCombPMoveConj();\n $clinit_CubieCube();\n initSym2Raw(\n 2048,\n FlipS2R,\n FlipR2S,\n (SymStateFlip = initDim(C_classLit, $intern_26, 0, 336, 7, 1)),\n 0,\n );\n initSym2Raw(\n 2187,\n TwistS2R,\n TwistR2S,\n (SymStateTwist = initDim(C_classLit, $intern_26, 0, 324, 7, 1)),\n 1,\n );\n initFlipMove();\n initTwistMove();\n initUDSliceMoveConj();\n }\n initRawSymPrun(\n MCPermPrun,\n MPermMove,\n MPermConj,\n CPermMove,\n ($clinit_CubieCube(), SymStatePerm),\n 584244,\n fullInit,\n );\n initRawSymPrun(\n EPermCCombPPrun,\n CCombPMove,\n CCombPConj,\n EPermMove,\n SymStatePerm,\n 514084,\n fullInit,\n );\n initRawSymPrun(\n UDSliceTwistPrun,\n UDSliceMove,\n UDSliceConj,\n TwistMove,\n SymStateTwist,\n 431619,\n fullInit,\n );\n initRawSymPrun(\n UDSliceFlipPrun,\n UDSliceMove,\n UDSliceConj,\n FlipMove,\n SymStateFlip,\n 431619,\n fullInit,\n );\n initRawSymPrun(\n TwistFlipPrun,\n null,\n null,\n TwistMove,\n SymStateTwist,\n 103939,\n fullInit,\n );\n initLevel = fullInit ? 2 : 1;\n}\n\nfunction initCPermMove() {\n var c, d, i, j;\n c = new CubieCube();\n d = new CubieCube();\n for (i = 0; i < 2768; i++) {\n $setCPerm(c, ($clinit_CubieCube(), EPermS2R)[i]);\n for (j = 0; j < 10; j++) {\n CornMult(c, moveCube[($clinit_Util(), ud2std)[j]], d);\n CPermMove[i][j] =\n ESym2CSym(EPermR2S[getNPerm(d.ca, 8, false)]) & $intern_20;\n }\n }\n}\n\nfunction initCombPMoveConj() {\n var c, d, i, j, j0;\n c = new CubieCube();\n d = new CubieCube();\n CCombPMove = initDims(\n C_classLit,\n [$intern_3, $intern_26],\n [11, 0],\n 7,\n [140, 10],\n 2,\n );\n for (i = 0; i < 140; i++) {\n setComb(c.ca, i % 70, 0, false);\n for (j0 = 0; j0 < 10; j0++) {\n CornMult(\n c,\n ($clinit_CubieCube(), moveCube)[($clinit_Util(), ud2std)[j0]],\n d,\n );\n CCombPMove[i][j0] =\n (getComb(d.ca, 0, false) + 70 * (((165 >> j0) & 1) ^ ~~(i / 70))) &\n $intern_20;\n }\n for (j = 0; j < 16; j++) {\n CornConjugate(c, ($clinit_CubieCube(), SymMultInv)[0][j], d);\n CCombPConj[i][j] =\n (getComb(d.ca, 0, false) + 70 * ~~(i / 70)) & $intern_20;\n }\n }\n}\n\nfunction initEPermMove() {\n var c, d, i, j;\n c = new CubieCube();\n d = new CubieCube();\n for (i = 0; i < 2768; i++) {\n $setEPerm(c, ($clinit_CubieCube(), EPermS2R)[i]);\n for (j = 0; j < 10; j++) {\n EdgeMult(c, moveCube[($clinit_Util(), ud2std)[j]], d);\n EPermMove[i][j] = EPermR2S[getNPerm(d.ea, 8, true)];\n }\n }\n}\n\nfunction initFlipMove() {\n var c, d, i, j;\n c = new CubieCube();\n d = new CubieCube();\n for (i = 0; i < 336; i++) {\n $setFlip(c, ($clinit_CubieCube(), FlipS2R)[i]);\n for (j = 0; j < 18; j++) {\n EdgeMult(c, moveCube[j], d);\n FlipMove[i][j] = FlipR2S[$getFlip(d)];\n }\n }\n}\n\nfunction initMPermMoveConj() {\n var c, d, i, j, j0;\n c = new CubieCube();\n d = new CubieCube();\n for (i = 0; i < 24; i++) {\n setNPerm(c.ea, i, 12, true);\n for (j0 = 0; j0 < 10; j0++) {\n EdgeMult(\n c,\n ($clinit_CubieCube(), moveCube)[($clinit_Util(), ud2std)[j0]],\n d,\n );\n MPermMove[i][j0] = getNPerm(d.ea, 12, true) % 24 & $intern_20;\n }\n for (j = 0; j < 16; j++) {\n EdgeConjugate(c, ($clinit_CubieCube(), SymMultInv)[0][j], d);\n MPermConj[i][j] = getNPerm(d.ea, 12, true) % 24 & $intern_20;\n }\n }\n}\n\nfunction initRawSymPrun(\n PrunTable,\n RawMove,\n RawConj,\n SymMove,\n SymState,\n PrunFlag,\n fullInit,\n) {\n var INV_DEPTH,\n ISTFP,\n IS_PHASE2,\n MAX_DEPTH,\n MIN_DEPTH,\n NEXT_AXIS_MAGIC,\n N_MOVES,\n N_RAW,\n N_SIZE,\n SEARCH_DEPTH,\n SYM_E2C_MAGIC,\n SYM_MASK,\n SYM_SHIFT,\n check,\n depth,\n flip,\n fsym,\n i,\n i0,\n idx,\n idxx,\n inv,\n j,\n m,\n mask,\n prun,\n raw,\n rawx,\n selArrMask,\n select,\n sym,\n symState,\n symx,\n val,\n val0,\n xorVal;\n SYM_SHIFT = PrunFlag & 15;\n SYM_E2C_MAGIC = ((PrunFlag >> 4) & 1) == 1 ? $intern_28 : 0;\n IS_PHASE2 = ((PrunFlag >> 5) & 1) == 1;\n INV_DEPTH = (PrunFlag >> 8) & 15;\n MAX_DEPTH = (PrunFlag >> 12) & 15;\n MIN_DEPTH = (PrunFlag >> 16) & 15;\n SEARCH_DEPTH = fullInit ? MAX_DEPTH : MIN_DEPTH;\n SYM_MASK = (1 << SYM_SHIFT) - 1;\n ISTFP = RawMove == null;\n N_RAW = ISTFP ? 2048 : RawMove.length;\n N_SIZE = N_RAW * SymMove.length;\n N_MOVES = IS_PHASE2 ? 10 : 18;\n NEXT_AXIS_MAGIC = N_MOVES == 10 ? 66 : 599186;\n depth = ((PrunTable[N_SIZE >> 3] >> (N_SIZE << 2)) & 15) - 1;\n\n if (depth == -1) {\n for (i = 0; i < ~~(N_SIZE / 8) + 1; i++) {\n PrunTable[i] = $intern_29;\n }\n PrunTable[0] ^= 1;\n depth = 0;\n }\n while (depth < SEARCH_DEPTH) {\n mask = ((depth + 1) * $intern_29) ^ -1;\n for (i0 = 0; i0 < PrunTable.length; i0++) {\n val0 = PrunTable[i0] ^ mask;\n val0 &= val0 >> 1;\n PrunTable[i0] += val0 & (val0 >> 2) & $intern_29;\n }\n inv = depth > INV_DEPTH;\n select = inv ? depth + 2 : depth;\n selArrMask = select * $intern_29;\n check = inv ? depth : depth + 2;\n ++depth;\n xorVal = depth ^ (depth + 1);\n val = 0;\n for (i = 0; i < N_SIZE; ++i, val >>= 4) {\n if ((i & 7) == 0) {\n val = PrunTable[i >> 3];\n if (\n (((val ^ selArrMask) - $intern_29) &\n ~(val ^ selArrMask) &\n -2004318072) ==\n 0\n ) {\n i += 7;\n continue;\n }\n }\n if ((val & 15) != select) {\n continue;\n }\n raw = i % N_RAW;\n sym = ~~(i / N_RAW);\n flip = 0;\n fsym = 0;\n if (ISTFP) {\n flip = ($clinit_CubieCube(), FlipR2S)[raw];\n fsym = flip & 7;\n flip >>= 3;\n }\n for (m = 0; m < N_MOVES; m++) {\n symx = SymMove[sym][m];\n ISTFP\n ? (rawx = ($clinit_CubieCube(), FlipS2RF)[\n FlipMove[flip][Sym8Move[(m << 3) | fsym]] ^\n fsym ^\n (symx & SYM_MASK)\n ])\n : (rawx = RawConj[RawMove[raw][m]][symx & SYM_MASK]);\n symx >>= SYM_SHIFT;\n idx = symx * N_RAW + rawx;\n prun = (PrunTable[idx >> 3] >> (idx << 2)) & 15;\n if (prun != check) {\n prun < depth - 1 && (m += (NEXT_AXIS_MAGIC >> m) & 3);\n continue;\n }\n if (inv) {\n PrunTable[i >> 3] ^= xorVal << (i << 2);\n break;\n }\n PrunTable[idx >> 3] ^= xorVal << (idx << 2);\n for (j = 1, symState = SymState[symx]; (symState >>= 1) != 0; j++) {\n if ((symState & 1) != 1) {\n continue;\n }\n idxx = symx * N_RAW;\n ISTFP\n ? (idxx += ($clinit_CubieCube(), FlipS2RF)[FlipR2S[rawx] ^ j])\n : (idxx += RawConj[rawx][j ^ ((SYM_E2C_MAGIC >> (j << 1)) & 3)]);\n if (((PrunTable[idxx >> 3] >> (idxx << 2)) & 15) == check) {\n PrunTable[idxx >> 3] ^= xorVal << (idxx << 2);\n }\n }\n }\n }\n }\n}\n\nfunction initTwistMove() {\n var c, d, i, j;\n c = new CubieCube();\n d = new CubieCube();\n for (i = 0; i < 324; i++) {\n $setTwist(c, ($clinit_CubieCube(), TwistS2R)[i]);\n for (j = 0; j < 18; j++) {\n CornMult(c, moveCube[j], d);\n TwistMove[i][j] = TwistR2S[$getTwist(d)];\n }\n }\n}\n\nfunction initUDSliceMoveConj() {\n var c, d, i, i0, j, j0, k, udslice;\n c = new CubieCube();\n d = new CubieCube();\n for (i0 = 0; i0 < 495; i0++) {\n setComb(c.ea, 494 - i0, 8, true);\n for (j0 = 0; j0 < 18; j0 += 3) {\n EdgeMult(c, ($clinit_CubieCube(), moveCube)[j0], d);\n UDSliceMove[i0][j0] = (494 - getComb(d.ea, 8, true)) & $intern_20;\n }\n for (j = 0; j < 16; j += 2) {\n EdgeConjugate(c, ($clinit_CubieCube(), SymMultInv)[0][j], d);\n UDSliceConj[i0][j >> 1] = (494 - getComb(d.ea, 8, true)) & $intern_20;\n }\n }\n for (i = 0; i < 495; i++) {\n for (j = 0; j < 18; j += 3) {\n udslice = UDSliceMove[i][j];\n for (k = 1; k < 3; k++) {\n udslice = UDSliceMove[udslice][j];\n UDSliceMove[i][j + k] = udslice & $intern_20;\n }\n }\n }\n}\n\ndefineClass(31, 1, { 31: 1 }, CoordCube);\n_.flip = 0;\n_.flipc = 0;\n_.fsym = 0;\n_.prun = 0;\n_.slice_0 = 0;\n_.tsym = 0;\n_.twist = 0;\n_.twistc = 0;\nvar CCombPConj,\n CCombPMove,\n CPermMove,\n EPermCCombPPrun,\n EPermMove,\n FlipMove,\n MCPermPrun,\n MPermConj,\n MPermMove,\n TwistFlipPrun,\n TwistMove,\n UDSliceConj,\n UDSliceFlipPrun,\n UDSliceMove,\n UDSliceTwistPrun,\n initLevel = 0;\nvar Lorg_cubing_min2phase_client_CoordCube_2_classLit = createForClass(\n \"org.cubing.min2phase.client\",\n \"CoordCube\",\n 31,\n);\nlet $clinit_CubieCube_ran = false;\nfunction $clinit_CubieCube() {\n if ($clinit_CubieCube_ran) {\n return;\n }\n $clinit_CubieCube_ran = true;\n CubeSym = initDim(\n Lorg_cubing_min2phase_client_CubieCube_2_classLit,\n $intern_3,\n 7,\n 16,\n 0,\n 1,\n );\n moveCube = initDim(\n Lorg_cubing_min2phase_client_CubieCube_2_classLit,\n $intern_3,\n 7,\n 18,\n 0,\n 1,\n );\n moveCubeSym = initDim(J_classLit, $intern_3, 0, 18, 6, 1);\n firstMoveSym = initDim(I_classLit, $intern_27, 0, 48, 7, 1);\n SymMult = initDims(\n I_classLit,\n [$intern_3, $intern_27],\n [17, 0],\n 7,\n [16, 16],\n 2,\n );\n SymMultInv = initDims(\n I_classLit,\n [$intern_3, $intern_27],\n [17, 0],\n 7,\n [16, 16],\n 2,\n );\n SymMove_0 = initDims(\n I_classLit,\n [$intern_3, $intern_27],\n [17, 0],\n 7,\n [16, 18],\n 2,\n );\n Sym8Move = initDim(I_classLit, $intern_27, 0, 144, 7, 1);\n SymMoveUD = initDims(\n I_classLit,\n [$intern_3, $intern_27],\n [17, 0],\n 7,\n [16, 18],\n 2,\n );\n FlipS2R = initDim(C_classLit, $intern_26, 0, 336, 7, 1);\n TwistS2R = initDim(C_classLit, $intern_26, 0, 324, 7, 1);\n EPermS2R = initDim(C_classLit, $intern_26, 0, 2768, 7, 1);\n Perm2CombP = initDim(B_classLit, $intern_30, 0, 2768, 7, 1);\n PermInvEdgeSym = initDim(C_classLit, $intern_26, 0, 2768, 7, 1);\n MPermInv = initDim(B_classLit, $intern_30, 0, 24, 7, 1);\n FlipR2S = initDim(C_classLit, $intern_26, 0, 2048, 7, 1);\n TwistR2S = initDim(C_classLit, $intern_26, 0, 2187, 7, 1);\n EPermR2S = initDim(C_classLit, $intern_26, 0, 40320, 7, 1);\n FlipS2RF = initDim(C_classLit, $intern_26, 0, 2688, 7, 1);\n urf1 = new CubieCube_0(2531, 1373, 67026819, 1367);\n urf2 = new CubieCube_0(2089, 1906, 322752913, 2040);\n urfMove = initValues(\n getClassLiteralForArray(B_classLit, 2),\n $intern_3,\n 10,\n 0,\n [\n initValues(\n getClassLiteralForArray(B_classLit, 1),\n $intern_30,\n 0,\n 7,\n [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17],\n ),\n initValues(\n getClassLiteralForArray(B_classLit, 1),\n $intern_30,\n 0,\n 7,\n [6, 7, 8, 0, 1, 2, 3, 4, 5, 15, 16, 17, 9, 10, 11, 12, 13, 14],\n ),\n initValues(\n getClassLiteralForArray(B_classLit, 1),\n $intern_30,\n 0,\n 7,\n [3, 4, 5, 6, 7, 8, 0, 1, 2, 12, 13, 14, 15, 16, 17, 9, 10, 11],\n ),\n initValues(\n getClassLiteralForArray(B_classLit, 1),\n $intern_30,\n 0,\n 7,\n [2, 1, 0, 5, 4, 3, 8, 7, 6, 11, 10, 9, 14, 13, 12, 17, 16, 15],\n ),\n initValues(\n getClassLiteralForArray(B_classLit, 1),\n $intern_30,\n 0,\n 7,\n [8, 7, 6, 2, 1, 0, 5, 4, 3, 17, 16, 15, 11, 10, 9, 14, 13, 12],\n ),\n initValues(\n getClassLiteralForArray(B_classLit, 1),\n $intern_30,\n 0,\n 7,\n [5, 4, 3, 8, 7, 6, 2, 1, 0, 14, 13, 12, 17, 16, 15, 11, 10, 9],\n ),\n ],\n );\n initMove();\n initSym();\n}\n\nfunction $$init(this$static) {\n this$static.ca = initValues(\n getClassLiteralForArray(B_classLit, 1),\n $intern_30,\n 0,\n 7,\n [0, 1, 2, 3, 4, 5, 6, 7],\n );\n this$static.ea = initValues(\n getClassLiteralForArray(B_classLit, 1),\n $intern_30,\n 0,\n 7,\n [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22],\n );\n}\n\nfunction $URFConjugate(this$static) {\n !this$static.temps && (this$static.temps = new CubieCube());\n CornMult(urf2, this$static, this$static.temps);\n CornMult(this$static.temps, urf1, this$static);\n EdgeMult(urf2, this$static, this$static.temps);\n EdgeMult(this$static.temps, urf1, this$static);\n}\n\nfunction $copy(this$static, c) {\n var i, i0;\n for (i0 = 0; i0 < 8; i0++) {\n this$static.ca[i0] = c.ca[i0];\n }\n for (i = 0; i < 12; i++) {\n this$static.ea[i] = c.ea[i];\n }\n}\n\nfunction $getCPermSym(this$static) {\n return ESym2CSym(EPermR2S[getNPerm(this$static.ca, 8, false)]);\n}\n\nfunction $getEPermSym(this$static) {\n return EPermR2S[getNPerm(this$static.ea, 8, true)];\n}\n\nfunction $getFlip(this$static) {\n var i, idx;\n idx = 0;\n for (i = 0; i < 11; i++) {\n idx = (idx << 1) | (this$static.ea[i] & 1);\n }\n return idx;\n}\n\nfunction $getTwist(this$static) {\n var i, idx;\n idx = 0;\n for (i = 0; i < 7; i++) {\n idx += (idx << 1) + (this$static.ca[i] >> 3);\n }\n return idx;\n}\n\nfunction $invCubieCube(this$static) {\n var corn, edge;\n !this$static.temps && (this$static.temps = new CubieCube());\n for (edge = 0; edge < 12; edge++) {\n this$static.temps.ea[this$static.ea[edge] >> 1] =\n (((edge << 1) | (this$static.ea[edge] & 1)) << 24) >> 24;\n }\n for (corn = 0; corn < 8; corn++) {\n this$static.temps.ca[this$static.ca[corn] & 7] =\n ((corn | ((32 >> (this$static.ca[corn] >> 3)) & 24)) << 24) >> 24;\n }\n $copy(this$static, this$static.temps);\n}\n\nfunction $selfSymmetry(this$static) {\n var c, cperm, cpermx, d, i, sym, urfInv;\n c = new CubieCube_1(this$static);\n d = new CubieCube();\n cperm = ESym2CSym(EPermR2S[getNPerm(c.ca, 8, false)]) >> 4;\n sym = { l: 0, m: 0, h: 0 };\n for (urfInv = 0; urfInv < 6; urfInv++) {\n cpermx = ESym2CSym(EPermR2S[getNPerm(c.ca, 8, false)]) >> 4;\n if (cperm == cpermx) {\n for (i = 0; i < 16; i++) {\n CornConjugate(c, SymMultInv[0][i], d);\n if (equals_7(d.ca, this$static.ca)) {\n EdgeConjugate(c, SymMultInv[0][i], d);\n equals_7(d.ea, this$static.ea) &&\n (sym = or(\n sym,\n shl(\n { l: 1, m: 0, h: 0 },\n ((urfInv << 4) | i) < 48 ? (urfInv << 4) | i : 48,\n ),\n ));\n }\n }\n }\n $URFConjugate(c);\n urfInv % 3 == 2 && $invCubieCube(c);\n }\n return sym;\n}\n\nfunction $setCPerm(this$static, idx) {\n setNPerm(this$static.ca, idx, 8, false);\n}\n\nfunction $setEPerm(this$static, idx) {\n setNPerm(this$static.ea, idx, 8, true);\n}\n\nfunction $setFlip(this$static, idx) {\n var i, parity, val;\n parity = 0;\n for (i = 10; i >= 0; --i, idx >>= 1) {\n parity ^= val = idx & 1;\n this$static.ea[i] = (((this$static.ea[i] & -2) | val) << 24) >> 24;\n }\n this$static.ea[11] = (((this$static.ea[11] & -2) | parity) << 24) >> 24;\n}\n\nfunction $setTwist(this$static, idx) {\n var i, twst, val;\n twst = 15;\n for (i = 6; i >= 0; --i, idx = ~~(idx / 3)) {\n twst -= val = idx % 3;\n this$static.ca[i] = (((this$static.ca[i] & 7) | (val << 3)) << 24) >> 24;\n }\n this$static.ca[7] = (((this$static.ca[7] & 7) | (twst % 3 << 3)) << 24) >> 24;\n}\n\nfunction $verify(this$static) {\n var c, cornMask, e, edgeMask, sum;\n sum = 0;\n edgeMask = 0;\n for (e = 0; e < 12; e++) {\n edgeMask |= 1 << (this$static.ea[e] >> 1);\n sum ^= this$static.ea[e] & 1;\n }\n if (edgeMask != 4095) {\n return -2;\n }\n if (sum != 0) {\n return -3;\n }\n cornMask = 0;\n sum = 0;\n for (c = 0; c < 8; c++) {\n cornMask |= 1 << (this$static.ca[c] & 7);\n sum += this$static.ca[c] >> 3;\n }\n if (cornMask != 255) {\n return -4;\n }\n if (sum % 3 != 0) {\n return -5;\n }\n if (\n (getNParity(getNPerm(this$static.ea, 12, true), 12) ^\n getNParity(getNPerm(this$static.ca, 8, false), 8)) !=\n 0\n ) {\n return -6;\n }\n return 0;\n}\n\nfunction CornConjugate(a, idx, b) {\n $clinit_CubieCube();\n var corn, ori, oriA, oriB, s, sinv;\n sinv = CubeSym[SymMultInv[0][idx]];\n s = CubeSym[idx];\n for (corn = 0; corn < 8; corn++) {\n oriA = sinv.ca[a.ca[s.ca[corn] & 7] & 7] >> 3;\n oriB = a.ca[s.ca[corn] & 7] >> 3;\n ori = oriA < 3 ? oriB : (3 - oriB) % 3;\n b.ca[corn] =\n (((sinv.ca[a.ca[s.ca[corn] & 7] & 7] & 7) | (ori << 3)) << 24) >> 24;\n }\n}\n\nfunction CornMult(a, b, prod) {\n $clinit_CubieCube();\n var corn, oriA, oriB;\n for (corn = 0; corn < 8; corn++) {\n oriA = a.ca[b.ca[corn] & 7] >> 3;\n oriB = b.ca[corn] >> 3;\n prod.ca[corn] =\n (((a.ca[b.ca[corn] & 7] & 7) | ((oriA + oriB) % 3 << 3)) << 24) >> 24;\n }\n}\n\nfunction CornMultFull(a, b, prod) {\n var corn, ori, oriA, oriB;\n for (corn = 0; corn < 8; corn++) {\n oriA = a.ca[b.ca[corn] & 7] >> 3;\n oriB = b.ca[corn] >> 3;\n ori = oriA + (oriA < 3 ? oriB : 6 - oriB);\n ori = (ori % 3) + (oriA < 3 == oriB < 3 ? 0 : 3);\n prod.ca[corn] = (((a.ca[b.ca[corn] & 7] & 7) | (ori << 3)) << 24) >> 24;\n }\n}\n\nfunction CubieCube() {\n $clinit_CubieCube();\n $$init(this);\n}\n\nfunction CubieCube_0(cperm, twist, eperm, flip) {\n $$init(this);\n setNPerm(this.ca, cperm, 8, false);\n $setTwist(this, twist);\n setNPerm(this.ea, eperm, 12, true);\n $setFlip(this, flip);\n}\n\nfunction CubieCube_1(c) {\n $$init(this);\n $copy(this, c);\n}\n\nfunction ESym2CSym(idx) {\n $clinit_CubieCube();\n return idx ^ (($intern_28 >> ((idx & 15) << 1)) & 3);\n}\n\nfunction EdgeConjugate(a, idx, b) {\n $clinit_CubieCube();\n var ed, s, sinv;\n sinv = CubeSym[SymMultInv[0][idx]];\n s = CubeSym[idx];\n for (ed = 0; ed < 12; ed++) {\n b.ea[ed] =\n ((sinv.ea[a.ea[s.ea[ed] >> 1] >> 1] ^\n (a.ea[s.ea[ed] >> 1] & 1) ^\n (s.ea[ed] & 1)) <<\n 24) >>\n 24;\n }\n}\n\nfunction EdgeMult(a, b, prod) {\n $clinit_CubieCube();\n var ed;\n for (ed = 0; ed < 12; ed++) {\n prod.ea[ed] = ((a.ea[b.ea[ed] >> 1] ^ (b.ea[ed] & 1)) << 24) >> 24;\n }\n}\n\nfunction getPermSymInv(idx, sym, isCorner) {\n $clinit_CubieCube();\n var idxi;\n idxi = PermInvEdgeSym[idx];\n isCorner && (idxi = idxi ^ (($intern_28 >> ((idxi & 15) << 1)) & 3));\n return (idxi & 65520) | SymMult[idxi & 15][sym];\n}\n\nfunction getSkipMoves() {\n $clinit_CubieCube();\n // var i, ret;\n // ret = 0;\n // for (i = 1; neq((ssym = shr(ssym, 1)), { l: 0, m: 0, h: 0 }); i++) {\n // eq(and(ssym, { l: 1, m: 0, h: 0 }), { l: 1, m: 0, h: 0 }) &&\n // (ret |= firstMoveSym[i]);\n // }\n return 0;\n}\n\nfunction initMove() {\n var a, p;\n moveCube[0] = new CubieCube_0(15120, 0, 119750400, 0);\n moveCube[3] = new CubieCube_0(21021, 1494, 323403417, 0);\n moveCube[6] = new CubieCube_0(8064, 1236, 29441808, 550);\n moveCube[9] = new CubieCube_0(9, 0, 5880, 0);\n moveCube[12] = new CubieCube_0(1230, 412, 2949660, 0);\n moveCube[15] = new CubieCube_0(224, 137, 328552, 137);\n for (a = 0; a < 18; a += 3) {\n for (p = 0; p < 2; p++) {\n moveCube[a + p + 1] = new CubieCube();\n EdgeMult(moveCube[a + p], moveCube[a], moveCube[a + p + 1]);\n CornMult(moveCube[a + p], moveCube[a], moveCube[a + p + 1]);\n }\n }\n}\n\nfunction initPermSym2Raw() {\n $clinit_CubieCube();\n var cc, i, i0;\n initSym2Raw(\n 40320,\n EPermS2R,\n EPermR2S,\n (SymStatePerm = initDim(C_classLit, $intern_26, 0, 2768, 7, 1)),\n 2,\n );\n cc = new CubieCube();\n for (i0 = 0; i0 < 2768; i0++) {\n $setEPerm(cc, EPermS2R[i0]);\n Perm2CombP[i0] =\n ((getComb(cc.ea, 0, true) + getNParity(EPermS2R[i0], 8) * 70) << 24) >>\n 24;\n $invCubieCube(cc);\n PermInvEdgeSym[i0] = EPermR2S[getNPerm(cc.ea, 8, true)];\n }\n for (i = 0; i < 24; i++) {\n setNPerm(cc.ea, i, 12, true);\n $invCubieCube(cc);\n MPermInv[i] = (getNPerm(cc.ea, 12, true) % 24 << 24) >> 24;\n }\n}\n\nfunction initSym() {\n var c, d, f2, i, i0, i1, i2, j, j0, j1, k, lr2, m, s, t, u4;\n c = new CubieCube();\n d = new CubieCube();\n f2 = new CubieCube_0(28783, 0, 259268407, 0);\n u4 = new CubieCube_0(15138, 0, 119765538, 7);\n lr2 = new CubieCube_0(5167, 0, 83473207, 0);\n for (i0 = 0; i0 < 8; i0++) {\n lr2.ca[i0] = narrow_byte(lr2.ca[i0] | 24);\n }\n for (i1 = 0; i1 < 16; i1++) {\n CubeSym[i1] = new CubieCube_1(c);\n CornMultFull(c, u4, d);\n EdgeMult(c, u4, d);\n t = d;\n d = c;\n c = t;\n if (i1 % 4 == 3) {\n CornMultFull(t, lr2, d);\n EdgeMult(t, lr2, d);\n t = d;\n d = c;\n c = t;\n }\n if (i1 % 8 == 7) {\n CornMultFull(t, f2, d);\n EdgeMult(t, f2, d);\n t = d;\n d = c;\n c = t;\n }\n }\n for (i2 = 0; i2 < 16; i2++) {\n for (j0 = 0; j0 < 16; j0++) {\n CornMultFull(CubeSym[i2], CubeSym[j0], c);\n for (k = 0; k < 16; k++) {\n if (equals_7(CubeSym[k].ca, c.ca)) {\n SymMult[i2][j0] = k;\n SymMultInv[k][j0] = i2;\n break;\n }\n }\n }\n }\n for (j1 = 0; j1 < 18; j1++) {\n for (s = 0; s < 16; s++) {\n CornConjugate(moveCube[j1], SymMultInv[0][s], c);\n for (m = 0; m < 18; m++) {\n if (equals_7(moveCube[m].ca, c.ca)) {\n SymMove_0[s][j1] = m;\n SymMoveUD[s][($clinit_Util(), std2ud)[j1]] = std2ud[m];\n break;\n }\n }\n s % 2 == 0 && (Sym8Move[(j1 << 3) | (s >> 1)] = SymMove_0[s][j1]);\n }\n }\n for (i = 0; i < 18; i++) {\n moveCubeSym[i] = $selfSymmetry(moveCube[i]);\n j = i;\n for (s = 0; s < 48; s++) {\n SymMove_0[s % 16][j] < i && (firstMoveSym[s] |= 1 << i);\n s % 16 == 15 && (j = urfMove[2][j]);\n }\n }\n}\n\nfunction initSym2Raw(N_RAW, Sym2Raw, Raw2Sym, SymState, coord) {\n $clinit_CubieCube();\n var c, count, d, i, idx, isEdge, s, symIdx, sym_inc;\n c = new CubieCube();\n d = new CubieCube();\n count = 0;\n idx = 0;\n sym_inc = coord >= 2 ? 1 : 2;\n isEdge = coord != 1;\n for (i = 0; i < N_RAW; i++) {\n if (Raw2Sym[i] != 0) {\n continue;\n }\n switch (coord) {\n case 0:\n $setFlip(c, i);\n break;\n case 1:\n $setTwist(c, i);\n break;\n case 2:\n setNPerm(c.ea, i, 8, true);\n }\n for (s = 0; s < 16; s += sym_inc) {\n isEdge ? EdgeConjugate(c, s, d) : CornConjugate(c, s, d);\n switch (coord) {\n case 0:\n idx = $getFlip(d);\n break;\n case 1:\n idx = $getTwist(d);\n break;\n case 2:\n idx = getNPerm(d.ea, 8, true);\n }\n coord == 0 && (FlipS2RF[(count << 3) | (s >> 1)] = idx & $intern_20);\n idx == i &&\n (SymState[count] =\n (SymState[count] | (1 << ~~(s / sym_inc))) & $intern_20);\n symIdx = ~~(((count << 4) | s) / sym_inc);\n Raw2Sym[idx] = symIdx & $intern_20;\n }\n Sym2Raw[count++] = i & $intern_20;\n }\n return count;\n}\n\nvar CubeSym,\n EPermR2S,\n EPermS2R,\n FlipR2S,\n FlipS2R,\n FlipS2RF,\n MPermInv,\n Perm2CombP,\n PermInvEdgeSym,\n Sym8Move,\n SymMove_0,\n SymMoveUD,\n SymMult,\n SymMultInv,\n SymStateFlip,\n SymStatePerm,\n SymStateTwist,\n TwistR2S,\n TwistS2R,\n firstMoveSym,\n moveCube,\n moveCubeSym,\n urf1,\n urf2,\n urfMove;\nvar Lorg_cubing_min2phase_client_CubieCube_2_classLit = createForClass(\n \"org.cubing.min2phase.client\",\n \"CubieCube\",\n 7,\n);\n\nfunction $initPhase2(\n this$static,\n p2corn,\n p2csym,\n p2edge,\n p2esym,\n p2mid,\n edgei,\n corni,\n) {\n var depth2, i, i0, prun, ret;\n prun = max_0(\n getPruning(\n ($clinit_CoordCube(), EPermCCombPPrun),\n (edgei >> 4) * 140 +\n CCombPConj[($clinit_CubieCube(), Perm2CombP)[corni >> 4] & 255][\n SymMultInv[edgei & 15][corni & 15]\n ],\n ),\n max_0(\n getPruning(\n EPermCCombPPrun,\n p2edge * 140 +\n CCombPConj[Perm2CombP[p2corn] & 255][SymMultInv[p2esym][p2csym]],\n ),\n getPruning(MCPermPrun, p2corn * 24 + MPermConj[p2mid][p2csym]),\n ),\n );\n if (prun > this$static.maxDep2) {\n return prun - this$static.maxDep2;\n }\n for (depth2 = this$static.maxDep2; depth2 >= prun; depth2--) {\n ret = $phase2(\n this$static,\n p2edge,\n p2esym,\n p2corn,\n p2csym,\n p2mid,\n depth2,\n this$static.depth1,\n 10,\n );\n if (ret < 0) {\n break;\n }\n depth2 -= ret;\n this$static.solLen = 0;\n this$static.solution = new Util$Solution();\n $setArgs(\n this$static.solution,\n this$static.verbose,\n this$static.urfIdx,\n this$static.depth1,\n );\n for (i0 = 0; i0 < this$static.depth1 + depth2; i0++) {\n $appendSolMove(this$static.solution, this$static.move[i0]);\n }\n for (i = this$static.preMoveLen - 1; i >= 0; i--) {\n $appendSolMove(this$static.solution, this$static.preMoves[i]);\n }\n this$static.solLen = this$static.solution.length_0;\n }\n if (depth2 != this$static.maxDep2) {\n this$static.maxDep2 = min_0(\n MAX_DEPTH2,\n this$static.solLen - this$static.length1 - 1,\n );\n return gte(this$static.probe, this$static.probeMin) ? 0 : 1;\n }\n return 1;\n}\n\nfunction $initPhase2Pre(this$static) {\n var corni,\n edgei,\n i,\n lastMove,\n lastPre,\n m,\n p2corn,\n p2csym,\n p2edge,\n p2esym,\n p2mid,\n p2switch,\n p2switchMask,\n p2switchMax,\n ret;\n this$static.isRec = false;\n if (\n gte(\n this$static.probe,\n !this$static.solution ? this$static.probeMax : this$static.probeMin,\n )\n ) {\n return 0;\n }\n this$static.probe = add_1(this$static.probe, { l: 1, m: 0, h: 0 });\n for (i = this$static.valid1; i < this$static.depth1; i++) {\n CornMult(\n this$static.phase1Cubie[i],\n ($clinit_CubieCube(), moveCube)[this$static.move[i]],\n this$static.phase1Cubie[i + 1],\n );\n EdgeMult(\n this$static.phase1Cubie[i],\n moveCube[this$static.move[i]],\n this$static.phase1Cubie[i + 1],\n );\n }\n this$static.valid1 = this$static.depth1;\n p2corn = $getCPermSym(this$static.phase1Cubie[this$static.depth1]);\n p2csym = p2corn & 15;\n p2corn >>= 4;\n p2edge = $getEPermSym(this$static.phase1Cubie[this$static.depth1]);\n p2esym = p2edge & 15;\n p2edge >>= 4;\n p2mid =\n getNPerm(this$static.phase1Cubie[this$static.depth1].ea, 12, true) % 24;\n edgei = getPermSymInv(p2edge, p2esym, false);\n corni = getPermSymInv(p2corn, p2csym, true);\n lastMove =\n this$static.depth1 == 0 ? -1 : this$static.move[this$static.depth1 - 1];\n lastPre =\n this$static.preMoveLen == 0\n ? -1\n : this$static.preMoves[this$static.preMoveLen - 1];\n ret = 0;\n p2switchMax =\n (this$static.preMoveLen == 0 ? 1 : 2) * (this$static.depth1 == 0 ? 1 : 2);\n for (\n p2switch = 0, p2switchMask = (1 << p2switchMax) - 1;\n p2switch < p2switchMax;\n p2switch++\n ) {\n if (((p2switchMask >> p2switch) & 1) != 0) {\n p2switchMask &= ~(1 << p2switch);\n ret = $initPhase2(\n this$static,\n p2corn,\n p2csym,\n p2edge,\n p2esym,\n p2mid,\n edgei,\n corni,\n );\n if (ret == 0 || ret > 2) {\n break;\n } else ret == 2 && (p2switchMask &= 4 << p2switch);\n }\n if (p2switchMask == 0) {\n break;\n }\n if ((p2switch & 1) == 0 && this$static.depth1 > 0) {\n m = ($clinit_Util(), std2ud)[~~(lastMove / 3) * 3 + 1];\n this$static.move[this$static.depth1 - 1] =\n ud2std[m] * 2 - this$static.move[this$static.depth1 - 1];\n p2mid = ($clinit_CoordCube(), MPermMove)[p2mid][m];\n p2corn = CPermMove[p2corn][($clinit_CubieCube(), SymMoveUD)[p2csym][m]];\n p2csym = SymMult[p2corn & 15][p2csym];\n p2corn >>= 4;\n p2edge = EPermMove[p2edge][SymMoveUD[p2esym][m]];\n p2esym = SymMult[p2edge & 15][p2esym];\n p2edge >>= 4;\n corni = getPermSymInv(p2corn, p2csym, true);\n edgei = getPermSymInv(p2edge, p2esym, false);\n } else if (this$static.preMoveLen > 0) {\n m = ($clinit_Util(), std2ud)[~~(lastPre / 3) * 3 + 1];\n this$static.preMoves[this$static.preMoveLen - 1] =\n ud2std[m] * 2 - this$static.preMoves[this$static.preMoveLen - 1];\n p2mid = ($clinit_CubieCube(), MPermInv)[\n ($clinit_CoordCube(), MPermMove)[MPermInv[p2mid]][m]\n ];\n p2corn = CPermMove[corni >> 4][SymMoveUD[corni & 15][m]];\n corni = (p2corn & -16) | SymMult[p2corn & 15][corni & 15];\n p2corn = getPermSymInv(corni >> 4, corni & 15, true);\n p2csym = p2corn & 15;\n p2corn >>= 4;\n p2edge = EPermMove[edgei >> 4][SymMoveUD[edgei & 15][m]];\n edgei = (p2edge & -16) | SymMult[p2edge & 15][edgei & 15];\n p2edge = getPermSymInv(edgei >> 4, edgei & 15, false);\n p2esym = p2edge & 15;\n p2edge >>= 4;\n }\n }\n this$static.depth1 > 0 &&\n (this$static.move[this$static.depth1 - 1] = lastMove);\n this$static.preMoveLen > 0 &&\n (this$static.preMoves[this$static.preMoveLen - 1] = lastPre);\n return ret == 0 ? 0 : 2;\n}\n\nfunction $initSearch(this$static) {\n var i;\n this$static.conjMask = 0;\n this$static.selfSym = $selfSymmetry(this$static.cc);\n this$static.conjMask |= neq(\n and(shr(this$static.selfSym, 16), { l: $intern_20, m: 0, h: 0 }),\n { l: 0, m: 0, h: 0 },\n )\n ? 18\n : 0;\n this$static.conjMask |= neq(\n and(shr(this$static.selfSym, 32), { l: $intern_20, m: 0, h: 0 }),\n { l: 0, m: 0, h: 0 },\n )\n ? 36\n : 0;\n this$static.conjMask |= neq(\n and(shr(this$static.selfSym, 48), { l: $intern_20, m: 0, h: 0 }),\n { l: 0, m: 0, h: 0 },\n )\n ? 56\n : 0;\n this$static.selfSym = and(this$static.selfSym, {\n l: $intern_9,\n m: $intern_9,\n h: 15,\n });\n this$static.maxPreMoves = this$static.conjMask > 7 ? 0 : 20;\n for (i = 0; i < 6; i++) {\n $copy(this$static.urfCubieCube[i], this$static.cc);\n $setWithPrun(this$static.urfCoordCube[i], this$static.urfCubieCube[i], 20);\n $URFConjugate(this$static.cc);\n i % 3 == 2 && $invCubieCube(this$static.cc);\n }\n}\n\nfunction $phase1(this$static, node, ssym, maxl, lm) {\n var axis_0, m, power, prun, ret, skipMoves;\n if (node.prun == 0 && maxl < 5) {\n if (this$static.allowShorter || maxl == 0) {\n this$static.depth1 -= maxl;\n ret = $initPhase2Pre(this$static);\n this$static.depth1 += maxl;\n return ret;\n } else {\n return 1;\n }\n }\n skipMoves = getSkipMoves(fromInt(ssym));\n for (axis_0 = 0; axis_0 < 18; axis_0 += 3) {\n if (axis_0 == lm || axis_0 == lm - 9) {\n continue;\n }\n for (power = 0; power < 3; power++) {\n m = axis_0 + power;\n if (\n (this$static.isRec &&\n m != this$static.move[this$static.depth1 - maxl]) ||\n (skipMoves != 0 && (skipMoves & (1 << m)) != 0)\n ) {\n continue;\n }\n prun = $doMovePrun(this$static.nodeUD[maxl], node, m);\n if (prun > maxl) {\n break;\n } else if (prun == maxl) {\n continue;\n }\n prun = $doMovePrunConj(this$static.nodeUD[maxl], node, m);\n if (prun > maxl) {\n break;\n } else if (prun == maxl) {\n continue;\n }\n this$static.move[this$static.depth1 - maxl] = m;\n this$static.valid1 = min_0(this$static.valid1, this$static.depth1 - maxl);\n ret = $phase1(\n this$static,\n this$static.nodeUD[maxl],\n ssym & toInt(($clinit_CubieCube(), moveCubeSym)[m]),\n maxl - 1,\n axis_0,\n );\n if (ret == 0) {\n return 0;\n } else if (ret >= 2) {\n break;\n }\n }\n }\n return 1;\n}\n\nfunction $phase1PreMoves(this$static, maxl, lm, cc, ssym) {\n var m, ret, skipMoves;\n this$static.preMoveLen = this$static.maxPreMoves - maxl;\n if (\n this$static.isRec\n ? this$static.depth1 == this$static.length1 - this$static.preMoveLen\n : this$static.preMoveLen == 0 || ((225207 >> lm) & 1) == 0\n ) {\n this$static.depth1 = this$static.length1 - this$static.preMoveLen;\n this$static.phase1Cubie[0] = cc;\n this$static.allowShorter =\n this$static.depth1 == MIN_P1LENGTH_PRE && this$static.preMoveLen != 0;\n if (\n $setWithPrun(\n this$static.nodeUD[this$static.depth1 + 1],\n cc,\n this$static.depth1,\n ) &&\n $phase1(\n this$static,\n this$static.nodeUD[this$static.depth1 + 1],\n ssym,\n this$static.depth1,\n -1,\n ) == 0\n ) {\n return 0;\n }\n }\n if (\n maxl == 0 ||\n this$static.preMoveLen + MIN_P1LENGTH_PRE >= this$static.length1\n ) {\n return 1;\n }\n skipMoves = getSkipMoves(fromInt(ssym));\n (maxl == 1 ||\n this$static.preMoveLen + 1 + MIN_P1LENGTH_PRE >= this$static.length1) &&\n (skipMoves |= 225207);\n lm = ~~(lm / 3) * 3;\n for (m = 0; m < 18; m++) {\n if (m == lm || m == lm - 9 || m == lm + 9) {\n m += 2;\n continue;\n }\n if (\n (this$static.isRec &&\n m != this$static.preMoves[this$static.maxPreMoves - maxl]) ||\n (skipMoves & (1 << m)) != 0\n ) {\n continue;\n }\n CornMult(\n ($clinit_CubieCube(), moveCube)[m],\n cc,\n this$static.preMoveCubes[maxl],\n );\n EdgeMult(moveCube[m], cc, this$static.preMoveCubes[maxl]);\n this$static.preMoves[this$static.maxPreMoves - maxl] = m;\n ret = $phase1PreMoves(\n this$static,\n maxl - 1,\n m,\n this$static.preMoveCubes[maxl],\n ssym & toInt(moveCubeSym[m]),\n );\n if (ret == 0) {\n return 0;\n }\n }\n return 1;\n}\n\nfunction $phase2(this$static, edge, esym, corn, csym, mid, maxl, depth, lm) {\n var corni, cornx, csymx, edgei, edgex, esymx, m, midx, moveMask, prun, ret;\n if (edge == 0 && corn == 0 && mid == 0) {\n return maxl;\n }\n moveMask = ($clinit_Util(), ckmv2bit)[lm];\n for (m = 0; m < 10; m++) {\n if (((moveMask >> m) & 1) != 0) {\n m += (66 >> m) & 3;\n continue;\n }\n midx = ($clinit_CoordCube(), MPermMove)[mid][m];\n cornx = CPermMove[corn][($clinit_CubieCube(), SymMoveUD)[csym][m]];\n csymx = SymMult[cornx & 15][csym];\n cornx >>= 4;\n edgex = EPermMove[edge][SymMoveUD[esym][m]];\n esymx = SymMult[edgex & 15][esym];\n edgex >>= 4;\n edgei = getPermSymInv(edgex, esymx, false);\n corni = getPermSymInv(cornx, csymx, true);\n prun = getPruning(\n EPermCCombPPrun,\n (edgei >> 4) * 140 +\n CCombPConj[Perm2CombP[corni >> 4] & 255][\n SymMultInv[edgei & 15][corni & 15]\n ],\n );\n if (prun > maxl + 1) {\n return maxl - prun + 1;\n } else if (prun >= maxl) {\n m += (66 >> m) & 3 & (maxl - prun);\n continue;\n }\n prun = max_0(\n getPruning(MCPermPrun, cornx * 24 + MPermConj[midx][csymx]),\n getPruning(\n EPermCCombPPrun,\n edgex * 140 +\n CCombPConj[Perm2CombP[cornx] & 255][SymMultInv[esymx][csymx]],\n ),\n );\n if (prun >= maxl) {\n m += (66 >> m) & 3 & (maxl - prun);\n continue;\n }\n ret = $phase2(\n this$static,\n edgex,\n esymx,\n cornx,\n csymx,\n midx,\n maxl - 1,\n depth + 1,\n m,\n );\n if (ret >= 0) {\n this$static.move[depth] = ud2std[m];\n return ret;\n }\n if (ret < -2) {\n break;\n }\n ret < -1 && (m += (66 >> m) & 3);\n }\n return -1;\n}\n\nfunction $search(this$static) {\n for (\n this$static.length1 = this$static.isRec ? this$static.length1 : 0;\n this$static.length1 < this$static.solLen;\n this$static.length1++\n ) {\n this$static.maxDep2 = min_0(\n MAX_DEPTH2,\n this$static.solLen - this$static.length1 - 1,\n );\n for (\n this$static.urfIdx = this$static.isRec ? this$static.urfIdx : 0;\n this$static.urfIdx < 6;\n this$static.urfIdx++\n ) {\n if ((this$static.conjMask & (1 << this$static.urfIdx)) != 0) {\n continue;\n }\n if (\n $phase1PreMoves(\n this$static,\n this$static.maxPreMoves,\n -30,\n this$static.urfCubieCube[this$static.urfIdx],\n toInt(and(this$static.selfSym, { l: $intern_20, m: 0, h: 0 })),\n ) == 0\n ) {\n return !this$static.solution\n ? \"Error 8\"\n : $toString_2(this$static.solution);\n }\n }\n }\n return !this$static.solution ? \"Error 7\" : $toString_2(this$static.solution);\n}\n\nfunction $solution(this$static, facelets) {\n var check;\n check = $verify_0(this$static, facelets);\n if (check != 0) {\n return \"Error \" + (check < 0 ? -check : check);\n }\n this$static.solLen = 22;\n this$static.probe = { l: 0, m: 0, h: 0 };\n this$static.probeMax = { l: 3531008, m: 23, h: 0 };\n this$static.probeMin = { l: 0, m: 0, h: 0 };\n this$static.verbose = 0;\n this$static.solution = null;\n this$static.isRec = false;\n init_0(false);\n $initSearch(this$static);\n return $search(this$static);\n}\n\nfunction $verify_0(this$static, facelets) {\n var center, count, f, i;\n count = 0;\n f = initDim(B_classLit, $intern_30, 0, 54, 7, 1);\n // try {\n center = _String(\n initValues(getClassLiteralForArray(C_classLit, 1), $intern_26, 0, 7, [\n facelets.charCodeAt(4),\n facelets.charCodeAt(13),\n facelets.charCodeAt(22),\n facelets.charCodeAt(31),\n facelets.charCodeAt(40),\n facelets.charCodeAt(49),\n ]),\n );\n for (i = 0; i < 54; i++) {\n f[i] =\n ($indexOf_0(center, fromCodePoint(facelets.charCodeAt(i))) << 24) >> 24;\n if (f[i] == -1) {\n return -1;\n }\n count += 1 << (f[i] << 2);\n }\n // } catch ($e0) {\n // $e0 = wrap($e0);\n // if (instanceOf($e0, 9)) {\n // return -1;\n // } else throw unwrap($e0);\n // }\n if (count != 10066329) {\n return -1;\n }\n toCubieCube(f, this$static.cc);\n return $verify(this$static.cc);\n}\n\nfunction Search() {\n var i, i0, i1;\n this.move = initDim(I_classLit, $intern_27, 0, 31, 7, 1);\n this.nodeUD = initDim(\n Lorg_cubing_min2phase_client_CoordCube_2_classLit,\n $intern_3,\n 31,\n 21,\n 0,\n 1,\n );\n this.nodeRL = initDim(\n Lorg_cubing_min2phase_client_CoordCube_2_classLit,\n $intern_3,\n 31,\n 21,\n 0,\n 1,\n );\n this.nodeFB = initDim(\n Lorg_cubing_min2phase_client_CoordCube_2_classLit,\n $intern_3,\n 31,\n 21,\n 0,\n 1,\n );\n this.cc = new CubieCube();\n this.urfCubieCube = initDim(\n Lorg_cubing_min2phase_client_CubieCube_2_classLit,\n $intern_3,\n 7,\n 6,\n 0,\n 1,\n );\n this.urfCoordCube = initDim(\n Lorg_cubing_min2phase_client_CoordCube_2_classLit,\n $intern_3,\n 31,\n 6,\n 0,\n 1,\n );\n this.phase1Cubie = initDim(\n Lorg_cubing_min2phase_client_CubieCube_2_classLit,\n $intern_3,\n 7,\n 21,\n 0,\n 1,\n );\n this.preMoveCubes = initDim(\n Lorg_cubing_min2phase_client_CubieCube_2_classLit,\n $intern_3,\n 7,\n 21,\n 0,\n 1,\n );\n this.preMoves = initDim(I_classLit, $intern_27, 0, 20, 7, 1);\n for (i0 = 0; i0 < 21; i0++) {\n this.nodeUD[i0] = new CoordCube();\n this.nodeRL[i0] = new CoordCube();\n this.nodeFB[i0] = new CoordCube();\n this.phase1Cubie[i0] = new CubieCube();\n }\n for (i1 = 0; i1 < 6; i1++) {\n this.urfCubieCube[i1] = new CubieCube();\n this.urfCoordCube[i1] = new CoordCube();\n }\n for (i = 0; i < 20; i++) {\n this.preMoveCubes[i + 1] = new CubieCube();\n }\n}\n\ndefineClass(72, 1, {}, Search);\n_.allowShorter = false;\n_.conjMask = 0;\n_.depth1 = 0;\n_.isRec = false;\n_.length1 = 0;\n_.maxDep2 = 0;\n_.maxPreMoves = 0;\n_.preMoveLen = 0;\n_.probe = { l: 0, m: 0, h: 0 };\n_.probeMax = { l: 0, m: 0, h: 0 };\n_.probeMin = { l: 0, m: 0, h: 0 };\n_.selfSym = { l: 0, m: 0, h: 0 };\n_.solLen = 0;\n_.urfIdx = 0;\n_.valid1 = 0;\n_.verbose = 0;\nvar MAX_DEPTH2 = 12,\n MIN_P1LENGTH_PRE = 7;\nlet $clinit_Util_ran = false;\nfunction $clinit_Util() {\n if ($clinit_Util_ran) {\n return;\n }\n $clinit_Util_ran = true;\n var i, i0, i1, ix, j, jx;\n cornerFacelet = initValues(\n getClassLiteralForArray(B_classLit, 2),\n $intern_3,\n 10,\n 0,\n [\n initValues(\n getClassLiteralForArray(B_classLit, 1),\n $intern_30,\n 0,\n 7,\n [8, 9, 20],\n ),\n initValues(\n getClassLiteralForArray(B_classLit, 1),\n $intern_30,\n 0,\n 7,\n [6, 18, 38],\n ),\n initValues(\n getClassLiteralForArray(B_classLit, 1),\n $intern_30,\n 0,\n 7,\n [0, 36, 47],\n ),\n initValues(\n getClassLiteralForArray(B_classLit, 1),\n $intern_30,\n 0,\n 7,\n [2, 45, 11],\n ),\n initValues(\n getClassLiteralForArray(B_classLit, 1),\n $intern_30,\n 0,\n 7,\n [29, 26, 15],\n ),\n initValues(\n getClassLiteralForArray(B_classLit, 1),\n $intern_30,\n 0,\n 7,\n [27, 44, 24],\n ),\n initValues(\n getClassLiteralForArray(B_classLit, 1),\n $intern_30,\n 0,\n 7,\n [33, 53, 42],\n ),\n initValues(\n getClassLiteralForArray(B_classLit, 1),\n $intern_30,\n 0,\n 7,\n [35, 17, 51],\n ),\n ],\n );\n edgeFacelet = initValues(\n getClassLiteralForArray(B_classLit, 2),\n $intern_3,\n 10,\n 0,\n [\n initValues(\n getClassLiteralForArray(B_classLit, 1),\n $intern_30,\n 0,\n 7,\n [5, 10],\n ),\n initValues(\n getClassLiteralForArray(B_classLit, 1),\n $intern_30,\n 0,\n 7,\n [7, 19],\n ),\n initValues(\n getClassLiteralForArray(B_classLit, 1),\n $intern_30,\n 0,\n 7,\n [3, 37],\n ),\n initValues(\n getClassLiteralForArray(B_classLit, 1),\n $intern_30,\n 0,\n 7,\n [1, 46],\n ),\n initValues(\n getClassLiteralForArray(B_classLit, 1),\n $intern_30,\n 0,\n 7,\n [32, 16],\n ),\n initValues(\n getClassLiteralForArray(B_classLit, 1),\n $intern_30,\n 0,\n 7,\n [28, 25],\n ),\n initValues(\n getClassLiteralForArray(B_classLit, 1),\n $intern_30,\n 0,\n 7,\n [30, 43],\n ),\n initValues(\n getClassLiteralForArray(B_classLit, 1),\n $intern_30,\n 0,\n 7,\n [34, 52],\n ),\n initValues(\n getClassLiteralForArray(B_classLit, 1),\n $intern_30,\n 0,\n 7,\n [23, 12],\n ),\n initValues(\n getClassLiteralForArray(B_classLit, 1),\n $intern_30,\n 0,\n 7,\n [21, 41],\n ),\n initValues(\n getClassLiteralForArray(B_classLit, 1),\n $intern_30,\n 0,\n 7,\n [50, 39],\n ),\n initValues(\n getClassLiteralForArray(B_classLit, 1),\n $intern_30,\n 0,\n 7,\n [48, 14],\n ),\n ],\n );\n Cnk = initDims(I_classLit, [$intern_3, $intern_27], [17, 0], 7, [13, 13], 2);\n move2str = initValues(\n getClassLiteralForArray(Ljava_lang_String_2_classLit, 1),\n $intern_3,\n 2,\n 4,\n [\n \"U \",\n \"U2\",\n \"U'\",\n \"R \",\n \"R2\",\n \"R'\",\n \"F \",\n \"F2\",\n \"F'\",\n \"D \",\n \"D2\",\n \"D'\",\n \"L \",\n \"L2\",\n \"L'\",\n \"B \",\n \"B2\",\n \"B'\",\n ],\n );\n ud2std = initValues(\n getClassLiteralForArray(I_classLit, 1),\n $intern_27,\n 0,\n 7,\n [0, 1, 2, 4, 7, 9, 10, 11, 13, 16, 3, 5, 6, 8, 12, 14, 15, 17],\n );\n std2ud = initDim(I_classLit, $intern_27, 0, 18, 7, 1);\n ckmv2bit = initDim(I_classLit, $intern_27, 0, 11, 7, 1);\n for (i0 = 0; i0 < 18; i0++) {\n std2ud[ud2std[i0]] = i0;\n }\n for (i1 = 0; i1 < 10; i1++) {\n ix = ~~(ud2std[i1] / 3);\n ckmv2bit[i1] = 0;\n for (j = 0; j < 10; j++) {\n jx = ~~(ud2std[j] / 3);\n ckmv2bit[i1] |= (ix == jx || (ix % 3 == jx % 3 && ix >= jx) ? 1 : 0) << j;\n }\n }\n ckmv2bit[10] = 0;\n for (i = 0; i < 13; i++) {\n Cnk[i][0] = Cnk[i][i] = 1;\n for (j = 1; j < i; j++) {\n Cnk[i][j] = Cnk[i - 1][j - 1] + Cnk[i - 1][j];\n }\n }\n}\n\nfunction getComb(arr, mask, isEdge) {\n $clinit_Util();\n var end, i, idxC, perm, r;\n end = arr.length - 1;\n idxC = 0;\n r = 4;\n for (i = end; i >= 0; i--) {\n perm = getVal(arr[i], isEdge);\n (perm & 12) == mask && (idxC += Cnk[i][r--]);\n }\n return idxC;\n}\n\nfunction getNParity(idx, n) {\n $clinit_Util();\n var i, p;\n p = 0;\n for (i = n - 2; i >= 0; i--) {\n p ^= idx % (n - i);\n idx = ~~(idx / (n - i));\n }\n return p & 1;\n}\n\nfunction getNPerm(arr, n, isEdge) {\n $clinit_Util();\n var i, idx, v, val;\n idx = 0;\n val = { l: 1323536, m: 2777561, h: 1043915 };\n for (i = 0; i < n - 1; i++) {\n v = getVal(arr[i], isEdge) << 2;\n idx = (n - i) * idx + toInt(and(shr(val, v), { l: 15, m: 0, h: 0 }));\n val = sub_0(val, shl({ l: 1118480, m: 279620, h: 69905 }, v));\n }\n return idx;\n}\n\nfunction getVal(val0, isEdge) {\n return isEdge ? val0 >> 1 : val0 & 7;\n}\n\nfunction setComb(arr, idxC, mask, isEdge) {\n $clinit_Util();\n var end, fill, i, r;\n end = arr.length - 1;\n r = 4;\n fill = end;\n for (i = end; i >= 0; i--) {\n if (idxC >= Cnk[i][r]) {\n idxC -= Cnk[i][r--];\n arr[i] = setVal(arr[i], r | mask, isEdge);\n } else {\n (fill & 12) == mask && (fill -= 4);\n arr[i] = setVal(arr[i], fill--, isEdge);\n }\n }\n}\n\nfunction setNPerm(arr, idx, n, isEdge) {\n $clinit_Util();\n var extract, i, m, p, v, val;\n val = { l: 1323536, m: 2777561, h: 1043915 };\n extract = { l: 0, m: 0, h: 0 };\n for (p = 2; p <= n; p++) {\n extract = or(shl(extract, 4), fromInt(idx % p));\n idx = ~~(idx / p);\n }\n for (i = 0; i < n - 1; i++) {\n v = (toInt(extract) & 15) << 2;\n extract = shr(extract, 4);\n arr[i] = setVal(\n arr[i],\n toInt(and(shr(val, v), { l: 15, m: 0, h: 0 })),\n isEdge,\n );\n m = sub_0(shl({ l: 1, m: 0, h: 0 }, v), { l: 1, m: 0, h: 0 });\n val = or(\n and(val, m),\n and(shr(val, 4), {\n l: ~m.l & $intern_9,\n m: ~m.m & $intern_9,\n h: ~m.h & $intern_10,\n }),\n );\n }\n arr[n - 1] = setVal(\n arr[n - 1],\n toInt(and(val, { l: 15, m: 0, h: 0 })),\n isEdge,\n );\n}\n\nfunction setVal(val0, val, isEdge) {\n return ((isEdge ? (val << 1) | (val0 & 1) : val | (val0 & -8)) << 24) >> 24;\n}\n\nfunction toCubieCube(f, ccRet) {\n $clinit_Util();\n var col1, col2, i, i0, i1, i2, j, ori;\n for (i0 = 0; i0 < 8; i0++) {\n ccRet.ca[i0] = 0;\n }\n for (i1 = 0; i1 < 12; i1++) {\n ccRet.ea[i1] = 0;\n }\n for (i2 = 0; i2 < 8; i2++) {\n for (ori = 0; ori < 3; ori++) {\n if (f[cornerFacelet[i2][ori]] == 0 || f[cornerFacelet[i2][ori]] == 3)\n break;\n }\n col1 = f[cornerFacelet[i2][(ori + 1) % 3]];\n col2 = f[cornerFacelet[i2][(ori + 2) % 3]];\n for (j = 0; j < 8; j++) {\n if (\n col1 == ~~(cornerFacelet[j][1] / 9) &&\n col2 == ~~(cornerFacelet[j][2] / 9)\n ) {\n ccRet.ca[i2] = narrow_byte((ori % 3 << 3) | j);\n break;\n }\n }\n }\n for (i = 0; i < 12; i++) {\n for (j = 0; j < 12; j++) {\n if (\n f[edgeFacelet[i][0]] == ~~(edgeFacelet[j][0] / 9) &&\n f[edgeFacelet[i][1]] == ~~(edgeFacelet[j][1] / 9)\n ) {\n ccRet.ea[i] = narrow_byte(j << 1);\n break;\n }\n if (\n f[edgeFacelet[i][0]] == ~~(edgeFacelet[j][1] / 9) &&\n f[edgeFacelet[i][1]] == ~~(edgeFacelet[j][0] / 9)\n ) {\n ccRet.ea[i] = narrow_byte((j << 1) | 1);\n break;\n }\n }\n }\n}\n\nvar Cnk, ckmv2bit, cornerFacelet, edgeFacelet, move2str, std2ud, ud2std;\nfunction $appendSolMove(this$static, curMove) {\n var axisCur, axisLast, pow_0;\n if (this$static.length_0 == 0) {\n this$static.moves[this$static.length_0++] = curMove;\n return;\n }\n axisCur = ~~(curMove / 3);\n axisLast = ~~(this$static.moves[this$static.length_0 - 1] / 3);\n if (axisCur == axisLast) {\n pow_0 =\n ((curMove % 3) + (this$static.moves[this$static.length_0 - 1] % 3) + 1) %\n 4;\n pow_0 == 3\n ? --this$static.length_0\n : (this$static.moves[this$static.length_0 - 1] = axisCur * 3 + pow_0);\n return;\n }\n if (\n this$static.length_0 > 1 &&\n axisCur % 3 == axisLast % 3 &&\n axisCur == ~~(this$static.moves[this$static.length_0 - 2] / 3)\n ) {\n pow_0 =\n ((curMove % 3) + (this$static.moves[this$static.length_0 - 2] % 3) + 1) %\n 4;\n if (pow_0 == 3) {\n this$static.moves[this$static.length_0 - 2] =\n this$static.moves[this$static.length_0 - 1];\n --this$static.length_0;\n } else {\n this$static.moves[this$static.length_0 - 2] = axisCur * 3 + pow_0;\n }\n return;\n }\n this$static.moves[this$static.length_0++] = curMove;\n}\n\nfunction $setArgs(this$static, verbose, urfIdx, depth1) {\n this$static.verbose = verbose;\n this$static.urfIdx = urfIdx;\n this$static.depth1 = depth1;\n}\n\nfunction $toString_2(this$static) {\n var s, sb, urf;\n sb = new StringBuffer();\n urf =\n (this$static.verbose & 2) != 0\n ? (this$static.urfIdx + 3) % 6\n : this$static.urfIdx;\n if (urf < 3) {\n for (s = 0; s < this$static.length_0; s++) {\n (this$static.verbose & 1) != 0 &&\n s == this$static.depth1 &&\n ((sb.string += \". \"), sb);\n $append(\n $append_1(\n sb,\n ($clinit_Util(), move2str)[\n ($clinit_CubieCube(), urfMove)[urf][this$static.moves[s]]\n ],\n ),\n );\n }\n } else {\n for (s = this$static.length_0 - 1; s >= 0; s--) {\n $append(\n $append_1(\n sb,\n ($clinit_Util(), move2str)[\n ($clinit_CubieCube(), urfMove)[urf][this$static.moves[s]]\n ],\n ),\n );\n (this$static.verbose & 1) != 0 &&\n s == this$static.depth1 &&\n ((sb.string += \". \"), sb);\n }\n }\n return sb.string;\n}\n\nfunction Util$Solution() {\n this.moves = initDim(I_classLit, $intern_27, 0, 31, 7, 1);\n}\n\ndefineClass(150, 1, {}, Util$Solution);\n_.depth1 = 0;\n_.length_0 = 0;\n_.urfIdx = 0;\n_.verbose = 0;\nvar I_classLit = createForPrimitive(\"int\", \"I\");\ncreateForClass(\"com.google.gwt.lang\", \"CollapsedPropertyHolder\", 252);\n\ncreateForClass(\"com.google.gwt.lang\", \"JavaClassHierarchySetupUtil\", 254);\nconst Lcom_google_gwt_lang_LongLibBase$LongEmul_2_classLit = createForClass(\n \"com.google.gwt.lang\",\n \"LongLibBase/LongEmul\",\n null,\n);\ncreateForClass(\"com.google.gwt.lang\", \"ModuleUtils\", 257);\nvar B_classLit = createForPrimitive(\"byte\", \"B\"),\n J_classLit = createForPrimitive(\"long\", \"J\"),\n C_classLit = createForPrimitive(\"char\", \"C\");\ncreateForClass(\"com.google.gwt.user.client.rpc\", \"XsrfToken\", null),\n createForInterface(\"java.util\", \"Map/Entry\");\n\nexport const initialize = function () {\n init_0(false);\n};\nexport const solveState = function (s) {\n return $solution(new Search(), s);\n};\n", "import { Alg, AlgBuilder } from \"../../../../../alg\";\nimport { KPuzzle, Transformation } from \"../../../../../kpuzzle\";\nimport { puzzles } from \"../../../../../puzzles\";\nimport { mustBeInsideWorker } from \"../../../inside-worker\";\nimport { addOrientationSuffix } from \"../../addOrientationSuffix\";\nimport { randomChoiceFactory } from \"../../../../../vendor/random-uint-below\";\nimport { toMin2PhaseState } from \"./convert\";\nimport { passesFilter } from \"./filter\";\nimport { sgs3x3x3 } from \"./legacy-sgs\";\nimport { initialize, solveState } from \"../../../../../vendor/min2phase/gwt\";\n\nexport async function random333State(): Promise<Transformation> {\n const def = await puzzles[\"3x3x3\"].def();\n const kpuzzle = new KPuzzle(def);\n for (const piece of sgs3x3x3) {\n kpuzzle.applyAlg(\n Alg.fromString(((await randomChoiceFactory()) as any)(piece)),\n );\n }\n if (!passesFilter(def, kpuzzle.state)) {\n return random333State();\n }\n return kpuzzle.state;\n}\n\nexport async function solve333(s: Transformation): Promise<Alg> {\n mustBeInsideWorker();\n return Alg.fromString(solveState(toMin2PhaseState(s)));\n}\n\nexport async function random333Scramble(): Promise<Alg> {\n return solve333(await random333State());\n}\n\nexport async function initialize333(): Promise<void> {\n initialize();\n}\n\nconst randomSuffixes = [\n [null, \"Rw\", \"Rw2\", \"Rw'\", \"Fw\", \"Fw'\"],\n [null, \"Dw\", \"Dw2\", \"Dw'\"],\n];\n\nexport async function random333OrientedScramble(): Promise<Alg> {\n return addOrientationSuffix(await random333Scramble(), randomSuffixes);\n}\n\nconst extraBit = new Alg(\"R' U' F\");\nexport async function random333FewestMovesScramble(): Promise<Alg> {\n const algBuilder = new AlgBuilder();\n const unorientedScramble = await random333Scramble();\n algBuilder.experimentalPushAlg(extraBit);\n // TODO:Avoid cancellable moves.\n algBuilder.experimentalPushAlg(unorientedScramble);\n algBuilder.experimentalPushAlg(extraBit);\n return algBuilder.toAlg();\n}\n"],
5
- "mappings": "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A;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,EAEF;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,EAEF;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,EAEF;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,EAEF;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,EAEF;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,EAEF;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAC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",
6
- "names": []
7
- }
@@ -1 +0,0 @@
1
- export * from "../types";
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/cubing/vendor/comlink-everywhere/outside/node.js"],
4
- "sourcesContent": ["async function getImports() {\n return {\n NodeWorker: (await import(\"worker_threads\")).Worker,\n nodeEndpoint: (await import(\"comlink/dist/esm/node-adapter.mjs\")).default,\n };\n}\n\nfunction construct(imports, url, nodeOptions) {\n const worker = new imports.NodeWorker(url, nodeOptions);\n // Avoid holding up the entire program exit if only workers are running.\n // https://nodejs.org/api/worker_threads.html#worker_threads_broadcastchannel_unref\n worker.unref();\n const wrappedWorker = imports.nodeEndpoint(worker);\n return wrappedWorker;\n}\n\nlet cachedNodeWorkerWrapper = null;\nexport async function NodeWorkerWrapper() {\n const imports = await getImports();\n return (\n cachedNodeWorkerWrapper ||\n (cachedNodeWorkerWrapper = class {\n constructor(url, _options) {\n return construct(imports, url);\n }\n })\n );\n}\n\nlet cachedNodeWorkerStringWrapper = null;\nexport async function NodeWorkerStringWrapper() {\n const imports = await getImports();\n return (\n cachedNodeWorkerStringWrapper ||\n (cachedNodeWorkerStringWrapper = class {\n constructor(url, _options) {\n return construct(imports, url, { eval: true });\n }\n })\n );\n}\n"],
5
- "mappings": ";;;AAAA,4BAA4B;AAC1B,SAAO;AAAA,IACL,YAAa,OAAM,OAAO,mBAAmB;AAAA,IAC7C,cAAe,OAAM,OAAO,sCAAsC;AAAA;AAAA;AAItE,mBAAmB,SAAS,KAAK,aAAa;AAC5C,QAAM,SAAS,IAAI,QAAQ,WAAW,KAAK;AAG3C,SAAO;AACP,QAAM,gBAAgB,QAAQ,aAAa;AAC3C,SAAO;AAAA;AAGT,IAAI,0BAA0B;AAC9B,mCAA0C;AACxC,QAAM,UAAU,MAAM;AACtB,SACE,2BACC,2BAA0B,MAAM;AAAA,IAC/B,YAAY,KAAK,UAAU;AACzB,aAAO,UAAU,SAAS;AAAA;AAAA;AAAA;AAMlC,IAAI,gCAAgC;AACpC,yCAAgD;AAC9C,QAAM,UAAU,MAAM;AACtB,SACE,iCACC,iCAAgC,MAAM;AAAA,IACrC,YAAY,KAAK,UAAU;AACzB,aAAO,UAAU,SAAS,KAAK,EAAE,MAAM;AAAA;AAAA;AAAA;",
6
- "names": []
7
- }