@dcl/sdk 7.5.8-10926653489.commit-aec9f09 → 7.5.8-10967536696.commit-cfc4ce5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@dcl/sdk",
3
3
  "description": "",
4
- "version": "7.5.8-10926653489.commit-aec9f09",
4
+ "version": "7.5.8-10967536696.commit-cfc4ce5",
5
5
  "author": "Decentraland",
6
6
  "dependencies": {
7
- "@dcl/ecs": "7.5.8-10926653489.commit-aec9f09",
7
+ "@dcl/ecs": "7.5.8-10967536696.commit-cfc4ce5",
8
8
  "@dcl/ecs-math": "2.0.2",
9
9
  "@dcl/explorer": "1.0.164509-20240802172549.commit-fb95b9b",
10
- "@dcl/js-runtime": "7.5.8-10926653489.commit-aec9f09",
11
- "@dcl/react-ecs": "7.5.8-10926653489.commit-aec9f09",
12
- "@dcl/sdk-commands": "7.5.8-10926653489.commit-aec9f09",
10
+ "@dcl/js-runtime": "7.5.8-10967536696.commit-cfc4ce5",
11
+ "@dcl/react-ecs": "7.5.8-10967536696.commit-cfc4ce5",
12
+ "@dcl/sdk-commands": "7.5.8-10967536696.commit-cfc4ce5",
13
13
  "text-encoding": "0.7.0"
14
14
  },
15
15
  "keywords": [],
@@ -35,5 +35,5 @@
35
35
  },
36
36
  "types": "./index.d.ts",
37
37
  "typings": "./index.d.ts",
38
- "commit": "aec9f0960a79c4040028b059d269e6107fa06f8d"
38
+ "commit": "cfc4ce582d4a6a7a7c137a4ee47fb42ad8596dbc"
39
39
  }
