From f146c26933bdcf5293b6ea84d582fcd3906bc03c Mon Sep 17 00:00:00 2001 From: Bill Monkman Date: Fri, 15 May 2020 16:57:53 -0700 Subject: [PATCH] Ported over design guide and docs dir --- DESIGN.md | 174 ++++++++++++++++++++++++++++++++++++++++ docs/img/logo-small.png | Bin 0 -> 18050 bytes docs/img/logo.png | Bin 0 -> 26228 bytes 3 files changed, 174 insertions(+) create mode 100644 DESIGN.md create mode 100644 docs/img/logo-small.png create mode 100644 docs/img/logo.png diff --git a/DESIGN.md b/DESIGN.md new file mode 100644 index 000000000..99faef3fd --- /dev/null +++ b/DESIGN.md @@ -0,0 +1,174 @@ +![zero](https://github.com/commitdev/zero/blob/master/docs/img/logo-small.png?raw=true) + +# Design + +**In this document `zero` is a placeholder for some named utility.** + +The guiding principle behind `zero` is to **make it easy for developers to ship +to production on day 1** + +## Developer Experience (DX) + +Developer Experience is the equivalent of User Experience when the primary user +of the product is a developer. DX cares about the developer experience of using +a product, its libs, SDKs, documentation, frameworks, open-source solutions, +general tools, APIs, etc. + +**DX Pillars** + +- Function: Something is only as useful as it is functional. If it doesn't work + it's of no value. Maintaining function is a key element of quality and + percetpion of quality. +- Stability: Performance and reliability +- Ease of Use: The tool alone only forms one part of the developers journey. + Resoures like github issues, documentation, clear workflows, snippets, etc + all help reduce the friction in using and learning a new tool. +- Clarity: Clear, concise, actionable information makes the world of difference + when using a tool. + +## DX Guidelines + +- easy onboarding. it must be easy for someone to get started with the tool, + and to join an existing \$setup or create a new one. +- follows [principle of least astonishment][1] +- use short easy to remember commands +- help commands on [every sub command][2] +- pipe-able / machine-readable output +- feedback at the end of a command. every tool and command is guiding someone + down a path and we should tell them where to go next. for example, a command + that results in some build artifact; tell them the typical next step. github + does the same thing with their post remote push message telling you to open a + PR. any command that takes a long time to run should let the user know though + some kind of visual feedback. for scripts, this feedback should be able to be + suppressed, like curl silent mode. +- colors; when do we use them? anything needs to work _without_ colors too, so + they can't be the primary way of labeling / indicating anything. just an + enhancement to words or symbols that are already on the screen. For an + example of things to think about [see this mocha issue][3] + +## Implementation Principles + +- Discoverable: +- Familiar: +- Alterable: +- Parsable: +- Consistency: as a command line tool we need to establish a convention and + stick to it. things like `[cmd] [noun] [verb]` with flags. consistent flag options, + etc. short form flags are possible but we should encourage long form flags + when scripting usage of the tool so that things are more self-documenting. +- error messages should be easy to understand and steer someone towards an + answer / next step. +- error early: if we can detect things that will be problems do it as early as + possible before proceeding with an operation. it makes no sense to take + expensive actions that may mutate state which will only half-finish +- idempotency + +## Users + +- Our users are not power users +- typically experienced but not devops masters +- havent built their own full environment before or they have but are missing + best practices / some clear conventions. +- Users will more often be joining a team or a project much more frequently + than creating an environment from scratch. That only happens one time. + +## Installation + +- must be easy to install for users of different platforms with the least + amount of lift + linux, osx. should look at mechanisms for installation like brew, apt, curl +- dont have to worry about windows for now but we shouldn't back ourselves into + a corner + +## Documentation + +Documentation should be consistent, easy to follow, and follow the user through +their own journey. We should only make use of commonly installed utilities which +come with the prerequisites we define or commands we _know_ are installed. For +example use `psql` vs `pgcli` in shell examples. + +Each README should have an outline on: + +- what the tool does +- which dependencies to install +- how to install the application +- how to contribute +- communication channels + +To ensure the README is easy to read, please keep length limited. Any FAQ +sections or hints / tips / design decisions / etc should go into a separate +documentation path. + +Shell commands should be preceeded with a `$` dollar sign to act as a visual +representation of the shell. While the world will be moving towards `zsh` we +should use compatible examples whenever possible. Shell commands should wrap at +the 80 character limit. For long commands use a `\` to move additional arguments +or flags onto separate lines, and omit the preceeding `$` so that it can be +copy-pasted without the dollar sign affecting interpretation. + +```shell +$ zero arg \ + --flag-one \ + --flag-two \ + three +``` + +## Concepts + +#### Help + +built in help should follow standard conventions. `[option]` with square +brackets. `` which are required with greater-than and lesser-than +signs. + +```shell +$ zero --help +$ zero noun [[]noun] verb --help +$ zero noun verb [options] --help +$ +$ Usage: noun verb [options] +$ # flags list +``` + +or + +```shell +$ zero +``` + +## Glossary + +Terms we'll use repeatedly should have clear definitions or use common knowledge +definitions. Some of these terms may still require definitions. Any frequently +used word should be added to this list if it applies to usage in `zero`. + +- **Project**: A project is the top level (root) entity that contains the infrastructure and configuration. A project is compartmentalized and has no awareness of the details of other projects. Environments are built using Modules as part of a project. + +- **Module**: This is a git repository that contains everything Zero needs to set up a piece of a project. + - What’s included in a single Module? + - Templates + - Documentation + - Potentially definition of something to execute (terraform, api calls, etc) + - Examples of Current modules: + - Zero-aws-eks-stack + - Zero-deployable-backend + - Zero-deployable-react-frontend + +- Application all the pieces of your project working together (Frontend, Service, Infrastructure). + +- **Infrastructure**: The systems your application runs on and other required dependencies that are not part of the Frontends or Services. Typically provided by a cloud provider and provisioned with Terraform. (For example AWS EKS, RDS, Cloudfront, etc.) + +- **Environment**: A running instance of your entire Application. Examples being Dev / Staging / UAT / Production (one or many set up for a single project) + +- **Frontend**: A single page app serving the front-end of a web application. Typically makes requests to a Service. + +- **Service**: A backend app serving APIs or providing funtionality for a web application. Typically serves requests from the Frontend App. + +- **Pipeline**: CI/CD pipeline responsible for running automated tests and deploying Frontend Apps and/or Services to Environments. + + + + +[1]: https://en.wikipedia.org/wiki/Principle_of_least_astonishment +[2]: https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-help.html +[3]: https://github.com/mochajs/mocha/issues/802 diff --git a/docs/img/logo-small.png b/docs/img/logo-small.png new file mode 100644 index 0000000000000000000000000000000000000000..0d1c1e0d2fef6e323a1f8817eef2e22f81773ca8 GIT binary patch literal 18050 zcmY&-rN{9<90zWr^FB=#r;JdWC_a_Jhw`MLRByVnH1OkbNC;x_4P8`MZ zJN}#(5(I-4r+%Okr}j%i(F8%BlF*XEQY4|E2LupmX!oiJ2t$m6RY%aYwu9AU31iSj zAYwWTU_lYSw`JvkXM2{y*s2doNg5ppA)!cm$`B5FMFQIpTyubQls&w-YfrBLZ*~1z4 zO-ME(qENGi(;-1;H2G|rDU@kDTrl%R;sG$ovUXz_zG*v!5~51f)@1#wF!p4 zvJGK;=6s`q?)nQX_r@2`=0}d+ftZ%_$Dz`W^&>e2H;IGcnWp{|jE3n&X}b~Xql&DS z>1}gqt#^$y!MZd%G;hanQ=Q`I}J}uDBvq?}brEacThPDd6EJ$T%J&UpXm= zbUd-fG)PqJ5ZG6Y`wYg167YsY0=EK=tq-k@s$-R+@4h7b{X$wIMmdRW!mu_DpIYB; zfIDLq!Bflg;6P?$yNvvn)$2}I@XXBADeX0`;Eky5$Ka3lLPbzIT-*$@nbVLbDE9z- zW@RW*s-eW`B%BX{1Pm@0TqYMf%8#Q~^v)6L>JR=XJ4{f3I0`ftI1x$!0tw{!AIVxI z3_r43Oe<(iea6x+(7mX32rT|eI|QvT)d3kh-%h@C>4Q2U$ai>f0!d(?<4N%fVNZpq z;xLVozmv+1AjA3h<+0PCO8O7P5op3zg+}C}m4cNASmfp8CC+f1FfTyz_`T$ko*+Kp ziuO{ZBAxdY-w>q2HtguLqv=AF{E^z#W+&c4_}#yFW6+Aq3#}J?-Pd&^<%R(%FG=H^ z^kochP`FMZuhdPMSu#R1npQYDuUz48DV8$y8EZNA�H6p?vdSP-}RXF-XEcLj^-~Psm`qaNQ_)l5Q#(?>OnA~` zRmA-4Z`TK}vtLoZfV-f&u(1Mf##|4+9FEzuW0%RqoC3#=*x#$SgKW)e?Qd;p)oT5+ zA=ZheOKcnaG(5aN_{{Bv`+@R-@PYNg;S0g{l%} zDvWGM@jbaUMqRd&T9<^EtXoAEQl=`XF|U#RT6ZhFQ-&+M&py;Ev%?4Fha2s4t(s z_&{-tX80=`O}{eOV$xW#Ls>;x@g&%%Ci#GNq77;uvZ2IBj4#yNZ$upGvny zw?*`s`=SqCgsHI6yj$bnM(;-W#xI;HHloKfN~a@R1)7a(4o#9x^A=ra zG|o!SF&^zNSbvSqo)-9~=duRVDN~#5Ro^SM8hC&GvUIbAVS)RJ$8u%iwPgJ3#k|-Y z%aYZccS+Dv!-8Q(v$#p@JYcDoRcBo%qeQ3FTlzH*snVzny}CiLMD#d)s-uv!DbkXNg#OWx~sZ@fAgj9r7#L|<}M$&Al ztZ7K;=Bf4*4wGjSL}`hWT@%04)iSp0{%A5W%+b4OZ8QckWYGtwB&V=d>eHFg#V^`a zRIjG4RyPbbRG7JHC01%Itu8q)d9$9elCrw9%COcP;Y^3;C~=n*PvOp{(o6GGFjySl&eFPS(0{$*|T|=Nf=9^2@yBrudQbH*rSXI>}gv#$h^!M>%7?hiN2JO_jXVRiIu=% zfZ49gE?qwt*)LQnG9;1C*oW{9v{iHyBFb2c$YNn?;bl?Zu-oXb;iu7A=pD3=7MZG< zG}RnL*u;cAd_GQj+kKbt&}f-xaA;Qy%vz0JvxkG4k@MI&x`G;gIu6{Zi8zUFG`H|< zNm`SHGJ6!4l6bpy?p$t+|F+%~KjQuf$&s`0i^u^dk?0EifLcQvG?anvN7?Y`?%;UC?HohwUnw_d&TIRJ5 zn`7N7l`1L~d5aPi>q|IQqk2DTS@kb_od=xF&#RADkCG3%w1^wJDfQTVt$jXSzicmJ z(qN0jx3jg{uDtTRc+Ng$;S;i6Z9G@S>A4k+G?!MMj8knD)A6mm%YXDgA013)X=S!t ztVV3oZh6$KR6Og4OG?;Cd^WqU<4NHb1s7d6Gp_oyP1IRkBkdvmi`lx1yF1Dn;%d2i zQzWfy)jCyLt(7uc9?~Ipxp&=O+wUszskz$9@5=GTcz5fe%`LB6YizHC(n{31x6*s) zj>$>oTfACc(`)=Z|8ncU6}St%ZmDBoiF``1rU<<}dLDvAP0;N=@FecovZP#|6{Q0(q+mP|-ql{`ct@b0AthPhv^9}3m zb?j@qEA1|>Pn+egQqQLj^mfnd`)g!gao?L4gU9~5?50?zSU6%O;@>>8?uzdjgSLoW zQ(YymUa!?W(Qa$=)91ebIxe0V!T(K&FHi_rZ)wsz=yrNo3mpZ~pbyGjy)E6`37G9u6i5GdGC*feg*+aM4^w1={~lcIqu ziJgP3skxO2iIcmX3CaI*w0dw+ntA&UDpq{6DPxt^GD?R?PG&8Y4;==Y_`Uard9 zVowfZq0TfRQIDF}S!LB*a^YXc&+r0u-cq}#W#sqmu1Du4y1W(G5eLKdzE7|BN%j{$ ztiHyEqwR8WcixG)^1_tEHhHgBx@uL?TbBCHzt?2u)V}8}q0rmd7Oh2xZ%c9()ZS2g zPan#LlIER^jpN40|CaP3iV`k#^3xLzAG%SdWH`>ReeyTLb6gkUSm!XdvB|!7N4;3* zX^T$P9K6^>BqSF7YnHz(LhbllMZD-B@mi&~%FnlQLLXFmjb3;}Pn;Py&a3}cy*AtC zW%pUWZFm}L5n}PGlkcP~b!i>2cZ4k4N*Tf7`=Dtz=nEmz z){OLdho+i%zNgWd+q?WETL*D&!K8kcdJnh3rhcP+P54?_=E}94Gxv7s(53RC#B7NB z`qZk`wD+FEpTTD*%HX3}8@9PGYJHgZd{$%6=O>fEL$n0fpptfqT31P^_(8jH(R3{g&H|!KQo92fC9= z6e_9l_$G8t(U|5q1s-(TG?Y>CWG?HSCWHxNr^!~X{i9c6TC6g*PdahM8{Mxw zNt|I_xDi$I?c146JE`?wSjSY@N43Ml$F5YcQTFA3kU?RvyQ@UI;?#^fd$Ri?)1X!`~DED*bg;fRtHPD zzKiD*QO0-gd{oe4YEjlhD|JhaIIco%c%v0GUvq?nDV+12qM6OL;#C;Ya-d!O%fLX5 zveMHCD8`D334(jQemieG#jG^n<4)RE(e1*}%5*T+97HUjetkD2qRU?#ZSMcQdxj;I zR>uN;0V!~LPeeB(uN0NkqnT!$Wdx+A}pkY zA9SS|j}WQjaiLzUX0>1~W=QUW5V2!_5(fSg8Xk!Pw_-SuKZrjw&6CjHFo(k|bH(+G zCSBc3Idnh$-dU@!E0w=Au^E(k=$hExXNG`00n&o0E=l#3Fe^g4=~nV}_xycAVF z^-|1%j(G}g_k|ponZadO4mh5;e-rBQk%}o3HAk7TN-Y&PQ&^nMgXGU)>JwJJHq%G! z4qCzf61*eHJ(AjqnzIHCBZY+_F#M?>)h9tEg z*@uJBK|w&M5gdbo13T2&$Y(EawGF`DQWNi%eXJHBLK%g9GRTK9-G`ecCs5HHglf%6 ziZAzTP*o$8!Te2WEE5{Iy40AC_L|;nmKt~T^|z^>2NGVb27|ZdYH{eqvJ#7xMetN} zYNLXcX2zOnpv>XA*pMiz{Kn#PjwmbPU6dlo_+`oM! zRw~~oxDVv={>-c`q2v1S2P#5ALnhs?5xkJzL%OVp(aM_lOEw|(ebdIkpE5J2K;!ti z6L0K~Z8(oqU}m?R&WTS76YO35deGYkUN+hjq%=QZ8J;SMAT@3`v{wlQyHe{exT`?N zLBf9Rl_iL*znuETC61^x7Xu7BZJ?7`A+9K4IhV6G#hyI4$qXR{*;#J#mRXE`S9`P< zO3jR)9h=tjG&7aJCUq{Eu1pwrIvT~w`H)qNRep$Fb(I~n=4h&M%RKx3k468lOoHM$ zP+eQxFVd@Wh8lBR<1qpe0NvpKly6eMg5(*3Muf2{6cGRDZ8_;<^y=4A>~uzC%5l#) z+eNJNDE9hoXkX7DiA52gl+G9gvm-x#M9Dz#Z__>!mRhTO&U!g!V6CMSY zBum?k#~-#SzGz{35$10S>*!SB2K2>=y4qA;^Co8+o2pf&$(O)Qgc;U`inMD{-DY0T zf(16Km5^yx_%MNOuy!oR6wmd;XHzz{vEts0U7MMoE23>tUeq7y3cR38n}xeXdZ-i- zhh4eoTs$>L$Dz3^-kxrt0PYaWg?^?#qb2xg80|_{np{Axh91OEb-s3dlNlt$&*oPuO{@qc$7^f^be|5IiZVq__#4@VzT03`bLBB%)%YU{{qwd4Y-LDrC&Lh$ zb;7dht@;O6C1`zI!??6nE|HvwIcRg%W`$X^9H!pn9kPWxnah==ck~`{Ctg?GnH7Y~ zGjKfSy?lL2+7F0R%=M?}kb|=LQ3Wv@LZ6V0MW{cbGfn<1h0Qtz3^6~FRE(HucwR;- z8{OIMv4$J%VW!pPwMuE2kcv5yb0p7@%7P?Aco<>igE{v%}2FbuPp=;F@ z__~mfPt5@RUA8plW+=fks18;WW9l4ZgZ5Hu z%bc3-ok1!PP56x8_g(dYkG>o~i)}xu9p+lLnfBc-&($Ex#%R5k5jZR?clfe9GYSwhFua z@+|p?^mn#_`OF?E8;rN(f>98|L)3*9RV}R+b)9RpbQ;@p+h@!7)Ff4AMJg8e zTm&M&VH9abXRV+G3?u|yj8gnaoJdIH*xn{KKcW(u$V`*ScipO4cJCU=G~<~*Ud_4g zM?vk4#AcKMt7#+O865va)9rP?oeOe2|V^{(m>HdQnj~nlg`N zdph0B&0$(OD=RC7O--r3>2`)iM8G|qFC$AxNPH7JS!=RfsWXBO5+pS=G@L0@q7DiQ zVsYhlzum*i#3C54XLrA&SgOLR?p`Lm#*jK&rEjvzOBEB;uJQQifdM^>hxGi zNlE&zkC*JeAKY7R`-t3kBjmcXZMcEGeiIYYI0#TqCo^AqdwVAdi+X;({kuP&c6~Uc zQ>)gW%H&|T+W~?83=czxhlk@Z>4Tt<2*OTIe*GplW=@k=QUWI?CO&cE#EBMFR#x7b zE0Piy7w0!NHg-H--G*vdjhg0tMQ}Wt=w;jX3f$Pxrl6t{EK>aGy718*7YKCB<7v}X zf-D{d1P2F~FA|BRAS;WcqM{N%XlTDsAzG(drL3bPGdMWd==1JjvE9w{g@hC*1kKMtl@g#`%-2?8Zc z2K$3Ux9eE>iqK%>+irJ1B5SLvhUDkxn@&{sU|X*>_7+McqTu3&`}u(i3k!4AYIGmB z!(oo6vigfhj(@uB-3EB%c=LQPGrptF-8IXQXf{@=~h zQ)o>M0yW;747Lqh`W&inhf94m9J`U8! z$H&QH1-7E1;!KHL4ix0uKsfsINkObW6AlU?Vf1Js_5Rbg?{Er(R$NXFGEr>k%8EMo z+f6^t4^xB*(;v-Ns{vJ7EqiB+6(nRqp`k_-sozss%+UmeguX01;_!aHIleuv+X4+4 z4Mhn^OCzvat@tf0C@ZU|2$U(4ad6N<-UXKriAJ7ai z@~K_iyb86Nxp_H082~&kpXYpDyg7jQo^(BJ6^xBZl9AEU(-*Ebm?^2N<9tVOOvDc{ zpdlj*!1|^wUQ|@{Sj%d=B@GuG0FpO0ridouNl%hIl(`BF2snvm+sZY|@qSF{89#JL z|84}OqO81fZ#kCq^|2Nj0f&FH!~O(Wm*;#av5)xs%ioUEr}pb+=X2Hi zRV!g(g`4C#bzR<-hZhqb85;{w zt$+kQzr3)jS8#Yd&`f3Xz=L3rk%yDMD&;Pp*BSIfDXXgP0q|*cyCnlwSwUXjugmkP z&#;c49?R%rr4G>MKY&EWXJ^NpFV~R&{D}$RhYtemiPhJD{ejRhq#n6{@Sl z5oqBMw8?P75LK%1fcgW9Pp{RC0AjLSq8~ZDgVNdluU$q)WU_b|Qc_Z;jL8{`CV<)i z!PUFHH~_v`vEqY)f&JOPmDkV+Pfy2FR#P+DABsL%t|10`zMM-ZD=aP}6Fh0!5bN&D zNr(UiuAVYDTObx6AMby5W+6_2Mw2X=DoypPNfQONTDvXar{z+vSS%4RPc5(GOwxhX z9y-6(X_EoPTkUAzCPFr>!x28Xlyw*&?L9m`HUeC7=KL?nFEthC`SlgNlmUXxW}_B+ zMmCGn;N{_zDNUN)eh&hPm=__i7XUeUZgYpKswxx+1`e*TVVXDcYO|xDu@M813t(8l z1eTVS`SX+b3Fh&a$YzmXzyZ=zYc@^vpQ=7>d0t!ZTQ;oLTCcNOt=2Z7dHy?RLc(ED zQ3DB-Qn`y3xBIbtdmY!^fs>{}0E0~@(}Q<*^k3cPBNJJc-f*KuIRT9Gd_3ElqL9U4GD>L&P z(K4V2DN&;2-mjM}kKghI^Kus})Y!!PflprQID{CS)D06A+}%06UUP78JXZezrL)_U zojP$c;~=n@jA3}T)BvlKl$~wkYQ~)Q>u4fv;P@UE^zYxl*=0Rn>uXlDMHkoi_jg#( z*JR0;vx=IFZJYn(N_#b101e2o-P^PM!O@XnZvZ5aFdngH^_lc1(|@Y>`0&tU zMZRAHwyX}UUzaJA-^`3W1vNEWYLbMs^gyfqeyziyB!JTY;)>aH_Fx>T(9Hn4+<$~a zY)@@#Ya5xGf|6gS^m^V6wOvzZK!L$)Ob8AR{?7;f)~e@g4f^q96vS#+zg%LGby=(H>t69S; zAWX1Xve0CL`uZfh7Zer-ct`W~Yh6c`oQO!Ux4&whe6IH^@IcxY z&?6uwgFdrpdlnyhq^X1ezkT-V=BYe8JA=C3u&9a{-e29^I3o-(z$wC;7$V z4d(xcw1=>lj(xe+1b&zaq21{;001;HAc_4zJy8cpN$RBO+sk>)N{cNq5NdDq9*qzrBF0{mAY4{_N!g zE}%t^^_p77``5R^(UpxJszZv#RY+5dIa)UT`QJZMN=nGOy1G;jM=F=gwcvyVw2QSS zcp#Gn3+C1K&|yV>Hy%L&a3xf+NCqT^AEpz3cKbs~6Gxehh7kUXNI?7izv?syc{m5c-j_mZ=! zBeymG{B3`x(*{_up(tE%zyrwufyI{B)%6*7HDSgDjCL0A&R5l{_TZzN8@r&8khNhg z!8{ZL0|UTyLKVw8i~P#V%j2@Mks4MJfS3l5FCU2f(MydA3JQ<6X@iEnKsoCV!?t z#v9-O%<$AzQ&r7xZEbBUa8}!&sR#8lg+)dN0(AnAlQlGOY3bn_(@(ZG?teZbo9;ie=Aurm2cYULcYs#HU%$Ts{ZO@X=#YUf#+ zNZu3A8xSLT+T`bphH1OqK1hI<9eSW#W!l*eS6k^EUP8c`AabUMfe=p`FJ9~M*CLbG z8&9;L&L6)`JEpLZg8TFB9*4uBu*=y9XNdO{m?)do!>U&;qn>5Go$60lqF89M_CqV< z_gdTI>&rdWC#}u;X}$1>h(2JTx$~!S@$m+1zCd}CwY7XU2;2Matht`H_Eyu>)4(9G z`8qWfSEfwM{qG?0WW9y)@p3&Bi1irQ*g_;Ixz6WHKn91t>iP5m3WfFelu_g7VZIN4 zpjQ{`Eyw`I3WUVZtVXR1Yf|RNSK-H1$JX2Bl`icA|;MO6e*f-$Eb#CR{f8u zNl6$t|K6aEr$E5U7y#KbEG7mDHP7*Q3a}WUHvF$f0ZK@I;gf~3c^RFvfdS!(EG}$7 zY`VL<*)%xd;oT)HbWudvHVOlghfPtrovRbUXhDN@r#SY{8yj> zn;1Y&BOR?`j5e?*sAi(*y9qe&Rt#yE{1bO&iiu-i6@V{<+ z_Tl2YI%uIY;BqWgra*JADsGD?7-PwpWbys*daX+z84=g)aAEjwJcEX9){|%S^y3MG zhNNA(aviSM#lVgP)GPe?HQ&SDp-mvEgBO1?P%xA!mFxkG09jyrdp=%-#}IOn0jds^ z7cOmJKyA_oD45;p93=sV0|bz6NXUeRg?9pxdH<9u6r^{=-0cN(O_k0Y*3AH$5N5DNn5_3-YpBD|JvNy*@60ihJcs>NKHWG3hcWn+FJ~&lAw?PjR2biKp8g#Si&Xz z&cV>nQqCTrU_l`!jvXfQL_p?wm|=)UaKCk6+g1Kuk3=R2KsAP#F9wL6fa^vPaG<@v zKDlxTVt>>A0|**qh`~&r5cI>@B0M0!HtUyHgHn!t5_W&fetZK0*Jl0T=;jB|fdo4Z zV6)H7o}dO3hfy~jrDg}%-xKT%xZf*+y@i{K{7p4L$NvA`a3mL|@3f=`rMnk}hgo0I zY@~2i(`#8u&zwHgHqAi1VG|j{5sy$9y3NI93|a-LYQf5wfB&Y_>PHrh#EK6eIT%)t zhA8YnsVqr+^N$;5(4jFrMxZ0iu2h+}bW!pqV{D87bpnd#0jgm?8T7>~9tW-nOmK^k zOp;aEoK8VgGsse{nxrNdN3;P_RSHpB^$S#NPS7`0SJu#8%!WEV0J5d@jG{|}Qcc_b zCI(FlxrMbjs-gjL^1d*TUN`^1O2PVP>V!NYp38GpD@YPqroR_(!Nd&K5ijpdVs7(K zGZQh4RFe;Y%XNlv$VK@NI8Wp0mzV!plsdM5dqySTbpboYO>5Pahs#ohR*HrM%1V7} zD{v)fgjnRXSTM<8IP3g1@-jKOhm$RIo$JehksFdQ?lRs)taI$?KJ1=s*XK@rRDsPi zqR!hbI0~^++uIPt^nC6@LXN0FXyo06(+2h&Z%j;09t5f%R;*YgSj;`1C}}KxlL1C~ z42(lXj%M}`Bi}RGo#BqBboeDis=nwYt{QG%POVviaBlt~fS~koU=W9#^XHjb0$s7U3ov7JS*Bktk+umhFwC_FZJq;iRCC*#RgSd#0RTN?`O`{^=!P? zfLH9`G9P`ykaV`dy3%x9Z(lpntw(LUU^;JS!TfCk^rjGB;isA%lnk$T(;ea&F0qK= zm;E?mW>=Ug(|mYppMrnWa>cEsc4)0a#x3qR{z+t96tj)XDYJEs%Oi;)gdN&#RUCGhHGoN1mCMqb^&p8U`lM~PKh|Ztv z$u7i;F)xj!3wS;CBGuve_`$P6o#I9?*Qa5}N=~@imLmH1R2oh9KAEyxT%c=+TXsEG zm&EmnxhsG?zq6r?#aY=F?LMPgrDGEv!k4}=L+9Mk0ZZGCzDoO(QsxA+zs-4< zj9scJq`5L%icsro#ykE3PhK6*Nx$`L*;;h}#ixC5U6T8a7~W!)H@d41p6@_+{KH*D zmGYsW(y)phSbXMMBNBByyb+Zdq}jq&?qQ8|F-dai>itJeEHit8uFn&GIZIm!VB!p3 z%d%5kvNmf(oiA_nR&wJGb46y~)ed$7gBguhLwJ~e*4Z0b%KW^mJ}xK@XC6@035eZF zk7iTz2}iS@SHE|G(y>QUo$^JEk~>vrpOLSy&UfLHbJe7ZIQ}!_OVAe3i3)5kR_Mc1XS{}x&&RGp@+0uzV_lR77KZ1wQ=daZy>=@rrpmmtqxop`M@tTkv z2>r_b&mOw>Hjdo^jThz=DaGE`Xk`EU2-ja|UaeO|8=N*1Zau6ZYCVl8Y%0Wn5&t{4 zpVrhVUbRSgCQ8P|*azN%7<}4BwzWEGUKhK6QDd=_BzPP!B2pvAf^6zSUaO zHGg`b6mgP=-dL@4nKLYH@}V%sUeETmEWhI#;jf>#t>sS+o)y`W{?(4h7u*-fdlYke zWp_HmiH=jPLRsY`AX^GLcUQ9~@4;C;p5E;{w46C9*Fj=%ycX?z_mT5@SxS_*tFu2$ zDZ`Gzk^EtPB-AA_;XD~kT{Ju0B^2xdU2>0b`0!YOY^SLO#t&AO5F+gn^TF<&W|6rP zqrdQbmNA1b*Z)a0(a&fl3z|_?RFjtv6|}*6UGWv2o)b+tV_30q>kdkrg*kR+i(BA2K|8I`uf2Qb}8lG8Lyg#ElR&c)jO=U`)!agNL zx}PJ)FI6gyQgRb?rt@%_<)mG}<0wuo!ax4Vr4Dh~rQpowPD=4{ow%LhCSea@%wKwP zDjF`H&O_XOmoE9yP*&I((5Ojx`d39+rHDF9RxEi!&kK$&w5Se6G2zHA(dB-=@@r$k5YSfBVe24a+|1u^N|3bLW;FuYM!* zql}7^0pI|@ZYS0BT%IkqLMrl;%nq0YiA?$}s|hBT?(9eM9i92Z9yz$gx1FsqNuj-y z453xo(9MScBbkTs634HSliu+^D4LP2IoxK;^x>y23JX=W+tIe@z<(oN zlinm-lpPkqbzrpSbKlHk+W6W!^6hE%MJIG*@ny)ArceXj!!9#8<@|vY?N1d~6|Hm0x@lNLHnCjEaD<6S_Lu^L0iw}Di2H0`G zQq!3zAHlf2BWvnO2Blo$#_ID;GK=FNQs~^(x89}*VsSn~*KVpF%wRJY1x5B{+v$RD z{Ur*bq)#cAH5fUc(L+?C_EQhE{W9%y?C~=u?q!k;?ugx=T)rtU)+NW4wv$Thc}bfqhE2~C(sSOC zqwN@0CG}wgI5qwZBc9c{ETrXySt6_J%qi_(jwp&mh|~mK&3+So74lu^Mc|~cW8-1J zRk7UJH^@dX>`S8QPELP&huPPB(Z~X7Ie}sGzo7!t@rg{GYS1ku^~2!EhE6%^vNly~ zWCUEB4rRlbG}xH=L~RE-?kjWC(A=j&AqKUvCoGi4XfCkL|lU=geJws<;Z| z1RKqmgQ-Of9T=Y_GwG%l4o;o#VGG>vC4cQ@M3GdJK=tZ!qX zhx@m|O~r+MzT^C62BVctwm@`X)Dulcf5qeW;fbD<5BVvjJ1nO62?t+NMaWHo@PUoR z;07Dty-}HbaBN)AxAP|0GFjQXb=@;$&ar)|nu`+xEn|b^CP=F9@D`coWWw%xMLR<` z)`j{4uX9c8|8ZNjd8DUe{^hRPlD!QvDoUtk00y}zNuY%H9R>5|`xM4$mWwwBIXa~# z_#3zhQrERc?`nCS_oZRy>!>OY`&FY&B0HGW?+GErq;w;Ka=WjuWaS)I^j~|ta2!pE z?&Xh|Kj0hN(7N3HV(M$4Y4SJY3+7N{t* zMD~RJcEu+N^EMSfi)hMNa*gicry>H^d3!Hf_yoGMGu9RqbeL>M1ra2y_61ocXlTDe zmqcq1^z~I~Jd!|kO(DSd8c{t7pOHAlTpy?kSdK^LR_xwk3jbQ9MRPEN?vN!(fzJ0< zhPmmu5BQ;iN!FtbKLEl0&^R_R zLmw2Nipeo^f(e*`8zpErmw8q>h$7|5vX0?3bsWT)Wgi=CZ50EmEe~(j=Byo;h;&r( z?=ENK>P(JkNmr@KWPT=_-21Z=E0wHq(DMV>VI)rXrzj~ExNad|Vvqk-l(<(HE{CTN zRJCaqFbRcn-sT8h}h#&|-UiP14RN!~tw*AD! zb}JE0;ahN(1`JkyPD0-nt>&+B}l9a+=f7}mK6_hiP(cxiuSO(30sFE?( z#3gEl%i;8aFCz6^L-nG{Uj9P^{=>k3L(%3(LVa9}+iBGx&SFj1`E1+QVBRomVsH*y z#`3I8%0x)#flT*?S&og8!6DiJO`n=SW6yc)wX zc3U}XRIE_`aKjx*-+s3qn%yzT+Kn^Uj?jj!vNvt)u2y91jPx z>hQYQe8OV-mY8&!_K9JJcyb2WJ6O_84jd7?aBK?MLo~O8_}&}A52r5poBM^7J8(*k zW5&Z8cB0ZN+{`{Io*itV*v{3sNugvsknZ*VvAq>#ZwghxMGIQJq9A?KAb8uQyWmW} zoPBkc(uTIv+$2Z$dHvvHck*9nulUX!do{GQJ>}pqJ_2rM+aeq){bQ-Otgt~8 zv0J?zh1hmu+WnEn;E#~{-H}w-qcc_e21=Qh!A&l&or4iCD7XEYOx5QGwtl=VT8^;D zBnpKm9H#39S=5Q7#a`Wf3AR$Z4M{}BhROGhdQl`zz02@twYhZW2DC86-bXcImgB)2 zhakAM&MkBBNM=W0=?6M4U#d%1>(OI>P;|Vb-H$< z551wp^TA|Q>u*knAd6S%>|%V)r;^3W$s%fE@f~fO=Q)z}rZ+B!VY6DiG4nyGSa#pD ztq&#^!!@)y4tMrdiC&Gn@K))xj3?y|5%6yFJyr#~WFi4oj($LaLBnO}f;RDD;}`l|c~i!${PPtbRKt5wwp7g$q|RAe^K-uW6^A9$xx!^L4=NUhzHLztju;Yr zHO)OT-h2halk^>I-Z7S~la#9;UCJ1@2WhY;o!aXS4ShK|&ks*rLT<E(XY8L$R zlcA=_ht0J^mb-471INe=5qCpO9^PvsTDI2WlN4HD0<1lKQ>3c2tq&=RR)_*mE`Mg6 zIOw9{O1IP$P7Kku+aGd!*S-Ceyuy$n!)Elvcx^6f;+nRT>=KgFQyDzIdBm^LA4a`m zn-m_PBKfKsy@EB#!{C0=dj3BcidoDzk zlZ5c{06Rpfcdl|72?;z9k%2?anKE4dN@jERq_1$&s%qoeAnzfWp_^Au$EfEl3lp6$ zT|cZ@B>q(|!jaV_Em-^nc8HOABo!f=^F+1@esK%@)O>mP`xP)8I&0hzImNaF!M?t) zzzK_$p71g4h(*z0EzL zn-^MyFh%0H#J9u*aT*Gu{VgqPElPwuZ(PXC`OVTD^@f;k%?AWX37sbJZQ)pPks9B& z&zSIPT5dU|P>RMS}Vw^MveWsa)^)PoYi{CX3D< zWe(O;j@!S8syK=bUW&ixGnwrwN@p?sxj)+1_M=wb-8FZt-AVQpI^3%+MU&GIarn|bf{ZNd zjTw2w6NnOg9*Ux6!C^_}7S{7g>Q#T`D2=;>PGB|Rfnm-Mk)76s0AKP6-krU%xjFGH z;@r~M%|~k} zmMAc93YqLrhaT34nZ`D!8?Wj_HWrQ$HMzh*J`F*kR~OQzd~;q-y*(lOF6jBW zCatp8xi-2un?W7AR=)42V<*35D$L(@wlK;cy>OKwn)3aPK4tViy;2)Rr;FZ^2u;E2 z7$)!R$ZH8?>fRx9{FdBK%GACaUkDcx^7t`iu=;jeEQ@kt@84BE^9sFJ`ft%cr*asG{>`8$0=$ zeGEZ6nHU=tJG|et&D;BXL3ogm(4$+2{U1Jy^l)oapuUEbMOxuj1wz1V-hAyLAhKCDVt_5WV*D1K(5 z_ujZYfA(S>&Brm!|4;s!q~QzRSzN}zeUxFT5uRzjz6@GGHU|S^dnN-5ki`hZQb5eW zz&xpqfgMN-0kO*hCYUVajs?sxHuwM&2FGA$Pfwtt;N+sz)V$)1{F2v3J~M#=swJ)w zB`Jv|sa8N4AjM#0U}T_cV4`bi7Gh*nC}Q!>*k(KQ%a znHoVf=(Mku25Jxj*^pY1nP%k*B>dCTic?D%jLd?i7o`GaCE&6FnH8xy5iXgzK=)0K5(ZCKKbLh*2~7Y%7jEbP literal 0 HcmV?d00001 diff --git a/docs/img/logo.png b/docs/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..3314b1dbdca8b9e4921404521cfa91950f00d34a GIT binary patch literal 26228 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 literal 0 HcmV?d00001