1+
2+ <!doctype html>
3+ < html lang ="en " class ="no-js ">
4+ < head >
5+
6+ < meta charset ="utf-8 ">
7+ < meta name ="viewport " content ="width=device-width,initial-scale=1 ">
8+
9+
10+
11+
12+
13+
14+ < link rel ="icon " href ="/assets/images/favicon.png ">
15+ < meta name ="generator " content ="mkdocs-1.6.1, mkdocs-material-9.6.15 ">
16+
17+
18+
19+ < title > Savvy Games</ title >
20+
21+
22+
23+ < link rel ="stylesheet " href ="/assets/stylesheets/main.342714a4.min.css ">
24+
25+
26+ < link rel ="stylesheet " href ="/assets/stylesheets/palette.06af60db.min.css ">
27+
28+
29+
30+
31+
32+
33+
34+
35+
36+
37+
38+
39+ < link rel ="preconnect " href ="https://fonts.gstatic.com " crossorigin >
40+ < link rel ="stylesheet " href ="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback ">
41+ < style > : root {--md-text-font : "Roboto" ;--md-code-font : "Roboto Mono" }</ style >
42+
43+
44+
45+ < script > __md_scope = new URL ( "/" , location ) , __md_hash = e => [ ...e ] . reduce ( ( ( e , _ ) => ( e << 5 ) - e + _ . charCodeAt ( 0 ) ) , 0 ) , __md_get = ( e , _ = localStorage , t = __md_scope ) => JSON . parse ( _ . getItem ( t . pathname + "." + e ) ) , __md_set = ( e , _ , t = localStorage , a = __md_scope ) => { try { t . setItem ( a . pathname + "." + e , JSON . stringify ( _ ) ) } catch ( e ) { } } </ script >
46+
47+
48+
49+
50+
51+
52+ </ head >
53+
54+
55+
56+
57+
58+
59+
60+
61+
62+ < body dir ="ltr " data-md-color-scheme ="slate " data-md-color-primary ="white " data-md-color-accent ="lime ">
63+
64+
65+ < input class ="md-toggle " data-md-toggle ="drawer " type ="checkbox " id ="__drawer " autocomplete ="off ">
66+ < input class ="md-toggle " data-md-toggle ="search " type ="checkbox " id ="__search " autocomplete ="off ">
67+ < label class ="md-overlay " for ="__drawer "> </ label >
68+ < div data-md-component ="skip ">
69+
70+ </ div >
71+ < div data-md-component ="announce ">
72+
73+ </ div >
74+
75+
76+
77+
78+
79+
80+ < header class ="md-header md-header--shadow " data-md-component ="header ">
81+ < nav class ="md-header__inner md-grid " aria-label ="Header ">
82+ < a href ="/. " title ="Savvy Games " class ="md-header__button md-logo " aria-label ="Savvy Games " data-md-component ="logo ">
83+
84+
85+ < svg xmlns ="http://www.w3.org/2000/svg " viewBox ="0 0 24 24 "> < path d ="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54 "/> </ svg >
86+
87+ </ a >
88+ < label class ="md-header__button md-icon " for ="__drawer ">
89+
90+ < svg xmlns ="http://www.w3.org/2000/svg " viewBox ="0 0 24 24 "> < path d ="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z "/> </ svg >
91+ </ label >
92+ < div class ="md-header__title " data-md-component ="header-title ">
93+ < div class ="md-header__ellipsis ">
94+ < div class ="md-header__topic ">
95+ < span class ="md-ellipsis ">
96+ Savvy Games
97+ </ span >
98+ </ div >
99+ < div class ="md-header__topic " data-md-component ="header-topic ">
100+ < span class ="md-ellipsis ">
101+
102+
103+
104+ </ span >
105+ </ div >
106+ </ div >
107+ </ div >
108+
109+
110+ < form class ="md-header__option " data-md-component ="palette ">
111+
112+
113+
114+
115+ < input class ="md-option " data-md-color-media ="(prefers-color-scheme: dark) " data-md-color-scheme ="slate " data-md-color-primary ="white " data-md-color-accent ="lime " aria-label ="Switch to light mode " type ="radio " name ="__palette " id ="__palette_0 ">
116+
117+ < label class ="md-header__button md-icon " title ="Switch to light mode " for ="__palette_1 " hidden >
118+ < svg xmlns ="http://www.w3.org/2000/svg " viewBox ="0 0 24 24 "> < path d ="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5s-1.65.15-2.39.42zM3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29zm.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14zM20.65 7l-1.77 3.79a7.02 7.02 0 0 0-2.38-4.15zm-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29zM12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44z "/> </ svg >
119+ </ label >
120+
121+
122+
123+
124+
125+ < input class ="md-option " data-md-color-media ="(prefers-color-scheme: light) " data-md-color-scheme ="default " data-md-color-primary ="black " data-md-color-accent ="lime " aria-label ="Switch to dark mode " type ="radio " name ="__palette " id ="__palette_1 ">
126+
127+ < label class ="md-header__button md-icon " title ="Switch to dark mode " for ="__palette_0 " hidden >
128+ < svg xmlns ="http://www.w3.org/2000/svg " viewBox ="0 0 24 24 "> < path d ="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3zm3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95zm-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31 "/> </ svg >
129+ </ label >
130+
131+
132+ </ form >
133+
134+
135+
136+ < script > var palette = __md_get ( "__palette" ) ; if ( palette && palette . color ) { if ( "(prefers-color-scheme)" === palette . color . media ) { var media = matchMedia ( "(prefers-color-scheme: light)" ) , input = document . querySelector ( media . matches ?"[data-md-color-media='(prefers-color-scheme: light)']" :"[data-md-color-media='(prefers-color-scheme: dark)']" ) ; palette . color . media = input . getAttribute ( "data-md-color-media" ) , palette . color . scheme = input . getAttribute ( "data-md-color-scheme" ) , palette . color . primary = input . getAttribute ( "data-md-color-primary" ) , palette . color . accent = input . getAttribute ( "data-md-color-accent" ) } for ( var [ key , value ] of Object . entries ( palette . color ) ) document . body . setAttribute ( "data-md-color-" + key , value ) } </ script >
137+
138+
139+
140+
141+
142+ < label class ="md-header__button md-icon " for ="__search ">
143+
144+ < svg xmlns ="http://www.w3.org/2000/svg " viewBox ="0 0 24 24 "> < path d ="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5 "/> </ svg >
145+ </ label >
146+ < div class ="md-search " data-md-component ="search " role ="dialog ">
147+ < label class ="md-search__overlay " for ="__search "> </ label >
148+ < div class ="md-search__inner " role ="search ">
149+ < form class ="md-search__form " name ="search ">
150+ < input type ="text " class ="md-search__input " name ="query " aria-label ="Search " placeholder ="Search " autocapitalize ="off " autocorrect ="off " autocomplete ="off " spellcheck ="false " data-md-component ="search-query " required >
151+ < label class ="md-search__icon md-icon " for ="__search ">
152+
153+ < svg xmlns ="http://www.w3.org/2000/svg " viewBox ="0 0 24 24 "> < path d ="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5 "/> </ svg >
154+
155+ < svg xmlns ="http://www.w3.org/2000/svg " viewBox ="0 0 24 24 "> < path d ="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z "/> </ svg >
156+ </ label >
157+ < nav class ="md-search__options " aria-label ="Search ">
158+
159+ < button type ="reset " class ="md-search__icon md-icon " title ="Clear " aria-label ="Clear " tabindex ="-1 ">
160+
161+ < svg xmlns ="http://www.w3.org/2000/svg " viewBox ="0 0 24 24 "> < path d ="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z "/> </ svg >
162+ </ button >
163+ </ nav >
164+
165+ </ form >
166+ < div class ="md-search__output ">
167+ < div class ="md-search__scrollwrap " tabindex ="0 " data-md-scrollfix >
168+ < div class ="md-search-result " data-md-component ="search-result ">
169+ < div class ="md-search-result__meta ">
170+ Initializing search
171+ </ div >
172+ < ol class ="md-search-result__list " role ="presentation "> </ ol >
173+ </ div >
174+ </ div >
175+ </ div >
176+ </ div >
177+ </ div >
178+
179+
180+
181+ </ nav >
182+
183+ </ header >
184+
185+ < div class ="md-container " data-md-component ="container ">
186+
187+
188+
189+
190+
191+
192+ < main class ="md-main " data-md-component ="main ">
193+ < div class ="md-main__inner md-grid ">
194+
195+
196+
197+ < div class ="md-sidebar md-sidebar--primary " data-md-component ="sidebar " data-md-type ="navigation " >
198+ < div class ="md-sidebar__scrollwrap ">
199+ < div class ="md-sidebar__inner ">
200+
201+
202+
203+
204+
205+
206+ < nav class ="md-nav md-nav--primary md-nav--integrated " aria-label ="Navigation " data-md-level ="0 ">
207+ < label class ="md-nav__title " for ="__drawer ">
208+ < a href ="/. " title ="Savvy Games " class ="md-nav__button md-logo " aria-label ="Savvy Games " data-md-component ="logo ">
209+
210+
211+ < svg xmlns ="http://www.w3.org/2000/svg " viewBox ="0 0 24 24 "> < path d ="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54 "/> </ svg >
212+
213+ </ a >
214+ Savvy Games
215+ </ label >
216+
217+ < ul class ="md-nav__list " data-md-scrollfix >
218+
219+
220+
221+
222+
223+
224+
225+
226+
227+
228+
229+
230+ < li class ="md-nav__item md-nav__item--nested ">
231+
232+
233+
234+ < input class ="md-nav__toggle md-toggle " type ="checkbox " id ="__nav_1 " >
235+
236+
237+ < label class ="md-nav__link " for ="__nav_1 " id ="__nav_1_label " tabindex ="0 ">
238+
239+
240+
241+ < span class ="md-ellipsis ">
242+ Redaplica
243+
244+ </ span >
245+
246+
247+ < span class ="md-nav__icon md-icon "> </ span >
248+ </ label >
249+
250+ < nav class ="md-nav " data-md-level ="1 " aria-labelledby ="__nav_1_label " aria-expanded ="false ">
251+ < label class ="md-nav__title " for ="__nav_1 ">
252+ < span class ="md-nav__icon md-icon "> </ span >
253+ Redaplica
254+ </ label >
255+ < ul class ="md-nav__list " data-md-scrollfix >
256+
257+
258+
259+
260+
261+
262+
263+ < li class ="md-nav__item ">
264+ < a href ="/Redaplica/1-user-interface/ " class ="md-nav__link ">
265+
266+
267+
268+ < span class ="md-ellipsis ">
269+ 🕹️ Redaplica Demo
270+
271+ </ span >
272+
273+
274+ </ a >
275+ </ li >
276+
277+
278+
279+
280+
281+
282+
283+
284+
285+
286+ < li class ="md-nav__item ">
287+ < a href ="/Redaplica/2-technical-details/ " class ="md-nav__link ">
288+
289+
290+
291+ < span class ="md-ellipsis ">
292+ 🔐 Technical Overview
293+
294+ </ span >
295+
296+
297+ </ a >
298+ </ li >
299+
300+
301+
302+
303+ </ ul >
304+ </ nav >
305+
306+ </ li >
307+
308+
309+
310+ </ ul >
311+ </ nav >
312+ </ div >
313+ </ div >
314+ </ div >
315+
316+
317+
318+
319+ < div class ="md-content " data-md-component ="content ">
320+ < article class ="md-content__inner md-typeset ">
321+
322+ < h1 > 404 - Not found</ h1 >
323+
324+ </ article >
325+ </ div >
326+
327+
328+ < script > var target = document . getElementById ( location . hash . slice ( 1 ) ) ; target && target . name && ( target . checked = target . name . startsWith ( "__tabbed_" ) ) </ script >
329+ </ div >
330+
331+ </ main >
332+
333+ < footer class ="md-footer ">
334+
335+ < div class ="md-footer-meta md-typeset ">
336+ < div class ="md-footer-meta__inner md-grid ">
337+ < div class ="md-copyright ">
338+
339+
340+ Made with
341+ < a href ="https://squidfunk.github.io/mkdocs-material/ " target ="_blank " rel ="noopener ">
342+ Material for MkDocs
343+ </ a >
344+
345+ </ div >
346+
347+ </ div >
348+ </ div >
349+ </ footer >
350+
351+ </ div >
352+ < div class ="md-dialog " data-md-component ="dialog ">
353+ < div class ="md-dialog__inner md-typeset "> </ div >
354+ </ div >
355+
356+
357+
358+
359+ < script id ="__config " type ="application/json "> { "base" : "/" , "features" : [ "toc.follow" , "toc.integrate" ] , "search" : "/assets/javascripts/workers/search.d50fe291.min.js" , "tags" : null , "translations" : { "clipboard.copied" : "Copied to clipboard" , "clipboard.copy" : "Copy to clipboard" , "search.result.more.one" : "1 more on this page" , "search.result.more.other" : "# more on this page" , "search.result.none" : "No matching documents" , "search.result.one" : "1 matching document" , "search.result.other" : "# matching documents" , "search.result.placeholder" : "Type to start searching" , "search.result.term.missing" : "Missing" , "select.version" : "Select version" } , "version" : null } </ script >
360+
361+
362+ < script src ="/assets/javascripts/bundle.56ea9cef.min.js "> </ script >
363+
364+
365+ </ body >
366+ </ html >
0 commit comments