From 5aabaa662db0431e8490ca65bc93a92f82c5c412 Mon Sep 17 00:00:00 2001 From: Jeff Emmett Date: Fri, 2 Jan 2026 18:43:35 +0100 Subject: [PATCH] feat: Add Immich favicon to heatmap app MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- heatmap-app/Dockerfile | 1 + heatmap-app/favicon.png | Bin 0 -> 17141 bytes heatmap-app/index.html | 1 + 3 files changed, 2 insertions(+) create mode 100644 heatmap-app/favicon.png diff --git a/heatmap-app/Dockerfile b/heatmap-app/Dockerfile index dd06eec..ac4570b 100644 --- a/heatmap-app/Dockerfile +++ b/heatmap-app/Dockerfile @@ -4,6 +4,7 @@ WORKDIR /app COPY server.js . COPY index.html . +COPY favicon.png . EXPOSE 3000 diff --git a/heatmap-app/favicon.png b/heatmap-app/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..f718f4b36186862f08bcb6e2dd59aa20a68d4ea3 GIT binary patch literal 17141 zcmYhic|4Tg`#*l}nZekaA$u4l%Zp@B3uZ(q5ke}nr#N9M79#Cn8+SV*_WA$ zELlVLUG{xv%*=0kf4+bG=JA-B`6rULi$firqV);OyDz$ph%ePolx_KaSZQ)OJ-&3qpJ%5`IUxV%uW-F4 z%SpV%iXwW)LtnD(0#ImcNDh+N5k&8EBClso_E9OBGHwf!?*%XU%G~OWU-{Pm~8 zW1%3o_4ZW_Tr47lwW3H)ex4c;dok|ou}gZ>ipD9L|NR@r|L^0{h$PoSt``pp<~ovbRUhgFmhDC*Esh%h8hH! zxFUdro!kA9lSjnvG=8PI(86t^vYsoOxd;YOJKao|FIcdSk=*ZIGwG28EqB`s?d^iR(kvy~`6OgK;{ybVG8FXC2XS z)B*a;y z|Mu(-k#t=gv@c<&vJ;lAB%|*XZku(V_X)eH~3&2*a#;Vq zKraRYenhK{PW#`*e`%H$ALO$$bPm2h?w)I%7J~K@f`Cx}@M2_*K?L^r(o=~`n@y99 z9=rfJ1p^}P9wqKmeT(((O3zIMrL~vvJftxsa6TqLpL(E!>#}YI z)ivtj6h+E3nF38B1{fH7I(UnBENfSFP!bRCLJM49|jWsFZYyl^V35bV;J{z zhz&ddt)P)sdav10AXt>ICDa)P18G0JwfXcduOxgC<&-#&0D6vot%U1I{ZC-!bYevD z-8khRPuU@0DzvcI;+X#6JU|V8#%2012}y?Yu)~1M@)G0EDf@n(9^-OMMthy4?d93i8eJCNQqp9-=5*dy_14ON1|QDwndPMnPgf=IewhuZuQc@VSN z#)(#ffl$X^^e_3}%&{aNYtPYIF|GP4@aP#JN(=>U1#q7Cwk7&ooqC|}goKbh5cqa; zRo{Vm$qNA;=H&kae>B5Xfj;rmD`O{GQIU z^`4Xtyhk!;(n%}Q;C_f`n8|S%F!)TTwSF|&W83QD)#V2nhXJK>zu?PQ72RBuW%f)#nE_ zJYbZ&k}%qy4Ws;Py19)K6}JF8=K)c0fgbYNl!a)C0Dd{P{@|YErE;0(>EWcx2@!;^l18 zZaA<%0_^TKA#fz~oUwj|pZWmDa~ej{6t>WaiUGvWGipw8xW4R)_eiEN$9vD;Ax%yf z45tBRDWl~wLiU{;1STYz%Sk&90YJ8}9FT=U!2Z23yDVm+)D-b=vEkNZ{*XeD%wIJ$ z1OSnhDf8IHBc&`%%l*fQmPfD5nPca9_l3|e2!?Z-a{sSe_1a6@GTL+alnN>A})09Sx*ENaoPerHltu&ehXbUY2D=sxwNyPzlN?y44ujonV7ytQ%^7wd%6) zym1v_iw2szi>{Vu^qcic6B;yB;_jsHQisH-F@wQ}XI{>wkF2*A?quJ`ql31meS8N? z@mxVIzfs*u-CIK~2@{b{=|c(!5yWb-^7MKmGQQ6VSJPYi!Buc(`Uxj>!{ghwqoWX) z|8b!tOuxJG2^bCuQ7t1{$##?$Ww?p zh8y~LInZmq?4@&ACDvZ>VdLd?)cz6?p(n2%w_uDGuVZTN0BhfJ+@$h%D~|2O@Lm#X2qP-@Jaz%e2HuUV zM9(Wqv~ugOBh44B{kLMI*5j>tG#`OaoTV#H_0m&OahAIOEeqa}=Mp7QGx~!~J&qAG zRdPA?nd@b2=&X9Vi*K9L(eq)sl+b*RL6V#Y3bK1LLf*2~xFc2AJ96yHZ?IGn^6XgF zp$D@AjP2Qe^$sQnX#;bo0n9chYPke9D(7kw@p>wf!Qc1Q0ty8Xnb^TXH_%i1(tM9r9=Sld?N(eap-Ch-L{?vLgh0iC;ex&qlm0EY7V~tWS!A?B=6J zf_-gQF8mZjIrL?mw)t=J8uVUrjX42Cvxrrsj==Gic&$tN~MX->Jby_&C z{BuehZ*4&lM;+_Rxf3g`Q`^|aMI75C&xdA6+hFb*f`(tT2wS(cQ;f1X0Yo;d#EInD zwMoWIYC>oq2PMx(uu9gs>oZOg1}f>d?y-baH1mDZAq}WZ6`643TFTE4Nix^XOW%&X zgOrY2a-Ve1gF0#|dA)&M&$8vPlI#Pi#y^Q?QLxiPuluXy*X6=dr@90z!6ku*?zpcI z(T4DFj*lso)T(INM=vXh|W+8`xMWQ&A3uVjW+rR)I zg;tj*vh}P>hScaC$puQscJZZBjA)XIH#^K6ZlY?N0=ez;Q^KAuT#$&nuwOs2zYtYY z#N1bOf3b?VEPZFn_fu!o(Bej z&_Mjdi>(*AyHx;JGOZ}D$-TdyquMl9kd;RS;|@*^0$IvvIHkOTn>*JAkUFu)AEF!n zIGxRB9SkZ_b?-WcG?D5~(aKDY3%w5~naCH#ji9rQkl7X}5J?DJJO9mL{AxB0dO@DU zU(=Wq$Io(_@VIjm%}pcK6!a(k>0cihbxDIyJNlO$ufB+wKWuv_aNm-~FM=?YvM`2l z<&epz8;^-MM4?YR8kZXCVgK90DW5hDlW3a!48>}I{p`B?xD|+4M{aDs6+cwXcLPn* zK|8MZ0za!qO7oB796fJv5Gu+q=wSZwc-Q*a@0iEJL~ts5sO)nWW6g#`;QBtz^prjP zk0blFPmlz8Iu*ZZzv^C;e<$?4I{UDOPJ1oY_GIpKJ`~GCaZKWVc+KP!gu}e4YStp$ zJ#>OScvS<7nqwgchT8p9fOaPC!R(H-aqe^a-Li{?C@ou--Lm3Vxck=XxEoXB7+V6v z|3Wv2MvQizm&QE9-2K!vewNZERd(p|H+86@4xh9b(_y_cHIOBERAN^F>WGB#QNoAm zllrBXpR%ceS8m+}WvWwOOJ5&g6EFuJ#(Nc(G=z}pQ%lxzDPo#)=C2owbiAL;se?d1 zZ7bVDl`P(y2oRo#(bM!7KJqis7autV#E+65@F9GUj7@g$|E zfTU2};Ej!Py~bT8{M!iHenq5JFB+5uK?iPk*Kd&DUV*ZEt&v6{3EQB3gAEgvl+w7A z!kM8#tO24)g@Rz{?VjXAxI}KT+@S|WO~FJ1c|ayCRu_EQ`2nw-UkX<{7n>J)QfaeG z_xG(Wf`m1?^2XmEIteVmcWK1Hc`pq6-iT)~S^NSXoFBUflYkS?j@zO>-aTl29W>nN z)10Qu)_FV|U8c_$OSEdua#E02V*&@ayFtS);o8(jwM(u_!apM=5L$y|IZb#ixt)vu z-j?lQk-^R>R_2ACMN-_%gAPQ_a(us)dx}F=3zYpPEB(jaeZPmrJ>28yr*1(?70|5h z+$C6?FrV4xM=VOK5D?Y9zVn@p>()fX65gf zceCv31$@0cYVn1;j9ol+`Z!*~Lu);rPn&U5Bf|p7(j?6f8=?PaPRZ~$Ekdn~Lj`%* z7phl6ufRYCp^NhJYx6nZqaFcEE*b7u+C_Ws=6KLY{35K6Ph2H#1E#nW9W`<|g_*bF zZ?gAaftC=X4Ef{W8R{*gr_o#(9$Ljl3>-xj?!P}@5{)=pCKZd~K7vpSFPtVkscbAD zU9LhQ*F*q)!o9FXWra;$UA;`ogf>cAYz#SnmF2!Y9qXeKoCj>-xLaH(8fht1NOV$~ zt$?#7ByL@UUMi)?IoB|M7q~;jpV-=4t{x`c?(81A5^l+Ni~~)l7(KmJh2c2G|FufL zEJav{T@!}|R`We+@~fn8>u8&W0u#KM%9xYZCNFT_*R7q(tC35>AAH*`e8`{xnKrh# zhyS@tSj=hOO+sJu0}UAJ`&E=_9zAz-C3*Ci2IAJ(>Rze`9Rn%$z&KH$e>?+Q+a|_d zRzv)^?pw;$s((AVQ$bIhpc9VWj;s;5<_tVA;kh@Okh&z7I(rDJFVN4~)38msBki+ic>_c5>C;w*^YVZ=jwKZ>zx ziLDk|igp24!C}(XDE}%t(~x%fuCd4-14{0NE%EnqU%(D|i-o5Tvtu*ijhJ?IF-S;p(jByJSeo`!;EMdypUfwA#xY{Rr z0h!HiK`_?NGp8raL&*o&ZKE`=WVD3rQb-pAL@8YqJE@4QC4wy@5)WArKf^&K z!A`OJ1Y1Rjj+=|bVF|yFA&8mbVr|T-JUc$t_iqCHbjN0xW1Z+Jj zf_YVkJtouX4~J3NuX@%9XSWIIT(%sV=KP~35K)jp{M=$G4D-{=zVVV_O8U==<)rz{ z8FSDO|B{VBTy0^DZMs^zx7p-Reik^3^R7x@6gH~;Ww4%}4Bt0_C>I{gsIr0W>;_@2 zt3%w-S=?^bD~2$=)4cOZIj`R+pp0Tj*DUY{k0M_Fa@`$4cK2nTuC*h<*@(45ywWD0 z@?Aq85ohu*Gv7lG_+P9MCcIJoTz(`#>Bdr0^PfD*P3FfTWuY&Ou}-KEAubC%Hc=~X zO)VT{w7oX@T_qXB&fodjkum(+HA3g?w_ud0ED%z+fkthlZ|CHO=sW`0yN|P$=V$Rv z458B|s-q3iDAtzIC!EY6@>-l!dWtsDOz%I4mu1*T3e&`%#=(io3gU^NNy8ZV^oPG( zVy$2kqs(b?8#>Pc4C!#WbI9ydmUO~Co@$%okhvejR@O*ti&^8;=Kwj46)=*)I(~nq z-!TUqwhNSA-vbB3`aG}+aeGgg_Ycz8V0L*P3E?1xSNm(%jxg;^7yoE*XSygni546p z&v3fva|s~61$PuAotamy7i`-TmZ^MF+4lBY5rcXcdEjiZ2J>%UHN_26J%WO#r^tm|pcZU&Cl!+O9^=)52 zFUCYi=48XLDzwG*kI^TK&3Fw~NVUJB#y+@_+j-_Wo8(oZ;f; z35p~fS1~-tLF~^~L3}(EAZqtv!!_dYrE^sabkC+0Oq6p>DI_iol4z(dV~fM1tN2aJ za4pEgJkeT-7qzxVZukn)dndAIIv`>eA>>BxC*Jli_0TjT_zgqlwV<8(&tP%u7g@g4 z92+=g5o7aaY8Fqbk>i3c84)xnPU|Bkmc+2WVvbL)puyp5;v?|LRR~t_O6yqmYz*7( zU3zC~AL_vpeS+k*EtzfuCmy~DGtG9nW%mMuTI=8M8DGL4aNOV^GT{ejbAIOI_Aa>J z2@BF-%+l9~LTn5d|FEr?fE}9aviG8U(eLR<_==M};zC67NriULb-X3EnpN)pXay484J{P!T0b(xWMC1>?S7Og5OcA@wknJhgG>-M?2j;v_1*>Y!h?>-|wR8 z%H5y4FYh0;Z}!|h42XV{oHZL!akgo<|L$N@*7~wb6n(Wk?1zH?I3GQ9;814ZBK?Uo zUDtFA36^qWL3Z&w&YHNt6AX{NgX~W$#r>wK@4hJ54;I%(ca6mRon6OpY|Q{tnhj*4 z==QD6tM2ISKJ~O9D#n-%8(6=XL=G(R^f`MMnSFmGu5wRf_x{L8T(~RU-ZFfA5+2fg zr%{7t0HUaa+xzF?b2=HzB5ms3 zGSnFF?ZVDeG{3sB5zRZJ<6Z$|d$djPQ%Bm52O97t?SY5=+1F$DRs%L;rm#C>(a;hK zobPYz1W1I#ry0dk!{1*j_kHKfeqkP03V)(EM-+73V~wcKBj_?Y`%T#zH%0>-T*Bm( zhKfeFlx2Tmg%#OQUwU)lr;VqXOBdhF`W&W>{{4+u53LkV6nU2kfH~=XB>nP_H;`(6 zZ8-6?8jFA6reb149&Be+8fKgDpXb%9>%b#`K4)Ii%EYGBj_slDbGq0h!-8t|H15*p zIYxi!+1lJ_gj1$&1f0HzAQ~UrqdqVSIn?HrVy5iLd(38aZw~*n536Z*zmR?aM!fiP z2s;{asB%E1@vKeZe8OUbK5c!z?XAc3OB?pMrZhj5L0T#gCF`c-s047HKV{hoGvO+o zsgw^O?77f5BI)1C6XCjV`DTJv+D7Lvhg5bl&cJa;It}0wO5&E|Z4S!HnZEm3S^urZ z-0Vet;)jKfd9Jjf{}NsvCbKJ*v5;;*69$yAy9qm|dK6!AL)FDjHNM(R#2Q+uruMk1 z{OZQOyye#^jRMvX;(&A60Hd>iPs(7QE=rpj5m?st9Df*a_ByS+Y%YH1!`d_8*xLs; znXW%cRQWuhI8yr|WuVN}y0J)-zbSmeEQr~|rYUh2myzJbu**}yuJB&5N}2)p6NJS8 zYBXR4Wyvt9nOHRHTR8e14Muf#-S92rtG<`X^4aFyG+F#CMq%#+Rb zMhssM>fh8SW-RQ21v*boiE@6{9iTUHFJX7tWD0eie;uk?q8ColEN!5s+aEehF#cv- z&{;FnslvqH)9{^Pn(@jUMlS6*=$hFzBFPR6?Z4c0t>1*-)$F`}Y@!;ZRx%DZF|rK@ zj;hr0;ncpb1QKjc9M{@y?W-Y`^uKs;(|+hx>*nyl)Z_Iks?!Qe?zTKIg!C3pj>JS) zitI4A&7KFBWGS7Z2Ynb%ZLEmbKCkF6{(Fc1Lr+)~E#ZAMNuL5X+$@9(-1Aw*PfFG7 z>{f`(1Z}tV;t@m+kTxblUHDGk$S=jOZClHSzQA)EHn)6_h6OIuM}GYM-+jK({}cR(>87w7tGE5B&9M@+)s~J$axwh|_G9(gKg;=< z8#yB;KHRV;SFw_x`nx-(Lu^i#ID{2>3W#WKf#8DmG4ugXzJFvdk!TK$a%0CaW8Xi< zMLYJQ%x4kYd1zKJ@iW!Zhk<0mqvkPj)hl*GGrR1?`cS}U^7a+S?U?g7iXqCzz4MDm zlgEaF3@_ga7$^4G)G$Y{U&$Aei-7p1YZsk9v4DC0;UNG`)2FE#UK65iYu~fB9$EL7 zy-}pRVZiqnoQxYS*Nv@zX~|9^DWiP#%??2r^;{lL+N=< zN_IOvBZi&pgiT|H<8>l$-?^GnrfQ`uByo@WFkWD``)KJMyrw_;9NHSO7T=DrqbL|pmtZrv&36l2lX z_6Cmx+KM|QV(z0~Z6DU<+a~CB--Gd`r#^k1Zy$!A&Ob9`=)KpefwAJ#Yg9+LWO@GH zpa#odS)iMuwvf2VgO`EQt9%`8*Udwd>s>L+%_5TPuUmi|dn92pP?63glPrPRU7@mc z@Qx})CH<|O9a{IUXd8Lmlk>6qgcG&^UreZ=*+ubWSV9vQ{}uu7(PUti+1*yg`ZUby z^Iv-TgnMePQ8~eNtZg#dW~b$)W-ra< zpSSZ9guzK!14ee%qQ;F9418P~r`zq&LoQx%`cC3!>N+|5^Ak8Rceaml6sXl3xJ+8l zC~kQV*K~Fml`jy+oVb(@NF?OJy3E|?&zyk~gPl(r++$66>`vd=fs1voEH6m)up+(S%gAxMh7^OS;J)hX$Bs^K-*yOjkIh!_EZkrIx=d{} ze6^^U#IKir03HHn%9dpqhI`lI6Fj zQCoML6q5H%G#*Z*{^umXGTJfsXP@y-JQwW$^B}Aq#~BG-9~v}lqjh6xiH_{;X6{2; z_P=O?=X$l?XIf8SDhXX91+IDlJ^0+)jdZqp01ea(ZyS%(l+DOWE?}PTT16-`19Zqdi|%RE!3NR zYhQ-<*hdTxiHRum#p)jjbH&cd#5ZnU>f5UgCEYlGb@3rteit7{3EY;!w>bJg5yOtF zB<<8M->D@zwQBn}^hwHtf2OK_%Rf{u|6|s?40+S%S|r(ZEnqMIOwYNNa{`1~hn=qF zkKq2b{&|@f)xjz)zeyueG5w@T%;0=b*cqDti!-#RMz(v?Ir!RJN_)O-E%pJ0sa`Ea zf**~R^2~?jFLJ|;Fpa5s+gh~cNUd~9=Batg>r3Z3D9K5s#cu_Z?aVd}etjB{kC5L@ z<(_q8Y<1V{TffXY!Xp#Z7W~t6Pyg7$68?naNaLr*VDf0g?hbr%3{%yQWOI zamLZPNbfi&I#Tb|mJ5BL$eo3v4i8=}?Ge!bPi7QtU1s1o_6FkK5?ZoSeKSx^<4S?@jq4{DdaPN#}J4I7{p{%SbX6bB=&FP7qOIB0t4 zmc>{v!f#`LnE z;L0G>-Zr~ENj$&@-d4UorLQ~s?e4qnClBfrM>bVkP~7KcF+3vWtL|Arg^>14qp$6P zr@{&te8@01W-(p!eIDFj<9WUNEe|PV?Ki=INi57oJJluPIm$ttX#Mm&j+BzY9UV|- z>~-ShIz4|rNbVTD(o|giSqgKDY`}QhN?I*ceBzM}M(;jrNAEcA((s}ues^e90pz+=0|tYbZtE&rp_yz1e>Wv1|vpvd>yIC^v8omPiSY828u;iLLa zJJWmh1uEnJ6xMV_c74B8gjP1JA);;$Zq=!hpSI84te|7OMx`liYfqBOZekBT*pfieqSD&IXyE*!*%xIL`;~56ct5l})6! zt&KEKD=78Wzj*GIFPW_nWGrxMTc6M1+P;`OMCs#ziru)lMxzPA!)?b1%TW#sqONk} z<+gI{c>9+~#>J6Hvg+1R3at!nM}AEkcP|{u9XR-XNuBIoZ8j99ZMZ3)_|NjVS8ElI z6rEfOWQ48UfO`KMIoIQOnc_h)PAJ^vF4!5WZsjMdbeLb)II~1uUp}yT+o7PjZsb1& zaPm09;ra=CM(UQ7xzDPv@$S`AqcWJ;Uk?epFWEv|oX#G9uoQE{bD9?6#hja`G(!mklsl#`dUY zcPr;$h#321dXT)$e(CadI)^5^HD*th>Ag8KP0!BjzS&5~oS6+~yZPbPKlg!K{MX}_ z`)@tSO&v7_eZ~X6$Mcd@Lpf%fvfMR&uAskG&9=Rxn(gUpZ93?-CUpEIry9tCGv$&Y z4&w#1cJ;_B&s_u=W10j329Px(z8`SgvtQMxO=^sXSJG<`q%{u8WpdDBSgT%I&!vy7 z=9N2@x5*#9Elvg;_?hJ{$~or>+wOFI(0!c#$gwN35=K6rn0st{S-JsLIYL`3?t7)Y zo)U)3h-8>yYnX9YDs5OLLcb>SkQ>TA7s&^I*ok2dD$%ZqR++Ppw9^=&&(3D-Uz2d> z-FRR{`dv5Ty?015@%sJ`&;6%?y6CrKAFu+1u5*gyenFFRg2uPRGwb%yi|Qjkn+2}$ zWbfpT_>NS3u_KR#9WzOGbkcsq=&ua5>n&n@9pW0~lL&Mh!)MRk7}4pTs`?TuVX`{T z=&~Z%-YUYc+{Ok?Tnid0c*-Tl$cB6~+?8up>9nq*u{-UOvDp3lq>B%8;tZB{Q3bpC zHWqOO5_h+HXFD}wEcSK|vR-3GN~PH7Brbj@WVmrMUfuB3WGw0TWLmxEhDE&njNuJP z$(lw{&6NhQ)&4Y)QFKADs79M)^V{&@;((ic3_0T|Bb-|Vd z8B6{PQB`*tD6PPA4O+9**4f|F$4~-fXhBejK#b^mBj`IM!8g$tZ=|G(ZBcdxGu# zyX|1(rsnvKfQCpo<7)5isJNF9R=r0>|4b=;nD55cyfs#}_)kSZKu@X{=Ir@IZ3dR` zZS#lnf(Ta>?UfaxWvX>WeYqFk$Z&2yK)@o1p)`Pp)?W}VpKXjgWpv6kFx6g%hYDLm&kbuQ*H6}XoCeE1tE9XtFq%E7+RhAk4 z6~$#$rM2gaP2VJh%H+iBIc`=E-eZEXQ@6G7{h^;f?bPdcm!at2;Y63)*pJQ5Oth*x zXI9)*tHggJG3!;GgQYg3jXcB7;UpNHKW0~HyV`#Msq#^%%)@SpS|TYM|K_8{$*i7z zDsy9!7wFtJPhFUa)CEHDNW$Bw>{OeP(PL{kua#{T*B_LRT4!e}B}2a!-=Ezk&_?8h zord(NEC?rR(wMD@2V*!hod0poA{HYGsTb#dI&IxRRp~88(F0e!m9MSz{Ea!b@^=h5 z8hdTue(H_@MG>D=jDPTWKgG0C-azk_m)S@Lo)jD&^6l~Ci60YBa@ayc?^+5h(aN|O zRi4X=UnhE~x5WKgE-n^vz z=lF=;`Raw=7Mn5ei-(28v@_FhN6&$FQ3O%TVX^WUy``H6b7i*N#y4C1efs@_q#L`dAs0rTR=B%= zxL9GJ1fF&5043+Wi9t-|gf!D*kfc+LbMVgVi?t($B~=W+JKe8+`W``1YkPpP|4r&n z_IWnqSUE!h62G_AsS(XTjNGYJ#FyPA@84#5Tv2$7v=$K%c;}wyJxA}%`ZL?yo3#w; zS($-`OsmYzuOa~-6Yp61JaXT*`$J}ohOPg`J?93^JN2^WE#pq^;tKme#u^C^S1kgD zt7T;$=ZQE-lY_==?H6QD2$`IE`m6P^wr9*k;aO>y(~?@`cXQ3tsx6g8{k_sS=K5Gk z7lXFOXQgp9XU^RT?>Wd;$}^Zct(9~>+*oSF_v0si^c5rQMZ+Q&tQ0ksficwN3bC4W z>&nBWXsYjLDTc3O>E6;noZz1Ryy!hK&mM}? z2OW`Zb~Rbryb+ZU#3({b1iQgb8q?Rh7UP;;WG7T5OPmnB%L2FGOP-y(YS(boszsjj za=?n~EzScEUkr7mhm8#U5DTCORb~&^7w3$%4$%VZuijpBmjbzcy95F~^^m7pPZ?O* zu<|X)%d!z0f7v+ITsX25nZnn+Bxi$S;*9}&OW3Z4-1`ZvjgjaRnq06MpID)$ALr?{ z8?+@(;q>47$G*GC)NEb~kKC?iw0eBlTp_zMf-~ntUDgSIa#HR#Nm@QX4fC+1-@Q{P zPl1j;sI6vie-YY;+Ts5$E8c#eanr~AE8BEm#RPSG>)x5*4efz?!E=5q%Tk?M!FQ_J ztos-QvjPlGOpW+ zp(d9ZZhA4#yJJ)N!lVcfIPFgB%P7AN9jG%jZV@CD%(e;-2^RpQ(X=zwd4qrAJc4M* zd!Bad82$y;w-zqeT*ihLvQXWw-4r~{`*{XVS!pHc6P3UA=TFzddyujqRMi=2I3;zf zgALdpog;+EKJoV#Nji^{a5(Ln2W%qDyC5b=`s|kBAAXE80`dKiN{8E#^aD)X+LRRS zhm({*SGj$(AUgkZbo2c(4057h!qWF7YGVKVaM>&sgRT>GFku{RfVun=3ZAC1>39Q!M(JfE;% z7LoxKCUMQ}IK?4ACAY=V3zGPCMSMR*Bc_z52J5GtGX{tjXWni}9c6LIi)F=ON6lj_ zN?8pC8=L>>#f7#2q+QhTLw}KzeQL}~b+nnPojD}&FL-%>?im~T^+Uqr5FCy>d)DA+ z8V8UQ>E7jnIehROm)ZO3N5M&u1S*W_+h(@f@FoEx;5V0#{j!tJms8+f2e)^)4iJjJ ze#`!O;|wFlJzB#Wj4e7+jBHsEa}uuxfU+2~L$YC6AvpcNvO$0;qrr=-6iPz^x1E@F zT1>oZzK0R7>{dLO+XDz3_feai@_shroELEW+Sh&P{6sU@sC4(OsXpeTroNWGbeSs1?-M98?xEW zmIs`Q|2eXXmuvO3avW?{i4OtJNERYp$(&;6+H}<9PQ4`#Ob&_Vd`7xK&iQYYOq}R@ zpw`(KJTiI_-F0mdPE>)={A=B85^o;pGUw?kshq{+b2Q*z?PgoqZC3PWs?4|f3(vbx z1Fxz780j}^_CUBlOv2eag~eo@gCYU}epNHZycOe%ymmVqKrHvx+K0L5t_lhev6~0LbpwF=8(7WxkMZ8tn;L-pGqv~geooE>aX2h@Vwfdqtt;l1-YXW| zryKbvm~q;kuXE}Lf~O!Q0U;tYx}5~h$5b5?XO@sw$!>I0muJi*7m5&e9SCu9J<8X* zKUvacUJa*6b6-I|UhQGCn}GupO*w$msTsCif51iY#z|O{Y4h9Ixa8c2;AB&u?DzM< znXm_9XdILO|7K#RYFvPc!Yjy>2*x}zbUDps0Q4YY; zf>YS0m^7MlH|7f)kuYHS0e!%JzxqIS{CzI)C__>GDg%&2Aqml?hjs+}5bk<_yTHYq z8M!<63hg8=hPgSz7-@>I&rz@?b~GAa2xsDd zW7}s;w9FWVKQ6$CW7d2+%F=K6jZZQqk}_q~1CX#*lMc3cQo`*4;%D&vmS-}eaL^s`_q3ZDgsWQ#dHP9c_U%rD zwt~0^7cj5Cz+2~k&O@lb(#tgqqE?K*fgM06>mGE$jqvg}@K8awl0*YADTWU`x{ zz%iLwH2CvIIKyz4PqE^z4gRlcRf#8Gm6`NV>%m1_`QYC(FaW+Q1C!k1y9&wP(z&3W zFmWwro``&2SRW$FOD&c8EK)S85VNg47DqeSlzaAwtu z)zsp7%gA^U^%~&5b=6Y6`R@UbyMS~?MCW2uYlMuxM$DB>7{~1^2N!!Rx*$6x;aIj% zG_UI4c_Cs41=r!#C|YehTX4FT!ook5Gq88}X!)~{j-TDkR*&gDUm?GQSvA0p~!P) z=nk9Sg}`W5A63Yi6>-2o@T!ylbM{tdL+en<+k+BlZ6}x#^A_S$Cpy-E8TLJ0h?$R+ z=7b?A(}qAA4r7a*jZ!n5fDvDOIOyioB}jU3dv1QQvhb;*AuD1lBU#}@1{1qH&k8g| z8|av6S)gOmp*qgqhJaH)We{G}QAgWsMTCK<2#kj#wS`!&mx!Q9s!jKggozviZ*_Df zmJuX>?Kl53Ko2Q&@AKp8`TrQQ5vvZz`ZBXGMp}s0>2E?uS2WjyG&`ieHUjBH2b zq>wfkN^&4ZX@<=%{B-X7_||9o(mW!z9mw21(MZM;62y$|L4OAPuR3$+u>|7T9W<3h zbiBt#QW;L+c3LpV4&|l|3R%7?!N;O~ zv>#vD4U}qs&q3_{s^a;oj-ZAh!kzDFpQvvEFMloDk@n*xGT}!Aa=$RQ9jR?IJj!gN z#1ud3Wv5$a1p~`I2-(L4^gHXl5#5}0pSflh++w*hS&b%!p>Rjqq&X zcK)VitxPV+h6^yxq5;QfCQGi0H-}WamyV{0IplSbX!3bSFdUe~whe2R=pl)|OgYh+ z`faMBNS#}&ihN86=3l_4e|!q?`&-UId1{AC-R| z1$2V_>h?1*%3~ikW_HV~b^20Bxp`X$`l%cf!4r)n;}M{3=`pb7(d#hCfo(9eqk(IQiniuFg*~VaL!ZMpYF-SVDm~qqKJr1&9LTNAzIh?Ifb~m;nE-rScvfU|fNOq=?AMJBTx(utQd>sLzFS(p701pC2*Bc0@>Tv%Y6_m@+3T%!Aq zyGU&5He#6=0&z7>V#{o*oZ)u5r_FH4=ucrMipW-eoMHHz#fLUFj+C&oQsj7W2~;-L zHd~bMoT0t`Yte(E1cHUh%)RpCOwjq0DU=hHa9dy#S)+dja{?43z!8Z8$J6VwlJ( z;4O+W81BRA_0tK(fAEfPJ&ev3{bSh`W3^*ZR9Ad=k@qkC zBo8=Jzd$^#B2Val%T+PJP)ezyj|*$a5O3;ulP<+KJ>Kt-(TfD_Xhev=iF#ye^}~%S zy}5{aMX#gEJ&Q8N`e=#P-8YXwyV5((Lv5}_<)kAvIwpg68F=!2wLQ;2ng}jwRv(rS zyD|48OxGk20(Ps7s+!P;Z^O8DJy8sT4l`R+V7MPVh+IcT`8Iues^iP&ciS;dSK$>~ z7e-a|VUG4=Y!J|Wx2u@d=`(NPk7!EEdwrDCNOpHQ%ahjJb;ETrjdn7b-|q!}T6H%5 zVvAHVbrj7ECQoLec~;V&8=VsT#ZOK%;a&-w5A@@M0UvcC#kW4fvgSvNF*UcBmOUP|r+O_mExM z!X@8r6*0BqS2FYoAkvg<|1=*vvFMVjhzJ>SZd=+(Tz2p+_%t)2#N_wp%#qlmXLN1Y=9Wh{af6Nl%v3zd=FXNO^>y-AlFC zHhvUKa%tk9*oWqe)jTWs`k|XDM|&o%{W2U74a#sz33s&x zhnK%xanZT`!owqbLw~QlCI0>Q$=cbT_jSM2Ph0=%%^N}BVw0?cdqWjYJ~7{vvf230 zg>&^cp2*+$9?r+M@Zg$RHJ|Q%IBxPkV4Hn<{hgHB@1H%dy_+4j`@B>C+ Immich Photo Heatmap +