@esengine/pathfinding 1.0.1 → 1.0.3

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.
@@ -1,12 +1,10 @@
1
- // A*寻路算法模块 v1.0.1
2
- export { Vector2Utils } from './Types/IVector2';
3
- export { PriorityQueue } from './Utils/PriorityQueue';
4
- export { AStarPathfinder } from './AI/Pathfinding/AStar/AStarPathfinder';
5
- export { AstarGridGraph } from './AI/Pathfinding/AStar/AstarGridGraph';
6
- export { BreadthFirstPathfinder } from './AI/Pathfinding/BreadthFirst/BreadthFirstPathfinder';
7
- export { UnweightedGraph } from './AI/Pathfinding/BreadthFirst/UnweightedGraph';
8
- export { UnweightedGridGraph } from './AI/Pathfinding/BreadthFirst/UnweightedGridGraph';
9
-
1
+ /**
2
+ * @esengine/pathfinding v1.0.3
3
+ * 高性能寻路算法库 - 支持A*、广度优先等算法,适用于Cocos Creator、Laya等游戏引擎
4
+ *
5
+ * @author yhh
6
+ * @license MIT
7
+ */
10
8
  var Vector2Utils = (function () {
11
9
  function Vector2Utils() {
12
10
  }
@@ -50,7 +48,6 @@ var Vector2Utils = (function () {
50
48
  Vector2Utils.MAX_COORD = 32767;
51
49
  return Vector2Utils;
52
50
  }());
53
- export { Vector2Utils };
54
51
 
55
52
  var PriorityQueue = (function () {
56
53
  function PriorityQueue() {
@@ -132,9 +129,8 @@ var PriorityQueue = (function () {
132
129
  };
133
130
  return PriorityQueue;
134
131
  }());
135
- export { PriorityQueue };
136
132
 
137
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
133
+ var __spreadArray = (globalThis && globalThis.__spreadArray) || function (to, from, pack) {
138
134
  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
139
135
  if (ar || !(i in from)) {
140
136
  if (!ar) ar = Array.prototype.slice.call(from, 0, i);
@@ -143,8 +139,6 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
143
139
  }
144
140
  return to.concat(ar || Array.prototype.slice.call(from));
145
141
  };
146
- import { Vector2Utils } from '../../../Types/IVector2';
147
- import { PriorityQueue } from '../../../Utils/PriorityQueue';
148
142
  var AStarNode = (function () {
149
143
  function AStarNode(node, gCost, hCost, parent) {
150
144
  if (gCost === void 0) { gCost = 0; }
@@ -221,10 +215,14 @@ var AStarPathfinder = (function () {
221
215
  if (startHash === goalHash) {
222
216
  return { found: true, goalNode: this._getNode(start, 0, 0) };
223
217
  }
218
+ if (!graph.isNodePassable(start)) {
219
+ return { found: false, openSetNodes: [] };
220
+ }
224
221
  var startNode = this._getNode(start, 0, graph.heuristic(start, goal));
225
222
  openSet.enqueue(startNode);
226
223
  openSetMap.set(startHash, startNode);
227
224
  var goalNode;
225
+ var processedNodes = [];
228
226
  while (!openSet.isEmpty) {
229
227
  var current = openSet.dequeue();
230
228
  var currentHash = current.hash;
@@ -255,37 +253,41 @@ var AStarPathfinder = (function () {
255
253
  openSetMap.set(neighborHash, neighborNode);
256
254
  }
257
255
  }
258
- if (current !== goalNode) {
259
- this._recycleNode(current);
260
- }
256
+ processedNodes.push(current);
261
257
  }
258
+ var remainingNodes = [];
262
259
  while (!openSet.isEmpty) {
263
- var node = openSet.dequeue();
264
- if (node !== goalNode) {
265
- this._recycleNode(node);
266
- }
260
+ remainingNodes.push(openSet.dequeue());
267
261
  }
268
- return { found: !!goalNode, goalNode: goalNode };
262
+ var allNodesToRecycle = __spreadArray(__spreadArray([], processedNodes, true), remainingNodes, true);
263
+ return { found: !!goalNode, goalNode: goalNode, openSetNodes: allNodesToRecycle };
269
264
  };
270
265
  AStarPathfinder.searchPath = function (graph, start, goal) {
271
266
  var result = this.search(graph, start, goal);
272
267
  if (!result.found || !result.goalNode) {
268
+ if (result.openSetNodes) {
269
+ for (var _i = 0, _a = result.openSetNodes; _i < _a.length; _i++) {
270
+ var node = _a[_i];
271
+ this._recycleNode(node);
272
+ }
273
+ }
273
274
  return [];
274
275
  }
275
- return this.reconstructPathFromNode(result.goalNode, start);
276
+ var path = this.reconstructPathFromNode(result.goalNode);
277
+ if (result.openSetNodes) {
278
+ for (var _b = 0, _c = result.openSetNodes; _b < _c.length; _b++) {
279
+ var node = _c[_b];
280
+ this._recycleNode(node);
281
+ }
282
+ }
283
+ return path;
276
284
  };
277
- AStarPathfinder.reconstructPathFromNode = function (goalNode, start) {
285
+ AStarPathfinder.reconstructPathFromNode = function (goalNode) {
278
286
  this._tempPath.length = 0;
279
287
  var current = goalNode;
280
- var startHash = Vector2Utils.toHash(start);
281
288
  while (current) {
282
289
  this._tempPath.unshift(current.node);
283
- var currentHash = current.hash;
284
- var parent_1 = current.parent;
285
- if (currentHash !== startHash) {
286
- this._recycleNode(current);
287
- }
288
- current = parent_1;
290
+ current = current.parent;
289
291
  }
290
292
  return __spreadArray([], this._tempPath, true);
291
293
  };
@@ -294,6 +296,14 @@ var AStarPathfinder = (function () {
294
296
  if (result.goalNode) {
295
297
  this._recycleNode(result.goalNode);
296
298
  }
299
+ if (result.openSetNodes) {
300
+ for (var _i = 0, _a = result.openSetNodes; _i < _a.length; _i++) {
301
+ var node = _a[_i];
302
+ if (node !== result.goalNode) {
303
+ this._recycleNode(node);
304
+ }
305
+ }
306
+ }
297
307
  return result.found;
298
308
  };
299
309
  AStarPathfinder.clearPool = function () {
@@ -310,10 +320,7 @@ var AStarPathfinder = (function () {
310
320
  AStarPathfinder._tempPath = [];
311
321
  return AStarPathfinder;
312
322
  }());
313
- export { AStarPathfinder };
314
323
 
315
- import { Vector2Utils } from '../../../Types/IVector2';
316
- import { AStarPathfinder } from './AStarPathfinder';
317
324
  var AstarGridGraph = (function () {
318
325
  function AstarGridGraph(width, height) {
319
326
  this.dirs = [
@@ -423,11 +430,7 @@ var AstarGridGraph = (function () {
423
430
  };
424
431
  return AstarGridGraph;
425
432
  }());
426
- export { AstarGridGraph };
427
-
428
- export {};
429
433
 
430
- import { Vector2Utils } from '../../../Types/IVector2';
431
434
  var BreadthFirstPathfinder = (function () {
432
435
  function BreadthFirstPathfinder() {
433
436
  }
@@ -485,9 +488,6 @@ var BreadthFirstPathfinder = (function () {
485
488
  };
486
489
  return BreadthFirstPathfinder;
487
490
  }());
488
- export { BreadthFirstPathfinder };
489
-
490
- export {};
491
491
 
492
492
  var UnweightedGraph = (function () {
493
493
  function UnweightedGraph() {
@@ -502,10 +502,7 @@ var UnweightedGraph = (function () {
502
502
  };
503
503
  return UnweightedGraph;
504
504
  }());
505
- export { UnweightedGraph };
506
505
 
507
- import { Vector2Utils } from '../../../Types/IVector2';
508
- import { BreadthFirstPathfinder } from './BreadthFirstPathfinder';
509
506
  var UnweightedGridGraph = (function () {
510
507
  function UnweightedGridGraph(width, height, allowDiagonalSearch) {
511
508
  if (allowDiagonalSearch === void 0) { allowDiagonalSearch = false; }
@@ -556,4 +553,6 @@ var UnweightedGridGraph = (function () {
556
553
  ];
557
554
  return UnweightedGridGraph;
558
555
  }());
559
- export { UnweightedGridGraph };
556
+
557
+ export { AStarPathfinder, AstarGridGraph, BreadthFirstPathfinder, PriorityQueue, UnweightedGraph, UnweightedGridGraph, Vector2Utils };
558
+ //# sourceMappingURL=pathfinding.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pathfinding.mjs","sources":["../bin/Types/IVector2.js","../bin/Utils/PriorityQueue.js","../bin/AI/Pathfinding/AStar/AStarPathfinder.js","../bin/AI/Pathfinding/AStar/AstarGridGraph.js","../bin/AI/Pathfinding/BreadthFirst/BreadthFirstPathfinder.js","../bin/AI/Pathfinding/BreadthFirst/UnweightedGraph.js","../bin/AI/Pathfinding/BreadthFirst/UnweightedGridGraph.js"],"sourcesContent":["var Vector2Utils = (function () {\n function Vector2Utils() {\n }\n Vector2Utils.equals = function (a, b) {\n if (a.equals) {\n return a.equals(b);\n }\n return a.x === b.x && a.y === b.y;\n };\n Vector2Utils.create = function (x, y) {\n return { x: x, y: y };\n };\n Vector2Utils.clone = function (vector) {\n return { x: vector.x, y: vector.y };\n };\n Vector2Utils.add = function (a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n };\n Vector2Utils.manhattanDistance = function (a, b) {\n return Math.abs(a.x - b.x) + Math.abs(a.y - b.y);\n };\n Vector2Utils.distance = function (a, b) {\n var dx = a.x - b.x;\n var dy = a.y - b.y;\n return Math.sqrt(dx * dx + dy * dy);\n };\n Vector2Utils.toHash = function (vector) {\n var x = (vector.x + this.MAX_COORD) | 0;\n var y = (vector.y + this.MAX_COORD) | 0;\n return (x << 16) | y;\n };\n Vector2Utils.toKey = function (vector) {\n return \"\".concat(vector.x, \",\").concat(vector.y);\n };\n Vector2Utils.fromHash = function (hash) {\n var x = (hash >> 16) - this.MAX_COORD;\n var y = (hash & 0xFFFF) - this.MAX_COORD;\n return { x: x, y: y };\n };\n Vector2Utils.HASH_MULTIPLIER = 73856093;\n Vector2Utils.MAX_COORD = 32767;\n return Vector2Utils;\n}());\nexport { Vector2Utils };\n","var PriorityQueue = (function () {\n function PriorityQueue() {\n this._heap = [];\n this._size = 0;\n }\n Object.defineProperty(PriorityQueue.prototype, \"size\", {\n get: function () {\n return this._size;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(PriorityQueue.prototype, \"isEmpty\", {\n get: function () {\n return this._size === 0;\n },\n enumerable: false,\n configurable: true\n });\n PriorityQueue.prototype.clear = function () {\n this._heap.length = 0;\n this._size = 0;\n };\n PriorityQueue.prototype.enqueue = function (item) {\n this._heap[this._size] = item;\n this._bubbleUp(this._size);\n this._size++;\n };\n PriorityQueue.prototype.dequeue = function () {\n if (this._size === 0) {\n return undefined;\n }\n var result = this._heap[0];\n this._size--;\n if (this._size > 0) {\n this._heap[0] = this._heap[this._size];\n this._bubbleDown(0);\n }\n return result;\n };\n PriorityQueue.prototype.peek = function () {\n return this._size > 0 ? this._heap[0] : undefined;\n };\n PriorityQueue.prototype._bubbleUp = function (index) {\n while (index > 0) {\n var parentIndex = Math.floor((index - 1) / 2);\n if (this._heap[index].priority >= this._heap[parentIndex].priority) {\n break;\n }\n this._swap(index, parentIndex);\n index = parentIndex;\n }\n };\n PriorityQueue.prototype._bubbleDown = function (index) {\n while (true) {\n var minIndex = index;\n var leftChild = 2 * index + 1;\n var rightChild = 2 * index + 2;\n if (leftChild < this._size &&\n this._heap[leftChild].priority < this._heap[minIndex].priority) {\n minIndex = leftChild;\n }\n if (rightChild < this._size &&\n this._heap[rightChild].priority < this._heap[minIndex].priority) {\n minIndex = rightChild;\n }\n if (minIndex === index) {\n break;\n }\n this._swap(index, minIndex);\n index = minIndex;\n }\n };\n PriorityQueue.prototype._swap = function (i, j) {\n var temp = this._heap[i];\n this._heap[i] = this._heap[j];\n this._heap[j] = temp;\n };\n return PriorityQueue;\n}());\nexport { PriorityQueue };\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { Vector2Utils } from '../../../Types/IVector2';\nimport { PriorityQueue } from '../../../Utils/PriorityQueue';\nvar AStarNode = (function () {\n function AStarNode(node, gCost, hCost, parent) {\n if (gCost === void 0) { gCost = 0; }\n if (hCost === void 0) { hCost = 0; }\n if (parent === void 0) { parent = null; }\n this.priority = 0;\n this.gCost = 0;\n this.hCost = 0;\n this.parent = null;\n this.hash = 0;\n this.node = node;\n this.gCost = gCost;\n this.hCost = hCost;\n this.priority = gCost + hCost;\n this.parent = parent;\n this.hash = Vector2Utils.toHash(node);\n }\n AStarNode.prototype.updateCosts = function (gCost, hCost, parent) {\n if (parent === void 0) { parent = null; }\n this.gCost = gCost;\n this.hCost = hCost;\n this.priority = gCost + hCost;\n this.parent = parent;\n };\n AStarNode.prototype.updateNode = function (node, gCost, hCost, parent) {\n if (gCost === void 0) { gCost = 0; }\n if (hCost === void 0) { hCost = 0; }\n if (parent === void 0) { parent = null; }\n this.node = node;\n this.gCost = gCost;\n this.hCost = hCost;\n this.priority = gCost + hCost;\n this.parent = parent;\n this.hash = Vector2Utils.toHash(node);\n };\n AStarNode.prototype.reset = function () {\n this.node = null;\n this.priority = 0;\n this.gCost = 0;\n this.hCost = 0;\n this.parent = null;\n this.hash = 0;\n };\n return AStarNode;\n}());\nvar AStarPathfinder = (function () {\n function AStarPathfinder() {\n }\n AStarPathfinder._getNode = function (node, gCost, hCost, parent) {\n if (gCost === void 0) { gCost = 0; }\n if (hCost === void 0) { hCost = 0; }\n if (parent === void 0) { parent = null; }\n var astarNode = this._nodePool.pop();\n if (!astarNode) {\n astarNode = new AStarNode(node, gCost, hCost, parent);\n }\n else {\n astarNode.updateNode(node, gCost, hCost, parent);\n }\n return astarNode;\n };\n AStarPathfinder._recycleNode = function (node) {\n if (this._nodePool.length < 1000) {\n node.reset();\n this._nodePool.push(node);\n }\n };\n AStarPathfinder.search = function (graph, start, goal) {\n var openSet = new PriorityQueue();\n var closedSet = new Set();\n var openSetMap = new Map();\n var startHash = Vector2Utils.toHash(start);\n var goalHash = Vector2Utils.toHash(goal);\n if (startHash === goalHash) {\n return { found: true, goalNode: this._getNode(start, 0, 0) };\n }\n if (!graph.isNodePassable(start)) {\n return { found: false, openSetNodes: [] };\n }\n var startNode = this._getNode(start, 0, graph.heuristic(start, goal));\n openSet.enqueue(startNode);\n openSetMap.set(startHash, startNode);\n var goalNode;\n var processedNodes = [];\n while (!openSet.isEmpty) {\n var current = openSet.dequeue();\n var currentHash = current.hash;\n openSetMap.delete(currentHash);\n if (currentHash === goalHash) {\n goalNode = current;\n break;\n }\n closedSet.add(currentHash);\n for (var _i = 0, _a = graph.getNeighbors(current.node); _i < _a.length; _i++) {\n var neighbor = _a[_i];\n var neighborHash = Vector2Utils.toHash(neighbor);\n if (closedSet.has(neighborHash)) {\n continue;\n }\n var tentativeGScore = current.gCost + graph.cost(current.node, neighbor);\n var existingNode = openSetMap.get(neighborHash);\n if (existingNode) {\n if (tentativeGScore < existingNode.gCost) {\n var hCost = existingNode.hCost;\n existingNode.updateCosts(tentativeGScore, hCost, current);\n }\n }\n else {\n var hCost = graph.heuristic(neighbor, goal);\n var neighborNode = this._getNode(neighbor, tentativeGScore, hCost, current);\n openSet.enqueue(neighborNode);\n openSetMap.set(neighborHash, neighborNode);\n }\n }\n processedNodes.push(current);\n }\n var remainingNodes = [];\n while (!openSet.isEmpty) {\n remainingNodes.push(openSet.dequeue());\n }\n var allNodesToRecycle = __spreadArray(__spreadArray([], processedNodes, true), remainingNodes, true);\n return { found: !!goalNode, goalNode: goalNode, openSetNodes: allNodesToRecycle };\n };\n AStarPathfinder.searchPath = function (graph, start, goal) {\n var result = this.search(graph, start, goal);\n if (!result.found || !result.goalNode) {\n if (result.openSetNodes) {\n for (var _i = 0, _a = result.openSetNodes; _i < _a.length; _i++) {\n var node = _a[_i];\n this._recycleNode(node);\n }\n }\n return [];\n }\n var path = this.reconstructPathFromNode(result.goalNode);\n if (result.openSetNodes) {\n for (var _b = 0, _c = result.openSetNodes; _b < _c.length; _b++) {\n var node = _c[_b];\n this._recycleNode(node);\n }\n }\n return path;\n };\n AStarPathfinder.reconstructPathFromNode = function (goalNode) {\n this._tempPath.length = 0;\n var current = goalNode;\n while (current) {\n this._tempPath.unshift(current.node);\n current = current.parent;\n }\n return __spreadArray([], this._tempPath, true);\n };\n AStarPathfinder.hasPath = function (graph, start, goal) {\n var result = this.search(graph, start, goal);\n if (result.goalNode) {\n this._recycleNode(result.goalNode);\n }\n if (result.openSetNodes) {\n for (var _i = 0, _a = result.openSetNodes; _i < _a.length; _i++) {\n var node = _a[_i];\n if (node !== result.goalNode) {\n this._recycleNode(node);\n }\n }\n }\n return result.found;\n };\n AStarPathfinder.clearPool = function () {\n this._nodePool.length = 0;\n this._tempPath.length = 0;\n };\n AStarPathfinder.getPoolStats = function () {\n return {\n poolSize: this._nodePool.length,\n maxPoolSize: 1000\n };\n };\n AStarPathfinder._nodePool = [];\n AStarPathfinder._tempPath = [];\n return AStarPathfinder;\n}());\nexport { AStarPathfinder };\n","import { Vector2Utils } from '../../../Types/IVector2';\nimport { AStarPathfinder } from './AStarPathfinder';\nvar AstarGridGraph = (function () {\n function AstarGridGraph(width, height) {\n this.dirs = [\n Vector2Utils.create(1, 0),\n Vector2Utils.create(0, -1),\n Vector2Utils.create(-1, 0),\n Vector2Utils.create(0, 1)\n ];\n this.walls = [];\n this.weightedNodes = [];\n this.defaultWeight = 1;\n this.weightedNodeWeight = 5;\n this._neighbors = new Array(4);\n this._wallsSet = new Set();\n this._weightedNodesSet = new Set();\n this._wallsDirty = true;\n this._weightedNodesDirty = true;\n this._width = width;\n this._height = height;\n }\n AstarGridGraph.prototype.addWall = function (wall) {\n this.walls.push(wall);\n this._wallsDirty = true;\n };\n AstarGridGraph.prototype.addWalls = function (walls) {\n var _a;\n (_a = this.walls).push.apply(_a, walls);\n this._wallsDirty = true;\n };\n AstarGridGraph.prototype.clearWalls = function () {\n this.walls.length = 0;\n this._wallsSet.clear();\n this._wallsDirty = false;\n };\n AstarGridGraph.prototype.addWeightedNode = function (node) {\n this.weightedNodes.push(node);\n this._weightedNodesDirty = true;\n };\n AstarGridGraph.prototype.addWeightedNodes = function (nodes) {\n var _a;\n (_a = this.weightedNodes).push.apply(_a, nodes);\n this._weightedNodesDirty = true;\n };\n AstarGridGraph.prototype.clearWeightedNodes = function () {\n this.weightedNodes.length = 0;\n this._weightedNodesSet.clear();\n this._weightedNodesDirty = false;\n };\n AstarGridGraph.prototype._updateHashSets = function () {\n if (this._wallsDirty) {\n this._wallsSet.clear();\n for (var _i = 0, _a = this.walls; _i < _a.length; _i++) {\n var wall = _a[_i];\n this._wallsSet.add(Vector2Utils.toHash(wall));\n }\n this._wallsDirty = false;\n }\n if (this._weightedNodesDirty) {\n this._weightedNodesSet.clear();\n for (var _b = 0, _c = this.weightedNodes; _b < _c.length; _b++) {\n var node = _c[_b];\n this._weightedNodesSet.add(Vector2Utils.toHash(node));\n }\n this._weightedNodesDirty = false;\n }\n };\n AstarGridGraph.prototype.isNodeInBounds = function (node) {\n return 0 <= node.x && node.x < this._width && 0 <= node.y && node.y < this._height;\n };\n AstarGridGraph.prototype.isNodePassable = function (node) {\n this._updateHashSets();\n return !this._wallsSet.has(Vector2Utils.toHash(node));\n };\n AstarGridGraph.prototype.search = function (start, goal) {\n return AStarPathfinder.hasPath(this, start, goal);\n };\n AstarGridGraph.prototype.searchPath = function (start, goal) {\n return AStarPathfinder.searchPath(this, start, goal);\n };\n AstarGridGraph.prototype.getNeighbors = function (node) {\n this._neighbors.length = 0;\n for (var _i = 0, _a = this.dirs; _i < _a.length; _i++) {\n var dir = _a[_i];\n var next = Vector2Utils.add(node, dir);\n if (this.isNodeInBounds(next) && this.isNodePassable(next)) {\n this._neighbors.push(next);\n }\n }\n return this._neighbors;\n };\n AstarGridGraph.prototype.cost = function (from, to) {\n this._updateHashSets();\n return this._weightedNodesSet.has(Vector2Utils.toHash(to)) ? this.weightedNodeWeight : this.defaultWeight;\n };\n AstarGridGraph.prototype.heuristic = function (node, goal) {\n return Vector2Utils.manhattanDistance(node, goal);\n };\n AstarGridGraph.prototype.getStats = function () {\n this._updateHashSets();\n return {\n walls: this.walls.length,\n weightedNodes: this.weightedNodes.length,\n gridSize: \"\".concat(this._width, \"x\").concat(this._height),\n wallsSetSize: this._wallsSet.size,\n weightedNodesSetSize: this._weightedNodesSet.size\n };\n };\n return AstarGridGraph;\n}());\nexport { AstarGridGraph };\n","import { Vector2Utils } from '../../../Types/IVector2';\nvar BreadthFirstPathfinder = (function () {\n function BreadthFirstPathfinder() {\n }\n BreadthFirstPathfinder.search = function (graph, start, goal, cameFrom) {\n var frontier = [];\n var visited = new Set();\n var pathMap = cameFrom || new Map();\n var startHash = Vector2Utils.toHash(start);\n var goalHash = Vector2Utils.toHash(goal);\n if (startHash === goalHash) {\n return true;\n }\n frontier.push(start);\n visited.add(startHash);\n while (frontier.length > 0) {\n var current = frontier.shift();\n var currentHash = Vector2Utils.toHash(current);\n if (currentHash === goalHash) {\n return true;\n }\n for (var _i = 0, _a = graph.getNeighbors(current); _i < _a.length; _i++) {\n var neighbor = _a[_i];\n var neighborHash = Vector2Utils.toHash(neighbor);\n if (visited.has(neighborHash)) {\n continue;\n }\n visited.add(neighborHash);\n pathMap.set(neighborHash, current);\n frontier.push(neighbor);\n }\n }\n return false;\n };\n BreadthFirstPathfinder.searchPath = function (graph, start, goal) {\n var cameFrom = new Map();\n if (this.search(graph, start, goal, cameFrom)) {\n return this.reconstructPath(cameFrom, start, goal);\n }\n return [];\n };\n BreadthFirstPathfinder.reconstructPath = function (cameFrom, start, goal) {\n var path = [];\n var current = goal;\n var startHash = Vector2Utils.toHash(start);\n while (Vector2Utils.toHash(current) !== startHash) {\n path.unshift(current);\n var currentHash = Vector2Utils.toHash(current);\n var parent_1 = cameFrom.get(currentHash);\n if (!parent_1)\n break;\n current = parent_1;\n }\n path.unshift(start);\n return path;\n };\n return BreadthFirstPathfinder;\n}());\nexport { BreadthFirstPathfinder };\n","var UnweightedGraph = (function () {\n function UnweightedGraph() {\n this.edges = new Map();\n }\n UnweightedGraph.prototype.addEdgesForNode = function (node, neighbors) {\n this.edges.set(node, neighbors);\n return this;\n };\n UnweightedGraph.prototype.getNeighbors = function (node) {\n return this.edges.get(node) || [];\n };\n return UnweightedGraph;\n}());\nexport { UnweightedGraph };\n","import { Vector2Utils } from '../../../Types/IVector2';\nimport { BreadthFirstPathfinder } from './BreadthFirstPathfinder';\nvar UnweightedGridGraph = (function () {\n function UnweightedGridGraph(width, height, allowDiagonalSearch) {\n if (allowDiagonalSearch === void 0) { allowDiagonalSearch = false; }\n this.walls = [];\n this._neighbors = [];\n this._width = width;\n this._height = height;\n this._dirs = allowDiagonalSearch ? UnweightedGridGraph.COMPASS_DIRS : UnweightedGridGraph.CARDINAL_DIRS;\n }\n UnweightedGridGraph.prototype.isNodeInBounds = function (node) {\n return 0 <= node.x && node.x < this._width && 0 <= node.y && node.y < this._height;\n };\n UnweightedGridGraph.prototype.isNodePassable = function (node) {\n return !this.walls.find(function (wall) { return Vector2Utils.equals(wall, node); });\n };\n UnweightedGridGraph.prototype.getNeighbors = function (node) {\n this._neighbors.length = 0;\n for (var _i = 0, _a = this._dirs; _i < _a.length; _i++) {\n var dir = _a[_i];\n var next = Vector2Utils.add(node, dir);\n if (this.isNodeInBounds(next) && this.isNodePassable(next)) {\n this._neighbors.push(next);\n }\n }\n return this._neighbors;\n };\n UnweightedGridGraph.prototype.searchPath = function (start, goal) {\n return BreadthFirstPathfinder.searchPath(this, start, goal);\n };\n UnweightedGridGraph.prototype.hasPath = function (start, goal) {\n return BreadthFirstPathfinder.search(this, start, goal);\n };\n UnweightedGridGraph.CARDINAL_DIRS = [\n Vector2Utils.create(1, 0),\n Vector2Utils.create(0, -1),\n Vector2Utils.create(-1, 0),\n Vector2Utils.create(0, 1)\n ];\n UnweightedGridGraph.COMPASS_DIRS = [\n Vector2Utils.create(1, 0),\n Vector2Utils.create(1, -1),\n Vector2Utils.create(0, -1),\n Vector2Utils.create(-1, -1),\n Vector2Utils.create(-1, 0),\n Vector2Utils.create(-1, 1),\n Vector2Utils.create(0, 1),\n Vector2Utils.create(1, 1),\n ];\n return UnweightedGridGraph;\n}());\nexport { UnweightedGridGraph };\n"],"names":["this"],"mappings":";;;;;;;AAAG,IAAC,YAAY,IAAI,YAAY;AAChC,IAAI,SAAS,YAAY,GAAG;AAC5B,IAAI;AACJ,IAAI,YAAY,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AAC1C,QAAQ,IAAI,CAAC,CAAC,MAAM,EAAE;AACtB,YAAY,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9B,QAAQ;AACR,QAAQ,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,IAAI,CAAC;AACL,IAAI,YAAY,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AAC1C,QAAQ,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC7B,IAAI,CAAC;AACL,IAAI,YAAY,CAAC,KAAK,GAAG,UAAU,MAAM,EAAE;AAC3C,QAAQ,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE;AAC3C,IAAI,CAAC;AACL,IAAI,YAAY,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AACvC,QAAQ,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AAC7C,IAAI,CAAC;AACL,IAAI,YAAY,CAAC,iBAAiB,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AACrD,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxD,IAAI,CAAC;AACL,IAAI,YAAY,CAAC,QAAQ,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AAC5C,QAAQ,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1B,QAAQ,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1B,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAC3C,IAAI,CAAC;AACL,IAAI,YAAY,CAAC,MAAM,GAAG,UAAU,MAAM,EAAE;AAC5C,QAAQ,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC;AAC/C,QAAQ,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC;AAC/C,QAAQ,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC;AAC5B,IAAI,CAAC;AACL,IAAI,YAAY,CAAC,KAAK,GAAG,UAAU,MAAM,EAAE;AAC3C,QAAQ,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AACxD,IAAI,CAAC;AACL,IAAI,YAAY,CAAC,QAAQ,GAAG,UAAU,IAAI,EAAE;AAC5C,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,SAAS;AAC7C,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,MAAM,IAAI,IAAI,CAAC,SAAS;AAChD,QAAQ,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC7B,IAAI,CAAC;AACL,IAAI,YAAY,CAAC,eAAe,GAAG,QAAQ;AAC3C,IAAI,YAAY,CAAC,SAAS,GAAG,KAAK;AAClC,IAAI,OAAO,YAAY;AACvB,CAAC,EAAE;;AC1CA,IAAC,aAAa,IAAI,YAAY;AACjC,IAAI,SAAS,aAAa,GAAG;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,EAAE;AACvB,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC;AACtB,IAAI;AACJ,IAAI,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE;AAC3D,QAAQ,GAAG,EAAE,YAAY;AACzB,YAAY,OAAO,IAAI,CAAC,KAAK;AAC7B,QAAQ,CAAC;AACT,QAAQ,UAAU,EAAE,KAAK;AACzB,QAAQ,YAAY,EAAE;AACtB,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE;AAC9D,QAAQ,GAAG,EAAE,YAAY;AACzB,YAAY,OAAO,IAAI,CAAC,KAAK,KAAK,CAAC;AACnC,QAAQ,CAAC;AACT,QAAQ,UAAU,EAAE,KAAK;AACzB,QAAQ,YAAY,EAAE;AACtB,KAAK,CAAC;AACN,IAAI,aAAa,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;AAChD,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC;AACtB,IAAI,CAAC;AACL,IAAI,aAAa,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,IAAI,EAAE;AACtD,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI;AACrC,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AAClC,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB,IAAI,CAAC;AACL,IAAI,aAAa,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;AAClD,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;AAC9B,YAAY,OAAO,SAAS;AAC5B,QAAQ;AACR,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB,QAAQ,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE;AAC5B,YAAY,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AAClD,YAAY,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AAC/B,QAAQ;AACR,QAAQ,OAAO,MAAM;AACrB,IAAI,CAAC;AACL,IAAI,aAAa,CAAC,SAAS,CAAC,IAAI,GAAG,YAAY;AAC/C,QAAQ,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS;AACzD,IAAI,CAAC;AACL,IAAI,aAAa,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,KAAK,EAAE;AACzD,QAAQ,OAAO,KAAK,GAAG,CAAC,EAAE;AAC1B,YAAY,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;AACzD,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE;AAChF,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC;AAC1C,YAAY,KAAK,GAAG,WAAW;AAC/B,QAAQ;AACR,IAAI,CAAC;AACL,IAAI,aAAa,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,KAAK,EAAE;AAC3D,QAAQ,OAAO,IAAI,EAAE;AACrB,YAAY,IAAI,QAAQ,GAAG,KAAK;AAChC,YAAY,IAAI,SAAS,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC;AACzC,YAAY,IAAI,UAAU,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC;AAC1C,YAAY,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK;AACtC,gBAAgB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE;AAChF,gBAAgB,QAAQ,GAAG,SAAS;AACpC,YAAY;AACZ,YAAY,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK;AACvC,gBAAgB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE;AACjF,gBAAgB,QAAQ,GAAG,UAAU;AACrC,YAAY;AACZ,YAAY,IAAI,QAAQ,KAAK,KAAK,EAAE;AACpC,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC;AACvC,YAAY,KAAK,GAAG,QAAQ;AAC5B,QAAQ;AACR,IAAI,CAAC;AACL,IAAI,aAAa,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AACpD,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAChC,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACrC,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;AAC5B,IAAI,CAAC;AACL,IAAI,OAAO,aAAa;AACxB,CAAC,EAAE;;AC/EH,IAAI,aAAa,GAAG,CAACA,UAAI,IAAIA,UAAI,CAAC,aAAa,KAAK,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;AAC9E,IAAI,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACzF,QAAQ,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE;AAChC,YAAY,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAChE,YAAY,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC3B,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5D,CAAC;AAGD,IAAI,SAAS,IAAI,YAAY;AAC7B,IAAI,SAAS,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;AACnD,QAAQ,IAAI,KAAK,KAAK,MAAM,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AAC3C,QAAQ,IAAI,KAAK,KAAK,MAAM,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AAC3C,QAAQ,IAAI,MAAM,KAAK,MAAM,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;AAChD,QAAQ,IAAI,CAAC,QAAQ,GAAG,CAAC;AACzB,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC;AACtB,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC;AACtB,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI;AAC1B,QAAQ,IAAI,CAAC,IAAI,GAAG,CAAC;AACrB,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,GAAG,KAAK;AACrC,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM;AAC5B,QAAQ,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;AAC7C,IAAI;AACJ,IAAI,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;AACtE,QAAQ,IAAI,MAAM,KAAK,MAAM,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;AAChD,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,GAAG,KAAK;AACrC,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM;AAC5B,IAAI,CAAC;AACL,IAAI,SAAS,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;AAC3E,QAAQ,IAAI,KAAK,KAAK,MAAM,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AAC3C,QAAQ,IAAI,KAAK,KAAK,MAAM,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AAC3C,QAAQ,IAAI,MAAM,KAAK,MAAM,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;AAChD,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,GAAG,KAAK;AACrC,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM;AAC5B,QAAQ,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;AAC7C,IAAI,CAAC;AACL,IAAI,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;AAC5C,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,QAAQ,IAAI,CAAC,QAAQ,GAAG,CAAC;AACzB,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC;AACtB,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC;AACtB,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI;AAC1B,QAAQ,IAAI,CAAC,IAAI,GAAG,CAAC;AACrB,IAAI,CAAC;AACL,IAAI,OAAO,SAAS;AACpB,CAAC,EAAE,CAAC;AACD,IAAC,eAAe,IAAI,YAAY;AACnC,IAAI,SAAS,eAAe,GAAG;AAC/B,IAAI;AACJ,IAAI,eAAe,CAAC,QAAQ,GAAG,UAAU,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;AACrE,QAAQ,IAAI,KAAK,KAAK,MAAM,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AAC3C,QAAQ,IAAI,KAAK,KAAK,MAAM,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AAC3C,QAAQ,IAAI,MAAM,KAAK,MAAM,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;AAChD,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE;AAC5C,QAAQ,IAAI,CAAC,SAAS,EAAE;AACxB,YAAY,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC;AACjE,QAAQ;AACR,aAAa;AACb,YAAY,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC;AAC5D,QAAQ;AACR,QAAQ,OAAO,SAAS;AACxB,IAAI,CAAC;AACL,IAAI,eAAe,CAAC,YAAY,GAAG,UAAU,IAAI,EAAE;AACnD,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,EAAE;AAC1C,YAAY,IAAI,CAAC,KAAK,EAAE;AACxB,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACrC,QAAQ;AACR,IAAI,CAAC;AACL,IAAI,eAAe,CAAC,MAAM,GAAG,UAAU,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;AAC3D,QAAQ,IAAI,OAAO,GAAG,IAAI,aAAa,EAAE;AACzC,QAAQ,IAAI,SAAS,GAAG,IAAI,GAAG,EAAE;AACjC,QAAQ,IAAI,UAAU,GAAG,IAAI,GAAG,EAAE;AAClC,QAAQ,IAAI,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC;AAClD,QAAQ,IAAI,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;AAChD,QAAQ,IAAI,SAAS,KAAK,QAAQ,EAAE;AACpC,YAAY,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACxE,QAAQ;AACR,QAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;AAC1C,YAAY,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE;AACrD,QAAQ;AACR,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC7E,QAAQ,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;AAClC,QAAQ,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC;AAC5C,QAAQ,IAAI,QAAQ;AACpB,QAAQ,IAAI,cAAc,GAAG,EAAE;AAC/B,QAAQ,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE;AACjC,YAAY,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE;AAC3C,YAAY,IAAI,WAAW,GAAG,OAAO,CAAC,IAAI;AAC1C,YAAY,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC;AAC1C,YAAY,IAAI,WAAW,KAAK,QAAQ,EAAE;AAC1C,gBAAgB,QAAQ,GAAG,OAAO;AAClC,gBAAgB;AAChB,YAAY;AACZ,YAAY,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;AACtC,YAAY,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AAC1F,gBAAgB,IAAI,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC;AACrC,gBAAgB,IAAI,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC;AAChE,gBAAgB,IAAI,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;AACjD,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB,IAAI,eAAe,GAAG,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;AACxF,gBAAgB,IAAI,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC;AAC/D,gBAAgB,IAAI,YAAY,EAAE;AAClC,oBAAoB,IAAI,eAAe,GAAG,YAAY,CAAC,KAAK,EAAE;AAC9D,wBAAwB,IAAI,KAAK,GAAG,YAAY,CAAC,KAAK;AACtD,wBAAwB,YAAY,CAAC,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,OAAO,CAAC;AACjF,oBAAoB;AACpB,gBAAgB;AAChB,qBAAqB;AACrB,oBAAoB,IAAI,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC/D,oBAAoB,IAAI,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,CAAC;AAC/F,oBAAoB,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;AACjD,oBAAoB,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC;AAC9D,gBAAgB;AAChB,YAAY;AACZ,YAAY,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AACxC,QAAQ;AACR,QAAQ,IAAI,cAAc,GAAG,EAAE;AAC/B,QAAQ,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE;AACjC,YAAY,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AAClD,QAAQ;AACR,QAAQ,IAAI,iBAAiB,GAAG,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC;AAC5G,QAAQ,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,iBAAiB,EAAE;AACzF,IAAI,CAAC;AACL,IAAI,eAAe,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;AAC/D,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;AACpD,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AAC/C,YAAY,IAAI,MAAM,CAAC,YAAY,EAAE;AACrC,gBAAgB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AACjF,oBAAoB,IAAI,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC;AACrC,oBAAoB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAC3C,gBAAgB;AAChB,YAAY;AACZ,YAAY,OAAO,EAAE;AACrB,QAAQ;AACR,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,QAAQ,CAAC;AAChE,QAAQ,IAAI,MAAM,CAAC,YAAY,EAAE;AACjC,YAAY,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AAC7E,gBAAgB,IAAI,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC;AACjC,gBAAgB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACvC,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,IAAI;AACnB,IAAI,CAAC;AACL,IAAI,eAAe,CAAC,uBAAuB,GAAG,UAAU,QAAQ,EAAE;AAClE,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;AACjC,QAAQ,IAAI,OAAO,GAAG,QAAQ;AAC9B,QAAQ,OAAO,OAAO,EAAE;AACxB,YAAY,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;AAChD,YAAY,OAAO,GAAG,OAAO,CAAC,MAAM;AACpC,QAAQ;AACR,QAAQ,OAAO,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;AACtD,IAAI,CAAC;AACL,IAAI,eAAe,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;AAC5D,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;AACpD,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE;AAC7B,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC9C,QAAQ;AACR,QAAQ,IAAI,MAAM,CAAC,YAAY,EAAE;AACjC,YAAY,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AAC7E,gBAAgB,IAAI,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC;AACjC,gBAAgB,IAAI,IAAI,KAAK,MAAM,CAAC,QAAQ,EAAE;AAC9C,oBAAoB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAC3C,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,MAAM,CAAC,KAAK;AAC3B,IAAI,CAAC;AACL,IAAI,eAAe,CAAC,SAAS,GAAG,YAAY;AAC5C,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;AACjC,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;AACjC,IAAI,CAAC;AACL,IAAI,eAAe,CAAC,YAAY,GAAG,YAAY;AAC/C,QAAQ,OAAO;AACf,YAAY,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;AAC3C,YAAY,WAAW,EAAE;AACzB,SAAS;AACT,IAAI,CAAC;AACL,IAAI,eAAe,CAAC,SAAS,GAAG,EAAE;AAClC,IAAI,eAAe,CAAC,SAAS,GAAG,EAAE;AAClC,IAAI,OAAO,eAAe;AAC1B,CAAC,EAAE;;AC7LA,IAAC,cAAc,IAAI,YAAY;AAClC,IAAI,SAAS,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE;AAC3C,QAAQ,IAAI,CAAC,IAAI,GAAG;AACpB,YAAY,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AACrC,YAAY,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;AACtC,YAAY,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;AACtC,YAAY,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;AACpC,SAAS;AACT,QAAQ,IAAI,CAAC,KAAK,GAAG,EAAE;AACvB,QAAQ,IAAI,CAAC,aAAa,GAAG,EAAE;AAC/B,QAAQ,IAAI,CAAC,aAAa,GAAG,CAAC;AAC9B,QAAQ,IAAI,CAAC,kBAAkB,GAAG,CAAC;AACnC,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC;AACtC,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE;AAClC,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAAE;AAC1C,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;AAC/B,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI;AACvC,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK;AAC3B,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM;AAC7B,IAAI;AACJ,IAAI,cAAc,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,IAAI,EAAE;AACvD,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;AAC/B,IAAI,CAAC;AACL,IAAI,cAAc,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,KAAK,EAAE;AACzD,QAAQ,IAAI,EAAE;AACd,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC;AAC/C,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;AAC/B,IAAI,CAAC;AACL,IAAI,cAAc,CAAC,SAAS,CAAC,UAAU,GAAG,YAAY;AACtD,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;AAC7B,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AAC9B,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK;AAChC,IAAI,CAAC;AACL,IAAI,cAAc,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,IAAI,EAAE;AAC/D,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AACrC,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI;AACvC,IAAI,CAAC;AACL,IAAI,cAAc,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,KAAK,EAAE;AACjE,QAAQ,IAAI,EAAE;AACd,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC;AACvD,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI;AACvC,IAAI,CAAC;AACL,IAAI,cAAc,CAAC,SAAS,CAAC,kBAAkB,GAAG,YAAY;AAC9D,QAAQ,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;AACrC,QAAQ,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AACtC,QAAQ,IAAI,CAAC,mBAAmB,GAAG,KAAK;AACxC,IAAI,CAAC;AACL,IAAI,cAAc,CAAC,SAAS,CAAC,eAAe,GAAG,YAAY;AAC3D,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;AAC9B,YAAY,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AAClC,YAAY,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AACpE,gBAAgB,IAAI,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC;AACjC,gBAAgB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7D,YAAY;AACZ,YAAY,IAAI,CAAC,WAAW,GAAG,KAAK;AACpC,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACtC,YAAY,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AAC1C,YAAY,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AAC5E,gBAAgB,IAAI,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC;AACjC,gBAAgB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACrE,YAAY;AACZ,YAAY,IAAI,CAAC,mBAAmB,GAAG,KAAK;AAC5C,QAAQ;AACR,IAAI,CAAC;AACL,IAAI,cAAc,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,IAAI,EAAE;AAC9D,QAAQ,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO;AAC1F,IAAI,CAAC;AACL,IAAI,cAAc,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,IAAI,EAAE;AAC9D,QAAQ,IAAI,CAAC,eAAe,EAAE;AAC9B,QAAQ,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7D,IAAI,CAAC;AACL,IAAI,cAAc,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,KAAK,EAAE,IAAI,EAAE;AAC7D,QAAQ,OAAO,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;AACzD,IAAI,CAAC;AACL,IAAI,cAAc,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,IAAI,EAAE;AACjE,QAAQ,OAAO,eAAe,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;AAC5D,IAAI,CAAC;AACL,IAAI,cAAc,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,IAAI,EAAE;AAC5D,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;AAClC,QAAQ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AAC/D,YAAY,IAAI,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC;AAC5B,YAAY,IAAI,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC;AAClD,YAAY,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;AACxE,gBAAgB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1C,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,UAAU;AAC9B,IAAI,CAAC;AACL,IAAI,cAAc,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE;AACxD,QAAQ,IAAI,CAAC,eAAe,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa;AACjH,IAAI,CAAC;AACL,IAAI,cAAc,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE;AAC/D,QAAQ,OAAO,YAAY,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC;AACzD,IAAI,CAAC;AACL,IAAI,cAAc,CAAC,SAAS,CAAC,QAAQ,GAAG,YAAY;AACpD,QAAQ,IAAI,CAAC,eAAe,EAAE;AAC9B,QAAQ,OAAO;AACf,YAAY,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;AACpC,YAAY,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM;AACpD,YAAY,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AACtE,YAAY,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;AAC7C,YAAY,oBAAoB,EAAE,IAAI,CAAC,iBAAiB,CAAC;AACzD,SAAS;AACT,IAAI,CAAC;AACL,IAAI,OAAO,cAAc;AACzB,CAAC,EAAE;;AC7GA,IAAC,sBAAsB,IAAI,YAAY;AAC1C,IAAI,SAAS,sBAAsB,GAAG;AACtC,IAAI;AACJ,IAAI,sBAAsB,CAAC,MAAM,GAAG,UAAU,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC5E,QAAQ,IAAI,QAAQ,GAAG,EAAE;AACzB,QAAQ,IAAI,OAAO,GAAG,IAAI,GAAG,EAAE;AAC/B,QAAQ,IAAI,OAAO,GAAG,QAAQ,IAAI,IAAI,GAAG,EAAE;AAC3C,QAAQ,IAAI,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC;AAClD,QAAQ,IAAI,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;AAChD,QAAQ,IAAI,SAAS,KAAK,QAAQ,EAAE;AACpC,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,QAAQ,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,QAAQ,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;AAC9B,QAAQ,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACpC,YAAY,IAAI,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE;AAC1C,YAAY,IAAI,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1D,YAAY,IAAI,WAAW,KAAK,QAAQ,EAAE;AAC1C,gBAAgB,OAAO,IAAI;AAC3B,YAAY;AACZ,YAAY,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AACrF,gBAAgB,IAAI,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC;AACrC,gBAAgB,IAAI,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC;AAChE,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;AAC/C,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;AACzC,gBAAgB,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC;AAClD,gBAAgB,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;AACvC,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,KAAK;AACpB,IAAI,CAAC;AACL,IAAI,sBAAsB,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;AACtE,QAAQ,IAAI,QAAQ,GAAG,IAAI,GAAG,EAAE;AAChC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE;AACvD,YAAY,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC;AAC9D,QAAQ;AACR,QAAQ,OAAO,EAAE;AACjB,IAAI,CAAC;AACL,IAAI,sBAAsB,CAAC,eAAe,GAAG,UAAU,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE;AAC9E,QAAQ,IAAI,IAAI,GAAG,EAAE;AACrB,QAAQ,IAAI,OAAO,GAAG,IAAI;AAC1B,QAAQ,IAAI,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC;AAClD,QAAQ,OAAO,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE;AAC3D,YAAY,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AACjC,YAAY,IAAI,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1D,YAAY,IAAI,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC;AACpD,YAAY,IAAI,CAAC,QAAQ;AACzB,gBAAgB;AAChB,YAAY,OAAO,GAAG,QAAQ;AAC9B,QAAQ;AACR,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC3B,QAAQ,OAAO,IAAI;AACnB,IAAI,CAAC;AACL,IAAI,OAAO,sBAAsB;AACjC,CAAC,EAAE;;ACzDA,IAAC,eAAe,IAAI,YAAY;AACnC,IAAI,SAAS,eAAe,GAAG;AAC/B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE;AAC9B,IAAI;AACJ,IAAI,eAAe,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,IAAI,EAAE,SAAS,EAAE;AAC3E,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC;AACvC,QAAQ,OAAO,IAAI;AACnB,IAAI,CAAC;AACL,IAAI,eAAe,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,IAAI,EAAE;AAC7D,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;AACzC,IAAI,CAAC;AACL,IAAI,OAAO,eAAe;AAC1B,CAAC,EAAE;;ACVA,IAAC,mBAAmB,IAAI,YAAY;AACvC,IAAI,SAAS,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE;AACrE,QAAQ,IAAI,mBAAmB,KAAK,MAAM,EAAE,EAAE,mBAAmB,GAAG,KAAK,CAAC,CAAC;AAC3E,QAAQ,IAAI,CAAC,KAAK,GAAG,EAAE;AACvB,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE;AAC5B,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK;AAC3B,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,mBAAmB,GAAG,mBAAmB,CAAC,YAAY,GAAG,mBAAmB,CAAC,aAAa;AAC/G,IAAI;AACJ,IAAI,mBAAmB,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,IAAI,EAAE;AACnE,QAAQ,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO;AAC1F,IAAI,CAAC;AACL,IAAI,mBAAmB,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,IAAI,EAAE;AACnE,QAAQ,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5F,IAAI,CAAC;AACL,IAAI,mBAAmB,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,IAAI,EAAE;AACjE,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;AAClC,QAAQ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AAChE,YAAY,IAAI,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC;AAC5B,YAAY,IAAI,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC;AAClD,YAAY,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;AACxE,gBAAgB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1C,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,UAAU;AAC9B,IAAI,CAAC;AACL,IAAI,mBAAmB,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,IAAI,EAAE;AACtE,QAAQ,OAAO,sBAAsB,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;AACnE,IAAI,CAAC;AACL,IAAI,mBAAmB,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE,IAAI,EAAE;AACnE,QAAQ,OAAO,sBAAsB,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;AAC/D,IAAI,CAAC;AACL,IAAI,mBAAmB,CAAC,aAAa,GAAG;AACxC,QAAQ,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AACjC,QAAQ,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;AAClC,QAAQ,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;AAClC,QAAQ,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;AAChC,KAAK;AACL,IAAI,mBAAmB,CAAC,YAAY,GAAG;AACvC,QAAQ,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AACjC,QAAQ,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;AAClC,QAAQ,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;AAClC,QAAQ,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC;AACnC,QAAQ,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;AAClC,QAAQ,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;AAClC,QAAQ,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AACjC,QAAQ,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AACjC,KAAK;AACL,IAAI,OAAO,mBAAmB;AAC9B,CAAC,EAAE;;;;"}
package/package.json CHANGED
@@ -1,9 +1,15 @@
1
1
  {
2
2
  "name": "@esengine/pathfinding",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "寻路算法库,支持A*、广度优先等算法,适用于Cocos Creator、Laya等游戏引擎",
5
- "main": "bin/index.js",
6
- "types": "bin/index.d.ts",
5
+ "main": "dist/pathfinding.cjs",
6
+ "module": "dist/pathfinding.mjs",
7
+ "types": "dist/pathfinding.d.ts",
8
+ "files": [
9
+ "dist/**/*",
10
+ "README.md",
11
+ "LICENSE"
12
+ ],
7
13
  "keywords": [
8
14
  "pathfinding",
9
15
  "astar",
@@ -20,32 +26,41 @@
20
26
  "lib": "lib"
21
27
  },
22
28
  "scripts": {
23
- "test": "mocha --recursive --reporter tap --growl",
29
+ "test": "jest",
30
+ "test:watch": "jest --watch",
31
+ "test:coverage": "jest --coverage",
32
+ "test:mocha": "mocha --recursive --reporter tap --growl",
33
+ "type-check": "tsc --noEmit",
34
+ "lint": "npm run eslint",
24
35
  "eslint": "eslint src --ext .ts",
25
- "build": "gulp build",
26
- "dev": "gulp buildJs"
36
+ "clean": "rimraf bin dist",
37
+ "build:ts": "tsc",
38
+ "prebuild": "npm run clean",
39
+ "build": "npm run build:ts && rollup -c",
40
+ "build:watch": "tsc --watch",
41
+ "rebuild": "npm run clean && npm run build",
42
+ "dev": "npm run build:ts && rollup -c --watch",
43
+ "ci": "npm run type-check && npm run test && npm run build",
44
+ "prepublishOnly": "npm run ci",
45
+ "publish:patch": "npm version patch && npm run build && npm publish"
27
46
  },
28
47
  "author": "yhh",
29
48
  "license": "MIT",
30
49
  "devDependencies": {
31
- "@babel/core": "^7.23.0",
32
- "@babel/preset-env": "^7.23.0",
33
- "browserify": "^17.0.0",
34
- "del": "^8.0.0",
35
- "gulp": "^5.0.0",
36
- "gulp-babel": "^8.0.0",
37
- "gulp-concat": "^2.6.1",
38
- "gulp-inject-string": "^1.1.2",
39
- "gulp-string-replace": "^1.1.2",
40
- "gulp-terser": "^2.1.0",
41
- "gulp-typescript": "^6.0.0-alpha.1",
42
- "tsify": "^5.0.4",
43
- "typedoc": "^0.25.0",
44
- "typescript": "^4.9.5",
45
- "vinyl-source-stream": "^2.0.0",
46
- "watchify": "^4.0.0"
50
+ "@rollup/plugin-commonjs": "^28.0.3",
51
+ "@rollup/plugin-node-resolve": "^16.0.1",
52
+ "@types/jest": "^29.5.12",
53
+ "@typescript-eslint/eslint-plugin": "^6.0.0",
54
+ "@typescript-eslint/parser": "^6.0.0",
55
+ "eslint": "^8.0.0",
56
+ "jest": "^29.7.0",
57
+ "ts-jest": "^29.1.2",
58
+ "rimraf": "^5.0.0",
59
+ "rollup": "^4.42.0",
60
+ "rollup-plugin-dts": "^6.2.1",
61
+ "typedoc": "^0.25.13",
62
+ "typescript": "^5.4.5"
47
63
  },
48
-
49
64
  "dependencies": {
50
65
  "@esengine/ecs-framework": "^2.0.5"
51
66
  }
package/.idea/misc.xml DELETED
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="JavaScriptSettings">
4
- <option name="languageLevel" value="ES6" />
5
- </component>
6
- </project>
package/.idea/modules.xml DELETED
@@ -1,8 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectModuleManager">
4
- <modules>
5
- <module fileurl="file://$PROJECT_DIR$/.idea/source.iml" filepath="$PROJECT_DIR$/.idea/source.iml" />
6
- </modules>
7
- </component>
8
- </project>
package/.idea/source.iml DELETED
@@ -1,12 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <module type="WEB_MODULE" version="4">
3
- <component name="NewModuleRootManager">
4
- <content url="file://$MODULE_DIR$">
5
- <excludeFolder url="file://$MODULE_DIR$/.tmp" />
6
- <excludeFolder url="file://$MODULE_DIR$/temp" />
7
- <excludeFolder url="file://$MODULE_DIR$/tmp" />
8
- </content>
9
- <orderEntry type="inheritedJdk" />
10
- <orderEntry type="sourceFolder" forTests="false" />
11
- </component>
12
- </module>
package/.idea/vcs.xml DELETED
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="VcsDirectoryMappings">
4
- <mapping directory="$PROJECT_DIR$/.." vcs="Git" />
5
- </component>
6
- </project>
@@ -1,13 +0,0 @@
1
- {
2
- // See https://go.microsoft.com/fwlink/?LinkId=733558
3
- // for the documentation about the tasks.json format
4
- "version": "2.0.0",
5
- "tasks": [
6
- {
7
- "type": "gulp",
8
- "task": "build",
9
- "group": "build",
10
- "problemMatcher": []
11
- }
12
- ]
13
- }
@@ -1,3 +0,0 @@
1
- {
2
- "typescript.tsdk": "./node_modules/typescript/lib"
3
- }