@highlight-run/rrweb 2.0.10 → 2.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/plugins/console-record.js +5 -5
  2. package/dist/plugins/console-record.min.js +5 -5
  3. package/dist/plugins/console-record.min.js.map +1 -1
  4. package/dist/plugins/console-replay.js +3 -3
  5. package/dist/plugins/console-replay.min.js +3 -3
  6. package/dist/plugins/console-replay.min.js.map +1 -1
  7. package/dist/record/rrweb-record-pack.js +2 -2
  8. package/dist/record/rrweb-record-pack.min.js +2 -2
  9. package/dist/record/rrweb-record-pack.min.js.map +1 -1
  10. package/dist/record/rrweb-record.js +3 -3
  11. package/dist/record/rrweb-record.min.js +3 -3
  12. package/dist/record/rrweb-record.min.js.map +1 -1
  13. package/dist/replay/rrweb-replay-unpack.js +3 -4
  14. package/dist/replay/rrweb-replay-unpack.min.js +3 -4
  15. package/dist/replay/rrweb-replay-unpack.min.js.map +1 -1
  16. package/dist/replay/rrweb-replay.js +3 -4
  17. package/dist/replay/rrweb-replay.min.js +3 -4
  18. package/dist/replay/rrweb-replay.min.js.map +1 -1
  19. package/dist/rrweb-all.js +24 -25
  20. package/dist/rrweb-all.min.js +24 -25
  21. package/dist/rrweb-all.min.js.map +1 -1
  22. package/dist/rrweb.js +14 -15
  23. package/dist/rrweb.min.js +14 -15
  24. package/dist/rrweb.min.js.map +1 -1
  25. package/es/rrweb/packages/rrdom/es/virtual-dom.js +14 -76
  26. package/es/rrweb/packages/rrweb/src/index.js +1 -1
  27. package/es/rrweb/packages/rrweb/src/record/index.js +1 -1
  28. package/es/rrweb/packages/rrweb/src/record/mutation.js +1 -1
  29. package/es/rrweb/packages/rrweb/src/record/observer.js +1 -1
  30. package/es/rrweb/packages/rrweb/src/replay/index.js +1 -1
  31. package/es/rrweb/packages/rrweb/src/utils.js +1 -1
  32. package/lib/plugins/console-record.js +1 -9
  33. package/lib/plugins/console-replay.js +1 -9
  34. package/lib/record/rrweb-record-pack.js +3 -9
  35. package/lib/record/rrweb-record.js +17 -1063
  36. package/lib/replay/rrweb-replay-unpack.js +59 -1011
  37. package/lib/replay/rrweb-replay.js +59 -1011
  38. package/lib/rrweb-all.js +100 -2032
  39. package/lib/rrweb.js +100 -2032
  40. package/package.json +2 -2
  41. package/es/rrweb/packages/rrweb-snapshot/es/rrweb-snapshot.js +0 -1871
