66 |
67 |
68 |
--------------------------------------------------------------------------------
/entries/MarieSal0/FibonacciWorkplace/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 |
4 | # User-specific files
5 | *.suo
6 | *.user
7 | *.sln.docstates
8 |
9 | # Build results
10 |
11 | [Dd]ebug/
12 | [Rr]elease/
13 | x64/
14 | [Bb]in/
15 | [Oo]bj/
16 |
17 | # MSTest test Results
18 | [Tt]est[Rr]esult*/
19 | [Bb]uild[Ll]og.*
20 |
21 | *_i.c
22 | *_p.c
23 | *_i.h
24 | *.ilk
25 | *.meta
26 | *.obj
27 | *.pch
28 | *.pdb
29 | *.pgc
30 | *.pgd
31 | *.rsp
32 | *.sbr
33 | *.tlb
34 | *.tli
35 | *.tlh
36 | *.tmp
37 | *.tmp_proj
38 | *.log
39 | *.vspscc
40 | *.vssscc
41 | .builds
42 | *.pidb
43 | *.log
44 | *.svclog
45 | *.scc
46 |
47 | # Visual C++ cache files
48 | ipch/
49 | *.aps
50 | *.ncb
51 | *.opensdf
52 | *.sdf
53 | *.cachefile
54 |
55 | # Visual Studio profiler
56 | *.psess
57 | *.vsp
58 | *.vspx
59 |
60 | # Guidance Automation Toolkit
61 | *.gpState
62 |
63 | # ReSharper is a .NET coding add-in
64 | _ReSharper*/
65 | *.[Rr]e[Ss]harper
66 | *.DotSettings.user
67 |
68 | # Click-Once directory
69 | publish/
70 |
71 | # Publish Web Output
72 | *.Publish.xml
73 | *.pubxml
74 | *.azurePubxml
75 |
76 | # NuGet Packages Directory
77 | ## TODO: If you have NuGet Package Restore enabled, uncomment the next line
78 | packages/
79 | ## TODO: If the tool you use requires repositories.config, also uncomment the next line
80 | !packages/repositories.config
81 |
82 | # Windows Azure Build Output
83 | csx/
84 | *.build.csdef
85 |
86 | # Windows Store app package directory
87 | AppPackages/
88 |
89 | # Others
90 | sql/
91 | *.Cache
92 | ClientBin/
93 | [Ss]tyle[Cc]op.*
94 | ![Ss]tyle[Cc]op.targets
95 | ~$*
96 | *~
97 | *.dbmdl
98 | *.[Pp]ublish.xml
99 |
100 | *.publishsettings
101 |
102 | # RIA/Silverlight projects
103 | Generated_Code/
104 |
105 | # Backup & report files from converting an old project file to a newer
106 | # Visual Studio version. Backup files are not needed, because we have git ;-)
107 | _UpgradeReport_Files/
108 | Backup*/
109 | UpgradeLog*.XML
110 | UpgradeLog*.htm
111 |
112 | # SQL Server files
113 | App_Data/*.mdf
114 | App_Data/*.ldf
115 |
116 | # =========================
117 | # Windows detritus
118 | # =========================
119 |
120 | # Windows image file caches
121 | Thumbs.db
122 | ehthumbs.db
123 |
124 | # Folder config file
125 | Desktop.ini
126 |
127 | # Recycle Bin used on file shares
128 | $RECYCLE.BIN/
129 |
130 | # Mac desktop service store files
131 | .DS_Store
132 |
133 | _NCrunch*
--------------------------------------------------------------------------------
/entries/dewert99/fib_compiled:
--------------------------------------------------------------------------------
1 | example::fib:
2 | cmp rdi, 94
3 | jb .LBB0_3
4 | xor eax, eax
5 | ret
6 | .LBB0_3:
7 | lea rax, [rip + example::FIB]
8 | mov rdx, qword ptr [rax + 8*rdi]
9 | mov eax, 1
10 | ret
11 |
12 | example::FIB:
13 | .ascii "\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\005\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\r\000\000\000\000\000\000\000\025\000\000\000\000\000\000\000\"\000\000\000\000\000\000\0007\000\000\000\000\000\000\000Y\000\000\000\000\000\000\000\220\000\000\000\000\000\000\000\351\000\000\000\000\000\000\000y\001\000\000\000\000\000\000b\002\000\000\000\000\000\000\333\003\000\000\000\000\000\000=\006\000\000\000\000\000\000\030\n\000\000\000\000\000\000U\020\000\000\000\000\000\000m\032\000\000\000\000\000\000\302*\000\000\000\000\000\000/E\000\000\000\000\000\000\361o\000\000\000\000\000\000 \265\000\000\000\000\000\000\021%\001\000\000\000\000\0001\332\001\000\000\000\000\000B\377\002\000\000\000\000\000s\331\004\000\000\000\000\000\265\330\007\000\000\000\000\000(\262\f\000\000\000\000\000\335\212\024\000\000\000\000\000\005=!\000\000\000\000\000\342\3075\000\000\000\000\000\347\004W\000\000\000\000\000\311\314\214\000\000\000\000\000\260\321\343\000\000\000\000\000y\236p\001\000\000\000\000)pT\002\000\000\000\000\242\016\305\003\000\000\000\000\313~\031\006\000\000\000\000m\215\336\t\000\000\000\0008\f\370\017\000\000\000\000\245\231\326\031\000\000\000\000\335\245\316)\000\000\000\000\202?\245C\000\000\000\000_\345sm\000\000\000\000\341$\031\261\000\000\000\000@\n\215\036\001\000\000\000!/\246\317\001\000\000\000a93\356\002\000\000\000\202h\331\275\004\000\000\000\343\241\f\254\007\000\000\000e\n\346i\f\000\000\000H\254\362\025\024\000\000\000\255\266\330\177 \000\000\000\365b\313\2254\000\000\000\242\031\244\025U\000\000\000\227|o\253\211\000\000\0009\226\023\301\336\000\000\000\320\022\203lh\001\000\000\t\251\226-G\002\000\000\331\273\031\232\257\003\000\000\342d\260\307\366\005\000\000\273 \312a\246\t\000\000\235\205z)\235\017\000\000X\246D\213C\031\000\000\365+\277\264\340(\000\000M\322\003@$B\000\000B\376\302\364\004k\000\000\217\320\3064)\255\000\000\321\316\211).\030\001\000`\237P^W\305\001\0001n\332\207\205\335\002\000\221\r+\346\334\242\004\000\302{\005nb\200\007\000S\2110T?#\f\000\025\0056\302\241\243\023\000h\216f\026\341\306\037\000}\223\234\330\202j3\000\345!\003\357c1S\000b\265\237\307\346\233\206\000G\327\242\266J\315\331\000\251\214B~1i`\001\360c\3454|6:\002\231\360'\263\255\237\232\003\211T\r\350)\326\324\005\"E5\233\327uo\t\253\231B\203\001LD\017\315\336w\036\331\301\263\030xx\272\241\332\r\370'EW2\300\263\317\253@\275\317\354a\216\335\243h\002'\037\"B\255O\251"
14 |
--------------------------------------------------------------------------------
/entries/fbanados/fib.v:
--------------------------------------------------------------------------------
1 | Require Import Coq.Arith.Wf_nat. (* import strong induction on naturals *)
2 | Require Import Lia. (* Linear Integer Arithmetic solver *)
3 |
4 | (* First, simple specification *)
5 |
6 | Fixpoint fib_simpl (n : nat) {struct n} : nat :=
7 | match n with
8 | | 0 => 1
9 | | S n => match n with
10 | | 0 => 1
11 | | S m => fib_simpl n + fib_simpl m
12 | end
13 | end.
14 |
15 | Example fib_3 : (fib_simpl 2 = 2). reflexivity. Qed.
16 | Example fib_4 : (fib_simpl 3 = 3). reflexivity. Qed.
17 | Example fib_5 : (fib_simpl 4 = 5). reflexivity. Qed.
18 |
19 | Lemma fib_simpl_spec : forall n, (* useful lemma for rewriting *)
20 | fib_simpl (S (S n)) = fib_simpl (S n) + fib_simpl n.
21 | Proof.
22 | destruct n.
23 | - (* case n := 0 *)
24 | reflexivity.
25 | - (* case n := (S n) *)
26 | destruct n; reflexivity.
27 | Qed.
28 |
29 | (* For a (slightly) faster version *)
30 |
31 | Fixpoint fib_acc_aux (n : nat) (acc : nat) (prev : nat) {struct n} : nat :=
32 | match n with
33 | | 0 => acc + prev
34 | | S n => fib_acc_aux n (acc + prev) acc
35 | end.
36 |
37 | Definition fib_faster (n : nat) : nat :=
38 | match n with
39 | | 0 => 1
40 | | S n => match n with
41 | | 0 => 1
42 | | S m => (fib_acc_aux m 1 1)
43 | end
44 | end.
45 |
46 | Example fib_faster_3 : (fib_faster 2 = 2). reflexivity. Qed.
47 | Example fib_faster_4 : (fib_faster 3 = 3). reflexivity. Qed.
48 | Example fib_faster_5 : (fib_faster 4 = 5). reflexivity. Qed.
49 |
50 | Lemma fib_acc_aux_rewrite : forall n a b c d,
51 | fib_acc_aux n a c + fib_acc_aux n b d = fib_acc_aux n (a + b) (c + d).
52 | Proof.
53 | induction n; intros.
54 | - (* case n := 0 *)
55 | simpl; lia.
56 | - (* case n := (S n) *)
57 | simpl.
58 | rewrite IHn.
59 | f_equal.
60 | lia.
61 | Qed.
62 |
63 | Theorem fib_faster_spec: forall n, fib_simpl n = fib_faster n.
64 | Proof.
65 | induction n using lt_wf_ind. (* use strong induction *)
66 | rename H into strong_induction_hypothesis.
67 | destruct n. (* lt_wf_ind does not deal immediately with cases *)
68 | - (* case n := 0 *)
69 | reflexivity.
70 | - (* case n := (S n) *)
71 | destruct n.
72 | + (* case n := 1 *)
73 | reflexivity.
74 | + (* case n := (S (S n)) *)
75 | rewrite ?fib_simpl_spec.
76 | do 2 rewrite strong_induction_hypothesis by lia.
77 | enough (forall n, fib_faster (S n) + fib_faster n = fib_faster (S (S n))) as lemma by apply lemma.
78 | clear.
79 | destruct n.
80 | * (* for lemma, case n := 0 *)
81 | reflexivity.
82 | * (* for lemma, case n := S n *)
83 | destruct n.
84 | -- (* for lemma, case n := 1 *)
85 | reflexivity.
86 | -- (* for lemma, case n := S (S n) *)
87 | simpl.
88 | apply fib_acc_aux_rewrite.
89 | Qed.
90 |
91 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
fib
6 |
36 |
37 |
38 |
39 |
fib
40 |
Can you please give me a Fibonacci function? Ideally (but not necessarily) one that only you would give me.
41 |
42 |
For a submission to the upcoming "Reclaim your space" exhibition at Hatch Art Gallery.
43 |
44 |
45 |
Contributors
46 |
47 |
48 |
49 |
Want to contribute?
50 |
92 |
93 |
94 |
--------------------------------------------------------------------------------
/entries/rxg/fib.rkt:
--------------------------------------------------------------------------------
1 | #lang racket
2 |
3 | ;; fib.rkt - A variety of iterative implementations of the Fibonacci Sequence
4 | ;; All are based on accumulators
5 |
6 | ;; Natural -> Natural
7 | ;; produce the n'th Fibonacci number
8 | (define (fib-iter n)
9 | (cond
10 | [(= n 0) 1]
11 | [(= n 1) 1]
12 | [else
13 | (let-values ([(n-2 n-1)
14 | ;; i-2 = fib (i-2)
15 | ;; i-1 = fib (i-1)
16 | (for/fold ([i-2 1] [i-1 1])
17 | ([i (in-range 2 n)])
18 | (values i-1 (+ i-2 i-1)))])
19 | (+ n-2 n-1))]))
20 |
21 |
22 | (define (fib-iter2 n)
23 | (cond
24 | [(= n 0) 1]
25 | [(= n 1) 1]
26 | [else
27 | ;; i-2 = fib (i-2)
28 | ;; i-1 = fib (i-1)
29 | (let loop ([i-2 1] [i-1 1] [i 2])
30 | (if (= i n)
31 | (+ i-2 i-1)
32 | (loop i-1 (+ i-2 i-1) (add1 i))))]))
33 |
34 | (define (fib-iter3 n)
35 | (cond
36 | [(= n 0) 1]
37 | [(= n 1) 1]
38 | [else
39 | ;; i-2 = fib (i-2)
40 | ;; i-1 = fib (i-1)
41 | (do ([i-2 1 i-1]
42 | [i-1 1 (+ i-2 i-1)]
43 | [i 2 (add1 i)])
44 | [(= i n)
45 | (+ i-2 i-1)])]))
46 |
47 | ;; New variant of for with accumulators and a final expression in terms of
48 | ;; the accumulators
49 | (define-syntax (for/acc stx)
50 | (syntax-case stx ()
51 | [(_ ([id* init*] ...)
52 | (clauses ...)
53 | body
54 | result)
55 | (with-syntax ([original stx])
56 | #'(let-values ([(id* ...)
57 | (for/fold/derived original
58 | ([id* init*] ...)
59 | (clauses ...)
60 | body)])
61 | result))]))
62 |
63 | (define (fib-iter4 n)
64 | (cond
65 | [(= n 0) 1]
66 | [(= n 1) 1]
67 | [else
68 | ;; i-2 = fib (i-2)
69 | ;; i-1 = fib (i-1)
70 | (for/acc ([i-2 1] [i-1 1])
71 | ([i (in-range 2 n)])
72 | (values i-1 (+ i-2 i-1))
73 | (+ i-2 i-1))]))
74 |
75 | ;; New variant of for with accumulators and a final expression in terms of
76 | ;; the accumulators
77 | (define-syntax (for/do stx)
78 | (syntax-case stx ()
79 | [(_ ([id* init* step*] ...)
80 | (clauses ...)
81 | result)
82 | (with-syntax ([original stx])
83 | #'(let-values ([(id* ...)
84 | (for/fold/derived original
85 | ([id* init*] ...)
86 | (clauses ...)
87 | (values step* ...))])
88 | result))]))
89 |
90 | (define (fib-iter5 n)
91 | (cond
92 | [(= n 0) 1]
93 | [(= n 1) 1]
94 | [else
95 | ;; i-2 = fib (i-2)
96 | ;; i-1 = fib (i-1)
97 | (for/do ([i-2 1 i-1] [i-1 1 (+ i-2 i-1)])
98 | ([i (in-range 2 n)])
99 | (+ i-2 i-1))]))
100 |
101 |
102 | ;; Fibonacci's problem, as described by Greg Rawlins in "Compared to What":
103 | ;; Suppose you have a pair of rabbits and suppose every month each pair
104 | ;; bears a new pair that from the second month on becomes productive.
105 | ;; how many pairs of rabbits will you have in a year?
106 |
107 | ;; Analysis:
108 | ;; - At time 0 you have 1 unproductive pair: 1 pair, 0 productive pairs
109 | ;; - Each month, each productive pair produces an unproductive pair
110 | ;; - Each month, last months unproductive pairs transition to productive
111 | ;; - how many pairs are there at time step 12?
112 |
113 | ;; The following function solves the problem *directly* as a
114 | ;; structural recursion over natural numbers with two
115 | ;; accumulators (for lost context (fertile) and result-so-far (total))
116 |
117 | ;; Natural -> Natural
118 | ;; produce the solution to Fibonacci's problem after n months
119 | (define (fib-rabbit n0)
120 | ;; Accumulator: total is Natural
121 | ;; Invariant: total pairs of rabbits after (- n0 n) months
122 | ;; Accumulator: fertile is Natural
123 | ;; Invariant: productive pairs of rabbits after (- n0 n) months
124 | (local [(define (fib-acc fertile total n)
125 | (cond [(zero? n) total]
126 | [else
127 | (fib-acc total ;; next month, all will be productive
128 | (+ ;; next months pairs include:
129 | total ;; - this months pairs plus
130 | fertile) ;; - offspring from productive pairs
131 | (sub1 n))]))]
132 | (fib-acc 0 1 n0)))
133 |
--------------------------------------------------------------------------------
/people.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "github": "adirar111",
4 | "name": "Aymen Dirar",
5 | "title": "BSc Student, UBC",
6 | "entries": [
7 | {
8 | "name": "y86",
9 | "link": "./entries/adirar111/y86/fib.s"
10 | },
11 | {
12 | "name": "wasm",
13 | "link": "./entries/adirar111/wasm/fib.wat"
14 | }
15 | ]
16 | },
17 | {
18 | "github": "braxtonhall",
19 | "name": "Braxton Hall",
20 | "title": "MSc, UBC",
21 | "entries": [
22 | {
23 | "name": "express",
24 | "link": "./entries/braxtonhall/express/index.js"
25 | },
26 | {
27 | "name": "homework",
28 | "link": "./entries/braxtonhall/homework/fib.cpp"
29 | },
30 | {
31 | "name": "types",
32 | "link": "./entries/braxtonhall/types/index.ts"
33 | }
34 | ]
35 | },
36 | {
37 | "github": "ionathanch",
38 | "name": "Jonathan Chan",
39 | "title": "MSc, UBC",
40 | "entries": [
41 | {
42 | "name": "agda",
43 | "link": "./entries/ionathanch/Fib.agda"
44 | },
45 | {
46 | "name": "fortran",
47 | "link": "./entries/ionathanch/fib.f90"
48 | }
49 | ]
50 | },
51 | {
52 | "github": "funemy",
53 | "name": "Yanze Li",
54 | "title": "PhD Student, UBC",
55 | "entries": [
56 | {
57 | "name": "agda",
58 | "link": "./entries/funemy/agda/fib1.agda"
59 | },
60 | {
61 | "name": "z3",
62 | "link": "./entries/funemy/z3/z3fib.sh"
63 | }
64 | ]
65 | },
66 | {
67 | "github": "jyoo980",
68 | "name": "James Yoo",
69 | "title": "MSc, UBC",
70 | "entries": [
71 | {
72 | "name": "scala",
73 | "link": "./entries/jyoo980/scala/Fib.scala"
74 | },
75 | {
76 | "name": "vintage-htdp",
77 | "link": "./entries/jyoo980/vintage-htdp/fib.rkt"
78 | }
79 |
80 | ]
81 | },
82 | {
83 | "github": "lizard-business",
84 | "name": "rhiannon morris",
85 | "title": "amateur type system liker",
86 | "entries": [
87 | {
88 | "name": "maude",
89 | "link": "./entries/lizard-business/fib.maude"
90 | },
91 | {
92 | "name": "ats",
93 | "link": "./entries/lizard-business/fib.dats"
94 | }
95 | ]
96 | },
97 | {
98 | "github": "margoseltzer",
99 | "name": "Margo Seltzer",
100 | "title": "Professor of Computer Science, UBC",
101 | "entries": [
102 | {
103 | "name": "efficiency",
104 | "link": "./entries/margoseltzer/efficiency.c"
105 | }
106 | ]
107 | },
108 | {
109 | "github": "MarieSal0",
110 | "name": "Marie Salomon",
111 | "title": "MSc Student, UBC",
112 | "entries": [
113 | {
114 | "name": "c#",
115 | "link": "./entries/MarieSal0/FibonacciWorkplace/Program.cs"
116 | }
117 | ]
118 | },
119 | {
120 | "github": "meghasinghania22",
121 | "name": "Megha Singhania",
122 | "title": "BSc, UBC",
123 | "entries": [
124 | {
125 | "name": "bash",
126 | "link": "./entries/meghasinghania22/bash/script.sh"
127 | }
128 | ]
129 | },
130 | {
131 | "github": "Metroxe",
132 | "name": "Christopher Powroznik",
133 | "title": "BCom, UBC",
134 | "entries": [
135 | {
136 | "name": "html",
137 | "link": "./entries/Metroxe/index.html"
138 | }
139 | ]
140 | },
141 | {
142 | "github": "nritschel",
143 | "name": "Nico Ritschel",
144 | "title": "PhD Student, UBC",
145 | "entries": [
146 | {
147 | "name": "fib-java",
148 | "link": "./entries/nritschel/fib-java/src"
149 | },
150 | {
151 | "name": "xlsx",
152 | "link": "./entries/nritschel/xlsx/fib.xlsx"
153 | },
154 | {
155 | "name": "scratch",
156 | "link": "./entries/nritschel/scratch"
157 | }
158 | ]
159 | },
160 | {
161 | "github": "perryliao",
162 | "name": "Perry Liao",
163 | "title": "BSc, UBC",
164 | "entries": [
165 | {
166 | "name": "groovy",
167 | "link": "./entries/perryliao/fib.groovy"
168 | }
169 | ]
170 | },
171 | {
172 | "github": "rtholmes",
173 | "name": "Reid Holmes",
174 | "title": "Associate Professor of Computer Science, UBC",
175 | "entries": [
176 | {
177 | "name": "stack-overflow",
178 | "link": "./entries/rtholmes/Fibonacci%20series%20in%20JavaScript%20-%20Stack%20Overflow.webloc"
179 | }
180 | ]
181 | },
182 | {
183 | "github": "rxg",
184 | "name": "Ronald Garcia",
185 | "title": "Associate Professor of Computer Science, UBC",
186 | "entries": [
187 | {
188 | "name": "fib-iter*",
189 | "link": "./entries/rxg/fib.rkt"
190 | }
191 | ]
192 | },
193 | {
194 | "github": "shayanh",
195 | "name": "Shayan Hosseini",
196 | "title": "MSc Student, UBC",
197 | "entries": [
198 | {
199 | "name": "matrix",
200 | "link": "./entries/shayanh/matrix.go"
201 | }
202 | ]
203 | },
204 | {
205 | "github": "StuartLiv",
206 | "name": "Stuart Livingstone",
207 | "title": "BSc Student, UBC",
208 | "entries": [
209 | {
210 | "name": "ThetaFibN",
211 | "link": "./entries/StuartLiv/ThetaFibN.java"
212 | }
213 | ]
214 | },
215 | {
216 | "github": "Tarcisio-Teixeira",
217 | "name": "Tarcísio Teixeira",
218 | "title": "MSc Student, UBC",
219 | "entries": [
220 | {
221 | "name": "logn?",
222 | "link": "./entries/Tarcisio-Teixeira/fib.py"
223 | }
224 | ]
225 | },
226 | {
227 | "github": "wilbowma",
228 | "name": "William Bowman",
229 | "title": "Assistant Professor of Computer Science, UBC",
230 | "entries": [
231 | {
232 | "name": "fib-lang",
233 | "link": "https://github.com/wilbowma/fib-lang/tree/2ec2d1dfd141220882d824cf3dac5b374ed291f3"
234 | }
235 | ]
236 | },
237 | {
238 | "github": "gonzalezf",
239 | "name": "Felipe González-Pizarro",
240 | "title": "MSc Computer Science Student, UBC",
241 | "entries": [
242 | {
243 | "name": "fib",
244 | "link": "./entries/gonzalezf/fib.py"
245 | }
246 | ]
247 | },
248 | {
249 | "github": "fbanados",
250 | "name": "Felipe Bañados Schwerter",
251 | "title": "PhD Candidate, UBC",
252 | "entries": [
253 | {
254 | "name": "coq",
255 | "link": "./entries/fbanados/fib.v"
256 | },
257 | {
258 | "name": "pharo-smalltalk",
259 | "link": "./entries/fbanados/fib.st"
260 | }
261 | ]
262 | },
263 | {
264 | "github": "laelath",
265 | "name": "Justin Frank",
266 | "title": "PhD Student, UMD",
267 | "entries": [
268 | {
269 | "name": "befunge",
270 | "link": "./entries/laelath/fib.bf"
271 | }
272 | ]
273 | },
274 | {
275 | "github": "nxjfxu",
276 | "name": "Junfeng Xu",
277 | "title": "MSc Student, UBC",
278 | "entries": [
279 | {
280 | "name": "ouroboros",
281 | "link": "./entries/nxjfxu/fib.hs"
282 | }
283 | ]
284 | },
285 | {
286 | "github": "zgrannan",
287 | "name": "Zack Grannan",
288 | "title": "MSc Computer Science Student, UBC",
289 | "entries": [
290 | {
291 | "name": "haskell",
292 | "link": "./entries/zgrannan/Fib.hs"
293 | }
294 | ]
295 | },
296 | {
297 | "github": "pkoronkevich",
298 | "name": "Paulette Koronkevich",
299 | "title": "PhD Student, UBC",
300 | "entries": [
301 | {
302 | "name": "tex",
303 | "link": "./entries/pkoronkevich/tex"
304 | }
305 | ]
306 | },
307 | {
308 | "github": "davepagurek",
309 | "name": "Dave Pagurek",
310 | "title": "MSc, UBC",
311 | "entries": [
312 | {
313 | "name": "css",
314 | "link": "./entries/davepagurek/index.html"
315 | }
316 | ]
317 | },
318 | {
319 | "github": "dewert99",
320 | "name": "David Ewert",
321 | "title": "MSc Student, UBC",
322 | "entries": [
323 | {
324 | "name": "O(1)",
325 | "link": "./entries/dewert99/fib.rs"
326 | }
327 | ]
328 | }
329 | ]
330 |
--------------------------------------------------------------------------------
/entries/braxtonhall/express/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "express",
3 | "version": "1.0.0",
4 | "lockfileVersion": 2,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "express",
9 | "version": "1.0.0",
10 | "license": "ISC",
11 | "dependencies": {
12 | "axios": "^1.1.3",
13 | "express": "^4.18.2"
14 | }
15 | },
16 | "node_modules/accepts": {
17 | "version": "1.3.8",
18 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
19 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
20 | "dependencies": {
21 | "mime-types": "~2.1.34",
22 | "negotiator": "0.6.3"
23 | },
24 | "engines": {
25 | "node": ">= 0.6"
26 | }
27 | },
28 | "node_modules/array-flatten": {
29 | "version": "1.1.1",
30 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
31 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
32 | },
33 | "node_modules/asynckit": {
34 | "version": "0.4.0",
35 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
36 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
37 | },
38 | "node_modules/axios": {
39 | "version": "1.1.3",
40 | "resolved": "https://registry.npmjs.org/axios/-/axios-1.1.3.tgz",
41 | "integrity": "sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==",
42 | "dependencies": {
43 | "follow-redirects": "^1.15.0",
44 | "form-data": "^4.0.0",
45 | "proxy-from-env": "^1.1.0"
46 | }
47 | },
48 | "node_modules/body-parser": {
49 | "version": "1.20.1",
50 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
51 | "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
52 | "dependencies": {
53 | "bytes": "3.1.2",
54 | "content-type": "~1.0.4",
55 | "debug": "2.6.9",
56 | "depd": "2.0.0",
57 | "destroy": "1.2.0",
58 | "http-errors": "2.0.0",
59 | "iconv-lite": "0.4.24",
60 | "on-finished": "2.4.1",
61 | "qs": "6.11.0",
62 | "raw-body": "2.5.1",
63 | "type-is": "~1.6.18",
64 | "unpipe": "1.0.0"
65 | },
66 | "engines": {
67 | "node": ">= 0.8",
68 | "npm": "1.2.8000 || >= 1.4.16"
69 | }
70 | },
71 | "node_modules/bytes": {
72 | "version": "3.1.2",
73 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
74 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
75 | "engines": {
76 | "node": ">= 0.8"
77 | }
78 | },
79 | "node_modules/call-bind": {
80 | "version": "1.0.2",
81 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
82 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
83 | "dependencies": {
84 | "function-bind": "^1.1.1",
85 | "get-intrinsic": "^1.0.2"
86 | },
87 | "funding": {
88 | "url": "https://github.com/sponsors/ljharb"
89 | }
90 | },
91 | "node_modules/combined-stream": {
92 | "version": "1.0.8",
93 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
94 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
95 | "dependencies": {
96 | "delayed-stream": "~1.0.0"
97 | },
98 | "engines": {
99 | "node": ">= 0.8"
100 | }
101 | },
102 | "node_modules/content-disposition": {
103 | "version": "0.5.4",
104 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
105 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
106 | "dependencies": {
107 | "safe-buffer": "5.2.1"
108 | },
109 | "engines": {
110 | "node": ">= 0.6"
111 | }
112 | },
113 | "node_modules/content-type": {
114 | "version": "1.0.4",
115 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
116 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
117 | "engines": {
118 | "node": ">= 0.6"
119 | }
120 | },
121 | "node_modules/cookie": {
122 | "version": "0.5.0",
123 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
124 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
125 | "engines": {
126 | "node": ">= 0.6"
127 | }
128 | },
129 | "node_modules/cookie-signature": {
130 | "version": "1.0.6",
131 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
132 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
133 | },
134 | "node_modules/debug": {
135 | "version": "2.6.9",
136 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
137 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
138 | "dependencies": {
139 | "ms": "2.0.0"
140 | }
141 | },
142 | "node_modules/delayed-stream": {
143 | "version": "1.0.0",
144 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
145 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
146 | "engines": {
147 | "node": ">=0.4.0"
148 | }
149 | },
150 | "node_modules/depd": {
151 | "version": "2.0.0",
152 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
153 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
154 | "engines": {
155 | "node": ">= 0.8"
156 | }
157 | },
158 | "node_modules/destroy": {
159 | "version": "1.2.0",
160 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
161 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
162 | "engines": {
163 | "node": ">= 0.8",
164 | "npm": "1.2.8000 || >= 1.4.16"
165 | }
166 | },
167 | "node_modules/ee-first": {
168 | "version": "1.1.1",
169 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
170 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
171 | },
172 | "node_modules/encodeurl": {
173 | "version": "1.0.2",
174 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
175 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
176 | "engines": {
177 | "node": ">= 0.8"
178 | }
179 | },
180 | "node_modules/escape-html": {
181 | "version": "1.0.3",
182 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
183 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
184 | },
185 | "node_modules/etag": {
186 | "version": "1.8.1",
187 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
188 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
189 | "engines": {
190 | "node": ">= 0.6"
191 | }
192 | },
193 | "node_modules/express": {
194 | "version": "4.18.2",
195 | "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
196 | "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
197 | "dependencies": {
198 | "accepts": "~1.3.8",
199 | "array-flatten": "1.1.1",
200 | "body-parser": "1.20.1",
201 | "content-disposition": "0.5.4",
202 | "content-type": "~1.0.4",
203 | "cookie": "0.5.0",
204 | "cookie-signature": "1.0.6",
205 | "debug": "2.6.9",
206 | "depd": "2.0.0",
207 | "encodeurl": "~1.0.2",
208 | "escape-html": "~1.0.3",
209 | "etag": "~1.8.1",
210 | "finalhandler": "1.2.0",
211 | "fresh": "0.5.2",
212 | "http-errors": "2.0.0",
213 | "merge-descriptors": "1.0.1",
214 | "methods": "~1.1.2",
215 | "on-finished": "2.4.1",
216 | "parseurl": "~1.3.3",
217 | "path-to-regexp": "0.1.7",
218 | "proxy-addr": "~2.0.7",
219 | "qs": "6.11.0",
220 | "range-parser": "~1.2.1",
221 | "safe-buffer": "5.2.1",
222 | "send": "0.18.0",
223 | "serve-static": "1.15.0",
224 | "setprototypeof": "1.2.0",
225 | "statuses": "2.0.1",
226 | "type-is": "~1.6.18",
227 | "utils-merge": "1.0.1",
228 | "vary": "~1.1.2"
229 | },
230 | "engines": {
231 | "node": ">= 0.10.0"
232 | }
233 | },
234 | "node_modules/finalhandler": {
235 | "version": "1.2.0",
236 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
237 | "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
238 | "dependencies": {
239 | "debug": "2.6.9",
240 | "encodeurl": "~1.0.2",
241 | "escape-html": "~1.0.3",
242 | "on-finished": "2.4.1",
243 | "parseurl": "~1.3.3",
244 | "statuses": "2.0.1",
245 | "unpipe": "~1.0.0"
246 | },
247 | "engines": {
248 | "node": ">= 0.8"
249 | }
250 | },
251 | "node_modules/follow-redirects": {
252 | "version": "1.15.2",
253 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
254 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
255 | "funding": [
256 | {
257 | "type": "individual",
258 | "url": "https://github.com/sponsors/RubenVerborgh"
259 | }
260 | ],
261 | "engines": {
262 | "node": ">=4.0"
263 | },
264 | "peerDependenciesMeta": {
265 | "debug": {
266 | "optional": true
267 | }
268 | }
269 | },
270 | "node_modules/form-data": {
271 | "version": "4.0.0",
272 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
273 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
274 | "dependencies": {
275 | "asynckit": "^0.4.0",
276 | "combined-stream": "^1.0.8",
277 | "mime-types": "^2.1.12"
278 | },
279 | "engines": {
280 | "node": ">= 6"
281 | }
282 | },
283 | "node_modules/forwarded": {
284 | "version": "0.2.0",
285 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
286 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
287 | "engines": {
288 | "node": ">= 0.6"
289 | }
290 | },
291 | "node_modules/fresh": {
292 | "version": "0.5.2",
293 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
294 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
295 | "engines": {
296 | "node": ">= 0.6"
297 | }
298 | },
299 | "node_modules/function-bind": {
300 | "version": "1.1.1",
301 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
302 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
303 | },
304 | "node_modules/get-intrinsic": {
305 | "version": "1.1.3",
306 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
307 | "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
308 | "dependencies": {
309 | "function-bind": "^1.1.1",
310 | "has": "^1.0.3",
311 | "has-symbols": "^1.0.3"
312 | },
313 | "funding": {
314 | "url": "https://github.com/sponsors/ljharb"
315 | }
316 | },
317 | "node_modules/has": {
318 | "version": "1.0.3",
319 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
320 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
321 | "dependencies": {
322 | "function-bind": "^1.1.1"
323 | },
324 | "engines": {
325 | "node": ">= 0.4.0"
326 | }
327 | },
328 | "node_modules/has-symbols": {
329 | "version": "1.0.3",
330 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
331 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
332 | "engines": {
333 | "node": ">= 0.4"
334 | },
335 | "funding": {
336 | "url": "https://github.com/sponsors/ljharb"
337 | }
338 | },
339 | "node_modules/http-errors": {
340 | "version": "2.0.0",
341 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
342 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
343 | "dependencies": {
344 | "depd": "2.0.0",
345 | "inherits": "2.0.4",
346 | "setprototypeof": "1.2.0",
347 | "statuses": "2.0.1",
348 | "toidentifier": "1.0.1"
349 | },
350 | "engines": {
351 | "node": ">= 0.8"
352 | }
353 | },
354 | "node_modules/iconv-lite": {
355 | "version": "0.4.24",
356 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
357 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
358 | "dependencies": {
359 | "safer-buffer": ">= 2.1.2 < 3"
360 | },
361 | "engines": {
362 | "node": ">=0.10.0"
363 | }
364 | },
365 | "node_modules/inherits": {
366 | "version": "2.0.4",
367 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
368 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
369 | },
370 | "node_modules/ipaddr.js": {
371 | "version": "1.9.1",
372 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
373 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
374 | "engines": {
375 | "node": ">= 0.10"
376 | }
377 | },
378 | "node_modules/media-typer": {
379 | "version": "0.3.0",
380 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
381 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
382 | "engines": {
383 | "node": ">= 0.6"
384 | }
385 | },
386 | "node_modules/merge-descriptors": {
387 | "version": "1.0.1",
388 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
389 | "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
390 | },
391 | "node_modules/methods": {
392 | "version": "1.1.2",
393 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
394 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
395 | "engines": {
396 | "node": ">= 0.6"
397 | }
398 | },
399 | "node_modules/mime": {
400 | "version": "1.6.0",
401 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
402 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
403 | "bin": {
404 | "mime": "cli.js"
405 | },
406 | "engines": {
407 | "node": ">=4"
408 | }
409 | },
410 | "node_modules/mime-db": {
411 | "version": "1.52.0",
412 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
413 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
414 | "engines": {
415 | "node": ">= 0.6"
416 | }
417 | },
418 | "node_modules/mime-types": {
419 | "version": "2.1.35",
420 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
421 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
422 | "dependencies": {
423 | "mime-db": "1.52.0"
424 | },
425 | "engines": {
426 | "node": ">= 0.6"
427 | }
428 | },
429 | "node_modules/ms": {
430 | "version": "2.0.0",
431 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
432 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
433 | },
434 | "node_modules/negotiator": {
435 | "version": "0.6.3",
436 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
437 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
438 | "engines": {
439 | "node": ">= 0.6"
440 | }
441 | },
442 | "node_modules/object-inspect": {
443 | "version": "1.12.2",
444 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
445 | "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
446 | "funding": {
447 | "url": "https://github.com/sponsors/ljharb"
448 | }
449 | },
450 | "node_modules/on-finished": {
451 | "version": "2.4.1",
452 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
453 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
454 | "dependencies": {
455 | "ee-first": "1.1.1"
456 | },
457 | "engines": {
458 | "node": ">= 0.8"
459 | }
460 | },
461 | "node_modules/parseurl": {
462 | "version": "1.3.3",
463 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
464 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
465 | "engines": {
466 | "node": ">= 0.8"
467 | }
468 | },
469 | "node_modules/path-to-regexp": {
470 | "version": "0.1.7",
471 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
472 | "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
473 | },
474 | "node_modules/proxy-addr": {
475 | "version": "2.0.7",
476 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
477 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
478 | "dependencies": {
479 | "forwarded": "0.2.0",
480 | "ipaddr.js": "1.9.1"
481 | },
482 | "engines": {
483 | "node": ">= 0.10"
484 | }
485 | },
486 | "node_modules/proxy-from-env": {
487 | "version": "1.1.0",
488 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
489 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
490 | },
491 | "node_modules/qs": {
492 | "version": "6.11.0",
493 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
494 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
495 | "dependencies": {
496 | "side-channel": "^1.0.4"
497 | },
498 | "engines": {
499 | "node": ">=0.6"
500 | },
501 | "funding": {
502 | "url": "https://github.com/sponsors/ljharb"
503 | }
504 | },
505 | "node_modules/range-parser": {
506 | "version": "1.2.1",
507 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
508 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
509 | "engines": {
510 | "node": ">= 0.6"
511 | }
512 | },
513 | "node_modules/raw-body": {
514 | "version": "2.5.1",
515 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
516 | "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
517 | "dependencies": {
518 | "bytes": "3.1.2",
519 | "http-errors": "2.0.0",
520 | "iconv-lite": "0.4.24",
521 | "unpipe": "1.0.0"
522 | },
523 | "engines": {
524 | "node": ">= 0.8"
525 | }
526 | },
527 | "node_modules/safe-buffer": {
528 | "version": "5.2.1",
529 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
530 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
531 | "funding": [
532 | {
533 | "type": "github",
534 | "url": "https://github.com/sponsors/feross"
535 | },
536 | {
537 | "type": "patreon",
538 | "url": "https://www.patreon.com/feross"
539 | },
540 | {
541 | "type": "consulting",
542 | "url": "https://feross.org/support"
543 | }
544 | ]
545 | },
546 | "node_modules/safer-buffer": {
547 | "version": "2.1.2",
548 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
549 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
550 | },
551 | "node_modules/send": {
552 | "version": "0.18.0",
553 | "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
554 | "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
555 | "dependencies": {
556 | "debug": "2.6.9",
557 | "depd": "2.0.0",
558 | "destroy": "1.2.0",
559 | "encodeurl": "~1.0.2",
560 | "escape-html": "~1.0.3",
561 | "etag": "~1.8.1",
562 | "fresh": "0.5.2",
563 | "http-errors": "2.0.0",
564 | "mime": "1.6.0",
565 | "ms": "2.1.3",
566 | "on-finished": "2.4.1",
567 | "range-parser": "~1.2.1",
568 | "statuses": "2.0.1"
569 | },
570 | "engines": {
571 | "node": ">= 0.8.0"
572 | }
573 | },
574 | "node_modules/send/node_modules/ms": {
575 | "version": "2.1.3",
576 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
577 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
578 | },
579 | "node_modules/serve-static": {
580 | "version": "1.15.0",
581 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
582 | "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
583 | "dependencies": {
584 | "encodeurl": "~1.0.2",
585 | "escape-html": "~1.0.3",
586 | "parseurl": "~1.3.3",
587 | "send": "0.18.0"
588 | },
589 | "engines": {
590 | "node": ">= 0.8.0"
591 | }
592 | },
593 | "node_modules/setprototypeof": {
594 | "version": "1.2.0",
595 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
596 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
597 | },
598 | "node_modules/side-channel": {
599 | "version": "1.0.4",
600 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
601 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
602 | "dependencies": {
603 | "call-bind": "^1.0.0",
604 | "get-intrinsic": "^1.0.2",
605 | "object-inspect": "^1.9.0"
606 | },
607 | "funding": {
608 | "url": "https://github.com/sponsors/ljharb"
609 | }
610 | },
611 | "node_modules/statuses": {
612 | "version": "2.0.1",
613 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
614 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
615 | "engines": {
616 | "node": ">= 0.8"
617 | }
618 | },
619 | "node_modules/toidentifier": {
620 | "version": "1.0.1",
621 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
622 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
623 | "engines": {
624 | "node": ">=0.6"
625 | }
626 | },
627 | "node_modules/type-is": {
628 | "version": "1.6.18",
629 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
630 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
631 | "dependencies": {
632 | "media-typer": "0.3.0",
633 | "mime-types": "~2.1.24"
634 | },
635 | "engines": {
636 | "node": ">= 0.6"
637 | }
638 | },
639 | "node_modules/unpipe": {
640 | "version": "1.0.0",
641 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
642 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
643 | "engines": {
644 | "node": ">= 0.8"
645 | }
646 | },
647 | "node_modules/utils-merge": {
648 | "version": "1.0.1",
649 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
650 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
651 | "engines": {
652 | "node": ">= 0.4.0"
653 | }
654 | },
655 | "node_modules/vary": {
656 | "version": "1.1.2",
657 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
658 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
659 | "engines": {
660 | "node": ">= 0.8"
661 | }
662 | }
663 | },
664 | "dependencies": {
665 | "accepts": {
666 | "version": "1.3.8",
667 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
668 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
669 | "requires": {
670 | "mime-types": "~2.1.34",
671 | "negotiator": "0.6.3"
672 | }
673 | },
674 | "array-flatten": {
675 | "version": "1.1.1",
676 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
677 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
678 | },
679 | "asynckit": {
680 | "version": "0.4.0",
681 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
682 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
683 | },
684 | "axios": {
685 | "version": "1.1.3",
686 | "resolved": "https://registry.npmjs.org/axios/-/axios-1.1.3.tgz",
687 | "integrity": "sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==",
688 | "requires": {
689 | "follow-redirects": "^1.15.0",
690 | "form-data": "^4.0.0",
691 | "proxy-from-env": "^1.1.0"
692 | }
693 | },
694 | "body-parser": {
695 | "version": "1.20.1",
696 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
697 | "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
698 | "requires": {
699 | "bytes": "3.1.2",
700 | "content-type": "~1.0.4",
701 | "debug": "2.6.9",
702 | "depd": "2.0.0",
703 | "destroy": "1.2.0",
704 | "http-errors": "2.0.0",
705 | "iconv-lite": "0.4.24",
706 | "on-finished": "2.4.1",
707 | "qs": "6.11.0",
708 | "raw-body": "2.5.1",
709 | "type-is": "~1.6.18",
710 | "unpipe": "1.0.0"
711 | }
712 | },
713 | "bytes": {
714 | "version": "3.1.2",
715 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
716 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
717 | },
718 | "call-bind": {
719 | "version": "1.0.2",
720 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
721 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
722 | "requires": {
723 | "function-bind": "^1.1.1",
724 | "get-intrinsic": "^1.0.2"
725 | }
726 | },
727 | "combined-stream": {
728 | "version": "1.0.8",
729 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
730 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
731 | "requires": {
732 | "delayed-stream": "~1.0.0"
733 | }
734 | },
735 | "content-disposition": {
736 | "version": "0.5.4",
737 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
738 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
739 | "requires": {
740 | "safe-buffer": "5.2.1"
741 | }
742 | },
743 | "content-type": {
744 | "version": "1.0.4",
745 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
746 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
747 | },
748 | "cookie": {
749 | "version": "0.5.0",
750 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
751 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="
752 | },
753 | "cookie-signature": {
754 | "version": "1.0.6",
755 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
756 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
757 | },
758 | "debug": {
759 | "version": "2.6.9",
760 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
761 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
762 | "requires": {
763 | "ms": "2.0.0"
764 | }
765 | },
766 | "delayed-stream": {
767 | "version": "1.0.0",
768 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
769 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
770 | },
771 | "depd": {
772 | "version": "2.0.0",
773 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
774 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
775 | },
776 | "destroy": {
777 | "version": "1.2.0",
778 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
779 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="
780 | },
781 | "ee-first": {
782 | "version": "1.1.1",
783 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
784 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
785 | },
786 | "encodeurl": {
787 | "version": "1.0.2",
788 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
789 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="
790 | },
791 | "escape-html": {
792 | "version": "1.0.3",
793 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
794 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
795 | },
796 | "etag": {
797 | "version": "1.8.1",
798 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
799 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="
800 | },
801 | "express": {
802 | "version": "4.18.2",
803 | "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
804 | "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
805 | "requires": {
806 | "accepts": "~1.3.8",
807 | "array-flatten": "1.1.1",
808 | "body-parser": "1.20.1",
809 | "content-disposition": "0.5.4",
810 | "content-type": "~1.0.4",
811 | "cookie": "0.5.0",
812 | "cookie-signature": "1.0.6",
813 | "debug": "2.6.9",
814 | "depd": "2.0.0",
815 | "encodeurl": "~1.0.2",
816 | "escape-html": "~1.0.3",
817 | "etag": "~1.8.1",
818 | "finalhandler": "1.2.0",
819 | "fresh": "0.5.2",
820 | "http-errors": "2.0.0",
821 | "merge-descriptors": "1.0.1",
822 | "methods": "~1.1.2",
823 | "on-finished": "2.4.1",
824 | "parseurl": "~1.3.3",
825 | "path-to-regexp": "0.1.7",
826 | "proxy-addr": "~2.0.7",
827 | "qs": "6.11.0",
828 | "range-parser": "~1.2.1",
829 | "safe-buffer": "5.2.1",
830 | "send": "0.18.0",
831 | "serve-static": "1.15.0",
832 | "setprototypeof": "1.2.0",
833 | "statuses": "2.0.1",
834 | "type-is": "~1.6.18",
835 | "utils-merge": "1.0.1",
836 | "vary": "~1.1.2"
837 | }
838 | },
839 | "finalhandler": {
840 | "version": "1.2.0",
841 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
842 | "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
843 | "requires": {
844 | "debug": "2.6.9",
845 | "encodeurl": "~1.0.2",
846 | "escape-html": "~1.0.3",
847 | "on-finished": "2.4.1",
848 | "parseurl": "~1.3.3",
849 | "statuses": "2.0.1",
850 | "unpipe": "~1.0.0"
851 | }
852 | },
853 | "follow-redirects": {
854 | "version": "1.15.2",
855 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
856 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA=="
857 | },
858 | "form-data": {
859 | "version": "4.0.0",
860 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
861 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
862 | "requires": {
863 | "asynckit": "^0.4.0",
864 | "combined-stream": "^1.0.8",
865 | "mime-types": "^2.1.12"
866 | }
867 | },
868 | "forwarded": {
869 | "version": "0.2.0",
870 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
871 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
872 | },
873 | "fresh": {
874 | "version": "0.5.2",
875 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
876 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="
877 | },
878 | "function-bind": {
879 | "version": "1.1.1",
880 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
881 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
882 | },
883 | "get-intrinsic": {
884 | "version": "1.1.3",
885 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
886 | "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
887 | "requires": {
888 | "function-bind": "^1.1.1",
889 | "has": "^1.0.3",
890 | "has-symbols": "^1.0.3"
891 | }
892 | },
893 | "has": {
894 | "version": "1.0.3",
895 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
896 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
897 | "requires": {
898 | "function-bind": "^1.1.1"
899 | }
900 | },
901 | "has-symbols": {
902 | "version": "1.0.3",
903 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
904 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
905 | },
906 | "http-errors": {
907 | "version": "2.0.0",
908 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
909 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
910 | "requires": {
911 | "depd": "2.0.0",
912 | "inherits": "2.0.4",
913 | "setprototypeof": "1.2.0",
914 | "statuses": "2.0.1",
915 | "toidentifier": "1.0.1"
916 | }
917 | },
918 | "iconv-lite": {
919 | "version": "0.4.24",
920 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
921 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
922 | "requires": {
923 | "safer-buffer": ">= 2.1.2 < 3"
924 | }
925 | },
926 | "inherits": {
927 | "version": "2.0.4",
928 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
929 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
930 | },
931 | "ipaddr.js": {
932 | "version": "1.9.1",
933 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
934 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
935 | },
936 | "media-typer": {
937 | "version": "0.3.0",
938 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
939 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="
940 | },
941 | "merge-descriptors": {
942 | "version": "1.0.1",
943 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
944 | "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
945 | },
946 | "methods": {
947 | "version": "1.1.2",
948 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
949 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="
950 | },
951 | "mime": {
952 | "version": "1.6.0",
953 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
954 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
955 | },
956 | "mime-db": {
957 | "version": "1.52.0",
958 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
959 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
960 | },
961 | "mime-types": {
962 | "version": "2.1.35",
963 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
964 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
965 | "requires": {
966 | "mime-db": "1.52.0"
967 | }
968 | },
969 | "ms": {
970 | "version": "2.0.0",
971 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
972 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
973 | },
974 | "negotiator": {
975 | "version": "0.6.3",
976 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
977 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
978 | },
979 | "object-inspect": {
980 | "version": "1.12.2",
981 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
982 | "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ=="
983 | },
984 | "on-finished": {
985 | "version": "2.4.1",
986 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
987 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
988 | "requires": {
989 | "ee-first": "1.1.1"
990 | }
991 | },
992 | "parseurl": {
993 | "version": "1.3.3",
994 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
995 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
996 | },
997 | "path-to-regexp": {
998 | "version": "0.1.7",
999 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
1000 | "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
1001 | },
1002 | "proxy-addr": {
1003 | "version": "2.0.7",
1004 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
1005 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
1006 | "requires": {
1007 | "forwarded": "0.2.0",
1008 | "ipaddr.js": "1.9.1"
1009 | }
1010 | },
1011 | "proxy-from-env": {
1012 | "version": "1.1.0",
1013 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
1014 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
1015 | },
1016 | "qs": {
1017 | "version": "6.11.0",
1018 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
1019 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
1020 | "requires": {
1021 | "side-channel": "^1.0.4"
1022 | }
1023 | },
1024 | "range-parser": {
1025 | "version": "1.2.1",
1026 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
1027 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
1028 | },
1029 | "raw-body": {
1030 | "version": "2.5.1",
1031 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
1032 | "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
1033 | "requires": {
1034 | "bytes": "3.1.2",
1035 | "http-errors": "2.0.0",
1036 | "iconv-lite": "0.4.24",
1037 | "unpipe": "1.0.0"
1038 | }
1039 | },
1040 | "safe-buffer": {
1041 | "version": "5.2.1",
1042 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
1043 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
1044 | },
1045 | "safer-buffer": {
1046 | "version": "2.1.2",
1047 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1048 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
1049 | },
1050 | "send": {
1051 | "version": "0.18.0",
1052 | "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
1053 | "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
1054 | "requires": {
1055 | "debug": "2.6.9",
1056 | "depd": "2.0.0",
1057 | "destroy": "1.2.0",
1058 | "encodeurl": "~1.0.2",
1059 | "escape-html": "~1.0.3",
1060 | "etag": "~1.8.1",
1061 | "fresh": "0.5.2",
1062 | "http-errors": "2.0.0",
1063 | "mime": "1.6.0",
1064 | "ms": "2.1.3",
1065 | "on-finished": "2.4.1",
1066 | "range-parser": "~1.2.1",
1067 | "statuses": "2.0.1"
1068 | },
1069 | "dependencies": {
1070 | "ms": {
1071 | "version": "2.1.3",
1072 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1073 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
1074 | }
1075 | }
1076 | },
1077 | "serve-static": {
1078 | "version": "1.15.0",
1079 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
1080 | "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
1081 | "requires": {
1082 | "encodeurl": "~1.0.2",
1083 | "escape-html": "~1.0.3",
1084 | "parseurl": "~1.3.3",
1085 | "send": "0.18.0"
1086 | }
1087 | },
1088 | "setprototypeof": {
1089 | "version": "1.2.0",
1090 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
1091 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
1092 | },
1093 | "side-channel": {
1094 | "version": "1.0.4",
1095 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
1096 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
1097 | "requires": {
1098 | "call-bind": "^1.0.0",
1099 | "get-intrinsic": "^1.0.2",
1100 | "object-inspect": "^1.9.0"
1101 | }
1102 | },
1103 | "statuses": {
1104 | "version": "2.0.1",
1105 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
1106 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
1107 | },
1108 | "toidentifier": {
1109 | "version": "1.0.1",
1110 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
1111 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
1112 | },
1113 | "type-is": {
1114 | "version": "1.6.18",
1115 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
1116 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
1117 | "requires": {
1118 | "media-typer": "0.3.0",
1119 | "mime-types": "~2.1.24"
1120 | }
1121 | },
1122 | "unpipe": {
1123 | "version": "1.0.0",
1124 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
1125 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="
1126 | },
1127 | "utils-merge": {
1128 | "version": "1.0.1",
1129 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
1130 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA=="
1131 | },
1132 | "vary": {
1133 | "version": "1.1.2",
1134 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1135 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="
1136 | }
1137 | }
1138 | }
1139 |
--------------------------------------------------------------------------------