Note that it is possible that pnpm
is not present for everybody. You can install it with
npm install -g pnpm
+
+or
+curl -fsSL https://get.pnpm.io/install.sh | sh -
+
+A constant primitive is immutable, trying to mutate it will yield an error.
+`,raw:"",frontmatter:he,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:153,id:6,no:7},__clicksContext:null,__preloaded:!1}),me=u({}),hl=u({layout:o(()=>me.layout),transition:o(()=>me.transition),class:o(()=>me.class),clicks:o(()=>me.clicks),name:o(()=>me.name),preload:o(()=>me.preload),slide:{index:7,content:"",note:"",title:"Immutability",level:1,noteHTML:`A pure function is also immutable. It will always return the same output for the same input and there is no way to change its internal state. +Note that a program is also immutable after we run it.
+`,raw:"",frontmatter:me,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:172,id:7,no:8},__clicksContext:null,__preloaded:!1}),_e=u({}),ml=u({layout:o(()=>_e.layout),transition:o(()=>_e.transition),class:o(()=>_e.class),clicks:o(()=>_e.clicks),name:o(()=>_e.name),preload:o(()=>_e.preload),slide:{index:8,content:"",note:"",title:"What's Laziness?",level:1,noteHTML:`Note that this is an example of a side-effect. +The first function is evaluated when the program is called (eager), but the second one is only evaluated when it is called (lazy)
+`,raw:"",frontmatter:_e,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:188,id:8,no:9},__clicksContext:null,__preloaded:!1}),ye=u({}),_l=u({layout:o(()=>ye.layout),transition:o(()=>ye.transition),class:o(()=>ye.class),clicks:o(()=>ye.clicks),name:o(()=>ye.name),preload:o(()=>ye.preload),slide:{index:9,content:"",note:"",title:"Typical Problems in a Program",level:1,noteHTML:`Tell them that we'll discover these problems in the following slides. +Also ask them what their problems are.
+`,raw:"",frontmatter:ye,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:212,id:9,no:10},__clicksContext:null,__preloaded:!1}),ge=u({}),yl=u({layout:o(()=>ge.layout),transition:o(()=>ge.transition),class:o(()=>ge.class),clicks:o(()=>ge.clicks),name:o(()=>ge.name),preload:o(()=>ge.preload),slide:{index:10,content:"",note:"",title:"Missing from JS: Error Handling",level:1,noteHTML:`There is no indication that loadUsers can fail or how it will fail
+`,raw:"",frontmatter:ge,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:232,id:10,no:11},__clicksContext:null,__preloaded:!1}),ke=u({}),gl=u({layout:o(()=>ke.layout),transition:o(()=>ke.transition),class:o(()=>ke.class),clicks:o(()=>ke.clicks),name:o(()=>ke.name),preload:o(()=>ke.preload),slide:{index:11,content:"",note:"",title:"Error Handling With Result Types",level:1,noteHTML:`Here we'll know that loadUsers can fail and how it will fail
+`,raw:"",frontmatter:ke,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:254,id:11,no:12},__clicksContext:null,__preloaded:!1}),we=u({}),kl=u({layout:o(()=>we.layout),transition:o(()=>we.transition),class:o(()=>we.class),clicks:o(()=>we.clicks),name:o(()=>we.name),preload:o(()=>we.preload),slide:{index:12,content:"",note:"",title:"Composing Results",level:1,noteHTML:`We can talk about how success/fail wraps the value in a Result type and how map and flatMap can be used to compose them. Composability is a core theme in FP, so we should talk about it. +Also mention what a combinator is and that we'll discover this more later.
+`,raw:"",frontmatter:we,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:279,id:12,no:13},__clicksContext:null,__preloaded:!1}),ve=u({}),wl=u({layout:o(()=>ve.layout),transition:o(()=>ve.transition),class:o(()=>ve.class),clicks:o(()=>ve.clicks),name:o(()=>ve.name),preload:o(()=>ve.preload),slide:{index:13,content:"",note:"",title:"Composing Results: Usage",level:1,noteHTML:`Ask about whether they think this looks good (probably not). This is when pipe comes in.
+`,raw:"",frontmatter:ve,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:314,id:13,no:14},__clicksContext:null,__preloaded:!1}),be=u({}),vl=u({layout:o(()=>be.layout),transition:o(()=>be.transition),class:o(()=>be.class),clicks:o(()=>be.clicks),name:o(()=>be.name),preload:o(()=>be.preload),slide:{index:14,content:"",note:"",title:"Composing Results: Piping",level:1,noteHTML:`Here we can introduce the idea of piping, and how it solves the problem of having awakward code. +Also note that there are plans to introduce a |> pipe |> operator in the future.
+`,raw:"",frontmatter:be,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:347,id:14,no:15},__clicksContext:null,__preloaded:!1}),Ee=u({}),bl=u({layout:o(()=>Ee.layout),transition:o(()=>Ee.transition),class:o(()=>Ee.class),clicks:o(()=>Ee.clicks),name:o(()=>Ee.name),preload:o(()=>Ee.preload),slide:{index:15,content:"",note:"",title:"Composing Results: Piping",level:1,noteHTML:`Important: mention that pipe is the same as nesting the function calls, this will be +important later...maybe show them a rewritten example with nested calls.
+`,raw:"",frontmatter:Ee,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:371,id:15,no:16},__clicksContext:null,__preloaded:!1}),Te=u({}),El=u({layout:o(()=>Te.layout),transition:o(()=>Te.transition),class:o(()=>Te.class),clicks:o(()=>Te.clicks),name:o(()=>Te.name),preload:o(()=>Te.preload),slide:{index:16,content:"",note:"",title:"But I Want MY `async` / `await` Back!",level:1,noteHTML:`Mention that this is a little more elaborate so we can't reproduce it in the slides, but we'll get to it later.
+`,raw:"",frontmatter:Te,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:403,id:16,no:17},__clicksContext:null,__preloaded:!1}),Le=u({}),Tl=u({layout:o(()=>Le.layout),transition:o(()=>Le.transition),class:o(()=>Le.class),clicks:o(()=>Le.clicks),name:o(()=>Le.name),preload:o(()=>Le.preload),slide:{index:17,content:"",note:"",title:"Dependency Injection",level:1,noteHTML:`Just ask them about the problems they face before revealing the list.
+`,raw:"",frontmatter:Le,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:451,id:17,no:18},__clicksContext:null,__preloaded:!1}),Me=u({}),Ll=u({layout:o(()=>Me.layout),transition:o(()=>Me.transition),class:o(()=>Me.class),clicks:o(()=>Me.clicks),name:o(()=>Me.name),preload:o(()=>Me.preload),slide:{index:18,content:"",note:"",title:"Dependency Injection: A Simple Solution",level:1,noteHTML:`Ask them how they would do it. Mention that deps can be passed as arguments before revealing the solution. +Somebody will probably say that hand-wiring is tedious, in this case we can mention that Effect has as solution for this that we'll discuss later.
+`,raw:"",frontmatter:Me,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:471,id:18,no:19},__clicksContext:null,__preloaded:!1}),$e=u({}),Ml=u({layout:o(()=>$e.layout),transition:o(()=>$e.transition),class:o(()=>$e.class),clicks:o(()=>$e.clicks),name:o(()=>$e.name),preload:o(()=>$e.preload),slide:{index:19,content:"",note:"",title:"Let's go back to our list ...",level:1,noteHTML:`Let's reiterate what we've learned so far...We'll talk about testability next
+`,raw:"",frontmatter:$e,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:584,id:19,no:20},__clicksContext:null,__preloaded:!1}),Oe=u({}),$l=u({layout:o(()=>Oe.layout),transition:o(()=>Oe.transition),class:o(()=>Oe.class),clicks:o(()=>Oe.clicks),name:o(()=>Oe.name),preload:o(()=>Oe.preload),slide:{index:20,content:"",note:"",title:"Testability",level:1,noteHTML:`Talk about how pure functions only operate on inputs and outputs == easy to test.
+`,raw:"",frontmatter:Oe,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:602,id:20,no:21},__clicksContext:null,__preloaded:!1}),Pe=u({}),Ol=u({layout:o(()=>Pe.layout),transition:o(()=>Pe.transition),class:o(()=>Pe.class),clicks:o(()=>Pe.clicks),name:o(()=>Pe.name),preload:o(()=>Pe.preload),slide:{index:21,content:"",note:"",title:"Testability: Functions",level:1,noteHTML:"",raw:"",frontmatter:Pe,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:620,id:21,no:22},__clicksContext:null,__preloaded:!1}),Ae=u({}),Pl=u({layout:o(()=>Ae.layout),transition:o(()=>Ae.transition),class:o(()=>Ae.class),clicks:o(()=>Ae.clicks),name:o(()=>Ae.name),preload:o(()=>Ae.preload),slide:{index:22,content:"",note:"",title:"Testability: Services",level:1,noteHTML:`Note that the in-memory repository accepts a Map so that it can be checked in the tests. +Mention that we can create a "reference" implementation of our services and provide (contract) tests for them. These can be applied against the "live" implementations as well.
+`,raw:"",frontmatter:Ae,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:680,id:22,no:23},__clicksContext:null,__preloaded:!1}),Se=u({}),Al=u({layout:o(()=>Se.layout),transition:o(()=>Se.transition),class:o(()=>Se.class),clicks:o(()=>Se.clicks),name:o(()=>Se.name),preload:o(()=>Se.preload),slide:{index:23,content:"",note:"",title:"What's Left?",level:1,noteHTML:`Here we should mention that these two are integrated into Effect and we'll talk about them. +Next we'll look at a few examples of how these can be implemented easily by composition. +It is important to mention that these are not strictly business code, so they are usually +achieved by decoration.
+`,raw:"",frontmatter:Se,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:751,id:23,no:24},__clicksContext:null,__preloaded:!1}),Ce=u({}),Sl=u({layout:o(()=>Ce.layout),transition:o(()=>Ce.transition),class:o(()=>Ce.class),clicks:o(()=>Ce.clicks),name:o(()=>Ce.name),preload:o(()=>Ce.preload),slide:{index:24,content:"",note:"",title:"What's on Tap?",level:1,noteHTML:`Mention that trace
is a very simplistic example of how observability would work.
Mention that this is similar to how middlewares or the decorator pattern works +and how composability helps to add these features to the program without touching +the business logic or increasing complexity.
+`,raw:"",frontmatter:xe,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:837,id:25,no:26},__clicksContext:null,__preloaded:!1}),Ie=u({}),xl=u({layout:o(()=>Ie.layout),transition:o(()=>Ie.transition),class:o(()=>Ie.class),clicks:o(()=>Ie.clicks),name:o(()=>Ie.name),preload:o(()=>Ie.preload),slide:{index:26,content:"",note:"",title:"How About Resource Handling?",level:1,noteHTML:"",raw:"",frontmatter:Ie,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:867,id:26,no:27},__clicksContext:null,__preloaded:!1}),He=u({}),Il=u({layout:o(()=>He.layout),transition:o(()=>He.transition),class:o(()=>He.class),clicks:o(()=>He.clicks),name:o(()=>He.name),preload:o(()=>He.preload),slide:{index:27,content:"",note:"",title:"Putting It Together",level:1,noteHTML:`Note that this is a very simplistic example of how resource handling would work.
+`,raw:"",frontmatter:He,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:940,id:27,no:28},__clicksContext:null,__preloaded:!1}),je=u({}),Hl=u({layout:o(()=>je.layout),transition:o(()=>je.transition),class:o(()=>je.class),clicks:o(()=>je.clicks),name:o(()=>je.name),preload:o(()=>je.preload),slide:{index:28,content:"",note:"",title:"Questions So Far?",level:1,noteHTML:`Here they'll probably ask about the details and how x
or y
will work and what problems
+are there with the current code. Luckily Effect has solutions for most of these ...
We'll take a look at requirements later, but we can mention that it is similar to the dependency injection we've seen before. +An effect is inherently lazy too. +Also mention that sync / async is handled by the concurrency model (explained later).
+`,raw:"",frontmatter:Re,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:976,id:29,no:30},__clicksContext:null,__preloaded:!1}),De=u({}),Rl=u({layout:o(()=>De.layout),transition:o(()=>De.transition),class:o(()=>De.class),clicks:o(()=>De.clicks),name:o(()=>De.name),preload:o(()=>De.preload),slide:{index:30,content:"",note:"",title:"How To Create Effects?",level:1,noteHTML:"",raw:"",frontmatter:De,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:999,id:30,no:31},__clicksContext:null,__preloaded:!1}),Fe=u({}),Dl=u({layout:o(()=>Fe.layout),transition:o(()=>Fe.transition),class:o(()=>Fe.class),clicks:o(()=>Fe.clicks),name:o(()=>Fe.name),preload:o(()=>Fe.preload),slide:{index:31,content:"",note:"",title:"How To Run Effects?",level:1,noteHTML:"",raw:"",frontmatter:Fe,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:1052,id:31,no:32},__clicksContext:null,__preloaded:!1}),Ve=u({}),Fl=u({layout:o(()=>Ve.layout),transition:o(()=>Ve.transition),class:o(()=>Ve.class),clicks:o(()=>Ve.clicks),name:o(()=>Ve.name),preload:o(()=>Ve.preload),slide:{index:32,content:"",note:"",title:"How To Run Effects?",level:1,noteHTML:"",raw:"",frontmatter:Ve,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:1071,id:32,no:33},__clicksContext:null,__preloaded:!1}),Ne=u({}),Vl=u({layout:o(()=>Ne.layout),transition:o(()=>Ne.transition),class:o(()=>Ne.class),clicks:o(()=>Ne.clicks),name:o(()=>Ne.name),preload:o(()=>Ne.preload),slide:{index:33,content:"",note:"",title:"How To Run Effects?",level:1,noteHTML:`Mention that Exit
will be explained later.
Note that this is very similar to what we did in the previous example, only a few names changed.
+`,raw:"",frontmatter:Be,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:1137,id:35,no:36},__clicksContext:null,__preloaded:!1}),qe=u({}),Bl=u({layout:o(()=>qe.layout),transition:o(()=>qe.transition),class:o(()=>qe.class),clicks:o(()=>qe.clicks),name:o(()=>qe.name),preload:o(()=>qe.preload),slide:{index:36,content:"",note:"",title:"Writing Our First Program: Flows",level:1,noteHTML:`Note that this is very similar to what we did in the previous example, only a few names changed.
+`,raw:"",frontmatter:qe,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:1167,id:36,no:37},__clicksContext:null,__preloaded:!1}),ze=u({}),ql=u({layout:o(()=>ze.layout),transition:o(()=>ze.transition),class:o(()=>ze.class),clicks:o(()=>ze.clicks),name:o(()=>ze.name),preload:o(()=>ze.preload),slide:{index:37,content:"",note:"",title:"Composing Effects: map",level:1,noteHTML:`Mention that all combinators have a curried and uncurried form.
+`,raw:"",frontmatter:ze,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:1223,id:37,no:38},__clicksContext:null,__preloaded:!1}),Ue=u({}),zl=u({layout:o(()=>Ue.layout),transition:o(()=>Ue.transition),class:o(()=>Ue.class),clicks:o(()=>Ue.clicks),name:o(()=>Ue.name),preload:o(()=>Ue.preload),slide:{index:38,content:"",note:"",title:"Composing Effects: flatMap",level:1,noteHTML:`Mention that we can also return a fail
from a flatMap
so it is useful when we want to produce some error based on what happens within f
Mention that this ties into the concurrency model, which we'll discuss later.
+`,raw:"",frontmatter:Je,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:1288,id:40,no:41},__clicksContext:null,__preloaded:!1}),Ge=u({}),Jl=u({layout:o(()=>Ge.layout),transition:o(()=>Ge.transition),class:o(()=>Ge.class),clicks:o(()=>Ge.clicks),name:o(()=>Ge.name),preload:o(()=>Ge.preload),slide:{index:41,content:"",note:"",title:"Tip: importing from Effect",level:1,noteHTML:`Mention that many more modules can be imported like this (such as Either)
+`,raw:"",frontmatter:Ge,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:1316,id:41,no:42},__clicksContext:null,__preloaded:!1}),Qe=u({}),Gl=u({layout:o(()=>Qe.layout),transition:o(()=>Qe.transition),class:o(()=>Qe.class),clicks:o(()=>Qe.clicks),name:o(()=>Qe.name),preload:o(()=>Qe.preload),slide:{index:42,content:"",note:"",title:"What if I Hate pipes?",level:1,noteHTML:`A little more info is in the next slide
+`,raw:"",frontmatter:Qe,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:1348,id:42,no:43},__clicksContext:null,__preloaded:!1}),Ye=u({}),Ql=u({layout:o(()=>Ye.layout),transition:o(()=>Ye.transition),class:o(()=>Ye.class),clicks:o(()=>Ye.clicks),name:o(()=>Ye.name),preload:o(()=>Ye.preload),slide:{index:43,content:"",note:"",title:"How Do Generators Work?",level:1,noteHTML:`Explain how both generators and pipes are dealing with sequences of values. +Point out the similarities between async / await and function* / yield*. +We'll explain error handling in the next topic. +We'll go into more detail later regarding concurrency.
+`,raw:"",frontmatter:Ye,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:1384,id:43,no:44},__clicksContext:null,__preloaded:!1}),Ze=u({}),Yl=u({layout:o(()=>Ze.layout),transition:o(()=>Ze.transition),class:o(()=>Ze.class),clicks:o(()=>Ze.clicks),name:o(()=>Ze.name),preload:o(()=>Ze.preload),slide:{index:44,content:"",note:"",title:"Generators vs Promises",level:1,noteHTML:`We'll go into more detail later regarding concurrency.
+`,raw:"",frontmatter:Ze,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:1416,id:44,no:45},__clicksContext:null,__preloaded:!1}),Xe=u({}),Zl=u({layout:o(()=>Xe.layout),transition:o(()=>Xe.transition),class:o(()=>Xe.class),clicks:o(()=>Xe.clicks),name:o(()=>Xe.name),preload:o(()=>Xe.preload),slide:{index:45,content:"",note:"",title:"Error Handling",level:1,noteHTML:`Ask them about what is supposed to happen here. +The error we see is the Exit value, we'll talk about it later
+`,raw:"",frontmatter:Xe,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:1466,id:45,no:46},__clicksContext:null,__preloaded:!1}),et=u({}),Xl=u({layout:o(()=>et.layout),transition:o(()=>et.transition),class:o(()=>et.class),clicks:o(()=>et.clicks),name:o(()=>et.name),preload:o(()=>et.preload),slide:{index:46,content:"",note:"",title:"Error Handling: Our Options",level:1,noteHTML:"",raw:"",frontmatter:et,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:1497,id:46,no:47},__clicksContext:null,__preloaded:!1}),tt=u({}),ec=u({layout:o(()=>tt.layout),transition:o(()=>tt.transition),class:o(()=>tt.class),clicks:o(()=>tt.clicks),name:o(()=>tt.name),preload:o(()=>tt.preload),slide:{index:47,content:"",note:"",title:"Error Handling: die",level:1,noteHTML:`Note that we get the same error as before: by default runSync
dies
Note that we get the same error as before: by default runSync
dies
Mention that Effect uses _tag
all over the place, that's why this works out of the box.
The difference between orElse and catchAll is that orElse ignores the error
+`,raw:"",frontmatter:at,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:1632,id:51,no:52},__clicksContext:null,__preloaded:!1}),rt=u({}),ac=u({layout:o(()=>rt.layout),transition:o(()=>rt.transition),class:o(()=>rt.class),clicks:o(()=>rt.clicks),name:o(()=>rt.name),preload:o(()=>rt.preload),slide:{index:52,content:"",note:"",title:"Error Handling: orElseFail",level:1,noteHTML:"",raw:"",frontmatter:rt,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:1661,id:52,no:53},__clicksContext:null,__preloaded:!1}),it=u({}),rc=u({layout:o(()=>it.layout),transition:o(()=>it.transition),class:o(()=>it.class),clicks:o(()=>it.clicks),name:o(()=>it.name),preload:o(()=>it.preload),slide:{index:53,content:"",note:"",title:"Error Handling: mapError",level:1,noteHTML:`Here we can manually match the error. Useful when we have no control over the error types (for example it has no _tag field).
+`,raw:"",frontmatter:it,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:1695,id:53,no:54},__clicksContext:null,__preloaded:!1}),lt=u({}),ic=u({layout:o(()=>lt.layout),transition:o(()=>lt.transition),class:o(()=>lt.class),clicks:o(()=>lt.clicks),name:o(()=>lt.name),preload:o(()=>lt.preload),slide:{index:54,content:"",note:"",title:"Error Handling: match",level:1,noteHTML:`match is useful when we want to transform both the success and error channels.
+`,raw:"",frontmatter:lt,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:1728,id:54,no:55},__clicksContext:null,__preloaded:!1}),ct=u({}),lc=u({layout:o(()=>ct.layout),transition:o(()=>ct.transition),class:o(()=>ct.class),clicks:o(()=>ct.clicks),name:o(()=>ct.name),preload:o(()=>ct.preload),slide:{index:55,content:"",note:"",title:"Error Handling: matchEffect",level:1,noteHTML:`Same as match but returns effects
+`,raw:"",frontmatter:ct,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:1760,id:55,no:56},__clicksContext:null,__preloaded:!1}),dt=u({}),cc=u({layout:o(()=>dt.layout),transition:o(()=>dt.transition),class:o(()=>dt.class),clicks:o(()=>dt.clicks),name:o(()=>dt.name),preload:o(()=>dt.preload),slide:{index:56,content:"",note:"",title:"What If I Want To Use A Generator?",level:1,noteHTML:"",raw:"",frontmatter:dt,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:1794,id:56,no:57},__clicksContext:null,__preloaded:!1}),ut=u({}),dc=u({layout:o(()=>ut.layout),transition:o(()=>ut.transition),class:o(()=>ut.class),clicks:o(()=>ut.clicks),name:o(()=>ut.name),preload:o(()=>ut.preload),slide:{index:57,content:"",note:"",title:"Solution #1: use pipe at the end",level:1,noteHTML:"",raw:"",frontmatter:ut,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:1893,id:57,no:58},__clicksContext:null,__preloaded:!1}),pt=u({}),uc=u({layout:o(()=>pt.layout),transition:o(()=>pt.transition),class:o(()=>pt.class),clicks:o(()=>pt.clicks),name:o(()=>pt.name),preload:o(()=>pt.preload),slide:{index:58,content:"",note:"",title:"Solution #2: pipe the parts that can fail",level:1,noteHTML:"",raw:"",frontmatter:pt,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:1923,id:58,no:59},__clicksContext:null,__preloaded:!1}),ft=u({}),pc=u({layout:o(()=>ft.layout),transition:o(()=>ft.transition),class:o(()=>ft.class),clicks:o(()=>ft.clicks),name:o(()=>ft.name),preload:o(()=>ft.preload),slide:{index:59,content:"",note:"",title:"Solution #3: use either",level:1,noteHTML:"",raw:"",frontmatter:ft,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:1954,id:59,no:60},__clicksContext:null,__preloaded:!1}),ht=u({}),fc=u({layout:o(()=>ht.layout),transition:o(()=>ht.transition),class:o(()=>ht.class),clicks:o(()=>ht.clicks),name:o(()=>ht.name),preload:o(()=>ht.preload),slide:{index:60,content:"",note:"",title:"So What's That Funky Fiber Failure Thingy?",level:1,noteHTML:"",raw:"",frontmatter:ht,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:1983,id:60,no:61},__clicksContext:null,__preloaded:!1}),mt=u({}),hc=u({layout:o(()=>mt.layout),transition:o(()=>mt.transition),class:o(()=>mt.class),clicks:o(()=>mt.clicks),name:o(()=>mt.name),preload:o(()=>mt.preload),slide:{index:61,content:"",note:"",title:"It's an Exit!",level:1,noteHTML:`Next slide has more info ...
+`,raw:"",frontmatter:mt,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:2010,id:61,no:62},__clicksContext:null,__preloaded:!1}),_t=u({}),mc=u({layout:o(()=>_t.layout),transition:o(()=>_t.transition),class:o(()=>_t.class),clicks:o(()=>_t.clicks),name:o(()=>_t.name),preload:o(()=>_t.preload),slide:{index:62,content:"",note:"",title:"What's an Exit?",level:1,noteHTML:`Fail is a recoverable error, the rest are coming from the concurrency model.
+`,raw:"",frontmatter:_t,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:2039,id:62,no:63},__clicksContext:null,__preloaded:!1}),yt=u({}),_c=u({layout:o(()=>yt.layout),transition:o(()=>yt.transition),class:o(()=>yt.class),clicks:o(()=>yt.clicks),name:o(()=>yt.name),preload:o(()=>yt.preload),slide:{index:63,content:"",note:"",title:"Questions, Questions ...",level:1,noteHTML:`Next topic is Context management
+`,raw:"",frontmatter:yt,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:2068,id:63,no:64},__clicksContext:null,__preloaded:!1}),gt=u({}),yc=u({layout:o(()=>gt.layout),transition:o(()=>gt.transition),class:o(()=>gt.class),clicks:o(()=>gt.clicks),name:o(()=>gt.name),preload:o(()=>gt.preload),slide:{index:64,content:"",note:"",title:"Context Management",level:1,noteHTML:"",raw:"",frontmatter:gt,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:2079,id:64,no:65},__clicksContext:null,__preloaded:!1}),kt=u({}),gc=u({layout:o(()=>kt.layout),transition:o(()=>kt.transition),class:o(()=>kt.class),clicks:o(()=>kt.clicks),name:o(()=>kt.name),preload:o(()=>kt.preload),slide:{index:65,content:"",note:"",title:"Creating An Effect Service",level:1,noteHTML:`All important parts are outlined in the comments, we can click through them. +We can also talk about how this worked in the past and what happens if we don't use unique names.
+`,raw:"",frontmatter:kt,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:2173,id:65,no:66},__clicksContext:null,__preloaded:!1}),wt=u({}),kc=u({layout:o(()=>wt.layout),transition:o(()=>wt.transition),class:o(()=>wt.class),clicks:o(()=>wt.clicks),name:o(()=>wt.name),preload:o(()=>wt.preload),slide:{index:66,content:"",note:"",title:"Implementing A Service",level:1,noteHTML:`Note that we'll talk about how to inject users
later.
Note that we'll talk about how to inject users
later.
Ask them what will happen when we run this. It will fail (but it will also not compile).
+`,raw:"",frontmatter:bt,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:2390,id:68,no:69},__clicksContext:null,__preloaded:!1}),Et=u({}),bc=u({layout:o(()=>Et.layout),transition:o(()=>Et.transition),class:o(()=>Et.class),clicks:o(()=>Et.clicks),name:o(()=>Et.name),preload:o(()=>Et.preload),slide:{index:69,content:"",note:"",title:"Providing Services",level:1,noteHTML:`Note that we could have used provideService
if stub
was returning a plain object.
Mention that since we wrap async operations in effect it is no longer relevant whether +the underlying service call is async or not, we can just unwrap its value with yield*
+`,raw:"",frontmatter:Tt,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:2547,id:70,no:71},__clicksContext:null,__preloaded:!1}),Lt=u({}),Tc=u({layout:o(()=>Lt.layout),transition:o(()=>Lt.transition),class:o(()=>Lt.class),clicks:o(()=>Lt.clicks),name:o(()=>Lt.name),preload:o(()=>Lt.preload),slide:{index:71,content:"",note:"",title:"How Does This Work?",level:1,noteHTML:`Here we need to explain that Context is like a Map<ServiceId, ServiceImpl> and adding context elements to our program will add their type to the signature making it all type-safe.
+`,raw:"",frontmatter:Lt,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:2576,id:71,no:72},__clicksContext:null,__preloaded:!1}),Mt=u({}),Lc=u({layout:o(()=>Mt.layout),transition:o(()=>Mt.transition),class:o(()=>Mt.class),clicks:o(()=>Mt.clicks),name:o(()=>Mt.name),preload:o(()=>Mt.preload),slide:{index:72,content:"",note:"",noteHTML:"",raw:"",frontmatter:Mt,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:2829,id:72,no:73},__clicksContext:null,__preloaded:!1}),$t=u({}),Mc=u({layout:o(()=>$t.layout),transition:o(()=>$t.transition),class:o(()=>$t.class),clicks:o(()=>$t.clicks),name:o(()=>$t.name),preload:o(()=>$t.preload),slide:{index:73,content:"",note:"",title:"Just Joking...",level:1,noteHTML:"",raw:"",frontmatter:$t,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:2835,id:73,no:74},__clicksContext:null,__preloaded:!1}),Ot=u({}),$c=u({layout:o(()=>Ot.layout),transition:o(()=>Ot.transition),class:o(()=>Ot.class),clicks:o(()=>Ot.clicks),name:o(()=>Ot.name),preload:o(()=>Ot.preload),slide:{index:74,content:"",note:"",title:"Layers",level:1,noteHTML:`Ask them what this shape reminds them of before revealing the answer.
+`,raw:"",frontmatter:Ot,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:2840,id:74,no:75},__clicksContext:null,__preloaded:!1}),Pt=u({}),Oc=u({layout:o(()=>Pt.layout),transition:o(()=>Pt.transition),class:o(()=>Pt.class),clicks:o(()=>Pt.clicks),name:o(()=>Pt.name),preload:o(()=>Pt.preload),slide:{index:75,content:"",note:"",title:"How Do They Work?",level:1,noteHTML:"",raw:"",frontmatter:Pt,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:2871,id:75,no:76},__clicksContext:null,__preloaded:!1}),At=u({}),Pc=u({layout:o(()=>At.layout),transition:o(()=>At.transition),class:o(()=>At.class),clicks:o(()=>At.clicks),name:o(()=>At.name),preload:o(()=>At.preload),slide:{index:76,content:"",note:"",title:"Putting It Together",level:1,noteHTML:"",raw:"",frontmatter:At,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:3032,id:76,no:77},__clicksContext:null,__preloaded:!1}),St=u({}),Ac=u({layout:o(()=>St.layout),transition:o(()=>St.transition),class:o(()=>St.class),clicks:o(()=>St.clicks),name:o(()=>St.name),preload:o(()=>St.preload),slide:{index:77,content:"",note:"",title:"What If My Services Have Dependencies?",level:1,noteHTML:"",raw:"",frontmatter:St,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:3057,id:77,no:78},__clicksContext:null,__preloaded:!1}),Ct=u({}),Sc=u({layout:o(()=>Ct.layout),transition:o(()=>Ct.transition),class:o(()=>Ct.class),clicks:o(()=>Ct.clicks),name:o(()=>Ct.name),preload:o(()=>Ct.preload),slide:{index:78,content:"",note:"",title:"Let's Revisit Our User Example",level:1,noteHTML:"",raw:"",frontmatter:Ct,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:3062,id:78,no:79},__clicksContext:null,__preloaded:!1}),xt=u({}),Cc=u({layout:o(()=>xt.layout),transition:o(()=>xt.transition),class:o(()=>xt.class),clicks:o(()=>xt.clicks),name:o(()=>xt.name),preload:o(()=>xt.preload),slide:{index:79,content:"",note:"",title:"Putting It All Together",level:1,noteHTML:`Here well introduce a service dependency for the UserRepository
+`,raw:"",frontmatter:xt,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:3365,id:79,no:80},__clicksContext:null,__preloaded:!1}),It=u({}),xc=u({layout:o(()=>It.layout),transition:o(()=>It.transition),class:o(()=>It.class),clicks:o(()=>It.clicks),name:o(()=>It.name),preload:o(()=>It.preload),slide:{index:80,content:"",note:"",title:"Do We Have A Problem Here?",level:1,noteHTML:`Using a lot of services will clutter the code with yield* calls. We do have a solution for this: Effect.serviceFunctions. Ask them if they can spot this problem.
+`,raw:"",frontmatter:It,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:3395,id:80,no:81},__clicksContext:null,__preloaded:!1}),Ht=u({}),Ic=u({layout:o(()=>Ht.layout),transition:o(()=>Ht.transition),class:o(()=>Ht.class),clicks:o(()=>Ht.clicks),name:o(()=>Ht.name),preload:o(()=>Ht.preload),slide:{index:81,content:"",note:"",title:"Using `serviceFunctions`",level:1,noteHTML:`We'll demonstrate how serviceFunctions works, then we'll introduce Effect.Tag instead of Context.Tag +Meniton that without Effect.Tag we could export everything as * from "./UUIDProvider" and then use a barrel import.
+`,raw:"",frontmatter:Ht,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:3421,id:81,no:82},__clicksContext:null,__preloaded:!1}),jt=u({}),Hc=u({layout:o(()=>jt.layout),transition:o(()=>jt.transition),class:o(()=>jt.class),clicks:o(()=>jt.clicks),name:o(()=>jt.name),preload:o(()=>jt.preload),slide:{index:82,content:"",note:"",title:"Putting It All Together",level:1,noteHTML:"",raw:"",frontmatter:jt,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:3531,id:82,no:83},__clicksContext:null,__preloaded:!1}),Rt=u({}),jc=u({layout:o(()=>Rt.layout),transition:o(()=>Rt.transition),class:o(()=>Rt.class),clicks:o(()=>Rt.clicks),name:o(()=>Rt.name),preload:o(()=>Rt.preload),slide:{index:83,content:"",note:"",noteHTML:"",raw:"",frontmatter:Rt,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:3549,id:83,no:84},__clicksContext:null,__preloaded:!1}),Dt=u({}),Rc=u({layout:o(()=>Dt.layout),transition:o(()=>Dt.transition),class:o(()=>Dt.class),clicks:o(()=>Dt.clicks),name:o(()=>Dt.name),preload:o(()=>Dt.preload),slide:{index:84,content:"",note:"",title:"Resource Management",level:1,noteHTML:`Ask them what they think a resource is and how they would approach handling them...
+`,raw:"",frontmatter:Dt,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:3554,id:84,no:85},__clicksContext:null,__preloaded:!1}),Ft=u({}),Dc=u({layout:o(()=>Ft.layout),transition:o(()=>Ft.transition),class:o(()=>Ft.class),clicks:o(()=>Ft.clicks),name:o(()=>Ft.name),preload:o(()=>Ft.preload),slide:{index:85,content:"",note:"",title:"How To Use Scopes",level:1,noteHTML:`Note that Scope gets added to the requirements of an effect, and can be "provided" by closing it.
+`,raw:"",frontmatter:Ft,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:3573,id:85,no:86},__clicksContext:null,__preloaded:!1}),Vt=u({}),Fc=u({layout:o(()=>Vt.layout),transition:o(()=>Vt.transition),class:o(()=>Vt.class),clicks:o(()=>Vt.clicks),name:o(()=>Vt.name),preload:o(()=>Vt.preload),slide:{index:86,content:"",note:"",title:"A Working Example",level:1,noteHTML:`Ask them what will get printed and why.
+`,raw:"",frontmatter:Vt,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:3638,id:86,no:87},__clicksContext:null,__preloaded:!1}),Nt=u({}),Vc=u({layout:o(()=>Nt.layout),transition:o(()=>Nt.transition),class:o(()=>Nt.class),clicks:o(()=>Nt.clicks),name:o(()=>Nt.name),preload:o(()=>Nt.preload),slide:{index:87,content:"",note:"",title:"Nested Scopes",level:1,noteHTML:`What will it print? Why?
+`,raw:"",frontmatter:Nt,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:3661,id:87,no:88},__clicksContext:null,__preloaded:!1}),Wt=u({}),Nc=u({layout:o(()=>Wt.layout),transition:o(()=>Wt.transition),class:o(()=>Wt.class),clicks:o(()=>Wt.clicks),name:o(()=>Wt.name),preload:o(()=>Wt.preload),slide:{index:88,content:"",note:"",title:"Acquire-Release",level:1,noteHTML:"",raw:"",frontmatter:Wt,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:3688,id:88,no:89},__clicksContext:null,__preloaded:!1}),Bt=u({}),Wc=u({layout:o(()=>Bt.layout),transition:o(()=>Bt.transition),class:o(()=>Bt.class),clicks:o(()=>Bt.clicks),name:o(()=>Bt.name),preload:o(()=>Bt.preload),slide:{index:89,content:"",note:"",title:"A Working Example",level:1,noteHTML:"",raw:"",frontmatter:Bt,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:3786,id:89,no:90},__clicksContext:null,__preloaded:!1}),qt=u({}),Bc=u({layout:o(()=>qt.layout),transition:o(()=>qt.transition),class:o(()=>qt.class),clicks:o(()=>qt.clicks),name:o(()=>qt.name),preload:o(()=>qt.preload),slide:{index:90,content:"",note:"",title:"Acquire-Use-Release",level:1,noteHTML:"",raw:"",frontmatter:qt,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:3813,id:90,no:91},__clicksContext:null,__preloaded:!1}),zt=u({}),qc=u({layout:o(()=>zt.layout),transition:o(()=>zt.transition),class:o(()=>zt.class),clicks:o(()=>zt.clicks),name:o(()=>zt.name),preload:o(()=>zt.preload),slide:{index:91,content:"",note:"",title:"Before We Move On ...",level:1,noteHTML:"",raw:"",frontmatter:zt,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:3841,id:91,no:92},__clicksContext:null,__preloaded:!1}),Ut=u({}),zc=u({layout:o(()=>Ut.layout),transition:o(()=>Ut.transition),class:o(()=>Ut.class),clicks:o(()=>Ut.clicks),name:o(()=>Ut.name),preload:o(()=>Ut.preload),slide:{index:92,content:"",note:"",title:"Introducing Runtime",level:1,noteHTML:`This is where we should discuss that whenever runSync
was called before we implicitly used a runtime. We can now make it explicit.
+We'll discuss some of the details when we talk about concurrency. Here the point is to introduce the concept and to show how a custom runtime is created.
Mention that if we'll have time at the end we'll explore some runtime features later such as configuration management and logging.
+`,raw:"",frontmatter:Gt,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:3969,id:95,no:96},__clicksContext:null,__preloaded:!1}),Qt=u({}),Gc=u({layout:o(()=>Qt.layout),transition:o(()=>Qt.transition),class:o(()=>Qt.class),clicks:o(()=>Qt.clicks),name:o(()=>Qt.name),preload:o(()=>Qt.preload),slide:{index:96,content:"",note:"",title:"Questions?",level:1,noteHTML:`Observability is next ...
+`,raw:"",frontmatter:Qt,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:3996,id:96,no:97},__clicksContext:null,__preloaded:!1}),Yt=u({}),Qc=u({layout:o(()=>Yt.layout),transition:o(()=>Yt.transition),class:o(()=>Yt.class),clicks:o(()=>Yt.clicks),name:o(()=>Yt.name),preload:o(()=>Yt.preload),slide:{index:97,content:"",note:"",title:"Observability",level:1,noteHTML:`Ask them what they think observability is before revealing the definition.
+`,raw:"",frontmatter:Yt,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4005,id:97,no:98},__clicksContext:null,__preloaded:!1}),Zt=u({}),Yc=u({layout:o(()=>Zt.layout),transition:o(()=>Zt.transition),class:o(()=>Zt.class),clicks:o(()=>Zt.clicks),name:o(()=>Zt.name),preload:o(()=>Zt.preload),slide:{index:98,content:"",note:"",title:"Logging In Effect",level:1,noteHTML:`Put some emphasis on the integration with telemetry tools.
+`,raw:"",frontmatter:Zt,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4027,id:98,no:99},__clicksContext:null,__preloaded:!1}),Xt=u({}),Zc=u({layout:o(()=>Xt.layout),transition:o(()=>Xt.transition),class:o(()=>Xt.class),clicks:o(()=>Xt.clicks),name:o(()=>Xt.name),preload:o(()=>Xt.preload),slide:{index:99,content:"",note:"",title:"Example",level:1,noteHTML:`Mention that we'll discuss logging in more detail later if we have time.
+`,raw:"",frontmatter:Xt,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4046,id:99,no:100},__clicksContext:null,__preloaded:!1}),es=u({}),Xc=u({layout:o(()=>es.layout),transition:o(()=>es.transition),class:o(()=>es.class),clicks:o(()=>es.clicks),name:o(()=>es.name),preload:o(()=>es.preload),slide:{index:100,content:"",note:"",title:"Metrics",level:1,noteHTML:`TODO: I don't know much about metrics
+`,raw:"",frontmatter:es,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4065,id:100,no:101},__clicksContext:null,__preloaded:!1}),ts=u({}),ed=u({layout:o(()=>ts.layout),transition:o(()=>ts.transition),class:o(()=>ts.class),clicks:o(()=>ts.clicks),name:o(()=>ts.name),preload:o(()=>ts.preload),slide:{index:101,content:"",note:"",title:"Tracing",level:1,noteHTML:"",raw:"",frontmatter:ts,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4077,id:101,no:102},__clicksContext:null,__preloaded:!1}),ss=u({}),td=u({layout:o(()=>ss.layout),transition:o(()=>ss.transition),class:o(()=>ss.class),clicks:o(()=>ss.clicks),name:o(()=>ss.name),preload:o(()=>ss.preload),slide:{index:102,content:"",note:"",title:"Tracing in Effect: Spans",level:1,noteHTML:"",raw:"",frontmatter:ss,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4099,id:102,no:103},__clicksContext:null,__preloaded:!1}),ns=u({}),sd=u({layout:o(()=>ns.layout),transition:o(()=>ns.transition),class:o(()=>ns.class),clicks:o(()=>ns.clicks),name:o(()=>ns.name),preload:o(()=>ns.preload),slide:{index:103,content:"",note:"",title:"Tracing in Effect: Traces",level:1,noteHTML:"",raw:"",frontmatter:ns,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4117,id:103,no:104},__clicksContext:null,__preloaded:!1}),os=u({}),nd=u({layout:o(()=>os.layout),transition:o(()=>os.transition),class:o(()=>os.class),clicks:o(()=>os.clicks),name:o(()=>os.name),preload:o(()=>os.preload),slide:{index:104,content:"",note:"",title:"Tracing in Effect: Traces",level:1,noteHTML:"",raw:"",frontmatter:os,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4135,id:104,no:105},__clicksContext:null,__preloaded:!1}),as=u({}),od=u({layout:o(()=>as.layout),transition:o(()=>as.transition),class:o(()=>as.class),clicks:o(()=>as.clicks),name:o(()=>as.name),preload:o(()=>as.preload),slide:{index:105,content:"",note:"",title:"Let's Create A Span",level:1,noteHTML:`Here we should discuss how the log functions integrate with tracing, and how logs will appear +as events in the trace.
+`,raw:"",frontmatter:as,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4146,id:105,no:106},__clicksContext:null,__preloaded:!1}),rs=u({}),ad=u({layout:o(()=>rs.layout),transition:o(()=>rs.transition),class:o(()=>rs.class),clicks:o(()=>rs.clicks),name:o(()=>rs.name),preload:o(()=>rs.preload),slide:{index:106,content:"",note:"",title:"Let's Try It Out!",level:1,noteHTML:"",raw:"",frontmatter:rs,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4229,id:106,no:107},__clicksContext:null,__preloaded:!1}),is=u({}),rd=u({layout:o(()=>is.layout),transition:o(()=>is.transition),class:o(()=>is.class),clicks:o(()=>is.clicks),name:o(()=>is.name),preload:o(()=>is.preload),slide:{index:107,content:"",note:"",title:"It Is The Same As Before",level:1,noteHTML:`Ask them if they have an idea why we don't see any change before revealing the answer
+`,raw:"",frontmatter:is,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4254,id:107,no:108},__clicksContext:null,__preloaded:!1}),ls=u({}),id=u({layout:o(()=>ls.layout),transition:o(()=>ls.transition),class:o(()=>ls.class),clicks:o(()=>ls.clicks),name:o(()=>ls.name),preload:o(()=>ls.preload),slide:{index:108,content:"",note:"",title:"Setting Up Tracing",level:1,noteHTML:"",raw:"",frontmatter:ls,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4266,id:108,no:109},__clicksContext:null,__preloaded:!1}),cs=u({}),ld=u({layout:o(()=>cs.layout),transition:o(()=>cs.transition),class:o(()=>cs.class),clicks:o(()=>cs.clicks),name:o(()=>cs.name),preload:o(()=>cs.preload),slide:{index:109,content:"",note:"",title:"A Working Example",level:1,noteHTML:`This will show up in the browser console as an Object. We can also add a logInfo to see it appear in events. +We can also discuss other types of exporters and processors.
+`,raw:"",frontmatter:cs,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4333,id:109,no:110},__clicksContext:null,__preloaded:!1}),ds=u({}),cd=u({layout:o(()=>ds.layout),transition:o(()=>ds.transition),class:o(()=>ds.class),clicks:o(()=>ds.clicks),name:o(()=>ds.name),preload:o(()=>ds.preload),slide:{index:110,content:"",note:"",noteHTML:"",raw:"",frontmatter:ds,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4366,id:110,no:111},__clicksContext:null,__preloaded:!1}),us=u({}),dd=u({layout:o(()=>us.layout),transition:o(()=>us.transition),class:o(()=>us.class),clicks:o(()=>us.clicks),name:o(()=>us.name),preload:o(()=>us.preload),slide:{index:111,content:"",note:"",title:"Data Types In Effect",level:1,noteHTML:`Ask them what they think a data type is. Then show them in the next slide ...
+`,raw:"",frontmatter:us,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4382,id:111,no:112},__clicksContext:null,__preloaded:!1}),ps=u({}),ud=u({layout:o(()=>ps.layout),transition:o(()=>ps.transition),class:o(()=>ps.class),clicks:o(()=>ps.clicks),name:o(()=>ps.name),preload:o(()=>ps.preload),slide:{index:112,content:"",note:"",title:"Option",level:1,noteHTML:`Explain how a data type wraps a value and adds functionality to it (like the decorator pattern).
+`,raw:"",frontmatter:ps,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4391,id:112,no:113},__clicksContext:null,__preloaded:!1}),fs=u({}),pd=u({layout:o(()=>fs.layout),transition:o(()=>fs.transition),class:o(()=>fs.class),clicks:o(()=>fs.clicks),name:o(()=>fs.name),preload:o(()=>fs.preload),slide:{index:113,content:"",note:"",title:"Using Option",level:1,noteHTML:"",raw:"",frontmatter:fs,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4408,id:113,no:114},__clicksContext:null,__preloaded:!1}),hs=u({}),fd=u({layout:o(()=>hs.layout),transition:o(()=>hs.transition),class:o(()=>hs.class),clicks:o(()=>hs.clicks),name:o(()=>hs.name),preload:o(()=>hs.preload),slide:{index:114,content:"",note:"",title:"When To Use Option",level:1,noteHTML:`There is usually some context to why a value is missing so Either is almost always better.
+`,raw:"",frontmatter:hs,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4514,id:114,no:115},__clicksContext:null,__preloaded:!1}),ms=u({}),hd=u({layout:o(()=>ms.layout),transition:o(()=>ms.transition),class:o(()=>ms.class),clicks:o(()=>ms.clicks),name:o(()=>ms.name),preload:o(()=>ms.preload),slide:{index:115,content:"",note:"",title:"Either",level:1,noteHTML:`Explain the difference between Option and Either
+`,raw:"",frontmatter:ms,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4526,id:115,no:116},__clicksContext:null,__preloaded:!1}),_s=u({}),md=u({layout:o(()=>_s.layout),transition:o(()=>_s.transition),class:o(()=>_s.class),clicks:o(()=>_s.clicks),name:o(()=>_s.name),preload:o(()=>_s.preload),slide:{index:116,content:"",note:"",title:"Using Either",level:1,noteHTML:"",raw:"",frontmatter:_s,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4550,id:116,no:117},__clicksContext:null,__preloaded:!1}),ys=u({}),_d=u({layout:o(()=>ys.layout),transition:o(()=>ys.transition),class:o(()=>ys.class),clicks:o(()=>ys.clicks),name:o(()=>ys.name),preload:o(()=>ys.preload),slide:{index:117,content:"",note:"",title:"When To Use Either",level:1,noteHTML:`I'd ask here if someone has used fp-ts before, then explain why it was a nightmare to have Reader, ReaderEither, ReaderTask, etc... just use ReaderTaskEither for everything.
+`,raw:"",frontmatter:ys,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4639,id:117,no:118},__clicksContext:null,__preloaded:!1}),gs=u({}),yd=u({layout:o(()=>gs.layout),transition:o(()=>gs.transition),class:o(()=>gs.class),clicks:o(()=>gs.clicks),name:o(()=>gs.name),preload:o(()=>gs.preload),slide:{index:118,content:"",note:"",title:"Converting Between Data Types",level:1,noteHTML:"",raw:"",frontmatter:gs,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4651,id:118,no:119},__clicksContext:null,__preloaded:!1}),ks=u({}),gd=u({layout:o(()=>ks.layout),transition:o(()=>ks.transition),class:o(()=>ks.class),clicks:o(()=>ks.clicks),name:o(()=>ks.name),preload:o(()=>ks.preload),slide:{index:119,content:"",note:"",title:"Utility Types",level:1,noteHTML:`We'll look at some utility types such as Duration, List, Chunk, etc
+`,raw:"",frontmatter:ks,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4698,id:119,no:120},__clicksContext:null,__preloaded:!1}),ws=u({}),kd=u({layout:o(()=>ws.layout),transition:o(()=>ws.transition),class:o(()=>ws.class),clicks:o(()=>ws.clicks),name:o(()=>ws.name),preload:o(()=>ws.preload),slide:{index:120,content:"",note:"",title:"Duration",level:1,noteHTML:`Mention that we'll look at Equal soon
+`,raw:"",frontmatter:ws,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4707,id:120,no:121},__clicksContext:null,__preloaded:!1}),vs=u({}),wd=u({layout:o(()=>vs.layout),transition:o(()=>vs.transition),class:o(()=>vs.class),clicks:o(()=>vs.clicks),name:o(()=>vs.name),preload:o(()=>vs.preload),slide:{index:121,content:"",note:"",title:"Using Duration",level:1,noteHTML:"",raw:"",frontmatter:vs,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4728,id:121,no:122},__clicksContext:null,__preloaded:!1}),bs=u({}),vd=u({layout:o(()=>bs.layout),transition:o(()=>bs.transition),class:o(()=>bs.class),clicks:o(()=>bs.clicks),name:o(()=>bs.name),preload:o(()=>bs.preload),slide:{index:122,content:"",note:"",title:"Data Structures",level:1,noteHTML:"",raw:"",frontmatter:bs,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4761,id:122,no:123},__clicksContext:null,__preloaded:!1}),Es=u({}),bd=u({layout:o(()=>Es.layout),transition:o(()=>Es.transition),class:o(()=>Es.class),clicks:o(()=>Es.clicks),name:o(()=>Es.name),preload:o(()=>Es.preload),slide:{index:123,content:"",note:"",title:"Array",level:1,noteHTML:"",raw:"",frontmatter:Es,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4776,id:123,no:124},__clicksContext:null,__preloaded:!1}),Ts=u({}),Ed=u({layout:o(()=>Ts.layout),transition:o(()=>Ts.transition),class:o(()=>Ts.class),clicks:o(()=>Ts.clicks),name:o(()=>Ts.name),preload:o(()=>Ts.preload),slide:{index:124,content:"",note:"",title:"Chunk",level:1,noteHTML:"",raw:"",frontmatter:Ts,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4801,id:124,no:125},__clicksContext:null,__preloaded:!1}),Ls=u({}),Td=u({layout:o(()=>Ls.layout),transition:o(()=>Ls.transition),class:o(()=>Ls.class),clicks:o(()=>Ls.clicks),name:o(()=>Ls.name),preload:o(()=>Ls.preload),slide:{index:125,content:"",note:"",title:"Using Chunk",level:1,noteHTML:"",raw:"",frontmatter:Ls,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4808,id:125,no:126},__clicksContext:null,__preloaded:!1}),Ms=u({}),Ld=u({layout:o(()=>Ms.layout),transition:o(()=>Ms.transition),class:o(()=>Ms.class),clicks:o(()=>Ms.clicks),name:o(()=>Ms.name),preload:o(()=>Ms.preload),slide:{index:126,content:"",note:"",title:"List",level:1,noteHTML:"",raw:"",frontmatter:Ms,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4821,id:126,no:127},__clicksContext:null,__preloaded:!1}),$s=u({}),Md=u({layout:o(()=>$s.layout),transition:o(()=>$s.transition),class:o(()=>$s.class),clicks:o(()=>$s.clicks),name:o(()=>$s.name),preload:o(()=>$s.preload),slide:{index:127,content:"",note:"",title:"HashMap & HashSet",level:1,noteHTML:"",raw:"",frontmatter:$s,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4838,id:127,no:128},__clicksContext:null,__preloaded:!1}),Os=u({}),$d=u({layout:o(()=>Os.layout),transition:o(()=>Os.transition),class:o(()=>Os.class),clicks:o(()=>Os.clicks),name:o(()=>Os.name),preload:o(()=>Os.preload),slide:{index:128,content:"",note:"",title:"Questions?",level:1,noteHTML:"",raw:"",frontmatter:Os,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4845,id:128,no:129},__clicksContext:null,__preloaded:!1}),Ps=u({}),Od=u({layout:o(()=>Ps.layout),transition:o(()=>Ps.transition),class:o(()=>Ps.class),clicks:o(()=>Ps.clicks),name:o(()=>Ps.name),preload:o(()=>Ps.preload),slide:{index:129,content:"",note:"",title:"Concurrency",level:1,noteHTML:"",raw:"",frontmatter:Ps,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4850,id:129,no:130},__clicksContext:null,__preloaded:!1}),As=u({layout:"two-cols-header",layoutClass:"gap-16"}),Pd=u({layout:o(()=>As.layout),transition:o(()=>As.transition),class:o(()=>As.class),clicks:o(()=>As.clicks),name:o(()=>As.name),preload:o(()=>As.preload),slide:{index:130,content:"",note:"",title:"Multitasking",level:1,noteHTML:"",raw:"",frontmatter:As,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4885,id:130,no:131},__clicksContext:null,__preloaded:!1}),Ss=u({}),Ad=u({layout:o(()=>Ss.layout),transition:o(()=>Ss.transition),class:o(()=>Ss.class),clicks:o(()=>Ss.clicks),name:o(()=>Ss.name),preload:o(()=>Ss.preload),slide:{index:131,content:"",note:"",title:"Effect's Fiber Model",level:1,noteHTML:"",raw:"",frontmatter:Ss,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4916,id:131,no:132},__clicksContext:null,__preloaded:!1}),Cs=u({}),Sd=u({layout:o(()=>Cs.layout),transition:o(()=>Cs.transition),class:o(()=>Cs.class),clicks:o(()=>Cs.clicks),name:o(()=>Cs.name),preload:o(()=>Cs.preload),slide:{index:132,content:"",note:"",title:"How Do Fibers Work?",level:1,noteHTML:"",raw:"",frontmatter:Cs,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4929,id:132,no:133},__clicksContext:null,__preloaded:!1}),xs=u({}),Cd=u({layout:o(()=>xs.layout),transition:o(()=>xs.transition),class:o(()=>xs.class),clicks:o(()=>xs.clicks),name:o(()=>xs.name),preload:o(()=>xs.preload),slide:{index:133,content:"",note:"",title:"Why Fibers?",level:1,noteHTML:"",raw:"",frontmatter:xs,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4944,id:133,no:134},__clicksContext:null,__preloaded:!1}),Is=u({}),xd=u({layout:o(()=>Is.layout),transition:o(()=>Is.transition),class:o(()=>Is.class),clicks:o(()=>Is.clicks),name:o(()=>Is.name),preload:o(()=>Is.preload),slide:{index:134,content:"",note:"",title:"Using Fibers: creation",level:1,noteHTML:"",raw:"",frontmatter:Is,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4960,id:134,no:135},__clicksContext:null,__preloaded:!1}),Hs=u({}),Id=u({layout:o(()=>Hs.layout),transition:o(()=>Hs.transition),class:o(()=>Hs.class),clicks:o(()=>Hs.clicks),name:o(()=>Hs.name),preload:o(()=>Hs.preload),slide:{index:135,content:"",note:"",title:"Using Fibers: awaiting",level:1,noteHTML:"",raw:"",frontmatter:Hs,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4979,id:135,no:136},__clicksContext:null,__preloaded:!1}),js=u({}),Hd=u({layout:o(()=>js.layout),transition:o(()=>js.transition),class:o(()=>js.class),clicks:o(()=>js.clicks),name:o(()=>js.name),preload:o(()=>js.preload),slide:{index:136,content:"",note:"",title:"Using Fibers: joining",level:1,noteHTML:"",raw:"",frontmatter:js,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:4997,id:136,no:137},__clicksContext:null,__preloaded:!1}),Rs=u({}),jd=u({layout:o(()=>Rs.layout),transition:o(()=>Rs.transition),class:o(()=>Rs.class),clicks:o(()=>Rs.clicks),name:o(()=>Rs.name),preload:o(()=>Rs.preload),slide:{index:137,content:"",note:"",title:"Looking At The Original Example",level:1,noteHTML:"",raw:"",frontmatter:Rs,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:5015,id:137,no:138},__clicksContext:null,__preloaded:!1}),Ds=u({}),Rd=u({layout:o(()=>Ds.layout),transition:o(()=>Ds.transition),class:o(()=>Ds.class),clicks:o(()=>Ds.clicks),name:o(()=>Ds.name),preload:o(()=>Ds.preload),slide:{index:138,content:"",note:"",title:"Trying It Out",level:1,noteHTML:`If we remove the fork it will run in the main fiber, so the while loop won't. +Also, if we remove the while loop, the program will terminate immediately +terminating the forked fiber too.
+`,raw:"",frontmatter:Ds,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:5088,id:138,no:139},__clicksContext:null,__preloaded:!1}),Fs=u({}),Dd=u({layout:o(()=>Fs.layout),transition:o(()=>Fs.transition),class:o(()=>Fs.class),clicks:o(()=>Fs.clicks),name:o(()=>Fs.name),preload:o(()=>Fs.preload),slide:{index:139,content:"",note:"",title:"Fiber To Fiber Communication",level:1,noteHTML:"",raw:"",frontmatter:Fs,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:5119,id:139,no:140},__clicksContext:null,__preloaded:!1}),Vs=u({}),Fd=u({layout:o(()=>Vs.layout),transition:o(()=>Vs.transition),class:o(()=>Vs.class),clicks:o(()=>Vs.clicks),name:o(()=>Vs.name),preload:o(()=>Vs.preload),slide:{index:140,content:"",note:"",title:"YAGNI",level:1,noteHTML:`Mention that most of these are not needed for most applications because the relevant effect operations have built-in concurrency settings (like Effect.all). +We mentioned this a while ago.
+`,raw:"",frontmatter:Vs,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:5130,id:140,no:141},__clicksContext:null,__preloaded:!1}),Ns=u({}),Vd=u({layout:o(()=>Ns.layout),transition:o(()=>Ns.transition),class:o(()=>Ns.class),clicks:o(()=>Ns.clicks),name:o(()=>Ns.name),preload:o(()=>Ns.preload),slide:{index:141,content:"",note:"",title:"Best Practices",level:1,noteHTML:"",raw:"",frontmatter:Ns,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:5159,id:141,no:142},__clicksContext:null,__preloaded:!1}),Ws=u({}),Nd=u({layout:o(()=>Ws.layout),transition:o(()=>Ws.transition),class:o(()=>Ws.class),clicks:o(()=>Ws.clicks),name:o(()=>Ws.name),preload:o(()=>Ws.preload),slide:{index:142,content:"",note:"",title:"Other Features of Effect",level:1,noteHTML:"",raw:"",frontmatter:Ws,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:5180,id:142,no:143},__clicksContext:null,__preloaded:!1}),Bs=u({}),Wd=u({layout:o(()=>Bs.layout),transition:o(()=>Bs.transition),class:o(()=>Bs.class),clicks:o(()=>Bs.clicks),name:o(()=>Bs.name),preload:o(()=>Bs.preload),slide:{index:143,content:"",note:"",title:"Now Let's Write A Program In Effect!",level:1,noteHTML:"",raw:"",frontmatter:Bs,filepath:"/home/addamsson/projects/effect-workshop/apps/slidev/slides.md",start:5197,id:143,no:144},__clicksContext:null,__preloaded:!1}),Bd=[{no:1,meta:il,component:async()=>{try{return await k(()=>import("./slidev/1-BHPkFf3e.js"),__vite__mapDeps([0,1,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 1:",e),w}}},{no:2,meta:ll,component:async()=>{try{return await k(()=>import("./slidev/2-xDjqLMaQ.js"),__vite__mapDeps([8,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 2:",e),w}}},{no:3,meta:cl,component:async()=>{try{return await k(()=>import("./slidev/3-Dg74FiFI.js"),__vite__mapDeps([10,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 3:",e),w}}},{no:4,meta:dl,component:async()=>{try{return await k(()=>import("./slidev/4-BTjdD2KE.js"),__vite__mapDeps([11,1,12,13,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 4:",e),w}}},{no:5,meta:ul,component:async()=>{try{return await k(()=>import("./slidev/5-nBoVGEcM.js"),__vite__mapDeps([14,1,12,13,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 5:",e),w}}},{no:6,meta:pl,component:async()=>{try{return await k(()=>import("./slidev/6-u6cFqo6u.js"),__vite__mapDeps([15,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 6:",e),w}}},{no:7,meta:fl,component:async()=>{try{return await k(()=>import("./slidev/7-DDxe0u03.js"),__vite__mapDeps([16,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 7:",e),w}}},{no:8,meta:hl,component:async()=>{try{return await k(()=>import("./slidev/8-DynurH1h.js"),__vite__mapDeps([22,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 8:",e),w}}},{no:9,meta:ml,component:async()=>{try{return await k(()=>import("./slidev/9-ohpx54xf.js"),__vite__mapDeps([23,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 9:",e),w}}},{no:10,meta:_l,component:async()=>{try{return await k(()=>import("./slidev/10-BVxqwmSH.js"),__vite__mapDeps([26,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 10:",e),w}}},{no:11,meta:yl,component:async()=>{try{return await k(()=>import("./slidev/11-B1ZPxJEP.js"),__vite__mapDeps([27,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 11:",e),w}}},{no:12,meta:gl,component:async()=>{try{return await k(()=>import("./slidev/12-ORXqtxMw.js"),__vite__mapDeps([28,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 12:",e),w}}},{no:13,meta:kl,component:async()=>{try{return await k(()=>import("./slidev/13-BcfHOWMz.js"),__vite__mapDeps([29,30,19,1,3,4,5,2,9,6,7]))}catch(e){return console.error("Failed to load slide 13:",e),w}}},{no:14,meta:wl,component:async()=>{try{return await k(()=>import("./slidev/14-DmHlKDRo.js"),__vite__mapDeps([31,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 14:",e),w}}},{no:15,meta:vl,component:async()=>{try{return await k(()=>import("./slidev/15-V2oKGrvG.js"),__vite__mapDeps([32,30,19,1,3,4,5,2,9,6,7]))}catch(e){return console.error("Failed to load slide 15:",e),w}}},{no:16,meta:bl,component:async()=>{try{return await k(()=>import("./slidev/16-BcGnVYds.js"),__vite__mapDeps([33,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 16:",e),w}}},{no:17,meta:El,component:async()=>{try{return await k(()=>import("./slidev/17-Bmm_Edhe.js"),__vite__mapDeps([34,30,19,1,3,4,5,2,9,6,7,35]))}catch(e){return console.error("Failed to load slide 17:",e),w}}},{no:18,meta:Tl,component:async()=>{try{return await k(()=>import("./slidev/18-CSyN9lY9.js"),__vite__mapDeps([36,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 18:",e),w}}},{no:19,meta:Ll,component:async()=>{try{return await k(()=>import("./slidev/19-CutXsOJ-.js"),__vite__mapDeps([37,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 19:",e),w}}},{no:20,meta:Ml,component:async()=>{try{return await k(()=>import("./slidev/20-Cc1FWGer.js"),__vite__mapDeps([38,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 20:",e),w}}},{no:21,meta:$l,component:async()=>{try{return await k(()=>import("./slidev/21-Bo38nxrS.js"),__vite__mapDeps([39,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 21:",e),w}}},{no:22,meta:Ol,component:async()=>{try{return await k(()=>import("./slidev/22-CP-jxZ3x.js"),__vite__mapDeps([40,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 22:",e),w}}},{no:23,meta:Pl,component:async()=>{try{return await k(()=>import("./slidev/23-C5Eewny6.js"),__vite__mapDeps([41,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 23:",e),w}}},{no:24,meta:Al,component:async()=>{try{return await k(()=>import("./slidev/24-BMzjZXYE.js"),__vite__mapDeps([42,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 24:",e),w}}},{no:25,meta:Sl,component:async()=>{try{return await k(()=>import("./slidev/25-Ba8ruR1s.js"),__vite__mapDeps([43,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 25:",e),w}}},{no:26,meta:Cl,component:async()=>{try{return await k(()=>import("./slidev/26-QR6vfxga.js"),__vite__mapDeps([44,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 26:",e),w}}},{no:27,meta:xl,component:async()=>{try{return await k(()=>import("./slidev/27-BPpgwRs2.js"),__vite__mapDeps([45,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 27:",e),w}}},{no:28,meta:Il,component:async()=>{try{return await k(()=>import("./slidev/28-R_qJTj63.js"),__vite__mapDeps([46,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 28:",e),w}}},{no:29,meta:Hl,component:async()=>{try{return await k(()=>import("./slidev/29-LnXDJ_BC.js"),__vite__mapDeps([47,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 29:",e),w}}},{no:30,meta:jl,component:async()=>{try{return await k(()=>import("./slidev/30-ZAYF1IAf.js"),__vite__mapDeps([48,30,19,1,3,4,5,2,9,6,7]))}catch(e){return console.error("Failed to load slide 30:",e),w}}},{no:31,meta:Rl,component:async()=>{try{return await k(()=>import("./slidev/31-BjIaZRph.js"),__vite__mapDeps([49,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 31:",e),w}}},{no:32,meta:Dl,component:async()=>{try{return await k(()=>import("./slidev/32-DNMY9Nxl.js"),__vite__mapDeps([50,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 32:",e),w}}},{no:33,meta:Fl,component:async()=>{try{return await k(()=>import("./slidev/33-B0C_Vrvp.js"),__vite__mapDeps([51,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 33:",e),w}}},{no:34,meta:Vl,component:async()=>{try{return await k(()=>import("./slidev/34-DLxGCeLL.js"),__vite__mapDeps([52,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 34:",e),w}}},{no:35,meta:Nl,component:async()=>{try{return await k(()=>import("./slidev/35-C37rrpF2.js"),__vite__mapDeps([53,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 35:",e),w}}},{no:36,meta:Wl,component:async()=>{try{return await k(()=>import("./slidev/36-CqKC7cQO.js"),__vite__mapDeps([54,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 36:",e),w}}},{no:37,meta:Bl,component:async()=>{try{return await k(()=>import("./slidev/37-DKAMtTb4.js"),__vite__mapDeps([55,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 37:",e),w}}},{no:38,meta:ql,component:async()=>{try{return await k(()=>import("./slidev/38-dHpDaRTi.js"),__vite__mapDeps([56,30,19,1,3,4,5,2,9,6,7]))}catch(e){return console.error("Failed to load slide 38:",e),w}}},{no:39,meta:zl,component:async()=>{try{return await k(()=>import("./slidev/39-DsfITLaO.js"),__vite__mapDeps([57,30,19,1,3,4,5,2,9,6,7]))}catch(e){return console.error("Failed to load slide 39:",e),w}}},{no:40,meta:Ul,component:async()=>{try{return await k(()=>import("./slidev/40-D-m1Na5e.js"),__vite__mapDeps([58,30,19,1,3,4,5,2,9,6,7]))}catch(e){return console.error("Failed to load slide 40:",e),w}}},{no:41,meta:Kl,component:async()=>{try{return await k(()=>import("./slidev/41-JqO_66qi.js"),__vite__mapDeps([59,30,19,1,3,4,5,2,9,6,7]))}catch(e){return console.error("Failed to load slide 41:",e),w}}},{no:42,meta:Jl,component:async()=>{try{return await k(()=>import("./slidev/42-C5KqZPtd.js"),__vite__mapDeps([60,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 42:",e),w}}},{no:43,meta:Gl,component:async()=>{try{return await k(()=>import("./slidev/43-DRVn-SIK.js"),__vite__mapDeps([61,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 43:",e),w}}},{no:44,meta:Ql,component:async()=>{try{return await k(()=>import("./slidev/44-WE0i0S8d.js"),__vite__mapDeps([62,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 44:",e),w}}},{no:45,meta:Yl,component:async()=>{try{return await k(()=>import("./slidev/45-3AQBZOZ5.js"),__vite__mapDeps([63,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 45:",e),w}}},{no:46,meta:Zl,component:async()=>{try{return await k(()=>import("./slidev/46-D7XcHAB_.js"),__vite__mapDeps([64,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 46:",e),w}}},{no:47,meta:Xl,component:async()=>{try{return await k(()=>import("./slidev/47-DOc5GDxX.js"),__vite__mapDeps([65,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 47:",e),w}}},{no:48,meta:ec,component:async()=>{try{return await k(()=>import("./slidev/48-BV5YRlng.js"),__vite__mapDeps([66,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 48:",e),w}}},{no:49,meta:tc,component:async()=>{try{return await k(()=>import("./slidev/49-CySNQoqb.js"),__vite__mapDeps([67,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 49:",e),w}}},{no:50,meta:sc,component:async()=>{try{return await k(()=>import("./slidev/50-Gro55dcl.js"),__vite__mapDeps([68,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 50:",e),w}}},{no:51,meta:nc,component:async()=>{try{return await k(()=>import("./slidev/51-CQSOqY4U.js"),__vite__mapDeps([69,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 51:",e),w}}},{no:52,meta:oc,component:async()=>{try{return await k(()=>import("./slidev/52-B3NKbwTJ.js"),__vite__mapDeps([70,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 52:",e),w}}},{no:53,meta:ac,component:async()=>{try{return await k(()=>import("./slidev/53-Dwf9RT6O.js"),__vite__mapDeps([71,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 53:",e),w}}},{no:54,meta:rc,component:async()=>{try{return await k(()=>import("./slidev/54-BjeDcGF0.js"),__vite__mapDeps([72,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 54:",e),w}}},{no:55,meta:ic,component:async()=>{try{return await k(()=>import("./slidev/55-DSFgOqBA.js"),__vite__mapDeps([73,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 55:",e),w}}},{no:56,meta:lc,component:async()=>{try{return await k(()=>import("./slidev/56-DB2PS7zT.js"),__vite__mapDeps([74,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 56:",e),w}}},{no:57,meta:cc,component:async()=>{try{return await k(()=>import("./slidev/57-DU8oDTEH.js"),__vite__mapDeps([75,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 57:",e),w}}},{no:58,meta:dc,component:async()=>{try{return await k(()=>import("./slidev/58-BCdVibjD.js"),__vite__mapDeps([76,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 58:",e),w}}},{no:59,meta:uc,component:async()=>{try{return await k(()=>import("./slidev/59-CnsooNlR.js"),__vite__mapDeps([77,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 59:",e),w}}},{no:60,meta:pc,component:async()=>{try{return await k(()=>import("./slidev/60-De4qcAoG.js"),__vite__mapDeps([78,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 60:",e),w}}},{no:61,meta:fc,component:async()=>{try{return await k(()=>import("./slidev/61-DHibA5j2.js"),__vite__mapDeps([79,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 61:",e),w}}},{no:62,meta:hc,component:async()=>{try{return await k(()=>import("./slidev/62-DH4AOZW0.js"),__vite__mapDeps([80,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 62:",e),w}}},{no:63,meta:mc,component:async()=>{try{return await k(()=>import("./slidev/63-DbPCebjm.js"),__vite__mapDeps([81,30,19,1,3,4,5,2,9,6,7]))}catch(e){return console.error("Failed to load slide 63:",e),w}}},{no:64,meta:_c,component:async()=>{try{return await k(()=>import("./slidev/64-CQhyPi6-.js"),__vite__mapDeps([82,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 64:",e),w}}},{no:65,meta:yc,component:async()=>{try{return await k(()=>import("./slidev/65-BeuMyH5B.js"),__vite__mapDeps([83,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 65:",e),w}}},{no:66,meta:gc,component:async()=>{try{return await k(()=>import("./slidev/66-BAZgAZV0.js"),__vite__mapDeps([84,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 66:",e),w}}},{no:67,meta:kc,component:async()=>{try{return await k(()=>import("./slidev/67-DvIjJShw.js"),__vite__mapDeps([85,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 67:",e),w}}},{no:68,meta:wc,component:async()=>{try{return await k(()=>import("./slidev/68-DaqAS0jV.js"),__vite__mapDeps([86,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 68:",e),w}}},{no:69,meta:vc,component:async()=>{try{return await k(()=>import("./slidev/69-CQ6iQy95.js"),__vite__mapDeps([87,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 69:",e),w}}},{no:70,meta:bc,component:async()=>{try{return await k(()=>import("./slidev/70-CvA0hCnw.js"),__vite__mapDeps([88,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 70:",e),w}}},{no:71,meta:Ec,component:async()=>{try{return await k(()=>import("./slidev/71-BdSA0zXB.js"),__vite__mapDeps([89,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 71:",e),w}}},{no:72,meta:Tc,component:async()=>{try{return await k(()=>import("./slidev/72-CzOppAhj.js"),__vite__mapDeps([90,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 72:",e),w}}},{no:73,meta:Lc,component:async()=>{try{return await k(()=>import("./73-d_xBnJjj.js"),__vite__mapDeps([91,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 73:",e),w}}},{no:74,meta:Mc,component:async()=>{try{return await k(()=>import("./slidev/74-kotIT-Bf.js"),__vite__mapDeps([92,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 74:",e),w}}},{no:75,meta:$c,component:async()=>{try{return await k(()=>import("./slidev/75-DK2RyN2X.js"),__vite__mapDeps([93,30,19,1,3,4,5,2,9,6,7]))}catch(e){return console.error("Failed to load slide 75:",e),w}}},{no:76,meta:Oc,component:async()=>{try{return await k(()=>import("./slidev/76-uhEXMR8K.js"),__vite__mapDeps([94,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 76:",e),w}}},{no:77,meta:Pc,component:async()=>{try{return await k(()=>import("./slidev/77-CWRgT7JM.js"),__vite__mapDeps([95,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 77:",e),w}}},{no:78,meta:Ac,component:async()=>{try{return await k(()=>import("./slidev/78-BLjM0VTd.js"),__vite__mapDeps([96,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 78:",e),w}}},{no:79,meta:Sc,component:async()=>{try{return await k(()=>import("./slidev/79-C5-MLjnA.js"),__vite__mapDeps([97,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 79:",e),w}}},{no:80,meta:Cc,component:async()=>{try{return await k(()=>import("./slidev/80-DQum2VnA.js"),__vite__mapDeps([98,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 80:",e),w}}},{no:81,meta:xc,component:async()=>{try{return await k(()=>import("./slidev/81-B29rt1RU.js"),__vite__mapDeps([99,30,19,1,3,4,5,2,9,6,7]))}catch(e){return console.error("Failed to load slide 81:",e),w}}},{no:82,meta:Ic,component:async()=>{try{return await k(()=>import("./slidev/82-CQr_tdfn.js"),__vite__mapDeps([100,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 82:",e),w}}},{no:83,meta:Hc,component:async()=>{try{return await k(()=>import("./slidev/83-C8MasU6j.js"),__vite__mapDeps([101,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 83:",e),w}}},{no:84,meta:jc,component:async()=>{try{return await k(()=>import("./84-BAFsp5ua.js"),__vite__mapDeps([102,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 84:",e),w}}},{no:85,meta:Rc,component:async()=>{try{return await k(()=>import("./slidev/85-CKpqH0Kj.js"),__vite__mapDeps([103,30,19,1,3,4,5,2,9,6,7]))}catch(e){return console.error("Failed to load slide 85:",e),w}}},{no:86,meta:Dc,component:async()=>{try{return await k(()=>import("./slidev/86-BCWyqarl.js"),__vite__mapDeps([104,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 86:",e),w}}},{no:87,meta:Fc,component:async()=>{try{return await k(()=>import("./slidev/87-CJZlmMBz.js"),__vite__mapDeps([105,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 87:",e),w}}},{no:88,meta:Vc,component:async()=>{try{return await k(()=>import("./slidev/88-BaD8CzKe.js"),__vite__mapDeps([106,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 88:",e),w}}},{no:89,meta:Nc,component:async()=>{try{return await k(()=>import("./slidev/89-BW-ClHxF.js"),__vite__mapDeps([107,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 89:",e),w}}},{no:90,meta:Wc,component:async()=>{try{return await k(()=>import("./slidev/90-BsXkEFj_.js"),__vite__mapDeps([108,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 90:",e),w}}},{no:91,meta:Bc,component:async()=>{try{return await k(()=>import("./slidev/91-C7rslJD1.js"),__vite__mapDeps([109,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 91:",e),w}}},{no:92,meta:qc,component:async()=>{try{return await k(()=>import("./slidev/92-CsowE81P.js"),__vite__mapDeps([110,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 92:",e),w}}},{no:93,meta:zc,component:async()=>{try{return await k(()=>import("./slidev/93-DlwyV53z.js"),__vite__mapDeps([111,30,19,1,3,4,5,2,9,6,7]))}catch(e){return console.error("Failed to load slide 93:",e),w}}},{no:94,meta:Uc,component:async()=>{try{return await k(()=>import("./slidev/94-By9L1h-e.js"),__vite__mapDeps([112,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 94:",e),w}}},{no:95,meta:Kc,component:async()=>{try{return await k(()=>import("./slidev/95-Bop8G5_Q.js"),__vite__mapDeps([113,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 95:",e),w}}},{no:96,meta:Jc,component:async()=>{try{return await k(()=>import("./slidev/96-DA30vNvH.js"),__vite__mapDeps([114,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 96:",e),w}}},{no:97,meta:Gc,component:async()=>{try{return await k(()=>import("./slidev/97-8dYIB0GU.js"),__vite__mapDeps([115,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 97:",e),w}}},{no:98,meta:Qc,component:async()=>{try{return await k(()=>import("./slidev/98-BIk0Bnf_.js"),__vite__mapDeps([116,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 98:",e),w}}},{no:99,meta:Yc,component:async()=>{try{return await k(()=>import("./slidev/99-DoBLCcq2.js"),__vite__mapDeps([117,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 99:",e),w}}},{no:100,meta:Zc,component:async()=>{try{return await k(()=>import("./slidev/100-B-iQvc7f.js"),__vite__mapDeps([118,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 100:",e),w}}},{no:101,meta:Xc,component:async()=>{try{return await k(()=>import("./slidev/101-DjRJ_f33.js"),__vite__mapDeps([119,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 101:",e),w}}},{no:102,meta:ed,component:async()=>{try{return await k(()=>import("./slidev/102-Djm4oOnr.js"),__vite__mapDeps([120,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 102:",e),w}}},{no:103,meta:td,component:async()=>{try{return await k(()=>import("./slidev/103-xT-RzWO7.js"),__vite__mapDeps([121,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 103:",e),w}}},{no:104,meta:sd,component:async()=>{try{return await k(()=>import("./slidev/104-D3XCXNfa.js"),__vite__mapDeps([122,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 104:",e),w}}},{no:105,meta:nd,component:async()=>{try{return await k(()=>import("./105-DfsS-xwM.js"),__vite__mapDeps([123,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 105:",e),w}}},{no:106,meta:od,component:async()=>{try{return await k(()=>import("./slidev/106-BSlBTJab.js"),__vite__mapDeps([124,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 106:",e),w}}},{no:107,meta:ad,component:async()=>{try{return await k(()=>import("./slidev/107-X2ZvClDs.js"),__vite__mapDeps([125,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 107:",e),w}}},{no:108,meta:rd,component:async()=>{try{return await k(()=>import("./slidev/108-ZBqkx4gd.js"),__vite__mapDeps([126,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 108:",e),w}}},{no:109,meta:id,component:async()=>{try{return await k(()=>import("./slidev/109-CM4Tsi9L.js"),__vite__mapDeps([127,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 109:",e),w}}},{no:110,meta:ld,component:async()=>{try{return await k(()=>import("./slidev/110-6fibMCKC.js"),__vite__mapDeps([128,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 110:",e),w}}},{no:111,meta:cd,component:async()=>{try{return await k(()=>import("./slidev/111-B7dGnNvZ.js"),__vite__mapDeps([129,30,19,1,3,4,5,2,9,6,7]))}catch(e){return console.error("Failed to load slide 111:",e),w}}},{no:112,meta:dd,component:async()=>{try{return await k(()=>import("./slidev/112-ByNrGESS.js"),__vite__mapDeps([130,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 112:",e),w}}},{no:113,meta:ud,component:async()=>{try{return await k(()=>import("./slidev/113-CXeA7Zzt.js"),__vite__mapDeps([131,30,19,1,3,4,5,2,9,6,7]))}catch(e){return console.error("Failed to load slide 113:",e),w}}},{no:114,meta:pd,component:async()=>{try{return await k(()=>import("./slidev/114-CJo3cacz.js"),__vite__mapDeps([132,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 114:",e),w}}},{no:115,meta:fd,component:async()=>{try{return await k(()=>import("./slidev/115-CivjMs3F.js"),__vite__mapDeps([133,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 115:",e),w}}},{no:116,meta:hd,component:async()=>{try{return await k(()=>import("./slidev/116-DqF0HehU.js"),__vite__mapDeps([134,30,19,1,3,4,5,2,9,6,7]))}catch(e){return console.error("Failed to load slide 116:",e),w}}},{no:117,meta:md,component:async()=>{try{return await k(()=>import("./slidev/117-BUdAzYTz.js"),__vite__mapDeps([135,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 117:",e),w}}},{no:118,meta:_d,component:async()=>{try{return await k(()=>import("./slidev/118-CxCCcNBC.js"),__vite__mapDeps([136,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 118:",e),w}}},{no:119,meta:yd,component:async()=>{try{return await k(()=>import("./slidev/119-iR1uNpqK.js"),__vite__mapDeps([137,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 119:",e),w}}},{no:120,meta:gd,component:async()=>{try{return await k(()=>import("./slidev/120-DsF_431E.js"),__vite__mapDeps([138,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 120:",e),w}}},{no:121,meta:kd,component:async()=>{try{return await k(()=>import("./slidev/121-CAhpTaz5.js"),__vite__mapDeps([139,30,19,1,3,4,5,2,9,6,7]))}catch(e){return console.error("Failed to load slide 121:",e),w}}},{no:122,meta:wd,component:async()=>{try{return await k(()=>import("./slidev/122-DNNLmW8C.js"),__vite__mapDeps([140,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 122:",e),w}}},{no:123,meta:vd,component:async()=>{try{return await k(()=>import("./slidev/123-gX1ztYnS.js"),__vite__mapDeps([141,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 123:",e),w}}},{no:124,meta:bd,component:async()=>{try{return await k(()=>import("./slidev/124-Bm27k2C4.js"),__vite__mapDeps([142,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 124:",e),w}}},{no:125,meta:Ed,component:async()=>{try{return await k(()=>import("./slidev/125-C2jGIcac.js"),__vite__mapDeps([143,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 125:",e),w}}},{no:126,meta:Td,component:async()=>{try{return await k(()=>import("./slidev/126-d6C52xql.js"),__vite__mapDeps([144,30,19,1,3,4,5,2,9,6,7]))}catch(e){return console.error("Failed to load slide 126:",e),w}}},{no:127,meta:Ld,component:async()=>{try{return await k(()=>import("./slidev/127-DDeHJpnk.js"),__vite__mapDeps([145,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 127:",e),w}}},{no:128,meta:Md,component:async()=>{try{return await k(()=>import("./slidev/128-Dzoas59g.js"),__vite__mapDeps([146,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 128:",e),w}}},{no:129,meta:$d,component:async()=>{try{return await k(()=>import("./slidev/129-DDldHBT9.js"),__vite__mapDeps([147,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 129:",e),w}}},{no:130,meta:Od,component:async()=>{try{return await k(()=>import("./slidev/130-DiWToE-O.js"),__vite__mapDeps([148,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 130:",e),w}}},{no:131,meta:Pd,component:async()=>{try{return await k(()=>import("./slidev/131-EvcdJS4e.js"),__vite__mapDeps([149,1,12,13,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 131:",e),w}}},{no:132,meta:Ad,component:async()=>{try{return await k(()=>import("./slidev/132-D3r1g00w.js"),__vite__mapDeps([150,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 132:",e),w}}},{no:133,meta:Sd,component:async()=>{try{return await k(()=>import("./slidev/133-C8IsvIzv.js"),__vite__mapDeps([151,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 133:",e),w}}},{no:134,meta:Cd,component:async()=>{try{return await k(()=>import("./slidev/134-Bsqgk2KZ.js"),__vite__mapDeps([152,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 134:",e),w}}},{no:135,meta:xd,component:async()=>{try{return await k(()=>import("./slidev/135-B_O-7zhe.js"),__vite__mapDeps([153,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 135:",e),w}}},{no:136,meta:Id,component:async()=>{try{return await k(()=>import("./slidev/136-BMh0cYBl.js"),__vite__mapDeps([154,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 136:",e),w}}},{no:137,meta:Hd,component:async()=>{try{return await k(()=>import("./slidev/137-Fi4e7NpE.js"),__vite__mapDeps([155,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 137:",e),w}}},{no:138,meta:jd,component:async()=>{try{return await k(()=>import("./slidev/138-Oy-QM-ys.js"),__vite__mapDeps([156,24,1,18,4,2,25,9,3,5,6,7]))}catch(e){return console.error("Failed to load slide 138:",e),w}}},{no:139,meta:Rd,component:async()=>{try{return await k(()=>import("./slidev/139-DvfALCGg.js"),__vite__mapDeps([157,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 139:",e),w}}},{no:140,meta:Dd,component:async()=>{try{return await k(()=>import("./slidev/140-BOZob3Kh.js"),__vite__mapDeps([158,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 140:",e),w}}},{no:141,meta:Fd,component:async()=>{try{return await k(()=>import("./slidev/141-Cz1MJ4lJ.js"),__vite__mapDeps([159,17,3,1,4,5,18,2,19,20,21,9,6,7]))}catch(e){return console.error("Failed to load slide 141:",e),w}}},{no:142,meta:Vd,component:async()=>{try{return await k(()=>import("./slidev/142-CaKaFSqd.js"),__vite__mapDeps([160,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 142:",e),w}}},{no:143,meta:Nd,component:async()=>{try{return await k(()=>import("./slidev/143-DdmFvWlC.js"),__vite__mapDeps([161,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 143:",e),w}}},{no:144,meta:Wd,component:async()=>{try{return await k(()=>import("./slidev/144-mpLJqKku.js"),__vite__mapDeps([162,1,9,2,3,4,5,6,7]))}catch(e){return console.error("Failed to load slide 144:",e),w}}}],te=xo(Bd);function no(e){return te.value.find(t=>{var s;return t.no===+e||((s=t.meta.slide)==null?void 0:s.frontmatter.routeAlias)===e})}function on(e,t){var n;(typeof e=="number"||typeof e=="string")&&(e=no(e));const s=((n=e.meta.slide)==null?void 0:n.frontmatter.routeAlias)??e.no;return t?`/presenter/${s}`:`/${s}`}function qd(e,t,{mode:s="replace"}={}){const n=Yn();return o({get(){const a=n.currentRoute.value.query[e];return a==null?t:Array.isArray(a)?a.filter(Boolean):a},set(a){Vn(()=>{(n.currentRoute.value.query[e]??(t==null?void 0:t.toString()))!==a.toString()&&n[Co(s)]({query:{...n.currentRoute.value.query,[e]:`${a}`===t?void 0:a}})})}})}const vo=S(0);function bo(e){if(e===!1||e==="false")return null;if(e==null||e===!0||e==="true")return"+1";if(typeof e=="string"&&"+-".includes(e[0]))return e;const t=+e;return Number.isNaN(t)?(console.error(`Invalid "at" prop value: ${e}`),null):t}function zd(e){return Array.isArray(e)?[bo(e[0]),bo(e[1])]:null}function Fa(e,t=0,s){const n={get current(){return vn(+e.value,t,n.total)},set current(a){e.value=vn(+a,t,n.total)},clicksStart:t,relativeOffsets:new Map,maxMap:ir(new Map),onMounted(){},calculateSince(a,r=1){const i=bo(a);if(i==null)return null;let l,c,d;if(typeof i=="string"){const p=n.currentOffset,f=+i;l=p+f,c=p+f+r-1,d=f+r-1}else l=i,c=i+r-1,d=0;return{start:l,end:+Number.POSITIVE_INFINITY,max:c,delta:d,currentOffset:o(()=>n.current-l),isCurrent:o(()=>n.current===l),isActive:o(()=>n.current>=l)}},calculateRange(a){const r=zd(a);if(r==null)return null;const[i,l]=r;let c,d,p;return typeof i=="string"?(c=n.currentOffset+ +i,p=+i):(c=i,p=0),typeof l=="string"?(d=c+ +l,p+=+l):d=l,{start:c,end:d,max:d,delta:p,currentOffset:o(()=>n.current-c),isCurrent:o(()=>n.current===c),isActive:o(()=>c<=n.current&&n.current{const l=oo(i),c=Math.floor(l/(n+a)),d=(l+a-c*(n+a))/2;let p=i[0],f=i[1];p[0]>f[0]&&(p=i[1],f=i[0]);const h=Math.atan((f[1]-p[1])/(f[0]-p[0]));for(let m=0;m b.setAttribute(E,T);for(const b of m){const E=document.createElementNS(Za,"path");if(v(E,"d",b),v(E,"fill","none"),v(E,"stroke",s.color||"currentColor"),v(E,"stroke-width",`${l}`),s.opacity!==void 0&&v(E,"style",`opacity:${s.opacity}`),d){const T=E.getTotalLength();_.push(T),g+=T}e.appendChild(E),y.push(E)}if(d){let b=0;for(let E=0;E