git.fiddlerwoaroof.com
Browse code

(init)

Edward Langley authored on 31/03/2022 05:39:29
Showing 17 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1 @@
1
+*
0 2
new file mode 100644
... ...
@@ -0,0 +1,2 @@
1
+use flake
2
+PATH_add bin
0 3
new file mode 100644
... ...
@@ -0,0 +1,6 @@
1
+node_modules
2
+*~
3
+.log
4
+.*.sw[a-z]
5
+[#]*
6
+.[#]*
0 7
\ No newline at end of file
1 8
new file mode 100644
... ...
@@ -0,0 +1,133 @@
1
+#+EXPORT_FILE_NAME: docs/index.html
2
+#+HTML_HEAD: <link rel=stylesheet href="./colors.css" />
3
+#+OPTIONS: ^:nil
4
+
5
+** Sample babel transform to turn snake_case into camelCase
6
+
7
+First we write a simple function that takes a snake_case string and
8
+turns it into camel case:
9
+
10
+#+BEGIN_SRC js :tangle src/index.js :comments link
11
+  function snakeToCamel(str) {
12
+    const [first, ...rest] = str.split("_");
13
+    return `${first}${rest.map(capitalize).join("")}`;
14
+  }
15
+
16
+  function capitalize([v, ...vs]) {
17
+    return `${v.toLocaleUpperCase()}${vs.join("")}`;
18
+  }
19
+#+END_SRC
20
+
21
+Next, we define our babel plugin. We don't need any direct dependency
22
+on babel, since babel injects its functionality as an argument to the
23
+plugin.  Here, we're accessing =@babel/types= from the argument passed
24
+to our function and then creating a =visitor= that handles each
25
+=Identifier= node.  For each node, we rename it using babel's
26
+scope-handling functions, which handles most of the cases we care
27
+about, except for toplevel definitions like src_js{foo = bar}.  To
28
+handle those, we replace the path with a camel-cased version of the
29
+node.
30
+
31
+#+BEGIN_SRC js :tangle src/index.js :comments link
32
+  module.exports = function camelCasingVisitor({ types: t }) {
33
+    return {
34
+      visitor: {
35
+        Identifier(path) {
36
+          if (isSnakeCased(path.node)) {
37
+            path.scope.rename(path.node.name, snakeToCamel(path.node.name));
38
+            path.replaceWith(t.identifier(snakeToCamel(path.node.name)));
39
+          }
40
+        },
41
+      },
42
+    };
43
+  };
44
+
45
+  function isSnakeCased(node) {
46
+    return /_/.test(node.name)
47
+  }
48
+#+END_SRC
49
+
50
+** Sample results
51
+
52
+Given this plugin, if we create a new babel project that includes it
53
+(relative path here because it's in the same project):
54
+
55
+#+BEGIN_SRC json :tangle sample/babel.config.json
56
+  {
57
+    "compact": false,
58
+    "retainLines": true,
59
+    "plugins": ["../src/index"]
60
+  }
61
+#+END_SRC
62
+
63
+Then, given some javascript with snake_case identifiers:
64
+
65
+#+BEGIN_SRC js :tangle sample/sample1.js :comments link
66
+  import { a_thing } from "some_unconventional_package";
67
+
68
+  const my_constant = a_thing(4);
69
+
70
+  function some_function_stuff() {
71
+    let my_local_variable;
72
+    return function inner_function() {
73
+      const other_local_variable = 1;
74
+      return my_local_variable + other_local_variable + "!";
75
+    };
76
+  }
77
+
78
+  // Renaming this one is sort of dangerous 🤔
79
+  undeclared_variable = 234;
80
+#+END_SRC
81
+
82
+We get this output:
83
+
84
+#+BEGIN_SRC js :tangle no
85
+  import { aThing } from "some_unconventional_package";
86
+
87
+  const myConstant = aThing(4);
88
+
89
+  function someFunctionStuff() {
90
+    let myLocalVariable;
91
+    return function innerFunction() {
92
+      const otherLocalVariable = 1;
93
+      return myLocalVariable + otherLocalVariable + "!";
94
+    };
95
+  }
96
+
97
+  // Renaming this one is sort of dangerous 🤔
98
+  undeclaredVariable = 234;
99
+#+END_SRC
100
+
101
+** Limitations
102
+
103
+*** Renaming undeclared globals is problematic
104
+
105
+the js_src(undeclared_variable} example above is a bit problematic:
106
+with this transform, there's no way to access names you don't control
107
+that might exist in the global environment of your code. We could add
108
+some sort of comment directive for this, but it would mar the
109
+aesthetics of the demo. We could also just leave them alone, but that
110
+would mar the aesthetics too.
111
+
112
+*** Name clashes possible
113
+
114
+The names don't always manage to avoid collisions, if a matching
115
+camelCase identifier already exists. For example this code:
116
+
117
+#+BEGIN_SRC js :tangle sample/sample2.js :comments link
118
+  const a_name = 'foo'
119
+  function aName() {}
120
+
121
+  // This will be renamed to aName and clash with the function
122
+  a_name.toLower();
123
+#+END_SRC
124
+
125
+Produces this result:
126
+
127
+#+BEGIN_SRC js :tangle no
128
+  const aName = 'foo';
129
+  function aName() {}
130
+
131
+  // This will be renamed to aName and clash with the function
132
+  aName.toLower();
133
+#+END_SRC
0 134
new file mode 100755
... ...
@@ -0,0 +1,5 @@
1
+#!/usr/bin/env zsh
2
+
3
+path=("${(@)path:#${DIRENV_DIR#-}/bin}")
4
+
5
+TMPDIR="$(emacs-tmpdir)" emacsclient "$@"
0 6
new file mode 100644
... ...
@@ -0,0 +1,92 @@
1
+@import url(./latofonts.css);
2
+
3
+:root {
4
+  --zenburn-fg-plus-2: #ffffef;
5
+  --zenburn-fg-plus-1: #f5f5d6;
6
+  --zenburn-fg: #dcdccc;
7
+  --zenburn-fg-1: #a6a689;
8
+  --zenburn-fg-2: #656555;
9
+  --zenburn-black: #000000;
10
+  --zenburn-bg-2: #000000;
11
+  --zenburn-bg-1: #111112;
12
+  --zenburn-bg-05: #383838;
13
+  --zenburn-bg: #2a2b2e;
14
+  --zenburn-bg-plus-05: #494949;
15
+  --zenburn-bg-plus-1: #4f4f4f;
16
+  --zenburn-bg-plus-2: #5f5f5f;
17
+  --zenburn-bg-plus-3: #6f6f6f;
18
+  --zenburn-red-plus-2: #ecb3b3;
19
+  --zenburn-red-plus-1: #dca3a3;
20
+  --zenburn-red: #cc9393;
21
+  --zenburn-red-1: #bc8383;
22
+  --zenburn-red-2: #ac7373;
23
+  --zenburn-red-3: #9c6363;
24
+  --zenburn-red-4: #8c5353;
25
+  --zenburn-red-5: #7c4343;
26
+  --zenburn-red-6: #6c3333;
27
+  --zenburn-orange: #dfaf8f;
28
+  --zenburn-yellow: #f0dfaf;
29
+  --zenburn-yellow-1: #e0cf9f;
30
+  --zenburn-yellow-2: #d0bf8f;
31
+  --zenburn-green-5: #2f4f2f;
32
+  --zenburn-green-4: #3f5f3f;
33
+  --zenburn-green-3: #4f6f4f;
34
+  --zenburn-green-2: #5f7f5f;
35
+  --zenburn-green-1: #6f8f6f;
36
+  --zenburn-green: #7f9f7f;
37
+  --zenburn-green-plus-1: #8fb28f;
38
+  --zenburn-green-plus-2: #9fc59f;
39
+  --zenburn-green-plus-3: #afd8af;
40
+  --zenburn-green-plus-4: #bfebbf;
41
+  --zenburn-cyan: #93e0e3;
42
+  --zenburn-blue-plus-3: #bde0f3;
43
+  --zenburn-blue-plus-2: #ace0e3;
44
+  --zenburn-blue-plus-1: #94bff3;
45
+  --zenburn-blue: #8cd0d3;
46
+  --zenburn-blue-1: #7cb8bb;
47
+  --zenburn-blue-2: #6ca0a3;
48
+  --zenburn-blue-3: #5c888b;
49
+  --zenburn-blue-4: #4c7073;
50
+  --zenburn-blue-5: #366060;
51
+  --zenburn-magenta: #dc8cc3;
52
+}
53
+
54
+html {
55
+  --background: var(--zenburn-bg);
56
+  --foreground: var(--zenburn-fg);
57
+  --background-hl: var(--zenburn-bg-plus-1);
58
+  --foreground-hl: var(--zenburn-fg-plus-1);
59
+  --accent: var(--zenburn-green);
60
+  --link: var(--zenburn-blue);
61
+}
62
+
63
+body {
64
+  background: var(--background);
65
+  color: var(--foreground);
66
+}
67
+
68
+pre {
69
+  background: var(--background-hl);
70
+  color: var(--foreground-hl);
71
+}
72
+
73
+h1,
74
+h2,
75
+h3,
76
+h4,
77
+h5,
78
+h6 {
79
+  color: var(--accent);
80
+}
81
+
82
+body {
83
+  font-family: "LatoWeb", sans-serif;
84
+}
85
+
86
+a {
87
+  color: var(--link);
88
+}
89
+
90
+.org-svg {
91
+  max-width: min-content;
92
+}
0 93
new file mode 100644
... ...
@@ -0,0 +1,679 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
4
+  <head>
5
+    <!-- 2022-03-31 Thu 00:36 -->
6
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
7
+    <meta name="viewport" content="width=device-width, initial-scale=1" />
8
+    <title>&lrm;</title>
9
+    <meta name="author" content="Edward Langley" />
10
+    <meta name="generator" content="Org Mode" />
11
+    <style>
12
+      #content {
13
+        max-width: 60em;
14
+        margin: auto;
15
+      }
16
+      .title {
17
+        text-align: center;
18
+        margin-bottom: 0.2em;
19
+      }
20
+      .subtitle {
21
+        text-align: center;
22
+        font-size: medium;
23
+        font-weight: bold;
24
+        margin-top: 0;
25
+      }
26
+      .todo {
27
+        font-family: monospace;
28
+        color: red;
29
+      }
30
+      .done {
31
+        font-family: monospace;
32
+        color: green;
33
+      }
34
+      .priority {
35
+        font-family: monospace;
36
+        color: orange;
37
+      }
38
+      .tag {
39
+        background-color: #eee;
40
+        font-family: monospace;
41
+        padding: 2px;
42
+        font-size: 80%;
43
+        font-weight: normal;
44
+      }
45
+      .timestamp {
46
+        color: #bebebe;
47
+      }
48
+      .timestamp-kwd {
49
+        color: #5f9ea0;
50
+      }
51
+      .org-right {
52
+        margin-left: auto;
53
+        margin-right: 0px;
54
+        text-align: right;
55
+      }
56
+      .org-left {
57
+        margin-left: 0px;
58
+        margin-right: auto;
59
+        text-align: left;
60
+      }
61
+      .org-center {
62
+        margin-left: auto;
63
+        margin-right: auto;
64
+        text-align: center;
65
+      }
66
+      .underline {
67
+        text-decoration: underline;
68
+      }
69
+      #postamble p,
70
+      #preamble p {
71
+        font-size: 90%;
72
+        margin: 0.2em;
73
+      }
74
+      p.verse {
75
+        margin-left: 3%;
76
+      }
77
+      pre {
78
+        border: 1px solid #e6e6e6;
79
+        border-radius: 3px;
80
+        background-color: #f2f2f2;
81
+        padding: 8pt;
82
+        font-family: monospace;
83
+        overflow: auto;
84
+        margin: 1.2em;
85
+      }
86
+      pre.src {
87
+        position: relative;
88
+        overflow: auto;
89
+      }
90
+      pre.src:before {
91
+        display: none;
92
+        position: absolute;
93
+        top: -8px;
94
+        right: 12px;
95
+        padding: 3px;
96
+        color: #555;
97
+        background-color: #f2f2f299;
98
+      }
99
+      pre.src:hover:before {
100
+        display: inline;
101
+        margin-top: 14px;
102
+      }
103
+      /* Languages per Org manual */
104
+      pre.src-asymptote:before {
105
+        content: "Asymptote";
106
+      }
107
+      pre.src-awk:before {
108
+        content: "Awk";
109
+      }
110
+      pre.src-authinfo::before {
111
+        content: "Authinfo";
112
+      }
113
+      pre.src-C:before {
114
+        content: "C";
115
+      }
116
+      /* pre.src-C++ doesn't work in CSS */
117
+      pre.src-clojure:before {
118
+        content: "Clojure";
119
+      }
120
+      pre.src-css:before {
121
+        content: "CSS";
122
+      }
123
+      pre.src-D:before {
124
+        content: "D";
125
+      }
126
+      pre.src-ditaa:before {
127
+        content: "ditaa";
128
+      }
129
+      pre.src-dot:before {
130
+        content: "Graphviz";
131
+      }
132
+      pre.src-calc:before {
133
+        content: "Emacs Calc";
134
+      }
135
+      pre.src-emacs-lisp:before {
136
+        content: "Emacs Lisp";
137
+      }
138
+      pre.src-fortran:before {
139
+        content: "Fortran";
140
+      }
141
+      pre.src-gnuplot:before {
142
+        content: "gnuplot";
143
+      }
144
+      pre.src-haskell:before {
145
+        content: "Haskell";
146
+      }
147
+      pre.src-hledger:before {
148
+        content: "hledger";
149
+      }
150
+      pre.src-java:before {
151
+        content: "Java";
152
+      }
153
+      pre.src-js:before {
154
+        content: "Javascript";
155
+      }
156
+      pre.src-latex:before {
157
+        content: "LaTeX";
158
+      }
159
+      pre.src-ledger:before {
160
+        content: "Ledger";
161
+      }
162
+      pre.src-lisp:before {
163
+        content: "Lisp";
164
+      }
165
+      pre.src-lilypond:before {
166
+        content: "Lilypond";
167
+      }
168
+      pre.src-lua:before {
169
+        content: "Lua";
170
+      }
171
+      pre.src-matlab:before {
172
+        content: "MATLAB";
173
+      }
174
+      pre.src-mscgen:before {
175
+        content: "Mscgen";
176
+      }
177
+      pre.src-ocaml:before {
178
+        content: "Objective Caml";
179
+      }
180
+      pre.src-octave:before {
181
+        content: "Octave";
182
+      }
183
+      pre.src-org:before {
184
+        content: "Org mode";
185
+      }
186
+      pre.src-oz:before {
187
+        content: "OZ";
188
+      }
189
+      pre.src-plantuml:before {
190
+        content: "Plantuml";
191
+      }
192
+      pre.src-processing:before {
193
+        content: "Processing.js";
194
+      }
195
+      pre.src-python:before {
196
+        content: "Python";
197
+      }
198
+      pre.src-R:before {
199
+        content: "R";
200
+      }
201
+      pre.src-ruby:before {
202
+        content: "Ruby";
203
+      }
204
+      pre.src-sass:before {
205
+        content: "Sass";
206
+      }
207
+      pre.src-scheme:before {
208
+        content: "Scheme";
209
+      }
210
+      pre.src-screen:before {
211
+        content: "Gnu Screen";
212
+      }
213
+      pre.src-sed:before {
214
+        content: "Sed";
215
+      }
216
+      pre.src-sh:before {
217
+        content: "shell";
218
+      }
219
+      pre.src-sql:before {
220
+        content: "SQL";
221
+      }
222
+      pre.src-sqlite:before {
223
+        content: "SQLite";
224
+      }
225
+      /* additional languages in org.el's org-babel-load-languages alist */
226
+      pre.src-forth:before {
227
+        content: "Forth";
228
+      }
229
+      pre.src-io:before {
230
+        content: "IO";
231
+      }
232
+      pre.src-J:before {
233
+        content: "J";
234
+      }
235
+      pre.src-makefile:before {
236
+        content: "Makefile";
237
+      }
238
+      pre.src-maxima:before {
239
+        content: "Maxima";
240
+      }
241
+      pre.src-perl:before {
242
+        content: "Perl";
243
+      }
244
+      pre.src-picolisp:before {
245
+        content: "Pico Lisp";
246
+      }
247
+      pre.src-scala:before {
248
+        content: "Scala";
249
+      }
250
+      pre.src-shell:before {
251
+        content: "Shell Script";
252
+      }
253
+      pre.src-ebnf2ps:before {
254
+        content: "ebfn2ps";
255
+      }
256
+      /* additional language identifiers per "defun org-babel-execute"
257
+       in ob-*.el */
258
+      pre.src-cpp:before {
259
+        content: "C++";
260
+      }
261
+      pre.src-abc:before {
262
+        content: "ABC";
263
+      }
264
+      pre.src-coq:before {
265
+        content: "Coq";
266
+      }
267
+      pre.src-groovy:before {
268
+        content: "Groovy";
269
+      }
270
+      /* additional language identifiers from org-babel-shell-names in
271
+     ob-shell.el: ob-shell is the only babel language using a lambda to put
272
+     the execution function name together. */
273
+      pre.src-bash:before {
274
+        content: "bash";
275
+      }
276
+      pre.src-csh:before {
277
+        content: "csh";
278
+      }
279
+      pre.src-ash:before {
280
+        content: "ash";
281
+      }
282
+      pre.src-dash:before {
283
+        content: "dash";
284
+      }
285
+      pre.src-ksh:before {
286
+        content: "ksh";
287
+      }
288
+      pre.src-mksh:before {
289
+        content: "mksh";
290
+      }
291
+      pre.src-posh:before {
292
+        content: "posh";
293
+      }
294
+      /* Additional Emacs modes also supported by the LaTeX listings package */
295
+      pre.src-ada:before {
296
+        content: "Ada";
297
+      }
298
+      pre.src-asm:before {
299
+        content: "Assembler";
300
+      }
301
+      pre.src-caml:before {
302
+        content: "Caml";
303
+      }
304
+      pre.src-delphi:before {
305
+        content: "Delphi";
306
+      }
307
+      pre.src-html:before {
308
+        content: "HTML";
309
+      }
310
+      pre.src-idl:before {
311
+        content: "IDL";
312
+      }
313
+      pre.src-mercury:before {
314
+        content: "Mercury";
315
+      }
316
+      pre.src-metapost:before {
317
+        content: "MetaPost";
318
+      }
319
+      pre.src-modula-2:before {
320
+        content: "Modula-2";
321
+      }
322
+      pre.src-pascal:before {
323
+        content: "Pascal";
324
+      }
325
+      pre.src-ps:before {
326
+        content: "PostScript";
327
+      }
328
+      pre.src-prolog:before {
329
+        content: "Prolog";
330
+      }
331
+      pre.src-simula:before {
332
+        content: "Simula";
333
+      }
334
+      pre.src-tcl:before {
335
+        content: "tcl";
336
+      }
337
+      pre.src-tex:before {
338
+        content: "TeX";
339
+      }
340
+      pre.src-plain-tex:before {
341
+        content: "Plain TeX";
342
+      }
343
+      pre.src-verilog:before {
344
+        content: "Verilog";
345
+      }
346
+      pre.src-vhdl:before {
347
+        content: "VHDL";
348
+      }
349
+      pre.src-xml:before {
350
+        content: "XML";
351
+      }
352
+      pre.src-nxml:before {
353
+        content: "XML";
354
+      }
355
+      /* add a generic configuration mode; LaTeX export needs an additional
356
+     (add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
357
+      pre.src-conf:before {
358
+        content: "Configuration File";
359
+      }
360
+
361
+      table {
362
+        border-collapse: collapse;
363
+      }
364
+      caption.t-above {
365
+        caption-side: top;
366
+      }
367
+      caption.t-bottom {
368
+        caption-side: bottom;
369
+      }
370
+      td,
371
+      th {
372
+        vertical-align: top;
373
+      }
374
+      th.org-right {
375
+        text-align: center;
376
+      }
377
+      th.org-left {
378
+        text-align: center;
379
+      }
380
+      th.org-center {
381
+        text-align: center;
382
+      }
383
+      td.org-right {
384
+        text-align: right;
385
+      }
386
+      td.org-left {
387
+        text-align: left;
388
+      }
389
+      td.org-center {
390
+        text-align: center;
391
+      }
392
+      dt {
393
+        font-weight: bold;
394
+      }
395
+      .footpara {
396
+        display: inline;
397
+      }
398
+      .footdef {
399
+        margin-bottom: 1em;
400
+      }
401
+      .figure {
402
+        padding: 1em;
403
+      }
404
+      .figure p {
405
+        text-align: center;
406
+      }
407
+      .equation-container {
408
+        display: table;
409
+        text-align: center;
410
+        width: 100%;
411
+      }
412
+      .equation {
413
+        vertical-align: middle;
414
+      }
415
+      .equation-label {
416
+        display: table-cell;
417
+        text-align: right;
418
+        vertical-align: middle;
419
+      }
420
+      .inlinetask {
421
+        padding: 10px;
422
+        border: 2px solid gray;
423
+        margin: 10px;
424
+        background: #ffffcc;
425
+      }
426
+      #org-div-home-and-up {
427
+        text-align: right;
428
+        font-size: 70%;
429
+        white-space: nowrap;
430
+      }
431
+      textarea {
432
+        overflow-x: auto;
433
+      }
434
+      .linenr {
435
+        font-size: smaller;
436
+      }
437
+      .code-highlighted {
438
+        background-color: #ffff00;
439
+      }
440
+      .org-info-js_info-navigation {
441
+        border-style: none;
442
+      }
443
+      #org-info-js_console-label {
444
+        font-size: 10px;
445
+        font-weight: bold;
446
+        white-space: nowrap;
447
+      }
448
+      .org-info-js_search-highlight {
449
+        background-color: #ffff00;
450
+        color: #000000;
451
+        font-weight: bold;
452
+      }
453
+      .org-svg {
454
+        width: 90%;
455
+      }
456
+    </style>
457
+    <link rel="stylesheet" href="./colors.css" />
458
+  </head>
459
+  <body>
460
+    <div id="content" class="content">
461
+      <div id="table-of-contents" role="doc-toc">
462
+        <h2>Table of Contents</h2>
463
+        <div id="text-table-of-contents" role="doc-toc">
464
+          <ul>
465
+            <li>
466
+              <a href="#orgb4ace78"
467
+                >1. Sample babel transform to turn snake_case into camelCase</a
468
+              >
469
+            </li>
470
+            <li><a href="#org00f7e04">2. Sample results</a></li>
471
+            <li>
472
+              <a href="#orgea25dc3">3. Limitations</a>
473
+              <ul>
474
+                <li>
475
+                  <a href="#org25c467c"
476
+                    >3.1. Renaming undeclared globals is problematic</a
477
+                  >
478
+                </li>
479
+                <li><a href="#org4548509">3.2. Name clashes possible</a></li>
480
+              </ul>
481
+            </li>
482
+          </ul>
483
+        </div>
484
+      </div>
485
+
486
+      <div id="outline-container-orgb4ace78" class="outline-2">
487
+        <h2 id="orgb4ace78">
488
+          <span class="section-number-2">1.</span> Sample babel transform to
489
+          turn snake_case into camelCase
490
+        </h2>
491
+        <div class="outline-text-2" id="text-1">
492
+          <p>
493
+            First we write a simple function that takes a snake_case string and
494
+            turns it into camel case:
495
+          </p>
496
+
497
+          <div class="org-src-container">
498
+            <pre
499
+              class="src src-js"
500
+            ><span style="color: #F0DFAF;">function</span> <span style="color: #8CD0D3;">snakeToCamel</span>(<span style="color: #DC8CC3;">str</span>) {
501
+  <span style="color: #F0DFAF;">const</span> [first, ...rest] = str.split(<span style="color: #D0BF8F;">"_"</span>);
502
+  <span style="color: #F0DFAF;">return</span> <span style="color: #D0BF8F;">`${first}${rest.map(capitalize).join("")}`</span>;
503
+}
504
+
505
+<span style="color: #F0DFAF;">function</span> <span style="color: #8CD0D3;">capitalize</span>([v, ...vs]) {
506
+  <span style="color: #F0DFAF;">return</span> <span style="color: #D0BF8F;">`${v.toLocaleUpperCase()}${vs.join("")}`</span>;
507
+}
508
+</pre>
509
+          </div>
510
+
511
+          <p>
512
+            Next, we define our babel plugin. We don't need any direct
513
+            dependency on babel, since babel injects its functionality as an
514
+            argument to the plugin. Here, we're accessing
515
+            <code>@babel/types</code> from the argument passed to our function
516
+            and then creating a <code>visitor</code> that handles each
517
+            <code>Identifier</code> node. For each node, we rename it using
518
+            babel's scope-handling functions, which handles most of the cases we
519
+            care about, except for toplevel definitions like . To handle those,
520
+            we replace the path with a camel-cased version of the node.
521
+          </p>
522
+
523
+          <div class="org-src-container">
524
+            <pre
525
+              class="src src-js"
526
+            >module.exports = <span style="color: #F0DFAF;">function</span> camelCasingVisitor({ types: t }) {
527
+  <span style="color: #F0DFAF;">return</span> {
528
+    visitor: {
529
+      Identifier(path) {
530
+        <span style="color: #F0DFAF;">if</span> (isSnakeCased(path.node)) {
531
+          path.scope.rename(path.node.name, snakeToCamel(path.node.name));
532
+          path.replaceWith(t.identifier(snakeToCamel(path.node.name)));
533
+        }
534
+      },
535
+    },
536
+  };
537
+};
538
+
539
+<span style="color: #F0DFAF;">function</span> <span style="color: #8CD0D3;">isSnakeCased</span>(<span style="color: #DC8CC3;">node</span>) {
540
+  <span style="color: #F0DFAF;">return</span> <span style="color: #D0BF8F;">/_/</span>.test(node.name)
541
+}
542
+</pre>
543
+          </div>
544
+        </div>
545
+      </div>
546
+
547
+      <div id="outline-container-org00f7e04" class="outline-2">
548
+        <h2 id="org00f7e04">
549
+          <span class="section-number-2">2.</span> Sample results
550
+        </h2>
551
+        <div class="outline-text-2" id="text-2">
552
+          <p>
553
+            Given this plugin, if we create a new babel project that includes it
554
+            (relative path here because it's in the same project):
555
+          </p>
556
+
557
+          <div class="org-src-container">
558
+            <pre class="src src-json">{
559
+  <span style="color: #F0DFAF;">"compact"</span>: <span style="font-weight: bold;">false</span>,
560
+  <span style="color: #F0DFAF;">"retainLines"</span>: <span style="font-weight: bold;">true</span>,
561
+  <span style="color: #F0DFAF;">"plugins"</span>: [<span style="color: #D0BF8F;">"../src/index"</span>]
562
+}
563
+</pre>
564
+          </div>
565
+
566
+          <p>Then, given some javascript with snake_case identifiers:</p>
567
+
568
+          <div class="org-src-container">
569
+            <pre
570
+              class="src src-js"
571
+            ><span style="color: #F0DFAF;">import</span> { a_thing } from <span style="color: #D0BF8F;">"some_unconventional_package"</span>;
572
+
573
+<span style="color: #F0DFAF;">const</span> <span style="color: #DC8CC3;">my_constant</span> = a_thing(4);
574
+
575
+<span style="color: #F0DFAF;">function</span> <span style="color: #8CD0D3;">some_function_stuff</span>() {
576
+  <span style="color: #F0DFAF;">let</span> <span style="color: #DC8CC3;">my_local_variable</span>;
577
+  <span style="color: #F0DFAF;">return</span> <span style="color: #F0DFAF;">function</span> inner_function() {
578
+    <span style="color: #F0DFAF;">const</span> <span style="color: #DC8CC3;">other_local_variable</span> = 1;
579
+    <span style="color: #F0DFAF;">return</span> my_local_variable + other_local_variable + <span style="color: #D0BF8F;">"!"</span>;
580
+  };
581
+}
582
+
583
+<span style="color: #A6A689; background-color: #111112;">// </span><span style="color: #A6A689; background-color: #111112;">Renaming this one is sort of dangerous &#129300;</span>
584
+undeclared_variable = 234;
585
+</pre>
586
+          </div>
587
+
588
+          <p>We get this output:</p>
589
+
590
+          <div class="org-src-container">
591
+            <pre
592
+              class="src src-js"
593
+            ><span style="color: #F0DFAF;">import</span> { aThing } from <span style="color: #D0BF8F;">"some_unconventional_package"</span>;
594
+
595
+<span style="color: #F0DFAF;">const</span> <span style="color: #DC8CC3;">myConstant</span> = aThing(4);
596
+
597
+<span style="color: #F0DFAF;">function</span> <span style="color: #8CD0D3;">someFunctionStuff</span>() {
598
+  <span style="color: #F0DFAF;">let</span> <span style="color: #DC8CC3;">myLocalVariable</span>;
599
+  <span style="color: #F0DFAF;">return</span> <span style="color: #F0DFAF;">function</span> innerFunction() {
600
+    <span style="color: #F0DFAF;">const</span> <span style="color: #DC8CC3;">otherLocalVariable</span> = 1;
601
+    <span style="color: #F0DFAF;">return</span> myLocalVariable + otherLocalVariable + <span style="color: #D0BF8F;">"!"</span>;
602
+  };
603
+}
604
+
605
+<span style="color: #A6A689; background-color: #111112;">// </span><span style="color: #A6A689; background-color: #111112;">Renaming this one is sort of dangerous &#129300;</span>
606
+undeclaredVariable = 234;
607
+</pre>
608
+          </div>
609
+        </div>
610
+      </div>
611
+
612
+      <div id="outline-container-orgea25dc3" class="outline-2">
613
+        <h2 id="orgea25dc3">
614
+          <span class="section-number-2">3.</span> Limitations
615
+        </h2>
616
+        <div class="outline-text-2" id="text-3"></div>
617
+        <div id="outline-container-org25c467c" class="outline-3">
618
+          <h3 id="org25c467c">
619
+            <span class="section-number-3">3.1.</span> Renaming undeclared
620
+            globals is problematic
621
+          </h3>
622
+          <div class="outline-text-3" id="text-3-1">
623
+            <p>
624
+              the js_src(undeclared_variable} example above is a bit
625
+              problematic: with this transform, there's no way to access names
626
+              you don't control that might exist in the global environment of
627
+              your code. We could add some sort of comment directive for this,
628
+              but it would mar the aesthetics of the demo. We could also just
629
+              leave them alone, but that would mar the aesthetics too.
630
+            </p>
631
+          </div>
632
+        </div>
633
+
634
+        <div id="outline-container-org4548509" class="outline-3">
635
+          <h3 id="org4548509">
636
+            <span class="section-number-3">3.2.</span> Name clashes possible
637
+          </h3>
638
+          <div class="outline-text-3" id="text-3-2">
639
+            <p>
640
+              The names don't always manage to avoid collisions, if a matching
641
+              camelCase identifier already exists. For example this code:
642
+            </p>
643
+
644
+            <div class="org-src-container">
645
+              <pre
646
+                class="src src-js"
647
+              ><span style="color: #F0DFAF;">const</span> <span style="color: #DC8CC3;">a_name</span> = <span style="color: #D0BF8F;">'foo'</span>
648
+<span style="color: #F0DFAF;">function</span> <span style="color: #8CD0D3;">aName</span>() {}
649
+
650
+<span style="color: #A6A689; background-color: #111112;">// </span><span style="color: #A6A689; background-color: #111112;">This will be renamed to aName and clash with the function</span>
651
+a_name.toLower();
652
+</pre>
653
+            </div>
654
+
655
+            <p>Produces this result:</p>
656
+
657
+            <div class="org-src-container">
658
+              <pre
659
+                class="src src-js"
660
+              ><span style="color: #F0DFAF;">const</span> <span style="color: #DC8CC3;">aName</span> = <span style="color: #D0BF8F;">'foo'</span>;
661
+<span style="color: #F0DFAF;">function</span> <span style="color: #8CD0D3;">aName</span>() {}
662
+
663
+<span style="color: #A6A689; background-color: #111112;">// </span><span style="color: #A6A689; background-color: #111112;">This will be renamed to aName and clash with the function</span>
664
+aName.toLower();
665
+</pre>
666
+            </div>
667
+          </div>
668
+        </div>
669
+      </div>
670
+    </div>
671
+    <div id="postamble" class="status">
672
+      <p class="author">Author: Edward Langley</p>
673
+      <p class="date">Created: 2022-03-31 Thu 00:36</p>
674
+      <p class="validation">
675
+        <a href="https://validator.w3.org/check?uri=referer">Validate</a>
676
+      </p>
677
+    </div>
678
+  </body>
679
+</html>
0 680
new file mode 100644
... ...
@@ -0,0 +1,60 @@
1
+{
2
+  "nodes": {
3
+    "flake-compat": {
4
+      "flake": false,
5
+      "locked": {
6
+        "lastModified": 1648199409,
7
+        "narHash": "sha256-JwPKdC2PoVBkG6E+eWw3j6BMR6sL3COpYWfif7RVb8Y=",
8
+        "owner": "edolstra",
9
+        "repo": "flake-compat",
10
+        "rev": "64a525ee38886ab9028e6f61790de0832aa3ef03",
11
+        "type": "github"
12
+      },
13
+      "original": {
14
+        "owner": "edolstra",
15
+        "repo": "flake-compat",
16
+        "type": "github"
17
+      }
18
+    },
19
+    "flake-utils": {
20
+      "locked": {
21
+        "lastModified": 1648297722,
22
+        "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
23
+        "owner": "numtide",
24
+        "repo": "flake-utils",
25
+        "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
26
+        "type": "github"
27
+      },
28
+      "original": {
29
+        "owner": "numtide",
30
+        "repo": "flake-utils",
31
+        "type": "github"
32
+      }
33
+    },
34
+    "nixpkgs": {
35
+      "locked": {
36
+        "lastModified": 1648352901,
37
+        "narHash": "sha256-1R31hIpqA+3mKBSayiqUhCm21gw4YRioPuR1WqjlCwU=",
38
+        "owner": "nixos",
39
+        "repo": "nixpkgs",
40
+        "rev": "12417777b226eff91efee8b03578daa76c8178a3",
41
+        "type": "github"
42
+      },
43
+      "original": {
44
+        "owner": "nixos",
45
+        "ref": "12417777b226eff91efee8b03578daa76c8178a3",
46
+        "repo": "nixpkgs",
47
+        "type": "github"
48
+      }
49
+    },
50
+    "root": {
51
+      "inputs": {
52
+        "flake-compat": "flake-compat",
53
+        "flake-utils": "flake-utils",
54
+        "nixpkgs": "nixpkgs"
55
+      }
56
+    }
57
+  },
58
+  "root": "root",
59
+  "version": 7
60
+}
0 61
new file mode 100644
... ...
@@ -0,0 +1,29 @@
1
+{
2
+  inputs = {
3
+    nixpkgs = {
4
+      type = "github";
5
+      owner = "nixos";
6
+      repo = "nixpkgs";
7
+      ref = "12417777b226eff91efee8b03578daa76c8178a3";
8
+    };
9
+    flake-compat = {
10
+      url = "github:edolstra/flake-compat";
11
+      flake = false;
12
+    };
13
+    flake-utils.url = "github:numtide/flake-utils";
14
+  };
15
+
16
+  outputs = {
17
+    self,
18
+    nixpkgs,
19
+    flake-compat,
20
+    flake-utils,
21
+  }:
22
+    flake-utils.lib.eachDefaultSystem (system: let
23
+      pkgs = nixpkgs.legacyPackages.${system};
24
+    in {
25
+      devShell = pkgs.mkShell {
26
+        buildInputs = [pkgs.nodejs-16_x pkgs.alejandra];
27
+      };
28
+    });
29
+}
0 30
new file mode 100644
... ...
@@ -0,0 +1 @@
1
+{}
0 2
new file mode 100644
... ...
@@ -0,0 +1,2676 @@
1
+{
2
+  "name": "babel-camel-case",
3
+  "version": "1.0.0",
4
+  "lockfileVersion": 2,
5
+  "requires": true,
6
+  "packages": {
7
+    "": {
8
+      "name": "babel-camel-case",
9
+      "version": "1.0.0",
10
+      "license": "ISC",
11
+      "devDependencies": {
12
+        "@babel/cli": "^7.17.6",
13
+        "babel-core": "^6.26.3"
14
+      }
15
+    },
16
+    "node_modules/@ampproject/remapping": {
17
+      "version": "2.1.2",
18
+      "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz",
19
+      "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==",
20
+      "dev": true,
21
+      "peer": true,
22
+      "dependencies": {
23
+        "@jridgewell/trace-mapping": "^0.3.0"
24
+      },
25
+      "engines": {
26
+        "node": ">=6.0.0"
27
+      }
28
+    },
29
+    "node_modules/@babel/cli": {
30
+      "version": "7.17.6",
31
+      "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.17.6.tgz",
32
+      "integrity": "sha512-l4w608nsDNlxZhiJ5tE3DbNmr61fIKMZ6fTBo171VEFuFMIYuJ3mHRhTLEkKKyvx2Mizkkv/0a8OJOnZqkKYNA==",
33
+      "dev": true,
34
+      "dependencies": {
35
+        "@jridgewell/trace-mapping": "^0.3.4",
36
+        "commander": "^4.0.1",
37
+        "convert-source-map": "^1.1.0",
38
+        "fs-readdir-recursive": "^1.1.0",
39
+        "glob": "^7.0.0",
40
+        "make-dir": "^2.1.0",
41
+        "slash": "^2.0.0",
42
+        "source-map": "^0.5.0"
43
+      },
44
+      "bin": {
45
+        "babel": "bin/babel.js",
46
+        "babel-external-helpers": "bin/babel-external-helpers.js"
47
+      },
48
+      "engines": {
49
+        "node": ">=6.9.0"
50
+      },
51
+      "optionalDependencies": {
52
+        "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3",
53
+        "chokidar": "^3.4.0"
54
+      },
55
+      "peerDependencies": {
56
+        "@babel/core": "^7.0.0-0"
57
+      }
58
+    },
59
+    "node_modules/@babel/cli/node_modules/slash": {
60
+      "version": "2.0.0",
61
+      "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
62
+      "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
63
+      "dev": true,
64
+      "engines": {
65
+        "node": ">=6"
66
+      }
67
+    },
68
+    "node_modules/@babel/code-frame": {
69
+      "version": "7.16.7",
70
+      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz",
71
+      "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==",
72
+      "dev": true,
73
+      "peer": true,
74
+      "dependencies": {
75
+        "@babel/highlight": "^7.16.7"
76
+      },
77
+      "engines": {
78
+        "node": ">=6.9.0"
79
+      }
80
+    },
81
+    "node_modules/@babel/compat-data": {
82
+      "version": "7.17.7",
83
+      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz",
84
+      "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==",
85
+      "dev": true,
86
+      "peer": true,
87
+      "engines": {
88
+        "node": ">=6.9.0"
89
+      }
90
+    },
91
+    "node_modules/@babel/core": {
92
+      "version": "7.17.8",
93
+      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.8.tgz",
94
+      "integrity": "sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==",
95
+      "dev": true,
96
+      "peer": true,
97
+      "dependencies": {
98
+        "@ampproject/remapping": "^2.1.0",
99
+        "@babel/code-frame": "^7.16.7",
100
+        "@babel/generator": "^7.17.7",
101
+        "@babel/helper-compilation-targets": "^7.17.7",
102
+        "@babel/helper-module-transforms": "^7.17.7",
103
+        "@babel/helpers": "^7.17.8",
104
+        "@babel/parser": "^7.17.8",
105
+        "@babel/template": "^7.16.7",
106
+        "@babel/traverse": "^7.17.3",
107
+        "@babel/types": "^7.17.0",
108
+        "convert-source-map": "^1.7.0",
109
+        "debug": "^4.1.0",
110
+        "gensync": "^1.0.0-beta.2",
111
+        "json5": "^2.1.2",
112
+        "semver": "^6.3.0"
113
+      },
114
+      "engines": {
115
+        "node": ">=6.9.0"
116
+      },
117
+      "funding": {
118
+        "type": "opencollective",
119
+        "url": "https://opencollective.com/babel"
120
+      }
121
+    },
122
+    "node_modules/@babel/core/node_modules/debug": {
123
+      "version": "4.3.4",
124
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
125
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
126
+      "dev": true,
127
+      "peer": true,
128
+      "dependencies": {
129
+        "ms": "2.1.2"
130
+      },
131
+      "engines": {
132
+        "node": ">=6.0"
133
+      },
134
+      "peerDependenciesMeta": {
135
+        "supports-color": {
136
+          "optional": true
137
+        }
138
+      }
139
+    },
140
+    "node_modules/@babel/core/node_modules/json5": {
141
+      "version": "2.2.1",
142
+      "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
143
+      "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
144
+      "dev": true,
145
+      "peer": true,
146
+      "bin": {
147
+        "json5": "lib/cli.js"
148
+      },
149
+      "engines": {
150
+        "node": ">=6"
151
+      }
152
+    },
153
+    "node_modules/@babel/core/node_modules/ms": {
154
+      "version": "2.1.2",
155
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
156
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
157
+      "dev": true,
158
+      "peer": true
159
+    },
160
+    "node_modules/@babel/generator": {
161
+      "version": "7.17.7",
162
+      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz",
163
+      "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==",
164
+      "dev": true,
165
+      "peer": true,
166
+      "dependencies": {
167
+        "@babel/types": "^7.17.0",
168
+        "jsesc": "^2.5.1",
169
+        "source-map": "^0.5.0"
170
+      },
171
+      "engines": {
172
+        "node": ">=6.9.0"
173
+      }
174
+    },
175
+    "node_modules/@babel/generator/node_modules/jsesc": {
176
+      "version": "2.5.2",
177
+      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
178
+      "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
179
+      "dev": true,
180
+      "peer": true,
181
+      "bin": {
182
+        "jsesc": "bin/jsesc"
183
+      },
184
+      "engines": {
185
+        "node": ">=4"
186
+      }
187
+    },
188
+    "node_modules/@babel/helper-compilation-targets": {
189
+      "version": "7.17.7",
190
+      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz",
191
+      "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==",
192
+      "dev": true,
193
+      "peer": true,
194
+      "dependencies": {
195
+        "@babel/compat-data": "^7.17.7",
196
+        "@babel/helper-validator-option": "^7.16.7",
197
+        "browserslist": "^4.17.5",
198
+        "semver": "^6.3.0"
199
+      },
200
+      "engines": {
201
+        "node": ">=6.9.0"
202
+      },
203
+      "peerDependencies": {
204
+        "@babel/core": "^7.0.0"
205
+      }
206
+    },
207
+    "node_modules/@babel/helper-environment-visitor": {
208
+      "version": "7.16.7",
209
+      "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz",
210
+      "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==",
211
+      "dev": true,
212
+      "peer": true,
213
+      "dependencies": {
214
+        "@babel/types": "^7.16.7"
215
+      },
216
+      "engines": {
217
+        "node": ">=6.9.0"
218
+      }
219
+    },
220
+    "node_modules/@babel/helper-function-name": {
221
+      "version": "7.16.7",
222
+      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz",
223
+      "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==",
224
+      "dev": true,
225
+      "peer": true,
226
+      "dependencies": {
227
+        "@babel/helper-get-function-arity": "^7.16.7",
228
+        "@babel/template": "^7.16.7",
229
+        "@babel/types": "^7.16.7"
230
+      },
231
+      "engines": {
232
+        "node": ">=6.9.0"
233
+      }
234
+    },
235
+    "node_modules/@babel/helper-get-function-arity": {
236
+      "version": "7.16.7",
237
+      "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz",
238
+      "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==",
239
+      "dev": true,
240
+      "peer": true,
241
+      "dependencies": {
242
+        "@babel/types": "^7.16.7"
243
+      },
244
+      "engines": {
245
+        "node": ">=6.9.0"
246
+      }
247
+    },
248
+    "node_modules/@babel/helper-hoist-variables": {
249
+      "version": "7.16.7",
250
+      "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz",
251
+      "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==",
252
+      "dev": true,
253
+      "peer": true,
254
+      "dependencies": {
255
+        "@babel/types": "^7.16.7"
256
+      },
257
+      "engines": {
258
+        "node": ">=6.9.0"
259
+      }
260
+    },
261
+    "node_modules/@babel/helper-module-imports": {
262
+      "version": "7.16.7",
263
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz",
264
+      "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==",
265
+      "dev": true,
266
+      "peer": true,
267
+      "dependencies": {
268
+        "@babel/types": "^7.16.7"
269
+      },
270
+      "engines": {
271
+        "node": ">=6.9.0"
272
+      }
273
+    },
274
+    "node_modules/@babel/helper-module-transforms": {
275
+      "version": "7.17.7",
276
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz",
277
+      "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==",
278
+      "dev": true,
279
+      "peer": true,
280
+      "dependencies": {
281
+        "@babel/helper-environment-visitor": "^7.16.7",
282
+        "@babel/helper-module-imports": "^7.16.7",
283
+        "@babel/helper-simple-access": "^7.17.7",
284
+        "@babel/helper-split-export-declaration": "^7.16.7",
285
+        "@babel/helper-validator-identifier": "^7.16.7",
286
+        "@babel/template": "^7.16.7",
287
+        "@babel/traverse": "^7.17.3",
288
+        "@babel/types": "^7.17.0"
289
+      },
290
+      "engines": {
291
+        "node": ">=6.9.0"
292
+      }
293
+    },
294
+    "node_modules/@babel/helper-simple-access": {
295
+      "version": "7.17.7",
296
+      "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz",
297
+      "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==",
298
+      "dev": true,
299
+      "peer": true,
300
+      "dependencies": {
301
+        "@babel/types": "^7.17.0"
302
+      },
303
+      "engines": {
304
+        "node": ">=6.9.0"
305
+      }
306
+    },
307
+    "node_modules/@babel/helper-split-export-declaration": {
308
+      "version": "7.16.7",
309
+      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz",
310
+      "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==",
311
+      "dev": true,
312
+      "peer": true,
313
+      "dependencies": {
314
+        "@babel/types": "^7.16.7"
315
+      },
316
+      "engines": {
317
+        "node": ">=6.9.0"
318
+      }
319
+    },
320
+    "node_modules/@babel/helper-validator-identifier": {
321
+      "version": "7.16.7",
322
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
323
+      "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==",
324
+      "dev": true,
325
+      "peer": true,
326
+      "engines": {
327
+        "node": ">=6.9.0"
328
+      }
329
+    },
330
+    "node_modules/@babel/helper-validator-option": {
331
+      "version": "7.16.7",
332
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz",
333
+      "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==",
334
+      "dev": true,
335
+      "peer": true,
336
+      "engines": {
337
+        "node": ">=6.9.0"
338
+      }
339
+    },
340
+    "node_modules/@babel/helpers": {
341
+      "version": "7.17.8",
342
+      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.8.tgz",
343
+      "integrity": "sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==",
344
+      "dev": true,
345
+      "peer": true,
346
+      "dependencies": {
347
+        "@babel/template": "^7.16.7",
348
+        "@babel/traverse": "^7.17.3",
349
+        "@babel/types": "^7.17.0"
350
+      },
351
+      "engines": {
352
+        "node": ">=6.9.0"
353
+      }
354
+    },
355
+    "node_modules/@babel/highlight": {
356
+      "version": "7.16.10",
357
+      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz",
358
+      "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==",
359
+      "dev": true,
360
+      "peer": true,
361
+      "dependencies": {
362
+        "@babel/helper-validator-identifier": "^7.16.7",
363
+        "chalk": "^2.0.0",
364
+        "js-tokens": "^4.0.0"
365
+      },
366
+      "engines": {
367
+        "node": ">=6.9.0"
368
+      }
369
+    },
370
+    "node_modules/@babel/highlight/node_modules/ansi-styles": {
371
+      "version": "3.2.1",
372
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
373
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
374
+      "dev": true,
375
+      "peer": true,
376
+      "dependencies": {
377
+        "color-convert": "^1.9.0"
378
+      },
379
+      "engines": {
380
+        "node": ">=4"
381
+      }
382
+    },
383
+    "node_modules/@babel/highlight/node_modules/chalk": {
384
+      "version": "2.4.2",
385
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
386
+      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
387
+      "dev": true,
388
+      "peer": true,
389
+      "dependencies": {
390
+        "ansi-styles": "^3.2.1",
391
+        "escape-string-regexp": "^1.0.5",
392
+        "supports-color": "^5.3.0"
393
+      },
394
+      "engines": {
395
+        "node": ">=4"
396
+      }
397
+    },
398
+    "node_modules/@babel/highlight/node_modules/js-tokens": {
399
+      "version": "4.0.0",
400
+      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
401
+      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
402
+      "dev": true,
403
+      "peer": true
404
+    },
405
+    "node_modules/@babel/highlight/node_modules/supports-color": {
406
+      "version": "5.5.0",
407
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
408
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
409
+      "dev": true,
410
+      "peer": true,
411
+      "dependencies": {
412
+        "has-flag": "^3.0.0"
413
+      },
414
+      "engines": {
415
+        "node": ">=4"
416
+      }
417
+    },
418
+    "node_modules/@babel/parser": {
419
+      "version": "7.17.8",
420
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz",
421
+      "integrity": "sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==",
422
+      "dev": true,
423
+      "peer": true,
424
+      "bin": {
425
+        "parser": "bin/babel-parser.js"
426
+      },
427
+      "engines": {
428
+        "node": ">=6.0.0"
429
+      }
430
+    },
431
+    "node_modules/@babel/template": {
432
+      "version": "7.16.7",
433
+      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz",
434
+      "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==",
435
+      "dev": true,
436
+      "peer": true,
437
+      "dependencies": {
438
+        "@babel/code-frame": "^7.16.7",
439
+        "@babel/parser": "^7.16.7",
440
+        "@babel/types": "^7.16.7"
441
+      },
442
+      "engines": {
443
+        "node": ">=6.9.0"
444
+      }
445
+    },
446
+    "node_modules/@babel/traverse": {
447
+      "version": "7.17.3",
448
+      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz",
449
+      "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==",
450
+      "dev": true,
451
+      "peer": true,
452
+      "dependencies": {
453
+        "@babel/code-frame": "^7.16.7",
454
+        "@babel/generator": "^7.17.3",
455
+        "@babel/helper-environment-visitor": "^7.16.7",
456
+        "@babel/helper-function-name": "^7.16.7",
457
+        "@babel/helper-hoist-variables": "^7.16.7",
458
+        "@babel/helper-split-export-declaration": "^7.16.7",
459
+        "@babel/parser": "^7.17.3",
460
+        "@babel/types": "^7.17.0",
461
+        "debug": "^4.1.0",
462
+        "globals": "^11.1.0"
463
+      },
464
+      "engines": {
465
+        "node": ">=6.9.0"
466
+      }
467
+    },
468
+    "node_modules/@babel/traverse/node_modules/debug": {
469
+      "version": "4.3.4",
470
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
471
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
472
+      "dev": true,
473
+      "peer": true,
474
+      "dependencies": {
475
+        "ms": "2.1.2"
476
+      },
477
+      "engines": {
478
+        "node": ">=6.0"
479
+      },
480
+      "peerDependenciesMeta": {
481
+        "supports-color": {
482
+          "optional": true
483
+        }
484
+      }
485
+    },
486
+    "node_modules/@babel/traverse/node_modules/globals": {
487
+      "version": "11.12.0",
488
+      "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
489
+      "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
490
+      "dev": true,
491
+      "peer": true,
492
+      "engines": {
493
+        "node": ">=4"
494
+      }
495
+    },
496
+    "node_modules/@babel/traverse/node_modules/ms": {
497
+      "version": "2.1.2",
498
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
499
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
500
+      "dev": true,
501
+      "peer": true
502
+    },
503
+    "node_modules/@babel/types": {
504
+      "version": "7.17.0",
505
+      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz",
506
+      "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==",
507
+      "dev": true,
508
+      "peer": true,
509
+      "dependencies": {
510
+        "@babel/helper-validator-identifier": "^7.16.7",
511
+        "to-fast-properties": "^2.0.0"
512
+      },
513
+      "engines": {
514
+        "node": ">=6.9.0"
515
+      }
516
+    },
517
+    "node_modules/@babel/types/node_modules/to-fast-properties": {
518
+      "version": "2.0.0",
519
+      "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
520
+      "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
521
+      "dev": true,
522
+      "peer": true,
523
+      "engines": {
524
+        "node": ">=4"
525
+      }
526
+    },
527
+    "node_modules/@jridgewell/resolve-uri": {
528
+      "version": "3.0.5",
529
+      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz",
530
+      "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==",
531
+      "dev": true,
532
+      "engines": {
533
+        "node": ">=6.0.0"
534
+      }
535
+    },
536
+    "node_modules/@jridgewell/sourcemap-codec": {
537
+      "version": "1.4.11",
538
+      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz",
539
+      "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==",
540
+      "dev": true
541
+    },
542
+    "node_modules/@jridgewell/trace-mapping": {
543
+      "version": "0.3.4",
544
+      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz",
545
+      "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==",
546
+      "dev": true,
547
+      "dependencies": {
548
+        "@jridgewell/resolve-uri": "^3.0.3",
549
+        "@jridgewell/sourcemap-codec": "^1.4.10"
550
+      }
551
+    },
552
+    "node_modules/@nicolo-ribaudo/chokidar-2": {
553
+      "version": "2.1.8-no-fsevents.3",
554
+      "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz",
555
+      "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==",
556
+      "dev": true,
557
+      "optional": true
558
+    },
559
+    "node_modules/ansi-regex": {
560
+      "version": "2.1.1",
561
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
562
+      "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
563
+      "dev": true,
564
+      "engines": {
565
+        "node": ">=0.10.0"
566
+      }
567
+    },
568
+    "node_modules/ansi-styles": {
569
+      "version": "2.2.1",
570
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
571
+      "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
572
+      "dev": true,
573
+      "engines": {
574
+        "node": ">=0.10.0"
575
+      }
576
+    },
577
+    "node_modules/anymatch": {
578
+      "version": "3.1.2",
579
+      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
580
+      "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
581
+      "dev": true,
582
+      "optional": true,
583
+      "dependencies": {
584
+        "normalize-path": "^3.0.0",
585
+        "picomatch": "^2.0.4"
586
+      },
587
+      "engines": {
588
+        "node": ">= 8"
589
+      }
590
+    },
591
+    "node_modules/babel-code-frame": {
592
+      "version": "6.26.0",
593
+      "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
594
+      "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
595
+      "dev": true,
596
+      "dependencies": {
597
+        "chalk": "^1.1.3",
598
+        "esutils": "^2.0.2",
599
+        "js-tokens": "^3.0.2"
600
+      }
601
+    },
602
+    "node_modules/babel-core": {
603
+      "version": "6.26.3",
604
+      "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz",
605
+      "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==",
606
+      "dev": true,
607
+      "dependencies": {
608
+        "babel-code-frame": "^6.26.0",
609
+        "babel-generator": "^6.26.0",
610
+        "babel-helpers": "^6.24.1",
611
+        "babel-messages": "^6.23.0",
612
+        "babel-register": "^6.26.0",
613
+        "babel-runtime": "^6.26.0",
614
+        "babel-template": "^6.26.0",
615
+        "babel-traverse": "^6.26.0",
616
+        "babel-types": "^6.26.0",
617
+        "babylon": "^6.18.0",
618
+        "convert-source-map": "^1.5.1",
619
+        "debug": "^2.6.9",
620
+        "json5": "^0.5.1",
621
+        "lodash": "^4.17.4",
622
+        "minimatch": "^3.0.4",
623
+        "path-is-absolute": "^1.0.1",
624
+        "private": "^0.1.8",
625
+        "slash": "^1.0.0",
626
+        "source-map": "^0.5.7"
627
+      }
628
+    },
629
+    "node_modules/babel-generator": {
630
+      "version": "6.26.1",
631
+      "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz",
632
+      "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==",
633
+      "dev": true,
634
+      "dependencies": {
635
+        "babel-messages": "^6.23.0",
636
+        "babel-runtime": "^6.26.0",
637
+        "babel-types": "^6.26.0",
638
+        "detect-indent": "^4.0.0",
639
+        "jsesc": "^1.3.0",
640
+        "lodash": "^4.17.4",
641
+        "source-map": "^0.5.7",
642
+        "trim-right": "^1.0.1"
643
+      }
644
+    },
645
+    "node_modules/babel-helpers": {
646
+      "version": "6.24.1",
647
+      "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz",
648
+      "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=",
649
+      "dev": true,
650
+      "dependencies": {
651
+        "babel-runtime": "^6.22.0",
652
+        "babel-template": "^6.24.1"
653
+      }
654
+    },
655
+    "node_modules/babel-messages": {
656
+      "version": "6.23.0",
657
+      "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
658
+      "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
659
+      "dev": true,
660
+      "dependencies": {
661
+        "babel-runtime": "^6.22.0"
662
+      }
663
+    },
664
+    "node_modules/babel-register": {
665
+      "version": "6.26.0",
666
+      "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz",
667
+      "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=",
668
+      "dev": true,
669
+      "dependencies": {
670
+        "babel-core": "^6.26.0",
671
+        "babel-runtime": "^6.26.0",
672
+        "core-js": "^2.5.0",
673
+        "home-or-tmp": "^2.0.0",
674
+        "lodash": "^4.17.4",
675
+        "mkdirp": "^0.5.1",
676
+        "source-map-support": "^0.4.15"
677
+      }
678
+    },
679
+    "node_modules/babel-runtime": {
680
+      "version": "6.26.0",
681
+      "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
682
+      "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
683
+      "dev": true,
684
+      "dependencies": {
685
+        "core-js": "^2.4.0",
686
+        "regenerator-runtime": "^0.11.0"
687
+      }
688
+    },
689
+    "node_modules/babel-template": {
690
+      "version": "6.26.0",
691
+      "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
692
+      "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
693
+      "dev": true,
694
+      "dependencies": {
695
+        "babel-runtime": "^6.26.0",
696
+        "babel-traverse": "^6.26.0",
697
+        "babel-types": "^6.26.0",
698
+        "babylon": "^6.18.0",
699
+        "lodash": "^4.17.4"
700
+      }
701
+    },
702
+    "node_modules/babel-traverse": {
703
+      "version": "6.26.0",
704
+      "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
705
+      "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
706
+      "dev": true,
707
+      "dependencies": {
708
+        "babel-code-frame": "^6.26.0",
709
+        "babel-messages": "^6.23.0",
710
+        "babel-runtime": "^6.26.0",
711
+        "babel-types": "^6.26.0",
712
+        "babylon": "^6.18.0",
713
+        "debug": "^2.6.8",
714
+        "globals": "^9.18.0",
715
+        "invariant": "^2.2.2",
716
+        "lodash": "^4.17.4"
717
+      }
718
+    },
719
+    "node_modules/babel-types": {
720
+      "version": "6.26.0",
721
+      "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
722
+      "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
723
+      "dev": true,
724
+      "dependencies": {
725
+        "babel-runtime": "^6.26.0",
726
+        "esutils": "^2.0.2",
727
+        "lodash": "^4.17.4",
728
+        "to-fast-properties": "^1.0.3"
729
+      }
730
+    },
731
+    "node_modules/babylon": {
732
+      "version": "6.18.0",
733
+      "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
734
+      "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
735
+      "dev": true,
736
+      "bin": {
737
+        "babylon": "bin/babylon.js"
738
+      }
739
+    },
740
+    "node_modules/balanced-match": {
741
+      "version": "1.0.2",
742
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
743
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
744
+      "dev": true
745
+    },
746
+    "node_modules/binary-extensions": {
747
+      "version": "2.2.0",
748
+      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
749
+      "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
750
+      "dev": true,
751
+      "optional": true,
752
+      "engines": {
753
+        "node": ">=8"
754
+      }
755
+    },
756
+    "node_modules/brace-expansion": {
757
+      "version": "1.1.11",
758
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
759
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
760
+      "dev": true,
761
+      "dependencies": {
762
+        "balanced-match": "^1.0.0",
763
+        "concat-map": "0.0.1"
764
+      }
765
+    },
766
+    "node_modules/braces": {
767
+      "version": "3.0.2",
768
+      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
769
+      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
770
+      "dev": true,
771
+      "optional": true,
772
+      "dependencies": {
773
+        "fill-range": "^7.0.1"
774
+      },
775
+      "engines": {
776
+        "node": ">=8"
777
+      }
778
+    },
779
+    "node_modules/browserslist": {
780
+      "version": "4.20.2",
781
+      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz",
782
+      "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==",
783
+      "dev": true,
784
+      "funding": [
785
+        {
786
+          "type": "opencollective",
787
+          "url": "https://opencollective.com/browserslist"
788
+        },
789
+        {
790
+          "type": "tidelift",
791
+          "url": "https://tidelift.com/funding/github/npm/browserslist"
792
+        }
793
+      ],
794
+      "peer": true,
795
+      "dependencies": {
796
+        "caniuse-lite": "^1.0.30001317",
797
+        "electron-to-chromium": "^1.4.84",
798
+        "escalade": "^3.1.1",
799
+        "node-releases": "^2.0.2",
800
+        "picocolors": "^1.0.0"
801
+      },
802
+      "bin": {
803
+        "browserslist": "cli.js"
804
+      },
805
+      "engines": {
806
+        "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
807
+      }
808
+    },
809
+    "node_modules/caniuse-lite": {
810
+      "version": "1.0.30001323",
811
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001323.tgz",
812
+      "integrity": "sha512-e4BF2RlCVELKx8+RmklSEIVub1TWrmdhvA5kEUueummz1XyySW0DVk+3x9HyhU9MuWTa2BhqLgEuEmUwASAdCA==",
813
+      "dev": true,
814
+      "funding": [
815
+        {
816
+          "type": "opencollective",
817
+          "url": "https://opencollective.com/browserslist"
818
+        },
819
+        {
820
+          "type": "tidelift",
821
+          "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
822
+        }
823
+      ],
824
+      "peer": true
825
+    },
826
+    "node_modules/chalk": {
827
+      "version": "1.1.3",
828
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
829
+      "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
830
+      "dev": true,
831
+      "dependencies": {
832
+        "ansi-styles": "^2.2.1",
833
+        "escape-string-regexp": "^1.0.2",
834
+        "has-ansi": "^2.0.0",
835
+        "strip-ansi": "^3.0.0",
836
+        "supports-color": "^2.0.0"
837
+      },
838
+      "engines": {
839
+        "node": ">=0.10.0"
840
+      }
841
+    },
842
+    "node_modules/chokidar": {
843
+      "version": "3.5.3",
844
+      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
845
+      "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
846
+      "dev": true,
847
+      "funding": [
848
+        {
849
+          "type": "individual",
850
+          "url": "https://paulmillr.com/funding/"
851
+        }
852
+      ],
853
+      "optional": true,
854
+      "dependencies": {
855
+        "anymatch": "~3.1.2",
856
+        "braces": "~3.0.2",
857
+        "glob-parent": "~5.1.2",
858
+        "is-binary-path": "~2.1.0",
859
+        "is-glob": "~4.0.1",
860
+        "normalize-path": "~3.0.0",
861
+        "readdirp": "~3.6.0"
862
+      },
863
+      "engines": {
864
+        "node": ">= 8.10.0"
865
+      },
866
+      "optionalDependencies": {
867
+        "fsevents": "~2.3.2"
868
+      }
869
+    },
870
+    "node_modules/color-convert": {
871
+      "version": "1.9.3",
872
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
873
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
874
+      "dev": true,
875
+      "peer": true,
876
+      "dependencies": {
877
+        "color-name": "1.1.3"
878
+      }
879
+    },
880
+    "node_modules/color-name": {
881
+      "version": "1.1.3",
882
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
883
+      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
884
+      "dev": true,
885
+      "peer": true
886
+    },
887
+    "node_modules/commander": {
888
+      "version": "4.1.1",
889
+      "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
890
+      "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
891
+      "dev": true,
892
+      "engines": {
893
+        "node": ">= 6"
894
+      }
895
+    },
896
+    "node_modules/concat-map": {
897
+      "version": "0.0.1",
898
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
899
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
900
+      "dev": true
901
+    },
902
+    "node_modules/convert-source-map": {
903
+      "version": "1.8.0",
904
+      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
905
+      "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
906
+      "dev": true,
907
+      "dependencies": {
908
+        "safe-buffer": "~5.1.1"
909
+      }
910
+    },
911
+    "node_modules/core-js": {
912
+      "version": "2.6.12",
913
+      "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
914
+      "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
915
+      "deprecated": "core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.",
916
+      "dev": true,
917
+      "hasInstallScript": true
918
+    },
919
+    "node_modules/debug": {
920
+      "version": "2.6.9",
921
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
922
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
923
+      "dev": true,
924
+      "dependencies": {
925
+        "ms": "2.0.0"
926
+      }
927
+    },
928
+    "node_modules/detect-indent": {
929
+      "version": "4.0.0",
930
+      "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
931
+      "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
932
+      "dev": true,
933
+      "dependencies": {
934
+        "repeating": "^2.0.0"
935
+      },
936
+      "engines": {
937
+        "node": ">=0.10.0"
938
+      }
939
+    },
940
+    "node_modules/electron-to-chromium": {
941
+      "version": "1.4.103",
942
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.103.tgz",
943
+      "integrity": "sha512-c/uKWR1Z/W30Wy/sx3dkZoj4BijbXX85QKWu9jJfjho3LBAXNEGAEW3oWiGb+dotA6C6BzCTxL2/aLes7jlUeg==",
944
+      "dev": true,
945
+      "peer": true
946
+    },
947
+    "node_modules/escalade": {
948
+      "version": "3.1.1",
949
+      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
950
+      "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
951
+      "dev": true,
952
+      "peer": true,
953
+      "engines": {
954
+        "node": ">=6"
955
+      }
956
+    },
957
+    "node_modules/escape-string-regexp": {
958
+      "version": "1.0.5",
959
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
960
+      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
961
+      "dev": true,
962
+      "engines": {
963
+        "node": ">=0.8.0"
964
+      }
965
+    },
966
+    "node_modules/esutils": {
967
+      "version": "2.0.3",
968
+      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
969
+      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
970
+      "dev": true,
971
+      "engines": {
972
+        "node": ">=0.10.0"
973
+      }
974
+    },
975
+    "node_modules/fill-range": {
976
+      "version": "7.0.1",
977
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
978
+      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
979
+      "dev": true,
980
+      "optional": true,
981
+      "dependencies": {
982
+        "to-regex-range": "^5.0.1"
983
+      },
984
+      "engines": {
985
+        "node": ">=8"
986
+      }
987
+    },
988
+    "node_modules/fs-readdir-recursive": {
989
+      "version": "1.1.0",
990
+      "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz",
991
+      "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==",
992
+      "dev": true
993
+    },
994
+    "node_modules/fs.realpath": {
995
+      "version": "1.0.0",
996
+      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
997
+      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
998
+      "dev": true
999
+    },
1000
+    "node_modules/fsevents": {
1001
+      "version": "2.3.2",
1002
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
1003
+      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
1004
+      "dev": true,
1005
+      "hasInstallScript": true,
1006
+      "optional": true,
1007
+      "os": [
1008
+        "darwin"
1009
+      ],
1010
+      "engines": {
1011
+        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
1012
+      }
1013
+    },
1014
+    "node_modules/gensync": {
1015
+      "version": "1.0.0-beta.2",
1016
+      "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
1017
+      "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
1018
+      "dev": true,
1019
+      "peer": true,
1020
+      "engines": {
1021
+        "node": ">=6.9.0"
1022
+      }
1023
+    },
1024
+    "node_modules/glob": {
1025
+      "version": "7.2.0",
1026
+      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
1027
+      "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
1028
+      "dev": true,
1029
+      "dependencies": {
1030
+        "fs.realpath": "^1.0.0",
1031
+        "inflight": "^1.0.4",
1032
+        "inherits": "2",
1033
+        "minimatch": "^3.0.4",
1034
+        "once": "^1.3.0",
1035
+        "path-is-absolute": "^1.0.0"
1036
+      },
1037
+      "engines": {
1038
+        "node": "*"
1039
+      },
1040
+      "funding": {
1041
+        "url": "https://github.com/sponsors/isaacs"
1042
+      }
1043
+    },
1044
+    "node_modules/glob-parent": {
1045
+      "version": "5.1.2",
1046
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1047
+      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1048
+      "dev": true,
1049
+      "optional": true,
1050
+      "dependencies": {
1051
+        "is-glob": "^4.0.1"
1052
+      },
1053
+      "engines": {
1054
+        "node": ">= 6"
1055
+      }
1056
+    },
1057
+    "node_modules/globals": {
1058
+      "version": "9.18.0",
1059
+      "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
1060
+      "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
1061
+      "dev": true,
1062
+      "engines": {
1063
+        "node": ">=0.10.0"
1064
+      }
1065
+    },
1066
+    "node_modules/has-ansi": {
1067
+      "version": "2.0.0",
1068
+      "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
1069
+      "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
1070
+      "dev": true,
1071
+      "dependencies": {
1072
+        "ansi-regex": "^2.0.0"
1073
+      },
1074
+      "engines": {
1075
+        "node": ">=0.10.0"
1076
+      }
1077
+    },
1078
+    "node_modules/has-flag": {
1079
+      "version": "3.0.0",
1080
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
1081
+      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
1082
+      "dev": true,
1083
+      "peer": true,
1084
+      "engines": {
1085
+        "node": ">=4"
1086
+      }
1087
+    },
1088
+    "node_modules/home-or-tmp": {
1089
+      "version": "2.0.0",
1090
+      "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz",
1091
+      "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=",
1092
+      "dev": true,
1093
+      "dependencies": {
1094
+        "os-homedir": "^1.0.0",
1095
+        "os-tmpdir": "^1.0.1"
1096
+      },
1097
+      "engines": {
1098
+        "node": ">=0.10.0"
1099
+      }
1100
+    },
1101
+    "node_modules/inflight": {
1102
+      "version": "1.0.6",
1103
+      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1104
+      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
1105
+      "dev": true,
1106
+      "dependencies": {
1107
+        "once": "^1.3.0",
1108
+        "wrappy": "1"
1109
+      }
1110
+    },
1111
+    "node_modules/inherits": {
1112
+      "version": "2.0.4",
1113
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1114
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
1115
+      "dev": true
1116
+    },
1117
+    "node_modules/invariant": {
1118
+      "version": "2.2.4",
1119
+      "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
1120
+      "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
1121
+      "dev": true,
1122
+      "dependencies": {
1123
+        "loose-envify": "^1.0.0"
1124
+      }
1125
+    },
1126
+    "node_modules/is-binary-path": {
1127
+      "version": "2.1.0",
1128
+      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
1129
+      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
1130
+      "dev": true,
1131
+      "optional": true,
1132
+      "dependencies": {
1133
+        "binary-extensions": "^2.0.0"
1134
+      },
1135
+      "engines": {
1136
+        "node": ">=8"
1137
+      }
1138
+    },
1139
+    "node_modules/is-extglob": {
1140
+      "version": "2.1.1",
1141
+      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1142
+      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
1143
+      "dev": true,
1144
+      "optional": true,
1145
+      "engines": {
1146
+        "node": ">=0.10.0"
1147
+      }
1148
+    },
1149
+    "node_modules/is-finite": {
1150
+      "version": "1.1.0",
1151
+      "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz",
1152
+      "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==",
1153
+      "dev": true,
1154
+      "engines": {
1155
+        "node": ">=0.10.0"
1156
+      },
1157
+      "funding": {
1158
+        "url": "https://github.com/sponsors/sindresorhus"
1159
+      }
1160
+    },
1161
+    "node_modules/is-glob": {
1162
+      "version": "4.0.3",
1163
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
1164
+      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
1165
+      "dev": true,
1166
+      "optional": true,
1167
+      "dependencies": {
1168
+        "is-extglob": "^2.1.1"
1169
+      },
1170
+      "engines": {
1171
+        "node": ">=0.10.0"
1172
+      }
1173
+    },
1174
+    "node_modules/is-number": {
1175
+      "version": "7.0.0",
1176
+      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
1177
+      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
1178
+      "dev": true,
1179
+      "optional": true,
1180
+      "engines": {
1181
+        "node": ">=0.12.0"
1182
+      }
1183
+    },
1184
+    "node_modules/js-tokens": {
1185
+      "version": "3.0.2",
1186
+      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
1187
+      "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
1188
+      "dev": true
1189
+    },
1190
+    "node_modules/jsesc": {
1191
+      "version": "1.3.0",
1192
+      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
1193
+      "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
1194
+      "dev": true,
1195
+      "bin": {
1196
+        "jsesc": "bin/jsesc"
1197
+      }
1198
+    },
1199
+    "node_modules/json5": {
1200
+      "version": "0.5.1",
1201
+      "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
1202
+      "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
1203
+      "dev": true,
1204
+      "bin": {
1205
+        "json5": "lib/cli.js"
1206
+      }
1207
+    },
1208
+    "node_modules/lodash": {
1209
+      "version": "4.17.21",
1210
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
1211
+      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
1212
+      "dev": true
1213
+    },
1214
+    "node_modules/loose-envify": {
1215
+      "version": "1.4.0",
1216
+      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
1217
+      "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
1218
+      "dev": true,
1219
+      "dependencies": {
1220
+        "js-tokens": "^3.0.0 || ^4.0.0"
1221
+      },
1222
+      "bin": {
1223
+        "loose-envify": "cli.js"
1224
+      }
1225
+    },
1226
+    "node_modules/make-dir": {
1227
+      "version": "2.1.0",
1228
+      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
1229
+      "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
1230
+      "dev": true,
1231
+      "dependencies": {
1232
+        "pify": "^4.0.1",
1233
+        "semver": "^5.6.0"
1234
+      },
1235
+      "engines": {
1236
+        "node": ">=6"
1237
+      }
1238
+    },
1239
+    "node_modules/make-dir/node_modules/semver": {
1240
+      "version": "5.7.1",
1241
+      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
1242
+      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
1243
+      "dev": true,
1244
+      "bin": {
1245
+        "semver": "bin/semver"
1246
+      }
1247
+    },
1248
+    "node_modules/minimatch": {
1249
+      "version": "3.1.2",
1250
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
1251
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
1252
+      "dev": true,
1253
+      "dependencies": {
1254
+        "brace-expansion": "^1.1.7"
1255
+      },
1256
+      "engines": {
1257
+        "node": "*"
1258
+      }
1259
+    },
1260
+    "node_modules/minimist": {
1261
+      "version": "1.2.6",
1262
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
1263
+      "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
1264
+      "dev": true
1265
+    },
1266
+    "node_modules/mkdirp": {
1267
+      "version": "0.5.6",
1268
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
1269
+      "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
1270
+      "dev": true,
1271
+      "dependencies": {
1272
+        "minimist": "^1.2.6"
1273
+      },
1274
+      "bin": {
1275
+        "mkdirp": "bin/cmd.js"
1276
+      }
1277
+    },
1278
+    "node_modules/ms": {
1279
+      "version": "2.0.0",
1280
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1281
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
1282
+      "dev": true
1283
+    },
1284
+    "node_modules/node-releases": {
1285
+      "version": "2.0.2",
1286
+      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz",
1287
+      "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==",
1288
+      "dev": true,
1289
+      "peer": true
1290
+    },
1291
+    "node_modules/normalize-path": {
1292
+      "version": "3.0.0",
1293
+      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1294
+      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
1295
+      "dev": true,
1296
+      "optional": true,
1297
+      "engines": {
1298
+        "node": ">=0.10.0"
1299
+      }
1300
+    },
1301
+    "node_modules/once": {
1302
+      "version": "1.4.0",
1303
+      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1304
+      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
1305
+      "dev": true,
1306
+      "dependencies": {
1307
+        "wrappy": "1"
1308
+      }
1309
+    },
1310
+    "node_modules/os-homedir": {
1311
+      "version": "1.0.2",
1312
+      "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
1313
+      "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
1314
+      "dev": true,
1315
+      "engines": {
1316
+        "node": ">=0.10.0"
1317
+      }
1318
+    },
1319
+    "node_modules/os-tmpdir": {
1320
+      "version": "1.0.2",
1321
+      "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
1322
+      "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
1323
+      "dev": true,
1324
+      "engines": {
1325
+        "node": ">=0.10.0"
1326
+      }
1327
+    },
1328
+    "node_modules/path-is-absolute": {
1329
+      "version": "1.0.1",
1330
+      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1331
+      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
1332
+      "dev": true,
1333
+      "engines": {
1334
+        "node": ">=0.10.0"
1335
+      }
1336
+    },
1337
+    "node_modules/picocolors": {
1338
+      "version": "1.0.0",
1339
+      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
1340
+      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
1341
+      "dev": true,
1342
+      "peer": true
1343
+    },
1344
+    "node_modules/picomatch": {
1345
+      "version": "2.3.1",
1346
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
1347
+      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
1348
+      "dev": true,
1349
+      "optional": true,
1350
+      "engines": {
1351
+        "node": ">=8.6"
1352
+      },
1353
+      "funding": {
1354
+        "url": "https://github.com/sponsors/jonschlinkert"
1355
+      }
1356
+    },
1357
+    "node_modules/pify": {
1358
+      "version": "4.0.1",
1359
+      "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
1360
+      "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
1361
+      "dev": true,
1362
+      "engines": {
1363
+        "node": ">=6"
1364
+      }
1365
+    },
1366
+    "node_modules/private": {
1367
+      "version": "0.1.8",
1368
+      "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
1369
+      "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
1370
+      "dev": true,
1371
+      "engines": {
1372
+        "node": ">= 0.6"
1373
+      }
1374
+    },
1375
+    "node_modules/readdirp": {
1376
+      "version": "3.6.0",
1377
+      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
1378
+      "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
1379
+      "dev": true,
1380
+      "optional": true,
1381
+      "dependencies": {
1382
+        "picomatch": "^2.2.1"
1383
+      },
1384
+      "engines": {
1385
+        "node": ">=8.10.0"
1386
+      }
1387
+    },
1388
+    "node_modules/regenerator-runtime": {
1389
+      "version": "0.11.1",
1390
+      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
1391
+      "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
1392
+      "dev": true
1393
+    },
1394
+    "node_modules/repeating": {
1395
+      "version": "2.0.1",
1396
+      "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
1397
+      "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
1398
+      "dev": true,
1399
+      "dependencies": {
1400
+        "is-finite": "^1.0.0"
1401
+      },
1402
+      "engines": {
1403
+        "node": ">=0.10.0"
1404
+      }
1405
+    },
1406
+    "node_modules/safe-buffer": {
1407
+      "version": "5.1.2",
1408
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1409
+      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
1410
+      "dev": true
1411
+    },
1412
+    "node_modules/semver": {
1413
+      "version": "6.3.0",
1414
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
1415
+      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
1416
+      "dev": true,
1417
+      "peer": true,
1418
+      "bin": {
1419
+        "semver": "bin/semver.js"
1420
+      }
1421
+    },
1422
+    "node_modules/slash": {
1423
+      "version": "1.0.0",
1424
+      "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
1425
+      "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
1426
+      "dev": true,
1427
+      "engines": {
1428
+        "node": ">=0.10.0"
1429
+      }
1430
+    },
1431
+    "node_modules/source-map": {
1432
+      "version": "0.5.7",
1433
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
1434
+      "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
1435
+      "dev": true,
1436
+      "engines": {
1437
+        "node": ">=0.10.0"
1438
+      }
1439
+    },
1440
+    "node_modules/source-map-support": {
1441
+      "version": "0.4.18",
1442
+      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
1443
+      "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
1444
+      "dev": true,
1445
+      "dependencies": {
1446
+        "source-map": "^0.5.6"
1447
+      }
1448
+    },
1449
+    "node_modules/strip-ansi": {
1450
+      "version": "3.0.1",
1451
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
1452
+      "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
1453
+      "dev": true,
1454
+      "dependencies": {
1455
+        "ansi-regex": "^2.0.0"
1456
+      },
1457
+      "engines": {
1458
+        "node": ">=0.10.0"
1459
+      }
1460
+    },
1461
+    "node_modules/supports-color": {
1462
+      "version": "2.0.0",
1463
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
1464
+      "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
1465
+      "dev": true,
1466
+      "engines": {
1467
+        "node": ">=0.8.0"
1468
+      }
1469
+    },
1470
+    "node_modules/to-fast-properties": {
1471
+      "version": "1.0.3",
1472
+      "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
1473
+      "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
1474
+      "dev": true,
1475
+      "engines": {
1476
+        "node": ">=0.10.0"
1477
+      }
1478
+    },
1479
+    "node_modules/to-regex-range": {
1480
+      "version": "5.0.1",
1481
+      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
1482
+      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
1483
+      "dev": true,
1484
+      "optional": true,
1485
+      "dependencies": {
1486
+        "is-number": "^7.0.0"
1487
+      },
1488
+      "engines": {
1489
+        "node": ">=8.0"
1490
+      }
1491
+    },
1492
+    "node_modules/trim-right": {
1493
+      "version": "1.0.1",
1494
+      "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
1495
+      "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
1496
+      "dev": true,
1497
+      "engines": {
1498
+        "node": ">=0.10.0"
1499
+      }
1500
+    },
1501
+    "node_modules/wrappy": {
1502
+      "version": "1.0.2",
1503
+      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1504
+      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
1505
+      "dev": true
1506
+    }
1507
+  },
1508
+  "dependencies": {
1509
+    "@ampproject/remapping": {
1510
+      "version": "2.1.2",
1511
+      "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz",
1512
+      "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==",
1513
+      "dev": true,
1514
+      "peer": true,
1515
+      "requires": {
1516
+        "@jridgewell/trace-mapping": "^0.3.0"
1517
+      }
1518
+    },
1519
+    "@babel/cli": {
1520
+      "version": "7.17.6",
1521
+      "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.17.6.tgz",
1522
+      "integrity": "sha512-l4w608nsDNlxZhiJ5tE3DbNmr61fIKMZ6fTBo171VEFuFMIYuJ3mHRhTLEkKKyvx2Mizkkv/0a8OJOnZqkKYNA==",
1523
+      "dev": true,
1524
+      "requires": {
1525
+        "@jridgewell/trace-mapping": "^0.3.4",
1526
+        "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3",
1527
+        "chokidar": "^3.4.0",
1528
+        "commander": "^4.0.1",
1529
+        "convert-source-map": "^1.1.0",
1530
+        "fs-readdir-recursive": "^1.1.0",
1531
+        "glob": "^7.0.0",
1532
+        "make-dir": "^2.1.0",
1533
+        "slash": "^2.0.0",
1534
+        "source-map": "^0.5.0"
1535
+      },
1536
+      "dependencies": {
1537
+        "slash": {
1538
+          "version": "2.0.0",
1539
+          "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
1540
+          "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
1541
+          "dev": true
1542
+        }
1543
+      }
1544
+    },
1545
+    "@babel/code-frame": {
1546
+      "version": "7.16.7",
1547
+      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz",
1548
+      "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==",
1549
+      "dev": true,
1550
+      "peer": true,
1551
+      "requires": {
1552
+        "@babel/highlight": "^7.16.7"
1553
+      }
1554
+    },
1555
+    "@babel/compat-data": {
1556
+      "version": "7.17.7",
1557
+      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz",
1558
+      "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==",
1559
+      "dev": true,
1560
+      "peer": true
1561
+    },
1562
+    "@babel/core": {
1563
+      "version": "7.17.8",
1564
+      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.8.tgz",
1565
+      "integrity": "sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==",
1566
+      "dev": true,
1567
+      "peer": true,
1568
+      "requires": {
1569
+        "@ampproject/remapping": "^2.1.0",
1570
+        "@babel/code-frame": "^7.16.7",
1571
+        "@babel/generator": "^7.17.7",
1572
+        "@babel/helper-compilation-targets": "^7.17.7",
1573
+        "@babel/helper-module-transforms": "^7.17.7",
1574
+        "@babel/helpers": "^7.17.8",
1575
+        "@babel/parser": "^7.17.8",
1576
+        "@babel/template": "^7.16.7",
1577
+        "@babel/traverse": "^7.17.3",
1578
+        "@babel/types": "^7.17.0",
1579
+        "convert-source-map": "^1.7.0",
1580
+        "debug": "^4.1.0",
1581
+        "gensync": "^1.0.0-beta.2",
1582
+        "json5": "^2.1.2",
1583
+        "semver": "^6.3.0"
1584
+      },
1585
+      "dependencies": {
1586
+        "debug": {
1587
+          "version": "4.3.4",
1588
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
1589
+          "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
1590
+          "dev": true,
1591
+          "peer": true,
1592
+          "requires": {
1593
+            "ms": "2.1.2"
1594
+          }
1595
+        },
1596
+        "json5": {
1597
+          "version": "2.2.1",
1598
+          "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
1599
+          "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
1600
+          "dev": true,
1601
+          "peer": true
1602
+        },
1603
+        "ms": {
1604
+          "version": "2.1.2",
1605
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1606
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
1607
+          "dev": true,
1608
+          "peer": true
1609
+        }
1610
+      }
1611
+    },
1612
+    "@babel/generator": {
1613
+      "version": "7.17.7",
1614
+      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz",
1615
+      "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==",
1616
+      "dev": true,
1617
+      "peer": true,
1618
+      "requires": {
1619
+        "@babel/types": "^7.17.0",
1620
+        "jsesc": "^2.5.1",
1621
+        "source-map": "^0.5.0"
1622
+      },
1623
+      "dependencies": {
1624
+        "jsesc": {
1625
+          "version": "2.5.2",
1626
+          "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
1627
+          "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
1628
+          "dev": true,
1629
+          "peer": true
1630
+        }
1631
+      }
1632
+    },
1633
+    "@babel/helper-compilation-targets": {
1634
+      "version": "7.17.7",
1635
+      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz",
1636
+      "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==",
1637
+      "dev": true,
1638
+      "peer": true,
1639
+      "requires": {
1640
+        "@babel/compat-data": "^7.17.7",
1641
+        "@babel/helper-validator-option": "^7.16.7",
1642
+        "browserslist": "^4.17.5",
1643
+        "semver": "^6.3.0"
1644
+      }
1645
+    },
1646
+    "@babel/helper-environment-visitor": {
1647
+      "version": "7.16.7",
1648
+      "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz",
1649
+      "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==",
1650
+      "dev": true,
1651
+      "peer": true,
1652
+      "requires": {
1653
+        "@babel/types": "^7.16.7"
1654
+      }
1655
+    },
1656
+    "@babel/helper-function-name": {
1657
+      "version": "7.16.7",
1658
+      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz",
1659
+      "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==",
1660
+      "dev": true,
1661
+      "peer": true,
1662
+      "requires": {
1663
+        "@babel/helper-get-function-arity": "^7.16.7",
1664
+        "@babel/template": "^7.16.7",
1665
+        "@babel/types": "^7.16.7"
1666
+      }
1667
+    },
1668
+    "@babel/helper-get-function-arity": {
1669
+      "version": "7.16.7",
1670
+      "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz",
1671
+      "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==",
1672
+      "dev": true,
1673
+      "peer": true,
1674
+      "requires": {
1675
+        "@babel/types": "^7.16.7"
1676
+      }
1677
+    },
1678
+    "@babel/helper-hoist-variables": {
1679
+      "version": "7.16.7",
1680
+      "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz",
1681
+      "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==",
1682
+      "dev": true,
1683
+      "peer": true,
1684
+      "requires": {
1685
+        "@babel/types": "^7.16.7"
1686
+      }
1687
+    },
1688
+    "@babel/helper-module-imports": {
1689
+      "version": "7.16.7",
1690
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz",
1691
+      "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==",
1692
+      "dev": true,
1693
+      "peer": true,
1694
+      "requires": {
1695
+        "@babel/types": "^7.16.7"
1696
+      }
1697
+    },
1698
+    "@babel/helper-module-transforms": {
1699
+      "version": "7.17.7",
1700
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz",
1701
+      "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==",
1702
+      "dev": true,
1703
+      "peer": true,
1704
+      "requires": {
1705
+        "@babel/helper-environment-visitor": "^7.16.7",
1706
+        "@babel/helper-module-imports": "^7.16.7",
1707
+        "@babel/helper-simple-access": "^7.17.7",
1708
+        "@babel/helper-split-export-declaration": "^7.16.7",
1709
+        "@babel/helper-validator-identifier": "^7.16.7",
1710
+        "@babel/template": "^7.16.7",
1711
+        "@babel/traverse": "^7.17.3",
1712
+        "@babel/types": "^7.17.0"
1713
+      }
1714
+    },
1715
+    "@babel/helper-simple-access": {
1716
+      "version": "7.17.7",
1717
+      "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz",
1718
+      "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==",
1719
+      "dev": true,
1720
+      "peer": true,
1721
+      "requires": {
1722
+        "@babel/types": "^7.17.0"
1723
+      }
1724
+    },
1725
+    "@babel/helper-split-export-declaration": {
1726
+      "version": "7.16.7",
1727
+      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz",
1728
+      "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==",
1729
+      "dev": true,
1730
+      "peer": true,
1731
+      "requires": {
1732
+        "@babel/types": "^7.16.7"
1733
+      }
1734
+    },
1735
+    "@babel/helper-validator-identifier": {
1736
+      "version": "7.16.7",
1737
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
1738
+      "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==",
1739
+      "dev": true,
1740
+      "peer": true
1741
+    },
1742
+    "@babel/helper-validator-option": {
1743
+      "version": "7.16.7",
1744
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz",
1745
+      "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==",
1746
+      "dev": true,
1747
+      "peer": true
1748
+    },
1749
+    "@babel/helpers": {
1750
+      "version": "7.17.8",
1751
+      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.8.tgz",
1752
+      "integrity": "sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==",
1753
+      "dev": true,
1754
+      "peer": true,
1755
+      "requires": {
1756
+        "@babel/template": "^7.16.7",
1757
+        "@babel/traverse": "^7.17.3",
1758
+        "@babel/types": "^7.17.0"
1759
+      }
1760
+    },
1761
+    "@babel/highlight": {
1762
+      "version": "7.16.10",
1763
+      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz",
1764
+      "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==",
1765
+      "dev": true,
1766
+      "peer": true,
1767
+      "requires": {
1768
+        "@babel/helper-validator-identifier": "^7.16.7",
1769
+        "chalk": "^2.0.0",
1770
+        "js-tokens": "^4.0.0"
1771
+      },
1772
+      "dependencies": {
1773
+        "ansi-styles": {
1774
+          "version": "3.2.1",
1775
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
1776
+          "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
1777
+          "dev": true,
1778
+          "peer": true,
1779
+          "requires": {
1780
+            "color-convert": "^1.9.0"
1781
+          }
1782
+        },
1783
+        "chalk": {
1784
+          "version": "2.4.2",
1785
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
1786
+          "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
1787
+          "dev": true,
1788
+          "peer": true,
1789
+          "requires": {
1790
+            "ansi-styles": "^3.2.1",
1791
+            "escape-string-regexp": "^1.0.5",
1792
+            "supports-color": "^5.3.0"
1793
+          }
1794
+        },
1795
+        "js-tokens": {
1796
+          "version": "4.0.0",
1797
+          "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
1798
+          "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
1799
+          "dev": true,
1800
+          "peer": true
1801
+        },
1802
+        "supports-color": {
1803
+          "version": "5.5.0",
1804
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1805
+          "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1806
+          "dev": true,
1807
+          "peer": true,
1808
+          "requires": {
1809
+            "has-flag": "^3.0.0"
1810
+          }
1811
+        }
1812
+      }
1813
+    },
1814
+    "@babel/parser": {
1815
+      "version": "7.17.8",
1816
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz",
1817
+      "integrity": "sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==",
1818
+      "dev": true,
1819
+      "peer": true
1820
+    },
1821
+    "@babel/template": {
1822
+      "version": "7.16.7",
1823
+      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz",
1824
+      "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==",
1825
+      "dev": true,
1826
+      "peer": true,
1827
+      "requires": {
1828
+        "@babel/code-frame": "^7.16.7",
1829
+        "@babel/parser": "^7.16.7",
1830
+        "@babel/types": "^7.16.7"
1831
+      }
1832
+    },
1833
+    "@babel/traverse": {
1834
+      "version": "7.17.3",
1835
+      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz",
1836
+      "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==",
1837
+      "dev": true,
1838
+      "peer": true,
1839
+      "requires": {
1840
+        "@babel/code-frame": "^7.16.7",
1841
+        "@babel/generator": "^7.17.3",
1842
+        "@babel/helper-environment-visitor": "^7.16.7",
1843
+        "@babel/helper-function-name": "^7.16.7",
1844
+        "@babel/helper-hoist-variables": "^7.16.7",
1845
+        "@babel/helper-split-export-declaration": "^7.16.7",
1846
+        "@babel/parser": "^7.17.3",
1847
+        "@babel/types": "^7.17.0",
1848
+        "debug": "^4.1.0",
1849
+        "globals": "^11.1.0"
1850
+      },
1851
+      "dependencies": {
1852
+        "debug": {
1853
+          "version": "4.3.4",
1854
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
1855
+          "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
1856
+          "dev": true,
1857
+          "peer": true,
1858
+          "requires": {
1859
+            "ms": "2.1.2"
1860
+          }
1861
+        },
1862
+        "globals": {
1863
+          "version": "11.12.0",
1864
+          "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
1865
+          "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
1866
+          "dev": true,
1867
+          "peer": true
1868
+        },
1869
+        "ms": {
1870
+          "version": "2.1.2",
1871
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1872
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
1873
+          "dev": true,
1874
+          "peer": true
1875
+        }
1876
+      }
1877
+    },
1878
+    "@babel/types": {
1879
+      "version": "7.17.0",
1880
+      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz",
1881
+      "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==",
1882
+      "dev": true,
1883
+      "peer": true,
1884
+      "requires": {
1885
+        "@babel/helper-validator-identifier": "^7.16.7",
1886
+        "to-fast-properties": "^2.0.0"
1887
+      },
1888
+      "dependencies": {
1889
+        "to-fast-properties": {
1890
+          "version": "2.0.0",
1891
+          "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
1892
+          "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
1893
+          "dev": true,
1894
+          "peer": true
1895
+        }
1896
+      }
1897
+    },
1898
+    "@jridgewell/resolve-uri": {
1899
+      "version": "3.0.5",
1900
+      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz",
1901
+      "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==",
1902
+      "dev": true
1903
+    },
1904
+    "@jridgewell/sourcemap-codec": {
1905
+      "version": "1.4.11",
1906
+      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz",
1907
+      "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==",
1908
+      "dev": true
1909
+    },
1910
+    "@jridgewell/trace-mapping": {
1911
+      "version": "0.3.4",
1912
+      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz",
1913
+      "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==",
1914
+      "dev": true,
1915
+      "requires": {
1916
+        "@jridgewell/resolve-uri": "^3.0.3",
1917
+        "@jridgewell/sourcemap-codec": "^1.4.10"
1918
+      }
1919
+    },
1920
+    "@nicolo-ribaudo/chokidar-2": {
1921
+      "version": "2.1.8-no-fsevents.3",
1922
+      "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz",
1923
+      "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==",
1924
+      "dev": true,
1925
+      "optional": true
1926
+    },
1927
+    "ansi-regex": {
1928
+      "version": "2.1.1",
1929
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
1930
+      "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
1931
+      "dev": true
1932
+    },
1933
+    "ansi-styles": {
1934
+      "version": "2.2.1",
1935
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
1936
+      "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
1937
+      "dev": true
1938
+    },
1939
+    "anymatch": {
1940
+      "version": "3.1.2",
1941
+      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
1942
+      "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
1943
+      "dev": true,
1944
+      "optional": true,
1945
+      "requires": {
1946
+        "normalize-path": "^3.0.0",
1947
+        "picomatch": "^2.0.4"
1948
+      }
1949
+    },
1950
+    "babel-code-frame": {
1951
+      "version": "6.26.0",
1952
+      "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
1953
+      "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
1954
+      "dev": true,
1955
+      "requires": {
1956
+        "chalk": "^1.1.3",
1957
+        "esutils": "^2.0.2",
1958
+        "js-tokens": "^3.0.2"
1959
+      }
1960
+    },
1961
+    "babel-core": {
1962
+      "version": "6.26.3",
1963
+      "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz",
1964
+      "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==",
1965
+      "dev": true,
1966
+      "requires": {
1967
+        "babel-code-frame": "^6.26.0",
1968
+        "babel-generator": "^6.26.0",
1969
+        "babel-helpers": "^6.24.1",
1970
+        "babel-messages": "^6.23.0",
1971
+        "babel-register": "^6.26.0",
1972
+        "babel-runtime": "^6.26.0",
1973
+        "babel-template": "^6.26.0",
1974
+        "babel-traverse": "^6.26.0",
1975
+        "babel-types": "^6.26.0",
1976
+        "babylon": "^6.18.0",
1977
+        "convert-source-map": "^1.5.1",
1978
+        "debug": "^2.6.9",
1979
+        "json5": "^0.5.1",
1980
+        "lodash": "^4.17.4",
1981
+        "minimatch": "^3.0.4",
1982
+        "path-is-absolute": "^1.0.1",
1983
+        "private": "^0.1.8",
1984
+        "slash": "^1.0.0",
1985
+        "source-map": "^0.5.7"
1986
+      }
1987
+    },
1988
+    "babel-generator": {
1989
+      "version": "6.26.1",
1990
+      "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz",
1991
+      "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==",
1992
+      "dev": true,
1993
+      "requires": {
1994
+        "babel-messages": "^6.23.0",
1995
+        "babel-runtime": "^6.26.0",
1996
+        "babel-types": "^6.26.0",
1997
+        "detect-indent": "^4.0.0",
1998
+        "jsesc": "^1.3.0",
1999
+        "lodash": "^4.17.4",
2000
+        "source-map": "^0.5.7",
2001
+        "trim-right": "^1.0.1"
2002
+      }
2003
+    },
2004
+    "babel-helpers": {
2005
+      "version": "6.24.1",
2006
+      "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz",
2007
+      "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=",
2008
+      "dev": true,
2009
+      "requires": {
2010
+        "babel-runtime": "^6.22.0",
2011
+        "babel-template": "^6.24.1"
2012
+      }
2013
+    },
2014
+    "babel-messages": {
2015
+      "version": "6.23.0",
2016
+      "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
2017
+      "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
2018
+      "dev": true,
2019
+      "requires": {
2020
+        "babel-runtime": "^6.22.0"
2021
+      }
2022
+    },
2023
+    "babel-register": {
2024
+      "version": "6.26.0",
2025
+      "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz",
2026
+      "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=",
2027
+      "dev": true,
2028
+      "requires": {
2029
+        "babel-core": "^6.26.0",
2030
+        "babel-runtime": "^6.26.0",
2031
+        "core-js": "^2.5.0",
2032
+        "home-or-tmp": "^2.0.0",
2033
+        "lodash": "^4.17.4",
2034
+        "mkdirp": "^0.5.1",
2035
+        "source-map-support": "^0.4.15"
2036
+      }
2037
+    },
2038
+    "babel-runtime": {
2039
+      "version": "6.26.0",
2040
+      "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
2041
+      "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
2042
+      "dev": true,
2043
+      "requires": {
2044
+        "core-js": "^2.4.0",
2045
+        "regenerator-runtime": "^0.11.0"
2046
+      }
2047
+    },
2048
+    "babel-template": {
2049
+      "version": "6.26.0",
2050
+      "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
2051
+      "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
2052
+      "dev": true,
2053
+      "requires": {
2054
+        "babel-runtime": "^6.26.0",
2055
+        "babel-traverse": "^6.26.0",
2056
+        "babel-types": "^6.26.0",
2057
+        "babylon": "^6.18.0",
2058
+        "lodash": "^4.17.4"
2059
+      }
2060
+    },
2061
+    "babel-traverse": {
2062
+      "version": "6.26.0",
2063
+      "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
2064
+      "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
2065
+      "dev": true,
2066
+      "requires": {
2067
+        "babel-code-frame": "^6.26.0",
2068
+        "babel-messages": "^6.23.0",
2069
+        "babel-runtime": "^6.26.0",
2070
+        "babel-types": "^6.26.0",
2071
+        "babylon": "^6.18.0",
2072
+        "debug": "^2.6.8",
2073
+        "globals": "^9.18.0",
2074
+        "invariant": "^2.2.2",
2075
+        "lodash": "^4.17.4"
2076
+      }
2077
+    },
2078
+    "babel-types": {
2079
+      "version": "6.26.0",
2080
+      "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
2081
+      "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
2082
+      "dev": true,
2083
+      "requires": {
2084
+        "babel-runtime": "^6.26.0",
2085
+        "esutils": "^2.0.2",
2086
+        "lodash": "^4.17.4",
2087
+        "to-fast-properties": "^1.0.3"
2088
+      }
2089
+    },
2090
+    "babylon": {
2091
+      "version": "6.18.0",
2092
+      "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
2093
+      "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
2094
+      "dev": true
2095
+    },
2096
+    "balanced-match": {
2097
+      "version": "1.0.2",
2098
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
2099
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
2100
+      "dev": true
2101
+    },
2102
+    "binary-extensions": {
2103
+      "version": "2.2.0",
2104
+      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
2105
+      "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
2106
+      "dev": true,
2107
+      "optional": true
2108
+    },
2109
+    "brace-expansion": {
2110
+      "version": "1.1.11",
2111
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
2112
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
2113
+      "dev": true,
2114
+      "requires": {
2115
+        "balanced-match": "^1.0.0",
2116
+        "concat-map": "0.0.1"
2117
+      }
2118
+    },
2119
+    "braces": {
2120
+      "version": "3.0.2",
2121
+      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
2122
+      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
2123
+      "dev": true,
2124
+      "optional": true,
2125
+      "requires": {
2126
+        "fill-range": "^7.0.1"
2127
+      }
2128
+    },
2129
+    "browserslist": {
2130
+      "version": "4.20.2",
2131
+      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz",
2132
+      "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==",
2133
+      "dev": true,
2134
+      "peer": true,
2135
+      "requires": {
2136
+        "caniuse-lite": "^1.0.30001317",
2137
+        "electron-to-chromium": "^1.4.84",
2138
+        "escalade": "^3.1.1",
2139
+        "node-releases": "^2.0.2",
2140
+        "picocolors": "^1.0.0"
2141
+      }
2142
+    },
2143
+    "caniuse-lite": {
2144
+      "version": "1.0.30001323",
2145
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001323.tgz",
2146
+      "integrity": "sha512-e4BF2RlCVELKx8+RmklSEIVub1TWrmdhvA5kEUueummz1XyySW0DVk+3x9HyhU9MuWTa2BhqLgEuEmUwASAdCA==",
2147
+      "dev": true,
2148
+      "peer": true
2149
+    },
2150
+    "chalk": {
2151
+      "version": "1.1.3",
2152
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
2153
+      "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
2154
+      "dev": true,
2155
+      "requires": {
2156
+        "ansi-styles": "^2.2.1",
2157
+        "escape-string-regexp": "^1.0.2",
2158
+        "has-ansi": "^2.0.0",
2159
+        "strip-ansi": "^3.0.0",
2160
+        "supports-color": "^2.0.0"
2161
+      }
2162
+    },
2163
+    "chokidar": {
2164
+      "version": "3.5.3",
2165
+      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
2166
+      "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
2167
+      "dev": true,
2168
+      "optional": true,
2169
+      "requires": {
2170
+        "anymatch": "~3.1.2",
2171
+        "braces": "~3.0.2",
2172
+        "fsevents": "~2.3.2",
2173
+        "glob-parent": "~5.1.2",
2174
+        "is-binary-path": "~2.1.0",
2175
+        "is-glob": "~4.0.1",
2176
+        "normalize-path": "~3.0.0",
2177
+        "readdirp": "~3.6.0"
2178
+      }
2179
+    },
2180
+    "color-convert": {
2181
+      "version": "1.9.3",
2182
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
2183
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
2184
+      "dev": true,
2185
+      "peer": true,
2186
+      "requires": {
2187
+        "color-name": "1.1.3"
2188
+      }
2189
+    },
2190
+    "color-name": {
2191
+      "version": "1.1.3",
2192
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
2193
+      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
2194
+      "dev": true,
2195
+      "peer": true
2196
+    },
2197
+    "commander": {
2198
+      "version": "4.1.1",
2199
+      "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
2200
+      "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
2201
+      "dev": true
2202
+    },
2203
+    "concat-map": {
2204
+      "version": "0.0.1",
2205
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
2206
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
2207
+      "dev": true
2208
+    },
2209
+    "convert-source-map": {
2210
+      "version": "1.8.0",
2211
+      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
2212
+      "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
2213
+      "dev": true,
2214
+      "requires": {
2215
+        "safe-buffer": "~5.1.1"
2216
+      }
2217
+    },
2218
+    "core-js": {
2219
+      "version": "2.6.12",
2220
+      "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
2221
+      "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
2222
+      "dev": true
2223
+    },
2224
+    "debug": {
2225
+      "version": "2.6.9",
2226
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
2227
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
2228
+      "dev": true,
2229
+      "requires": {
2230
+        "ms": "2.0.0"
2231
+      }
2232
+    },
2233
+    "detect-indent": {
2234
+      "version": "4.0.0",
2235
+      "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
2236
+      "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
2237
+      "dev": true,
2238
+      "requires": {
2239
+        "repeating": "^2.0.0"
2240
+      }
2241
+    },
2242
+    "electron-to-chromium": {
2243
+      "version": "1.4.103",
2244
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.103.tgz",
2245
+      "integrity": "sha512-c/uKWR1Z/W30Wy/sx3dkZoj4BijbXX85QKWu9jJfjho3LBAXNEGAEW3oWiGb+dotA6C6BzCTxL2/aLes7jlUeg==",
2246
+      "dev": true,
2247
+      "peer": true
2248
+    },
2249
+    "escalade": {
2250
+      "version": "3.1.1",
2251
+      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
2252
+      "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
2253
+      "dev": true,
2254
+      "peer": true
2255
+    },
2256
+    "escape-string-regexp": {
2257
+      "version": "1.0.5",
2258
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
2259
+      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
2260
+      "dev": true
2261
+    },
2262
+    "esutils": {
2263
+      "version": "2.0.3",
2264
+      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
2265
+      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
2266
+      "dev": true
2267
+    },
2268
+    "fill-range": {
2269
+      "version": "7.0.1",
2270
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
2271
+      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
2272
+      "dev": true,
2273
+      "optional": true,
2274
+      "requires": {
2275
+        "to-regex-range": "^5.0.1"
2276
+      }
2277
+    },
2278
+    "fs-readdir-recursive": {
2279
+      "version": "1.1.0",
2280
+      "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz",
2281
+      "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==",
2282
+      "dev": true
2283
+    },
2284
+    "fs.realpath": {
2285
+      "version": "1.0.0",
2286
+      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
2287
+      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
2288
+      "dev": true
2289
+    },
2290
+    "fsevents": {
2291
+      "version": "2.3.2",
2292
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
2293
+      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
2294
+      "dev": true,
2295
+      "optional": true
2296
+    },
2297
+    "gensync": {
2298
+      "version": "1.0.0-beta.2",
2299
+      "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
2300
+      "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
2301
+      "dev": true,
2302
+      "peer": true
2303
+    },
2304
+    "glob": {
2305
+      "version": "7.2.0",
2306
+      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
2307
+      "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
2308
+      "dev": true,
2309
+      "requires": {
2310
+        "fs.realpath": "^1.0.0",
2311
+        "inflight": "^1.0.4",
2312
+        "inherits": "2",
2313
+        "minimatch": "^3.0.4",
2314
+        "once": "^1.3.0",
2315
+        "path-is-absolute": "^1.0.0"
2316
+      }
2317
+    },
2318
+    "glob-parent": {
2319
+      "version": "5.1.2",
2320
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
2321
+      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
2322
+      "dev": true,
2323
+      "optional": true,
2324
+      "requires": {
2325
+        "is-glob": "^4.0.1"
2326
+      }
2327
+    },
2328
+    "globals": {
2329
+      "version": "9.18.0",
2330
+      "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
2331
+      "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
2332
+      "dev": true
2333
+    },
2334
+    "has-ansi": {
2335
+      "version": "2.0.0",
2336
+      "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
2337
+      "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
2338
+      "dev": true,
2339
+      "requires": {
2340
+        "ansi-regex": "^2.0.0"
2341
+      }
2342
+    },
2343
+    "has-flag": {
2344
+      "version": "3.0.0",
2345
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
2346
+      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
2347
+      "dev": true,
2348
+      "peer": true
2349
+    },
2350
+    "home-or-tmp": {
2351
+      "version": "2.0.0",
2352
+      "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz",
2353
+      "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=",
2354
+      "dev": true,
2355
+      "requires": {
2356
+        "os-homedir": "^1.0.0",
2357
+        "os-tmpdir": "^1.0.1"
2358
+      }
2359
+    },
2360
+    "inflight": {
2361
+      "version": "1.0.6",
2362
+      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
2363
+      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
2364
+      "dev": true,
2365
+      "requires": {
2366
+        "once": "^1.3.0",
2367
+        "wrappy": "1"
2368
+      }
2369
+    },
2370
+    "inherits": {
2371
+      "version": "2.0.4",
2372
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
2373
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
2374
+      "dev": true
2375
+    },
2376
+    "invariant": {
2377
+      "version": "2.2.4",
2378
+      "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
2379
+      "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
2380
+      "dev": true,
2381
+      "requires": {
2382
+        "loose-envify": "^1.0.0"
2383
+      }
2384
+    },
2385
+    "is-binary-path": {
2386
+      "version": "2.1.0",
2387
+      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
2388
+      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
2389
+      "dev": true,
2390
+      "optional": true,
2391
+      "requires": {
2392
+        "binary-extensions": "^2.0.0"
2393
+      }
2394
+    },
2395
+    "is-extglob": {
2396
+      "version": "2.1.1",
2397
+      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
2398
+      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
2399
+      "dev": true,
2400
+      "optional": true
2401
+    },
2402
+    "is-finite": {
2403
+      "version": "1.1.0",
2404
+      "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz",
2405
+      "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==",
2406
+      "dev": true
2407
+    },
2408
+    "is-glob": {
2409
+      "version": "4.0.3",
2410
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
2411
+      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
2412
+      "dev": true,
2413
+      "optional": true,
2414
+      "requires": {
2415
+        "is-extglob": "^2.1.1"
2416
+      }
2417
+    },
2418
+    "is-number": {
2419
+      "version": "7.0.0",
2420
+      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
2421
+      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
2422
+      "dev": true,
2423
+      "optional": true
2424
+    },
2425
+    "js-tokens": {
2426
+      "version": "3.0.2",
2427
+      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
2428
+      "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
2429
+      "dev": true
2430
+    },
2431
+    "jsesc": {
2432
+      "version": "1.3.0",
2433
+      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
2434
+      "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
2435
+      "dev": true
2436
+    },
2437
+    "json5": {
2438
+      "version": "0.5.1",
2439
+      "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
2440
+      "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
2441
+      "dev": true
2442
+    },
2443
+    "lodash": {
2444
+      "version": "4.17.21",
2445
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
2446
+      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
2447
+      "dev": true
2448
+    },
2449
+    "loose-envify": {
2450
+      "version": "1.4.0",
2451
+      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
2452
+      "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
2453
+      "dev": true,
2454
+      "requires": {
2455
+        "js-tokens": "^3.0.0 || ^4.0.0"
2456
+      }
2457
+    },
2458
+    "make-dir": {
2459
+      "version": "2.1.0",
2460
+      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
2461
+      "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
2462
+      "dev": true,
2463
+      "requires": {
2464
+        "pify": "^4.0.1",
2465
+        "semver": "^5.6.0"
2466
+      },
2467
+      "dependencies": {
2468
+        "semver": {
2469
+          "version": "5.7.1",
2470
+          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
2471
+          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
2472
+          "dev": true
2473
+        }
2474
+      }
2475
+    },
2476
+    "minimatch": {
2477
+      "version": "3.1.2",
2478
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
2479
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
2480
+      "dev": true,
2481
+      "requires": {
2482
+        "brace-expansion": "^1.1.7"
2483
+      }
2484
+    },
2485
+    "minimist": {
2486
+      "version": "1.2.6",
2487
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
2488
+      "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
2489
+      "dev": true
2490
+    },
2491
+    "mkdirp": {
2492
+      "version": "0.5.6",
2493
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
2494
+      "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
2495
+      "dev": true,
2496
+      "requires": {
2497
+        "minimist": "^1.2.6"
2498
+      }
2499
+    },
2500
+    "ms": {
2501
+      "version": "2.0.0",
2502
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
2503
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
2504
+      "dev": true
2505
+    },
2506
+    "node-releases": {
2507
+      "version": "2.0.2",
2508
+      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz",
2509
+      "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==",
2510
+      "dev": true,
2511
+      "peer": true
2512
+    },
2513
+    "normalize-path": {
2514
+      "version": "3.0.0",
2515
+      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
2516
+      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
2517
+      "dev": true,
2518
+      "optional": true
2519
+    },
2520
+    "once": {
2521
+      "version": "1.4.0",
2522
+      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
2523
+      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
2524
+      "dev": true,
2525
+      "requires": {
2526
+        "wrappy": "1"
2527
+      }
2528
+    },
2529
+    "os-homedir": {
2530
+      "version": "1.0.2",
2531
+      "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
2532
+      "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
2533
+      "dev": true
2534
+    },
2535
+    "os-tmpdir": {
2536
+      "version": "1.0.2",
2537
+      "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
2538
+      "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
2539
+      "dev": true
2540
+    },
2541
+    "path-is-absolute": {
2542
+      "version": "1.0.1",
2543
+      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
2544
+      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
2545
+      "dev": true
2546
+    },
2547
+    "picocolors": {
2548
+      "version": "1.0.0",
2549
+      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
2550
+      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
2551
+      "dev": true,
2552
+      "peer": true
2553
+    },
2554
+    "picomatch": {
2555
+      "version": "2.3.1",
2556
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
2557
+      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
2558
+      "dev": true,
2559
+      "optional": true
2560
+    },
2561
+    "pify": {
2562
+      "version": "4.0.1",
2563
+      "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
2564
+      "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
2565
+      "dev": true
2566
+    },
2567
+    "private": {
2568
+      "version": "0.1.8",
2569
+      "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
2570
+      "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
2571
+      "dev": true
2572
+    },
2573
+    "readdirp": {
2574
+      "version": "3.6.0",
2575
+      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
2576
+      "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
2577
+      "dev": true,
2578
+      "optional": true,
2579
+      "requires": {
2580
+        "picomatch": "^2.2.1"
2581
+      }
2582
+    },
2583
+    "regenerator-runtime": {
2584
+      "version": "0.11.1",
2585
+      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
2586
+      "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
2587
+      "dev": true
2588
+    },
2589
+    "repeating": {
2590
+      "version": "2.0.1",
2591
+      "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
2592
+      "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
2593
+      "dev": true,
2594
+      "requires": {
2595
+        "is-finite": "^1.0.0"
2596
+      }
2597
+    },
2598
+    "safe-buffer": {
2599
+      "version": "5.1.2",
2600
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
2601
+      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
2602
+      "dev": true
2603
+    },
2604
+    "semver": {
2605
+      "version": "6.3.0",
2606
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
2607
+      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
2608
+      "dev": true,
2609
+      "peer": true
2610
+    },
2611
+    "slash": {
2612
+      "version": "1.0.0",
2613
+      "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
2614
+      "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
2615
+      "dev": true
2616
+    },
2617
+    "source-map": {
2618
+      "version": "0.5.7",
2619
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
2620
+      "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
2621
+      "dev": true
2622
+    },
2623
+    "source-map-support": {
2624
+      "version": "0.4.18",
2625
+      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
2626
+      "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
2627
+      "dev": true,
2628
+      "requires": {
2629
+        "source-map": "^0.5.6"
2630
+      }
2631
+    },
2632
+    "strip-ansi": {
2633
+      "version": "3.0.1",
2634
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
2635
+      "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
2636
+      "dev": true,
2637
+      "requires": {
2638
+        "ansi-regex": "^2.0.0"
2639
+      }
2640
+    },
2641
+    "supports-color": {
2642
+      "version": "2.0.0",
2643
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
2644
+      "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
2645
+      "dev": true
2646
+    },
2647
+    "to-fast-properties": {
2648
+      "version": "1.0.3",
2649
+      "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
2650
+      "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
2651
+      "dev": true
2652
+    },
2653
+    "to-regex-range": {
2654
+      "version": "5.0.1",
2655
+      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
2656
+      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
2657
+      "dev": true,
2658
+      "optional": true,
2659
+      "requires": {
2660
+        "is-number": "^7.0.0"
2661
+      }
2662
+    },
2663
+    "trim-right": {
2664
+      "version": "1.0.1",
2665
+      "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
2666
+      "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
2667
+      "dev": true
2668
+    },
2669
+    "wrappy": {
2670
+      "version": "1.0.2",
2671
+      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
2672
+      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
2673
+      "dev": true
2674
+    }
2675
+  }
2676
+}
0 2677
new file mode 100644
... ...
@@ -0,0 +1,16 @@
1
+{
2
+  "name": "babel-camel-case",
3
+  "version": "1.0.0",
4
+  "description": "",
5
+  "main": "index.js",
6
+  "scripts": {
7
+    "test": "echo \"Error: no test specified\" && exit 1"
8
+  },
9
+  "keywords": [],
10
+  "author": "",
11
+  "license": "ISC",
12
+  "devDependencies": {
13
+    "@babel/cli": "^7.17.6",
14
+    "babel-core": "^6.26.3"
15
+  }
16
+}
0 17
new file mode 100644
... ...
@@ -0,0 +1,5 @@
1
+{
2
+  "compact": false,
3
+  "retainLines": true,
4
+  "plugins": ["../src/index"]
5
+}
0 6
new file mode 100644
... ...
@@ -0,0 +1,16 @@
1
+// [[file:../README.org::*Sample results][Sample results:2]]
2
+import { a_thing } from "some_unconventional_package";
3
+
4
+const my_constant = a_thing(4);
5
+
6
+function some_function_stuff() {
7
+  let my_local_variable;
8
+  return function inner_function() {
9
+    const other_local_variable = 1;
10
+    return my_local_variable + other_local_variable + "!";
11
+  };
12
+}
13
+
14
+// Renaming this one is sort of dangerous 🤔
15
+undeclared_variable = 234;
16
+// Sample results:2 ends here
1 18
new file mode 100644
... ...
@@ -0,0 +1,7 @@
1
+// [[file:../README.org::*Name clashes possible][Name clashes possible:1]]
2
+const a_name = "foo";
3
+function aName() {}
4
+
5
+// This will be renamed to aName and clash with the function
6
+a_name.toLower();
7
+// Name clashes possible:1 ends here
0 8
new file mode 100644
... ...
@@ -0,0 +1,29 @@
1
+// [[file:../README.org::*Sample babel transform to turn snake_case into camelCase][Sample babel transform to turn snake_case into camelCase:1]]
2
+function snakeToCamel(str) {
3
+  const [first, ...rest] = str.split("_");
4
+  return `${first}${rest.map(capitalize).join("")}`;
5
+}
6
+
7
+function capitalize([v, ...vs]) {
8
+  return `${v.toLocaleUpperCase()}${vs.join("")}`;
9
+}
10
+// Sample babel transform to turn snake_case into camelCase:1 ends here
11
+
12
+// [[file:../README.org::*Sample babel transform to turn snake_case into camelCase][Sample babel transform to turn snake_case into camelCase:2]]
13
+module.exports = function camelCasingVisitor({ types: t }) {
14
+  return {
15
+    visitor: {
16
+      Identifier(path) {
17
+        if (isSnakeCased(path.node)) {
18
+          path.scope.rename(path.node.name, snakeToCamel(path.node.name));
19
+          path.replaceWith(t.identifier(snakeToCamel(path.node.name)));
20
+        }
21
+      },
22
+    },
23
+  };
24
+};
25
+
26
+function isSnakeCased(node) {
27
+  return /_/.test(node.name);
28
+}
29
+// Sample babel transform to turn snake_case into camelCase:2 ends here