├── .gitignore
├── .gitmodules
├── LICENSE
├── README.md
├── circuits
├── dizkus.circom
└── merkle.circom
├── package-lock.json
├── package.json
├── scripts
├── 1_compile.sh
├── 2_gen_wtns.sh
├── 3_gen_chunk_zkey.sh
├── 4_gen_vkey.sh
├── 5_gen_proof.sh
├── 6_gen_proof_rapidsnark.sh
├── dizkus_64_4_30.circom
└── sample_input.json
├── semaphore_scripts
├── 1_compile.sh
├── 2_gen_wtns.sh
├── 3_gen_chunk_zkey.sh
├── 4_gen_vkey.sh
├── 5_gen_proof.sh
├── 6_gen_proof_rapidsnark.sh
├── sample_input.json
└── semaphore.circom
├── test
├── circuits
│ ├── pubkey_to_address.circom
│ ├── sig_verify_64_4.circom
│ └── verify_merkle_proof_30.circom
└── test_dizkus.js
└── yarn.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | build/
2 | node_modules/
3 | pot*.ptau
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "circom-ecdsa"]
2 | path = circom-ecdsa
3 | url = https://github.com/0xPARC/circom-ecdsa
4 | [submodule "rapidsnark"]
5 | path = rapidsnark
6 | url = https://github.com/iden3/rapidsnark
7 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | GNU GENERAL PUBLIC LICENSE
2 | Version 3, 29 June 2007
3 |
4 | Copyright (C) 2007 Free Software Foundation, Inc.
5 | Everyone is permitted to copy and distribute verbatim copies
6 | of this license document, but changing it is not allowed.
7 |
8 | Preamble
9 |
10 | The GNU General Public License is a free, copyleft license for
11 | software and other kinds of works.
12 |
13 | The licenses for most software and other practical works are designed
14 | to take away your freedom to share and change the works. By contrast,
15 | the GNU General Public License is intended to guarantee your freedom to
16 | share and change all versions of a program--to make sure it remains free
17 | software for all its users. We, the Free Software Foundation, use the
18 | GNU General Public License for most of our software; it applies also to
19 | any other work released this way by its authors. You can apply it to
20 | your programs, too.
21 |
22 | When we speak of free software, we are referring to freedom, not
23 | price. Our General Public Licenses are designed to make sure that you
24 | have the freedom to distribute copies of free software (and charge for
25 | them if you wish), that you receive source code or can get it if you
26 | want it, that you can change the software or use pieces of it in new
27 | free programs, and that you know you can do these things.
28 |
29 | To protect your rights, we need to prevent others from denying you
30 | these rights or asking you to surrender the rights. Therefore, you have
31 | certain responsibilities if you distribute copies of the software, or if
32 | you modify it: responsibilities to respect the freedom of others.
33 |
34 | For example, if you distribute copies of such a program, whether
35 | gratis or for a fee, you must pass on to the recipients the same
36 | freedoms that you received. You must make sure that they, too, receive
37 | or can get the source code. And you must show them these terms so they
38 | know their rights.
39 |
40 | Developers that use the GNU GPL protect your rights with two steps:
41 | (1) assert copyright on the software, and (2) offer you this License
42 | giving you legal permission to copy, distribute and/or modify it.
43 |
44 | For the developers' and authors' protection, the GPL clearly explains
45 | that there is no warranty for this free software. For both users' and
46 | authors' sake, the GPL requires that modified versions be marked as
47 | changed, so that their problems will not be attributed erroneously to
48 | authors of previous versions.
49 |
50 | Some devices are designed to deny users access to install or run
51 | modified versions of the software inside them, although the manufacturer
52 | can do so. This is fundamentally incompatible with the aim of
53 | protecting users' freedom to change the software. The systematic
54 | pattern of such abuse occurs in the area of products for individuals to
55 | use, which is precisely where it is most unacceptable. Therefore, we
56 | have designed this version of the GPL to prohibit the practice for those
57 | products. If such problems arise substantially in other domains, we
58 | stand ready to extend this provision to those domains in future versions
59 | of the GPL, as needed to protect the freedom of users.
60 |
61 | Finally, every program is threatened constantly by software patents.
62 | States should not allow patents to restrict development and use of
63 | software on general-purpose computers, but in those that do, we wish to
64 | avoid the special danger that patents applied to a free program could
65 | make it effectively proprietary. To prevent this, the GPL assures that
66 | patents cannot be used to render the program non-free.
67 |
68 | The precise terms and conditions for copying, distribution and
69 | modification follow.
70 |
71 | TERMS AND CONDITIONS
72 |
73 | 0. Definitions.
74 |
75 | "This License" refers to version 3 of the GNU General Public License.
76 |
77 | "Copyright" also means copyright-like laws that apply to other kinds of
78 | works, such as semiconductor masks.
79 |
80 | "The Program" refers to any copyrightable work licensed under this
81 | License. Each licensee is addressed as "you". "Licensees" and
82 | "recipients" may be individuals or organizations.
83 |
84 | To "modify" a work means to copy from or adapt all or part of the work
85 | in a fashion requiring copyright permission, other than the making of an
86 | exact copy. The resulting work is called a "modified version" of the
87 | earlier work or a work "based on" the earlier work.
88 |
89 | A "covered work" means either the unmodified Program or a work based
90 | on the Program.
91 |
92 | To "propagate" a work means to do anything with it that, without
93 | permission, would make you directly or secondarily liable for
94 | infringement under applicable copyright law, except executing it on a
95 | computer or modifying a private copy. Propagation includes copying,
96 | distribution (with or without modification), making available to the
97 | public, and in some countries other activities as well.
98 |
99 | To "convey" a work means any kind of propagation that enables other
100 | parties to make or receive copies. Mere interaction with a user through
101 | a computer network, with no transfer of a copy, is not conveying.
102 |
103 | An interactive user interface displays "Appropriate Legal Notices"
104 | to the extent that it includes a convenient and prominently visible
105 | feature that (1) displays an appropriate copyright notice, and (2)
106 | tells the user that there is no warranty for the work (except to the
107 | extent that warranties are provided), that licensees may convey the
108 | work under this License, and how to view a copy of this License. If
109 | the interface presents a list of user commands or options, such as a
110 | menu, a prominent item in the list meets this criterion.
111 |
112 | 1. Source Code.
113 |
114 | The "source code" for a work means the preferred form of the work
115 | for making modifications to it. "Object code" means any non-source
116 | form of a work.
117 |
118 | A "Standard Interface" means an interface that either is an official
119 | standard defined by a recognized standards body, or, in the case of
120 | interfaces specified for a particular programming language, one that
121 | is widely used among developers working in that language.
122 |
123 | The "System Libraries" of an executable work include anything, other
124 | than the work as a whole, that (a) is included in the normal form of
125 | packaging a Major Component, but which is not part of that Major
126 | Component, and (b) serves only to enable use of the work with that
127 | Major Component, or to implement a Standard Interface for which an
128 | implementation is available to the public in source code form. A
129 | "Major Component", in this context, means a major essential component
130 | (kernel, window system, and so on) of the specific operating system
131 | (if any) on which the executable work runs, or a compiler used to
132 | produce the work, or an object code interpreter used to run it.
133 |
134 | The "Corresponding Source" for a work in object code form means all
135 | the source code needed to generate, install, and (for an executable
136 | work) run the object code and to modify the work, including scripts to
137 | control those activities. However, it does not include the work's
138 | System Libraries, or general-purpose tools or generally available free
139 | programs which are used unmodified in performing those activities but
140 | which are not part of the work. For example, Corresponding Source
141 | includes interface definition files associated with source files for
142 | the work, and the source code for shared libraries and dynamically
143 | linked subprograms that the work is specifically designed to require,
144 | such as by intimate data communication or control flow between those
145 | subprograms and other parts of the work.
146 |
147 | The Corresponding Source need not include anything that users
148 | can regenerate automatically from other parts of the Corresponding
149 | Source.
150 |
151 | The Corresponding Source for a work in source code form is that
152 | same work.
153 |
154 | 2. Basic Permissions.
155 |
156 | All rights granted under this License are granted for the term of
157 | copyright on the Program, and are irrevocable provided the stated
158 | conditions are met. This License explicitly affirms your unlimited
159 | permission to run the unmodified Program. The output from running a
160 | covered work is covered by this License only if the output, given its
161 | content, constitutes a covered work. This License acknowledges your
162 | rights of fair use or other equivalent, as provided by copyright law.
163 |
164 | You may make, run and propagate covered works that you do not
165 | convey, without conditions so long as your license otherwise remains
166 | in force. You may convey covered works to others for the sole purpose
167 | of having them make modifications exclusively for you, or provide you
168 | with facilities for running those works, provided that you comply with
169 | the terms of this License in conveying all material for which you do
170 | not control copyright. Those thus making or running the covered works
171 | for you must do so exclusively on your behalf, under your direction
172 | and control, on terms that prohibit them from making any copies of
173 | your copyrighted material outside their relationship with you.
174 |
175 | Conveying under any other circumstances is permitted solely under
176 | the conditions stated below. Sublicensing is not allowed; section 10
177 | makes it unnecessary.
178 |
179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
180 |
181 | No covered work shall be deemed part of an effective technological
182 | measure under any applicable law fulfilling obligations under article
183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or
184 | similar laws prohibiting or restricting circumvention of such
185 | measures.
186 |
187 | When you convey a covered work, you waive any legal power to forbid
188 | circumvention of technological measures to the extent such circumvention
189 | is effected by exercising rights under this License with respect to
190 | the covered work, and you disclaim any intention to limit operation or
191 | modification of the work as a means of enforcing, against the work's
192 | users, your or third parties' legal rights to forbid circumvention of
193 | technological measures.
194 |
195 | 4. Conveying Verbatim Copies.
196 |
197 | You may convey verbatim copies of the Program's source code as you
198 | receive it, in any medium, provided that you conspicuously and
199 | appropriately publish on each copy an appropriate copyright notice;
200 | keep intact all notices stating that this License and any
201 | non-permissive terms added in accord with section 7 apply to the code;
202 | keep intact all notices of the absence of any warranty; and give all
203 | recipients a copy of this License along with the Program.
204 |
205 | You may charge any price or no price for each copy that you convey,
206 | and you may offer support or warranty protection for a fee.
207 |
208 | 5. Conveying Modified Source Versions.
209 |
210 | You may convey a work based on the Program, or the modifications to
211 | produce it from the Program, in the form of source code under the
212 | terms of section 4, provided that you also meet all of these conditions:
213 |
214 | a) The work must carry prominent notices stating that you modified
215 | it, and giving a relevant date.
216 |
217 | b) The work must carry prominent notices stating that it is
218 | released under this License and any conditions added under section
219 | 7. This requirement modifies the requirement in section 4 to
220 | "keep intact all notices".
221 |
222 | c) You must license the entire work, as a whole, under this
223 | License to anyone who comes into possession of a copy. This
224 | License will therefore apply, along with any applicable section 7
225 | additional terms, to the whole of the work, and all its parts,
226 | regardless of how they are packaged. This License gives no
227 | permission to license the work in any other way, but it does not
228 | invalidate such permission if you have separately received it.
229 |
230 | d) If the work has interactive user interfaces, each must display
231 | Appropriate Legal Notices; however, if the Program has interactive
232 | interfaces that do not display Appropriate Legal Notices, your
233 | work need not make them do so.
234 |
235 | A compilation of a covered work with other separate and independent
236 | works, which are not by their nature extensions of the covered work,
237 | and which are not combined with it such as to form a larger program,
238 | in or on a volume of a storage or distribution medium, is called an
239 | "aggregate" if the compilation and its resulting copyright are not
240 | used to limit the access or legal rights of the compilation's users
241 | beyond what the individual works permit. Inclusion of a covered work
242 | in an aggregate does not cause this License to apply to the other
243 | parts of the aggregate.
244 |
245 | 6. Conveying Non-Source Forms.
246 |
247 | You may convey a covered work in object code form under the terms
248 | of sections 4 and 5, provided that you also convey the
249 | machine-readable Corresponding Source under the terms of this License,
250 | in one of these ways:
251 |
252 | a) Convey the object code in, or embodied in, a physical product
253 | (including a physical distribution medium), accompanied by the
254 | Corresponding Source fixed on a durable physical medium
255 | customarily used for software interchange.
256 |
257 | b) Convey the object code in, or embodied in, a physical product
258 | (including a physical distribution medium), accompanied by a
259 | written offer, valid for at least three years and valid for as
260 | long as you offer spare parts or customer support for that product
261 | model, to give anyone who possesses the object code either (1) a
262 | copy of the Corresponding Source for all the software in the
263 | product that is covered by this License, on a durable physical
264 | medium customarily used for software interchange, for a price no
265 | more than your reasonable cost of physically performing this
266 | conveying of source, or (2) access to copy the
267 | Corresponding Source from a network server at no charge.
268 |
269 | c) Convey individual copies of the object code with a copy of the
270 | written offer to provide the Corresponding Source. This
271 | alternative is allowed only occasionally and noncommercially, and
272 | only if you received the object code with such an offer, in accord
273 | with subsection 6b.
274 |
275 | d) Convey the object code by offering access from a designated
276 | place (gratis or for a charge), and offer equivalent access to the
277 | Corresponding Source in the same way through the same place at no
278 | further charge. You need not require recipients to copy the
279 | Corresponding Source along with the object code. If the place to
280 | copy the object code is a network server, the Corresponding Source
281 | may be on a different server (operated by you or a third party)
282 | that supports equivalent copying facilities, provided you maintain
283 | clear directions next to the object code saying where to find the
284 | Corresponding Source. Regardless of what server hosts the
285 | Corresponding Source, you remain obligated to ensure that it is
286 | available for as long as needed to satisfy these requirements.
287 |
288 | e) Convey the object code using peer-to-peer transmission, provided
289 | you inform other peers where the object code and Corresponding
290 | Source of the work are being offered to the general public at no
291 | charge under subsection 6d.
292 |
293 | A separable portion of the object code, whose source code is excluded
294 | from the Corresponding Source as a System Library, need not be
295 | included in conveying the object code work.
296 |
297 | A "User Product" is either (1) a "consumer product", which means any
298 | tangible personal property which is normally used for personal, family,
299 | or household purposes, or (2) anything designed or sold for incorporation
300 | into a dwelling. In determining whether a product is a consumer product,
301 | doubtful cases shall be resolved in favor of coverage. For a particular
302 | product received by a particular user, "normally used" refers to a
303 | typical or common use of that class of product, regardless of the status
304 | of the particular user or of the way in which the particular user
305 | actually uses, or expects or is expected to use, the product. A product
306 | is a consumer product regardless of whether the product has substantial
307 | commercial, industrial or non-consumer uses, unless such uses represent
308 | the only significant mode of use of the product.
309 |
310 | "Installation Information" for a User Product means any methods,
311 | procedures, authorization keys, or other information required to install
312 | and execute modified versions of a covered work in that User Product from
313 | a modified version of its Corresponding Source. The information must
314 | suffice to ensure that the continued functioning of the modified object
315 | code is in no case prevented or interfered with solely because
316 | modification has been made.
317 |
318 | If you convey an object code work under this section in, or with, or
319 | specifically for use in, a User Product, and the conveying occurs as
320 | part of a transaction in which the right of possession and use of the
321 | User Product is transferred to the recipient in perpetuity or for a
322 | fixed term (regardless of how the transaction is characterized), the
323 | Corresponding Source conveyed under this section must be accompanied
324 | by the Installation Information. But this requirement does not apply
325 | if neither you nor any third party retains the ability to install
326 | modified object code on the User Product (for example, the work has
327 | been installed in ROM).
328 |
329 | The requirement to provide Installation Information does not include a
330 | requirement to continue to provide support service, warranty, or updates
331 | for a work that has been modified or installed by the recipient, or for
332 | the User Product in which it has been modified or installed. Access to a
333 | network may be denied when the modification itself materially and
334 | adversely affects the operation of the network or violates the rules and
335 | protocols for communication across the network.
336 |
337 | Corresponding Source conveyed, and Installation Information provided,
338 | in accord with this section must be in a format that is publicly
339 | documented (and with an implementation available to the public in
340 | source code form), and must require no special password or key for
341 | unpacking, reading or copying.
342 |
343 | 7. Additional Terms.
344 |
345 | "Additional permissions" are terms that supplement the terms of this
346 | License by making exceptions from one or more of its conditions.
347 | Additional permissions that are applicable to the entire Program shall
348 | be treated as though they were included in this License, to the extent
349 | that they are valid under applicable law. If additional permissions
350 | apply only to part of the Program, that part may be used separately
351 | under those permissions, but the entire Program remains governed by
352 | this License without regard to the additional permissions.
353 |
354 | When you convey a copy of a covered work, you may at your option
355 | remove any additional permissions from that copy, or from any part of
356 | it. (Additional permissions may be written to require their own
357 | removal in certain cases when you modify the work.) You may place
358 | additional permissions on material, added by you to a covered work,
359 | for which you have or can give appropriate copyright permission.
360 |
361 | Notwithstanding any other provision of this License, for material you
362 | add to a covered work, you may (if authorized by the copyright holders of
363 | that material) supplement the terms of this License with terms:
364 |
365 | a) Disclaiming warranty or limiting liability differently from the
366 | terms of sections 15 and 16 of this License; or
367 |
368 | b) Requiring preservation of specified reasonable legal notices or
369 | author attributions in that material or in the Appropriate Legal
370 | Notices displayed by works containing it; or
371 |
372 | c) Prohibiting misrepresentation of the origin of that material, or
373 | requiring that modified versions of such material be marked in
374 | reasonable ways as different from the original version; or
375 |
376 | d) Limiting the use for publicity purposes of names of licensors or
377 | authors of the material; or
378 |
379 | e) Declining to grant rights under trademark law for use of some
380 | trade names, trademarks, or service marks; or
381 |
382 | f) Requiring indemnification of licensors and authors of that
383 | material by anyone who conveys the material (or modified versions of
384 | it) with contractual assumptions of liability to the recipient, for
385 | any liability that these contractual assumptions directly impose on
386 | those licensors and authors.
387 |
388 | All other non-permissive additional terms are considered "further
389 | restrictions" within the meaning of section 10. If the Program as you
390 | received it, or any part of it, contains a notice stating that it is
391 | governed by this License along with a term that is a further
392 | restriction, you may remove that term. If a license document contains
393 | a further restriction but permits relicensing or conveying under this
394 | License, you may add to a covered work material governed by the terms
395 | of that license document, provided that the further restriction does
396 | not survive such relicensing or conveying.
397 |
398 | If you add terms to a covered work in accord with this section, you
399 | must place, in the relevant source files, a statement of the
400 | additional terms that apply to those files, or a notice indicating
401 | where to find the applicable terms.
402 |
403 | Additional terms, permissive or non-permissive, may be stated in the
404 | form of a separately written license, or stated as exceptions;
405 | the above requirements apply either way.
406 |
407 | 8. Termination.
408 |
409 | You may not propagate or modify a covered work except as expressly
410 | provided under this License. Any attempt otherwise to propagate or
411 | modify it is void, and will automatically terminate your rights under
412 | this License (including any patent licenses granted under the third
413 | paragraph of section 11).
414 |
415 | However, if you cease all violation of this License, then your
416 | license from a particular copyright holder is reinstated (a)
417 | provisionally, unless and until the copyright holder explicitly and
418 | finally terminates your license, and (b) permanently, if the copyright
419 | holder fails to notify you of the violation by some reasonable means
420 | prior to 60 days after the cessation.
421 |
422 | Moreover, your license from a particular copyright holder is
423 | reinstated permanently if the copyright holder notifies you of the
424 | violation by some reasonable means, this is the first time you have
425 | received notice of violation of this License (for any work) from that
426 | copyright holder, and you cure the violation prior to 30 days after
427 | your receipt of the notice.
428 |
429 | Termination of your rights under this section does not terminate the
430 | licenses of parties who have received copies or rights from you under
431 | this License. If your rights have been terminated and not permanently
432 | reinstated, you do not qualify to receive new licenses for the same
433 | material under section 10.
434 |
435 | 9. Acceptance Not Required for Having Copies.
436 |
437 | You are not required to accept this License in order to receive or
438 | run a copy of the Program. Ancillary propagation of a covered work
439 | occurring solely as a consequence of using peer-to-peer transmission
440 | to receive a copy likewise does not require acceptance. However,
441 | nothing other than this License grants you permission to propagate or
442 | modify any covered work. These actions infringe copyright if you do
443 | not accept this License. Therefore, by modifying or propagating a
444 | covered work, you indicate your acceptance of this License to do so.
445 |
446 | 10. Automatic Licensing of Downstream Recipients.
447 |
448 | Each time you convey a covered work, the recipient automatically
449 | receives a license from the original licensors, to run, modify and
450 | propagate that work, subject to this License. You are not responsible
451 | for enforcing compliance by third parties with this License.
452 |
453 | An "entity transaction" is a transaction transferring control of an
454 | organization, or substantially all assets of one, or subdividing an
455 | organization, or merging organizations. If propagation of a covered
456 | work results from an entity transaction, each party to that
457 | transaction who receives a copy of the work also receives whatever
458 | licenses to the work the party's predecessor in interest had or could
459 | give under the previous paragraph, plus a right to possession of the
460 | Corresponding Source of the work from the predecessor in interest, if
461 | the predecessor has it or can get it with reasonable efforts.
462 |
463 | You may not impose any further restrictions on the exercise of the
464 | rights granted or affirmed under this License. For example, you may
465 | not impose a license fee, royalty, or other charge for exercise of
466 | rights granted under this License, and you may not initiate litigation
467 | (including a cross-claim or counterclaim in a lawsuit) alleging that
468 | any patent claim is infringed by making, using, selling, offering for
469 | sale, or importing the Program or any portion of it.
470 |
471 | 11. Patents.
472 |
473 | A "contributor" is a copyright holder who authorizes use under this
474 | License of the Program or a work on which the Program is based. The
475 | work thus licensed is called the contributor's "contributor version".
476 |
477 | A contributor's "essential patent claims" are all patent claims
478 | owned or controlled by the contributor, whether already acquired or
479 | hereafter acquired, that would be infringed by some manner, permitted
480 | by this License, of making, using, or selling its contributor version,
481 | but do not include claims that would be infringed only as a
482 | consequence of further modification of the contributor version. For
483 | purposes of this definition, "control" includes the right to grant
484 | patent sublicenses in a manner consistent with the requirements of
485 | this License.
486 |
487 | Each contributor grants you a non-exclusive, worldwide, royalty-free
488 | patent license under the contributor's essential patent claims, to
489 | make, use, sell, offer for sale, import and otherwise run, modify and
490 | propagate the contents of its contributor version.
491 |
492 | In the following three paragraphs, a "patent license" is any express
493 | agreement or commitment, however denominated, not to enforce a patent
494 | (such as an express permission to practice a patent or covenant not to
495 | sue for patent infringement). To "grant" such a patent license to a
496 | party means to make such an agreement or commitment not to enforce a
497 | patent against the party.
498 |
499 | If you convey a covered work, knowingly relying on a patent license,
500 | and the Corresponding Source of the work is not available for anyone
501 | to copy, free of charge and under the terms of this License, through a
502 | publicly available network server or other readily accessible means,
503 | then you must either (1) cause the Corresponding Source to be so
504 | available, or (2) arrange to deprive yourself of the benefit of the
505 | patent license for this particular work, or (3) arrange, in a manner
506 | consistent with the requirements of this License, to extend the patent
507 | license to downstream recipients. "Knowingly relying" means you have
508 | actual knowledge that, but for the patent license, your conveying the
509 | covered work in a country, or your recipient's use of the covered work
510 | in a country, would infringe one or more identifiable patents in that
511 | country that you have reason to believe are valid.
512 |
513 | If, pursuant to or in connection with a single transaction or
514 | arrangement, you convey, or propagate by procuring conveyance of, a
515 | covered work, and grant a patent license to some of the parties
516 | receiving the covered work authorizing them to use, propagate, modify
517 | or convey a specific copy of the covered work, then the patent license
518 | you grant is automatically extended to all recipients of the covered
519 | work and works based on it.
520 |
521 | A patent license is "discriminatory" if it does not include within
522 | the scope of its coverage, prohibits the exercise of, or is
523 | conditioned on the non-exercise of one or more of the rights that are
524 | specifically granted under this License. You may not convey a covered
525 | work if you are a party to an arrangement with a third party that is
526 | in the business of distributing software, under which you make payment
527 | to the third party based on the extent of your activity of conveying
528 | the work, and under which the third party grants, to any of the
529 | parties who would receive the covered work from you, a discriminatory
530 | patent license (a) in connection with copies of the covered work
531 | conveyed by you (or copies made from those copies), or (b) primarily
532 | for and in connection with specific products or compilations that
533 | contain the covered work, unless you entered into that arrangement,
534 | or that patent license was granted, prior to 28 March 2007.
535 |
536 | Nothing in this License shall be construed as excluding or limiting
537 | any implied license or other defenses to infringement that may
538 | otherwise be available to you under applicable patent law.
539 |
540 | 12. No Surrender of Others' Freedom.
541 |
542 | If conditions are imposed on you (whether by court order, agreement or
543 | otherwise) that contradict the conditions of this License, they do not
544 | excuse you from the conditions of this License. If you cannot convey a
545 | covered work so as to satisfy simultaneously your obligations under this
546 | License and any other pertinent obligations, then as a consequence you may
547 | not convey it at all. For example, if you agree to terms that obligate you
548 | to collect a royalty for further conveying from those to whom you convey
549 | the Program, the only way you could satisfy both those terms and this
550 | License would be to refrain entirely from conveying the Program.
551 |
552 | 13. Use with the GNU Affero General Public License.
553 |
554 | Notwithstanding any other provision of this License, you have
555 | permission to link or combine any covered work with a work licensed
556 | under version 3 of the GNU Affero General Public License into a single
557 | combined work, and to convey the resulting work. The terms of this
558 | License will continue to apply to the part which is the covered work,
559 | but the special requirements of the GNU Affero General Public License,
560 | section 13, concerning interaction through a network will apply to the
561 | combination as such.
562 |
563 | 14. Revised Versions of this License.
564 |
565 | The Free Software Foundation may publish revised and/or new versions of
566 | the GNU General Public License from time to time. Such new versions will
567 | be similar in spirit to the present version, but may differ in detail to
568 | address new problems or concerns.
569 |
570 | Each version is given a distinguishing version number. If the
571 | Program specifies that a certain numbered version of the GNU General
572 | Public License "or any later version" applies to it, you have the
573 | option of following the terms and conditions either of that numbered
574 | version or of any later version published by the Free Software
575 | Foundation. If the Program does not specify a version number of the
576 | GNU General Public License, you may choose any version ever published
577 | by the Free Software Foundation.
578 |
579 | If the Program specifies that a proxy can decide which future
580 | versions of the GNU General Public License can be used, that proxy's
581 | public statement of acceptance of a version permanently authorizes you
582 | to choose that version for the Program.
583 |
584 | Later license versions may give you additional or different
585 | permissions. However, no additional obligations are imposed on any
586 | author or copyright holder as a result of your choosing to follow a
587 | later version.
588 |
589 | 15. Disclaimer of Warranty.
590 |
591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
599 |
600 | 16. Limitation of Liability.
601 |
602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
610 | SUCH DAMAGES.
611 |
612 | 17. Interpretation of Sections 15 and 16.
613 |
614 | If the disclaimer of warranty and limitation of liability provided
615 | above cannot be given local legal effect according to their terms,
616 | reviewing courts shall apply local law that most closely approximates
617 | an absolute waiver of all civil liability in connection with the
618 | Program, unless a warranty or assumption of liability accompanies a
619 | copy of the Program in return for a fee.
620 |
621 | END OF TERMS AND CONDITIONS
622 |
623 | How to Apply These Terms to Your New Programs
624 |
625 | If you develop a new program, and you want it to be of the greatest
626 | possible use to the public, the best way to achieve this is to make it
627 | free software which everyone can redistribute and change under these terms.
628 |
629 | To do so, attach the following notices to the program. It is safest
630 | to attach them to the start of each source file to most effectively
631 | state the exclusion of warranty; and each file should have at least
632 | the "copyright" line and a pointer to where the full notice is found.
633 |
634 |
635 | Copyright (C)
636 |
637 | This program is free software: you can redistribute it and/or modify
638 | it under the terms of the GNU General Public License as published by
639 | the Free Software Foundation, either version 3 of the License, or
640 | (at your option) any later version.
641 |
642 | This program is distributed in the hope that it will be useful,
643 | but WITHOUT ANY WARRANTY; without even the implied warranty of
644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
645 | GNU General Public License for more details.
646 |
647 | You should have received a copy of the GNU General Public License
648 | along with this program. If not, see .
649 |
650 | Also add information on how to contact you by electronic and paper mail.
651 |
652 | If the program does terminal interaction, make it output a short
653 | notice like this when it starts in an interactive mode:
654 |
655 | Copyright (C)
656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
657 | This is free software, and you are welcome to redistribute it
658 | under certain conditions; type `show c' for details.
659 |
660 | The hypothetical commands `show w' and `show c' should show the appropriate
661 | parts of the General Public License. Of course, your program's commands
662 | might be different; for a GUI interface, you would use an "about box".
663 |
664 | You should also get your employer (if you work as a programmer) or school,
665 | if any, to sign a "copyright disclaimer" for the program, if necessary.
666 | For more information on this, and how to apply and follow the GNU GPL, see
667 | .
668 |
669 | The GNU General Public License does not permit incorporating your program
670 | into proprietary programs. If your program is a subroutine library, you
671 | may consider it more useful to permit linking proprietary applications with
672 | the library. If this is what you want to do, use the GNU Lesser General
673 | Public License instead of this License. But first, please read
674 | .
675 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Personae Labs Circuits
2 |
3 | Circuits for heyanon and other projects!
4 |
5 | ## Setup
6 |
7 | (from https://github.com/0xPARC/cabal/blob/main/circuits/README.md)
8 |
9 | After you clone the repo, from the root of the repo run:
10 | ```
11 | git submodule update --init
12 | ```
13 |
14 | Follow the intructions here to get circom2 (the ZKSnark compiler) installed in your system
15 | https://docs.circom.io/getting-started/installation/
16 |
17 | You should probably also install VSCode extension to work with circom.
18 |
19 | To install dependencies.
20 | ```
21 | yarn
22 | cd circom-ecdsa
23 | yarn
24 | ```
25 |
26 | Download a Powers of Tau file with `2^21` constraints and copy it into the
27 | `circuits` subdirectory of the project, with the name `pot21_final.ptau`. We do not provide such a file in this repo due to its large size. You can download and copy Powers of Tau files from the Hermez trusted setup from [this repository](https://github.com/iden3/snarkjs#7-prepare-phase-2).
28 |
29 | ## Compiling circuits into prover/verifier keys
30 |
31 | Follow the scripts in `/scripts` in order to generate chunked zkeys for this circuit. You will need a machine with large RAM and SWAP to perform these operations, we used a `r5.4xlarge` AWS machine to generate everything.
32 |
--------------------------------------------------------------------------------
/circuits/dizkus.circom:
--------------------------------------------------------------------------------
1 | pragma circom 2.0.2;
2 |
3 | include "../circom-ecdsa/circuits/ecdsa.circom";
4 | include "../circom-ecdsa/circuits/zk-identity/eth.circom";
5 | include "./merkle.circom";
6 |
7 | /*
8 | This circuit allows a user to prove membership in a group and
9 | anonymously post a message. They input their public key, a signature
10 | of the message they post, and a merkle tree membership proof in the
11 | group they're looking to post to.
12 |
13 | Steps
14 | 0) before circuit, verify pubkey is valid
15 | 1) verify signature of message with public key
16 | 2) get address associated with public key
17 | 3) verify address is in group with merkle tree proof
18 |
19 | Inputs
20 | - merkle proof (depth d)
21 | - root
22 | - branch
23 | - branch side
24 | - signature verification (encoded with k registers of n bits each)
25 | - signature (r, s)
26 | - msghash
27 | - pubkey
28 | */
29 | template Dizkus(n, k, d) {
30 | assert(k >= 2);
31 | assert(k <= 100);
32 |
33 | signal input root;
34 | signal input pathElements[d];
35 | signal input pathIndices[d];
36 |
37 | signal input r[k];
38 | signal input s[k];
39 | signal input msghash[k];
40 | signal input pubkey[2][k];
41 |
42 | // Step 1: signature verification
43 | component verifySignature = ECDSAVerifyNoPubkeyCheck(n, k);
44 | for (var i = 0; i < k; i++) {
45 | verifySignature.r[i] <== r[i];
46 | verifySignature.s[i] <== s[i];
47 | verifySignature.msghash[i] <== msghash[i];
48 | for (var j = 0; j < 2; j++) {
49 | verifySignature.pubkey[j][i] <== pubkey[j][i];
50 | }
51 | }
52 | verifySignature.result === 1;
53 |
54 | // Step 2: get address associated with public key
55 | // adapted from https://github.com/jefflau/zk-identity
56 | signal pubkeyBits[512];
57 | signal address;
58 | component flattenPubkey = FlattenPubkey(n, k);
59 | for (var i = 0; i < k; i++) {
60 | flattenPubkey.chunkedPubkey[0][i] <== pubkey[0][i];
61 | flattenPubkey.chunkedPubkey[1][i] <== pubkey[1][i];
62 | }
63 | for (var i = 0; i < 512; i++) {
64 | pubkeyBits[i] <== flattenPubkey.pubkeyBits[i];
65 | }
66 | component pubkeyToAddress = PubkeyToAddress();
67 | for (var i = 0; i < 512; i++) {
68 | pubkeyToAddress.pubkeyBits[i] <== pubkeyBits[i];
69 | }
70 | address <== pubkeyToAddress.address;
71 |
72 | // Step 3: verify address is in group with merkle tree proof
73 | component verifyMerkleProof = MerkleTreeChecker(d);
74 | verifyMerkleProof.leaf <== address;
75 | verifyMerkleProof.root <== root;
76 | for (var i = 0; i < d; i++) {
77 | verifyMerkleProof.pathElements[i] <== pathElements[i];
78 | verifyMerkleProof.pathIndices[i] <== pathIndices[i];
79 | }
80 | }
--------------------------------------------------------------------------------
/circuits/merkle.circom:
--------------------------------------------------------------------------------
1 | // from https://github.com/0xPARC/cabal
2 |
3 | pragma circom 2.0.1;
4 |
5 | include "../circom-ecdsa/node_modules/circomlib/circuits/poseidon.circom";
6 |
7 | // if s == 0 returns [in[0], in[1]]
8 | // if s == 1 returns [in[1], in[0]]
9 | template DualMux() {
10 | signal input in[2];
11 | signal input s;
12 | signal output out[2];
13 |
14 | s * (1 - s) === 0;
15 | out[0] <== (in[1] - in[0])*s + in[0];
16 | out[1] <== (in[0] - in[1])*s + in[1];
17 | }
18 |
19 | // Verifies that merkle proof is correct for given merkle root and a leaf
20 | // pathIndices input is an array of 0/1 selectors telling whether given pathElement is on the left or right side of merkle path
21 | template MerkleTreeChecker(levels) {
22 | signal input leaf;
23 | signal input root;
24 | signal input pathElements[levels];
25 | signal input pathIndices[levels];
26 |
27 | component selectors[levels];
28 | component hashers[levels];
29 |
30 | signal zeroCheckers[levels+1];
31 | zeroCheckers[0] <== leaf - root;
32 |
33 | for (var i = 0; i < levels; i++) {
34 | selectors[i] = DualMux();
35 | selectors[i].in[0] <== i == 0 ? leaf : hashers[i - 1].out;
36 | selectors[i].in[1] <== pathElements[i];
37 | selectors[i].s <== pathIndices[i];
38 |
39 | hashers[i] = Poseidon(2);
40 | hashers[i].inputs[0] <== selectors[i].out[0];
41 | hashers[i].inputs[1] <== selectors[i].out[1];
42 | zeroCheckers[i+1] <== zeroCheckers[i] * (hashers[i].out - root);
43 | }
44 |
45 | zeroCheckers[levels] === 0;
46 | }
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "chai": "^4.3.6",
4 | "circom_tester": "^0.0.14",
5 | "mocha": "^10.0.0",
6 | "path": "^0.12.7",
7 | "snarkjs": "git+https://github.com/vb7401/snarkjs.git#24981febe8826b6ab76ae4d76cf7f9142919d2b8"
8 | },
9 | "scripts": {
10 | "test": "mocha"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/scripts/1_compile.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | CIRCUIT_NAME=dizkus_64_4_30
4 | BUILD_DIR="../build/$CIRCUIT_NAME"
5 |
6 | if [ ! -d "$BUILD_DIR" ]; then
7 | echo "No build directory found. Creating build directory..."
8 | mkdir -p "$BUILD_DIR"
9 | fi
10 |
11 | echo '****COMPILING CIRCUIT****'
12 | start=`date +%s`
13 | set -x
14 | circom "$CIRCUIT_NAME".circom --r1cs --wasm --sym --c --wat --output "$BUILD_DIR"
15 | { set +x; } 2>/dev/null
16 | end=`date +%s`
17 | echo "DONE ($((end-start))s)"
18 | echo
19 |
--------------------------------------------------------------------------------
/scripts/2_gen_wtns.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | CIRCUIT_NAME=dizkus_64_4_30
4 | BUILD_DIR="../build/$CIRCUIT_NAME"
5 |
6 | echo "****GENERATING WITNESS FOR SAMPLE INPUT****"
7 | start=`date +%s`
8 | set -x
9 | node "$BUILD_DIR"/"$CIRCUIT_NAME"_js/generate_witness.js "$BUILD_DIR"/"$CIRCUIT_NAME"_js/"$CIRCUIT_NAME".wasm sample_input.json "$BUILD_DIR"/witness.wtns
10 | { set +x; } 2>/dev/null
11 | end=`date +%s`
12 | echo "DONE ($((end-start))s)"
13 | echo
--------------------------------------------------------------------------------
/scripts/3_gen_chunk_zkey.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | CIRCUIT_NAME=dizkus_64_4_30
4 | BUILD_DIR="../build/$CIRCUIT_NAME"
5 | R1CS_FILE="$BUILD_DIR/$CIRCUIT_NAME.r1cs"
6 | PARTIAL_ZKEYS="$BUILD_DIR"/partial_zkeys
7 | PHASE1=../circuits/pot21_final.ptau
8 |
9 | if [ ! -d "$BUILD_DIR"/partial_zkeys ]; then
10 | echo "No partial_zkeys directory found. Creating partial_zkeys directory..."
11 | mkdir -p "$BUILD_DIR"/partial_zkeys
12 | fi
13 |
14 | echo "****GENERATING ZKEY 0****"
15 | start=`date +%s`
16 | set -x
17 | ../node_modules/.bin/snarkjs groth16 setup "$R1CS_FILE" "$PHASE1" "$PARTIAL_ZKEYS"/"$CIRCUIT_NAME"_0.zkey
18 | { set +x; } 2>/dev/null
19 | end=`date +%s`
20 | echo "DONE ($((end-start))s)"
21 | echo
22 |
23 | echo "****GENERATING ZKEY 1****"
24 | start=`date +%s`
25 | set -x
26 | ../node_modules/.bin/snarkjs zkey contribute "$PARTIAL_ZKEYS"/"$CIRCUIT_NAME"_0.zkey "$PARTIAL_ZKEYS"/"$CIRCUIT_NAME"_1.zkey --name="1st Contributor Name" -v
27 | { set +x; } 2>/dev/null
28 | end=`date +%s`
29 | echo "DONE ($((end-start))s)"
30 | echo
31 |
32 | echo "****GENERATING ZKEY 2****"
33 | start=`date +%s`
34 | set -x
35 | ../node_modules/.bin/snarkjs zkey contribute "$PARTIAL_ZKEYS"/"$CIRCUIT_NAME"_1.zkey "$PARTIAL_ZKEYS"/"$CIRCUIT_NAME"_2.zkey --name="2nd Contributor Name" -v
36 | { set +x; } 2>/dev/null
37 | end=`date +%s`
38 | echo "DONE ($((end-start))s)"
39 | echo
40 |
41 | # Use merkle root of Vivek + Lakshman MIMC merkle tree
42 | echo "****GENERATING FINAL ZKEY****"
43 | start=`date +%s`
44 | set -x
45 | ../node_modules/.bin/snarkjs zkey beacon "$PARTIAL_ZKEYS"/"$CIRCUIT_NAME"_2.zkey "$BUILD_DIR"/"$CIRCUIT_NAME".zkey 12FE2EC467BD428DD0E966A6287DE2AF8DE09C2C5C0AD902B2C666B0895ABB75 10 -n="Final Beacon phase2"
46 | { set +x; } 2>/dev/null
47 | end=`date +%s`
48 | echo "DONE ($((end-start))s)"
49 | echo
--------------------------------------------------------------------------------
/scripts/4_gen_vkey.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | CIRCUIT_NAME=dizkus_64_4_30
4 | BUILD_DIR="../build/$CIRCUIT_NAME"
5 | R1CS_FILE="$BUILD_DIR/$CIRCUIT_NAME.r1cs"
6 | PHASE1=../circuits/pot21_final.ptau
7 |
8 | echo "****EXPORTING VKEY****"
9 | start=`date +%s`
10 | set -x
11 | ../node_modules/.bin/snarkjs zkey export verificationkey "$BUILD_DIR"/"$CIRCUIT_NAME".zkey "$BUILD_DIR"/vkey.json
12 | end=`date +%s`
13 | { set +x; } 2>/dev/null
14 | echo "DONE ($((end-start))s)"
15 | echo
--------------------------------------------------------------------------------
/scripts/5_gen_proof.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | CIRCUIT_NAME=dizkus_64_4_30
4 | BUILD_DIR="../build/$CIRCUIT_NAME"
5 |
6 | echo "****GENERATING PROOF FOR SAMPLE INPUT****"
7 | start=`date +%s`
8 | set -x
9 | ../node_modules/.bin/snarkjs groth16 prove "$BUILD_DIR"/"$CIRCUIT_NAME".zkey "$BUILD_DIR"/witness.wtns "$BUILD_DIR"/proof.json "$BUILD_DIR"/public.json
10 | { set +x; } 2>/dev/null
11 | end=`date +%s`
12 | echo "DONE ($((end-start))s)"
13 | echo
14 |
15 | echo "****VERIFYING PROOF FOR SAMPLE INPUT****"
16 | start=`date +%s`
17 | set -x
18 | ../node_modules/.bin/snarkjs groth16 verify "$BUILD_DIR"/vkey.json "$BUILD_DIR"/public.json "$BUILD_DIR"/proof.json
19 | end=`date +%s`
20 | { set +x; } 2>/dev/null
21 | echo "DONE ($((end-start))s)"
22 | echo
--------------------------------------------------------------------------------
/scripts/6_gen_proof_rapidsnark.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | CIRCUIT_NAME=dizkus_64_4_30
4 | BUILD_DIR="../build/$CIRCUIT_NAME"
5 |
6 | echo "****MAKE CPP FILE FOR WITNESS GENERATION****"
7 | start=`date +%s`
8 | set -x
9 | make -C "$BUILD_DIR"/"$CIRCUIT_NAME"_cpp/
10 | { set +x; } 2>/dev/null
11 | end=`date +%s`
12 | echo "DONE ($((end-start))s)"
13 | echo
14 |
15 | # echo "****GENERATING WITNESS FOR SAMPLE INPUT****"
16 | # start=`date +%s`
17 | # set -x
18 | # ./"$BUILD_DIR"/"$CIRCUIT_NAME"_cpp/"$CIRCUIT_NAME" input_"$CIRCUIT_NAME".json "$BUILD_DIR"/witness.wtns
19 | # { set +x; } 2>/dev/null
20 | # end=`date +%s`
21 | # echo "DONE ($((end-start))s)"
22 | # echo
23 |
24 | echo "****GENERATING PROOF FOR SAMPLE INPUT****"
25 | start=`date +%s`
26 | set -x
27 | ./../rapidsnark/build/prover "$BUILD_DIR"/"$CIRCUIT_NAME".zkey "$BUILD_DIR"/witness.wtns "$BUILD_DIR"/rapidsnark_proof.json "$BUILD_DIR"/rapidsnark_public.json
28 | { set +x; } 2>/dev/null
29 | end=`date +%s`
30 | echo "DONE ($((end-start))s)"
31 | echo
--------------------------------------------------------------------------------
/scripts/dizkus_64_4_30.circom:
--------------------------------------------------------------------------------
1 | pragma circom 2.0.2;
2 |
3 | include "../circuits/dizkus.circom";
4 |
5 | component main {public [root, msghash]} = Dizkus(64, 4, 30);
--------------------------------------------------------------------------------
/scripts/sample_input.json:
--------------------------------------------------------------------------------
1 | {
2 | "root": "12890874683796057475982638126021753466203617277177808903147539631297044918772",
3 | "pathElements": [
4 | "1",
5 | "217234377348884654691879377518794323857294947151490278790710809376325639809",
6 | "18624361856574916496058203820366795950790078780687078257641649903530959943449",
7 | "19831903348221211061287449275113949495274937755341117892716020320428427983768",
8 | "5101361658164783800162950277964947086522384365207151283079909745362546177817",
9 | "11552819453851113656956689238827707323483753486799384854128595967739676085386",
10 | "10483540708739576660440356112223782712680507694971046950485797346645134034053",
11 | "7389929564247907165221817742923803467566552273918071630442219344496852141897",
12 | "6373467404037422198696850591961270197948259393735756505350173302460761391561",
13 | "14340012938942512497418634250250812329499499250184704496617019030530171289909",
14 | "10566235887680695760439252521824446945750533956882759130656396012316506290852",
15 | "14058207238811178801861080665931986752520779251556785412233046706263822020051",
16 | "1841804857146338876502603211473795482567574429038948082406470282797710112230",
17 | "6068974671277751946941356330314625335924522973707504316217201913831393258319",
18 | "10344803844228993379415834281058662700959138333457605334309913075063427817480",
19 | "1",
20 | "1",
21 | "1",
22 | "1",
23 | "1",
24 | "1",
25 | "1",
26 | "1",
27 | "1",
28 | "1",
29 | "1",
30 | "1",
31 | "1",
32 | "1",
33 | "1"
34 | ],
35 | "pathIndices": [
36 | "1",
37 | "1",
38 | "1",
39 | "1",
40 | "1",
41 | "1",
42 | "1",
43 | "1",
44 | "1",
45 | "1",
46 | "1",
47 | "1",
48 | "1",
49 | "1",
50 | "1",
51 | "1",
52 | "1",
53 | "1",
54 | "1",
55 | "1",
56 | "1",
57 | "1",
58 | "1",
59 | "1",
60 | "1",
61 | "1",
62 | "1",
63 | "1",
64 | "1",
65 | "1"
66 | ],
67 | "r": [
68 | "4343621220230669059",
69 | "18327250808238484200",
70 | "3755886376029024836",
71 | "15385541165691570987"
72 | ],
73 | "s": [
74 | "15310264094530460262",
75 | "1621297553241732651",
76 | "14659779539793693678",
77 | "6674094315802436376"
78 | ],
79 | "msghash": [
80 | "8013684013107543400",
81 | "3149366482839937187",
82 | "3130562494311484551",
83 | "15702822023081012803"
84 | ],
85 | "pubkey": [
86 | [
87 | "18367636299713276357",
88 | "3160037443724067799",
89 | "17055831292340408725",
90 | "11407900522529698842"
91 | ],
92 | [
93 | "6013285874336619060",
94 | "5158666445349947378",
95 | "11042035041177518474",
96 | "16013362528823638363"
97 | ]
98 | ]
99 | }
--------------------------------------------------------------------------------
/semaphore_scripts/1_compile.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | CIRCUIT_NAME=semaphore
4 | BUILD_DIR="../build/$CIRCUIT_NAME"
5 |
6 | if [ ! -d "$BUILD_DIR" ]; then
7 | echo "No build directory found. Creating build directory..."
8 | mkdir -p "$BUILD_DIR"
9 | fi
10 |
11 | echo '****COMPILING CIRCUIT****'
12 | start=`date +%s`
13 | set -x
14 | circom "$CIRCUIT_NAME".circom --r1cs --wasm --sym --c --wat --output "$BUILD_DIR"
15 | { set +x; } 2>/dev/null
16 | end=`date +%s`
17 | echo "DONE ($((end-start))s)"
18 | echo
19 |
--------------------------------------------------------------------------------
/semaphore_scripts/2_gen_wtns.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | CIRCUIT_NAME=semaphore
4 | BUILD_DIR="../build/$CIRCUIT_NAME"
5 |
6 | echo "****GENERATING WITNESS FOR SAMPLE INPUT****"
7 | start=`date +%s`
8 | set -x
9 | node "$BUILD_DIR"/"$CIRCUIT_NAME"_js/generate_witness.js "$BUILD_DIR"/"$CIRCUIT_NAME"_js/"$CIRCUIT_NAME".wasm sample_input.json "$BUILD_DIR"/witness.wtns
10 | { set +x; } 2>/dev/null
11 | end=`date +%s`
12 | echo "DONE ($((end-start))s)"
13 | echo
--------------------------------------------------------------------------------
/semaphore_scripts/3_gen_chunk_zkey.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | CIRCUIT_NAME=semaphore
4 | BUILD_DIR="../build/$CIRCUIT_NAME"
5 | R1CS_FILE="$BUILD_DIR/$CIRCUIT_NAME.r1cs"
6 | PARTIAL_ZKEYS="$BUILD_DIR"/partial_zkeys
7 | PHASE1=../circuits/pot21_final.ptau
8 |
9 | if [ ! -d "$BUILD_DIR"/partial_zkeys ]; then
10 | echo "No partial_zkeys directory found. Creating partial_zkeys directory..."
11 | mkdir -p "$BUILD_DIR"/partial_zkeys
12 | fi
13 |
14 | echo "****GENERATING ZKEY 0****"
15 | start=`date +%s`
16 | set -x
17 | ../node_modules/.bin/snarkjs groth16 setup "$R1CS_FILE" "$PHASE1" "$PARTIAL_ZKEYS"/"$CIRCUIT_NAME"_0.zkey
18 | { set +x; } 2>/dev/null
19 | end=`date +%s`
20 | echo "DONE ($((end-start))s)"
21 | echo
22 |
23 | echo "****GENERATING ZKEY 1****"
24 | start=`date +%s`
25 | set -x
26 | ../node_modules/.bin/snarkjs zkey contribute "$PARTIAL_ZKEYS"/"$CIRCUIT_NAME"_0.zkey "$PARTIAL_ZKEYS"/"$CIRCUIT_NAME"_1.zkey --name="1st Contributor Name" -v
27 | { set +x; } 2>/dev/null
28 | end=`date +%s`
29 | echo "DONE ($((end-start))s)"
30 | echo
31 |
32 | echo "****GENERATING ZKEY 2****"
33 | start=`date +%s`
34 | set -x
35 | ../node_modules/.bin/snarkjs zkey contribute "$PARTIAL_ZKEYS"/"$CIRCUIT_NAME"_1.zkey "$PARTIAL_ZKEYS"/"$CIRCUIT_NAME"_2.zkey --name="2nd Contributor Name" -v
36 | { set +x; } 2>/dev/null
37 | end=`date +%s`
38 | echo "DONE ($((end-start))s)"
39 | echo
40 |
41 | # Use merkle root of Vivek + Lakshman MIMC merkle tree
42 | echo "****GENERATING FINAL ZKEY****"
43 | start=`date +%s`
44 | set -x
45 | ../node_modules/.bin/snarkjs zkey beacon "$PARTIAL_ZKEYS"/"$CIRCUIT_NAME"_2.zkey "$BUILD_DIR"/"$CIRCUIT_NAME".zkey 12FE2EC467BD428DD0E966A6287DE2AF8DE09C2C5C0AD902B2C666B0895ABB75 10 -n="Final Beacon phase2"
46 | { set +x; } 2>/dev/null
47 | end=`date +%s`
48 | echo "DONE ($((end-start))s)"
49 | echo
--------------------------------------------------------------------------------
/semaphore_scripts/4_gen_vkey.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | CIRCUIT_NAME=semaphore
4 | BUILD_DIR="../build/$CIRCUIT_NAME"
5 | R1CS_FILE="$BUILD_DIR/$CIRCUIT_NAME.r1cs"
6 | PHASE1=../circuits/pot21_final.ptau
7 |
8 | echo "****EXPORTING VKEY****"
9 | start=`date +%s`
10 | set -x
11 | ../node_modules/.bin/snarkjs zkey export verificationkey "$BUILD_DIR"/"$CIRCUIT_NAME".zkey "$BUILD_DIR"/vkey.json
12 | end=`date +%s`
13 | { set +x; } 2>/dev/null
14 | echo "DONE ($((end-start))s)"
15 | echo
--------------------------------------------------------------------------------
/semaphore_scripts/5_gen_proof.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | CIRCUIT_NAME=semaphore
4 | BUILD_DIR="../build/$CIRCUIT_NAME"
5 |
6 | echo "****GENERATING PROOF FOR SAMPLE INPUT****"
7 | start=`date +%s`
8 | set -x
9 | ../node_modules/.bin/snarkjs groth16 prove "$BUILD_DIR"/"$CIRCUIT_NAME".zkey "$BUILD_DIR"/witness.wtns "$BUILD_DIR"/proof.json "$BUILD_DIR"/public.json
10 | { set +x; } 2>/dev/null
11 | end=`date +%s`
12 | echo "DONE ($((end-start))s)"
13 | echo
14 |
15 | echo "****VERIFYING PROOF FOR SAMPLE INPUT****"
16 | start=`date +%s`
17 | set -x
18 | ../node_modules/.bin/snarkjs groth16 verify "$BUILD_DIR"/vkey.json "$BUILD_DIR"/public.json "$BUILD_DIR"/proof.json
19 | end=`date +%s`
20 | { set +x; } 2>/dev/null
21 | echo "DONE ($((end-start))s)"
22 | echo
--------------------------------------------------------------------------------
/semaphore_scripts/6_gen_proof_rapidsnark.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | CIRCUIT_NAME=semaphore
4 | BUILD_DIR="../build/$CIRCUIT_NAME"
5 |
6 | echo "****MAKE CPP FILE FOR WITNESS GENERATION****"
7 | start=`date +%s`
8 | set -x
9 | make -C "$BUILD_DIR"/"$CIRCUIT_NAME"_cpp/
10 | { set +x; } 2>/dev/null
11 | end=`date +%s`
12 | echo "DONE ($((end-start))s)"
13 | echo
14 |
15 | # echo "****GENERATING WITNESS FOR SAMPLE INPUT****"
16 | # start=`date +%s`
17 | # set -x
18 | # ./"$BUILD_DIR"/"$CIRCUIT_NAME"_cpp/"$CIRCUIT_NAME" input_"$CIRCUIT_NAME".json "$BUILD_DIR"/witness.wtns
19 | # { set +x; } 2>/dev/null
20 | # end=`date +%s`
21 | # echo "DONE ($((end-start))s)"
22 | # echo
23 |
24 | echo "****GENERATING PROOF FOR SAMPLE INPUT****"
25 | start=`date +%s`
26 | set -x
27 | ./../rapidsnark/build/prover "$BUILD_DIR"/"$CIRCUIT_NAME".zkey "$BUILD_DIR"/witness.wtns "$BUILD_DIR"/rapidsnark_proof.json "$BUILD_DIR"/rapidsnark_public.json
28 | { set +x; } 2>/dev/null
29 | end=`date +%s`
30 | echo "DONE ($((end-start))s)"
31 | echo
--------------------------------------------------------------------------------
/semaphore_scripts/sample_input.json:
--------------------------------------------------------------------------------
1 | {
2 | "identityTrapdoor": "82210452188161928598733550128625220534270549590309517414894288204044874952104",
3 | "identityNullifier": "34446120299491790288744020307510475236236188468021654103658443703745559098738",
4 | "treePathIndices": [
5 | "0",
6 | "1",
7 | "0",
8 | "0",
9 | "1",
10 | "1",
11 | "0",
12 | "0",
13 | "0",
14 | "0",
15 | "0",
16 | "0",
17 | "0",
18 | "0",
19 | "0",
20 | "0",
21 | "0",
22 | "0",
23 | "0",
24 | "0"
25 | ],
26 | "treeSiblings": [
27 | "21859231388776549968909650767822735199915982922882062141526844531343157274941",
28 | "14829471396349223418257052718072297725193656766323729753108046043941694614133",
29 | "21565033459481620757728978230971813577483843043063926737824021645126402264433",
30 | "13766135533406964322328512470216179800123849709262691771686679999898328382435",
31 | "15906119989045105387724746447675479121755810923330612184214594638701177825202",
32 | "21800921921756254131913838460836323600506339982825051047143207130243409008074",
33 | "16213393278042399151325230261731727739833111769028509859621460793858318292741",
34 | "3396914609616007258851405644437304192397291162432396347162513310381425243293",
35 | "21551820661461729022865262380882070649935529853313286572328683688269863701601",
36 | "6573136701248752079028194407151022595060682063033565181951145966236778420039",
37 | "12413880268183407374852357075976609371175688755676981206018884971008854919922",
38 | "14271763308400718165336499097156975241954733520325982997864342600795471836726",
39 | "20066985985293572387227381049700832219069292839614107140851619262827735677018",
40 | "9394776414966240069580838672673694685292165040808226440647796406499139370960",
41 | "11331146992410411304059858900317123658895005918277453009197229807340014528524",
42 | "15819538789928229930262697811477882737253464456578333862691129291651619515538",
43 | "19217088683336594659449020493828377907203207941212636669271704950158751593251",
44 | "21035245323335827719745544373081896983162834604456827698288649288827293579666",
45 | "6939770416153240137322503476966641397417391950902474480970945462551409848591",
46 | "10941962436777715901943463195175331263348098796018438960955633645115732864202"
47 | ],
48 | "externalNullifier": "1",
49 | "signalHash": "90212440971967858186782821117966844623767893510927315567635373206777892737"
50 | }
--------------------------------------------------------------------------------
/semaphore_scripts/semaphore.circom:
--------------------------------------------------------------------------------
1 | pragma circom 2.0.2;
2 |
3 | include "../../semaphore/circuits/semaphore.circom";
4 |
--------------------------------------------------------------------------------
/test/circuits/pubkey_to_address.circom:
--------------------------------------------------------------------------------
1 | pragma circom 2.0.2;
2 |
3 | include "../../circom-ecdsa/circuits/zk-identity/eth.circom";
4 |
5 | // NOTE: one day this will be its own circuit for unit testing
6 | template ChunkedPubkeyToAddress() {
7 | signal input pubkey[2][4];
8 | signal output address;
9 |
10 | signal pubkeyBits[512];
11 |
12 | component flattenPubkey = FlattenPubkey(64, 4);
13 | for (var i = 0; i < 4; i++) {
14 | flattenPubkey.chunkedPubkey[0][i] <== pubkey[0][i];
15 | flattenPubkey.chunkedPubkey[1][i] <== pubkey[1][i];
16 | }
17 | for (var i = 0; i < 512; i++) {
18 | pubkeyBits[i] <== flattenPubkey.pubkeyBits[i];
19 | }
20 | component pubkeyToAddress = PubkeyToAddress();
21 | for (var i = 0; i < 512; i++) {
22 | pubkeyToAddress.pubkeyBits[i] <== pubkeyBits[i];
23 | }
24 | address <== pubkeyToAddress.address;
25 | }
26 |
27 | component main = ChunkedPubkeyToAddress();
--------------------------------------------------------------------------------
/test/circuits/sig_verify_64_4.circom:
--------------------------------------------------------------------------------
1 | pragma circom 2.0.2;
2 |
3 | include "../../circom-ecdsa/circuits/ecdsa.circom";
4 |
5 | // sanity testing sig verification in circom
6 | template SigVerify(n, k) {
7 | assert(k >= 2);
8 | assert(k <= 100);
9 |
10 | signal input r[k];
11 | signal input s[k];
12 | signal input msghash[k];
13 | signal input pubkey[2][k];
14 |
15 | // Step 1: signature verification
16 | component verifySignature = ECDSAVerifyNoPubkeyCheck(n, k);
17 | for (var i = 0; i < k; i++) {
18 | verifySignature.r[i] <== r[i];
19 | verifySignature.s[i] <== s[i];
20 | verifySignature.msghash[i] <== msghash[i];
21 | for (var j = 0; j < 2; j++) {
22 | verifySignature.pubkey[j][i] <== pubkey[j][i];
23 | }
24 | }
25 | verifySignature.result === 1;
26 | }
27 |
28 | component main = SigVerify(64, 4);
--------------------------------------------------------------------------------
/test/circuits/verify_merkle_proof_30.circom:
--------------------------------------------------------------------------------
1 | pragma circom 2.0.2;
2 |
3 | include "../../circuits/merkle.circom";
4 |
5 | component main {public [root]} =
6 | MerkleTreeChecker(30);
--------------------------------------------------------------------------------
/test/test_dizkus.js:
--------------------------------------------------------------------------------
1 | const path = require("path");
2 | const chai = require("chai");
3 | const circom_tester = require("circom_tester");
4 |
5 | const assert = chai.assert;
6 | const wasm_tester = circom_tester.wasm;
7 |
8 | // TODO: generate a few from the frontend and put em all here
9 | const sampleInput = {
10 | "root": "12890874683796057475982638126021753466203617277177808903147539631297044918772",
11 | "pathElements": [
12 | "1",
13 | "217234377348884654691879377518794323857294947151490278790710809376325639809",
14 | "18624361856574916496058203820366795950790078780687078257641649903530959943449",
15 | "19831903348221211061287449275113949495274937755341117892716020320428427983768",
16 | "5101361658164783800162950277964947086522384365207151283079909745362546177817",
17 | "11552819453851113656956689238827707323483753486799384854128595967739676085386",
18 | "10483540708739576660440356112223782712680507694971046950485797346645134034053",
19 | "7389929564247907165221817742923803467566552273918071630442219344496852141897",
20 | "6373467404037422198696850591961270197948259393735756505350173302460761391561",
21 | "14340012938942512497418634250250812329499499250184704496617019030530171289909",
22 | "10566235887680695760439252521824446945750533956882759130656396012316506290852",
23 | "14058207238811178801861080665931986752520779251556785412233046706263822020051",
24 | "1841804857146338876502603211473795482567574429038948082406470282797710112230",
25 | "6068974671277751946941356330314625335924522973707504316217201913831393258319",
26 | "10344803844228993379415834281058662700959138333457605334309913075063427817480",
27 | "1",
28 | "1",
29 | "1",
30 | "1",
31 | "1",
32 | "1",
33 | "1",
34 | "1",
35 | "1",
36 | "1",
37 | "1",
38 | "1",
39 | "1",
40 | "1",
41 | "1"
42 | ],
43 | "pathIndices": [
44 | "1",
45 | "1",
46 | "1",
47 | "1",
48 | "1",
49 | "1",
50 | "1",
51 | "1",
52 | "1",
53 | "1",
54 | "1",
55 | "1",
56 | "1",
57 | "1",
58 | "1",
59 | "1",
60 | "1",
61 | "1",
62 | "1",
63 | "1",
64 | "1",
65 | "1",
66 | "1",
67 | "1",
68 | "1",
69 | "1",
70 | "1",
71 | "1",
72 | "1",
73 | "1"
74 | ],
75 | "r": [
76 | "4343621220230669059",
77 | "18327250808238484200",
78 | "3755886376029024836",
79 | "15385541165691570987"
80 | ],
81 | "s": [
82 | "15310264094530460262",
83 | "1621297553241732651",
84 | "14659779539793693678",
85 | "6674094315802436376"
86 | ],
87 | "msghash": [
88 | "8013684013107543400",
89 | "3149366482839937187",
90 | "3130562494311484551",
91 | "15702822023081012803"
92 | ],
93 | "pubkey": [
94 | [
95 | "18367636299713276357",
96 | "3160037443724067799",
97 | "17055831292340408725",
98 | "11407900522529698842"
99 | ],
100 | [
101 | "6013285874336619060",
102 | "5158666445349947378",
103 | "11042035041177518474",
104 | "16013362528823638363"
105 | ]
106 | ]
107 | };
108 |
109 | // NOTE: not ideal to hardcode this in the future...
110 | const sampleAddress = "1355224352695827483975080807178260403365748530407";
111 |
112 | describe("dizkus-data generated inputs", function () {
113 | this.timeout(1200000);
114 |
115 | it("pubkey to address", async () => {
116 | let circuit = await wasm_tester(
117 | path.join(__dirname, "circuits", "pubkey_to_address.circom")
118 | );
119 | await circuit.loadConstraints();
120 |
121 | const witness = await circuit.calculateWitness(
122 | { pubkey: sampleInput.pubkey },
123 | true
124 | );
125 | await circuit.checkConstraints(witness);
126 | await circuit.assertOut(witness, { address: sampleAddress });
127 | });
128 |
129 | it("merkle tree inclusion", async () => {
130 | let circuit = await wasm_tester(
131 | path.join(__dirname, "circuits", "verify_merkle_proof_30.circom")
132 | );
133 | await circuit.loadConstraints();
134 |
135 | const input = {
136 | root: sampleInput.root,
137 | pathElements: sampleInput.pathElements,
138 | pathIndices: sampleInput.pathIndices,
139 | leaf: sampleAddress,
140 | };
141 | const witness = await circuit.calculateWitness(input, true);
142 | await circuit.checkConstraints(witness);
143 | });
144 |
145 | it("sig verification", async () => {
146 | let circuit = await wasm_tester(
147 | path.join(__dirname, "circuits", "sig_verify_64_4.circom")
148 | );
149 | await circuit.loadConstraints();
150 |
151 | const input = {
152 | r: sampleInput.r,
153 | s: sampleInput.s,
154 | msghash: sampleInput.msghash,
155 | pubkey: sampleInput.pubkey,
156 | };
157 | const witness = await circuit.calculateWitness(input, true);
158 | await circuit.checkConstraints(witness);
159 | });
160 |
161 | it("full circuit", async () => {
162 | let circuit = await wasm_tester(
163 | path.join(
164 | __dirname,
165 | "../scripts",
166 | "dizkus_64_4_30.circom"
167 | )
168 | );
169 | await circuit.loadConstraints();
170 |
171 | const witness = await circuit.calculateWitness(sampleInput, true);
172 | await circuit.checkConstraints(witness);
173 | });
174 | });
175 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@iden3/bigarray@0.0.2":
6 | "integrity" "sha512-Xzdyxqm1bOFF6pdIsiHLLl3HkSLjbhqJHVyqaTxXt3RqXBEnmsUmEW47H7VOi/ak7TdkRpNkxjyK5Zbkm+y52g=="
7 | "resolved" "https://registry.npmjs.org/@iden3/bigarray/-/bigarray-0.0.2.tgz"
8 | "version" "0.0.2"
9 |
10 | "@iden3/binfileutils@0.0.10":
11 | "integrity" "sha512-mDtBiKYcHs9K8vnznd8md0In6e5hL6i7ITzlHQ6Xxx6kvGAgB8UZeHJ0KswS6IJK4x9v2mwHsh5kIDl245cQZg=="
12 | "resolved" "https://registry.npmjs.org/@iden3/binfileutils/-/binfileutils-0.0.10.tgz"
13 | "version" "0.0.10"
14 | dependencies:
15 | "fastfile" "0.0.19"
16 | "ffjavascript" "^0.2.48"
17 |
18 | "@iden3/binfileutils@0.0.11":
19 | "integrity" "sha512-LylnJoZ0CTdgErnKY8OxohvW4K+p6UHD3sxt+3P9AmMyBQjYR4IpoqoYZZ+9aMj89cmCQ21UvdhndAx04er3NA=="
20 | "resolved" "https://registry.npmjs.org/@iden3/binfileutils/-/binfileutils-0.0.11.tgz"
21 | "version" "0.0.11"
22 | dependencies:
23 | "fastfile" "0.0.20"
24 | "ffjavascript" "^0.2.48"
25 |
26 | "@iden3/binfileutils@0.0.8":
27 | "integrity" "sha512-/GqTsujUssGuQY+sd/XaLrA+OiCwzm+6yH28C57QQDWCHET2Logry9fGxU10n6XKdhCQBjZ7T/YMQkLwwkpRTQ=="
28 | "resolved" "https://registry.npmjs.org/@iden3/binfileutils/-/binfileutils-0.0.8.tgz"
29 | "version" "0.0.8"
30 | dependencies:
31 | "fastfile" "0.0.19"
32 | "ffjavascript" "^0.2.30"
33 |
34 | "@ungap/promise-all-settled@1.1.2":
35 | "integrity" "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q=="
36 | "resolved" "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz"
37 | "version" "1.1.2"
38 |
39 | "ansi-colors@4.1.1":
40 | "integrity" "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA=="
41 | "resolved" "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz"
42 | "version" "4.1.1"
43 |
44 | "ansi-regex@^5.0.1":
45 | "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
46 | "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz"
47 | "version" "5.0.1"
48 |
49 | "ansi-styles@^4.0.0", "ansi-styles@^4.1.0":
50 | "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="
51 | "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
52 | "version" "4.3.0"
53 | dependencies:
54 | "color-convert" "^2.0.1"
55 |
56 | "anymatch@~3.1.2":
57 | "integrity" "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg=="
58 | "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz"
59 | "version" "3.1.2"
60 | dependencies:
61 | "normalize-path" "^3.0.0"
62 | "picomatch" "^2.0.4"
63 |
64 | "argparse@^2.0.1":
65 | "integrity" "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
66 | "resolved" "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz"
67 | "version" "2.0.1"
68 |
69 | "assertion-error@^1.1.0":
70 | "integrity" "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw=="
71 | "resolved" "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz"
72 | "version" "1.1.0"
73 |
74 | "async@^3.2.3":
75 | "integrity" "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
76 | "resolved" "https://registry.npmjs.org/async/-/async-3.2.4.tgz"
77 | "version" "3.2.4"
78 |
79 | "available-typed-arrays@^1.0.5":
80 | "integrity" "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw=="
81 | "resolved" "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz"
82 | "version" "1.0.5"
83 |
84 | "b4a@^1.0.1":
85 | "integrity" "sha512-1aCQIzQJK7G0z1Una75tWMlwVAR8o+QHoAlnWc5XAxRVBESY9WsitfBgM5nPyDBP5HrhPU1Np4Pq2Y7CJQ+tVw=="
86 | "resolved" "https://registry.npmjs.org/b4a/-/b4a-1.5.3.tgz"
87 | "version" "1.5.3"
88 |
89 | "balanced-match@^1.0.0":
90 | "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
91 | "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
92 | "version" "1.0.2"
93 |
94 | "big-integer@^1.6.42", "big-integer@^1.6.48":
95 | "integrity" "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg=="
96 | "resolved" "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz"
97 | "version" "1.6.51"
98 |
99 | "binary-extensions@^2.0.0":
100 | "integrity" "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
101 | "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz"
102 | "version" "2.2.0"
103 |
104 | "blake2b-wasm@^2.3.0", "blake2b-wasm@^2.4.0":
105 | "integrity" "sha512-S1kwmW2ZhZFFFOghcx73+ZajEfKBqhP82JMssxtLVMxlaPea1p9uoLiUZ5WYyHn0KddwbLc+0vh4wR0KBNoT5w=="
106 | "resolved" "https://registry.npmjs.org/blake2b-wasm/-/blake2b-wasm-2.4.0.tgz"
107 | "version" "2.4.0"
108 | dependencies:
109 | "b4a" "^1.0.1"
110 | "nanoassert" "^2.0.0"
111 |
112 | "blakejs@^1.1.0":
113 | "integrity" "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ=="
114 | "resolved" "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz"
115 | "version" "1.2.1"
116 |
117 | "brace-expansion@^1.1.7":
118 | "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="
119 | "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"
120 | "version" "1.1.11"
121 | dependencies:
122 | "balanced-match" "^1.0.0"
123 | "concat-map" "0.0.1"
124 |
125 | "brace-expansion@^2.0.1":
126 | "integrity" "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="
127 | "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz"
128 | "version" "2.0.1"
129 | dependencies:
130 | "balanced-match" "^1.0.0"
131 |
132 | "braces@~3.0.2":
133 | "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A=="
134 | "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz"
135 | "version" "3.0.2"
136 | dependencies:
137 | "fill-range" "^7.0.1"
138 |
139 | "browser-stdout@1.3.1":
140 | "integrity" "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw=="
141 | "resolved" "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz"
142 | "version" "1.3.1"
143 |
144 | "call-bind@^1.0.0", "call-bind@^1.0.2":
145 | "integrity" "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA=="
146 | "resolved" "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz"
147 | "version" "1.0.2"
148 | dependencies:
149 | "function-bind" "^1.1.1"
150 | "get-intrinsic" "^1.0.2"
151 |
152 | "camelcase@^6.0.0":
153 | "integrity" "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA=="
154 | "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz"
155 | "version" "6.3.0"
156 |
157 | "chai@^4.3.4", "chai@^4.3.6":
158 | "integrity" "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q=="
159 | "resolved" "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz"
160 | "version" "4.3.6"
161 | dependencies:
162 | "assertion-error" "^1.1.0"
163 | "check-error" "^1.0.2"
164 | "deep-eql" "^3.0.1"
165 | "get-func-name" "^2.0.0"
166 | "loupe" "^2.3.1"
167 | "pathval" "^1.1.1"
168 | "type-detect" "^4.0.5"
169 |
170 | "chalk@^4.0.2", "chalk@^4.1.0":
171 | "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="
172 | "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
173 | "version" "4.1.2"
174 | dependencies:
175 | "ansi-styles" "^4.1.0"
176 | "supports-color" "^7.1.0"
177 |
178 | "check-error@^1.0.2":
179 | "integrity" "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA=="
180 | "resolved" "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz"
181 | "version" "1.0.2"
182 |
183 | "child_process@^1.0.2":
184 | "integrity" "sha512-Wmza/JzL0SiWz7kl6MhIKT5ceIlnFPJX+lwUGj7Clhy5MMldsSoJR0+uvRzOS5Kv45Mq7t1PoE8TsOA9bzvb6g=="
185 | "resolved" "https://registry.npmjs.org/child_process/-/child_process-1.0.2.tgz"
186 | "version" "1.0.2"
187 |
188 | "chokidar@3.5.3":
189 | "integrity" "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw=="
190 | "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz"
191 | "version" "3.5.3"
192 | dependencies:
193 | "anymatch" "~3.1.2"
194 | "braces" "~3.0.2"
195 | "glob-parent" "~5.1.2"
196 | "is-binary-path" "~2.1.0"
197 | "is-glob" "~4.0.1"
198 | "normalize-path" "~3.0.0"
199 | "readdirp" "~3.6.0"
200 | optionalDependencies:
201 | "fsevents" "~2.3.2"
202 |
203 | "circom_runtime@0.1.14":
204 | "integrity" "sha512-MLbHHZVkYuWyZiYErLmT5y0qbTRXDD1NhaDyLhQNF0JCb6brx8r/VJDevwne7sT1re7qHpHCQAL5rhqByQ7obQ=="
205 | "resolved" "https://registry.npmjs.org/circom_runtime/-/circom_runtime-0.1.14.tgz"
206 | "version" "0.1.14"
207 | dependencies:
208 | "ffjavascript" "0.2.39"
209 | "fnv-plus" "^1.3.1"
210 |
211 | "circom_runtime@0.1.17":
212 | "integrity" "sha512-FCOCPz7ZbqL4TpzBlISRZ7/fcYHkdZz0DMfju1DYHiRU/+ZzJQfDS8JYENlnb9PO+HsLTr6/QtzphqvnEBp9AQ=="
213 | "resolved" "https://registry.npmjs.org/circom_runtime/-/circom_runtime-0.1.17.tgz"
214 | "version" "0.1.17"
215 | dependencies:
216 | "ffjavascript" "0.2.48"
217 |
218 | "circom_tester@^0.0.14":
219 | "integrity" "sha512-LX67XrOsmsAmiuwCf7zjq8mB/MObgfGxa78X7G3gU8u55L2xzoKw4NYDMkHbrSFKuU8DMheuSMw8WN/KrjwBQg=="
220 | "resolved" "https://registry.npmjs.org/circom_tester/-/circom_tester-0.0.14.tgz"
221 | "version" "0.0.14"
222 | dependencies:
223 | "chai" "^4.3.4"
224 | "child_process" "^1.0.2"
225 | "ffjavascript" "^0.2.38"
226 | "fnv-plus" "^1.3.1"
227 | "r1csfile" "0.0.37"
228 | "snarkjs" "0.4.10"
229 | "tmp-promise" "^3.0.2"
230 | "util" "^0.12.4"
231 |
232 | "cliui@^7.0.2":
233 | "integrity" "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ=="
234 | "resolved" "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz"
235 | "version" "7.0.4"
236 | dependencies:
237 | "string-width" "^4.2.0"
238 | "strip-ansi" "^6.0.0"
239 | "wrap-ansi" "^7.0.0"
240 |
241 | "color-convert@^2.0.1":
242 | "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="
243 | "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
244 | "version" "2.0.1"
245 | dependencies:
246 | "color-name" "~1.1.4"
247 |
248 | "color-name@~1.1.4":
249 | "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
250 | "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
251 | "version" "1.1.4"
252 |
253 | "concat-map@0.0.1":
254 | "integrity" "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
255 | "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
256 | "version" "0.0.1"
257 |
258 | "debug@4.3.4":
259 | "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="
260 | "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"
261 | "version" "4.3.4"
262 | dependencies:
263 | "ms" "2.1.2"
264 |
265 | "decamelize@^4.0.0":
266 | "integrity" "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ=="
267 | "resolved" "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz"
268 | "version" "4.0.0"
269 |
270 | "deep-eql@^3.0.1":
271 | "integrity" "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw=="
272 | "resolved" "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz"
273 | "version" "3.0.1"
274 | dependencies:
275 | "type-detect" "^4.0.0"
276 |
277 | "define-properties@^1.1.3", "define-properties@^1.1.4":
278 | "integrity" "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA=="
279 | "resolved" "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz"
280 | "version" "1.1.4"
281 | dependencies:
282 | "has-property-descriptors" "^1.0.0"
283 | "object-keys" "^1.1.1"
284 |
285 | "diff@5.0.0":
286 | "integrity" "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w=="
287 | "resolved" "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz"
288 | "version" "5.0.0"
289 |
290 | "ejs@^3.1.6":
291 | "integrity" "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ=="
292 | "resolved" "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz"
293 | "version" "3.1.8"
294 | dependencies:
295 | "jake" "^10.8.5"
296 |
297 | "emoji-regex@^8.0.0":
298 | "integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
299 | "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz"
300 | "version" "8.0.0"
301 |
302 | "es-abstract@^1.19.0", "es-abstract@^1.19.5", "es-abstract@^1.20.0":
303 | "integrity" "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA=="
304 | "resolved" "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz"
305 | "version" "1.20.1"
306 | dependencies:
307 | "call-bind" "^1.0.2"
308 | "es-to-primitive" "^1.2.1"
309 | "function-bind" "^1.1.1"
310 | "function.prototype.name" "^1.1.5"
311 | "get-intrinsic" "^1.1.1"
312 | "get-symbol-description" "^1.0.0"
313 | "has" "^1.0.3"
314 | "has-property-descriptors" "^1.0.0"
315 | "has-symbols" "^1.0.3"
316 | "internal-slot" "^1.0.3"
317 | "is-callable" "^1.2.4"
318 | "is-negative-zero" "^2.0.2"
319 | "is-regex" "^1.1.4"
320 | "is-shared-array-buffer" "^1.0.2"
321 | "is-string" "^1.0.7"
322 | "is-weakref" "^1.0.2"
323 | "object-inspect" "^1.12.0"
324 | "object-keys" "^1.1.1"
325 | "object.assign" "^4.1.2"
326 | "regexp.prototype.flags" "^1.4.3"
327 | "string.prototype.trimend" "^1.0.5"
328 | "string.prototype.trimstart" "^1.0.5"
329 | "unbox-primitive" "^1.0.2"
330 |
331 | "es-to-primitive@^1.2.1":
332 | "integrity" "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA=="
333 | "resolved" "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz"
334 | "version" "1.2.1"
335 | dependencies:
336 | "is-callable" "^1.1.4"
337 | "is-date-object" "^1.0.1"
338 | "is-symbol" "^1.0.2"
339 |
340 | "escalade@^3.1.1":
341 | "integrity" "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
342 | "resolved" "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz"
343 | "version" "3.1.1"
344 |
345 | "escape-string-regexp@4.0.0":
346 | "integrity" "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
347 | "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz"
348 | "version" "4.0.0"
349 |
350 | "fastfile@^0.0.19", "fastfile@0.0.19":
351 | "integrity" "sha512-tz9nWR5KYb6eR2odFQ7oxqEkx8F3YQZ6NBJoJR92YEG3DqYOqyxMck8PKvTVNKx3uwvOqGnLXNScnqpdHRdHGQ=="
352 | "resolved" "https://registry.npmjs.org/fastfile/-/fastfile-0.0.19.tgz"
353 | "version" "0.0.19"
354 |
355 | "fastfile@0.0.20":
356 | "integrity" "sha512-r5ZDbgImvVWCP0lA/cGNgQcZqR+aYdFx3u+CtJqUE510pBUVGMn4ulL/iRTI4tACTYsNJ736uzFxEBXesPAktA=="
357 | "resolved" "https://registry.npmjs.org/fastfile/-/fastfile-0.0.20.tgz"
358 | "version" "0.0.20"
359 |
360 | "ffjavascript@^0.2.30":
361 | "integrity" "sha512-8X0FCIPOWiK6DTWh3pnE3O6D6nIQsirStAXpWMzRDnoDX7SEnDX4I28aVhwjL7L35XS1vy2AU7zc0UCGYxdLjw=="
362 | "resolved" "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.2.55.tgz"
363 | "version" "0.2.55"
364 | dependencies:
365 | "big-integer" "^1.6.48"
366 | "wasmbuilder" "^0.0.12"
367 | "wasmcurves" "0.1.0"
368 | "web-worker" "^1.2.0"
369 |
370 | "ffjavascript@^0.2.38", "ffjavascript@^0.2.48", "ffjavascript@0.2.55":
371 | "integrity" "sha512-8X0FCIPOWiK6DTWh3pnE3O6D6nIQsirStAXpWMzRDnoDX7SEnDX4I28aVhwjL7L35XS1vy2AU7zc0UCGYxdLjw=="
372 | "resolved" "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.2.55.tgz"
373 | "version" "0.2.55"
374 | dependencies:
375 | "big-integer" "^1.6.48"
376 | "wasmbuilder" "^0.0.12"
377 | "wasmcurves" "0.1.0"
378 | "web-worker" "^1.2.0"
379 |
380 | "ffjavascript@0.2.39":
381 | "integrity" "sha512-9ewb5keKHL1owKTxCK7sDuA34SPJxnznWqdJgwBW51moCvg+wf9L0W5mcxm8qMUxt2OE/KjBQUKmYLaKyNNrPw=="
382 | "resolved" "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.2.39.tgz"
383 | "version" "0.2.39"
384 | dependencies:
385 | "big-integer" "^1.6.48"
386 | "wasmcurves" "0.0.14"
387 | "web-worker" "^1.0.0"
388 |
389 | "ffjavascript@0.2.48":
390 | "integrity" "sha512-uNrWP+odLofNmmO+iCCPi/Xt/sJh1ku3pVKmKWVWCLFfdCP69hvRrogKUIGnsdiINcWn0lGxcEh5oEjStMFXQQ=="
391 | "resolved" "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.2.48.tgz"
392 | "version" "0.2.48"
393 | dependencies:
394 | "big-integer" "^1.6.48"
395 | "wasmbuilder" "^0.0.12"
396 | "wasmcurves" "0.1.0"
397 | "web-worker" "^1.2.0"
398 |
399 | "filelist@^1.0.1":
400 | "integrity" "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q=="
401 | "resolved" "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz"
402 | "version" "1.0.4"
403 | dependencies:
404 | "minimatch" "^5.0.1"
405 |
406 | "fill-range@^7.0.1":
407 | "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ=="
408 | "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz"
409 | "version" "7.0.1"
410 | dependencies:
411 | "to-regex-range" "^5.0.1"
412 |
413 | "find-up@5.0.0":
414 | "integrity" "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="
415 | "resolved" "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz"
416 | "version" "5.0.0"
417 | dependencies:
418 | "locate-path" "^6.0.0"
419 | "path-exists" "^4.0.0"
420 |
421 | "flat@^5.0.2":
422 | "integrity" "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ=="
423 | "resolved" "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz"
424 | "version" "5.0.2"
425 |
426 | "fnv-plus@^1.3.1":
427 | "integrity" "sha512-Gz1EvfOneuFfk4yG458dJ3TLJ7gV19q3OM/vVvvHf7eT02Hm1DleB4edsia6ahbKgAYxO9gvyQ1ioWZR+a00Yw=="
428 | "resolved" "https://registry.npmjs.org/fnv-plus/-/fnv-plus-1.3.1.tgz"
429 | "version" "1.3.1"
430 |
431 | "for-each@^0.3.3":
432 | "integrity" "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw=="
433 | "resolved" "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz"
434 | "version" "0.3.3"
435 | dependencies:
436 | "is-callable" "^1.1.3"
437 |
438 | "fs.realpath@^1.0.0":
439 | "integrity" "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
440 | "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
441 | "version" "1.0.0"
442 |
443 | "function-bind@^1.1.1":
444 | "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
445 | "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"
446 | "version" "1.1.1"
447 |
448 | "function.prototype.name@^1.1.5":
449 | "integrity" "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA=="
450 | "resolved" "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz"
451 | "version" "1.1.5"
452 | dependencies:
453 | "call-bind" "^1.0.2"
454 | "define-properties" "^1.1.3"
455 | "es-abstract" "^1.19.0"
456 | "functions-have-names" "^1.2.2"
457 |
458 | "functions-have-names@^1.2.2":
459 | "integrity" "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ=="
460 | "resolved" "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz"
461 | "version" "1.2.3"
462 |
463 | "get-caller-file@^2.0.5":
464 | "integrity" "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
465 | "resolved" "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz"
466 | "version" "2.0.5"
467 |
468 | "get-func-name@^2.0.0":
469 | "integrity" "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig=="
470 | "resolved" "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz"
471 | "version" "2.0.0"
472 |
473 | "get-intrinsic@^1.0.2", "get-intrinsic@^1.1.0", "get-intrinsic@^1.1.1":
474 | "integrity" "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA=="
475 | "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz"
476 | "version" "1.1.2"
477 | dependencies:
478 | "function-bind" "^1.1.1"
479 | "has" "^1.0.3"
480 | "has-symbols" "^1.0.3"
481 |
482 | "get-symbol-description@^1.0.0":
483 | "integrity" "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw=="
484 | "resolved" "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz"
485 | "version" "1.0.0"
486 | dependencies:
487 | "call-bind" "^1.0.2"
488 | "get-intrinsic" "^1.1.1"
489 |
490 | "glob-parent@~5.1.2":
491 | "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="
492 | "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
493 | "version" "5.1.2"
494 | dependencies:
495 | "is-glob" "^4.0.1"
496 |
497 | "glob@^7.1.3":
498 | "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="
499 | "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"
500 | "version" "7.2.3"
501 | dependencies:
502 | "fs.realpath" "^1.0.0"
503 | "inflight" "^1.0.4"
504 | "inherits" "2"
505 | "minimatch" "^3.1.1"
506 | "once" "^1.3.0"
507 | "path-is-absolute" "^1.0.0"
508 |
509 | "glob@7.2.0":
510 | "integrity" "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q=="
511 | "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz"
512 | "version" "7.2.0"
513 | dependencies:
514 | "fs.realpath" "^1.0.0"
515 | "inflight" "^1.0.4"
516 | "inherits" "2"
517 | "minimatch" "^3.0.4"
518 | "once" "^1.3.0"
519 | "path-is-absolute" "^1.0.0"
520 |
521 | "has-bigints@^1.0.1", "has-bigints@^1.0.2":
522 | "integrity" "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ=="
523 | "resolved" "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz"
524 | "version" "1.0.2"
525 |
526 | "has-flag@^4.0.0":
527 | "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
528 | "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"
529 | "version" "4.0.0"
530 |
531 | "has-property-descriptors@^1.0.0":
532 | "integrity" "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ=="
533 | "resolved" "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz"
534 | "version" "1.0.0"
535 | dependencies:
536 | "get-intrinsic" "^1.1.1"
537 |
538 | "has-symbols@^1.0.1", "has-symbols@^1.0.2", "has-symbols@^1.0.3":
539 | "integrity" "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
540 | "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz"
541 | "version" "1.0.3"
542 |
543 | "has-tostringtag@^1.0.0":
544 | "integrity" "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ=="
545 | "resolved" "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz"
546 | "version" "1.0.0"
547 | dependencies:
548 | "has-symbols" "^1.0.2"
549 |
550 | "has@^1.0.3":
551 | "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw=="
552 | "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz"
553 | "version" "1.0.3"
554 | dependencies:
555 | "function-bind" "^1.1.1"
556 |
557 | "he@1.2.0":
558 | "integrity" "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
559 | "resolved" "https://registry.npmjs.org/he/-/he-1.2.0.tgz"
560 | "version" "1.2.0"
561 |
562 | "inflight@^1.0.4":
563 | "integrity" "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA=="
564 | "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
565 | "version" "1.0.6"
566 | dependencies:
567 | "once" "^1.3.0"
568 | "wrappy" "1"
569 |
570 | "inherits@^2.0.3", "inherits@2":
571 | "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
572 | "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
573 | "version" "2.0.4"
574 |
575 | "inherits@2.0.3":
576 | "integrity" "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="
577 | "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz"
578 | "version" "2.0.3"
579 |
580 | "internal-slot@^1.0.3":
581 | "integrity" "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA=="
582 | "resolved" "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz"
583 | "version" "1.0.3"
584 | dependencies:
585 | "get-intrinsic" "^1.1.0"
586 | "has" "^1.0.3"
587 | "side-channel" "^1.0.4"
588 |
589 | "is-arguments@^1.0.4":
590 | "integrity" "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA=="
591 | "resolved" "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz"
592 | "version" "1.1.1"
593 | dependencies:
594 | "call-bind" "^1.0.2"
595 | "has-tostringtag" "^1.0.0"
596 |
597 | "is-bigint@^1.0.1":
598 | "integrity" "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg=="
599 | "resolved" "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz"
600 | "version" "1.0.4"
601 | dependencies:
602 | "has-bigints" "^1.0.1"
603 |
604 | "is-binary-path@~2.1.0":
605 | "integrity" "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="
606 | "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz"
607 | "version" "2.1.0"
608 | dependencies:
609 | "binary-extensions" "^2.0.0"
610 |
611 | "is-boolean-object@^1.1.0":
612 | "integrity" "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA=="
613 | "resolved" "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz"
614 | "version" "1.1.2"
615 | dependencies:
616 | "call-bind" "^1.0.2"
617 | "has-tostringtag" "^1.0.0"
618 |
619 | "is-callable@^1.1.3", "is-callable@^1.1.4", "is-callable@^1.2.4":
620 | "integrity" "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w=="
621 | "resolved" "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz"
622 | "version" "1.2.4"
623 |
624 | "is-date-object@^1.0.1":
625 | "integrity" "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ=="
626 | "resolved" "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz"
627 | "version" "1.0.5"
628 | dependencies:
629 | "has-tostringtag" "^1.0.0"
630 |
631 | "is-extglob@^2.1.1":
632 | "integrity" "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
633 | "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz"
634 | "version" "2.1.1"
635 |
636 | "is-fullwidth-code-point@^3.0.0":
637 | "integrity" "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
638 | "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz"
639 | "version" "3.0.0"
640 |
641 | "is-generator-function@^1.0.7":
642 | "integrity" "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A=="
643 | "resolved" "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz"
644 | "version" "1.0.10"
645 | dependencies:
646 | "has-tostringtag" "^1.0.0"
647 |
648 | "is-glob@^4.0.1", "is-glob@~4.0.1":
649 | "integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="
650 | "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz"
651 | "version" "4.0.3"
652 | dependencies:
653 | "is-extglob" "^2.1.1"
654 |
655 | "is-negative-zero@^2.0.2":
656 | "integrity" "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA=="
657 | "resolved" "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz"
658 | "version" "2.0.2"
659 |
660 | "is-number-object@^1.0.4":
661 | "integrity" "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ=="
662 | "resolved" "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz"
663 | "version" "1.0.7"
664 | dependencies:
665 | "has-tostringtag" "^1.0.0"
666 |
667 | "is-number@^7.0.0":
668 | "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
669 | "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz"
670 | "version" "7.0.0"
671 |
672 | "is-plain-obj@^2.1.0":
673 | "integrity" "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA=="
674 | "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz"
675 | "version" "2.1.0"
676 |
677 | "is-regex@^1.1.4":
678 | "integrity" "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg=="
679 | "resolved" "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz"
680 | "version" "1.1.4"
681 | dependencies:
682 | "call-bind" "^1.0.2"
683 | "has-tostringtag" "^1.0.0"
684 |
685 | "is-shared-array-buffer@^1.0.2":
686 | "integrity" "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA=="
687 | "resolved" "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz"
688 | "version" "1.0.2"
689 | dependencies:
690 | "call-bind" "^1.0.2"
691 |
692 | "is-string@^1.0.5", "is-string@^1.0.7":
693 | "integrity" "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg=="
694 | "resolved" "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz"
695 | "version" "1.0.7"
696 | dependencies:
697 | "has-tostringtag" "^1.0.0"
698 |
699 | "is-symbol@^1.0.2", "is-symbol@^1.0.3":
700 | "integrity" "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg=="
701 | "resolved" "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz"
702 | "version" "1.0.4"
703 | dependencies:
704 | "has-symbols" "^1.0.2"
705 |
706 | "is-typed-array@^1.1.3", "is-typed-array@^1.1.9":
707 | "integrity" "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A=="
708 | "resolved" "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz"
709 | "version" "1.1.9"
710 | dependencies:
711 | "available-typed-arrays" "^1.0.5"
712 | "call-bind" "^1.0.2"
713 | "es-abstract" "^1.20.0"
714 | "for-each" "^0.3.3"
715 | "has-tostringtag" "^1.0.0"
716 |
717 | "is-unicode-supported@^0.1.0":
718 | "integrity" "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw=="
719 | "resolved" "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz"
720 | "version" "0.1.0"
721 |
722 | "is-weakref@^1.0.2":
723 | "integrity" "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ=="
724 | "resolved" "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz"
725 | "version" "1.0.2"
726 | dependencies:
727 | "call-bind" "^1.0.2"
728 |
729 | "jake@^10.8.5":
730 | "integrity" "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw=="
731 | "resolved" "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz"
732 | "version" "10.8.5"
733 | dependencies:
734 | "async" "^3.2.3"
735 | "chalk" "^4.0.2"
736 | "filelist" "^1.0.1"
737 | "minimatch" "^3.0.4"
738 |
739 | "js-sha3@^0.8.0":
740 | "integrity" "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q=="
741 | "resolved" "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz"
742 | "version" "0.8.0"
743 |
744 | "js-yaml@4.1.0":
745 | "integrity" "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="
746 | "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz"
747 | "version" "4.1.0"
748 | dependencies:
749 | "argparse" "^2.0.1"
750 |
751 | "locate-path@^6.0.0":
752 | "integrity" "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="
753 | "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz"
754 | "version" "6.0.0"
755 | dependencies:
756 | "p-locate" "^5.0.0"
757 |
758 | "log-symbols@4.1.0":
759 | "integrity" "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg=="
760 | "resolved" "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz"
761 | "version" "4.1.0"
762 | dependencies:
763 | "chalk" "^4.1.0"
764 | "is-unicode-supported" "^0.1.0"
765 |
766 | "logplease@^1.2.15":
767 | "integrity" "sha512-jLlHnlsPSJjpwUfcNyUxXCl33AYg2cHhIf9QhGL2T4iPT0XPB+xP1LRKFPgIg1M/sg9kAJvy94w9CzBNrfnstA=="
768 | "resolved" "https://registry.npmjs.org/logplease/-/logplease-1.2.15.tgz"
769 | "version" "1.2.15"
770 |
771 | "loupe@^2.3.1":
772 | "integrity" "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ=="
773 | "resolved" "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz"
774 | "version" "2.3.4"
775 | dependencies:
776 | "get-func-name" "^2.0.0"
777 |
778 | "minimatch@^3.0.4", "minimatch@^3.1.1":
779 | "integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="
780 | "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
781 | "version" "3.1.2"
782 | dependencies:
783 | "brace-expansion" "^1.1.7"
784 |
785 | "minimatch@^5.0.1":
786 | "integrity" "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg=="
787 | "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz"
788 | "version" "5.1.0"
789 | dependencies:
790 | "brace-expansion" "^2.0.1"
791 |
792 | "minimatch@5.0.1":
793 | "integrity" "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g=="
794 | "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz"
795 | "version" "5.0.1"
796 | dependencies:
797 | "brace-expansion" "^2.0.1"
798 |
799 | "mocha@^10.0.0":
800 | "integrity" "sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA=="
801 | "resolved" "https://registry.npmjs.org/mocha/-/mocha-10.0.0.tgz"
802 | "version" "10.0.0"
803 | dependencies:
804 | "@ungap/promise-all-settled" "1.1.2"
805 | "ansi-colors" "4.1.1"
806 | "browser-stdout" "1.3.1"
807 | "chokidar" "3.5.3"
808 | "debug" "4.3.4"
809 | "diff" "5.0.0"
810 | "escape-string-regexp" "4.0.0"
811 | "find-up" "5.0.0"
812 | "glob" "7.2.0"
813 | "he" "1.2.0"
814 | "js-yaml" "4.1.0"
815 | "log-symbols" "4.1.0"
816 | "minimatch" "5.0.1"
817 | "ms" "2.1.3"
818 | "nanoid" "3.3.3"
819 | "serialize-javascript" "6.0.0"
820 | "strip-json-comments" "3.1.1"
821 | "supports-color" "8.1.1"
822 | "workerpool" "6.2.1"
823 | "yargs" "16.2.0"
824 | "yargs-parser" "20.2.4"
825 | "yargs-unparser" "2.0.0"
826 |
827 | "ms@2.1.2":
828 | "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
829 | "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"
830 | "version" "2.1.2"
831 |
832 | "ms@2.1.3":
833 | "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
834 | "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
835 | "version" "2.1.3"
836 |
837 | "nanoassert@^2.0.0":
838 | "integrity" "sha512-7vO7n28+aYO4J+8w96AzhmU8G+Y/xpPDJz/se19ICsqj/momRbb9mh9ZUtkoJ5X3nTnPdhEJyc0qnM6yAsHBaA=="
839 | "resolved" "https://registry.npmjs.org/nanoassert/-/nanoassert-2.0.0.tgz"
840 | "version" "2.0.0"
841 |
842 | "nanoid@3.3.3":
843 | "integrity" "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w=="
844 | "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz"
845 | "version" "3.3.3"
846 |
847 | "normalize-path@^3.0.0", "normalize-path@~3.0.0":
848 | "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
849 | "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz"
850 | "version" "3.0.0"
851 |
852 | "object-inspect@^1.12.0", "object-inspect@^1.9.0":
853 | "integrity" "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ=="
854 | "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz"
855 | "version" "1.12.2"
856 |
857 | "object-keys@^1.1.1":
858 | "integrity" "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
859 | "resolved" "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz"
860 | "version" "1.1.1"
861 |
862 | "object.assign@^4.1.2":
863 | "integrity" "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ=="
864 | "resolved" "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz"
865 | "version" "4.1.2"
866 | dependencies:
867 | "call-bind" "^1.0.0"
868 | "define-properties" "^1.1.3"
869 | "has-symbols" "^1.0.1"
870 | "object-keys" "^1.1.1"
871 |
872 | "once@^1.3.0":
873 | "integrity" "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="
874 | "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
875 | "version" "1.4.0"
876 | dependencies:
877 | "wrappy" "1"
878 |
879 | "p-limit@^3.0.2":
880 | "integrity" "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="
881 | "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz"
882 | "version" "3.1.0"
883 | dependencies:
884 | "yocto-queue" "^0.1.0"
885 |
886 | "p-locate@^5.0.0":
887 | "integrity" "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="
888 | "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz"
889 | "version" "5.0.0"
890 | dependencies:
891 | "p-limit" "^3.0.2"
892 |
893 | "path-exists@^4.0.0":
894 | "integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
895 | "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz"
896 | "version" "4.0.0"
897 |
898 | "path-is-absolute@^1.0.0":
899 | "integrity" "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="
900 | "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
901 | "version" "1.0.1"
902 |
903 | "path@^0.12.7":
904 | "integrity" "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q=="
905 | "resolved" "https://registry.npmjs.org/path/-/path-0.12.7.tgz"
906 | "version" "0.12.7"
907 | dependencies:
908 | "process" "^0.11.1"
909 | "util" "^0.10.3"
910 |
911 | "pathval@^1.1.1":
912 | "integrity" "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ=="
913 | "resolved" "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz"
914 | "version" "1.1.1"
915 |
916 | "picomatch@^2.0.4", "picomatch@^2.2.1":
917 | "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
918 | "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
919 | "version" "2.3.1"
920 |
921 | "process@^0.11.1":
922 | "integrity" "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A=="
923 | "resolved" "https://registry.npmjs.org/process/-/process-0.11.10.tgz"
924 | "version" "0.11.10"
925 |
926 | "r1csfile@0.0.33":
927 | "integrity" "sha512-aSZa/Vy6avJ146MOewUNRYdDLJCDINZ7aqSt0Zhw4uVrd4TijOz6gBfmckr7tPILaT3RNp7THVpUzeW0++OlJw=="
928 | "resolved" "https://registry.npmjs.org/r1csfile/-/r1csfile-0.0.33.tgz"
929 | "version" "0.0.33"
930 | dependencies:
931 | "@iden3/bigarray" "0.0.2"
932 | "@iden3/binfileutils" "0.0.8"
933 | "fastfile" "0.0.19"
934 | "ffjavascript" "0.2.39"
935 |
936 | "r1csfile@0.0.35":
937 | "integrity" "sha512-n6RTn7KxtfHxw5gjljYBaEuhVkXEQ2sZW1XVan7fwdwvQt9Kd65/A0cy+nNHL4GRGAHEaBMdYj0JOl/3kXln4Q=="
938 | "resolved" "https://registry.npmjs.org/r1csfile/-/r1csfile-0.0.35.tgz"
939 | "version" "0.0.35"
940 | dependencies:
941 | "@iden3/bigarray" "0.0.2"
942 | "@iden3/binfileutils" "0.0.10"
943 | "fastfile" "0.0.19"
944 | "ffjavascript" "0.2.48"
945 |
946 | "r1csfile@0.0.37":
947 | "integrity" "sha512-6Yb2SqWU59t7wWUX0/4BvVtWAN7RwkIobFJ90+RD3MB2Y5gb5aBGkFWJxDLqqWQbmQnv3y0ekpfDxbtNNAgrGw=="
948 | "resolved" "https://registry.npmjs.org/r1csfile/-/r1csfile-0.0.37.tgz"
949 | "version" "0.0.37"
950 | dependencies:
951 | "@iden3/bigarray" "0.0.2"
952 | "@iden3/binfileutils" "0.0.11"
953 | "fastfile" "0.0.20"
954 | "ffjavascript" "0.2.55"
955 |
956 | "randombytes@^2.1.0":
957 | "integrity" "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ=="
958 | "resolved" "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz"
959 | "version" "2.1.0"
960 | dependencies:
961 | "safe-buffer" "^5.1.0"
962 |
963 | "readdirp@~3.6.0":
964 | "integrity" "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="
965 | "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz"
966 | "version" "3.6.0"
967 | dependencies:
968 | "picomatch" "^2.2.1"
969 |
970 | "readline@^1.3.0":
971 | "integrity" "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg=="
972 | "resolved" "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz"
973 | "version" "1.3.0"
974 |
975 | "regexp.prototype.flags@^1.4.3":
976 | "integrity" "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA=="
977 | "resolved" "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz"
978 | "version" "1.4.3"
979 | dependencies:
980 | "call-bind" "^1.0.2"
981 | "define-properties" "^1.1.3"
982 | "functions-have-names" "^1.2.2"
983 |
984 | "require-directory@^2.1.1":
985 | "integrity" "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="
986 | "resolved" "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz"
987 | "version" "2.1.1"
988 |
989 | "rimraf@^3.0.0":
990 | "integrity" "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA=="
991 | "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz"
992 | "version" "3.0.2"
993 | dependencies:
994 | "glob" "^7.1.3"
995 |
996 | "safe-buffer@^5.1.0", "safe-buffer@^5.1.2":
997 | "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
998 | "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
999 | "version" "5.2.1"
1000 |
1001 | "serialize-javascript@6.0.0":
1002 | "integrity" "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag=="
1003 | "resolved" "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz"
1004 | "version" "6.0.0"
1005 | dependencies:
1006 | "randombytes" "^2.1.0"
1007 |
1008 | "side-channel@^1.0.4":
1009 | "integrity" "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw=="
1010 | "resolved" "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz"
1011 | "version" "1.0.4"
1012 | dependencies:
1013 | "call-bind" "^1.0.0"
1014 | "get-intrinsic" "^1.0.2"
1015 | "object-inspect" "^1.9.0"
1016 |
1017 | "snarkjs@0.4.10":
1018 | "integrity" "sha512-YWgxso7CGcSfkyDGraVjPuBJtq6GEsZ16YBJj2eD0TFum2D5BxnawvyTo4p/7UpctAT0r05DoHo80zgaWnbIKA=="
1019 | "resolved" "https://registry.npmjs.org/snarkjs/-/snarkjs-0.4.10.tgz"
1020 | "version" "0.4.10"
1021 | dependencies:
1022 | "@iden3/binfileutils" "0.0.8"
1023 | "blake2b-wasm" "^2.3.0"
1024 | "circom_runtime" "0.1.14"
1025 | "ejs" "^3.1.6"
1026 | "fastfile" "0.0.19"
1027 | "ffjavascript" "0.2.39"
1028 | "js-sha3" "^0.8.0"
1029 | "logplease" "^1.2.15"
1030 | "r1csfile" "0.0.33"
1031 | "readline" "^1.3.0"
1032 |
1033 | "snarkjs@git+https://github.com/vb7401/snarkjs.git#24981febe8826b6ab76ae4d76cf7f9142919d2b8":
1034 | "integrity" "sha512-ZZ0SZ4GROJbEj08UN9uLmMHKiqtsmY5y8VoAGUPrvUDjonEzDocgdB7mfeuCizio9iiFApSVTJeJKpd1T73Xaw=="
1035 | "resolved" "git+ssh://git@github.com/vb7401/snarkjs.git#24981febe8826b6ab76ae4d76cf7f9142919d2b8"
1036 | "version" "0.4.12"
1037 | dependencies:
1038 | "@iden3/binfileutils" "0.0.10"
1039 | "blake2b-wasm" "^2.4.0"
1040 | "circom_runtime" "0.1.17"
1041 | "ejs" "^3.1.6"
1042 | "fastfile" "^0.0.19"
1043 | "ffjavascript" "0.2.48"
1044 | "js-sha3" "^0.8.0"
1045 | "logplease" "^1.2.15"
1046 | "r1csfile" "0.0.35"
1047 | "readline" "^1.3.0"
1048 |
1049 | "string-width@^4.1.0", "string-width@^4.2.0":
1050 | "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="
1051 | "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
1052 | "version" "4.2.3"
1053 | dependencies:
1054 | "emoji-regex" "^8.0.0"
1055 | "is-fullwidth-code-point" "^3.0.0"
1056 | "strip-ansi" "^6.0.1"
1057 |
1058 | "string.prototype.trimend@^1.0.5":
1059 | "integrity" "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog=="
1060 | "resolved" "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz"
1061 | "version" "1.0.5"
1062 | dependencies:
1063 | "call-bind" "^1.0.2"
1064 | "define-properties" "^1.1.4"
1065 | "es-abstract" "^1.19.5"
1066 |
1067 | "string.prototype.trimstart@^1.0.5":
1068 | "integrity" "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg=="
1069 | "resolved" "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz"
1070 | "version" "1.0.5"
1071 | dependencies:
1072 | "call-bind" "^1.0.2"
1073 | "define-properties" "^1.1.4"
1074 | "es-abstract" "^1.19.5"
1075 |
1076 | "strip-ansi@^6.0.0", "strip-ansi@^6.0.1":
1077 | "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="
1078 | "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
1079 | "version" "6.0.1"
1080 | dependencies:
1081 | "ansi-regex" "^5.0.1"
1082 |
1083 | "strip-json-comments@3.1.1":
1084 | "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="
1085 | "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz"
1086 | "version" "3.1.1"
1087 |
1088 | "supports-color@^7.1.0":
1089 | "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="
1090 | "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
1091 | "version" "7.2.0"
1092 | dependencies:
1093 | "has-flag" "^4.0.0"
1094 |
1095 | "supports-color@8.1.1":
1096 | "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="
1097 | "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz"
1098 | "version" "8.1.1"
1099 | dependencies:
1100 | "has-flag" "^4.0.0"
1101 |
1102 | "tmp-promise@^3.0.2":
1103 | "integrity" "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ=="
1104 | "resolved" "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz"
1105 | "version" "3.0.3"
1106 | dependencies:
1107 | "tmp" "^0.2.0"
1108 |
1109 | "tmp@^0.2.0":
1110 | "integrity" "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ=="
1111 | "resolved" "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz"
1112 | "version" "0.2.1"
1113 | dependencies:
1114 | "rimraf" "^3.0.0"
1115 |
1116 | "to-regex-range@^5.0.1":
1117 | "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="
1118 | "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz"
1119 | "version" "5.0.1"
1120 | dependencies:
1121 | "is-number" "^7.0.0"
1122 |
1123 | "type-detect@^4.0.0", "type-detect@^4.0.5":
1124 | "integrity" "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g=="
1125 | "resolved" "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz"
1126 | "version" "4.0.8"
1127 |
1128 | "unbox-primitive@^1.0.2":
1129 | "integrity" "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw=="
1130 | "resolved" "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz"
1131 | "version" "1.0.2"
1132 | dependencies:
1133 | "call-bind" "^1.0.2"
1134 | "has-bigints" "^1.0.2"
1135 | "has-symbols" "^1.0.3"
1136 | "which-boxed-primitive" "^1.0.2"
1137 |
1138 | "util@^0.10.3":
1139 | "integrity" "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A=="
1140 | "resolved" "https://registry.npmjs.org/util/-/util-0.10.4.tgz"
1141 | "version" "0.10.4"
1142 | dependencies:
1143 | "inherits" "2.0.3"
1144 |
1145 | "util@^0.12.4":
1146 | "integrity" "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw=="
1147 | "resolved" "https://registry.npmjs.org/util/-/util-0.12.4.tgz"
1148 | "version" "0.12.4"
1149 | dependencies:
1150 | "inherits" "^2.0.3"
1151 | "is-arguments" "^1.0.4"
1152 | "is-generator-function" "^1.0.7"
1153 | "is-typed-array" "^1.1.3"
1154 | "safe-buffer" "^5.1.2"
1155 | "which-typed-array" "^1.1.2"
1156 |
1157 | "wasmbuilder@^0.0.12":
1158 | "integrity" "sha512-dTMpBgrnLOXrN58i2zakn2ScynsBhq9LfyQIsPz4CyxRF9k1GAORniuqn3xmE9NnI1l7g3iiVCkoB2Cl0/oG8w=="
1159 | "resolved" "https://registry.npmjs.org/wasmbuilder/-/wasmbuilder-0.0.12.tgz"
1160 | "version" "0.0.12"
1161 | dependencies:
1162 | "big-integer" "^1.6.48"
1163 |
1164 | "wasmcurves@0.0.14":
1165 | "integrity" "sha512-G1iMkxlRaQSdqQ1JrwHcU+awLmwyH6kFKfT8g9obd8MWe+u5oSdFXrODB0zmSI5aGGvJPG+4cAmqCGYv9R+7qg=="
1166 | "resolved" "https://registry.npmjs.org/wasmcurves/-/wasmcurves-0.0.14.tgz"
1167 | "version" "0.0.14"
1168 | dependencies:
1169 | "big-integer" "^1.6.42"
1170 | "blakejs" "^1.1.0"
1171 |
1172 | "wasmcurves@0.1.0":
1173 | "integrity" "sha512-kIlcgbVUAv2uQ6lGsepGz/m5V40+Z6rvTBkqCYn3Y2+OcXst+UaP4filJYLh/xDxjJl62FFjZZeAnpeli1Y5/Q=="
1174 | "resolved" "https://registry.npmjs.org/wasmcurves/-/wasmcurves-0.1.0.tgz"
1175 | "version" "0.1.0"
1176 | dependencies:
1177 | "big-integer" "^1.6.42"
1178 | "blakejs" "^1.1.0"
1179 |
1180 | "web-worker@^1.0.0", "web-worker@^1.2.0":
1181 | "integrity" "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA=="
1182 | "resolved" "https://registry.npmjs.org/web-worker/-/web-worker-1.2.0.tgz"
1183 | "version" "1.2.0"
1184 |
1185 | "which-boxed-primitive@^1.0.2":
1186 | "integrity" "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg=="
1187 | "resolved" "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz"
1188 | "version" "1.0.2"
1189 | dependencies:
1190 | "is-bigint" "^1.0.1"
1191 | "is-boolean-object" "^1.1.0"
1192 | "is-number-object" "^1.0.4"
1193 | "is-string" "^1.0.5"
1194 | "is-symbol" "^1.0.3"
1195 |
1196 | "which-typed-array@^1.1.2":
1197 | "integrity" "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw=="
1198 | "resolved" "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz"
1199 | "version" "1.1.8"
1200 | dependencies:
1201 | "available-typed-arrays" "^1.0.5"
1202 | "call-bind" "^1.0.2"
1203 | "es-abstract" "^1.20.0"
1204 | "for-each" "^0.3.3"
1205 | "has-tostringtag" "^1.0.0"
1206 | "is-typed-array" "^1.1.9"
1207 |
1208 | "workerpool@6.2.1":
1209 | "integrity" "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw=="
1210 | "resolved" "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz"
1211 | "version" "6.2.1"
1212 |
1213 | "wrap-ansi@^7.0.0":
1214 | "integrity" "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="
1215 | "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
1216 | "version" "7.0.0"
1217 | dependencies:
1218 | "ansi-styles" "^4.0.0"
1219 | "string-width" "^4.1.0"
1220 | "strip-ansi" "^6.0.0"
1221 |
1222 | "wrappy@1":
1223 | "integrity" "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
1224 | "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
1225 | "version" "1.0.2"
1226 |
1227 | "y18n@^5.0.5":
1228 | "integrity" "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="
1229 | "resolved" "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz"
1230 | "version" "5.0.8"
1231 |
1232 | "yargs-parser@^20.2.2":
1233 | "integrity" "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w=="
1234 | "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz"
1235 | "version" "20.2.9"
1236 |
1237 | "yargs-parser@20.2.4":
1238 | "integrity" "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA=="
1239 | "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz"
1240 | "version" "20.2.4"
1241 |
1242 | "yargs-unparser@2.0.0":
1243 | "integrity" "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA=="
1244 | "resolved" "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz"
1245 | "version" "2.0.0"
1246 | dependencies:
1247 | "camelcase" "^6.0.0"
1248 | "decamelize" "^4.0.0"
1249 | "flat" "^5.0.2"
1250 | "is-plain-obj" "^2.1.0"
1251 |
1252 | "yargs@16.2.0":
1253 | "integrity" "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw=="
1254 | "resolved" "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz"
1255 | "version" "16.2.0"
1256 | dependencies:
1257 | "cliui" "^7.0.2"
1258 | "escalade" "^3.1.1"
1259 | "get-caller-file" "^2.0.5"
1260 | "require-directory" "^2.1.1"
1261 | "string-width" "^4.2.0"
1262 | "y18n" "^5.0.5"
1263 | "yargs-parser" "^20.2.2"
1264 |
1265 | "yocto-queue@^0.1.0":
1266 | "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="
1267 | "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz"
1268 | "version" "0.1.0"
1269 |
--------------------------------------------------------------------------------