on master help sign in
Merge pull request #1 from arthyn/working-search-ui

Working search UI, gossip, posting

commita3adca576aac033f078934f7eb602493929c28a6 authorHunter Miller <hunter@hmiller.dev> dateMon 11 Jul 2022, 10:25 (4 years ago) parent0b0074b7539376
40 files changed+7871−170
desk/app/seek.hoon+171−33 desk/gen/metaphone.hoon+6 desk/gen/publish-all.hoon+29 desk/gen/publish.hoon+4−5 desk/lib/gossip.hoon+601 desk/lib/metaphone.hoon+190 desk/lib/pals.hoon+18 desk/lib/seek-json.hoon+39−9 desk/lib/seek.hoon+19−9 desk/lib/sift.hoon+20−5 desk/mar/declarations.hoon+14 desk/mar/declare.hoon+14 desk/mar/directory-notice.hoon → desk/mar/directory-listing.hoon+3−4 desk/mar/directory.hoon+13 desk/mar/gossip/rumor.hoon+11 desk/mar/listings.hoon−14 desk/mar/search.hoon+14 desk/sur/pals.hoon+41 desk/sur/seek.hoon+37−8 desk/sys.kelvin+1−1 desk/ted/publish-all.hoon+40 ui/index.html+1−1 ui/package-lock.json+5800 ui/package.json+17−5 ui/src/api.ts+6 ui/src/app.tsx+26−39 ui/src/components/AppTile.tsx−29 ui/src/components/Filter.tsx+55 ui/src/components/Layout.tsx+17 ui/src/components/Logo.tsx+13 ui/src/components/Meta.tsx+45 ui/src/components/Paginator.tsx+129 ui/src/components/SearchInput.tsx+29 ui/src/components/SearchList.tsx+52 ui/src/components/TagField.tsx+151 ui/src/index.css+5−1 ui/src/pages/Post.tsx+106 ui/src/pages/Search.tsx+92 ui/src/types/seek.ts+32 ui/tailwind.config.js+10−7
desk/app/seek.hoon+171−33
@@ -1,7 +1,10 @@
11/- s=seek
2−/+ default-agent, verb, dbug
2+/+ gossip, default-agent, verb, dbug
33/+ *seek
44/+ sift
5+/+ m=metaphone
6+/$ grab-listing %noun %directory-listing
7+/$ grab-directory %noun %directory
58^- agent:gall
69=>
710 |%
@@ -9,6 +12,7 @@
912 +$ state-0
1013 $: %0
1114 =lookup:s
15+ =phonetics:s
1216 =trail:s
1317 =directory:s
1418 published=directory:s
@@ -18,6 +22,13 @@
1822=* state -
1923=<
2024 %+ verb &
25+ %- %+ agent:gossip
26+ [2 %mutuals %mutuals]
27+ %- malt
28+ ^- (list [mark $-(* vase)])
29+ :~ [%directory-listing |=(n=* !>((grab-listing n)))]
30+ [%directory |=(n=* !>((grab-directory n)))]
31+ ==
2132 %- agent:dbug
2233 |_ =bowl:gall
2334 +* this .
@@ -88,26 +99,66 @@
8899 |= [=mark =vase]
89100 |^ ^+ cor
90101 ?+ mark ~|(bad-poke/mark !!)
91− %directory-notice
92− =+ !<(=notice:s vase)
93− (publish notice)
102+ %declare
103+ =+ !<(=declare:s vase)
104+ di-abet:(publish declare di-core)
105+ :: %declarations
106+ :: =+ !<(declared=(list declare:s) vase)
107+ :: =. di-core (roll declared publish)
108+ :: cor
94109 ==
95110 ++ publish
96− |= =notice:s
97− ^+ cor
98− ?> =(src.bowl source.q.notice)
99− ?> =(p.notice (digest q.notice))
100− di-abet:(di-init:(di-abed:di-core p.notice) q.notice)
111+ |= [=declare:s core=_di-core]
112+ ^+ di-core
113+ ::
114+ ?> from-self
115+ =/ listing
116+ :* post=q.declare
117+ hash=(digest q.declare)
118+ reach=p.declare
119+ source=our.bowl
120+ time=now.bowl
121+ ==
122+ ?: (~(has by directory) hash.listing)
123+ ~& 'Listing already exists.'
124+ di-core
125+ =. published (~(put by directory) hash.listing listing)
126+ (di-publish:(di-abed:core hash.listing) listing)
101127 --
102−::
128+::
103129++ watch
104130 |= =path
105131 ^+ cor
106− cor
132+ ?+ path ~|(bad-watch-path/path !!)
133+ [%~.~ %gossip %source ~]
134+ (give %fact ~ directory+!>(published))
135+ ==
107136++ agent
108137 |= [=wire =sign:agent:gall]
109138 ^+ cor
110− cor
139+ ?+ wire ~|(bad-agent-wire/wire !!)
140+ [%~.~ %gossip %gossip ~]
141+ ?+ -.sign ~|([%unexpected-gossip-sign -.sign] !!)
142+ %fact
143+ =* mark p.cage.sign
144+ =* vase q.cage.sign
145+ ?+ mark
146+ ~& [dap.bowl %unexpected-mark-fact mark wire=wire]
147+ cor
148+ %directory-listing
149+ =+ !<(=listing:s vase)
150+ ?> =(hash.listing (digest post.listing))
151+ ?: (~(has by directory) hash.listing)
152+ ~& 'Listing already exists.'
153+ cor
154+ di-abet:(di-publish:(di-abed:di-core hash.listing) listing)
155+ ::
156+ %directory
157+ =+ !<(d=directory:s vase)
158+ cor(directory (~(uni by directory) d))
159+ ==
160+ ==
161+ ==
111162++ arvo
112163 |= [=wire sign=sign-arvo]
113164 ^+ cor
@@ -117,20 +168,92 @@
117168 |= =path
118169 ^- (unit (unit cage))
119170 ?+ path [~ ~]
120− [%x %lookup @ ~]
121− =- ``listings+!>(-)
122− ^- (list listing:s)
123− %+ turn
124− %+ turn
125− %+ sort (~(gut by lookup) i.t.t.path *(list entry:s))
126− |= [a=entry:s b=entry:s]
127− (gte rank.a rank.b)
128− |=(=entry:s hash.entry)
129− |= =hash:s
130− (~(got by directory) hash)
131− ::
171+ [%x %lookup @ @ @ @ ~]
172+ =- ``search+!>(-)
173+ ^- search:s
174+ =/ filter
175+ %+ rash i.t.t.path
176+ (perk [%app %group %content %other %all ~])
177+ =/ term `@t`(slav %t i.t.t.t.path)
178+ =/ start (slav %ud i.t.t.t.t.path)
179+ =/ limit (slav %ud i.t.t.t.t.t.path)
180+ :: expects encoded @t values)
181+ =/ all
182+ %+ skim
183+ %- get-listings
184+ %- get-hashes
185+ %- sort-entries
186+ (get-entries term)
187+ |= =listing:s
188+ |(=(filter %all) =(filter type.post.listing))
189+ =/ listings (swag [start limit] all)
190+ :* listings
191+ start
192+ limit
193+ (lent listings)
194+ (lent all)
195+ ==
132196 ==
133−::
197+++ get-entries
198+ |= =key:s
199+ ^- (list entry:s)
200+ =/ title (norm:sift key) :: full query
201+ =/ parts (sift:sift key) :: split query
202+ =/ title-entries
203+ %- malt
204+ %+ weld
205+ (get-phonetics title)
206+ (~(gut by lookup) title *(list entry:s))
207+ %~ tap by
208+ %-
209+ %~ uni by :: union and prefer title entries (better rank)
210+ %- malt
211+ %- zing
212+ %+ turn
213+ parts
214+ |= word=@t
215+ %+ turn
216+ %+ weld
217+ (get-phonetics word)
218+ (~(gut by lookup) word *(list entry:s))
219+ |= =entry:s
220+ (derank entry 10)
221+ title-entries
222+++ get-phonetics
223+ |= =key:s
224+ ^- (list entry:s)
225+ =/ keys
226+ %+ skim
227+ %~ tap in
228+ (~(gut by phonetics) (utter:m key) *(set key:s))
229+ |= [word=key:s]
230+ !=(key word)
231+ %+ roll
232+ keys
233+ |= [word=key:s entries=(list entry:s)]
234+ %+ weld
235+ entries
236+ %+ turn
237+ (~(gut by lookup) word *(list entry:s))
238+ |= =entry:s
239+ (derank entry 10)
240+++ derank
241+ |= [=entry:s offset=@ud]
242+ [hash.entry (add rank.entry offset)] :: phonetically similar should be lower
243+++ sort-entries
244+ |= entries=(list entry:s)
245+ %+ sort entries
246+ |= [a=entry:s b=entry:s]
247+ (lth rank.a rank.b)
248+++ get-hashes
249+ |= entries=(list entry:s)
250+ %+ turn
251+ entries
252+ |=(=entry:s hash.entry)
253+++ get-listings
254+ |= l=(list hash)
255+ %+ turn l
256+ |=(=hash:s (~(got by directory) hash))
134257++ from-self =(our src):bowl
135258++ di-core
136259 |_ [=listing:s =hash:s]
@@ -140,30 +263,45 @@
140263 ++ di-abed
141264 |= h=hash:s
142265 di-core(hash h, listing (~(gut by directory) h *listing:s))
143− ++ di-init
266+ ++ di-publish
144267 |= l=listing:s
145268 =. listing l
269+ =. cor (emit (invent:gossip %directory-listing !>(listing)))
146270 =/ entries=lookup:s
147271 %- malt
148272 %- zing
149− :~ ~[[title.l ~[[hash rank=0]]]]
273+ :~ ~[[(crip (cass (trip title.post.l))) ~[[hash rank=0]]]]
274+ %+ turn
275+ (sift:sift title.post.l)
276+ |= word=@t
277+ [word ~[[hash rank=1]]]
150278 %+ turn
151− tags.l
279+ tags.post.l
152280 |= tag=@t
153− [tag ~[[hash rank=1]]]
281+ [(norm:sift tag) ~[[hash rank=2]]]
154282 %+ turn
155− (sift:sift description.l)
283+ (sift:sift description.post.l)
156284 |= word=@t
157− [word ~[[hash rank=2]]]
285+ [word ~[[hash rank=3]]]
286+ ~[[type.post.l ~[[hash rank=4]]]]
158287 ==
159− ~& -:!>(entries)
160− ~& -:!>(lookup)
288+ =/ keys ~(tap in ~(key by entries))
289+ =. trail (~(put by trail) hash keys)
161290 =. lookup
162291 %- ~(uni by entries)
163292 %- ~(rut by lookup)
164293 |= [=key:s value=(list entry:s)]
165294 ?. (~(has by entries) key) value
166295 (weld value (~(got by entries) key))
296+ =. phonetics
297+ %-
298+ %- ~(uno by phonetics)
299+ %- malt
300+ %+ turn keys
301+ |= =key:s
302+ [(utter:m key) (silt ~[key])]
303+ |= [k=key:s v=(set key:s) w=(set key:s)]
304+ (~(uni in v) w)
167305 di-core
168306 --
169307--
desk/gen/metaphone.hoonnew file+6
@@ -0,0 +1,6 @@
1+/+ *metaphone
2+:- %say
3+|= $: [now=@da eny=@uv =beak]
4+ [[word=@t ~] ~]
5+ ==
6+noun+(utter word)
desk/gen/publish-all.hoonnew file+29
@@ -0,0 +1,29 @@
1+/- s=seek
2+/+ *seek
3+:- %say
4+|= $: [now=@da eny=@uv =beak]
5+ [ ~]
6+ ==
7+:- %declarations
8+^- (list declare:s)
9+:* :- %friends
10+ ['networked subject' %group 'web+urbitgraph://group/~matwet/networked-subject' 'https://subject.network | networked subject' 'https://urbits3.ams3.digitaloceanspaces.com/sitful-hatred/2022.7.07..17.15.52-ns.png' ~['hosting' 'networking' 'urbit' 'ops']]
11+ :- %friends
12+ ['Hooniverse' %group 'web+urbitgraph://group/~hiddev-dannut/new-hooniverse' 'Community based Hoon learning for all levels. For discussion of Hoon specific to Uqbar, join ~hiddev-dannut/uhoon' 'https://i.imgur.com/ghThlz7.png' ~['hoon' 'dev' 'urbit' 'programming' 'education']]
13+ :- %friends
14+ ['Hollow Mars Theory' %group 'web+urbitgraph://group/~rabsef-bicrym/hollow-mars-theory' 'Definitely NOT a Conspiracy Chat' '' ~['conspiracies' 'ufos' 'steel beams']]
15+ :- %friends
16+ ['celestial systems' %group 'web+urbitgraph://group/~nocsyx-lassul/celestial-systems' 'A place for pilots who are building hosting providers' '' ~['hosting' 'ops' 'urbit']]
17+ :- %friends
18+ ['Structure' %group 'web+urbitgraph://group/~fabled-faster/structure' 'Urbit Structural Design and Engineering Group. Always Thinking About Mechanics.' 'https://fabled-faster.nyc3.digitaloceanspaces.com/fabled-faster/2022.1.27..17.59.43-image.png' ~['design' 'ux' 'hci' 'urbit']]
19+ :- %friends
20+ ['The Marketplace' %group 'web+urbitgraph://group/~tirrel/the-marketplace' 'Welcome to The Marketplace, featuring The Pit, Urbit\'s first open-outcry market!' 'https://snipboard.io/U0IYyi.jpg' ~['urbit' 'market' 'sell' 'buy']]
21+ :- %friends
22+ ['The Forge' %group 'web+urbitgraph://group/~middev/the-forge' 'pale fire computing' 'https://nyc3.digitaloceanspaces.com/archiv/littel-wolfur/2021.5.06..21.01.58-the%20forge.png' ~['dev' 'programming' 'hoon' 'urbit']]
23+ :- %friends
24+ ['UFORIA' %group 'web+urbitgraph://group/~tiplec-lacnyx/ufora' 'UFO Research, Investigations, and Analysis' 'https://tiplec-lacnyx.nyc3.digitaloceanspaces.com/tiplec-lacnyx/2021.12.27..06.09.47-change1.jpg' ~['UFO' 'conspiracies' 'research']]
25+ :- %friends
26+ ['Urbit Community' %group 'web+urbitgraph://group/~bitbet-bolbel/urbit-community' 'World hub, help desk, meet and greet, etc.' 'https://fabled-faster.nyc3.digitaloceanspaces.com/fabled-faster/2021.4.02..21.52.41-UC.png' ~['general' 'urbit' 'community' 'help']]
27+ :- %friends
28+ ['Urbytes' %group 'web+urbitgraph://group/~nartes-fasrum/urbytes' 'We feed and water Mars.' '' ~['cooking' 'food' 'beverages' 'peanut butter eggs']]
29+==
desk/gen/publish.hoon+4−5
@@ -2,9 +2,8 @@
22/+ *seek
33:- %say
44|= $: [now=@da eny=@uv =beak]
5− [[=listing:s ~] ~]
5+ [[=post:s ~] ~]
66 ==
7−=. time.listing now
8−:- %directory-notice
9−^- notice:s
10−[(digest listing) listing]
7+:- %declare
8+^- declare:s
9+[%friends post]
desk/lib/gossip.hoonnew file+601
@@ -0,0 +1,601 @@
1+:: gossip: data sharing with pals
2+::
3+:: automates using /app/pals for peer & content discovery,
4+:: letting the underlying agent focus on handling the data.
5+::
6+:: at the time of writing, this library has not seen much real-world
7+:: use yet. it may be subject to behavioral or interface changes.
8+:: it tries its best to not generate obscene amounts of network load,
9+:: but has not yet proven itself in the real world.
10+:: for the time being, please tread carefully.
11+::
12+:: usage
13+::
14+:: to use this library, call its +agent arm with an initial
15+:: configuration and a map of, per mark, noun->vase convertors,
16+:: then call the resulting gate with the agent's door.
17+::
18+:: data from peers will come in through +on-agent, as %facts with
19+:: a /~/gossip wire.
20+:: the mark convertors ensure that this library can reconstitute the
21+:: appropriate vases from the (cask *)s it sends around internally.
22+:: if a mark conversion for a received datum isn't available, then
23+:: the library will inject a %fact with a %gossip-unknown mark instead,
24+:: containing a (cask *). the agent may either store it for later use,
25+:: or handle it directly.
26+::
27+:: for new incoming subscriptions, the underlying agent's +on-watch is
28+:: called, with /~/gossip/source, so that it may give initial results.
29+::TODO but this is somewhat wrong for multi-hop subscriptions, right?
30+:: /source is only intended to give _locally originating_ data.
31+:: if hops are >1, should we do both /source and /gossip?
32+:: doesn't this result in a lot of traffic, for know-a-lot cases?
33+::
34+:: when data originates locally and needs to be given to our peers,
35+:: simply produce a normal %fact on the /~/gossip/source path.
36+:: the +invent helper can be used to do this.
37+:: refrain from re-emitting received %facts manually. the library will
38+:: handle this for you, based on the current configuration.
39+::
40+:: to change the configuration after the agent has been started, emit
41+:: a %fact with the %gossip-config mark on the /~/gossip/config path.
42+:: the +configure helper can be used to do this.
43+:: the +read-config helper scries out the current configuration.
44+:: setting hops to 1 distributes the data to direct pals only.
45+:: setting hops to 0 prevents emission of any gossip data at all,
46+:: even during initial subscription setup.
47+::
48+:: (we introduce the /~/etc path prefix convention to indicate paths
49+:: that are for library-specific use only.
50+:: the advantage this has over the "mutated agent" pattern (for example,
51+:: /lib/shoe) is that the library consumes a normal $agent:gall, making
52+:: it theoretically easier to compose with other agent libraries.
53+:: the disavantage, of course, is that internal interaction with the
54+:: wrapper library isn't type-checked anymore. helper functions make
55+:: that less of a problem, but the developer must stay vigilant about
56+:: casting all the relevant outputs.)
57+::
58+:: when considering the types of data to be sent through gossip, keep
59+:: in mind that the library keeps track of (hashes of) all the individual
60+:: datums it has heard. as such, if your data is of the shape @t, and we
61+:: hear a 'hello' once, we will completely ignore any 'hello' that come
62+:: afterward, even if they originate from distinct events.
63+:: if this is a problem for your use case, consider including a timestamp
64+:: or other source of uniqueness with each distinct datum.
65+::
66+:: note that this library and its protocol are currently not in the
67+:: business of providing anonymized gossip. any slightly motivated actor
68+:: will have no problem modifying this library to detect and record
69+:: sources of data with good accuracy.
70+::
71+:: wip, libdev thoughts
72+::
73+:: we may want to include additional metadata alongside gossip facts,
74+:: such as a hop counter, set of informed peers, origin timestamp, etc.
75+:: we may want to use pokes exclusively, instead of watches/facts,
76+:: making it easier to exclude the src.bowl, include metadata, etc.
77+::
78+:: what if this was a userspace-infrastructure app instead of a wrapper?
79+:: how would ensuring installation of this app-dependency work?
80+:: it gains us... a higher chance of peers having this installed.
81+:: what if it was just part of pals?
82+:: would let us more-reliably poke mutuals and leeches, if we wanted to do
83+:: a proxy-broadcast thing.
84+::
85+:: when considering adding features like rumor signing, keep in mind that
86+:: this library is mostly in the business of ferrying casks. perhaps
87+:: features like signing should be left up to applications themselves.
88+::
89+:: internal logic
90+::
91+:: - on-init or during first on-load, watch pals for targets & leeches.
92+:: - if pals is not running, the watch will simply pend until it starts.
93+:: - if pals ever watch-nacks (it shouldn't), we try rewatching after ~m1.
94+::
95+:: - for facts produced on /~/gossip/source, we
96+:: - wrap them as %gossip-rumor to send them out on /~/gossip/gossip
97+:: - for new pals matching the hear mode, we watch their /~/gossip/gossip
98+:: - for gone pals, we leave that watch
99+:: - for facts on those watches
100+:: - ensure they're %gossip-rumors, ignoring otherwise
101+:: - unwrap them and +on-agent /~/gossip/gossip into the inner agent, and
102+:: - re-emit them as facts on /~/gossip/gossip if there are hops left
103+:: - for nacks on those watches, we retry after ~m30
104+::
105+/- pals
106+/+ lp=pals, dbug, verb
107+::
108+|%
109++$ rumor
110+ $: [kind=@ meta=*]
111+ data=(cask *)
112+ ==
113++$ meta-0 hops=_0
114+::
115++$ whos
116+ $? %anybody :: any ship discoverable through pals
117+ %targets :: any ship we've added as a pal
118+ %mutuals :: any mutual pal
119+ ==
120+::
121++$ config
122+ $: hops=_1 :: how far away gossip may travel
123+ :: (1 hop is pals only, 0 stops exposing data at all)
124+ hear=whos :: who to subscribe to
125+ tell=whos :: who to allow subscriptions from
126+ ==
127+++ invent
128+ |= =cage
129+ ^- card:agent:gall
130+ [%give %fact [/~/gossip/source]~ cage]
131+::
132+++ configure
133+ |= =config
134+ ^- card:agent:gall
135+ [%give %fact [/~/gossip/config]~ %gossip-config !>(config)]
136+::
137+++ read-config
138+ |= bowl:gall
139+ ^- config
140+ .^(config %gx /(scot %p our)/[dap]/(scot %da now)/~/gossip/config/noun)
141+::
142+++ agent
143+ |= $: init=config
144+ grab=(map mark $-(* vase))
145+ ==
146+ ^- $-(agent:gall agent:gall)
147+ |^ agent
148+ ::
149+ +$ state-0
150+ $: %0
151+ manner=config :: latest config
152+ memory=(set @uv) :: datums seen
153+ future=(list rumor) :: rumors of unknown kinds
154+ ==
155+ ::
156+ +$ card card:agent:gall
157+ ::
158+ ++ helper
159+ |_ [=bowl:gall state-0]
160+ +* state +<+
161+ pals ~(. lp bowl)
162+ ++ en-cage
163+ |= =(cask *)
164+ ^- cage
165+ ?^ to=(~(get by grab) p.cask)
166+ [p.cask (u.to q.cask)]
167+ ~& [gossip+dap.bowl %no-mark p.cask]
168+ [%gossip-unknown !>(cask)]
169+ ::
170+ ++ de-cage
171+ |=(cage `(cask *)`[p q.q])
172+ ::
173+ ++ en-rumor ::NOTE assumes !=(0 hops.manner)
174+ |= =cage
175+ ^- rumor
176+ :_ (de-cage cage)
177+ ~| [%en-rumor initial-hops=hops.manner]
178+ [%0 `meta-0`(dec hops.manner)]
179+ ::
180+ ++ play-card :: en-rumor relevant facts, handle config changes
181+ |= =card
182+ ^- (quip ^card _state)
183+ ?. ?=([%give %fact *] card) [[card]~ state]
184+ ?: =(~ paths.p.card) [[card]~ state]
185+ =/ [int=(list path) ext=(list path)]
186+ %+ skid paths.p.card
187+ |= =path
188+ ?=([%~.~ %gossip *] path)
189+ =/ caz=(list ^card)
190+ ?: =(~ ext) ~
191+ [card(paths.p ext)]~
192+ ?: ?=(~ int) [caz state]
193+ =* path i.int
194+ :: there may only be one gossip-internal path per card
195+ ::
196+ ?. =(~ t.int)
197+ ~& [gossip+dap.bowl %too-many-internal-targets int]
198+ ~|([%too-many-internal-targets int] !!)
199+ ?: =(/~/gossip/config path)
200+ ~| [%weird-fact-on-config p.cage.p.card]
201+ ?> =(%gossip-config p.cage.p.card)
202+ =/ old=config manner
203+ =. manner !<(config q.cage.p.card)
204+ :_ state
205+ ;: weld
206+ (hear-changed hear.old)
207+ (tell-changed tell.old)
208+ caz
209+ ==
210+ ~| [%strange-internal-target path]
211+ ?> =(/~/gossip/source path)
212+ :: if hops is configured at 0, we don't broadcast at all.
213+ ::
214+ =. memory (~(put in memory) (sham (de-cage cage.p.card)))
215+ ?: =(0 hops.manner) [caz state]
216+ =- [[- caz] state]
217+ =/ =rumor (en-rumor cage.p.card)
218+ card(paths.p [/~/gossip/gossip]~, cage.p [%gossip-rumor !>(rumor)])
219+ ::
220+ ++ play-cards
221+ |= cards=(list card)
222+ ^- (quip card _state)
223+ =| out=(list card)
224+ |-
225+ ?~ cards [out state]
226+ =^ caz state (play-card i.cards)
227+ $(out (weld out caz), cards t.cards)
228+ ::
229+ ++ play-first-cards
230+ |= cards=(list card)
231+ ^- (quip card _state)
232+ =| out=(list card)
233+ |-
234+ ?~ cards [out state]
235+ ?. ?=([%give %fact ~ *] i.cards)
236+ =^ caz state (play-card i.cards)
237+ $(out (weld out caz), cards t.cards)
238+ :: if hops is set to 0, we block even the initial response
239+ ::
240+ ?: =(0 hops.manner) $(cards t.cards)
241+ =. cage.p.i.cards
242+ [%gossip-rumor !>((en-rumor cage.p.i.cards))]
243+ $(out (snoc out i.cards), cards t.cards)
244+ ::
245+ ++ resend-rumor
246+ |= =rumor
247+ ^- (unit card)
248+ ?> =(%0 kind.rumor) ::NOTE should have been checked for already
249+ ?~ meta=((soft ,hops=@ud) meta.rumor) ~
250+ =* hops hops.u.meta
251+ ?: =(0 hops) ~
252+ =. meta.rumor (dec hops)
253+ `[%give %fact [/~/gossip/gossip]~ %gossip-rumor !>(rumor)]
254+ ::
255+ ++ may-watch
256+ |= who=ship
257+ ?- tell.manner
258+ %anybody &
259+ %targets (~(has in (targets:pals ~.)) who)
260+ %mutuals (~(has in (mutuals:pals ~.)) who)
261+ ==
262+ ::
263+ ::
264+ ++ watch-pals
265+ ^- (list card)
266+ =/ =gill:gall [our.bowl %pals]
267+ :~ [%pass /~/gossip/pals/targets %agent gill %watch /targets]
268+ [%pass /~/gossip/pals/leeches %agent gill %watch /leeches]
269+ ==
270+ ::
271+ ++ watching-target
272+ |= s=ship
273+ %- ~(has by wex.bowl)
274+ [/~/gossip/gossip/(scot %p s) s dap.bowl]
275+ ::
276+ ++ want-target
277+ %~ has in
278+ ?- hear.manner
279+ %anybody (~(uni in leeches:pals) (targets:pals ~.))
280+ %targets (targets:pals ~.)
281+ %mutuals (mutuals:pals ~.)
282+ ==
283+ ::
284+ ++ retry-timer
285+ |= [t=@dr p=path]
286+ ^- card
287+ :+ %pass [%~.~ %gossip %retry p]
288+ [%arvo %b %wait (add now.bowl t)]
289+ ::
290+ ++ watch-target
291+ |= s=ship
292+ ^- (list card)
293+ ?: (watching-target s) ~
294+ :_ ~
295+ :+ %pass /~/gossip/gossip/(scot %p s)
296+ [%agent [s dap.bowl] %watch /~/gossip/gossip]
297+ ::
298+ ++ leave-target
299+ |= s=ship
300+ ^- card
301+ :+ %pass /~/gossip/gossip/(scot %p s)
302+ [%agent [s dap.bowl] %leave ~]
303+ ::
304+ ++ kick-target
305+ |= s=ship
306+ ^- card
307+ [%give %kick [/~/gossip/gossip]~ `s]
308+ ::
309+ ++ hear-changed
310+ |= old=whos
311+ ^- (list card)
312+ =* new hear.manner
313+ ?: =(old new) ~
314+ =/ listen=(set ship)
315+ ?- new
316+ %anybody (~(uni in leeches:pals) (targets:pals ~.))
317+ %targets (targets:pals ~.)
318+ %mutuals (mutuals:pals ~.)
319+ ==
320+ =/ hearing=(set ship)
321+ %- ~(gas in *(set ship))
322+ %+ murn ~(tap by wex.bowl)
323+ |= [[=wire =ship =term] [acked=? =path]]
324+ ^- (unit ^ship)
325+ ?. ?=([%~.~ %gossip %gossip @ ~] wire) ~
326+ `ship
327+ %+ weld
328+ (turn ~(tap in (~(dif in hearing) listen)) leave-target)
329+ ^- (list card)
330+ (zing (turn ~(tap in (~(dif in listen) hearing)) watch-target))
331+ ::
332+ ++ tell-changed
333+ |= old=whos
334+ ^- (list card)
335+ =* new tell.manner
336+ ?: =(old new) ~
337+ ?- [old new]
338+ $? [* %anybody]
339+ [%mutuals *]
340+ ==
341+ :: perms got broader, we can just no-op
342+ ::
343+ ~
344+ ::
345+ [* ?(%targets %mutuals)]
346+ :: perms got tighter, we need to kick stragglers
347+ ::
348+ =/ allowed=(set ship)
349+ ?- new
350+ %anybody !!
351+ %targets (targets:pals ~.)
352+ %mutuals (mutuals:pals ~.)
353+ ==
354+ %+ murn ~(val by sup.bowl)
355+ |= [s=ship p=path]
356+ ^- (unit card)
357+ =; kick=?
358+ ?.(kick ~ `(kick-target s))
359+ ?& ?=([%~.~ %gossip %gossip ~] p)
360+ !(~(has in allowed) s)
361+ ==
362+ ==
363+ --
364+ ::
365+ ++ agent
366+ |= inner=agent:gall
367+ =| state-0
368+ =* state -
369+ %+ verb |
370+ %- agent:dbug
371+ ^- agent:gall
372+ |_ =bowl:gall
373+ +* this .
374+ pals ~(. lp bowl)
375+ def ~(. (default-agent this %|) bowl)
376+ og ~(. inner bowl)
377+ up ~(. helper bowl state)
378+ ++ on-init
379+ ^- (quip card _this)
380+ =. manner init
381+ =^ cards inner on-init:og
382+ =^ cards state (play-cards:up cards)
383+ [(weld watch-pals:up cards) this]
384+ ::
385+ ++ on-save !>([[%gossip state] on-save:og])
386+ ++ on-load
387+ |= ole=vase
388+ ^- (quip card _this)
389+ ?. ?=([[%gossip *] *] q.ole)
390+ =. manner init
391+ =^ cards inner (on-load:og ole)
392+ =^ cards state (play-cards:up cards)
393+ [(weld watch-pals:up cards) this]
394+ ::
395+ =+ !<([[%gossip old=state-0] ile=vase] ole)
396+ =. state old
397+ =^ cards inner (on-load:og ile)
398+ =^ cards state (play-cards:up cards)
399+ ::TODO for later versions, add :future retry logic as needed
400+ [cards this]
401+ ::
402+ ++ on-watch
403+ |= =path
404+ ^- (quip card _this)
405+ ?. ?=([%~.~ %gossip *] path)
406+ =^ cards inner (on-watch:og path)
407+ =^ cards state (play-cards:up cards)
408+ [cards this]
409+ :: /~/gossip/gossip
410+ ?> =(/gossip t.t.path)
411+ ?. (may-watch:up src.bowl)
412+ ~|(%gossip-forbidden !!)
413+ =^ cards inner (on-watch:og /~/gossip/source)
414+ =^ cards state (play-first-cards:up cards)
415+ [cards this]
416+ ::
417+ ++ on-agent
418+ |= [=wire =sign:agent:gall]
419+ ^- (quip card _this)
420+ ?. ?=([%~.~ %gossip *] wire)
421+ =^ cards inner (on-agent:og wire sign)
422+ =^ cards state (play-cards:up cards)
423+ [cards this]
424+ ::
425+ ?+ t.t.wire ~|([%gossip %unexpected-wire wire] !!)
426+ [%gossip @ ~]
427+ ~| t.t.wire
428+ ?> =(src.bowl (slav %p i.t.t.t.wire))
429+ ?- -.sign
430+ %fact
431+ =* mark p.cage.sign
432+ =* vase q.cage.sign
433+ ?. =(%gossip-rumor mark)
434+ ~& [gossip+dap.bowl %ignoring-unexpected-fact mark=mark]
435+ [~ this]
436+ =+ !<(=rumor vase)
437+ =/ hash (sham data.rumor)
438+ ?: (~(has in memory) hash)
439+ [~ this]
440+ ?. =(%0 kind.rumor)
441+ ~& [gossip+dap.bowl %delaying-unknown-rumor-kind kind.rumor]
442+ [~ this(future [rumor future])]
443+ =/ mage=cage (en-cage:up data.rumor)
444+ =^ cards inner (on-agent:og /~/gossip/gossip sign(cage mage))
445+ =^ cards state (play-cards:up cards)
446+ :_ this(memory (~(put in memory) hash))
447+ (weld (drop (resend-rumor:up rumor)) cards)
448+ ::
449+ %watch-ack
450+ :_ this
451+ ?~ p.sign ~
452+ :: 30 minutes might cost us some responsiveness when the other
453+ :: party changes their local config, but in return we save both
454+ :: ourselves and others from a lot of needless retries.
455+ :: (notably, "do we still care" check also lives in %wake logic.)
456+ ::
457+ [(retry-timer:up ~m30 /watch/(scot %p src.bowl))]~
458+ ::
459+ %kick
460+ :_ this
461+ :: to prevent pathological kicks from exploding, we always
462+ :: wait a couple seconds before resubscribing.
463+ :: perhaps this is overly careful, but we cannot tell the
464+ :: difference between "clog" kicks and "missing mark" kicks,
465+ :: so we cannot take more accurate/appropriate action here.
466+ :: (notably, "do we still care" check also lives in %wake logic.)
467+ ::
468+ [(retry-timer:up ~s15 /watch/(scot %p src.bowl))]~
469+ ::
470+ %poke-ack
471+ ~& [gossip+dap.bowl %unexpected-poke-ack wire]
472+ [~ this]
473+ ==
474+ ::
475+ [%pals @ ~]
476+ ?- -.sign
477+ %poke-ack ~&([gossip+dap.bowl %unexpected-poke-ack wire] [~ this])
478+ %kick [watch-pals:up this]
479+ ::
480+ %watch-ack
481+ :_ this
482+ ?~ p.sign ~
483+ %- (slog 'gossip: failed to subscribe on %pals!!' u.p.sign)
484+ [(retry-timer:up ~m1 t.t.wire)]~
485+ ::
486+ %fact
487+ =* mark p.cage.sign
488+ =* vase q.cage.sign
489+ ?. =(%pals-effect mark)
490+ ~& [gossip+dap.bowl %unexpected-fact-mark mark wire]
491+ [~ this]
492+ =+ !<(=effect:^pals vase)
493+ :_ this
494+ =* ship ship.effect
495+ =* kick [(kick-target:up ship)]~
496+ =* view (watch-target:up ship)
497+ =* flee [(leave-target:up ship)]~
498+ ?- -.effect
499+ %meet
500+ ?- hear.manner
501+ %anybody view
502+ %targets view
503+ %mutuals ?:((mutual:pals ~. ship) view ~)
504+ ==
505+ ::
506+ %part
507+ %+ weld
508+ ?- tell.manner
509+ %anybody ~
510+ %targets kick
511+ %mutuals kick
512+ ==
513+ ?- hear.manner
514+ %anybody ?:((leeche:pals ship) ~ flee)
515+ %targets flee
516+ %mutuals flee
517+ ==
518+ ::
519+ %near
520+ ?- hear.manner
521+ %anybody view
522+ %targets ~
523+ %mutuals ?:((mutual:pals ~. ship) view ~)
524+ ==
525+ ::
526+ %away
527+ %+ weld
528+ ?- tell.manner
529+ %anybody ~
530+ %targets ~
531+ %mutuals kick
532+ ==
533+ ?- hear.manner
534+ %anybody ?:((target:pals ~. ship) ~ flee)
535+ %targets ~
536+ %mutuals flee
537+ ==
538+ ==
539+ ==
540+ ==
541+ ::
542+ ++ on-peek
543+ |= =path
544+ ^- (unit (unit cage))
545+ ?: =(/x/dbug/state path)
546+ ``noun+(slop on-save:og !>(gossip=state))
547+ ?. ?=([@ %~.~ %gossip *] path)
548+ (on-peek:og path)
549+ ?. ?=(%x i.path) [~ ~]
550+ ?+ t.t.t.path [~ ~]
551+ [%config ~] ``noun+!>(manner)
552+ ==
553+ ::
554+ ++ on-leave
555+ |= =path
556+ ^- (quip card _this)
557+ ?: ?=([%~.~ %gossip *] path)
558+ [~ this]
559+ =^ cards inner (on-leave:og path)
560+ =^ cards state (play-cards:up cards)
561+ [cards this]
562+ ::
563+ ++ on-poke
564+ |= cage
565+ ^- (quip card _this)
566+ ::TODO gossip config pokes?
567+ =^ cards inner (on-poke:og +<)
568+ =^ cards state (play-cards:up cards)
569+ [cards this]
570+ ::
571+ ++ on-arvo
572+ |= [=wire sign=sign-arvo:agent:gall]
573+ ^- (quip card _this)
574+ ?. ?=([%~.~ %gossip *] wire)
575+ =^ cards inner (on-arvo:og wire sign)
576+ =^ cards state (play-cards:up cards)
577+ [cards this]
578+ ?> ?=([%retry *] t.t.wire)
579+ ?> ?=(%wake +<.sign)
580+ ?+ t.t.t.wire ~|(wire !!)
581+ [%pals *]
582+ ::NOTE this might result in subscription wire re-use,
583+ :: but if we hit this path we should be loud anyway.
584+ [watch-pals:up this]
585+ ::
586+ [%watch @ ~]
587+ :_ this
588+ =/ target=ship (slav %p i.t.t.t.t.wire)
589+ ?. (want-target:up target) ~
590+ (watch-target:up target)
591+ ==
592+ ::
593+ ++ on-fail
594+ |= [term tang]
595+ ^- (quip card _this)
596+ =^ cards inner (on-fail:og +<)
597+ =^ cards state (play-cards:up cards)
598+ [cards this]
599+ --
600+ --
601+--
desk/lib/metaphone.hoonnew file+190
@@ -0,0 +1,190 @@
1+|%
2+++ utter
3+ |= corpus=@t
4+ ^- @t
5+ =/ norm (cuss (trip corpus))
6+ ~(phone core [norm *tape 0])
7+++ core
8+ |_ [text=tape chars=tape index=@ud]
9+ ++ phone
10+ ?: =(current 'A')
11+ ?: =(next 'E') (jump2 'E')
12+ (jump 'A')
13+ ?:
14+ ?& =(next 'N')
15+ ?| =(current 'G')
16+ =(current 'K')
17+ =(current 'P')
18+ ==
19+ ==
20+ (jump2 'N')
21+ ?: =(current 'W')
22+ ?: =(next 'R') (jump2 'R')
23+ ?: =(next 'H') (jump2 current)
24+ ?: (vowel next) (jump2 'W')
25+ recite
26+ ?: =(current 'X') (jump 'S')
27+ ?:
28+ ?| =(current 'E')
29+ =(current 'I')
30+ =(current 'O')
31+ =(current 'U')
32+ ==
33+ (jump current)
34+ recite
35+ ++ recite
36+ ?: (gte index (lent text))
37+ (crip chars)
38+ :: B -> B unless in MB
39+ ?: &(=(current 'B') !=(prev 'M'))
40+ (jump 'B')
41+ :: 'sh' if -CIA- or -CH, but not SCH, except SCHW (SCHW is handled in S)
42+ :: S if -CI-, -CE- or -CY- dropped if -SCI-, SCE-, -SCY- (handed in S)
43+ :: else K
44+ ?: =(current 'C')
45+ ?: (soft next)
46+ :: C[IEY]
47+ ?: &(=(next 'I') =((at 2 &) 'A'))
48+ :: CIA
49+ (jump sh)
50+ ?: !=(prev 'S')
51+ (jump 'S')
52+ advance
53+ ?: =(next 'H')
54+ (jump2 sh)
55+ (jump 'K')
56+ :: J if in -DGE-, -DGI- or -DGY-, else T
57+ ?: =(current 'D')
58+ ?: &(=(next 'G') (soft (at 2 &)))
59+ (jump2 'J')
60+ (jump 'T')
61+ :: F if in -GH and not B--GH, D--GH, -H--GH, -H---GH
62+ :: else dropped if -GNED, -GN,
63+ :: else dropped if -DGE-, -DGI- or -DGY- (handled in D)
64+ :: else J if in -GE-, -GI, -GY and not GG
65+ :: else K
66+ ?: =(current 'G')
67+ ?: =(next 'H')
68+ ?: |(!(no-gh-to-f (at 3 |)) =((at 4 |) 'H'))
69+ (jump2 'F')
70+ advance
71+ ?: =(next 'N')
72+ ?: !&(=((at 2 &) 'E') =((at 3 &) 'D'))
73+ (jump 'K')
74+ advance
75+ ?: &((soft next) !=(prev 'G'))
76+ (jump 'J')
77+ (jump 'K')
78+ :: H if before a vowel and not after C,G,P,S,T
79+ ?: &(=(current 'H') (vowel next) !(dipthong-h prev))
80+ (jump 'H')
81+ :: Dropped if after C, else K
82+ ?: &(=(current 'K') !=(prev 'C'))
83+ (jump 'K')
84+ :: F if before H, else P
85+ ?: =(current 'P')
86+ ?: =(next 'H')
87+ (jump 'F')
88+ (jump 'P')
89+ :: K
90+ ?: =(current 'Q')
91+ (jump 'K')
92+ :: 'sh' in -SH-, -SIO- or -SIA- or -SCHW-, else S
93+ ?: =(current 'S')
94+ ?: &(=(next 'I') |(=((at 2 &) 'O') =((at 2 &) 'A')))
95+ (jump sh)
96+ ?: =(next 'H')
97+ (jump2 sh)
98+ (jump 'S')
99+ :: sh' in -TIA- or -TIO-, else 'th' before H, else T
100+ ?: =(current 'T')
101+ ?: &(=(next 'I') |(=((at 2 &) 'O') =((at 2 &) 'A')))
102+ (jump sh)
103+ ?: =(next 'H')
104+ (jump2 th)
105+ ?: !&(=(next 'C') =((at 2 &) 'H'))
106+ (jump 'T')
107+ advance
108+ :: F
109+ ?: =(current 'V')
110+ (jump 'F')
111+ ?: &(=(current 'W') (vowel next))
112+ (jump 'W')
113+ :: KS
114+ ?: =(current 'X')
115+ (jump 'KS')
116+ :: Y if followed by a vowel
117+ ?: &(=(current 'Y') (vowel next))
118+ (jump 'Y')
119+ :: S
120+ ?: =(current 'Z')
121+ (jump 'S')
122+ ?:
123+ ?| =(current 'F')
124+ =(current 'J')
125+ =(current 'L')
126+ =(current 'M')
127+ =(current 'N')
128+ =(current 'R')
129+ ==
130+ (jump current)
131+ advance
132+ ++ advance
133+ =. index +(index)
134+ recite
135+ ++ jump
136+ |= char=@t
137+ =. chars (snoc chars char)
138+ =. index +(index)
139+ recite
140+ ++ jump2
141+ |= char=@t
142+ =. chars (snoc chars char)
143+ =. index (add index 2)
144+ recite
145+ ++ current (snag index text)
146+ ++ next
147+ ?: (gte index (dec (lent text))) ''
148+ (snag +(index) text)
149+ ++ prev
150+ ?: (lte index 0) ''
151+ (snag (dec index) text)
152+ ++ at
153+ |= [offset=@ud forward=?]
154+ ?: forward
155+ ?: (gth (add index offset) (dec (lent text))) ''
156+ (snag (add index offset) text)
157+ ?: (lth (sub index offset) 0) ''
158+ (snag (sub index offset) text)
159+ --
160+++ soft
161+ |= char=@t
162+ ?| =(char 'E')
163+ =(char 'I')
164+ =(char 'Y')
165+ ==
166+++ vowel
167+ |= char=@t
168+ ?| =(char 'A')
169+ =(char 'E')
170+ =(char 'I')
171+ =(char 'O')
172+ =(char 'U')
173+ ==
174+++ dipthong-h
175+ |= char=@t
176+ ?| =(char 'C')
177+ =(char 'G')
178+ =(char 'P')
179+ =(char 'S')
180+ =(char 'T')
181+ ==
182+++ no-gh-to-f
183+ |= char=@t
184+ ?| =(char 'B')
185+ =(char 'D')
186+ =(char 'H')
187+ ==
188+++ sh 'X'
189+++ th '0'
190+--
desk/lib/pals.hoonnew file+18
@@ -0,0 +1,18 @@
1+:: pals: manual peer discovery
2+::
3+|_ bowl:gall
4+++ leeches (s (set ship) /leeches)
5+++ targets |= list=@ta (s (set ship) %targets ?~(list / /[list]))
6+++ mutuals |= list=@ta (s (set ship) %mutuals ?~(list / /[list]))
7+++ leeche |= =ship (s _| /leeches/(scot %p ship))
8+++ target |= [list=@ta =ship] (s _| /mutuals/[list]/(scot %p ship))
9+++ mutual |= [list=@ta =ship] (s _| /mutuals/[list]/(scot %p ship))
10+::
11+++ base ~+ /(scot %p our)/pals/(scot %da now)
12+++ running ~+ .^(? %gu base)
13+::
14+++ s
15+ |* [=mold =path] ~+
16+ ?. running *mold
17+ .^(mold %gx (weld base (snoc `^path`path %noun)))
18+--
desk/lib/seek-json.hoon+39−9
@@ -3,24 +3,54 @@
33++ enjs
44 =, enjs:format
55 |%
6− ++ listings
7− |= l=(list listing:s)
8− a+(turn l listing)
6+ ++ post
7+ |= p=post:s
8+ %- pairs
9+ :~ title/s/title.p
10+ type/s/type.p
11+ link/s/link.p
12+ description/s/description.p
13+ image/s/image.p
14+ tags/a/(turn tags.p (lead %s))
15+ ==
916 ++ listing
1017 |= l=listing:s
1118 %- pairs
12− :~ title/s/title.l
13− link/s/link.l
14− description/s/description.l
15− image/s/image.l
19+ :~ post/(post post.l)
20+ hash/s/(scot %uv hash.l)
1621 source/s/(scot %p source.l)
1722 time/(time time.l)
18− tags/a/(turn tags.l (lead %s))
23+ ==
24+ ++ search
25+ |= =search:s
26+ %- pairs
27+ :~ listings/a/(turn listings.search listing)
28+ start/n/(scot %ud start.search)
29+ limit/n/(scot %ud limit.search)
30+ size/n/(scot %ud size.search)
31+ total/n/(scot %ud total.search)
1932 ==
2033 --
2134++ dejs
2235 =, dejs:format
2336 |%
24−
37+ ++ declarations (ar declare)
38+ ++ declare
39+ ^- $-(json declare:s)
40+ %- ot
41+ :~ reach/(su (perk [%friends %public %private ~]))
42+ post/post
43+ ==
44+ ++ post
45+ ^- $-(json post:s)
46+ %- ot
47+ :~ title/so
48+ type/type
49+ link/so
50+ description/so
51+ tags/(ar so)
52+ image/so
53+ ==
54+ ++ type (su (perk [%app %group %content %other ~]))
2555 --
2656--
desk/lib/seek.hoon+19−9
@@ -1,16 +1,26 @@
11/- *seek
22|%
3+++ iching
4+ |= word=@t
5+ ^- (list @t)
6+ =/ w (trip word)
7+ =. w
8+ ?. (lth (lent w) 3) w
9+ (weld w (reap (sub 3 (lent w)) ' '))
10+ %+ turn
11+ (gulf 0 (sub (lent w) 3))
12+ |= index=@ud
13+ (crip (swag [index 3] w))
314++ digest
4− |= =listing
5− ^- @uw
15+ |= =post
16+ ^- @uv
617 %- shax
718 %- crip
8− :~ title.listing
9− link.listing
10− image.listing
11− description.listing
12− (crip tags.listing)
13− `@t`source.listing
14− `@t`time.listing
19+ :~ title.post
20+ `@t`type.post
21+ link.post
22+ image.post
23+ description.post
24+ (crip tags.post)
1525 ==
1626--
desk/lib/sift.hoon+20−5
@@ -6,16 +6,31 @@
66 (split corpus)
77 |= word=@t
88 (~(has in words) word)
9+++ norm
10+ |= corpus=@t
11+ (crip (cass (trimall (crip (expunge corpus)))))
912++ split
1013 |= corpus=@t
1114 ^- (list @t)
12− =/ lines (crip (trimall corpus))
13− %+ rash lines
14− (more ace (cook crip (plus alf)))
15+ %+ rash (norm corpus)
16+ (more ace (cook crip (plus ;~(pose aln hep))))
17+++ allowed ;~(pose aln hep ace)
18+++ banned ;~(less allowed prn)
19+++ expunge
20+ |= corpus=@t
21+ ^- (list @t)
22+ %- zing
23+ %+ rash corpus
24+ %- plus
25+ ;~ pose
26+ ;~(pfix (plus banned) (star allowed))
27+ ;~(sfix (star allowed) (plus banned))
28+ (plus allowed)
29+ ==
1530++ trimall
16− |= value=@t
31+ |= corpus=@t
1732 |^ ^- tape
18− %+ rash value
33+ %+ rash corpus
1934 %+ ifix [(star ws) (star ws)]
2035 %- star
2136 ;~ less
desk/mar/declarations.hoonnew file+14
@@ -0,0 +1,14 @@
1+/- s=seek
2+/+ j=seek-json
3+|_ d=(list declare:s)
4+++ grad %noun
5+++ grow
6+ |%
7+ ++ noun d
8+ --
9+++ grab
10+ |%
11+ ++ noun (list declare:s)
12+ ++ json declarations:dejs:j
13+ --
14+--
desk/mar/declare.hoonnew file+14
@@ -0,0 +1,14 @@
1+/- s=seek
2+/+ j=seek-json
3+|_ =declare:s
4+++ grad %noun
5+++ grow
6+ |%
7+ ++ noun declare
8+ --
9+++ grab
10+ |%
11+ ++ noun declare:s
12+ ++ json declare:dejs:j
13+ --
14+--
desk/mar/directory-notice.hoon → desk/mar/directory-listing.hoonrenamed+3−4
@@ -1,14 +1,13 @@
11/- s=seek
22/+ j=seek-json
3−|_ =notice:s
3+|_ =listing:s
44++ grad %noun
55++ grow
66 |%
7− ++ noun notice
7+ ++ noun listing
88 --
99++ grab
1010 |%
11− ++ noun notice:s
12− ++ json notice:dejs:j
11+ ++ noun listing:s
1312 --
1413--
desk/mar/directory.hoonnew file+13
@@ -0,0 +1,13 @@
1+/- s=seek
2+/+ j=seek-json
3+|_ =directory:s
4+++ grad %noun
5+++ grow
6+ |%
7+ ++ noun directory
8+ --
9+++ grab
10+ |%
11+ ++ noun directory:s
12+ --
13+--
desk/mar/gossip/rumor.hoonnew file+11
@@ -0,0 +1,11 @@
1+|_ rum=[[@ *] (cask *)]
2+++ grad %noun
3+++ grow
4+ |%
5+ ++ noun rum
6+ --
7+++ grab
8+ |%
9+ ++ noun ,[[@ *] (cask *)]
10+ --
11+--
desk/mar/listings.hoondeleted−14
@@ -1,14 +0,0 @@
1−/- s=seek
2−/+ j=seek-json
3−|_ listings=(list listing:s)
4−++ grad %noun
5−++ grow
6− |%
7− ++ noun listings
8− ++ json (listings:enjs:j listings)
9− --
10−++ grab
11− |%
12− ++ noun (list listing:s)
13− --
14−--
desk/mar/search.hoonnew file+14
@@ -0,0 +1,14 @@
1+/- s=seek
2+/+ j=seek-json
3+|_ =search:s
4+++ grad %noun
5+++ grow
6+ |%
7+ ++ noun search
8+ ++ json (search:enjs:j search)
9+ --
10+++ grab
11+ |%
12+ ++ noun search
13+ --
14+--
desk/sur/pals.hoonnew file+41
@@ -0,0 +1,41 @@
1+:: pals: manual neighboring
2+::
3+|%
4++$ records :: local state
5+ $: outgoing=(jug ship @ta)
6+ incoming=(set ship)
7+ ::
8+ :: receipts: for all outgoing, status
9+ ::
10+ :: if ship not in receipts, poke awaiting ack
11+ :: if ship present as true, poke acked positively
12+ :: if ship present as false, poke acked negatively
13+ ::
14+ receipts=(map ship ?)
15+ ==
16+::
17++$ gesture :: to/from others
18+ $% [%hey ~]
19+ [%bye ~]
20+ ==
21+::
22++$ command :: from ourselves
23+ $% [%meet =ship in=(set @ta)] :: empty set allowed
24+ [%part =ship in=(set @ta)] :: empty set implies un-targeting
25+ ==
26+::
27++$ effect :: to ourselves
28+ $% target-effect
29+ leeche-effect
30+ ==
31+::
32++$ target-effect
33+ $% [%meet =ship] :: hey to target
34+ [%part =ship] :: bye to target
35+ ==
36+::
37++$ leeche-effect
38+ $% [%near =ship] :: hey from leeche
39+ [%away =ship] :: bye from leeche
40+ ==
41+--
desk/sur/seek.hoon+37−8
@@ -1,7 +1,8 @@
11|%
22+$ key @t :: keyword that points to listings
3−+$ hash @uw :: @uw version of shax result
3++$ hash @uv :: @uv version of shax result
44+$ rank @ud :: @ud representing priority of listing
5++$ phonetic @t :: @t consisting of phonetic characters from metaphone
56::
67:: an entry points to a listing hash and provides
78:: a semblance of priority for the listing
@@ -11,22 +12,38 @@
1112 =rank :: based on which attribute keyword came from
1213 ==
1314::
14−:: a listing represents a search result which points to some
15+:: a post represents a search result which points to some
1516:: external resource through a link. this is a rich result
1617:: which gives a summary of the resource as well as an image
1718:: and related topics.
1819::
19−:: each listing has a source and time so that they can be updated
20−:: via the source requesting to replace the listing and hash
20++$ post-type ?(%app %group %content %other)
2121::
22−+$ listing
22++$ post
2323 $: title=@t
24+ type=post-type
2425 link=@t
2526 description=@t
2627 tags=(list @t)
2728 image=@t
28− source=@p
29− time=@da
29+ ==
30+::
31++$ reach ?(%private %friends %public)
32+::
33++$ declare (pair reach post)
34+::
35+:: a listing includes the content of the post as well as information
36+:: that would affect the hash so are left out, namely time, source and
37+:: hash. each post has a source and time so that they can be updated
38+:: via the source requesting to replace the listing and hash.
39+::
40+::
41++$ listing
42+ $: =post
43+ =hash
44+ =reach
45+ source=@p
46+ time=@da
3047 ==
3148::
3249:: lookup acts as a search index for keywords, each key points to
@@ -35,6 +52,11 @@
3552::
3653+$ lookup (map key (list entry))
3754::
55+:: phonetics act as a way to account for spelling errors. we keep a map
56+:: of phonetic to set of lookup keys. we take the query's phonetics and
57+:: use that to add other words to the results.
58++$ phonetics (map phonetic (set key))
59+::
3860:: trail is a way for us to know all the keys required to update
3961:: a listing with the new hash of it's contents
4062::
@@ -45,5 +67,12 @@
4567::
4668+$ directory (map hash listing)
4769::
48−+$ notice (pair hash listing)
70++$ search
71+ $: listings=(list listing)
72+ start=@ud
73+ limit=@ud
74+ size=@ud
75+ total=@ud
76+ ==
77+::
4978--
desk/sys.kelvin+1−1
@@ -1 +1 @@
1−[%zuse 420]
1+[%zuse 418]
desk/ted/publish-all.hoonnew file+40
@@ -0,0 +1,40 @@
1+/- spider
2+/- s=seek
3+/+ *strandio
4+=, strand=strand:spider
5+=/ posts
6+ ^- (list declare:s)
7+ :~ :- %friends
8+ ['networked subject' %group 'web+urbitgraph://group/~matwet/networked-subject' 'https://subject.network | networked subject' ~['hosting' 'networking' 'urbit' 'ops'] 'https://urbits3.ams3.digitaloceanspaces.com/sitful-hatred/2022.7.07..17.15.52-ns.png']
9+ :- %friends
10+ ['Hooniverse' %group 'web+urbitgraph://group/~hiddev-dannut/new-hooniverse' 'Community based Hoon learning for all levels. For discussion of Hoon specific to Uqbar, join ~hiddev-dannut/uhoon' ~['hoon' 'dev' 'urbit' 'programming' 'education'] 'https://i.imgur.com/ghThlz7.png']
11+ :- %friends
12+ ['Hollow Mars Theory' %group 'web+urbitgraph://group/~rabsef-bicrym/hollow-mars-theory' 'Definitely NOT a Conspiracy Chat' ~['conspiracies' 'ufos' 'steel beams'] '']
13+ :- %friends
14+ ['celestial systems' %group 'web+urbitgraph://group/~nocsyx-lassul/celestial-systems' 'A place for pilots who are building hosting providers' ~['hosting' 'ops' 'urbit'] '']
15+ :- %friends
16+ ['Structure' %group 'web+urbitgraph://group/~fabled-faster/structure' 'Urbit Structural Design and Engineering Group. Always Thinking About Mechanics.' ~['design' 'ux' 'hci' 'urbit'] 'https://fabled-faster.nyc3.digitaloceanspaces.com/fabled-faster/2022.1.27..17.59.43-image.png']
17+ :- %friends
18+ ['The Marketplace' %group 'web+urbitgraph://group/~tirrel/the-marketplace' 'Welcome to The Marketplace, featuring The Pit, Urbit\'s first open-outcry market!' ~['urbit' 'market' 'sell' 'buy'] 'https://snipboard.io/U0IYyi.jpg']
19+ :- %friends
20+ ['The Forge' %group 'web+urbitgraph://group/~middev/the-forge' 'pale fire computing' ~['dev' 'programming' 'hoon' 'urbit'] 'https://nyc3.digitaloceanspaces.com/archiv/littel-wolfur/2021.5.06..21.01.58-the%20forge.png']
21+ :- %friends
22+ ['UFORIA' %group 'web+urbitgraph://group/~tiplec-lacnyx/ufora' 'UFO Research, Investigations, and Analysis' ~['UFO' 'conspiracies' 'research'] 'https://tiplec-lacnyx.nyc3.digitaloceanspaces.com/tiplec-lacnyx/2021.12.27..06.09.47-change1.jpg']
23+ :- %friends
24+ ['Urbit Community' %group 'web+urbitgraph://group/~bitbet-bolbel/urbit-community' 'World hub, help desk, meet and greet, etc.' ~['general' 'urbit' 'community' 'help'] 'https://fabled-faster.nyc3.digitaloceanspaces.com/fabled-faster/2021.4.02..21.52.41-UC.png']
25+ :- %friends
26+ ['Urbytes' %group 'web+urbitgraph://group/~nartes-fasrum/urbytes' 'We feed and water Mars.' ~['cooking' 'food' 'beverages' 'peanut butter eggs'] '']
27+ ==
28+^- thread:spider
29+|= arg=vase
30+=/ m (strand ,vase)
31+^- form:m
32+;< our=@p bind:m get-our
33+;< ~ bind:m
34+ %- send-raw-cards
35+ ^- (list card:agent:gall)
36+ %+ turn
37+ posts
38+ |= =declare:s
39+ [%pass /poke %agent [our %seek] %poke [%declare !>(declare)]]
40+(pure:m !>(~))
ui/index.html+1−1
@@ -10,7 +10,7 @@
1010 <link rel="apple-touch-icon" sizes="180x180" href="/src/assets/apple-touch-icon.png" />
1111 <link rel="manifest" href="/src/assets/manifest.json" />
1212 </head>
13− <body class="font-sans text-gray-900 bg-white antialiased">
13+ <body class="font-sans text-mauve bg-linen antialiased">
1414 <div id="app"></div>
1515 <script type="module" src="/src/main.tsx"></script>
1616 </body>
ui/package-lock.jsonnew file+5800
@@ -0,0 +1,5800 @@
1+{
2+ "name": "seek",
3+ "version": "0.0.0",
4+ "lockfileVersion": 2,
5+ "requires": true,
6+ "packages": {
7+ "": {
8+ "name": "seek",
9+ "version": "0.0.0",
10+ "dependencies": {
11+ "@heroicons/react": "^1.0.6",
12+ "@radix-ui/react-dropdown-menu": "^0.1.6",
13+ "@radix-ui/react-select": "^0.1.1",
14+ "@radix-ui/react-toggle-group": "^0.1.5",
15+ "@urbit/api": "^2.0.0",
16+ "@urbit/http-api": "^2.0.0",
17+ "big-integer": "^1.6.51",
18+ "classnames": "^2.3.1",
19+ "lodash.debounce": "^4.0.8",
20+ "react": "^17.0.2",
21+ "react-dom": "^17.0.2",
22+ "react-hook-form": "^7.33.1",
23+ "react-query": "^3.39.1",
24+ "react-router-dom": "^6.3.0",
25+ "react-select": "^5.4.0"
26+ },
27+ "devDependencies": {
28+ "@types/lodash.debounce": "^4.0.7",
29+ "@types/react": "^17.0.0",
30+ "@types/react-dom": "^17.0.0",
31+ "@urbit/vite-plugin-urbit": "^0.8.0",
32+ "@vitejs/plugin-react-refresh": "^1.3.1",
33+ "autoprefixer": "^10.4.7",
34+ "postcss": "^8.4.14",
35+ "tailwindcss": "^3.1.4",
36+ "typescript": "^4.3.2",
37+ "vite": "^2.9.13"
38+ }
39+ },
40+ "node_modules/@ampproject/remapping": {
41+ "version": "2.2.0",
42+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
43+ "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
44+ "dependencies": {
45+ "@jridgewell/gen-mapping": "^0.1.0",
46+ "@jridgewell/trace-mapping": "^0.3.9"
47+ },
48+ "engines": {
49+ "node": ">=6.0.0"
50+ }
51+ },
52+ "node_modules/@babel/code-frame": {
53+ "version": "7.18.6",
54+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
55+ "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
56+ "dependencies": {
57+ "@babel/highlight": "^7.18.6"
58+ },
59+ "engines": {
60+ "node": ">=6.9.0"
61+ }
62+ },
63+ "node_modules/@babel/compat-data": {
64+ "version": "7.18.6",
65+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.6.tgz",
66+ "integrity": "sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ==",
67+ "engines": {
68+ "node": ">=6.9.0"
69+ }
70+ },
71+ "node_modules/@babel/core": {
72+ "version": "7.18.6",
73+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz",
74+ "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==",
75+ "dependencies": {
76+ "@ampproject/remapping": "^2.1.0",
77+ "@babel/code-frame": "^7.18.6",
78+ "@babel/generator": "^7.18.6",
79+ "@babel/helper-compilation-targets": "^7.18.6",
80+ "@babel/helper-module-transforms": "^7.18.6",
81+ "@babel/helpers": "^7.18.6",
82+ "@babel/parser": "^7.18.6",
83+ "@babel/template": "^7.18.6",
84+ "@babel/traverse": "^7.18.6",
85+ "@babel/types": "^7.18.6",
86+ "convert-source-map": "^1.7.0",
87+ "debug": "^4.1.0",
88+ "gensync": "^1.0.0-beta.2",
89+ "json5": "^2.2.1",
90+ "semver": "^6.3.0"
91+ },
92+ "engines": {
93+ "node": ">=6.9.0"
94+ },
95+ "funding": {
96+ "type": "opencollective",
97+ "url": "https://opencollective.com/babel"
98+ }
99+ },
100+ "node_modules/@babel/generator": {
101+ "version": "7.18.7",
102+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz",
103+ "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==",
104+ "dependencies": {
105+ "@babel/types": "^7.18.7",
106+ "@jridgewell/gen-mapping": "^0.3.2",
107+ "jsesc": "^2.5.1"
108+ },
109+ "engines": {
110+ "node": ">=6.9.0"
111+ }
112+ },
113+ "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": {
114+ "version": "0.3.2",
115+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
116+ "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
117+ "dependencies": {
118+ "@jridgewell/set-array": "^1.0.1",
119+ "@jridgewell/sourcemap-codec": "^1.4.10",
120+ "@jridgewell/trace-mapping": "^0.3.9"
121+ },
122+ "engines": {
123+ "node": ">=6.0.0"
124+ }
125+ },
126+ "node_modules/@babel/helper-compilation-targets": {
127+ "version": "7.18.6",
128+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz",
129+ "integrity": "sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==",
130+ "dependencies": {
131+ "@babel/compat-data": "^7.18.6",
132+ "@babel/helper-validator-option": "^7.18.6",
133+ "browserslist": "^4.20.2",
134+ "semver": "^6.3.0"
135+ },
136+ "engines": {
137+ "node": ">=6.9.0"
138+ },
139+ "peerDependencies": {
140+ "@babel/core": "^7.0.0"
141+ }
142+ },
143+ "node_modules/@babel/helper-environment-visitor": {
144+ "version": "7.18.6",
145+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz",
146+ "integrity": "sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==",
147+ "engines": {
148+ "node": ">=6.9.0"
149+ }
150+ },
151+ "node_modules/@babel/helper-function-name": {
152+ "version": "7.18.6",
153+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz",
154+ "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==",
155+ "dependencies": {
156+ "@babel/template": "^7.18.6",
157+ "@babel/types": "^7.18.6"
158+ },
159+ "engines": {
160+ "node": ">=6.9.0"
161+ }
162+ },
163+ "node_modules/@babel/helper-hoist-variables": {
164+ "version": "7.18.6",
165+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
166+ "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
167+ "dependencies": {
168+ "@babel/types": "^7.18.6"
169+ },
170+ "engines": {
171+ "node": ">=6.9.0"
172+ }
173+ },
174+ "node_modules/@babel/helper-module-imports": {
175+ "version": "7.18.6",
176+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
177+ "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
178+ "dependencies": {
179+ "@babel/types": "^7.18.6"
180+ },
181+ "engines": {
182+ "node": ">=6.9.0"
183+ }
184+ },
185+ "node_modules/@babel/helper-module-transforms": {
186+ "version": "7.18.6",
187+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz",
188+ "integrity": "sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw==",
189+ "dependencies": {
190+ "@babel/helper-environment-visitor": "^7.18.6",
191+ "@babel/helper-module-imports": "^7.18.6",
192+ "@babel/helper-simple-access": "^7.18.6",
193+ "@babel/helper-split-export-declaration": "^7.18.6",
194+ "@babel/helper-validator-identifier": "^7.18.6",
195+ "@babel/template": "^7.18.6",
196+ "@babel/traverse": "^7.18.6",
197+ "@babel/types": "^7.18.6"
198+ },
199+ "engines": {
200+ "node": ">=6.9.0"
201+ }
202+ },
203+ "node_modules/@babel/helper-plugin-utils": {
204+ "version": "7.18.6",
205+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz",
206+ "integrity": "sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==",
207+ "engines": {
208+ "node": ">=6.9.0"
209+ }
210+ },
211+ "node_modules/@babel/helper-simple-access": {
212+ "version": "7.18.6",
213+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz",
214+ "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==",
215+ "dependencies": {
216+ "@babel/types": "^7.18.6"
217+ },
218+ "engines": {
219+ "node": ">=6.9.0"
220+ }
221+ },
222+ "node_modules/@babel/helper-split-export-declaration": {
223+ "version": "7.18.6",
224+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
225+ "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
226+ "dependencies": {
227+ "@babel/types": "^7.18.6"
228+ },
229+ "engines": {
230+ "node": ">=6.9.0"
231+ }
232+ },
233+ "node_modules/@babel/helper-validator-identifier": {
234+ "version": "7.18.6",
235+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
236+ "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
237+ "engines": {
238+ "node": ">=6.9.0"
239+ }
240+ },
241+ "node_modules/@babel/helper-validator-option": {
242+ "version": "7.18.6",
243+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
244+ "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
245+ "engines": {
246+ "node": ">=6.9.0"
247+ }
248+ },
249+ "node_modules/@babel/helpers": {
250+ "version": "7.18.6",
251+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz",
252+ "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==",
253+ "dependencies": {
254+ "@babel/template": "^7.18.6",
255+ "@babel/traverse": "^7.18.6",
256+ "@babel/types": "^7.18.6"
257+ },
258+ "engines": {
259+ "node": ">=6.9.0"
260+ }
261+ },
262+ "node_modules/@babel/highlight": {
263+ "version": "7.18.6",
264+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
265+ "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
266+ "dependencies": {
267+ "@babel/helper-validator-identifier": "^7.18.6",
268+ "chalk": "^2.0.0",
269+ "js-tokens": "^4.0.0"
270+ },
271+ "engines": {
272+ "node": ">=6.9.0"
273+ }
274+ },
275+ "node_modules/@babel/parser": {
276+ "version": "7.18.6",
277+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.6.tgz",
278+ "integrity": "sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw==",
279+ "bin": {
280+ "parser": "bin/babel-parser.js"
281+ },
282+ "engines": {
283+ "node": ">=6.0.0"
284+ }
285+ },
286+ "node_modules/@babel/plugin-syntax-jsx": {
287+ "version": "7.18.6",
288+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz",
289+ "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==",
290+ "dependencies": {
291+ "@babel/helper-plugin-utils": "^7.18.6"
292+ },
293+ "engines": {
294+ "node": ">=6.9.0"
295+ },
296+ "peerDependencies": {
297+ "@babel/core": "^7.0.0-0"
298+ }
299+ },
300+ "node_modules/@babel/plugin-transform-react-jsx-self": {
301+ "version": "7.18.6",
302+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz",
303+ "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==",
304+ "dev": true,
305+ "dependencies": {
306+ "@babel/helper-plugin-utils": "^7.18.6"
307+ },
308+ "engines": {
309+ "node": ">=6.9.0"
310+ },
311+ "peerDependencies": {
312+ "@babel/core": "^7.0.0-0"
313+ }
314+ },
315+ "node_modules/@babel/plugin-transform-react-jsx-source": {
316+ "version": "7.18.6",
317+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.18.6.tgz",
318+ "integrity": "sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw==",
319+ "dev": true,
320+ "dependencies": {
321+ "@babel/helper-plugin-utils": "^7.18.6"
322+ },
323+ "engines": {
324+ "node": ">=6.9.0"
325+ },
326+ "peerDependencies": {
327+ "@babel/core": "^7.0.0-0"
328+ }
329+ },
330+ "node_modules/@babel/runtime": {
331+ "version": "7.18.6",
332+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.6.tgz",
333+ "integrity": "sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ==",
334+ "dependencies": {
335+ "regenerator-runtime": "^0.13.4"
336+ },
337+ "engines": {
338+ "node": ">=6.9.0"
339+ }
340+ },
341+ "node_modules/@babel/template": {
342+ "version": "7.18.6",
343+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz",
344+ "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==",
345+ "dependencies": {
346+ "@babel/code-frame": "^7.18.6",
347+ "@babel/parser": "^7.18.6",
348+ "@babel/types": "^7.18.6"
349+ },
350+ "engines": {
351+ "node": ">=6.9.0"
352+ }
353+ },
354+ "node_modules/@babel/traverse": {
355+ "version": "7.18.6",
356+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.6.tgz",
357+ "integrity": "sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==",
358+ "dependencies": {
359+ "@babel/code-frame": "^7.18.6",
360+ "@babel/generator": "^7.18.6",
361+ "@babel/helper-environment-visitor": "^7.18.6",
362+ "@babel/helper-function-name": "^7.18.6",
363+ "@babel/helper-hoist-variables": "^7.18.6",
364+ "@babel/helper-split-export-declaration": "^7.18.6",
365+ "@babel/parser": "^7.18.6",
366+ "@babel/types": "^7.18.6",
367+ "debug": "^4.1.0",
368+ "globals": "^11.1.0"
369+ },
370+ "engines": {
371+ "node": ">=6.9.0"
372+ }
373+ },
374+ "node_modules/@babel/types": {
375+ "version": "7.18.7",
376+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.7.tgz",
377+ "integrity": "sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==",
378+ "dependencies": {
379+ "@babel/helper-validator-identifier": "^7.18.6",
380+ "to-fast-properties": "^2.0.0"
381+ },
382+ "engines": {
383+ "node": ">=6.9.0"
384+ }
385+ },
386+ "node_modules/@emotion/babel-plugin": {
387+ "version": "11.9.2",
388+ "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.9.2.tgz",
389+ "integrity": "sha512-Pr/7HGH6H6yKgnVFNEj2MVlreu3ADqftqjqwUvDy/OJzKFgxKeTQ+eeUf20FOTuHVkDON2iNa25rAXVYtWJCjw==",
390+ "dependencies": {
391+ "@babel/helper-module-imports": "^7.12.13",
392+ "@babel/plugin-syntax-jsx": "^7.12.13",
393+ "@babel/runtime": "^7.13.10",
394+ "@emotion/hash": "^0.8.0",
395+ "@emotion/memoize": "^0.7.5",
396+ "@emotion/serialize": "^1.0.2",
397+ "babel-plugin-macros": "^2.6.1",
398+ "convert-source-map": "^1.5.0",
399+ "escape-string-regexp": "^4.0.0",
400+ "find-root": "^1.1.0",
401+ "source-map": "^0.5.7",
402+ "stylis": "4.0.13"
403+ },
404+ "peerDependencies": {
405+ "@babel/core": "^7.0.0"
406+ }
407+ },
408+ "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": {
409+ "version": "4.0.0",
410+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
411+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
412+ "engines": {
413+ "node": ">=10"
414+ },
415+ "funding": {
416+ "url": "https://github.com/sponsors/sindresorhus"
417+ }
418+ },
419+ "node_modules/@emotion/cache": {
420+ "version": "11.9.3",
421+ "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.9.3.tgz",
422+ "integrity": "sha512-0dgkI/JKlCXa+lEXviaMtGBL0ynpx4osh7rjOXE71q9bIF8G+XhJgvi+wDu0B0IdCVx37BffiwXlN9I3UuzFvg==",
423+ "dependencies": {
424+ "@emotion/memoize": "^0.7.4",
425+ "@emotion/sheet": "^1.1.1",
426+ "@emotion/utils": "^1.0.0",
427+ "@emotion/weak-memoize": "^0.2.5",
428+ "stylis": "4.0.13"
429+ }
430+ },
431+ "node_modules/@emotion/hash": {
432+ "version": "0.8.0",
433+ "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz",
434+ "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow=="
435+ },
436+ "node_modules/@emotion/memoize": {
437+ "version": "0.7.5",
438+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.5.tgz",
439+ "integrity": "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ=="
440+ },
441+ "node_modules/@emotion/react": {
442+ "version": "11.9.3",
443+ "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.9.3.tgz",
444+ "integrity": "sha512-g9Q1GcTOlzOEjqwuLF/Zd9LC+4FljjPjDfxSM7KmEakm+hsHXk+bYZ2q+/hTJzr0OUNkujo72pXLQvXj6H+GJQ==",
445+ "dependencies": {
446+ "@babel/runtime": "^7.13.10",
447+ "@emotion/babel-plugin": "^11.7.1",
448+ "@emotion/cache": "^11.9.3",
449+ "@emotion/serialize": "^1.0.4",
450+ "@emotion/utils": "^1.1.0",
451+ "@emotion/weak-memoize": "^0.2.5",
452+ "hoist-non-react-statics": "^3.3.1"
453+ },
454+ "peerDependencies": {
455+ "@babel/core": "^7.0.0",
456+ "react": ">=16.8.0"
457+ },
458+ "peerDependenciesMeta": {
459+ "@babel/core": {
460+ "optional": true
461+ },
462+ "@types/react": {
463+ "optional": true
464+ }
465+ }
466+ },
467+ "node_modules/@emotion/serialize": {
468+ "version": "1.0.4",
469+ "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.0.4.tgz",
470+ "integrity": "sha512-1JHamSpH8PIfFwAMryO2bNka+y8+KA5yga5Ocf2d7ZEiJjb7xlLW7aknBGZqJLajuLOvJ+72vN+IBSwPlXD1Pg==",
471+ "dependencies": {
472+ "@emotion/hash": "^0.8.0",
473+ "@emotion/memoize": "^0.7.4",
474+ "@emotion/unitless": "^0.7.5",
475+ "@emotion/utils": "^1.0.0",
476+ "csstype": "^3.0.2"
477+ }
478+ },
479+ "node_modules/@emotion/sheet": {
480+ "version": "1.1.1",
481+ "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.1.1.tgz",
482+ "integrity": "sha512-J3YPccVRMiTZxYAY0IOq3kd+hUP8idY8Kz6B/Cyo+JuXq52Ek+zbPbSQUrVQp95aJ+lsAW7DPL1P2Z+U1jGkKA=="
483+ },
484+ "node_modules/@emotion/unitless": {
485+ "version": "0.7.5",
486+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz",
487+ "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg=="
488+ },
489+ "node_modules/@emotion/utils": {
490+ "version": "1.1.0",
491+ "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.1.0.tgz",
492+ "integrity": "sha512-iRLa/Y4Rs5H/f2nimczYmS5kFJEbpiVvgN3XVfZ022IYhuNA1IRSHEizcof88LtCTXtl9S2Cxt32KgaXEu72JQ=="
493+ },
494+ "node_modules/@emotion/weak-memoize": {
495+ "version": "0.2.5",
496+ "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz",
497+ "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA=="
498+ },
499+ "node_modules/@heroicons/react": {
500+ "version": "1.0.6",
501+ "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-1.0.6.tgz",
502+ "integrity": "sha512-JJCXydOFWMDpCP4q13iEplA503MQO3xLoZiKum+955ZCtHINWnx26CUxVxxFQu/uLb4LW3ge15ZpzIkXKkJ8oQ==",
503+ "peerDependencies": {
504+ "react": ">= 16"
505+ }
506+ },
507+ "node_modules/@jridgewell/gen-mapping": {
508+ "version": "0.1.1",
509+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
510+ "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
511+ "dependencies": {
512+ "@jridgewell/set-array": "^1.0.0",
513+ "@jridgewell/sourcemap-codec": "^1.4.10"
514+ },
515+ "engines": {
516+ "node": ">=6.0.0"
517+ }
518+ },
519+ "node_modules/@jridgewell/resolve-uri": {
520+ "version": "3.0.8",
521+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.8.tgz",
522+ "integrity": "sha512-YK5G9LaddzGbcucK4c8h5tWFmMPBvRZ/uyWmN1/SbBdIvqGUdWGkJ5BAaccgs6XbzVLsqbPJrBSFwKv3kT9i7w==",
523+ "engines": {
524+ "node": ">=6.0.0"
525+ }
526+ },
527+ "node_modules/@jridgewell/set-array": {
528+ "version": "1.1.2",
529+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
530+ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
531+ "engines": {
532+ "node": ">=6.0.0"
533+ }
534+ },
535+ "node_modules/@jridgewell/sourcemap-codec": {
536+ "version": "1.4.14",
537+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
538+ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
539+ },
540+ "node_modules/@jridgewell/trace-mapping": {
541+ "version": "0.3.14",
542+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz",
543+ "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==",
544+ "dependencies": {
545+ "@jridgewell/resolve-uri": "^3.0.3",
546+ "@jridgewell/sourcemap-codec": "^1.4.10"
547+ }
548+ },
549+ "node_modules/@microsoft/fetch-event-source": {
550+ "version": "2.0.1",
551+ "resolved": "https://registry.npmjs.org/@microsoft/fetch-event-source/-/fetch-event-source-2.0.1.tgz",
552+ "integrity": "sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA=="
553+ },
554+ "node_modules/@nodelib/fs.scandir": {
555+ "version": "2.1.5",
556+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
557+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
558+ "dev": true,
559+ "dependencies": {
560+ "@nodelib/fs.stat": "2.0.5",
561+ "run-parallel": "^1.1.9"
562+ },
563+ "engines": {
564+ "node": ">= 8"
565+ }
566+ },
567+ "node_modules/@nodelib/fs.stat": {
568+ "version": "2.0.5",
569+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
570+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
571+ "dev": true,
572+ "engines": {
573+ "node": ">= 8"
574+ }
575+ },
576+ "node_modules/@nodelib/fs.walk": {
577+ "version": "1.2.8",
578+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
579+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
580+ "dev": true,
581+ "dependencies": {
582+ "@nodelib/fs.scandir": "2.1.5",
583+ "fastq": "^1.6.0"
584+ },
585+ "engines": {
586+ "node": ">= 8"
587+ }
588+ },
589+ "node_modules/@radix-ui/number": {
590+ "version": "0.1.0",
591+ "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-0.1.0.tgz",
592+ "integrity": "sha512-rpf6QiOWLHAkM4FEMYu9i+5Jr8cKT893+R4mPpcdsy4LD7omr9JfdOqj/h/xPA5+EcVrpMMlU6rrRYpUB5UI8g==",
593+ "dependencies": {
594+ "@babel/runtime": "^7.13.10"
595+ }
596+ },
597+ "node_modules/@radix-ui/popper": {
598+ "version": "0.1.0",
599+ "resolved": "https://registry.npmjs.org/@radix-ui/popper/-/popper-0.1.0.tgz",
600+ "integrity": "sha512-uzYeElL3w7SeNMuQpXiFlBhTT+JyaNMCwDfjKkrzugEcYrf5n52PHqncNdQPUtR42hJh8V9FsqyEDbDxkeNjJQ==",
601+ "dependencies": {
602+ "@babel/runtime": "^7.13.10",
603+ "csstype": "^3.0.4"
604+ }
605+ },
606+ "node_modules/@radix-ui/primitive": {
607+ "version": "0.1.0",
608+ "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-0.1.0.tgz",
609+ "integrity": "sha512-tqxZKybwN5Fa3VzZry4G6mXAAb9aAqKmPtnVbZpL0vsBwvOHTBwsjHVPXylocYLwEtBY9SCe665bYnNB515uoA==",
610+ "dependencies": {
611+ "@babel/runtime": "^7.13.10"
612+ }
613+ },
614+ "node_modules/@radix-ui/react-arrow": {
615+ "version": "0.1.4",
616+ "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-0.1.4.tgz",
617+ "integrity": "sha512-BB6XzAb7Ml7+wwpFdYVtZpK1BlMgqyafSQNGzhIpSZ4uXvXOHPlR5GP8M449JkeQzgQjv9Mp1AsJxFC0KuOtuA==",
618+ "dependencies": {
619+ "@babel/runtime": "^7.13.10",
620+ "@radix-ui/react-primitive": "0.1.4"
621+ },
622+ "peerDependencies": {
623+ "react": "^16.8 || ^17.0"
624+ }
625+ },
626+ "node_modules/@radix-ui/react-collection": {
627+ "version": "0.1.4",
628+ "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-0.1.4.tgz",
629+ "integrity": "sha512-3muGI15IdgaDFjOcO7xX8a35HQRBRF6LH9pS6UCeZeRmbslkVeHyJRQr2rzICBUoX7zgIA0kXyMDbpQnJGyJTA==",
630+ "dependencies": {
631+ "@babel/runtime": "^7.13.10",
632+ "@radix-ui/react-compose-refs": "0.1.0",
633+ "@radix-ui/react-context": "0.1.1",
634+ "@radix-ui/react-primitive": "0.1.4",
635+ "@radix-ui/react-slot": "0.1.2"
636+ },
637+ "peerDependencies": {
638+ "react": "^16.8 || ^17.0"
639+ }
640+ },
641+ "node_modules/@radix-ui/react-compose-refs": {
642+ "version": "0.1.0",
643+ "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-0.1.0.tgz",
644+ "integrity": "sha512-eyclbh+b77k+69Dk72q3694OHrn9B3QsoIRx7ywX341U9RK1ThgQjMFZoPtmZNQTksXHLNEiefR8hGVeFyInGg==",
645+ "dependencies": {
646+ "@babel/runtime": "^7.13.10"
647+ },
648+ "peerDependencies": {
649+ "react": "^16.8 || ^17.0"
650+ }
651+ },
652+ "node_modules/@radix-ui/react-context": {
653+ "version": "0.1.1",
654+ "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-0.1.1.tgz",
655+ "integrity": "sha512-PkyVX1JsLBioeu0jB9WvRpDBBLtLZohVDT3BB5CTSJqActma8S8030P57mWZb4baZifMvN7KKWPAA40UmWKkQg==",
656+ "dependencies": {
657+ "@babel/runtime": "^7.13.10"
658+ },
659+ "peerDependencies": {
660+ "react": "^16.8 || ^17.0"
661+ }
662+ },
663+ "node_modules/@radix-ui/react-dismissable-layer": {
664+ "version": "0.1.5",
665+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-0.1.5.tgz",
666+ "integrity": "sha512-J+fYWijkX4M4QKwf9dtu1oC0U6e6CEl8WhBp3Ad23yz2Hia0XCo6Pk/mp5CAFy4QBtQedTSkhW05AdtSOEoajQ==",
667+ "dependencies": {
668+ "@babel/runtime": "^7.13.10",
669+ "@radix-ui/primitive": "0.1.0",
670+ "@radix-ui/react-compose-refs": "0.1.0",
671+ "@radix-ui/react-primitive": "0.1.4",
672+ "@radix-ui/react-use-body-pointer-events": "0.1.1",
673+ "@radix-ui/react-use-callback-ref": "0.1.0",
674+ "@radix-ui/react-use-escape-keydown": "0.1.0"
675+ },
676+ "peerDependencies": {
677+ "react": "^16.8 || ^17.0"
678+ }
679+ },
680+ "node_modules/@radix-ui/react-dropdown-menu": {
681+ "version": "0.1.6",
682+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-0.1.6.tgz",
683+ "integrity": "sha512-RZhtzjWwJ4ZBN7D8ek4Zn+ilHzYuYta9yIxFnbC0pfqMnSi67IQNONo1tuuNqtFh9SRHacPKc65zo+kBBlxtdg==",
684+ "dependencies": {
685+ "@babel/runtime": "^7.13.10",
686+ "@radix-ui/primitive": "0.1.0",
687+ "@radix-ui/react-compose-refs": "0.1.0",
688+ "@radix-ui/react-context": "0.1.1",
689+ "@radix-ui/react-id": "0.1.5",
690+ "@radix-ui/react-menu": "0.1.6",
691+ "@radix-ui/react-primitive": "0.1.4",
692+ "@radix-ui/react-use-controllable-state": "0.1.0"
693+ },
694+ "peerDependencies": {
695+ "react": "^16.8 || ^17.0",
696+ "react-dom": "^16.8 || ^17.0"
697+ }
698+ },
699+ "node_modules/@radix-ui/react-focus-guards": {
700+ "version": "0.1.0",
701+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-0.1.0.tgz",
702+ "integrity": "sha512-kRx/swAjEfBpQ3ns7J3H4uxpXuWCqN7MpALiSDOXiyo2vkWv0L9sxvbpZeTulINuE3CGMzicVMuNc/VWXjFKOg==",
703+ "dependencies": {
704+ "@babel/runtime": "^7.13.10"
705+ },
706+ "peerDependencies": {
707+ "react": "^16.8 || ^17.0"
708+ }
709+ },
710+ "node_modules/@radix-ui/react-focus-scope": {
711+ "version": "0.1.4",
712+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-0.1.4.tgz",
713+ "integrity": "sha512-fbA4ES3H4Wkxp+OeLhvN6SwL7mXNn/aBtUf7DRYxY9+Akrf7dRxl2ck4lgcpPsSg3zSDsEwLcY+h5cmj5yvlug==",
714+ "dependencies": {
715+ "@babel/runtime": "^7.13.10",
716+ "@radix-ui/react-compose-refs": "0.1.0",
717+ "@radix-ui/react-primitive": "0.1.4",
718+ "@radix-ui/react-use-callback-ref": "0.1.0"
719+ },
720+ "peerDependencies": {
721+ "react": "^16.8 || ^17.0"
722+ }
723+ },
724+ "node_modules/@radix-ui/react-id": {
725+ "version": "0.1.5",
726+ "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-0.1.5.tgz",
727+ "integrity": "sha512-IPc4H/63bes0IZ1GJJozSEkSWcDyhNGtKFWUpJ+XtaLyQ1X3x7Mf6fWwWhDcpqlYEP+5WtAvfqcyEsyjP+ZhBQ==",
728+ "dependencies": {
729+ "@babel/runtime": "^7.13.10",
730+ "@radix-ui/react-use-layout-effect": "0.1.0"
731+ },
732+ "peerDependencies": {
733+ "react": "^16.8 || ^17.0"
734+ }
735+ },
736+ "node_modules/@radix-ui/react-label": {
737+ "version": "0.1.5",
738+ "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-0.1.5.tgz",
739+ "integrity": "sha512-Au9+n4/DhvjR0IHhvZ1LPdx/OW+3CGDie30ZyCkbSHIuLp4/CV4oPPGBwJ1vY99Jog3zyQhsGww9MXj8O9Aj/A==",
740+ "dependencies": {
741+ "@babel/runtime": "^7.13.10",
742+ "@radix-ui/react-compose-refs": "0.1.0",
743+ "@radix-ui/react-context": "0.1.1",
744+ "@radix-ui/react-id": "0.1.5",
745+ "@radix-ui/react-primitive": "0.1.4"
746+ },
747+ "peerDependencies": {
748+ "react": "^16.8 || ^17.0"
749+ }
750+ },
751+ "node_modules/@radix-ui/react-menu": {
752+ "version": "0.1.6",
753+ "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-0.1.6.tgz",
754+ "integrity": "sha512-ho3+bhpr3oAFkOBJ8VkUb1BcGoiZBB3OmcWPqa6i5RTUKrzNX/d6rauochu2xDlWjiRtpVuiAcsTVOeIC4FbYQ==",
755+ "dependencies": {
756+ "@babel/runtime": "^7.13.10",
757+ "@radix-ui/primitive": "0.1.0",
758+ "@radix-ui/react-collection": "0.1.4",
759+ "@radix-ui/react-compose-refs": "0.1.0",
760+ "@radix-ui/react-context": "0.1.1",
761+ "@radix-ui/react-dismissable-layer": "0.1.5",
762+ "@radix-ui/react-focus-guards": "0.1.0",
763+ "@radix-ui/react-focus-scope": "0.1.4",
764+ "@radix-ui/react-id": "0.1.5",
765+ "@radix-ui/react-popper": "0.1.4",
766+ "@radix-ui/react-portal": "0.1.4",
767+ "@radix-ui/react-presence": "0.1.2",
768+ "@radix-ui/react-primitive": "0.1.4",
769+ "@radix-ui/react-roving-focus": "0.1.5",
770+ "@radix-ui/react-use-callback-ref": "0.1.0",
771+ "@radix-ui/react-use-direction": "0.1.0",
772+ "aria-hidden": "^1.1.1",
773+ "react-remove-scroll": "^2.4.0"
774+ },
775+ "peerDependencies": {
776+ "react": "^16.8 || ^17.0",
777+ "react-dom": "^16.8 || ^17.0"
778+ }
779+ },
780+ "node_modules/@radix-ui/react-popper": {
781+ "version": "0.1.4",
782+ "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-0.1.4.tgz",
783+ "integrity": "sha512-18gDYof97t8UQa7zwklG1Dr8jIdj3u+rVOQLzPi9f5i1YQak/pVGkaqw8aY+iDUknKKuZniTk/7jbAJUYlKyOw==",
784+ "dependencies": {
785+ "@babel/runtime": "^7.13.10",
786+ "@radix-ui/popper": "0.1.0",
787+ "@radix-ui/react-arrow": "0.1.4",
788+ "@radix-ui/react-compose-refs": "0.1.0",
789+ "@radix-ui/react-context": "0.1.1",
790+ "@radix-ui/react-primitive": "0.1.4",
791+ "@radix-ui/react-use-rect": "0.1.1",
792+ "@radix-ui/react-use-size": "0.1.1",
793+ "@radix-ui/rect": "0.1.1"
794+ },
795+ "peerDependencies": {
796+ "react": "^16.8 || ^17.0"
797+ }
798+ },
799+ "node_modules/@radix-ui/react-portal": {
800+ "version": "0.1.4",
801+ "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-0.1.4.tgz",
802+ "integrity": "sha512-MO0wRy2eYRTZ/CyOri9NANCAtAtq89DEtg90gicaTlkCfdqCLEBsLb+/q66BZQTr3xX/Vq01nnVfc/TkCqoqvw==",
803+ "dependencies": {
804+ "@babel/runtime": "^7.13.10",
805+ "@radix-ui/react-primitive": "0.1.4",
806+ "@radix-ui/react-use-layout-effect": "0.1.0"
807+ },
808+ "peerDependencies": {
809+ "react": "^16.8 || ^17.0",
810+ "react-dom": "^16.8 || ^17.0"
811+ }
812+ },
813+ "node_modules/@radix-ui/react-presence": {
814+ "version": "0.1.2",
815+ "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-0.1.2.tgz",
816+ "integrity": "sha512-3BRlFZraooIUfRlyN+b/Xs5hq1lanOOo/+3h6Pwu2GMFjkGKKa4Rd51fcqGqnVlbr3jYg+WLuGyAV4KlgqwrQw==",
817+ "dependencies": {
818+ "@babel/runtime": "^7.13.10",
819+ "@radix-ui/react-compose-refs": "0.1.0",
820+ "@radix-ui/react-use-layout-effect": "0.1.0"
821+ },
822+ "peerDependencies": {
823+ "react": ">=16.8"
824+ }
825+ },
826+ "node_modules/@radix-ui/react-primitive": {
827+ "version": "0.1.4",
828+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-0.1.4.tgz",
829+ "integrity": "sha512-6gSl2IidySupIMJFjYnDIkIWRyQdbu/AHK7rbICPani+LW4b0XdxBXc46og/iZvuwW8pjCS8I2SadIerv84xYA==",
830+ "dependencies": {
831+ "@babel/runtime": "^7.13.10",
832+ "@radix-ui/react-slot": "0.1.2"
833+ },
834+ "peerDependencies": {
835+ "react": "^16.8 || ^17.0"
836+ }
837+ },
838+ "node_modules/@radix-ui/react-roving-focus": {
839+ "version": "0.1.5",
840+ "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-0.1.5.tgz",
841+ "integrity": "sha512-ClwKPS5JZE+PaHCoW7eu1onvE61pDv4kO8W4t5Ra3qMFQiTJLZMdpBQUhksN//DaVygoLirz4Samdr5Y1x1FSA==",
842+ "dependencies": {
843+ "@babel/runtime": "^7.13.10",
844+ "@radix-ui/primitive": "0.1.0",
845+ "@radix-ui/react-collection": "0.1.4",
846+ "@radix-ui/react-compose-refs": "0.1.0",
847+ "@radix-ui/react-context": "0.1.1",
848+ "@radix-ui/react-id": "0.1.5",
849+ "@radix-ui/react-primitive": "0.1.4",
850+ "@radix-ui/react-use-callback-ref": "0.1.0",
851+ "@radix-ui/react-use-controllable-state": "0.1.0"
852+ },
853+ "peerDependencies": {
854+ "react": "^16.8 || ^17.0"
855+ }
856+ },
857+ "node_modules/@radix-ui/react-select": {
858+ "version": "0.1.1",
859+ "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-0.1.1.tgz",
860+ "integrity": "sha512-xY3jLz2c6ZBHflldGsA79bE/swUfRMpiRPQf+JDihOufsd3z5uW22PFe0MS5bGZiIpK6aAZAvwqEd2Bu7hqp8w==",
861+ "dependencies": {
862+ "@babel/runtime": "^7.13.10",
863+ "@radix-ui/number": "0.1.0",
864+ "@radix-ui/primitive": "0.1.0",
865+ "@radix-ui/react-collection": "0.1.4",
866+ "@radix-ui/react-compose-refs": "0.1.0",
867+ "@radix-ui/react-context": "0.1.1",
868+ "@radix-ui/react-dismissable-layer": "0.1.5",
869+ "@radix-ui/react-focus-scope": "0.1.4",
870+ "@radix-ui/react-id": "0.1.5",
871+ "@radix-ui/react-label": "0.1.5",
872+ "@radix-ui/react-portal": "0.1.4",
873+ "@radix-ui/react-primitive": "0.1.4",
874+ "@radix-ui/react-use-callback-ref": "0.1.0",
875+ "@radix-ui/react-use-controllable-state": "0.1.0",
876+ "@radix-ui/react-use-layout-effect": "0.1.0",
877+ "@radix-ui/react-use-previous": "0.1.1",
878+ "@radix-ui/react-visually-hidden": "0.1.4",
879+ "aria-hidden": "^1.1.1",
880+ "react-remove-scroll": "^2.4.0"
881+ },
882+ "peerDependencies": {
883+ "react": "^16.8 || ^17.0",
884+ "react-dom": "^16.8 || ^17.0"
885+ }
886+ },
887+ "node_modules/@radix-ui/react-slot": {
888+ "version": "0.1.2",
889+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-0.1.2.tgz",
890+ "integrity": "sha512-ADkqfL+agEzEguU3yS26jfB50hRrwf7U4VTwAOZEmi/g+ITcBWe12yM46ueS/UCIMI9Py+gFUaAdxgxafFvY2Q==",
891+ "dependencies": {
892+ "@babel/runtime": "^7.13.10",
893+ "@radix-ui/react-compose-refs": "0.1.0"
894+ },
895+ "peerDependencies": {
896+ "react": "^16.8 || ^17.0"
897+ }
898+ },
899+ "node_modules/@radix-ui/react-toggle": {
900+ "version": "0.1.4",
901+ "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-0.1.4.tgz",
902+ "integrity": "sha512-gxUq6NgMc4ChV8VJnwdYqueeoblspwXHAexYo+jM9N2hFLbI1C587jLjdTHzIcUa9q68Xaw4jtiImWDOokEhRw==",
903+ "dependencies": {
904+ "@babel/runtime": "^7.13.10",
905+ "@radix-ui/primitive": "0.1.0",
906+ "@radix-ui/react-primitive": "0.1.4",
907+ "@radix-ui/react-use-controllable-state": "0.1.0"
908+ },
909+ "peerDependencies": {
910+ "react": "^16.8 || ^17.0"
911+ }
912+ },
913+ "node_modules/@radix-ui/react-toggle-group": {
914+ "version": "0.1.5",
915+ "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-0.1.5.tgz",
916+ "integrity": "sha512-Yp14wFiqe00azF+sG5CCJz4JGOP/f5Jj+CxLlZCmMpG5qhVTWeaeG4YH6pvX4KL41fS8x9FAaLb8wW9y01o67g==",
917+ "dependencies": {
918+ "@babel/runtime": "^7.13.10",
919+ "@radix-ui/primitive": "0.1.0",
920+ "@radix-ui/react-context": "0.1.1",
921+ "@radix-ui/react-primitive": "0.1.4",
922+ "@radix-ui/react-roving-focus": "0.1.5",
923+ "@radix-ui/react-toggle": "0.1.4",
924+ "@radix-ui/react-use-controllable-state": "0.1.0"
925+ },
926+ "peerDependencies": {
927+ "react": "^16.8 || ^17.0"
928+ }
929+ },
930+ "node_modules/@radix-ui/react-use-body-pointer-events": {
931+ "version": "0.1.1",
932+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-body-pointer-events/-/react-use-body-pointer-events-0.1.1.tgz",
933+ "integrity": "sha512-R8leV2AWmJokTmERM8cMXFHWSiv/fzOLhG/JLmRBhLTAzOj37EQizssq4oW0Z29VcZy2tODMi9Pk/htxwb+xpA==",
934+ "dependencies": {
935+ "@babel/runtime": "^7.13.10",
936+ "@radix-ui/react-use-layout-effect": "0.1.0"
937+ },
938+ "peerDependencies": {
939+ "react": "^16.8 || ^17.0"
940+ }
941+ },
942+ "node_modules/@radix-ui/react-use-callback-ref": {
943+ "version": "0.1.0",
944+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-0.1.0.tgz",
945+ "integrity": "sha512-Va041McOFFl+aV+sejvl0BS2aeHx86ND9X/rVFmEFQKTXCp6xgUK0NGUAGcgBlIjnJSbMYPGEk1xKSSlVcN2Aw==",
946+ "dependencies": {
947+ "@babel/runtime": "^7.13.10"
948+ },
949+ "peerDependencies": {
950+ "react": "^16.8 || ^17.0"
951+ }
952+ },
953+ "node_modules/@radix-ui/react-use-controllable-state": {
954+ "version": "0.1.0",
955+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-0.1.0.tgz",
956+ "integrity": "sha512-zv7CX/PgsRl46a52Tl45TwqwVJdmqnlQEQhaYMz/yBOD2sx2gCkCFSoF/z9mpnYWmS6DTLNTg5lIps3fV6EnXg==",
957+ "dependencies": {
958+ "@babel/runtime": "^7.13.10",
959+ "@radix-ui/react-use-callback-ref": "0.1.0"
960+ },
961+ "peerDependencies": {
962+ "react": "^16.8 || ^17.0"
963+ }
964+ },
965+ "node_modules/@radix-ui/react-use-direction": {
966+ "version": "0.1.0",
967+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-direction/-/react-use-direction-0.1.0.tgz",
968+ "integrity": "sha512-NajpY/An9TCPSfOVkgWIdXJV+VuWl67PxB6kOKYmtNAFHvObzIoh8o0n9sAuwSAyFCZVq211FEf9gvVDRhOyiA==",
969+ "dependencies": {
970+ "@babel/runtime": "^7.13.10"
971+ },
972+ "peerDependencies": {
973+ "react": "^16.8 || ^17.0"
974+ }
975+ },
976+ "node_modules/@radix-ui/react-use-escape-keydown": {
977+ "version": "0.1.0",
978+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-0.1.0.tgz",
979+ "integrity": "sha512-tDLZbTGFmvXaazUXXv8kYbiCcbAE8yKgng9s95d8fCO+Eundv0Jngbn/hKPhDDs4jj9ChwRX5cDDnlaN+ugYYQ==",
980+ "dependencies": {
981+ "@babel/runtime": "^7.13.10",
982+ "@radix-ui/react-use-callback-ref": "0.1.0"
983+ },
984+ "peerDependencies": {
985+ "react": "^16.8 || ^17.0"
986+ }
987+ },
988+ "node_modules/@radix-ui/react-use-layout-effect": {
989+ "version": "0.1.0",
990+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-0.1.0.tgz",
991+ "integrity": "sha512-+wdeS51Y+E1q1Wmd+1xSSbesZkpVj4jsg0BojCbopWvgq5iBvixw5vgemscdh58ep98BwUbsFYnrywFhV9yrVg==",
992+ "dependencies": {
993+ "@babel/runtime": "^7.13.10"
994+ },
995+ "peerDependencies": {
996+ "react": "^16.8 || ^17.0"
997+ }
998+ },
999+ "node_modules/@radix-ui/react-use-previous": {
1000+ "version": "0.1.1",
1001+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-0.1.1.tgz",
1002+ "integrity": "sha512-O/ZgrDBr11dR8rhO59ED8s5zIXBRFi8MiS+CmFGfi7MJYdLbfqVOmQU90Ghf87aifEgWe6380LA69KBneaShAg==",
1003+ "dependencies": {
1004+ "@babel/runtime": "^7.13.10"
1005+ },
1006+ "peerDependencies": {
1007+ "react": "^16.8 || ^17.0"
1008+ }
1009+ },
1010+ "node_modules/@radix-ui/react-use-rect": {
1011+ "version": "0.1.1",
1012+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-0.1.1.tgz",
1013+ "integrity": "sha512-kHNNXAsP3/PeszEmM/nxBBS9Jbo93sO+xuMTcRfwzXsmxT5gDXQzAiKbZQ0EecCPtJIzqvr7dlaQi/aP1PKYqQ==",
1014+ "dependencies": {
1015+ "@babel/runtime": "^7.13.10",
1016+ "@radix-ui/rect": "0.1.1"
1017+ },
1018+ "peerDependencies": {
1019+ "react": "^16.8 || ^17.0"
1020+ }
1021+ },
1022+ "node_modules/@radix-ui/react-use-size": {
1023+ "version": "0.1.1",
1024+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-0.1.1.tgz",
1025+ "integrity": "sha512-pTgWM5qKBu6C7kfKxrKPoBI2zZYZmp2cSXzpUiGM3qEBQlMLtYhaY2JXdXUCxz+XmD1YEjc8oRwvyfsD4AG4WA==",
1026+ "dependencies": {
1027+ "@babel/runtime": "^7.13.10"
1028+ },
1029+ "peerDependencies": {
1030+ "react": "^16.8 || ^17.0"
1031+ }
1032+ },
1033+ "node_modules/@radix-ui/react-visually-hidden": {
1034+ "version": "0.1.4",
1035+ "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-0.1.4.tgz",
1036+ "integrity": "sha512-K/q6AEEzqeeEq/T0NPChvBqnwlp8Tl4NnQdrI/y8IOY7BRR+Ug0PEsVk6g48HJ7cA1//COugdxXXVVK/m0X1mA==",
1037+ "dependencies": {
1038+ "@babel/runtime": "^7.13.10",
1039+ "@radix-ui/react-primitive": "0.1.4"
1040+ },
1041+ "peerDependencies": {
1042+ "react": "^16.8 || ^17.0"
1043+ }
1044+ },
1045+ "node_modules/@radix-ui/rect": {
1046+ "version": "0.1.1",
1047+ "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-0.1.1.tgz",
1048+ "integrity": "sha512-g3hnE/UcOg7REdewduRPAK88EPuLZtaq7sA9ouu8S+YEtnyFRI16jgv6GZYe3VMoQLL1T171ebmEPtDjyxWLzw==",
1049+ "dependencies": {
1050+ "@babel/runtime": "^7.13.10"
1051+ }
1052+ },
1053+ "node_modules/@rollup/pluginutils": {
1054+ "version": "4.2.1",
1055+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
1056+ "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==",
1057+ "dev": true,
1058+ "dependencies": {
1059+ "estree-walker": "^2.0.1",
1060+ "picomatch": "^2.2.2"
1061+ },
1062+ "engines": {
1063+ "node": ">= 8.0.0"
1064+ }
1065+ },
1066+ "node_modules/@types/lodash": {
1067+ "version": "4.14.182",
1068+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz",
1069+ "integrity": "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==",
1070+ "dev": true
1071+ },
1072+ "node_modules/@types/lodash.debounce": {
1073+ "version": "4.0.7",
1074+ "resolved": "https://registry.npmjs.org/@types/lodash.debounce/-/lodash.debounce-4.0.7.tgz",
1075+ "integrity": "sha512-X1T4wMZ+gT000M2/91SYj0d/7JfeNZ9PeeOldSNoE/lunLeQXKvkmIumI29IaKMotU/ln/McOIvgzZcQ/3TrSA==",
1076+ "dev": true,
1077+ "dependencies": {
1078+ "@types/lodash": "*"
1079+ }
1080+ },
1081+ "node_modules/@types/parse-json": {
1082+ "version": "4.0.0",
1083+ "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
1084+ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA=="
1085+ },
1086+ "node_modules/@types/prop-types": {
1087+ "version": "15.7.5",
1088+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
1089+ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
1090+ },
1091+ "node_modules/@types/react": {
1092+ "version": "17.0.47",
1093+ "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.47.tgz",
1094+ "integrity": "sha512-mk0BL8zBinf2ozNr3qPnlu1oyVTYq+4V7WA76RgxUAtf0Em/Wbid38KN6n4abEkvO4xMTBWmnP1FtQzgkEiJoA==",
1095+ "dependencies": {
1096+ "@types/prop-types": "*",
1097+ "@types/scheduler": "*",
1098+ "csstype": "^3.0.2"
1099+ }
1100+ },
1101+ "node_modules/@types/react-dom": {
1102+ "version": "17.0.17",
1103+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.17.tgz",
1104+ "integrity": "sha512-VjnqEmqGnasQKV0CWLevqMTXBYG9GbwuE6x3VetERLh0cq2LTptFE73MrQi2S7GkKXCf2GgwItB/melLnxfnsg==",
1105+ "dev": true,
1106+ "dependencies": {
1107+ "@types/react": "^17"
1108+ }
1109+ },
1110+ "node_modules/@types/react-transition-group": {
1111+ "version": "4.4.5",
1112+ "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz",
1113+ "integrity": "sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==",
1114+ "dependencies": {
1115+ "@types/react": "*"
1116+ }
1117+ },
1118+ "node_modules/@types/scheduler": {
1119+ "version": "0.16.2",
1120+ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
1121+ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
1122+ },
1123+ "node_modules/@urbit/api": {
1124+ "version": "2.1.1",
1125+ "resolved": "https://registry.npmjs.org/@urbit/api/-/api-2.1.1.tgz",
1126+ "integrity": "sha512-QRlqhtJ73q+pgMdSwuOO62HlxA7/2c5ylCcOUT01LXkJ2LTVCl5u+QnejdDvUmqjOuN2PyZk7df30xJVg6rC2A==",
1127+ "dependencies": {
1128+ "@babel/runtime": "^7.16.0",
1129+ "big-integer": "^1.6.48",
1130+ "core-js": "^3.19.1",
1131+ "immer": "^9.0.1",
1132+ "urbit-ob": "^5.0.1"
1133+ }
1134+ },
1135+ "node_modules/@urbit/http-api": {
1136+ "version": "2.1.3",
1137+ "resolved": "https://registry.npmjs.org/@urbit/http-api/-/http-api-2.1.3.tgz",
1138+ "integrity": "sha512-/wL7kQ/b2m24+cJiQ/3bFoU4jq3Qbl9h+JCb3H/1yovhFSUI7RPUbV20ONhCPTryXch6CC5QbgCALStJYHvKJg==",
1139+ "dependencies": {
1140+ "@babel/runtime": "^7.12.5",
1141+ "@microsoft/fetch-event-source": "^2.0.0",
1142+ "browser-or-node": "^1.3.0",
1143+ "core-js": "^3.19.1"
1144+ }
1145+ },
1146+ "node_modules/@urbit/vite-plugin-urbit": {
1147+ "version": "0.8.0",
1148+ "resolved": "https://registry.npmjs.org/@urbit/vite-plugin-urbit/-/vite-plugin-urbit-0.8.0.tgz",
1149+ "integrity": "sha512-cx540xZBuHfzud/kOuYU4xPpsFcgE7mF0heac5uXVutDqjySvVXimEuZgBN23ULC7l60R/bAJ2jOWygBwWen4A==",
1150+ "dev": true,
1151+ "dependencies": {
1152+ "vite-plugin-html-config": "^1.0.6",
1153+ "vite-plugin-rewrite-all": "^0.1.2"
1154+ }
1155+ },
1156+ "node_modules/@vitejs/plugin-react-refresh": {
1157+ "version": "1.3.6",
1158+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-refresh/-/plugin-react-refresh-1.3.6.tgz",
1159+ "integrity": "sha512-iNR/UqhUOmFFxiezt0em9CgmiJBdWR+5jGxB2FihaoJfqGt76kiwaKoVOJVU5NYcDWMdN06LbyN2VIGIoYdsEA==",
1160+ "deprecated": "This package has been deprecated in favor of @vitejs/plugin-react",
1161+ "dev": true,
1162+ "dependencies": {
1163+ "@babel/core": "^7.14.8",
1164+ "@babel/plugin-transform-react-jsx-self": "^7.14.5",
1165+ "@babel/plugin-transform-react-jsx-source": "^7.14.5",
1166+ "@rollup/pluginutils": "^4.1.1",
1167+ "react-refresh": "^0.10.0"
1168+ },
1169+ "engines": {
1170+ "node": ">=12.0.0"
1171+ }
1172+ },
1173+ "node_modules/acorn": {
1174+ "version": "7.4.1",
1175+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
1176+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
1177+ "dev": true,
1178+ "bin": {
1179+ "acorn": "bin/acorn"
1180+ },
1181+ "engines": {
1182+ "node": ">=0.4.0"
1183+ }
1184+ },
1185+ "node_modules/acorn-node": {
1186+ "version": "1.8.2",
1187+ "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
1188+ "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==",
1189+ "dev": true,
1190+ "dependencies": {
1191+ "acorn": "^7.0.0",
1192+ "acorn-walk": "^7.0.0",
1193+ "xtend": "^4.0.2"
1194+ }
1195+ },
1196+ "node_modules/acorn-walk": {
1197+ "version": "7.2.0",
1198+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
1199+ "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
1200+ "dev": true,
1201+ "engines": {
1202+ "node": ">=0.4.0"
1203+ }
1204+ },
1205+ "node_modules/ansi-styles": {
1206+ "version": "3.2.1",
1207+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
1208+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
1209+ "dependencies": {
1210+ "color-convert": "^1.9.0"
1211+ },
1212+ "engines": {
1213+ "node": ">=4"
1214+ }
1215+ },
1216+ "node_modules/anymatch": {
1217+ "version": "3.1.2",
1218+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
1219+ "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
1220+ "dev": true,
1221+ "dependencies": {
1222+ "normalize-path": "^3.0.0",
1223+ "picomatch": "^2.0.4"
1224+ },
1225+ "engines": {
1226+ "node": ">= 8"
1227+ }
1228+ },
1229+ "node_modules/arg": {
1230+ "version": "5.0.2",
1231+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
1232+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
1233+ "dev": true
1234+ },
1235+ "node_modules/aria-hidden": {
1236+ "version": "1.1.3",
1237+ "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.1.3.tgz",
1238+ "integrity": "sha512-RhVWFtKH5BiGMycI72q2RAFMLQi8JP9bLuQXgR5a8Znp7P5KOIADSJeyfI8PCVxLEp067B2HbP5JIiI/PXIZeA==",
1239+ "dependencies": {
1240+ "tslib": "^1.0.0"
1241+ },
1242+ "engines": {
1243+ "node": ">=8.5.0"
1244+ }
1245+ },
1246+ "node_modules/autoprefixer": {
1247+ "version": "10.4.7",
1248+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz",
1249+ "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==",
1250+ "dev": true,
1251+ "funding": [
1252+ {
1253+ "type": "opencollective",
1254+ "url": "https://opencollective.com/postcss/"
1255+ },
1256+ {
1257+ "type": "tidelift",
1258+ "url": "https://tidelift.com/funding/github/npm/autoprefixer"
1259+ }
1260+ ],
1261+ "dependencies": {
1262+ "browserslist": "^4.20.3",
1263+ "caniuse-lite": "^1.0.30001335",
1264+ "fraction.js": "^4.2.0",
1265+ "normalize-range": "^0.1.2",
1266+ "picocolors": "^1.0.0",
1267+ "postcss-value-parser": "^4.2.0"
1268+ },
1269+ "bin": {
1270+ "autoprefixer": "bin/autoprefixer"
1271+ },
1272+ "engines": {
1273+ "node": "^10 || ^12 || >=14"
1274+ },
1275+ "peerDependencies": {
1276+ "postcss": "^8.1.0"
1277+ }
1278+ },
1279+ "node_modules/babel-plugin-macros": {
1280+ "version": "2.8.0",
1281+ "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz",
1282+ "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==",
1283+ "dependencies": {
1284+ "@babel/runtime": "^7.7.2",
1285+ "cosmiconfig": "^6.0.0",
1286+ "resolve": "^1.12.0"
1287+ }
1288+ },
1289+ "node_modules/balanced-match": {
1290+ "version": "1.0.2",
1291+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
1292+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
1293+ },
1294+ "node_modules/big-integer": {
1295+ "version": "1.6.51",
1296+ "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
1297+ "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==",
1298+ "engines": {
1299+ "node": ">=0.6"
1300+ }
1301+ },
1302+ "node_modules/binary-extensions": {
1303+ "version": "2.2.0",
1304+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
1305+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
1306+ "dev": true,
1307+ "engines": {
1308+ "node": ">=8"
1309+ }
1310+ },
1311+ "node_modules/bn.js": {
1312+ "version": "4.12.0",
1313+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
1314+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
1315+ },
1316+ "node_modules/brace-expansion": {
1317+ "version": "1.1.11",
1318+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
1319+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
1320+ "dependencies": {
1321+ "balanced-match": "^1.0.0",
1322+ "concat-map": "0.0.1"
1323+ }
1324+ },
1325+ "node_modules/braces": {
1326+ "version": "3.0.2",
1327+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
1328+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
1329+ "dev": true,
1330+ "dependencies": {
1331+ "fill-range": "^7.0.1"
1332+ },
1333+ "engines": {
1334+ "node": ">=8"
1335+ }
1336+ },
1337+ "node_modules/broadcast-channel": {
1338+ "version": "3.7.0",
1339+ "resolved": "https://registry.npmjs.org/broadcast-channel/-/broadcast-channel-3.7.0.tgz",
1340+ "integrity": "sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==",
1341+ "dependencies": {
1342+ "@babel/runtime": "^7.7.2",
1343+ "detect-node": "^2.1.0",
1344+ "js-sha3": "0.8.0",
1345+ "microseconds": "0.2.0",
1346+ "nano-time": "1.0.0",
1347+ "oblivious-set": "1.0.0",
1348+ "rimraf": "3.0.2",
1349+ "unload": "2.2.0"
1350+ }
1351+ },
1352+ "node_modules/browser-or-node": {
1353+ "version": "1.3.0",
1354+ "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-1.3.0.tgz",
1355+ "integrity": "sha512-0F2z/VSnLbmEeBcUrSuDH5l0HxTXdQQzLjkmBR4cYfvg1zJrKSlmIZFqyFR8oX0NrwPhy3c3HQ6i3OxMbew4Tg=="
1356+ },
1357+ "node_modules/browserslist": {
1358+ "version": "4.21.1",
1359+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.1.tgz",
1360+ "integrity": "sha512-Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ==",
1361+ "funding": [
1362+ {
1363+ "type": "opencollective",
1364+ "url": "https://opencollective.com/browserslist"
1365+ },
1366+ {
1367+ "type": "tidelift",
1368+ "url": "https://tidelift.com/funding/github/npm/browserslist"
1369+ }
1370+ ],
1371+ "dependencies": {
1372+ "caniuse-lite": "^1.0.30001359",
1373+ "electron-to-chromium": "^1.4.172",
1374+ "node-releases": "^2.0.5",
1375+ "update-browserslist-db": "^1.0.4"
1376+ },
1377+ "bin": {
1378+ "browserslist": "cli.js"
1379+ },
1380+ "engines": {
1381+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
1382+ }
1383+ },
1384+ "node_modules/callsites": {
1385+ "version": "3.1.0",
1386+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
1387+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
1388+ "engines": {
1389+ "node": ">=6"
1390+ }
1391+ },
1392+ "node_modules/camelcase-css": {
1393+ "version": "2.0.1",
1394+ "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
1395+ "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
1396+ "dev": true,
1397+ "engines": {
1398+ "node": ">= 6"
1399+ }
1400+ },
1401+ "node_modules/caniuse-lite": {
1402+ "version": "1.0.30001361",
1403+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001361.tgz",
1404+ "integrity": "sha512-ybhCrjNtkFji1/Wto6SSJKkWk6kZgVQsDq5QI83SafsF6FXv2JB4df9eEdH6g8sdGgqTXrFLjAxqBGgYoU3azQ==",
1405+ "funding": [
1406+ {
1407+ "type": "opencollective",
1408+ "url": "https://opencollective.com/browserslist"
1409+ },
1410+ {
1411+ "type": "tidelift",
1412+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
1413+ }
1414+ ]
1415+ },
1416+ "node_modules/chalk": {
1417+ "version": "2.4.2",
1418+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
1419+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
1420+ "dependencies": {
1421+ "ansi-styles": "^3.2.1",
1422+ "escape-string-regexp": "^1.0.5",
1423+ "supports-color": "^5.3.0"
1424+ },
1425+ "engines": {
1426+ "node": ">=4"
1427+ }
1428+ },
1429+ "node_modules/chokidar": {
1430+ "version": "3.5.3",
1431+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
1432+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
1433+ "dev": true,
1434+ "funding": [
1435+ {
1436+ "type": "individual",
1437+ "url": "https://paulmillr.com/funding/"
1438+ }
1439+ ],
1440+ "dependencies": {
1441+ "anymatch": "~3.1.2",
1442+ "braces": "~3.0.2",
1443+ "glob-parent": "~5.1.2",
1444+ "is-binary-path": "~2.1.0",
1445+ "is-glob": "~4.0.1",
1446+ "normalize-path": "~3.0.0",
1447+ "readdirp": "~3.6.0"
1448+ },
1449+ "engines": {
1450+ "node": ">= 8.10.0"
1451+ },
1452+ "optionalDependencies": {
1453+ "fsevents": "~2.3.2"
1454+ }
1455+ },
1456+ "node_modules/chokidar/node_modules/glob-parent": {
1457+ "version": "5.1.2",
1458+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1459+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1460+ "dev": true,
1461+ "dependencies": {
1462+ "is-glob": "^4.0.1"
1463+ },
1464+ "engines": {
1465+ "node": ">= 6"
1466+ }
1467+ },
1468+ "node_modules/classnames": {
1469+ "version": "2.3.1",
1470+ "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz",
1471+ "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA=="
1472+ },
1473+ "node_modules/color-convert": {
1474+ "version": "1.9.3",
1475+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
1476+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
1477+ "dependencies": {
1478+ "color-name": "1.1.3"
1479+ }
1480+ },
1481+ "node_modules/color-name": {
1482+ "version": "1.1.3",
1483+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
1484+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
1485+ },
1486+ "node_modules/concat-map": {
1487+ "version": "0.0.1",
1488+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
1489+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
1490+ },
1491+ "node_modules/connect-history-api-fallback": {
1492+ "version": "1.6.0",
1493+ "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz",
1494+ "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==",
1495+ "dev": true,
1496+ "engines": {
1497+ "node": ">=0.8"
1498+ }
1499+ },
1500+ "node_modules/convert-source-map": {
1501+ "version": "1.8.0",
1502+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
1503+ "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
1504+ "dependencies": {
1505+ "safe-buffer": "~5.1.1"
1506+ }
1507+ },
1508+ "node_modules/core-js": {
1509+ "version": "3.23.3",
1510+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.23.3.tgz",
1511+ "integrity": "sha512-oAKwkj9xcWNBAvGbT//WiCdOMpb9XQG92/Fe3ABFM/R16BsHgePG00mFOgKf7IsCtfj8tA1kHtf/VwErhriz5Q==",
1512+ "hasInstallScript": true,
1513+ "funding": {
1514+ "type": "opencollective",
1515+ "url": "https://opencollective.com/core-js"
1516+ }
1517+ },
1518+ "node_modules/cosmiconfig": {
1519+ "version": "6.0.0",
1520+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
1521+ "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
1522+ "dependencies": {
1523+ "@types/parse-json": "^4.0.0",
1524+ "import-fresh": "^3.1.0",
1525+ "parse-json": "^5.0.0",
1526+ "path-type": "^4.0.0",
1527+ "yaml": "^1.7.2"
1528+ },
1529+ "engines": {
1530+ "node": ">=8"
1531+ }
1532+ },
1533+ "node_modules/cssesc": {
1534+ "version": "3.0.0",
1535+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
1536+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
1537+ "dev": true,
1538+ "bin": {
1539+ "cssesc": "bin/cssesc"
1540+ },
1541+ "engines": {
1542+ "node": ">=4"
1543+ }
1544+ },
1545+ "node_modules/csstype": {
1546+ "version": "3.1.0",
1547+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz",
1548+ "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA=="
1549+ },
1550+ "node_modules/debug": {
1551+ "version": "4.3.4",
1552+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
1553+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
1554+ "dependencies": {
1555+ "ms": "2.1.2"
1556+ },
1557+ "engines": {
1558+ "node": ">=6.0"
1559+ },
1560+ "peerDependenciesMeta": {
1561+ "supports-color": {
1562+ "optional": true
1563+ }
1564+ }
1565+ },
1566+ "node_modules/defined": {
1567+ "version": "1.0.0",
1568+ "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
1569+ "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==",
1570+ "dev": true
1571+ },
1572+ "node_modules/detect-node": {
1573+ "version": "2.1.0",
1574+ "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
1575+ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g=="
1576+ },
1577+ "node_modules/detect-node-es": {
1578+ "version": "1.1.0",
1579+ "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz",
1580+ "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="
1581+ },
1582+ "node_modules/detective": {
1583+ "version": "5.2.1",
1584+ "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz",
1585+ "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==",
1586+ "dev": true,
1587+ "dependencies": {
1588+ "acorn-node": "^1.8.2",
1589+ "defined": "^1.0.0",
1590+ "minimist": "^1.2.6"
1591+ },
1592+ "bin": {
1593+ "detective": "bin/detective.js"
1594+ },
1595+ "engines": {
1596+ "node": ">=0.8.0"
1597+ }
1598+ },
1599+ "node_modules/didyoumean": {
1600+ "version": "1.2.2",
1601+ "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
1602+ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
1603+ "dev": true
1604+ },
1605+ "node_modules/dlv": {
1606+ "version": "1.1.3",
1607+ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
1608+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
1609+ "dev": true
1610+ },
1611+ "node_modules/dom-helpers": {
1612+ "version": "5.2.1",
1613+ "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
1614+ "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
1615+ "dependencies": {
1616+ "@babel/runtime": "^7.8.7",
1617+ "csstype": "^3.0.2"
1618+ }
1619+ },
1620+ "node_modules/electron-to-chromium": {
1621+ "version": "1.4.176",
1622+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.176.tgz",
1623+ "integrity": "sha512-92JdgyRlcNDwuy75MjuFSb3clt6DGJ2IXSpg0MCjKd3JV9eSmuUAIyWiGAp/EtT0z2D4rqbYqThQLV90maH3Zw=="
1624+ },
1625+ "node_modules/error-ex": {
1626+ "version": "1.3.2",
1627+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
1628+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
1629+ "dependencies": {
1630+ "is-arrayish": "^0.2.1"
1631+ }
1632+ },
1633+ "node_modules/esbuild": {
1634+ "version": "0.14.48",
1635+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.48.tgz",
1636+ "integrity": "sha512-w6N1Yn5MtqK2U1/WZTX9ZqUVb8IOLZkZ5AdHkT6x3cHDMVsYWC7WPdiLmx19w3i4Rwzy5LqsEMtVihG3e4rFzA==",
1637+ "dev": true,
1638+ "hasInstallScript": true,
1639+ "bin": {
1640+ "esbuild": "bin/esbuild"
1641+ },
1642+ "engines": {
1643+ "node": ">=12"
1644+ },
1645+ "optionalDependencies": {
1646+ "esbuild-android-64": "0.14.48",
1647+ "esbuild-android-arm64": "0.14.48",
1648+ "esbuild-darwin-64": "0.14.48",
1649+ "esbuild-darwin-arm64": "0.14.48",
1650+ "esbuild-freebsd-64": "0.14.48",
1651+ "esbuild-freebsd-arm64": "0.14.48",
1652+ "esbuild-linux-32": "0.14.48",
1653+ "esbuild-linux-64": "0.14.48",
1654+ "esbuild-linux-arm": "0.14.48",
1655+ "esbuild-linux-arm64": "0.14.48",
1656+ "esbuild-linux-mips64le": "0.14.48",
1657+ "esbuild-linux-ppc64le": "0.14.48",
1658+ "esbuild-linux-riscv64": "0.14.48",
1659+ "esbuild-linux-s390x": "0.14.48",
1660+ "esbuild-netbsd-64": "0.14.48",
1661+ "esbuild-openbsd-64": "0.14.48",
1662+ "esbuild-sunos-64": "0.14.48",
1663+ "esbuild-windows-32": "0.14.48",
1664+ "esbuild-windows-64": "0.14.48",
1665+ "esbuild-windows-arm64": "0.14.48"
1666+ }
1667+ },
1668+ "node_modules/esbuild-android-64": {
1669+ "version": "0.14.48",
1670+ "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.48.tgz",
1671+ "integrity": "sha512-3aMjboap/kqwCUpGWIjsk20TtxVoKck8/4Tu19rubh7t5Ra0Yrpg30Mt1QXXlipOazrEceGeWurXKeFJgkPOUg==",
1672+ "cpu": [
1673+ "x64"
1674+ ],
1675+ "dev": true,
1676+ "optional": true,
1677+ "os": [
1678+ "android"
1679+ ],
1680+ "engines": {
1681+ "node": ">=12"
1682+ }
1683+ },
1684+ "node_modules/esbuild-android-arm64": {
1685+ "version": "0.14.48",
1686+ "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.48.tgz",
1687+ "integrity": "sha512-vptI3K0wGALiDq+EvRuZotZrJqkYkN5282iAfcffjI5lmGG9G1ta/CIVauhY42MBXwEgDJkweiDcDMRLzBZC4g==",
1688+ "cpu": [
1689+ "arm64"
1690+ ],
1691+ "dev": true,
1692+ "optional": true,
1693+ "os": [
1694+ "android"
1695+ ],
1696+ "engines": {
1697+ "node": ">=12"
1698+ }
1699+ },
1700+ "node_modules/esbuild-darwin-64": {
1701+ "version": "0.14.48",
1702+ "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.48.tgz",
1703+ "integrity": "sha512-gGQZa4+hab2Va/Zww94YbshLuWteyKGD3+EsVon8EWTWhnHFRm5N9NbALNbwi/7hQ/hM1Zm4FuHg+k6BLsl5UA==",
1704+ "cpu": [
1705+ "x64"
1706+ ],
1707+ "dev": true,
1708+ "optional": true,
1709+ "os": [
1710+ "darwin"
1711+ ],
1712+ "engines": {
1713+ "node": ">=12"
1714+ }
1715+ },
1716+ "node_modules/esbuild-darwin-arm64": {
1717+ "version": "0.14.48",
1718+ "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.48.tgz",
1719+ "integrity": "sha512-bFjnNEXjhZT+IZ8RvRGNJthLWNHV5JkCtuOFOnjvo5pC0sk2/QVk0Qc06g2PV3J0TcU6kaPC3RN9yy9w2PSLEA==",
1720+ "cpu": [
1721+ "arm64"
1722+ ],
1723+ "dev": true,
1724+ "optional": true,
1725+ "os": [
1726+ "darwin"
1727+ ],
1728+ "engines": {
1729+ "node": ">=12"
1730+ }
1731+ },
1732+ "node_modules/esbuild-freebsd-64": {
1733+ "version": "0.14.48",
1734+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.48.tgz",
1735+ "integrity": "sha512-1NOlwRxmOsnPcWOGTB10JKAkYSb2nue0oM1AfHWunW/mv3wERfJmnYlGzL3UAOIUXZqW8GeA2mv+QGwq7DToqA==",
1736+ "cpu": [
1737+ "x64"
1738+ ],
1739+ "dev": true,
1740+ "optional": true,
1741+ "os": [
1742+ "freebsd"
1743+ ],
1744+ "engines": {
1745+ "node": ">=12"
1746+ }
1747+ },
1748+ "node_modules/esbuild-freebsd-arm64": {
1749+ "version": "0.14.48",
1750+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.48.tgz",
1751+ "integrity": "sha512-gXqKdO8wabVcYtluAbikDH2jhXp+Klq5oCD5qbVyUG6tFiGhrC9oczKq3vIrrtwcxDQqK6+HDYK8Zrd4bCA9Gw==",
1752+ "cpu": [
1753+ "arm64"
1754+ ],
1755+ "dev": true,
1756+ "optional": true,
1757+ "os": [
1758+ "freebsd"
1759+ ],
1760+ "engines": {
1761+ "node": ">=12"
1762+ }
1763+ },
1764+ "node_modules/esbuild-linux-32": {
1765+ "version": "0.14.48",
1766+ "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.48.tgz",
1767+ "integrity": "sha512-ghGyDfS289z/LReZQUuuKq9KlTiTspxL8SITBFQFAFRA/IkIvDpnZnCAKTCjGXAmUqroMQfKJXMxyjJA69c/nQ==",
1768+ "cpu": [
1769+ "ia32"
1770+ ],
1771+ "dev": true,
1772+ "optional": true,
1773+ "os": [
1774+ "linux"
1775+ ],
1776+ "engines": {
1777+ "node": ">=12"
1778+ }
1779+ },
1780+ "node_modules/esbuild-linux-64": {
1781+ "version": "0.14.48",
1782+ "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.48.tgz",
1783+ "integrity": "sha512-vni3p/gppLMVZLghI7oMqbOZdGmLbbKR23XFARKnszCIBpEMEDxOMNIKPmMItQrmH/iJrL1z8Jt2nynY0bE1ug==",
1784+ "cpu": [
1785+ "x64"
1786+ ],
1787+ "dev": true,
1788+ "optional": true,
1789+ "os": [
1790+ "linux"
1791+ ],
1792+ "engines": {
1793+ "node": ">=12"
1794+ }
1795+ },
1796+ "node_modules/esbuild-linux-arm": {
1797+ "version": "0.14.48",
1798+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.48.tgz",
1799+ "integrity": "sha512-+VfSV7Akh1XUiDNXgqgY1cUP1i2vjI+BmlyXRfVz5AfV3jbpde8JTs5Q9sYgaoq5cWfuKfoZB/QkGOI+QcL1Tw==",
1800+ "cpu": [
1801+ "arm"
1802+ ],
1803+ "dev": true,
1804+ "optional": true,
1805+ "os": [
1806+ "linux"
1807+ ],
1808+ "engines": {
1809+ "node": ">=12"
1810+ }
1811+ },
1812+ "node_modules/esbuild-linux-arm64": {
1813+ "version": "0.14.48",
1814+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.48.tgz",
1815+ "integrity": "sha512-3CFsOlpoxlKPRevEHq8aAntgYGYkE1N9yRYAcPyng/p4Wyx0tPR5SBYsxLKcgPB9mR8chHEhtWYz6EZ+H199Zw==",
1816+ "cpu": [
1817+ "arm64"
1818+ ],
1819+ "dev": true,
1820+ "optional": true,
1821+ "os": [
1822+ "linux"
1823+ ],
1824+ "engines": {
1825+ "node": ">=12"
1826+ }
1827+ },
1828+ "node_modules/esbuild-linux-mips64le": {
1829+ "version": "0.14.48",
1830+ "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.48.tgz",
1831+ "integrity": "sha512-cs0uOiRlPp6ymknDnjajCgvDMSsLw5mST2UXh+ZIrXTj2Ifyf2aAP3Iw4DiqgnyYLV2O/v/yWBJx+WfmKEpNLA==",
1832+ "cpu": [
1833+ "mips64el"
1834+ ],
1835+ "dev": true,
1836+ "optional": true,
1837+ "os": [
1838+ "linux"
1839+ ],
1840+ "engines": {
1841+ "node": ">=12"
1842+ }
1843+ },
1844+ "node_modules/esbuild-linux-ppc64le": {
1845+ "version": "0.14.48",
1846+ "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.48.tgz",
1847+ "integrity": "sha512-+2F0vJMkuI0Wie/wcSPDCqXvSFEELH7Jubxb7mpWrA/4NpT+/byjxDz0gG6R1WJoeDefcrMfpBx4GFNN1JQorQ==",
1848+ "cpu": [
1849+ "ppc64"
1850+ ],
1851+ "dev": true,
1852+ "optional": true,
1853+ "os": [
1854+ "linux"
1855+ ],
1856+ "engines": {
1857+ "node": ">=12"
1858+ }
1859+ },
1860+ "node_modules/esbuild-linux-riscv64": {
1861+ "version": "0.14.48",
1862+ "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.48.tgz",
1863+ "integrity": "sha512-BmaK/GfEE+5F2/QDrIXteFGKnVHGxlnK9MjdVKMTfvtmudjY3k2t8NtlY4qemKSizc+QwyombGWTBDc76rxePA==",
1864+ "cpu": [
1865+ "riscv64"
1866+ ],
1867+ "dev": true,
1868+ "optional": true,
1869+ "os": [
1870+ "linux"
1871+ ],
1872+ "engines": {
1873+ "node": ">=12"
1874+ }
1875+ },
1876+ "node_modules/esbuild-linux-s390x": {
1877+ "version": "0.14.48",
1878+ "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.48.tgz",
1879+ "integrity": "sha512-tndw/0B9jiCL+KWKo0TSMaUm5UWBLsfCKVdbfMlb3d5LeV9WbijZ8Ordia8SAYv38VSJWOEt6eDCdOx8LqkC4g==",
1880+ "cpu": [
1881+ "s390x"
1882+ ],
1883+ "dev": true,
1884+ "optional": true,
1885+ "os": [
1886+ "linux"
1887+ ],
1888+ "engines": {
1889+ "node": ">=12"
1890+ }
1891+ },
1892+ "node_modules/esbuild-netbsd-64": {
1893+ "version": "0.14.48",
1894+ "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.48.tgz",
1895+ "integrity": "sha512-V9hgXfwf/T901Lr1wkOfoevtyNkrxmMcRHyticybBUHookznipMOHoF41Al68QBsqBxnITCEpjjd4yAos7z9Tw==",
1896+ "cpu": [
1897+ "x64"
1898+ ],
1899+ "dev": true,
1900+ "optional": true,
1901+ "os": [
1902+ "netbsd"
1903+ ],
1904+ "engines": {
1905+ "node": ">=12"
1906+ }
1907+ },
1908+ "node_modules/esbuild-openbsd-64": {
1909+ "version": "0.14.48",
1910+ "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.48.tgz",
1911+ "integrity": "sha512-+IHf4JcbnnBl4T52egorXMatil/za0awqzg2Vy6FBgPcBpisDWT2sVz/tNdrK9kAqj+GZG/jZdrOkj7wsrNTKA==",
1912+ "cpu": [
1913+ "x64"
1914+ ],
1915+ "dev": true,
1916+ "optional": true,
1917+ "os": [
1918+ "openbsd"
1919+ ],
1920+ "engines": {
1921+ "node": ">=12"
1922+ }
1923+ },
1924+ "node_modules/esbuild-sunos-64": {
1925+ "version": "0.14.48",
1926+ "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.48.tgz",
1927+ "integrity": "sha512-77m8bsr5wOpOWbGi9KSqDphcq6dFeJyun8TA+12JW/GAjyfTwVtOnN8DOt6DSPUfEV+ltVMNqtXUeTeMAxl5KA==",
1928+ "cpu": [
1929+ "x64"
1930+ ],
1931+ "dev": true,
1932+ "optional": true,
1933+ "os": [
1934+ "sunos"
1935+ ],
1936+ "engines": {
1937+ "node": ">=12"
1938+ }
1939+ },
1940+ "node_modules/esbuild-windows-32": {
1941+ "version": "0.14.48",
1942+ "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.48.tgz",
1943+ "integrity": "sha512-EPgRuTPP8vK9maxpTGDe5lSoIBHGKO/AuxDncg5O3NkrPeLNdvvK8oywB0zGaAZXxYWfNNSHskvvDgmfVTguhg==",
1944+ "cpu": [
1945+ "ia32"
1946+ ],
1947+ "dev": true,
1948+ "optional": true,
1949+ "os": [
1950+ "win32"
1951+ ],
1952+ "engines": {
1953+ "node": ">=12"
1954+ }
1955+ },
1956+ "node_modules/esbuild-windows-64": {
1957+ "version": "0.14.48",
1958+ "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.48.tgz",
1959+ "integrity": "sha512-YmpXjdT1q0b8ictSdGwH3M8VCoqPpK1/UArze3X199w6u8hUx3V8BhAi1WjbsfDYRBanVVtduAhh2sirImtAvA==",
1960+ "cpu": [
1961+ "x64"
1962+ ],
1963+ "dev": true,
1964+ "optional": true,
1965+ "os": [
1966+ "win32"
1967+ ],
1968+ "engines": {
1969+ "node": ">=12"
1970+ }
1971+ },
1972+ "node_modules/esbuild-windows-arm64": {
1973+ "version": "0.14.48",
1974+ "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.48.tgz",
1975+ "integrity": "sha512-HHaOMCsCXp0rz5BT2crTka6MPWVno121NKApsGs/OIW5QC0ggC69YMGs1aJct9/9FSUF4A1xNE/cLvgB5svR4g==",
1976+ "cpu": [
1977+ "arm64"
1978+ ],
1979+ "dev": true,
1980+ "optional": true,
1981+ "os": [
1982+ "win32"
1983+ ],
1984+ "engines": {
1985+ "node": ">=12"
1986+ }
1987+ },
1988+ "node_modules/escalade": {
1989+ "version": "3.1.1",
1990+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
1991+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
1992+ "engines": {
1993+ "node": ">=6"
1994+ }
1995+ },
1996+ "node_modules/escape-string-regexp": {
1997+ "version": "1.0.5",
1998+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
1999+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
2000+ "engines": {
2001+ "node": ">=0.8.0"
2002+ }
2003+ },
2004+ "node_modules/estree-walker": {
2005+ "version": "2.0.2",
2006+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
2007+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
2008+ "dev": true
2009+ },
2010+ "node_modules/fast-glob": {
2011+ "version": "3.2.11",
2012+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
2013+ "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
2014+ "dev": true,
2015+ "dependencies": {
2016+ "@nodelib/fs.stat": "^2.0.2",
2017+ "@nodelib/fs.walk": "^1.2.3",
2018+ "glob-parent": "^5.1.2",
2019+ "merge2": "^1.3.0",
2020+ "micromatch": "^4.0.4"
2021+ },
2022+ "engines": {
2023+ "node": ">=8.6.0"
2024+ }
2025+ },
2026+ "node_modules/fast-glob/node_modules/glob-parent": {
2027+ "version": "5.1.2",
2028+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
2029+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
2030+ "dev": true,
2031+ "dependencies": {
2032+ "is-glob": "^4.0.1"
2033+ },
2034+ "engines": {
2035+ "node": ">= 6"
2036+ }
2037+ },
2038+ "node_modules/fastq": {
2039+ "version": "1.13.0",
2040+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
2041+ "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
2042+ "dev": true,
2043+ "dependencies": {
2044+ "reusify": "^1.0.4"
2045+ }
2046+ },
2047+ "node_modules/fill-range": {
2048+ "version": "7.0.1",
2049+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
2050+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
2051+ "dev": true,
2052+ "dependencies": {
2053+ "to-regex-range": "^5.0.1"
2054+ },
2055+ "engines": {
2056+ "node": ">=8"
2057+ }
2058+ },
2059+ "node_modules/find-root": {
2060+ "version": "1.1.0",
2061+ "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
2062+ "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng=="
2063+ },
2064+ "node_modules/fraction.js": {
2065+ "version": "4.2.0",
2066+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
2067+ "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
2068+ "dev": true,
2069+ "engines": {
2070+ "node": "*"
2071+ },
2072+ "funding": {
2073+ "type": "patreon",
2074+ "url": "https://www.patreon.com/infusion"
2075+ }
2076+ },
2077+ "node_modules/fs.realpath": {
2078+ "version": "1.0.0",
2079+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
2080+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
2081+ },
2082+ "node_modules/fsevents": {
2083+ "version": "2.3.2",
2084+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
2085+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
2086+ "dev": true,
2087+ "hasInstallScript": true,
2088+ "optional": true,
2089+ "os": [
2090+ "darwin"
2091+ ],
2092+ "engines": {
2093+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
2094+ }
2095+ },
2096+ "node_modules/function-bind": {
2097+ "version": "1.1.1",
2098+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
2099+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
2100+ },
2101+ "node_modules/gensync": {
2102+ "version": "1.0.0-beta.2",
2103+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
2104+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
2105+ "engines": {
2106+ "node": ">=6.9.0"
2107+ }
2108+ },
2109+ "node_modules/get-nonce": {
2110+ "version": "1.0.1",
2111+ "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz",
2112+ "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==",
2113+ "engines": {
2114+ "node": ">=6"
2115+ }
2116+ },
2117+ "node_modules/glob": {
2118+ "version": "7.2.3",
2119+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
2120+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
2121+ "dependencies": {
2122+ "fs.realpath": "^1.0.0",
2123+ "inflight": "^1.0.4",
2124+ "inherits": "2",
2125+ "minimatch": "^3.1.1",
2126+ "once": "^1.3.0",
2127+ "path-is-absolute": "^1.0.0"
2128+ },
2129+ "engines": {
2130+ "node": "*"
2131+ },
2132+ "funding": {
2133+ "url": "https://github.com/sponsors/isaacs"
2134+ }
2135+ },
2136+ "node_modules/glob-parent": {
2137+ "version": "6.0.2",
2138+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
2139+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
2140+ "dev": true,
2141+ "dependencies": {
2142+ "is-glob": "^4.0.3"
2143+ },
2144+ "engines": {
2145+ "node": ">=10.13.0"
2146+ }
2147+ },
2148+ "node_modules/globals": {
2149+ "version": "11.12.0",
2150+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
2151+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
2152+ "engines": {
2153+ "node": ">=4"
2154+ }
2155+ },
2156+ "node_modules/has": {
2157+ "version": "1.0.3",
2158+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
2159+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
2160+ "dependencies": {
2161+ "function-bind": "^1.1.1"
2162+ },
2163+ "engines": {
2164+ "node": ">= 0.4.0"
2165+ }
2166+ },
2167+ "node_modules/has-flag": {
2168+ "version": "3.0.0",
2169+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
2170+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
2171+ "engines": {
2172+ "node": ">=4"
2173+ }
2174+ },
2175+ "node_modules/history": {
2176+ "version": "5.3.0",
2177+ "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz",
2178+ "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==",
2179+ "dependencies": {
2180+ "@babel/runtime": "^7.7.6"
2181+ }
2182+ },
2183+ "node_modules/hoist-non-react-statics": {
2184+ "version": "3.3.2",
2185+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
2186+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
2187+ "dependencies": {
2188+ "react-is": "^16.7.0"
2189+ }
2190+ },
2191+ "node_modules/immer": {
2192+ "version": "9.0.15",
2193+ "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.15.tgz",
2194+ "integrity": "sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ==",
2195+ "funding": {
2196+ "type": "opencollective",
2197+ "url": "https://opencollective.com/immer"
2198+ }
2199+ },
2200+ "node_modules/import-fresh": {
2201+ "version": "3.3.0",
2202+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
2203+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
2204+ "dependencies": {
2205+ "parent-module": "^1.0.0",
2206+ "resolve-from": "^4.0.0"
2207+ },
2208+ "engines": {
2209+ "node": ">=6"
2210+ },
2211+ "funding": {
2212+ "url": "https://github.com/sponsors/sindresorhus"
2213+ }
2214+ },
2215+ "node_modules/inflight": {
2216+ "version": "1.0.6",
2217+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
2218+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
2219+ "dependencies": {
2220+ "once": "^1.3.0",
2221+ "wrappy": "1"
2222+ }
2223+ },
2224+ "node_modules/inherits": {
2225+ "version": "2.0.4",
2226+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
2227+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
2228+ },
2229+ "node_modules/invariant": {
2230+ "version": "2.2.4",
2231+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
2232+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
2233+ "dependencies": {
2234+ "loose-envify": "^1.0.0"
2235+ }
2236+ },
2237+ "node_modules/is-arrayish": {
2238+ "version": "0.2.1",
2239+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
2240+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
2241+ },
2242+ "node_modules/is-binary-path": {
2243+ "version": "2.1.0",
2244+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
2245+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
2246+ "dev": true,
2247+ "dependencies": {
2248+ "binary-extensions": "^2.0.0"
2249+ },
2250+ "engines": {
2251+ "node": ">=8"
2252+ }
2253+ },
2254+ "node_modules/is-core-module": {
2255+ "version": "2.9.0",
2256+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz",
2257+ "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",
2258+ "dependencies": {
2259+ "has": "^1.0.3"
2260+ },
2261+ "funding": {
2262+ "url": "https://github.com/sponsors/ljharb"
2263+ }
2264+ },
2265+ "node_modules/is-extglob": {
2266+ "version": "2.1.1",
2267+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
2268+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
2269+ "dev": true,
2270+ "engines": {
2271+ "node": ">=0.10.0"
2272+ }
2273+ },
2274+ "node_modules/is-glob": {
2275+ "version": "4.0.3",
2276+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
2277+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
2278+ "dev": true,
2279+ "dependencies": {
2280+ "is-extglob": "^2.1.1"
2281+ },
2282+ "engines": {
2283+ "node": ">=0.10.0"
2284+ }
2285+ },
2286+ "node_modules/is-number": {
2287+ "version": "7.0.0",
2288+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
2289+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
2290+ "dev": true,
2291+ "engines": {
2292+ "node": ">=0.12.0"
2293+ }
2294+ },
2295+ "node_modules/js-sha3": {
2296+ "version": "0.8.0",
2297+ "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz",
2298+ "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q=="
2299+ },
2300+ "node_modules/js-tokens": {
2301+ "version": "4.0.0",
2302+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
2303+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
2304+ },
2305+ "node_modules/jsesc": {
2306+ "version": "2.5.2",
2307+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
2308+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
2309+ "bin": {
2310+ "jsesc": "bin/jsesc"
2311+ },
2312+ "engines": {
2313+ "node": ">=4"
2314+ }
2315+ },
2316+ "node_modules/json-parse-even-better-errors": {
2317+ "version": "2.3.1",
2318+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
2319+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
2320+ },
2321+ "node_modules/json5": {
2322+ "version": "2.2.1",
2323+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
2324+ "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
2325+ "bin": {
2326+ "json5": "lib/cli.js"
2327+ },
2328+ "engines": {
2329+ "node": ">=6"
2330+ }
2331+ },
2332+ "node_modules/lilconfig": {
2333+ "version": "2.0.5",
2334+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz",
2335+ "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==",
2336+ "dev": true,
2337+ "engines": {
2338+ "node": ">=10"
2339+ }
2340+ },
2341+ "node_modules/lines-and-columns": {
2342+ "version": "1.2.4",
2343+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
2344+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
2345+ },
2346+ "node_modules/lodash.chunk": {
2347+ "version": "4.2.0",
2348+ "resolved": "https://registry.npmjs.org/lodash.chunk/-/lodash.chunk-4.2.0.tgz",
2349+ "integrity": "sha512-ZzydJKfUHJwHa+hF5X66zLFCBrWn5GeF28OHEr4WVWtNDXlQ/IjWKPBiikqKo2ne0+v6JgCgJ0GzJp8k8bHC7w=="
2350+ },
2351+ "node_modules/lodash.debounce": {
2352+ "version": "4.0.8",
2353+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
2354+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
2355+ },
2356+ "node_modules/lodash.isequal": {
2357+ "version": "4.5.0",
2358+ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
2359+ "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ=="
2360+ },
2361+ "node_modules/loose-envify": {
2362+ "version": "1.4.0",
2363+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
2364+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
2365+ "dependencies": {
2366+ "js-tokens": "^3.0.0 || ^4.0.0"
2367+ },
2368+ "bin": {
2369+ "loose-envify": "cli.js"
2370+ }
2371+ },
2372+ "node_modules/match-sorter": {
2373+ "version": "6.3.1",
2374+ "resolved": "https://registry.npmjs.org/match-sorter/-/match-sorter-6.3.1.tgz",
2375+ "integrity": "sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw==",
2376+ "dependencies": {
2377+ "@babel/runtime": "^7.12.5",
2378+ "remove-accents": "0.4.2"
2379+ }
2380+ },
2381+ "node_modules/memoize-one": {
2382+ "version": "5.2.1",
2383+ "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz",
2384+ "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q=="
2385+ },
2386+ "node_modules/merge2": {
2387+ "version": "1.4.1",
2388+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
2389+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
2390+ "dev": true,
2391+ "engines": {
2392+ "node": ">= 8"
2393+ }
2394+ },
2395+ "node_modules/micromatch": {
2396+ "version": "4.0.5",
2397+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
2398+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
2399+ "dev": true,
2400+ "dependencies": {
2401+ "braces": "^3.0.2",
2402+ "picomatch": "^2.3.1"
2403+ },
2404+ "engines": {
2405+ "node": ">=8.6"
2406+ }
2407+ },
2408+ "node_modules/microseconds": {
2409+ "version": "0.2.0",
2410+ "resolved": "https://registry.npmjs.org/microseconds/-/microseconds-0.2.0.tgz",
2411+ "integrity": "sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA=="
2412+ },
2413+ "node_modules/minimatch": {
2414+ "version": "3.1.2",
2415+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
2416+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
2417+ "dependencies": {
2418+ "brace-expansion": "^1.1.7"
2419+ },
2420+ "engines": {
2421+ "node": "*"
2422+ }
2423+ },
2424+ "node_modules/minimist": {
2425+ "version": "1.2.6",
2426+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
2427+ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
2428+ "dev": true
2429+ },
2430+ "node_modules/ms": {
2431+ "version": "2.1.2",
2432+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
2433+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
2434+ },
2435+ "node_modules/nano-time": {
2436+ "version": "1.0.0",
2437+ "resolved": "https://registry.npmjs.org/nano-time/-/nano-time-1.0.0.tgz",
2438+ "integrity": "sha512-flnngywOoQ0lLQOTRNexn2gGSNuM9bKj9RZAWSzhQ+UJYaAFG9bac4DW9VHjUAzrOaIcajHybCTHe/bkvozQqA==",
2439+ "dependencies": {
2440+ "big-integer": "^1.6.16"
2441+ }
2442+ },
2443+ "node_modules/nanoid": {
2444+ "version": "3.3.4",
2445+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
2446+ "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
2447+ "dev": true,
2448+ "bin": {
2449+ "nanoid": "bin/nanoid.cjs"
2450+ },
2451+ "engines": {
2452+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
2453+ }
2454+ },
2455+ "node_modules/node-releases": {
2456+ "version": "2.0.5",
2457+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz",
2458+ "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q=="
2459+ },
2460+ "node_modules/normalize-path": {
2461+ "version": "3.0.0",
2462+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
2463+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
2464+ "dev": true,
2465+ "engines": {
2466+ "node": ">=0.10.0"
2467+ }
2468+ },
2469+ "node_modules/normalize-range": {
2470+ "version": "0.1.2",
2471+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
2472+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
2473+ "dev": true,
2474+ "engines": {
2475+ "node": ">=0.10.0"
2476+ }
2477+ },
2478+ "node_modules/object-assign": {
2479+ "version": "4.1.1",
2480+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
2481+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
2482+ "engines": {
2483+ "node": ">=0.10.0"
2484+ }
2485+ },
2486+ "node_modules/object-hash": {
2487+ "version": "3.0.0",
2488+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
2489+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
2490+ "dev": true,
2491+ "engines": {
2492+ "node": ">= 6"
2493+ }
2494+ },
2495+ "node_modules/oblivious-set": {
2496+ "version": "1.0.0",
2497+ "resolved": "https://registry.npmjs.org/oblivious-set/-/oblivious-set-1.0.0.tgz",
2498+ "integrity": "sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw=="
2499+ },
2500+ "node_modules/once": {
2501+ "version": "1.4.0",
2502+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
2503+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
2504+ "dependencies": {
2505+ "wrappy": "1"
2506+ }
2507+ },
2508+ "node_modules/parent-module": {
2509+ "version": "1.0.1",
2510+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
2511+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
2512+ "dependencies": {
2513+ "callsites": "^3.0.0"
2514+ },
2515+ "engines": {
2516+ "node": ">=6"
2517+ }
2518+ },
2519+ "node_modules/parse-json": {
2520+ "version": "5.2.0",
2521+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
2522+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
2523+ "dependencies": {
2524+ "@babel/code-frame": "^7.0.0",
2525+ "error-ex": "^1.3.1",
2526+ "json-parse-even-better-errors": "^2.3.0",
2527+ "lines-and-columns": "^1.1.6"
2528+ },
2529+ "engines": {
2530+ "node": ">=8"
2531+ },
2532+ "funding": {
2533+ "url": "https://github.com/sponsors/sindresorhus"
2534+ }
2535+ },
2536+ "node_modules/path-is-absolute": {
2537+ "version": "1.0.1",
2538+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
2539+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
2540+ "engines": {
2541+ "node": ">=0.10.0"
2542+ }
2543+ },
2544+ "node_modules/path-parse": {
2545+ "version": "1.0.7",
2546+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
2547+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
2548+ },
2549+ "node_modules/path-type": {
2550+ "version": "4.0.0",
2551+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
2552+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
2553+ "engines": {
2554+ "node": ">=8"
2555+ }
2556+ },
2557+ "node_modules/picocolors": {
2558+ "version": "1.0.0",
2559+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
2560+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
2561+ },
2562+ "node_modules/picomatch": {
2563+ "version": "2.3.1",
2564+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
2565+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
2566+ "dev": true,
2567+ "engines": {
2568+ "node": ">=8.6"
2569+ },
2570+ "funding": {
2571+ "url": "https://github.com/sponsors/jonschlinkert"
2572+ }
2573+ },
2574+ "node_modules/pify": {
2575+ "version": "2.3.0",
2576+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
2577+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
2578+ "dev": true,
2579+ "engines": {
2580+ "node": ">=0.10.0"
2581+ }
2582+ },
2583+ "node_modules/postcss": {
2584+ "version": "8.4.14",
2585+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz",
2586+ "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==",
2587+ "dev": true,
2588+ "funding": [
2589+ {
2590+ "type": "opencollective",
2591+ "url": "https://opencollective.com/postcss/"
2592+ },
2593+ {
2594+ "type": "tidelift",
2595+ "url": "https://tidelift.com/funding/github/npm/postcss"
2596+ }
2597+ ],
2598+ "dependencies": {
2599+ "nanoid": "^3.3.4",
2600+ "picocolors": "^1.0.0",
2601+ "source-map-js": "^1.0.2"
2602+ },
2603+ "engines": {
2604+ "node": "^10 || ^12 || >=14"
2605+ }
2606+ },
2607+ "node_modules/postcss-import": {
2608+ "version": "14.1.0",
2609+ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz",
2610+ "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==",
2611+ "dev": true,
2612+ "dependencies": {
2613+ "postcss-value-parser": "^4.0.0",
2614+ "read-cache": "^1.0.0",
2615+ "resolve": "^1.1.7"
2616+ },
2617+ "engines": {
2618+ "node": ">=10.0.0"
2619+ },
2620+ "peerDependencies": {
2621+ "postcss": "^8.0.0"
2622+ }
2623+ },
2624+ "node_modules/postcss-js": {
2625+ "version": "4.0.0",
2626+ "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz",
2627+ "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==",
2628+ "dev": true,
2629+ "dependencies": {
2630+ "camelcase-css": "^2.0.1"
2631+ },
2632+ "engines": {
2633+ "node": "^12 || ^14 || >= 16"
2634+ },
2635+ "funding": {
2636+ "type": "opencollective",
2637+ "url": "https://opencollective.com/postcss/"
2638+ },
2639+ "peerDependencies": {
2640+ "postcss": "^8.3.3"
2641+ }
2642+ },
2643+ "node_modules/postcss-load-config": {
2644+ "version": "3.1.4",
2645+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz",
2646+ "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==",
2647+ "dev": true,
2648+ "dependencies": {
2649+ "lilconfig": "^2.0.5",
2650+ "yaml": "^1.10.2"
2651+ },
2652+ "engines": {
2653+ "node": ">= 10"
2654+ },
2655+ "funding": {
2656+ "type": "opencollective",
2657+ "url": "https://opencollective.com/postcss/"
2658+ },
2659+ "peerDependencies": {
2660+ "postcss": ">=8.0.9",
2661+ "ts-node": ">=9.0.0"
2662+ },
2663+ "peerDependenciesMeta": {
2664+ "postcss": {
2665+ "optional": true
2666+ },
2667+ "ts-node": {
2668+ "optional": true
2669+ }
2670+ }
2671+ },
2672+ "node_modules/postcss-nested": {
2673+ "version": "5.0.6",
2674+ "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz",
2675+ "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==",
2676+ "dev": true,
2677+ "dependencies": {
2678+ "postcss-selector-parser": "^6.0.6"
2679+ },
2680+ "engines": {
2681+ "node": ">=12.0"
2682+ },
2683+ "funding": {
2684+ "type": "opencollective",
2685+ "url": "https://opencollective.com/postcss/"
2686+ },
2687+ "peerDependencies": {
2688+ "postcss": "^8.2.14"
2689+ }
2690+ },
2691+ "node_modules/postcss-selector-parser": {
2692+ "version": "6.0.10",
2693+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
2694+ "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
2695+ "dev": true,
2696+ "dependencies": {
2697+ "cssesc": "^3.0.0",
2698+ "util-deprecate": "^1.0.2"
2699+ },
2700+ "engines": {
2701+ "node": ">=4"
2702+ }
2703+ },
2704+ "node_modules/postcss-value-parser": {
2705+ "version": "4.2.0",
2706+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
2707+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
2708+ "dev": true
2709+ },
2710+ "node_modules/prop-types": {
2711+ "version": "15.8.1",
2712+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
2713+ "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
2714+ "dependencies": {
2715+ "loose-envify": "^1.4.0",
2716+ "object-assign": "^4.1.1",
2717+ "react-is": "^16.13.1"
2718+ }
2719+ },
2720+ "node_modules/queue-microtask": {
2721+ "version": "1.2.3",
2722+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
2723+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
2724+ "dev": true,
2725+ "funding": [
2726+ {
2727+ "type": "github",
2728+ "url": "https://github.com/sponsors/feross"
2729+ },
2730+ {
2731+ "type": "patreon",
2732+ "url": "https://www.patreon.com/feross"
2733+ },
2734+ {
2735+ "type": "consulting",
2736+ "url": "https://feross.org/support"
2737+ }
2738+ ]
2739+ },
2740+ "node_modules/quick-lru": {
2741+ "version": "5.1.1",
2742+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
2743+ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
2744+ "dev": true,
2745+ "engines": {
2746+ "node": ">=10"
2747+ },
2748+ "funding": {
2749+ "url": "https://github.com/sponsors/sindresorhus"
2750+ }
2751+ },
2752+ "node_modules/react": {
2753+ "version": "17.0.2",
2754+ "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz",
2755+ "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==",
2756+ "dependencies": {
2757+ "loose-envify": "^1.1.0",
2758+ "object-assign": "^4.1.1"
2759+ },
2760+ "engines": {
2761+ "node": ">=0.10.0"
2762+ }
2763+ },
2764+ "node_modules/react-dom": {
2765+ "version": "17.0.2",
2766+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
2767+ "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==",
2768+ "dependencies": {
2769+ "loose-envify": "^1.1.0",
2770+ "object-assign": "^4.1.1",
2771+ "scheduler": "^0.20.2"
2772+ },
2773+ "peerDependencies": {
2774+ "react": "17.0.2"
2775+ }
2776+ },
2777+ "node_modules/react-hook-form": {
2778+ "version": "7.33.1",
2779+ "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.33.1.tgz",
2780+ "integrity": "sha512-ydTfTxEJdvgjCZBj5DDXRc58oTEfnFupEwwTAQ9FSKzykEJkX+3CiAkGtAMiZG7IPWHuzgT6AOBfogiKhUvKgg==",
2781+ "engines": {
2782+ "node": ">=12.22.0"
2783+ },
2784+ "funding": {
2785+ "type": "opencollective",
2786+ "url": "https://opencollective.com/react-hook-form"
2787+ },
2788+ "peerDependencies": {
2789+ "react": "^16.8.0 || ^17 || ^18"
2790+ }
2791+ },
2792+ "node_modules/react-is": {
2793+ "version": "16.13.1",
2794+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
2795+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
2796+ },
2797+ "node_modules/react-query": {
2798+ "version": "3.39.1",
2799+ "resolved": "https://registry.npmjs.org/react-query/-/react-query-3.39.1.tgz",
2800+ "integrity": "sha512-qYKT1bavdDiQZbngWZyPotlBVzcBjDYEJg5RQLBa++5Ix5jjfbEYJmHSZRZD+USVHUSvl/ey9Hu+QfF1QAK80A==",
2801+ "dependencies": {
2802+ "@babel/runtime": "^7.5.5",
2803+ "broadcast-channel": "^3.4.1",
2804+ "match-sorter": "^6.0.2"
2805+ },
2806+ "funding": {
2807+ "type": "github",
2808+ "url": "https://github.com/sponsors/tannerlinsley"
2809+ },
2810+ "peerDependencies": {
2811+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
2812+ },
2813+ "peerDependenciesMeta": {
2814+ "react-dom": {
2815+ "optional": true
2816+ },
2817+ "react-native": {
2818+ "optional": true
2819+ }
2820+ }
2821+ },
2822+ "node_modules/react-refresh": {
2823+ "version": "0.10.0",
2824+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.10.0.tgz",
2825+ "integrity": "sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ==",
2826+ "dev": true,
2827+ "engines": {
2828+ "node": ">=0.10.0"
2829+ }
2830+ },
2831+ "node_modules/react-remove-scroll": {
2832+ "version": "2.5.4",
2833+ "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.4.tgz",
2834+ "integrity": "sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA==",
2835+ "dependencies": {
2836+ "react-remove-scroll-bar": "^2.3.3",
2837+ "react-style-singleton": "^2.2.1",
2838+ "tslib": "^2.1.0",
2839+ "use-callback-ref": "^1.3.0",
2840+ "use-sidecar": "^1.1.2"
2841+ },
2842+ "engines": {
2843+ "node": ">=10"
2844+ },
2845+ "peerDependencies": {
2846+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
2847+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
2848+ },
2849+ "peerDependenciesMeta": {
2850+ "@types/react": {
2851+ "optional": true
2852+ }
2853+ }
2854+ },
2855+ "node_modules/react-remove-scroll-bar": {
2856+ "version": "2.3.3",
2857+ "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.3.tgz",
2858+ "integrity": "sha512-i9GMNWwpz8XpUpQ6QlevUtFjHGqnPG4Hxs+wlIJntu/xcsZVEpJcIV71K3ZkqNy2q3GfgvkD7y6t/Sv8ofYSbw==",
2859+ "dependencies": {
2860+ "react-style-singleton": "^2.2.1",
2861+ "tslib": "^2.0.0"
2862+ },
2863+ "engines": {
2864+ "node": ">=10"
2865+ },
2866+ "peerDependencies": {
2867+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
2868+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
2869+ },
2870+ "peerDependenciesMeta": {
2871+ "@types/react": {
2872+ "optional": true
2873+ }
2874+ }
2875+ },
2876+ "node_modules/react-remove-scroll-bar/node_modules/tslib": {
2877+ "version": "2.4.0",
2878+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
2879+ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
2880+ },
2881+ "node_modules/react-remove-scroll/node_modules/tslib": {
2882+ "version": "2.4.0",
2883+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
2884+ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
2885+ },
2886+ "node_modules/react-router": {
2887+ "version": "6.3.0",
2888+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.3.0.tgz",
2889+ "integrity": "sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==",
2890+ "dependencies": {
2891+ "history": "^5.2.0"
2892+ },
2893+ "peerDependencies": {
2894+ "react": ">=16.8"
2895+ }
2896+ },
2897+ "node_modules/react-router-dom": {
2898+ "version": "6.3.0",
2899+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.3.0.tgz",
2900+ "integrity": "sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==",
2901+ "dependencies": {
2902+ "history": "^5.2.0",
2903+ "react-router": "6.3.0"
2904+ },
2905+ "peerDependencies": {
2906+ "react": ">=16.8",
2907+ "react-dom": ">=16.8"
2908+ }
2909+ },
2910+ "node_modules/react-select": {
2911+ "version": "5.4.0",
2912+ "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.4.0.tgz",
2913+ "integrity": "sha512-CjE9RFLUvChd5SdlfG4vqxZd55AZJRrLrHzkQyTYeHlpOztqcgnyftYAolJ0SGsBev6zAs6qFrjm6KU3eo2hzg==",
2914+ "dependencies": {
2915+ "@babel/runtime": "^7.12.0",
2916+ "@emotion/cache": "^11.4.0",
2917+ "@emotion/react": "^11.8.1",
2918+ "@types/react-transition-group": "^4.4.0",
2919+ "memoize-one": "^5.0.0",
2920+ "prop-types": "^15.6.0",
2921+ "react-transition-group": "^4.3.0"
2922+ },
2923+ "peerDependencies": {
2924+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
2925+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
2926+ }
2927+ },
2928+ "node_modules/react-style-singleton": {
2929+ "version": "2.2.1",
2930+ "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz",
2931+ "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==",
2932+ "dependencies": {
2933+ "get-nonce": "^1.0.0",
2934+ "invariant": "^2.2.4",
2935+ "tslib": "^2.0.0"
2936+ },
2937+ "engines": {
2938+ "node": ">=10"
2939+ },
2940+ "peerDependencies": {
2941+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
2942+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
2943+ },
2944+ "peerDependenciesMeta": {
2945+ "@types/react": {
2946+ "optional": true
2947+ }
2948+ }
2949+ },
2950+ "node_modules/react-style-singleton/node_modules/tslib": {
2951+ "version": "2.4.0",
2952+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
2953+ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
2954+ },
2955+ "node_modules/react-transition-group": {
2956+ "version": "4.4.2",
2957+ "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz",
2958+ "integrity": "sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==",
2959+ "dependencies": {
2960+ "@babel/runtime": "^7.5.5",
2961+ "dom-helpers": "^5.0.1",
2962+ "loose-envify": "^1.4.0",
2963+ "prop-types": "^15.6.2"
2964+ },
2965+ "peerDependencies": {
2966+ "react": ">=16.6.0",
2967+ "react-dom": ">=16.6.0"
2968+ }
2969+ },
2970+ "node_modules/read-cache": {
2971+ "version": "1.0.0",
2972+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
2973+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
2974+ "dev": true,
2975+ "dependencies": {
2976+ "pify": "^2.3.0"
2977+ }
2978+ },
2979+ "node_modules/readdirp": {
2980+ "version": "3.6.0",
2981+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
2982+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
2983+ "dev": true,
2984+ "dependencies": {
2985+ "picomatch": "^2.2.1"
2986+ },
2987+ "engines": {
2988+ "node": ">=8.10.0"
2989+ }
2990+ },
2991+ "node_modules/regenerator-runtime": {
2992+ "version": "0.13.9",
2993+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
2994+ "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
2995+ },
2996+ "node_modules/remove-accents": {
2997+ "version": "0.4.2",
2998+ "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz",
2999+ "integrity": "sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA=="
3000+ },
3001+ "node_modules/resolve": {
3002+ "version": "1.22.1",
3003+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
3004+ "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
3005+ "dependencies": {
3006+ "is-core-module": "^2.9.0",
3007+ "path-parse": "^1.0.7",
3008+ "supports-preserve-symlinks-flag": "^1.0.0"
3009+ },
3010+ "bin": {
3011+ "resolve": "bin/resolve"
3012+ },
3013+ "funding": {
3014+ "url": "https://github.com/sponsors/ljharb"
3015+ }
3016+ },
3017+ "node_modules/resolve-from": {
3018+ "version": "4.0.0",
3019+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
3020+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
3021+ "engines": {
3022+ "node": ">=4"
3023+ }
3024+ },
3025+ "node_modules/reusify": {
3026+ "version": "1.0.4",
3027+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
3028+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
3029+ "dev": true,
3030+ "engines": {
3031+ "iojs": ">=1.0.0",
3032+ "node": ">=0.10.0"
3033+ }
3034+ },
3035+ "node_modules/rimraf": {
3036+ "version": "3.0.2",
3037+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
3038+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
3039+ "dependencies": {
3040+ "glob": "^7.1.3"
3041+ },
3042+ "bin": {
3043+ "rimraf": "bin.js"
3044+ },
3045+ "funding": {
3046+ "url": "https://github.com/sponsors/isaacs"
3047+ }
3048+ },
3049+ "node_modules/rollup": {
3050+ "version": "2.75.7",
3051+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.75.7.tgz",
3052+ "integrity": "sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ==",
3053+ "dev": true,
3054+ "bin": {
3055+ "rollup": "dist/bin/rollup"
3056+ },
3057+ "engines": {
3058+ "node": ">=10.0.0"
3059+ },
3060+ "optionalDependencies": {
3061+ "fsevents": "~2.3.2"
3062+ }
3063+ },
3064+ "node_modules/run-parallel": {
3065+ "version": "1.2.0",
3066+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
3067+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
3068+ "dev": true,
3069+ "funding": [
3070+ {
3071+ "type": "github",
3072+ "url": "https://github.com/sponsors/feross"
3073+ },
3074+ {
3075+ "type": "patreon",
3076+ "url": "https://www.patreon.com/feross"
3077+ },
3078+ {
3079+ "type": "consulting",
3080+ "url": "https://feross.org/support"
3081+ }
3082+ ],
3083+ "dependencies": {
3084+ "queue-microtask": "^1.2.2"
3085+ }
3086+ },
3087+ "node_modules/safe-buffer": {
3088+ "version": "5.1.2",
3089+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
3090+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
3091+ },
3092+ "node_modules/scheduler": {
3093+ "version": "0.20.2",
3094+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
3095+ "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
3096+ "dependencies": {
3097+ "loose-envify": "^1.1.0",
3098+ "object-assign": "^4.1.1"
3099+ }
3100+ },
3101+ "node_modules/semver": {
3102+ "version": "6.3.0",
3103+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
3104+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
3105+ "bin": {
3106+ "semver": "bin/semver.js"
3107+ }
3108+ },
3109+ "node_modules/source-map": {
3110+ "version": "0.5.7",
3111+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
3112+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
3113+ "engines": {
3114+ "node": ">=0.10.0"
3115+ }
3116+ },
3117+ "node_modules/source-map-js": {
3118+ "version": "1.0.2",
3119+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
3120+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
3121+ "dev": true,
3122+ "engines": {
3123+ "node": ">=0.10.0"
3124+ }
3125+ },
3126+ "node_modules/stylis": {
3127+ "version": "4.0.13",
3128+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz",
3129+ "integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag=="
3130+ },
3131+ "node_modules/supports-color": {
3132+ "version": "5.5.0",
3133+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
3134+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
3135+ "dependencies": {
3136+ "has-flag": "^3.0.0"
3137+ },
3138+ "engines": {
3139+ "node": ">=4"
3140+ }
3141+ },
3142+ "node_modules/supports-preserve-symlinks-flag": {
3143+ "version": "1.0.0",
3144+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
3145+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
3146+ "engines": {
3147+ "node": ">= 0.4"
3148+ },
3149+ "funding": {
3150+ "url": "https://github.com/sponsors/ljharb"
3151+ }
3152+ },
3153+ "node_modules/tailwindcss": {
3154+ "version": "3.1.4",
3155+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.1.4.tgz",
3156+ "integrity": "sha512-NrxbFV4tYsga/hpWbRyUfIaBrNMXDxx5BsHgBS4v5tlyjf+sDsgBg5m9OxjrXIqAS/uR9kicxLKP+bEHI7BSeQ==",
3157+ "dev": true,
3158+ "dependencies": {
3159+ "arg": "^5.0.2",
3160+ "chokidar": "^3.5.3",
3161+ "color-name": "^1.1.4",
3162+ "detective": "^5.2.1",
3163+ "didyoumean": "^1.2.2",
3164+ "dlv": "^1.1.3",
3165+ "fast-glob": "^3.2.11",
3166+ "glob-parent": "^6.0.2",
3167+ "is-glob": "^4.0.3",
3168+ "lilconfig": "^2.0.5",
3169+ "normalize-path": "^3.0.0",
3170+ "object-hash": "^3.0.0",
3171+ "picocolors": "^1.0.0",
3172+ "postcss": "^8.4.14",
3173+ "postcss-import": "^14.1.0",
3174+ "postcss-js": "^4.0.0",
3175+ "postcss-load-config": "^3.1.4",
3176+ "postcss-nested": "5.0.6",
3177+ "postcss-selector-parser": "^6.0.10",
3178+ "postcss-value-parser": "^4.2.0",
3179+ "quick-lru": "^5.1.1",
3180+ "resolve": "^1.22.0"
3181+ },
3182+ "bin": {
3183+ "tailwind": "lib/cli.js",
3184+ "tailwindcss": "lib/cli.js"
3185+ },
3186+ "engines": {
3187+ "node": ">=12.13.0"
3188+ },
3189+ "peerDependencies": {
3190+ "postcss": "^8.0.9"
3191+ }
3192+ },
3193+ "node_modules/tailwindcss/node_modules/color-name": {
3194+ "version": "1.1.4",
3195+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
3196+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
3197+ "dev": true
3198+ },
3199+ "node_modules/to-fast-properties": {
3200+ "version": "2.0.0",
3201+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
3202+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
3203+ "engines": {
3204+ "node": ">=4"
3205+ }
3206+ },
3207+ "node_modules/to-regex-range": {
3208+ "version": "5.0.1",
3209+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
3210+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
3211+ "dev": true,
3212+ "dependencies": {
3213+ "is-number": "^7.0.0"
3214+ },
3215+ "engines": {
3216+ "node": ">=8.0"
3217+ }
3218+ },
3219+ "node_modules/tslib": {
3220+ "version": "1.14.1",
3221+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
3222+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
3223+ },
3224+ "node_modules/typescript": {
3225+ "version": "4.7.4",
3226+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
3227+ "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
3228+ "dev": true,
3229+ "bin": {
3230+ "tsc": "bin/tsc",
3231+ "tsserver": "bin/tsserver"
3232+ },
3233+ "engines": {
3234+ "node": ">=4.2.0"
3235+ }
3236+ },
3237+ "node_modules/unload": {
3238+ "version": "2.2.0",
3239+ "resolved": "https://registry.npmjs.org/unload/-/unload-2.2.0.tgz",
3240+ "integrity": "sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==",
3241+ "dependencies": {
3242+ "@babel/runtime": "^7.6.2",
3243+ "detect-node": "^2.0.4"
3244+ }
3245+ },
3246+ "node_modules/update-browserslist-db": {
3247+ "version": "1.0.4",
3248+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz",
3249+ "integrity": "sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==",
3250+ "funding": [
3251+ {
3252+ "type": "opencollective",
3253+ "url": "https://opencollective.com/browserslist"
3254+ },
3255+ {
3256+ "type": "tidelift",
3257+ "url": "https://tidelift.com/funding/github/npm/browserslist"
3258+ }
3259+ ],
3260+ "dependencies": {
3261+ "escalade": "^3.1.1",
3262+ "picocolors": "^1.0.0"
3263+ },
3264+ "bin": {
3265+ "browserslist-lint": "cli.js"
3266+ },
3267+ "peerDependencies": {
3268+ "browserslist": ">= 4.21.0"
3269+ }
3270+ },
3271+ "node_modules/urbit-ob": {
3272+ "version": "5.0.1",
3273+ "resolved": "https://registry.npmjs.org/urbit-ob/-/urbit-ob-5.0.1.tgz",
3274+ "integrity": "sha512-qGNAwu87XNkW3g8ah4fUwmh2EKXtsdhEbyEiE5qX4Op17rhLH3HSkvu8g9z+MhqX51Uz9sf8ktvqJj/IRwETIQ==",
3275+ "dependencies": {
3276+ "bn.js": "^4.11.8",
3277+ "lodash.chunk": "^4.2.0",
3278+ "lodash.isequal": "^4.5.0"
3279+ }
3280+ },
3281+ "node_modules/use-callback-ref": {
3282+ "version": "1.3.0",
3283+ "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz",
3284+ "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==",
3285+ "dependencies": {
3286+ "tslib": "^2.0.0"
3287+ },
3288+ "engines": {
3289+ "node": ">=10"
3290+ },
3291+ "peerDependencies": {
3292+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
3293+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
3294+ },
3295+ "peerDependenciesMeta": {
3296+ "@types/react": {
3297+ "optional": true
3298+ }
3299+ }
3300+ },
3301+ "node_modules/use-callback-ref/node_modules/tslib": {
3302+ "version": "2.4.0",
3303+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
3304+ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
3305+ },
3306+ "node_modules/use-sidecar": {
3307+ "version": "1.1.2",
3308+ "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz",
3309+ "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==",
3310+ "dependencies": {
3311+ "detect-node-es": "^1.1.0",
3312+ "tslib": "^2.0.0"
3313+ },
3314+ "engines": {
3315+ "node": ">=10"
3316+ },
3317+ "peerDependencies": {
3318+ "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0",
3319+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
3320+ },
3321+ "peerDependenciesMeta": {
3322+ "@types/react": {
3323+ "optional": true
3324+ }
3325+ }
3326+ },
3327+ "node_modules/use-sidecar/node_modules/tslib": {
3328+ "version": "2.4.0",
3329+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
3330+ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
3331+ },
3332+ "node_modules/util-deprecate": {
3333+ "version": "1.0.2",
3334+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
3335+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
3336+ "dev": true
3337+ },
3338+ "node_modules/vite": {
3339+ "version": "2.9.13",
3340+ "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.13.tgz",
3341+ "integrity": "sha512-AsOBAaT0AD7Mhe8DuK+/kE4aWYFMx/i0ZNi98hJclxb4e0OhQcZYUrvLjIaQ8e59Ui7txcvKMiJC1yftqpQoDw==",
3342+ "dev": true,
3343+ "dependencies": {
3344+ "esbuild": "^0.14.27",
3345+ "postcss": "^8.4.13",
3346+ "resolve": "^1.22.0",
3347+ "rollup": "^2.59.0"
3348+ },
3349+ "bin": {
3350+ "vite": "bin/vite.js"
3351+ },
3352+ "engines": {
3353+ "node": ">=12.2.0"
3354+ },
3355+ "optionalDependencies": {
3356+ "fsevents": "~2.3.2"
3357+ },
3358+ "peerDependencies": {
3359+ "less": "*",
3360+ "sass": "*",
3361+ "stylus": "*"
3362+ },
3363+ "peerDependenciesMeta": {
3364+ "less": {
3365+ "optional": true
3366+ },
3367+ "sass": {
3368+ "optional": true
3369+ },
3370+ "stylus": {
3371+ "optional": true
3372+ }
3373+ }
3374+ },
3375+ "node_modules/vite-plugin-html-config": {
3376+ "version": "1.0.8",
3377+ "resolved": "https://registry.npmjs.org/vite-plugin-html-config/-/vite-plugin-html-config-1.0.8.tgz",
3378+ "integrity": "sha512-3tTtBQO+6zpC8uzAAfj3FWygj+V6H6F9fEt5KtB3j5UHsRYP0yLpTHsMvubXtqCXbKDp1oOakYYSjprqYcbrpA==",
3379+ "dev": true,
3380+ "engines": {
3381+ "node": ">=12.0.0"
3382+ },
3383+ "peerDependencies": {
3384+ "vite": "^2.0.5"
3385+ }
3386+ },
3387+ "node_modules/vite-plugin-rewrite-all": {
3388+ "version": "0.1.2",
3389+ "resolved": "https://registry.npmjs.org/vite-plugin-rewrite-all/-/vite-plugin-rewrite-all-0.1.2.tgz",
3390+ "integrity": "sha512-hBFuG043kbixgZ/ke9SzKhkO6P8a5ryxD0CmZTe+/Cz17RIKi7uSeNUJy79V4FgavZ7pWVRg0tqVwJ7lP/A2/Q==",
3391+ "dev": true,
3392+ "dependencies": {
3393+ "connect-history-api-fallback": "^1.6.0"
3394+ },
3395+ "engines": {
3396+ "node": ">=12.0.0"
3397+ },
3398+ "peerDependencies": {
3399+ "vite": "^2.0.2"
3400+ }
3401+ },
3402+ "node_modules/wrappy": {
3403+ "version": "1.0.2",
3404+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
3405+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
3406+ },
3407+ "node_modules/xtend": {
3408+ "version": "4.0.2",
3409+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
3410+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
3411+ "dev": true,
3412+ "engines": {
3413+ "node": ">=0.4"
3414+ }
3415+ },
3416+ "node_modules/yaml": {
3417+ "version": "1.10.2",
3418+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
3419+ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
3420+ "engines": {
3421+ "node": ">= 6"
3422+ }
3423+ }
3424+ },
3425+ "dependencies": {
3426+ "@ampproject/remapping": {
3427+ "version": "2.2.0",
3428+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
3429+ "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
3430+ "requires": {
3431+ "@jridgewell/gen-mapping": "^0.1.0",
3432+ "@jridgewell/trace-mapping": "^0.3.9"
3433+ }
3434+ },
3435+ "@babel/code-frame": {
3436+ "version": "7.18.6",
3437+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
3438+ "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
3439+ "requires": {
3440+ "@babel/highlight": "^7.18.6"
3441+ }
3442+ },
3443+ "@babel/compat-data": {
3444+ "version": "7.18.6",
3445+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.6.tgz",
3446+ "integrity": "sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ=="
3447+ },
3448+ "@babel/core": {
3449+ "version": "7.18.6",
3450+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz",
3451+ "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==",
3452+ "requires": {
3453+ "@ampproject/remapping": "^2.1.0",
3454+ "@babel/code-frame": "^7.18.6",
3455+ "@babel/generator": "^7.18.6",
3456+ "@babel/helper-compilation-targets": "^7.18.6",
3457+ "@babel/helper-module-transforms": "^7.18.6",
3458+ "@babel/helpers": "^7.18.6",
3459+ "@babel/parser": "^7.18.6",
3460+ "@babel/template": "^7.18.6",
3461+ "@babel/traverse": "^7.18.6",
3462+ "@babel/types": "^7.18.6",
3463+ "convert-source-map": "^1.7.0",
3464+ "debug": "^4.1.0",
3465+ "gensync": "^1.0.0-beta.2",
3466+ "json5": "^2.2.1",
3467+ "semver": "^6.3.0"
3468+ }
3469+ },
3470+ "@babel/generator": {
3471+ "version": "7.18.7",
3472+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz",
3473+ "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==",
3474+ "requires": {
3475+ "@babel/types": "^7.18.7",
3476+ "@jridgewell/gen-mapping": "^0.3.2",
3477+ "jsesc": "^2.5.1"
3478+ },
3479+ "dependencies": {
3480+ "@jridgewell/gen-mapping": {
3481+ "version": "0.3.2",
3482+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
3483+ "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
3484+ "requires": {
3485+ "@jridgewell/set-array": "^1.0.1",
3486+ "@jridgewell/sourcemap-codec": "^1.4.10",
3487+ "@jridgewell/trace-mapping": "^0.3.9"
3488+ }
3489+ }
3490+ }
3491+ },
3492+ "@babel/helper-compilation-targets": {
3493+ "version": "7.18.6",
3494+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz",
3495+ "integrity": "sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==",
3496+ "requires": {
3497+ "@babel/compat-data": "^7.18.6",
3498+ "@babel/helper-validator-option": "^7.18.6",
3499+ "browserslist": "^4.20.2",
3500+ "semver": "^6.3.0"
3501+ }
3502+ },
3503+ "@babel/helper-environment-visitor": {
3504+ "version": "7.18.6",
3505+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz",
3506+ "integrity": "sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q=="
3507+ },
3508+ "@babel/helper-function-name": {
3509+ "version": "7.18.6",
3510+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz",
3511+ "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==",
3512+ "requires": {
3513+ "@babel/template": "^7.18.6",
3514+ "@babel/types": "^7.18.6"
3515+ }
3516+ },
3517+ "@babel/helper-hoist-variables": {
3518+ "version": "7.18.6",
3519+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
3520+ "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
3521+ "requires": {
3522+ "@babel/types": "^7.18.6"
3523+ }
3524+ },
3525+ "@babel/helper-module-imports": {
3526+ "version": "7.18.6",
3527+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
3528+ "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
3529+ "requires": {
3530+ "@babel/types": "^7.18.6"
3531+ }
3532+ },
3533+ "@babel/helper-module-transforms": {
3534+ "version": "7.18.6",
3535+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz",
3536+ "integrity": "sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw==",
3537+ "requires": {
3538+ "@babel/helper-environment-visitor": "^7.18.6",
3539+ "@babel/helper-module-imports": "^7.18.6",
3540+ "@babel/helper-simple-access": "^7.18.6",
3541+ "@babel/helper-split-export-declaration": "^7.18.6",
3542+ "@babel/helper-validator-identifier": "^7.18.6",
3543+ "@babel/template": "^7.18.6",
3544+ "@babel/traverse": "^7.18.6",
3545+ "@babel/types": "^7.18.6"
3546+ }
3547+ },
3548+ "@babel/helper-plugin-utils": {
3549+ "version": "7.18.6",
3550+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz",
3551+ "integrity": "sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg=="
3552+ },
3553+ "@babel/helper-simple-access": {
3554+ "version": "7.18.6",
3555+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz",
3556+ "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==",
3557+ "requires": {
3558+ "@babel/types": "^7.18.6"
3559+ }
3560+ },
3561+ "@babel/helper-split-export-declaration": {
3562+ "version": "7.18.6",
3563+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
3564+ "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
3565+ "requires": {
3566+ "@babel/types": "^7.18.6"
3567+ }
3568+ },
3569+ "@babel/helper-validator-identifier": {
3570+ "version": "7.18.6",
3571+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
3572+ "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g=="
3573+ },
3574+ "@babel/helper-validator-option": {
3575+ "version": "7.18.6",
3576+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
3577+ "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw=="
3578+ },
3579+ "@babel/helpers": {
3580+ "version": "7.18.6",
3581+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz",
3582+ "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==",
3583+ "requires": {
3584+ "@babel/template": "^7.18.6",
3585+ "@babel/traverse": "^7.18.6",
3586+ "@babel/types": "^7.18.6"
3587+ }
3588+ },
3589+ "@babel/highlight": {
3590+ "version": "7.18.6",
3591+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
3592+ "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
3593+ "requires": {
3594+ "@babel/helper-validator-identifier": "^7.18.6",
3595+ "chalk": "^2.0.0",
3596+ "js-tokens": "^4.0.0"
3597+ }
3598+ },
3599+ "@babel/parser": {
3600+ "version": "7.18.6",
3601+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.6.tgz",
3602+ "integrity": "sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw=="
3603+ },
3604+ "@babel/plugin-syntax-jsx": {
3605+ "version": "7.18.6",
3606+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz",
3607+ "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==",
3608+ "requires": {
3609+ "@babel/helper-plugin-utils": "^7.18.6"
3610+ }
3611+ },
3612+ "@babel/plugin-transform-react-jsx-self": {
3613+ "version": "7.18.6",
3614+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz",
3615+ "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==",
3616+ "dev": true,
3617+ "requires": {
3618+ "@babel/helper-plugin-utils": "^7.18.6"
3619+ }
3620+ },
3621+ "@babel/plugin-transform-react-jsx-source": {
3622+ "version": "7.18.6",
3623+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.18.6.tgz",
3624+ "integrity": "sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw==",
3625+ "dev": true,
3626+ "requires": {
3627+ "@babel/helper-plugin-utils": "^7.18.6"
3628+ }
3629+ },
3630+ "@babel/runtime": {
3631+ "version": "7.18.6",
3632+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.6.tgz",
3633+ "integrity": "sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ==",
3634+ "requires": {
3635+ "regenerator-runtime": "^0.13.4"
3636+ }
3637+ },
3638+ "@babel/template": {
3639+ "version": "7.18.6",
3640+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz",
3641+ "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==",
3642+ "requires": {
3643+ "@babel/code-frame": "^7.18.6",
3644+ "@babel/parser": "^7.18.6",
3645+ "@babel/types": "^7.18.6"
3646+ }
3647+ },
3648+ "@babel/traverse": {
3649+ "version": "7.18.6",
3650+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.6.tgz",
3651+ "integrity": "sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==",
3652+ "requires": {
3653+ "@babel/code-frame": "^7.18.6",
3654+ "@babel/generator": "^7.18.6",
3655+ "@babel/helper-environment-visitor": "^7.18.6",
3656+ "@babel/helper-function-name": "^7.18.6",
3657+ "@babel/helper-hoist-variables": "^7.18.6",
3658+ "@babel/helper-split-export-declaration": "^7.18.6",
3659+ "@babel/parser": "^7.18.6",
3660+ "@babel/types": "^7.18.6",
3661+ "debug": "^4.1.0",
3662+ "globals": "^11.1.0"
3663+ }
3664+ },
3665+ "@babel/types": {
3666+ "version": "7.18.7",
3667+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.7.tgz",
3668+ "integrity": "sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==",
3669+ "requires": {
3670+ "@babel/helper-validator-identifier": "^7.18.6",
3671+ "to-fast-properties": "^2.0.0"
3672+ }
3673+ },
3674+ "@emotion/babel-plugin": {
3675+ "version": "11.9.2",
3676+ "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.9.2.tgz",
3677+ "integrity": "sha512-Pr/7HGH6H6yKgnVFNEj2MVlreu3ADqftqjqwUvDy/OJzKFgxKeTQ+eeUf20FOTuHVkDON2iNa25rAXVYtWJCjw==",
3678+ "requires": {
3679+ "@babel/helper-module-imports": "^7.12.13",
3680+ "@babel/plugin-syntax-jsx": "^7.12.13",
3681+ "@babel/runtime": "^7.13.10",
3682+ "@emotion/hash": "^0.8.0",
3683+ "@emotion/memoize": "^0.7.5",
3684+ "@emotion/serialize": "^1.0.2",
3685+ "babel-plugin-macros": "^2.6.1",
3686+ "convert-source-map": "^1.5.0",
3687+ "escape-string-regexp": "^4.0.0",
3688+ "find-root": "^1.1.0",
3689+ "source-map": "^0.5.7",
3690+ "stylis": "4.0.13"
3691+ },
3692+ "dependencies": {
3693+ "escape-string-regexp": {
3694+ "version": "4.0.0",
3695+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
3696+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
3697+ }
3698+ }
3699+ },
3700+ "@emotion/cache": {
3701+ "version": "11.9.3",
3702+ "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.9.3.tgz",
3703+ "integrity": "sha512-0dgkI/JKlCXa+lEXviaMtGBL0ynpx4osh7rjOXE71q9bIF8G+XhJgvi+wDu0B0IdCVx37BffiwXlN9I3UuzFvg==",
3704+ "requires": {
3705+ "@emotion/memoize": "^0.7.4",
3706+ "@emotion/sheet": "^1.1.1",
3707+ "@emotion/utils": "^1.0.0",
3708+ "@emotion/weak-memoize": "^0.2.5",
3709+ "stylis": "4.0.13"
3710+ }
3711+ },
3712+ "@emotion/hash": {
3713+ "version": "0.8.0",
3714+ "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz",
3715+ "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow=="
3716+ },
3717+ "@emotion/memoize": {
3718+ "version": "0.7.5",
3719+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.5.tgz",
3720+ "integrity": "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ=="
3721+ },
3722+ "@emotion/react": {
3723+ "version": "11.9.3",
3724+ "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.9.3.tgz",
3725+ "integrity": "sha512-g9Q1GcTOlzOEjqwuLF/Zd9LC+4FljjPjDfxSM7KmEakm+hsHXk+bYZ2q+/hTJzr0OUNkujo72pXLQvXj6H+GJQ==",
3726+ "requires": {
3727+ "@babel/runtime": "^7.13.10",
3728+ "@emotion/babel-plugin": "^11.7.1",
3729+ "@emotion/cache": "^11.9.3",
3730+ "@emotion/serialize": "^1.0.4",
3731+ "@emotion/utils": "^1.1.0",
3732+ "@emotion/weak-memoize": "^0.2.5",
3733+ "hoist-non-react-statics": "^3.3.1"
3734+ }
3735+ },
3736+ "@emotion/serialize": {
3737+ "version": "1.0.4",
3738+ "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.0.4.tgz",
3739+ "integrity": "sha512-1JHamSpH8PIfFwAMryO2bNka+y8+KA5yga5Ocf2d7ZEiJjb7xlLW7aknBGZqJLajuLOvJ+72vN+IBSwPlXD1Pg==",
3740+ "requires": {
3741+ "@emotion/hash": "^0.8.0",
3742+ "@emotion/memoize": "^0.7.4",
3743+ "@emotion/unitless": "^0.7.5",
3744+ "@emotion/utils": "^1.0.0",
3745+ "csstype": "^3.0.2"
3746+ }
3747+ },
3748+ "@emotion/sheet": {
3749+ "version": "1.1.1",
3750+ "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.1.1.tgz",
3751+ "integrity": "sha512-J3YPccVRMiTZxYAY0IOq3kd+hUP8idY8Kz6B/Cyo+JuXq52Ek+zbPbSQUrVQp95aJ+lsAW7DPL1P2Z+U1jGkKA=="
3752+ },
3753+ "@emotion/unitless": {
3754+ "version": "0.7.5",
3755+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz",
3756+ "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg=="
3757+ },
3758+ "@emotion/utils": {
3759+ "version": "1.1.0",
3760+ "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.1.0.tgz",
3761+ "integrity": "sha512-iRLa/Y4Rs5H/f2nimczYmS5kFJEbpiVvgN3XVfZ022IYhuNA1IRSHEizcof88LtCTXtl9S2Cxt32KgaXEu72JQ=="
3762+ },
3763+ "@emotion/weak-memoize": {
3764+ "version": "0.2.5",
3765+ "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz",
3766+ "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA=="
3767+ },
3768+ "@heroicons/react": {
3769+ "version": "1.0.6",
3770+ "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-1.0.6.tgz",
3771+ "integrity": "sha512-JJCXydOFWMDpCP4q13iEplA503MQO3xLoZiKum+955ZCtHINWnx26CUxVxxFQu/uLb4LW3ge15ZpzIkXKkJ8oQ==",
3772+ "requires": {}
3773+ },
3774+ "@jridgewell/gen-mapping": {
3775+ "version": "0.1.1",
3776+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
3777+ "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
3778+ "requires": {
3779+ "@jridgewell/set-array": "^1.0.0",
3780+ "@jridgewell/sourcemap-codec": "^1.4.10"
3781+ }
3782+ },
3783+ "@jridgewell/resolve-uri": {
3784+ "version": "3.0.8",
3785+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.8.tgz",
3786+ "integrity": "sha512-YK5G9LaddzGbcucK4c8h5tWFmMPBvRZ/uyWmN1/SbBdIvqGUdWGkJ5BAaccgs6XbzVLsqbPJrBSFwKv3kT9i7w=="
3787+ },
3788+ "@jridgewell/set-array": {
3789+ "version": "1.1.2",
3790+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
3791+ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw=="
3792+ },
3793+ "@jridgewell/sourcemap-codec": {
3794+ "version": "1.4.14",
3795+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
3796+ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
3797+ },
3798+ "@jridgewell/trace-mapping": {
3799+ "version": "0.3.14",
3800+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz",
3801+ "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==",
3802+ "requires": {
3803+ "@jridgewell/resolve-uri": "^3.0.3",
3804+ "@jridgewell/sourcemap-codec": "^1.4.10"
3805+ }
3806+ },
3807+ "@microsoft/fetch-event-source": {
3808+ "version": "2.0.1",
3809+ "resolved": "https://registry.npmjs.org/@microsoft/fetch-event-source/-/fetch-event-source-2.0.1.tgz",
3810+ "integrity": "sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA=="
3811+ },
3812+ "@nodelib/fs.scandir": {
3813+ "version": "2.1.5",
3814+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
3815+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
3816+ "dev": true,
3817+ "requires": {
3818+ "@nodelib/fs.stat": "2.0.5",
3819+ "run-parallel": "^1.1.9"
3820+ }
3821+ },
3822+ "@nodelib/fs.stat": {
3823+ "version": "2.0.5",
3824+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
3825+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
3826+ "dev": true
3827+ },
3828+ "@nodelib/fs.walk": {
3829+ "version": "1.2.8",
3830+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
3831+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
3832+ "dev": true,
3833+ "requires": {
3834+ "@nodelib/fs.scandir": "2.1.5",
3835+ "fastq": "^1.6.0"
3836+ }
3837+ },
3838+ "@radix-ui/number": {
3839+ "version": "0.1.0",
3840+ "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-0.1.0.tgz",
3841+ "integrity": "sha512-rpf6QiOWLHAkM4FEMYu9i+5Jr8cKT893+R4mPpcdsy4LD7omr9JfdOqj/h/xPA5+EcVrpMMlU6rrRYpUB5UI8g==",
3842+ "requires": {
3843+ "@babel/runtime": "^7.13.10"
3844+ }
3845+ },
3846+ "@radix-ui/popper": {
3847+ "version": "0.1.0",
3848+ "resolved": "https://registry.npmjs.org/@radix-ui/popper/-/popper-0.1.0.tgz",
3849+ "integrity": "sha512-uzYeElL3w7SeNMuQpXiFlBhTT+JyaNMCwDfjKkrzugEcYrf5n52PHqncNdQPUtR42hJh8V9FsqyEDbDxkeNjJQ==",
3850+ "requires": {
3851+ "@babel/runtime": "^7.13.10",
3852+ "csstype": "^3.0.4"
3853+ }
3854+ },
3855+ "@radix-ui/primitive": {
3856+ "version": "0.1.0",
3857+ "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-0.1.0.tgz",
3858+ "integrity": "sha512-tqxZKybwN5Fa3VzZry4G6mXAAb9aAqKmPtnVbZpL0vsBwvOHTBwsjHVPXylocYLwEtBY9SCe665bYnNB515uoA==",
3859+ "requires": {
3860+ "@babel/runtime": "^7.13.10"
3861+ }
3862+ },
3863+ "@radix-ui/react-arrow": {
3864+ "version": "0.1.4",
3865+ "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-0.1.4.tgz",
3866+ "integrity": "sha512-BB6XzAb7Ml7+wwpFdYVtZpK1BlMgqyafSQNGzhIpSZ4uXvXOHPlR5GP8M449JkeQzgQjv9Mp1AsJxFC0KuOtuA==",
3867+ "requires": {
3868+ "@babel/runtime": "^7.13.10",
3869+ "@radix-ui/react-primitive": "0.1.4"
3870+ }
3871+ },
3872+ "@radix-ui/react-collection": {
3873+ "version": "0.1.4",
3874+ "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-0.1.4.tgz",
3875+ "integrity": "sha512-3muGI15IdgaDFjOcO7xX8a35HQRBRF6LH9pS6UCeZeRmbslkVeHyJRQr2rzICBUoX7zgIA0kXyMDbpQnJGyJTA==",
3876+ "requires": {
3877+ "@babel/runtime": "^7.13.10",
3878+ "@radix-ui/react-compose-refs": "0.1.0",
3879+ "@radix-ui/react-context": "0.1.1",
3880+ "@radix-ui/react-primitive": "0.1.4",
3881+ "@radix-ui/react-slot": "0.1.2"
3882+ }
3883+ },
3884+ "@radix-ui/react-compose-refs": {
3885+ "version": "0.1.0",
3886+ "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-0.1.0.tgz",
3887+ "integrity": "sha512-eyclbh+b77k+69Dk72q3694OHrn9B3QsoIRx7ywX341U9RK1ThgQjMFZoPtmZNQTksXHLNEiefR8hGVeFyInGg==",
3888+ "requires": {
3889+ "@babel/runtime": "^7.13.10"
3890+ }
3891+ },
3892+ "@radix-ui/react-context": {
3893+ "version": "0.1.1",
3894+ "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-0.1.1.tgz",
3895+ "integrity": "sha512-PkyVX1JsLBioeu0jB9WvRpDBBLtLZohVDT3BB5CTSJqActma8S8030P57mWZb4baZifMvN7KKWPAA40UmWKkQg==",
3896+ "requires": {
3897+ "@babel/runtime": "^7.13.10"
3898+ }
3899+ },
3900+ "@radix-ui/react-dismissable-layer": {
3901+ "version": "0.1.5",
3902+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-0.1.5.tgz",
3903+ "integrity": "sha512-J+fYWijkX4M4QKwf9dtu1oC0U6e6CEl8WhBp3Ad23yz2Hia0XCo6Pk/mp5CAFy4QBtQedTSkhW05AdtSOEoajQ==",
3904+ "requires": {
3905+ "@babel/runtime": "^7.13.10",
3906+ "@radix-ui/primitive": "0.1.0",
3907+ "@radix-ui/react-compose-refs": "0.1.0",
3908+ "@radix-ui/react-primitive": "0.1.4",
3909+ "@radix-ui/react-use-body-pointer-events": "0.1.1",
3910+ "@radix-ui/react-use-callback-ref": "0.1.0",
3911+ "@radix-ui/react-use-escape-keydown": "0.1.0"
3912+ }
3913+ },
3914+ "@radix-ui/react-dropdown-menu": {
3915+ "version": "0.1.6",
3916+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-0.1.6.tgz",
3917+ "integrity": "sha512-RZhtzjWwJ4ZBN7D8ek4Zn+ilHzYuYta9yIxFnbC0pfqMnSi67IQNONo1tuuNqtFh9SRHacPKc65zo+kBBlxtdg==",
3918+ "requires": {
3919+ "@babel/runtime": "^7.13.10",
3920+ "@radix-ui/primitive": "0.1.0",
3921+ "@radix-ui/react-compose-refs": "0.1.0",
3922+ "@radix-ui/react-context": "0.1.1",
3923+ "@radix-ui/react-id": "0.1.5",
3924+ "@radix-ui/react-menu": "0.1.6",
3925+ "@radix-ui/react-primitive": "0.1.4",
3926+ "@radix-ui/react-use-controllable-state": "0.1.0"
3927+ }
3928+ },
3929+ "@radix-ui/react-focus-guards": {
3930+ "version": "0.1.0",
3931+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-0.1.0.tgz",
3932+ "integrity": "sha512-kRx/swAjEfBpQ3ns7J3H4uxpXuWCqN7MpALiSDOXiyo2vkWv0L9sxvbpZeTulINuE3CGMzicVMuNc/VWXjFKOg==",
3933+ "requires": {
3934+ "@babel/runtime": "^7.13.10"
3935+ }
3936+ },
3937+ "@radix-ui/react-focus-scope": {
3938+ "version": "0.1.4",
3939+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-0.1.4.tgz",
3940+ "integrity": "sha512-fbA4ES3H4Wkxp+OeLhvN6SwL7mXNn/aBtUf7DRYxY9+Akrf7dRxl2ck4lgcpPsSg3zSDsEwLcY+h5cmj5yvlug==",
3941+ "requires": {
3942+ "@babel/runtime": "^7.13.10",
3943+ "@radix-ui/react-compose-refs": "0.1.0",
3944+ "@radix-ui/react-primitive": "0.1.4",
3945+ "@radix-ui/react-use-callback-ref": "0.1.0"
3946+ }
3947+ },
3948+ "@radix-ui/react-id": {
3949+ "version": "0.1.5",
3950+ "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-0.1.5.tgz",
3951+ "integrity": "sha512-IPc4H/63bes0IZ1GJJozSEkSWcDyhNGtKFWUpJ+XtaLyQ1X3x7Mf6fWwWhDcpqlYEP+5WtAvfqcyEsyjP+ZhBQ==",
3952+ "requires": {
3953+ "@babel/runtime": "^7.13.10",
3954+ "@radix-ui/react-use-layout-effect": "0.1.0"
3955+ }
3956+ },
3957+ "@radix-ui/react-label": {
3958+ "version": "0.1.5",
3959+ "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-0.1.5.tgz",
3960+ "integrity": "sha512-Au9+n4/DhvjR0IHhvZ1LPdx/OW+3CGDie30ZyCkbSHIuLp4/CV4oPPGBwJ1vY99Jog3zyQhsGww9MXj8O9Aj/A==",
3961+ "requires": {
3962+ "@babel/runtime": "^7.13.10",
3963+ "@radix-ui/react-compose-refs": "0.1.0",
3964+ "@radix-ui/react-context": "0.1.1",
3965+ "@radix-ui/react-id": "0.1.5",
3966+ "@radix-ui/react-primitive": "0.1.4"
3967+ }
3968+ },
3969+ "@radix-ui/react-menu": {
3970+ "version": "0.1.6",
3971+ "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-0.1.6.tgz",
3972+ "integrity": "sha512-ho3+bhpr3oAFkOBJ8VkUb1BcGoiZBB3OmcWPqa6i5RTUKrzNX/d6rauochu2xDlWjiRtpVuiAcsTVOeIC4FbYQ==",
3973+ "requires": {
3974+ "@babel/runtime": "^7.13.10",
3975+ "@radix-ui/primitive": "0.1.0",
3976+ "@radix-ui/react-collection": "0.1.4",
3977+ "@radix-ui/react-compose-refs": "0.1.0",
3978+ "@radix-ui/react-context": "0.1.1",
3979+ "@radix-ui/react-dismissable-layer": "0.1.5",
3980+ "@radix-ui/react-focus-guards": "0.1.0",
3981+ "@radix-ui/react-focus-scope": "0.1.4",
3982+ "@radix-ui/react-id": "0.1.5",
3983+ "@radix-ui/react-popper": "0.1.4",
3984+ "@radix-ui/react-portal": "0.1.4",
3985+ "@radix-ui/react-presence": "0.1.2",
3986+ "@radix-ui/react-primitive": "0.1.4",
3987+ "@radix-ui/react-roving-focus": "0.1.5",
3988+ "@radix-ui/react-use-callback-ref": "0.1.0",
3989+ "@radix-ui/react-use-direction": "0.1.0",
3990+ "aria-hidden": "^1.1.1",
3991+ "react-remove-scroll": "^2.4.0"
3992+ }
3993+ },
3994+ "@radix-ui/react-popper": {
3995+ "version": "0.1.4",
3996+ "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-0.1.4.tgz",
3997+ "integrity": "sha512-18gDYof97t8UQa7zwklG1Dr8jIdj3u+rVOQLzPi9f5i1YQak/pVGkaqw8aY+iDUknKKuZniTk/7jbAJUYlKyOw==",
3998+ "requires": {
3999+ "@babel/runtime": "^7.13.10",
4000+ "@radix-ui/popper": "0.1.0",
4001+ "@radix-ui/react-arrow": "0.1.4",
4002+ "@radix-ui/react-compose-refs": "0.1.0",
4003+ "@radix-ui/react-context": "0.1.1",
4004+ "@radix-ui/react-primitive": "0.1.4",
4005+ "@radix-ui/react-use-rect": "0.1.1",
4006+ "@radix-ui/react-use-size": "0.1.1",
4007+ "@radix-ui/rect": "0.1.1"
4008+ }
4009+ },
4010+ "@radix-ui/react-portal": {
4011+ "version": "0.1.4",
4012+ "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-0.1.4.tgz",
4013+ "integrity": "sha512-MO0wRy2eYRTZ/CyOri9NANCAtAtq89DEtg90gicaTlkCfdqCLEBsLb+/q66BZQTr3xX/Vq01nnVfc/TkCqoqvw==",
4014+ "requires": {
4015+ "@babel/runtime": "^7.13.10",
4016+ "@radix-ui/react-primitive": "0.1.4",
4017+ "@radix-ui/react-use-layout-effect": "0.1.0"
4018+ }
4019+ },
4020+ "@radix-ui/react-presence": {
4021+ "version": "0.1.2",
4022+ "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-0.1.2.tgz",
4023+ "integrity": "sha512-3BRlFZraooIUfRlyN+b/Xs5hq1lanOOo/+3h6Pwu2GMFjkGKKa4Rd51fcqGqnVlbr3jYg+WLuGyAV4KlgqwrQw==",
4024+ "requires": {
4025+ "@babel/runtime": "^7.13.10",
4026+ "@radix-ui/react-compose-refs": "0.1.0",
4027+ "@radix-ui/react-use-layout-effect": "0.1.0"
4028+ }
4029+ },
4030+ "@radix-ui/react-primitive": {
4031+ "version": "0.1.4",
4032+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-0.1.4.tgz",
4033+ "integrity": "sha512-6gSl2IidySupIMJFjYnDIkIWRyQdbu/AHK7rbICPani+LW4b0XdxBXc46og/iZvuwW8pjCS8I2SadIerv84xYA==",
4034+ "requires": {
4035+ "@babel/runtime": "^7.13.10",
4036+ "@radix-ui/react-slot": "0.1.2"
4037+ }
4038+ },
4039+ "@radix-ui/react-roving-focus": {
4040+ "version": "0.1.5",
4041+ "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-0.1.5.tgz",
4042+ "integrity": "sha512-ClwKPS5JZE+PaHCoW7eu1onvE61pDv4kO8W4t5Ra3qMFQiTJLZMdpBQUhksN//DaVygoLirz4Samdr5Y1x1FSA==",
4043+ "requires": {
4044+ "@babel/runtime": "^7.13.10",
4045+ "@radix-ui/primitive": "0.1.0",
4046+ "@radix-ui/react-collection": "0.1.4",
4047+ "@radix-ui/react-compose-refs": "0.1.0",
4048+ "@radix-ui/react-context": "0.1.1",
4049+ "@radix-ui/react-id": "0.1.5",
4050+ "@radix-ui/react-primitive": "0.1.4",
4051+ "@radix-ui/react-use-callback-ref": "0.1.0",
4052+ "@radix-ui/react-use-controllable-state": "0.1.0"
4053+ }
4054+ },
4055+ "@radix-ui/react-select": {
4056+ "version": "0.1.1",
4057+ "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-0.1.1.tgz",
4058+ "integrity": "sha512-xY3jLz2c6ZBHflldGsA79bE/swUfRMpiRPQf+JDihOufsd3z5uW22PFe0MS5bGZiIpK6aAZAvwqEd2Bu7hqp8w==",
4059+ "requires": {
4060+ "@babel/runtime": "^7.13.10",
4061+ "@radix-ui/number": "0.1.0",
4062+ "@radix-ui/primitive": "0.1.0",
4063+ "@radix-ui/react-collection": "0.1.4",
4064+ "@radix-ui/react-compose-refs": "0.1.0",
4065+ "@radix-ui/react-context": "0.1.1",
4066+ "@radix-ui/react-dismissable-layer": "0.1.5",
4067+ "@radix-ui/react-focus-scope": "0.1.4",
4068+ "@radix-ui/react-id": "0.1.5",
4069+ "@radix-ui/react-label": "0.1.5",
4070+ "@radix-ui/react-portal": "0.1.4",
4071+ "@radix-ui/react-primitive": "0.1.4",
4072+ "@radix-ui/react-use-callback-ref": "0.1.0",
4073+ "@radix-ui/react-use-controllable-state": "0.1.0",
4074+ "@radix-ui/react-use-layout-effect": "0.1.0",
4075+ "@radix-ui/react-use-previous": "0.1.1",
4076+ "@radix-ui/react-visually-hidden": "0.1.4",
4077+ "aria-hidden": "^1.1.1",
4078+ "react-remove-scroll": "^2.4.0"
4079+ }
4080+ },
4081+ "@radix-ui/react-slot": {
4082+ "version": "0.1.2",
4083+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-0.1.2.tgz",
4084+ "integrity": "sha512-ADkqfL+agEzEguU3yS26jfB50hRrwf7U4VTwAOZEmi/g+ITcBWe12yM46ueS/UCIMI9Py+gFUaAdxgxafFvY2Q==",
4085+ "requires": {
4086+ "@babel/runtime": "^7.13.10",
4087+ "@radix-ui/react-compose-refs": "0.1.0"
4088+ }
4089+ },
4090+ "@radix-ui/react-toggle": {
4091+ "version": "0.1.4",
4092+ "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-0.1.4.tgz",
4093+ "integrity": "sha512-gxUq6NgMc4ChV8VJnwdYqueeoblspwXHAexYo+jM9N2hFLbI1C587jLjdTHzIcUa9q68Xaw4jtiImWDOokEhRw==",
4094+ "requires": {
4095+ "@babel/runtime": "^7.13.10",
4096+ "@radix-ui/primitive": "0.1.0",
4097+ "@radix-ui/react-primitive": "0.1.4",
4098+ "@radix-ui/react-use-controllable-state": "0.1.0"
4099+ }
4100+ },
4101+ "@radix-ui/react-toggle-group": {
4102+ "version": "0.1.5",
4103+ "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-0.1.5.tgz",
4104+ "integrity": "sha512-Yp14wFiqe00azF+sG5CCJz4JGOP/f5Jj+CxLlZCmMpG5qhVTWeaeG4YH6pvX4KL41fS8x9FAaLb8wW9y01o67g==",
4105+ "requires": {
4106+ "@babel/runtime": "^7.13.10",
4107+ "@radix-ui/primitive": "0.1.0",
4108+ "@radix-ui/react-context": "0.1.1",
4109+ "@radix-ui/react-primitive": "0.1.4",
4110+ "@radix-ui/react-roving-focus": "0.1.5",
4111+ "@radix-ui/react-toggle": "0.1.4",
4112+ "@radix-ui/react-use-controllable-state": "0.1.0"
4113+ }
4114+ },
4115+ "@radix-ui/react-use-body-pointer-events": {
4116+ "version": "0.1.1",
4117+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-body-pointer-events/-/react-use-body-pointer-events-0.1.1.tgz",
4118+ "integrity": "sha512-R8leV2AWmJokTmERM8cMXFHWSiv/fzOLhG/JLmRBhLTAzOj37EQizssq4oW0Z29VcZy2tODMi9Pk/htxwb+xpA==",
4119+ "requires": {
4120+ "@babel/runtime": "^7.13.10",
4121+ "@radix-ui/react-use-layout-effect": "0.1.0"
4122+ }
4123+ },
4124+ "@radix-ui/react-use-callback-ref": {
4125+ "version": "0.1.0",
4126+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-0.1.0.tgz",
4127+ "integrity": "sha512-Va041McOFFl+aV+sejvl0BS2aeHx86ND9X/rVFmEFQKTXCp6xgUK0NGUAGcgBlIjnJSbMYPGEk1xKSSlVcN2Aw==",
4128+ "requires": {
4129+ "@babel/runtime": "^7.13.10"
4130+ }
4131+ },
4132+ "@radix-ui/react-use-controllable-state": {
4133+ "version": "0.1.0",
4134+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-0.1.0.tgz",
4135+ "integrity": "sha512-zv7CX/PgsRl46a52Tl45TwqwVJdmqnlQEQhaYMz/yBOD2sx2gCkCFSoF/z9mpnYWmS6DTLNTg5lIps3fV6EnXg==",
4136+ "requires": {
4137+ "@babel/runtime": "^7.13.10",
4138+ "@radix-ui/react-use-callback-ref": "0.1.0"
4139+ }
4140+ },
4141+ "@radix-ui/react-use-direction": {
4142+ "version": "0.1.0",
4143+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-direction/-/react-use-direction-0.1.0.tgz",
4144+ "integrity": "sha512-NajpY/An9TCPSfOVkgWIdXJV+VuWl67PxB6kOKYmtNAFHvObzIoh8o0n9sAuwSAyFCZVq211FEf9gvVDRhOyiA==",
4145+ "requires": {
4146+ "@babel/runtime": "^7.13.10"
4147+ }
4148+ },
4149+ "@radix-ui/react-use-escape-keydown": {
4150+ "version": "0.1.0",
4151+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-0.1.0.tgz",
4152+ "integrity": "sha512-tDLZbTGFmvXaazUXXv8kYbiCcbAE8yKgng9s95d8fCO+Eundv0Jngbn/hKPhDDs4jj9ChwRX5cDDnlaN+ugYYQ==",
4153+ "requires": {
4154+ "@babel/runtime": "^7.13.10",
4155+ "@radix-ui/react-use-callback-ref": "0.1.0"
4156+ }
4157+ },
4158+ "@radix-ui/react-use-layout-effect": {
4159+ "version": "0.1.0",
4160+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-0.1.0.tgz",
4161+ "integrity": "sha512-+wdeS51Y+E1q1Wmd+1xSSbesZkpVj4jsg0BojCbopWvgq5iBvixw5vgemscdh58ep98BwUbsFYnrywFhV9yrVg==",
4162+ "requires": {
4163+ "@babel/runtime": "^7.13.10"
4164+ }
4165+ },
4166+ "@radix-ui/react-use-previous": {
4167+ "version": "0.1.1",
4168+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-0.1.1.tgz",
4169+ "integrity": "sha512-O/ZgrDBr11dR8rhO59ED8s5zIXBRFi8MiS+CmFGfi7MJYdLbfqVOmQU90Ghf87aifEgWe6380LA69KBneaShAg==",
4170+ "requires": {
4171+ "@babel/runtime": "^7.13.10"
4172+ }
4173+ },
4174+ "@radix-ui/react-use-rect": {
4175+ "version": "0.1.1",
4176+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-0.1.1.tgz",
4177+ "integrity": "sha512-kHNNXAsP3/PeszEmM/nxBBS9Jbo93sO+xuMTcRfwzXsmxT5gDXQzAiKbZQ0EecCPtJIzqvr7dlaQi/aP1PKYqQ==",
4178+ "requires": {
4179+ "@babel/runtime": "^7.13.10",
4180+ "@radix-ui/rect": "0.1.1"
4181+ }
4182+ },
4183+ "@radix-ui/react-use-size": {
4184+ "version": "0.1.1",
4185+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-0.1.1.tgz",
4186+ "integrity": "sha512-pTgWM5qKBu6C7kfKxrKPoBI2zZYZmp2cSXzpUiGM3qEBQlMLtYhaY2JXdXUCxz+XmD1YEjc8oRwvyfsD4AG4WA==",
4187+ "requires": {
4188+ "@babel/runtime": "^7.13.10"
4189+ }
4190+ },
4191+ "@radix-ui/react-visually-hidden": {
4192+ "version": "0.1.4",
4193+ "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-0.1.4.tgz",
4194+ "integrity": "sha512-K/q6AEEzqeeEq/T0NPChvBqnwlp8Tl4NnQdrI/y8IOY7BRR+Ug0PEsVk6g48HJ7cA1//COugdxXXVVK/m0X1mA==",
4195+ "requires": {
4196+ "@babel/runtime": "^7.13.10",
4197+ "@radix-ui/react-primitive": "0.1.4"
4198+ }
4199+ },
4200+ "@radix-ui/rect": {
4201+ "version": "0.1.1",
4202+ "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-0.1.1.tgz",
4203+ "integrity": "sha512-g3hnE/UcOg7REdewduRPAK88EPuLZtaq7sA9ouu8S+YEtnyFRI16jgv6GZYe3VMoQLL1T171ebmEPtDjyxWLzw==",
4204+ "requires": {
4205+ "@babel/runtime": "^7.13.10"
4206+ }
4207+ },
4208+ "@rollup/pluginutils": {
4209+ "version": "4.2.1",
4210+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
4211+ "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==",
4212+ "dev": true,
4213+ "requires": {
4214+ "estree-walker": "^2.0.1",
4215+ "picomatch": "^2.2.2"
4216+ }
4217+ },
4218+ "@types/lodash": {
4219+ "version": "4.14.182",
4220+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz",
4221+ "integrity": "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==",
4222+ "dev": true
4223+ },
4224+ "@types/lodash.debounce": {
4225+ "version": "4.0.7",
4226+ "resolved": "https://registry.npmjs.org/@types/lodash.debounce/-/lodash.debounce-4.0.7.tgz",
4227+ "integrity": "sha512-X1T4wMZ+gT000M2/91SYj0d/7JfeNZ9PeeOldSNoE/lunLeQXKvkmIumI29IaKMotU/ln/McOIvgzZcQ/3TrSA==",
4228+ "dev": true,
4229+ "requires": {
4230+ "@types/lodash": "*"
4231+ }
4232+ },
4233+ "@types/parse-json": {
4234+ "version": "4.0.0",
4235+ "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
4236+ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA=="
4237+ },
4238+ "@types/prop-types": {
4239+ "version": "15.7.5",
4240+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
4241+ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
4242+ },
4243+ "@types/react": {
4244+ "version": "17.0.47",
4245+ "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.47.tgz",
4246+ "integrity": "sha512-mk0BL8zBinf2ozNr3qPnlu1oyVTYq+4V7WA76RgxUAtf0Em/Wbid38KN6n4abEkvO4xMTBWmnP1FtQzgkEiJoA==",
4247+ "requires": {
4248+ "@types/prop-types": "*",
4249+ "@types/scheduler": "*",
4250+ "csstype": "^3.0.2"
4251+ }
4252+ },
4253+ "@types/react-dom": {
4254+ "version": "17.0.17",
4255+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.17.tgz",
4256+ "integrity": "sha512-VjnqEmqGnasQKV0CWLevqMTXBYG9GbwuE6x3VetERLh0cq2LTptFE73MrQi2S7GkKXCf2GgwItB/melLnxfnsg==",
4257+ "dev": true,
4258+ "requires": {
4259+ "@types/react": "^17"
4260+ }
4261+ },
4262+ "@types/react-transition-group": {
4263+ "version": "4.4.5",
4264+ "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz",
4265+ "integrity": "sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==",
4266+ "requires": {
4267+ "@types/react": "*"
4268+ }
4269+ },
4270+ "@types/scheduler": {
4271+ "version": "0.16.2",
4272+ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
4273+ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
4274+ },
4275+ "@urbit/api": {
4276+ "version": "2.1.1",
4277+ "resolved": "https://registry.npmjs.org/@urbit/api/-/api-2.1.1.tgz",
4278+ "integrity": "sha512-QRlqhtJ73q+pgMdSwuOO62HlxA7/2c5ylCcOUT01LXkJ2LTVCl5u+QnejdDvUmqjOuN2PyZk7df30xJVg6rC2A==",
4279+ "requires": {
4280+ "@babel/runtime": "^7.16.0",
4281+ "big-integer": "^1.6.48",
4282+ "core-js": "^3.19.1",
4283+ "immer": "^9.0.1",
4284+ "urbit-ob": "^5.0.1"
4285+ }
4286+ },
4287+ "@urbit/http-api": {
4288+ "version": "2.1.3",
4289+ "resolved": "https://registry.npmjs.org/@urbit/http-api/-/http-api-2.1.3.tgz",
4290+ "integrity": "sha512-/wL7kQ/b2m24+cJiQ/3bFoU4jq3Qbl9h+JCb3H/1yovhFSUI7RPUbV20ONhCPTryXch6CC5QbgCALStJYHvKJg==",
4291+ "requires": {
4292+ "@babel/runtime": "^7.12.5",
4293+ "@microsoft/fetch-event-source": "^2.0.0",
4294+ "browser-or-node": "^1.3.0",
4295+ "core-js": "^3.19.1"
4296+ }
4297+ },
4298+ "@urbit/vite-plugin-urbit": {
4299+ "version": "0.8.0",
4300+ "resolved": "https://registry.npmjs.org/@urbit/vite-plugin-urbit/-/vite-plugin-urbit-0.8.0.tgz",
4301+ "integrity": "sha512-cx540xZBuHfzud/kOuYU4xPpsFcgE7mF0heac5uXVutDqjySvVXimEuZgBN23ULC7l60R/bAJ2jOWygBwWen4A==",
4302+ "dev": true,
4303+ "requires": {
4304+ "vite-plugin-html-config": "^1.0.6",
4305+ "vite-plugin-rewrite-all": "^0.1.2"
4306+ }
4307+ },
4308+ "@vitejs/plugin-react-refresh": {
4309+ "version": "1.3.6",
4310+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-refresh/-/plugin-react-refresh-1.3.6.tgz",
4311+ "integrity": "sha512-iNR/UqhUOmFFxiezt0em9CgmiJBdWR+5jGxB2FihaoJfqGt76kiwaKoVOJVU5NYcDWMdN06LbyN2VIGIoYdsEA==",
4312+ "dev": true,
4313+ "requires": {
4314+ "@babel/core": "^7.14.8",
4315+ "@babel/plugin-transform-react-jsx-self": "^7.14.5",
4316+ "@babel/plugin-transform-react-jsx-source": "^7.14.5",
4317+ "@rollup/pluginutils": "^4.1.1",
4318+ "react-refresh": "^0.10.0"
4319+ }
4320+ },
4321+ "acorn": {
4322+ "version": "7.4.1",
4323+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
4324+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
4325+ "dev": true
4326+ },
4327+ "acorn-node": {
4328+ "version": "1.8.2",
4329+ "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
4330+ "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==",
4331+ "dev": true,
4332+ "requires": {
4333+ "acorn": "^7.0.0",
4334+ "acorn-walk": "^7.0.0",
4335+ "xtend": "^4.0.2"
4336+ }
4337+ },
4338+ "acorn-walk": {
4339+ "version": "7.2.0",
4340+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
4341+ "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
4342+ "dev": true
4343+ },
4344+ "ansi-styles": {
4345+ "version": "3.2.1",
4346+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
4347+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
4348+ "requires": {
4349+ "color-convert": "^1.9.0"
4350+ }
4351+ },
4352+ "anymatch": {
4353+ "version": "3.1.2",
4354+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
4355+ "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
4356+ "dev": true,
4357+ "requires": {
4358+ "normalize-path": "^3.0.0",
4359+ "picomatch": "^2.0.4"
4360+ }
4361+ },
4362+ "arg": {
4363+ "version": "5.0.2",
4364+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
4365+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
4366+ "dev": true
4367+ },
4368+ "aria-hidden": {
4369+ "version": "1.1.3",
4370+ "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.1.3.tgz",
4371+ "integrity": "sha512-RhVWFtKH5BiGMycI72q2RAFMLQi8JP9bLuQXgR5a8Znp7P5KOIADSJeyfI8PCVxLEp067B2HbP5JIiI/PXIZeA==",
4372+ "requires": {
4373+ "tslib": "^1.0.0"
4374+ }
4375+ },
4376+ "autoprefixer": {
4377+ "version": "10.4.7",
4378+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz",
4379+ "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==",
4380+ "dev": true,
4381+ "requires": {
4382+ "browserslist": "^4.20.3",
4383+ "caniuse-lite": "^1.0.30001335",
4384+ "fraction.js": "^4.2.0",
4385+ "normalize-range": "^0.1.2",
4386+ "picocolors": "^1.0.0",
4387+ "postcss-value-parser": "^4.2.0"
4388+ }
4389+ },
4390+ "babel-plugin-macros": {
4391+ "version": "2.8.0",
4392+ "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz",
4393+ "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==",
4394+ "requires": {
4395+ "@babel/runtime": "^7.7.2",
4396+ "cosmiconfig": "^6.0.0",
4397+ "resolve": "^1.12.0"
4398+ }
4399+ },
4400+ "balanced-match": {
4401+ "version": "1.0.2",
4402+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
4403+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
4404+ },
4405+ "big-integer": {
4406+ "version": "1.6.51",
4407+ "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
4408+ "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg=="
4409+ },
4410+ "binary-extensions": {
4411+ "version": "2.2.0",
4412+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
4413+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
4414+ "dev": true
4415+ },
4416+ "bn.js": {
4417+ "version": "4.12.0",
4418+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
4419+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
4420+ },
4421+ "brace-expansion": {
4422+ "version": "1.1.11",
4423+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
4424+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
4425+ "requires": {
4426+ "balanced-match": "^1.0.0",
4427+ "concat-map": "0.0.1"
4428+ }
4429+ },
4430+ "braces": {
4431+ "version": "3.0.2",
4432+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
4433+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
4434+ "dev": true,
4435+ "requires": {
4436+ "fill-range": "^7.0.1"
4437+ }
4438+ },
4439+ "broadcast-channel": {
4440+ "version": "3.7.0",
4441+ "resolved": "https://registry.npmjs.org/broadcast-channel/-/broadcast-channel-3.7.0.tgz",
4442+ "integrity": "sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==",
4443+ "requires": {
4444+ "@babel/runtime": "^7.7.2",
4445+ "detect-node": "^2.1.0",
4446+ "js-sha3": "0.8.0",
4447+ "microseconds": "0.2.0",
4448+ "nano-time": "1.0.0",
4449+ "oblivious-set": "1.0.0",
4450+ "rimraf": "3.0.2",
4451+ "unload": "2.2.0"
4452+ }
4453+ },
4454+ "browser-or-node": {
4455+ "version": "1.3.0",
4456+ "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-1.3.0.tgz",
4457+ "integrity": "sha512-0F2z/VSnLbmEeBcUrSuDH5l0HxTXdQQzLjkmBR4cYfvg1zJrKSlmIZFqyFR8oX0NrwPhy3c3HQ6i3OxMbew4Tg=="
4458+ },
4459+ "browserslist": {
4460+ "version": "4.21.1",
4461+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.1.tgz",
4462+ "integrity": "sha512-Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ==",
4463+ "requires": {
4464+ "caniuse-lite": "^1.0.30001359",
4465+ "electron-to-chromium": "^1.4.172",
4466+ "node-releases": "^2.0.5",
4467+ "update-browserslist-db": "^1.0.4"
4468+ }
4469+ },
4470+ "callsites": {
4471+ "version": "3.1.0",
4472+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
4473+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
4474+ },
4475+ "camelcase-css": {
4476+ "version": "2.0.1",
4477+ "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
4478+ "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
4479+ "dev": true
4480+ },
4481+ "caniuse-lite": {
4482+ "version": "1.0.30001361",
4483+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001361.tgz",
4484+ "integrity": "sha512-ybhCrjNtkFji1/Wto6SSJKkWk6kZgVQsDq5QI83SafsF6FXv2JB4df9eEdH6g8sdGgqTXrFLjAxqBGgYoU3azQ=="
4485+ },
4486+ "chalk": {
4487+ "version": "2.4.2",
4488+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
4489+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
4490+ "requires": {
4491+ "ansi-styles": "^3.2.1",
4492+ "escape-string-regexp": "^1.0.5",
4493+ "supports-color": "^5.3.0"
4494+ }
4495+ },
4496+ "chokidar": {
4497+ "version": "3.5.3",
4498+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
4499+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
4500+ "dev": true,
4501+ "requires": {
4502+ "anymatch": "~3.1.2",
4503+ "braces": "~3.0.2",
4504+ "fsevents": "~2.3.2",
4505+ "glob-parent": "~5.1.2",
4506+ "is-binary-path": "~2.1.0",
4507+ "is-glob": "~4.0.1",
4508+ "normalize-path": "~3.0.0",
4509+ "readdirp": "~3.6.0"
4510+ },
4511+ "dependencies": {
4512+ "glob-parent": {
4513+ "version": "5.1.2",
4514+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
4515+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
4516+ "dev": true,
4517+ "requires": {
4518+ "is-glob": "^4.0.1"
4519+ }
4520+ }
4521+ }
4522+ },
4523+ "classnames": {
4524+ "version": "2.3.1",
4525+ "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz",
4526+ "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA=="
4527+ },
4528+ "color-convert": {
4529+ "version": "1.9.3",
4530+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
4531+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
4532+ "requires": {
4533+ "color-name": "1.1.3"
4534+ }
4535+ },
4536+ "color-name": {
4537+ "version": "1.1.3",
4538+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
4539+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
4540+ },
4541+ "concat-map": {
4542+ "version": "0.0.1",
4543+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
4544+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
4545+ },
4546+ "connect-history-api-fallback": {
4547+ "version": "1.6.0",
4548+ "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz",
4549+ "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==",
4550+ "dev": true
4551+ },
4552+ "convert-source-map": {
4553+ "version": "1.8.0",
4554+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
4555+ "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
4556+ "requires": {
4557+ "safe-buffer": "~5.1.1"
4558+ }
4559+ },
4560+ "core-js": {
4561+ "version": "3.23.3",
4562+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.23.3.tgz",
4563+ "integrity": "sha512-oAKwkj9xcWNBAvGbT//WiCdOMpb9XQG92/Fe3ABFM/R16BsHgePG00mFOgKf7IsCtfj8tA1kHtf/VwErhriz5Q=="
4564+ },
4565+ "cosmiconfig": {
4566+ "version": "6.0.0",
4567+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
4568+ "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
4569+ "requires": {
4570+ "@types/parse-json": "^4.0.0",
4571+ "import-fresh": "^3.1.0",
4572+ "parse-json": "^5.0.0",
4573+ "path-type": "^4.0.0",
4574+ "yaml": "^1.7.2"
4575+ }
4576+ },
4577+ "cssesc": {
4578+ "version": "3.0.0",
4579+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
4580+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
4581+ "dev": true
4582+ },
4583+ "csstype": {
4584+ "version": "3.1.0",
4585+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz",
4586+ "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA=="
4587+ },
4588+ "debug": {
4589+ "version": "4.3.4",
4590+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
4591+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
4592+ "requires": {
4593+ "ms": "2.1.2"
4594+ }
4595+ },
4596+ "defined": {
4597+ "version": "1.0.0",
4598+ "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
4599+ "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==",
4600+ "dev": true
4601+ },
4602+ "detect-node": {
4603+ "version": "2.1.0",
4604+ "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
4605+ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g=="
4606+ },
4607+ "detect-node-es": {
4608+ "version": "1.1.0",
4609+ "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz",
4610+ "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="
4611+ },
4612+ "detective": {
4613+ "version": "5.2.1",
4614+ "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz",
4615+ "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==",
4616+ "dev": true,
4617+ "requires": {
4618+ "acorn-node": "^1.8.2",
4619+ "defined": "^1.0.0",
4620+ "minimist": "^1.2.6"
4621+ }
4622+ },
4623+ "didyoumean": {
4624+ "version": "1.2.2",
4625+ "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
4626+ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
4627+ "dev": true
4628+ },
4629+ "dlv": {
4630+ "version": "1.1.3",
4631+ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
4632+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
4633+ "dev": true
4634+ },
4635+ "dom-helpers": {
4636+ "version": "5.2.1",
4637+ "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
4638+ "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
4639+ "requires": {
4640+ "@babel/runtime": "^7.8.7",
4641+ "csstype": "^3.0.2"
4642+ }
4643+ },
4644+ "electron-to-chromium": {
4645+ "version": "1.4.176",
4646+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.176.tgz",
4647+ "integrity": "sha512-92JdgyRlcNDwuy75MjuFSb3clt6DGJ2IXSpg0MCjKd3JV9eSmuUAIyWiGAp/EtT0z2D4rqbYqThQLV90maH3Zw=="
4648+ },
4649+ "error-ex": {
4650+ "version": "1.3.2",
4651+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
4652+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
4653+ "requires": {
4654+ "is-arrayish": "^0.2.1"
4655+ }
4656+ },
4657+ "esbuild": {
4658+ "version": "0.14.48",
4659+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.48.tgz",
4660+ "integrity": "sha512-w6N1Yn5MtqK2U1/WZTX9ZqUVb8IOLZkZ5AdHkT6x3cHDMVsYWC7WPdiLmx19w3i4Rwzy5LqsEMtVihG3e4rFzA==",
4661+ "dev": true,
4662+ "requires": {
4663+ "esbuild-android-64": "0.14.48",
4664+ "esbuild-android-arm64": "0.14.48",
4665+ "esbuild-darwin-64": "0.14.48",
4666+ "esbuild-darwin-arm64": "0.14.48",
4667+ "esbuild-freebsd-64": "0.14.48",
4668+ "esbuild-freebsd-arm64": "0.14.48",
4669+ "esbuild-linux-32": "0.14.48",
4670+ "esbuild-linux-64": "0.14.48",
4671+ "esbuild-linux-arm": "0.14.48",
4672+ "esbuild-linux-arm64": "0.14.48",
4673+ "esbuild-linux-mips64le": "0.14.48",
4674+ "esbuild-linux-ppc64le": "0.14.48",
4675+ "esbuild-linux-riscv64": "0.14.48",
4676+ "esbuild-linux-s390x": "0.14.48",
4677+ "esbuild-netbsd-64": "0.14.48",
4678+ "esbuild-openbsd-64": "0.14.48",
4679+ "esbuild-sunos-64": "0.14.48",
4680+ "esbuild-windows-32": "0.14.48",
4681+ "esbuild-windows-64": "0.14.48",
4682+ "esbuild-windows-arm64": "0.14.48"
4683+ }
4684+ },
4685+ "esbuild-android-64": {
4686+ "version": "0.14.48",
4687+ "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.48.tgz",
4688+ "integrity": "sha512-3aMjboap/kqwCUpGWIjsk20TtxVoKck8/4Tu19rubh7t5Ra0Yrpg30Mt1QXXlipOazrEceGeWurXKeFJgkPOUg==",
4689+ "dev": true,
4690+ "optional": true
4691+ },
4692+ "esbuild-android-arm64": {
4693+ "version": "0.14.48",
4694+ "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.48.tgz",
4695+ "integrity": "sha512-vptI3K0wGALiDq+EvRuZotZrJqkYkN5282iAfcffjI5lmGG9G1ta/CIVauhY42MBXwEgDJkweiDcDMRLzBZC4g==",
4696+ "dev": true,
4697+ "optional": true
4698+ },
4699+ "esbuild-darwin-64": {
4700+ "version": "0.14.48",
4701+ "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.48.tgz",
4702+ "integrity": "sha512-gGQZa4+hab2Va/Zww94YbshLuWteyKGD3+EsVon8EWTWhnHFRm5N9NbALNbwi/7hQ/hM1Zm4FuHg+k6BLsl5UA==",
4703+ "dev": true,
4704+ "optional": true
4705+ },
4706+ "esbuild-darwin-arm64": {
4707+ "version": "0.14.48",
4708+ "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.48.tgz",
4709+ "integrity": "sha512-bFjnNEXjhZT+IZ8RvRGNJthLWNHV5JkCtuOFOnjvo5pC0sk2/QVk0Qc06g2PV3J0TcU6kaPC3RN9yy9w2PSLEA==",
4710+ "dev": true,
4711+ "optional": true
4712+ },
4713+ "esbuild-freebsd-64": {
4714+ "version": "0.14.48",
4715+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.48.tgz",
4716+ "integrity": "sha512-1NOlwRxmOsnPcWOGTB10JKAkYSb2nue0oM1AfHWunW/mv3wERfJmnYlGzL3UAOIUXZqW8GeA2mv+QGwq7DToqA==",
4717+ "dev": true,
4718+ "optional": true
4719+ },
4720+ "esbuild-freebsd-arm64": {
4721+ "version": "0.14.48",
4722+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.48.tgz",
4723+ "integrity": "sha512-gXqKdO8wabVcYtluAbikDH2jhXp+Klq5oCD5qbVyUG6tFiGhrC9oczKq3vIrrtwcxDQqK6+HDYK8Zrd4bCA9Gw==",
4724+ "dev": true,
4725+ "optional": true
4726+ },
4727+ "esbuild-linux-32": {
4728+ "version": "0.14.48",
4729+ "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.48.tgz",
4730+ "integrity": "sha512-ghGyDfS289z/LReZQUuuKq9KlTiTspxL8SITBFQFAFRA/IkIvDpnZnCAKTCjGXAmUqroMQfKJXMxyjJA69c/nQ==",
4731+ "dev": true,
4732+ "optional": true
4733+ },
4734+ "esbuild-linux-64": {
4735+ "version": "0.14.48",
4736+ "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.48.tgz",
4737+ "integrity": "sha512-vni3p/gppLMVZLghI7oMqbOZdGmLbbKR23XFARKnszCIBpEMEDxOMNIKPmMItQrmH/iJrL1z8Jt2nynY0bE1ug==",
4738+ "dev": true,
4739+ "optional": true
4740+ },
4741+ "esbuild-linux-arm": {
4742+ "version": "0.14.48",
4743+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.48.tgz",
4744+ "integrity": "sha512-+VfSV7Akh1XUiDNXgqgY1cUP1i2vjI+BmlyXRfVz5AfV3jbpde8JTs5Q9sYgaoq5cWfuKfoZB/QkGOI+QcL1Tw==",
4745+ "dev": true,
4746+ "optional": true
4747+ },
4748+ "esbuild-linux-arm64": {
4749+ "version": "0.14.48",
4750+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.48.tgz",
4751+ "integrity": "sha512-3CFsOlpoxlKPRevEHq8aAntgYGYkE1N9yRYAcPyng/p4Wyx0tPR5SBYsxLKcgPB9mR8chHEhtWYz6EZ+H199Zw==",
4752+ "dev": true,
4753+ "optional": true
4754+ },
4755+ "esbuild-linux-mips64le": {
4756+ "version": "0.14.48",
4757+ "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.48.tgz",
4758+ "integrity": "sha512-cs0uOiRlPp6ymknDnjajCgvDMSsLw5mST2UXh+ZIrXTj2Ifyf2aAP3Iw4DiqgnyYLV2O/v/yWBJx+WfmKEpNLA==",
4759+ "dev": true,
4760+ "optional": true
4761+ },
4762+ "esbuild-linux-ppc64le": {
4763+ "version": "0.14.48",
4764+ "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.48.tgz",
4765+ "integrity": "sha512-+2F0vJMkuI0Wie/wcSPDCqXvSFEELH7Jubxb7mpWrA/4NpT+/byjxDz0gG6R1WJoeDefcrMfpBx4GFNN1JQorQ==",
4766+ "dev": true,
4767+ "optional": true
4768+ },
4769+ "esbuild-linux-riscv64": {
4770+ "version": "0.14.48",
4771+ "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.48.tgz",
4772+ "integrity": "sha512-BmaK/GfEE+5F2/QDrIXteFGKnVHGxlnK9MjdVKMTfvtmudjY3k2t8NtlY4qemKSizc+QwyombGWTBDc76rxePA==",
4773+ "dev": true,
4774+ "optional": true
4775+ },
4776+ "esbuild-linux-s390x": {
4777+ "version": "0.14.48",
4778+ "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.48.tgz",
4779+ "integrity": "sha512-tndw/0B9jiCL+KWKo0TSMaUm5UWBLsfCKVdbfMlb3d5LeV9WbijZ8Ordia8SAYv38VSJWOEt6eDCdOx8LqkC4g==",
4780+ "dev": true,
4781+ "optional": true
4782+ },
4783+ "esbuild-netbsd-64": {
4784+ "version": "0.14.48",
4785+ "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.48.tgz",
4786+ "integrity": "sha512-V9hgXfwf/T901Lr1wkOfoevtyNkrxmMcRHyticybBUHookznipMOHoF41Al68QBsqBxnITCEpjjd4yAos7z9Tw==",
4787+ "dev": true,
4788+ "optional": true
4789+ },
4790+ "esbuild-openbsd-64": {
4791+ "version": "0.14.48",
4792+ "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.48.tgz",
4793+ "integrity": "sha512-+IHf4JcbnnBl4T52egorXMatil/za0awqzg2Vy6FBgPcBpisDWT2sVz/tNdrK9kAqj+GZG/jZdrOkj7wsrNTKA==",
4794+ "dev": true,
4795+ "optional": true
4796+ },
4797+ "esbuild-sunos-64": {
4798+ "version": "0.14.48",
4799+ "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.48.tgz",
4800+ "integrity": "sha512-77m8bsr5wOpOWbGi9KSqDphcq6dFeJyun8TA+12JW/GAjyfTwVtOnN8DOt6DSPUfEV+ltVMNqtXUeTeMAxl5KA==",
4801+ "dev": true,
4802+ "optional": true
4803+ },
4804+ "esbuild-windows-32": {
4805+ "version": "0.14.48",
4806+ "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.48.tgz",
4807+ "integrity": "sha512-EPgRuTPP8vK9maxpTGDe5lSoIBHGKO/AuxDncg5O3NkrPeLNdvvK8oywB0zGaAZXxYWfNNSHskvvDgmfVTguhg==",
4808+ "dev": true,
4809+ "optional": true
4810+ },
4811+ "esbuild-windows-64": {
4812+ "version": "0.14.48",
4813+ "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.48.tgz",
4814+ "integrity": "sha512-YmpXjdT1q0b8ictSdGwH3M8VCoqPpK1/UArze3X199w6u8hUx3V8BhAi1WjbsfDYRBanVVtduAhh2sirImtAvA==",
4815+ "dev": true,
4816+ "optional": true
4817+ },
4818+ "esbuild-windows-arm64": {
4819+ "version": "0.14.48",
4820+ "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.48.tgz",
4821+ "integrity": "sha512-HHaOMCsCXp0rz5BT2crTka6MPWVno121NKApsGs/OIW5QC0ggC69YMGs1aJct9/9FSUF4A1xNE/cLvgB5svR4g==",
4822+ "dev": true,
4823+ "optional": true
4824+ },
4825+ "escalade": {
4826+ "version": "3.1.1",
4827+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
4828+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
4829+ },
4830+ "escape-string-regexp": {
4831+ "version": "1.0.5",
4832+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
4833+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="
4834+ },
4835+ "estree-walker": {
4836+ "version": "2.0.2",
4837+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
4838+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
4839+ "dev": true
4840+ },
4841+ "fast-glob": {
4842+ "version": "3.2.11",
4843+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
4844+ "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
4845+ "dev": true,
4846+ "requires": {
4847+ "@nodelib/fs.stat": "^2.0.2",
4848+ "@nodelib/fs.walk": "^1.2.3",
4849+ "glob-parent": "^5.1.2",
4850+ "merge2": "^1.3.0",
4851+ "micromatch": "^4.0.4"
4852+ },
4853+ "dependencies": {
4854+ "glob-parent": {
4855+ "version": "5.1.2",
4856+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
4857+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
4858+ "dev": true,
4859+ "requires": {
4860+ "is-glob": "^4.0.1"
4861+ }
4862+ }
4863+ }
4864+ },
4865+ "fastq": {
4866+ "version": "1.13.0",
4867+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
4868+ "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
4869+ "dev": true,
4870+ "requires": {
4871+ "reusify": "^1.0.4"
4872+ }
4873+ },
4874+ "fill-range": {
4875+ "version": "7.0.1",
4876+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
4877+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
4878+ "dev": true,
4879+ "requires": {
4880+ "to-regex-range": "^5.0.1"
4881+ }
4882+ },
4883+ "find-root": {
4884+ "version": "1.1.0",
4885+ "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
4886+ "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng=="
4887+ },
4888+ "fraction.js": {
4889+ "version": "4.2.0",
4890+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
4891+ "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
4892+ "dev": true
4893+ },
4894+ "fs.realpath": {
4895+ "version": "1.0.0",
4896+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
4897+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
4898+ },
4899+ "fsevents": {
4900+ "version": "2.3.2",
4901+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
4902+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
4903+ "dev": true,
4904+ "optional": true
4905+ },
4906+ "function-bind": {
4907+ "version": "1.1.1",
4908+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
4909+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
4910+ },
4911+ "gensync": {
4912+ "version": "1.0.0-beta.2",
4913+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
4914+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="
4915+ },
4916+ "get-nonce": {
4917+ "version": "1.0.1",
4918+ "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz",
4919+ "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q=="
4920+ },
4921+ "glob": {
4922+ "version": "7.2.3",
4923+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
4924+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
4925+ "requires": {
4926+ "fs.realpath": "^1.0.0",
4927+ "inflight": "^1.0.4",
4928+ "inherits": "2",
4929+ "minimatch": "^3.1.1",
4930+ "once": "^1.3.0",
4931+ "path-is-absolute": "^1.0.0"
4932+ }
4933+ },
4934+ "glob-parent": {
4935+ "version": "6.0.2",
4936+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
4937+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
4938+ "dev": true,
4939+ "requires": {
4940+ "is-glob": "^4.0.3"
4941+ }
4942+ },
4943+ "globals": {
4944+ "version": "11.12.0",
4945+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
4946+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
4947+ },
4948+ "has": {
4949+ "version": "1.0.3",
4950+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
4951+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
4952+ "requires": {
4953+ "function-bind": "^1.1.1"
4954+ }
4955+ },
4956+ "has-flag": {
4957+ "version": "3.0.0",
4958+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
4959+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="
4960+ },
4961+ "history": {
4962+ "version": "5.3.0",
4963+ "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz",
4964+ "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==",
4965+ "requires": {
4966+ "@babel/runtime": "^7.7.6"
4967+ }
4968+ },
4969+ "hoist-non-react-statics": {
4970+ "version": "3.3.2",
4971+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
4972+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
4973+ "requires": {
4974+ "react-is": "^16.7.0"
4975+ }
4976+ },
4977+ "immer": {
4978+ "version": "9.0.15",
4979+ "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.15.tgz",
4980+ "integrity": "sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ=="
4981+ },
4982+ "import-fresh": {
4983+ "version": "3.3.0",
4984+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
4985+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
4986+ "requires": {
4987+ "parent-module": "^1.0.0",
4988+ "resolve-from": "^4.0.0"
4989+ }
4990+ },
4991+ "inflight": {
4992+ "version": "1.0.6",
4993+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
4994+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
4995+ "requires": {
4996+ "once": "^1.3.0",
4997+ "wrappy": "1"
4998+ }
4999+ },
5000+ "inherits": {
5001+ "version": "2.0.4",
5002+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
5003+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
5004+ },
5005+ "invariant": {
5006+ "version": "2.2.4",
5007+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
5008+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
5009+ "requires": {
5010+ "loose-envify": "^1.0.0"
5011+ }
5012+ },
5013+ "is-arrayish": {
5014+ "version": "0.2.1",
5015+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
5016+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
5017+ },
5018+ "is-binary-path": {
5019+ "version": "2.1.0",
5020+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
5021+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
5022+ "dev": true,
5023+ "requires": {
5024+ "binary-extensions": "^2.0.0"
5025+ }
5026+ },
5027+ "is-core-module": {
5028+ "version": "2.9.0",
5029+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz",
5030+ "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",
5031+ "requires": {
5032+ "has": "^1.0.3"
5033+ }
5034+ },
5035+ "is-extglob": {
5036+ "version": "2.1.1",
5037+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
5038+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
5039+ "dev": true
5040+ },
5041+ "is-glob": {
5042+ "version": "4.0.3",
5043+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
5044+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
5045+ "dev": true,
5046+ "requires": {
5047+ "is-extglob": "^2.1.1"
5048+ }
5049+ },
5050+ "is-number": {
5051+ "version": "7.0.0",
5052+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
5053+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
5054+ "dev": true
5055+ },
5056+ "js-sha3": {
5057+ "version": "0.8.0",
5058+ "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz",
5059+ "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q=="
5060+ },
5061+ "js-tokens": {
5062+ "version": "4.0.0",
5063+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
5064+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
5065+ },
5066+ "jsesc": {
5067+ "version": "2.5.2",
5068+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
5069+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
5070+ },
5071+ "json-parse-even-better-errors": {
5072+ "version": "2.3.1",
5073+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
5074+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
5075+ },
5076+ "json5": {
5077+ "version": "2.2.1",
5078+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
5079+ "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA=="
5080+ },
5081+ "lilconfig": {
5082+ "version": "2.0.5",
5083+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz",
5084+ "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==",
5085+ "dev": true
5086+ },
5087+ "lines-and-columns": {
5088+ "version": "1.2.4",
5089+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
5090+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
5091+ },
5092+ "lodash.chunk": {
5093+ "version": "4.2.0",
5094+ "resolved": "https://registry.npmjs.org/lodash.chunk/-/lodash.chunk-4.2.0.tgz",
5095+ "integrity": "sha512-ZzydJKfUHJwHa+hF5X66zLFCBrWn5GeF28OHEr4WVWtNDXlQ/IjWKPBiikqKo2ne0+v6JgCgJ0GzJp8k8bHC7w=="
5096+ },
5097+ "lodash.debounce": {
5098+ "version": "4.0.8",
5099+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
5100+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
5101+ },
5102+ "lodash.isequal": {
5103+ "version": "4.5.0",
5104+ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
5105+ "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ=="
5106+ },
5107+ "loose-envify": {
5108+ "version": "1.4.0",
5109+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
5110+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
5111+ "requires": {
5112+ "js-tokens": "^3.0.0 || ^4.0.0"
5113+ }
5114+ },
5115+ "match-sorter": {
5116+ "version": "6.3.1",
5117+ "resolved": "https://registry.npmjs.org/match-sorter/-/match-sorter-6.3.1.tgz",
5118+ "integrity": "sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw==",
5119+ "requires": {
5120+ "@babel/runtime": "^7.12.5",
5121+ "remove-accents": "0.4.2"
5122+ }
5123+ },
5124+ "memoize-one": {
5125+ "version": "5.2.1",
5126+ "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz",
5127+ "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q=="
5128+ },
5129+ "merge2": {
5130+ "version": "1.4.1",
5131+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
5132+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
5133+ "dev": true
5134+ },
5135+ "micromatch": {
5136+ "version": "4.0.5",
5137+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
5138+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
5139+ "dev": true,
5140+ "requires": {
5141+ "braces": "^3.0.2",
5142+ "picomatch": "^2.3.1"
5143+ }
5144+ },
5145+ "microseconds": {
5146+ "version": "0.2.0",
5147+ "resolved": "https://registry.npmjs.org/microseconds/-/microseconds-0.2.0.tgz",
5148+ "integrity": "sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA=="
5149+ },
5150+ "minimatch": {
5151+ "version": "3.1.2",
5152+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
5153+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
5154+ "requires": {
5155+ "brace-expansion": "^1.1.7"
5156+ }
5157+ },
5158+ "minimist": {
5159+ "version": "1.2.6",
5160+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
5161+ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
5162+ "dev": true
5163+ },
5164+ "ms": {
5165+ "version": "2.1.2",
5166+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
5167+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
5168+ },
5169+ "nano-time": {
5170+ "version": "1.0.0",
5171+ "resolved": "https://registry.npmjs.org/nano-time/-/nano-time-1.0.0.tgz",
5172+ "integrity": "sha512-flnngywOoQ0lLQOTRNexn2gGSNuM9bKj9RZAWSzhQ+UJYaAFG9bac4DW9VHjUAzrOaIcajHybCTHe/bkvozQqA==",
5173+ "requires": {
5174+ "big-integer": "^1.6.16"
5175+ }
5176+ },
5177+ "nanoid": {
5178+ "version": "3.3.4",
5179+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
5180+ "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
5181+ "dev": true
5182+ },
5183+ "node-releases": {
5184+ "version": "2.0.5",
5185+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz",
5186+ "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q=="
5187+ },
5188+ "normalize-path": {
5189+ "version": "3.0.0",
5190+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
5191+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
5192+ "dev": true
5193+ },
5194+ "normalize-range": {
5195+ "version": "0.1.2",
5196+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
5197+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
5198+ "dev": true
5199+ },
5200+ "object-assign": {
5201+ "version": "4.1.1",
5202+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
5203+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="
5204+ },
5205+ "object-hash": {
5206+ "version": "3.0.0",
5207+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
5208+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
5209+ "dev": true
5210+ },
5211+ "oblivious-set": {
5212+ "version": "1.0.0",
5213+ "resolved": "https://registry.npmjs.org/oblivious-set/-/oblivious-set-1.0.0.tgz",
5214+ "integrity": "sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw=="
5215+ },
5216+ "once": {
5217+ "version": "1.4.0",
5218+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
5219+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
5220+ "requires": {
5221+ "wrappy": "1"
5222+ }
5223+ },
5224+ "parent-module": {
5225+ "version": "1.0.1",
5226+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
5227+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
5228+ "requires": {
5229+ "callsites": "^3.0.0"
5230+ }
5231+ },
5232+ "parse-json": {
5233+ "version": "5.2.0",
5234+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
5235+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
5236+ "requires": {
5237+ "@babel/code-frame": "^7.0.0",
5238+ "error-ex": "^1.3.1",
5239+ "json-parse-even-better-errors": "^2.3.0",
5240+ "lines-and-columns": "^1.1.6"
5241+ }
5242+ },
5243+ "path-is-absolute": {
5244+ "version": "1.0.1",
5245+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
5246+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="
5247+ },
5248+ "path-parse": {
5249+ "version": "1.0.7",
5250+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
5251+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
5252+ },
5253+ "path-type": {
5254+ "version": "4.0.0",
5255+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
5256+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="
5257+ },
5258+ "picocolors": {
5259+ "version": "1.0.0",
5260+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
5261+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
5262+ },
5263+ "picomatch": {
5264+ "version": "2.3.1",
5265+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
5266+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
5267+ "dev": true
5268+ },
5269+ "pify": {
5270+ "version": "2.3.0",
5271+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
5272+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
5273+ "dev": true
5274+ },
5275+ "postcss": {
5276+ "version": "8.4.14",
5277+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz",
5278+ "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==",
5279+ "dev": true,
5280+ "requires": {
5281+ "nanoid": "^3.3.4",
5282+ "picocolors": "^1.0.0",
5283+ "source-map-js": "^1.0.2"
5284+ }
5285+ },
5286+ "postcss-import": {
5287+ "version": "14.1.0",
5288+ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz",
5289+ "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==",
5290+ "dev": true,
5291+ "requires": {
5292+ "postcss-value-parser": "^4.0.0",
5293+ "read-cache": "^1.0.0",
5294+ "resolve": "^1.1.7"
5295+ }
5296+ },
5297+ "postcss-js": {
5298+ "version": "4.0.0",
5299+ "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz",
5300+ "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==",
5301+ "dev": true,
5302+ "requires": {
5303+ "camelcase-css": "^2.0.1"
5304+ }
5305+ },
5306+ "postcss-load-config": {
5307+ "version": "3.1.4",
5308+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz",
5309+ "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==",
5310+ "dev": true,
5311+ "requires": {
5312+ "lilconfig": "^2.0.5",
5313+ "yaml": "^1.10.2"
5314+ }
5315+ },
5316+ "postcss-nested": {
5317+ "version": "5.0.6",
5318+ "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz",
5319+ "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==",
5320+ "dev": true,
5321+ "requires": {
5322+ "postcss-selector-parser": "^6.0.6"
5323+ }
5324+ },
5325+ "postcss-selector-parser": {
5326+ "version": "6.0.10",
5327+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
5328+ "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
5329+ "dev": true,
5330+ "requires": {
5331+ "cssesc": "^3.0.0",
5332+ "util-deprecate": "^1.0.2"
5333+ }
5334+ },
5335+ "postcss-value-parser": {
5336+ "version": "4.2.0",
5337+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
5338+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
5339+ "dev": true
5340+ },
5341+ "prop-types": {
5342+ "version": "15.8.1",
5343+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
5344+ "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
5345+ "requires": {
5346+ "loose-envify": "^1.4.0",
5347+ "object-assign": "^4.1.1",
5348+ "react-is": "^16.13.1"
5349+ }
5350+ },
5351+ "queue-microtask": {
5352+ "version": "1.2.3",
5353+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
5354+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
5355+ "dev": true
5356+ },
5357+ "quick-lru": {
5358+ "version": "5.1.1",
5359+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
5360+ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
5361+ "dev": true
5362+ },
5363+ "react": {
5364+ "version": "17.0.2",
5365+ "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz",
5366+ "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==",
5367+ "requires": {
5368+ "loose-envify": "^1.1.0",
5369+ "object-assign": "^4.1.1"
5370+ }
5371+ },
5372+ "react-dom": {
5373+ "version": "17.0.2",
5374+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
5375+ "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==",
5376+ "requires": {
5377+ "loose-envify": "^1.1.0",
5378+ "object-assign": "^4.1.1",
5379+ "scheduler": "^0.20.2"
5380+ }
5381+ },
5382+ "react-hook-form": {
5383+ "version": "7.33.1",
5384+ "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.33.1.tgz",
5385+ "integrity": "sha512-ydTfTxEJdvgjCZBj5DDXRc58oTEfnFupEwwTAQ9FSKzykEJkX+3CiAkGtAMiZG7IPWHuzgT6AOBfogiKhUvKgg==",
5386+ "requires": {}
5387+ },
5388+ "react-is": {
5389+ "version": "16.13.1",
5390+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
5391+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
5392+ },
5393+ "react-query": {
5394+ "version": "3.39.1",
5395+ "resolved": "https://registry.npmjs.org/react-query/-/react-query-3.39.1.tgz",
5396+ "integrity": "sha512-qYKT1bavdDiQZbngWZyPotlBVzcBjDYEJg5RQLBa++5Ix5jjfbEYJmHSZRZD+USVHUSvl/ey9Hu+QfF1QAK80A==",
5397+ "requires": {
5398+ "@babel/runtime": "^7.5.5",
5399+ "broadcast-channel": "^3.4.1",
5400+ "match-sorter": "^6.0.2"
5401+ }
5402+ },
5403+ "react-refresh": {
5404+ "version": "0.10.0",
5405+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.10.0.tgz",
5406+ "integrity": "sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ==",
5407+ "dev": true
5408+ },
5409+ "react-remove-scroll": {
5410+ "version": "2.5.4",
5411+ "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.4.tgz",
5412+ "integrity": "sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA==",
5413+ "requires": {
5414+ "react-remove-scroll-bar": "^2.3.3",
5415+ "react-style-singleton": "^2.2.1",
5416+ "tslib": "^2.1.0",
5417+ "use-callback-ref": "^1.3.0",
5418+ "use-sidecar": "^1.1.2"
5419+ },
5420+ "dependencies": {
5421+ "tslib": {
5422+ "version": "2.4.0",
5423+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
5424+ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
5425+ }
5426+ }
5427+ },
5428+ "react-remove-scroll-bar": {
5429+ "version": "2.3.3",
5430+ "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.3.tgz",
5431+ "integrity": "sha512-i9GMNWwpz8XpUpQ6QlevUtFjHGqnPG4Hxs+wlIJntu/xcsZVEpJcIV71K3ZkqNy2q3GfgvkD7y6t/Sv8ofYSbw==",
5432+ "requires": {
5433+ "react-style-singleton": "^2.2.1",
5434+ "tslib": "^2.0.0"
5435+ },
5436+ "dependencies": {
5437+ "tslib": {
5438+ "version": "2.4.0",
5439+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
5440+ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
5441+ }
5442+ }
5443+ },
5444+ "react-router": {
5445+ "version": "6.3.0",
5446+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.3.0.tgz",
5447+ "integrity": "sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==",
5448+ "requires": {
5449+ "history": "^5.2.0"
5450+ }
5451+ },
5452+ "react-router-dom": {
5453+ "version": "6.3.0",
5454+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.3.0.tgz",
5455+ "integrity": "sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==",
5456+ "requires": {
5457+ "history": "^5.2.0",
5458+ "react-router": "6.3.0"
5459+ }
5460+ },
5461+ "react-select": {
5462+ "version": "5.4.0",
5463+ "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.4.0.tgz",
5464+ "integrity": "sha512-CjE9RFLUvChd5SdlfG4vqxZd55AZJRrLrHzkQyTYeHlpOztqcgnyftYAolJ0SGsBev6zAs6qFrjm6KU3eo2hzg==",
5465+ "requires": {
5466+ "@babel/runtime": "^7.12.0",
5467+ "@emotion/cache": "^11.4.0",
5468+ "@emotion/react": "^11.8.1",
5469+ "@types/react-transition-group": "^4.4.0",
5470+ "memoize-one": "^5.0.0",
5471+ "prop-types": "^15.6.0",
5472+ "react-transition-group": "^4.3.0"
5473+ }
5474+ },
5475+ "react-style-singleton": {
5476+ "version": "2.2.1",
5477+ "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz",
5478+ "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==",
5479+ "requires": {
5480+ "get-nonce": "^1.0.0",
5481+ "invariant": "^2.2.4",
5482+ "tslib": "^2.0.0"
5483+ },
5484+ "dependencies": {
5485+ "tslib": {
5486+ "version": "2.4.0",
5487+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
5488+ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
5489+ }
5490+ }
5491+ },
5492+ "react-transition-group": {
5493+ "version": "4.4.2",
5494+ "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz",
5495+ "integrity": "sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==",
5496+ "requires": {
5497+ "@babel/runtime": "^7.5.5",
5498+ "dom-helpers": "^5.0.1",
5499+ "loose-envify": "^1.4.0",
5500+ "prop-types": "^15.6.2"
5501+ }
5502+ },
5503+ "read-cache": {
5504+ "version": "1.0.0",
5505+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
5506+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
5507+ "dev": true,
5508+ "requires": {
5509+ "pify": "^2.3.0"
5510+ }
5511+ },
5512+ "readdirp": {
5513+ "version": "3.6.0",
5514+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
5515+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
5516+ "dev": true,
5517+ "requires": {
5518+ "picomatch": "^2.2.1"
5519+ }
5520+ },
5521+ "regenerator-runtime": {
5522+ "version": "0.13.9",
5523+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
5524+ "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
5525+ },
5526+ "remove-accents": {
5527+ "version": "0.4.2",
5528+ "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz",
5529+ "integrity": "sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA=="
5530+ },
5531+ "resolve": {
5532+ "version": "1.22.1",
5533+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
5534+ "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
5535+ "requires": {
5536+ "is-core-module": "^2.9.0",
5537+ "path-parse": "^1.0.7",
5538+ "supports-preserve-symlinks-flag": "^1.0.0"
5539+ }
5540+ },
5541+ "resolve-from": {
5542+ "version": "4.0.0",
5543+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
5544+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="
5545+ },
5546+ "reusify": {
5547+ "version": "1.0.4",
5548+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
5549+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
5550+ "dev": true
5551+ },
5552+ "rimraf": {
5553+ "version": "3.0.2",
5554+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
5555+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
5556+ "requires": {
5557+ "glob": "^7.1.3"
5558+ }
5559+ },
5560+ "rollup": {
5561+ "version": "2.75.7",
5562+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.75.7.tgz",
5563+ "integrity": "sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ==",
5564+ "dev": true,
5565+ "requires": {
5566+ "fsevents": "~2.3.2"
5567+ }
5568+ },
5569+ "run-parallel": {
5570+ "version": "1.2.0",
5571+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
5572+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
5573+ "dev": true,
5574+ "requires": {
5575+ "queue-microtask": "^1.2.2"
5576+ }
5577+ },
5578+ "safe-buffer": {
5579+ "version": "5.1.2",
5580+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
5581+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
5582+ },
5583+ "scheduler": {
5584+ "version": "0.20.2",
5585+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
5586+ "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
5587+ "requires": {
5588+ "loose-envify": "^1.1.0",
5589+ "object-assign": "^4.1.1"
5590+ }
5591+ },
5592+ "semver": {
5593+ "version": "6.3.0",
5594+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
5595+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
5596+ },
5597+ "source-map": {
5598+ "version": "0.5.7",
5599+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
5600+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ=="
5601+ },
5602+ "source-map-js": {
5603+ "version": "1.0.2",
5604+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
5605+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
5606+ "dev": true
5607+ },
5608+ "stylis": {
5609+ "version": "4.0.13",
5610+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz",
5611+ "integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag=="
5612+ },
5613+ "supports-color": {
5614+ "version": "5.5.0",
5615+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
5616+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
5617+ "requires": {
5618+ "has-flag": "^3.0.0"
5619+ }
5620+ },
5621+ "supports-preserve-symlinks-flag": {
5622+ "version": "1.0.0",
5623+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
5624+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="
5625+ },
5626+ "tailwindcss": {
5627+ "version": "3.1.4",
5628+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.1.4.tgz",
5629+ "integrity": "sha512-NrxbFV4tYsga/hpWbRyUfIaBrNMXDxx5BsHgBS4v5tlyjf+sDsgBg5m9OxjrXIqAS/uR9kicxLKP+bEHI7BSeQ==",
5630+ "dev": true,
5631+ "requires": {
5632+ "arg": "^5.0.2",
5633+ "chokidar": "^3.5.3",
5634+ "color-name": "^1.1.4",
5635+ "detective": "^5.2.1",
5636+ "didyoumean": "^1.2.2",
5637+ "dlv": "^1.1.3",
5638+ "fast-glob": "^3.2.11",
5639+ "glob-parent": "^6.0.2",
5640+ "is-glob": "^4.0.3",
5641+ "lilconfig": "^2.0.5",
5642+ "normalize-path": "^3.0.0",
5643+ "object-hash": "^3.0.0",
5644+ "picocolors": "^1.0.0",
5645+ "postcss": "^8.4.14",
5646+ "postcss-import": "^14.1.0",
5647+ "postcss-js": "^4.0.0",
5648+ "postcss-load-config": "^3.1.4",
5649+ "postcss-nested": "5.0.6",
5650+ "postcss-selector-parser": "^6.0.10",
5651+ "postcss-value-parser": "^4.2.0",
5652+ "quick-lru": "^5.1.1",
5653+ "resolve": "^1.22.0"
5654+ },
5655+ "dependencies": {
5656+ "color-name": {
5657+ "version": "1.1.4",
5658+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
5659+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
5660+ "dev": true
5661+ }
5662+ }
5663+ },
5664+ "to-fast-properties": {
5665+ "version": "2.0.0",
5666+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
5667+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog=="
5668+ },
5669+ "to-regex-range": {
5670+ "version": "5.0.1",
5671+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
5672+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
5673+ "dev": true,
5674+ "requires": {
5675+ "is-number": "^7.0.0"
5676+ }
5677+ },
5678+ "tslib": {
5679+ "version": "1.14.1",
5680+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
5681+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
5682+ },
5683+ "typescript": {
5684+ "version": "4.7.4",
5685+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
5686+ "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
5687+ "dev": true
5688+ },
5689+ "unload": {
5690+ "version": "2.2.0",
5691+ "resolved": "https://registry.npmjs.org/unload/-/unload-2.2.0.tgz",
5692+ "integrity": "sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==",
5693+ "requires": {
5694+ "@babel/runtime": "^7.6.2",
5695+ "detect-node": "^2.0.4"
5696+ }
5697+ },
5698+ "update-browserslist-db": {
5699+ "version": "1.0.4",
5700+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz",
5701+ "integrity": "sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==",
5702+ "requires": {
5703+ "escalade": "^3.1.1",
5704+ "picocolors": "^1.0.0"
5705+ }
5706+ },
5707+ "urbit-ob": {
5708+ "version": "5.0.1",
5709+ "resolved": "https://registry.npmjs.org/urbit-ob/-/urbit-ob-5.0.1.tgz",
5710+ "integrity": "sha512-qGNAwu87XNkW3g8ah4fUwmh2EKXtsdhEbyEiE5qX4Op17rhLH3HSkvu8g9z+MhqX51Uz9sf8ktvqJj/IRwETIQ==",
5711+ "requires": {
5712+ "bn.js": "^4.11.8",
5713+ "lodash.chunk": "^4.2.0",
5714+ "lodash.isequal": "^4.5.0"
5715+ }
5716+ },
5717+ "use-callback-ref": {
5718+ "version": "1.3.0",
5719+ "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz",
5720+ "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==",
5721+ "requires": {
5722+ "tslib": "^2.0.0"
5723+ },
5724+ "dependencies": {
5725+ "tslib": {
5726+ "version": "2.4.0",
5727+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
5728+ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
5729+ }
5730+ }
5731+ },
5732+ "use-sidecar": {
5733+ "version": "1.1.2",
5734+ "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz",
5735+ "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==",
5736+ "requires": {
5737+ "detect-node-es": "^1.1.0",
5738+ "tslib": "^2.0.0"
5739+ },
5740+ "dependencies": {
5741+ "tslib": {
5742+ "version": "2.4.0",
5743+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
5744+ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
5745+ }
5746+ }
5747+ },
5748+ "util-deprecate": {
5749+ "version": "1.0.2",
5750+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
5751+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
5752+ "dev": true
5753+ },
5754+ "vite": {
5755+ "version": "2.9.13",
5756+ "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.13.tgz",
5757+ "integrity": "sha512-AsOBAaT0AD7Mhe8DuK+/kE4aWYFMx/i0ZNi98hJclxb4e0OhQcZYUrvLjIaQ8e59Ui7txcvKMiJC1yftqpQoDw==",
5758+ "dev": true,
5759+ "requires": {
5760+ "esbuild": "^0.14.27",
5761+ "fsevents": "~2.3.2",
5762+ "postcss": "^8.4.13",
5763+ "resolve": "^1.22.0",
5764+ "rollup": "^2.59.0"
5765+ }
5766+ },
5767+ "vite-plugin-html-config": {
5768+ "version": "1.0.8",
5769+ "resolved": "https://registry.npmjs.org/vite-plugin-html-config/-/vite-plugin-html-config-1.0.8.tgz",
5770+ "integrity": "sha512-3tTtBQO+6zpC8uzAAfj3FWygj+V6H6F9fEt5KtB3j5UHsRYP0yLpTHsMvubXtqCXbKDp1oOakYYSjprqYcbrpA==",
5771+ "dev": true,
5772+ "requires": {}
5773+ },
5774+ "vite-plugin-rewrite-all": {
5775+ "version": "0.1.2",
5776+ "resolved": "https://registry.npmjs.org/vite-plugin-rewrite-all/-/vite-plugin-rewrite-all-0.1.2.tgz",
5777+ "integrity": "sha512-hBFuG043kbixgZ/ke9SzKhkO6P8a5ryxD0CmZTe+/Cz17RIKi7uSeNUJy79V4FgavZ7pWVRg0tqVwJ7lP/A2/Q==",
5778+ "dev": true,
5779+ "requires": {
5780+ "connect-history-api-fallback": "^1.6.0"
5781+ }
5782+ },
5783+ "wrappy": {
5784+ "version": "1.0.2",
5785+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
5786+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
5787+ },
5788+ "xtend": {
5789+ "version": "4.0.2",
5790+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
5791+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
5792+ "dev": true
5793+ },
5794+ "yaml": {
5795+ "version": "1.10.2",
5796+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
5797+ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="
5798+ }
5799+ }
5800+}
ui/package.json+17−5
@@ -10,20 +10,32 @@
1010 "tsc": "tsc --noEmit"
1111 },
1212 "dependencies": {
13+ "@heroicons/react": "^1.0.6",
14+ "@radix-ui/react-dropdown-menu": "^0.1.6",
15+ "@radix-ui/react-select": "^0.1.1",
16+ "@radix-ui/react-toggle-group": "^0.1.5",
1317 "@urbit/api": "^2.0.0",
1418 "@urbit/http-api": "^2.0.0",
19+ "big-integer": "^1.6.51",
20+ "classnames": "^2.3.1",
21+ "lodash.debounce": "^4.0.8",
1522 "react": "^17.0.2",
16− "react-dom": "^17.0.2"
23+ "react-dom": "^17.0.2",
24+ "react-hook-form": "^7.33.1",
25+ "react-query": "^3.39.1",
26+ "react-router-dom": "^6.3.0",
27+ "react-select": "^5.4.0"
1728 },
1829 "devDependencies": {
30+ "@types/lodash.debounce": "^4.0.7",
1931 "@types/react": "^17.0.0",
2032 "@types/react-dom": "^17.0.0",
2133 "@urbit/vite-plugin-urbit": "^0.8.0",
2234 "@vitejs/plugin-react-refresh": "^1.3.1",
23− "autoprefixer": "^10.3.7",
24− "postcss": "^8.3.9",
25− "tailwindcss": "^2.2.16",
35+ "autoprefixer": "^10.4.7",
36+ "postcss": "^8.4.14",
37+ "tailwindcss": "^3.1.4",
2638 "typescript": "^4.3.2",
27− "vite": "^2.6.7"
39+ "vite": "^2.9.13"
2840 }
2941}
ui/src/api.tsnew file+6
@@ -0,0 +1,6 @@
1+import Urbit from "@urbit/http-api";
2+
3+const api = new Urbit('', '', window.desk);
4+api.ship = window.ship;
5+
6+export default api;
ui/src/app.tsx+26−39
@@ -1,44 +1,31 @@
1−import React, { useEffect, useState } from 'react';
2−import Urbit from '@urbit/http-api';
3−import { Charges, ChargeUpdateInitial, scryCharges } from '@urbit/api';
4−import { AppTile } from './components/AppTile';
1+import React from 'react';
2+import { QueryClient, QueryClientProvider } from 'react-query';
3+import { BrowserRouter, Route, Routes } from 'react-router-dom';
4+import { Layout } from './components/Layout';
5+import { Post } from './pages/Post';
6+import { Search } from './pages/Search';
57
6−const api = new Urbit('', '', window.desk);
7−api.ship = window.ship;
8−
9−export function App() {
10− const [apps, setApps] = useState<Charges>();
11−
12− useEffect(() => {
13− async function init() {
14− const charges = (await api.scry<ChargeUpdateInitial>(scryCharges)).initial;
15− setApps(charges);
16− }
17−
18− init();
19− }, []);
8+const queryClient = new QueryClient();
209
10+function Main() {
2111 return (
22− <main className="flex items-center justify-center min-h-screen">
23− <div className="max-w-md space-y-6 py-20">
24− <h1 className="text-3xl font-bold">Welcome to seek</h1>
25− <p>Here&apos;s your urbit&apos;s installed apps:</p>
26− {apps && (
27− <ul className="space-y-4">
28− {Object.entries(apps).map(([desk, app]) => (
29− <li key={desk} className="flex items-center space-x-3 text-sm leading-tight">
30− <AppTile {...app} />
31− <div className="flex-1 text-black">
32− <p>
33− <strong>{app.title || desk}</strong>
34− </p>
35− {app.info && <p>{app.info}</p>}
36− </div>
37− </li>
38− ))}
39− </ul>
40− )}
41− </div>
42− </main>
12+ <Routes>
13+ <Route element={<Layout />}>
14+ <Route path="/" element={<Search />} />
15+ <Route path="/search/:lookup" element={<Search />} />
16+ <Route path="/search/:lookup/:limit/:page" element={<Search />} />
17+ <Route path="/post" element={<Post />} />
18+ </Route>
19+ </Routes>
4320 );
4421}
22+
23+export function App() {
24+ return (
25+ <QueryClientProvider client={queryClient}>
26+ <BrowserRouter basename='/apps/seek'>
27+ <Main />
28+ </BrowserRouter>
29+ </QueryClientProvider>
30+ )
31+}
ui/src/components/AppTile.tsxdeleted−29
@@ -1,29 +0,0 @@
1−import { Charge } from '@urbit/api';
2−import React, { useState } from 'react';
3−
4−function normalizeUrbitColor(color: string): string {
5− if (color.startsWith('#')) {
6− return color;
7− }
8− return `#${color.slice(2).replace('.', '').toUpperCase()}`;
9−}
10−
11−export const AppTile = ({ image, color }: Charge) => {
12− const [imageError, setImageError] = useState(false);
13−
14− return (
15− <div
16− className="flex-none relative w-12 h-12 mr-3 rounded-lg bg-gray-200 overflow-hidden"
17− style={{ backgroundColor: normalizeUrbitColor(color) }}
18− >
19− {image && !imageError && (
20− <img
21− className="absolute top-0 left-0 h-full w-full object-cover"
22− src={image}
23− alt=""
24− onError={() => setImageError(true)}
25− />
26− )}
27− </div>
28− );
29−};
ui/src/components/Filter.tsxnew file+55
@@ -0,0 +1,55 @@
1+import React from 'react';
2+import * as Select from '@radix-ui/react-select';
3+import { PostFilter, PostType } from '../types/seek';
4+
5+interface FilterItemProps {
6+ title: PostFilter;
7+}
8+
9+const FilterItem = ({ title }: FilterItemProps) => {
10+ return (
11+ <Select.Item value={title} className="text-mauve cursor-default select-none relative py-2 pl-3 pr-9 focus:outline-none focus:ring-1 focus:ring-rosy font-semibold">
12+ <Select.ItemText>%{title}</Select.ItemText>
13+ <Select.ItemIndicator className="text-rosy absolute inset-y-0 right-0 flex items-center pr-4">
14+ <svg className="h-5 w-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor">
15+ <path fillRule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clipRule="evenodd" />
16+ </svg>
17+ </Select.ItemIndicator>
18+ </Select.Item>
19+ )
20+}
21+
22+const filters: PostFilter[] = ['all', 'app', 'group', 'content', 'other'];
23+
24+interface FilterProps<T extends string> {
25+ selected: T;
26+ onSelect: (value: T) => void;
27+ showAll?: boolean;
28+ className?: string;
29+}
30+
31+export function Filter<T extends string>({ selected, onSelect, className, showAll = true }: FilterProps<T>) {
32+ const options = showAll ? filters : filters.filter(f => f === 'all');
33+ return (
34+ <div className={className}>
35+ <Select.Root value={selected} onValueChange={onSelect}>
36+ <span className="sr-only">Filter Type</span>
37+ <Select.Trigger className="bg-linen flex justify-between w-32 font-semibold border border-fawn/30 rounded-lg shadow-sm pl-3 pr-2 py-1.5 text-left cursor-default focus:outline-none focus:ring-1 focus:ring-rosy focus:border-rosy sm:text-sm">
38+ <Select.Value>%{selected}</Select.Value>
39+ <Select.Icon asChild>
40+ <svg className="h-5 w-5 text-rosy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor">
41+ <path fillRule="evenodd" d="M10 3a1 1 0 01.707.293l3 3a1 1 0 01-1.414 1.414L10 5.414 7.707 7.707a1 1 0 01-1.414-1.414l3-3A1 1 0 0110 3zm-3.707 9.293a1 1 0 011.414 0L10 14.586l2.293-2.293a1 1 0 011.414 1.414l-3 3a1 1 0 01-1.414 0l-3-3a1 1 0 010-1.414z" clipRule="evenodd" />
42+ </svg>
43+ </Select.Icon>
44+ </Select.Trigger>
45+ <Select.Content className="z-10 w-full bg-linen shadow-lg max-h-60 rounded-md py-1 text-base ring-1 ring-rosy ring-opacity-5 overflow-auto focus:outline-none sm:text-sm">
46+ <Select.Viewport>
47+ {options.map(f => (
48+ <FilterItem key={f} title={f} />
49+ ))}
50+ </Select.Viewport>
51+ </Select.Content>
52+ </Select.Root>
53+ </div>
54+ )
55+}
ui/src/components/Layout.tsxnew file+17
@@ -0,0 +1,17 @@
1+import cn from 'classnames';
2+import React from 'react';
3+import { Outlet, useParams } from 'react-router-dom';
4+import { Meta } from './Meta';
5+
6+export const Layout = () => {
7+ const params = useParams<{ lookup: string }>();
8+
9+ return (
10+ <main className={cn("flex flex-col items-center min-h-screen", !params.lookup && 'justify-center')}>
11+ <div className="max-w-2xl w-full p-4 sm:py-12 px-8 space-y-6">
12+ <Outlet />
13+ </div>
14+ <Meta className='self-start mx-10 my-6 sm:m-0 sm:fixed left-4 bottom-4 text-sm'/>
15+ </main>
16+ )
17+}
ui/src/components/Logo.tsxnew file+13
@@ -0,0 +1,13 @@
1+import React from 'react';
2+
3+interface LogoProps {
4+ className?: string;
5+}
6+
7+export const Logo = ({ className }: LogoProps) => {
8+ return (
9+ <svg className={className} fill="none" xmlns="http://www.w3.org/2000/svg" viewBox='0 0 179 58'>
10+ <path className='fill-current' d="M10.125 44.5c-1.66667 0-3.33333-.1875-5-.5625-1.66667-.375-3.0625-.875-4.1875-1.5l-.3125-7.125h3.6875l1.3125 4.5c1.5.9583 3.14583 1.4375 4.9375 1.4375 1.3333 0 2.375-.2917 3.125-.875.75-.5833 1.125-1.3542 1.125-2.3125 0-1-.375-1.8542-1.125-2.5625-.75-.7083-2.2708-1.5-4.5625-2.375-3.04167-1.1667-5.16667-2.3958-6.375-3.6875-1.20833-1.2917-1.8125-2.9167-1.8125-4.875 0-1.625.5-3.0625 1.5-4.3125s2.375-2.2292 4.125-2.9375c1.79167-.7083 3.8542-1.0625 6.1875-1.0625 1.2917 0 2.5833.125 3.875.375 1.3333.2083 2.4375.5208 3.3125.9375l.6875 7H17l-1.4375-4.375c-.4167-.25-.9167-.4375-1.5-.5625-.5833-.1667-1.1667-.25-1.75-.25-1.3333 0-2.41667.3125-3.25.9375-.79167.5833-1.1875 1.3542-1.1875 2.3125 0 1.0417.45833 1.9167 1.375 2.625.9583.7083 2.6458 1.5833 5.0625 2.625C17.0625 29.0417 19 30.25 20.125 31.5c1.1667 1.25 1.75 2.7917 1.75 4.625 0 2.5-1.1042 4.5208-3.3125 6.0625C16.3958 43.7292 13.5833 44.5 10.125 44.5ZM24.8125 57.75l-.1875-2.6875 3.875-1c0-.2083.0208-.625.0625-1.25s.0625-1.4375.0625-2.4375c.0417-1 .0833-2.1667.125-3.5s.0625-2.8125.0625-4.4375l.125-13.375c0-1.25-.0417-2.4167-.125-3.5s-.2292-2.1042-.4375-3.0625l-4-.875v-2.5625l10.1875-2.6875 1.5 1.0625-.4375 3.625.1875.0625c1.0417-1.5 2.2917-2.6875 3.75-3.5625S42.5833 16.25 44.25 16.25c2.0833 0 4 .5417 5.75 1.625 1.75 1.0417 3.1458 2.5417 4.1875 4.5 1.0833 1.9583 1.625 4.2917 1.625 7 0 2.75-.625 5.2708-1.875 7.5625-1.25 2.25-3 4.0625-5.25 5.4375s-4.875 2.0625-7.875 2.0625c-.7917 0-1.625-.0833-2.5-.25-.875-.125-1.6875-.3333-2.4375-.625V47.75c0 1.4583.0208 2.7917.0625 4 .0833 1.2083.1458 1.9792.1875 2.3125L41.25 55l-.1875 2.75h-16.25Zm16.125-17.3125c1.4583 0 2.7083-.3333 3.75-1 1.0833-.7083 1.9375-1.75 2.5625-3.125.625-1.4167.9375-3.1667.9375-5.25.0417-2.0833-.2708-3.8125-.9375-5.1875-.625-1.4167-1.4583-2.4792-2.5-3.1875-1.0417-.7083-2.2083-1.0625-3.5-1.0625-1.0417 0-2.0208.25-2.9375.75-.9167.4583-1.7292 1.1458-2.4375 2.0625v14.5c.6667.4583 1.4375.8333 2.3125 1.125.9167.25 1.8333.375 2.75.375ZM59.5625 44l-.1875-2.6875 3.875-1c.0833-.375.1458-1.1042.1875-2.1875.0417-1.0833.0833-2.3958.125-3.9375.0417-1.5833.0625-3.2292.0625-4.9375v-7.8125c0-1.4167-.0208-2.875-.0625-4.375 0-1.5-.0208-2.9375-.0625-4.3125 0-1.4167-.0208-2.6667-.0625-3.75-.0417-1.125-.0833-1.97917-.125-2.5625l-4.625-.625-.125-2.4375L69.375.5l1.5625 1c-.0417 1.29167-.1042 2.5625-.1875 3.8125-.0417 1.20833-.0833 2.54167-.125 4 0 1.4583-.0208 3.125-.0625 5-.0417 1.8333-.0833 4.0208-.125 6.5625l.1875.0625c1.3333-1.5833 2.75-2.75 4.25-3.5 1.5-.7917 3.1042-1.1875 4.8125-1.1875s3.25.4375 4.625 1.3125c1.4167.8333 2.5417 2.0833 3.375 3.75.8333 1.6667 1.25 3.7083 1.25 6.125v6.5c0 1.4167.0208 2.75.0625 4 .0833 1.2083.1667 2 .25 2.375l3.875 1L92.9375 44h-14.625l-.1875-2.6875 3.5625-1c.0833-.3333.1458-.8125.1875-1.4375.0417-.625.0625-1.3542.0625-2.1875C81.9792 35.8542 82 35 82 34.125v-5.75c0-1.625-.2708-2.9375-.8125-3.9375-.5-1.0417-1.1667-1.7917-2-2.25-.8333-.5-1.75-.75-2.75-.75-1.125 0-2.2083.2708-3.25.8125-1 .5-1.875 1.25-2.625 2.25v9.25c0 1.6667.0208 3.1042.0625 4.3125.0833 1.1667.1875 1.9167.3125 2.25l3.8125 1L74.5625 44h-15ZM95.1875 44 95 41.25l4.1875-.9375c.0417-.1667.0833-.5208.125-1.0625s.0833-1.25.125-2.125c.0417-.9167.0625-1.9792.0625-3.1875l.0625-4.75c0-1.2917-.0417-2.4792-.125-3.5625-.0833-1.125-.2292-2.1667-.4375-3.125l-4.1875-.875v-2.5625L105.5 16.375l1.438 1.0625c-.126 1.2917-.23 2.6042-.313 3.9375-.042 1.2917-.063 2.7917-.063 4.5v7.875c0 1.5417.021 2.9375.063 4.1875.083 1.25.187 2.0417.313 2.375l4.187.9375-.187 2.75H95.1875Zm7.9375-33.4375c-1.458 0-2.625-.4375-3.5-1.3125-.875-.91667-1.3125-2-1.3125-3.25 0-1.20833.4375-2.27083 1.3125-3.1875.875-.91667 2.042-1.375 3.5-1.375 1.458 0 2.604.45833 3.437 1.375.834.91667 1.25 1.97917 1.25 3.1875 0 1.25-.416 2.33333-1.25 3.25-.833.875-1.979 1.3125-3.437 1.3125ZM113.312 44l-.187-2.6875 3.875-1c.042-.1667.083-.5.125-1 .042-.5417.083-1.25.125-2.125.042-.9167.062-2 .062-3.25l.063-4.75c0-1.3333-.042-2.5417-.125-3.625-.083-1.0833-.229-2.1042-.438-3.0625l-4-.875v-2.5625L123 16.375l1.5 1.0625-.375 3.5.187.0625c1.334-1.5833 2.75-2.7708 4.25-3.5625 1.542-.7917 3.167-1.1875 4.876-1.1875 1.708 0 3.25.4375 4.624 1.3125 1.417.8333 2.542 2.0833 3.376 3.75.833 1.6667 1.25 3.7083 1.25 6.125v6.5c0 1.4167.02 2.75.062 4 .042 1.2083.125 2 .25 2.375l3.875 1L146.688 44H132l-.188-2.6875 3.626-1c.083-.3333.145-.8125.187-1.4375.042-.625.063-1.3542.063-2.1875.041-.8333.062-1.6875.062-2.5625v-5.75c0-1.625-.271-2.9375-.812-3.9375-.5-1.0417-1.167-1.7917-2-2.25-.834-.5-1.75-.75-2.75-.75-1.167 0-2.25.2708-3.25.8125-1 .5-1.876 1.25-2.626 2.25v9.25c0 1.5833.021 3 .063 4.25.083 1.2083.187 1.9792.313 2.3125l3.874 1L128.375 44h-15.063ZM178.562 44h-13.874l-.188-2.6875 2.938-1-5.626-7.375-1.937-2.4375-7.813-10.0625-2.937-1 .187-2.6875h13.626l.187 2.6875-2.625 1 4.5 5.875 1.938 2.5625 8.874 11.4375 2.938 1L178.562 44Zm-8.937-23.5625-2.625-1 .188-2.6875H177l.188 2.6875-2.938 1-7.312 8.4375-5.126 4.0625-5.312 7.375 2.938 1L159.25 44h-10.188l-.187-2.6875 2.937-1 8.063-9.8125L165 26.3125l4.625-5.875Z" />
11+ </svg>
12+ )
13+}
ui/src/components/Meta.tsxnew file+45
@@ -0,0 +1,45 @@
1+import { PlusIcon } from '@heroicons/react/solid';
2+import { ChargeUpdateInitial, scryCharges } from '@urbit/api';
3+import React, { useEffect, useState } from 'react';
4+import { Link } from 'react-router-dom';
5+import api from '../api';
6+import { Logo } from './Logo';
7+
8+interface MetaProps {
9+ className?: string;
10+}
11+
12+export const Meta = ({ className }: MetaProps) => {
13+ const [version, setVersion] = useState('');
14+
15+ useEffect(() => {
16+ if (!version) {
17+ api.scry<ChargeUpdateInitial>(scryCharges).then(charges => {
18+ const version = charges.initial.seek?.version;
19+
20+ if (version) {
21+ setVersion(version);
22+ }
23+ })
24+ }
25+ }, []);
26+
27+ return (
28+ <footer className={className}>
29+ <div className='flex mb-2 space-x-3 items-end'>
30+ <Logo className="w-24 text-rosy" />
31+ {version && <span className='mb-[3px]'>v{version}</span>}
32+ </div>
33+ <a
34+ className="inline-block font-mono default-ring underline rounded-md hover:text-rosy mb-4"
35+ href="web+urbitgraph://group/~nocsyx-lassul/sphinx"
36+ >
37+ ~nocsyx-lassul/sphinx
38+ </a>
39+ <Link to="/post" className="flex items-center rounded-lg text-base font-semibold text-rosy bg-rosy/30 border-2 border-transparent hover:border-rosy p-2 transition-colors">
40+ <PlusIcon className='h-4 w-4 mr-1' />
41+ Add a Listing
42+ </Link>
43+ </footer>
44+ )
45+}
ui/src/components/Paginator.tsxnew file+129
@@ -0,0 +1,129 @@
1+import { ArrowNarrowLeftIcon, ArrowNarrowRightIcon, DotsHorizontalIcon } from '@heroicons/react/solid';
2+import cn from 'classnames';
3+import React from 'react';
4+import { Link } from 'react-router-dom';
5+
6+interface PaginatorProps {
7+ linkBuilder: (page: number | null) => string | null;
8+ currentPage: number;
9+ pages: number;
10+ showNextPrev?: boolean;
11+ pagesShownLimit?: number;
12+ className?: string;
13+}
14+
15+interface Page {
16+ number: number;
17+ active?: boolean;
18+ ellipsis?: boolean;
19+}
20+
21+function calculateShownPages(currentPage: number, pages: number, pagesShownLimit: number): Page[] {
22+ const first = 1;
23+ const last = pages;
24+ const gap = Math.floor(pagesShownLimit / 2);
25+ const start = Math.max(1, Math.min(pages - pagesShownLimit, currentPage - gap));
26+ const end = Math.min(last, Math.max(first + pagesShownLimit, currentPage + gap));
27+ const firstEllipsis = (currentPage - first) > gap + 1 && start !== first;
28+ const lastEllipsis = (last - currentPage) > gap + 1 && end !== last;
29+
30+ const pageSet: Page[] = [];
31+
32+ if (start !== first) {
33+ pageSet.push({
34+ number: first,
35+ active: currentPage === first
36+ });
37+ }
38+
39+ if (firstEllipsis) {
40+ pageSet.push({
41+ number: 0,
42+ ellipsis: true,
43+ active: false
44+ });
45+ }
46+
47+ for (let number=start; number<=end; number++) {
48+ pageSet.push({ number, active: currentPage === number });
49+ }
50+
51+ if (lastEllipsis) {
52+ pageSet.push({
53+ number: 0,
54+ ellipsis: true,
55+ active: false
56+ });
57+ }
58+
59+ if (last !== end) {
60+ pageSet.push({
61+ number: last,
62+ active: currentPage === last
63+ })
64+ }
65+
66+ return pageSet;
67+}
68+
69+export const Paginator = ({ className, linkBuilder, currentPage, pages, showNextPrev = false, pagesShownLimit = 3 }: PaginatorProps) => {
70+ const normCurrent = currentPage + 1; //shift for 0 based indexing
71+ if (pages <= 1)
72+ return null;
73+
74+ const pageSet = calculateShownPages(normCurrent, pages, pagesShownLimit);
75+ const prevUrl = linkBuilder(currentPage - 1 >= 0 ? normCurrent - 1 : null);
76+ const nextUrl = linkBuilder(currentPage + 1 <= pages - 1 ? normCurrent + 1 : null);
77+
78+ return (
79+ <>
80+ {showNextPrev && (
81+ <div className="-mt-px w-0 flex-1 flex">
82+ {!prevUrl && (
83+ <span className='border-t-2 border-transparent pt-2 pl-1 inline-flex items-center text-sm font-medium text-zinc-300'>
84+ <ArrowNarrowLeftIcon className="mr-3 h-5 w-5" />
85+ Previous
86+ </span>
87+ )}
88+ {prevUrl && <Link to={prevUrl} className="border-t-2 border-transparent pt-2 pr-1 inline-flex items-center text-sm font-medium text-zinc-500 hover:text-zinc-700 hover:border-zinc-300">
89+ <ArrowNarrowLeftIcon className="mr-3 h-5 w-5 text-zinc-400" />
90+ Previous
91+ </Link>}
92+ </div>
93+ )}
94+ {pageSet.map((page, index) => {
95+ if (page.ellipsis)
96+ return <span key={index} className="border-transparent text-zinc-500 border-t-2 pt-2 px-4 inline-flex items-center text-sm font-medium"><DotsHorizontalIcon className='w-3 h-3' /></span>
97+
98+ return (
99+ <Link
100+ key={index}
101+ to={linkBuilder(page.number) || ''}
102+ className={cn(
103+ 'border-t-2 pt-2 px-4 inline-flex items-center text-sm font-medium',
104+ page.active && 'border-lavender/80 text-lavender',
105+ !page.active && 'border-transparent text-zinc-500 hover:text-zinc-700 hover:border-zinc-300'
106+ )}
107+ aria-current={page.active ? 'page' : undefined}
108+ >
109+ {page.number}
110+ </Link>
111+ )
112+ })}
113+ {showNextPrev && (
114+ <div className="-mt-px w-0 flex-1 flex justify-end">
115+ {!nextUrl && (
116+ <span className='border-t-2 border-transparent pt-2 pl-1 inline-flex items-center text-sm font-medium text-zinc-300'>
117+ Next
118+ <ArrowNarrowRightIcon className="ml-3 h-5 w-5" />
119+ </span>
120+ )}
121+ {nextUrl && <Link to={nextUrl} className="border-t-2 border-transparent pt-2 pl-1 inline-flex items-center text-sm font-medium text-zinc-500 hover:text-zinc-700 hover:border-zinc-300">
122+ Next
123+ <ArrowNarrowRightIcon className="ml-3 h-5 w-5 text-zinc-400" />
124+ </Link>}
125+ </div>
126+ )}
127+ </>
128+ );
129+};
ui/src/components/SearchInput.tsxnew file+29
@@ -0,0 +1,29 @@
1+import { SearchIcon } from '@heroicons/react/solid';
2+import cn from 'classnames';
3+import React, { ChangeEvent, useCallback } from 'react';
4+
5+interface SearchInputProps {
6+ lookup: string;
7+ className?: string;
8+ onChange: (value: string) => void;
9+}
10+
11+export const SearchInput = ({ lookup, className, onChange }: SearchInputProps) => {
12+ const onInput = useCallback((event: ChangeEvent<HTMLInputElement>) => {
13+ const { value } = event.target;
14+ onChange(value);
15+ }, [onChange]);
16+
17+ return (
18+ <div className={cn('relative flex items-center', className)}>
19+ <SearchIcon className='flip absolute left-2 h-5 w-5' />
20+ <input
21+ type='text'
22+ value={lookup}
23+ onChange={onInput}
24+ placeholder="Search"
25+ className={cn('w-full py-1 pl-9 pr-2 bg-fawn/30 focus:outline-none focus:ring-2 ring-lavender rounded-lg border border-fawn/30')}
26+ />
27+ </div>
28+ )
29+}
ui/src/components/SearchList.tsxnew file+52
@@ -0,0 +1,52 @@
1+import cn from 'classnames';
2+import React from 'react';
3+import { Listing } from '../types/seek';
4+
5+interface SearchListProps {
6+ listings: Listing[];
7+ className?: string;
8+}
9+
10+export const SearchList = ({ listings, className }: SearchListProps) => {
11+ if (!listings) {
12+ return null;
13+ }
14+
15+ if (listings.length === 0) {
16+ return (
17+ <div>
18+ <h2 className='text-xl font-semibold'>No Results</h2>
19+ </div>
20+ )
21+ }
22+
23+ return (
24+ <ul className={cn('px-2 space-y-6', className)}>
25+ {listings && listings.map(l => (
26+ <li key={l.hash}>
27+ <article className='group flex w-full'>
28+ {l.post.image ? (
29+ <img src={l.post.image} className="w-24 h-24 object-cover rounded-xl" />
30+ ) : <div className='w-24 h-24 bg-rosy/20 rounded-xl' />}
31+ <div className='flex-1 ml-4'>
32+ <a className='block w-full mb-2 hover:text-rosy transition-colors' href={l.post.link}>
33+ <h2 className='block font-semibold text-lg leading-none mb-1'>{l.post.title}</h2>
34+ <div className='font-mono text-xs space-x-3'>
35+ <strong>%{l.post.type}</strong>
36+ <span>{l.post.link.replace('web+urbitgraph://', '')}</span>
37+ </div>
38+ </a>
39+ <p className='mb-2 text-sm'>{l.post.description}</p>
40+ <div className='flex font-mono text-xs text-zinc-500 space-x-3 opacity-0 group-hover:opacity-100 transition-opacity'>
41+ <span><span className='font-semibold font-sans'>by:</span> {l.source}</span>
42+ <time dateTime={(new Date(l.time)).toISOString()}>
43+ {(new Date(l.time)).toLocaleString()}
44+ </time>
45+ </div>
46+ </div>
47+ </article>
48+ </li>
49+ ))}
50+ </ul>
51+ )
52+}
ui/src/components/TagField.tsxnew file+151
@@ -0,0 +1,151 @@
1+import React, { Component, KeyboardEventHandler, useCallback, useState } from 'react';
2+
3+import CreatableSelect from 'react-select/creatable';
4+import { ActionMeta, components, ControlProps, MultiValue, MultiValueGenericProps, MultiValueRemoveProps, OnChangeValue } from 'react-select';
5+import { XIcon } from '@heroicons/react/solid';
6+
7+export interface Option {
8+ readonly label: string;
9+ readonly value: string;
10+}
11+
12+const createOption = (label: string) => ({
13+ label,
14+ value: label,
15+});
16+
17+function Control({ children, ...props }: ControlProps<Option, true>) {
18+ return (
19+ <components.Control
20+ {...props}
21+ className="flex items-center w-full py-1 px-2 bg-fawn/30 focus:outline-none focus:ring-2 ring-lavender rounded-lg border border-fawn/30 cursor-text text-mauve"
22+ >
23+ {children}
24+ </components.Control>
25+ );
26+}
27+
28+function TagContainer({
29+ children,
30+ ...props
31+}: MultiValueGenericProps<Option, true>) {
32+ return (
33+ <components.MultiValueContainer {...props}>
34+ <div className="flex">{children}</div>
35+ </components.MultiValueContainer>
36+ );
37+}
38+
39+function TagLabel({ data }: { data: Option }) {
40+ const { value, label } = data;
41+ return (
42+ <div className="flex h-6 items-center rounded-l bg-lavender text-linen">
43+ <span className="p-1 font-semibold">{label || value}</span>
44+ </div>
45+ );
46+}
47+
48+function TagRemove(props: MultiValueRemoveProps<Option, true>) {
49+ return (
50+ <components.MultiValueRemove {...props}>
51+ <div className="flex h-full items-center rounded-r bg-lavender pr-1">
52+ <XIcon className="h-4 w-4 text-linen" />
53+ </div>
54+ </components.MultiValueRemove>
55+ );
56+}
57+
58+interface TagFieldProps {
59+ tags: MultiValue<Option>;
60+ onTags: (tags: MultiValue<Option>) => void;
61+ className?: string;
62+}
63+
64+export const TagField = ({ tags, onTags, className }: TagFieldProps) => {
65+ const [input, setInput] = useState('');
66+
67+ const handleChange = useCallback((
68+ value: OnChangeValue<Option, true>,
69+ actionMeta: ActionMeta<Option>
70+ ) => {
71+ console.group('Value Changed');
72+ console.log(value);
73+ console.log(`action: ${actionMeta.action}`);
74+ console.groupEnd();
75+ onTags(value);
76+ }, []);
77+
78+ const handleInputChange = useCallback((value) => {
79+ setInput(value);
80+ }, []);
81+
82+ const handleKeyDown: KeyboardEventHandler<HTMLDivElement> = useCallback((event) => {
83+ if (!input) return;
84+
85+ switch (event.key) {
86+ case 'Enter':
87+ case 'Tab':
88+ console.group('Value Added');
89+ console.log(tags);
90+ console.groupEnd();
91+
92+ setInput('');
93+ onTags([...tags, createOption(input)])
94+ event.preventDefault();
95+ }
96+ }, [input, tags]);
97+
98+ return (
99+ <CreatableSelect<Option, true>
100+ className={className}
101+ components={{
102+ ...components,
103+ Control,
104+ MultiValueContainer: TagContainer,
105+ MultiValueLabel: TagLabel,
106+ MultiValueRemove: TagRemove,
107+ DropdownIndicator: null
108+ }}
109+ styles={{
110+ control: (base) => ({}),
111+ input: (base) => ({
112+ ...base,
113+ padding: 0,
114+ margin: 0,
115+ }),
116+ clearIndicator: (base) => ({
117+ ...base,
118+ cursor: 'pointer',
119+ padding: 0
120+ }),
121+ multiValue: (base) => ({
122+ ...base,
123+ backgroundColor: '',
124+ margin: '0 2px',
125+ }),
126+ multiValueRemove: (base) => ({
127+ ...base,
128+ paddingRight: '',
129+ paddingLeft: '',
130+ '&:hover': {
131+ color: 'inherit',
132+ backgroundColor: 'inherit',
133+ },
134+ }),
135+ valueContainer: (base) => ({
136+ ...base,
137+ padding: 0
138+ })
139+ }}
140+ inputValue={input}
141+ isClearable
142+ isMulti
143+ menuIsOpen={false}
144+ onChange={handleChange}
145+ onInputChange={handleInputChange}
146+ onKeyDown={handleKeyDown}
147+ placeholder="Type something and press enter..."
148+ value={tags}
149+ />
150+ );
151+}
ui/src/index.css+5−1
@@ -1,3 +1,7 @@
11@tailwind base;
22@tailwind components;
3−@tailwind utilities;
3+@tailwind utilities;
4+
5+.flip {
6+ transform: rotateY(180deg);
7+}
ui/src/pages/Post.tsxnew file+106
@@ -0,0 +1,106 @@
1+import debounce from 'lodash.debounce';
2+import React, { useCallback, useEffect, useRef, useState } from 'react';
3+import { useForm } from 'react-hook-form';
4+import { Link, useNavigate } from 'react-router-dom';
5+import { MultiValue } from 'react-select';
6+import api from '../api';
7+import { Filter } from '../components/Filter';
8+import { Option, TagField } from '../components/TagField';
9+import { Declare, Post as PostForm } from '../types/seek';
10+
11+export const Post = () => {
12+ const navigate = useNavigate();
13+ const [tags, setTags] = useState<MultiValue<Option>>([]);
14+ const [image, setImage] = useState<string>('');
15+ const { register, watch, reset, setValue, handleSubmit } = useForm<PostForm>({
16+ defaultValues: {
17+ title: '',
18+ type: 'other',
19+ link: '',
20+ image: '',
21+ description: ''
22+ }
23+ });
24+
25+ const updateImg = useRef(debounce(setImage));
26+ const img = watch('image');
27+ const type = watch('type');
28+
29+ const onSubmit = useCallback((values: Omit<PostForm, 'tags'>) => {
30+ api.poke<Declare>({
31+ app: 'seek',
32+ mark: 'declare',
33+ json: {
34+ reach: 'friends',
35+ post: {
36+ ...values,
37+ tags: tags.map(t => t.value)
38+ }
39+ }
40+ })
41+ reset();
42+ setTags([]);
43+ }, [tags]);
44+
45+ useEffect(() => {
46+ register('type')
47+ }, []);
48+
49+ useEffect(() => {
50+ if (img) {
51+ updateImg.current(img)
52+ }
53+ }, [img]);
54+
55+ return (
56+ <>
57+ <header>
58+ <h1 className='text-2xl font-semibold'>Add a Listing</h1>
59+ </header>
60+ <form onSubmit={handleSubmit(onSubmit)}>
61+ <div className='flex w-full space-x-6'>
62+ <div className='flex-1 space-y-3'>
63+ <div>
64+ <label htmlFor='title' className='text-sm font-semibold'>Title</label>
65+ <div className='flex items-center space-x-2'>
66+ <input {...register('title', { required: true, maxLength: 80 })} className='flex-1 w-full py-1 px-2 bg-fawn/30 focus:outline-none focus:ring-2 ring-lavender rounded-lg border border-fawn/30' placeholder='sphinx'/>
67+ <Filter selected={type} onSelect={(value) => setValue('type', value)} />
68+ </div>
69+ </div>
70+ <div className='flex items-center space-x-6'>
71+ <div className='flex-1 space-y-3'>
72+ <div>
73+ <label htmlFor='image' className='text-sm font-semibold'>Image</label>
74+ <input type="url" {...register('image')} className='flex-1 w-full py-1 px-2 bg-fawn/30 focus:outline-none focus:ring-2 ring-lavender rounded-lg border border-fawn/30' placeholder='https://nyc3.digitaloceanspaces.com/...' />
75+ </div>
76+ <div>
77+ <label htmlFor='link' className='text-sm font-semibold'>Link</label>
78+ <input type="url" {...register('link', { required: true })} className='flex-1 w-full py-1 px-2 bg-fawn/30 focus:outline-none focus:ring-2 ring-lavender rounded-lg border border-fawn/30' placeholder='web+urbitgraph://~nocsyx-lassul/sphinx' />
79+ </div>
80+ </div>
81+ <img className='flex-none object-cover w-28 h-28 mt-4 border-2 border-dashed border-mauve/60 rounded-lg' src={image || undefined} />
82+ </div>
83+ <div>
84+ <label htmlFor='description' className='text-sm font-semibold'>Description</label>
85+ <textarea {...register('description', { required: true, maxLength: 256 })} rows={2} className='align-middle w-full py-1 px-2 bg-fawn/30 focus:outline-none focus:ring-2 ring-lavender rounded-lg border border-fawn/30' placeholder='An app for answering your riddles' />
86+ </div>
87+ <div>
88+ <label className='text-sm font-semibold'>Tags</label>
89+ <TagField tags={tags} onTags={setTags} />
90+ </div>
91+ <div className='pt-3'>
92+ <div className='flex justify-between border-t border-zinc-300 py-3'>
93+ <button type="button" className='flex items-center rounded-lg text-base font-semibold text-rosy bg-rosy/30 border-2 border-transparent hover:border-rosy leading-none py-2 px-3 transition-colors' onClick={() => navigate(-1)}>
94+ Back to Search
95+ </button>
96+ <button type="submit" className='flex items-center rounded-lg text-base font-semibold text-linen bg-rosy border-2 border-transparent hover:border-linen/60 leading-none py-2 px-3 transition-colors'>
97+ Publish
98+ </button>
99+ </div>
100+ </div>
101+ </div>
102+ </div>
103+ </form>
104+ </>
105+ )
106+}
ui/src/pages/Search.tsxnew file+92
@@ -0,0 +1,92 @@
1+import cn from 'classnames';
2+import React, { useCallback, useRef, useState } from 'react';
3+import debounce from 'lodash.debounce';
4+import { SearchInput } from '../components/SearchInput';
5+import { SearchList } from '../components/SearchList';
6+import { useQuery } from 'react-query';
7+import { PostFilter, PostType, Search as SearchType } from '../types/seek';
8+import api from '../api';
9+import { Link, useNavigate, useParams } from 'react-router-dom';
10+import { Paginator } from '../components/Paginator';
11+import { stringToTa } from '@urbit/api';
12+import { Filter } from '../components/Filter';
13+import { Meta } from '../components/Meta';
14+import { DocumentAddIcon, PlusCircleIcon, PlusIcon } from '@heroicons/react/solid';
15+
16+interface RouteParams extends Record<string, string | undefined> {
17+ lookup?: string;
18+ limit?: string;
19+ page?: string;
20+}
21+
22+function encodeLookup(value: string | undefined) {
23+ if (!value) {
24+ return '';
25+ }
26+
27+ return stringToTa(value).replace('~.', '~~');
28+}
29+
30+export const Search = () => {
31+ const navigate = useNavigate();
32+ const {
33+ lookup,
34+ limit,
35+ page
36+ } = useParams<RouteParams>();
37+ const [selected, setSelected] = useState<PostFilter>('all')
38+ const [rawSearch, setRawSearch] = useState(lookup || '');
39+ const size = parseInt(limit || '10', 10);
40+ const pageInt = parseInt(page || '1', 10) - 1;
41+ const start = pageInt * size;
42+ const { data } = useQuery<unknown, unknown, SearchType>(`lookup-${selected}-${lookup}-${size}-${start}`, () => api.scry<SearchType>({
43+ app: 'seek',
44+ path: `/lookup/${selected}/${encodeLookup(lookup)}/${start}/${size}`
45+ }), {
46+ enabled: !!lookup,
47+ keepPreviousData: true
48+ });
49+
50+ const total = data?.total || 0;
51+ const pages =
52+ total % size === 0
53+ ? total / size
54+ : Math.floor(total / size) + 1;
55+
56+ const update = useRef(debounce((value: string) => {
57+ if (!value) {
58+ return;
59+ }
60+
61+ navigate(`/search/${value}/${size}/${page || '1'}`)
62+ }, 400))
63+
64+ const onChange = useCallback((value: string) => {
65+ setRawSearch(value);
66+ update.current(value);
67+ }, []);
68+
69+ const linkBuild = useCallback((page) => {
70+ if (!page) {
71+ return null;
72+ }
73+
74+ return `/${lookup}/${size}/${page || 1}`
75+ }, [lookup, size]);
76+
77+ return (
78+ <>
79+ <header className='flex items-center space-x-2'>
80+ <SearchInput className='flex-1' lookup={rawSearch} onChange={onChange} />
81+ <Filter selected={selected} onSelect={setSelected} />
82+ </header>
83+ {lookup && data && <div className='flex justify-end border-t border-zinc-300'>
84+ <Paginator pages={pages} currentPage={pageInt} linkBuilder={linkBuild} />
85+ </div>}
86+ {lookup && <SearchList listings={data?.listings || []} />}
87+ {data && pages > 1 && <div className='flex justify-end border-t border-zinc-300'>
88+ <Paginator pages={pages} currentPage={pageInt} linkBuilder={linkBuild} />
89+ </div>}
90+ </>
91+ )
92+}
ui/src/types/seek.tsnew file+32
@@ -0,0 +1,32 @@
1+export type PostType = 'app' | 'group' | 'content' | 'other';
2+
3+export type PostFilter = 'all' | PostType;
4+
5+export interface Declare {
6+ reach: 'friends' | 'public' | 'private';
7+ post: Post
8+}
9+
10+export interface Post {
11+ title: string;
12+ type: PostType;
13+ description: string;
14+ image: string;
15+ tags: string[];
16+ link: string;
17+}
18+
19+export interface Listing {
20+ post: Post;
21+ hash: string;
22+ source: string;
23+ time: number;
24+}
25+
26+export type Search = {
27+ listings: Listing[];
28+ start: number;
29+ limit: number;
30+ size: number;
31+ total: number;
32+}
ui/tailwind.config.js+10−7
@@ -1,13 +1,16 @@
11module.exports = {
2− mode: 'jit',
3− purge: ['./index.html', './src/**/*.{js,ts,jsx,tsx}'],
4− darkMode: 'media', // or 'media' or 'class'
2+ content: ['./index.html', './src/**/*.{js,ts,jsx,tsx}'],
53 theme: {
6− extend: {}
4+ extend: {
5+ colors: {
6+ linen: '#FAEDE3',
7+ fawn: '#E7AB79',
8+ rosy: '#B25068',
9+ lavender: '#774360',
10+ mauve: '#4C3A51'
11+ }
12+ }
713 },
814 screens: {},
9− variants: {
10− extend: {}
11− },
1215 plugins: []
1316};