@@ -1,66 +1,4 @@
1
- var NodeType$1;
2
- (function (NodeType) {
3
- NodeType[NodeType["Document"] = 0] = "Document";
4
- NodeType[NodeType["DocumentType"] = 1] = "DocumentType";
5
- NodeType[NodeType["Element"] = 2] = "Element";
6
- NodeType[NodeType["Text"] = 3] = "Text";
7
- NodeType[NodeType["CDATA"] = 4] = "CDATA";
8
- NodeType[NodeType["Comment"] = 5] = "Comment";
9
- })(NodeType$1 || (NodeType$1 = {}));
10
- var Mirror$1 = (function () {
11
- function Mirror() {
12
- this.idNodeMap = new Map();
13
- this.nodeMetaMap = new WeakMap();
14
- }
15
- Mirror.prototype.getId = function (n) {
16
- var _a;
17
- if (!n)
18
- return -1;
19
- var id = (_a = this.getMeta(n)) === null || _a === void 0 ? void 0 : _a.id;
20
- return id !== null && id !== void 0 ? id : -1;
21
- };
22
- Mirror.prototype.getNode = function (id) {
23
- return this.idNodeMap.get(id) || null;
24
- };
25
- Mirror.prototype.getIds = function () {
26
- return Array.from(this.idNodeMap.keys());
27
- };
28
- Mirror.prototype.getMeta = function (n) {
29
- return this.nodeMetaMap.get(n) || null;
30
- };
31
- Mirror.prototype.removeNodeFromMap = function (n) {
32
- var _this = this;
33
- var id = this.getId(n);
34
- this.idNodeMap["delete"](id);
35
- if (n.childNodes) {
36
- n.childNodes.forEach(function (childNode) {
37
- return _this.removeNodeFromMap(childNode);
38
- });
39
- }
40
- };
41
- Mirror.prototype.has = function (id) {
42
- return this.idNodeMap.has(id);
43
- };
44
- Mirror.prototype.hasNode = function (node) {
45
- return this.nodeMetaMap.has(node);
46
- };
47
- Mirror.prototype.add = function (n, meta) {
48
- var id = meta.id;
49
- this.idNodeMap.set(id, n);
50
- this.nodeMetaMap.set(n, meta);
51
- };
52
- Mirror.prototype.replace = function (id, n) {
53
- this.idNodeMap.set(id, n);
54
- };
55
- Mirror.prototype.reset = function () {
56
- this.idNodeMap = new Map();
57
- this.nodeMetaMap = new WeakMap();
58
- };
59
- return Mirror;
60
- }());
61
- function createMirror$1() {
62
- return new Mirror$1();
63
- }
1
+ import { NodeType as NodeType$1, createMirror as createMirror$1 } from '@highlight-run/rrweb-snapshot';
64
2
 
