From f69b66f5fa1bd6337b2bc4106a04ba7663e6bb45 Mon Sep 17 00:00:00 2001
From: "Nijsen, T" <s1006955@ru.nl>
Date: Thu, 5 Dec 2019 17:09:31 +0100
Subject: [PATCH] Added a splash window at the start of the program. Currently
 only contains an image that probably needs some reworking.

---
 umbra/Graphical elements/umbra_logo_v2.png | Bin 0 -> 19053 bytes
 umbra/controller.py                        |   4 +--
 umbra/umbra.py                             |  11 +++++---
 umbra/view.py                              |  28 +++++++++++++++++++--
 4 files changed, 36 insertions(+), 7 deletions(-)
 create mode 100644 umbra/Graphical elements/umbra_logo_v2.png

diff --git a/umbra/Graphical elements/umbra_logo_v2.png b/umbra/Graphical elements/umbra_logo_v2.png
new file mode 100644
index 0000000000000000000000000000000000000000..e90aefddbecae0729fee75c2a9cd203e4ad70659
GIT binary patch
literal 19053
zcmagG1z1&G*ER|WNJ=+IcQ<V5?gr_S2FXpAbR!MY%_gK#>6Y$RQb1Brqy&L8dEWP{
z^Zoxh>k_WLnQP58=a{3%J&e&%lgC6OMT3Kb!&Fp|(Sn16KL?*PP!PcHiiaOUaBzrC
z_B#4deN`36E0@<C7FI5n)*L>sUBNgUoQSxOtHmovYbceawXMCgD9vemHw~4&l_<?i
zepN12S7~cIdj&stYi&O@omYO2uY|2=#Kq7=d>~+g*Va%ADxcR*&K?jSQJR0|g@DhG
zf99m2`sWs?qbQBOss@#`i@P-yKL<Yt7mXMim595Q4Ma;u?%xlCZ=y7IP^c?}lhfPV
zo5P!z!^Pc}lUrC=n3Ic#lZS^L+`;bQ>kPH<VR!bReVpQ7bI4eGymGg9h1$C~Q$5aU
zVd>%t6{Vp8<5d5i+}g+fzh-y#`1ke!AvhmLIJr5vIRE?YP<xyI%k7UN|Lb;FI~S;n
zhn<V-e{SG^yy8EH|JQ?neE;W1d@Nl5PdBTo{(s;8`t|?Vh6hyE3lQSpMExIY`i~cQ
z==i!?b81<8xOlq1vX=F-c81daLy1SaKs4-qtex~_>|a|udjRT+((rR}{l7*H{@W-w
z|9=~mc5!lX*9L55ElR`v&qI&2gDAeXu(f_^Zw0mcui5@<K*ieG_HpDtX8LF3adl3f
zkH@R)Y!CLs^Ix;+|JRr(jUW$Ttj9zD=P85#<IsPe1>~Rgsk&H!<?;UW)PD^rN=s|F
zyV%$}fiVv)c_}JIS!n@oVF3Yl9*%!)1sog%JZo>`D`No#ckys>3$t_cuygV2a0@_q
zcp-d3tX$lXe^cw9yMa7dSwJoR|L%X}YAO-%gsLh;!QKPv;_my;pZ>+_+SYFW`u4A{
zPWJ!sI2F}DCk?T9^++U98drB0E6-QfR{v}ZO!u!*4;LG#w}rd4q%AmPQ5s1b8+$-b
zUn-49?xo`95ajq59sctHZ#!!++5dfOoc~@J=cCa5$I3)F|JT|@{<-15Nhx^lUw;GA
z57Y?ff9etN<v%r%wKGsZ?m*9IIen=G`YgmAoXY<?4LCTaWY6R&RvAtFA#q-n0XzIr
zsds!eHhi#{gh3UIh{18Du!->;Gl!s#^&G|2_l>$~%hxTNoaWUv=`>o64Gjze`@&PO
z<nh)#f3Yk7Q{gp#4t-h!`idog>P$|DqQVVfqC9T_5zC>-uxD+rVr$i+hG^%TKa#Q8
zbev_iI27D2W#cKDz$=&hgcUo;ZlP{f?iM?omAkg5#L$PojabVz*0}yMzfBOtBW$vT
zmD-}f1h=SXVS7U~6x@(9<KB1XZrtjm_^0*lA6$PPak7kM+Vu#vXsV!G6&^V_$|v!|
z$Nl|Oca6nzT~{xHBSUvsc&gK8^l4NhX`D5cwM3b@>HW0iG8$JNx&s%qrNhz>y~LNF
zV{DfZkqT^jtZ}VhVQ&A1J3QH9Gn?Q%?)_Q4f22Fnf}W@=BwXk4i(SYhZ1M$v`CwNW
z#LbZfX-a+?H{ye`ogwV}*tVeGD7t3&rAg1_v-1((p>ITTG`34#b15poV4%7x7<j<J
zq2oRNz{6$d62rk!!70i}>iFdT2=vXxm!0*}Q^)e~z#6BzDhiFJT0%n~K8$5zrK)Xg
zyVubdM{+aa6j^$5p}VL{q^V;nxr7%$gakjhD~61?t0$ABooGQ^+gf+>_nt|ygqEhs
zKe9F-{_Ialuz`WWJDlWnbvapU>la!|7Me}eWf;g|ySuw?Zf-%{8*aIW8N+>j#pV5G
zYY4gQOzi9vQ&Zw@-(*ag(9qCE)r*UZrS6ImbHld3efze(eHRq`SMmBT$a9||B_(Bc
zcJ^?-GAw9rcJ_GH+`>(ury<|JS;N#cKQ%Qq@9_$}{<*b1^p+KQYHEs;ojqL(GRcYT
zjTdXXz<f^jK~vW#TndtynvtPLRv2`5L-Nm+Kqgpg(*B_=2tAJXNyaKGCbM-=(0!3~
zl<{+M=>BwX*wdz_rneL?2#dH02Fcv_4KlrSxqVO}5w!&7&)(q0!!?EGq-JHoqD}7v
z9OjugI5==S+1S_|p0Tw?$xBN1PNrV}*(<=JfavJx$e6eY_G;CS&I^BUX7NE~>xbN9
z!-Sul&Xs#skn%gEy?eJ(rCY7{-mt}atxYkNL9Bq2XWKwuUk8h=^_2qi+vlQfc$+`B
z`kOJv29K##ZUe-cdMSobk;9^28+7M;_Oo6{P<`6R?uebFAMJISDV9A-wOjA-4G8Ec
zB0xuvTkcP3$Cldp{vFKjxi^{j!s~ds)x#DLFb8Wz)$XsIQbZ)5QAKT*Qj=zyQkf@L
z`;Rul84F`$<0hL4!;j8uU~wN_fBoRNG<o`w^N^jbio}+)l~U9X`diV;);0%S{@QPD
zjugAkZ?~-v`DwS7=b?kLii*=l*Bug(vFla@(c`0^kHCXSwnVLz;Qj5VU0<8+=e#!p
zKL$SpEfOqrw()UMB{(((eMG?w+t(Y`5H|_GnNc9NfL2$UHe;ZF2%v-aiw+MDe?|c@
z_SuTagLpcuwYAXup~q!yjWb^T{rgunN1!#l%lp(+AW=n88-@I>o<wFpldm;ub0d9!
z7lk$F%-|7b!~rQ;9`W~dk?CPYMa9||r?`R8f>+?+uqXB1rzR#$I{hxdb_HD4$uW>=
zySY*_lQ?q7R$bR3LN$1g!n6h7?HYImNewPDD`l2=Os!NPUZOtH-A}secMj^0#0>tO
zvtjH$LQesK)}M4lL=Xwh4F^8l-#s2~tNZTdkFT<y>>}e75NMMT>BB#7m3h3GZa=g@
zmngKCb8UY90r?|_)8vE|(zNJPloMYX+)BXwewW89)i3MfIND%f78`qZHa41}cM>OB
zqj@j9+j7B<*N5wH<?8SlFaj9+*<CS?W~wcvP|j5(!pNki>f4yZU$2on;S8t?8mSP#
z40V)Hl9Q6AJN>UrJN-P57TKAZnfs~%1)xHmBY{^ZYv_b*`YjF%Kon#?sq;<HDX*y?
zRvmE&MrmODeoA&Om^L%Pk?d+mH-(t)eyORZ&%HbnW4e2F+YUXLtxzvm@APM+qYKv_
z>+1_0vR6DA92`{6<hVPmt^+*u{rfar^z@7R<~In%+e&}(qnl(t4TaY0&X~7RrD|9^
zhP?|Nm)5~Cp-&bep+d#vsb?uIEj9K#D0^w_CYvMhdK}GAUtc3vZHJ@m@2?@sy@{NU
zPAiQmDY($lo>Dg7h6)|{n|H8hkc@d*O=z+mQxny342O(i6F0eG(H}{8Lc;8KsLULS
z9b#u=o(R)7fCoKx(_da5EpgJ*(>vu65)yK#VYyF@jTtrD&Ac=VZ1KNx7983%K}$5y
zXI#TRpKcwOI!z~ojfz}_vn!^Tol|(d3WL2-Q#eK>R1{@NP*G)6xDuqME^^uEdV-8$
zx6u{2^H!UX(3ahSuT_~@@b#DT-ApqZYwK43>>~t*!z61G!KX8nbOZG`WInJsigwj~
z<9mf~#7t&H6NUV=wgq28AZMYk9IDukj*lE{98u7JkIPR9y#4~+><P&<3-UEIGz?eO
z*UycB6#<$UgL4C7rK4jaDW8as>>eMkNL%sBf===r5iTd}M(*B9gZZ#@m$oBU3^P2C
zZw9FlF$Q|zG=`kHET*KS)OK@N9fd)n)g5#<tZHH5c3Jp2*`EqqztL*s{9taOSkA=m
z)2QZJeJ{4hIHQxzj=8Vd%M`!W;~G2xb6Hz{$U9W7p?XPNJsd=VV(a{ZX*$WVl6O6)
zS6IYcn{7w6W5dHJj?(CHO=$elt7D_1-=_-118>fyqn=4VuhgwxoDkeN)+|xZU|VT;
z6@@~S`6hEe7n&VYJKNHikDKeQ&P$8W!=~nzAqAA%A3(<E@4sM|s~4E+>%*Q=4E_2O
zaCdvveSdS5Bj|FXSwcuyLE$j4SOfUaV{h_qD)`>xc$r&JUf5YG`uh6%sIGgxq#UsO
z?VP%}ri1hr3eMq2nx}+q@0hf6OJ8{w)e=Ba*=iiHi}34mUM3~hU?rmIuzZtolmKsU
z^)?akzjRUnGAKb+Z{8b<gid&VxZnuv&|bcOt-Pv{ey$wM#+{Ry`44#U?}Lg0LVWz5
z0D|I+n_ej*TkPzs)aVUaAvr=uaY)2OWitw<fkfrLPOrOQF4BtjNf$&x{?i=EZGjR@
zN|zuPwy&$<v$kRvlIN~hYy2)feWAs1$;i2Nx8wKZZ$o7Cxa@cbT5smvV%fNIm3QCn
zr*JTpKDipKJ1Q>!M6z_%k=vtc5@vIYbKUToWqi`BN<D1M)=+$Qn3<iaW`EAkRPByo
zV>!=}>%Ljq?)BpfnEd|!s=NEghp(i3cGzUez^sv0MXd${kptH0^-81cu0|amWGo*o
ztmBmlG(yzMV>5v26E>RXA@iTUn}gEO==Gmfc<^Fay|y^I!c~}>twpF52l5mOEP7y>
z!4J0^)?*oKKHCXPrvC5OQpUfr$<&P8?a!2Gm#h2%nj-v{k?KJFdPssup~`S~%7Csp
zgK}`a{&H)`q;2B8hXKC3MFmL{E!J)Y7FxaL4plz`qAk;D&m;}g<t_tYWIzQT?~~OR
zC!b1yb~N2kCM4uXYoNVqY-}XqwF$W1iUM506h4ut;yLQri(#yCCu#URpXYXR)HW(L
z1SM|=rf|%Q=vmABySS;QQA1VdElYe`&rhZj|J4`>jnn)B&5IYe;80IiTYtkeOMs31
zQE3j|@syk9s-~s}5UDj-S4mU`=g_w`T4dfeb~>5iRt(QnR+=gH=?wE4dE}WvroqCv
z7&#TqVnhC9`;w?)mWe;2->5d_N?sHc3%ji%3X@D=)oq9(3>lM@+cNyFdEuMWo4p;t
z?bm=plLg`hfv=dQmj3hxq+e#QRw_)tjJRhjUaL<O*>M(Fr;(~8SM@({l^i;Sc<OKq
z9Zi!i%dPl6Q+)}UeJh#S%asg=Y@4GeHJLB!zdM@#YA6w$d-W2op}r1hmbI(qK)Gtp
z{aI%Bc!9VX3J&n)dZ{SF&*)a0Sj-46@o^<~r>|pZ<PEb_<EDKP954x>yhYZVEy%XU
zCXPP`*0SyMV20MdhVg{u^qK{q%g1E)bCA;u)nA@3j!sNa00#hwpQ)kYVGE3qZ~>)G
z<SI5cwo<!7Ek{5V&Y^H>a{7;yg<YFrzji(OC@x3fPumR=nUqBnCcd~)dejS)9%r0U
z2{W^}X|d4o+IteTyoi>VX~wYS4u%lF-XYq{m~gL^ih`gvz|8WLfz7~oF;#Z7&}9EP
z;IRP=A2>3x`|DSS<61-52$12QES%xtg<Xtk<gE=lL8P8D%+aGLecJUHok^II3XL7O
zieqRD(Nk&>IB(i5o@#3EW9;J46}c?<QDGMf5E&Dl0+V;XKQmXZ8rSP&Wr5=_^KLb)
zcQc-Z*SY)7>*8S^Vk#}nQAkVDL@iHWBm<{@;7%vM*!E#ri7w`v_80W^fj$8VrHQhU
zr0&7B=1VqYmu~wxn)&?mbbh08es@{f!JU!R)Am!bD;H9Bwn;jf)Yad=e^dJH7d=|2
zni>^sT+MN$A#u_WrsGLmz4=}NMoGl56k2*EI!4hk0ZBZmCbKLxn=ctu8Mdq;!W?rA
zP0W_kVG5A}>XNVHj+sAkyxA3WUKO$&h~6E`95VGmM?b~pcNh2hxd|w>SYxpLTuaN#
z1K*@E3dZ%G?l38vIjZqVn~WWC>X}#-9!0T2TF%>I%9J<hcness$3{OdzIk>KOJP`X
zQnOTuNs_%tGAgU7IfJJz@@s^#U_j0tJ&u?PveN~00Fcn_y@FsbEF5o%VB;&<_(W$*
zxP>IviWF?5I_3tnL@#<2D_R$#5WV7RgYemm#0scqF==5JBus&;x1N7aX8Z<SAc2AF
z`uX#iD7}bAYX;Tq^Sa<WR&1036`aR?Ai0~hK@ZFxZk9lVP;C(wnY-DCgHk1sp{i!0
zK(Rb}pcbp3BZCc-Y9>VCAjDwBaKag(<vV(&iN^yKkX3Cewb@6{Q(#K?E~^et*<>z1
zJ)-YgE`3I;J)SH4dq$p;orNVfgocnX|6AIyiP9h7l!*Ttz_Yft#yuv)&fw7?P2@17
zVq?swVWMSf#4ehTv9cl24l!AJD-``@C_ssb4ktX?v#P;X6J9Y|y#j@Wd~Bh*##Do)
z4cqih*Q<^4PuDj`b*EjoC#$Qg#C8@ITNG7lCm|A>!2ad)*{3+?<&tu_!iOcsVCNl(
z&Hh5E5#gfl4_RawmNRq~GtPa+y2Nf#O8AOQ*PIexpB>S_D3sy(CH?|_>lEw&CT$y#
z*E8>|^>Da8vC<WIOX0ox3z$RSiin7aB^XU>W@e`N*)T1y?WEN^DH-f)UHipUg6xYg
zrf`9tG0&LuiV)cpd5dm2hXs&_gG)DhXAj^BG<2->?POlZ#n-qeeH=5TA1R67Z2PLc
ze>@(9kf3x}E1OO!7I0nLegd?n$$Z4e`e@85sgqvwpOqE)z(=MhWn}p|+NGcqwU4hl
zgv)cDqwedTA>~wt%XijOB~guA#7ja?+Z(uEIoX%l>~s{$#imNN!h}^ki5o7L?BrB8
z7`duD=PD;taNO62+}?0%9)S&%J(l?2pWtV+1wu$@S~v@QrGQ_9L`0mX7?qMkRQqX(
z`TNx5Nv5etDY-24pRjqWOQ?)Vb_Almd-a%l7(~)U4RWFuB1~b*tneCn&BREJiuz3j
zX#4lpp{ojfPcK6K3IEX0oYTK{bNlrKOQha*>N#giL;X+0bcU;uRL0=@KYQna_^PZ5
zjh5l`NH{B*Jep7Okvoxek@meGY8IjVaYym}(z+>uFAmEMemBac($yld@&#mC3DoTv
zn=s+lppBe*4pD2DlpEwwZTBlDedQSWNaXA5d$sQGqNbKup=6*hLy=B<Wj|Mbcf0XW
zPCI}!hLjd>o_*n<*-!=3CE4Ez=aVeiI@fTgc0aetswFJ*MC<9Uaf4PQ$>|U+(-5rx
zMaH$4w{^6pY5V8_rG{r_?KW~aVXfk18}Aa42n063!`=O)^J*QBQO&0+GeQ=siR%7v
zHpa=QlGT&XgPlP2kSjk%%ZXufa&TzBOm0no9-EcIQ1vvqWb=b&sf_fIj1^0(e3Sz2
zcj@#(@+gj?!9ss@TQSnzXh>27(nok6zLt|$eDf6NL>VhUN#9*<m>C-%S2_?9YRZ)E
z<fo@!95+p&1*Y}%aMD0GTi?vX3G&M<e1<#DA|j8e$32vZP{Ap}U{Z}JvfRhVS<Q8T
zQSK5C*i2|KTdPyFeSO<`HE&z3<KshcccvVkZ8w&|{#N8n0npG1+FUOrD<gCA^clI&
zw;0BGn<{697gGB$yrLr#nC(;XZJ83~&xa-QkkYOGF22t#x}l9K%PN=nMpS3nGt3sH
zuliqps!0TL^eRE=N;19YL-g!$KG%i@BU|CD<6@2P?+L+@ny`onK@|0qlfI$QP=xd+
z^5}lW70*7M<UJ2{7B<B2N-leqmCs`~*;oa!A}Z)9ON#c>7b_0c>?@{ejcR+pu8DAG
z9a~hYX0{k<D$x?HS3b)}knZrb8q?qFOS8S#ul7Ovke@sE_qV4mtDiKlxCLX8=5_-|
zx#br|HJpo&td`-w<LLVpQ?53WKRx0OSnE$gx}&AD!&Xv<;pUkuNYSTrTq0eR{l;V;
zkA-)vE&aoaX~$s&sq~GYl3ECPx6hnV^~4hkIc)oLLReQ~gzSV2vHM1w=aG?1Cp{lG
zVlO7I7i@UilQvp=|C1D@m)}!8PT2^jE-FO%KWZ;4PCSeSi;TEfq)^lDrWL~{<siQM
zhUzzQY+(-O=nB&p`&F<oel<FZAup2mA$Q@J4rzILci-YT{VED0WOdAGu0R~jnC}Df
zL<m|~q>NCUkN)fwhN0VTkPN#%?Q(1@-(txiNpk7mh7cdLpg;#b4fo)43|69^<MUsk
z8JPpVf_9^$k!%t<B`H2n9XP6@PtrD>c?I4d*YIq02)V3_T)AwpvpKM-?A(8GtoyOv
z`BinUmu*<cLi_>8sz*8!*J`serNK8nc84hZxNw|9hc1@=Ek`L@pNgSyGhK5G#>LT0
zZ68d4R9boviY0f*LR=i;a9C^`3T><4(l-hxB_EC9;3Ka>pNYhFbu9d~J@l0`hs}Yf
zdFLKPJt{c@m@{aIqzfq}EYe~%jD1)<op7&_%2#v`A>XizIzHn@Q6-ZoWkyaxD-AR(
z<`G9LQgWo#Lu)GLFA@=XW0y{Qk|*pL=0md)=<)ZL208Y%6LW^Arh>n}vlUsG@B60H
zliHr<-WQJQs)NFDt?+xMM;dih>4X}C2ZnHNUE=-5xDYpbCW%f*J3VY2vhVOlx51{U
zaDnDer9%B!VR8}dkgd!eU#a*Pjmd6)sNn*VpOwWEyPCjdGz*d&Y}zv8PQR8LGer=H
zAm^_(H8y^5UOOy5&@U@N$l!~|Gt`ntbh>*ULZJVVMk8q{vW=(@GKL~W^3$;SW|*xW
zB~N*LtthUC3aN58dD%|13?-0|JDS3Ce;^W}M*_|0%>@2Hej8`PM$qk#tOMZ2F>?X+
z4RtYq_-JtBKvFypSg10dL^?}zeu{bOM(?kOO-nUeLNqI9@9QDzWEVjwP)BVs#}Xx`
zIb&HP_gpeX9?c~C61@dZH14v$kbdDb5|eDP*5oKA1%!;qk*hE3Ognvl+XyDeCC?9#
zZ`P3#w?zc9<xHzceomJ!Od#da49yRH=Oi8Zw?4g|+(7_mm(wJ|A_uQf9{K>=^Rz`h
zxtx|vGE#6aV$374$8<V<IDNRUTVgTN*MZMkElW#fR4<p7T3fWkGQxp;*6_t?`xcsC
z{C+I;gxZhbJI*Qtv|y$$oQ|zhJJ-ZT?OiD55qcj(^K%c<5XiBDq@GkMe>KXjCv2X0
z?uEh~h13se-WhtP{Li(|LetTy!A2ar4O(C!Jv;Y5K5o>Sb?2`Sg<=FjmGbG>^vPHh
zne)#Qi#xJ9HOh<$w~SO-$gClQ-skwQvmKOTV%~>jSfFde>(dgGT5jLg?5xAbhVRHA
zC{Ktl9v<S*?OR1l_B#G^4wWtzIMiIN)wU{6-q%MRSNwnw$Ii?U^C~0`7HYw=MrZzP
zHV0Wr;5gG*bPHHk^Y3XiR5rtc(&}#gb@g7T!@r2u#YC-ZC-g+rjpawV@pO4fJkneb
zqeh{=0*(&9<6@SJw=QvDa&)dX&W(DhUHr^Pi{sB04O{3VlHppBzO5gpxgs{1umY3O
z&Gu%4Jr+8*us1iZ=jlVU3_scp{q@8RaFnW(UDUSJSnHGy7qy(6r=Ve9t_|<pd_I{Y
zIHjG=&c+gl?QYg!8IdEgol1cf>dMzKO7VO8mrm4imLv`tBvu5$L1Br5^miN2>?f||
zY_()I9wfG~fs*uUIg=dpS$Q6O9nKH8=6CySIVFyLw9~Dav!dx{;q94)f9L;9%i<3z
z8dWyDve1;?jCu;JO=?jQoZv)|NA$gx8vJ*OAn%RjLl$`)ufzV&xJhS-RL@Kl5%pBF
zZN6GQ+`QxGKO`M?hGn6&u&@<EkSYsVqO=>GF}rH<I>X+5I#5;KEi$AXLwA2d?BGFe
z`xt>-9^20p4_4aSSm5ygRXPE=caU_%CH0caW#z*dzHi)JA)T&Vh7-1oj?*RSN47m4
zFQr9sAUxj+(q{=lGJZSzbFe!xPILEo^^J|5bj5x-6DPJFi@wBCg{y$p9C3~0p6|4g
zlx~;hAe!<C2z9$7trzRe%=Gn{q^aYnNwa99!@|(!%+k#5QCfC!pxV#UDHYMNFq7%C
z3!@Ma_02_@KCumRm?K;lwSA!K<DjzG70l`@)MT?DOgTjPJ#*{PdthB3meU0Cd09*j
z7C1OT7ps|^W*i|oVSj~guCY)fE)Xqv?O=swAM~BzhFI2wBFZZtIE1!g)leLE2Man}
zOqHTfgeinxPaU!&_4H9!)NIqGEaxuj@-L~XC?|Er3e@eKr7lBM(k%))lL(o5=zB}D
zj5fczbORq=2{=*Z9|#F`2kY{0XUmk=5ZxURE%@^GXy9JXrW`Y`A-pgQt8gVB`imyH
zJ9k%s*zhE+z~uTZA!);Cu^)^s<#yX(u~f&9Xx>CtVCEvU*3fX)kx4e~TifYOVb3rE
zP42F)m{LhDh;!?@?;)e4AkZf0PVxtF5hz21|6<OeXy!@{s-op9$&=$+&VD70XU8?B
zfij^0B4`F9anIb!L^eE4?otMn&m3=y8WlMj-x40rnU$7Lvgz(eC`sDK(#>2Hj)vo~
ze^}Dc{eGhfPdxzA>w7IHgoHTXGV8~;`lDuqGB<x|rwhazU5=O#eJxsOR93Q-Ak>Lh
zK$}ZZ;!F!uD!wX6=|~I9Jn~8X!7OVEX_)A4QxSM-APwIcbdG}DVDE#?{!~gdnh>2T
zfxNLxIh><Ov$OJWd}1QuLmQx;3`#3)vD+|2czB5m{@oxKiN?*FC-Lv8k&}vwFmNDe
z5jN~4iC>mg1U8i`BuL|;5cX*<BFlJm)V#K$)F>7;j(2H3z>^Fd^HJ{ZBbHpT1ZHzr
z$nM{HfW+FUy`{w#Nf5oa#d(Zzk5K`HpT^QOk}iUQK*qx6do0@YC*5D(FmruHZ0%~k
zc41P{((q@j++66{BGao*ULUu@9R$!*lJd-T;u?-QCG&&!=bmKi8Eo%&kl=i2s%bSB
z%~)l3coszMedU&NQxWY@xfi_}kQRf6!oy=iRYxL#pTmwkAx4U?vR@*|#vg}r@AV9q
zMtQ;^e|jQ-OHASl1G|*6pMi!?bD{iFJE|AInW)gmDL~GS;pH;Xc}&8^FZNcWd2%jp
zZ+M?vzdEK+#RF5g53`~>vD5IV9-9_A{0pIF0*jJ_MV3e9)hI1*(tF6QNam4hL~+`w
zt3sdgr>t<L9_T-p-Ri3%0fjNm3@@atW!Q2k+m+QRyijH#8JVsR$U;a^VG|J%dA@&C
zZ)U@yjEwSv*DFQEv!NI)hwg_WGW!S8@34;s-w4guFSV4tlFmRph(q(33;k-PN@T*_
z#8M`#6Ny<a`As^|RwE>DVcaI3X1dfGTO~cFG|nC#5*IyPE02^&E<6iT11v|@7C7vG
zrA~$tDM~sdmL%Kf;hqwd!YPptU*T*;KE>c1_)H>WnU!NRbx01;dCtwVqdNK?iiWd_
zSeQy;-I&>=j-g<NfA@y|AmG^5QCTE(au~Azykm1M5p5s82q`Hhk>Z8T$XYSOCXu_k
zs;aJmYav>R%P<d)gGA`dG$#@vLm5PzLs-}|e<nE65h%l(T^yH2vjo!o1f~k<91SHN
zSMskoY!yw5g`YJS&6Tw-EBNKn=Z8c6ujf=1j-5rSDxli<{A^#*rJ|dgn_-m>7H(+Q
z5vy}^bDk%}o+6&q3d4T$R~C-aYA_V~fvnb_$VyW4Q<GL{d@Cao;fJhJ;(0_nyG;md
z5adNT##d_wr8u{5%JLVcpFFklqC<U=Fe9W3mE2R7JmFYOfuskDnd$S+j;&O#x#a?<
z!>_0%Le}~hYb(0y&v1tQCt_sQi>(4o?`cUPJ{?cSVv2d(f)B-{U*aHHXykE)9FI&w
zl4h{!XY3;d1`eetQOu2?H#pgeaRYi4C@m{*Q1Uvbb8L%H*|k)0isppLsyN?}9H{73
zsO1^9IQYUkB4h_peyv8>5NDa#L+g~k6*XDGA4LW9o|RNg%Vr?SCyEukO(AN*;ESLl
zoGwcri=pF|K@Bf|p<n-t@{;9p1)V?|%XNXDWUiT`csMpHH(db@z1D0s;OGP3>u{eF
z6yznXmlQ`VQW``fJ=&4ucJQNx9`+WBq+7DJG#4ZXR-YGZl&LavFD48K%XjUsdJkf8
z`FP^Co>1z?qv3gGbz)k%dS%F7QU4(I8x|uh>`9~dj>`_ic3*1!Vdq5kZF)x3eSKwL
zm5xYGQ5z3~myi|i_Ea|Xl`W3av<2(Z?tULbTNbK6b?h@qaiU8$f9j)QX&EgBLyac<
z_NP2Y7KKJHKN_d&hVZ9tVoX95LE<qqsUCyQ(S%CNRsCwXPIC)s8TZ9!4b1xc<!K16
zdbpa6f({e4f9#~!Xx6#ZA!k&20?qL^O{FW?Db(Im90sMs{p`d;D1+l=3V;rh&cc^^
zI{f?2$ZPBlfM>r0o~<)!_ww^=yHO+H&O^Bv+y9a14E19Yno9IbV=54h=h(+COU1r`
zU)h8DwT@a;NJC>#=xLi&5xGde%ERb>Xh@Pz)gv)sp(Wmj4^8ujI5Rq+Elx^3kTb*=
zIM>@P)tc<Y>g)T&nq7K$lkd$cbLt|N;zGxq(kT}Wq%*1H2^v}0!Zt6~c{I2`j-LDn
z7J!%~68EhZ?>EN}@k;%Hv&q)xiHYeN-05-)ed*Nobj{T5zcCyTbQLgVWn)!sdkK*a
z_$`bP6>srPBPLnuyHFhPO&318Y}i!;S6ue*jk*d)E7^%T?{353^qUZT^G|vNmwKL5
zxYadAaCaBDWlu^A;ZkXIWo&iR!|pkr*vu*+QZsxA+obmM?n4lZ)x51=v$9)4FJv&M
z?B#Hkl$DKwHLWUZ$V+g_%l=5dAu{!`04Z=0-PJxC_rEukRUkEx7#D|*h~T<BJ)}!=
zNI2uhAr+|ZA%mc&Tsb64Ko$(Lwp8yh;q4afl2}*1CslJuQ=&{)i)UyVn6R{9g{z@E
zpplTW6@QL_f3Gb}?>kh|ZjUsLv|cbw6)D)ybB>8t)nV2hq&YL$N5gWRzN)RI<#)c{
z;J&NmL%Oz+64y2>y_Tczrx#A9!%c<mi`%9E*)_mX@{ML&?sdt+N4mmNt%@(%Kno?n
z-6iwlj-xA8GYW|e)t#9_5<%dhxE+<RXrx+G9UGpuCF;kFap*dqRaRH!MUS)Vdx~{)
zb*esuN=KSj`Am}mjdnWaCw3kt8Ga(iyoT*y$zjt2UUe<c&j^$<>iLY#=jf$2<ssOm
zZ}syn9VObRGGvOi%92Qs{%pIvg*%G+LULk+NSYIR(e#$e=^FhzpWSpJNc6AUzqZgc
zFn9OHbE?NJo9TSUs|i0$n=-IELkU60eD8xe`b>cs_GvVPryqgonpGNA$HclG&H?>?
zc2x5&l$OHtJryrr8rnNqTRcy~PR}>|1Dh0|94LNpNc`ycVs)gk(=sX7!fqkPK)${F
zar8SPo&i1XP<HsoGN`MAggnWxl%P4{&?#519M?Ycm)a9*Dnp5M?d-ze<ef4pneJ?k
z(~;&~e3KqkK@N~Fh*gLgFKt;bYzQh#+GU6{3FOdq46@#^u$GV@SVMo4NJ9D8Dzze>
zVi02o>aw$`!Bg*?2u*@Y(pobe>sM?8i8i-hNTiMFn+2sF=eCwN>+tUrv1QC8_rspk
zK(NCRBR-?hq}3!VoTu>!%_1x?$EzblJT<uK<0p9_2^~+;r&pO3M6NLg#6s)s!%jer
z<aX^eXs>0FkT4w~D2bfUP6K%M%;@_*y%N|^o#~Jrgg<9m-D%V4#Mvd}MWfQfo(#or
zDQXH7UK%wDH&f4(r;r~;1gJ|Rk}MP&5i*Zp!p)`E2klDc$i3xH`Lv_Jf9=$(mh>I*
z?(WF!!QmATAwTAI;`!~J_nIdWMS<ONi5ZH(j>GdyHqLsP??{`|vgWq5mn>D$Ifbm>
zR=#M6IUy|2o_{XAh)d;tYSN-QIK3j7)MY*;SH?+$`1&O-N<s|A7fo4xikTOOi|>uh
ze0S6H4}lybah-ggE|SjScSLr%qFUxK#to8u6=qWHOoi^5PA6&Q`QH2Hh{YBu(ekdI
z-~+KWN!E0OmOeG+4O%gO`)E@7z|SE5LkZF1cJ=){xq>PEqoUKGi0`@|Sa@y5iErO7
z6Y^tYwBFv`bHDnG!UeZn)@4WBk4R6YFHS0OOdpCNa@v!qFS)oTPn>H_UxB30?-^-L
z%_mT?SRPS%a*i)rx-`qzIe<=#q5PxYkW5c%4adRZgF7=QAh18hB*lO77|fxIff}jj
z62JYdj9r$jD<ZYRF)?zvr?f0~WbvR{uFw{R^}x_jzqDSE8&8@fdLcT}M=sjq&pZ(L
zO<h=gw)^U!2$z{Fe&kIYq$0WrDq$vE6sglUhr|n<o4FAQ3n6PJ>`UB>7hpr(8!k*v
z7MdoTBcftr_b$P=IS`pEh&84R9$&%kGm|_fUSbSFBBGa?-L5e0if6c}<twKKNum3O
z(r-dvhrU<M)NARrmaUg<JEr&$X9LP-I?u~w_Ys~m5j%VY5|VxrGmMRbcy@M%@xAP`
zty%80Xuu}(T28PXA+-zuK}2GZd`m6|$qJMotoLNjpL*}i7er;Q1piu#-z2SmJmyJz
zv7FqW4}cxN6oNBXH5mxx>;haNo0S~HN<3+-2lVv<y`pFuxAkWw+BG{hcbdLyM}+en
zY<hL3qD?E+@c@HGb&aK4RVgX2Ls0$fm`%@sKjF{aeK6q3#n&HU4bv&@+d`b3=P56g
zJdJyv(dmXIqFFO-_cVoamFH~d?Va3YRcY>gZKS1Cs%?td(Yw>uM(Jy{$>||)4vdw2
z{z14c{%OeJv%!+$K1CP+CF$<RDQIYEN&WadTB9N(J}iM8m8remKW1?QXln!<7!i$`
zJ{kzuABuy61J17NZ_zlko8Kc2Yv^uSTmPJs$@0(YD7L6)Y~CwJ2lejox3YTfCu(Xq
zmEwrVkj0V+$cH&j;Y<~yS+vhzJ4qdGueFidiE0q(X#JvSw@zUBPSHw4K+qdG-L3&8
zDoR*47oD#9=|2DVCobwDbm8oFZ!)*lVWklQz%l@bqXs}!M~kY}cj#JkvycC@v{F)2
z@$m4rAAxJ#OOz*u`c&b--#Qy*jl!Z7d;Nv)N@EBGA)YC%4t-KWLm;zA8QMX6)!fW?
zE`{rcNW;0dcL704W-gSk{7q@Wz#4PHvZKvf70RxqJxBgh{*u;W;Gj)-ygjSE4KIm<
z2YRc5^Tn)p`ZfPd1Xu6m>-zYqJ#^%-mD@{-<<1xG4LP|UlVf;{_ZC0RZ{MfNj$_~J
zkqJ5*|NcIKL{y@q5n)d{`woRd`Oq*6d(}4g1Ob&ZDI)_Jt4L(u&GaK-G(VCF$@?*x
zHf@sqNr7nReQKSj5f}Cz$LmI+=lJt+dZ8Hm6s>zZJ5+O$zuQDOMsBrW5!sfS-i0n~
zI;0c3z2@~luYZ}#%Ia%wJ1+R`^<%|__F6J~AAc3}+1D65CTx(oZfED`_xv^xQ*%`D
zRWgDih)FxCmsxrbE~~qp$5g9qGv&n&XT}&Tn{S{f=pab99v4MHC1sov=B^V)*UnJr
zb?_WHlsF^5I9rN4ZSi{^9U$gfyZ6xvrDPx5d{(6NqTcz(nopmaVG4|<?n<Mqb=~<d
z_4L@RP3;eUlDRa`5XT)#$<)dK><6X)F}I-VsZYAgbJ=5NC;>&1vn4QE$-@RnrRC*~
zef0q$JA7o4^4vD-GW^wxIC<3UFf^FE5a#p(C!2|u?50z%^Ioxo#FVsVxIZJYGZ~A(
zf^r3?zhX2J3k#Zht^^H$6|Md5c@m|T%an1ZAlaK&B46^Bkqsc>k~ww&_D{#z`J_}a
zRVT5Sj&Iy<*$}={N~VGI8UZiw2Bh+<tIUb#-x~o4UK`7Ce^)0)inw`bwv_Ne%YF^@
zMj5U^&>*2euI%7)KF>U=2L@+b+4o%;kfA5zcNjSIKfFF^Kh^Ni;bJPPeGX-9M8&z$
z6Cg&}p%i5alcWxx+G{_FBs0C<6X(t0iz)UZtiUNvGYkB)yZ><Y@a$xRa*O_?nyp}J
z@Asd-8~~NMy^V(pE<9~*?YYBw`?UQ0^-pd#Ha6Sw@#Ev;=W+=EERvL+k&&Bwe02*#
zot>%B<VQvE2={nPF3b~n0~JEv<kEnkZ?cds`XEX_9H!p9IXnY!6FnUrpN8_~(<?L2
z1zpOZ>mrc<&lqoxql#%#H@nk(9)d?^)MU{m<AKGOH)^|Uu~A23qCtQDnyYOGU?DE;
z>e7L-1oO-Wc<vD|w$*2%oIQ;Sg&p6I0(M+(*f>ADm|-m7n;eb~<sqzK6sR#1zq$M>
zSZg+Ql4KY8B6JlUz>(Bs;{n+01*o;2s*9$lrIoU3#|VlfZg&9x48YGKaPjle0^6*+
zxQjq+UZfy80I;b~o<5V|a44IuP^T2C_jL1WLCim+P>R+#N!@wRa4U)Dw^3LfO8}Rh
zX0pgGO=29WMfQ4a)mrPfx~Fq7K&GUhgblj_B-iY$Rug~tXUpNzc{T<4>zt${F58pU
zzm1I%V;KfE;^+;Idy@d}m5)o5xg(Tm9PsO=#j(2QxZ+v&hWOv|94`tX4Yu8x;^GGq
z@%5hLVy&H%MKRyAosGZW1?|Q)q%6ddw1lgqbg(*Qer<w~nuXqBXCJ^lP$<4mjv!q_
zVYK{f(#^ApxKSwd_=9hoJDeZjB$uOFSUMM}2-x7%C8<{sbkvq(9o0F1g0h@;ugv~k
z|GH+VzDizMoR}szScT`|JYZ7a(lptLfhqBafVCv*5izrrZK&Ox%}8Iwg4BNE_WAL`
zQTvatab@G2oWXlxSUfzuv>hL29h-3R@HT=U?!d~5)2)u}mN10}w56n(ocrGU{yE!C
zC*YUjb6h+QMdv6qj{K(fZO2ObCEuam40RY&*=E?Y08(@DXSf3?_)y`JQH$G%wSGNp
z<Z#`h#Vu-M%9RrNw?H0VzNhW81i;wPRW1d?#Xi_u#Avq}(RnKJp?5-V#dn!yO^CqE
zxBJh-ny;_vhJ-)*{%&ouIdH~M-x5;G@%j<;<zt=xXtBAgqMlyPhu75_>bivMAlL4H
zbAIspOEZq2dTOFzM!G(lbX=v$Yw_FTCJ8DHBzxN4o{%R7A<3pn#8tE=2^>O)P;^*X
zY-j-Cz!$VU>oQADNtyDq88q_#UF4NQ3>Faa6ej|<GH9|vot0F8ODi9QIq+$#ZcT|^
ztpfi{bauEna+7jO+zcSgM%=RJ>mDw1T=Zmq;)D?iUH$z{RI9Ivk3onOw(<I_*QD@X
zu4RPo-zpkW(YrX#uKkrJ#vO+KJ+A2VeS<aUh^ooJ+e-lEDsz~P9Hh@Qra9-cy*C|E
zJz6BvVn``6rEB*lE_)7w#e4xe)ZfKS;ygS*c(Sn=0T5Sp;ech=a2DNZxjy9N>4+ER
z!u&L+f}^kd%V7Y~1qJW7#N2(fo@`Y(pso)<USmMuM%+@!_eSI?FPt5vcxTB3@2`d^
z+bQLo{%%E?cKXZz>W{7p=6MOAhXA4VDJUWF&Ai4;f<zHkBnwPguSQ?f+J0hxz4JDL
z$drk%$jYntEfrh*Xph-VO2%SOzU7>AXl(3cF;>aGvdL(qU96U_=8AF7CwNECKLjt0
zw@i8hR~oHZdO`=@e3RT-Va9Zj++(?_2Q2&Opo;j^%eUzdJSQL^m=n9%&pkh<8&Zsk
zYd<|{f9rp_)=pAsZ@&$EWgkVwhBW`CraDTo)e<b)YhCYTX{A4Ze@}J)JsV3g!kehA
zu0EbGJv^8x86q+ZaATPzt#??c692n}rDH>Zk0n?8tX(X{B%VpS(|@qk$rt)wY3>6?
zCaeh-S^tGOIY4Zq(RyqWNRP*#Dr#bk%Y!-FuOD7p(4#t1t{Id$fzRSM`y~JboL4+f
zxbTd5ca~oHgo4+m+7{~$henuwH~;p;|9FJ))t|TV6>TdK+d^-_cB<>T4zF%28I=R2
zvqq%$UMn(#3fGUdC6!EoRDS<)J$ArDy%$k5ZdBvF1;c!_GcFw7F^w#a1GdK;<d>aT
zl_XIl&wvE^P%D5oidcG455y9%2L1gdug7AA=Ahys)+jxdFA8Agj_>Z8KZ8QV?fLP$
z<KOhR0Z)Rj+7B(gx;KJvVVd%2=xgek1;m0JpC4NMtMc3Xz+M4_F#~UN+iA!Cu<MAs
z-4NCT)^h_e1@f}yu>co(aWJ<xoJ@P3hH=Nme+I$aEnA<Hc`0jGtPqPTb*{m=w!8lh
zqkIjWmxl+i$kv)#x8S<ZHZVA5Sx+Lk!+s!)h}xNg&<Q{mY5>4~e&<6pfxCytQ&X>%
zs~kc3xalh7Ava`W&xHZO4JS}W=a1c@arioa@#CvEz|XTAHfspuhWjCH;UD^tDrn>d
zKHOb(ewC?l+y1OBdXYBCEptMBM5ZOLWw$D~raO;XHn=<jXCgHfJIy8Pl-$KuhI%QL
z?sGQ6*!k)bpwj~{7GBz*(}o~%k=}`+Gk@c`4Z{+<{+{DvXd|BB%JkxPN^o_PL)IlD
z|9-7p_4w|Tf3<9%Ea<w|WdCd>SC~I!MHYX=1jTLLcaPoZgA>S!yDraRan2MuTQznA
zND#ng#1)UDESUx0S!bF=@))32<}wu=l38S1GqIqe`%%+dns82EBm=#ow_Eq=TdZSU
zX9g*+q0iNtw<k}}#;|Hgm)ywk@b&qeIxxapOdLA(KT!Y_=&i`LdH?)8-H`pecf#AL
z>U1Q5+;6spOxnCmIxWHsV}sWJ>@79lGCEk0L<7~e<}oG8D0MZJiu0g2UDxLp61uaq
z1AJ!Rt1=Z+({*s5L~QzR)=^m%&AWEKslnb%i=-7gBE6%tGe%dkgv}LFu$aSQO{G}9
z-`#;4=A|>)u&Dnf^k{LSU7Z{RKgIWIv&A;W&CTcU6;t#54=X!5Iu6rIt&bM#IxfGw
zVXdpN7n$r!4aNe3{Szb|Ku+cKxt1XIjb07yL1>o~z7#$oA&3ZP&>KwVfer`VB><~k
zSWAOX%+8Hp<UsRIm;N|gVbPkfD4%(p@4Ein$N*8u?C>Vy2knO$_$SB!T{`%}hDa)&
zQoO6UIP?bsuN`M$Kgb{h?t3+w#+<R@NHsb-y6%4k+Bp;z6SW1oe-+)HRCCzWr6>LT
zoW>jxBGHg0e!T3q+Y?fO)P(+4#G9zs-1Tf{L|yDp>6hb?h@A`;<!`jwj5vhXK)>8x
z9PK6VNJaPc^}RUl@Bj?~Cl<@z=`iBJ{*f+;^86RK<b{W}thNQjh_*(h2)C;}UH+x%
zFA{lybMbNAkCmUFzk|Ozw$)?r9^jGn*sDYXXaYjmqFV+P9RY6nC_!-DZn5T_cb}0C
zq1Gtp-Xw+R?GNFVl?7HsDa&u@oSl5%ID>`XZ}j>ooNxfnhyq2kKoC)IY0n^zLG@*D
ziE*Tw9TpsZeH+ZbF_x8;1y(m-*rOapaHC!upXC*twS&@hWL0U}$-_tHjSe(~9@4aO
z1!DNNP2j%ei}<=LDaE#a*X{*1s>iLKAjdL@FDmUXiOPCj-QK+wzrW7ner4IgF(DPD
zN+!5|xhMVr91&BGWRj7QkyikeG}HYc3Q+f?gV8i1586YZ&w|tVlk4$v11c(N^b46!
znJ|v!haane0K8Ko+m$=uF_(^CpH&6d!i(_~h_m0&Ykv9rwwwzlRb8A~0MTKPlEI*_
zKy|Rf`NHo?FNTq90<?%JZ#(w4ceeQ}-ND_PeR{+3Rd8!a81HTXPQ~<->lQH4uika~
zH3WYBpzMF;MbvhFyy`nP@?ajr4I=9MfTQ;>u*e^y0E?};DKY=gT<y^zd$j;6mOn%p
zyt;N9<2ma&^@WFz6wcQb=%SY<p6L~q%FMRoS#Ch@v_C8kh<%qP2>;xhR&*llfUrna
zy%Q*3tU#BZ^@`#VvOOez&mC~>TGyXw7W8Kqv<vkUN}CkM9V;^P^70l0oQ*uD3htFX
zTO^cP{g-OH*8;DCMQ?{iq^<+HOapKJ0)*)YP<-{H|3%tB>rFJ4$q71jYHp@=QsnKu
z+@cdPK?9b}MD{|bzjxi>db{`Oa>J|c>u+&N+%DnCeu!QO(+es&T=F~i@RuxEb+g?M
zcc*3mWJes(`3Fexv*#j0;^N&}tiepio*<0)98cl_w&i~Zvye>A$+_Km^|te2@&zbc
zFEB+;?Hx@wY_I<L-Ff?Dm^4~HwOy!H?+yU2#oTwIF^IG?v~B{#_OmM)-30UU^8vW7
zz#Cxuku8BC^8b7N>%>fM--h-o?e_33E{w{V;eBi)Z%TNi*|MdR1rDSr^8En2*GcQ1
z*!i^dqmlVm@C*kaRv;ifnwv{5`TUE_zV<UD{x$w3<KF;s*5`7>)*;759B{v4J0yPV
zbb;H3{q65FiuG(ri~Lmn0;`;75$W*SU<@9kDd<cR+z6O6*=OJzYx9)Ef>)>lh&+$)
z<Mu{ncgL)80LBCqWCEr5`r3e!AT^1I5?wG|f*!R-zZhR(HH~k*-9ptuKbE)%bYBA?
zd}Y!7uTCgH-WJq|SEU8U>En+==OX}qIsi0P-CX`4d(yy;5Ykg!*KxKwr%ptOuTw{N
zkU*yHb9W)RWV}727gvE(m9T2^*oxIK^xWgh&#Heev<At_{$$l-Do@zM1_<#hS}%ZF
z%oX-n_do3%j3a6isYVZs)<CfAzlyYkxnF763QCqsTjVBaaC<YhP)kP+uw^Hwrt*R=
zIbhT@SHj&`q$+rLc^?7EpecbKd5XlAcXVv5BJg~sA4|lQPw=B3eWmutlTUjE-JS!{
zbAG#)^O_SoCzjylAd55$fYPf;=#Xl%1*T{>a4rDs+79}=Vq=E8&5st}7Xb9+e5Ll)
zkFP`@xDwW*UDu&yre)c*?9cQWohAJIZa_8&8S6RuD`n@$cAMekqoq2*4%9;J!q6Px
z^o@bpPCt{msHmvKm;JOQARI3UelUAzdwsNcNI?7E>&GovcyAQt2bW<_7|zbgHvk;>
z15H6<e}77Qz$SaVL4VYvuBf-@@4(S`JVAg?v9h+F0K5h|zV_K(2$QTk#JY-!p=sB1
zzVx)e)IfQx>4Of!hs%%MKNhNAy1Sn-la@B>gH91({MPP-s<Gd@lkb7<4ga6LPXW;1
zrt<<uON>!#)PA{`<NT!|(Emb73&1y$z1M{SK}7DLC-IV)G~PtFSEmJB7JYymaj~(>
z2;Yeu6SqYG8$Ti$J!MycVE`?A*=3;N%COlENJE<?PUH;hZtF`z&`r<*yi_p3Mw9In
zXvOkdN`eR8`2}znKwrn!33uC5{!5+5q=?UENOf)7sGqB*3>9{ksN>>$!8IL2)d%s4
zO`*w&k879TSnGh@Z1<xV{-Lowye9jv90q`1?>IAAm|{!0P4F+N<O*?%implH(DndI
zfO=6E@Bkj0F7+EM+duybQGR3o%qae11&OG)P%|5J8vvdC5j5%mG<XnbLdoWL)awk-
zDku>5I@WKQu(h^r1g)D16fZu2(#!%6d!8>76Vs=?+IF$Koz%k{Y0U^fOj42CK6Jsg
zfZy-V6*Z4FrAO9efx7`{1u}@Sb~8PJ-*(8SL5~bT-#u($1;d1C#l^)RKv=c1vI3x=
z%iX~b;7q+vR((N84m=Kge0(ae%Rd1p-dPsA^1Nma4i1mh<+Gm!T=jh-N6>MRjhD9x
zc!Q7o(tKgXZrTBCBc<G}787xw5->eLyLA4Zd;z)xaL^^EjE^@yo)$b@5BY0X5E2mT
z)zKwx8;hCue0um(5C`$D6@GFFl}}*sCej)OO(fpyzP3O~x?=Ho2`8YK+;W3p3%m-n
zh(gM7Up@zzW+Wt}KmT0d0|1-@)d?;T!yF1?qk!(&?hQ&xN-R9k5~if8s;d0YrK*|`
zIMC6!49){MX;-Jg4>`57k`fghpEg6kI=BB&55Cb($SzYO!Ux!B!%siW9{%oC5wLcA
zl@gY^zPq0!GW$D@&UxN`t~K`k`4%6QcLYGytAm_0@S$8=a(&qouxW&aeOEuZ(aI;r
zPbj@ce*zpKvFpt+VB>&h-tN1WO%eI?D|=fAnBYfG6$meA({PBP!bJ@0Jq~-?oh^7;
zz}ZpnIFy*p^%-QGAf5+jUvgYbmn&0$3@mR#ffQ(s0$zF~>|BL9X!%`YPm%781+m=Y
zF$6!{Uw*D4RA7EtqyKAOTm8LptJZGe)zi>VhahoFChWcg1X*N_=l(n*t+BZodi&vZ
zUDw%YaJf1sGe@m+OpxrF--T(uklTK}g_nVY=hiu`cSLAt=wsgy5LRFnUm8w-j85EU
z;_L$N0<QB0aJFp(k>W{!Chm(s2XN?myBV5K)A?NzdcvUB7$}K$&`M=lUp-(SV$PM-
zVmU~L$H-yQAtcUO_eK0j-j#eW6rD5RZ)L@enb$j$IV}%Y($w}o;0*1JzvBhQLpF}E
zw@~Evbp>`Y2;Hzme)hb9e{!5{r>?1|cL^E+x`1E<Qu2@6Qg~6z0F?=v_;{>_lTOy!
z3+RtX%hKfEJ~z4j@lhGz-ESuZ{k>1c((>LLAsXXt{{HhN&wG91<2q#Li=$DCb6^H^
z&OVkmWR(D9)BulPt=JX-POsyF!ovkRE&;!8rbHg}^A$>lAvX|!W<((S9lpOARI)a^
zD2l3irQO3_5#Z&O+<4|ruNWB^80Z-*Kvu1^l&+#&z;2p~mbYm{cn^qBsivG9NFK_`
z$^C#l`U8K1x^G<x{rR7SNZ8xkgI4UA?IF;Cjdi?H5ct#F%j<G0Hx~#ha7v@x-4iKa
z=n>wiTU8*D581CbT0e|&wBM@-AKrc4_%d~)E}yHpQ>$TY+~K;_HzjuKG?^=WB6b|w
z(dF@uo}d2$L|pgVln*{5^qKnd_xPHord{s4qYt;;55NFkt+s%4$ZcYp8W&7xjph;t
z;>MErcr_vu=p6e;j8A7u?eu3Pk-Vv^1S~8p8JuQf!S{dZl{0Eg+86ICp0_DxYzqNR
zMhO^g;iVZx&Kms`*JI=k)&QE@K$AuLAA*nSN|}q*y6a5{pwnAStjj)*@KJ3gfFSfr
zRP3v3Wa<kUQ&Uqty+wdT17~*ZtReeyRGAt0Tw>r@L8FE#aI7w$2tNv!fb;67fInv-
z=_bO;8h4_7S?y~gl{qWy=q#X)1By`X&TF-6ZJ5MD_1*<yd$}HJ82le{;NYILKmNY}
z|4#|m9@11Cg-c2=%xsEEqKT<R`3A{HrG_bGnboTKNT(YP-?q(kV9V4L35`s)W@QaT
zWy?~t$4sZwm@qO;Ej95~=6tNBn91;2-_`TSkNeNPyZ7$=&iCE(opX|-qFAiTd%4$6
zRs>I(aIr%XdB6eOBO6s?+G0ZuN?{PN0vKSFe%XK3YPIxGNQw=Q$AehZn%GxKCTspN
zTocv7#A!kz{9x8>i)T9G>x(}+ttD%QKim5wpMq#U=;7B2pIO!p$tCQF3i}=!ugC|D
z=zla_;oFVxKq&O6_usNaBQbB7EzX46y4{y{ymr&bj!NjznFz(t+A9?p(uou2Xo{w$
zCIAP2uD?2Es7}ntPAW3l|NMJ!^JiK|T<?axT%kB|@e*lt`t-C=Btl+S_z<?WBFKqx
zu$~{=Hs|WjS1!0ZJEO3mBhG_LG#xc^avG%zxZKJ38L&;sPu0o>rWq_QE@Fkv^ObL*
zk_rTZKp2aK1yaz~A?sy9fl8&qS1%l2RpqE3NRN)L$dtGy6POMF`VBP1)4qsRj%!vy
zZ>&VJSmh@2R9v{^o9h$fV+xJ&TBrk+u<_x<0g}<t$^i7NuPkApKtY@5+0alOa1BWp
z@?D{kC6?2%JE7dv#U+d%!P|QWCA8%AAslS1E<^npeV1l!JV-f!WEAMT9wPuGfEQ9&
z7;e-cO-LeSvhY1k-PJV$Xn-#%@H!<qt4W|}6N05~a9iq=q1y0;%3?PyoKox-6V3iT
zX^)C;<8$+(Q<0Iw$oznWzsi^i(+{0*XD`z}mXwr`ppI_}aNw<>3s%tY$QwfxLzgDJ
z=#&2g5zP{qWo~YR9Rqd*$*c#^(9`3O_A^{lo;Fgm+3*#)tZsM_LO8$%^-Kdb_z;Xi
zw(uK~%4C{aMDXq#R0(l%R^&K)9c4F~>1kVkfsePhI9>Uyw6ydQX~PIxtINOeAoXES
zk0H+BmvZ)uMsVz?QmK@4+rl6(w<RN<$z)>tfjfXHVE6*6Kl*e!9lDFfB2i!31jbIl
z2g{*<K)FFL_F*&3Tquljh-Y#Q+sj(y#4ZCQlP?F=n`!l^M1TYYbgtgAtK(j(nWck{
zj#7E9OeULuZLl_idwQ(&Y$z=3l(m=L><;wUcjGRjua%<rz)*>uJ6vYZG?;QI6bgZ|
dTUdhKW<VbCWr}{q_5wL2DkL~8s4g%r|36sJOa}k}

literal 0
HcmV?d00001

diff --git a/umbra/controller.py b/umbra/controller.py
index 9f696e97..ec5c5ec4 100644
--- a/umbra/controller.py
+++ b/umbra/controller.py
@@ -5,15 +5,15 @@ import tkinter.filedialog as fd
 import os
 
 
-
 class Controller:
     """Control of general functionality and communication between Model
     and View classes.
     """
 
-    def __init__(self, view, model):
+    def __init__(self, view, model, splash):
         self._model = model
         self._view = view
+        self._splash = splash
         self._view.actionlistener = self.actionlistener
 
         # Assume .csv only
diff --git a/umbra/umbra.py b/umbra/umbra.py
index 9b5a64b2..a7cc5731 100644
--- a/umbra/umbra.py
+++ b/umbra/umbra.py
@@ -1,18 +1,23 @@
 from controller import Controller
 from model import Model
-from view import View
+from view import View, SplashView
+from tkinter import Tk
 
 
 class Umbra:
     """Initialise seperate components of program."""
 
     def __init__(self):
+        self._root = Tk()
+        self._root.withdraw()
+        self._splash = SplashView(self._root)
         self._model = Model()
-        self._view = View()
-        self._controller = Controller(self._view, self._model)
+        self._view = View(self._root)
+        self._controller = Controller(self._view, self._model, self._splash)
 
     def main(self):
         """Start the main loop."""
+        self._splash.terminate()
         self._controller.start()
 
 
diff --git a/umbra/view.py b/umbra/view.py
index 505e91b0..14f6bcb9 100644
--- a/umbra/view.py
+++ b/umbra/view.py
@@ -4,13 +4,14 @@ from tkinter import ttk, W, filedialog  # tk.ttk yields an AttributeError
 from functools import partial
 from utils import Utils as ut
 import tkinter.filedialog as fd
+from PIL import ImageTk, Image
 
 
 class View:
     """Handle GUI and I/O elements of the program."""
 
-    def __init__(self):
-        self._window = tk.Tk()
+    def __init__(self, parent):
+        self._window = parent
         self._window.wm_title("Umbra")
         self._frame = tk.Frame(self._window).grid(column=0, row=0)
         self._elements = {}  # Dict to avoid large number of attributes
@@ -49,6 +50,7 @@ class View:
 
     def display(self):
         """Start main loop, displaying GUI elements."""
+        self._window.deiconify()
         self._window.mainloop()
 
     def select_files(self, file_type):
@@ -339,3 +341,25 @@ class Options(View):
         action_function = partial(self._view._perform_action, key=command)
         tab.add_command(label=label)
         tab.bind('<Button>', action_function)
+
+
+class SplashView(tk.Toplevel):
+    """A splash screen while the rest of the application is loading. """
+
+    def __init__(self, parent):
+        tk.Toplevel.__init__(self, parent)
+        self.grab_set()
+        self.title("Umbra")
+        self.iconbitmap("./Graphical elements/umbra_logo_v2.ico")
+        im_path = Image.open("./Graphical elements/umbra_logo_v2.png")
+        ph = ImageTk.PhotoImage(im_path)
+        load_img = tk.Label(self, image=ph)
+        load_img.grid(row=0, column=0)
+
+        lbl1 = tk.Label(self, text="Welcome to Umbra!", font='Timesnewroman 20 ', fg='blue')
+        lbl1.grid(row=1, column=0)
+
+        self.update()
+
+    def terminate(self):
+        self.destroy()
-- 
GitLab