package/players/index.js CHANGED
@@ -61,7 +61,7 @@ function definePlayerHelper(engine) {
61
61
  return {
62
62
  entity: userEntity,
63
63
  name: avatarData?.name ?? '',
64
- isGuest: !!playerData?.isGuest ?? false,
64
+ isGuest: !!playerData?.isGuest,
65
65
  userId: playerData?.address ?? '',
66
66
  avatar: avatarData ?? undefined,
67
67
  wearables: wearablesData?.wearableUrns ?? [],
@@ -75,4 +75,4 @@ const players = definePlayerHelper(engine);
75
75
  const { getPlayer, onEnterScene, onLeaveScene } = players;
76
76
  export { getPlayer, onEnterScene, onLeaveScene };
77
77
  export default players;
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGxheWVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtDLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNqRSxPQUFPLEVBQ0wsa0JBQWtCLElBQUksdUJBQXVCLEVBQzdDLFVBQVUsSUFBSSxnQkFBZ0IsRUFDOUIsa0JBQWtCLElBQUksd0JBQXdCLEVBRzlDLFNBQVMsSUFBSSxlQUFlLEVBQzdCLE1BQU0sMEJBQTBCLENBQUE7QUFnQmpDLFNBQVMsa0JBQWtCLENBQUMsTUFBZTtJQUN6QyxNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDekMsTUFBTSxrQkFBa0IsR0FBRyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUMxRCxNQUFNLGtCQUFrQixHQUFHLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzNELE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzNDLE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFBO0lBRWhELE1BQU0sY0FBYyxHQUEyQyxFQUFFLENBQUE7SUFDakUsTUFBTSxjQUFjLEdBQWlDLEVBQUUsQ0FBQTtJQUV2RCxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNwQixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsa0JBQWtCLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQTtRQUNsRixJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssY0FBYyxDQUFDLElBQUk7WUFBRSxPQUFNO1FBRWxELEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBSSxPQUFPLEVBQUU7WUFDeEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JB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QyxNQUFNLENBQUMsQ0FBQTtBQUMxQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsR0FBRyxPQUFPLENBQUE7QUFFekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLENBQUE7QUFDaEQsZUFBZSxPQUFPLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIElFbmdpbmUsIFRyYW5zZm9ybVR5cGUsIGVuZ2luZSB9IGZyb20gJ0BkY2wvZWNzJ1xuaW1wb3J0IHtcbiAgUGxheWVySWRlbnRpdHlEYXRhIGFzIGRlZmluZVBsYXllcklkZW5pdHlEYXRhLFxuICBBdmF0YXJCYXNlIGFzIGRlZmluZUF2YXRhckJhc2UsXG4gIEF2YXRhckVxdWlwcGVkRGF0YSBhcyBkZWZpbmVBdmF0YXJFcXVpcHBlZERhdGEsXG4gIFBCQXZhdGFyQmFzZSxcbiAgUEJBdmF0YXJFcXVpcHBlZERhdGEsXG4gIFRyYW5zZm9ybSBhcyBkZWZpbmVUcmFuc2Zvcm1cbn0gZnJvbSAnQGRjbC9lY3MvZGlzdC9jb21wb25lbnRzJ1xuXG50eXBlIEdldFBsYXllckRhdGFSZXEgPSB7XG4gIHVzZXJJZDogc3RyaW5nXG59XG50eXBlIEdldFBsYXllckRhdGFSZXMgPSB7XG4gIGVudGl0eTogRW50aXR5XG4gIG5hbWU6IHN0cmluZ1xuICBpc0d1ZXN0OiBib29sZWFuXG4gIHVzZXJJZDogc3RyaW5nXG4gIGF2YXRhcj86IFBCQXZhdGFyQmFzZVxuICB3ZWFyYWJsZXM6IFBCQXZhdGFyRXF1aXBwZWREYXRhWyd3ZWFyYWJsZVVybnMnXVxuICBlbW90ZXM6IFBCQXZhdGFyRXF1aXBwZWREYXRhWydlbW90ZVVybnMnXVxuICBwb3NpdGlvbjogVHJhbnNmb3JtVHlwZVsncG9zaXRpb24nXSB8IHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBkZWZpbmVQbGF5ZXJIZWxwZXIoZW5naW5lOiBJRW5naW5lKSB7XG4gIGNvbnN0IFRyYW5zZm9ybSA9IGRlZmluZVRyYW5zZm9ybShlbmdpbmUpXG4gIGNvbnN0IFBsYXllcklkZW50aXR5RGF0YSA9IGRlZmluZVBsYXllcklkZW5pdHlEYXRhKGVuZ2luZSlcbiAgY29uc3QgQXZhdGFyRXF1aXBwZWREYXRhID0gZGVmaW5lQXZhdGFyRXF1aXBwZWREYXRhKGVuZ2luZSlcbiAgY29uc3QgQXZhdGFyQmFzZSA9IGRlZmluZUF2YXRhckJhc2UoZW5naW5lKVxuICBjb25zdCBwbGF5ZXJFbnRpdGllcyA9IG5ldyBNYXA8RW50aXR5LCBzdHJpbmc+KClcblxuICBjb25zdCBvbkVudGVyU2NlbmVDYjogKChwbGF5ZXI6IEdldFBsYXllckRhdGFSZXMpID0+IHZvaWQpW10gPSBbXVxuICBjb25zdCBvbkxlYXZlU2NlbmVDYjogKCh1c2VySWQ6IHN0cmluZykgPT4gdm9pZClbXSA9IFtdXG5cbiAgZW5naW5lLmFkZFN5c3RlbSgoKSA9PiB7XG4gICAgY29uc3QgcGxheWVycyA9IEFycmF5LmZyb20oZW5naW5lLmdldEVudGl0aWVzV2l0aChQbGF5ZXJJZGVudGl0eURhdGEsIEF2YXRhckJhc2UpKVxuICAgIGlmIChwbGF5ZXJzLmxlbmd0aCA9PT0gcGxheWVyRW50aXRpZXMuc2l6ZSkgcmV0dXJuXG5cbiAgICBmb3IgKGNvbnN0IFtlbnRpdHksIGlkZW50aXR5XSBvZiBwbGF5ZXJzKSB7XG4gICAgICBpZiAoIXBsYXllckVudGl0aWVzLmhhcyhlbnRpdHkpKSB7XG4gICAgICAgIHBsYXllckVudGl0aWVzLnNldChlbnRpdHksIGlkZW50aXR5LmFkZHJlc3MpXG5cbiAgICAgICAgLy8gQ2FsbCBvbkVudGVyIGNhbGxiYWNrXG4gICAgICAgIGlmIChvbkVudGVyU2NlbmVDYi5sZW5ndGgpIHtcbiAgICAgICAgICBvbkVudGVyU2NlbmVDYi5mb3JFYWNoKChjYikgPT4gY2IoZ2V0UGxheWVyKHsgdXNlcklkOiBpZGVudGl0eS5hZGRyZXNzIH0pISkpXG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBmb3IgY2hhbmdlcy9yZW1vdmUgY2FsbGJhY2tzXG4gICAgICAgIEF2YXRhckJhc2Uub25DaGFuZ2UoZW50aXR5LCAodmFsdWUpID0+IHtcbiAgICAgICAgICBpZiAoIXZhbHVlICYmIG9uTGVhdmVTY2VuZUNiLmxlbmd0aCAmJiBwbGF5ZXJFbnRpdGllcy5nZXQoZW50aXR5KSkge1xuICAgICAgICAgICAgb25MZWF2ZVNjZW5lQ2IuZm9yRWFjaCgoY2IpID0+IGNiKHBsYXllckVudGl0aWVzLmdldChlbnRpdHkpISkpXG4gICAgICAgICAgICBwbGF5ZXJFbnRpdGllcy5kZWxldGUoZW50aXR5KVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIHtcbiAgICBvbkVudGVyU2NlbmUoY2I6IChwbGF5ZXI6IEdldFBsYXllckRhdGFSZXMpID0+IHZvaWQpIHtcbiAgICAgIG9uRW50ZXJTY2VuZUNiLnB1c2goY2IpXG4gICAgfSxcbiAgICBvbkxlYXZlU2NlbmUoY2I6ICh1c2VySWQ6IHN0cmluZykgPT4gdm9pZCkge1xuICAgICAgb25MZWF2ZVNjZW5lQ2IucHVzaChjYilcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGluZm8gb2YgdGhlIHBsYXllciBpZiBpdCdzIGluIHRoZSBzY2VuZS5cbiAgICAgKi9cbiAgICBnZXRQbGF5ZXIodXNlcj86IEdldFBsYXllckRhdGFSZXEpOiBHZXRQbGF5ZXJEYXRhUmVzIHwgbnVsbCB7XG4gICAgICBmdW5jdGlvbiBnZXRFbnRpdHkoKSB7XG4gICAgICAgIGlmICghdXNlcj8udXNlcklkKSByZXR1cm4gZW5naW5lLlBsYXllckVudGl0eVxuICAgICAgICBmb3IgKGNvbnN0IFtlbnRpdHksIGRhdGFdIG9mIGVuZ2luZS5nZXRFbnRpdGllc1dpdGgoUGxheWVySWRlbnRpdHlEYXRhKSkge1xuICAgICAgICAgIGlmIChkYXRhLmFkZHJlc3MgPT09IHVzZXIudXNlcklkKSB7XG4gICAgICAgICAgICByZXR1cm4gZW50aXR5XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgIH1cblxuICAgICAgY29uc3QgdXNlckVudGl0eSA9IGdldEVudGl0eSgpXG4gICAgICBpZiAoIXVzZXJFbnRpdHkpIHJldHVybiBudWxsXG5cbiAgICAgIGNvbnN0IHBsYXllckRhdGEgPSBQbGF5ZXJJZGVudGl0eURhdGEuZ2V0T3JOdWxsKHVzZXJFbnRpdHkpXG4gICAgICBjb25zdCBhdmF0YXJEYXRhID0gQXZhdGFyQmFzZS5nZXRPck51bGwodXNlckVudGl0eSlcbiAgICAgIGNvbnN0IHdlYXJhYmxlc0RhdGEgPSBBdmF0YXJFcXVpcHBlZERhdGEuZ2V0T3JOdWxsKHVzZXJFbnRpdHkpXG5cbiAgICAgIGlmICghcGxheWVyRGF0YSAmJiAhYXZhdGFyRGF0YSAmJiAhd2VhcmFibGVzRGF0YSkgcmV0dXJuIG51bGxcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZW50aXR5OiB1c2VyRW50aXR5LFxuICAgICAgICBuYW1lOiBhdmF0YXJEYXRhPy5uYW1lID8/ICcnLFxuICAgICAgICBpc0d1ZXN0OiAhIXBsYXllckRhdGE/LmlzR3Vlc3QgPz8gZmFsc2UsXG4gICAgICAgIHVzZXJJZDogcGxheWVyRGF0YT8uYWRkcmVzcyA/PyAnJyxcbiAgICAgICAgYXZhdGFyOiBhdmF0YXJEYXRhID8/IHVuZGVmaW5lZCxcbiAgICAgICAgd2VhcmFibGVzOiB3ZWFyYWJsZXNEYXRhPy53ZWFyYWJsZVVybnMgPz8gW10sXG4gICAgICAgIGVtb3Rlczogd2VhcmFibGVzRGF0YT8uZW1vdGVVcm5zID8/IFtdLFxuICAgICAgICBwb3NpdGlvbjogVHJhbnNmb3JtLmdldE9yTnVsbCh1c2VyRW50aXR5KT8ucG9zaXRpb25cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuY29uc3QgcGxheWVycyA9IGRlZmluZVBsYXllckhlbHBlcihlbmdpbmUpXG5jb25zdCB7IGdldFBsYXllciwgb25FbnRlclNjZW5lLCBvbkxlYXZlU2NlbmUgfSA9IHBsYXllcnNcblxuZXhwb3J0IHsgZ2V0UGxheWVyLCBvbkVudGVyU2NlbmUsIG9uTGVhdmVTY2VuZSB9XG5leHBvcnQgZGVmYXVsdCBwbGF5ZXJzXG4iXX0=
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGxheWVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtDLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNqRSxPQUFPLEVBQ0wsa0JBQWtCLElBQUksdUJBQXVCLEVBQzdDLFVBQVUsSUFBSSxnQkFBZ0IsRUFDOUIsa0JBQWtCLElBQUksd0JBQXdCLEVBRzlDLFNBQVMsSUFBSSxlQUFlLEVBQzdCLE1BQU0sMEJBQTBCLENBQUE7QUFnQmpDLFNBQVMsa0JBQWtCLENBQUMsTUFBZTtJQUN6QyxNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDekMsTUFBTSxrQkFBa0IsR0FBRyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUMxRCxNQUFNLGtCQUFrQixHQUFHLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzNELE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzNDLE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFBO0lBRWhELE1BQU0sY0FBYyxHQUEyQyxFQUFFLENBQUE7SUFDakUsTUFBTSxjQUFjLEdBQWlDLEVBQUUsQ0FBQTtJQUV2RCxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNwQixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsa0JBQWtCLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQTtRQUNsRixJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssY0FBYyxDQUFDLElBQUk7WUFBRSxPQUFNO1FBRWxELEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBSSxPQUFPLEVBQUU7WUFDeEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JB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QyxDQUFBO0FBQzFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxHQUFHLE9BQU8sQ0FBQTtBQUV6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsQ0FBQTtBQUNoRCxlQUFlLE9BQU8sQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudGl0eSwgSUVuZ2luZSwgVHJhbnNmb3JtVHlwZSwgZW5naW5lIH0gZnJvbSAnQGRjbC9lY3MnXG5pbXBvcnQge1xuICBQbGF5ZXJJZGVudGl0eURhdGEgYXMgZGVmaW5lUGxheWVySWRlbml0eURhdGEsXG4gIEF2YXRhckJhc2UgYXMgZGVmaW5lQXZhdGFyQmFzZSxcbiAgQXZhdGFyRXF1aXBwZWREYXRhIGFzIGRlZmluZUF2YXRhckVxdWlwcGVkRGF0YSxcbiAgUEJBdmF0YXJCYXNlLFxuICBQQkF2YXRhckVxdWlwcGVkRGF0YSxcbiAgVHJhbnNmb3JtIGFzIGRlZmluZVRyYW5zZm9ybVxufSBmcm9tICdAZGNsL2Vjcy9kaXN0L2NvbXBvbmVudHMnXG5cbnR5cGUgR2V0UGxheWVyRGF0YVJlcSA9IHtcbiAgdXNlcklkOiBzdHJpbmdcbn1cbnR5cGUgR2V0UGxheWVyRGF0YVJlcyA9IHtcbiAgZW50aXR5OiBFbnRpdHlcbiAgbmFtZTogc3RyaW5nXG4gIGlzR3Vlc3Q6IGJvb2xlYW5cbiAgdXNlcklkOiBzdHJpbmdcbiAgYXZhdGFyPzogUEJBdmF0YXJCYXNlXG4gIHdlYXJhYmxlczogUEJBdmF0YXJFcXVpcHBlZERhdGFbJ3dlYXJhYmxlVXJucyddXG4gIGVtb3RlczogUEJBdmF0YXJFcXVpcHBlZERhdGFbJ2Vtb3RlVXJucyddXG4gIHBvc2l0aW9uOiBUcmFuc2Zvcm1UeXBlWydwb3NpdGlvbiddIHwgdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIGRlZmluZVBsYXllckhlbHBlcihlbmdpbmU6IElFbmdpbmUpIHtcbiAgY29uc3QgVHJhbnNmb3JtID0gZGVmaW5lVHJhbnNmb3JtKGVuZ2luZSlcbiAgY29uc3QgUGxheWVySWRlbnRpdHlEYXRhID0gZGVmaW5lUGxheWVySWRlbml0eURhdGEoZW5naW5lKVxuICBjb25zdCBBdmF0YXJFcXVpcHBlZERhdGEgPSBkZWZpbmVBdmF0YXJFcXVpcHBlZERhdGEoZW5naW5lKVxuICBjb25zdCBBdmF0YXJCYXNlID0gZGVmaW5lQXZhdGFyQmFzZShlbmdpbmUpXG4gIGNvbnN0IHBsYXllckVudGl0aWVzID0gbmV3IE1hcDxFbnRpdHksIHN0cmluZz4oKVxuXG4gIGNvbnN0IG9uRW50ZXJTY2VuZUNiOiAoKHBsYXllcjogR2V0UGxheWVyRGF0YVJlcykgPT4gdm9pZClbXSA9IFtdXG4gIGNvbnN0IG9uTGVhdmVTY2VuZUNiOiAoKHVzZXJJZDogc3RyaW5nKSA9PiB2b2lkKVtdID0gW11cblxuICBlbmdpbmUuYWRkU3lzdGVtKCgpID0+IHtcbiAgICBjb25zdCBwbGF5ZXJzID0gQXJyYXkuZnJvbShlbmdpbmUuZ2V0RW50aXRpZXNXaXRoKFBsYXllcklkZW50aXR5RGF0YSwgQXZhdGFyQmFzZSkpXG4gICAgaWYgKHBsYXllcnMubGVuZ3RoID09PSBwbGF5ZXJFbnRpdGllcy5zaXplKSByZXR1cm5cblxuICAgIGZvciAoY29uc3QgW2VudGl0eSwgaWRlbnRpdHldIG9mIHBsYXllcnMpIHtcbiAgICAgIGlmICghcGxheWVyRW50aXRpZXMuaGFzKGVudGl0eSkpIHtcbiAgICAgICAgcGxheWVyRW50aXRpZXMuc2V0KGVudGl0eSwgaWRlbnRpdHkuYWRkcmVzcylcblxuICAgICAgICAvLyBDYWxsIG9uRW50ZXIgY2FsbGJhY2tcbiAgICAgICAgaWYgKG9uRW50ZXJTY2VuZUNiLmxlbmd0aCkge1xuICAgICAgICAgIG9uRW50ZXJTY2VuZUNiLmZvckVhY2goKGNiKSA9PiBjYihnZXRQbGF5ZXIoeyB1c2VySWQ6IGlkZW50aXR5LmFkZHJlc3MgfSkhKSlcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIGZvciBjaGFuZ2VzL3JlbW92ZSBjYWxsYmFja3NcbiAgICAgICAgQXZhdGFyQmFzZS5vbkNoYW5nZShlbnRpdHksICh2YWx1ZSkgPT4ge1xuICAgICAgICAgIGlmICghdmFsdWUgJiYgb25MZWF2ZVNjZW5lQ2IubGVuZ3RoICYmIHBsYXllckVudGl0aWVzLmdldChlbnRpdHkpKSB7XG4gICAgICAgICAgICBvbkxlYXZlU2NlbmVDYi5mb3JFYWNoKChjYikgPT4gY2IocGxheWVyRW50aXRpZXMuZ2V0KGVudGl0eSkhKSlcbiAgICAgICAgICAgIHBsYXllckVudGl0aWVzLmRlbGV0ZShlbnRpdHkpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4ge1xuICAgIG9uRW50ZXJTY2VuZShjYjogKHBsYXllcjogR2V0UGxheWVyRGF0YVJlcykgPT4gdm9pZCkge1xuICAgICAgb25FbnRlclNjZW5lQ2IucHVzaChjYilcbiAgICB9LFxuICAgIG9uTGVhdmVTY2VuZShjYjogKHVzZXJJZDogc3RyaW5nKSA9PiB2b2lkKSB7XG4gICAgICBvbkxlYXZlU2NlbmVDYi5wdXNoKGNiKVxuICAgIH0sXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgaW5mbyBvZiB0aGUgcGxheWVyIGlmIGl0J3MgaW4gdGhlIHNjZW5lLlxuICAgICAqL1xuICAgIGdldFBsYXllcih1c2VyPzogR2V0UGxheWVyRGF0YVJlcSk6IEdldFBsYXllckRhdGFSZXMgfCBudWxsIHtcbiAgICAgIGZ1bmN0aW9uIGdldEVudGl0eSgpIHtcbiAgICAgICAgaWYgKCF1c2VyPy51c2VySWQpIHJldHVybiBlbmdpbmUuUGxheWVyRW50aXR5XG4gICAgICAgIGZvciAoY29uc3QgW2VudGl0eSwgZGF0YV0gb2YgZW5naW5lLmdldEVudGl0aWVzV2l0aChQbGF5ZXJJZGVudGl0eURhdGEpKSB7XG4gICAgICAgICAgaWYgKGRhdGEuYWRkcmVzcyA9PT0gdXNlci51c2VySWQpIHtcbiAgICAgICAgICAgIHJldHVybiBlbnRpdHlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgfVxuXG4gICAgICBjb25zdCB1c2VyRW50aXR5ID0gZ2V0RW50aXR5KClcbiAgICAgIGlmICghdXNlckVudGl0eSkgcmV0dXJuIG51bGxcblxuICAgICAgY29uc3QgcGxheWVyRGF0YSA9IFBsYXllcklkZW50aXR5RGF0YS5nZXRPck51bGwodXNlckVudGl0eSlcbiAgICAgIGNvbnN0IGF2YXRhckRhdGEgPSBBdmF0YXJCYXNlLmdldE9yTnVsbCh1c2VyRW50aXR5KVxuICAgICAgY29uc3Qgd2VhcmFibGVzRGF0YSA9IEF2YXRhckVxdWlwcGVkRGF0YS5nZXRPck51bGwodXNlckVudGl0eSlcblxuICAgICAgaWYgKCFwbGF5ZXJEYXRhICYmICFhdmF0YXJEYXRhICYmICF3ZWFyYWJsZXNEYXRhKSByZXR1cm4gbnVsbFxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBlbnRpdHk6IHVzZXJFbnRpdHksXG4gICAgICAgIG5hbWU6IGF2YXRhckRhdGE/Lm5hbWUgPz8gJycsXG4gICAgICAgIGlzR3Vlc3Q6ICEhcGxheWVyRGF0YT8uaXNHdWVzdCxcbiAgICAgICAgdXNlcklkOiBwbGF5ZXJEYXRhPy5hZGRyZXNzID8/ICcnLFxuICAgICAgICBhdmF0YXI6IGF2YXRhckRhdGEgPz8gdW5kZWZpbmVkLFxuICAgICAgICB3ZWFyYWJsZXM6IHdlYXJhYmxlc0RhdGE/LndlYXJhYmxlVXJucyA/PyBbXSxcbiAgICAgICAgZW1vdGVzOiB3ZWFyYWJsZXNEYXRhPy5lbW90ZVVybnMgPz8gW10sXG4gICAgICAgIHBvc2l0aW9uOiBUcmFuc2Zvcm0uZ2V0T3JOdWxsKHVzZXJFbnRpdHkpPy5wb3NpdGlvblxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBwbGF5ZXJzID0gZGVmaW5lUGxheWVySGVscGVyKGVuZ2luZSlcbmNvbnN0IHsgZ2V0UGxheWVyLCBvbkVudGVyU2NlbmUsIG9uTGVhdmVTY2VuZSB9ID0gcGxheWVyc1xuXG5leHBvcnQgeyBnZXRQbGF5ZXIsIG9uRW50ZXJTY2VuZSwgb25MZWF2ZVNjZW5lIH1cbmV4cG9ydCBkZWZhdWx0IHBsYXllcnNcbiJdfQ==
@@ -89,7 +89,7 @@ function definePlayerHelper(engine: IEngine) {
89
89
  return {
90
90
  entity: userEntity,
91
91
  name: avatarData?.name ?? '',
92
- isGuest: !!playerData?.isGuest ?? false,
92
+ isGuest: !!playerData?.isGuest,
93
93
  userId: playerData?.address ?? '',
94
94
  avatar: avatarData ?? undefined,
95
95
  wearables: wearablesData?.wearableUrns ?? [],
@@ -50,7 +50,7 @@ export function createTestRuntime(testingModule: TestingModule, engine: IEngine)
50
50
  // continue to run until it reaches a yield point
51
51
  function scheduleValue(value: any, env: RunnerEnvironment) {
52
52
  if (value && typeof value === 'object' && typeof value.then === 'function') {
53
- console.log('⏱️ yield promise')
53
+ // console.log('⏱️ yield promise')
54
54
  // if the value is a promise, schedule it to be awaited after the current frame is finished
55
55
  nextTickFuture.push(async () => {
56
56
  try {
@@ -60,14 +60,14 @@ export function createTestRuntime(testingModule: TestingModule, engine: IEngine)
60
60
  }
61
61
  })
62
62
  } else if (typeof value === 'function') {
63
- console.log('⏱️ yield function')
63
+ // console.log('⏱️ yield function')
64
64
  // if the value is a function, schedule it to be called on the next frame
65
65
  nextTickFuture.push(() => {
66
66
  scheduleValue(value(), env)
67
67
  })
68
68
  return
69
69
  } else if (typeof value === 'undefined' || value === null) {
70
- console.log('⏱️ yield')
70
+ // console.log('⏱️ yield')
71
71
  // if the value is undefined or null, continue processing the generator the next frame
72
72
  nextTickFuture.push(() => {
73
73
  consumeGenerator(env)
@@ -33,7 +33,7 @@ export function createTestRuntime(testingModule, engine) {
33
33
  // continue to run until it reaches a yield point
34
34
  function scheduleValue(value, env) {
35
35
  if (value && typeof value === 'object' && typeof value.then === 'function') {
36
- console.log('⏱️ yield promise');
36
+ // console.log('⏱️ yield promise')
37
37
  // if the value is a promise, schedule it to be awaited after the current frame is finished
38
38
  nextTickFuture.push(async () => {
39
39
  try {
@@ -45,7 +45,7 @@ export function createTestRuntime(testingModule, engine) {
45
45
  });
46
46
  }
47
47
  else if (typeof value === 'function') {
48
- console.log('⏱️ yield function');
48
+ // console.log('⏱️ yield function')
49
49
  // if the value is a function, schedule it to be called on the next frame
50
50
  nextTickFuture.push(() => {
51
51
  scheduleValue(value(), env);
@@ -53,7 +53,7 @@ export function createTestRuntime(testingModule, engine) {
53
53
  return;
54
54
  }
55
55
  else if (typeof value === 'undefined' || value === null) {
56
- console.log('⏱️ yield');
56
+ // console.log('⏱️ yield')
57
57
  // if the value is undefined or null, continue processing the generator the next frame
58
58
  nextTickFuture.push(() => {
59
59
  consumeGenerator(env);
@@ -194,4 +194,4 @@ function globalFail(error) {
194
194
  // for now, the failure is only writing to the console.error.
195
195
  console.error(error);
196
196
  }
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90ZXN0aW5nL3J1bnRpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQVcsU0FBUyxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFHdkMsaUZBQWlGO0FBQ2pGLG9JQUFvSTtBQUNwSSxnRkFBZ0Y7QUFDaEYsZUFBZTtBQUNmLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxhQUE0QixFQUFFLE1BQWU7SUFTN0Usc0RBQXNEO0lBQ3RELElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQTtJQUV6QixJQUFJLG1CQUFtQixHQUFHLENBQUMsQ0FBQTtJQUMzQixJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQTtJQUV4QixvQ0FBb0M7SUFDcEMsTUFBTSxjQUFjLEdBQW9CLEVBQUUsQ0FBQTtJQUUxQyxpR0FBaUc7SUFDakcsTUFBTSxjQUFjLEdBQWdDLEVBQUUsQ0FBQTtJQUV0RCxrRUFBa0U7SUFDbEUsS0FBSyxVQUFVLFFBQVE7UUFDckIsT0FBTyxJQUFJLE9BQU8sQ0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3JDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDOUIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsc0ZBQXNGO0lBQ3RGLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUywrQkFBK0IsQ0FBQyxFQUFFO1FBQzFELG1CQUFtQixFQUFFLENBQUE7UUFDckIsZ0JBQWdCLElBQUksRUFBRSxDQUFBO1FBQ3RCLGdDQUFnQztRQUNoQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJ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SUFDNUIsNkRBQTZEO0lBQzdELE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBjcmVhdGVUZXN0UnVudGltZSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gb2JqZWN0IHdpdGggYSB0ZXN0IGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIHRlc3RzLlxuICovXG5cbmltcG9ydCB7IElFbmdpbmUsIFRyYW5zZm9ybSB9IGZyb20gJ0BkY2wvZWNzJ1xuaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSAnLi9hc3NlcnQnXG5pbXBvcnQgdHlwZSB7IFRlc3RpbmdNb2R1bGUsIFRlc3RGdW5jdGlvbiwgVGVzdEhlbHBlcnMgfSBmcm9tICcuL3R5cGVzJ1xuXG4vLyBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYSB0ZXN0IHJ1bnRpbWUgdGhhdCBjYW4gYmUgdXNlZCB0byBkZWZpbmUgYW5kIHJ1biB0ZXN0cy5cbi8vIEl0IHRha2VzIGEgYFRlc3RpbmdNb2R1bGVgIGluc3RhbmNlIChsb2FkZWQgZnJvbSByZXF1aXJlKCd+c3lzdGVtL1Rlc3RpbmcnKSkgYW5kIGFuIGBJRW5naW5lYCBpbnN0YW5jZSAoZnJvbSBEZWNlbnRyYWxhbmQncyBTREspLlxuLy8gSXQgcmV0dXJucyBhbiBvYmplY3Qgd2l0aCBhIGB0ZXN0YCBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlZmluZSB0ZXN0cy5cbi8qIEBfX1BVUkVfXyAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRlc3RSdW50aW1lKHRlc3RpbmdNb2R1bGU6IFRlc3RpbmdNb2R1bGUsIGVuZ2luZTogSUVuZ2luZSkge1xuICB0eXBlIFRlc3RQbGFuRW50cnkgPSB7IG5hbWU6IHN0cmluZzsgZm46IFRlc3RGdW5jdGlvbiB9XG4gIHR5cGUgUnVubmVyRW52aXJvbm1lbnQgPSB7XG4gICAgcmVzb2x2ZTogKCkgPT4gdm9pZFxuICAgIHJlamVjdDogKGVycm9yOiBhbnkpID0+IHZvaWRcbiAgICBoZWxwZXJzOiBUZXN0SGVscGVyc1xuICAgIGdlbmVyYXRvcjogR2VuZXJhdG9yXG4gIH1cblxuICAvLyB0aGlzIGZsYWcgZW5zdXJlcyBubyB0ZXN0cyBhcmUgYWRkZWQgYXN5bmNocm9ub3VzbHlcbiAgbGV0IHJ1bnRpbWVGcm96ZW4gPSBmYWxzZVxuXG4gIGxldCBjdXJyZW50RnJhbWVDb3VudGVyID0gMFxuICBsZXQgY3VycmVudEZyYW1lVGltZSA9IDBcblxuICAvLyBhcnJheSB0byBob2xkIHRoZSBzY2hlZHVsZWQgdGVzdHNcbiAgY29uc3Qgc2NoZWR1bGVkVGVzdHM6IFRlc3RQbGFuRW50cnlbXSA9IFtdXG5cbiAgLy8gYW4gYXJyYXkgb2YgcHJvbWlzZXMgdGhhdCBhcmUgcmVzb2x2ZWQgb24gdGhlIG5leHQgZnJhbWUgKGFmdGVyIHRoZSBjdXJyZW50IGZyYW1lIGlzIGZpbmlzaGVkKVxuICBjb25zdCBuZXh0VGlja0Z1dHVyZTogQXJyYXk8KGR0OiBudW1iZXIpID0+IHZvaWQ+ID0gW11cblxuICAvLyB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgb24gdGhlIG5leHQgZnJhbWVcbiAgYXN5bmMgZnVuY3Rpb24gbmV4dFRpY2soKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPG51bWJlcj4oKHJlc29sdmUpID0+IHtcbiAgICAgIG5leHRUaWNrRnV0dXJlLnB1c2gocmVzb2x2ZSlcbiAgICB9KVxuICB9XG5cbiAgLy8gYWRkIGEgc3lzdGVtIHRvIHRoZSBlbmdpbmUgdGhhdCByZXNvbHZlcyBhbGwgcHJvbWlzZXMgaW4gdGhlIGBuZXh0VGlja0Z1dHVyZWAgYXJyYXlcbiAgZW5naW5lLmFkZFN5c3RlbShmdW5jdGlvbiBUZXN0aW5nRnJhbWV3b3JrQ29yb3V0aW5lUnVubmVyKGR0KSB7XG4gICAgY3VycmVudEZyYW1lQ291bnRlcisrXG4gICAgY3VycmVudEZyYW1lVGltZSArPSBkdFxuICAgIC8vIHJlc29sdmUgYWxsIG5leHRUaWNrIGZ1dHVyZXMuXG4gICAgbmV4dFRpY2tGdXR1cmUuc3BsaWNlKDAsIG5leHRUaWNrRnV0dXJlLmxlbmd0aCkuZm9yRWFjaCgoXykgPT4gXyhkdCkpXG4gIH0pXG5cbiAgLy8gdGhpcyBmdW5jdGlvbiBzY2hlZHVsZXMgYSB2YWx1ZSB0byBiZSBwcm9jZXNzZWQgb24gdGhlIG5leHQgZnJhbWUsIHRoZSB0ZXN0IHJ1bm5lciB3aWxsXG4gIC8vIGNvbnRpbnVlIHRvIHJ1biB1bnRpbCBpdCByZWFjaGVzIGEgeWllbGQgcG9pbnRcbiAgZnVuY3Rpb24gc2NoZWR1bGVWYWx1ZSh2YWx1ZTogYW55LCBlbnY6IFJ1bm5lckVudmlyb25tZW50KSB7XG4gICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHZhbHVlLnRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnNvbGUubG9nKCfij7HvuI8geWllbGQgcHJvbWlzZScpXG4gICAgICAvLyBpZiB0aGUgdmFsdWUgaXMgYSBwcm9taXNlLCBzY2hlZHVsZSBpdCB0byBiZSBhd2FpdGVkIGFmdGVyIHRoZSBjdXJyZW50IGZyYW1lIGlzIGZpbmlzaGVkXG4gICAgICBuZXh0VGlja0Z1dHVyZS5wdXNoKGFzeW5jICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBzY2hlZHVsZVZhbHVlKGF3YWl0IHZhbHVlLCBlbnYpXG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGVudi5yZWplY3QoZXJyKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb25zb2xlLmxvZygn4o+x77iPIHlpZWxkIGZ1bmN0aW9uJylcbiAgICAgIC8vIGlmIHRoZSB2YWx1ZSBpcyBhIGZ1bmN0aW9uLCBzY2hlZHVsZSBpdCB0byBiZSBjYWxsZWQgb24gdGhlIG5leHQgZnJhbWVcbiAgICAgIG5leHRUaWNrRnV0dXJlLnB1c2goKCkgPT4ge1xuICAgICAgICBzY2hlZHVsZVZhbHVlKHZhbHVlKCksIGVudilcbiAgICAgIH0pXG4gICAgICByZXR1cm5cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICAgIGNvbnNvbGUubG9nKCfij7HvuI8geWllbGQnKVxuICAgICAgLy8gaWYgdGhlIHZhbHVlIGlzIHVuZGVmaW5lZCBvciBudWxsLCBjb250aW51ZSBwcm9jZXNzaW5nIHRoZSBnZW5lcmF0b3IgdGhlIG5leHQgZnJhbWVcbiAgICAgIG5leHRUaWNrRnV0dXJlLnB1c2goKCkgPT4ge1xuICAgICAgICBjb25zdW1lR2VuZXJhdG9yKGVudilcbiAgICAgIH0pXG4gICAgfSBlbHNlIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB2YWx1ZSBmcm9tIHRlc3QgZ2VuZXJhdG9yOiAke3ZhbHVlfWApXG4gIH1cblxuICAvLyB0aGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyBhIGdlbmVyYXRvciBmdW5jdGlvbiBieSBzY2hlZHVsaW5nIGl0cyB2YWx1ZXMgdG8gYmUgcHJvY2Vzc2VkIG9uIHRoZSBuZXh0IGZyYW1lXG4gIGZ1bmN0aW9uIGNvbnN1bWVHZW5lcmF0b3IoZW52OiBSdW5uZXJFbnZpcm9ubWVudCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXQgPSBlbnYuZ2VuZXJhdG9yLm5leHQoKVxuICAgICAgaWYgKCFyZXQuZG9uZSkge1xuICAgICAgICBzY2hlZHVsZVZhbHVlKHJldC52YWx1ZSwgZW52KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW52LnJlc29sdmUoKVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZW52LnJlamVjdChlcnIpXG4gICAgfVxuICB9XG5cbiAgLy8gdGhpcyBmdW5jdGlvbiBzY2hlZHVsZXMgYSB0ZXN0IHJ1biBvbiB0aGUgbmV4dCBmcmFtZVxuICBmdW5jdGlvbiBzY2hlZHVsZU5leHRSdW4oKSB7XG4gICAgaWYgKHNjaGVkdWxlZFRlc3RzLmxlbmd0aCkge1xuICAgICAgbmV4dFRpY2tGdXR1cmUucHVzaChydW5UZXN0cylcbiAgICB9XG4gIH1cblxuICAvLyB0aGlzIGZ1bmN0aW9uIHJ1bnMgdGhlIHNjaGVkdWxlZCB0ZXN0c1xuICBmdW5jdGlvbiBydW5UZXN0cygpIHtcbiAgICBpZiAoc2NoZWR1bGVkVGVzdHMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBlbnRyeSA9IHNjaGVkdWxlZFRlc3RzLnNoaWZ0KCkhXG4gICAgICBjb25zdCBpbml0aWFsRnJhbWUgPSBjdXJyZW50RnJhbWVDb3VudGVyXG4gICAgICBjb25zdCBzdGFydFRpbWUgPSBjdXJyZW50RnJhbWVUaW1lXG5cbiAgICAgIGxldCByZXNvbHZlZCA9IGZhbHNlXG5cbiAgICAgIC8vIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbmx5IG9uY2UuIGl0IG1ha2VzIHRoZSBjdXJyZW50IHRlc3QgcGFzc1xuICAgICAgY29uc3QgcmVzb2x2ZSA9ICgpID0+IHtcbiAgICAgICAgaWYgKHJlc29sdmVkKSB0aHJvdyBuZXcgRXJyb3IoJ3Jlc29sdmVkIHR3aWNlJylcbiAgICAgICAgcmVzb2x2ZWQgPSB0cnVlXG5cbiAgICAgICAgY29uc29sZS5sb2coYPCfn6IgVGVzdCBwYXNzZWQgJHtlbnRyeS5uYW1lfWApXG5cbiAgICAgICAgdGVzdGluZ01vZHVsZVxuICAgICAgICAgIC5sb2dUZXN0UmVzdWx0KHtcbiAgICAgICAgICAgIG5hbWU6IGVudHJ5Lm5hbWUsXG4gICAgICAgICAgICBvazogdHJ1ZSxcbiAgICAgICAgICAgIHRvdGFsRnJhbWVzOiBjdXJyZW50RnJhbWVDb3VudGVyIC0gaW5pdGlhbEZyYW1lLFxuICAgICAgICAgICAgdG90YWxUaW1lOiBjdXJyZW50RnJhbWVUaW1lIC0gc3RhcnRUaW1lXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuZmluYWxseShzY2hlZHVsZU5leHRSdW4pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlamVjdCA9IChlcnI6IGFueSkgPT4ge1xuICAgICAgICBpZiAocmVzb2x2ZWQpIHRocm93IG5ldyBFcnJvcigncmVzb2x2ZWQgdHdpY2UnKVxuICAgICAgICByZXNvbHZlZCA9IHRydWVcblxuICAgICAgICBjb25zb2xlLmxvZyhg8J+UtCBUZXN0IGZhaWxlZCAke2VudHJ5Lm5hbWV9YClcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpXG5cbiAgICAgICAgdGVzdGluZ01vZHVsZVxuICAgICAgICAgIC5sb2dUZXN0UmVzdWx0KHtcbiAgICAgICAgICAgIG5hbWU6IGVudHJ5Lm5hbWUsXG4gICAgICAgICAgICBvazogZmFsc2UsXG4gICAgICAgICAgICBlcnJvcjogZXJyLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBzdGFjazogZXJyICYmIHR5cGVvZiBlcnIgPT09ICdvYmplY3QnICYmIGVyci5zdGFjayxcbiAgICAgICAgICAgIHRvdGFsRnJhbWVzOiBjdXJyZW50RnJhbWVDb3VudGVyIC0gaW5pdGlhbEZyYW1lLFxuICAgICAgICAgICAgdG90YWxUaW1lOiBjdXJyZW50RnJhbWVUaW1lIC0gc3RhcnRUaW1lXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuZmluYWxseShzY2hlZHVsZU5leHRSdW4pXG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGDwn6eqIFJ1bm5pbmcgdGVzdCAke2VudHJ5Lm5hbWV9YClcblxuICAgICAgICBjb25zdCB0ZXN0SGVscGVyczogVGVzdEhlbHBlcnMgPSB7XG4gICAgICAgICAgYXN5bmMgc2V0Q2FtZXJhVHJhbnNmb3JtKHRyYW5zZm9ybSkge1xuICAgICAgICAgICAgYXdhaXQgdGVzdGluZ01vZHVsZS5zZXRDYW1lcmFUcmFuc2Zvcm0odHJhbnNmb3JtKVxuICAgICAgICAgICAgYXdhaXQgbmV4dFRpY2soKVxuXG4gICAgICAgICAgICBjb25zdCBUcmFuc2Zvcm1Db21wb25lbnQgPSBlbmdpbmUuZ2V0Q29tcG9uZW50KFRyYW5zZm9ybS5jb21wb25lbnRJZCkgYXMgdHlwZW9mIFRyYW5zZm9ybVxuICAgICAgICAgICAgY29uc3QgYWN0dWFsVHJhbnNmb3JtID0gVHJhbnNmb3JtQ29tcG9uZW50LmdldChlbmdpbmUuQ2FtZXJhRW50aXR5KVxuXG4gICAgICAgICAgICBhc3NlcnRFcXVhbHMoYWN0dWFsVHJhbnNmb3JtLnBvc2l0aW9uLCB0cmFuc2Zvcm0ucG9zaXRpb24sIFwicG9zaXRpb25zIGRvbid0IG1hdGNoXCIpXG4gICAgICAgICAgICBhc3NlcnRFcXVhbHMoYWN0dWFsVHJhbnNmb3JtLnJvdGF0aW9uLCB0cmFuc2Zvcm0ucm90YXRpb24sIFwicm90YXRpb25zIGRvbid0IG1hdGNoXCIpXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmV0dXJuVmFsdWUgPSBlbnRyeS5mbih0ZXN0SGVscGVycylcblxuICAgICAgICBpZiAocmV0dXJuVmFsdWUgJiYgdHlwZW9mIHJldHVyblZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGlmIChpc0dlbmVyYXRvcihyZXR1cm5WYWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGVudjogUnVubmVyRW52aXJvbm1lbnQgPSB7XG4gICAgICAgICAgICAgIGdlbmVyYXRvcjogcmV0dXJuVmFsdWUsXG4gICAgICAgICAgICAgIGhlbHBlcnM6IHRlc3RIZWxwZXJzLFxuICAgICAgICAgICAgICByZXNvbHZlLFxuICAgICAgICAgICAgICByZWplY3RcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN1bWVHZW5lcmF0b3IoZW52KVxuICAgICAgICAgIH0gZWxzZSBpZiAoaXNQcm9taXNlKHJldHVyblZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuVmFsdWUudGhlbihyZXNvbHZlKS5jYXRjaChyZWplY3QpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biB0ZXN0IHJlc3VsdCB0eXBlOiAke3JldHVyblZhbHVlfWApXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUoKVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgICByZWplY3QoZXJyKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIHNjaGVkdWxlIHRoZSB0ZXN0IHJ1bm5lciBzdGFydCBmb3IgdGhlIG5leHQgZnJhbWVcbiAgbmV4dFRpY2tGdXR1cmUucHVzaCgoKSA9PiB7XG4gICAgLy8gb25jZSB3ZSBydW4gdGhlIG5leHQgdGljaywgdGhlIHRlc3QgcnVudGltZSBiZWNvbWVzIGZyb3plbi4gdGhhdCBtZWFucyBubyBuZXdcbiAgICAvLyB0ZXN0IGRlZmluaXRpb25zIGFyZSBhY2NlcHRlZFxuICAgIHJ1bnRpbWVGcm96ZW4gPSB0cnVlXG5cbiAgICBpZiAoIXNjaGVkdWxlZFRlc3RzLmxlbmd0aCkgcmV0dXJuXG5cbiAgICAvLyBpbmZvcm0gdGhlIHRlc3QgcnVubmVyIGFib3V0IHRoZSBwbGFucyBmb3IgdGhpcyB0ZXN0IHJ1blxuICAgIHRlc3RpbmdNb2R1bGUucGxhbih7IHRlc3RzOiBzY2hlZHVsZWRUZXN0cyB9KS50aGVuKHNjaGVkdWxlTmV4dFJ1bikuY2F0Y2goZ2xvYmFsRmFpbClcbiAgfSlcblxuICAvLyB0aGlzIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGlzIHVzZWQgdG8gcGxhbiBhIHRlc3QgZnVuY3Rpb25uXG4gIC8qIEBfX1BVUkVfXyAqL1xuICBmdW5jdGlvbiB0ZXN0KG5hbWU6IHN0cmluZywgZm46IFRlc3RGdW5jdGlvbikge1xuICAgIGlmIChydW50aW1lRnJvemVuKSB0aHJvdyBuZXcgRXJyb3IoXCJOZXcgdGVzdHMgY2FuJ3QgYmUgYWRkZWQgYXQgdGhpcyBzdGFnZS5cIilcblxuICAgIGlmIChzY2hlZHVsZWRUZXN0cy5zb21lKCgkKSA9PiAkLm5hbWUgPT09IG5hbWUpKSB0aHJvdyBuZXcgRXJyb3IoYFRlc3Qgd2l0aCBuYW1lICR7bmFtZX0gYWxyZWFkeSBleGlzdHNgKVxuXG4gICAgc2NoZWR1bGVkVGVzdHMucHVzaCh7IGZuLCBuYW1lIH0pXG4gIH1cblxuICByZXR1cm4ge1xuICAgIHRlc3RcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0dlbmVyYXRvcih0OiBhbnkpOiB0IGlzIEdlbmVyYXRvciB7XG4gIHJldHVybiB0ICYmIHR5cGVvZiB0ID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgdFtTeW1ib2wuaXRlcmF0b3JdID09PSAnZnVuY3Rpb24nXG59XG5cbmZ1bmN0aW9uIGlzUHJvbWlzZSh0OiBhbnkpOiB0IGlzIFByb21pc2U8dW5rbm93bj4ge1xuICByZXR1cm4gdCAmJiB0eXBlb2YgdCA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHQudGhlbiA9PT0gJ2Z1bmN0aW9uJ1xufVxuXG5mdW5jdGlvbiBnbG9iYWxGYWlsKGVycm9yOiBhbnkpIHtcbiAgLy8gZm9yIG5vdywgdGhlIGZhaWx1cmUgaXMgb25seSB3cml0aW5nIHRvIHRoZSBjb25zb2xlLmVycm9yLlxuICBjb25zb2xlLmVycm9yKGVycm9yKVxufVxuIl19
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90ZXN0aW5nL3J1bnRpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQVcsU0FBUyxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFHdkMsaUZBQWlGO0FBQ2pGLG9JQUFvSTtBQUNwSSxnRkFBZ0Y7QUFDaEYsZUFBZTtBQUNmLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxhQUE0QixFQUFFLE1BQWU7SUFTN0Usc0RBQXNEO0lBQ3RELElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQTtJQUV6QixJQUFJLG1CQUFtQixHQUFHLENBQUMsQ0FBQTtJQUMzQixJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQTtJQUV4QixvQ0FBb0M7SUFDcEMsTUFBTSxjQUFjLEdBQW9CLEVBQUUsQ0FBQTtJQUUxQyxpR0FBaUc7SUFDakcsTUFBTSxjQUFjLEdBQWdDLEVBQUUsQ0FBQTtJQUV0RCxrRUFBa0U7SUFDbEUsS0FBSyxVQUFVLFFBQVE7UUFDckIsT0FBTyxJQUFJLE9BQU8sQ0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3JDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDOUIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsc0ZBQXNGO0lBQ3RGLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUywrQkFBK0IsQ0FBQyxFQUFFO1FBQzFELG1CQUFtQixFQUFFLENBQUE7UUFDckIsZ0JBQWdCLElBQUksRUFBRSxDQUFBO1FBQ3RCLGdDQUFnQztRQUNoQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJ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XG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGNyZWF0ZVRlc3RSdW50aW1lIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBvYmplY3Qgd2l0aCBhIHRlc3QgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB0byBkZWZpbmUgdGVzdHMuXG4gKi9cblxuaW1wb3J0IHsgSUVuZ2luZSwgVHJhbnNmb3JtIH0gZnJvbSAnQGRjbC9lY3MnXG5pbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tICcuL2Fzc2VydCdcbmltcG9ydCB0eXBlIHsgVGVzdGluZ01vZHVsZSwgVGVzdEZ1bmN0aW9uLCBUZXN0SGVscGVycyB9IGZyb20gJy4vdHlwZXMnXG5cbi8vIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBhIHRlc3QgcnVudGltZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlZmluZSBhbmQgcnVuIHRlc3RzLlxuLy8gSXQgdGFrZXMgYSBgVGVzdGluZ01vZHVsZWAgaW5zdGFuY2UgKGxvYWRlZCBmcm9tIHJlcXVpcmUoJ35zeXN0ZW0vVGVzdGluZycpKSBhbmQgYW4gYElFbmdpbmVgIGluc3RhbmNlIChmcm9tIERlY2VudHJhbGFuZCdzIFNESykuXG4vLyBJdCByZXR1cm5zIGFuIG9iamVjdCB3aXRoIGEgYHRlc3RgIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIHRlc3RzLlxuLyogQF9fUFVSRV9fICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGVzdFJ1bnRpbWUodGVzdGluZ01vZHVsZTogVGVzdGluZ01vZHVsZSwgZW5naW5lOiBJRW5naW5lKSB7XG4gIHR5cGUgVGVzdFBsYW5FbnRyeSA9IHsgbmFtZTogc3RyaW5nOyBmbjogVGVzdEZ1bmN0aW9uIH1cbiAgdHlwZSBSdW5uZXJFbnZpcm9ubWVudCA9IHtcbiAgICByZXNvbHZlOiAoKSA9PiB2b2lkXG4gICAgcmVqZWN0OiAoZXJyb3I6IGFueSkgPT4gdm9pZFxuICAgIGhlbHBlcnM6IFRlc3RIZWxwZXJzXG4gICAgZ2VuZXJhdG9yOiBHZW5lcmF0b3JcbiAgfVxuXG4gIC8vIHRoaXMgZmxhZyBlbnN1cmVzIG5vIHRlc3RzIGFyZSBhZGRlZCBhc3luY2hyb25vdXNseVxuICBsZXQgcnVudGltZUZyb3plbiA9IGZhbHNlXG5cbiAgbGV0IGN1cnJlbnRGcmFtZUNvdW50ZXIgPSAwXG4gIGxldCBjdXJyZW50RnJhbWVUaW1lID0gMFxuXG4gIC8vIGFycmF5IHRvIGhvbGQgdGhlIHNjaGVkdWxlZCB0ZXN0c1xuICBjb25zdCBzY2hlZHVsZWRUZXN0czogVGVzdFBsYW5FbnRyeVtdID0gW11cblxuICAvLyBhbiBhcnJheSBvZiBwcm9taXNlcyB0aGF0IGFyZSByZXNvbHZlZCBvbiB0aGUgbmV4dCBmcmFtZSAoYWZ0ZXIgdGhlIGN1cnJlbnQgZnJhbWUgaXMgZmluaXNoZWQpXG4gIGNvbnN0IG5leHRUaWNrRnV0dXJlOiBBcnJheTwoZHQ6IG51bWJlcikgPT4gdm9pZD4gPSBbXVxuXG4gIC8vIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyBvbiB0aGUgbmV4dCBmcmFtZVxuICBhc3luYyBmdW5jdGlvbiBuZXh0VGljaygpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8bnVtYmVyPigocmVzb2x2ZSkgPT4ge1xuICAgICAgbmV4dFRpY2tGdXR1cmUucHVzaChyZXNvbHZlKVxuICAgIH0pXG4gIH1cblxuICAvLyBhZGQgYSBzeXN0ZW0gdG8gdGhlIGVuZ2luZSB0aGF0IHJlc29sdmVzIGFsbCBwcm9taXNlcyBpbiB0aGUgYG5leHRUaWNrRnV0dXJlYCBhcnJheVxuICBlbmdpbmUuYWRkU3lzdGVtKGZ1bmN0aW9uIFRlc3RpbmdGcmFtZXdvcmtDb3JvdXRpbmVSdW5uZXIoZHQpIHtcbiAgICBjdXJyZW50RnJhbWVDb3VudGVyKytcbiAgICBjdXJyZW50RnJhbWVUaW1lICs9IGR0XG4gICAgLy8gcmVzb2x2ZSBhbGwgbmV4dFRpY2sgZnV0dXJlcy5cbiAgICBuZXh0VGlja0Z1dHVyZS5zcGxpY2UoMCwgbmV4dFRpY2tGdXR1cmUubGVuZ3RoKS5mb3JFYWNoKChfKSA9PiBfKGR0KSlcbiAgfSlcblxuICAvLyB0aGlzIGZ1bmN0aW9uIHNjaGVkdWxlcyBhIHZhbHVlIHRvIGJlIHByb2Nlc3NlZCBvbiB0aGUgbmV4dCBmcmFtZSwgdGhlIHRlc3QgcnVubmVyIHdpbGxcbiAgLy8gY29udGludWUgdG8gcnVuIHVudGlsIGl0IHJlYWNoZXMgYSB5aWVsZCBwb2ludFxuICBmdW5jdGlvbiBzY2hlZHVsZVZhbHVlKHZhbHVlOiBhbnksIGVudjogUnVubmVyRW52aXJvbm1lbnQpIHtcbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgdmFsdWUudGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgLy8gY29uc29sZS5sb2coJ+KPse+4jyB5aWVsZCBwcm9taXNlJylcbiAgICAgIC8vIGlmIHRoZSB2YWx1ZSBpcyBhIHByb21pc2UsIHNjaGVkdWxlIGl0IHRvIGJlIGF3YWl0ZWQgYWZ0ZXIgdGhlIGN1cnJlbnQgZnJhbWUgaXMgZmluaXNoZWRcbiAgICAgIG5leHRUaWNrRnV0dXJlLnB1c2goYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHNjaGVkdWxlVmFsdWUoYXdhaXQgdmFsdWUsIGVudilcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgZW52LnJlamVjdChlcnIpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCfij7HvuI8geWllbGQgZnVuY3Rpb24nKVxuICAgICAgLy8gaWYgdGhlIHZhbHVlIGlzIGEgZnVuY3Rpb24sIHNjaGVkdWxlIGl0IHRvIGJlIGNhbGxlZCBvbiB0aGUgbmV4dCBmcmFtZVxuICAgICAgbmV4dFRpY2tGdXR1cmUucHVzaCgoKSA9PiB7XG4gICAgICAgIHNjaGVkdWxlVmFsdWUodmFsdWUoKSwgZW52KVxuICAgICAgfSlcbiAgICAgIHJldHVyblxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgLy8gY29uc29sZS5sb2coJ+KPse+4jyB5aWVsZCcpXG4gICAgICAvLyBpZiB0aGUgdmFsdWUgaXMgdW5kZWZpbmVkIG9yIG51bGwsIGNvbnRpbnVlIHByb2Nlc3NpbmcgdGhlIGdlbmVyYXRvciB0aGUgbmV4dCBmcmFtZVxuICAgICAgbmV4dFRpY2tGdXR1cmUucHVzaCgoKSA9PiB7XG4gICAgICAgIGNvbnN1bWVHZW5lcmF0b3IoZW52KVxuICAgICAgfSlcbiAgICB9IGVsc2UgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHZhbHVlIGZyb20gdGVzdCBnZW5lcmF0b3I6ICR7dmFsdWV9YClcbiAgfVxuXG4gIC8vIHRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIGJ5IHNjaGVkdWxpbmcgaXRzIHZhbHVlcyB0byBiZSBwcm9jZXNzZWQgb24gdGhlIG5leHQgZnJhbWVcbiAgZnVuY3Rpb24gY29uc3VtZUdlbmVyYXRvcihlbnY6IFJ1bm5lckVudmlyb25tZW50KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJldCA9IGVudi5nZW5lcmF0b3IubmV4dCgpXG4gICAgICBpZiAoIXJldC5kb25lKSB7XG4gICAgICAgIHNjaGVkdWxlVmFsdWUocmV0LnZhbHVlLCBlbnYpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbnYucmVzb2x2ZSgpXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBlbnYucmVqZWN0KGVycilcbiAgICB9XG4gIH1cblxuICAvLyB0aGlzIGZ1bmN0aW9uIHNjaGVkdWxlcyBhIHRlc3QgcnVuIG9uIHRoZSBuZXh0IGZyYW1lXG4gIGZ1bmN0aW9uIHNjaGVkdWxlTmV4dFJ1bigpIHtcbiAgICBpZiAoc2NoZWR1bGVkVGVzdHMubGVuZ3RoKSB7XG4gICAgICBuZXh0VGlja0Z1dHVyZS5wdXNoKHJ1blRlc3RzKVxuICAgIH1cbiAgfVxuXG4gIC8vIHRoaXMgZnVuY3Rpb24gcnVucyB0aGUgc2NoZWR1bGVkIHRlc3RzXG4gIGZ1bmN0aW9uIHJ1blRlc3RzKCkge1xuICAgIGlmIChzY2hlZHVsZWRUZXN0cy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGVudHJ5ID0gc2NoZWR1bGVkVGVzdHMuc2hpZnQoKSFcbiAgICAgIGNvbnN0IGluaXRpYWxGcmFtZSA9IGN1cnJlbnRGcmFtZUNvdW50ZXJcbiAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IGN1cnJlbnRGcmFtZVRpbWVcblxuICAgICAgbGV0IHJlc29sdmVkID0gZmFsc2VcblxuICAgICAgLy8gdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIG9ubHkgb25jZS4gaXQgbWFrZXMgdGhlIGN1cnJlbnQgdGVzdCBwYXNzXG4gICAgICBjb25zdCByZXNvbHZlID0gKCkgPT4ge1xuICAgICAgICBpZiAocmVzb2x2ZWQpIHRocm93IG5ldyBFcnJvcigncmVzb2x2ZWQgdHdpY2UnKVxuICAgICAgICByZXNvbHZlZCA9IHRydWVcblxuICAgICAgICBjb25zb2xlLmxvZyhg8J+foiBUZXN0IHBhc3NlZCAke2VudHJ5Lm5hbWV9YClcblxuICAgICAgICB0ZXN0aW5nTW9kdWxlXG4gICAgICAgICAgLmxvZ1Rlc3RSZXN1bHQoe1xuICAgICAgICAgICAgbmFtZTogZW50cnkubmFtZSxcbiAgICAgICAgICAgIG9rOiB0cnVlLFxuICAgICAgICAgICAgdG90YWxGcmFtZXM6IGN1cnJlbnRGcmFtZUNvdW50ZXIgLSBpbml0aWFsRnJhbWUsXG4gICAgICAgICAgICB0b3RhbFRpbWU6IGN1cnJlbnRGcmFtZVRpbWUgLSBzdGFydFRpbWVcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5maW5hbGx5KHNjaGVkdWxlTmV4dFJ1bilcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVqZWN0ID0gKGVycjogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXNvbHZlZCkgdGhyb3cgbmV3IEVycm9yKCdyZXNvbHZlZCB0d2ljZScpXG4gICAgICAgIHJlc29sdmVkID0gdHJ1ZVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGDwn5S0IFRlc3QgZmFpbGVkICR7ZW50cnkubmFtZX1gKVxuICAgICAgICBjb25zb2xlLmVycm9yKGVycilcblxuICAgICAgICB0ZXN0aW5nTW9kdWxlXG4gICAgICAgICAgLmxvZ1Rlc3RSZXN1bHQoe1xuICAgICAgICAgICAgbmFtZTogZW50cnkubmFtZSxcbiAgICAgICAgICAgIG9rOiBmYWxzZSxcbiAgICAgICAgICAgIGVycm9yOiBlcnIudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHN0YWNrOiBlcnIgJiYgdHlwZW9mIGVyciA9PT0gJ29iamVjdCcgJiYgZXJyLnN0YWNrLFxuICAgICAgICAgICAgdG90YWxGcmFtZXM6IGN1cnJlbnRGcmFtZUNvdW50ZXIgLSBpbml0aWFsRnJhbWUsXG4gICAgICAgICAgICB0b3RhbFRpbWU6IGN1cnJlbnRGcmFtZVRpbWUgLSBzdGFydFRpbWVcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5maW5hbGx5KHNjaGVkdWxlTmV4dFJ1bilcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc29sZS5sb2coYPCfp6ogUnVubmluZyB0ZXN0ICR7ZW50cnkubmFtZX1gKVxuXG4gICAgICAgIGNvbnN0IHRlc3RIZWxwZXJzOiBUZXN0SGVscGVycyA9IHtcbiAgICAgICAgICBhc3luYyBzZXRDYW1lcmFUcmFuc2Zvcm0odHJhbnNmb3JtKSB7XG4gICAgICAgICAgICBhd2FpdCB0ZXN0aW5nTW9kdWxlLnNldENhbWVyYVRyYW5zZm9ybSh0cmFuc2Zvcm0pXG4gICAgICAgICAgICBhd2FpdCBuZXh0VGljaygpXG5cbiAgICAgICAgICAgIGNvbnN0IFRyYW5zZm9ybUNvbXBvbmVudCA9IGVuZ2luZS5nZXRDb21wb25lbnQoVHJhbnNmb3JtLmNvbXBvbmVudElkKSBhcyB0eXBlb2YgVHJhbnNmb3JtXG4gICAgICAgICAgICBjb25zdCBhY3R1YWxUcmFuc2Zvcm0gPSBUcmFuc2Zvcm1Db21wb25lbnQuZ2V0KGVuZ2luZS5DYW1lcmFFbnRpdHkpXG5cbiAgICAgICAgICAgIGFzc2VydEVxdWFscyhhY3R1YWxUcmFuc2Zvcm0ucG9zaXRpb24sIHRyYW5zZm9ybS5wb3NpdGlvbiwgXCJwb3NpdGlvbnMgZG9uJ3QgbWF0Y2hcIilcbiAgICAgICAgICAgIGFzc2VydEVxdWFscyhhY3R1YWxUcmFuc2Zvcm0ucm90YXRpb24sIHRyYW5zZm9ybS5yb3RhdGlvbiwgXCJyb3RhdGlvbnMgZG9uJ3QgbWF0Y2hcIilcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXR1cm5WYWx1ZSA9IGVudHJ5LmZuKHRlc3RIZWxwZXJzKVxuXG4gICAgICAgIGlmIChyZXR1cm5WYWx1ZSAmJiB0eXBlb2YgcmV0dXJuVmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgaWYgKGlzR2VuZXJhdG9yKHJldHVyblZhbHVlKSkge1xuICAgICAgICAgICAgY29uc3QgZW52OiBSdW5uZXJFbnZpcm9ubWVudCA9IHtcbiAgICAgICAgICAgICAgZ2VuZXJhdG9yOiByZXR1cm5WYWx1ZSxcbiAgICAgICAgICAgICAgaGVscGVyczogdGVzdEhlbHBlcnMsXG4gICAgICAgICAgICAgIHJlc29sdmUsXG4gICAgICAgICAgICAgIHJlamVjdFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3VtZUdlbmVyYXRvcihlbnYpXG4gICAgICAgICAgfSBlbHNlIGlmIChpc1Byb21pc2UocmV0dXJuVmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm5WYWx1ZS50aGVuKHJlc29sdmUpLmNhdGNoKHJlamVjdClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHRlc3QgcmVzdWx0IHR5cGU6ICR7cmV0dXJuVmFsdWV9YClcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZSgpXG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgIHJlamVjdChlcnIpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gc2NoZWR1bGUgdGhlIHRlc3QgcnVubmVyIHN0YXJ0IGZvciB0aGUgbmV4dCBmcmFtZVxuICBuZXh0VGlja0Z1dHVyZS5wdXNoKCgpID0+IHtcbiAgICAvLyBvbmNlIHdlIHJ1biB0aGUgbmV4dCB0aWNrLCB0aGUgdGVzdCBydW50aW1lIGJlY29tZXMgZnJvemVuLiB0aGF0IG1lYW5zIG5vIG5ld1xuICAgIC8vIHRlc3QgZGVmaW5pdGlvbnMgYXJlIGFjY2VwdGVkXG4gICAgcnVudGltZUZyb3plbiA9IHRydWVcblxuICAgIGlmICghc2NoZWR1bGVkVGVzdHMubGVuZ3RoKSByZXR1cm5cblxuICAgIC8vIGluZm9ybSB0aGUgdGVzdCBydW5uZXIgYWJvdXQgdGhlIHBsYW5zIGZvciB0aGlzIHRlc3QgcnVuXG4gICAgdGVzdGluZ01vZHVsZS5wbGFuKHsgdGVzdHM6IHNjaGVkdWxlZFRlc3RzIH0pLnRoZW4oc2NoZWR1bGVOZXh0UnVuKS5jYXRjaChnbG9iYWxGYWlsKVxuICB9KVxuXG4gIC8vIHRoaXMgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgaXMgdXNlZCB0byBwbGFuIGEgdGVzdCBmdW5jdGlvbm5cbiAgLyogQF9fUFVSRV9fICovXG4gIGZ1bmN0aW9uIHRlc3QobmFtZTogc3RyaW5nLCBmbjogVGVzdEZ1bmN0aW9uKSB7XG4gICAgaWYgKHJ1bnRpbWVGcm96ZW4pIHRocm93IG5ldyBFcnJvcihcIk5ldyB0ZXN0cyBjYW4ndCBiZSBhZGRlZCBhdCB0aGlzIHN0YWdlLlwiKVxuXG4gICAgaWYgKHNjaGVkdWxlZFRlc3RzLnNvbWUoKCQpID0+ICQubmFtZSA9PT0gbmFtZSkpIHRocm93IG5ldyBFcnJvcihgVGVzdCB3aXRoIG5hbWUgJHtuYW1lfSBhbHJlYWR5IGV4aXN0c2ApXG5cbiAgICBzY2hlZHVsZWRUZXN0cy5wdXNoKHsgZm4sIG5hbWUgfSlcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdGVzdFxuICB9XG59XG5cbmZ1bmN0aW9uIGlzR2VuZXJhdG9yKHQ6IGFueSk6IHQgaXMgR2VuZXJhdG9yIHtcbiAgcmV0dXJuIHQgJiYgdHlwZW9mIHQgPT09ICdvYmplY3QnICYmIHR5cGVvZiB0W1N5bWJvbC5pdGVyYXRvcl0gPT09ICdmdW5jdGlvbidcbn1cblxuZnVuY3Rpb24gaXNQcm9taXNlKHQ6IGFueSk6IHQgaXMgUHJvbWlzZTx1bmtub3duPiB7XG4gIHJldHVybiB0ICYmIHR5cGVvZiB0ID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgdC50aGVuID09PSAnZnVuY3Rpb24nXG59XG5cbmZ1bmN0aW9uIGdsb2JhbEZhaWwoZXJyb3I6IGFueSkge1xuICAvLyBmb3Igbm93LCB0aGUgZmFpbHVyZSBpcyBvbmx5IHdyaXRpbmcgdG8gdGhlIGNvbnNvbGUuZXJyb3IuXG4gIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG59XG4iXX0=