65
3
  function parseCSSText(cssText) {
66
4
  const res = {};
@@ -624,7 +562,7 @@ function diffProps(oldTree, newTree, rrnodeMirror) {
624
562
  newTree.scrollTop && (oldTree.scrollTop = newTree.scrollTop);
625
563
  }
626
564
  function diffChildren(oldChildren, newChildren, parentNode, replayer, rrnodeMirror) {
627
- var _a, _b;
565
+ var _a;
628
566
  let oldStartIndex = 0, oldEndIndex = oldChildren.length - 1, newStartIndex = 0, newEndIndex = newChildren.length - 1;
629
567
  let oldStartNode = oldChildren[oldStartIndex], oldEndNode = oldChildren[oldEndIndex], newStartNode = newChildren[newStartIndex], newEndNode = newChildren[newEndIndex];
630
568
  let oldIdToIndex = undefined, indexInOld;
@@ -648,24 +586,24 @@ function diffChildren(oldChildren, newChildren, parentNode, replayer, rrnodeMirr
648
586
  else if (replayer.mirror.getId(oldStartNode) === rrnodeMirror.getId(newEndNode)) {
649
587
  try {
650
588
  parentNode.insertBefore(oldStartNode, oldEndNode.nextSibling);
651
- }
652
- catch (e) {
653
- console.error(e, parentNode, oldStartNode, oldEndNode);
654
589
  diff(oldStartNode, newEndNode, replayer, rrnodeMirror);
655
590
  oldStartNode = oldChildren[++oldStartIndex];
656
591
  newEndNode = newChildren[--newEndIndex];
657
592
  }
593
+ catch (e) {
594
+ console.error(e, parentNode, oldStartNode, oldEndNode);
595
+ }
658
596
  }
659
597
  else if (replayer.mirror.getId(oldEndNode) === rrnodeMirror.getId(newStartNode)) {
660
598
  try {
661
599
  parentNode.insertBefore(oldEndNode, oldStartNode);
662
- }
663
- catch (e) {
664
- console.error(e, parentNode, oldEndNode, oldStartNode);
665
600
  diff(oldEndNode, newStartNode, replayer, rrnodeMirror);
666
601
  oldEndNode = oldChildren[--oldEndIndex];
667
602
  newStartNode = newChildren[++newStartIndex];
668
603
  }
604
+ catch (e) {
605
+ console.error(e, parentNode, oldEndNode, oldStartNode);
606
+ }
669
607
  }
670
608
  else {
671
609
  if (!oldIdToIndex) {
@@ -681,17 +619,17 @@ function diffChildren(oldChildren, newChildren, parentNode, replayer, rrnodeMirr
681
619
  const nodeToMove = oldChildren[indexInOld];
682
620
  try {
683
621
  parentNode.insertBefore(nodeToMove, oldStartNode);
622
+ diff(nodeToMove, newStartNode, replayer, rrnodeMirror);
623
+ oldChildren[indexInOld] = undefined;
684
624
  }
685
625
  catch (e) {
686
626
  console.error(e, parentNode, nodeToMove, oldStartNode);
687
- diff(nodeToMove, newStartNode, replayer, rrnodeMirror);
688
- oldChildren[indexInOld] = undefined;
689
627
  }
690
628
  }
691
629
  else {
692
630
  const newNode = createOrGetNode(newStartNode, replayer.mirror, rrnodeMirror);
693
- if (((_a = replayer.mirror.getMeta(parentNode)) === null || _a === void 0 ? void 0 : _a.type) === NodeType$1.Document &&
694
- ((_b = replayer.mirror.getMeta(newNode)) === null || _b === void 0 ? void 0 : _b.type) === NodeType$1.Element &&
631
+ if (parentNode.nodeName === '#document' &&
632
+ ((_a = replayer.mirror.getMeta(newNode)) === null || _a === void 0 ? void 0 : _a.type) === NodeType$1.Element &&
695
633
  parentNode.documentElement) {
696
634
  parentNode.removeChild(parentNode.documentElement);
697
635
  oldChildren[oldStartIndex] = undefined;
@@ -699,10 +637,10 @@ function diffChildren(oldChildren, newChildren, parentNode, replayer, rrnodeMirr
699
637
  }
700
638
  try {
701
639
  parentNode.insertBefore(newNode, oldStartNode || null);
640
+ diff(newNode, newStartNode, replayer, rrnodeMirror);
702
641
  }
703
642
  catch (e) {
704
643
  console.error(e, parentNode, newNode, oldStartNode || null);
705
- diff(newNode, newStartNode, replayer, rrnodeMirror);
706
644
  }
707
645
  }
708
646
  newStartNode = newChildren[++newStartIndex];
@@ -720,10 +658,10 @@ function diffChildren(oldChildren, newChildren, parentNode, replayer, rrnodeMirr
720
658
  const newNode = createOrGetNode(newChildren[newStartIndex], replayer.mirror, rrnodeMirror);
721
659
  try {
722
660
  parentNode.insertBefore(newNode, referenceNode);
661
+ diff(newNode, newChildren[newStartIndex], replayer, rrnodeMirror);
723
662
  }
724
663
  catch (e) {
725
664
  console.error(e, parentNode, newNode, referenceNode);
726
- diff(newNode, newChildren[newStartIndex], replayer, rrnodeMirror);
727
665
  }
728
666
  }
729
667
  }
@@ -1,6 +1,6 @@
1
1
  import record from './record/index.js';
2
2
  export { default as record } from './record/index.js';
3
- import '../../rrweb-snapshot/es/rrweb-snapshot.js';
3
+ import '@highlight-run/rrweb-snapshot';
4
4
  import '../../rrdom/es/virtual-dom.js';
5
5
  export { EventType, IncrementalSource, MouseInteractions, ReplayerEvents } from './types.js';
6
6
  import * as utils from './utils.js';
@@ -1,4 +1,4 @@
1
- import { createMirror, snapshot } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';
1
+ import { createMirror, snapshot } from '@highlight-run/rrweb-snapshot';
2
2
  import { initObservers, mutationBuffers } from './observer.js';
3
3
  import { polyfill, on, getWindowWidth, getWindowHeight, isSerializedIframe, isSerializedStylesheet, hasShadowRoot } from '../utils.js';
4
4
  import { EventType, IncrementalSource } from '../types.js';
@@ -1,4 +1,4 @@
1
- import { obfuscateText, isShadowRoot, maskInputValue, transformAttribute, needMaskingText, IGNORED_NODE, serializeNodeWithId } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';
1
+ import { obfuscateText, isShadowRoot, maskInputValue, transformAttribute, needMaskingText, IGNORED_NODE, serializeNodeWithId } from '@highlight-run/rrweb-snapshot';
2
2
  import { isIgnored, isBlocked, isSerialized, isAncestorRemoved, isSerializedIframe, isSerializedStylesheet, hasShadowRoot } from '../utils.js';
3
3
 
4
4
  function isNodeInLinkedList(n) {
@@ -1,4 +1,4 @@
1
- import { maskInputValue } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';
1
+ import { maskInputValue } from '@highlight-run/rrweb-snapshot';
2
2
  import { on, throttle, isBlocked, getWindowHeight, getWindowWidth, hookSetter, patch, isTouchEvent, isCanvasNode } from '../utils.js';
3
3
  import { MouseInteractions, IncrementalSource } from '../types.js';
4
4
  import MutationBuffer from './mutation.js';
@@ -1,5 +1,5 @@
1
1
  import { __awaiter } from './../../../../ext/tslib/tslib.es6.js';
2
- import { createCache, createMirror, rebuild, buildNodeWithSN, NodeType } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';
2
+ import { createCache, createMirror, rebuild, buildNodeWithSN, NodeType } from '@highlight-run/rrweb-snapshot';
3
3
  import { RRDocument, diff, createOrGetNode, getDefaultSN, StyleRuleType, buildFromDom, buildFromNode } from '../../../rrdom/es/virtual-dom.js';
4
4
  import * as mitt_es from './../../../../ext/mitt/dist/mitt.es.js';
5
5
  import mitt$1 from './../../../../ext/mitt/dist/mitt.es.js';
@@ -1,4 +1,4 @@
1
- import { classMatchesRegex, IGNORED_NODE, isShadowRoot } from '../../rrweb-snapshot/es/rrweb-snapshot.js';
1
+ import { classMatchesRegex, IGNORED_NODE, isShadowRoot } from '@highlight-run/rrweb-snapshot';
2
2
 
3
3
  function on(type, fn, target = document) {
4
4
  const options = { capture: true, passive: true };
@@ -2,15 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var NodeType;
6
- (function (NodeType) {
7
- NodeType[NodeType["Document"] = 0] = "Document";
8
- NodeType[NodeType["DocumentType"] = 1] = "DocumentType";
9
- NodeType[NodeType["Element"] = 2] = "Element";
10
- NodeType[NodeType["Text"] = 3] = "Text";
11
- NodeType[NodeType["CDATA"] = 4] = "CDATA";
12
- NodeType[NodeType["Comment"] = 5] = "Comment";
13
- })(NodeType || (NodeType = {}));
5
+ require('@highlight-run/rrweb-snapshot');
14
6
 
15
7
  const DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +
16
8
  '\r\n' +
@@ -2,15 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var NodeType;
6
- (function (NodeType) {
7
- NodeType[NodeType["Document"] = 0] = "Document";
8
- NodeType[NodeType["DocumentType"] = 1] = "DocumentType";
9
- NodeType[NodeType["Element"] = 2] = "Element";
10
- NodeType[NodeType["Text"] = 3] = "Text";
11
- NodeType[NodeType["CDATA"] = 4] = "CDATA";
12
- NodeType[NodeType["Comment"] = 5] = "Comment";
13
- })(NodeType || (NodeType = {}));
5
+ require('@highlight-run/rrweb-snapshot');
14
6
 
15
7
  const DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +
16
8
  '\r\n' +
@@ -2,15 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var NodeType;
6
- (function (NodeType) {
7
- NodeType[NodeType["Document"] = 0] = "Document";
8
- NodeType[NodeType["DocumentType"] = 1] = "DocumentType";
9
- NodeType[NodeType["Element"] = 2] = "Element";
10
- NodeType[NodeType["Text"] = 3] = "Text";
11
- NodeType[NodeType["CDATA"] = 4] = "CDATA";
12
- NodeType[NodeType["Comment"] = 5] = "Comment";
13
- })(NodeType || (NodeType = {}));
5
+ var rrwebSnapshot = require('@highlight-run/rrweb-snapshot');
14
6
 
15
7
  const DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +
16
8
  '\r\n' +
@@ -206,6 +198,8 @@ function createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {
206
198
  createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLg0KDQogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLg0KDQogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgNCiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkNCiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsDQogICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NDQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1INCiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SDQogICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4NCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLw0KDQogICAgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikgew0KICAgICAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH0NCiAgICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7DQogICAgICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfQ0KICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpOw0KICAgICAgICB9KTsNCiAgICB9CgogICAgLyoKICAgICAqIGJhc2U2NC1hcnJheWJ1ZmZlciAxLjAuMSA8aHR0cHM6Ly9naXRodWIuY29tL25pa2xhc3ZoL2Jhc2U2NC1hcnJheWJ1ZmZlcj4KICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBOaWtsYXMgdm9uIEhlcnR6ZW4gPGh0dHBzOi8vaGVydHplbi5jb20+CiAgICAgKiBSZWxlYXNlZCB1bmRlciBNSVQgTGljZW5zZQogICAgICovCiAgICB2YXIgY2hhcnMgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyc7CiAgICAvLyBVc2UgYSBsb29rdXAgdGFibGUgdG8gZmluZCB0aGUgaW5kZXguCiAgICB2YXIgbG9va3VwID0gdHlwZW9mIFVpbnQ4QXJyYXkgPT09ICd1bmRlZmluZWQnID8gW10gOiBuZXcgVWludDhBcnJheSgyNTYpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFycy5sZW5ndGg7IGkrKykgewogICAgICAgIGxvb2t1cFtjaGFycy5jaGFyQ29kZUF0KGkpXSA9IGk7CiAgICB9CiAgICB2YXIgZW5jb2RlID0gZnVuY3Rpb24gKGFycmF5YnVmZmVyKSB7CiAgICAgICAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlidWZmZXIpLCBpLCBsZW4gPSBieXRlcy5sZW5ndGgsIGJhc2U2NCA9ICcnOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gMykgewogICAgICAgICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaV0gPj4gMl07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1soKGJ5dGVzW2ldICYgMykgPDwgNCkgfCAoYnl0ZXNbaSArIDFdID4+IDQpXTsKICAgICAgICAgICAgYmFzZTY0ICs9IGNoYXJzWygoYnl0ZXNbaSArIDFdICYgMTUpIDw8IDIpIHwgKGJ5dGVzW2kgKyAyXSA+PiA2KV07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1tieXRlc1tpICsgMl0gJiA2M107CiAgICAgICAgfQogICAgICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgJz0nOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgJz09JzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGJhc2U2NDsKICAgIH07CgogICAgY29uc3QgbGFzdEJsb2JNYXAgPSBuZXcgTWFwKCk7DQogICAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gbmV3IE1hcCgpOw0KICAgIGZ1bmN0aW9uIGdldFRyYW5zcGFyZW50QmxvYkZvcih3aWR0aCwgaGVpZ2h0KSB7DQogICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7DQogICAgICAgICAgICBjb25zdCBpZCA9IGAke3dpZHRofS0ke2hlaWdodH1gOw0KICAgICAgICAgICAgaWYgKHRyYW5zcGFyZW50QmxvYk1hcC5oYXMoaWQpKQ0KICAgICAgICAgICAgICAgIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsNCiAgICAgICAgICAgIGNvbnN0IG9mZnNjcmVlbiA9IG5ldyBPZmZzY3JlZW5DYW52YXMod2lkdGgsIGhlaWdodCk7DQogICAgICAgICAgICBvZmZzY3JlZW4uZ2V0Q29udGV4dCgnMmQnKTsNCiAgICAgICAgICAgIGNvbnN0IGJsb2IgPSB5aWVsZCBvZmZzY3JlZW4uY29udmVydFRvQmxvYigpOw0KICAgICAgICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSB5aWVsZCBibG9iLmFycmF5QnVmZmVyKCk7DQogICAgICAgICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOw0KICAgICAgICAgICAgdHJhbnNwYXJlbnRCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgICAgIHJldHVybiBiYXNlNjQ7DQogICAgICAgIH0pOw0KICAgIH0NCiAgICBjb25zdCB3b3JrZXIgPSBzZWxmOw0KICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZSkgew0KICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkgew0KICAgICAgICAgICAgaWYgKCEoJ09mZnNjcmVlbkNhbnZhcycgaW4gZ2xvYmFsVGhpcykpDQogICAgICAgICAgICAgICAgcmV0dXJuIHdvcmtlci5wb3N0TWVzc2FnZSh7IGlkOiBlLmRhdGEuaWQgfSk7DQogICAgICAgICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQgfSA9IGUuZGF0YTsNCiAgICAgICAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKHdpZHRoLCBoZWlnaHQpOw0KICAgICAgICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsNCiAgICAgICAgICAgIGNvbnN0IGN0eCA9IG9mZnNjcmVlbi5nZXRDb250ZXh0KCcyZCcpOw0KICAgICAgICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOw0KICAgICAgICAgICAgYml0bWFwLmNsb3NlKCk7DQogICAgICAgICAgICBjb25zdCBibG9iID0geWllbGQgb2Zmc2NyZWVuLmNvbnZlcnRUb0Jsb2IoKTsNCiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBibG9iLnR5cGU7DQogICAgICAgICAgICBjb25zdCBhcnJheUJ1ZmZlciA9IHlpZWxkIGJsb2IuYXJyYXlCdWZmZXIoKTsNCiAgICAgICAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7DQogICAgICAgICAgICBpZiAoIWxhc3RCbG9iTWFwLmhhcyhpZCkgJiYgKHlpZWxkIHRyYW5zcGFyZW50QmFzZTY0KSA9PT0gYmFzZTY0KSB7DQogICAgICAgICAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOw0KICAgICAgICAgICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChsYXN0QmxvYk1hcC5nZXQoaWQpID09PSBiYXNlNjQpDQogICAgICAgICAgICAgICAgcmV0dXJuIHdvcmtlci5wb3N0TWVzc2FnZSh7IGlkIH0pOw0KICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHsNCiAgICAgICAgICAgICAgICBpZCwNCiAgICAgICAgICAgICAgICB0eXBlLA0KICAgICAgICAgICAgICAgIGJhc2U2NCwNCiAgICAgICAgICAgICAgICB3aWR0aCwNCiAgICAgICAgICAgICAgICBoZWlnaHQsDQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIGxhc3RCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgfSk7DQogICAgfTsKCn0pKCk7Cgo=', null, false);
207
199
  /* eslint-enable */
208
200
 
201
+ rrwebSnapshot.createMirror();
202
+
209
203
  // DEFLATE is a complex format; to read this code, you should probably check the RFC first:
210
204
 
211
205
  // aliases for shorter compressed code (most minifers don't do this)