From d5b5eaac29eac9cc2dc30f9d66ac917750471a52 Mon Sep 17 00:00:00 2001 From: Nicolas Oliver Date: Tue, 23 May 2023 20:58:41 -0700 Subject: [PATCH] add schema generation and erd diagram --- .gitignore | 4 ++- README.md | 40 +++++++++++++++++++++- erd.png | Bin 0 -> 78383 bytes package-lock.json | 11 ++++++ package.json | 1 + schema.js | 37 ++++++++++++++++++++ schema.sql | 84 ++++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 175 insertions(+), 2 deletions(-) create mode 100644 erd.png create mode 100644 schema.js create mode 100644 schema.sql diff --git a/.gitignore b/.gitignore index ed2f5c8..1275d8b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ node_modules -db.* \ No newline at end of file +db.json +db.*.json +schema.*.json diff --git a/README.md b/README.md index fff33f6..ca414e1 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,47 @@ # Intel Ark Scrapper -``` +## Scrapper Execution + +```bash time node index.js 2>&1 real 262m20.010s user 0m0.295s sys 0m0.983s ``` + +## Schema Induction + +```bash +node schema.js +``` + +## Product Types + +```bash +jq '.[].name' db.json +``` + +## Product Brands + +```bash +jq '.[0].products[].name' db.json +``` + +## Product Series + +```bash +jq '.[0].products[0].subproducts[].name' db.json +``` + +## Products + +```bash +jq '.[0].products[0].subproducts[0].skus[]."Product Name"' db.json +``` + +## Specification Categories + +```bash +jq '.[0].products[0].subproducts[0].skus[0].specs | keys' db.json +``` diff --git a/erd.png b/erd.png new file mode 100644 index 0000000000000000000000000000000000000000..3375ec232e9150a1e3988d5251f075c06fabda18 GIT binary patch literal 78383 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%0A&%MPp~a3$syYVrjs>) z`pk{$CLAZFQUXtnbJoxc-a|*B)P;@tnq|;QF7)l&wLc~wi`~!4eY&2LE0~U$Fc(jnD+Uo&txj8u=8d>*hgM0fng-g5 z;n(c4%pQw3{mfRAjVH?lBrGY2UU|fQ$-bUQ;6qEd*q<*|5SCn2?zkocIUzaSh%1H) z%Cbtu*A2hK^v9UQiMTqIZcj!3iYS5_Y3gJP$wef^7$az}07ld~CkEkU+2TDDa|LZX zS5TWlPWGd_YE@mXYH9-!z&^Y%+GLZ2jIBpDonk7AOuapYrmCi@wSy*EtrHLllG|Fp z`-rsXHy3jhN?wZ1rpl0dt!xdqbL!LWJVUM->2*9F-LBg!AZfDbb|tLzy?dDYCE4d? znqoX(;>7mawEQi{*$!q<9-|2&p~!G28bF>*8-g>((Ca$ty5m0PqG62 zdrH!75HlJ8ucm-MV!&)L*OmU}k!J6(xUBz-OcR6){KIY-cV~o}e!lVf(1lzMfu9#{ zaOLSciZE{vYR_VBhGSxrA#s##qa9m`{%)-wb)M0Tvmt|(H7a6IafNLQIa9&58FisO_Z*1;e{M;Gw;I8Syy{tOILI$yXO=N!H%&(5|W?&GB^Q?JKt9l6<&s& zgbjV6ZmbR<$`}%N8@|%s0tUlD|GM`ch)yze)%4iRmHX;=x5Z1&uN}jox0GZ&=4n~A zrvgBMUipBVYVa?GZb~;v&BV#73rQvb*yu=>rZgTXNPm6d&e<@cQ|yPHBIh_fMYpYF zPCh(EzWkR^c#5|x04*uo^5y_YU$G;7SZM6p4l3>QIE9>l3RnTX?!>25!W*+a+hDgw zjLrV4T+1#)%BU~Q5C0|Ce!{>9`l8qHq~z2LdcCS$`gj@E>ojrV-S;~i{w+UcAPwE3`}v0fV#$yr@rg9 zJ$MA~-4EQ-Zzn!^&917@7{+PpDts$@9wbky{&L5Bv#%w0z#3r{Xa!l9Iq&FL&2gH)ee#!u@(F6$+2hpItk7eRbe_R2Lofr97)}*M{AI9r{0PDa;-M)=(#Fx2 zOhM2rk7V`Y;o6o5wXI`r_8EGbs42fX$XR80rVyk%jVkyY zr3sCOIc4kFyMHS9HqN@n~Xt(0}wdzu6+4w zMl~2#a#lYOQK(G`_vVHW=zlZu#<9|*Op5U$<~JJFrdy+5u7XROg^8x4N;0Q zD#7^;4zcUEBW_xVx-?arvz@>{e6mfs5SpR!9DfH6bqNR}DL~b~X}Z$<5Oicdbe9q2 z1&G879p}n>KT=z{>7V;HhyzA?Sdsal3_Mi1aNDIo3ouw$gWPw;d4BxH@vv}$LCOgz z$dk=cgbOQi`JXi@s;=7KKvCB1O^Y6^Y>L(LU|`vsAVDgjs`GmS-18O*1^T8&A9F7& zN4{xN1bNw%*RX?50$kNq5GbOv+X_yT7}aNPa2Ym7U{n77+fPEVczbEkowA0zZ0bVd z_9?&{GpaW@--+g%>a7!C3*y(kIKvLHg=0g<}$5!jHWb~#^L>yMvd1fb}qct8FY z40xD^9FGe6IOVsUZ@NDd_!AE~(2#Zt17o8Bu=-*pwnXA*P*N|m`p<_w`b}tJq~L_# zWF)QW#!!PQWAR(=K=$Ju({c?7svi7dz4e*)cb7*QZg$s(cZeY>HA=Dw6YVw`G9TUC-4U*6MgAridvzor9h%qDN`j|Ph09|ie@@k z=jMnBkPL&-<$ z!3={52RiD*#X^iR15VeS$)YWT#HZnk!W*y40Y50c*OR_d4MbfAtOR+7nV$zw&NyDJ zZGsfOR>dBqcv?ikfbswEm@OlhwLIV=Kfm~B29m*QDO!OHbKns5cup=?T8G$7=|dPL~RokS#*A*a_wi}$1gYAA=+NEN294Z}n{D^uD&muhJIUV9&}8l6EH}I`rhfy(slxMi z%t-|9mEA!*OSHFlR5W)EwgIlmFVB$tbh)ngfE~ps*))vU8iF}T5g z)6P33r=#m&qkBZojCQX$nNVqRl9wzg2k*=t5OKMe=?4ma zG|`Fy^fxwJ_($rYeLXm?+nywu#QQXTkLFcpYr-LPny6u=K7lCq{5EXuLab6jOp4_+_i-HcHi}&_!@}gQ}u01R&HI1OD z`jTqSi`qCb3GRTO#j})WAIUk#eP2uOUGo{HDgg#D(HJTV@*z93%*U zbEm4)v3!f;iZfl0DyCr2$Q->29~^!17IEzJ9QVaR?!_|Ivd7<>e}1cCjhH3dYLp$R z05rsbV0HkyJQ0fybA=y#LOxUuE2~`=i9izG04Lcr=J~<~kRk-a-fK{IFNXQFs2y57 zv1%o_3bL#$14A+v4m980Zhmtk?*1H5RUv$QOMW3L_y}qv4uF0r;t&BjK(w27`lyFn zB)m_LZtT4vjXBM#iMXvwMP};CDra4H)*C8cL=V4Zn3`b{*1%Q!-yVdWhIlM-*s_ZZ znGgy7K2|xqZ0(T#aACNj3>0>8k)I1!VEUzyS@FIe=GbD}<*&W|&2LLhO7IHKOCWj! z^nx)=a(A!eRHWeq+|lC)x4AO~<)?omlAW;radE@dgw*gQqc_@J_0OxKcW!p%8!Gl= z>@w9oXWf;YZKY^S%OnN#0@gRqvDSuq9c#lBL+pw>g}r=uecH2Uv0K~;3eNP#7`Mpb zhGF##=#(tW#g3u#01B+EdV_8{qzlh=rUk)88pex2aBI%1uu6e}#0LdShHPbNW%r6L zw3TZCYZS%Nr_tN0AoE)q|1-Z;O$9rlX;3rfMu8R(!d|h6Z*!T!mfQ)wExXVfLK{hN z@?g8wy_sqiVzn$A)}{wvXDQlee`*R|rl0A9(UTUwIdGMnb$N)%uU8$|HI?L4CLc;7 zK`@^WaOMEdX|hf4<&NvScot{AZ##g6is;`4_y)j@zt`MK;xF>{Dcbma@0IZ*LnI3c zmtlQ@i4UW#C0cI;gzQtkSnuJrW~71*efX${lc-5oQHyb4EM;>lB^(`sPeK)ebwx2w zs7EpQJ5%EKy?nPPob#j5CG4m+Oi%RK=T};%N`;vy3w%8=2yPm zc8?)yqNB}Vx0vs8IZDfOOJr|dnexFzYy5}|d$IQui}~EpR~FaPfSPh5_=Qum2>62} z$IKlEOaiMvHM@!&GCrof6!M#ROVq~#Be{bCSGyR}YPfxUO!v%VV}h8(ed+-qnBg=- zO3F0rD?JXT;-E)}i0ttMSdC?%P-;NRV@elQ<2;WbV6EGKobP{J{F8(`6MAY>)mGV6 zDV=MVA@Lh2EL{i-CnQejUj6i5yVbL><-Uipuqi&k|=_z>SV3q z#qgT+zWQ>-=AxikB>9jG68w$A%DR{LYg442-3QA-q$Mm64)S0@`p};}sRcfmuT|m1PXlE& zs!#Vdo!JMc#$)Y=gH_RvpR%g6AWNV&MD#sp^5eOzAXN#jO~8>+QF*`#^(Ar`X8q@$ z%VyhO1G;r<f^QsvqIC*?h*n++hf zp0oJtSy;#rL?{D~v{n!+=f4*~?E;+rvE-}m%%^L)S?SD5)3VoAAZjiPq3sr`RTvGr zqOSGS`op`ilQF6VXkj?M$QY_V2qx_qeYM3-!19zHGrwrTd7V)J>&OIcf2mCxlyS|? z#UXYiT8m86BSHZZYW)A00iSc_Sr`eT#<^bmbquO-@B@&@ZhT1zVi29Q6x zT)k6%RyF9&|78Ij9@+eBgpUGUlFe<_^Bd3O~o^K%T|C=#n_f&nL)Ty%xr?vE7% zAI|BTquMj3Nz)vM`8Zaa6#vw-8k(3ru>$tSj zy-(0=*oe0*`_4BDKm=r$wydJ|QKe{7%@*^GqH#gC)e0jJR=fz z(n-pl1g57=t15UxObLbOK@qwDQ=iDM4;NR zAsAf;aI?J_YE08)1k!Wtm<$%TXaT!9yX(o8C#N7Q;G*qd+>)>>a9s3bS9KvMRD6%S zm0dgX-hf233ea3bkc)H(Vjs+y9i%B9pb|EiHkR@ZIYOy7^*DI5$4dY8f_?=Q=NvHa z9{GiwHVhQ`#|5T{04A%e5a%B1qt8=@XS?C68MWW>CJi-@BEw)ZL8I%j6Mh*QPK+Oe zvCF#|NXrtj;T^v}*kFEo29Bw`ytuY;lFdqS)m}>xms5_Y`*xE~virfl^@!`1IzJyN zr(Jgn{X`<6ayx~XSaYilr)!cZO0&R-2@H^+?atDTr6mX~`z^k0tEw#&$vGH%%qPOX z?|Wgk=m*54)m;6QAb=*njZJpv{fcpt;;-{u1a*8sM0}kbJDg|+<)xwAIu#oJES4{) zs@kNY3F51f_agRz@RhGyV$8L~nTC`sWc?u*;+0W#u(xC&DGwOYY&Mnk=VixLy8sM3HB>Jo!bh25 zd_mSfMhps~%W4Db6pxN(l!bBcy&BA1h>utn$xLhQGfLK|&@d$YjM%C@(#Ovn06Lrm z2?6AGL@Ll2=}oU=l2K@|(fJ2kEC8b~0Na8XC+>J2=SR7VfB&L6~Uv&C%!- z?W|T(O)$#8Kj@H92_eE)tnn@#S=C+2HpaonAmQVO6n_@E2#Uzl=f^XgqVmEh+7Rab z;GQn1x7-HJr>?jNt7QT@dnXf|^=Q7e5QfAew;s>;$gg`v85O7rN*F@}GLW>&qDwjv zXz1ts3l2KSLOIl2YcQh7Q($a+*@AhYIgmKv;080T1|+39)dj}-2`L{N=EC9>;sxz3 z+I7SrXd9hn`gBcRqvpElj_XFZ>R35P?~UqvIG7zZ*+{TT!161}SSqr63^V)&%&GKs zX=$&dGT>b1LT8xlunc>l^%10w%Na;u`>*w&Vg8NG~;o zqbz4H3=MH=huVUidKImsG+#K!BuvXUGbc-n^X@`Ip%GFNT19?lAr>ALagE3nl-qic zrBbeY5p)3R%R|SDzs{Mq9cPlc?|Px+)IT8D4RDMQfF_E2p5So2ecbaT+PhO$b-ZF{ zE|aCYi&D{e>|`H^@!Ki;pv;a{SiMwr{tqFVDsV);`d4gQBUdByDohi-yG8NtGJ~kw z*OEEH^TJN+MB5^;#HSKld@tbh;h_H+fDkLQWs3*#2DEnUU?wNl&l1+GJ)&gJK(-}}#`%XK?W)#}-OQ1US|MTh- zEsU)+D5GXvVP_?eNQYhwMI3;?fG%XT4he&?O^2|naw!K1K=LH`6hZH=*?GSwP$f^i zEXBtmI?qWF*v2)BzPk0?DCnTD7fqQ>oW_2MgoclF%fP>IhTv$Sm{LWn8yK}Im=O2$# zOU_fIP?Q-D=P)JH*CkKV@wjwj{hW?>4}($G2yL80pzQ4=JjU9`)`X~ufL8{2am-qA&Y_z0eNbkvT zI7?)|Hq(+QM#xc#-gW)XEX3Q{qQ(5P^!UzmC|!$K<1aXBR3aGoI*}qq3W(;WREo56jzeLW2@G?INl z9Cl)*f7GqV2uB7x4gwbYtfP8wsRO0+^j+YYskGn0M%jJBg4J*Z>`0J3t ze3;0Ce1@r9{|W6$HE{YVksMVIUN|4W@OQMAE~ys3#aAO0uQ|de;IxGTlpg$Qw}ZgM zkI1ZZvm7t3WOXbgDqY4p@*fG|5*)qsAv~vgBD`_Ac^yJ*a%WK4oV2s4n*4Um{uZCR zoRC^9E#{v3c&zFl5z8W$i@0=se|Jq$*}0ulo}9V;UJ|INlGDGuS3N@>Zb)-cM_|vGtnuX8u>k-3c1(PRaJFO?z`~h%n9q4z4YYi5@kJ;jP%BB#iK}op`UvX-m4=6r0kWGtQ^cr&UWfU$|9A; z0OZuG=|U{=I0S)MIPFMy&WC$T49nAx&>9 z)1LbEY7Z4#WeB^&yFBz%v_*E8Ygw|^vuoD(%A)I1*rh;iHIva7+U$Esmozat!EEQJ zq@>-6n`b*|0Q6uYSc*OvNHgn3Sj7Gs7zmBXa4;|@K0?1)Y?WUn)N>gW7@yu(nM@uY zwK(l$$KJSB8LiH_d(8J#L4ZbLt?2rQe;$X?d%sH0ZNCdB>Mcknh{YGfOIS)8KZ%xu z{xZ!=xL$It9O~$MHk!oiFGzhaY?Fz0+*T_d`x(_Ux!yfv+wDcEXJ~2br}QAaU7H$Y zkISgpfx=8++2`xa>NcC~!Iw8FH-YOD{qfVMPkcmg5Ux@K@&V0FIWB+=n?w=kh?jC4yR9-@h{)fOcJtCkkAYL~4o)f|m`7vPl^bDms$up%TVa(bZ)n8IGwSC>?3 znx2x~ky&`w-dPI-$5=%JwEDUn-zNQvc5>H^+R*<*B(-{+G000^`jA)YO_#T^<3TP+ ztVF!dN(UuZ8!)3^&=YDw(|M1Vj}MGe1MlrTQ<3tor*pf&o-&82+PJrl$cwscMxzhX z#}$OVDo^HsM9DLWUy%AM`#rL&ik_=7&Awp{Q$GCH(<}w6=c?T0pqL|*E>r4{2Is64cjqjP~<`~eBSM10-zJdRLZ*MUPhE(`1XP?;5*@>-$111^%IbZsm0(b!!4cN(gEm7SKi%yHfNHRAERQ6YpsB^GzIZ6Zo z%`X+24NqYyH4f2LE($XunuYl@47zxNZRL(O4Y7j7+stjLH`NR}&HU1@zqMO3B9agn zt9=9LHqy#tD#pW-`60Y4CF`0*LsiktKks$Xaas99YI^v^E*3W~2!GO4)!Zri#BbKu zHW!srnY~Lcv@G_7+?ODHXXIL~52?-K*fUQ-(Y59)A)@YXIL)UbOnv;on*Wu;xJv@Bz zzWKh^7`a29)}FMXVWeHP-f2DHj*sBWBK%=UjT*4Wk_P5A`>6jo5J7?$zP-+GL~9YY z28cTZygkf=5=brcC9R<_!CJLW=av@;W-=*KWISIgW^&_QX#CseNH#Qfp z(jYX1f(`o1tp;mtJPNB&57bBGO+qjg_^gdPxE~qK;W6o|&tg1v`N7liH957ZA1Aar zv61`k=RG{rqw2cIBatMjBc}Sz^i(GAo|%9I+kT^L=*pS@yod(EUzanPO}pM6TW)On z!HeQ$1a~AGp0VzER0?r-Ir7d0B!Qb$C2+4%SBGY1d6X6n;(Y5otlY zwqi#=!@{}D2t#n#4Ui-|8o*P)1UbL~;HEmO5V$!$@acvN|9y2okNa+dYsU<3bA=~+ zpaKwJ2?&t6p?B@cGVw?9hsbYCT<$2A*RsD0uW!h0$5JYGolkE={4d1LsOkmMQ<~|! z`_*W$q>_KX$40X#V4j23cHruL_aAWw6I#Rvzfxi#Ry3ag-ULt zWbf=5iI8!Vy&|KGimb@Y$WCVV%-%C2DUp>eBU>5SG7>^Y#{YSx_xtnyeb4_K$I+?W z_kCU0>-Bm*AM2TW+~4cscw4>!7>M0u?97+dnU8jB*fs%KRG7|Uh_&|6ptatU z2&>ZG7h9B8Pq&I>!MbebAkv^uOu9C>H87Y{`>TVeuI+x9*n9#18G}RvuGc+fCW+^c|}cDB&V*N@`3`VBY04m(^YrNT;o+V71T$52b@ zxSZx2M~{McIE)TTVm_yybp2#j!<}9kI8;-K7!f9K0eV%@O?3e45XDJ!70f)k-uaHT zDZta^Z3mTdF3kph4M$esy&|D1=9`um2`R5|4*Agxu3OYJ;ha1jFA}$&NKp8@0Svjg z!|iK*M`-3FY25L0_MwicIp{P^KslImisKJWPR9!$w?4`FJkl*oFyH_~eVK#zn!|$8 zIgx-{zxOvjWrJfMJ9&(fB_3L}fFX&kE{^PP6{7ae#C`FM#@ZxADb zkGpvcr*dw42zgd>V5)5oEn@NUMeo=XkCzZ2yKhGMUyC5O+yfPc2vy7u;Af z^M5A{@4%=MsH!;<%r>&%EAY(Rxd?c->YoB=EHXX*>tviO<57_tQ5~OUBS=mWwU9ul{u*I)I>clTv2t zG`!KOpFe@UkA_M+XtV)|Vo8iaf^8XMlJ>_fZE(av(uLo3kV zW^Cm~j&`SrS>8$76=WZGT8tn$u*2T&+OZnIM?`)*v$3o zR&IdMXLw#;N;U6N6!MRIS$%eCeZCoa!;s61{sWj{Fh+3Ofd+&qFm8z4uxZMsdhYYG85Qt*(4AwRP3WZqFri+jqpXp~I&8)NoLA zJ!on#?MXI6RWs|2OT$ZR+*3>z4;mjg@Pj=VwS_9031U*|FGCa4<||Y!k><}@Sp>;q zF;yelsW%SZf7#xSPDv^D6lyto(r?AVlkY-axr$%>91G_w zc*JXaSJG}Y#HYi?H?Gz&zzusDdRausr2*|HITZh3Z2S{US5^F`VH2)4ck-^&#A$iM zE_SiqJKB#I*_CPx0I(`PbK^kUb7^Zcj#vLnmVfYqaOPx_vGB~SzhAttjbmy1sa$WD#5zF;K`7^lHuO%-InjmH`8(}%6{@! zstT_L$9j1X0zP{aGIbu+8p6554R!hRp_QWQPlyH%{^~)tNwz{v79{z!AM$>aJptI) znyNc5T%eV5+rghl@7s=6uN;^Hjf2FgKu{CrG#NM5A?{NS#G^-pT%O4+ekSDdT=ItZ zl6XEIN-2e*p~fa3MQYR1(UzGKqfNuXywRS0ZPy(i*`gQU&Jeg4iVGO;L(@}iZP>4M z2ZS5S0>|w@p{U?KoGp2v``t}gd9-fnzIzlI3xatPgS|Z>&q3q;b;t$5HcdNt^tp6O z(0#zx;*7&>F-Vu2aNlI+^M))+c_hfdbuI4jc^{!3fG{LC%>b%T=F};bnE#ae=-hS7 zzk2F>r=T4Z*Av6Y9~m3~^Fgyludru7w!N*gs)rYEd@raXym<28W---NU4%6$a$ry@l# zzOJPlphp6aF3eIUlNQq_6`$^lQ9CTzes;h1Xwb0XgqW3R{z$}nqXNNihq*lPPCk2H zQu8YT|KtJT0zOmqfJoZmup(#m!1ay6>PWi(1Cwd{J7D}iG=K=w)2l&))G};m)WLCmQ=tJN5I(dURynl4EI$jE0-E(fs*G(= zCpWp}`%Z2)ZZAc#s3z#MLaCDSMN;y(W>bQijhE#ZbVi@T9#6RHwzK9{?2x&}f0)Qf zZs2!+&Sc+e%)7XHz;-XSjN-cUW=Vd2A$Ecwqfl1{s`bqb=}>4R#^spsVZE+j+{VfMAZscPiQclw9$s$kV)Vua?mJ6~+?_<+ep+xrP*Iv+#ww z6`<}T9&E*0XLEz!(`Wb^06~KzFKYW+aL-<}2}xT;*&ao;I%a2IaaTnoZP&wSuYXMn z|8Y%h+%wyBUn{z{zi(!H;>dNqHEEz+He;R{`+>&Nz6->W>5RO(?~i|0@ah28I>1&} zm^mF{?x);Kbl3bx3n1#!`RN4sdo1Na9IV9;FwEPfrS#kX)$S_~^ZZY{A9#4D=QrRv zQji3}t(SPS;$X?2crX1~@u|Vp3P87COlqD`B+w94>k6lrE|+hxyM9icm?Zqh9-5ge zBn`K>264m#qf^>RO(uV568fl|p*)(?dCZi@a|AvBoP6qAbK#!{g9yT#%d>xqVn92kuMk8PL~bv@K|mAoS-HdO&yoKZ<^h<%C(>`Rc*7F^F4Xh)+e5mg*=Llj5 zWokuz6Y?`5@Df5DdYsw-cKB*avYuY-(v(jKd6`-E9Cs*Q1SAMEc@T8h}E!Rwzj5u z*C3?1DI%vYKv)^L^1Wk_{TG$u23iApd8ioP<% z?JhbSs`HNjpgDfL9Myv?r69y27jekT_a9G}#x?rW+e^XwI7<{>@rMk@7}j5}f7qAR zK4=x!yNd7hoCh5O&a2Do-@3{4ENt?<=RkPNisYo>^KVVy^Nk<57vegY(~TEu^K27d zQey0J&2XJm1*B5hN>YrIZ47oCF*ko!bLyK#UHQ1I=Haf89!W`)p^3m)I#FFKP`C46 zXB2t-ofR_uUR4$jZCm{<+7naXKsMj&+Byd`+*_Nc(4SB~2o(Qg{lCL9d4~6mK~l*B zDy8l-7<*<;|D8M6Cf21pcIZtsJb&!>OB3Rp*Qs@@boeo*>j7CV5);HECH-7mdYA4( z#jD*)xhNfNH`_*!r0)yse_iosT>(3Bl2kDgcJts3E0>Kok^+e|3zVCh>+jyZtDopR z-W!P_+hZ2{kE`FN$cv|%0VwCwnXr%K;qx|Ay-VlF!O_rXe3Lg*%|d7iiix>v67okvLnEMVF$OtyUxv&X7eH2-9G3=O$)X3GdB8<{ zOAku(+i<2c0a9{$>7e=|Tn-63bLbwkLY$E<#LKH0(A5skoYD+SmChS4PsOMEg{Rj} z1mSY~UE>35F!^qw|em>M>m@hlLf7YE(ui~f~2 zqS*8<4F!Adc_zZp7jgI6ovXr$I|l2a+v!+Kw3C6?$MR-9eU&Iy#@4y`eay`bB1P;6 z@1$F83_m#%76o5(1FPzb`eG2baMQ>v=syC@<-%RDlIoud3uM7l9N-V*L14*^?5!-s zTit854rsFguIHjcC-C044eKuV-OO`T{f6Y<>shSmPHd1Z{RK6fl4HE{Vwehq2A zu(3h-NZ2D|jHlA=KYXH7&i{Ettp|qY-Nm|vJoQYayjjB;z9Bi;Fd8m^0ZdL>;E^1G zcqE}-qe9%$DBsZa-h0pf#_$0b*mWK_T0*K-7QjyQV}tIG4iFs_;@pRndXgVNwreUx zvrg4|_uNNn*=N8EaVH5>A%zj$+7XV5pGjxq7LLj%f3g#uX8u9FwX_pA+R3g$qR*G1 zLPr{;Ki@x7xtR>7IbWfQ<322FyG7QdjhZmg8h9$lX|^e zb!kNc2FIA}6wZ_+L~yPP;h9KyH&vwOf0#4jxYzSyw=1k;Kp2>)wv7r;=Ms+)eYjp1&g;`T)smp%MKWJuxCm+6T*I#fC?!7v z8KCS5CVghT)|*d}O*(Nf19H?(Xsethq!cDY2&M+)%3V?5-t_#QjQ>t$ZtrOII)4=P zi*NM&7cxHdq;;MTBo0buqE}IoCui3bX+sk;Gc-yvkZbsT(%+WAVS=y8Q`pH({6fDNr=fR#M5^=db=`sFOp+yCDY^k$2_xS;JZ~bR3_z5kKvj`v zhlQr6ca@5+c36xgW&?d7JDQV^&Nv6e6oCmKqrAyrnxph0dLeKx5vgFso;+p_$jH|M zgZF3S8?C`!S0b?R!zJQTtOkDgLH@`eu<#e;C2qV@Qq}0z$u7L^K+Fp;#je%$Za0mW zh9{MEfIQ8vV)*Tt#?}kM&1l|MTSjkCEVB37fx8Glxsm?+uDQfJO!=i#9>cz}_x8+7 z#?BzWHM~9qUgc*HawV{d*95TjoB36xLq0esA56XVT6Bu|wE8=E>i*Q{eAtB|k)jI@ zTI$>V`OiG|7FqH^rCeaIn}Na4jUDtz24{w5V60q`EcB$QcF1psFRuwawd&2p8NiWhA+z)YHzX_)xOI86J?i%5N#J zjm3FXeWEQg?RTi1#?mnzaK1UaD3&K9_Y%G$nI+aE$?%R}EEj))JJyB5nzZG~2U->U zcuBH#pV}iyQzkgS`&o5fo8JPalKH~z;+OX=*c|3XlVYH@P8;>j?f9wWWbP2&4ss?0NMAE!4rH`Q^q4|9rsCnbKMx;Vkki;fagyr-+w#b7 z7iY$L#aUVWdPmq#efGNW*_Kx=d{apz_(MIrjc+(21;@nSLZf^4)#Fi>myh0f$wzRz zlthMI);@qt9W9|B0I13X0g$9SkfYV(cIpX|ag1m{uM}mh0{PXgl`#i;e&U2RNQ9Fy zd}>bq=b~ZZf5v!CXDb^Ca~)sA%P2@IaFTIGzZ=?|&+&MaX zp1i~?RJK1BWKd9C>SqY+C)!g8n9%_MUs4S+rjgIHzVrY#YiG;>j1yxZy2K*%-A(mOp$ZGl$gBBHa%lhuwhIbIYCMBlm=0UF~4t%uaXOV5W zKle=nhmAPR`2_<5&GBtT?yM6|1YUeqfVBY`Pl%-gS&GN|mOuXg;o@Wg%b`yD+qVG; z5e0pEK{pcZCuZu&bZTZ#C}C}&P+K)H7KFQoOgGnb{(g=%F}RhrPJny=eL*JlIqztc z(m3X=O_QQSs_fDl6dI&B0lF|}LE{aYXb_4X!L3!`pkjII_BF~Nm)(;wXNM+#qZ%8-;SeBY=nzg3|c#m7U>6obQMhjr)6n z-4x+=KGN?9Io>&76=D?V_^@wkt8-DU6SK`;M3U(d<$a*!&NWOVk`btuO3L;P&CTZ^ zCpaAAlrBWS!~gvuzZ4@6A=Onnv{#RQGNT&~GzB+trJoPGr2Vjf zvc9QQ+w}I$GJ@V1KeNE9GBj7OMBqOwOO8$iK6d6z%j7QN)s)r6!0*uLnr4Zn|$!H}>ZGf|jQW-*X8vj8@)pmWK> z_Bo;R&#Xwqqu@n}anW2HntAA7yQ1NLpE%^|lJdBi{N3|m+n2bAavRG?Rp_UGI@l?u6oPK2(=OnxP36&O$In6I}A`A17uV}ms5V2OI~FF-ff4xVH3JH zB2d8~8AbX^r#nI+Sczf`^S~scWnP|sWgld>wWjnWmf*X z_+3d#^|Jb(RIuGPB@2VrQ4z`?6BxRq0S#0%!4wg{Sq~jlSs}0qe9)qhy9-c!dMttO zSzZWIzLhbjZRj4O_KCQw_)qOdXNE$6E8KHb;c(Qo!>UK9d>>+Nu$qu!vOy26qSm+r zeGf9euhMm^062X8yRbX{(XqySkx-rl#$5qwFU|IFm=mWvSPBjE`!Uz$qDaWqfeklo z41yvgr8^J&B)z6hE`~cF*A;)R8AhR=yO&$z+L*}Kz=JSKAr*Wj5DMB@CZ_0ZLurmE zVPmWfA&Wr!p(n(M&w&;)3aF8)G7p7d4>&89680b#jRd18YHWX88Q~{^01dG}A(QzK z`x^vT>qk+4B&GccnRH@w2})i)qV zL}9i`1afw6O|$r_<7GJ0yR1!0BGU%<>yEaMvW!0XXymEUgN-U+&s_`PlsD&Y*x;*G zpDkXkwEuVI;No4SpB63+DUGvntwVAF-~`ryJ4Ny~L{hvIIyj5pdE`r*@z}|N$D&ECjH*^ua=SXyy6XbU?KjcgJ)HW4f>Ndd_i&84k8sw{~WWEqS(1IV!2KWLx)fY<QQ#q`WBk2`^s<>*Bx|>|GTcuWb3&iK5?HF`Hrh>7A{o_8^Qax1e70|3aW?Wd3%rh)9f-Nc zt?!ZkI^|4CaD)#X2bCm^L?IDxSDSzhY*Z)V~F?!YXm*DFfe+ONfPSS^a? z3M%6RF+W)~9c&y41>VZ^{T&9%BaegP4mUZRWd6CXX~Njlm^vNw;sZ|*V`T$>(+4Gi z&RdhkN;C@Sc9X@VBu-ZxR<1Qj&-w`Vh)A_hKVhd2^N>n`ayAVwK66*?HCla0ZkY=- z$1EAUSFFeK`f}9?FY-LzM|b&`Ll5<>0~(eAMLq$ALWmk8WmT(>(_VqT*JORVxePce zt;-}lAJ^=Hx;*!1tlR-$R(?q}+*yhfTD z;}iSdZHgGZjMrSaa3F1>_G!AdL0XbGl4uY-FCBCUFgYX05Mx1MkIYqz4xq}y=A-Bu zRx_!@dW%0FjaJqya={7Hi9s!`l)U`XdaI^3?)ntgWe>2&rv zgPl}@O@D*KG{LWoUS{G0WCrhS?iyw6dhD;?Ktepq!{(*M+Muk-*Nbh#I73@W{ir;1 z^n6Imb%3=ITNFmJ3 z5tYX$a<>5$!#@tHHkcmvV)@FVSv`_q4bURHV=a{2-!+Rfqclnbr?YXBWuxT(v|4bM z?5oyW_4cf6Wp43isD_J&j+j{IepKfS9t!@Ibi?y=W6bNlIILP#h*D&SlTW?Z4XA02 zkP07BxZS6W1LogDl-8Y)dFiYOar11kMHG zQa$5xSMf6y6#bfcs*hpx&_~$C^f`J|UvXX{)AQgzxGSuovcQNVD=-1I3NwhbO$7{n zYh?r`z+*nB`&ec}(o9-b60!;Od4h@QX{-oaYove))YAS1ZHBoe3js;Gb9>=G_YrQT zs2ts`UcRA?8n5pF)rTX37g!N9L6z_cKcviN9Dl++w2?rnV{Iu%!Xr?3mbw3ayg2^8 z!nh;0OXR6=6yjO{KV&uqujBX65f}lawY%Bc!};&2LX77xk;Pz~)#`u$X?N=%SN3d_ z>PJQBsNcOH?V!4m^4;g}r9@t6%Y!##SFIMcIR5G!Ufj<3!Ph6N%_8SNsruDhmegE= z?IPDJe^E>7|Gr9quY^K|vBLE*V=f-*VD3uD2)nsBqaq}jrjs)qBjvd;N2oU=jxD?K z<=Y9&2E9U=&Z~QTfpQahbf2E69YI7lpf5vAYLJGYSZ}`Y+C3<4 zZ^tM0e-*sf9O@jjA>f>OK7ni4%8IW74bO?D*@fwGLy?Ri77R|MP`L{8F9|V}atTXBkekHnr zXDw7m?o}sI=UpBtPv4Lr+`VY5%-u2jhfKY0a^H~Z0+F#t3fn)}etvH4BlK`FEGf=X z5Cui~PUBitRq}LpaZ0-Wzhx)<5KEG$ksVZEVj_e4dG>iC#O%SeNeLNin*}KCvS~ch z&i^2SC+^AjS9b6AA>yA4kg}U^$i}G<6c6wQSwQv0U6zX~h?RDMgg~^&Li>q{k4N78 zf)&RMyh~_o;wwuYkNCLhY})EJvHx83xN(r2-L5U5zXK(0VnkeQe~48>Q&Yz*N;xR`)%yGw zSE3%~1Ri2`^e45AS3ncuH@vW|rGH7!fR6AsAZL?7yqbzY_@|?!D*QjxNqFP@ule715zdBEf5U5CQ^&vxW%iWXMg#Ek-2^PeUZ}X`CRG?i_+}9UkPlvfL z9{rf_hHF)OI$&%cfB4h5wkcnJ_clPSde-D$%m{u!U&TR!r(jpj|1ksjE#K;O&38?{ zy#aA%tS|xL^7-t0FjTBj+Mv8K;2|H)1;%9D$Mk#n)H+0LPrY$fM13h46U@j(^B8c3 z0u}-XiseFcoyqaJXqH)UL}WH(8U!_~1#T<=Dx^}%QzBz<@2Fj71DY*)8R2`L)`XXj zpa#1X5Dhvc{m38@SK5EH0D?ROcl*&iArr#sb<)qvcK{}3rSYRBprw?`A3cjE0M_M} z%idz{_!Z{0<(t)K_n9TI{DX<((eHP3DilLtyzBJAgP0-w7Q*wdko6zwGxU%{F(|*l;%ukt(J|<$y z?^mx>n$;pxiVuF2zR$mN^|!+FI(7g4JY4dGpCK;L*su7uDN6e)$yX0-OviqNr5}nf($h*9`^!xKWfk2X~)+w#4lh(`WF)d9t#hhI4P$jPe$b^~K$A4=;WL-8lLX2;N7 z=EZ>zWQ@->ca-uxqFK27=Q;Gb5)ct5GRUH=R4q{ZDJ0H#e&R$xP-}-oHK{;t|IMK4 zrq$dYId^@H7TcnRTId(GK~hBAp51ZZiVk3mQ+Y{||9#`v{$vJ1USJHUe(^J&Jde=K zwGn*@S_Jvz`vN6=!7+YvZ-L4Scps9OiOf~p6$(hdXJYm-g`OXg6?iJHoV!td2jb5O z*u4C(0|Vn8%ybG0hMYPZILONZ({>4_&GMWBNyRpJQN2ByzsxB1>v_yXjDPVcoMIXr z6skquDgPe3<1fZt`6 z%l}4)os7Rg+C_$+8x4cO&TIm0oMRPLn)NH;PK9mKW!Fu!%Ev1S)etEdF9kt7H}Qjqk@7AOWQya4q(LuYsTe^n-( zw-J%Vh%@+R5N2EhC^wAIBdrSCjoI{RLpwp9F1A_Z85(XurcNUm8kfnB$JPVInETWi zE)eu6;m6J=#9nQcqs9ao*$H;qyws&qE|||&zecdZeCrX(#ykBDI|%GjsDI|AnGL|NZIcGHVb&xIy7 zDzE>9qp=`j0>tv{P|P}!oESdj0eG>R^uOy~j_x!L8-Bb>KpgMrSm3pM>zOKdLns*&-ebzp?EXyLE`MisHmUkjNh>6(b z$_%Bq7HAqBlc@!HkOXmL`~@*D05O!sY@(qkDwZ^90mH1sD{(GzKgMjrf*stig%S$= zsrK2I&|4nDNi1Guj%b@}kH0VMPv7BFhi%y9?thD&aEWMCBnfXO5l^PT)7)p0_2<@! zJ2D!t_1QtbCz0QIQD4*;{hwF4c4OA?>SC(_5f4${&O$P3zzNd@-;@ytWfadxDDWN3FezD_tdCc(9d%!(BTq?(SI#5@X_ zY6!pm1=Doc z`bhnz{|WPv)-eif2=}*Ye11!v`;9*-PD9w(Me?p zpI9PY0mx70GYlutp7P2AV9h!v2tS>u>l&T-H2np~AUXwTC=3Fl(VSf;q%L8)z&gnu zLGoyp-W8Z)4Z7!2XoxB*rGiQ^FzaGop`UdP#MMPW005E&8okgi2}m`!cN3~pu8GH~ zh_Gb|03Ny>7%>k*R@tavBegm18VuI<#r5^|=kxX-%%MFc9=Jer`GFFq*9~cn(q8XD z^rwEQh_hlX_yROu-IIa5ZLPH{CA*<)1{Oc)5^nryVF7@{^F!kD5sNp}UeQK@A~uk} zq3uKO+X%8k8HWw?X6|sQaxgBK5c&?lm69GTdMXBYC>A&$1@J4zgnvZduBf*fcGPtC zhPa%y%=_jJaG$iDAQVkwcr4{c)%Ua zIDL}n6%4-c{0Na1Wb2ip^lmsvOqjwq)8vk|7s4(~&5A7M_FTu?h7~?iw+gK@)!q=aPn4Z+N~!vtEOie6 z&tE(;Pn6?)6ia_Cj6=$LXKC3Py01OI*khFNvl5oi9JFP|&^xeq{YIiEpkY&hpuL9% zU%oD`uT?|PtS%_l3hHzb1~Dg9DyL>l_!|C2)LCqjt@DlMS0wGa(KhVFkHM$^6Y^FI z&&`7T#_56moo6TpCSI5@vQ-w_>qg`gyk^6Zxl1SV38v9jIjt5O6x%ncVDTIw8wJ8k znx?v6`Gqh1)Cxeb5x-cHWA-?3$Kcx(@vtR zHxvKOI(ojV0#r?iQ&V(%%)YPO{O0c~Xs;K@Oa=rVLMX%y|K2yKZ?*k0TevM!?R{0T-pr_PpFiO!r{0<(?FqZl z);19r)1L-Cz#D5x67)SbWSNP{&*#CQ zldxnE`ujHK-dBfyWj?*t)&4(_8RV!}9fgF2nd;vQt4y5EZl#j7KQ59R7`;NLKvJQ` z)(;Uvaj+ddbGla_ngAYYM5U13U18Sill<|-yr=cB0giQm$*&)6qp#o35sESy!nP@M z*Dl+TJ@$3P` z6b&2%oe@?orZ+D4w;7(xc3$N1v=c&J18s&gpXUwPRq8N&kHU;5!rBA+aelj5IY$ah zEE$Ec)~Nak{C8}zy|k{oGqC;J!QoNJ>4oq|Kj^WG@PU+ok}Lww-Gnb3^3IB_X5yJG zzY!A>q-Ym(KY^w8ruOU0E1`m4i!K$ky20&TJ5hApVFyHDz2|Ac>v0gVZi)CB@FRFZ zr5iRYG&LODy|%BHIV%pl$uQvG^+Ey(`@pRD{%yO9d_6yab+k)w86v}a-53Jq6M;o7 zNCeG)10i(5krG_T)(ghz;g?FYb_F2BAO&!XqG@q63yYZi&VK@W)CR zWA4Bo^|na@3c9mv&g{oZ4I0#Ewtm;^pU2^QFk>Q-(ANLq#{SGrcU+1_vh~o+j)(g$ zm7qz2aUQyZh3`EMs`QvZQ5AVfnLP?#oC-iftgz8Ug3PoawBfHhsS@Jdvs{o70MO^ zc?iF0DgorD;t0eB#cINRYqtA(l_(pA=UuU2C-SO7=Q{;m+>;u(h-lH{_<%-uBay0(?qV3*-f*eA)k!7JXO zJlsqhFd`-P0E53y|65k*2+pH|WkH4m^q}8aFK}JxdT`k^EFdIV+v5*j=rBJ|;9Uc( zrMf;f9N%-<@tr0=uijk}lB>JtUsb(hhS{D3w4VcEurdyUZG%Cf!Yfuby zsbnePSgRHgPKX5e4dFRYK$jOE9oab{>t@mt2hF{nwgE8eu4}6GqaTpLbJJYb0L@E( zaXRM$5iumntNSopx6qSH@%q}}Ve`Q%3B4x<1zFl9j_=;#rzN+*#25$sW?>udKxRYZ z317`~N9Z0I&JDue&yO>rt|M$TB529LV>~N!z>QE-Ximf*2AHPOj%QH(EB)V(lc*`W zoPYyWgz~|isH@`d0k)dC8(C%A&~Z!PV*gyqA~X+ZytvX_Xt1hH%Vtijcnh-`xYo-H zMEq&QCRb4~UG2>I7kogdPuqIcbCgtPWEepj$y~if1eZ51YZd{05SDtV(^r>VmP|Yl z2eCk{rlpRO`*sg=%Xrv3^u{t%>|$H1d7{HcE21q5Fna1mPBFeBKv^+#<~*0Q%*SYt zAF<#W;|5 z+#8RI`!qaAt17;mg(N~Ffv_gkcfZgS;*l@!-X(8;%E=5&SJnZ=n_P9NlMLh@VT_|# zZ*qGlxyyeEe0=YF^T|lS{Fx%L5T&yMbB!ItSr)3&YBG&tp+}5rz)n@J*8a{yCals+ z>f7v)otStp8NwNc&!BopiS$LR$EUlf43;CeEu*j5`E%d!C#NWcvQ&oZ1ges{UtGSi z1Zg*b#;QM?dn%xob_h^>6!7K>@JyogRn~i&(}fUKV@>`S)8yjA`lp8w3RhyFhD28W z!nUz}P$+Yw@S8o6vQb>i8F_&>PwSl_i*s<{oD`!*V1&kVzbA5hwXkPeggb35X?-v~ zdE%ZB}4Qy$JR`0lEHex6RYYH;b6#=%t_kHh+@ow|Gq@2(Oyx7B4tl;VI(9FcZa3ndX zM3LBSC+6vX=7B)&;I{h??BMsW3KI3>aacW9Kyp3Ts#lBCKH(|%^5S>GfmrEp4+h-a zK#A-idEqtnR=RxI?38C68f6?&1 zw^p}rE6LWp1cxA=MPkOxL#W0c>b5RN!I&mpnP`AUZ-UeRgUTF*28RLk-v6o~0P{0?UIuY~`nGVX4``C>;S4Jjx z*q(}&?0HZ<2+{^?Fg+j>!a1{@k!QaPxr6y}O;k*29Ps#5x%xdmuBrD!uzbZGOaa5r zGhNtGuO0(y74aPis#NSa@XFJ}I9`GBj5;VNfny$$=%_>(U8zGk)BHgvTeb?S+RH8E-4O7^-S&zfsNGKV5I2+%k^i z)MbD+=hv=v=BNQQ-PwQ;!IZVSg-esVOp|DMkLSGS`H%OCS45xRSjMr_S^FDZNHl3r zrDit(`dAW1bus{sjtpzV|26lfP4W9hDLW_aT3_*w_JG(B^t>kp z`-QEU)_|fea2)}7n~8$BCj|=Z6@AQ!<62SzOJ*3(?bwH>b3(JEniVmj)9DsHX_5uJ zu5T;`2WqRMubk_atMgqU6x&qm{A}AVitwOt#-oU^sCr2xET|ax)P+g_Ht$t!x(vVb z4l|ZIcB&~}yoi(ZkUrDExVSb?nHOiM%8YZm|GWe^PYK(KZ+^X$p$@@SB|l`oVDXw5 zh&KGc90=aiddR5L+?L01xSGc|BVvMrJjlGi&Hkz{ph4hpLh-lMENhi3#Ax^Py%2+* zOftb3_>vRDlA@Pv+LNAl&qDVX2U%+!Fn->0m_G?rl=Tk~)g6-Vj4-12HxwdNR|VC3 zEPu)VAWDg#!WQ`8;}v+8=3E4HQ4AhWWJg^VbEIO$H3y*(82Ege^dJ97hQn$OaRexA|J7V2DusW-^rr5KJ$sNL3RurV6fA)1@Lk2=+q z#eYIZyl(YVyQR$b8*o||CTt_cj?+!6*NX_*4ed?aTak#ZtFIMBC~~JPyQo%x;M! z7Qv0KfIj6$jKar6p_19|Ck| zoowlIEYxL(Wp3CeP3-M5+VGJf1>^gSK?0Gs^PPY6xO6e(5nfc?L^@ELy8W#vw7vy_ z2DSbPs)za_&OEHaS%{!6H#zY~e(!mkn?2;x0l0&W;iv;Vlq%$Ec(_$=ZNaoGEczuk#exeMUYUu9VFcQyz`2lVdN$2gu6-+{EV z|JBjc@%{&5PWepmwJ(EQ`D!M}VV1ZG$xdZlg2R;yep5)>9f5@pG`1(YrbN9FRcssf zl{MQGF>NO7LOcm)Nv18N4+Hw=m4#lqnG>VJ&(iOGebx+k>N`~Q?jo!+!92C$Fsvre z!4`A!lskeb0m+`PfJgU{h;0*%(-Fgw>#LZIo3RGrhIuIMXd@{BRva9()@=wtOjZv2 zas?hX##z)q4;wNIlD#}MQ6HnoBE{7 z>F%RWXlt!KxJ4KOeS<5t0CB!~LUM?9Tf;x=!qeXBrZ=psycokjXP^My5A z5c0UO8EaHK%$%M{IDWtCBu1MC0}GtOd?O2D`WX+@ji~2v)$Wt#ueL~>u8uhO2%lA% zCGd*Ht^O5|gy3;{L)H2b8B}NXfUGNxm5f~QXVCMw?i-mcMv&^Isow~}I13L8nBS%k zU;xU`hRP$h^INvOnxY+a#{~nYaPZZvPrRu+SlWi&@3ch+sN>~KM8x*j8h^GihVA6+ z5;iOHxbK;99B;s-))`O8Bsm>P9P_m;0^(Q$#6ivAyP1|25Z61z;ka5b^ASFXJdqg) z{`X)vnQkhjujFc=KmGDA?@8HrImC5nM?ZbTCNZ`9VYTrn(sCpeZY~dhQhadZ;WCmr zV&;ql2Fkb<$EivfulyfTnWlns_$iH!y5B#py#VE;h1yAMN&?SnQP7lqd2;Mw!BMDR z&{&mA5Mtp?>?w9S^7TVY*HK;Yq|{zePlKS zP_t5aDWy5=m4(NAQzwT(_;7Mq z8jeWK#ay5l7au&(0a4r8GbDrzfA*W65UilE5>VirBBXhlXkJ^6t9}~20;k^j^+T9W z$%+K)6Yq@C_&EoLev?bL{!*4re7qZ6dwklYkR7=3KzETe5{Lb2H#@;iyJQQ_dgNufdA2KHoi$!M*G9%bV* zH>%IN?>@!5IU_?-s~S?}K2IilA?>-v>G2)eH-TO$n;^92z$S^P_n^$X9Qx!fs4WV~ z3O#5SE`~ngLkS6hE(jR*`E9NnZ|aap0y+1w!s(M@A6cBup(u!~`1?%O6QIt3K zdTJO=#g|BL;3s=9X}Uo1C?L)c??t3@V0X&AcODisO<5~=Ku!-|2XMGoa#k0X@CcC( z%&bMMPW(`GesCf=3_eA@69u+TtMAXO0)nKzg!DvwcFNkFQ_XYE@5)i~^9_pM5!--# znNq`GD}mnkSrHdFrS&)3bH{Yeb*uwB9k*@4yyG#w*4YiSnHm7e@_ES zL$}s%kVK=pJc0Gwu}I4%39IQMo(woT3GYZ+zch^>gbHIoWbkqU9z5IY-g@`DtSE?S7n7Vy9vEAVOA*k$1Tm1U6 zgfK&O+6TqYkhihtm>Bx~Oe!{td{RamoFr7bmq%p4b)Xpf?YKuWlkpPbAF6CzqI`iU zY6M>*&J0IcS>c;zv&=bs2^(}({F>FGo`=;zv6wxlche?jU5YbzDT#1I1Xk{Lb+Gc# zq{!mX(0Q#U0$PAsZtIw>3h^HzR4M*0YnCZUJw`&|g3pIVepYTuCI`>o0|lc!i%^}g zY?e&#pf04pVldEg1E##-T!kU-i3=~cU&dgc8M?h)N6uz2A|GdeOg>yys85nYG!cW| zF<_5*oE`ohgiC|>E-ytrdla#C)l;ueNa~a>SSRXhxlgmp8;ZzM7DY5;8&nQ5#IeAhCH0;)Sm%qm(#O3k% zpY;Pr+Zo?D7~{6|xDqu2L#F-ma(oQkw_RjJs>K6 zLFE|tERd*c^i;QWd*jyZ>^MtmzP!CpFU~O7)-{#mj9({Y-iJY^Eg6#ibn35zbHafI zU9^z%yEdup(`k=@HE9ZA5N#e@YiF~rDtQfPGE$#Xfy@YYwVd~r_`mc4Rv&K#_DT6# zdOLdnqP*8{UjHe`&D~vKF09IrQoDYhIcn`ju3jln=wBlLxJpny^&o3N=Fam!`Smbg zyCemySlVECpbV&?OdNx0CI#a=z?dL-)+~SfNiJS_7$3wb z^X)b;ZQe#CrBc3Uh$RbM=&zx0=3y#MMqgV$%ur-X())3q2P~XmG0|82O?>(E71OqG z$+h3(VKZ<@BL~AS4EAJ0hIr6c~@r_A59CF(O!+!>duAzC}V~3 zlOB;zFogN=rVW1D0#X3mfPibyRCpejh-O$~?^ap!lgRrmHKlDI@ZI9Xx6wCy_r9Ei zfR)A}cX5JoknCsa@&z6f08LI_X z)d?~lvYeP@Y6`&r;Fk1`_w!_w5OycS{{ZAW?a+NhZN2cZ%ncwtT~#lj%{avJen@&) z^88X=N|!Zs&SS8w?|7sBM0bkobn!v!-QybJZI9IqJ|NF>LlKIxb9d$kva#x&^1w8X z1sP?<1GKzjuIs1Tb0V9u9)%7=r%@j}ypLoJ=%NN+7yO3fVb5wXV!H{2PwvRy5VJbI zUFK)_4Q7(r6H>2kPh0S}-=TJV=6#jz*|OwT1+7cZPpC7Vusl2(u7V$Td_-WpEnlg4 z-3k30%EIgFv2X2_wB5rr~ z?~_c8>%-D-<6z`bWZQjO?$r4Z7;XXo<--%xSa#(@x@y$Zt=#sZIej2<7yVa!;OkSh z`B>9aM=rp^ znbb7BRDusr@oP4_q)!rl+5&gYLZ)Q*H}m8FG6iPunUfaTF9(j)mrM#Tx@bV z%Z$3bpWhUz7P3=TO|MoUZT{%}IdDFeQUnaJG8HetPLwq37{X12X-HDhN-SG8gT|e? zJCsb#poYi4OSNd53`itUC0Y47WFlf&r62&)b^_9BRh$@75Fz7PkGq=ru^WrpcB%Wrt_}34Nnhes zc{2>_w%DlYh7_#Vrzc?E#d$wRW0#6T$&CppsP4Z^HW2Yp>Ds;n{xV2x{MHN1oL(H_r2kWJvse4&Y~|0| zl^^|AEP9jYQ%@6BX~Cw@7_>cKYfkjf#R7}r00y;>cD8!rPG`S!u<>gNl3HYyavFPr zw7?6UE?^+raTEqjrn=Id5qt(Cx!wP^(NsRYOg384)-skWq}4#^8%&xvfVffd6`l65pYF5N6>$V~X^{SWlxXTpPD?s z_HdNDv)n(xxBZL?`{d6W$E+GpGPZHe+B(YT*OJZ@)4{%CwnQs5cxw(uFVmiC?c|pp zaSJp^SGvyNI}b=edJf|zSw;p(4zVp!yKF8}*Zi+z%Hjw^ljn1{q_S9z>|t|sMkz3R zEKukv@E2YLUIq&WkQOCofWfHEA_;u0ry%7)J!2V8+tYT>4hnhIN82$(Xxlj%%RYN6@xJjTVthr=NGWM;RJ9^836J}HXMPi@jyl0`K#gyOF-;9 zpANB5IHxD=mLJtbO|bo)Z67U;?jLSH#y;5JKG)$r1yYdriSQO~h61&}%y4+JuHh0% zEC>R;J;{eg9v_yQC5f)wAjxq2c5hju#hIb5hLA8HT4d60QkhKH*)Kh9{GC`lRb}w> zboFPoE9L%0+`Cy3rwP-Xkb&i_We_vqivvF}BwKKf88P0L0;TTNLQh~0ArEZ&XZYx9*Yz)qn`G;YxtO6eD-|HHydK3#o$jS32MW-L|iZ^pS5Tn7uuwclmT)r$~( zxj(+LZcCLLC>Qncj~GZ(rg$ybMAX@)sc!ZQFQ3>wm>zQXxyZQYnNzW(|DBxuAkbR{G*ih>%pTspdaUe9*d549Wi%nDTNZ*iZK9VOMD)-5%KYXO&EM1$1&< z?hBL%UdX*75q9;%-NXrcP*}b3%x}Zt{r(!Y_tKTCd&3UQIpA41&nwY@)a7#03}+#b zz21UPCBTw_Xq{oO2l)4cGb5>>0o8UYxn3Uz-Z2oxKEvwuIGiwEVp1Mkpf0pl%f|y% z1P8k9y9-|BpYM)s(*X>ri{X^Go^}Y?kPeFR?mNg50ZtYt{pnm^Ji)?cyZ-d-@vuY? zDT;#Pke5mfWDZ6Ws;={KI>N%f+xI{&q!0E4QqWZ?kFgG|(vSqYmc81H#U~5BcCtal zj)1M*7pB|ZghXRN0NCosQVOlAKQD%2h7?Mtfri6l7dTggW{j&t(ETH86VVj zS*QcqK%M*(!k|HdTgJ;$iCL79fQ^-_v=dW#HGziU7qDj#qzPNlZbp3Njc#BgE==E^b1S zc!Fqzmu(g(4a=Csuha53D*)}m0TUS%5y|w^!QE?U5SXI6jOxNmHh>;+z0dX4n>g<% zO844V7MZ95e>)O-{g<2%0n^6eDv>wE=X+n`MPA-M$dylBqjqWl$BwS7H}-)%9EvZ` zlumGHS8L6Zw8gwpWMLa8mS^4DVg5DOn>L{oef>YG2tlA%%y5z$H3hz8pzWzXYdB*UrsoUyYiPl$_+=Ps5;f_a%EJX*DTlxq<>A4Pp$EXpG(+ zhI5FfQc>FXu*l1=_;I^|PmSD;2h$#>>r`Mp1>3DRdXNAA*N)i;~v z=*2y+xLHiG#kf7h58jy>rYN;mB6l?ZKK$%pxA3DaEEfKB-+$w^XO_rTQn8_lSmF<55+?pB&9IY z=M}1NCU{`|8di5si9g$$>Eke3l*z7t?pkMAi6ds30zES`GqLWoy?y0jE=)j33rGwk z6^{KjMp54lVw5gpBb)@ua?kXG#jG*sZd{KDyIaMarDcDFm(^H43!$#m+rfe|wK(iV z7^9?){~tJCl6?E55W=>nuRR$U5#K zyH(h3Bo)CwaenFI#K$rE z);b*34c4_VM$(ZUfZ|^b=H_W}4<L zkXi}LH`M)NnO+J-)d`nF0my4W~bxhR#wb_SaE(M#ca`L6*Q`iz>Kw@I2-0lPLDi~S1XT`4iQ-b)KX2qTb>&a<&X0=h%$vqt7I0x|Xm+d~ z^)g3_b~(9oQC>pgjz|>+%1NOoQl$Ig^6>ND=z7HiM2S{GjN}K~N8d9#lK67=9x~7{ z<*4~#eEw3g0XC3Nwjs%Uih`dX-2N6qtv&>ASt67UrR-09>T(PKnuV&Jo8GdZB9u9E zIknMSoLDNMR>FR6->MN+;0OCb37dhUU4J}=L6m<_CAM-^QB4ypajJu&tkjN zUFn46FZ}a+MrcTaT*ZOjpxeKM{FaY-97>`N-(%rI{>zK11P6g9-fmz|m?eDceTN+& zhtoekPx{NUxXTrU6u!AI_R`>XEmD?19wV?)fjX)Tm|ghHs+WU^AsW)$gM0ZxrvsXP zUJljhynT6U`I@E9q*8c}U8sqKldvKfkKD<13dVtHq*K80ZRsDmGbGfO465$C3mT>| zyt-dR*m;bL{bkx7ZViXSzo>_#O*~ltCTTyDE6##&yd}wmzvqa)Z%8IIl?~9oc6zo+ zmjc&ghWH^f#AsR9NRPeDzCcDO8;oc6{GCF5n$-YYzF$6DBqiVbPAonwG{0eFKL)kj zWfuXe?1>ee-|^H>t?%MN-qe$lzv)CbAS8$a3mZ)JFj3;0@-%*TLl;IBAxxEN1=k>Z zy#33{OOS9;1;RO}$c@ejXy_Hi)5 zJ9Qk!u-1&+&3i!*MS5;RVJSIAbrM#%t?%yJDHK6u6J_VO%Vg}ucpibrp}9f(FNiVM zlL8>dBfkFuF;1XDkIXbgIZ6Ds5>jQ6ygRQG%KzT3pEGNm)B^$6H(XPlsN;Ev;Z~6a zWq!E0cLPq5{61F-vJT9;L1*pfSPYMFYvK-;3;!!Dz~YYCt^Oupegs8HNi|izW1!Az za)3pfM{Tc=?+iuf%}1IfA1SL?vDFZav$9MT#eo}f)xK=?GO}EJ!4U`bdp*=AGdIG> z(*IK!@$B4x6&0<-oAB>%EsdRD)tCHN7%^xc@eagR-jTx(IOgB8W?c(SJ_NJ#RjFTl zE%fjKLfHU3{g3Ag12AQ4YpAz>_-%TeeJJrScB`3W2$96rwZODHm`RkB3|Tc()-%5<+=| zf>GiGqIC!pp)J%GLc8UJVm$;Wo=9qbLKeMixXc|!5M8g=y!=NO?4CLS zKd;t)n$UZ%-1XyP9j6Ojd-oLRROHJPNG_p1jG7`+{&-WeD;>GWP6E+Ld)CMS*0aLY z9kP-x_FRYg6R$Tt`5TFGgCy6F?W|&`(+hD0hIytwL4`Lvvm%c+J`dgN`{AEwsDJ-k zuVuid@tLNWXvgfQt~Mm${-(hf<^qZo9?gLMNIlffx>u}1AQWVKHAJxbuI~V^Rar#Z z9aIWCchZ90p=8%R%sKJt;IO7sC)#BF=01BWFgzR&rQmrO_>P0viL=!D<4F7&qZz5* zeNYu^+9creB^{0QUsQzMC?JRP}IwcDwnFG_hFlU1{ykVa%XLMiNUkBaiG zsto(@9My{K^fd2C0GVJZVwOMroK+Zx28MwBWhvGJErI7F6&ri1?xIP;BWLFU1r9Fb z)H|u-UueEt!30frzs>VdW%nnGuCj=rZ1wY&!`>t5qgn`Z4J?)^8d2J>6tL^zdxy{F zUu7)s+gK#|3|UYIV+mzimGN1Qk#@U9!8h@EIGmTX9?Nd6LFSsY!x&;Eej^8b~ zaPMZhKJ#w=J`O$G6Hs-#5Kvf9T#_}JSVz9sF2O%Z*m#_hD4PYU8(>F?qkpR9Gft*G~+%xgGyoB}I74lHlgRb0nn^q@*ElDO2NxoYdHTaECxG24d4!hUG2S)aF!KxY#t+& z8PYtKO5nffWjEe{pVoOG1D}8<@-c|U)q|_7IV41wnD7D*Bp*x!v-i;=j#*Io?p~qD zP-;J6%P#fdC#8yN<(TwCW0`c>m8Jc!L7c^Qx64$iRKU8jXW;XvD9SeFY#(zGP@(PG z2emqogQ8Jc3Tahm+845;Drz+=5n#RSO%weJRgWjt9DJ1my$whZF7a%{rn7 zhNA=rKhvdW^876wuwvue1y5gOuPPg6#gs<2H|Xy@VlismVWcu@jsOLuuna`o7pE?R zMl8oM`LllBu`vBnZUaR@CDKevP1baI%`Ir+5tnt>n-=_`qWMjXNwatP^TSs#DHzV5 zJS$7WyYGp-M$MRL@8vSFRWk6DC7j!pc40@@%vY=#KpVVY7Q-axQQe{f5H&>BWt`9> z0DiNjH$jVpx26=X4`LQ(-{1XRAWs`hj9RdK(qyGW6VlI=nv;2g2yBg){t3-K`m56WefiVcQj?hq~PAZ%N<%m~ur|Kbk*TcTW*H81X zSjP=ue>4o&ep7z}bCxk^=%b+ml>6}uP`DUnCO1V9B3MI(Ps*k7_U=uVBMQRPi$DJ5 zN-ysFoErkZ8|(i)?hj1KXB3*_Mbs=?o}Ge676k%WFOWo($|;c0+bw@*%qoBlcMG)H ziAf26f%5IJ0tVfq?7f!^pZhm5xd!ZBqa*0`Y~CdQ-)nHN8bVwyDOMa0G{sA>%X%6R zvS>7f-6($MS+4X!3?`O6Bn!{jL_IGjX?W>rL@(E=oDd&^-|@NlkYeKH8x zCIQk=kPoWwEuhtT3p%eh-%39S17hvpyXi55#H(Pt_XQ`i9PP;-sK}XUR;hfCb-kE^ zx1HX-O2^#(e^+co%oc!9PFM)mii`ouZ;Y@_`)|A8nE6R)M3x{`zf@_2X)z!jff>uU z1<^~(iz4{RGndZrXJAEntkKoK413JYhTo+5!fp?4%Ied~kd1OR?1RVUVT#FzKwRKR z&Tp?vW{FVXe-UbtVn<19W<5Bp!kQ9zQM9W+BM+s2T$>-f3Ri~{4V@r?s6c+Z{&olO zpf5*+1wW!O!(Y}{#49&AY8i-}2|53DK;cJ*{s70tVF6NPN)LmQoG^PZC`HDmjY4k6 zNRYN5+L<+V238p==>^c^O_nD7c4=yyZBIE%$#{wW?~$h@Tn;^qtpW0tkX(ZAu^tdL z;c)L^HKmVbSus;&*NfMBTBCMSVjn{l2UhcwXit!HKLqh0JkvVm?*ScW3KX}|>ZUqX zcw0A8XpM|TrhGpsy`$)!#?MWn+;3tsf~3b(lyhm(xvaXEr~n&X7+6&1cy7 z7aeL_z+KYLC4?$6u;MAZTqt*ItF=nPuXZ(l4n-Akd%2oX``wUzNswp55zs^{bKn-< zxM4OP|h$i7w6ymf#cXl zF>QZJD-!#O8nQNfpjA8=Wod;i7Np;tdPr#77$PyptqCAA%M~cxrc~s81|T6?LVD5{ zO2Vm-F09NG-%;PRW3Q--#3fXtg%vMvmh^^Ix7XeV@&%>bfyJ*knI|6PS6>?()D&}m&?Y^Bj{ao}AeOzDhL2&PNqf>> z9FPO>fIRiR!A_z++b5P3F07?r%mtj6UQkq&K5Qgr5L1d1@BJ_#th_@yb?^iz;CpRmgo1>N+eO6RW! z4HK}aqJHkl*4`JX@6j*~% zE~-AYlS9n{9F>~X6as_~K0Pa%-P~sx*&f2du_&1RS&dz=lTze$K&iTVsh?@Q&TXci zZD?pzv$*38$1I8x>)fu-rci|YKL;-&MUftQ@muLogVr1Lh>|<(%;Rx1D+d#p?DDJc!-<`?TZPx zsrXu40iM8F(@KJ`-22(%+ z^&s@JFZm(L;f~-U#f#q8^jGHQ&PHwL`SMPNJcO#FRz7@kuOT?A%Ce&LWnhrO|JdNi zP!%=d@6%v(@wRPhJGA2Ir4NyU_7?(0Tj=`ij$gCXCijrpf?aJ8wOu1;4~Nx1rFDc8ZS)= z{<9y;B5@ctK4Bz4{V&@d+Xz$|-j6Oo&3P>5V7zPXk*$61tHcC+8I@=7Wmbyi_sZ*7 z(dPdtyQ|6~Q(dP+E`3^kB-G_dn@f32+Pwgc%Z=|Xp39AWl^RdQ5u{C#!e(G?cQyCs zfpy}(II^LEF4Oavx;lEse8epHRmA3C; zqu$4*dqdQf(!{DiPKYerCQ}T}6b`u_I$9;pl_9>k4615cWealI0j*}Q7NG=b01Yhs zm~%kaHxTt*b9uA@vb;xT9g7x^QRh7%VCR3G{CRh*?2SFniu+F)y?B!3%?EARhLfg% z*wKf6(Cn+4_Az)2U|$sIv%Sb*b{!`Cu(Q3v;kCVa;pz9!?paMAV8I3PNTZJ}fO13w zd$?59glt&rB%3j-H(p_4;{fB&Gb~cj9BCnmZdEq)PjFN{cP_UthwfYjcNFSQ zmqqN4y=p=w(mPD-Ef4*VQKBgdX36g7uT$*J!kMIXe(3RsYA&`Ljut|3@Pa9=Ew({z z<3Ys0dj}I9;LfmHj()uVU$nTd0c7ns@{64eNKiauPo(veVp`FIYCjJSLVl`PQ2ARQ zpdY#(NE#b>&i%X8y$L5{0C>v^EWp0O09ya-hYZ%(-Bg7;i{*}as8Ijm`V_^a-iAd6 z;=E?;=fcxxjT$SU{kGIQnIA@;eBg-<^H6EzOebbb{FCyC>FrnZPG5jXU%<+{61|u` zA5ftW+$+1($%tgq)stk501)9u>#}Pu(spGkXT?cf18}!6me+nM9X>5RW*GnC6tD&Q ziv9if;8H*8gt22bg}pQA!o8A0ka3HaZ2$P|G9d((3@pkR$QC|Me!_C#+DpQ zM6@@ZyMyA0AjuV?UsG84G8Z%_==Tcl7|LWlOH!o<&JQ%r zkz`-l0v|brDz?hc4S53McOn=g@g;YE#z6D%QW`wrjA4EMdynU4UMtY2Evf^kZk%M4 zaE<_8_aC#X14N|1V{lpCHUscYS6(-KID-eQ;eYV|fCTSD*XXd-@FqA7W=|I!Vq%ht zJmd;Sv#XRr6|nHB9r#$O?`-PLkU#Jp)7p6#hfQAS@c3{CT?jv0XYF{6R{bAVf<%0s)BL0##9WTDqV&T%%0Q29^Xj%$n!x;{8!3Lqd%;PR165s`_ZD)Zyl;O3rJ@ZQr| zMWI6;a18Uj%_hO9#!WZE`yIS?gNCU5y~E$5Qfc>wtnJGAuf+=K>3^&$O-UkQT0!m( z8>Z|{1Gq)}hxDqSn6d#CC zTSr1h_`c??9vgoY4S#4(O}#iZ#+Oxe>bv9nt(1fN`>5!AfaKQz=WMLzs7c72B0fy% zFuCFf$9;;N_fD4zDE)^@nfW|0A-B8>^{i2;ku~bbZqV$fGGa+{iA+F}}SUd5E%AjxV@y!r~gR%XpeZ_+f89H&u+) z5*E$$zm^;a`tOZ)5ZpUtXlhtRg}lL|;4~SxhDyL9LD(z01~$qtN^-k&45t|WN_7KV zkQeq{Q~REQEo9ari|##0l3-9UoHaQdI6_sq`U`Z9vxdljGk%1x0`gHHK$_KfOfgX* zOX~i5L9xjO)JN&C#QfkUqhjhPht`{GHR*6~K+m82Zs^1e!rTt?OV3Hg?>577?8&~a zHuIw2z+S>7|Ayj)c&~j!u_dS~u>|^YMl1bbZD_Pp0>#I-pgH}eNu7bB@9X@}Ew-j( zNmkE47LQt$9`-rb_2znA7P%f!gJyz4NtzLrOPb;$SyCk$qU^sb?43qJEhENs9&?!* zH$iYiZ1kKVz~33*mkpRwoMOd(tu-@9c@NxMvPeVl=Rns^_W>uI1DrW3L~4VT_egL> zK+9TeFTLNHJ_k%n7CUOjkG`VL%gU|4J=`iNx1bamNAekw=Kr<*2*snC&cO~ZEwlWw z6TclmSeN&PsKJi@H4-jXA8%^hWp$vBq1Z)56Dw#D#7pQWNQvTMB)X+^{7iqxE^LI1 z)q=O9PiP)%dvf}klbsFY=1AYf2ggQi$Y*KApFq5O@L7S2VbP@cDB)3jAi`*Xn}4n>RV#mGXlMI9AeuZgZm!o>u$uWRfn3it z+w$LZ@`ZlGfXMqt4sStOK*K^MmZ(GThiJ=v%=nxbg&RZ9wK>FU4|^(7^u89SHXNlF zgPH*2cm9Jf5*LrRA7*u~(VnD^nQ1@8)FjY4JO^r>Q2>^nBxJim%zmn4)1jI2&K=s9 z#Wj+)B3IZ6f70NZ8knTrk^L~8Q&R)9ehnb@&=8ORRzX%obQA??LJ9m|NhTmPzMU%S zh2;ygqrJmT!NPjZH-Ru5KGXaKLc*oYZ7+|z7>7$`J6@YKyyh{gLF%k0K4s)&%hAb; z$tx1QPp^;Qw6A503)YN0&7=69J2c2SjVw;ylJ>FSbD!U`GDAaNi6t%bWFC4Rp}DKB z3HzJ%XCa zqoJ$IAW7T+aK3}6V3xtV7eghZfoo`w&i@eO4a@!05_a`WAlN4$6jn+ZYvY<-^3}w3 zi#Cti3Y`{FjbZpv%Q2g9F3kc5qEyCfR~wlM6-_G0=WJon3Ld zu-ZP0@&YsjFU9Wy#`c_y|Ml%xa&PAi@3oyf${|@`7*2pWe_(2Km|iCaz+1pV`H&hP zLXh=&@$BB-95~ndGO+oBpUFU2CFnp-J38`ukwo5B=JzlWGC3b`s$(R5&2+&j6 zDTYhk7NlSb0XJ2$Xf{ReD)h+TizH?*!A_8_P{SLzQ-x3BtmQ7dibIR?HcW(iwx! zGwYy4Lf7@tw(xtliLiX4`qa(lVMOmkJo0)jo|qxiAQu^wan61SJy6^ZGdjZLK0tek zHF50`869LOOQj_#;>Wp8Zy#&LfDtBv&oN?>hHHMeri5!hu})E5$p-x0J+O71(6S;QYZjkOh(7D)GLhkrr^m^FZh)l`y7o^Oa8?FjK$q#I zPtg(YMyKYQJ$qy3mHO*Xw)=(n%S71<_7k3&#egSh$7ZS@5g~SthNZNiiE`=A#vc=heMU93~hv3(z z3a$`&KAX1nB`7QSPAx0}IBQv$F0;*O>uU4kRnD*An9N@(`=*Lt`NWK_eT>K3hZC%_ zFI*usD!$f}XSM{yfKTueMGsIK_XV8S0z*~;Og1eGpW17O(hMP{#ULlox0qtz*{cp^ z95C;~1B2>3QVjuxfchh|FK3aNCE~LqbQ#*O)8NG{T+%P$CA7f(_JY&i9XT<=54&_Dw0blr4QO3KJ^{m2~R9v>&rbihNeJ z0dxEV1d_)2QFxoC;b5aH9Txpy_u6{H$s+pfr1R0W+NUPF@W3X}=Q$(Rp+jtn_X3r* zcfvP&G*6c<$X}gZR5b%l=htq|K%9PP*;EfxfH;91NXB7eZSkRcu$5Cc`@Cw0^yXl( zE(~6*m_jGv^g57EHO`@ZpPb?uUI&qoE|%fzgjH(H6igb*dp4JP6R)YPq)J7Y%cV}me!_ruemb4;67A{O;@mohvWpl7lIu*F}b%_>wuozRP2tFq^@ct8)GRyD-NUW zE10^)n+Q09k*+lOgRY&`J^(?@+nWfpuB0_2V0lN+;ly>f>+wNi`H?@qOljEh{ZQo? zg^>pvEUsnP=}x)Z+W)FAY}V9d!3uxg1m6_2m4pbbALiaRsP|j}O3p?5BI>}L@Y5)q z7f_%D!vs*=2J?th$Zv7h$HH6^t&{JrYZWt;UY!k_`Ng=kJvuRB3HKne(0PDRo1~5mtm5M4}%x$r-ADh4NlM+t&8)rFVr8Jv!dPR zyd^sw>&P;Ej&LyB@Dpz9H_Xi}Aj;iZtU3C0l@*2(C!zI;fw4tgVs@ewY)P^~FcSXJ zrtIay*a8wWwFQ%p)lQ$Wbv1UM&fw`kGZ0n|+rjx09&hHWn?_0rwws?`V#h3!Ox^qg zsiymtN4*aLW{m`{#3%?cqANk-YFybg+_`*KSYQDxULNdwNPp~xV;13e2ojBRW{Kmj z-`pnSD)WGFZh5L6%FpvY7~;k``TLvvAOd%*md;8AzE-<_B4F6aUul_BceYjE=`SJ| zl+%>WIs?S&##(*}2Av(|7(V@WY$mx>>=Sye>q0f|XrJLM_GyJFh+?;KXEL6B72|F)V~~bi z81;9eA?lT$Y=w-tyj2b?lW%q>PAOC>qgPMQ7axS~v^P!={#ZZdbPBV>l`JH}{;5Gv z)Q%4N2^jy&!3GIEcP$d>fMSpXremZ!6{US~fc2??HVdNnuHK-rIf^0K^zwmOcgN-} zD?le=;VzKFr;4&@W6@th0A`t=t+&pf%XoMvn_|VzZTRX-=&Lhm zWA^@%XOy2$yM|bNdN%iEK~dQTi;+3(I`^iou{ah4tk%qC^X=c-v!vMu&ip!d-|*Qd z8A2mT-3tEMzAP+$?SnQo<^su-y3N-1?_U)=gMl+yL_WBKU}W#^I(>Za^LJ>5-#E?h z!w%5=h6LWY4~SWFk${Tym-(k>S>E?UJaoJ=^L-r{2gj!xRO!M>vaQ8bYYK9J`0%5! zzv`=-doYdw3;qgbmV>j6Hixj3Di@%-6PL|VLa7^9DF(l&oQ{{CUXyU}=DDHImhbQR znw0E-kjiJ!YZyaAZ8);)?--t0{{rZ#kv%m!#Qs-d!ZR(%0}p55Xb}X*F~C8QPE*OyF#~V!aPaoNFXbxCxO>xlT;ZmT zwtY9mYP07-PM8MOp?d&XWM@|@WX!xm{FHhmxeXxCu-1}#ttC7zK~QD20iFx2q-sH- zahxKQO+${r#~kaN_B!}%8obXkyU5jig-8DCd#rcLp%VayjTfiiYgm9tDx9;>`c98En79vB3!t13-1X zyalweE`FS2DU+{cg_Qd!IeXt;{CZF9dUN0hRk9~`o6GUfI9@GD=DxZsZK1+Ybp>3^ z)RL&#UmSzgD$H@^U=K=kei4d?FHp~!L*jp4QS9Lg7$NGyedhQRdJdjV6UEh?AtwVlU+X)_?=+z^>%s%a?2`H}lBf)l3GKkWT@->WI<70x+>lO|ggN zyL9M}$}ROPJj>7`4yaDuxI>=3W~n!_oF@kCgf}YO${M|X+uhG$=&|} zIh=!Y2ts{PLM+Y5ia*u87#VNzG{Ja`*N)l)BY$9%*im^6p)Pdt6Wk zm$0UNBs}U0#!yWc28vUNl-*H&^~D*nFM*0o3=Chv3LMUicHvF^U1=k*U<8$}pWK5$ zM?$J@&v$LqVG8p!arB)u-tbnSe*XocD|g85I_qVT5nenv)lRkE5CZg&j~zeKok(2u z;ej@!DfI8%`aCW8qmp`%eC0l9e=pR#O(t4(d3II?v)?8hO!R=X&MDA2ta(>p2Mn4T zEyd`sy-3^V56tsIeYLlmDe~IMIKupwZg9jn?#>VVn`3nmy%Y`2#*p735S#VBI=Z34SU~u;VD$1LrNiQ{&J=Z!ylJG9=RUGQmR^w`getH#DQjjL|{`({>+4M zlGD2gB@^vG6uY2hb$%PlLeA(;$0ei`|Gk>Dtx}tUT=4ez7Yq3&pkQ?PCD6;?n981Y z0HGN@)Zo?x(F%RE2H&|}^SVN+bQWwCha;$u#Sbq5GI8)q-SjDpC@EAa*z;%pRw+if zyDMb~mxYqS-Lv5d}rI^IxN)+(yZM=|1VGK)}PA&r;0WhLqUzZ2MKV|%}I1G<@!*y){L&6 zc@AQAO>?acP$ABfzB2rv4HA;9^sP?je2#UDcU3^>eheTfZxZ;?3yGCrD|P}Abx40tz^AfquAjH<8kNxp$qOb4mqTR+})tG>4%TnM0c zg&pH@;20b=TK`_qapBYcy^jVS^w`YH+!%P%e{y~ZA0vDZ0c4Pga0YcJ@PsUUK=)Dw z_z4=`Zi6n}9|q`OD6^FAIt3x7Kjhh?#(wJV#!$w)O{F|ahtKIj522iv8+6S0^zv{p zHk#^}X?4U7K;Cp#NR-(7&I_^Lr&)5rgc&AoXm}j{E^LB@l8G?!Nt&9()Q)o44$U!{ zdqta2yF3y5=1N43zD+jyQ5)F1+ zX;YT&Q*{tiyBmBOG%emUoS&6CmE3SP1i&JwjlWOdk@$M{e(4glD`?3vPa*fxR3`** z9;#N6(Ea4}<}npeqWHrGW5cUa^s0KHe6n?8EIA)y z9>Xe~KrX||kYB9laoxVT|NX1#h><}o;$8xYwBwa;9B?DU-}jVFEc#bVZ?JU3mcRLO zzzSdpz5`7+H`c&$N(JbU7SLn&K5HOF52hQNYQnDgD7yFlpzT(QG)WN;1n=iEF6{74 z0OK(8f%|?D5|bT9oyk^JR)f@CI-KE?+rsfQp~IOdP8kw}h7qH5G#?t#qo%|dM8Y-Kk}d$swu61V6_+%(x=oW-LsESj z?tBTY)h?37LaFKln;xH`Om)CCg3zyDJ4>(F;d*0c)s=|5>qy~wxmog}%+BU*SdF`u zC46VDhZQE)cz8c5Q1Z!ty(}5F0&zB)V6I-$; zL7CMzr^FQVX>OUR>Bmc8v0cXNNxATs-cD z*YnKcdtNpjeR*(p{I?Dz@9Z6(YVHMiqHzS5#Fk<6%q!%|pXCCb3Nsa#KifK)U)wMU zOa%vAM2cJu;Jr`p z;Q$0fHkM!+9c{qX`*dGfeQ{bRf6%e&wlChlnlD*R6v=&qJlXMO5l@-Lw+*Lh5}o>r zU2J9V`WCW#;|Pccw&Q->*&;lyT|CAPkA#{0h{n0Sm~aw*8=S2 zIV)d5ah2x6bt$gfWWl5CetpkvyG;yQ8Uu7C)|)@;(b~nkN4k}3#ZkrvS>T&qt za{Fd>e+5MJZAM80gfzg-;=)=s#9RsF&*tcm+%mt>j@sp!lV?lS%=5(_v1ZupvFrhQpo>XJmuq{ZaingXWOFjH5;>Yk0mg6(c$FSSPu_@Vc(rLkt(!l9N(PpQ8$NkEjbt7>m+pIM zdES6zcWG8_dhgu%UB(dw0!=xNARmfx9v700gG+h8WHZF@bq5dy0bxyocjpbm-|>}C zAVjqtz;6Vh-aC2=rFY6q0$KJB-w~=w^6KelknL8g1zJh=BFO_DWSo*u^=Mx#Ot9XT zMU@gvk_Y|}dqQ!5Pb<~$PYn+K=X^?>6i^70=<;J|7S`CVxdPYb_yWg3I7I8z+=pVT%LL2cmurg!>C_L!!A=&w-C!`08Nyi&i-F9E%^uey6eH zrvvhj(8m`6m}SE*00Q^RTk~MdwYZX1^kdTIIQ?WXob_1+9MRsZC3%D<-s;|eAnhAL zB}aQDbI?<+iQ#dPe{d8dr7M^*AcY0wkg@+per^yHc&dPejzc!e&(&0gZcOuF(H8y3 zs$Uzn#4nkR7s*yNG$wc0;F)Rs^UT6XH=z#VtZYn_e6PP>sN~a0{$w|W$Ac=1E}6uz zmc)TF1VACs;hjs!kx5y1CM8YuS%GlP;VgZW6_Q;f#@H>C@}lb>=x|g~o`vbr#9ILI zzD%{HaR5}e1k=j%aDN&nVe5}Cw{$7!@F|1NcXGetb8RVg=13u)UL+$5-7AP$3^7pc zhu_;;?S}MNXOc#dTV@)@Q3@4A(YzV|${O(c9v|c{)ntNv!!OL$FNz#j5NZcaQ_Gs+ z1@tk3Gz)#Uey&w&Tf|{Z>-RSxUkQdko*e>?mUT=Q9oU1pjT!o?NtZ5UeYjHghne~` zVO4`;s94$Gm@b4_$9RH517~Hy9gVe_gJXJCYTqJUC%O)3C?NY6s8?SjN2d#tKZGy- zx;hl$05CTY%qOPrw4a4wkmJ40=Lxd!P3=MmzhQB^~t!p7bJe48wNN)H2m?BfAtnshu8^;DEYhjNWt@`sIQYr>z^Zh z#-%+Wy+9aA%$2I8hj#rGGy_Kl%>w|tq*T$Vq!8lI@3Sj~^4zjaZR=rFb5%%!TlR>> zSW0-P10=Ic4G#pC1=}R?vvUwb3KSv*_wELcg@^E4#EBaGN==)C%8JHUM7W1(oQRiF zMYd|O{DC~(;o{jGn)`E_vZZ&>o)b(>c>#x9G3cxgbsmxVtRD6W*+9xfsyaW?Q z(OIJ~2C?Rwh-V>FCT?@*3%r6$N@^eXeku!PE`fu}cUrai&AC!!eJv5ZE7c}*fBnQ2 zx+|IL!>`|edkl(KpMe^A>9TSv@vOUbag;rLX>K{3{LulZnjs7F)x^kTY<12m!Two=yQe{)DcK)12Lqd(;J&?;s? zJ+##CP!XpeTbxbs=ofb7%^b`>-EMF>*tG!JX&f{S)|if+f&frS;`&3xcgSpUWrJj2 z{+1v9``<7N^!pgAl;iF;Lei8UAGtV}X5xzhC`CbW4d4$kdlS{1q z&Yx+2ne}5I{Iw(w=0nw4FB0<7j<(h4yNUZW2NJ@2JUOO8@<3PPr9lMny z2cJ)UByZNrxQcwC_o3^bo0al?hE)v_holDoBB|k+(#kN0PVMopKqUk-o1ootgT^H7 ztfU1-;v`Z~!oxK^W#Lk-o!2D`+vH%T<;ItJ8ztokY9E~~GWGMPsE3K~b}e1_T?z=8Lnm?Y z-!Z(mSc49dDiHb%ZHS(r{1J({u&KThb(YDK{#4%$c&E4c_lhrXZwF#m!e^dS32UIp zE35AP0U%8pQ!udoT3&{K(7pi59ACbbd015Wk>)s0o9wLPdmYu7P0$z(grbI5T2%N~ zjrytAwms~mtS|oWzM8~UlVy(o^Wc1i{oypp$4JIT5KbG#H`WoG_U)|=WKfV=Qf=b+ zkvQzmJ(RjKFEI9&y5&c6YgM%sXOqEm2+*zkkrel)up?)=s>`HgfV=K0R5jn|DGZ<~ z+`SU#N&J2g7vtAUtXi0a4&H`>3?3EO1Ux=={{t31@4;n(F&M$i)U& z$QeYV!HcQp{;8wrFr5-#8C4;IWhWu=4!%kG3l_3OB;#65@;p9xA*7mh z0@}~Uo9c%qiD7$z4Z`SA^5|v2Tvdor#aV3D3Y%!hv%^)<8!W+=ZVHJ+%IteB8+go7 zV*v$IvF9rYK|s%My8_p0T)B}U3*;=Jj}~aI#McN(CBmcK%m*%(5u){nOD(B`_tpAT7>8T9U!dO3~74x)6>C=w>DbP7fJ@Ygg5D2e`7^Np!bkT>&CmS z;_Y!zrd0Qa4Y|6?Z%N>Y74Xs_Gx1LRRL(&5*;n9K^zD?8RkLuoqjJ}ipki523;_(* zBpofEO=-(p)Jk%a>QIUL8&FHXSSa6Czx*)0Dk)4k2Z|nc<64@xFvX+pFRDhy3~IkZr^^NH0U5Lh zo5EcMUpLSTW@a}C`1^uI54vs^{>oW_7 zEG~RxX;Z}BI{_U`y|Hb0xc}ql>v~Y5*7+)T?71?WhS#Y+ZDRYjjpb{Ay1CVal@*he|5jb@##mhP?m0q+ZWLPeR($zJ8qEs z^sn}-#Mx;f?daadN$4TYel{yR19VYcl#i8t(pcH}L|ELCrHW@=4DN2zvkHQXj9dz)?NCfoY8`LRu?36|Br+K>Lwj<6`#(#E4-) zjF@B*60A|>e9|;@&dy%zM-QReBSfeS#x3Y{`e3nhoRqm_^w=u4h`E;E=D8HXLR(~+(B7S`OElgK!QQyznELV*m9_P= z@iYCGz}Cak(hNxMHOL-_M>{>hVO<`^?J3vLxV>PXPabLYhL9`(5fkUVs5DXEPqcSi zC~+)GKCVNi)gGQ9O(ZKeaHhdP8g2}OLuuR5`y71BT>@vAb|V8$kNB+zdBkA%rx~RR zs?RFk3y(McdDfHxmsm=~j`!Y|Zl009yAJx4*YBKg=z0|w_i%dE_dj2m+0lS|8m+)n zLXK#S{L@hSa{N{;Nf5sANY zKJfQ^Bpl9@Z-gpH1;(Ln3fI`TL25xGpcjPCrn_^KLOJ@cz}vVVb0@mmwI@XdpsWW2C)D;{1rG}|fps*|F`|up>kv9U_z=g)(LvGDb2KN;Dwb5Vm1QW}6Tt8bngIIWnb?c^1(@A+wz+ zIi`)2nUuWiQ5|)@*ZUW|@A=_eE?4&c49~NkweEG__v%to90Q01snKGT)Cv`oru7=4 zU_v83fS6Do@NL=7^#D-++l4yz9X5zGhdp;C6A$cP9w-Z&ofr9GKfYjV(W3gspD=mR z^vYC$GXUDlndA9v6eL&`SZ+!VI0pYsF#WQwrso;BO5=cuF;vl4I0qaXd!&E`DZ-lv zwl{(~Xw;j9^Q)WSt|I3aKM!2KX24*+kp0~RCTTE#82^-K6u7f*{L;z(dNQ;#Frn_v z(NaPp$-%KryS^Ou93IOwd!<3boa1g#=|oj^8VOUuK|MZpwo!waGjs-&l@pRcY7 zad??H{k=0jvWZixOcqf8Z+zKc71sLsHF*0io=UPkK*{wNKou=!EiC`u0^Af#x3Z;d z1e=Ezsz}h4W4)>O5!@{`fnO<6T3o+LG)eqWl162w#9r?H5MLH-^J~#^q+;@M1FE2h1M*;sOK^=@Ojiel0M7IjBGmZhy29ii8Gms*Gx@Rcro~$EDvjoe8t8Q@__Y zIb>)QWlD)<@<>R$>!7hNyrpBQ$=;pwvAUrVXQCby;NDoC&sQF74RpQdVVFaFSXTwt zQ7hm#&^rXg}%1EIh%R808&U$ng}CY`g^QJt=|A0ueXGw~+0oHPv_E-I!xDU`H2? zLUc+gJ+>&H1UJdxEn%e9&T$E^aM3g18}tbt0KyurtFk>VGo2d^_nul}q~7bNOrU_wV{>F>Pf;rEKuz=yNr zafuE+37m}M<~N*Hmg+T17Q&qHJ{m$Dd0DsK+Z)$3HdbprdrR&wzSnM%%w+P)mTt8EPu&N`4#ho`F_`59{<>bz%0s%AQIcz*Wo`^11Js&}{X zAk`f=k4bXf<8V9OdeM-+DnS5n3>THW6eKvyfN6g7ZPyf3C8e|Tz6ZcbiH`FyN?9za z=dawRA);ZBg@RccJo%7FChqZ)`+*6=GNm$Awl-B-=+GZMgbG*1L`MAb!_Jjkus(BY z-A+pkrks0l+AkfW1va5(I74+VInFsSW`jzaSlmV1?Ke*xRyS~ zjhC0Wqa`jGtd!XGuVyA_Szl5QjB8~>=ll4(;~XZ?7ZLAOmMfc<0G8|Hr7FOm8w1tl zuG~hT%S{dCtM4ztW3;cyA!LmhQ!y<++BCS|WAndZViRQ)twHErG&>UJHbe{>s(4;f zaISMcGQi}1MEZT&DQ-}H-hr784R9C%Imei(crcK27?8{`fFMhC<G&dCa8VKcoJ9RF7H z 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 literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index 8d80ab6..5816bb9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { + "genson-js": "^0.0.8", "prettier": "^2.8.8", "selenium-webdriver": "^4.9.2" }, @@ -558,6 +559,11 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, + "node_modules/genson-js": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/genson-js/-/genson-js-0.0.8.tgz", + "integrity": "sha512-4NUusDTwF+lzYh72uKV+Uvpky9iPO+YDIMpGImA5pbHfLV9HwgRCA4hYjGu78V4J4Cx2IZRTFfRERn9aUs74mw==" + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -1655,6 +1661,11 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, + "genson-js": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/genson-js/-/genson-js-0.0.8.tgz", + "integrity": "sha512-4NUusDTwF+lzYh72uKV+Uvpky9iPO+YDIMpGImA5pbHfLV9HwgRCA4hYjGu78V4J4Cx2IZRTFfRERn9aUs74mw==" + }, "glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", diff --git a/package.json b/package.json index 52fb00e..1d43e7e 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "author": "", "license": "ISC", "dependencies": { + "genson-js": "^0.0.8", "prettier": "^2.8.8", "selenium-webdriver": "^4.9.2" }, diff --git a/schema.js b/schema.js new file mode 100644 index 0000000..9866f06 --- /dev/null +++ b/schema.js @@ -0,0 +1,37 @@ +const { createSchema } = require('genson-js'); +const fs = require("fs"); + +fs.readFile("db.json", { encoding: "utf-8" }, async function (err, data) { + const db = JSON.parse(data); + // 1st item is Processors + const ProcessorSchema = createSchema(db[0]); + // 2nd item is Server Products + const ServerProductSchema = createSchema(db[1]); + // 3rd item is Intel NUCs + const IntelNucSchema = createSchema(db[2]); + // 4th item is Wireless + const WirelessSchema = createSchema(db[3]); + // 5th item is Ethernet Products + const EthernetProductsSchema = createSchema(db[4]); + // 6th item is IntelĀ® FPGAs + const IntelFPGAsSchema = createSchema(db[5]); + // 7th item is Memory and Storage + const MemoryandStorageSchema = createSchema(db[6]); + // 8th item is Chipsets + const ChipsetsSchema = createSchema(db[7]); + // 9th item is Graphics + const GraphicsSchema = createSchema(db[8]); + + // Save Schemas + await Promise.all([ + fs.promises.writeFile("schema.processor.json", JSON.stringify(ProcessorSchema, null, '\t'), "utf-8"), + fs.promises.writeFile("schema.serverproducts.json", JSON.stringify(ServerProductSchema, null, '\t'), "utf-8"), + fs.promises.writeFile("schema.intelnucs.json", JSON.stringify(IntelNucSchema, null, '\t'), "utf-8"), + fs.promises.writeFile("schema.wireless.json", JSON.stringify(WirelessSchema, null, '\t'), "utf-8"), + fs.promises.writeFile("schema.ethernetproducts.json", JSON.stringify(EthernetProductsSchema, null, '\t'), "utf-8"), + fs.promises.writeFile("schema.intelfpgas.json", JSON.stringify(IntelFPGAsSchema, null, '\t'), "utf-8"), + fs.promises.writeFile("schema.memoryandstorage.json", JSON.stringify(MemoryandStorageSchema, null, '\t'), "utf-8"), + fs.promises.writeFile("schema.chipsets.json", JSON.stringify(ChipsetsSchema, null, '\t'), "utf-8"), + fs.promises.writeFile("schema.graphics.json", JSON.stringify(GraphicsSchema, null, '\t'), "utf-8") + ]); +}); diff --git a/schema.sql b/schema.sql new file mode 100644 index 0000000..70c55c6 --- /dev/null +++ b/schema.sql @@ -0,0 +1,84 @@ +CREATE TABLE ProductTypes ( + Id INT NOT NULL, + Name TEXT NOT NULL, + + CONSTRAINT PK_ProductTypes PRIMARY KEY (Id), + CONSTRAINT UQ_ProductTypes_Name UNIQUE (Name) +); + +CREATE TABLE ProductBrands ( + ProductType INT NOT NULL, + Id INT NOT NULL, + Name TEXT NOT NULL, + + CONSTRAINT PK_ProductBrands PRIMARY KEY (ProductType, Id), + CONSTRAINT FK_ProductBrands_ProductTypes FOREIGN KEY (ProductType) REFERENCES ProductTypes, + CONSTRAINT UQ_ProductBrands_Name UNIQUE (Name) +); + +CREATE TABLE ProductSeries ( + ProductType INT NOT NULL, + ProductBrand INT NOT NULL, + Id INT NOT NULL, + Name TEXT NOT NULL, + Url TEXT NOT NULL, + + CONSTRAINT PK_ProductSeries PRIMARY KEY (ProductType, ProductBrand, Id), + CONSTRAINT FK_ProductSeries_ProductBrands FOREIGN KEY (ProductType, ProductBrand) REFERENCES ProductBrands (ProductType, Id), + CONSTRAINT UQ_ProductSeries_Name UNIQUE (Name), + CONSTRAINT UQ_ProductSeries_Url UNIQUE (Url) +); + +CREATE TABLE Products ( + ProductType INT NOT NULL, + ProductBrand INT NOT NULL, + ProductSerie INT NOT NULL, + Id INT NOT NULL, + Name TEXT NOT NULL, + Url TEXT NOT NULL, + + CONSTRAINT PK_Product PRIMARY KEY (ProductType, ProductBrand, ProductSerie, Id), + CONSTRAINT FK_Product_ProductSeries FOREIGN KEY (ProductType, ProductBrand, ProductSerie) REFERENCES ProductSeries (ProductType, ProductBrand, Id), + CONSTRAINT UQ_Product_Name UNIQUE (Name), + CONSTRAINT UQ_Product_Url UNIQUE (Url) +); + +CREATE TABLE SpecificationCategories ( + Id INT NOT NULL, + Name TEXT NOT NULL, + + CONSTRAINT PK_SpecificationCategories PRIMARY KEY (Id), + CONSTRAINT UQ_SpecificationCategories_Name UNIQUE (Name) +); + +CREATE TABLE SpecificationProperties ( + SpecificationCategory INT NOT NULL, + Id INT NOT NULL, + Name TEXT NOT NULL, + + CONSTRAINT PK_SpecificationProperties PRIMARY KEY (SpecificationCategory, Id), + CONSTRAINT FK_SpecificationProperties_SpecificationCategories FOREIGN KEY (SpecificationCategory) REFERENCES SpecificationCategories (Id), + CONSTRAINT UQ_SpecificationProperties_Name UNIQUE (Name) +); + +CREATE TABLE ProductsSpecifications ( + ProductType INT NOT NULL, + ProductBrand INT NOT NULL, + ProductSerie INT NOT NULL, + ProductId INT NOT NULL, + SpecificationCategory INT NOT NULL, + SpecificationProperty INT NOT NULL, + Value TEXT NOT NULL, + + CONSTRAINT PK_ProductsSpecifications PRIMARY KEY (ProductType, ProductBrand, ProductSerie, ProductId, SpecificationCategory, SpecificationProperty), + CONSTRAINT FK_ProductsSpecifications_Products FOREIGN KEY (ProductType, ProductBrand, ProductSerie, ProductId) REFERENCES Products (ProductType, ProductBrand, ProductSerie, Id), + CONSTRAINT FK_ProductsSpecifications_SpecificationProperties FOREIGN KEY (SpecificationCategory, SpecificationProperty) REFERENCES SpecificationProperties (SpecificationCategory, Id) +); + +DROP TABLE ProductTypes; +DROP TABLE ProductBrands; +DROP TABLE ProductSeries; +DROP TABLE Products; +DROP TABLE SpecificationCategories; +DROP TABLE SpecificationProperties; +DROP TABLE ProductsSpecifications;