From 222f346b1688bcc27e8f13ed52fa2bab74ab57d5 Mon Sep 17 00:00:00 2001 From: Ottis Date: Wed, 10 Jul 2019 13:13:38 +0100 Subject: [PATCH] Tancre research --- .../abstr/Abstractions_permutations-01.jpg | Bin 0 -> 33164 bytes .../abstr/Abstractions_permutations-02.jpg | Bin 0 -> 32821 bytes .../abstr/Abstractions_permutations-03.jpg | Bin 0 -> 19132 bytes .../abstr/Abstractions_permutations-04.jpg | Bin 0 -> 29943 bytes .../abstr/Abstractions_permutations-05.jpg | Bin 0 -> 39222 bytes .../abstr/Abstractions_permutations-06.jpg | Bin 0 -> 30056 bytes .../abstr/Abstractions_permutations-07.jpg | Bin 0 -> 28419 bytes .../abstr/Abstractions_permutations-08.jpg | Bin 0 -> 20694 bytes .../abstr/Abstractions_permutations-09.jpg | Bin 0 -> 52074 bytes .../abstr/Abstractions_permutations-10.jpg | Bin 0 -> 50095 bytes .../abstr/Abstractions_permutations-11.jpg | Bin 0 -> 25351 bytes .../abstr/Abstractions_permutations-12.jpg | Bin 0 -> 41649 bytes .../abstr/Abstractions_permutations-13.jpg | Bin 0 -> 70135 bytes .../Tancredi_Di_Giovanni/img/thek1.jpg | Bin 0 -> 123702 bytes .../Tancredi_Di_Giovanni/img/thek2.jpg | Bin 0 -> 113319 bytes 08/Researches/Tancredi_Di_Giovanni/index.html | 53 + .../Tancredi_Di_Giovanni/leaf_elements.js | 323 + .../Tancredi_Di_Giovanni/leaf_structure.js | 391 + .../leaflet-hash/LICENSE.md | 7 + .../leaflet-hash/README.md | 41 + .../leaflet-hash/leaflet-hash.js | 162 + .../leaflet-hash/lib/leaflet-src.js | 8339 +++++++++ .../leaflet-hash/package.json | 20 + .../leaflet-hash/screenshots/screenshot.png | Bin 0 -> 475831 bytes .../leaflet-hash/test/index.html | 24 + .../leaflet-hash/test/spec/hash.js | 68 + .../leaflet/images/layers-2x.png | Bin 0 -> 1259 bytes .../leaflet/images/layers.png | Bin 0 -> 696 bytes .../leaflet/images/marker-icon-2x.png | Bin 0 -> 2464 bytes .../leaflet/images/marker-icon.png | Bin 0 -> 1466 bytes .../leaflet/images/marker-shadow.png | Bin 0 -> 618 bytes .../leaflet/leaflet-src.esm.js | 13838 +++++++++++++++ .../leaflet/leaflet-src.esm.js.map | 1 + .../leaflet/leaflet-src.js | 13930 ++++++++++++++++ .../leaflet/leaflet-src.js.map | 1 + .../Tancredi_Di_Giovanni/leaflet/leaflet.css | 635 + .../Tancredi_Di_Giovanni/leaflet/leaflet.js | 5 + .../leaflet/leaflet.js.map | 1 + 08/Researches/Tancredi_Di_Giovanni/pdf.png | Bin 0 -> 1080 bytes .../Tancredi_Di_Giovanni/pdfs/barbrook.pdf | Bin 0 -> 75535 bytes .../Tancredi_Di_Giovanni/pdfs/durham.pdf | Bin 0 -> 4517314 bytes .../Tancredi_Di_Giovanni/pdfs/gramsci.pdf | Bin 0 -> 895541 bytes .../Tancredi_Di_Giovanni/pdfs/hall.pdf | Bin 0 -> 4489851 bytes .../Tancredi_Di_Giovanni/pdfs/hebdige.pdf | Bin 0 -> 524081 bytes .../Tancredi_Di_Giovanni/pdfs/kramer.pdf | Bin 0 -> 2111955 bytes .../Tancredi_Di_Giovanni/pdfs/larkin.pdf | Bin 0 -> 910732 bytes .../Tancredi_Di_Giovanni/pdfs/marx.pdf | Bin 0 -> 658772 bytes .../Tancredi_Di_Giovanni/pdfs/mcluhan.pdf | Bin 0 -> 1391397 bytes .../Tancredi_Di_Giovanni/pdfs/mouffe.pdf | Bin 0 -> 165192 bytes .../Tancredi_Di_Giovanni/pdfs/pdfIcon.ai | 1184 ++ .../Tancredi_Di_Giovanni/pdfs/taz.pdf | Bin 0 -> 128768 bytes .../Tancredi_Di_Giovanni/pdfs/turner.pdf | Bin 0 -> 186951 bytes 08/Researches/Tancredi_Di_Giovanni/style.css | 53 + 53 files changed, 39076 insertions(+) create mode 100644 08/Researches/Tancredi_Di_Giovanni/img/abstr/Abstractions_permutations-01.jpg create mode 100644 08/Researches/Tancredi_Di_Giovanni/img/abstr/Abstractions_permutations-02.jpg create mode 100644 08/Researches/Tancredi_Di_Giovanni/img/abstr/Abstractions_permutations-03.jpg create mode 100644 08/Researches/Tancredi_Di_Giovanni/img/abstr/Abstractions_permutations-04.jpg create mode 100644 08/Researches/Tancredi_Di_Giovanni/img/abstr/Abstractions_permutations-05.jpg create mode 100644 08/Researches/Tancredi_Di_Giovanni/img/abstr/Abstractions_permutations-06.jpg create mode 100644 08/Researches/Tancredi_Di_Giovanni/img/abstr/Abstractions_permutations-07.jpg create mode 100644 08/Researches/Tancredi_Di_Giovanni/img/abstr/Abstractions_permutations-08.jpg create mode 100644 08/Researches/Tancredi_Di_Giovanni/img/abstr/Abstractions_permutations-09.jpg create mode 100644 08/Researches/Tancredi_Di_Giovanni/img/abstr/Abstractions_permutations-10.jpg create mode 100644 08/Researches/Tancredi_Di_Giovanni/img/abstr/Abstractions_permutations-11.jpg create mode 100644 08/Researches/Tancredi_Di_Giovanni/img/abstr/Abstractions_permutations-12.jpg create mode 100644 08/Researches/Tancredi_Di_Giovanni/img/abstr/Abstractions_permutations-13.jpg create mode 100644 08/Researches/Tancredi_Di_Giovanni/img/thek1.jpg create mode 100644 08/Researches/Tancredi_Di_Giovanni/img/thek2.jpg create mode 100644 08/Researches/Tancredi_Di_Giovanni/index.html create mode 100644 08/Researches/Tancredi_Di_Giovanni/leaf_elements.js create mode 100644 08/Researches/Tancredi_Di_Giovanni/leaf_structure.js create mode 100644 08/Researches/Tancredi_Di_Giovanni/leaflet-hash/LICENSE.md create mode 100644 08/Researches/Tancredi_Di_Giovanni/leaflet-hash/README.md create mode 100644 08/Researches/Tancredi_Di_Giovanni/leaflet-hash/leaflet-hash.js create mode 100644 08/Researches/Tancredi_Di_Giovanni/leaflet-hash/lib/leaflet-src.js create mode 100644 08/Researches/Tancredi_Di_Giovanni/leaflet-hash/package.json create mode 100644 08/Researches/Tancredi_Di_Giovanni/leaflet-hash/screenshots/screenshot.png create mode 100644 08/Researches/Tancredi_Di_Giovanni/leaflet-hash/test/index.html create mode 100644 08/Researches/Tancredi_Di_Giovanni/leaflet-hash/test/spec/hash.js create mode 100644 08/Researches/Tancredi_Di_Giovanni/leaflet/images/layers-2x.png create mode 100644 08/Researches/Tancredi_Di_Giovanni/leaflet/images/layers.png create mode 100644 08/Researches/Tancredi_Di_Giovanni/leaflet/images/marker-icon-2x.png create mode 100644 08/Researches/Tancredi_Di_Giovanni/leaflet/images/marker-icon.png create mode 100644 08/Researches/Tancredi_Di_Giovanni/leaflet/images/marker-shadow.png create mode 100644 08/Researches/Tancredi_Di_Giovanni/leaflet/leaflet-src.esm.js create mode 100644 08/Researches/Tancredi_Di_Giovanni/leaflet/leaflet-src.esm.js.map create mode 100644 08/Researches/Tancredi_Di_Giovanni/leaflet/leaflet-src.js create mode 100644 08/Researches/Tancredi_Di_Giovanni/leaflet/leaflet-src.js.map create mode 100644 08/Researches/Tancredi_Di_Giovanni/leaflet/leaflet.css create mode 100644 08/Researches/Tancredi_Di_Giovanni/leaflet/leaflet.js create mode 100644 08/Researches/Tancredi_Di_Giovanni/leaflet/leaflet.js.map create mode 100644 08/Researches/Tancredi_Di_Giovanni/pdf.png create mode 100644 08/Researches/Tancredi_Di_Giovanni/pdfs/barbrook.pdf create mode 100644 08/Researches/Tancredi_Di_Giovanni/pdfs/durham.pdf create mode 100644 08/Researches/Tancredi_Di_Giovanni/pdfs/gramsci.pdf create mode 100644 08/Researches/Tancredi_Di_Giovanni/pdfs/hall.pdf create mode 100644 08/Researches/Tancredi_Di_Giovanni/pdfs/hebdige.pdf create mode 100644 08/Researches/Tancredi_Di_Giovanni/pdfs/kramer.pdf create mode 100644 08/Researches/Tancredi_Di_Giovanni/pdfs/larkin.pdf create mode 100644 08/Researches/Tancredi_Di_Giovanni/pdfs/marx.pdf create mode 100644 08/Researches/Tancredi_Di_Giovanni/pdfs/mcluhan.pdf create mode 100644 08/Researches/Tancredi_Di_Giovanni/pdfs/mouffe.pdf create mode 100644 08/Researches/Tancredi_Di_Giovanni/pdfs/pdfIcon.ai create mode 100644 08/Researches/Tancredi_Di_Giovanni/pdfs/taz.pdf create mode 100644 08/Researches/Tancredi_Di_Giovanni/pdfs/turner.pdf create mode 100644 08/Researches/Tancredi_Di_Giovanni/style.css diff --git a/08/Researches/Tancredi_Di_Giovanni/img/abstr/Abstractions_permutations-01.jpg b/08/Researches/Tancredi_Di_Giovanni/img/abstr/Abstractions_permutations-01.jpg new file mode 100644 index 0000000000000000000000000000000000000000..41f3f488f9fead384fec776103d73103454131e0 GIT binary patch literal 33164 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

opU zW21-b{ge9+FQfK9F|oMZsqs)K0o|$!Jx>jS&k>~7PcQ*%Pr7eUg(EW zx9mpQ@&{GD>CSzpZpg1M?6zjPbf2nOj`~h;+sKsS+YcVrE`Bnj!c_47s%%GT?=42% zojO-u|1smn)~ymwEReEj{` z)Pc~`y4)|5e@_3$=BY<&>LOFPw9hVfxxBAkRd372hjqz3)-RihjdxDS zU3OvT+RuE4O>;_()9;fx-}(hW@9sYg9MXBkl?pIrNnX|2HH+RTSqAQE6CE;TZ(VcV zuTt=rH~iS5Hg~TSPT=I0p51esS8ugjHt*R|&^@&6T^?C`@Y@-kO)F+F(m%MokrX6K znw5RA=$fM4h~jG_2j;cgGj@uWLf1W!|m;KxFRbv-iY!TQOcHeop zHvQ0oE^it)?EZG!`Zvq7pNP&p+OPR83CiAkk#XnkpRu83J$}6#@O?|`jdIGk_ox5B zeX{!3yEO-sz*XzfrRCc)YOdbSzxQZN`j-d3LN^vqnz{CkA8sMlpxOBmp~tSg7fGjf zT`KzdqZ_ev&$o<~5U(_l`0GR4UmJ{fCS@EM!RnnK5T<3;-|9r%5Q&`j|NPC+fgSJd zV>UB9_~l`jcjt?w8@=z=jFYYXD0TX)r$^VOF@Vzg@wt-^oUR)^>AvPr61acEouy?{ zN|LYczpOofFXxkylDg}|hF?DKUtL?_dvAxk|NN;rgZgE7_Fqzz?%BQcE_h?41O0M$ zm7(m^)~CC1i)7B%EIf2`Zu`Z@U;X^mtGkAgD`E$pWe+WU?|R#IBR1^m(Rt;~oG~}l zo9~QRT9j0FqIg5~k!{|AiJvxg-zwm-#w@+?@Wx_s5Tk5VVNvk7TwV-{H+LGu>h-*v8XKKS#9>CY;J*Qek- zdcN+$s=N2b)t3&<$v%ndA18+1t?OCdI9_e;)_pZEl4cb@M~|Kv_3g7gg^G;z1?_TI zcHDQeKb%D9x&E2(XXDIgD^*X&eLJpx?$EtWvh>SC^2*_56;P4L10JnkGPjSo-3;bZ z&taBYJ!!?*%;CAEg{?Q0F6$zJk<#unI(52gPu!(Vp1bc7XU+L4>dA>(9ltg+w~{1u|*|4f4yr&T|4&Y z;WK{_Kgoai%iRndvi#z^C#FHw->eM!`T1A2-ko-+8d+8U5Eqw`&w>YWxY2bZ_uUUp)@KzeS&0-DB@o=~9_^I{qITDh3Zh>;pf1bMqPBCe3C_ ziD$+sn=YqAm+G21cdgyN@?8mbN`b*-HU9E#cy6w{e9c;ok@oKJmfdbFd~*;bc}nii zX{SyMJx>XA;+Vfl%>D8xRwJAynX_z~hhZ0;$*|s?^9g%p=yaZiFu#6Vm&v)Mk6MrV zG?BjM=vCru!>lfIjVBJ*R*^!TZloSc1PSZY{O1lPTR&?4(O+uOR~3Id{rB%yU(4`4 z=S=Q?VeVGljo^}%@~Xnwi_Vr@Jb!u9jEhevJSgjawy=ZXhh<g^_ z9Prn7S@`r^zv)G`R|Nd#uIy3X)6FB`r`0S|S;~mbGv8je<3*A{*81<|%wwYRb*IYI z^lhpuYeSJ02VNwJT6gO)%x;2C!GvT~GN?ev$Ofwch|X-ZpQ!jULx{LuiD|Md+ro1;jop@zn;E(W0sYf>+t5BB8X-f;78}{Eih)jx!5Ow0qUc5qjc^+wEeb)@6=gUW-Qe?(p)@+OF@bTAg;=7JGbVuk`Dmw)?-Bpg7vf zRg^y_0<4UjDXe+#?|-80uL|^o*)^bAH>RvM{^bVkDz~=%pw#1DJ_=uFng}%Es3ej!<1XO=`vecfFvn#ZG(D2>MVt*#5S-T4bJ>xauX}ldr z4(2+Rb59-{)3N_RVBW0hTjA>k>77=rTT`*6%9D#nK&PEQGjdeTtUalbU0uGZZoB8! zXCJ$LR0W|Hqf>Q;ZH6QxHMEOW;Bv=Wc_7E%WG_k_#i|#9o1& zS_08mA+W|+s}8Z=Omx#~Ge zp&RKr-?g30#Awh>4dP7nj?Mi$*g;kh2*k)71Cm?b0$+%M-F+Wg%%fad?kdSTNXKg} zJ}(id>DnxQfL|U?s4j9C=Q??!Dti8|ykVOdsX)-?Bpz#U%6?un-xGy^a2m(N@ZVkg z?&Q)MqQk%j$MHI-5wFkX)MMOGOA{X~I~v^YuW8}S^q(ubxx^Q>M^$R|OY6^S2m+8b z!1_|#X>QU+V6ckA-jkkD=^Wn7hZ2}K)4uQr{5zX8XlQ0@B+Cd2cLW|=oWJVfo1k&H z5yaI|^XJ{@j^(s(i+#~UAjF1&>x`5E`3<_rdW30ivcUg?lwy?< zOYY8yARAPs_EnNt!d4fv1YCz8Oave=4k55_IMMvyrP{J3z zQ^!!EhNhZVCMF>hH{tOu)k0Lyl`{JyX#O(fX)9}YyHpL#_#;P5zKLF$Q0FM>d*KC5 zGUW<2FP509+qS(!uSrTom`P;-guecj;u{mT();{v{d1hkWubV9dsnexSAF+y2!s(} zL2h>zo31hS3KtBeZ&fMk>UYUNP6oIQS{eg%LhiSF#Ju%!G4Zz#@;(c8EhUn<|^w~poC41m|r->|0$|QA0jP3Md$k(pi0C*)5_rAQM zMy2Oe#ku+<2`vL}t7k67C1m?ssJ_s|Zquzt{_sS2Y*_T+EY&XkS217MFhLqx21KDU z54<-w=T}uCk>U$49hA?F=ft=p(%8_;gq7f`#eH+7Vmn+t7U|$aOn@L4@~H@Qub9+n zkK*%TX(lZeC>rLewn0l-s3DMuaBd8w?ktYeh+|gvw_A(a8rqh0Fy&4RXTq;Az`U$_ z+#CC=COQ)u(=@PGFJ|ib^D+^|eVJHUd-&#?knIyHKYugc|8#ec*W;gTSNMwz{cb8d ztu_H2GS%}4t4f+jzUMd0^TwV#I+~HE#G#k8&$@BcCLJ{}hLWFhsxeDSabgZ}S08x9 zGbNh{8g%rlXdD9o*mI8B!xBv$;AlS7HEOprw1~pxgq{zh&dAE`=&m5tUbd6SWoYJK z2M@Y|?5p(`?F($M^`9Us!9SP$J^G95OoLHX--OS69}*kX@vx&CMARkrT89)mO&lsW zc#!_FF!=JPV_h~q*bX_rdwbxO`m1?bIVRmTm}JER(A5pdu_n*sI)x7Hv2E&`ob4~Z z9TJK{)@H$>^`CHMN?(%Z3Zq8IH{-@q&?4Shg>pD7T z`r#I~*f(#IdZ&yR2!jPI67LU;72`E;6s`TZsRe{uc4R3bjNl+af>5@(a-=c=_h4{1CCB zd9@{7KAP{oLTXuG@Q-W0juct?a{|Is4A)OXN zkkU|#XuglXc(NSgx(mFwC4gaAxL_c*ut2EMI1ku;hPs?L*C{{h3U@;HV8JyaOuWJp z*lPEM-(~&TT*F6S`BOI|iHhh0AFkJBkRn;e%~8$ppzn*@M%=;2U6jb>`cn|8GOFO< zlhC%rMMI(AHEo$>B1tq~i+*_PfZRB*d^IpKol+GUA;uUTbIDGqc@4T`D!gJxp;V@_ zMk!Sd){XY-*@0Z?E=V3Jt5BnASMxM7QzkF{pkc_Xu<_^5=-IujxCSVOa8sUnR6a5B zre&9#&Fr!;;yc>vdIHEl@kyu8d|*Gm)rT?k)>Bp4%=VSOT(*&D{W~fiLn#1}XMV@_ zU+Dd?9+54))a8LVR9w{yRNRB4p0;7AE$NRzgOCFzdt(A+Q_1&pJaqe+|i>xj*KnJu46{%oH>a68Op>e-Q>d3oAFh$+Y#2**cZvCU&wp zt+?7pC$=tL5Zd;_Vg)z1%bGUbCn;!?i8WFm%cb$W>PN zA!<3{GBAEwpZR)rwjvDI4i)UB(e%u%<&dOC21Z6~Q1aZv*p-a%E}$@jpI@RP0R%dc z#;>Z-ChqwnY8{?oV&&^wqFQKSp)=q%j#fD{kPHM${QNt@|5{I=&F<~SFvNR^tDJfy z8|wz&Zt!+<8ZinhppQw;8mg|7qLUR_W>OpK*5+s&)}tLri`Y&jHo3#c)bZAHrpJzf zGVF+SQBBSWoOq6&sLoaGfWVqk0-C3m>Ob=lYEH@yp)AeNwodM35vg9Pxd|nDeQX~7 za}}<2$CckP-@OqVSK8Cf0{W5B$&;wNt2N+vltV?@^#Z(NF|R_0=pxDCWkrv%xh*q2 z_~3U&L!288T~BbDA7lzeKl9~AJ4c2JfHpfH5aYyQNd^w6%%Z$h9htw$zu;dTjL?#X zMT)HA(iQ@3YYSt{?cQbF^~WS=OE?NmWL~S=g#hR=a!cuM@X8Y|B_WzaJ7cN1xDKF(H?^rTO&1 z6mOw$ZsgSJTd4N*=5%T^e08sue}9>G2_jJyQ(7>)JdHEwLI%a%st;!tmlb4e3rlLj zzET+RE}QgKbH&?k-wW080enjoq+Taj>>k$hpGneMUp*+dUCnh9ORFih4<|nE1au*oT zmWe{t38lUPy6XN8p)~P^<$>kpDo%j0}^Jfwy}N#>d zC?Bm{&T4Mlx2)3fsn+q>?GjF!y1Y+#4mig3pS+q;oMRG{D3!7-`Q-7hk{;YR z_;J=)*;3l84GP}`pFig&cvIt?ys~}zE)6Trn_BqdjyRKx6b^{L&5Sk@+X9k^yF+?l z`rSbjVe8;Tq7xaFbf9JHV?Ph7WovX`Z zdd%^>3`##Es1?^tt`?$9=T$7!nJFlkpfk=RXAz$;#9bL=rnIAyjkdRp@M2tz^;@OV zK~MHgM*qA{)?L!j`TfuGM6oH&noVD-BMYSxVOXf zJhPt;?vPB*oh7ts_qcq7oYNA`8Zr!@dMB%t9{aXqx9!b*V@oQumt{mgDO5ycqo7M= zKEME8did?W>Z61?k(s+38UhDuB_9W$jGA6zbX}8n!^DPO(p}$js(ZouB!F#&&A@{J8fx*-KMxmMcfb+v=qWARa04b^xWr z!ENtlKLQq$3Xk?7F5;|glXjhoE)|02lIz?h=Iz2)D<8G)2nGNI&2K=4q9b|=pQqLo zb=a+*w{#Nvv9c&9)3{@;P@}Cnc17aV2#-nmrERfaBqWynWX>iyasu*kFFhV$&S8$J z7DCr%j`O>mp+QtFKhN9GKf_1H5Zr)JQEW zNtBqMGKJ?|_j3*2X0Cmaw?%Ji!26NmOQwo!G@X@jb!~K|rhw`6i{>xd|EjhfZud4i z*!0rS#hBF(t@FB%)$8yEizAr9og?QW{L9(*W<)FcwO+Mrum5 z-kSPj$cxWoYA1F67> z=kwNzhn{$$+4B0$GoLRu?2KO18_Q=eTRV-qO-5;8s$Mkj{#?0DxS7r+5Wb-<9p%TJP}(ghyTn|P=0lMb0F1`s6UcKDOg2^ z1oZ%?e1c$()n_FCbhg;u`~}y&8E(k1N+7V4tUcu+#x|PX=NZKwet_eYHP%SdZq*;X zrqQQ$a1B>a9n_vR8i}rSfe`{M6txZ|wqslskE(PhE#5L2eW$3T<1?jy(|fo~71ug1 zs~KT`fBeJ4LxG`YO8%AY)j3iDQ?uz@${Jh`(FIw^Iq6_E+9+-FqE~k zP23J{n26R+4l%C@Nj&!0uU#`Cv4Tx?tn4kDae9#eR>S0*Hkw?thgEFqLZ7og(t0(r zsdq+bR;P$BEPGNS(>{sa!oIuXyj7jR$dDnGO>ydO+z|wkc*cu7n@27XF`ejEPQee@#UJHQ0!>Fo(ujnpQ35Q$tyfqp>)Ov*2?ZY z-ysD^pYv>Ps$x<7wgb^h2azMV?ekIMX#g$Q8(u(QBYi2l zB;&O%R9lUv8gG=PErmMG+NE7XW|RoAW0uhlSIObCk}T}F_I7LpJL8@1&?L0MX1`-q zEsOa)FC{l}i}j-YxOVHLXOGqHRGVCnVxVICynUxkW%idGbqj?Yo{);5L|hHup=o1Z z731jQ^Zr1-zqhd(fsIu_S+m>3z9cDIq@(bnza%MDx3(~bA2Wu@G*-)f)xuI4A1C~& z_8Nd4CEzw6EOpq9jRe)SO`q*$n@mOrB$vHrcGu50hD?~s_2>Il2QM*(Yz@G@HO|%? z5CLVNjroo0X!V6f5qg&W={9qgKx}HddWhFqEcon)s%8nq(TnD8saG?RvK6f_WU>O3 zMS^ZPF*W)h@rsdtdy4;pvmeXyspa;ED|-waQYbA_K8~^OiTn^PKEU3_@aa0O4J4N| zJqwQ2JqJeeHmJ_x)jGnoK0bNkT4^@wxrlU?=E_YOAu90zHF;!uG_Gp4+{^+=B4*QK zWQZA*mcw&a_Fm4$Z>z%0`tAHtBp)qpSY`pHVG@?7q;k3beaqDDpau?a2?lY_cffI4 z&bc{j*I~MM&!yo@b_UmTqf29TQd2QGuj4E6BA@xvOx}RS+3tx#R!_}uJ^W5~2WQh$ z39MOwNFsA})|K2PGyQIy1${c8!GhazQ)c?YI;)uD}#6B#o zySBgzUHL23@y0^?I+@IK`^nStkJwSQh9l{23dcNqg|uT-FboTVg0W>{{+cW>urCj| zr9a2ldB-C{i{v5r7s?BN3c9{$%JEjqfq%h^@vX@Hd#Ad72rM)7Du^q&dv&b%v>m59 zx-vaIqI`=v!V7LMI+oP!2RC-2VqA$&uj@4J8&WmGXG%tP~EG8h!c7aalu2fxhH{;mWRF%`ydr#i&tQ5e@`x!g#y}RNe$70+s%E#Cu^SbWR;CsnR?fWc`;Mu(R6C}% zAp5n9G4L%T-y7QJLa!(|Qk;M(6z-aN|`=Qj(6SV44v<551n@g~c>M9e%q{}S zAoB6Q+C-lGEmP&gq&Z)U=lwc~mL@NXlt-OSoOw}6zy*Lp?_GS0R#G?W&`T(%h%DX& z*1&gz-_ECo8ya5^NsWGj$F_#|X@d3ClBDfhpxT>RcbR7oAN$8;9RCBR{J)C-Z6m-o d+ri!jy&z__7s}^p2DaM5xbT1D*3Qp^{{~MZz9awu literal 0 HcmV?d00001 diff --git a/08/Researches/Tancredi_Di_Giovanni/img/abstr/Abstractions_permutations-02.jpg b/08/Researches/Tancredi_Di_Giovanni/img/abstr/Abstractions_permutations-02.jpg new file mode 100644 index 0000000000000000000000000000000000000000..25e73117e5214531c36ab176bb2715c8eae6fb73 GIT binary patch literal 32821 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 literal 0 HcmV?d00001 diff --git a/08/Researches/Tancredi_Di_Giovanni/img/abstr/Abstractions_permutations-03.jpg b/08/Researches/Tancredi_Di_Giovanni/img/abstr/Abstractions_permutations-03.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bb28276cb67dffd28cf658ed584617ca73c25ccb GIT binary patch literal 19132 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 literal 0 HcmV?d00001 diff --git a/08/Researches/Tancredi_Di_Giovanni/img/abstr/Abstractions_permutations-07.jpg b/08/Researches/Tancredi_Di_Giovanni/img/abstr/Abstractions_permutations-07.jpg new file mode 100644 index 0000000000000000000000000000000000000000..846544b0bf90a426f8596b1a5e8dbad47d93d2ec GIT binary patch literal 28419 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 literal 0 HcmV?d00001 diff --git a/08/Researches/Tancredi_Di_Giovanni/img/abstr/Abstractions_permutations-08.jpg b/08/Researches/Tancredi_Di_Giovanni/img/abstr/Abstractions_permutations-08.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8a097ad8138c7d60bd95f2aed66a619224757ec9 GIT binary patch literal 20694 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 TyBV~35&wVrAK!`W_woM$gYh11 literal 0 HcmV?d00001 diff --git a/08/Researches/Tancredi_Di_Giovanni/img/abstr/Abstractions_permutations-11.jpg b/08/Researches/Tancredi_Di_Giovanni/img/abstr/Abstractions_permutations-11.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3ae6d505ed6de81973eb54101c093ed3b731e95f GIT binary patch literal 25351 zcmeIZ30M?Y)<29fnJkmhIBto1H0qcRc31DsqUn9#yQ>#mruVL{uC89HS5z{|yopPM zBu?Cwym6b1qA{|l2#hgEjG_@Hpdg@v8bUw;6>0Mb%2kuNXwWfd9MrTGTGtr=n2(VbJ zJ{U4N86S}xiu*82EZG;DG63=bhvx{{f{-7BP~W6JT#FSAW9gG8_Yr#72IR8a9@6oL zgWi5Bb{o;*bs!EO7Q%H15Fdi$bJOg$6ek))EZ8gvvA7&WkKf@+BR=YVM5Avg24P-D zzkm62s0c8Ajv_F|J~X)z1px10A>o6ngTEgBytLglt%o;*q^LL|1;DMIpe=Tq4%LsnCANc zj|Tm0IydOR8TiHYCou7okx#-vgE|!T&KlS@Vy`zG!h#kI4Nl@}>63nEfP8i|8k#Y{ zPCwNB2|vTqxxp(y;h@d&Q!{^Lt@jr$ zB?{Rw_bf7v-p^OxTHfz^#MLh+xgC(pjm=_^A5FU7_4j7o-(M0HU-)R={m#EPuYW_% zBC4olyUC2sUgsiBTClAZnY^oaeD%b=P zyT5VR`1roYXHT0FW2ds!eUtH~W^;%HDw_ujU@KYTWeauv-E1e($`<1fU1~mut><%G zdI84;3pr|&gd24UIWCus$3~^xC@Sp-&xj{e0X2pqkCarN#AP z6LZz53?ItH3Gmo1H5c#0HG%{AN=X z`T_Nr$SseVAtqN7cSZPKbwZGrJP`#N>uUt0Rg3sWHuTEUW);U*^OS7!Ay4hEeIB}8fXy{MFZG{RChjUc1Qv`mII*;4lIjuNkqU7K1-%6#`)^`5%ej4@ls7 zB?g0+2AL6m*yc0Sop3-2`z;n2)Iq7acJ=70qwJ=F!DFc)MCbj_Z!6JW{j_CzXjYBT?2NQOkP9W8i9bSS>ri;@| zMgl^Q1;C)gs0dogfX6B&*%MrAK+SP_wEcjrFe5}VI=wNCgX{7^QmZr+WCjUlr!qni zJDF@A5~Q1CaV5nNB7|dc15+pV`2mlGhM^QMX!M$_93casy45~&xqC=f$U0Z0n^jj$I4SbCdRY=}sG zO0jgnu>A&?GDa}RK%>S0YPmEUAPE3cl0?ELv&ka0DS#SHqJV}N#!WvQGoexvhahl( zT7zHjvhpY~Q0GtxBHVaX29oY)ELXedz1!*E!4(e1om};;d+@RAU><5f0 zcwx51Bhc%hUF$Nade%tnwU;mQIesaqnZNDNB4iz8ui^&V8M)d^`Fs)7g) z*kM!}$Z5QPw-2LQKUu7`ORox&MW*o}N=)L_TAj65h6c}&5$&yD%0K~Xruhyn_M zNTOwNNgl0Cr47mrSU@Q5=TIipS}bZN&1^PO90o8EPJ|qOq8oAxsR4$-X!_*`7>tYE zdbwI?^O^t&TP9~4P|V>+{mOnoX@D0u08uw)4M-sh-vm-6fIdKl!LVLKAbEU{$L8fI zDHs%>kq9BDL57<&U;)ey{O&LsK%>DEh>I|?SY;F#`vILszBEi1lVGV-M-Q2Ju24{* zb%9!=jO~fWK+xlbygDDB9`Xk0-0O4`{7e(cAuy4# zgi;*PXhiEhh+Sf)(VPK>&_F>AAm5<0pk^U2pjB(bEGb_kP{{qvKtG_vEGEj8Fhn$vkPz9R zK_#f!rSO~RTpfvGq?-9W&{alY+6r_8VA~r`O44I5jT*;-GLJrX3!_VA6Tp9}t9A+f!cO?QQ0Hy_KmOwD( zr7A>pn-z7a*=m~(u=wfH;J`)iXU54uG!WPN0KVK}poJyeNK{I)$R%;V&tnFt-ngG^ z0tLFbOp1m{SR??1VNoEi<4D~`#EKAwerdo!$6})B0Ed>Kh=sy{QW^+9;nXHeBMNII z0nktYGgDb&l1?8K#xxYSoajffI77mep$TWiZ50^F#BjgJG@+P6U{n2CCBTe35wnFZ zF;kfKm>o0Vm%IUBSTq!ikClhn8BmwBN`GcM%)~e4Gai5DuzKSwDz461|h-5QZiwRBS4k_K7&}H z2%|m^f?&R|i7Fc4(1eDaeks-Lwcx9v4f31}H3vV~yt)@^570Gh^Y5GW9#)Gwl`NsvVt4OwY+U4-TY zT^<5P_R^#zx)9V$!*VLE|9t)^f;C8=MBP&5&XV*;^B0%`zLP#SQ1 zga9uT)dTnjGX-Lvga}m-Z4|qgk6;!wgi&k)w#=asi&0b{L13A~!}qJAGP*@D;2+xK zDyP7pH<0upIX4zhsBB8ilE627!pZ>o7BoU(4Q?(12hTtk z;>TY+9FmK@RJqHakYP-oT^sO%onKXoQQ^{)^Q?6 z*bI^69<5aa>&;Rk->-GZG?*MB$~*}Thv+5{FsdLT!5v2`6#pa{n?o?jPN$0FtJMvxM0Ak(R=(7 zGaL20SsJQ4>hjP6B8u2UWh(`+{ zpx5(>(l8#tF%nA5C!zs>z=OsUY8~BYia`c#G;EHV-FzBscF19qf~O&S)XqrQAHW?u zgDPsVn-nM;_tgE?en1P|Ln0ewBr++^;A>+B7QpiRsWh?`kpdRIgefBH7y-Y}DwA;n z3YLh21`wf9?^DNuC_vVTIi|SOz!g$Kn7|+KzCgD^$TlhTkShlA`~)IqwP@ocDcR#U zk<9tBm%^`bNZO9$Y7dV)%f(B%Op*J28=U_hs1An}L@h-mvcM8o!IR7BT> zKsv>y<+`L+x5lOkhCCvMn!xesptw{hv>1alK+DAJN|I1))FZwG#R~|7DBZy1dlR-q z&>FE>rTPIKaw+BnT@?){0s z&3da;fqQ(Sevi*f^of`u0|LnV0dX)t7;*HS+IB{miokrU+JT=ZA;1aQg#?n{5JWAI z2Y15tAu2OK09i67W-$^xER}~VW_ol9uO=E3_ zqCw1vQRt({BdE(6LH*ho-vp~gkQt=Q5du|}5K=j~6*9dJ4W=N;;zYZ}GO#ENZQMwa zu_O+ULLAa+Lq4I#Y8QxEq9CB>L`0}m>NnGbM43$Il!YTk2P$!JEp|2u3<}sWh)A-N zRWYMhYSF3^1Gk=3>hUlYYALRmfCy1BgDf_nOZadbp*Vsffi&vHlT`6AMrP88VZGZ+ zbCWzKb;yFF^W7>YTMRlpCR9r_Dx3octW(X9(HQ}Zb;#Puk zNF0?~B+!ej4wF+xL4*K;hx!D&D2yT=)T70{X^z+f%4I}0QPICBAV(#Y1I8c}WaHaP z#z-Wb4yTO3V8)E7PGi*?0jrROyJcKj#Nfpk4i1^7;j63)x*dVym?$cd*!6xPjSZUb zyTk;iN{T@=KEMn?9t1xfTtGY!5jtcj5#?&UCMQiD1C=r%F=SU`Vn#d`7Bd1QFGsFt z${>x9E#aVX*hLciq2RzOM-tqK&mB<+@N8lP4;~E;JK|&s$V_ik1gY6^4uK;OvK1iN zX^BJ?mOe8OYS?v;p#OxP2q!ws=Vw+3j423m<7|myo#Y`r@ z+UX55Fx*e#(L!pAhX%nIin}=`s@cRqC2S9$Nelo6uU8S}swir?MHM5&gZ+REpFoe1 zL?AOqEjV`8X`g?i=be|`FS$FpN;1c z{K_bsOAOg`5hxI%(CiKa0)@qNqgnv4tn!4@fG01k3=bW!L?ZowdND`M5PA(9B|(a5 zh~5az3`I}|U2c>nViW~tXA=!(gkwp#<#MhfZen^ttrG(!bUqVL7U-OD7Ao{Pj4X+p zG@wJBi%y0)_%)~@!+09kXthU}eh(Ck^AcL7pGl^`B0x!Ua1<6S5mzEc671%aBs6A1 zAdLh#1`m$_MObuQLKqXr`Z>f?KomdIPa-h1R$WjagP0_`)?mh+5+*35QK&GR1)7~& zqf4rwqehR2Xove8LzRFT!OX^>M&UQ$M~KpIOc(~thUu}W>}oX2@(`i zze)#r<)Bk7lnR98kQKj8>qt?Wh+*WxL}4U>2lO$JWAXc$7*Qm$64?S*lpItL{T4A7 zcg6igJEZ2@*g6*K0>xy(fJ+>fq5&?KOL2Md!%kr`i9x8n_MK%E*0|Zb#R1JxO2VTPd{7(NW-_P_!MS5qP5mBh|y9A`!)O0=IQ8?5Ttrrct z{dlra7Sw_qX-KDsr3@a!u8q+-TE8A9$|A;~G0u{p3Y5?f=!qNfAk*aptXe8fCM7{$ zgC4VKVVjtsQ3C{lD@?IT1CF56>kAlA3JbwQX4D86NIny4VrZ!tnI)itdO$0+4Mb9q zgcI^xL%g_KwWGQLv>J(g?h*J1yep;tM{=7?CsW0??)Bq2KR z7df6V#^w5yZoAq-w5S77hFlJ6J#nAk#)|j>pH1bYkb+t=(;T)M7%p@jB&*HL=5j$(K!{Rsme@owH4uy7(O(#)fHAY569}U* zOl5QFF^X0?u=RujOFS+}2>3!VHAX-pavv2DL6$(s6H)nrI02%_u{efFO_)w=5sTSDjW}V$FK)LuCX0zhC*2{INVp6>yB6;xlTVfTWX^<8{?p6gIM|h2p&^A0NIY<8yzL;Tn2-IyL)USrERMd=brzgBy!29%8 z2Y!aq$Si|a2hdb{{Pkd*>*NNQdJ#iP%GB2GX6sB~7V-l_>&s5Ca; zO{JLH3f(fhXw|rYKb`#Uox=6TzwBNjtI2<-(|9hJ%79g}8zN?@J`W zqlSPOf}lXaV`B46cp}M5h*+!vkj3FER1pe^K=r^pu2}%t*dnSyCDba_atFtRN4OCq z{?b7hv2y@}HK7>rzUV_EUQ9yfP<==sZq>@HdYN_Los>yzSL2E@23&*) z{^C>z4_xCKi_8cq!W0h_kU#mgACWjvNYY;+F;J24^O}W!ri!PpZsnJS9{e;$F%yF9DI_w7%K-Qk0h31OvjBj_1DJRZ1>o~>w}Q;?uP=Fg z>Z8@V56eSs;l5(9`>^(Z0`@0Ue*vouLU=u%#ru;n;V_O(^B7MaSTa0EOK&N6_< zCo~p`M*(OgCYSku$jHPIe@-Xe3KAm1eUiTdfRAGKoe5=wz~mL7`I9 zh`*Toh@rk!9(Zj3<#KR&ObV091!#0Kzi*YXVSs|Hmsb z0RM#fPa+fi9~Wf+=4a0zK|ENspRCGHD!=Yqs|X6=$)EU79`vcMujEVX2t3~V-~nE9 z_)nFDg)n@_rdVu!hBYf>!40HO!9VGH#4=7|py7+xH{d6B@nDPo-z?tGrvA_PQMbc) zzeJFn43KpsQVNxf*P9YZK!1tg02lqE{%4R7>cpa!po8tgcl|#u(;L8ieA536Zgb0c%aeqTLV1pEQcI_2?#VZ1X1=hYszIfD21t_m+J_d?d7B^aLs zkYGwR7?0@b1E4_R5 zNqpMUJ|7OT;^kjGsDY zG~UKcoit^_gb7n7{qA>Dr~dADWHO0NemFn%-d~f3J@=GuuypXC$w^NQ8#H*>pnG2> zMe#o&96YG6;hYY%XMXkE(}SNH^z2W%?mu~HP|{O_1`i(m)Zk|a4}N+u-aF{2!NZ<@ z=GEW+3SbYPJVI?D2mbIOM>BHNe@~%Y*?sWj+g-15sndo%!oCl5uP*7u!8q8k!NZbf zC*A$a{qBG7Z||HvQ1Qo0J;iyeCT7;tPh9J%Eli%*(fEU+#5TX2*?ii68$2{?;o+n3 zGIU+o*M3+QURrsnc4zMTcRo)Vbo3iEtEjU$uczF5F9}}SyXf^r+an-SKe6b|@N*Mi z?1Fn|4^8{{`kp;&FBVQXQnVnWkdS_@2npwGSJpp&_Mu|N9oTv=Y2w%l-@X^~3uT!y zL#0QXw{?c8@Wb2Vl}8q@u1b9M_UNw`Y#REf0N4`veQDi{m8X#G?ol_lk1Q<6hju{d zLHdpI_ePBoq)~UK1zIIMaLT;W4{jwTJw0)C*ZQWBUp7U*L}vBGN9VaFB40$R!X0If zY01cM$IZHwS$w{*c*EVH1q~O=GcFyhNhJa`)Q!7uP5*ZMTMrq0YWUFwxkKL%sK35= z5IL5S?5`a^z37L0b6sWrhAEP7gv*+mTW&NIy}EQ|MNV|-n(flNe_mD*S+S{U<{PHZ znBAIvGiK!<;D4Hhm3}&T^5iL^>TU@FIy?0f%}$RXM5aKxt^*;uD8&FG!x; zP`vZ#-L+MSEO%zfiYDLM%tfa@-usB;ApPlhM}73-D+lJ$<1@V4gdt2BBkwfqud7yk z+?t{&Nnk$|q-`&#s|_IE`KyYT)fV=Cx_k86imuA5HMUKEOG=u^n)Y1&er;(@T14d#1)Jx6WNPzTou5O62(5($}q}nTxhp5=O35 z?)r1eTlY~GG$wn@1sm&SGJXk`Tb^-cXicPo%}qkeO^dDOW2CG7`urnY6+bLBHKWb$ph_B4Q9IfG91PABYX z>Fx-gEv(s{eWSB=OKXNgv^ckA1CpM2yXrmzL)SH~ZuPE79bF=4SyQy-)4%2Ow|kE72GXro%hjcw z*)NpN{t~&d_EO(6E13!Ik8d^~cC@d6b2G)SY>_&YEiNB{195@9vqKoFe?<+xr|R-8i~# z$jdt}9GMfyM6NjaOf~~t7fC-&L3$!0xNkJDJLR;=7Wvv)@c70^S4#Qm6 z2x!=x4JYd}GAq2d?oKLr3kMk7Jkx6gGU#yas5b)iQt2_UVDYszYg%8rCFmXf>-RRE zD@s#%S00id17}GfifPOCkM?Z7d2NSh$d6;+AG@A*qUeb1R8WwAB>SYNZuZLs;U$U5 z3+7i`xp8UevSo)>)-SH0mweH*weUb&iow*LbL5TtJSW}QImb}&nY5<1V)MM+0A=n% zT8^u3d-J^K=MBzn>ITY6+b(aKYWq!VJ?;H9Q)U*GEi7&y1MU2v;KBTV|L;%jx^Oq+ z>nmd$Q<3~;v~273>d^(x@bYQ9Pb*I4{w3UF{+S56tiAD~-pi-&l-)}@9=Vrvw6ns6 zR_w|;+Sb&Cwb%A!zJ2CrGhUxC?CW^x<@ndyBZW=BdNDK+rHCrF6l{QUimp{FFSgwR zuRK0O&^u~T2KpsR@t@knm?BHGcOHXxw2iMG*|U1*o?(|~&VIh3cU1S=ThS?pn9=IY z^32aV8&5SW>gSJx>QmY#eE99~zdi=|LdC|*x3}94pF7fQoKDYlEIvW4=$@Bfz0Jp3 z(n@Jd!Jb(k>a1J}Hs_m~{2kzjBX=Ztf)DQC?!o9a z=z(`EU)ImgX)kTd>;m^FP9LZp*Vf>vnyqWw{95e&`a2b)3o4ITmY4QSd%ZsJZt2Gd zDvUjMlYV^2P|{1YTo)#uzb%hXEZES}MDrhJmf3}2#MhQl*f1;i;HzH-14jd66$&5& z9eY53v~&KB+T!jiTF#dX&z)W|AuWHceaE~NZ5ce7vSZbcJRUTD@}QeZN!xmJfs4gM zv^nL?^%INh9Bms z{l{g_4;w~SeR$e;Yth{FvXOb+3u2dP>uQpz8-I{}rC4#J;_T2*@RM1+asIJQC$fqJ zN9Rv$ukM(Y8i6`{dT!r@nwqX&zn9dN@zx_MBj=Qc<}5?fwUD+#j9iRK6)ukJb&;O`o8euN21}n(BmT_j3s&8`0 z7oWv|a);E1_aAy^*7;1o^~gv0B^O>&dFT`1C(?&Juou#FH=1In{;0FJD}J zadOcXgf)534p~Kp()jSAnh@V}uKs+Xx0kSN6tkw62$*YTzf!QDdvbKknIXhi&xJZ! z!TM)H*N-`NL}l{i(K%bO8roZ;bCvJSdi~6j?t@?09 zG>Q>`ASvZq04?bs1+cTtU4Z~13-vw79=JGaA%hDcR?f#NQtEtXz03!gH*y`qPq*_Uu#3UGw9Qv} zuYS;f84c=QF)hv5zAAasgtP#?q#YQUXQi!KlPh|!I%n1S>u1Vd+1t#}x)1K(T-7bE zI(d1x>9#fTPCZm|`m+CUvm&Of8fS`P<>q7QA2br0$IgDaIk}>p+)|lw zp%894vULy4hpPy~HbWxWTYd85Ep7Y$x~BB&f2)-G0G>hyxYyN8uR`XAmxmL7IpF#O zviDw6azi{hx`vz)ViD)&*GwjO8_jNuXm;v2lUH=!Y6i5qrMmUb+}Sz2`R`onT3GRGR@%lD@~aoiDjLkT z1Lvwr_9SdolQWA;HhuEOq{qOX8%jUXa*8QF(o9=-c~f%cEm&FyK)%*3WO#VW^;^m} zmDxjHxSe-n;g)?%Yu3NtoU<>FT3yzI)hg$vz~5hf4C~+hmyx;SyBDNgPW}4I)zdBY z^*J5Yv`fYVntMs(dJLi;H!PfDGUbje&t6&3DygY$%jEIoTW7!0^X#dl!H2R|h2FF6 zJ(^$fN)fYj-YGySDi!UhB;306NqTwam;2^VzQ8=T=Jq>|>#0jGtUbS@>eSZ1RizwH zTS3n*z1#NOL&XeP#0{sWzk4Y@CvqayYdHEcbaNMVNBtLN>svQ{@=Vs32R0E`beb5w z^c8#7$McpF8t8fXOHYIm+OFo!J8+a2?j^13NLz<|xuBFHK2rLA{<7;e`-m^+7hzSa zYNllt+o}?t56+T{p^~r}LXS_`EUVbDXwnA{SxFk%#OzvL@qS=L zQ~UL@aOTCG#J@Oah*lRA=WUyRq3X8>7*o==4bN{u-mQ-}oZo3W>$>z=&rTT4r?6uyOzf8pJu3op^TciftLyh%A>ahc;5 zVZ>5?R((P6?q>(;$-$!ymPskDW;~yi(ZgH`kUI zRLsE&E@j9JjqFqR=?q=!s93QdXe|11WBv7Gij_G~b=7>&iT7fPiKC8`l%`*lH#OGn z8I~xw7Ho^GZKX7z+w;o49rgRZ=>fEN=k)B#cYbv*DY^_<6;9tf;Vc@>irM+i_Y(gmWe8pb;;Mtd>_`V={^p0z->G1bM8VWBV z#RuhwYm+HwkJPLQn2A!JB3HhBhxEIV>j#bT&>OJ-V=@t7ZjUKTVlouFl&gY8}=) z_02xIxJ+lmjR{nwQJ^~M7WJ{%KWlsjLsvpnI1;rv$MKCIOUx&XI=a84tFr--jB+6!-7uV0YiP27$_bFhvLuEO2* zV@{NPlKv)+JgA}~G|n*N6<2n{`G&*4jyTpcmR&zlSW=d~VS2-NE5?(X3*Y##LHbqA z$s1oCUh&-QQCAwLmv0J>3wPUZ9ogKn{(4^i`wJU(&-+Guv*lq_cB$;u&nt?z9=^3+ z-)PVNF%zD*d*yd+HG3~+ZcS0{`EO%WZ1nh&u4A+03wq&oBdV^~AKp-SWa;F+mx^nq zv@W-u8RhR2I@Zy%ZtlvuTX`4F$n_hW=Bx?Iz};h7Yh2x#OxE$S(D8ujMqW!}@xo&u z(Hk0hAY$G}psiUZ%(I;uKQ_IiI;*gv__T9tGrE#iv1(lT_7ug6n%U1UpW2aqmYKXN zr*rj<%J&;j1>|{6E3LKpb(vcc+R}Ra13rnTv6 zTm8l`3YIf<^@e*%3-jAdW#!d-TGnSNqq{n;{qX#^k5PWcb$t6p@HDci zeA*P^(R)d!s{-Y>vQ{Y9wYJw@%e>ppc1{@kT*KiCbZqO6%d=izc&z&B?ULPHk-Ky2 zO8)v7(!cpH&&)rZR+d@WJtuc;Zgy$)#EH<-i)+@@N+W!9xUs5wqAnR1V8|jt{WqPr zwtESq8*7J%>orYVgXON~CAEqb$e?ctcSq-b!x*Q(+;U^nsO}5-*5!l@MKWP?U4H9C zaQh?qhs-lXSJ@8xdRF_7H_xp9O;`0Z3sDbrza()qcH(zHi3b zQ`@OEGZJ5cncGLN*|@fq@G`!>&sLJ-^jV|O=3xzG?-z8mO3eV2-th6!JZHGNCw1@h z7q-1yr=*R{mf}9z($;O!yC=5IO~+byee&8PE}njNU3^GSMJzR#nw;<3v*6>3EyY{^ zv<#+v)T!8yRoA2(Eqkja)U}>o{lS^vZ`g?(XO>(!UNSA~H`s>hHM3uP3uj}?#eE05 zCtS8nNS4&2(CRZ+E1-4o7=d!t)oNwpZq^6MpFAS>=Xlxbu2NQUbK$Kash8mc`Q_~Z z)UkSX&a#QF?&GDMx3-{tgGZ+AThMm2 zNf(Oe%*Z(bHPcQ-y?LVCeK(6Q&B=Q0!je1bALnk(nw{n7dl8^JAY^Q8xzPJU@6;J{ z|0{gUSJ%9FSg|Kb1JFSyN?Yh@k;Z81?HkumO}6e?k^E^v4ekmi z&L3Syf8BW~c4XOW{Ld1{{B^y z8$bE{EgbHt*&kiHF^@ohaa?xyg!-93Wcq7gYuz=Mmiy&w*7qO086W*${zby#x{ls4 zExq&&Q<}@X^Var6=5M}Qd!;Iir0j#h+u)<2ef906`GNgMWiJDV_mNxj!GfH_h%d+R zZ0aE-etdeM+;{QX!F@~1^RlhU!!rz1owOxa3x3~!gDfoEdfBmd-SSc+e(BdGo2syl zyKg9k`-v54S&rrd;4F#@ZW^DAU;5%D1$j`76I;Ca&XG6!2tS?G(=qW@*>z=c#hnvH zW$odO?WuUIc#UybjO z?R6pX(zMmi$ynisiDTyE@z&vE(|3+vS^cXMPs=RzwyopTlpWUqAbKAC)OL znkJo#&*{B>JJLPj(##sHQli)&t~TENb8TbFYcEYmJ(o5y+t-s(nnGSsT(;FV_133< zsxAIv!<4OM-|e`1?dcnRAb4Xj#ube&XgGJOBO3E}^o&{XGBHupQ>&APt|zO zW#H@?C2#^^H5`|HcgA}+9jH1vqO2S`qG*RHZRywt#r8jV~Ry?){#fZ!otr zj(pU;1vVev1FgCK-lp8F-SxrLH*Sq@$h>}Qts?FAC@3G0?H&AGRC+xVn#XybWG4 zH2JWr$Sd z8?6iW%$~YQv}8lLb$I&hcUO`Iu>LoE>Te&t-PFOn+_~t)veKq_LuYH-yvBP;t9Cgz z)Lp-JFNy!j<5D~$4D9J%(|s&+J?qo7Ai=m+-g>&e^GX?oIY+t_@}^3tyus6Qz*@CGI&TFq8{D5& z^9SqW^xupZ)*p$cjXU4DBX`2hU=>>LX+ChitzksT)x{gITx08>r+<|-DCgtyLkQ44 z`u+9G17G>jxzjTig~m^_rei&#$Kn3Xe|w?q-T2TCL#*hvi+fMBe^)=R;9z>uw#Xje z4=0XL8faB1wV(ERL+3AUKhm_Mp>|2W_Jj4{t&9x$xz!nH{r{o^=OCbdK#h#tHk#o;pzVawbLuF7<-3k;j!uE?e3*Dg?Xsx4vUa+tZs7nw)QPNAZ}WJzU#*W zkuf*&ilY;Ww>pPQ8llat_1@}{)$`|PU6Xg7EXke?kNabJ(eC%g`SRwbx`^HdE5<-$ zqMjiiJmSaLePYVR16er-_noKf8|TlQcdV!cO;k}^^8%H~HRa~EZJo-_-tLabSmbc? zi1zM_<+3$?<<8VP{B?Zz?wSqbai|w^KeBdjk2A)ucspM>RJ5&;ziouUbOc>hT6D90 z;)J!4yB(htJ|vm+)TWkM+Lm$X$DIcRN3)k7u84Qu-gj|TLFx9&U}Rq5Qo|P|uHw5# z{e3e&3m6x4l{yX_`P#gvxn_Ot({Q$}=w8yH5qVi>mSuq@=~+|rA0ZD?pS!*N>u9N? z^c*A2YiTar^AXTtEz0|pkYX#@1-0kfb3}`KZm&FxM};ffI;JD5+MT=i{#bN~aVPzz z(iPcQcXRuq=a*FiNY95CA~oHKh`Nuv)##)9#CVl7KN6aBWVNQ z_~3%_k2x*~DiUCK(y7A=m`ST}8%0G*>4ez^XZmG}QOIqGJi(6PxcmYt% ziS6pLt*wLHg=>}OTe8GvlBK-pP|mN$T(_1Rx26a;gS+dEca!j!4*hN7$^zI_u$6!x z<&>()QyS;2N0Sc+_vWozex|vhxdPhKzVxJfnJ|Ap<7L3-x7T0X6?x-tg=rsOttrf| z7b?F|FJhcOpj?i0|GwFJr+8U;S4MJi9%a~O!G59W>A&`on8LU#J=l3ByXpPLj<)wQ zi`#FIj+rxy^QgPN8@aYNL$JXy?Y}N8;QsMK@4{_BX}Nb@-k(6A0xM4*k>9d;Ug@2} zHMzIilGgTfi))wh>Je|Oa!b$pcN0kAjeAL;^!SIhRZ|+BSt)U!o%3VmbI16vhBbl1_hQ};(&8-_vI zr`NXCOb+LqS;6rhNPYWMcYSu&uf_`QC57k(TWi+jAz8i2l3VgS_mWQ1?@N(%wxzdm z;^Otdk&aHp74V$_KB|k#5_i9^-ElMZ+X?b>3m7Zx^^TTB=6YzC_gubVf8pviTdw8p z$F5gt&-Q@~UB70=(v?R(Iw`}J6kLYzrQ31r*iGJ)8|bU&_MM3bJ5&GCvHk6nvi`=?tPFLxWz!t%{6 zM^O>(hg9z}t&%QVeV(3HJ8@NZ%M2F%bbiMUSxtCH`E~%fAsbw4DLdVjD$8idHeafD zX8#z6T7lts1dC@4zHK?bw`A3@igV3{Bk+7mY;}ccP5vD%BmdZmW@t_Ltv<4NV>0hX z-)rd^yS(sFG$)V?rSEGM*TA!KOKCmtCCZvhhaS9f@m8p`c@y#I{v|sOOUt)sukiJ5 zO(zWBx_jbw)Ayeb!2ECcd}>$AnXJ_v@#B=)&lm4($~gq|tiD(WUxT3n?B;o>>Q(pS zQVdd^4$Omdj)yMyq&D7t>g1whv!~^+t;8xM=k8{Jb+Y=V&L4gqdu-0&ORvof)B(r9 z?%^Zy5APnnP5kXd&Sz)WyH<5xYpPh`+ZO6-+1zeDy~wmY^{$kMzn($zu$-e+kJ6h1 zaQwKSepSPj)XK77uR7Zj1j~LUDzYD5wWD$J-D>KR#jA1`x3em92N%_MpDu0wU>DZd z?YqTyhVcz`adnRWfnnZf?e)^k!@aIo3+fDqi|F-D6T}-Tp%v!}KDDM!FWXitZ;4XtEL%G|SB2(;-|r=i0Z&h!QhIX2Npk<$FG)3PaPY@Srv=tf%I)v~TfS_9(e_4}*y ztZ{A}59W}`{&2R{5wOA8_JEHZw+6{THieuva7a98wR>Q^yA5_B{y`bHw(iL2jyMKo z7#T{6GRTMBh$I<;^+}b%p7hu`j*KCL8xM@<#C<^@j9a_MeO`Y!Cq5`61)f8Eu4^V| zbWe4`J%cj1b+dLiDK*{sfe_rCkxk38QvjellbH?B8B8Y7zdMxzP{|bHmzf37a~RAV zDy#eJD`RkD;?uy8!1aR0MLV`FF@OQ7nwb}v^d{9P4-9*1!^?W((zswViguJO)9CkA7g?+Fe z4-+y3$iILSV+T6yInF@HXT=92KC25Rqe0j;ko;@wuXEIO#Sz>Krx^TY-V~=?FaG=1 zI_Nr5y-1w|a=cc*Yfwf!%Kgkt<6v$yKp+vH3P5=(sqPyb3;U1Y@P`n|Y`aXCst-yBxlDzM`4U_z5P zSrj_)YXI0ebb1cJB2lP06v{yIpZfl0EmHRa4#b)G6AH5qg~qnL2KcqpABOWoFhRhd zhQEb~-}HPNMj&Je1iXXmw~f^6jfC-#6%T~E^YzT`eT<0T5r~ER){~QhdOhF|SO#~* zXY*STZ}`nh*6Y~6Rj@i83R**9*pLXqgEDk*I1mZh;oqwHuiE;0;c{Y#19uOmGMFj4 z>eljg)2~$hd5{}MTyA_Yi~8%J*G>Ow)a(5v(+I`Cj(gqsug0Y|0DeM*CpiYxjZSCDq|u9Rp#Z24XI|XlWgNkiJLC1kjDjuJQpb9xjbT?)-2=4 zTw%T^0`N`r`}H3;J|n>Ze}OX6(jFMlzi zgcq}`1YC-ln87S|gF2Bekh-4&{H5b>2mK#@CbJ1fwJw5XA(tBy>grkMN_AYVQb({R znOy0?4l<7E7rkQQ1mX^pmt(Y0-9f7l58I54sF|h%9DWBKHU(Ku2|#kv)Izt} zDnX<^IYLjU&;W_=Vdx=m5H|ZPDL~BTmr-FqLyiXJMqiML1TicU4q2JefR4+R66{L_ zJT0LvTCu{rcTBZu3!p~LeeDN zGQ9^^8bF3d=XIEkP|#))0k8?sc`ZIiz-kPJY+@i{qy9VgQ-CCaS7tPN8HmLfjM)7a zrqhF|JwdD0kI8))#!TQLj1(nX2}L8+gv%G!shEJxWs)2^HVL+Z5gW{;IGOGsGn@jn zS=kh-oCV1MGgk!oJ(6IAiGw1i4pu6Ip`^oL5Xtpa*h{i23<-wWMDj7?7!-m{s*sHe zpf)+hk>uMjEzgPSQ-GWZD@-vty>T7Pcli;yO&$)hLnMn+9VJPfY_7l;Vwx2RHO&|% zMdAq~+aUD^0o2OC12ivW@|tZtF$nTK0x`P@5xk8GVql9cmQrKsf;&HK2 ziE4RTrpE_C3S6R(QeBwG3*$TliwDdYB8P$|j~4&xL8D6@Ct2c< zNoR!ge1;v6VSt<>lX0nBszhtX0w%Kr(~%>D>PO<{fSkf3iC{=?41zA3fEI@guu2r= zCt?bSnqpa?c5$RCxmIWbm_j?sG{r)kfDNK*VgRJYaVwP>b?5|!0M#W|yAaUGkh`!T zOtWx>d{WTl;~LH4AVcJIi{+Rh1!xRgnNC=)uqu3@na>8PcWPAlik-KG5n#`zXx_B}UA4CIMy+O?2(N$zmy&lHoA-+aI3e!kYCI+~J zO3)*)8dT1x%3%^ZV@3zDWt1Vg1T}{eemCx?ha{0GD+Z`U5}BUEr=WU;MjuidaZD^t zQK%5>tyV3YVX>HKun|f|l3_SVb|Y>v9b<`1=0Cqcp@h^8Dz##}*9^$G3MJPVz~NvZ zs7?XOF+suz#N4G{ohG3?!jw`xa=C#SHVa(gkVx->^dva@`P9ud~bX@OCI#YmVjA=KK6Yi)%1gYpk6NSyi`;NDnoV# zKfqO}w2FE_s~@C*0?`}$5Y^yzvdRD|_?(E;rb#gDCRNnxbI2?Vh7)6njkJIf5*pRk zfJH38^jdv{BNs|UDrJz3r2t`zl&n;H5VDct3sa4{fGl8fse)!E-$0?6=oX;>GI`W= zsgy@JBC_}&DaNQuJ&!9B3p6xKJ9;8n@vbU z&1aayFa-Mvn~Npn@rVev_##195;FrH2F9>rp}3c>k}&PI0IcO|?FPUaWXePJ2Yry8 zpaL;0q4xtqrPauY$oSEioMKhV5Mh*0n-21Gm(EMefu-6o&S zM-~U=n30LcC9!%6tsw~~-~rTfEbvUERHcdp{HV`|`y*z$q@F@^AmR+l=@ze* zSPgwh;AClegkkr3eF~+~&JDZ83Z*W{F$y&jN>oor-At#14r|0-xebg%#yBL?sMS6z zfT>-{6ophON~7Q?YzvEBaw!{O>jgqWtze%q6lPMSQYIyYU|hD3DP#C?je--GU_Q)b z0;p^O5wOz~ag!ZKlL9-Wq}5w&4=a?A$Z?Pwh|nNN?vzTrXp$DBhH2hpC=#OC0S|7b z;0y*O0!AbZH7z9N<7R10!gp)6@nD3@iv&Rj%np!!^=jiF*@-AU!H&@YJZMu}bSja8 z8&(RfEQA*V<6etVp#;Ph1El4~F}W9Fst`AyiJEaZ7UC;>Rw~MXe56oV2}-o# zgBwIft(J!S)s&PBkytXGz(rEC4AKGSkQ{TPVn7g%fdH|=%vc;vN&+gfo#yZgeYiCc z#%XpDR{`s!(m+5Y^LZ37Dhz633Z_+5?;ko68mGtz8Yy5{$&V+J8oL^|CW#H7w6P$e zH4vq73D{6FYN2}Ycu*DB1eH`wC9s32QLL94!Gx4z<|y?ELe)|f^6YvZB>?e75j`ai zDL96(Sxi>43=Aqo&+vLVe2C7`5$Ym>1xBWrFn@_iSSj_=m9Ah?fwKh;J?52osMN5C zO-lh1YeIJ@0JA}?_QX69p-9W*MRgplffqG-EC@x3>TNm?XpxhJK|QR{;Yx(8K$AKi z*-awhbWv1BIJ^>j9HBt;6rjWbnYl^Kjo=Y}P|YyWk*LCnviTuElkkf~B8DSursHZK z#V6H~c|klz_jrgiUaAkkMg-+}tz7>fWF>hC&?I2IQtHlha&R|fgq;Pup!Lj z494TqB%-AW?QXi?W^uYh22aQaf>CK8s?=+l4r$V;iX?DB(2&q3Xkvd@Q_phHte3{D z0+vm#K}ix1ZcXsqpa_yANEU^SBeurHcmy#}EdUr)iYe^4%V*WNr6N_t#Ly)87?&33 zIo&~=*oD^mV>G0qsTg5g>XHI358%{+Xi#S127+#mj_!`RPzENUNl`ji?F_ro2*y#6 zWqJpLoM2H%MjZrEJrUT%)o~>p5{Z$Lp-}{aLb5zU1aPdR8uv>W03bpGiKN!R^qb>| zQ6Gy~VivcM;jzFAV`tRFtPZm(z$HBOpe+SxWug?SQ9+?n5-g!U zZsY)*V35wB+I(`r3d-0Ls)2vP^_~}VHIm%RG zY`)cuaXf&*!15)c5+JHiQ5c9gVlfHR5QdmEyPofo+uS<4E)+&3EG>zL8jyrsEVi0L z3_#Du9cqeLY65-!B+UzmLjk6dE%YYs$&f8-x5>eJ8S-hCBvTWMB$Y0aTHzHbG{n&X zOAG;;Ib!pXB5H*RCrd@bFbk7&@i-AelP#c4t|B}>Ny_8%lKm2P*ysb4DL?`&2u0yK ztLd3F0W&xYa~LIU1BNWuu0qR~LsE zCayqP9|d6AKp;TODgu?oCksv#)*7`+Z=@TZJf+K@bl{Bo^hy7xm%^{LOJgiLWzHF1+(Zq;j&^{1X(j-qUpR!#^8llV035QhsG zl72!*XmCg(lE=J6k}46wscZ&00=m5nHw86o!&U-a=+>~gQV2%P0X^BIa@HGIr{QTvV!%g)`Xq-W67Zn`R8M%* zJShq(6=W`1m0A>tr;#fGQwRxhiEX7|C6i9rsUWe~aZ|vcv*}HMP0S(OGCm_}^x`a- zM`h@Q8k>sg@F59Y5|hasU{K89LYCJqG0CZs;|N0tu)_%IBdmi9NMKPhtO$?;e4W?q zWN71%S|KKf9a>z?iij&b?qu-y#RB4wJiB7kF4CY?qi zd0}IrOu!nArT{@HPsZWNu2m3=J+O)x#r>K^@gYq;X9)N0c2zkx)XA)U$(Z zD$OGS)D)Pfvf{~v+GnD8+(L?s!A^?gQH*Cq1tcWOVH%R+xHO)kkVpa1g6trL#M0Xg zA&~-MQXvPkeETEd$=6P;?$d5auqXRLM3E}r_M3dh}cowVhZV0K_g*8)In3y zSg$s0)T(hL4cZtP1U&|qJ0kX?bQU=Rm^B8vTkjXjgEn)*Bnp~IsK9KrCIyC&+{lbb zC`^(U^?FovT^#l44L;CYpOAz|DtS<2K)g!GsTIpbVrtk%oF)#Im4>)rhDQk`C|0@K z9lgcQv?xidYzXH$>nMr-Q=^Yq=EYEoLCaTHUUc^cf{-vWYg9AHa;~K(KEe9m=0-W7LS1vV@Oygfrl)PCW(MP z4)LtPAR8x3BsMZv&;VIwJIh*3SDjo2_jy~rbnPG$A4! zaXZI_v7Cg^tu`XVg#q=k9twrLxY@7rJL4{GKxYfnBWiw-W1-@70P+x-V2~u!^9Toz z!pA_W#uG|{8W|~I)j63InJvPC4K9z;uGhi{tNzrpNQo^cV(0-NX$cZRy2xm=d9`f7 zXk==vOt+P3;SmQG-A3YQB>)Te=#`PUOhYvTs1X6^C|yUP5rLODmETFN^6N}bOaeL+ ztf)#$oFx#$u4RG%s)DsNy*ChY2Z>~%BBY0S@~{E)$XNoGLmy}I^g+-=Rzyu9Q-UK4 zr~;%EAet}|L8i+I*z|OULQX-vMi95_J$5Ncrv*qNSA=GlV{pjn^<%~WjpHLi=70$> zQvBwCnWd-WRE~%afq-6auaBe<87~~Pg#`&Qla9GVNj9d4n6w-fg`|#Cqy{Y!PCFw` zjLnQBRSF{nT4X|phpwhkeI(+vk|wxXj3d$0_2d|@{unjV!!m$w0;L{Y5l|$J9t1!= zbe~^pb5Y`2jBC;xyE*VLR>Ikbs4*_(#B2jN`G<-GB zq;LlzREY+~afnaQZziN|b`aVptIN)YObF`mSSSLO7zQm;LXcVri@IQi&}l$^mupMO zFl949jgxALN_7H`*@shPWSDr6gGO*Z->-H%v{tfJi^W(=rJc51BD>fJTtS zB}?g8JW51=kpK;fTY@|+5{Tm(y9>l=dU^fU6N{{ggeWNzily{8$rn}n={^Z!#lol? zh1D`5Y7P28u8IhxlyQlj&BXvsn1_TUPBnyE^m;2~H>te|rpK)C)yI1JSX3C2Qeqsb z5Du^{3~pEgd1xjy!B7|+gk>NC=8)5;2?7ZcLQ~=i9G9DMgWf8Yazi?4(oP)QZfRT* zmrAJhIR~4QO9ShCK!b|{IMpT}L#hx!JiCZ60(uRx`OH)X>W%5#(hwY!>W!#{M%8=y zE=^nx1`!HMJl~RPd};xQuu3Tz3M>f6tK>w&Y<-*;uoyuVvH2)T5idq)uf+hOL{^{3 zB2xSbnnWN8Kpu|@RRuj-R1&0$Vlk^;q}OZR0k)T`u8)`5xEt4k0TJKwdK11q@%px8 zY`uaALdFPF7x4NyjueG}k*TNP2pxrJm_CV9Ac#oQTDd-#L@VSFswg6o;}k`bXGv1M zL8pX67PAeohec)61qv-Lq{Y;HuETE#!0vdxE8;SGV69W*02u6Oh?XQGL6sP{=oA){ zHvqXK3Lq#|SVc%2)yTPQg7LKlF-I!Ub-knp_E}K8z3Tw zrlpwGQWpb6$?`a)WXU;U785`tEIF)Z;1+iR@grt6DhPr~Tx*BSQ3fk&k=mjun?$}+oLY4FM*k?UN}HwU{r^X*ysVW!DTcW zDK5mP_J@rUk=SF_#5tO9oFhfO^%mO>O5=KWQ~@w-CO14^Qgfp*>N|kJo>>=wJ^pKBDJWNCs2ovBc6^J&>5{6?$_EO~xJ6}H= zjRmzH8$Dnlw$odlEf8&>4JK?TgUT`L4FE#}5|0NHd?z1cgA$gUEHL^J!sg(q(J2bw zii3#&jlpIEZMu+^&fp5&bcQ(@_n;oaGV4`tj@PTE6Ddp}>>=V&t0BR+S|F~+n*!vs zxk;`Kk7HJdEvI9c8FQ-)VM&w@5m|7GDw1?E!7!X8lJqKbj4qWE5wAxVC1xX%c2bwi zh0~=hm_{Up_@a96OClno226?|2!^3%uE0zrlDwp-)rLVFo=~NU(kLW4>JjiQBE-&> z(2W|gUaeKaJTnpDMoq*+2XWNF1B|w$s^0rzhHOk+W24&jYA;~n>Xc{*;)ktriiOUm z@)Xeo!^VSx#sFju| ztA8eCmO8YApiG#H6eS*<8a(yKxX!9DA*u)sMKI;tAN!HX^@Sv<3W@rPgg@3S{3lgB zb#*I$F7)_s*77Ko|GFs0=Oe$ZpeKy$;9qOB-dYC~uB$I0zbP*vy7zcHkT6OVXZ@?X zpx*-tqeNxauN7Z)l~aV2l*$~bKa5-bc33JHOf+O8h$DwWmd~g{k_I-w*wDwO+#t0`^E3<{gienawG#{X#!9qe}?b!BjTuQePV91H~lMCp&i z`3B<;_y06r0Edt$>=1y4s8v83jb*o%|+wte+;0xF^Hk%JHm{eiiDswqZI!DN)v4spa z8(!~WMLg48U4YM@YZ=v1QKltckiC4%)-q$E+ck>mqjj zzc16P$Nc@Ee-3VU6Q!N7V=(!R%-%Hoamd?G2|}80>O}uPT(f^~R{ylze`K$Yk>9Mw zzbNbcO|O3r@_X_B+tSMat7}%jlE2@6Z}##Zw(EcGU`Ku}D}DRf`kM}^Lh;{Le-8Z3 z%^afgID|)n8lpY}A!?a5A;galB>#&ZuNUdR#tLy>y`2T(20=RQ_XWd5V-7*9BVva` zulKHoC@c3OwvaWH=nhb_DZoJT?|S`9g6r8JD$|Lgc=9h*@qaR;ug%K^ZaPTXU~& zrZrD_o@tJqb>Gr^Rh{-(TGRL6fB%E`n||;?(^gFyH))mLqG{6>=^wUflisGyhwWRp zC9c-(+jr{RwR5NTJ$v@<-LofyMx!wX{BkvD)}%?Z=FM6*Z{D(P^A^q9wr$y}Rm-+r z+O|z^+qO%uj_rx7W3TQ#x_0f_qkEq|y?XWOL#0xv)L+IAc(pUF)%y(%jpU6QWTZ80 z)u2(U2Cu$Pn?`(vuwkPH4H^)HzP{dhw?V^3@Bih!-?r7?YMIusVS`2u8@~JA`|rO0 zm-pWzcx%|`omL;c3$*68(ONU8ZLyE1@O0^a`NkIdWNHtZ{>VapPs5sBYmeG1>FsWZ zrwIy<-T8E#80WuRw7UieTm5F@`bl1$PHWnTAgWcPR%t`hUKrkx_5Zi`miM0I zj_TBB>Aq9GC!qrD%8KTy(72nPt?s>n4)jT5nk<-83NL8FzcPMu?;oq44LvdW=f5vl z(z6lmtCd|Z*VG($M#Zz<9}4B@A|l_&X!(W@d(JOmt?b_%w;!2kK=u~VkGF`nlmV7o zN4lhasAQ~2F6ud|b7$3%b|1#Ue%RHjwVSUkyy;gLul~4ut6PV^-@AYB_a%oa?sYyf zkUqMyXwbd0S?$Ijt^0E6`?)iF5AVF@*_F~q)6j)Yx^A-TP~FY>^D+uz&cUp~BlUYv zwRE>j$>1<@5HK$cV4AsF8-Ea>GO)v$!(&36%`XFEug0F2X`Ib zwEf|u!>TEhq4KY>0~?=W*;_l#oR%L96?c(x4@rH^uXr~+m`5sDk_)pR%A_3b`ZGg^ zu7;{RrM;K4w$GM>dPo0=vdZNs*y>#GZ(X^_azCdt@NMu;FMJL1IkkMv*^!?}50#Is zoH1``qsOCCiF7e1J}GcBzlx%WP>Y{aQKk!W?} zt&yUC4CwFIX=IeV*p&U94|V==+_uH9(gw82Bwd-_=L0h|6k=>VqA$IAzOPY+W{0Gk zcW=4Ab^htEc5i&Prtj9wnG^HBoUnRtNFO=48g731Mpn166}JWk)=YVo_V*nxet34c z({;y~^Tn^y@OReDB`>V#U$nKyfWFAk_sd!BPAr#Z&tCM!kMVQ%9=g!(cxiL999lf8Iw(eck@C&0^&A-Us@N-mHHsp4KlqlzpJl^a0 zQ~3x&>XY|5tM>kMZjQG%9KRh^r3(-Fgr4hrx*!|!3|Zp}z$rTI++0V&j1n33NZ}Pl zv&E;!Bk0jnNy(_ek>_7@QaMEfc9$F{)4Ciq{Z!Mt*?^jb`5!FqNCQ z_KT7wWKHV^ou*#wQxo(b-lw0=zH@7KQFgfU_=h)RMcCTSr@D-E7R*?_=klYoa#3lJ znKpUBf{A-==2Tu_TGV@x+_|<(GHxrW|g~lw(*hN2zT%CXA>!TiViKF*!t8j~L zxm9`V?8M%>svEKm&$bLXI=-QQ`NnByBUHnYGUo`#McDSF0~6j)-F|u=^Wb-brWCAN zt!g3sX{G2%=ZDN@s++nw-+CsaQCaiT52k5`{W#>Snd|RAT;K2jp<6>fnltP#=}$KD zDn6S0p5q(C$e)ivr3Z|fo*(8j&zzV89;?C)i#la2UBup8-Zu*`fJ;Uf9Nf98tae?O zR_g{#DBnG8*cp56#a=tUn8H!M+*Ng}C~HvGzDWZ&91(w%)AQU4)-t9lEnM8A>xmlh z+qKfZj1HO4;1%PmcRgJ9O~*+C8gworyyf7M%M<=OwV7wGw}>eoc4|qlGjoSc^lWoX8{UJN*5GgkVgIV9^x2Os zZ9Qi~n}XBhZXN}OZo2$e{Jp0AH#^T)&dlwdOa9C|F}mkFOlP^mE}htA=j2aEgZDYL z_JMN4rEYx>(M|xgk-)}VcN=^utl>0%(!XPPMbT-` zc8+N4PuJGCPe1(nDc-9=n?}7^9}T;Er)#GbPmZhBO`Px3R&K1VE)0x0HFE0CM$+L5 z-^A8y`(0~OK=Q?8K;@QY4-j+%tHNN3UpNqHq94^xvF78roaOCz{biYjSC9zk>mW2#= zH8q9vIQHHT){@r#qP+IB@>{LE%kH|UawTI7~yYxW@P`G;=ean%)PTJf3vyu@eMD(J2fbO$%CFR zZcaY^Xw~2TJZVd8!xw$$=pMN`hK5*Bd`CI2cS~>H+=H!$lGfaqu<`2ooF(rTFPDu_ z{dwrGEgywWoazit7R;s6GS^(0daXVE%+K3{Mbrfcl->0&t`%&2xxp$vfAzts!KcoW zXGQl6QHL7B4C1>QOP4JJ4Tg{2Jt86rW*+drL2Q;?vZCL-Dy0!b_J^k(=~=RI=TIMB zHNZE!sHC#sQt!p~^sTdWfkXuth@_R6AhC(Fj?;b(ozI=q=O ze=dKvr+RI2)Wt>3dN1-on}!ws@XMU(qki;fH#-AAp@C(IH4C$rKA3)dXs&&e8Y$Y^ z?(ZGdN~pwNs-eEdZZz@9S6@{w-8TLk!(CVHkq+zUURpHM8@YO4Y&RQo&*WZMd@cV6 zU+?Oy&XHkXEOP%Mh4;5SpWmWON7o#5DW^TZ>(XQMH=bJG<9gxJ(wS@e?3O;TTq$`o zMcO-EJu}MAZ?1UKxo`=-dd9?SoWUo>r_`z|^bG?>*q&$h!a1=+eYbkAoO8^XH?8vC z;_3nG=O08%Ze1BV>x~E+vOd~pz4H}x$z{G+quIK8oj9vq2|mvE;I<&wa{Xd$)8|X7 z$FIMAXV|lmM@r8rw%NO_e45vPwvO;AN7A3V9dB@&o6U4<&Cr=s$k`L(vTE0&{BJ+G zIqhi9_NgCkp~E%c^vPuEgnx)m7cR>CVYY7kk;{)1myb?GR_jj{R`R>QK}o%H9FCd` z$8MIdWq@7R&5@!{v!0u}aLohf52u2qgO^>XS=s&i)@k44>5ue$xCa&izZ3q~#O8oZ#wrx@61otP%GE8~3#Ty7gaE$PKy;-nKPZT>O{X z$eI*XxFO^s)~|)S-Up6LO@NXWS?q+u%#cywBmR>i0Ol{E=|krNfU~ z`P@rdbi%J)e@4EM;cS+OSSyG5j_lk2S?iL^;x#HHkbQ92?2peh%w+W<&b49b*c$U^ zKdmk}-)Gm>9_PB24_dM*FKtGO^t1-;Cln5z(DCZUP>)$NyWV1DP{6*P%$mh*l1P`9 ztv_ye(>P)8oTBR`o;99lTg>TMJ6L(D__nglVZN^nWw)p$HQ~8e)~0VR-&}O+5TGu+ zk0;;xsSeq?p>1vNg+n(!?P)ZZJ8G-?1do?pp&tuponT*i%-(Qg=+il)Lk;(JUbARQ z=j5VkeNKJ(O*;P5R(szoH`seNE%aVZYjx+|owXq)I_Wr&y3=)fb7HpsS zlO#oagS>2A!m@kZYDejU^xoBz+dmz-b+DxOWnTkZiv>IPKR0$3`o7$Aac(a-+9zf^ zS(`U)`NKy8Mm(ClZ13}$iNfM;Q})itRJ4zL83j+SuNK1VmMdRQ`a1vpez#wxwZ=GG z0?k+UYI1bEc4M2BTgpAv@7X4YEAvZjKcps4OY0lo^75m*S@-S&_q;{VR$|jbdr@HR zuwm;yT{Cj_knokOk@BBwKi%|^fE0-IyW1D5e3kZ(>8)QbYxi~Gp6BM>j=QaDzHxjr z>e{`G>z{tsb?tS{gxbY$??siH@^E

pApKhL3ZXTEsvCcNP-R}nM%`bt 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�BU6_;X1RWAMY(9C%e=LaCLA<5+hJ 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 L|8MTV&x!v5cy+ui literal 0 HcmV?d00001 diff --git a/08/Researches/Tancredi_Di_Giovanni/img/thek1.jpg b/08/Researches/Tancredi_Di_Giovanni/img/thek1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9c8856f5565f0b1eacab96ec2a641740b3c0422a GIT binary patch literal 123702 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

IAoKERw- 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 ML6zQjNB^Gqe={R!RR910 literal 0 HcmV?d00001 diff --git a/08/Researches/Tancredi_Di_Giovanni/img/thek2.jpg b/08/Researches/Tancredi_Di_Giovanni/img/thek2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..528c1b17dcc960fa6a0f27c43ae24749c2b27fd4 GIT binary patch literal 113319 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 literal 0 HcmV?d00001 diff --git a/08/Researches/Tancredi_Di_Giovanni/index.html b/08/Researches/Tancredi_Di_Giovanni/index.html new file mode 100644 index 0000000..e87ac00 --- /dev/null +++ b/08/Researches/Tancredi_Di_Giovanni/index.html @@ -0,0 +1,53 @@ + + + + + + + + + map/map/map/map/map + + + + + + + +

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
Special Issue 8
+
+
+
+ + + + + + + + diff --git a/08/Researches/Tancredi_Di_Giovanni/leaf_elements.js b/08/Researches/Tancredi_Di_Giovanni/leaf_elements.js new file mode 100644 index 0000000..0d5cba2 --- /dev/null +++ b/08/Researches/Tancredi_Di_Giovanni/leaf_elements.js @@ -0,0 +1,323 @@ +var mainX = 40, + mainY = 220; + +//IDEOLOGY +var theme1 = L.divIcon({ className:"themes", html:'' }); + var stheme1 = L.divIcon({ className:"sthemes", html:'
CALIFORNIAN IDEOLOGY
' }); + var pdfIcon5 = L.divIcon({ className:"pdf", html:'' }); + var barca = L.divIcon({ className:"subsub", html:'
Barbrook and Cameron
' }); + var citgabo = L.divIcon({ className:"subsub", html:'
"Not to lie about the future is impossible and
one can lie about it at will" - Naum Gabo
' }); + var pdfIcon6 = L.divIcon({ className:"pdf", html:'' }); + var ftu = L.divIcon({ className:"subsub", html:'
Fred Turner
' }); + var countcu = L.divIcon({ className:"subsub", html:'
counter-culture
' }); + var cybcu = L.divIcon({ className:"subsub", html:'
cyber-culture
' }); + + + var stheme2 = L.divIcon({ className:"sthemes", html:'
MARXISM
' }); + var pdfIcon1 = L.divIcon({ className:"pdf", html:'' }); + var citrul = L.divIcon({ className:"subsub", html:'
"The ideas of the ruling class
are in very epoch the ruling ideas.."
' }); + var classes = L.divIcon({ className:"subsub", html:'
classes
' }); + var mareg = L.divIcon({ className:"subsub", html:'
Marx and Engels
' }); + var pdfIcon2 = L.divIcon({ className:"pdf", html:'' }); + var gram = L.divIcon({ className:"subsub", html:'
Antonio Gramsci
' }); + var pris = L.divIcon({ className:"subsub", html:'
Prison Notebooks
' }); + var subalt = L.divIcon({ className:"subsub", html:'
subaltern
' }); + + + var stheme3 = L.divIcon({ className:"sthemes", html:'
CULTURAL STUDIES
' }); + var pdfIcon3 = L.divIcon({ className:"pdf", html:'' }); + var stuha = L.divIcon({ className:"subsub", html:'
Stuart Hall
' }); + var comthe = L.divIcon({ className:"subsub", html:'
communication theory
' }); + var encod = L.divIcon({ className:"subsub", html:'
encoding
' }); + var decod = L.divIcon({ className:"subsub", html:'
decoding
' }); + var tv = L.divIcon({ className:"subsub", html:'
television
' }); + var pdfIcon4 = L.divIcon({ className:"pdf", html:'' }); + var dihe = L.divIcon({ className:"subsub", html:'
Dick Hebdige
' }); + var subcu = L.divIcon({ className:"subsub", html:'
subculture
' }); + var style = L.divIcon({ className:"subsub", html:'
style
' }); + var punk = L.divIcon({ className:"subsub", html:'
punk
' }); + + + var stheme4 = L.divIcon({ className:"sthemes", html:'
MEDIA THEORY
' }); + var pdfIcon8 = L.divIcon({ className:"pdf", html:'' }); + var marme = L.divIcon({ className:"subsub", html:'
Marshall McLuhan
' }); + var undme = L.divIcon({ className:"subsub", html:'
understanding media
' }); + var medme = L.divIcon({ className:"subsub", html:'
"the medium is the message"
' }); + var pdfIcon9 = L.divIcon({ className:"pdf", html:'' }); + var duke = L.divIcon({ className:"subsub", html:'
Durham and Kellnere
' }); + var keywo = L.divIcon({ className:"subsub", html:'
keywords
' }); + + + + var stheme5 = L.divIcon({ className:"sthemes", html:'
HEGEMONY
' }); + var pdfIcon7 = L.divIcon({ className:"pdf", html:'' }); + var chant = L.divIcon({ className:"subsub", html:'
Chantel Mouffe
' }); + var agon = L.divIcon({ className:"subsub", html:'
agonism
' }); + var artt = L.divIcon({ className:"subsub", html:'
art
' }) + var pspace = L.divIcon({ className:"subsub", html:'
public space
' }) + + + var video2 = L.divIcon({ className:"vid", html:'' }); + var slav = L.divIcon({ className:"subsub", html:'
Zlazloj Zlizlek
' }); + var andso = L.divIcon({ className:"subsub", html:'
"and so on and so on.."
' }); + var theyli = L.divIcon({ className:"subsub", html:'
They Live
' }); + + + + +var idX = mainX+100, + idY = mainY+100; +L.marker(new L.LatLng(idX, idY), {icon: theme1}).addTo(map); + L.marker(new L.LatLng(idX+25, idY+15), {icon: stheme1}).addTo(map); + L.marker(new L.LatLng(idX+35, idY+10), {icon: pdfIcon5}).addTo(map); + L.marker(new L.LatLng(idX+40, idY+15), {icon: barca}).addTo(map); + L.marker(new L.LatLng(idX+35, idY+30), {icon: citgabo}).addTo(map); + L.marker(new L.LatLng(idX+20, idY+35), {icon: pdfIcon6}).addTo(map); + L.marker(new L.LatLng(idX+13, idY+25), {icon: ftu}).addTo(map); + L.marker(new L.LatLng(idX+15, idY+55), {icon: countcu}).addTo(map); + L.marker(new L.LatLng(idX+10, idY+40), {icon: cybcu}).addTo(map); + + L.marker(new L.LatLng(idX-4, idY+43), {icon: stheme2}).addTo(map); + L.marker(new L.LatLng(idX-15, idY+50), {icon: pdfIcon1}).addTo(map); + L.marker(new L.LatLng(idX-25, idY+60), {icon: citrul}).addTo(map); + L.marker(new L.LatLng(idX-3, idY+33), {icon: classes}).addTo(map); + L.marker(new L.LatLng(idX-12, idY+39), {icon: mareg}).addTo(map); + L.marker(new L.LatLng(idX+3, idY+60), {icon: pdfIcon2}).addTo(map); + L.marker(new L.LatLng(idX+3, idY+45), {icon: gram}).addTo(map); + L.marker(new L.LatLng(idX+8, idY+65), {icon: pris}).addTo(map); + L.marker(new L.LatLng(idX-5, idY+70), {icon: subalt}).addTo(map); + + L.marker(new L.LatLng(idX-17, idY-28), {icon: stheme3}).addTo(map); + L.marker(new L.LatLng(idX-23, idY-10), {icon: pdfIcon3}).addTo(map); + L.marker(new L.LatLng(idX-33, idY-3), {icon: stuha}).addTo(map); + L.marker(new L.LatLng(idX-13, idY-10), {icon: comthe}).addTo(map); + L.marker(new L.LatLng(idX-23, idY-5), {icon: encod}).addTo(map); + L.marker(new L.LatLng(idX-30, idY-20), {icon: decod}).addTo(map); + L.marker(new L.LatLng(idX-40, idY-15), {icon: tv}).addTo(map); + L.marker(new L.LatLng(idX-19,idY-45), {icon: pdfIcon4}).addTo(map); + L.marker(new L.LatLng(idX-10,idY-53), {icon: dihe}).addTo(map); + L.marker(new L.LatLng(idX-27,idY-35), {icon: subcu}).addTo(map); + L.marker(new L.LatLng(idX-35,idY-45), {icon: style}).addTo(map); + L.marker(new L.LatLng(idX-25,idY-60), {icon: punk}).addTo(map); + + L.marker(new L.LatLng(idX+10, idY-45), {icon: stheme4}).addTo(map); + L.marker(new L.LatLng(idX+25, idY-50), {icon: pdfIcon8}).addTo(map); + L.marker(new L.LatLng(idX+30, idY-60), {icon: marme}).addTo(map); + L.marker(new L.LatLng(idX+25, idY-40), {icon: undme}).addTo(map); + L.marker(new L.LatLng(idX+10, idY-75), {icon: medme}).addTo(map); + L.marker(new L.LatLng(idX, idY-30), {icon: pdfIcon9}).addTo(map); + L.marker(new L.LatLng(idX, idY-45), {icon: duke}).addTo(map); + L.marker(new L.LatLng(idX-10, idY-20), {icon: keywo}).addTo(map); + + L.marker(new L.LatLng(idX-30, idY+20), {icon: stheme5}).addTo(map); + L.marker(new L.LatLng(idX-20, idY+25), {icon: pdfIcon7}).addTo(map); + L.marker(new L.LatLng(idX-15, idY+15), {icon: chant}).addTo(map); + L.marker(new L.LatLng(idX-23, idY+40), {icon: agon}).addTo(map); + L.marker(new L.LatLng(idX-40, idY+25), {icon: artt}).addTo(map); + L.marker(new L.LatLng(idX-20, idY+10), {icon: pspace}).addTo(map); + + + L.marker(new L.LatLng(idX+24, idY-17), {icon: video2}).addTo(map); + L.marker(new L.LatLng(idX+39, idY-20), {icon: slav}).addTo(map); + L.marker(new L.LatLng(idX+6, idY+12), {icon: andso}).addTo(map); + L.marker(new L.LatLng(idX+1, idY-17), {icon: theyli}).addTo(map); + +var ontmyth = L.divIcon({ className:"themes", html:'
ONTOLOGY AND MYTHOLOGY
' }); +var testo7 = L.divIcon({ className:"text", html:"

Infrastructures are one of the most hiding aspects of the architectures of
our society. Their hidden/hiding nature create a magical aura around them. A double
disappearance, from the outside and in the inside, which in part reflect the
debate around the 'black-box' and transforming the concept of infrastructure in
the unknown object hidden inside the box which is a black-box in itself.
Autonomy becomes the illusion made possible by a second layer (or infinite
layering) posed on a physical object, by the tangled complexity of a circuit or
network which forces us to reinvent those concepts in mythological ways.

The server we set up was just that: a black mythological object capable of
hiding worlds, both its physical content, a raspberry pi, and its software.
At the same time, with its mass of tangled cables, it is an object to hide in a
corner of a house. I still forget that have it there, attached to my modem, and
at the same time every day I connect to it through my computer.

"}); +L.marker(new L.LatLng(idX+150, idY-80), {icon: testo7}).addTo(map); +L.marker(new L.LatLng(idX+155, idY-85), {icon: ontmyth}).addTo(map); + +var countid = L.divIcon({ className:"themes", html:'
COUNTER-IDEOLOGY
' }); +var testo8 = L.divIcon({ className:"text", html:"

Experiencing music is an extremely intimate act because the sense of distance,
typical of visual art, is collapsed in an immediate sense of embodiment.
Thinking about the relation between autonomy and contingency as an interplay
where the subject is posed in a 'liminal' zone opens a new perspective.
The subject, embodying the music, has the power to set their own experience
deciding where to put their boundaries. Subjectivity becomes the meter to
define freedom, against a pre-determinate thought and a 0-1 solution.

In the computer world subjectivity works in the same way embodying the whole
conception of the hardware-software dualism and reflecting its own condition of
'being a mind inside a body' in the software. The power of autonomy and
contingency as an interplay enhancing freedom becomes a way to re-read the
meaning of setting up a server and being autonomous in the web. A way to shape
our subjectivity in a world that reflects our inner being and gives us the
possibility to create a parallel place where our intimacy is projected,
represented and owned.

"}); +L.marker(new L.LatLng(idX+30, idY+140), {icon: testo8}).addTo(map); +L.marker(new L.LatLng(idX+35, idY+135), {icon: countid}).addTo(map); + + +//MAPPING +var theme8 = L.divIcon({ className:"themes", html:'
MAPPING AND ABSTRACTIONS
' }); + var mappa = L.divIcon({ html:'' }); + var mappa2 = L.divIcon({ html:''}); + var vis1 = L.divIcon({ className:"vis", html:'' }); + var vis2 = L.divIcon({ className:"vis", html:'' }); + var vis3 = L.divIcon({ className:"vis", html:'' }); + var vis5 = L.divIcon({ className:"visb", html:'' }); + var vis6 = L.divIcon({ className:"visb", html:'' }); + var vis7 = L.divIcon({ className:"visb", html:'' }); + var vis8 = L.divIcon({ className:"visb", html:'' }); + var vis9 = L.divIcon({ className:"visb", html:'' }); + var vis10 = L.divIcon({ className:"visb", html:'' }); + var vis11 = L.divIcon({ className:"visb", html:'' }); + var vis13 = L.divIcon({ className:"visb", html:'' }); + +var mapX = mainX-120, + mapY = mainY+150; +L.marker(new L.LatLng(mapX, mapY-40), {icon: theme8}).addTo(map); + L.marker(new L.LatLng(mapX+45, mapY-30), {icon: mappa}).addTo(map); + L.marker(new L.LatLng(mapX+45, mapY+10), {icon: mappa2}).addTo(map); + +var visX = mapX-24, + visY = mapY-100; + L.marker(new L.LatLng(visX, visY+8), {icon: vis1}).addTo(map); + L.marker(new L.LatLng(visX-23, visY+8), {icon: vis2}).addTo(map); + L.marker(new L.LatLng(visX-46, visY+8), {icon: vis3}).addTo(map); + L.marker(new L.LatLng(visX-17, visY+33), {icon: vis5}).addTo(map); + L.marker(new L.LatLng(visX, visY+80), {icon: vis6}).addTo(map); + L.marker(new L.LatLng(visX-23, visY+80), {icon: vis7}).addTo(map); + L.marker(new L.LatLng(visX-46, visY+80), {icon: vis8}).addTo(map); + L.marker(new L.LatLng(visX-18, visY+105), {icon: vis9}).addTo(map); + L.marker(new L.LatLng(visX-2, visY+150), {icon: vis10}).addTo(map); + L.marker(new L.LatLng(visX-32, visY+150), {icon: vis11}).addTo(map); + L.marker(new L.LatLng(visX-18, visY+190), {icon: vis13}).addTo(map); + +var theme9 = L.divIcon({ className:"themes", html:'
FROM MAPS TO ABSTRACTIONS
' }); +var testo9 = L.divIcon({ className:"text", html:"

Experiencing music is an extremely intimate act because the sense of distance,
typical of visual art, is collapsed in an immediate sense of embodiment.
Thinking about the relation between autonomy and contingency as an interplay
where the subject is posed in a 'liminal' zone opens a new perspective.
The subject, embodying the music, has the power to set their own experience
deciding where to put their boundaries. Subjectivity becomes the meter to
define freedom, against a pre-determinate thought and a 0-1 solution.

In the computer world subjectivity works in the same way embodying the whole
conception of the hardware-software dualism and reflecting its own condition of
'being a mind inside a body' in the software. The power of autonomy and
contingency as an interplay enhancing freedom becomes a way to re-read the
meaning of setting up a server and being autonomous in the web. A way to shape
our subjectivity in a world that reflects our inner being and gives us the
possibility to create a parallel place where our intimacy is projected,
represented and owned.

"}); +L.marker(new L.LatLng(visX+100, visY+300), {icon: testo9}).addTo(map); +L.marker(new L.LatLng(visX+105, visY+295), {icon: theme9}).addTo(map); + + +//AUTONOMY AND CONTINGENCY +var autX = mainX + 10, + autY = mainY - 510; +var theme2 = L.divIcon({ className:"themes", html:'
AUTONOMY AND CONTINGENCY
' }); + var theme2_music = L.divIcon({ className:"sthemes", html:'
MUSIC
' }); + var pdf_kramer = L.divIcon({ className:"pdf", html:'' }); + var lawkr = L.divIcon({ className:"subsub", html:'
Lawrence Kramer
' }); + var musmin = L.divIcon({ className:"subsub", html:'
musical meaning
' }); + var clas = L.divIcon({ className:"subsub", html:'
classical
' }); + var nois = L.divIcon({ className:"subsub", html:'
noise
' }); + var moder = L.divIcon({ className:"subsub", html:'
modern
' }); + var regfe = L.divIcon({ className:"subsub", html:'' }); + var shostak = L.divIcon({ className:"vid", html:'' }); + var beth = L.divIcon({ className:"vid", html:'' }); + var noise = L.divIcon({ className:"vid", html:'' }); + var theme2_infrastr = L.divIcon({ className:"sthemes", html:'
INFRASTRUCTURES
' }); + var pdf_larkin = L.divIcon({ className:"pdf", html:'' }); + var brila = L.divIcon({ className:"subsub", html:'
Brian Larkin
' }); + var polipoet = L.divIcon({ className:"subsub", html:'
politics and poetics
' }); + var actnet = L.divIcon({ className:"subsub", html:'
actor-network theory
' }); + var img_thek1 = L.divIcon({ className:"visb", html:'' }); + var img_thek2 = L.divIcon({ className:"visb", html:'' }); + var paute = L.divIcon({ className:"subsub", html:'
Paul Thek
' }); + var lco = L.divIcon({ className:"subsub", html:'
L-column
' }); + var tecre = L.divIcon({ className:"subsub", html:'
technological reliquaries
' }); + var theme2_taz = L.divIcon({ className:"sthemes", html:'
TEMPORARY
AUTONOMOUS
ZONE
' }); + var pdf_taz = L.divIcon({ className:"pdf", html:'' }); + var hacbe = L.divIcon({ className:"subsub", html:'
Hackim Bey
' }); + var mapp = L.divIcon({ className:"subsub", html:'
map
' }); + var ster = L.divIcon({ className:"subsub", html:'
"Sterling - islands in the net"
' }); + var disap = L.divIcon({ className:"subsub", html:'
disappearence
' }); + var theme2_postaut = L.divIcon({ className:"sthemes", html:'
POST-AUTONOMIA
' }); + +L.marker(new L.LatLng(autX, autY), {icon: theme2}).addTo(map); + L.marker(new L.LatLng(autX+25, autY), {icon: theme2_music}).addTo(map); + L.marker(new L.LatLng(autX+15, autY-10), {icon: pdf_kramer}).addTo(map); + L.marker(new L.LatLng(autX+10, autY+5), {icon: lawkr}).addTo(map); + L.marker(new L.LatLng(autX+5, autY-20), {icon: musmin}).addTo(map); + L.marker(new L.LatLng(autX+50, autY+20), {icon: clas}).addTo(map); + L.marker(new L.LatLng(autX+20, autY-60), {icon: nois}).addTo(map); + L.marker(new L.LatLng(autX+60, autY-30), {icon: moder}).addTo(map); + L.marker(new L.LatLng(autX+10, autY-55), {icon: regfe}).addTo(map); + L.marker(new L.LatLng(autX+55, autY-40), {icon: shostak}).addTo(map); + L.marker(new L.LatLng(autX+55, autY-10), {icon: beth}).addTo(map); + L.marker(new L.LatLng(autX+30, autY-40), {icon: noise}).addTo(map); + + L.marker(new L.LatLng(autX+15, autY+33), {icon: theme2_infrastr}).addTo(map); + L.marker(new L.LatLng(autX+25, autY+30), {icon: pdf_larkin}).addTo(map); + L.marker(new L.LatLng(autX+30, autY+30), {icon: brila}).addTo(map); + L.marker(new L.LatLng(autX+25, autY+40), {icon: polipoet}).addTo(map); + L.marker(new L.LatLng(autX+7, autY+36), {icon: actnet}).addTo(map); + + L.marker(new L.LatLng(autX+25, autY+70), {icon: img_thek1}).addTo(map); + L.marker(new L.LatLng(autX+25, autY+110), {icon: img_thek2}).addTo(map); + L.marker(new L.LatLng(autX+25, autY+150), {icon: paute}).addTo(map); + L.marker(new L.LatLng(autX+30, autY+70), {icon: lco}).addTo(map); + L.marker(new L.LatLng(autX-5, autY+110), {icon: tecre}).addTo(map); + + + L.marker(new L.LatLng(autX-20, autY+10), {icon: theme2_taz}).addTo(map); + L.marker(new L.LatLng(autX-20, autY), {icon: pdf_taz}).addTo(map); + L.marker(new L.LatLng(autX-15, autY-5), {icon: hacbe}).addTo(map); + L.marker(new L.LatLng(autX-30, autY-8), {icon: mapp}).addTo(map); + L.marker(new L.LatLng(autX-40, autY+15), {icon: ster}).addTo(map); + L.marker(new L.LatLng(autX-25, autY+40), {icon: disap}).addTo(map); + + L.marker(new L.LatLng(autX-10, autY-45), {icon: theme2_postaut}).addTo(map); + + +var theme7 = L.divIcon({ className:"themes", html:'
INFRASTRUCTOUR
' }); +var testo = L.divIcon({ className:"text", html:"

So, we were riding our bikes to my place, the last one of the Infrastructour.
Pedro and Rita couldn't self-host their servers and their house is near mine.
The idea was to set them up all together, connected to my router.

Once inside, it was easy to find my router; too easy. From the ground floor,
exactly on the left side of the entrance, one can find the ethernet plug; from
there I installed a long cable which runs along the side of the first flight of
stairs, arriving at the first floor where it enters through the door of my
apartment. The ethernet cable again sneaks snakily up the second flight of
stairs arriving on the second floor, passing the corridor and entering into the
main room where it finishes its two-floor journey to rest in the socket of my
router. We all followed this cable until its end and we started the process of
installing the servers. While Rita and I were using a Raspberry Pi as hardware
for our server, Pedro was using another machine labelled TIZEN SUNXI ALLWINNER
A20. He didn't have the possibility to set it up through SSH and he needed a
screen to connect his hardware via an HDMI cable, plus a mouse and a keyboard.
Fortunately, I had all he needed and we were positive on the success of these
last server configurations because my router was the same as Simon's, so we
already knew how to set it up and manage the port forwarding process. However,
after a while we noticed Rita's machine wasn't recognised on the home page of
the router (192.168.1.1), where you can check the connected devices and their
respective IPs. The physical router went from being a nice looking and clean
object, with a cable for the power and the snakey Ethernet cable, to resembling
a nest of connected objects with multiple lights and colors. I had a power
strip because I knew there was only one plug, and we needed another three to
supply the power to our machines. My idea was to hide that nest in a box but
actually it is still there. To find out what was the problem with Rita's server
we entered inside the tangled object with our eyes and our hands, and after we
checked the connections we realized two of the five plugs for Ethernet cables
(one was already taken by the two-storey long cable which enable the connection
in the web) were labeled as TV while the other two where labeled as Internet,
and that meant only two of the three servers could have been set.

Rita had to give up having her server hosted at my place and decided to set it
up at Artemis' instead. Apart from this problem related to the difference
between routers, the day ended well. Some went home, others continued the tour
in a pub with a beer, but this experience with technical problems and new
techie terms was the beginning of an ongoing process in discovering the
material and the digital aspects of a network that comprises hardware, software
and physical dependencies. We started to understand how difficult it is to
comprehend the complexity of it all. Even if the intention is to have something
independent, we understood that independence requires a knowledge which is both
technical and situated. In such circumstances one needs a teacher. There is not
only the knowledge of how it works, but also the practical knowledge of how
things work in particular circumstances. This was the starting point for my
thoughts on autonomy and contingency. The idea of having your autonomy on the
web – in our case through a server which is 'ours' – is always related to these
particular conditions and to the fact that you need to operate hardware and
software that will facilitate it... one has to balance the two different worlds
(autonomy vs contingency) and yet the notion of autonomy is based on both;
knowing terms and physical structures, protocols and how to apply them by
opening ports.

We can find a similarity between hosting a server and being hosts in our house;
just as there are protocols in software there are protocols within homes, to
open ports is to open doors. If one is only a client, one is homeless, or a
guest in someone else's house; on the other hand, if one has their own server,
one becomes a host. Things that are normally separated come together.
The distances collapse. This process is a passage from client to client-server.

"}); +L.marker(new L.LatLng(mainX+80, mainY-250), {icon: testo}).addTo(map); +L.marker(new L.LatLng(mainX+85, mainY-255), {icon: theme7}).addTo(map); + +var theme5 = L.divIcon({ className:"themes", html:'
MAGICAL INFRASTRUCTURES
' }); +var testo3 = L.divIcon({ className:"text", html:"

Infrastructures are one of the most hiding aspects of the architectures of
our society. Their hidden/hiding nature create a magical aura around them. A double
disappearance, from the outside and in the inside, which in part reflect the
debate around the 'black-box' and transforming the concept of infrastructure in
the unknown object hidden inside the box which is a black-box in itself.
Autonomy becomes the illusion made possible by a second layer (or infinite
layering) posed on a physical object, by the tangled complexity of a circuit or
network which forces us to reinvent those concepts in mythological ways.

The server we set up was just that: a black mythological object capable of
hiding worlds, both its physical content, a raspberry pi, and its software.
At the same time, with its mass of tangled cables, it is an object to hide in a
corner of a house. I still forget that have it there, attached to my modem, and
at the same time every day I connect to it through my computer.

"}); +L.marker(new L.LatLng(mainX+230, mainY-550), {icon: testo3}).addTo(map); +L.marker(new L.LatLng(mainX+235, mainY-555), {icon: theme5}).addTo(map); + +var theme6 = L.divIcon({ className:"themes", html:'
MEANING IN MUSIC
' }); +var testo4 = L.divIcon({ className:"text", html:"

Experiencing music is an extremely intimate act because the sense of distance,
typical of visual art, is collapsed in an immediate sense of embodiment.
Thinking about the relation between autonomy and contingency as an interplay
where the subject is posed in a 'liminal' zone opens a new perspective.
The subject, embodying the music, has the power to set their own experience
deciding where to put their boundaries. Subjectivity becomes the meter to
define freedom, against a pre-determinate thought and a 0-1 solution.

In the computer world subjectivity works in the same way embodying the whole
conception of the hardware-software dualism and reflecting its own condition of
'being a mind inside a body' in the software. The power of autonomy and
contingency as an interplay enhancing freedom becomes a way to re-read the
meaning of setting up a server and being autonomous in the web. A way to shape
our subjectivity in a world that reflects our inner being and gives us the
possibility to create a parallel place where our intimacy is projected,
represented and owned.

"}); +L.marker(new L.LatLng(mainX+140, mainY-800), {icon: testo4}).addTo(map); +L.marker(new L.LatLng(mainX+145, mainY-805), {icon: theme6}).addTo(map); + + + + + +// SERVER +var servX = mainX-200, + servY = mainY-400; +var serverthem = L.divIcon({ className:"themes", html:'
SERVER
' }); +var boatr = L.divIcon({ className:"vid", html:'' }); +var embod = L.divIcon({ className:"vid", html:'' }); + var radnet = L.divIcon({ className:"subsub", html:'
Radical Networks 2018
' }); + var atrans = L.divIcon({ className:"subsub", html:'
a transmaterial body
' }); + var boattr = L.divIcon({ className:"subsub", html:'
boattr
' }); + var techdict = L.divIcon({ className:"sthemes", html:'' }); + +L.marker(new L.LatLng(servX, servY), {icon: serverthem}).addTo(map); +L.marker(new L.LatLng(servX+30, servY-40), {icon: boatr}).addTo(map); +L.marker(new L.LatLng(servX+30, servY-10), {icon: embod}).addTo(map); +L.marker(new L.LatLng(servX+40, servY), {icon: radnet}).addTo(map); +L.marker(new L.LatLng(servX, servY-45), {icon: atrans}).addTo(map); +L.marker(new L.LatLng(servX+40, servY-60), {icon: boattr}).addTo(map); +L.marker(new L.LatLng(servX-30, servY-10), {icon: techdict}).addTo(map); + +var theme3 = L.divIcon({ className:"themes", html:'
SETTING UP A SERVER
' }); +var testo1 = L.divIcon({ className:"text", html:"

Setting up a server is a quick and smart way to gain a certain level of
autonomy in the web. Quick because it gives you the possibility to own the
place in which your projects are hosted. Smart because it opens the doors to
acquire knowledges on how the web works. This DYI attitude reflects the hacker
mindset of being independent and autonomous questioning the role of mainstream
and mass-media circuits, while revealing a practical alternative. Learning
computer networks is not only a technical exercise but actually can be
considered as a political act questioning the role of internet in our society
and the ideologies involved in develop the computer itself. It shows how the
building blocks of the web and computer networks are based on physical objects
disrupting the idea of internet as a nowhere cloud in the air.

However setting up a server require technical skills in both hardware and
software's side plus a knowledge of how the web works. Without those expertise
it is very difficult to proceed alone. Sharing this knowledge and skills, and
make a community to provide it, become an essential point in building autonomy,
but an autonomy built on dependencies.

"}); +L.marker(new L.LatLng(servX+50, servY-250), {icon: testo1}).addTo(map); +L.marker(new L.LatLng(servX+55, servY-255), {icon: theme3}).addTo(map); + +var theme4 = L.divIcon({ className:"themes", html:'
SERVER/BODY/HOME
' }); +var testo2 = L.divIcon({ className:"text", html:"

When your home becomes your server, you realize that hosting people in real
life is the same as allowing people to enter inside your server. Open the door
becomes to open your HTTP ports, and rotocols are a series of allowed
behaviours, and of course, as the owner, you can do whatever you want in your
house. When someone is weaving in internet, is connecting as a client to
someone else’s house, but if you own a server you are both a client and a host.
The relation existing between you and your home allows to have a fixed place,
gaining an higher level of autonomy and the possibility to invite people
at yours.

But a server is not always an object in a fixed space and more than one person
needed a moving one. Who for the necessity to live on a boat, who to question
the relation between a person and his/her body, showing how a server can move
with you. Those examples are fascinating not only as they question the standard
fixed location of the server, but also because they are strictly related to an
inquiry on the meaning of home, as a moving house, and subjectivity, as an
embodied one.

"}); +L.marker(new L.LatLng(servX-60, servY-60), {icon: testo2}).addTo(map); +L.marker(new L.LatLng(servX-55, servY-65), {icon: theme4}).addTo(map); + +var intro = L.divIcon({ className:"themes", html:'
INTRODUCTION
' }); +var textintro = L.divIcon({ className:"text", html:"

The Internet is not any more the wild wide web meant to improve our lives and
increase democratic ideas but has become a worldwide weapon of control and
exploitation. Nowadays the hegemonic centralization is ruling on several layers.
When surfing was a free flow of motion, a matter of following rings made of links
and explore unknown islands, the selection of Google search based on sponsored and
indexed lands, replaced a shared equality with a mainstream selection of contents
making possible the rise of a top class web. Where web's communication was an
astonishing step in the cyberspace capable to connect the globe in shared-time and
an experience to shape through communities, Facebook and its empire of
communication systems is not only killing the value of the communal experience,
enclosing users in a prison called profile, but also stealing information to those
users by presenting them as second class data called metadata. Stolen data which
are sold and used strategically to program behaviour while being hidden to the
public and the academic world researches.
This narrative of the transformation of the web, from a place of freedom to one of
control, resumed in the nowadays role of centralizing corporations and the raise
of a metadata society, is a debate existing before internet itslef and reflecting
the more general issues of the computer world and the machine. This short and
oversimplification actually is far well wider and radiates its querying from
technical to philosophical aspects, from social to existential experiences,
without never forgetting the political view.

How can we escape from systematic control?

How can we build our ideal experience and media?

This way of thinking is intrinsic to the Experimental Publishing course at Piet
Zwart Institute, and the way of exploring solutions and alternatives floats from a
pure interest in experimentation to a more politically involved counter-reaction.
The hacker attitude become the way, and how computers and their software has been
shaped, with the struggles and fights of the early pioneers, became the lens
through which depict today's issues and examples of how to acquire the skills to
reinvent a vanishing future.
Actually the alternative dwells in the potential of the computer itself, a power
that has been hidden during building the blocks of its structure. As Ted Nelsons
points in all his career, the process of building technologies is a political one
made of fights and interests, and not a 'natural' process. What we
see of a computer, its hardware and software, are products of individuals which
developed projects based on certain ideologies. I'll talk later about ideology
but basically this means two things: on the one hand everyone can challenge the
existing structures of power because they are not the only one possible (rather
being usually mediated by a capitalist interest in profit and exclusion). On the other
hand ideally everyone, as individuals capable of critical thought, can build their
own world against the actual shared feeling of impossibility to react, freezing
thought in a constant nihilism and resumed both in Mark Fisher's life experience
and thought, with his book 'Capitalist Realism' (2011) and his recent suicide in
2017.
The economical interest behind the computer's world putted the inexpert user as
meter of judgment and means of profit imposing a well looking interface while
hiding and closing the potential of this media in a black box. This political
process of programmed disappearance has facilitate the immediate usage but raised
the standard computer's interface as the only way possible, banning the knowledge
of the code and erasing the idea of being able to develop another way.
What hacker mindset helps us to see, is not a mythological world fighting between
good or bad behaviours, usually idealized in the meaning of the hacker itself
within a science-fiction narrative made of white and black hats, but a world made
of physical structures and infrastructures made by people and their communities
sharing knowledges. Experiencing the 'develop your way' is intended as an
experimentation free from profit, an interest in challenge yourself from a point
of view where the possibilities are open and everything thinkable becomes
interesting. Behind this view there is a deep and disrupting idea embodying the
power to react in the enthusiasm in experimentation, capable to breaks the black
walls of the box, and finding an object which contains something inherently
different from the Pandora's box.

What is the content of this box?

The possibility to create a world not yet written and within reach. The exploding
actuality of the dreamed post-mass-media era where the hegemonic power comes from
the disruption of illusions and not vice-versa.
A reality that is being shaped in the Experimental Publishing course at Piet Zwart
Institute and surely, if not as a full program, in many other approaches within
communities and in the academic world.

"}); +L.marker(new L.LatLng(servX+150, servY-530), {icon: textintro}).addTo(map); +L.marker(new L.LatLng(servX+155, servY-535), {icon: intro}).addTo(map); + + +var nuX = mainX + 80, + nuY = mainY - 650; + +var emptsp = L.divIcon({ className:"themes", html:'
EMPTY SPACE AND NODES
' }); +var textemptsp = L.divIcon({ className:"text", html:"

Experiencing music is an extremely intimate act because the sense of distance,
typical of visual art, is collapsed in an immediate sense of embodiment.
Thinking about the relation between autonomy and contingency as an interplay
where the subject is posed in a 'liminal' zone opens a new perspective.
The subject, embodying the music, has the power to set their own experience
deciding where to put their boundaries. Subjectivity becomes the meter to
define freedom, against a pre-determinate thought and a 0-1 solution.

In the computer world subjectivity works in the same way embodying the whole
conception of the hardware-software dualism and reflecting its own condition of
'being a mind inside a body' in the software. The power of autonomy and
contingency as an interplay enhancing freedom becomes a way to re-read the
meaning of setting up a server and being autonomous in the web. A way to shape
our subjectivity in a world that reflects our inner being and gives us the
possibility to create a parallel place where our intimacy is projected,
represented and owned.

"}); +L.marker(new L.LatLng(nuX-380, nuY+480), {icon: emptsp}).addTo(map); +L.marker(new L.LatLng(nuX-385, nuY+485), {icon: textemptsp}).addTo(map); + +var scalay = L.divIcon({ className:"themes", html:'
SCALE AND LAYERS
' }); +var textscalay = L.divIcon({ className:"text", html:"

Experiencing music is an extremely intimate act because the sense of distance,
typical of visual art, is collapsed in an immediate sense of embodiment.
Thinking about the relation between autonomy and contingency as an interplay
where the subject is posed in a 'liminal' zone opens a new perspective.
The subject, embodying the music, has the power to set their own experience
deciding where to put their boundaries. Subjectivity becomes the meter to
define freedom, against a pre-determinate thought and a 0-1 solution.

In the computer world subjectivity works in the same way embodying the whole
conception of the hardware-software dualism and reflecting its own condition of
'being a mind inside a body' in the software. The power of autonomy and
contingency as an interplay enhancing freedom becomes a way to re-read the
meaning of setting up a server and being autonomous in the web. A way to shape
our subjectivity in a world that reflects our inner being and gives us the
possibility to create a parallel place where our intimacy is projected,
represented and owned.

"}); +L.marker(new L.LatLng(nuX-350, nuY+800), {icon: scalay}).addTo(map); +L.marker(new L.LatLng(nuX-355, nuY+805), {icon: textscalay}).addTo(map); + +var linkpara = L.divIcon({ className:"themes", html:'
LINKS AND PARANODES
' }); +var textlinkpara = L.divIcon({ className:"text", html:"

Experiencing music is an extremely intimate act because the sense of distance,
typical of visual art, is collapsed in an immediate sense of embodiment.
Thinking about the relation between autonomy and contingency as an interplay
where the subject is posed in a 'liminal' zone opens a new perspective.
The subject, embodying the music, has the power to set their own experience
deciding where to put their boundaries. Subjectivity becomes the meter to
define freedom, against a pre-determinate thought and a 0-1 solution.

In the computer world subjectivity works in the same way embodying the whole
conception of the hardware-software dualism and reflecting its own condition of
'being a mind inside a body' in the software. The power of autonomy and
contingency as an interplay enhancing freedom becomes a way to re-read the
meaning of setting up a server and being autonomous in the web. A way to shape
our subjectivity in a world that reflects our inner being and gives us the
possibility to create a parallel place where our intimacy is projected,
represented and owned.

"}); +L.marker(new L.LatLng(nuX+200, nuY+350), {icon: linkpara}).addTo(map); +L.marker(new L.LatLng(nuX+195, nuY+355), {icon: textlinkpara}).addTo(map); + + + + + + diff --git a/08/Researches/Tancredi_Di_Giovanni/leaf_structure.js b/08/Researches/Tancredi_Di_Giovanni/leaf_structure.js new file mode 100644 index 0000000..4d0903e --- /dev/null +++ b/08/Researches/Tancredi_Di_Giovanni/leaf_structure.js @@ -0,0 +1,391 @@ +//map settings +var map = L.map('map', { crs: L.CRS.Simple }); +map.fitBounds( [[0,0], [1000,1000]] ); +map.setView( [0, 0], 0); + +var hash = new L.Hash(map); + +// var popup = L.popup(); + +// function onMapClick(e) { +// popup +// .setLatLng(e.latlng) +// .setContent(e.latlng.toString()) +// .openOn(map); +// } + +// map.on('click', onMapClick); + +//control size for each zoom's layer +var ss = document.getElementsByClassName("subsub"); +var texts = document.getElementsByClassName("text"); +var fonts = document.getElementsByClassName("themes"); +var sfonts = document.getElementsByClassName("sthemes"); +var pdfs = document.getElementsByName("pdf") +var videos = document.getElementsByName("yt"); +var vis = document.getElementsByName("vis"); +var visb = document.getElementsByName("visb"); +var xmap = document.getElementsByName("xpubmap"); + +function layer1() { + for (var i = 0; i < texts.length; i++) { //text + var element = texts[i]; + element.style.fontSize = "3px"; + } + + for (var i = 0; i < fonts.length; i++) { //themes + var element = fonts[i]; + element.style.fontSize = "5px"; + } + + for (var i = 0; i < sfonts.length; i++) { //subthemes + var element = sfonts[i]; + element.style.fontSize = "3px"; + } + + for (var i = 0; i < ss.length; i++) { //subsub + var element = ss[i]; + element.style.fontSize = "1px"; + } + + for (var i = 0; i < videos.length; i++) { //videos + var element = videos[i]; + element.width = "20"; + element.height = "15"; + } + + for (var i = 0; i < pdfs.length; i++) { //pdfs + var element = pdfs[i]; + element.width = "7"; + element.height = "9"; + } + + for (var i = 0; i < vis.length; i++) { //pdfs + var element = vis[i]; + element.width = "15"; + element.height = "11"; + } + + for (var i = 0; i < visb.length; i++) { //pdfs + var element = visb[i]; + element.width = "28"; + element.height = "20"; + } + + for (var i = 0; i < xmap.length; i++) { //videos + var element = xmap[i]; + element.width = "30"; + element.height = "25"; + } + +} + +function layer2() { + for (var i = 0; i < texts.length; i++) { //text + var element = texts[i]; + element.style.fontSize = "5px"; + } + + for (var i = 0; i < fonts.length; i++) { //themes + var element = fonts[i]; + element.style.fontSize = "13px"; + } + + for (var i = 0; i < sfonts.length; i++) { //subthemes + var element = sfonts[i]; + element.style.fontSize = "6px"; + } + + for (var i = 0; i < ss.length; i++) { //subsub + var element = ss[i]; + element.style.fontSize = "2px"; + } + + for (var i = 0; i < videos.length; i++) { //videos + var element = videos[i]; + element.width = "40"; + element.height = "30"; + } + + for (var i = 0; i < pdfs.length; i++) { //pdfs + var element = pdfs[i]; + element.width = "10"; + element.height = "14"; + } + + for (var i = 0; i < vis.length; i++) { //img small + var element = vis[i]; + element.width = "28"; + element.height = "20"; + } + + for (var i = 0; i < visb.length; i++) { //img big + var element = visb[i]; + element.width = "56"; + element.height = "40"; + } + + for (var i = 0; i < xmap.length; i++) { //maps + var element = xmap[i]; + element.width = "60"; + element.height = "55"; + } + +} + +function layer3() { + for (var i = 0; i < texts.length; i++) { //text + var element = texts[i]; + element.style.fontSize = "11px"; + } + + for (var i = 0; i < fonts.length; i++) { //themes + var element = fonts[i]; + element.style.fontSize = "20px"; + } + + for (var i = 0; i < sfonts.length; i++) { //subthemes + var element = sfonts[i]; + element.style.fontSize = "13px"; + } + + for (var i = 0; i < ss.length; i++) { //subsub + var element = ss[i]; + element.style.fontSize = "7px"; + } + + for (var i = 0; i < videos.length; i++) { //videos + var element = videos[i]; + element.width = "100"; + element.height = "80"; + } + + for (var i = 0; i < pdfs.length; i++) { //pdfs + var element = pdfs[i]; + element.width = "20"; + element.height = "24"; + } + for (var i = 0; i < vis.length; i++) { //img 1 + var element = vis[i]; + element.width = "56"; + element.height = "40"; + } + for (var i = 0; i < visb.length; i++) { //img 2 + var element = visb[i]; + element.width = "111"; + element.height = "82"; + } + + for (var i = 0; i < xmap.length; i++) { //map + var element = xmap[i]; + element.width = "150"; + element.height = "140"; + } +} + +function layer4() { + for (var i = 0; i < texts.length; i++) { //text + var element = texts[i]; + element.style.fontSize = "17px"; + } + + for (var i = 0; i < fonts.length; i++) { //themes + var element = fonts[i]; + element.style.fontSize = "30px"; + } + + for (var i = 0; i < sfonts.length; i++) { //subthemes + var element = sfonts[i]; + element.style.fontSize = "16px"; + } + + for (var i = 0; i < ss.length; i++) { //subsub + var element = ss[i]; + element.style.fontSize = "8px"; + } + + + for (var i = 0; i < videos.length; i++) { //videos + var element = videos[i]; + element.width = "210"; + element.height = "160"; + } + for (var i = 0; i < pdfs.length; i++) { //pdfs + var element = pdfs[i]; + element.width = "40"; + element.height = "50"; + } + for (var i = 0; i < vis.length; i++) { //img 1 + var element = vis[i]; + element.width = "111"; + element.height = "82"; + } + for (var i = 0; i < visb.length; i++) { //img 2 + var element = visb[i]; + element.width = "297"; + element.height = "210"; + } + + for (var i = 0; i < xmap.length; i++) { //map + var element = xmap[i]; + element.width = "250"; + element.height = "240"; + } +} +function layer5() { + for (var i = 0; i < fonts.length; i++) { //themes + var element = fonts[i]; + element.style.fontSize = "25px"; + } + + for (var i = 0; i < sfonts.length; i++) { //subthemes + var element = sfonts[i]; + element.style.fontSize = "25px"; + } + + for (var i = 0; i < ss.length; i++) { //subsub + var element = ss[i]; + element.style.fontSize = "15px"; + } + + for (var i = 0; i < videos.length; i++) { //videos + var element = videos[i]; + element.width = "360"; + element.height = "300"; + } + for (var i = 0; i < pdfs.length; i++) { //pdfs + var element = pdfs[i]; + element.width = "58"; + element.height = "70"; + } + for (var i = 0; i < vis.length; i++) { //img 1 + var element = vis[i]; + element.width = "297"; + element.height = "210"; + } + + for (var i = 0; i < visb.length; i++) { //img 2 + var element = visb[i]; + element.width = "600"; + element.height = "424"; + } + + for (var i = 0; i < xmap.length; i++) { //map + var element = xmap[i]; + element.width = "600"; + element.height = "590"; + } + +} + +function layer6() { + for (var i = 0; i < texts.length; i++) { //text + var element = texts[i]; + element.style.fontSize = "35px"; + } + + for (var i = 0; i < fonts.length; i++) { //themes + var element = fonts[i]; + element.style.fontSize = "90px"; + } + + for (var i = 0; i < sfonts.length; i++) { //subthemes + var element = sfonts[i]; + element.style.fontSize = "45px"; + } + + for (var i = 0; i < ss.length; i++) { //subsub + var element = ss[i]; + element.style.fontSize = "20px"; + } + for (var i = 0; i < videos.length; i++) { //videos + var element = videos[i]; + element.width = "460"; + element.height = "400"; + } + for (var i = 0; i < pdfs.length; i++) { //pdfs + var element = pdfs[i]; + element.width = "76"; + element.height = "90"; + } + for (var i = 0; i < vis.length; i++) { //img 1 + var element = vis[i]; + element.width = "600"; + element.height = "424"; + } + + for (var i = 0; i < visb.length; i++) { //img 2 + var element = visb[i]; + element.width = "1131"; + element.height = "800"; + } + + for (var i = 0; i < xmap.length; i++) { //map + var element = xmap[i]; + element.width = "1100"; + element.height = "1000"; + } + +} + +function layer7() { + for (var i = 0; i < texts.length; i++) { //text + var element = texts[i]; + element.style.fontSize = "45px"; + } + + for (var i = 0; i < fonts.length; i++) { //themes + var element = fonts[i]; + element.style.fontSize = "90px"; + } + + for (var i = 0; i < sfonts.length; i++) { //subthemes + var element = sfonts[i]; + element.style.fontSize = "45px"; + } + + for (var i = 0; i < ss.length; i++) { //subsub + var element = ss[i]; + element.style.fontSize = "30px"; + } + + for (var i = 0; i < videos.length; i++) { //videos + var element = videos[i]; + element.width = "700"; + element.height = "600"; + } + for (var i = 0; i < pdfs.length; i++) { //pdfs + var element = pdfs[i]; + element.width = "76"; + element.height = "90"; + } + for (var i = 0; i < vis.length; i++) { //img 1 + var element = vis[i]; + element.width = "1131"; + element.height = "800"; + } + + for (var i = 0; i < visb.length; i++) { //img 2 + var element = visb[i]; + element.width = "1400"; + element.height = "990"; + } +} + +map.on('zoomend', function(ev){ + if (map.getZoom() == 0) { + layer1(); + } else if (map.getZoom() == 1) { + layer2(); + } else if (map.getZoom() == 2) { + layer3(); + } else if (map.getZoom() == 3) { + layer4(); + } else if (map.getZoom() == 4){ + layer5(); + } else if (map.getZoom() == 5){ + layer6(); + } else { + layer7(); + } +}); \ No newline at end of file diff --git a/08/Researches/Tancredi_Di_Giovanni/leaflet-hash/LICENSE.md b/08/Researches/Tancredi_Di_Giovanni/leaflet-hash/LICENSE.md new file mode 100644 index 0000000..a46a450 --- /dev/null +++ b/08/Researches/Tancredi_Di_Giovanni/leaflet-hash/LICENSE.md @@ -0,0 +1,7 @@ +Copyright (c) 2013 Michael Lawrence Evans + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/08/Researches/Tancredi_Di_Giovanni/leaflet-hash/README.md b/08/Researches/Tancredi_Di_Giovanni/leaflet-hash/README.md new file mode 100644 index 0000000..596d01e --- /dev/null +++ b/08/Researches/Tancredi_Di_Giovanni/leaflet-hash/README.md @@ -0,0 +1,41 @@ +# Leaflet-hash + +Leaflet-hash lets you to add dynamic URL hashes to web pages with Leaflet maps. You can easily +link users to specific map views. + +![Leaflet-hash](https://github.com/mlevans/leaflet-hash/raw/master/screenshots/screenshot.png) + +### Demo +You can view a demo of leaflet-hash at [mlevans.github.io/leaflet-hash/map.html](http://mlevans.github.io/leaflet-hash/map.html). + +### Getting started + +1. Prepare a basic leaflet map. You can find instructions on [Leaflet's quick-start guide](http://leaflet.cloudmade.com/examples/quick-start.html). + +2. Include [leaflet-hash.js](https://github.com/mlevans/leaflet-hash/blob/master/leaflet-hash.js). + +3. Once you have initialized the map (an instance of [L.Map](http://leaflet.cloudmade.com/reference.html#map-usage)), add the following code: + + ```javascript + // Assuming your map instance is in a variable called map + var hash = new L.Hash(map); + ``` + +### Author +[@mlevans](http://github.com/mlevans) + +### Contributors +[@calvinmetcalf](http://github.com/calvinmetcalf) + +[@jfirebaugh](http://github.com/jfirebaugh) + +[@rsudekum](http://github.com/rsudekum) + +[@tmcw](http://github.com/tmcw) + +[@yohanboniface](http://github.com/yohanboniface) + + +### License + +MIT License. See [LICENSE](https://github.com/mlevans/leaflet-hash/blob/master/LICENSE.md) for details. diff --git a/08/Researches/Tancredi_Di_Giovanni/leaflet-hash/leaflet-hash.js b/08/Researches/Tancredi_Di_Giovanni/leaflet-hash/leaflet-hash.js new file mode 100644 index 0000000..70a1007 --- /dev/null +++ b/08/Researches/Tancredi_Di_Giovanni/leaflet-hash/leaflet-hash.js @@ -0,0 +1,162 @@ +(function(window) { + var HAS_HASHCHANGE = (function() { + var doc_mode = window.documentMode; + return ('onhashchange' in window) && + (doc_mode === undefined || doc_mode > 7); + })(); + + L.Hash = function(map) { + this.onHashChange = L.Util.bind(this.onHashChange, this); + + if (map) { + this.init(map); + } + }; + + L.Hash.parseHash = function(hash) { + if(hash.indexOf('#') === 0) { + hash = hash.substr(1); + } + var args = hash.split("/"); + if (args.length == 3) { + var zoom = parseInt(args[0], 10), + lat = parseFloat(args[1]), + lon = parseFloat(args[2]); + if (isNaN(zoom) || isNaN(lat) || isNaN(lon)) { + return false; + } else { + return { + center: new L.LatLng(lat, lon), + zoom: zoom + }; + } + } else { + return false; + } + }; + + L.Hash.formatHash = function(map) { + var center = map.getCenter(), + zoom = map.getZoom(), + precision = Math.max(0, Math.ceil(Math.log(zoom) / Math.LN2)); + + return "#" + [zoom, + center.lat.toFixed(precision), + center.lng.toFixed(precision) + ].join("/"); + }, + + L.Hash.prototype = { + map: null, + lastHash: null, + + parseHash: L.Hash.parseHash, + formatHash: L.Hash.formatHash, + + init: function(map) { + this.map = map; + + // reset the hash + this.lastHash = null; + this.onHashChange(); + + if (!this.isListening) { + this.startListening(); + } + }, + + removeFrom: function(map) { + if (this.changeTimeout) { + clearTimeout(this.changeTimeout); + } + + if (this.isListening) { + this.stopListening(); + } + + this.map = null; + }, + + onMapMove: function() { + // bail if we're moving the map (updating from a hash), + // or if the map is not yet loaded + + if (this.movingMap || !this.map._loaded) { + return false; + } + + var hash = this.formatHash(this.map); + if (this.lastHash != hash) { + location.replace(hash); + this.lastHash = hash; + } + }, + + movingMap: false, + update: function() { + var hash = location.hash; + if (hash === this.lastHash) { + return; + } + var parsed = this.parseHash(hash); + if (parsed) { + this.movingMap = true; + + this.map.setView(parsed.center, parsed.zoom); + + this.movingMap = false; + } else { + this.onMapMove(this.map); + } + }, + + // defer hash change updates every 100ms + changeDefer: 100, + changeTimeout: null, + onHashChange: function() { + // throttle calls to update() so that they only happen every + // `changeDefer` ms + if (!this.changeTimeout) { + var that = this; + this.changeTimeout = setTimeout(function() { + that.update(); + that.changeTimeout = null; + }, this.changeDefer); + } + }, + + isListening: false, + hashChangeInterval: null, + startListening: function() { + this.map.on("moveend", this.onMapMove, this); + + if (HAS_HASHCHANGE) { + L.DomEvent.addListener(window, "hashchange", this.onHashChange); + } else { + clearInterval(this.hashChangeInterval); + this.hashChangeInterval = setInterval(this.onHashChange, 50); + } + this.isListening = true; + }, + + stopListening: function() { + this.map.off("moveend", this.onMapMove, this); + + if (HAS_HASHCHANGE) { + L.DomEvent.removeListener(window, "hashchange", this.onHashChange); + } else { + clearInterval(this.hashChangeInterval); + } + this.isListening = false; + } + }; + L.hash = function(map) { + return new L.Hash(map); + }; + L.Map.prototype.addHash = function() { + this._hash = L.hash(this); + }; + L.Map.prototype.removeHash = function() { + this._hash.removeFrom(); + }; +})(window); diff --git a/08/Researches/Tancredi_Di_Giovanni/leaflet-hash/lib/leaflet-src.js b/08/Researches/Tancredi_Di_Giovanni/leaflet-hash/lib/leaflet-src.js new file mode 100644 index 0000000..c5b4c6d --- /dev/null +++ b/08/Researches/Tancredi_Di_Giovanni/leaflet-hash/lib/leaflet-src.js @@ -0,0 +1,8339 @@ +/* + Leaflet, a JavaScript library for mobile-friendly interactive maps. http://leafletjs.com + (c) 2010-2013, Vladimir Agafonkin, CloudMade +*/ +(function (window, document, undefined) {/* + * The L namespace contains all Leaflet classes and functions. + * This code allows you to handle any possible namespace conflicts. + */ + +var L, originalL; + +if (typeof exports !== undefined + '') { + L = exports; +} else { + originalL = window.L; + L = {}; + + L.noConflict = function () { + window.L = originalL; + return this; + }; + + window.L = L; +} + +L.version = '0.5.1'; + + +/* + * L.Util contains various utility functions used throughout Leaflet code. + */ + +L.Util = { + extend: function (dest) { // (Object[, Object, ...]) -> + var sources = Array.prototype.slice.call(arguments, 1), + i, j, len, src; + + for (j = 0, len = sources.length; j < len; j++) { + src = sources[j] || {}; + for (i in src) { + if (src.hasOwnProperty(i)) { + dest[i] = src[i]; + } + } + } + return dest; + }, + + bind: function (fn, obj) { // (Function, Object) -> Function + var args = arguments.length > 2 ? Array.prototype.slice.call(arguments, 2) : null; + return function () { + return fn.apply(obj, args || arguments); + }; + }, + + stamp: (function () { + var lastId = 0, key = '_leaflet_id'; + return function (/*Object*/ obj) { + obj[key] = obj[key] || ++lastId; + return obj[key]; + }; + }()), + + limitExecByInterval: function (fn, time, context) { + var lock, execOnUnlock; + + return function wrapperFn() { + var args = arguments; + + if (lock) { + execOnUnlock = true; + return; + } + + lock = true; + + setTimeout(function () { + lock = false; + + if (execOnUnlock) { + wrapperFn.apply(context, args); + execOnUnlock = false; + } + }, time); + + fn.apply(context, args); + }; + }, + + falseFn: function () { + return false; + }, + + formatNum: function (num, digits) { + var pow = Math.pow(10, digits || 5); + return Math.round(num * pow) / pow; + }, + + splitWords: function (str) { + return str.replace(/^\s+|\s+$/g, '').split(/\s+/); + }, + + setOptions: function (obj, options) { + obj.options = L.extend({}, obj.options, options); + return obj.options; + }, + + getParamString: function (obj, existingUrl) { + var params = []; + for (var i in obj) { + if (obj.hasOwnProperty(i)) { + params.push(i + '=' + obj[i]); + } + } + return ((!existingUrl || existingUrl.indexOf('?') === -1) ? '?' : '&') + params.join('&'); + }, + + template: function (str, data) { + return str.replace(/\{ *([\w_]+) *\}/g, function (str, key) { + var value = data[key]; + if (!data.hasOwnProperty(key)) { + throw new Error('No value provided for variable ' + str); + } + return value; + }); + }, + + isArray: function (obj) { + return (Object.prototype.toString.call(obj) === '[object Array]'); + }, + + emptyImageUrl: 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=' +}; + +(function () { + + // inspired by http://paulirish.com/2011/requestanimationframe-for-smart-animating/ + + function getPrefixed(name) { + var i, fn, + prefixes = ['webkit', 'moz', 'o', 'ms']; + + for (i = 0; i < prefixes.length && !fn; i++) { + fn = window[prefixes[i] + name]; + } + + return fn; + } + + var lastTime = 0; + + function timeoutDefer(fn) { + var time = +new Date(), + timeToCall = Math.max(0, 16 - (time - lastTime)); + + lastTime = time + timeToCall; + return window.setTimeout(fn, timeToCall); + } + + var requestFn = window.requestAnimationFrame || + getPrefixed('RequestAnimationFrame') || timeoutDefer; + + var cancelFn = window.cancelAnimationFrame || + getPrefixed('CancelAnimationFrame') || + getPrefixed('CancelRequestAnimationFrame') || + function (id) { window.clearTimeout(id); }; + + + L.Util.requestAnimFrame = function (fn, context, immediate, element) { + fn = L.bind(fn, context); + + if (immediate && requestFn === timeoutDefer) { + fn(); + } else { + return requestFn.call(window, fn, element); + } + }; + + L.Util.cancelAnimFrame = function (id) { + if (id) { + cancelFn.call(window, id); + } + }; + +}()); + +// shortcuts for most used utility functions +L.extend = L.Util.extend; +L.bind = L.Util.bind; +L.stamp = L.Util.stamp; +L.setOptions = L.Util.setOptions; + + +/* + * L.Class powers the OOP facilities of the library. + * Thanks to John Resig and Dean Edwards for inspiration! + */ + +L.Class = function () {}; + +L.Class.extend = function (props) { + + // extended class with the new prototype + var NewClass = function () { + + // call the constructor + if (this.initialize) { + this.initialize.apply(this, arguments); + } + + // call all constructor hooks + if (this._initHooks) { + this.callInitHooks(); + } + }; + + // instantiate class without calling constructor + var F = function () {}; + F.prototype = this.prototype; + + var proto = new F(); + proto.constructor = NewClass; + + NewClass.prototype = proto; + + //inherit parent's statics + for (var i in this) { + if (this.hasOwnProperty(i) && i !== 'prototype') { + NewClass[i] = this[i]; + } + } + + // mix static properties into the class + if (props.statics) { + L.extend(NewClass, props.statics); + delete props.statics; + } + + // mix includes into the prototype + if (props.includes) { + L.Util.extend.apply(null, [proto].concat(props.includes)); + delete props.includes; + } + + // merge options + if (props.options && proto.options) { + props.options = L.extend({}, proto.options, props.options); + } + + // mix given properties into the prototype + L.extend(proto, props); + + proto._initHooks = []; + + var parent = this; + // add method for calling all hooks + proto.callInitHooks = function () { + + if (this._initHooksCalled) { return; } + + if (parent.prototype.callInitHooks) { + parent.prototype.callInitHooks.call(this); + } + + this._initHooksCalled = true; + + for (var i = 0, len = proto._initHooks.length; i < len; i++) { + proto._initHooks[i].call(this); + } + }; + + return NewClass; +}; + + +// method for adding properties to prototype +L.Class.include = function (props) { + L.extend(this.prototype, props); +}; + +// merge new default options to the Class +L.Class.mergeOptions = function (options) { + L.extend(this.prototype.options, options); +}; + +// add a constructor hook +L.Class.addInitHook = function (fn) { // (Function) || (String, args...) + var args = Array.prototype.slice.call(arguments, 1); + + var init = typeof fn === 'function' ? fn : function () { + this[fn].apply(this, args); + }; + + this.prototype._initHooks = this.prototype._initHooks || []; + this.prototype._initHooks.push(init); +}; + + +/* + * L.Mixin.Events is used to add custom events functionality to Leaflet classes. + */ + +var key = '_leaflet_events'; + +L.Mixin = {}; + +L.Mixin.Events = { + + addEventListener: function (types, fn, context) { // (String, Function[, Object]) or (Object[, Object]) + var events = this[key] = this[key] || {}, + type, i, len; + + // Types can be a map of types/handlers + if (typeof types === 'object') { + for (type in types) { + if (types.hasOwnProperty(type)) { + this.addEventListener(type, types[type], fn); + } + } + + return this; + } + + types = L.Util.splitWords(types); + + for (i = 0, len = types.length; i < len; i++) { + events[types[i]] = events[types[i]] || []; + events[types[i]].push({ + action: fn, + context: context || this + }); + } + + return this; + }, + + hasEventListeners: function (type) { // (String) -> Boolean + return (key in this) && (type in this[key]) && (this[key][type].length > 0); + }, + + removeEventListener: function (types, fn, context) { // (String[, Function, Object]) or (Object[, Object]) + var events = this[key], + type, i, len, listeners, j; + + if (typeof types === 'object') { + for (type in types) { + if (types.hasOwnProperty(type)) { + this.removeEventListener(type, types[type], fn); + } + } + + return this; + } + + types = L.Util.splitWords(types); + + for (i = 0, len = types.length; i < len; i++) { + + if (this.hasEventListeners(types[i])) { + listeners = events[types[i]]; + + for (j = listeners.length - 1; j >= 0; j--) { + if ( + (!fn || listeners[j].action === fn) && + (!context || (listeners[j].context === context)) + ) { + listeners.splice(j, 1); + } + } + } + } + + return this; + }, + + fireEvent: function (type, data) { // (String[, Object]) + if (!this.hasEventListeners(type)) { + return this; + } + + var event = L.extend({ + type: type, + target: this + }, data); + + var listeners = this[key][type].slice(); + + for (var i = 0, len = listeners.length; i < len; i++) { + listeners[i].action.call(listeners[i].context || this, event); + } + + return this; + } +}; + +L.Mixin.Events.on = L.Mixin.Events.addEventListener; +L.Mixin.Events.off = L.Mixin.Events.removeEventListener; +L.Mixin.Events.fire = L.Mixin.Events.fireEvent; + + +/* + * L.Browser handles different browser and feature detections for internal Leaflet use. + */ + +(function () { + + var ie = !!window.ActiveXObject, + ie6 = ie && !window.XMLHttpRequest, + ie7 = ie && !document.querySelector, + + // terrible browser detection to work around Safari / iOS / Android browser bugs + ua = navigator.userAgent.toLowerCase(), + webkit = ua.indexOf('webkit') !== -1, + chrome = ua.indexOf('chrome') !== -1, + android = ua.indexOf('android') !== -1, + android23 = ua.search('android [23]') !== -1, + + mobile = typeof orientation !== undefined + '', + msTouch = window.navigator && window.navigator.msPointerEnabled && + window.navigator.msMaxTouchPoints, + retina = ('devicePixelRatio' in window && window.devicePixelRatio > 1) || + ('matchMedia' in window && window.matchMedia('(min-resolution:144dpi)') && + window.matchMedia('(min-resolution:144dpi)').matches), + + doc = document.documentElement, + ie3d = ie && ('transition' in doc.style), + webkit3d = ('WebKitCSSMatrix' in window) && ('m11' in new window.WebKitCSSMatrix()), + gecko3d = 'MozPerspective' in doc.style, + opera3d = 'OTransition' in doc.style, + any3d = !window.L_DISABLE_3D && (ie3d || webkit3d || gecko3d || opera3d); + + + var touch = !window.L_NO_TOUCH && (function () { + + var startName = 'ontouchstart'; + + // IE10+ (We simulate these into touch* events in L.DomEvent and L.DomEvent.MsTouch) or WebKit, etc. + if (msTouch || (startName in doc)) { + return true; + } + + // Firefox/Gecko + var div = document.createElement('div'), + supported = false; + + if (!div.setAttribute) { + return false; + } + div.setAttribute(startName, 'return;'); + + if (typeof div[startName] === 'function') { + supported = true; + } + + div.removeAttribute(startName); + div = null; + + return supported; + }()); + + + L.Browser = { + ie: ie, + ie6: ie6, + ie7: ie7, + webkit: webkit, + + android: android, + android23: android23, + + chrome: chrome, + + ie3d: ie3d, + webkit3d: webkit3d, + gecko3d: gecko3d, + opera3d: opera3d, + any3d: any3d, + + mobile: mobile, + mobileWebkit: mobile && webkit, + mobileWebkit3d: mobile && webkit3d, + mobileOpera: mobile && window.opera, + + touch: touch, + msTouch: msTouch, + + retina: retina + }; + +}()); + + +/* + * L.Point represents a point with x and y coordinates. + */ + +L.Point = function (/*Number*/ x, /*Number*/ y, /*Boolean*/ round) { + this.x = (round ? Math.round(x) : x); + this.y = (round ? Math.round(y) : y); +}; + +L.Point.prototype = { + + clone: function () { + return new L.Point(this.x, this.y); + }, + + // non-destructive, returns a new point + add: function (point) { + return this.clone()._add(L.point(point)); + }, + + // destructive, used directly for performance in situations where it's safe to modify existing point + _add: function (point) { + this.x += point.x; + this.y += point.y; + return this; + }, + + subtract: function (point) { + return this.clone()._subtract(L.point(point)); + }, + + _subtract: function (point) { + this.x -= point.x; + this.y -= point.y; + return this; + }, + + divideBy: function (num) { + return this.clone()._divideBy(num); + }, + + _divideBy: function (num) { + this.x /= num; + this.y /= num; + return this; + }, + + multiplyBy: function (num) { + return this.clone()._multiplyBy(num); + }, + + _multiplyBy: function (num) { + this.x *= num; + this.y *= num; + return this; + }, + + round: function () { + return this.clone()._round(); + }, + + _round: function () { + this.x = Math.round(this.x); + this.y = Math.round(this.y); + return this; + }, + + floor: function () { + return this.clone()._floor(); + }, + + _floor: function () { + this.x = Math.floor(this.x); + this.y = Math.floor(this.y); + return this; + }, + + distanceTo: function (point) { + point = L.point(point); + + var x = point.x - this.x, + y = point.y - this.y; + + return Math.sqrt(x * x + y * y); + }, + + equals: function (point) { + return point.x === this.x && + point.y === this.y; + }, + + toString: function () { + return 'Point(' + + L.Util.formatNum(this.x) + ', ' + + L.Util.formatNum(this.y) + ')'; + } +}; + +L.point = function (x, y, round) { + if (x instanceof L.Point) { + return x; + } + if (L.Util.isArray(x)) { + return new L.Point(x[0], x[1]); + } + if (isNaN(x)) { + return x; + } + return new L.Point(x, y, round); +}; + + +/* + * L.Bounds represents a rectangular area on the screen in pixel coordinates. + */ + +L.Bounds = function (a, b) { //(Point, Point) or Point[] + if (!a) { return; } + + var points = b ? [a, b] : a; + + for (var i = 0, len = points.length; i < len; i++) { + this.extend(points[i]); + } +}; + +L.Bounds.prototype = { + // extend the bounds to contain the given point + extend: function (point) { // (Point) + point = L.point(point); + + if (!this.min && !this.max) { + this.min = point.clone(); + this.max = point.clone(); + } else { + this.min.x = Math.min(point.x, this.min.x); + this.max.x = Math.max(point.x, this.max.x); + this.min.y = Math.min(point.y, this.min.y); + this.max.y = Math.max(point.y, this.max.y); + } + return this; + }, + + getCenter: function (round) { // (Boolean) -> Point + return new L.Point( + (this.min.x + this.max.x) / 2, + (this.min.y + this.max.y) / 2, round); + }, + + getBottomLeft: function () { // -> Point + return new L.Point(this.min.x, this.max.y); + }, + + getTopRight: function () { // -> Point + return new L.Point(this.max.x, this.min.y); + }, + + getSize: function () { + return this.max.subtract(this.min); + }, + + contains: function (obj) { // (Bounds) or (Point) -> Boolean + var min, max; + + if (typeof obj[0] === 'number' || obj instanceof L.Point) { + obj = L.point(obj); + } else { + obj = L.bounds(obj); + } + + if (obj instanceof L.Bounds) { + min = obj.min; + max = obj.max; + } else { + min = max = obj; + } + + return (min.x >= this.min.x) && + (max.x <= this.max.x) && + (min.y >= this.min.y) && + (max.y <= this.max.y); + }, + + intersects: function (bounds) { // (Bounds) -> Boolean + bounds = L.bounds(bounds); + + var min = this.min, + max = this.max, + min2 = bounds.min, + max2 = bounds.max, + xIntersects = (max2.x >= min.x) && (min2.x <= max.x), + yIntersects = (max2.y >= min.y) && (min2.y <= max.y); + + return xIntersects && yIntersects; + }, + + isValid: function () { + return !!(this.min && this.max); + } +}; + +L.bounds = function (a, b) { // (Bounds) or (Point, Point) or (Point[]) + if (!a || a instanceof L.Bounds) { + return a; + } + return new L.Bounds(a, b); +}; + + +/* + * L.Transformation is an utility class to perform simple point transformations through a 2d-matrix. + */ + +L.Transformation = function (a, b, c, d) { + this._a = a; + this._b = b; + this._c = c; + this._d = d; +}; + +L.Transformation.prototype = { + transform: function (point, scale) { // (Point, Number) -> Point + return this._transform(point.clone(), scale); + }, + + // destructive transform (faster) + _transform: function (point, scale) { + scale = scale || 1; + point.x = scale * (this._a * point.x + this._b); + point.y = scale * (this._c * point.y + this._d); + return point; + }, + + untransform: function (point, scale) { + scale = scale || 1; + return new L.Point( + (point.x / scale - this._b) / this._a, + (point.y / scale - this._d) / this._c); + } +}; + + +/* + * L.DomUtil contains various utility functions for working with DOM. + */ + +L.DomUtil = { + get: function (id) { + return (typeof id === 'string' ? document.getElementById(id) : id); + }, + + getStyle: function (el, style) { + + var value = el.style[style]; + + if (!value && el.currentStyle) { + value = el.currentStyle[style]; + } + + if ((!value || value === 'auto') && document.defaultView) { + var css = document.defaultView.getComputedStyle(el, null); + value = css ? css[style] : null; + } + + return value === 'auto' ? null : value; + }, + + getViewportOffset: function (element) { + + var top = 0, + left = 0, + el = element, + docBody = document.body, + pos, + ie7 = L.Browser.ie7; + + do { + top += el.offsetTop || 0; + left += el.offsetLeft || 0; + + //add borders + top += parseInt(L.DomUtil.getStyle(el, "borderTopWidth"), 10) || 0; + left += parseInt(L.DomUtil.getStyle(el, "borderLeftWidth"), 10) || 0; + + pos = L.DomUtil.getStyle(el, 'position'); + + if (el.offsetParent === docBody && pos === 'absolute') { break; } + + if (pos === 'fixed') { + top += docBody.scrollTop || 0; + left += docBody.scrollLeft || 0; + break; + } + el = el.offsetParent; + + } while (el); + + el = element; + + do { + if (el === docBody) { break; } + + top -= el.scrollTop || 0; + left -= el.scrollLeft || 0; + + // webkit (and ie <= 7) handles RTL scrollLeft different to everyone else + // https://code.google.com/p/closure-library/source/browse/trunk/closure/goog/style/bidi.js + if (!L.DomUtil.documentIsLtr() && (L.Browser.webkit || ie7)) { + left += el.scrollWidth - el.clientWidth; + + // ie7 shows the scrollbar by default and provides clientWidth counting it, so we + // need to add it back in if it is visible; scrollbar is on the left as we are RTL + if (ie7 && L.DomUtil.getStyle(el, 'overflow-y') !== 'hidden' && + L.DomUtil.getStyle(el, 'overflow') !== 'hidden') { + left += 17; + } + } + + el = el.parentNode; + } while (el); + + return new L.Point(left, top); + }, + + documentIsLtr: function () { + if (!L.DomUtil._docIsLtrCached) { + L.DomUtil._docIsLtrCached = true; + L.DomUtil._docIsLtr = L.DomUtil.getStyle(document.body, 'direction') === "ltr"; + } + return L.DomUtil._docIsLtr; + }, + + create: function (tagName, className, container) { + + var el = document.createElement(tagName); + el.className = className; + + if (container) { + container.appendChild(el); + } + + return el; + }, + + disableTextSelection: function () { + if (document.selection && document.selection.empty) { + document.selection.empty(); + } + if (!this._onselectstart) { + this._onselectstart = document.onselectstart || null; + document.onselectstart = L.Util.falseFn; + } + }, + + enableTextSelection: function () { + if (document.onselectstart === L.Util.falseFn) { + document.onselectstart = this._onselectstart; + this._onselectstart = null; + } + }, + + hasClass: function (el, name) { + return (el.className.length > 0) && + new RegExp("(^|\\s)" + name + "(\\s|$)").test(el.className); + }, + + addClass: function (el, name) { + if (!L.DomUtil.hasClass(el, name)) { + el.className += (el.className ? ' ' : '') + name; + } + }, + + removeClass: function (el, name) { + + function replaceFn(w, match) { + if (match === name) { return ''; } + return w; + } + + el.className = el.className + .replace(/(\S+)\s*/g, replaceFn) + .replace(/(^\s+|\s+$)/, ''); + }, + + setOpacity: function (el, value) { + + if ('opacity' in el.style) { + el.style.opacity = value; + + } else if ('filter' in el.style) { + + var filter = false, + filterName = 'DXImageTransform.Microsoft.Alpha'; + + // filters collection throws an error if we try to retrieve a filter that doesn't exist + try { filter = el.filters.item(filterName); } catch (e) {} + + value = Math.round(value * 100); + + if (filter) { + filter.Enabled = (value !== 100); + filter.Opacity = value; + } else { + el.style.filter += ' progid:' + filterName + '(opacity=' + value + ')'; + } + } + }, + + testProp: function (props) { + + var style = document.documentElement.style; + + for (var i = 0; i < props.length; i++) { + if (props[i] in style) { + return props[i]; + } + } + return false; + }, + + getTranslateString: function (point) { + // on WebKit browsers (Chrome/Safari/iOS Safari/Android) using translate3d instead of translate + // makes animation smoother as it ensures HW accel is used. Firefox 13 doesn't care + // (same speed either way), Opera 12 doesn't support translate3d + + var is3d = L.Browser.webkit3d, + open = 'translate' + (is3d ? '3d' : '') + '(', + close = (is3d ? ',0' : '') + ')'; + + return open + point.x + 'px,' + point.y + 'px' + close; + }, + + getScaleString: function (scale, origin) { + + var preTranslateStr = L.DomUtil.getTranslateString(origin.add(origin.multiplyBy(-1 * scale))), + scaleStr = ' scale(' + scale + ') '; + + return preTranslateStr + scaleStr; + }, + + setPosition: function (el, point, disable3D) { // (HTMLElement, Point[, Boolean]) + + el._leaflet_pos = point; + + if (!disable3D && L.Browser.any3d) { + el.style[L.DomUtil.TRANSFORM] = L.DomUtil.getTranslateString(point); + + // workaround for Android 2/3 stability (https://github.com/CloudMade/Leaflet/issues/69) + if (L.Browser.mobileWebkit3d) { + el.style.WebkitBackfaceVisibility = 'hidden'; + } + } else { + el.style.left = point.x + 'px'; + el.style.top = point.y + 'px'; + } + }, + + getPosition: function (el) { + // this method is only used for elements previously positioned using setPosition, + // so it's safe to cache the position for performance + return el._leaflet_pos; + } +}; + + +// prefix style property names + +L.DomUtil.TRANSFORM = L.DomUtil.testProp( + ['transform', 'WebkitTransform', 'OTransform', 'MozTransform', 'msTransform']); + +// webkitTransition comes first because some browser versions that drop vendor prefix don't do +// the same for the transitionend event, in particular the Android 4.1 stock browser + +L.DomUtil.TRANSITION = L.DomUtil.testProp( + ['webkitTransition', 'transition', 'OTransition', 'MozTransition', 'msTransition']); + +L.DomUtil.TRANSITION_END = + L.DomUtil.TRANSITION === 'webkitTransition' || L.DomUtil.TRANSITION === 'OTransition' ? + L.DomUtil.TRANSITION + 'End' : 'transitionend'; + + +/* + * L.LatLng represents a geographical point with latitude and longitude coordinates. + */ + +L.LatLng = function (rawLat, rawLng) { // (Number, Number) + var lat = parseFloat(rawLat), + lng = parseFloat(rawLng); + + if (isNaN(lat) || isNaN(lng)) { + throw new Error('Invalid LatLng object: (' + rawLat + ', ' + rawLng + ')'); + } + + this.lat = lat; + this.lng = lng; +}; + +L.extend(L.LatLng, { + DEG_TO_RAD: Math.PI / 180, + RAD_TO_DEG: 180 / Math.PI, + MAX_MARGIN: 1.0E-9 // max margin of error for the "equals" check +}); + +L.LatLng.prototype = { + equals: function (obj) { // (LatLng) -> Boolean + if (!obj) { return false; } + + obj = L.latLng(obj); + + var margin = Math.max( + Math.abs(this.lat - obj.lat), + Math.abs(this.lng - obj.lng)); + + return margin <= L.LatLng.MAX_MARGIN; + }, + + toString: function (precision) { // (Number) -> String + return 'LatLng(' + + L.Util.formatNum(this.lat, precision) + ', ' + + L.Util.formatNum(this.lng, precision) + ')'; + }, + + // Haversine distance formula, see http://en.wikipedia.org/wiki/Haversine_formula + // TODO move to projection code, LatLng shouldn't know about Earth + distanceTo: function (other) { // (LatLng) -> Number + other = L.latLng(other); + + var R = 6378137, // earth radius in meters + d2r = L.LatLng.DEG_TO_RAD, + dLat = (other.lat - this.lat) * d2r, + dLon = (other.lng - this.lng) * d2r, + lat1 = this.lat * d2r, + lat2 = other.lat * d2r, + sin1 = Math.sin(dLat / 2), + sin2 = Math.sin(dLon / 2); + + var a = sin1 * sin1 + sin2 * sin2 * Math.cos(lat1) * Math.cos(lat2); + + return R * 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); + }, + + wrap: function (a, b) { // (Number, Number) -> LatLng + var lng = this.lng; + + a = a || -180; + b = b || 180; + + lng = (lng + b) % (b - a) + (lng < a || lng === b ? b : a); + + return new L.LatLng(this.lat, lng); + } +}; + +L.latLng = function (a, b) { // (LatLng) or ([Number, Number]) or (Number, Number) + if (a instanceof L.LatLng) { + return a; + } + if (L.Util.isArray(a)) { + return new L.LatLng(a[0], a[1]); + } + if (isNaN(a)) { + return a; + } + return new L.LatLng(a, b); +}; + + + +/* + * L.LatLngBounds represents a rectangular area on the map in geographical coordinates. + */ + +L.LatLngBounds = function (southWest, northEast) { // (LatLng, LatLng) or (LatLng[]) + if (!southWest) { return; } + + var latlngs = northEast ? [southWest, northEast] : southWest; + + for (var i = 0, len = latlngs.length; i < len; i++) { + this.extend(latlngs[i]); + } +}; + +L.LatLngBounds.prototype = { + // extend the bounds to contain the given point or bounds + extend: function (obj) { // (LatLng) or (LatLngBounds) + if (typeof obj[0] === 'number' || typeof obj[0] === 'string' || obj instanceof L.LatLng) { + obj = L.latLng(obj); + } else { + obj = L.latLngBounds(obj); + } + + if (obj instanceof L.LatLng) { + if (!this._southWest && !this._northEast) { + this._southWest = new L.LatLng(obj.lat, obj.lng); + this._northEast = new L.LatLng(obj.lat, obj.lng); + } else { + this._southWest.lat = Math.min(obj.lat, this._southWest.lat); + this._southWest.lng = Math.min(obj.lng, this._southWest.lng); + + this._northEast.lat = Math.max(obj.lat, this._northEast.lat); + this._northEast.lng = Math.max(obj.lng, this._northEast.lng); + } + } else if (obj instanceof L.LatLngBounds) { + this.extend(obj._southWest); + this.extend(obj._northEast); + } + return this; + }, + + // extend the bounds by a percentage + pad: function (bufferRatio) { // (Number) -> LatLngBounds + var sw = this._southWest, + ne = this._northEast, + heightBuffer = Math.abs(sw.lat - ne.lat) * bufferRatio, + widthBuffer = Math.abs(sw.lng - ne.lng) * bufferRatio; + + return new L.LatLngBounds( + new L.LatLng(sw.lat - heightBuffer, sw.lng - widthBuffer), + new L.LatLng(ne.lat + heightBuffer, ne.lng + widthBuffer)); + }, + + getCenter: function () { // -> LatLng + return new L.LatLng( + (this._southWest.lat + this._northEast.lat) / 2, + (this._southWest.lng + this._northEast.lng) / 2); + }, + + getSouthWest: function () { + return this._southWest; + }, + + getNorthEast: function () { + return this._northEast; + }, + + getNorthWest: function () { + return new L.LatLng(this._northEast.lat, this._southWest.lng); + }, + + getSouthEast: function () { + return new L.LatLng(this._southWest.lat, this._northEast.lng); + }, + + contains: function (obj) { // (LatLngBounds) or (LatLng) -> Boolean + if (typeof obj[0] === 'number' || obj instanceof L.LatLng) { + obj = L.latLng(obj); + } else { + obj = L.latLngBounds(obj); + } + + var sw = this._southWest, + ne = this._northEast, + sw2, ne2; + + if (obj instanceof L.LatLngBounds) { + sw2 = obj.getSouthWest(); + ne2 = obj.getNorthEast(); + } else { + sw2 = ne2 = obj; + } + + return (sw2.lat >= sw.lat) && (ne2.lat <= ne.lat) && + (sw2.lng >= sw.lng) && (ne2.lng <= ne.lng); + }, + + intersects: function (bounds) { // (LatLngBounds) + bounds = L.latLngBounds(bounds); + + var sw = this._southWest, + ne = this._northEast, + sw2 = bounds.getSouthWest(), + ne2 = bounds.getNorthEast(), + + latIntersects = (ne2.lat >= sw.lat) && (sw2.lat <= ne.lat), + lngIntersects = (ne2.lng >= sw.lng) && (sw2.lng <= ne.lng); + + return latIntersects && lngIntersects; + }, + + toBBoxString: function () { + var sw = this._southWest, + ne = this._northEast; + + return [sw.lng, sw.lat, ne.lng, ne.lat].join(','); + }, + + equals: function (bounds) { // (LatLngBounds) + if (!bounds) { return false; } + + bounds = L.latLngBounds(bounds); + + return this._southWest.equals(bounds.getSouthWest()) && + this._northEast.equals(bounds.getNorthEast()); + }, + + isValid: function () { + return !!(this._southWest && this._northEast); + } +}; + +//TODO International date line? + +L.latLngBounds = function (a, b) { // (LatLngBounds) or (LatLng, LatLng) + if (!a || a instanceof L.LatLngBounds) { + return a; + } + return new L.LatLngBounds(a, b); +}; + + +/* + * L.Projection contains various geographical projections used by CRS classes. + */ + +L.Projection = {}; + + +/* + * Spherical Mercator is the most popular map projection, used by EPSG:3857 CRS used by default. + */ + +L.Projection.SphericalMercator = { + MAX_LATITUDE: 85.0511287798, + + project: function (latlng) { // (LatLng) -> Point + var d = L.LatLng.DEG_TO_RAD, + max = this.MAX_LATITUDE, + lat = Math.max(Math.min(max, latlng.lat), -max), + x = latlng.lng * d, + y = lat * d; + + y = Math.log(Math.tan((Math.PI / 4) + (y / 2))); + + return new L.Point(x, y); + }, + + unproject: function (point) { // (Point, Boolean) -> LatLng + var d = L.LatLng.RAD_TO_DEG, + lng = point.x * d, + lat = (2 * Math.atan(Math.exp(point.y)) - (Math.PI / 2)) * d; + + return new L.LatLng(lat, lng); + } +}; + + +/* + * Simple equirectangular (Plate Carree) projection, used by CRS like EPSG:4326 and Simple. + */ + +L.Projection.LonLat = { + project: function (latlng) { + return new L.Point(latlng.lng, latlng.lat); + }, + + unproject: function (point) { + return new L.LatLng(point.y, point.x); + } +}; + + +/* + * L.CRS is a base object for all defined CRS (Coordinate Reference Systems) in Leaflet. + */ + +L.CRS = { + latLngToPoint: function (latlng, zoom) { // (LatLng, Number) -> Point + var projectedPoint = this.projection.project(latlng), + scale = this.scale(zoom); + + return this.transformation._transform(projectedPoint, scale); + }, + + pointToLatLng: function (point, zoom) { // (Point, Number[, Boolean]) -> LatLng + var scale = this.scale(zoom), + untransformedPoint = this.transformation.untransform(point, scale); + + return this.projection.unproject(untransformedPoint); + }, + + project: function (latlng) { + return this.projection.project(latlng); + }, + + scale: function (zoom) { + return 256 * Math.pow(2, zoom); + } +}; + + +/* + * A simple CRS that can be used for flat non-Earth maps like panoramas or game maps. + */ + +L.CRS.Simple = L.extend({}, L.CRS, { + projection: L.Projection.LonLat, + transformation: new L.Transformation(1, 0, -1, 0), + + scale: function (zoom) { + return Math.pow(2, zoom); + } +}); + + +/* + * L.CRS.EPSG3857 (Spherical Mercator) is the most common CRS for web mapping + * and is used by Leaflet by default. + */ + +L.CRS.EPSG3857 = L.extend({}, L.CRS, { + code: 'EPSG:3857', + + projection: L.Projection.SphericalMercator, + transformation: new L.Transformation(0.5 / Math.PI, 0.5, -0.5 / Math.PI, 0.5), + + project: function (latlng) { // (LatLng) -> Point + var projectedPoint = this.projection.project(latlng), + earthRadius = 6378137; + return projectedPoint.multiplyBy(earthRadius); + } +}); + +L.CRS.EPSG900913 = L.extend({}, L.CRS.EPSG3857, { + code: 'EPSG:900913' +}); + + +/* + * L.CRS.EPSG4326 is a CRS popular among advanced GIS specialists. + */ + +L.CRS.EPSG4326 = L.extend({}, L.CRS, { + code: 'EPSG:4326', + + projection: L.Projection.LonLat, + transformation: new L.Transformation(1 / 360, 0.5, -1 / 360, 0.5) +}); + + +/* + * L.Map is the central class of the API - it is used to create a map. + */ + +L.Map = L.Class.extend({ + + includes: L.Mixin.Events, + + options: { + crs: L.CRS.EPSG3857, + + /* + center: LatLng, + zoom: Number, + layers: Array, + */ + + fadeAnimation: L.DomUtil.TRANSITION && !L.Browser.android23, + trackResize: true, + markerZoomAnimation: L.DomUtil.TRANSITION && L.Browser.any3d + }, + + initialize: function (id, options) { // (HTMLElement or String, Object) + options = L.setOptions(this, options); + + this._initContainer(id); + this._initLayout(); + this.callInitHooks(); + this._initEvents(); + + if (options.maxBounds) { + this.setMaxBounds(options.maxBounds); + } + + if (options.center && options.zoom !== undefined) { + this.setView(L.latLng(options.center), options.zoom, true); + } + + this._initLayers(options.layers); + }, + + + // public methods that modify map state + + // replaced by animation-powered implementation in Map.PanAnimation.js + setView: function (center, zoom) { + this._resetView(L.latLng(center), this._limitZoom(zoom)); + return this; + }, + + setZoom: function (zoom) { // (Number) + return this.setView(this.getCenter(), zoom); + }, + + zoomIn: function (delta) { + return this.setZoom(this._zoom + (delta || 1)); + }, + + zoomOut: function (delta) { + return this.setZoom(this._zoom - (delta || 1)); + }, + + fitBounds: function (bounds) { // (LatLngBounds) + var zoom = this.getBoundsZoom(bounds); + return this.setView(L.latLngBounds(bounds).getCenter(), zoom); + }, + + fitWorld: function () { + var sw = new L.LatLng(-60, -170), + ne = new L.LatLng(85, 179); + + return this.fitBounds(new L.LatLngBounds(sw, ne)); + }, + + panTo: function (center) { // (LatLng) + return this.setView(center, this._zoom); + }, + + panBy: function (offset) { // (Point) + // replaced with animated panBy in Map.Animation.js + this.fire('movestart'); + + this._rawPanBy(L.point(offset)); + + this.fire('move'); + return this.fire('moveend'); + }, + + setMaxBounds: function (bounds) { + bounds = L.latLngBounds(bounds); + + this.options.maxBounds = bounds; + + if (!bounds) { + this._boundsMinZoom = null; + return this; + } + + var minZoom = this.getBoundsZoom(bounds, true); + + this._boundsMinZoom = minZoom; + + if (this._loaded) { + if (this._zoom < minZoom) { + this.setView(bounds.getCenter(), minZoom); + } else { + this.panInsideBounds(bounds); + } + } + + return this; + }, + + panInsideBounds: function (bounds) { + bounds = L.latLngBounds(bounds); + + var viewBounds = this.getBounds(), + viewSw = this.project(viewBounds.getSouthWest()), + viewNe = this.project(viewBounds.getNorthEast()), + sw = this.project(bounds.getSouthWest()), + ne = this.project(bounds.getNorthEast()), + dx = 0, + dy = 0; + + if (viewNe.y < ne.y) { // north + dy = ne.y - viewNe.y; + } + if (viewNe.x > ne.x) { // east + dx = ne.x - viewNe.x; + } + if (viewSw.y > sw.y) { // south + dy = sw.y - viewSw.y; + } + if (viewSw.x < sw.x) { // west + dx = sw.x - viewSw.x; + } + + return this.panBy(new L.Point(dx, dy, true)); + }, + + addLayer: function (layer) { + // TODO method is too big, refactor + + var id = L.stamp(layer); + + if (this._layers[id]) { return this; } + + this._layers[id] = layer; + + // TODO getMaxZoom, getMinZoom in ILayer (instead of options) + if (layer.options && (!isNaN(layer.options.maxZoom) || !isNaN(layer.options.minZoom))) { + this._zoomBoundLayers[id] = layer; + this._updateZoomLevels(); + } + + // TODO looks ugly, refactor!!! + if (this.options.zoomAnimation && L.TileLayer && (layer instanceof L.TileLayer)) { + this._tileLayersNum++; + this._tileLayersToLoad++; + layer.on('load', this._onTileLayerLoad, this); + } + + this.whenReady(function () { + layer.onAdd(this); + this.fire('layeradd', {layer: layer}); + }, this); + + return this; + }, + + removeLayer: function (layer) { + var id = L.stamp(layer); + + if (!this._layers[id]) { return; } + + layer.onRemove(this); + + delete this._layers[id]; + if (this._zoomBoundLayers[id]) { + delete this._zoomBoundLayers[id]; + this._updateZoomLevels(); + } + + // TODO looks ugly, refactor + if (this.options.zoomAnimation && L.TileLayer && (layer instanceof L.TileLayer)) { + this._tileLayersNum--; + this._tileLayersToLoad--; + layer.off('load', this._onTileLayerLoad, this); + } + + return this.fire('layerremove', {layer: layer}); + }, + + hasLayer: function (layer) { + var id = L.stamp(layer); + return this._layers.hasOwnProperty(id); + }, + + invalidateSize: function (animate) { + var oldSize = this.getSize(); + + this._sizeChanged = true; + + if (this.options.maxBounds) { + this.setMaxBounds(this.options.maxBounds); + } + + if (!this._loaded) { return this; } + + var offset = oldSize._subtract(this.getSize())._divideBy(2)._round(); + + if (animate === true) { + this.panBy(offset); + } else { + this._rawPanBy(offset); + + this.fire('move'); + + clearTimeout(this._sizeTimer); + this._sizeTimer = setTimeout(L.bind(this.fire, this, 'moveend'), 200); + } + return this; + }, + + // TODO handler.addTo + addHandler: function (name, HandlerClass) { + if (!HandlerClass) { return; } + + this[name] = new HandlerClass(this); + + if (this.options[name]) { + this[name].enable(); + } + + return this; + }, + + + // public methods for getting map state + + getCenter: function () { // (Boolean) -> LatLng + return this.layerPointToLatLng(this._getCenterLayerPoint()); + }, + + getZoom: function () { + return this._zoom; + }, + + getBounds: function () { + var bounds = this.getPixelBounds(), + sw = this.unproject(bounds.getBottomLeft()), + ne = this.unproject(bounds.getTopRight()); + + return new L.LatLngBounds(sw, ne); + }, + + getMinZoom: function () { + var z1 = this.options.minZoom || 0, + z2 = this._layersMinZoom || 0, + z3 = this._boundsMinZoom || 0; + + return Math.max(z1, z2, z3); + }, + + getMaxZoom: function () { + var z1 = this.options.maxZoom === undefined ? Infinity : this.options.maxZoom, + z2 = this._layersMaxZoom === undefined ? Infinity : this._layersMaxZoom; + + return Math.min(z1, z2); + }, + + getBoundsZoom: function (bounds, inside) { // (LatLngBounds, Boolean) -> Number + bounds = L.latLngBounds(bounds); + + var size = this.getSize(), + zoom = this.options.minZoom || 0, + maxZoom = this.getMaxZoom(), + ne = bounds.getNorthEast(), + sw = bounds.getSouthWest(), + boundsSize, + nePoint, + swPoint, + zoomNotFound = true; + + if (inside) { + zoom--; + } + + do { + zoom++; + nePoint = this.project(ne, zoom); + swPoint = this.project(sw, zoom); + + boundsSize = new L.Point( + Math.abs(nePoint.x - swPoint.x), + Math.abs(swPoint.y - nePoint.y)); + + if (!inside) { + zoomNotFound = boundsSize.x <= size.x && boundsSize.y <= size.y; + } else { + zoomNotFound = boundsSize.x < size.x || boundsSize.y < size.y; + } + } while (zoomNotFound && zoom <= maxZoom); + + if (zoomNotFound && inside) { + return null; + } + + return inside ? zoom : zoom - 1; + }, + + getSize: function () { + if (!this._size || this._sizeChanged) { + this._size = new L.Point( + this._container.clientWidth, + this._container.clientHeight); + + this._sizeChanged = false; + } + return this._size.clone(); + }, + + getPixelBounds: function () { + var topLeftPoint = this._getTopLeftPoint(); + return new L.Bounds(topLeftPoint, topLeftPoint.add(this.getSize())); + }, + + getPixelOrigin: function () { + return this._initialTopLeftPoint; + }, + + getPanes: function () { + return this._panes; + }, + + getContainer: function () { + return this._container; + }, + + + // TODO replace with universal implementation after refactoring projections + + getZoomScale: function (toZoom) { + var crs = this.options.crs; + return crs.scale(toZoom) / crs.scale(this._zoom); + }, + + getScaleZoom: function (scale) { + return this._zoom + (Math.log(scale) / Math.LN2); + }, + + + // conversion methods + + project: function (latlng, zoom) { // (LatLng[, Number]) -> Point + zoom = zoom === undefined ? this._zoom : zoom; + return this.options.crs.latLngToPoint(L.latLng(latlng), zoom); + }, + + unproject: function (point, zoom) { // (Point[, Number]) -> LatLng + zoom = zoom === undefined ? this._zoom : zoom; + return this.options.crs.pointToLatLng(L.point(point), zoom); + }, + + layerPointToLatLng: function (point) { // (Point) + var projectedPoint = L.point(point).add(this._initialTopLeftPoint); + return this.unproject(projectedPoint); + }, + + latLngToLayerPoint: function (latlng) { // (LatLng) + var projectedPoint = this.project(L.latLng(latlng))._round(); + return projectedPoint._subtract(this._initialTopLeftPoint); + }, + + containerPointToLayerPoint: function (point) { // (Point) + return L.point(point).subtract(this._getMapPanePos()); + }, + + layerPointToContainerPoint: function (point) { // (Point) + return L.point(point).add(this._getMapPanePos()); + }, + + containerPointToLatLng: function (point) { + var layerPoint = this.containerPointToLayerPoint(L.point(point)); + return this.layerPointToLatLng(layerPoint); + }, + + latLngToContainerPoint: function (latlng) { + return this.layerPointToContainerPoint(this.latLngToLayerPoint(L.latLng(latlng))); + }, + + mouseEventToContainerPoint: function (e) { // (MouseEvent) + return L.DomEvent.getMousePosition(e, this._container); + }, + + mouseEventToLayerPoint: function (e) { // (MouseEvent) + return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(e)); + }, + + mouseEventToLatLng: function (e) { // (MouseEvent) + return this.layerPointToLatLng(this.mouseEventToLayerPoint(e)); + }, + + + // map initialization methods + + _initContainer: function (id) { + var container = this._container = L.DomUtil.get(id); + + if (container._leaflet) { + throw new Error("Map container is already initialized."); + } + + container._leaflet = true; + }, + + _initLayout: function () { + var container = this._container; + + L.DomUtil.addClass(container, 'leaflet-container'); + + if (L.Browser.touch) { + L.DomUtil.addClass(container, 'leaflet-touch'); + } + + if (this.options.fadeAnimation) { + L.DomUtil.addClass(container, 'leaflet-fade-anim'); + } + + var position = L.DomUtil.getStyle(container, 'position'); + + if (position !== 'absolute' && position !== 'relative' && position !== 'fixed') { + container.style.position = 'relative'; + } + + this._initPanes(); + + if (this._initControlPos) { + this._initControlPos(); + } + }, + + _initPanes: function () { + var panes = this._panes = {}; + + this._mapPane = panes.mapPane = this._createPane('leaflet-map-pane', this._container); + + this._tilePane = panes.tilePane = this._createPane('leaflet-tile-pane', this._mapPane); + panes.objectsPane = this._createPane('leaflet-objects-pane', this._mapPane); + panes.shadowPane = this._createPane('leaflet-shadow-pane'); + panes.overlayPane = this._createPane('leaflet-overlay-pane'); + panes.markerPane = this._createPane('leaflet-marker-pane'); + panes.popupPane = this._createPane('leaflet-popup-pane'); + + var zoomHide = ' leaflet-zoom-hide'; + + if (!this.options.markerZoomAnimation) { + L.DomUtil.addClass(panes.markerPane, zoomHide); + L.DomUtil.addClass(panes.shadowPane, zoomHide); + L.DomUtil.addClass(panes.popupPane, zoomHide); + } + }, + + _createPane: function (className, container) { + return L.DomUtil.create('div', className, container || this._panes.objectsPane); + }, + + _initLayers: function (layers) { + layers = layers ? (L.Util.isArray(layers) ? layers : [layers]) : []; + + this._layers = {}; + this._zoomBoundLayers = {}; + this._tileLayersNum = 0; + + var i, len; + + for (i = 0, len = layers.length; i < len; i++) { + this.addLayer(layers[i]); + } + }, + + + // private methods that modify map state + + _resetView: function (center, zoom, preserveMapOffset, afterZoomAnim) { + + var zoomChanged = (this._zoom !== zoom); + + if (!afterZoomAnim) { + this.fire('movestart'); + + if (zoomChanged) { + this.fire('zoomstart'); + } + } + + this._zoom = zoom; + + this._initialTopLeftPoint = this._getNewTopLeftPoint(center); + + if (!preserveMapOffset) { + L.DomUtil.setPosition(this._mapPane, new L.Point(0, 0)); + } else { + this._initialTopLeftPoint._add(this._getMapPanePos()); + } + + this._tileLayersToLoad = this._tileLayersNum; + + var loading = !this._loaded; + this._loaded = true; + + this.fire('viewreset', {hard: !preserveMapOffset}); + + this.fire('move'); + + if (zoomChanged || afterZoomAnim) { + this.fire('zoomend'); + } + + this.fire('moveend', {hard: !preserveMapOffset}); + + if (loading) { + this.fire('load'); + } + }, + + _rawPanBy: function (offset) { + L.DomUtil.setPosition(this._mapPane, this._getMapPanePos().subtract(offset)); + }, + + _updateZoomLevels: function () { + var i, + minZoom = Infinity, + maxZoom = -Infinity; + + for (i in this._zoomBoundLayers) { + if (this._zoomBoundLayers.hasOwnProperty(i)) { + var layer = this._zoomBoundLayers[i]; + if (!isNaN(layer.options.minZoom)) { + minZoom = Math.min(minZoom, layer.options.minZoom); + } + if (!isNaN(layer.options.maxZoom)) { + maxZoom = Math.max(maxZoom, layer.options.maxZoom); + } + } + } + + if (i === undefined) { // we have no tilelayers + this._layersMaxZoom = this._layersMinZoom = undefined; + } else { + this._layersMaxZoom = maxZoom; + this._layersMinZoom = minZoom; + } + }, + + // map events + + _initEvents: function () { + if (!L.DomEvent) { return; } + + L.DomEvent.on(this._container, 'click', this._onMouseClick, this); + + var events = ['dblclick', 'mousedown', 'mouseup', 'mouseenter', + 'mouseleave', 'mousemove', 'contextmenu'], + i, len; + + for (i = 0, len = events.length; i < len; i++) { + L.DomEvent.on(this._container, events[i], this._fireMouseEvent, this); + } + + if (this.options.trackResize) { + L.DomEvent.on(window, 'resize', this._onResize, this); + } + }, + + _onResize: function () { + L.Util.cancelAnimFrame(this._resizeRequest); + this._resizeRequest = L.Util.requestAnimFrame( + this.invalidateSize, this, false, this._container); + }, + + _onMouseClick: function (e) { + if (!this._loaded || (this.dragging && this.dragging.moved())) { return; } + + this.fire('preclick'); + this._fireMouseEvent(e); + }, + + _fireMouseEvent: function (e) { + if (!this._loaded) { return; } + + var type = e.type; + + type = (type === 'mouseenter' ? 'mouseover' : (type === 'mouseleave' ? 'mouseout' : type)); + + if (!this.hasEventListeners(type)) { return; } + + if (type === 'contextmenu') { + L.DomEvent.preventDefault(e); + } + + var containerPoint = this.mouseEventToContainerPoint(e), + layerPoint = this.containerPointToLayerPoint(containerPoint), + latlng = this.layerPointToLatLng(layerPoint); + + this.fire(type, { + latlng: latlng, + layerPoint: layerPoint, + containerPoint: containerPoint, + originalEvent: e + }); + }, + + _onTileLayerLoad: function () { + // TODO super-ugly, refactor!!! + // clear scaled tiles after all new tiles are loaded (for performance) + this._tileLayersToLoad--; + if (this._tileLayersNum && !this._tileLayersToLoad && this._tileBg) { + clearTimeout(this._clearTileBgTimer); + this._clearTileBgTimer = setTimeout(L.bind(this._clearTileBg, this), 500); + } + }, + + whenReady: function (callback, context) { + if (this._loaded) { + callback.call(context || this, this); + } else { + this.on('load', callback, context); + } + return this; + }, + + + // private methods for getting map state + + _getMapPanePos: function () { + return L.DomUtil.getPosition(this._mapPane); + }, + + _getTopLeftPoint: function () { + if (!this._loaded) { + throw new Error('Set map center and zoom first.'); + } + + return this._initialTopLeftPoint.subtract(this._getMapPanePos()); + }, + + _getNewTopLeftPoint: function (center, zoom) { + var viewHalf = this.getSize()._divideBy(2); + // TODO round on display, not calculation to increase precision? + return this.project(center, zoom)._subtract(viewHalf)._round(); + }, + + _latLngToNewLayerPoint: function (latlng, newZoom, newCenter) { + var topLeft = this._getNewTopLeftPoint(newCenter, newZoom).add(this._getMapPanePos()); + return this.project(latlng, newZoom)._subtract(topLeft); + }, + + _getCenterLayerPoint: function () { + return this.containerPointToLayerPoint(this.getSize()._divideBy(2)); + }, + + _getCenterOffset: function (center) { + return this.latLngToLayerPoint(center).subtract(this._getCenterLayerPoint()); + }, + + _limitZoom: function (zoom) { + var min = this.getMinZoom(), + max = this.getMaxZoom(); + + return Math.max(min, Math.min(max, zoom)); + } +}); + +L.map = function (id, options) { + return new L.Map(id, options); +}; + + +/* + * Mercator projection that takes into account that the Earth is not a perfect sphere. + * Less popular than spherical mercator; used by projections like EPSG:3395. + */ + +L.Projection.Mercator = { + MAX_LATITUDE: 85.0840591556, + + R_MINOR: 6356752.3142, + R_MAJOR: 6378137, + + project: function (latlng) { // (LatLng) -> Point + var d = L.LatLng.DEG_TO_RAD, + max = this.MAX_LATITUDE, + lat = Math.max(Math.min(max, latlng.lat), -max), + r = this.R_MAJOR, + r2 = this.R_MINOR, + x = latlng.lng * d * r, + y = lat * d, + tmp = r2 / r, + eccent = Math.sqrt(1.0 - tmp * tmp), + con = eccent * Math.sin(y); + + con = Math.pow((1 - con) / (1 + con), eccent * 0.5); + + var ts = Math.tan(0.5 * ((Math.PI * 0.5) - y)) / con; + y = -r2 * Math.log(ts); + + return new L.Point(x, y); + }, + + unproject: function (point) { // (Point, Boolean) -> LatLng + var d = L.LatLng.RAD_TO_DEG, + r = this.R_MAJOR, + r2 = this.R_MINOR, + lng = point.x * d / r, + tmp = r2 / r, + eccent = Math.sqrt(1 - (tmp * tmp)), + ts = Math.exp(- point.y / r2), + phi = (Math.PI / 2) - 2 * Math.atan(ts), + numIter = 15, + tol = 1e-7, + i = numIter, + dphi = 0.1, + con; + + while ((Math.abs(dphi) > tol) && (--i > 0)) { + con = eccent * Math.sin(phi); + dphi = (Math.PI / 2) - 2 * Math.atan(ts * + Math.pow((1.0 - con) / (1.0 + con), 0.5 * eccent)) - phi; + phi += dphi; + } + + return new L.LatLng(phi * d, lng); + } +}; + + + +L.CRS.EPSG3395 = L.extend({}, L.CRS, { + code: 'EPSG:3395', + + projection: L.Projection.Mercator, + + transformation: (function () { + var m = L.Projection.Mercator, + r = m.R_MAJOR, + r2 = m.R_MINOR; + + return new L.Transformation(0.5 / (Math.PI * r), 0.5, -0.5 / (Math.PI * r2), 0.5); + }()) +}); + + +/* + * L.TileLayer is used for standard xyz-numbered tile layers. + */ + +L.TileLayer = L.Class.extend({ + includes: L.Mixin.Events, + + options: { + minZoom: 0, + maxZoom: 18, + tileSize: 256, + subdomains: 'abc', + errorTileUrl: '', + attribution: '', + zoomOffset: 0, + opacity: 1, + /* (undefined works too) + zIndex: null, + tms: false, + continuousWorld: false, + noWrap: false, + zoomReverse: false, + detectRetina: false, + reuseTiles: false, + */ + unloadInvisibleTiles: L.Browser.mobile, + updateWhenIdle: L.Browser.mobile + }, + + initialize: function (url, options) { + options = L.setOptions(this, options); + + // detecting retina displays, adjusting tileSize and zoom levels + if (options.detectRetina && L.Browser.retina && options.maxZoom > 0) { + + options.tileSize = Math.floor(options.tileSize / 2); + options.zoomOffset++; + + if (options.minZoom > 0) { + options.minZoom--; + } + this.options.maxZoom--; + } + + this._url = url; + + var subdomains = this.options.subdomains; + + if (typeof subdomains === 'string') { + this.options.subdomains = subdomains.split(''); + } + }, + + onAdd: function (map) { + this._map = map; + + // create a container div for tiles + this._initContainer(); + + // create an image to clone for tiles + this._createTileProto(); + + // set up events + map.on({ + 'viewreset': this._resetCallback, + 'moveend': this._update + }, this); + + if (!this.options.updateWhenIdle) { + this._limitedUpdate = L.Util.limitExecByInterval(this._update, 150, this); + map.on('move', this._limitedUpdate, this); + } + + this._reset(); + this._update(); + }, + + addTo: function (map) { + map.addLayer(this); + return this; + }, + + onRemove: function (map) { + this._container.parentNode.removeChild(this._container); + + map.off({ + 'viewreset': this._resetCallback, + 'moveend': this._update + }, this); + + if (!this.options.updateWhenIdle) { + map.off('move', this._limitedUpdate, this); + } + + this._container = null; + this._map = null; + }, + + bringToFront: function () { + var pane = this._map._panes.tilePane; + + if (this._container) { + pane.appendChild(this._container); + this._setAutoZIndex(pane, Math.max); + } + + return this; + }, + + bringToBack: function () { + var pane = this._map._panes.tilePane; + + if (this._container) { + pane.insertBefore(this._container, pane.firstChild); + this._setAutoZIndex(pane, Math.min); + } + + return this; + }, + + getAttribution: function () { + return this.options.attribution; + }, + + setOpacity: function (opacity) { + this.options.opacity = opacity; + + if (this._map) { + this._updateOpacity(); + } + + return this; + }, + + setZIndex: function (zIndex) { + this.options.zIndex = zIndex; + this._updateZIndex(); + + return this; + }, + + setUrl: function (url, noRedraw) { + this._url = url; + + if (!noRedraw) { + this.redraw(); + } + + return this; + }, + + redraw: function () { + if (this._map) { + this._map._panes.tilePane.empty = false; + this._reset(true); + this._update(); + } + return this; + }, + + _updateZIndex: function () { + if (this._container && this.options.zIndex !== undefined) { + this._container.style.zIndex = this.options.zIndex; + } + }, + + _setAutoZIndex: function (pane, compare) { + + var layers = pane.children, + edgeZIndex = -compare(Infinity, -Infinity), // -Infinity for max, Infinity for min + zIndex, i, len; + + for (i = 0, len = layers.length; i < len; i++) { + + if (layers[i] !== this._container) { + zIndex = parseInt(layers[i].style.zIndex, 10); + + if (!isNaN(zIndex)) { + edgeZIndex = compare(edgeZIndex, zIndex); + } + } + } + + this.options.zIndex = this._container.style.zIndex = + (isFinite(edgeZIndex) ? edgeZIndex : 0) + compare(1, -1); + }, + + _updateOpacity: function () { + L.DomUtil.setOpacity(this._container, this.options.opacity); + + // stupid webkit hack to force redrawing of tiles + var i, + tiles = this._tiles; + + if (L.Browser.webkit) { + for (i in tiles) { + if (tiles.hasOwnProperty(i)) { + tiles[i].style.webkitTransform += ' translate(0,0)'; + } + } + } + }, + + _initContainer: function () { + var tilePane = this._map._panes.tilePane; + + if (!this._container || tilePane.empty) { + this._container = L.DomUtil.create('div', 'leaflet-layer'); + + this._updateZIndex(); + + tilePane.appendChild(this._container); + + if (this.options.opacity < 1) { + this._updateOpacity(); + } + } + }, + + _resetCallback: function (e) { + this._reset(e.hard); + }, + + _reset: function (clearOldContainer) { + var tiles = this._tiles; + + for (var key in tiles) { + if (tiles.hasOwnProperty(key)) { + this.fire('tileunload', {tile: tiles[key]}); + } + } + + this._tiles = {}; + this._tilesToLoad = 0; + + if (this.options.reuseTiles) { + this._unusedTiles = []; + } + + if (clearOldContainer && this._container) { + this._container.innerHTML = ""; + } + + this._initContainer(); + }, + + _update: function () { + + if (!this._map) { return; } + + var bounds = this._map.getPixelBounds(), + zoom = this._map.getZoom(), + tileSize = this.options.tileSize; + + if (zoom > this.options.maxZoom || zoom < this.options.minZoom) { + return; + } + + var nwTilePoint = new L.Point( + Math.floor(bounds.min.x / tileSize), + Math.floor(bounds.min.y / tileSize)), + + seTilePoint = new L.Point( + Math.floor(bounds.max.x / tileSize), + Math.floor(bounds.max.y / tileSize)), + + tileBounds = new L.Bounds(nwTilePoint, seTilePoint); + + this._addTilesFromCenterOut(tileBounds); + + if (this.options.unloadInvisibleTiles || this.options.reuseTiles) { + this._removeOtherTiles(tileBounds); + } + }, + + _addTilesFromCenterOut: function (bounds) { + var queue = [], + center = bounds.getCenter(); + + var j, i, point; + + for (j = bounds.min.y; j <= bounds.max.y; j++) { + for (i = bounds.min.x; i <= bounds.max.x; i++) { + point = new L.Point(i, j); + + if (this._tileShouldBeLoaded(point)) { + queue.push(point); + } + } + } + + var tilesToLoad = queue.length; + + if (tilesToLoad === 0) { return; } + + // load tiles in order of their distance to center + queue.sort(function (a, b) { + return a.distanceTo(center) - b.distanceTo(center); + }); + + var fragment = document.createDocumentFragment(); + + // if its the first batch of tiles to load + if (!this._tilesToLoad) { + this.fire('loading'); + } + + this._tilesToLoad += tilesToLoad; + + for (i = 0; i < tilesToLoad; i++) { + this._addTile(queue[i], fragment); + } + + this._container.appendChild(fragment); + }, + + _tileShouldBeLoaded: function (tilePoint) { + if ((tilePoint.x + ':' + tilePoint.y) in this._tiles) { + return false; // already loaded + } + + if (!this.options.continuousWorld) { + var limit = this._getWrapTileNum(); + + if (this.options.noWrap && (tilePoint.x < 0 || tilePoint.x >= limit) || + tilePoint.y < 0 || tilePoint.y >= limit) { + return false; // exceeds world bounds + } + } + + return true; + }, + + _removeOtherTiles: function (bounds) { + var kArr, x, y, key; + + for (key in this._tiles) { + if (this._tiles.hasOwnProperty(key)) { + kArr = key.split(':'); + x = parseInt(kArr[0], 10); + y = parseInt(kArr[1], 10); + + // remove tile if it's out of bounds + if (x < bounds.min.x || x > bounds.max.x || y < bounds.min.y || y > bounds.max.y) { + this._removeTile(key); + } + } + } + }, + + _removeTile: function (key) { + var tile = this._tiles[key]; + + this.fire("tileunload", {tile: tile, url: tile.src}); + + if (this.options.reuseTiles) { + L.DomUtil.removeClass(tile, 'leaflet-tile-loaded'); + this._unusedTiles.push(tile); + + } else if (tile.parentNode === this._container) { + this._container.removeChild(tile); + } + + // for https://github.com/CloudMade/Leaflet/issues/137 + if (!L.Browser.android) { + tile.src = L.Util.emptyImageUrl; + } + + delete this._tiles[key]; + }, + + _addTile: function (tilePoint, container) { + var tilePos = this._getTilePos(tilePoint); + + // get unused tile - or create a new tile + var tile = this._getTile(); + + /* + Chrome 20 layouts much faster with top/left (verify with timeline, frames) + Android 4 browser has display issues with top/left and requires transform instead + Android 3 browser not tested + Android 2 browser requires top/left or tiles disappear on load or first drag + (reappear after zoom) https://github.com/CloudMade/Leaflet/issues/866 + (other browsers don't currently care) - see debug/hacks/jitter.html for an example + */ + L.DomUtil.setPosition(tile, tilePos, L.Browser.chrome || L.Browser.android23); + + this._tiles[tilePoint.x + ':' + tilePoint.y] = tile; + + this._loadTile(tile, tilePoint); + + if (tile.parentNode !== this._container) { + container.appendChild(tile); + } + }, + + _getZoomForUrl: function () { + + var options = this.options, + zoom = this._map.getZoom(); + + if (options.zoomReverse) { + zoom = options.maxZoom - zoom; + } + + return zoom + options.zoomOffset; + }, + + _getTilePos: function (tilePoint) { + var origin = this._map.getPixelOrigin(), + tileSize = this.options.tileSize; + + return tilePoint.multiplyBy(tileSize).subtract(origin); + }, + + // image-specific code (override to implement e.g. Canvas or SVG tile layer) + + getTileUrl: function (tilePoint) { + this._adjustTilePoint(tilePoint); + + return L.Util.template(this._url, L.extend({ + s: this._getSubdomain(tilePoint), + z: this._getZoomForUrl(), + x: tilePoint.x, + y: tilePoint.y + }, this.options)); + }, + + _getWrapTileNum: function () { + // TODO refactor, limit is not valid for non-standard projections + return Math.pow(2, this._getZoomForUrl()); + }, + + _adjustTilePoint: function (tilePoint) { + + var limit = this._getWrapTileNum(); + + // wrap tile coordinates + if (!this.options.continuousWorld && !this.options.noWrap) { + tilePoint.x = ((tilePoint.x % limit) + limit) % limit; + } + + if (this.options.tms) { + tilePoint.y = limit - tilePoint.y - 1; + } + }, + + _getSubdomain: function (tilePoint) { + var index = (tilePoint.x + tilePoint.y) % this.options.subdomains.length; + return this.options.subdomains[index]; + }, + + _createTileProto: function () { + var img = this._tileImg = L.DomUtil.create('img', 'leaflet-tile'); + img.style.width = img.style.height = this.options.tileSize + 'px'; + img.galleryimg = 'no'; + }, + + _getTile: function () { + if (this.options.reuseTiles && this._unusedTiles.length > 0) { + var tile = this._unusedTiles.pop(); + this._resetTile(tile); + return tile; + } + return this._createTile(); + }, + + // Override if data stored on a tile needs to be cleaned up before reuse + _resetTile: function (/*tile*/) {}, + + _createTile: function () { + var tile = this._tileImg.cloneNode(false); + tile.onselectstart = tile.onmousemove = L.Util.falseFn; + return tile; + }, + + _loadTile: function (tile, tilePoint) { + tile._layer = this; + tile.onload = this._tileOnLoad; + tile.onerror = this._tileOnError; + + tile.src = this.getTileUrl(tilePoint); + }, + + _tileLoaded: function () { + this._tilesToLoad--; + if (!this._tilesToLoad) { + this.fire('load'); + } + }, + + _tileOnLoad: function () { + var layer = this._layer; + + //Only if we are loading an actual image + if (this.src !== L.Util.emptyImageUrl) { + L.DomUtil.addClass(this, 'leaflet-tile-loaded'); + + layer.fire('tileload', { + tile: this, + url: this.src + }); + } + + layer._tileLoaded(); + }, + + _tileOnError: function () { + var layer = this._layer; + + layer.fire('tileerror', { + tile: this, + url: this.src + }); + + var newUrl = layer.options.errorTileUrl; + if (newUrl) { + this.src = newUrl; + } + + layer._tileLoaded(); + } +}); + +L.tileLayer = function (url, options) { + return new L.TileLayer(url, options); +}; + + +/* + * L.TileLayer.WMS is used for putting WMS tile layers on the map. + */ + +L.TileLayer.WMS = L.TileLayer.extend({ + + defaultWmsParams: { + service: 'WMS', + request: 'GetMap', + version: '1.1.1', + layers: '', + styles: '', + format: 'image/jpeg', + transparent: false + }, + + initialize: function (url, options) { // (String, Object) + + this._url = url; + + var wmsParams = L.extend({}, this.defaultWmsParams); + + if (options.detectRetina && L.Browser.retina) { + wmsParams.width = wmsParams.height = this.options.tileSize * 2; + } else { + wmsParams.width = wmsParams.height = this.options.tileSize; + } + + for (var i in options) { + // all keys that are not TileLayer options go to WMS params + if (!this.options.hasOwnProperty(i)) { + wmsParams[i] = options[i]; + } + } + + this.wmsParams = wmsParams; + + L.setOptions(this, options); + }, + + onAdd: function (map) { + + var projectionKey = parseFloat(this.wmsParams.version) >= 1.3 ? 'crs' : 'srs'; + this.wmsParams[projectionKey] = map.options.crs.code; + + L.TileLayer.prototype.onAdd.call(this, map); + }, + + getTileUrl: function (tilePoint, zoom) { // (Point, Number) -> String + + this._adjustTilePoint(tilePoint); + + var map = this._map, + crs = map.options.crs, + tileSize = this.options.tileSize, + + nwPoint = tilePoint.multiplyBy(tileSize), + sePoint = nwPoint.add(new L.Point(tileSize, tileSize)), + + nw = crs.project(map.unproject(nwPoint, zoom)), + se = crs.project(map.unproject(sePoint, zoom)), + + bbox = [nw.x, se.y, se.x, nw.y].join(','), + + url = L.Util.template(this._url, {s: this._getSubdomain(tilePoint)}); + + return url + L.Util.getParamString(this.wmsParams, url) + "&bbox=" + bbox; + }, + + setParams: function (params, noRedraw) { + + L.extend(this.wmsParams, params); + + if (!noRedraw) { + this.redraw(); + } + + return this; + } +}); + +L.tileLayer.wms = function (url, options) { + return new L.TileLayer.WMS(url, options); +}; + + +/* + * L.TileLayer.Canvas is a class that you can use as a base for creating + * dynamically drawn Canvas-based tile layers. + */ + +L.TileLayer.Canvas = L.TileLayer.extend({ + options: { + async: false + }, + + initialize: function (options) { + L.setOptions(this, options); + }, + + redraw: function () { + var tiles = this._tiles; + + for (var i in tiles) { + if (tiles.hasOwnProperty(i)) { + this._redrawTile(tiles[i]); + } + } + }, + + _redrawTile: function (tile) { + this.drawTile(tile, tile._tilePoint, this._map._zoom); + }, + + _createTileProto: function () { + var proto = this._canvasProto = L.DomUtil.create('canvas', 'leaflet-tile'); + proto.width = proto.height = this.options.tileSize; + }, + + _createTile: function () { + var tile = this._canvasProto.cloneNode(false); + tile.onselectstart = tile.onmousemove = L.Util.falseFn; + return tile; + }, + + _loadTile: function (tile, tilePoint) { + tile._layer = this; + tile._tilePoint = tilePoint; + + this._redrawTile(tile); + + if (!this.options.async) { + this.tileDrawn(tile); + } + }, + + drawTile: function (/*tile, tilePoint*/) { + // override with rendering code + }, + + tileDrawn: function (tile) { + this._tileOnLoad.call(tile); + } +}); + + +L.tileLayer.canvas = function (options) { + return new L.TileLayer.Canvas(options); +}; + + +/* + * L.ImageOverlay is used to overlay images over the map (to specific geographical bounds). + */ + +L.ImageOverlay = L.Class.extend({ + includes: L.Mixin.Events, + + options: { + opacity: 1 + }, + + initialize: function (url, bounds, options) { // (String, LatLngBounds, Object) + this._url = url; + this._bounds = L.latLngBounds(bounds); + + L.setOptions(this, options); + }, + + onAdd: function (map) { + this._map = map; + + if (!this._image) { + this._initImage(); + } + + map._panes.overlayPane.appendChild(this._image); + + map.on('viewreset', this._reset, this); + + if (map.options.zoomAnimation && L.Browser.any3d) { + map.on('zoomanim', this._animateZoom, this); + } + + this._reset(); + }, + + onRemove: function (map) { + map.getPanes().overlayPane.removeChild(this._image); + + map.off('viewreset', this._reset, this); + + if (map.options.zoomAnimation) { + map.off('zoomanim', this._animateZoom, this); + } + }, + + addTo: function (map) { + map.addLayer(this); + return this; + }, + + setOpacity: function (opacity) { + this.options.opacity = opacity; + this._updateOpacity(); + return this; + }, + + // TODO remove bringToFront/bringToBack duplication from TileLayer/Path + bringToFront: function () { + if (this._image) { + this._map._panes.overlayPane.appendChild(this._image); + } + return this; + }, + + bringToBack: function () { + var pane = this._map._panes.overlayPane; + if (this._image) { + pane.insertBefore(this._image, pane.firstChild); + } + return this; + }, + + _initImage: function () { + this._image = L.DomUtil.create('img', 'leaflet-image-layer'); + + if (this._map.options.zoomAnimation && L.Browser.any3d) { + L.DomUtil.addClass(this._image, 'leaflet-zoom-animated'); + } else { + L.DomUtil.addClass(this._image, 'leaflet-zoom-hide'); + } + + this._updateOpacity(); + + //TODO createImage util method to remove duplication + L.extend(this._image, { + galleryimg: 'no', + onselectstart: L.Util.falseFn, + onmousemove: L.Util.falseFn, + onload: L.bind(this._onImageLoad, this), + src: this._url + }); + }, + + _animateZoom: function (e) { + var map = this._map, + image = this._image, + scale = map.getZoomScale(e.zoom), + nw = this._bounds.getNorthWest(), + se = this._bounds.getSouthEast(), + + topLeft = map._latLngToNewLayerPoint(nw, e.zoom, e.center), + size = map._latLngToNewLayerPoint(se, e.zoom, e.center)._subtract(topLeft), + origin = topLeft._add(size._multiplyBy((1 / 2) * (1 - 1 / scale))); + + image.style[L.DomUtil.TRANSFORM] = + L.DomUtil.getTranslateString(origin) + ' scale(' + scale + ') '; + }, + + _reset: function () { + var image = this._image, + topLeft = this._map.latLngToLayerPoint(this._bounds.getNorthWest()), + size = this._map.latLngToLayerPoint(this._bounds.getSouthEast())._subtract(topLeft); + + L.DomUtil.setPosition(image, topLeft); + + image.style.width = size.x + 'px'; + image.style.height = size.y + 'px'; + }, + + _onImageLoad: function () { + this.fire('load'); + }, + + _updateOpacity: function () { + L.DomUtil.setOpacity(this._image, this.options.opacity); + } +}); + +L.imageOverlay = function (url, bounds, options) { + return new L.ImageOverlay(url, bounds, options); +}; + + +/* + * L.Icon is an image-based icon class that you can use with L.Marker for custom markers. + */ + +L.Icon = L.Class.extend({ + options: { + /* + iconUrl: (String) (required) + iconRetinaUrl: (String) (optional, used for retina devices if detected) + iconSize: (Point) (can be set through CSS) + iconAnchor: (Point) (centered by default, can be set in CSS with negative margins) + popupAnchor: (Point) (if not specified, popup opens in the anchor point) + shadowUrl: (Point) (no shadow by default) + shadowRetinaUrl: (String) (optional, used for retina devices if detected) + shadowSize: (Point) + shadowAnchor: (Point) + */ + className: '' + }, + + initialize: function (options) { + L.setOptions(this, options); + }, + + createIcon: function () { + return this._createIcon('icon'); + }, + + createShadow: function () { + return this._createIcon('shadow'); + }, + + _createIcon: function (name) { + var src = this._getIconUrl(name); + + if (!src) { + if (name === 'icon') { + throw new Error("iconUrl not set in Icon options (see the docs)."); + } + return null; + } + + var img = this._createImg(src); + this._setIconStyles(img, name); + + return img; + }, + + _setIconStyles: function (img, name) { + var options = this.options, + size = L.point(options[name + 'Size']), + anchor; + + if (name === 'shadow') { + anchor = L.point(options.shadowAnchor || options.iconAnchor); + } else { + anchor = L.point(options.iconAnchor); + } + + if (!anchor && size) { + anchor = size.divideBy(2, true); + } + + img.className = 'leaflet-marker-' + name + ' ' + options.className; + + if (anchor) { + img.style.marginLeft = (-anchor.x) + 'px'; + img.style.marginTop = (-anchor.y) + 'px'; + } + + if (size) { + img.style.width = size.x + 'px'; + img.style.height = size.y + 'px'; + } + }, + + _createImg: function (src) { + var el; + + if (!L.Browser.ie6) { + el = document.createElement('img'); + el.src = src; + } else { + el = document.createElement('div'); + el.style.filter = + 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + src + '")'; + } + return el; + }, + + _getIconUrl: function (name) { + if (L.Browser.retina && this.options[name + 'RetinaUrl']) { + return this.options[name + 'RetinaUrl']; + } + return this.options[name + 'Url']; + } +}); + +L.icon = function (options) { + return new L.Icon(options); +}; + + +/* + * L.Icon.Default is the blue marker icon used by default in Leaflet. + */ + +L.Icon.Default = L.Icon.extend({ + + options: { + iconSize: new L.Point(25, 41), + iconAnchor: new L.Point(12, 41), + popupAnchor: new L.Point(1, -34), + + shadowSize: new L.Point(41, 41) + }, + + _getIconUrl: function (name) { + var key = name + 'Url'; + + if (this.options[key]) { + return this.options[key]; + } + + if (L.Browser.retina && name === 'icon') { + name += '@2x'; + } + + var path = L.Icon.Default.imagePath; + + if (!path) { + throw new Error("Couldn't autodetect L.Icon.Default.imagePath, set it manually."); + } + + return path + '/marker-' + name + '.png'; + } +}); + +L.Icon.Default.imagePath = (function () { + var scripts = document.getElementsByTagName('script'), + leafletRe = /\/?leaflet[\-\._]?([\w\-\._]*)\.js\??/; + + var i, len, src, matches; + + for (i = 0, len = scripts.length; i < len; i++) { + src = scripts[i].src; + matches = src.match(leafletRe); + + if (matches) { + return src.split(leafletRe)[0] + '/images'; + } + } +}()); + + +/* + * L.Marker is used to display clickable/draggable icons on the map. + */ + +L.Marker = L.Class.extend({ + + includes: L.Mixin.Events, + + options: { + icon: new L.Icon.Default(), + title: '', + clickable: true, + draggable: false, + zIndexOffset: 0, + opacity: 1, + riseOnHover: false, + riseOffset: 250 + }, + + initialize: function (latlng, options) { + L.setOptions(this, options); + this._latlng = L.latLng(latlng); + }, + + onAdd: function (map) { + this._map = map; + + map.on('viewreset', this.update, this); + + this._initIcon(); + this.update(); + + if (map.options.zoomAnimation && map.options.markerZoomAnimation) { + map.on('zoomanim', this._animateZoom, this); + } + }, + + addTo: function (map) { + map.addLayer(this); + return this; + }, + + onRemove: function (map) { + this._removeIcon(); + + this.fire('remove'); + + map.off({ + 'viewreset': this.update, + 'zoomanim': this._animateZoom + }, this); + + this._map = null; + }, + + getLatLng: function () { + return this._latlng; + }, + + setLatLng: function (latlng) { + this._latlng = L.latLng(latlng); + + this.update(); + + return this.fire('move', { latlng: this._latlng }); + }, + + setZIndexOffset: function (offset) { + this.options.zIndexOffset = offset; + this.update(); + + return this; + }, + + setIcon: function (icon) { + if (this._map) { + this._removeIcon(); + } + + this.options.icon = icon; + + if (this._map) { + this._initIcon(); + this.update(); + } + + return this; + }, + + update: function () { + if (this._icon) { + var pos = this._map.latLngToLayerPoint(this._latlng).round(); + this._setPos(pos); + } + + return this; + }, + + _initIcon: function () { + var options = this.options, + map = this._map, + animation = (map.options.zoomAnimation && map.options.markerZoomAnimation), + classToAdd = animation ? 'leaflet-zoom-animated' : 'leaflet-zoom-hide', + needOpacityUpdate = false; + + if (!this._icon) { + this._icon = options.icon.createIcon(); + + if (options.title) { + this._icon.title = options.title; + } + + this._initInteraction(); + needOpacityUpdate = (this.options.opacity < 1); + + L.DomUtil.addClass(this._icon, classToAdd); + + if (options.riseOnHover) { + L.DomEvent + .on(this._icon, 'mouseover', this._bringToFront, this) + .on(this._icon, 'mouseout', this._resetZIndex, this); + } + } + + if (!this._shadow) { + this._shadow = options.icon.createShadow(); + + if (this._shadow) { + L.DomUtil.addClass(this._shadow, classToAdd); + needOpacityUpdate = (this.options.opacity < 1); + } + } + + if (needOpacityUpdate) { + this._updateOpacity(); + } + + var panes = this._map._panes; + + panes.markerPane.appendChild(this._icon); + + if (this._shadow) { + panes.shadowPane.appendChild(this._shadow); + } + }, + + _removeIcon: function () { + var panes = this._map._panes; + + if (this.options.riseOnHover) { + L.DomEvent + .off(this._icon, 'mouseover', this._bringToFront) + .off(this._icon, 'mouseout', this._resetZIndex); + } + + panes.markerPane.removeChild(this._icon); + + if (this._shadow) { + panes.shadowPane.removeChild(this._shadow); + } + + this._icon = this._shadow = null; + }, + + _setPos: function (pos) { + L.DomUtil.setPosition(this._icon, pos); + + if (this._shadow) { + L.DomUtil.setPosition(this._shadow, pos); + } + + this._zIndex = pos.y + this.options.zIndexOffset; + + this._resetZIndex(); + }, + + _updateZIndex: function (offset) { + this._icon.style.zIndex = this._zIndex + offset; + }, + + _animateZoom: function (opt) { + var pos = this._map._latLngToNewLayerPoint(this._latlng, opt.zoom, opt.center); + + this._setPos(pos); + }, + + _initInteraction: function () { + + if (!this.options.clickable) { return; } + + // TODO refactor into something shared with Map/Path/etc. to DRY it up + + var icon = this._icon, + events = ['dblclick', 'mousedown', 'mouseover', 'mouseout', 'contextmenu']; + + L.DomUtil.addClass(icon, 'leaflet-clickable'); + L.DomEvent.on(icon, 'click', this._onMouseClick, this); + + for (var i = 0; i < events.length; i++) { + L.DomEvent.on(icon, events[i], this._fireMouseEvent, this); + } + + if (L.Handler.MarkerDrag) { + this.dragging = new L.Handler.MarkerDrag(this); + + if (this.options.draggable) { + this.dragging.enable(); + } + } + }, + + _onMouseClick: function (e) { + var wasDragged = this.dragging && this.dragging.moved(); + + if (this.hasEventListeners(e.type) || wasDragged) { + L.DomEvent.stopPropagation(e); + } + + if (wasDragged) { return; } + + if ((!this.dragging || !this.dragging._enabled) && this._map.dragging && this._map.dragging.moved()) { return; } + + this.fire(e.type, { + originalEvent: e + }); + }, + + _fireMouseEvent: function (e) { + + this.fire(e.type, { + originalEvent: e + }); + + // TODO proper custom event propagation + // this line will always be called if marker is in a FeatureGroup + if (e.type === 'contextmenu' && this.hasEventListeners(e.type)) { + L.DomEvent.preventDefault(e); + } + if (e.type !== 'mousedown') { + L.DomEvent.stopPropagation(e); + } + }, + + setOpacity: function (opacity) { + this.options.opacity = opacity; + if (this._map) { + this._updateOpacity(); + } + }, + + _updateOpacity: function () { + L.DomUtil.setOpacity(this._icon, this.options.opacity); + if (this._shadow) { + L.DomUtil.setOpacity(this._shadow, this.options.opacity); + } + }, + + _bringToFront: function () { + this._updateZIndex(this.options.riseOffset); + }, + + _resetZIndex: function () { + this._updateZIndex(0); + } +}); + +L.marker = function (latlng, options) { + return new L.Marker(latlng, options); +}; + + +/* + * L.DivIcon is a lightweight HTML-based icon class (as opposed to the image-based L.Icon) + * to use with L.Marker. + */ + +L.DivIcon = L.Icon.extend({ + options: { + iconSize: new L.Point(12, 12), // also can be set through CSS + /* + iconAnchor: (Point) + popupAnchor: (Point) + html: (String) + bgPos: (Point) + */ + className: 'leaflet-div-icon' + }, + + createIcon: function () { + var div = document.createElement('div'), + options = this.options; + + if (options.html) { + div.innerHTML = options.html; + } + + if (options.bgPos) { + div.style.backgroundPosition = + (-options.bgPos.x) + 'px ' + (-options.bgPos.y) + 'px'; + } + + this._setIconStyles(div, 'icon'); + return div; + }, + + createShadow: function () { + return null; + } +}); + +L.divIcon = function (options) { + return new L.DivIcon(options); +}; + + +/* + * L.Popup is used for displaying popups on the map. + */ + +L.Map.mergeOptions({ + closePopupOnClick: true +}); + +L.Popup = L.Class.extend({ + includes: L.Mixin.Events, + + options: { + minWidth: 50, + maxWidth: 300, + maxHeight: null, + autoPan: true, + closeButton: true, + offset: new L.Point(0, 6), + autoPanPadding: new L.Point(5, 5), + className: '', + zoomAnimation: true + }, + + initialize: function (options, source) { + L.setOptions(this, options); + + this._source = source; + this._animated = L.Browser.any3d && this.options.zoomAnimation; + }, + + onAdd: function (map) { + this._map = map; + + if (!this._container) { + this._initLayout(); + } + this._updateContent(); + + var animFade = map.options.fadeAnimation; + + if (animFade) { + L.DomUtil.setOpacity(this._container, 0); + } + map._panes.popupPane.appendChild(this._container); + + map.on('viewreset', this._updatePosition, this); + + if (this._animated) { + map.on('zoomanim', this._zoomAnimation, this); + } + + if (map.options.closePopupOnClick) { + map.on('preclick', this._close, this); + } + + this._update(); + + if (animFade) { + L.DomUtil.setOpacity(this._container, 1); + } + }, + + addTo: function (map) { + map.addLayer(this); + return this; + }, + + openOn: function (map) { + map.openPopup(this); + return this; + }, + + onRemove: function (map) { + map._panes.popupPane.removeChild(this._container); + + L.Util.falseFn(this._container.offsetWidth); // force reflow + + map.off({ + viewreset: this._updatePosition, + preclick: this._close, + zoomanim: this._zoomAnimation + }, this); + + if (map.options.fadeAnimation) { + L.DomUtil.setOpacity(this._container, 0); + } + + this._map = null; + }, + + setLatLng: function (latlng) { + this._latlng = L.latLng(latlng); + this._update(); + return this; + }, + + setContent: function (content) { + this._content = content; + this._update(); + return this; + }, + + _close: function () { + var map = this._map; + + if (map) { + map._popup = null; + + map + .removeLayer(this) + .fire('popupclose', {popup: this}); + } + }, + + _initLayout: function () { + var prefix = 'leaflet-popup', + containerClass = prefix + ' ' + this.options.className + ' leaflet-zoom-' + + (this._animated ? 'animated' : 'hide'), + container = this._container = L.DomUtil.create('div', containerClass), + closeButton; + + if (this.options.closeButton) { + closeButton = this._closeButton = + L.DomUtil.create('a', prefix + '-close-button', container); + closeButton.href = '#close'; + closeButton.innerHTML = '×'; + + L.DomEvent.on(closeButton, 'click', this._onCloseButtonClick, this); + } + + var wrapper = this._wrapper = + L.DomUtil.create('div', prefix + '-content-wrapper', container); + L.DomEvent.disableClickPropagation(wrapper); + + this._contentNode = L.DomUtil.create('div', prefix + '-content', wrapper); + L.DomEvent.on(this._contentNode, 'mousewheel', L.DomEvent.stopPropagation); + + this._tipContainer = L.DomUtil.create('div', prefix + '-tip-container', container); + this._tip = L.DomUtil.create('div', prefix + '-tip', this._tipContainer); + }, + + _update: function () { + if (!this._map) { return; } + + this._container.style.visibility = 'hidden'; + + this._updateContent(); + this._updateLayout(); + this._updatePosition(); + + this._container.style.visibility = ''; + + this._adjustPan(); + }, + + _updateContent: function () { + if (!this._content) { return; } + + if (typeof this._content === 'string') { + this._contentNode.innerHTML = this._content; + } else { + while (this._contentNode.hasChildNodes()) { + this._contentNode.removeChild(this._contentNode.firstChild); + } + this._contentNode.appendChild(this._content); + } + this.fire('contentupdate'); + }, + + _updateLayout: function () { + var container = this._contentNode, + style = container.style; + + style.width = ''; + style.whiteSpace = 'nowrap'; + + var width = container.offsetWidth; + width = Math.min(width, this.options.maxWidth); + width = Math.max(width, this.options.minWidth); + + style.width = (width + 1) + 'px'; + style.whiteSpace = ''; + + style.height = ''; + + var height = container.offsetHeight, + maxHeight = this.options.maxHeight, + scrolledClass = 'leaflet-popup-scrolled'; + + if (maxHeight && height > maxHeight) { + style.height = maxHeight + 'px'; + L.DomUtil.addClass(container, scrolledClass); + } else { + L.DomUtil.removeClass(container, scrolledClass); + } + + this._containerWidth = this._container.offsetWidth; + }, + + _updatePosition: function () { + if (!this._map) { return; } + + var pos = this._map.latLngToLayerPoint(this._latlng), + animated = this._animated, + offset = this.options.offset; + + if (animated) { + L.DomUtil.setPosition(this._container, pos); + } + + this._containerBottom = -offset.y - (animated ? 0 : pos.y); + this._containerLeft = -Math.round(this._containerWidth / 2) + offset.x + (animated ? 0 : pos.x); + + //Bottom position the popup in case the height of the popup changes (images loading etc) + this._container.style.bottom = this._containerBottom + 'px'; + this._container.style.left = this._containerLeft + 'px'; + }, + + _zoomAnimation: function (opt) { + var pos = this._map._latLngToNewLayerPoint(this._latlng, opt.zoom, opt.center); + + L.DomUtil.setPosition(this._container, pos); + }, + + _adjustPan: function () { + if (!this.options.autoPan) { return; } + + var map = this._map, + containerHeight = this._container.offsetHeight, + containerWidth = this._containerWidth, + + layerPos = new L.Point(this._containerLeft, -containerHeight - this._containerBottom); + + if (this._animated) { + layerPos._add(L.DomUtil.getPosition(this._container)); + } + + var containerPos = map.layerPointToContainerPoint(layerPos), + padding = this.options.autoPanPadding, + size = map.getSize(), + dx = 0, + dy = 0; + + if (containerPos.x < 0) { + dx = containerPos.x - padding.x; + } + if (containerPos.x + containerWidth > size.x) { + dx = containerPos.x + containerWidth - size.x + padding.x; + } + if (containerPos.y < 0) { + dy = containerPos.y - padding.y; + } + if (containerPos.y + containerHeight > size.y) { + dy = containerPos.y + containerHeight - size.y + padding.y; + } + + if (dx || dy) { + map.panBy(new L.Point(dx, dy)); + } + }, + + _onCloseButtonClick: function (e) { + this._close(); + L.DomEvent.stop(e); + } +}); + +L.popup = function (options, source) { + return new L.Popup(options, source); +}; + + +/* + * Popup extension to L.Marker, adding popup-related methods. + */ + +L.Marker.include({ + openPopup: function () { + if (this._popup && this._map) { + this._popup.setLatLng(this._latlng); + this._map.openPopup(this._popup); + } + + return this; + }, + + closePopup: function () { + if (this._popup) { + this._popup._close(); + } + return this; + }, + + bindPopup: function (content, options) { + var anchor = L.point(this.options.icon.options.popupAnchor) || new L.Point(0, 0); + + anchor = anchor.add(L.Popup.prototype.options.offset); + + if (options && options.offset) { + anchor = anchor.add(options.offset); + } + + options = L.extend({offset: anchor}, options); + + if (!this._popup) { + this + .on('click', this.openPopup, this) + .on('remove', this.closePopup, this) + .on('move', this._movePopup, this); + } + + this._popup = new L.Popup(options, this) + .setContent(content); + + return this; + }, + + unbindPopup: function () { + if (this._popup) { + this._popup = null; + this + .off('click', this.openPopup) + .off('remove', this.closePopup) + .off('move', this._movePopup); + } + return this; + }, + + _movePopup: function (e) { + this._popup.setLatLng(e.latlng); + } +}); + + +/* + * Adds popup-related methods to L.Map. + */ + +L.Map.include({ + openPopup: function (popup) { + this.closePopup(); + + this._popup = popup; + + return this + .addLayer(popup) + .fire('popupopen', {popup: this._popup}); + }, + + closePopup: function () { + if (this._popup) { + this._popup._close(); + } + return this; + } +}); + + +/* + * L.LayerGroup is a class to combine several layers into one so that + * you can manipulate the group (e.g. add/remove it) as one layer. + */ + +L.LayerGroup = L.Class.extend({ + initialize: function (layers) { + this._layers = {}; + + var i, len; + + if (layers) { + for (i = 0, len = layers.length; i < len; i++) { + this.addLayer(layers[i]); + } + } + }, + + addLayer: function (layer) { + var id = L.stamp(layer); + + this._layers[id] = layer; + + if (this._map) { + this._map.addLayer(layer); + } + + return this; + }, + + removeLayer: function (layer) { + var id = L.stamp(layer); + + delete this._layers[id]; + + if (this._map) { + this._map.removeLayer(layer); + } + + return this; + }, + + clearLayers: function () { + this.eachLayer(this.removeLayer, this); + return this; + }, + + invoke: function (methodName) { + var args = Array.prototype.slice.call(arguments, 1), + i, layer; + + for (i in this._layers) { + if (this._layers.hasOwnProperty(i)) { + layer = this._layers[i]; + + if (layer[methodName]) { + layer[methodName].apply(layer, args); + } + } + } + + return this; + }, + + onAdd: function (map) { + this._map = map; + this.eachLayer(map.addLayer, map); + }, + + onRemove: function (map) { + this.eachLayer(map.removeLayer, map); + this._map = null; + }, + + addTo: function (map) { + map.addLayer(this); + return this; + }, + + eachLayer: function (method, context) { + for (var i in this._layers) { + if (this._layers.hasOwnProperty(i)) { + method.call(context, this._layers[i]); + } + } + }, + + setZIndex: function (zIndex) { + return this.invoke('setZIndex', zIndex); + } +}); + +L.layerGroup = function (layers) { + return new L.LayerGroup(layers); +}; + + +/* + * L.FeatureGroup extends L.LayerGroup by introducing mouse events and additional methods + * shared between a group of interactive layers (like vectors or markers). + */ + +L.FeatureGroup = L.LayerGroup.extend({ + includes: L.Mixin.Events, + + statics: { + EVENTS: 'click dblclick mouseover mouseout mousemove contextmenu' + }, + + addLayer: function (layer) { + if (this._layers[L.stamp(layer)]) { + return this; + } + + layer.on(L.FeatureGroup.EVENTS, this._propagateEvent, this); + + L.LayerGroup.prototype.addLayer.call(this, layer); + + if (this._popupContent && layer.bindPopup) { + layer.bindPopup(this._popupContent, this._popupOptions); + } + + return this.fire('layeradd', {layer: layer}); + }, + + removeLayer: function (layer) { + layer.off(L.FeatureGroup.EVENTS, this._propagateEvent, this); + + L.LayerGroup.prototype.removeLayer.call(this, layer); + + + if (this._popupContent) { + this.invoke('unbindPopup'); + } + + return this.fire('layerremove', {layer: layer}); + }, + + bindPopup: function (content, options) { + this._popupContent = content; + this._popupOptions = options; + return this.invoke('bindPopup', content, options); + }, + + setStyle: function (style) { + return this.invoke('setStyle', style); + }, + + bringToFront: function () { + return this.invoke('bringToFront'); + }, + + bringToBack: function () { + return this.invoke('bringToBack'); + }, + + getBounds: function () { + var bounds = new L.LatLngBounds(); + + this.eachLayer(function (layer) { + bounds.extend(layer instanceof L.Marker ? layer.getLatLng() : layer.getBounds()); + }); + + return bounds; + }, + + _propagateEvent: function (e) { + e.layer = e.target; + e.target = this; + + this.fire(e.type, e); + } +}); + +L.featureGroup = function (layers) { + return new L.FeatureGroup(layers); +}; + + +/* + * L.Path is a base class for rendering vector paths on a map. Inherited by Polyline, Circle, etc. + */ + +L.Path = L.Class.extend({ + includes: [L.Mixin.Events], + + statics: { + // how much to extend the clip area around the map view + // (relative to its size, e.g. 0.5 is half the screen in each direction) + // set it so that SVG element doesn't exceed 1280px (vectors flicker on dragend if it is) + CLIP_PADDING: L.Browser.mobile ? + Math.max(0, Math.min(0.5, + (1280 / Math.max(window.innerWidth, window.innerHeight) - 1) / 2)) : 0.5 + }, + + options: { + stroke: true, + color: '#0033ff', + dashArray: null, + weight: 5, + opacity: 0.5, + + fill: false, + fillColor: null, //same as color by default + fillOpacity: 0.2, + + clickable: true + }, + + initialize: function (options) { + L.setOptions(this, options); + }, + + onAdd: function (map) { + this._map = map; + + if (!this._container) { + this._initElements(); + this._initEvents(); + } + + this.projectLatlngs(); + this._updatePath(); + + if (this._container) { + this._map._pathRoot.appendChild(this._container); + } + + this.fire('add'); + + map.on({ + 'viewreset': this.projectLatlngs, + 'moveend': this._updatePath + }, this); + }, + + addTo: function (map) { + map.addLayer(this); + return this; + }, + + onRemove: function (map) { + map._pathRoot.removeChild(this._container); + + // Need to fire remove event before we set _map to null as the event hooks might need the object + this.fire('remove'); + this._map = null; + + if (L.Browser.vml) { + this._container = null; + this._stroke = null; + this._fill = null; + } + + map.off({ + 'viewreset': this.projectLatlngs, + 'moveend': this._updatePath + }, this); + }, + + projectLatlngs: function () { + // do all projection stuff here + }, + + setStyle: function (style) { + L.setOptions(this, style); + + if (this._container) { + this._updateStyle(); + } + + return this; + }, + + redraw: function () { + if (this._map) { + this.projectLatlngs(); + this._updatePath(); + } + return this; + } +}); + +L.Map.include({ + _updatePathViewport: function () { + var p = L.Path.CLIP_PADDING, + size = this.getSize(), + panePos = L.DomUtil.getPosition(this._mapPane), + min = panePos.multiplyBy(-1)._subtract(size.multiplyBy(p)._round()), + max = min.add(size.multiplyBy(1 + p * 2)._round()); + + this._pathViewport = new L.Bounds(min, max); + } +}); + + +/* + * Extends L.Path with SVG-specific rendering code. + */ + +L.Path.SVG_NS = 'http://www.w3.org/2000/svg'; + +L.Browser.svg = !!(document.createElementNS && document.createElementNS(L.Path.SVG_NS, 'svg').createSVGRect); + +L.Path = L.Path.extend({ + statics: { + SVG: L.Browser.svg + }, + + bringToFront: function () { + var root = this._map._pathRoot, + path = this._container; + + if (path && root.lastChild !== path) { + root.appendChild(path); + } + return this; + }, + + bringToBack: function () { + var root = this._map._pathRoot, + path = this._container, + first = root.firstChild; + + if (path && first !== path) { + root.insertBefore(path, first); + } + return this; + }, + + getPathString: function () { + // form path string here + }, + + _createElement: function (name) { + return document.createElementNS(L.Path.SVG_NS, name); + }, + + _initElements: function () { + this._map._initPathRoot(); + this._initPath(); + this._initStyle(); + }, + + _initPath: function () { + this._container = this._createElement('g'); + + this._path = this._createElement('path'); + this._container.appendChild(this._path); + }, + + _initStyle: function () { + if (this.options.stroke) { + this._path.setAttribute('stroke-linejoin', 'round'); + this._path.setAttribute('stroke-linecap', 'round'); + } + if (this.options.fill) { + this._path.setAttribute('fill-rule', 'evenodd'); + } + this._updateStyle(); + }, + + _updateStyle: function () { + if (this.options.stroke) { + this._path.setAttribute('stroke', this.options.color); + this._path.setAttribute('stroke-opacity', this.options.opacity); + this._path.setAttribute('stroke-width', this.options.weight); + if (this.options.dashArray) { + this._path.setAttribute('stroke-dasharray', this.options.dashArray); + } else { + this._path.removeAttribute('stroke-dasharray'); + } + } else { + this._path.setAttribute('stroke', 'none'); + } + if (this.options.fill) { + this._path.setAttribute('fill', this.options.fillColor || this.options.color); + this._path.setAttribute('fill-opacity', this.options.fillOpacity); + } else { + this._path.setAttribute('fill', 'none'); + } + }, + + _updatePath: function () { + var str = this.getPathString(); + if (!str) { + // fix webkit empty string parsing bug + str = 'M0 0'; + } + this._path.setAttribute('d', str); + }, + + // TODO remove duplication with L.Map + _initEvents: function () { + if (this.options.clickable) { + if (L.Browser.svg || !L.Browser.vml) { + this._path.setAttribute('class', 'leaflet-clickable'); + } + + L.DomEvent.on(this._container, 'click', this._onMouseClick, this); + + var events = ['dblclick', 'mousedown', 'mouseover', + 'mouseout', 'mousemove', 'contextmenu']; + for (var i = 0; i < events.length; i++) { + L.DomEvent.on(this._container, events[i], this._fireMouseEvent, this); + } + } + }, + + _onMouseClick: function (e) { + if (this._map.dragging && this._map.dragging.moved()) { return; } + + this._fireMouseEvent(e); + }, + + _fireMouseEvent: function (e) { + if (!this.hasEventListeners(e.type)) { return; } + + var map = this._map, + containerPoint = map.mouseEventToContainerPoint(e), + layerPoint = map.containerPointToLayerPoint(containerPoint), + latlng = map.layerPointToLatLng(layerPoint); + + this.fire(e.type, { + latlng: latlng, + layerPoint: layerPoint, + containerPoint: containerPoint, + originalEvent: e + }); + + if (e.type === 'contextmenu') { + L.DomEvent.preventDefault(e); + } + if (e.type !== 'mousemove') { + L.DomEvent.stopPropagation(e); + } + } +}); + +L.Map.include({ + _initPathRoot: function () { + if (!this._pathRoot) { + this._pathRoot = L.Path.prototype._createElement('svg'); + this._panes.overlayPane.appendChild(this._pathRoot); + + if (this.options.zoomAnimation && L.Browser.any3d) { + this._pathRoot.setAttribute('class', ' leaflet-zoom-animated'); + + this.on({ + 'zoomanim': this._animatePathZoom, + 'zoomend': this._endPathZoom + }); + } else { + this._pathRoot.setAttribute('class', ' leaflet-zoom-hide'); + } + + this.on('moveend', this._updateSvgViewport); + this._updateSvgViewport(); + } + }, + + _animatePathZoom: function (e) { + var scale = this.getZoomScale(e.zoom), + offset = this._getCenterOffset(e.center)._multiplyBy(-scale)._add(this._pathViewport.min); + + this._pathRoot.style[L.DomUtil.TRANSFORM] = + L.DomUtil.getTranslateString(offset) + ' scale(' + scale + ') '; + + this._pathZooming = true; + }, + + _endPathZoom: function () { + this._pathZooming = false; + }, + + _updateSvgViewport: function () { + + if (this._pathZooming) { + // Do not update SVGs while a zoom animation is going on otherwise the animation will break. + // When the zoom animation ends we will be updated again anyway + // This fixes the case where you do a momentum move and zoom while the move is still ongoing. + return; + } + + this._updatePathViewport(); + + var vp = this._pathViewport, + min = vp.min, + max = vp.max, + width = max.x - min.x, + height = max.y - min.y, + root = this._pathRoot, + pane = this._panes.overlayPane; + + // Hack to make flicker on drag end on mobile webkit less irritating + if (L.Browser.mobileWebkit) { + pane.removeChild(root); + } + + L.DomUtil.setPosition(root, min); + root.setAttribute('width', width); + root.setAttribute('height', height); + root.setAttribute('viewBox', [min.x, min.y, width, height].join(' ')); + + if (L.Browser.mobileWebkit) { + pane.appendChild(root); + } + } +}); + + +/* + * Popup extension to L.Path (polylines, polygons, circles), adding popup-related methods. + */ + +L.Path.include({ + + bindPopup: function (content, options) { + + if (!this._popup || options) { + this._popup = new L.Popup(options, this); + } + + this._popup.setContent(content); + + if (!this._popupHandlersAdded) { + this + .on('click', this._openPopup, this) + .on('remove', this.closePopup, this); + + this._popupHandlersAdded = true; + } + + return this; + }, + + unbindPopup: function () { + if (this._popup) { + this._popup = null; + this + .off('click', this._openPopup) + .off('remove', this.closePopup); + + this._popupHandlersAdded = false; + } + return this; + }, + + openPopup: function (latlng) { + + if (this._popup) { + // open the popup from one of the path's points if not specified + latlng = latlng || this._latlng || + this._latlngs[Math.floor(this._latlngs.length / 2)]; + + this._openPopup({latlng: latlng}); + } + + return this; + }, + + closePopup: function () { + if (this._popup) { + this._popup._close(); + } + return this; + }, + + _openPopup: function (e) { + this._popup.setLatLng(e.latlng); + this._map.openPopup(this._popup); + } +}); + + +/* + * Vector rendering for IE6-8 through VML. + * Thanks to Dmitry Baranovsky and his Raphael library for inspiration! + */ + +L.Browser.vml = !L.Browser.svg && (function () { + try { + var div = document.createElement('div'); + div.innerHTML = ''; + + var shape = div.firstChild; + shape.style.behavior = 'url(#default#VML)'; + + return shape && (typeof shape.adj === 'object'); + + } catch (e) { + return false; + } +}()); + +L.Path = L.Browser.svg || !L.Browser.vml ? L.Path : L.Path.extend({ + statics: { + VML: true, + CLIP_PADDING: 0.02 + }, + + _createElement: (function () { + try { + document.namespaces.add('lvml', 'urn:schemas-microsoft-com:vml'); + return function (name) { + return document.createElement(''); + }; + } catch (e) { + return function (name) { + return document.createElement( + '<' + name + ' xmlns="urn:schemas-microsoft.com:vml" class="lvml">'); + }; + } + }()), + + _initPath: function () { + var container = this._container = this._createElement('shape'); + L.DomUtil.addClass(container, 'leaflet-vml-shape'); + if (this.options.clickable) { + L.DomUtil.addClass(container, 'leaflet-clickable'); + } + container.coordsize = '1 1'; + + this._path = this._createElement('path'); + container.appendChild(this._path); + + this._map._pathRoot.appendChild(container); + }, + + _initStyle: function () { + this._updateStyle(); + }, + + _updateStyle: function () { + var stroke = this._stroke, + fill = this._fill, + options = this.options, + container = this._container; + + container.stroked = options.stroke; + container.filled = options.fill; + + if (options.stroke) { + if (!stroke) { + stroke = this._stroke = this._createElement('stroke'); + stroke.endcap = 'round'; + container.appendChild(stroke); + } + stroke.weight = options.weight + 'px'; + stroke.color = options.color; + stroke.opacity = options.opacity; + + if (options.dashArray) { + stroke.dashStyle = options.dashArray instanceof Array ? + options.dashArray.join(' ') : + options.dashArray.replace(/ *, */g, ' '); + } else { + stroke.dashStyle = ''; + } + + } else if (stroke) { + container.removeChild(stroke); + this._stroke = null; + } + + if (options.fill) { + if (!fill) { + fill = this._fill = this._createElement('fill'); + container.appendChild(fill); + } + fill.color = options.fillColor || options.color; + fill.opacity = options.fillOpacity; + + } else if (fill) { + container.removeChild(fill); + this._fill = null; + } + }, + + _updatePath: function () { + var style = this._container.style; + + style.display = 'none'; + this._path.v = this.getPathString() + ' '; // the space fixes IE empty path string bug + style.display = ''; + } +}); + +L.Map.include(L.Browser.svg || !L.Browser.vml ? {} : { + _initPathRoot: function () { + if (this._pathRoot) { return; } + + var root = this._pathRoot = document.createElement('div'); + root.className = 'leaflet-vml-container'; + this._panes.overlayPane.appendChild(root); + + this.on('moveend', this._updatePathViewport); + this._updatePathViewport(); + } +}); + + +/* + * Vector rendering for all browsers that support canvas. + */ + +L.Browser.canvas = (function () { + return !!document.createElement('canvas').getContext; +}()); + +L.Path = (L.Path.SVG && !window.L_PREFER_CANVAS) || !L.Browser.canvas ? L.Path : L.Path.extend({ + statics: { + //CLIP_PADDING: 0.02, // not sure if there's a need to set it to a small value + CANVAS: true, + SVG: false + }, + + redraw: function () { + if (this._map) { + this.projectLatlngs(); + this._requestUpdate(); + } + return this; + }, + + setStyle: function (style) { + L.setOptions(this, style); + + if (this._map) { + this._updateStyle(); + this._requestUpdate(); + } + return this; + }, + + onRemove: function (map) { + map + .off('viewreset', this.projectLatlngs, this) + .off('moveend', this._updatePath, this); + + if (this.options.clickable) { + this._map.off('click', this._onClick, this); + } + + this._requestUpdate(); + + this._map = null; + }, + + _requestUpdate: function () { + if (this._map && !L.Path._updateRequest) { + L.Path._updateRequest = L.Util.requestAnimFrame(this._fireMapMoveEnd, this._map); + } + }, + + _fireMapMoveEnd: function () { + L.Path._updateRequest = null; + this.fire('moveend'); + }, + + _initElements: function () { + this._map._initPathRoot(); + this._ctx = this._map._canvasCtx; + }, + + _updateStyle: function () { + var options = this.options; + + if (options.stroke) { + this._ctx.lineWidth = options.weight; + this._ctx.strokeStyle = options.color; + } + if (options.fill) { + this._ctx.fillStyle = options.fillColor || options.color; + } + }, + + _drawPath: function () { + var i, j, len, len2, point, drawMethod; + + this._ctx.beginPath(); + + for (i = 0, len = this._parts.length; i < len; i++) { + for (j = 0, len2 = this._parts[i].length; j < len2; j++) { + point = this._parts[i][j]; + drawMethod = (j === 0 ? 'move' : 'line') + 'To'; + + this._ctx[drawMethod](point.x, point.y); + } + // TODO refactor ugly hack + if (this instanceof L.Polygon) { + this._ctx.closePath(); + } + } + }, + + _checkIfEmpty: function () { + return !this._parts.length; + }, + + _updatePath: function () { + if (this._checkIfEmpty()) { return; } + + var ctx = this._ctx, + options = this.options; + + this._drawPath(); + ctx.save(); + this._updateStyle(); + + if (options.fill) { + ctx.globalAlpha = options.fillOpacity; + ctx.fill(); + } + + if (options.stroke) { + ctx.globalAlpha = options.opacity; + ctx.stroke(); + } + + ctx.restore(); + + // TODO optimization: 1 fill/stroke for all features with equal style instead of 1 for each feature + }, + + _initEvents: function () { + if (this.options.clickable) { + // TODO hand cursor + // TODO mouseover, mouseout, dblclick + this._map.on('click', this._onClick, this); + } + }, + + _onClick: function (e) { + if (this._containsPoint(e.layerPoint)) { + this.fire('click', { + latlng: e.latlng, + layerPoint: e.layerPoint, + containerPoint: e.containerPoint, + originalEvent: e + }); + } + } +}); + +L.Map.include((L.Path.SVG && !window.L_PREFER_CANVAS) || !L.Browser.canvas ? {} : { + _initPathRoot: function () { + var root = this._pathRoot, + ctx; + + if (!root) { + root = this._pathRoot = document.createElement("canvas"); + root.style.position = 'absolute'; + ctx = this._canvasCtx = root.getContext('2d'); + + ctx.lineCap = "round"; + ctx.lineJoin = "round"; + + this._panes.overlayPane.appendChild(root); + + if (this.options.zoomAnimation) { + this._pathRoot.className = 'leaflet-zoom-animated'; + this.on('zoomanim', this._animatePathZoom); + this.on('zoomend', this._endPathZoom); + } + this.on('moveend', this._updateCanvasViewport); + this._updateCanvasViewport(); + } + }, + + _updateCanvasViewport: function () { + // don't redraw while zooming. See _updateSvgViewport for more details + if (this._pathZooming) { return; } + this._updatePathViewport(); + + var vp = this._pathViewport, + min = vp.min, + size = vp.max.subtract(min), + root = this._pathRoot; + + //TODO check if this works properly on mobile webkit + L.DomUtil.setPosition(root, min); + root.width = size.x; + root.height = size.y; + root.getContext('2d').translate(-min.x, -min.y); + } +}); + + +/* + * L.LineUtil contains different utility functions for line segments + * and polylines (clipping, simplification, distances, etc.) + */ + +/*jshint bitwise:false */ // allow bitwise oprations for this file + +L.LineUtil = { + + // Simplify polyline with vertex reduction and Douglas-Peucker simplification. + // Improves rendering performance dramatically by lessening the number of points to draw. + + simplify: function (/*Point[]*/ points, /*Number*/ tolerance) { + if (!tolerance || !points.length) { + return points.slice(); + } + + var sqTolerance = tolerance * tolerance; + + // stage 1: vertex reduction + points = this._reducePoints(points, sqTolerance); + + // stage 2: Douglas-Peucker simplification + points = this._simplifyDP(points, sqTolerance); + + return points; + }, + + // distance from a point to a segment between two points + pointToSegmentDistance: function (/*Point*/ p, /*Point*/ p1, /*Point*/ p2) { + return Math.sqrt(this._sqClosestPointOnSegment(p, p1, p2, true)); + }, + + closestPointOnSegment: function (/*Point*/ p, /*Point*/ p1, /*Point*/ p2) { + return this._sqClosestPointOnSegment(p, p1, p2); + }, + + // Douglas-Peucker simplification, see http://en.wikipedia.org/wiki/Douglas-Peucker_algorithm + _simplifyDP: function (points, sqTolerance) { + + var len = points.length, + ArrayConstructor = typeof Uint8Array !== undefined + '' ? Uint8Array : Array, + markers = new ArrayConstructor(len); + + markers[0] = markers[len - 1] = 1; + + this._simplifyDPStep(points, markers, sqTolerance, 0, len - 1); + + var i, + newPoints = []; + + for (i = 0; i < len; i++) { + if (markers[i]) { + newPoints.push(points[i]); + } + } + + return newPoints; + }, + + _simplifyDPStep: function (points, markers, sqTolerance, first, last) { + + var maxSqDist = 0, + index, i, sqDist; + + for (i = first + 1; i <= last - 1; i++) { + sqDist = this._sqClosestPointOnSegment(points[i], points[first], points[last], true); + + if (sqDist > maxSqDist) { + index = i; + maxSqDist = sqDist; + } + } + + if (maxSqDist > sqTolerance) { + markers[index] = 1; + + this._simplifyDPStep(points, markers, sqTolerance, first, index); + this._simplifyDPStep(points, markers, sqTolerance, index, last); + } + }, + + // reduce points that are too close to each other to a single point + _reducePoints: function (points, sqTolerance) { + var reducedPoints = [points[0]]; + + for (var i = 1, prev = 0, len = points.length; i < len; i++) { + if (this._sqDist(points[i], points[prev]) > sqTolerance) { + reducedPoints.push(points[i]); + prev = i; + } + } + if (prev < len - 1) { + reducedPoints.push(points[len - 1]); + } + return reducedPoints; + }, + + // Cohen-Sutherland line clipping algorithm. + // Used to avoid rendering parts of a polyline that are not currently visible. + + clipSegment: function (a, b, bounds, useLastCode) { + var codeA = useLastCode ? this._lastCode : this._getBitCode(a, bounds), + codeB = this._getBitCode(b, bounds), + + codeOut, p, newCode; + + // save 2nd code to avoid calculating it on the next segment + this._lastCode = codeB; + + while (true) { + // if a,b is inside the clip window (trivial accept) + if (!(codeA | codeB)) { + return [a, b]; + // if a,b is outside the clip window (trivial reject) + } else if (codeA & codeB) { + return false; + // other cases + } else { + codeOut = codeA || codeB, + p = this._getEdgeIntersection(a, b, codeOut, bounds), + newCode = this._getBitCode(p, bounds); + + if (codeOut === codeA) { + a = p; + codeA = newCode; + } else { + b = p; + codeB = newCode; + } + } + } + }, + + _getEdgeIntersection: function (a, b, code, bounds) { + var dx = b.x - a.x, + dy = b.y - a.y, + min = bounds.min, + max = bounds.max; + + if (code & 8) { // top + return new L.Point(a.x + dx * (max.y - a.y) / dy, max.y); + } else if (code & 4) { // bottom + return new L.Point(a.x + dx * (min.y - a.y) / dy, min.y); + } else if (code & 2) { // right + return new L.Point(max.x, a.y + dy * (max.x - a.x) / dx); + } else if (code & 1) { // left + return new L.Point(min.x, a.y + dy * (min.x - a.x) / dx); + } + }, + + _getBitCode: function (/*Point*/ p, bounds) { + var code = 0; + + if (p.x < bounds.min.x) { // left + code |= 1; + } else if (p.x > bounds.max.x) { // right + code |= 2; + } + if (p.y < bounds.min.y) { // bottom + code |= 4; + } else if (p.y > bounds.max.y) { // top + code |= 8; + } + + return code; + }, + + // square distance (to avoid unnecessary Math.sqrt calls) + _sqDist: function (p1, p2) { + var dx = p2.x - p1.x, + dy = p2.y - p1.y; + return dx * dx + dy * dy; + }, + + // return closest point on segment or distance to that point + _sqClosestPointOnSegment: function (p, p1, p2, sqDist) { + var x = p1.x, + y = p1.y, + dx = p2.x - x, + dy = p2.y - y, + dot = dx * dx + dy * dy, + t; + + if (dot > 0) { + t = ((p.x - x) * dx + (p.y - y) * dy) / dot; + + if (t > 1) { + x = p2.x; + y = p2.y; + } else if (t > 0) { + x += dx * t; + y += dy * t; + } + } + + dx = p.x - x; + dy = p.y - y; + + return sqDist ? dx * dx + dy * dy : new L.Point(x, y); + } +}; + + +/* + * L.Polygon is used to display polylines on a map. + */ + +L.Polyline = L.Path.extend({ + initialize: function (latlngs, options) { + L.Path.prototype.initialize.call(this, options); + + this._latlngs = this._convertLatLngs(latlngs); + }, + + options: { + // how much to simplify the polyline on each zoom level + // more = better performance and smoother look, less = more accurate + smoothFactor: 1.0, + noClip: false + }, + + projectLatlngs: function () { + this._originalPoints = []; + + for (var i = 0, len = this._latlngs.length; i < len; i++) { + this._originalPoints[i] = this._map.latLngToLayerPoint(this._latlngs[i]); + } + }, + + getPathString: function () { + for (var i = 0, len = this._parts.length, str = ''; i < len; i++) { + str += this._getPathPartStr(this._parts[i]); + } + return str; + }, + + getLatLngs: function () { + return this._latlngs; + }, + + setLatLngs: function (latlngs) { + this._latlngs = this._convertLatLngs(latlngs); + return this.redraw(); + }, + + addLatLng: function (latlng) { + this._latlngs.push(L.latLng(latlng)); + return this.redraw(); + }, + + spliceLatLngs: function () { // (Number index, Number howMany) + var removed = [].splice.apply(this._latlngs, arguments); + this._convertLatLngs(this._latlngs); + this.redraw(); + return removed; + }, + + closestLayerPoint: function (p) { + var minDistance = Infinity, parts = this._parts, p1, p2, minPoint = null; + + for (var j = 0, jLen = parts.length; j < jLen; j++) { + var points = parts[j]; + for (var i = 1, len = points.length; i < len; i++) { + p1 = points[i - 1]; + p2 = points[i]; + var sqDist = L.LineUtil._sqClosestPointOnSegment(p, p1, p2, true); + if (sqDist < minDistance) { + minDistance = sqDist; + minPoint = L.LineUtil._sqClosestPointOnSegment(p, p1, p2); + } + } + } + if (minPoint) { + minPoint.distance = Math.sqrt(minDistance); + } + return minPoint; + }, + + getBounds: function () { + var bounds = new L.LatLngBounds(), + latLngs = this.getLatLngs(), + i, len; + + for (i = 0, len = latLngs.length; i < len; i++) { + bounds.extend(latLngs[i]); + } + + return bounds; + }, + + _convertLatLngs: function (latlngs) { + var i, len; + for (i = 0, len = latlngs.length; i < len; i++) { + if (L.Util.isArray(latlngs[i]) && typeof latlngs[i][0] !== 'number') { + return; + } + latlngs[i] = L.latLng(latlngs[i]); + } + return latlngs; + }, + + _initEvents: function () { + L.Path.prototype._initEvents.call(this); + }, + + _getPathPartStr: function (points) { + var round = L.Path.VML; + + for (var j = 0, len2 = points.length, str = '', p; j < len2; j++) { + p = points[j]; + if (round) { + p._round(); + } + str += (j ? 'L' : 'M') + p.x + ' ' + p.y; + } + return str; + }, + + _clipPoints: function () { + var points = this._originalPoints, + len = points.length, + i, k, segment; + + if (this.options.noClip) { + this._parts = [points]; + return; + } + + this._parts = []; + + var parts = this._parts, + vp = this._map._pathViewport, + lu = L.LineUtil; + + for (i = 0, k = 0; i < len - 1; i++) { + segment = lu.clipSegment(points[i], points[i + 1], vp, i); + if (!segment) { + continue; + } + + parts[k] = parts[k] || []; + parts[k].push(segment[0]); + + // if segment goes out of screen, or it's the last one, it's the end of the line part + if ((segment[1] !== points[i + 1]) || (i === len - 2)) { + parts[k].push(segment[1]); + k++; + } + } + }, + + // simplify each clipped part of the polyline + _simplifyPoints: function () { + var parts = this._parts, + lu = L.LineUtil; + + for (var i = 0, len = parts.length; i < len; i++) { + parts[i] = lu.simplify(parts[i], this.options.smoothFactor); + } + }, + + _updatePath: function () { + if (!this._map) { return; } + + this._clipPoints(); + this._simplifyPoints(); + + L.Path.prototype._updatePath.call(this); + } +}); + +L.polyline = function (latlngs, options) { + return new L.Polyline(latlngs, options); +}; + + +/* + * L.PolyUtil contains utility functions for polygons (clipping, etc.). + */ + +/*jshint bitwise:false */ // allow bitwise operations here + +L.PolyUtil = {}; + +/* + * Sutherland-Hodgeman polygon clipping algorithm. + * Used to avoid rendering parts of a polygon that are not currently visible. + */ +L.PolyUtil.clipPolygon = function (points, bounds) { + var clippedPoints, + edges = [1, 4, 2, 8], + i, j, k, + a, b, + len, edge, p, + lu = L.LineUtil; + + for (i = 0, len = points.length; i < len; i++) { + points[i]._code = lu._getBitCode(points[i], bounds); + } + + // for each edge (left, bottom, right, top) + for (k = 0; k < 4; k++) { + edge = edges[k]; + clippedPoints = []; + + for (i = 0, len = points.length, j = len - 1; i < len; j = i++) { + a = points[i]; + b = points[j]; + + // if a is inside the clip window + if (!(a._code & edge)) { + // if b is outside the clip window (a->b goes out of screen) + if (b._code & edge) { + p = lu._getEdgeIntersection(b, a, edge, bounds); + p._code = lu._getBitCode(p, bounds); + clippedPoints.push(p); + } + clippedPoints.push(a); + + // else if b is inside the clip window (a->b enters the screen) + } else if (!(b._code & edge)) { + p = lu._getEdgeIntersection(b, a, edge, bounds); + p._code = lu._getBitCode(p, bounds); + clippedPoints.push(p); + } + } + points = clippedPoints; + } + + return points; +}; + + +/* + * L.Polygon is used to display polygons on a map. + */ + +L.Polygon = L.Polyline.extend({ + options: { + fill: true + }, + + initialize: function (latlngs, options) { + L.Polyline.prototype.initialize.call(this, latlngs, options); + + if (latlngs && L.Util.isArray(latlngs[0]) && (typeof latlngs[0][0] !== 'number')) { + this._latlngs = this._convertLatLngs(latlngs[0]); + this._holes = latlngs.slice(1); + } + }, + + projectLatlngs: function () { + L.Polyline.prototype.projectLatlngs.call(this); + + // project polygon holes points + // TODO move this logic to Polyline to get rid of duplication + this._holePoints = []; + + if (!this._holes) { return; } + + var i, j, len, len2; + + for (i = 0, len = this._holes.length; i < len; i++) { + this._holePoints[i] = []; + + for (j = 0, len2 = this._holes[i].length; j < len2; j++) { + this._holePoints[i][j] = this._map.latLngToLayerPoint(this._holes[i][j]); + } + } + }, + + _clipPoints: function () { + var points = this._originalPoints, + newParts = []; + + this._parts = [points].concat(this._holePoints); + + if (this.options.noClip) { return; } + + for (var i = 0, len = this._parts.length; i < len; i++) { + var clipped = L.PolyUtil.clipPolygon(this._parts[i], this._map._pathViewport); + if (clipped.length) { + newParts.push(clipped); + } + } + + this._parts = newParts; + }, + + _getPathPartStr: function (points) { + var str = L.Polyline.prototype._getPathPartStr.call(this, points); + return str + (L.Browser.svg ? 'z' : 'x'); + } +}); + +L.polygon = function (latlngs, options) { + return new L.Polygon(latlngs, options); +}; + + +/* + * Contains L.MultiPolyline and L.MultiPolygon layers. + */ + +(function () { + function createMulti(Klass) { + + return L.FeatureGroup.extend({ + + initialize: function (latlngs, options) { + this._layers = {}; + this._options = options; + this.setLatLngs(latlngs); + }, + + setLatLngs: function (latlngs) { + var i = 0, + len = latlngs.length; + + this.eachLayer(function (layer) { + if (i < len) { + layer.setLatLngs(latlngs[i++]); + } else { + this.removeLayer(layer); + } + }, this); + + while (i < len) { + this.addLayer(new Klass(latlngs[i++], this._options)); + } + + return this; + } + }); + } + + L.MultiPolyline = createMulti(L.Polyline); + L.MultiPolygon = createMulti(L.Polygon); + + L.multiPolyline = function (latlngs, options) { + return new L.MultiPolyline(latlngs, options); + }; + + L.multiPolygon = function (latlngs, options) { + return new L.MultiPolygon(latlngs, options); + }; +}()); + + +/* + * L.Rectangle extends Polygon and creates a rectangle when passed a LatLngBounds object. + */ + +L.Rectangle = L.Polygon.extend({ + initialize: function (latLngBounds, options) { + L.Polygon.prototype.initialize.call(this, this._boundsToLatLngs(latLngBounds), options); + }, + + setBounds: function (latLngBounds) { + this.setLatLngs(this._boundsToLatLngs(latLngBounds)); + }, + + _boundsToLatLngs: function (latLngBounds) { + latLngBounds = L.latLngBounds(latLngBounds); + return [ + latLngBounds.getSouthWest(), + latLngBounds.getNorthWest(), + latLngBounds.getNorthEast(), + latLngBounds.getSouthEast() + ]; + } +}); + +L.rectangle = function (latLngBounds, options) { + return new L.Rectangle(latLngBounds, options); +}; + + +/* + * L.Circle is a circle overlay (with a certain radius in meters). + */ + +L.Circle = L.Path.extend({ + initialize: function (latlng, radius, options) { + L.Path.prototype.initialize.call(this, options); + + this._latlng = L.latLng(latlng); + this._mRadius = radius; + }, + + options: { + fill: true + }, + + setLatLng: function (latlng) { + this._latlng = L.latLng(latlng); + return this.redraw(); + }, + + setRadius: function (radius) { + this._mRadius = radius; + return this.redraw(); + }, + + projectLatlngs: function () { + var lngRadius = this._getLngRadius(), + latlng2 = new L.LatLng(this._latlng.lat, this._latlng.lng - lngRadius), + point2 = this._map.latLngToLayerPoint(latlng2); + + this._point = this._map.latLngToLayerPoint(this._latlng); + this._radius = Math.max(Math.round(this._point.x - point2.x), 1); + }, + + getBounds: function () { + var lngRadius = this._getLngRadius(), + latRadius = (this._mRadius / 40075017) * 360, + latlng = this._latlng, + sw = new L.LatLng(latlng.lat - latRadius, latlng.lng - lngRadius), + ne = new L.LatLng(latlng.lat + latRadius, latlng.lng + lngRadius); + + return new L.LatLngBounds(sw, ne); + }, + + getLatLng: function () { + return this._latlng; + }, + + getPathString: function () { + var p = this._point, + r = this._radius; + + if (this._checkIfEmpty()) { + return ''; + } + + if (L.Browser.svg) { + return "M" + p.x + "," + (p.y - r) + + "A" + r + "," + r + ",0,1,1," + + (p.x - 0.1) + "," + (p.y - r) + " z"; + } else { + p._round(); + r = Math.round(r); + return "AL " + p.x + "," + p.y + " " + r + "," + r + " 0," + (65535 * 360); + } + }, + + getRadius: function () { + return this._mRadius; + }, + + // TODO Earth hardcoded, move into projection code! + + _getLatRadius: function () { + return (this._mRadius / 40075017) * 360; + }, + + _getLngRadius: function () { + return this._getLatRadius() / Math.cos(L.LatLng.DEG_TO_RAD * this._latlng.lat); + }, + + _checkIfEmpty: function () { + if (!this._map) { + return false; + } + var vp = this._map._pathViewport, + r = this._radius, + p = this._point; + + return p.x - r > vp.max.x || p.y - r > vp.max.y || + p.x + r < vp.min.x || p.y + r < vp.min.y; + } +}); + +L.circle = function (latlng, radius, options) { + return new L.Circle(latlng, radius, options); +}; + + +/* + * L.CircleMarker is a circle overlay with a permanent pixel radius. + */ + +L.CircleMarker = L.Circle.extend({ + options: { + radius: 10, + weight: 2 + }, + + initialize: function (latlng, options) { + L.Circle.prototype.initialize.call(this, latlng, null, options); + this._radius = this.options.radius; + }, + + projectLatlngs: function () { + this._point = this._map.latLngToLayerPoint(this._latlng); + }, + + _updateStyle : function () { + L.Circle.prototype._updateStyle.call(this); + this.setRadius(this.options.radius); + }, + + setRadius: function (radius) { + this.options.radius = this._radius = radius; + return this.redraw(); + } +}); + +L.circleMarker = function (latlng, options) { + return new L.CircleMarker(latlng, options); +}; + + +/* + * Extends L.Polyline to be able to manually detect clicks on Canvas-rendered polylines. + */ + +L.Polyline.include(!L.Path.CANVAS ? {} : { + _containsPoint: function (p, closed) { + var i, j, k, len, len2, dist, part, + w = this.options.weight / 2; + + if (L.Browser.touch) { + w += 10; // polyline click tolerance on touch devices + } + + for (i = 0, len = this._parts.length; i < len; i++) { + part = this._parts[i]; + for (j = 0, len2 = part.length, k = len2 - 1; j < len2; k = j++) { + if (!closed && (j === 0)) { + continue; + } + + dist = L.LineUtil.pointToSegmentDistance(p, part[k], part[j]); + + if (dist <= w) { + return true; + } + } + } + return false; + } +}); + + +/* + * Extends L.Polygon to be able to manually detect clicks on Canvas-rendered polygons. + */ + +L.Polygon.include(!L.Path.CANVAS ? {} : { + _containsPoint: function (p) { + var inside = false, + part, p1, p2, + i, j, k, + len, len2; + + // TODO optimization: check if within bounds first + + if (L.Polyline.prototype._containsPoint.call(this, p, true)) { + // click on polygon border + return true; + } + + // ray casting algorithm for detecting if point is in polygon + + for (i = 0, len = this._parts.length; i < len; i++) { + part = this._parts[i]; + + for (j = 0, len2 = part.length, k = len2 - 1; j < len2; k = j++) { + p1 = part[j]; + p2 = part[k]; + + if (((p1.y > p.y) !== (p2.y > p.y)) && + (p.x < (p2.x - p1.x) * (p.y - p1.y) / (p2.y - p1.y) + p1.x)) { + inside = !inside; + } + } + } + + return inside; + } +}); + + +/* + * Extends L.Circle with Canvas-specific code. + */ + +L.Circle.include(!L.Path.CANVAS ? {} : { + _drawPath: function () { + var p = this._point; + this._ctx.beginPath(); + this._ctx.arc(p.x, p.y, this._radius, 0, Math.PI * 2, false); + }, + + _containsPoint: function (p) { + var center = this._point, + w2 = this.options.stroke ? this.options.weight / 2 : 0; + + return (p.distanceTo(center) <= this._radius + w2); + } +}); + + +/* + * L.GeoJSON turns any GeoJSON data into a Leaflet layer. + */ + +L.GeoJSON = L.FeatureGroup.extend({ + + initialize: function (geojson, options) { + L.setOptions(this, options); + + this._layers = {}; + + if (geojson) { + this.addData(geojson); + } + }, + + addData: function (geojson) { + var features = L.Util.isArray(geojson) ? geojson : geojson.features, + i, len; + + if (features) { + for (i = 0, len = features.length; i < len; i++) { + // Only add this if geometry or geometries are set and not null + if (features[i].geometries || features[i].geometry || features[i].features) { + this.addData(features[i]); + } + } + return this; + } + + var options = this.options; + + if (options.filter && !options.filter(geojson)) { return; } + + var layer = L.GeoJSON.geometryToLayer(geojson, options.pointToLayer); + layer.feature = geojson; + + layer.defaultOptions = layer.options; + this.resetStyle(layer); + + if (options.onEachFeature) { + options.onEachFeature(geojson, layer); + } + + return this.addLayer(layer); + }, + + resetStyle: function (layer) { + var style = this.options.style; + if (style) { + // reset any custom styles + L.Util.extend(layer.options, layer.defaultOptions); + + this._setLayerStyle(layer, style); + } + }, + + setStyle: function (style) { + this.eachLayer(function (layer) { + this._setLayerStyle(layer, style); + }, this); + }, + + _setLayerStyle: function (layer, style) { + if (typeof style === 'function') { + style = style(layer.feature); + } + if (layer.setStyle) { + layer.setStyle(style); + } + } +}); + +L.extend(L.GeoJSON, { + geometryToLayer: function (geojson, pointToLayer) { + var geometry = geojson.type === 'Feature' ? geojson.geometry : geojson, + coords = geometry.coordinates, + layers = [], + latlng, latlngs, i, len, layer; + + switch (geometry.type) { + case 'Point': + latlng = this.coordsToLatLng(coords); + return pointToLayer ? pointToLayer(geojson, latlng) : new L.Marker(latlng); + + case 'MultiPoint': + for (i = 0, len = coords.length; i < len; i++) { + latlng = this.coordsToLatLng(coords[i]); + layer = pointToLayer ? pointToLayer(geojson, latlng) : new L.Marker(latlng); + layers.push(layer); + } + return new L.FeatureGroup(layers); + + case 'LineString': + latlngs = this.coordsToLatLngs(coords); + return new L.Polyline(latlngs); + + case 'Polygon': + latlngs = this.coordsToLatLngs(coords, 1); + return new L.Polygon(latlngs); + + case 'MultiLineString': + latlngs = this.coordsToLatLngs(coords, 1); + return new L.MultiPolyline(latlngs); + + case 'MultiPolygon': + latlngs = this.coordsToLatLngs(coords, 2); + return new L.MultiPolygon(latlngs); + + case 'GeometryCollection': + for (i = 0, len = geometry.geometries.length; i < len; i++) { + layer = this.geometryToLayer({ + geometry: geometry.geometries[i], + type: 'Feature', + properties: geojson.properties + }, pointToLayer); + layers.push(layer); + } + return new L.FeatureGroup(layers); + + default: + throw new Error('Invalid GeoJSON object.'); + } + }, + + coordsToLatLng: function (coords, reverse) { // (Array, Boolean) -> LatLng + var lat = parseFloat(coords[reverse ? 0 : 1]), + lng = parseFloat(coords[reverse ? 1 : 0]); + + return new L.LatLng(lat, lng); + }, + + coordsToLatLngs: function (coords, levelsDeep, reverse) { // (Array, Number, Boolean) -> Array + var latlng, + latlngs = [], + i, len; + + for (i = 0, len = coords.length; i < len; i++) { + latlng = levelsDeep ? + this.coordsToLatLngs(coords[i], levelsDeep - 1, reverse) : + this.coordsToLatLng(coords[i], reverse); + + latlngs.push(latlng); + } + + return latlngs; + } +}); + +L.geoJson = function (geojson, options) { + return new L.GeoJSON(geojson, options); +}; + + +/* + * L.DomEvent contains functions for working with DOM events. + */ + +L.DomEvent = { + /* inspired by John Resig, Dean Edwards and YUI addEvent implementations */ + addListener: function (obj, type, fn, context) { // (HTMLElement, String, Function[, Object]) + + var id = L.stamp(fn), + key = '_leaflet_' + type + id, + handler, originalHandler, newType; + + if (obj[key]) { return this; } + + handler = function (e) { + return fn.call(context || obj, e || L.DomEvent._getEvent()); + }; + + if (L.Browser.msTouch && type.indexOf('touch') === 0) { + return this.addMsTouchListener(obj, type, handler, id); + } + if (L.Browser.touch && (type === 'dblclick') && this.addDoubleTapListener) { + this.addDoubleTapListener(obj, handler, id); + } + + if ('addEventListener' in obj) { + + if (type === 'mousewheel') { + obj.addEventListener('DOMMouseScroll', handler, false); + obj.addEventListener(type, handler, false); + + } else if ((type === 'mouseenter') || (type === 'mouseleave')) { + + originalHandler = handler; + newType = (type === 'mouseenter' ? 'mouseover' : 'mouseout'); + + handler = function (e) { + if (!L.DomEvent._checkMouse(obj, e)) { return; } + return originalHandler(e); + }; + + obj.addEventListener(newType, handler, false); + + } else { + obj.addEventListener(type, handler, false); + } + + } else if ('attachEvent' in obj) { + obj.attachEvent("on" + type, handler); + } + + obj[key] = handler; + + return this; + }, + + removeListener: function (obj, type, fn) { // (HTMLElement, String, Function) + + var id = L.stamp(fn), + key = '_leaflet_' + type + id, + handler = obj[key]; + + if (!handler) { return; } + + if (L.Browser.msTouch && type.indexOf('touch') === 0) { + this.removeMsTouchListener(obj, type, id); + } else if (L.Browser.touch && (type === 'dblclick') && this.removeDoubleTapListener) { + this.removeDoubleTapListener(obj, id); + + } else if ('removeEventListener' in obj) { + + if (type === 'mousewheel') { + obj.removeEventListener('DOMMouseScroll', handler, false); + obj.removeEventListener(type, handler, false); + + } else if ((type === 'mouseenter') || (type === 'mouseleave')) { + obj.removeEventListener((type === 'mouseenter' ? 'mouseover' : 'mouseout'), handler, false); + } else { + obj.removeEventListener(type, handler, false); + } + } else if ('detachEvent' in obj) { + obj.detachEvent("on" + type, handler); + } + + obj[key] = null; + + return this; + }, + + stopPropagation: function (e) { + + if (e.stopPropagation) { + e.stopPropagation(); + } else { + e.cancelBubble = true; + } + return this; + }, + + disableClickPropagation: function (el) { + + var stop = L.DomEvent.stopPropagation; + + for (var i = L.Draggable.START.length - 1; i >= 0; i--) { + L.DomEvent.addListener(el, L.Draggable.START[i], stop); + } + + return L.DomEvent + .addListener(el, 'click', stop) + .addListener(el, 'dblclick', stop); + }, + + preventDefault: function (e) { + + if (e.preventDefault) { + e.preventDefault(); + } else { + e.returnValue = false; + } + return this; + }, + + stop: function (e) { + return L.DomEvent.preventDefault(e).stopPropagation(e); + }, + + getMousePosition: function (e, container) { + + var body = document.body, + docEl = document.documentElement, + x = e.pageX ? e.pageX : e.clientX + body.scrollLeft + docEl.scrollLeft, + y = e.pageY ? e.pageY : e.clientY + body.scrollTop + docEl.scrollTop, + pos = new L.Point(x, y); + + return (container ? pos._subtract(L.DomUtil.getViewportOffset(container)) : pos); + }, + + getWheelDelta: function (e) { + + var delta = 0; + + if (e.wheelDelta) { + delta = e.wheelDelta / 120; + } + if (e.detail) { + delta = -e.detail / 3; + } + return delta; + }, + + // check if element really left/entered the event target (for mouseenter/mouseleave) + _checkMouse: function (el, e) { + + var related = e.relatedTarget; + + if (!related) { return true; } + + try { + while (related && (related !== el)) { + related = related.parentNode; + } + } catch (err) { + return false; + } + return (related !== el); + }, + + _getEvent: function () { // evil magic for IE + /*jshint noarg:false */ + var e = window.event; + if (!e) { + var caller = arguments.callee.caller; + while (caller) { + e = caller['arguments'][0]; + if (e && window.Event === e.constructor) { + break; + } + caller = caller.caller; + } + } + return e; + } +}; + +L.DomEvent.on = L.DomEvent.addListener; +L.DomEvent.off = L.DomEvent.removeListener; + + +/* + * L.Draggable allows you to add dragging capabilities to any element. Supports mobile devices too. + */ + +L.Draggable = L.Class.extend({ + includes: L.Mixin.Events, + + statics: { + START: L.Browser.touch ? ['touchstart', 'mousedown'] : ['mousedown'], + END: { + mousedown: 'mouseup', + touchstart: 'touchend', + MSPointerDown: 'touchend' + }, + MOVE: { + mousedown: 'mousemove', + touchstart: 'touchmove', + MSPointerDown: 'touchmove' + }, + TAP_TOLERANCE: 15 + }, + + initialize: function (element, dragStartTarget, longPress) { + this._element = element; + this._dragStartTarget = dragStartTarget || element; + this._longPress = longPress && !L.Browser.msTouch; + }, + + enable: function () { + if (this._enabled) { return; } + + for (var i = L.Draggable.START.length - 1; i >= 0; i--) { + L.DomEvent.on(this._dragStartTarget, L.Draggable.START[i], this._onDown, this); + } + this._enabled = true; + }, + + disable: function () { + if (!this._enabled) { return; } + + for (var i = L.Draggable.START.length - 1; i >= 0; i--) { + L.DomEvent.off(this._dragStartTarget, L.Draggable.START[i], this._onDown, this); + } + this._enabled = false; + this._moved = false; + }, + + _onDown: function (e) { + if ((!L.Browser.touch && e.shiftKey) || + ((e.which !== 1) && (e.button !== 1) && !e.touches)) { return; } + + L.DomEvent.preventDefault(e); + L.DomEvent.stopPropagation(e); + + if (L.Draggable._disabled) { return; } + + this._simulateClick = true; + + if (e.touches && e.touches.length > 1) { + this._simulateClick = false; + clearTimeout(this._longPressTimeout); + return; + } + + var first = (e.touches && e.touches.length === 1 ? e.touches[0] : e), + el = first.target; + + if (L.Browser.touch && el.tagName.toLowerCase() === 'a') { + L.DomUtil.addClass(el, 'leaflet-active'); + } + + this._moved = false; + if (this._moving) { return; } + + this._startPoint = new L.Point(first.clientX, first.clientY); + this._startPos = this._newPos = L.DomUtil.getPosition(this._element); + + //Touch contextmenu event emulation + if (e.touches && e.touches.length === 1 && L.Browser.touch && this._longPress) { + this._longPressTimeout = setTimeout(L.bind(function () { + var dist = (this._newPos && this._newPos.distanceTo(this._startPos)) || 0; + + if (dist < L.Draggable.TAP_TOLERANCE) { + this._simulateClick = false; + this._onUp(); + this._simulateEvent('contextmenu', first); + } + }, this), 1000); + } + + L.DomEvent.on(document, L.Draggable.MOVE[e.type], this._onMove, this); + L.DomEvent.on(document, L.Draggable.END[e.type], this._onUp, this); + }, + + _onMove: function (e) { + if (e.touches && e.touches.length > 1) { return; } + + var first = (e.touches && e.touches.length === 1 ? e.touches[0] : e), + newPoint = new L.Point(first.clientX, first.clientY), + diffVec = newPoint.subtract(this._startPoint); + + if (!diffVec.x && !diffVec.y) { return; } + + L.DomEvent.preventDefault(e); + + if (!this._moved) { + this.fire('dragstart'); + this._moved = true; + + this._startPos = L.DomUtil.getPosition(this._element).subtract(diffVec); + + if (!L.Browser.touch) { + L.DomUtil.disableTextSelection(); + this._setMovingCursor(); + } + } + + this._newPos = this._startPos.add(diffVec); + this._moving = true; + + L.Util.cancelAnimFrame(this._animRequest); + this._animRequest = L.Util.requestAnimFrame(this._updatePosition, this, true, this._dragStartTarget); + }, + + _updatePosition: function () { + this.fire('predrag'); + L.DomUtil.setPosition(this._element, this._newPos); + this.fire('drag'); + }, + + _onUp: function (e) { + var simulateClickTouch; + clearTimeout(this._longPressTimeout); + if (this._simulateClick && e.changedTouches) { + var first = e.changedTouches[0], + el = first.target, + dist = (this._newPos && this._newPos.distanceTo(this._startPos)) || 0; + + if (el.tagName.toLowerCase() === 'a') { + L.DomUtil.removeClass(el, 'leaflet-active'); + } + + if (dist < L.Draggable.TAP_TOLERANCE) { + simulateClickTouch = first; + } + } + + if (!L.Browser.touch) { + L.DomUtil.enableTextSelection(); + this._restoreCursor(); + } + + for (var i in L.Draggable.MOVE) { + if (L.Draggable.MOVE.hasOwnProperty(i)) { + L.DomEvent.off(document, L.Draggable.MOVE[i], this._onMove); + L.DomEvent.off(document, L.Draggable.END[i], this._onUp); + } + } + + if (this._moved) { + // ensure drag is not fired after dragend + L.Util.cancelAnimFrame(this._animRequest); + + this.fire('dragend'); + } + this._moving = false; + + if (simulateClickTouch) { + this._moved = false; + this._simulateEvent('click', simulateClickTouch); + } + }, + + _setMovingCursor: function () { + L.DomUtil.addClass(document.body, 'leaflet-dragging'); + }, + + _restoreCursor: function () { + L.DomUtil.removeClass(document.body, 'leaflet-dragging'); + }, + + _simulateEvent: function (type, e) { + var simulatedEvent = document.createEvent('MouseEvents'); + + simulatedEvent.initMouseEvent( + type, true, true, window, 1, + e.screenX, e.screenY, + e.clientX, e.clientY, + false, false, false, false, 0, null); + + e.target.dispatchEvent(simulatedEvent); + } +}); + + +/* + L.Handler is a base class for handler classes that are used internally to inject + interaction features like dragging to classes like Map and Marker. +*/ + +L.Handler = L.Class.extend({ + initialize: function (map) { + this._map = map; + }, + + enable: function () { + if (this._enabled) { return; } + + this._enabled = true; + this.addHooks(); + }, + + disable: function () { + if (!this._enabled) { return; } + + this._enabled = false; + this.removeHooks(); + }, + + enabled: function () { + return !!this._enabled; + } +}); + + +/* + * L.Handler.MapDrag is used to make the map draggable (with panning inertia), enabled by default. + */ + +L.Map.mergeOptions({ + dragging: true, + + inertia: !L.Browser.android23, + inertiaDeceleration: 3400, // px/s^2 + inertiaMaxSpeed: Infinity, // px/s + inertiaThreshold: L.Browser.touch ? 32 : 18, // ms + easeLinearity: 0.25, + + longPress: true, + + // TODO refactor, move to CRS + worldCopyJump: false +}); + +L.Map.Drag = L.Handler.extend({ + addHooks: function () { + if (!this._draggable) { + var map = this._map; + + this._draggable = new L.Draggable(map._mapPane, map._container, map.options.longPress); + + this._draggable.on({ + 'dragstart': this._onDragStart, + 'drag': this._onDrag, + 'dragend': this._onDragEnd + }, this); + + if (map.options.worldCopyJump) { + this._draggable.on('predrag', this._onPreDrag, this); + map.on('viewreset', this._onViewReset, this); + } + } + this._draggable.enable(); + }, + + removeHooks: function () { + this._draggable.disable(); + }, + + moved: function () { + return this._draggable && this._draggable._moved; + }, + + _onDragStart: function () { + var map = this._map; + + if (map._panAnim) { + map._panAnim.stop(); + } + + map + .fire('movestart') + .fire('dragstart'); + + if (map.options.inertia) { + this._positions = []; + this._times = []; + } + }, + + _onDrag: function () { + if (this._map.options.inertia) { + var time = this._lastTime = +new Date(), + pos = this._lastPos = this._draggable._newPos; + + this._positions.push(pos); + this._times.push(time); + + if (time - this._times[0] > 200) { + this._positions.shift(); + this._times.shift(); + } + } + + this._map + .fire('move') + .fire('drag'); + }, + + _onViewReset: function () { + // TODO fix hardcoded Earth values + var pxCenter = this._map.getSize()._divideBy(2), + pxWorldCenter = this._map.latLngToLayerPoint(new L.LatLng(0, 0)); + + this._initialWorldOffset = pxWorldCenter.subtract(pxCenter).x; + this._worldWidth = this._map.project(new L.LatLng(0, 180)).x; + }, + + _onPreDrag: function () { + // TODO refactor to be able to adjust map pane position after zoom + var worldWidth = this._worldWidth, + halfWidth = Math.round(worldWidth / 2), + dx = this._initialWorldOffset, + x = this._draggable._newPos.x, + newX1 = (x - halfWidth + dx) % worldWidth + halfWidth - dx, + newX2 = (x + halfWidth + dx) % worldWidth - halfWidth - dx, + newX = Math.abs(newX1 + dx) < Math.abs(newX2 + dx) ? newX1 : newX2; + + this._draggable._newPos.x = newX; + }, + + _onDragEnd: function () { + var map = this._map, + options = map.options, + delay = +new Date() - this._lastTime, + + noInertia = !options.inertia || delay > options.inertiaThreshold || !this._positions[0]; + + if (noInertia) { + map.fire('moveend'); + + } else { + + var direction = this._lastPos.subtract(this._positions[0]), + duration = (this._lastTime + delay - this._times[0]) / 1000, + ease = options.easeLinearity, + + speedVector = direction.multiplyBy(ease / duration), + speed = speedVector.distanceTo(new L.Point(0, 0)), + + limitedSpeed = Math.min(options.inertiaMaxSpeed, speed), + limitedSpeedVector = speedVector.multiplyBy(limitedSpeed / speed), + + decelerationDuration = limitedSpeed / (options.inertiaDeceleration * ease), + offset = limitedSpeedVector.multiplyBy(-decelerationDuration / 2).round(); + + L.Util.requestAnimFrame(function () { + map.panBy(offset, decelerationDuration, ease); + }); + } + + map.fire('dragend'); + + if (options.maxBounds) { + // TODO predrag validation instead of animation + L.Util.requestAnimFrame(this._panInsideMaxBounds, map, true, map._container); + } + }, + + _panInsideMaxBounds: function () { + this.panInsideBounds(this.options.maxBounds); + } +}); + +L.Map.addInitHook('addHandler', 'dragging', L.Map.Drag); + + +/* + * L.Handler.DoubleClickZoom is used to handle double-click zoom on the map, enabled by default. + */ + +L.Map.mergeOptions({ + doubleClickZoom: true +}); + +L.Map.DoubleClickZoom = L.Handler.extend({ + addHooks: function () { + this._map.on('dblclick', this._onDoubleClick); + }, + + removeHooks: function () { + this._map.off('dblclick', this._onDoubleClick); + }, + + _onDoubleClick: function (e) { + this.setView(e.latlng, this._zoom + 1); + } +}); + +L.Map.addInitHook('addHandler', 'doubleClickZoom', L.Map.DoubleClickZoom); + + +/* + * L.Handler.ScrollWheelZoom is used by L.Map to enable mouse scroll wheel zoom on the map. + */ + +L.Map.mergeOptions({ + scrollWheelZoom: true +}); + +L.Map.ScrollWheelZoom = L.Handler.extend({ + addHooks: function () { + L.DomEvent.on(this._map._container, 'mousewheel', this._onWheelScroll, this); + this._delta = 0; + }, + + removeHooks: function () { + L.DomEvent.off(this._map._container, 'mousewheel', this._onWheelScroll); + }, + + _onWheelScroll: function (e) { + var delta = L.DomEvent.getWheelDelta(e); + + this._delta += delta; + this._lastMousePos = this._map.mouseEventToContainerPoint(e); + + if (!this._startTime) { + this._startTime = +new Date(); + } + + var left = Math.max(40 - (+new Date() - this._startTime), 0); + + clearTimeout(this._timer); + this._timer = setTimeout(L.bind(this._performZoom, this), left); + + L.DomEvent.preventDefault(e); + L.DomEvent.stopPropagation(e); + }, + + _performZoom: function () { + var map = this._map, + delta = this._delta, + zoom = map.getZoom(); + + delta = delta > 0 ? Math.ceil(delta) : Math.round(delta); + delta = Math.max(Math.min(delta, 4), -4); + delta = map._limitZoom(zoom + delta) - zoom; + + this._delta = 0; + + this._startTime = null; + + if (!delta) { return; } + + var newZoom = zoom + delta, + newCenter = this._getCenterForScrollWheelZoom(newZoom); + + map.setView(newCenter, newZoom); + }, + + _getCenterForScrollWheelZoom: function (newZoom) { + var map = this._map, + scale = map.getZoomScale(newZoom), + viewHalf = map.getSize()._divideBy(2), + centerOffset = this._lastMousePos._subtract(viewHalf)._multiplyBy(1 - 1 / scale), + newCenterPoint = map._getTopLeftPoint()._add(viewHalf)._add(centerOffset); + + return map.unproject(newCenterPoint); + } +}); + +L.Map.addInitHook('addHandler', 'scrollWheelZoom', L.Map.ScrollWheelZoom); + + +/* + * Extends the event handling code with double tap support for mobile browsers. + */ + +L.extend(L.DomEvent, { + + _touchstart: L.Browser.msTouch ? 'MSPointerDown' : 'touchstart', + _touchend: L.Browser.msTouch ? 'MSPointerUp' : 'touchend', + + // inspired by Zepto touch code by Thomas Fuchs + addDoubleTapListener: function (obj, handler, id) { + var last, + doubleTap = false, + delay = 250, + touch, + pre = '_leaflet_', + touchstart = this._touchstart, + touchend = this._touchend, + trackedTouches = []; + + function onTouchStart(e) { + var count; + if (L.Browser.msTouch) { + trackedTouches.push(e.pointerId); + count = trackedTouches.length; + } else { + count = e.touches.length; + } + if (count > 1) { + return; + } + + var now = Date.now(), + delta = now - (last || now); + + touch = e.touches ? e.touches[0] : e; + doubleTap = (delta > 0 && delta <= delay); + last = now; + } + + function onTouchEnd(e) { + /*jshint forin:false */ + if (L.Browser.msTouch) { + var idx = trackedTouches.indexOf(e.pointerId); + if (idx === -1) { + return; + } + trackedTouches.splice(idx, 1); + } + + if (doubleTap) { + if (L.Browser.msTouch) { + //Work around .type being readonly with MSPointer* events + var newTouch = { }, + prop; + + for (var i in touch) { + prop = touch[i]; + if (typeof prop === 'function') { + newTouch[i] = prop.bind(touch); + } else { + newTouch[i] = prop; + } + } + touch = newTouch; + } + touch.type = 'dblclick'; + handler(touch); + last = null; + } + } + obj[pre + touchstart + id] = onTouchStart; + obj[pre + touchend + id] = onTouchEnd; + + //On msTouch we need to listen on the document otherwise a drag starting on the map and moving off screen will not come through to us + // so we will lose track of how many touches are ongoing + var endElement = L.Browser.msTouch ? document.documentElement : obj; + + obj.addEventListener(touchstart, onTouchStart, false); + endElement.addEventListener(touchend, onTouchEnd, false); + if (L.Browser.msTouch) { + endElement.addEventListener('MSPointerCancel', onTouchEnd, false); + } + return this; + }, + + removeDoubleTapListener: function (obj, id) { + var pre = '_leaflet_'; + obj.removeEventListener(this._touchstart, obj[pre + this._touchstart + id], false); + (L.Browser.msTouch ? document.documentElement : obj).removeEventListener(this._touchend, obj[pre + this._touchend + id], false); + if (L.Browser.msTouch) { + document.documentElement.removeEventListener('MSPointerCancel', obj[pre + this._touchend + id], false); + } + return this; + } +}); + + +/* + * Extends L.DomEvent to provide touch support for Internet Explorer and Windows-based devices. + */ + +L.extend(L.DomEvent, { + + _msTouches: [], + _msDocumentListener: false, + + // Provides a touch events wrapper for msPointer events. + // Based on changes by veproza https://github.com/CloudMade/Leaflet/pull/1019 + + addMsTouchListener: function (obj, type, handler, id) { + + switch (type) { + case 'touchstart': + return this.addMsTouchListenerStart(obj, type, handler, id); + case 'touchend': + return this.addMsTouchListenerEnd(obj, type, handler, id); + case 'touchmove': + return this.addMsTouchListenerMove(obj, type, handler, id); + default: + throw 'Unknown touch event type'; + } + }, + + addMsTouchListenerStart: function (obj, type, handler, id) { + var pre = '_leaflet_', + touches = this._msTouches; + + var cb = function (e) { + + var alreadyInArray = false; + for (var i = 0; i < touches.length; i++) { + if (touches[i].pointerId === e.pointerId) { + alreadyInArray = true; + break; + } + } + if (!alreadyInArray) { + touches.push(e); + } + + e.touches = touches.slice(); + e.changedTouches = [e]; + + handler(e); + }; + + obj[pre + 'touchstart' + id] = cb; + obj.addEventListener('MSPointerDown', cb, false); + + // need to also listen for end events to keep the _msTouches list accurate + // this needs to be on the body and never go away + if (!this._msDocumentListener) { + var internalCb = function (e) { + for (var i = 0; i < touches.length; i++) { + if (touches[i].pointerId === e.pointerId) { + touches.splice(i, 1); + break; + } + } + }; + //We listen on the documentElement as any drags that end by moving the touch off the screen get fired there + document.documentElement.addEventListener('MSPointerUp', internalCb, false); + document.documentElement.addEventListener('MSPointerCancel', internalCb, false); + + this._msDocumentListener = true; + } + + return this; + }, + + addMsTouchListenerMove: function (obj, type, handler, id) { + var pre = '_leaflet_', + touches = this._msTouches; + + function cb(e) { + + // don't fire touch moves when mouse isn't down + if (e.pointerType === e.MSPOINTER_TYPE_MOUSE && e.buttons === 0) { return; } + + for (var i = 0; i < touches.length; i++) { + if (touches[i].pointerId === e.pointerId) { + touches[i] = e; + break; + } + } + + e.touches = touches.slice(); + e.changedTouches = [e]; + + handler(e); + } + + obj[pre + 'touchmove' + id] = cb; + obj.addEventListener('MSPointerMove', cb, false); + + return this; + }, + + addMsTouchListenerEnd: function (obj, type, handler, id) { + var pre = '_leaflet_', + touches = this._msTouches; + + var cb = function (e) { + for (var i = 0; i < touches.length; i++) { + if (touches[i].pointerId === e.pointerId) { + touches.splice(i, 1); + break; + } + } + + e.touches = touches.slice(); + e.changedTouches = [e]; + + handler(e); + }; + + obj[pre + 'touchend' + id] = cb; + obj.addEventListener('MSPointerUp', cb, false); + obj.addEventListener('MSPointerCancel', cb, false); + + return this; + }, + + removeMsTouchListener: function (obj, type, id) { + var pre = '_leaflet_', + cb = obj[pre + type + id]; + + switch (type) { + case 'touchstart': + obj.removeEventListener('MSPointerDown', cb, false); + break; + case 'touchmove': + obj.removeEventListener('MSPointerMove', cb, false); + break; + case 'touchend': + obj.removeEventListener('MSPointerUp', cb, false); + obj.removeEventListener('MSPointerCancel', cb, false); + break; + } + + return this; + } +}); + + +/* + * L.Handler.TouchZoom is used by L.Map to add pinch zoom on supported mobile browsers. + */ + +L.Map.mergeOptions({ + touchZoom: L.Browser.touch && !L.Browser.android23 +}); + +L.Map.TouchZoom = L.Handler.extend({ + addHooks: function () { + L.DomEvent.on(this._map._container, 'touchstart', this._onTouchStart, this); + }, + + removeHooks: function () { + L.DomEvent.off(this._map._container, 'touchstart', this._onTouchStart, this); + }, + + _onTouchStart: function (e) { + var map = this._map; + + if (!e.touches || e.touches.length !== 2 || map._animatingZoom || this._zooming) { return; } + + var p1 = map.mouseEventToLayerPoint(e.touches[0]), + p2 = map.mouseEventToLayerPoint(e.touches[1]), + viewCenter = map._getCenterLayerPoint(); + + this._startCenter = p1.add(p2)._divideBy(2); + this._startDist = p1.distanceTo(p2); + + this._moved = false; + this._zooming = true; + + this._centerOffset = viewCenter.subtract(this._startCenter); + + if (map._panAnim) { + map._panAnim.stop(); + } + + L.DomEvent + .on(document, 'touchmove', this._onTouchMove, this) + .on(document, 'touchend', this._onTouchEnd, this); + + L.DomEvent.preventDefault(e); + }, + + _onTouchMove: function (e) { + if (!e.touches || e.touches.length !== 2) { return; } + + var map = this._map; + + var p1 = map.mouseEventToLayerPoint(e.touches[0]), + p2 = map.mouseEventToLayerPoint(e.touches[1]); + + this._scale = p1.distanceTo(p2) / this._startDist; + this._delta = p1._add(p2)._divideBy(2)._subtract(this._startCenter); + + if (this._scale === 1) { return; } + + if (!this._moved) { + L.DomUtil.addClass(map._mapPane, 'leaflet-zoom-anim leaflet-touching'); + + map + .fire('movestart') + .fire('zoomstart') + ._prepareTileBg(); + + this._moved = true; + } + + L.Util.cancelAnimFrame(this._animRequest); + this._animRequest = L.Util.requestAnimFrame( + this._updateOnMove, this, true, this._map._container); + + L.DomEvent.preventDefault(e); + }, + + _updateOnMove: function () { + var map = this._map, + origin = this._getScaleOrigin(), + center = map.layerPointToLatLng(origin); + + map.fire('zoomanim', { + center: center, + zoom: map.getScaleZoom(this._scale) + }); + + // Used 2 translates instead of transform-origin because of a very strange bug - + // it didn't count the origin on the first touch-zoom but worked correctly afterwards + + map._tileBg.style[L.DomUtil.TRANSFORM] = + L.DomUtil.getTranslateString(this._delta) + ' ' + + L.DomUtil.getScaleString(this._scale, this._startCenter); + }, + + _onTouchEnd: function () { + if (!this._moved || !this._zooming) { return; } + + var map = this._map; + + this._zooming = false; + L.DomUtil.removeClass(map._mapPane, 'leaflet-touching'); + + L.DomEvent + .off(document, 'touchmove', this._onTouchMove) + .off(document, 'touchend', this._onTouchEnd); + + var origin = this._getScaleOrigin(), + center = map.layerPointToLatLng(origin), + + oldZoom = map.getZoom(), + floatZoomDelta = map.getScaleZoom(this._scale) - oldZoom, + roundZoomDelta = (floatZoomDelta > 0 ? + Math.ceil(floatZoomDelta) : Math.floor(floatZoomDelta)), + + zoom = map._limitZoom(oldZoom + roundZoomDelta); + + map.fire('zoomanim', { + center: center, + zoom: zoom + }); + + map._runAnimation(center, zoom, map.getZoomScale(zoom) / this._scale, origin, true); + }, + + _getScaleOrigin: function () { + var centerOffset = this._centerOffset.subtract(this._delta).divideBy(this._scale); + return this._startCenter.add(centerOffset); + } +}); + +L.Map.addInitHook('addHandler', 'touchZoom', L.Map.TouchZoom); + + +/* + * L.Handler.ShiftDragZoom is used to add shift-drag zoom interaction to the map + * (zoom to a selected bounding box), enabled by default. + */ + +L.Map.mergeOptions({ + boxZoom: true +}); + +L.Map.BoxZoom = L.Handler.extend({ + initialize: function (map) { + this._map = map; + this._container = map._container; + this._pane = map._panes.overlayPane; + }, + + addHooks: function () { + L.DomEvent.on(this._container, 'mousedown', this._onMouseDown, this); + }, + + removeHooks: function () { + L.DomEvent.off(this._container, 'mousedown', this._onMouseDown); + }, + + _onMouseDown: function (e) { + if (!e.shiftKey || ((e.which !== 1) && (e.button !== 1))) { return false; } + + L.DomUtil.disableTextSelection(); + + this._startLayerPoint = this._map.mouseEventToLayerPoint(e); + + this._box = L.DomUtil.create('div', 'leaflet-zoom-box', this._pane); + L.DomUtil.setPosition(this._box, this._startLayerPoint); + + //TODO refactor: move cursor to styles + this._container.style.cursor = 'crosshair'; + + L.DomEvent + .on(document, 'mousemove', this._onMouseMove, this) + .on(document, 'mouseup', this._onMouseUp, this) + .preventDefault(e); + + this._map.fire("boxzoomstart"); + }, + + _onMouseMove: function (e) { + var startPoint = this._startLayerPoint, + box = this._box, + + layerPoint = this._map.mouseEventToLayerPoint(e), + offset = layerPoint.subtract(startPoint), + + newPos = new L.Point( + Math.min(layerPoint.x, startPoint.x), + Math.min(layerPoint.y, startPoint.y)); + + L.DomUtil.setPosition(box, newPos); + + // TODO refactor: remove hardcoded 4 pixels + box.style.width = (Math.max(0, Math.abs(offset.x) - 4)) + 'px'; + box.style.height = (Math.max(0, Math.abs(offset.y) - 4)) + 'px'; + }, + + _onMouseUp: function (e) { + this._pane.removeChild(this._box); + this._container.style.cursor = ''; + + L.DomUtil.enableTextSelection(); + + L.DomEvent + .off(document, 'mousemove', this._onMouseMove) + .off(document, 'mouseup', this._onMouseUp); + + var map = this._map, + layerPoint = map.mouseEventToLayerPoint(e); + + if (this._startLayerPoint.equals(layerPoint)) { return; } + + var bounds = new L.LatLngBounds( + map.layerPointToLatLng(this._startLayerPoint), + map.layerPointToLatLng(layerPoint)); + + map.fitBounds(bounds); + + map.fire("boxzoomend", { + boxZoomBounds: bounds + }); + } +}); + +L.Map.addInitHook('addHandler', 'boxZoom', L.Map.BoxZoom); + + +/* + * L.Map.Keyboard is handling keyboard interaction with the map, enabled by default. + */ + +L.Map.mergeOptions({ + keyboard: true, + keyboardPanOffset: 80, + keyboardZoomOffset: 1 +}); + +L.Map.Keyboard = L.Handler.extend({ + + keyCodes: { + left: [37], + right: [39], + down: [40], + up: [38], + zoomIn: [187, 107, 61], + zoomOut: [189, 109, 173] + }, + + initialize: function (map) { + this._map = map; + + this._setPanOffset(map.options.keyboardPanOffset); + this._setZoomOffset(map.options.keyboardZoomOffset); + }, + + addHooks: function () { + var container = this._map._container; + + // make the container focusable by tabbing + if (container.tabIndex === -1) { + container.tabIndex = "0"; + } + + L.DomEvent + .on(container, 'focus', this._onFocus, this) + .on(container, 'blur', this._onBlur, this) + .on(container, 'mousedown', this._onMouseDown, this); + + this._map + .on('focus', this._addHooks, this) + .on('blur', this._removeHooks, this); + }, + + removeHooks: function () { + this._removeHooks(); + + var container = this._map._container; + + L.DomEvent + .off(container, 'focus', this._onFocus, this) + .off(container, 'blur', this._onBlur, this) + .off(container, 'mousedown', this._onMouseDown, this); + + this._map + .off('focus', this._addHooks, this) + .off('blur', this._removeHooks, this); + }, + + _onMouseDown: function () { + if (!this._focused) { + this._map._container.focus(); + } + }, + + _onFocus: function () { + this._focused = true; + this._map.fire('focus'); + }, + + _onBlur: function () { + this._focused = false; + this._map.fire('blur'); + }, + + _setPanOffset: function (pan) { + var keys = this._panKeys = {}, + codes = this.keyCodes, + i, len; + + for (i = 0, len = codes.left.length; i < len; i++) { + keys[codes.left[i]] = [-1 * pan, 0]; + } + for (i = 0, len = codes.right.length; i < len; i++) { + keys[codes.right[i]] = [pan, 0]; + } + for (i = 0, len = codes.down.length; i < len; i++) { + keys[codes.down[i]] = [0, pan]; + } + for (i = 0, len = codes.up.length; i < len; i++) { + keys[codes.up[i]] = [0, -1 * pan]; + } + }, + + _setZoomOffset: function (zoom) { + var keys = this._zoomKeys = {}, + codes = this.keyCodes, + i, len; + + for (i = 0, len = codes.zoomIn.length; i < len; i++) { + keys[codes.zoomIn[i]] = zoom; + } + for (i = 0, len = codes.zoomOut.length; i < len; i++) { + keys[codes.zoomOut[i]] = -zoom; + } + }, + + _addHooks: function () { + L.DomEvent.on(document, 'keydown', this._onKeyDown, this); + }, + + _removeHooks: function () { + L.DomEvent.off(document, 'keydown', this._onKeyDown, this); + }, + + _onKeyDown: function (e) { + var key = e.keyCode, + map = this._map; + + if (this._panKeys.hasOwnProperty(key)) { + map.panBy(this._panKeys[key]); + + if (map.options.maxBounds) { + map.panInsideBounds(map.options.maxBounds); + } + + } else if (this._zoomKeys.hasOwnProperty(key)) { + map.setZoom(map.getZoom() + this._zoomKeys[key]); + + } else { + return; + } + + L.DomEvent.stop(e); + } +}); + +L.Map.addInitHook('addHandler', 'keyboard', L.Map.Keyboard); + + +/* + * L.Handler.MarkerDrag is used internally by L.Marker to make the markers draggable. + */ + +L.Handler.MarkerDrag = L.Handler.extend({ + initialize: function (marker) { + this._marker = marker; + }, + + addHooks: function () { + var icon = this._marker._icon; + if (!this._draggable) { + this._draggable = new L.Draggable(icon, icon) + .on('dragstart', this._onDragStart, this) + .on('drag', this._onDrag, this) + .on('dragend', this._onDragEnd, this); + } + this._draggable.enable(); + }, + + removeHooks: function () { + this._draggable.disable(); + }, + + moved: function () { + return this._draggable && this._draggable._moved; + }, + + _onDragStart: function () { + this._marker + .closePopup() + .fire('movestart') + .fire('dragstart'); + }, + + _onDrag: function () { + var marker = this._marker, + shadow = marker._shadow, + iconPos = L.DomUtil.getPosition(marker._icon), + latlng = marker._map.layerPointToLatLng(iconPos); + + // update shadow position + if (shadow) { + L.DomUtil.setPosition(shadow, iconPos); + } + + marker._latlng = latlng; + + marker + .fire('move', {latlng: latlng}) + .fire('drag'); + }, + + _onDragEnd: function () { + this._marker + .fire('moveend') + .fire('dragend'); + } +}); + + +/* + * L.Handler.PolyEdit is an editing handler for polylines and polygons. + */ + +L.Handler.PolyEdit = L.Handler.extend({ + options: { + icon: new L.DivIcon({ + iconSize: new L.Point(8, 8), + className: 'leaflet-div-icon leaflet-editing-icon' + }) + }, + + initialize: function (poly, options) { + this._poly = poly; + L.setOptions(this, options); + }, + + addHooks: function () { + if (this._poly._map) { + if (!this._markerGroup) { + this._initMarkers(); + } + this._poly._map.addLayer(this._markerGroup); + } + }, + + removeHooks: function () { + if (this._poly._map) { + this._poly._map.removeLayer(this._markerGroup); + delete this._markerGroup; + delete this._markers; + } + }, + + updateMarkers: function () { + this._markerGroup.clearLayers(); + this._initMarkers(); + }, + + _initMarkers: function () { + if (!this._markerGroup) { + this._markerGroup = new L.LayerGroup(); + } + this._markers = []; + + var latlngs = this._poly._latlngs, + i, j, len, marker; + + // TODO refactor holes implementation in Polygon to support it here + + for (i = 0, len = latlngs.length; i < len; i++) { + + marker = this._createMarker(latlngs[i], i); + marker.on('click', this._onMarkerClick, this); + this._markers.push(marker); + } + + var markerLeft, markerRight; + + for (i = 0, j = len - 1; i < len; j = i++) { + if (i === 0 && !(L.Polygon && (this._poly instanceof L.Polygon))) { + continue; + } + + markerLeft = this._markers[j]; + markerRight = this._markers[i]; + + this._createMiddleMarker(markerLeft, markerRight); + this._updatePrevNext(markerLeft, markerRight); + } + }, + + _createMarker: function (latlng, index) { + var marker = new L.Marker(latlng, { + draggable: true, + icon: this.options.icon + }); + + marker._origLatLng = latlng; + marker._index = index; + + marker.on('drag', this._onMarkerDrag, this); + marker.on('dragend', this._fireEdit, this); + + this._markerGroup.addLayer(marker); + + return marker; + }, + + _fireEdit: function () { + this._poly.fire('edit'); + }, + + _onMarkerDrag: function (e) { + var marker = e.target; + + L.extend(marker._origLatLng, marker._latlng); + + if (marker._middleLeft) { + marker._middleLeft.setLatLng(this._getMiddleLatLng(marker._prev, marker)); + } + if (marker._middleRight) { + marker._middleRight.setLatLng(this._getMiddleLatLng(marker, marker._next)); + } + + this._poly.redraw(); + }, + + _onMarkerClick: function (e) { + // we want to remove the marker on click, but if latlng count < 3, polyline would be invalid + if (this._poly._latlngs.length < 3) { return; } + + var marker = e.target, + i = marker._index; + + // remove the marker + this._markerGroup.removeLayer(marker); + this._markers.splice(i, 1); + this._poly.spliceLatLngs(i, 1); + this._updateIndexes(i, -1); + + // update prev/next links of adjacent markers + this._updatePrevNext(marker._prev, marker._next); + + // remove ghost markers near the removed marker + if (marker._middleLeft) { + this._markerGroup.removeLayer(marker._middleLeft); + } + if (marker._middleRight) { + this._markerGroup.removeLayer(marker._middleRight); + } + + // create a ghost marker in place of the removed one + if (marker._prev && marker._next) { + this._createMiddleMarker(marker._prev, marker._next); + + } else if (!marker._prev) { + marker._next._middleLeft = null; + + } else if (!marker._next) { + marker._prev._middleRight = null; + } + + this._poly.fire('edit'); + }, + + _updateIndexes: function (index, delta) { + this._markerGroup.eachLayer(function (marker) { + if (marker._index > index) { + marker._index += delta; + } + }); + }, + + _createMiddleMarker: function (marker1, marker2) { + var latlng = this._getMiddleLatLng(marker1, marker2), + marker = this._createMarker(latlng), + onClick, + onDragStart, + onDragEnd; + + marker.setOpacity(0.6); + + marker1._middleRight = marker2._middleLeft = marker; + + onDragStart = function () { + var i = marker2._index; + + marker._index = i; + + marker + .off('click', onClick) + .on('click', this._onMarkerClick, this); + + latlng.lat = marker.getLatLng().lat; + latlng.lng = marker.getLatLng().lng; + this._poly.spliceLatLngs(i, 0, latlng); + this._markers.splice(i, 0, marker); + + marker.setOpacity(1); + + this._updateIndexes(i, 1); + marker2._index++; + this._updatePrevNext(marker1, marker); + this._updatePrevNext(marker, marker2); + }; + + onDragEnd = function () { + marker.off('dragstart', onDragStart, this); + marker.off('dragend', onDragEnd, this); + + this._createMiddleMarker(marker1, marker); + this._createMiddleMarker(marker, marker2); + }; + + onClick = function () { + onDragStart.call(this); + onDragEnd.call(this); + this._poly.fire('edit'); + }; + + marker + .on('click', onClick, this) + .on('dragstart', onDragStart, this) + .on('dragend', onDragEnd, this); + + this._markerGroup.addLayer(marker); + }, + + _updatePrevNext: function (marker1, marker2) { + if (marker1) { + marker1._next = marker2; + } + if (marker2) { + marker2._prev = marker1; + } + }, + + _getMiddleLatLng: function (marker1, marker2) { + var map = this._poly._map, + p1 = map.latLngToLayerPoint(marker1.getLatLng()), + p2 = map.latLngToLayerPoint(marker2.getLatLng()); + + return map.layerPointToLatLng(p1._add(p2)._divideBy(2)); + } +}); + +L.Polyline.addInitHook(function () { + + if (L.Handler.PolyEdit) { + this.editing = new L.Handler.PolyEdit(this); + + if (this.options.editable) { + this.editing.enable(); + } + } + + this.on('add', function () { + if (this.editing && this.editing.enabled()) { + this.editing.addHooks(); + } + }); + + this.on('remove', function () { + if (this.editing && this.editing.enabled()) { + this.editing.removeHooks(); + } + }); +}); + + +/* + * L.Control is a base class for implementing map controls. Handles positioning. + * All other controls extend from this class. + */ + +L.Control = L.Class.extend({ + options: { + position: 'topright' + }, + + initialize: function (options) { + L.setOptions(this, options); + }, + + getPosition: function () { + return this.options.position; + }, + + setPosition: function (position) { + var map = this._map; + + if (map) { + map.removeControl(this); + } + + this.options.position = position; + + if (map) { + map.addControl(this); + } + + return this; + }, + + addTo: function (map) { + this._map = map; + + var container = this._container = this.onAdd(map), + pos = this.getPosition(), + corner = map._controlCorners[pos]; + + L.DomUtil.addClass(container, 'leaflet-control'); + + if (pos.indexOf('bottom') !== -1) { + corner.insertBefore(container, corner.firstChild); + } else { + corner.appendChild(container); + } + + return this; + }, + + removeFrom: function (map) { + var pos = this.getPosition(), + corner = map._controlCorners[pos]; + + corner.removeChild(this._container); + this._map = null; + + if (this.onRemove) { + this.onRemove(map); + } + + return this; + } +}); + +L.control = function (options) { + return new L.Control(options); +}; + + +/* + * Adds control-related methods to L.Map. + */ + +L.Map.include({ + addControl: function (control) { + control.addTo(this); + return this; + }, + + removeControl: function (control) { + control.removeFrom(this); + return this; + }, + + _initControlPos: function () { + var corners = this._controlCorners = {}, + l = 'leaflet-', + container = this._controlContainer = + L.DomUtil.create('div', l + 'control-container', this._container); + + function createCorner(vSide, hSide) { + var className = l + vSide + ' ' + l + hSide; + + corners[vSide + hSide] = L.DomUtil.create('div', className, container); + } + + createCorner('top', 'left'); + createCorner('top', 'right'); + createCorner('bottom', 'left'); + createCorner('bottom', 'right'); + } +}); + + +/* + * L.Control.Zoom is used for the default zoom buttons on the map. + */ + +L.Control.Zoom = L.Control.extend({ + options: { + position: 'topleft' + }, + + onAdd: function (map) { + var zoomName = 'leaflet-control-zoom', + barName = 'leaflet-bar', + partName = barName + '-part', + container = L.DomUtil.create('div', zoomName + ' ' + barName); + + this._map = map; + + this._zoomInButton = this._createButton('+', 'Zoom in', + zoomName + '-in ' + + partName + ' ' + + partName + '-top', + container, this._zoomIn, this); + + this._zoomOutButton = this._createButton('-', 'Zoom out', + zoomName + '-out ' + + partName + ' ' + + partName + '-bottom', + container, this._zoomOut, this); + + map.on('zoomend', this._updateDisabled, this); + + return container; + }, + + onRemove: function (map) { + map.off('zoomend', this._updateDisabled, this); + }, + + _zoomIn: function (e) { + this._map.zoomIn(e.shiftKey ? 3 : 1); + }, + + _zoomOut: function (e) { + this._map.zoomOut(e.shiftKey ? 3 : 1); + }, + + _createButton: function (html, title, className, container, fn, context) { + var link = L.DomUtil.create('a', className, container); + link.innerHTML = html; + link.href = '#'; + link.title = title; + + var stop = L.DomEvent.stopPropagation; + + L.DomEvent + .on(link, 'click', stop) + .on(link, 'mousedown', stop) + .on(link, 'dblclick', stop) + .on(link, 'click', L.DomEvent.preventDefault) + .on(link, 'click', fn, context); + + return link; + }, + + _updateDisabled: function () { + var map = this._map, + className = 'leaflet-control-zoom-disabled'; + + L.DomUtil.removeClass(this._zoomInButton, className); + L.DomUtil.removeClass(this._zoomOutButton, className); + + if (map._zoom === map.getMinZoom()) { + L.DomUtil.addClass(this._zoomOutButton, className); + } + if (map._zoom === map.getMaxZoom()) { + L.DomUtil.addClass(this._zoomInButton, className); + } + } +}); + +L.Map.mergeOptions({ + zoomControl: true +}); + +L.Map.addInitHook(function () { + if (this.options.zoomControl) { + this.zoomControl = new L.Control.Zoom(); + this.addControl(this.zoomControl); + } +}); + +L.control.zoom = function (options) { + return new L.Control.Zoom(options); +}; + + + +/* + * L.Control.Attribution is used for displaying attribution on the map (added by default). + */ + +L.Control.Attribution = L.Control.extend({ + options: { + position: 'bottomright', + prefix: 'Powered by Leaflet' + }, + + initialize: function (options) { + L.setOptions(this, options); + + this._attributions = {}; + }, + + onAdd: function (map) { + this._container = L.DomUtil.create('div', 'leaflet-control-attribution'); + L.DomEvent.disableClickPropagation(this._container); + + map + .on('layeradd', this._onLayerAdd, this) + .on('layerremove', this._onLayerRemove, this); + + this._update(); + + return this._container; + }, + + onRemove: function (map) { + map + .off('layeradd', this._onLayerAdd) + .off('layerremove', this._onLayerRemove); + + }, + + setPrefix: function (prefix) { + this.options.prefix = prefix; + this._update(); + return this; + }, + + addAttribution: function (text) { + if (!text) { return; } + + if (!this._attributions[text]) { + this._attributions[text] = 0; + } + this._attributions[text]++; + + this._update(); + + return this; + }, + + removeAttribution: function (text) { + if (!text) { return; } + + this._attributions[text]--; + this._update(); + + return this; + }, + + _update: function () { + if (!this._map) { return; } + + var attribs = []; + + for (var i in this._attributions) { + if (this._attributions.hasOwnProperty(i) && this._attributions[i]) { + attribs.push(i); + } + } + + var prefixAndAttribs = []; + + if (this.options.prefix) { + prefixAndAttribs.push(this.options.prefix); + } + if (attribs.length) { + prefixAndAttribs.push(attribs.join(', ')); + } + + this._container.innerHTML = prefixAndAttribs.join(' — '); + }, + + _onLayerAdd: function (e) { + if (e.layer.getAttribution) { + this.addAttribution(e.layer.getAttribution()); + } + }, + + _onLayerRemove: function (e) { + if (e.layer.getAttribution) { + this.removeAttribution(e.layer.getAttribution()); + } + } +}); + +L.Map.mergeOptions({ + attributionControl: true +}); + +L.Map.addInitHook(function () { + if (this.options.attributionControl) { + this.attributionControl = (new L.Control.Attribution()).addTo(this); + } +}); + +L.control.attribution = function (options) { + return new L.Control.Attribution(options); +}; + + +/* + * L.Control.Scale is used for displaying metric/imperial scale on the map. + */ + +L.Control.Scale = L.Control.extend({ + options: { + position: 'bottomleft', + maxWidth: 100, + metric: true, + imperial: true, + updateWhenIdle: false + }, + + onAdd: function (map) { + this._map = map; + + var className = 'leaflet-control-scale', + container = L.DomUtil.create('div', className), + options = this.options; + + this._addScales(options, className, container); + + map.on(options.updateWhenIdle ? 'moveend' : 'move', this._update, this); + map.whenReady(this._update, this); + + return container; + }, + + onRemove: function (map) { + map.off(this.options.updateWhenIdle ? 'moveend' : 'move', this._update, this); + }, + + _addScales: function (options, className, container) { + if (options.metric) { + this._mScale = L.DomUtil.create('div', className + '-line', container); + } + if (options.imperial) { + this._iScale = L.DomUtil.create('div', className + '-line', container); + } + }, + + _update: function () { + var bounds = this._map.getBounds(), + centerLat = bounds.getCenter().lat, + halfWorldMeters = 6378137 * Math.PI * Math.cos(centerLat * Math.PI / 180), + dist = halfWorldMeters * (bounds.getNorthEast().lng - bounds.getSouthWest().lng) / 180, + + size = this._map.getSize(), + options = this.options, + maxMeters = 0; + + if (size.x > 0) { + maxMeters = dist * (options.maxWidth / size.x); + } + + this._updateScales(options, maxMeters); + }, + + _updateScales: function (options, maxMeters) { + if (options.metric && maxMeters) { + this._updateMetric(maxMeters); + } + + if (options.imperial && maxMeters) { + this._updateImperial(maxMeters); + } + }, + + _updateMetric: function (maxMeters) { + var meters = this._getRoundNum(maxMeters); + + this._mScale.style.width = this._getScaleWidth(meters / maxMeters) + 'px'; + this._mScale.innerHTML = meters < 1000 ? meters + ' m' : (meters / 1000) + ' km'; + }, + + _updateImperial: function (maxMeters) { + var maxFeet = maxMeters * 3.2808399, + scale = this._iScale, + maxMiles, miles, feet; + + if (maxFeet > 5280) { + maxMiles = maxFeet / 5280; + miles = this._getRoundNum(maxMiles); + + scale.style.width = this._getScaleWidth(miles / maxMiles) + 'px'; + scale.innerHTML = miles + ' mi'; + + } else { + feet = this._getRoundNum(maxFeet); + + scale.style.width = this._getScaleWidth(feet / maxFeet) + 'px'; + scale.innerHTML = feet + ' ft'; + } + }, + + _getScaleWidth: function (ratio) { + return Math.round(this.options.maxWidth * ratio) - 10; + }, + + _getRoundNum: function (num) { + var pow10 = Math.pow(10, (Math.floor(num) + '').length - 1), + d = num / pow10; + + d = d >= 10 ? 10 : d >= 5 ? 5 : d >= 3 ? 3 : d >= 2 ? 2 : 1; + + return pow10 * d; + } +}); + +L.control.scale = function (options) { + return new L.Control.Scale(options); +}; + + +/* + * L.Control.Layers is a control to allow users to switch between different layers on the map. + */ + +L.Control.Layers = L.Control.extend({ + options: { + collapsed: true, + position: 'topright', + autoZIndex: true + }, + + initialize: function (baseLayers, overlays, options) { + L.setOptions(this, options); + + this._layers = {}; + this._lastZIndex = 0; + this._handlingClick = false; + + for (var i in baseLayers) { + if (baseLayers.hasOwnProperty(i)) { + this._addLayer(baseLayers[i], i); + } + } + + for (i in overlays) { + if (overlays.hasOwnProperty(i)) { + this._addLayer(overlays[i], i, true); + } + } + }, + + onAdd: function (map) { + this._initLayout(); + this._update(); + + map + .on('layeradd', this._onLayerChange, this) + .on('layerremove', this._onLayerChange, this); + + return this._container; + }, + + onRemove: function (map) { + map + .off('layeradd', this._onLayerChange) + .off('layerremove', this._onLayerChange); + }, + + addBaseLayer: function (layer, name) { + this._addLayer(layer, name); + this._update(); + return this; + }, + + addOverlay: function (layer, name) { + this._addLayer(layer, name, true); + this._update(); + return this; + }, + + removeLayer: function (layer) { + var id = L.stamp(layer); + delete this._layers[id]; + this._update(); + return this; + }, + + _initLayout: function () { + var className = 'leaflet-control-layers', + container = this._container = L.DomUtil.create('div', className); + + if (!L.Browser.touch) { + L.DomEvent.disableClickPropagation(container); + L.DomEvent.on(container, 'mousewheel', L.DomEvent.stopPropagation); + } else { + L.DomEvent.on(container, 'click', L.DomEvent.stopPropagation); + } + + var form = this._form = L.DomUtil.create('form', className + '-list'); + + if (this.options.collapsed) { + L.DomEvent + .on(container, 'mouseover', this._expand, this) + .on(container, 'mouseout', this._collapse, this); + + var link = this._layersLink = L.DomUtil.create('a', className + '-toggle', container); + link.href = '#'; + link.title = 'Layers'; + + if (L.Browser.touch) { + L.DomEvent + .on(link, 'click', L.DomEvent.stopPropagation) + .on(link, 'click', L.DomEvent.preventDefault) + .on(link, 'click', this._expand, this); + } + else { + L.DomEvent.on(link, 'focus', this._expand, this); + } + + this._map.on('movestart', this._collapse, this); + // TODO keyboard accessibility + } else { + this._expand(); + } + + this._baseLayersList = L.DomUtil.create('div', className + '-base', form); + this._separator = L.DomUtil.create('div', className + '-separator', form); + this._overlaysList = L.DomUtil.create('div', className + '-overlays', form); + + container.appendChild(form); + }, + + _addLayer: function (layer, name, overlay) { + var id = L.stamp(layer); + + this._layers[id] = { + layer: layer, + name: name, + overlay: overlay + }; + + if (this.options.autoZIndex && layer.setZIndex) { + this._lastZIndex++; + layer.setZIndex(this._lastZIndex); + } + }, + + _update: function () { + if (!this._container) { + return; + } + + this._baseLayersList.innerHTML = ''; + this._overlaysList.innerHTML = ''; + + var baseLayersPresent = false, + overlaysPresent = false; + + for (var i in this._layers) { + if (this._layers.hasOwnProperty(i)) { + var obj = this._layers[i]; + this._addItem(obj); + overlaysPresent = overlaysPresent || obj.overlay; + baseLayersPresent = baseLayersPresent || !obj.overlay; + } + } + + this._separator.style.display = (overlaysPresent && baseLayersPresent ? '' : 'none'); + }, + + _onLayerChange: function (e) { + var id = L.stamp(e.layer); + + if (this._layers[id] && !this._handlingClick) { + this._update(); + } + }, + + // IE7 bugs out if you create a radio dynamically, so you have to do it this hacky way (see http://bit.ly/PqYLBe) + _createRadioElement: function (name, checked) { + + var radioHtml = ' 0.5 && + this._getLoadedTilesPercentage(tilePane) < 0.5) { + + tilePane.style.visibility = 'hidden'; + tilePane.empty = true; + this._stopLoadingImages(tilePane); + return; + } + + if (!tileBg) { + tileBg = this._tileBg = this._createPane('leaflet-tile-pane', this._mapPane); + tileBg.style.zIndex = 1; + } + + // prepare the background pane to become the main tile pane + tileBg.style[L.DomUtil.TRANSFORM] = ''; + tileBg.style.visibility = 'hidden'; + + // tells tile layers to reinitialize their containers + tileBg.empty = true; //new FG + tilePane.empty = false; //new BG + + //Switch out the current layer to be the new bg layer (And vice-versa) + this._tilePane = this._panes.tilePane = tileBg; + var newTileBg = this._tileBg = tilePane; + + L.DomUtil.addClass(newTileBg, 'leaflet-zoom-animated'); + + this._stopLoadingImages(newTileBg); + }, + + _getLoadedTilesPercentage: function (container) { + var tiles = container.getElementsByTagName('img'), + i, len, count = 0; + + for (i = 0, len = tiles.length; i < len; i++) { + if (tiles[i].complete) { + count++; + } + } + return count / len; + }, + + // stops loading all tiles in the background layer + _stopLoadingImages: function (container) { + var tiles = Array.prototype.slice.call(container.getElementsByTagName('img')), + i, len, tile; + + for (i = 0, len = tiles.length; i < len; i++) { + tile = tiles[i]; + + if (!tile.complete) { + tile.onload = L.Util.falseFn; + tile.onerror = L.Util.falseFn; + tile.src = L.Util.emptyImageUrl; + + tile.parentNode.removeChild(tile); + } + } + }, + + _onZoomTransitionEnd: function () { + this._restoreTileFront(); + + L.DomUtil.removeClass(this._mapPane, 'leaflet-zoom-anim'); + L.Util.falseFn(this._tileBg.offsetWidth); // force reflow + this._animatingZoom = false; + this._resetView(this._animateToCenter, this._animateToZoom, true, true); + + if (L.Draggable) { + L.Draggable._disabled = false; + } + }, + + _restoreTileFront: function () { + this._tilePane.innerHTML = ''; + this._tilePane.style.visibility = ''; + this._tilePane.style.zIndex = 2; + this._tileBg.style.zIndex = 1; + }, + + _clearTileBg: function () { + if (!this._animatingZoom && !this.touchZoom._zooming) { + this._tileBg.innerHTML = ''; + } + } +}); + + +/* + * Provides L.Map with convenient shortcuts for using browser geolocation features. + */ + +L.Map.include({ + _defaultLocateOptions: { + watch: false, + setView: false, + maxZoom: Infinity, + timeout: 10000, + maximumAge: 0, + enableHighAccuracy: false + }, + + locate: function (/*Object*/ options) { + + options = this._locationOptions = L.extend(this._defaultLocateOptions, options); + + if (!navigator.geolocation) { + this._handleGeolocationError({ + code: 0, + message: "Geolocation not supported." + }); + return this; + } + + var onResponse = L.bind(this._handleGeolocationResponse, this), + onError = L.bind(this._handleGeolocationError, this); + + if (options.watch) { + this._locationWatchId = + navigator.geolocation.watchPosition(onResponse, onError, options); + } else { + navigator.geolocation.getCurrentPosition(onResponse, onError, options); + } + return this; + }, + + stopLocate: function () { + if (navigator.geolocation) { + navigator.geolocation.clearWatch(this._locationWatchId); + } + return this; + }, + + _handleGeolocationError: function (error) { + var c = error.code, + message = error.message || + (c === 1 ? "permission denied" : + (c === 2 ? "position unavailable" : "timeout")); + + if (this._locationOptions.setView && !this._loaded) { + this.fitWorld(); + } + + this.fire('locationerror', { + code: c, + message: "Geolocation error: " + message + "." + }); + }, + + _handleGeolocationResponse: function (pos) { + var latAccuracy = 180 * pos.coords.accuracy / 4e7, + lngAccuracy = latAccuracy * 2, + + lat = pos.coords.latitude, + lng = pos.coords.longitude, + latlng = new L.LatLng(lat, lng), + + sw = new L.LatLng(lat - latAccuracy, lng - lngAccuracy), + ne = new L.LatLng(lat + latAccuracy, lng + lngAccuracy), + bounds = new L.LatLngBounds(sw, ne), + + options = this._locationOptions; + + if (options.setView) { + var zoom = Math.min(this.getBoundsZoom(bounds), options.maxZoom); + this.setView(latlng, zoom); + } + + this.fire('locationfound', { + latlng: latlng, + bounds: bounds, + accuracy: pos.coords.accuracy + }); + } +}); + + +}(this, document)); \ No newline at end of file diff --git a/08/Researches/Tancredi_Di_Giovanni/leaflet-hash/package.json b/08/Researches/Tancredi_Di_Giovanni/leaflet-hash/package.json new file mode 100644 index 0000000..c684839 --- /dev/null +++ b/08/Researches/Tancredi_Di_Giovanni/leaflet-hash/package.json @@ -0,0 +1,20 @@ +{ + "author": "Michael Lawrence Evans", + "name": "leaflet-hash", + "description": "linkable location hashes for leaflet", + "version": "0.2.1", + "homepage": "https://github.com/mlevans/leaflet-hash", + "repository": { + "type": "git", + "url": "https://github.com/mlevans/leaflet-hash.git" + }, + "devDependencies": { + "mocha": "~1.8", + "expect.js": "~0.2.0" + }, + "main": "leaflet-hash.js", + "optionalDependencies": {}, + "engines": { + "node": "*" + } +} diff --git a/08/Researches/Tancredi_Di_Giovanni/leaflet-hash/screenshots/screenshot.png b/08/Researches/Tancredi_Di_Giovanni/leaflet-hash/screenshots/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..500d00c5289effe30ce0fcf9e3f9123780664d68 GIT binary patch literal 475831 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

rdKKmPnCB!-)I>-#y2Yx?UKDeA6Yp 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 z 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

)NE%?*rcVM#$XL0h1x>q9Nl>Pve(x(X-mH8 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 H;{E>sR2t(H literal 0 HcmV?d00001 diff --git a/08/Researches/Tancredi_Di_Giovanni/leaflet-hash/test/index.html b/08/Researches/Tancredi_Di_Giovanni/leaflet-hash/test/index.html new file mode 100644 index 0000000..c4b1dcd --- /dev/null +++ b/08/Researches/Tancredi_Di_Giovanni/leaflet-hash/test/index.html @@ -0,0 +1,24 @@ + + + + Mocha Tests + + + +
+ + + + + + + + + + + + + + diff --git a/08/Researches/Tancredi_Di_Giovanni/leaflet-hash/test/spec/hash.js b/08/Researches/Tancredi_Di_Giovanni/leaflet-hash/test/spec/hash.js new file mode 100644 index 0000000..4360fd9 --- /dev/null +++ b/08/Researches/Tancredi_Di_Giovanni/leaflet-hash/test/spec/hash.js @@ -0,0 +1,68 @@ +describe("L.Hash", function() { + + var map; + + mocha.ignoreLeaks(); + + beforeEach(function() { + map = new L.Map(document.createElement('div')); + }); + + it('sets a hash when the map is moved', function() { + var hash = L.hash(map); + map.setView([51.505, -0.09], 13); + expect(location.hash).to.be('#13/51.5050/-0.0900'); + }); + + it('uses a hash set initially on the page', function(done) { + location.hash = '#13/10/40'; + var hash = L.hash(map); + window.setTimeout(function() { + expect(Math.round(map.getCenter().lat)).to.be(10); + expect(Math.round(map.getCenter().lng)).to.be(40); + done(); + }, 200); + }); + + it('responds to a hash change after an initial hash is set', function(done) { + map.setView([51.505, -0.09], 13); + location.hash = '#13/20/40'; + var hash = L.hash(map); + window.setTimeout(function() { + expect(Math.round(map.getCenter().lat)).to.be(20); + expect(Math.round(map.getCenter().lng)).to.be(40); + done(); + }, 200); + }); + + it('does not acknowledge a junk hash', function(done) { + var hash = L.hash(map); + map.setView([51, 2], 13); + location.hash = '#foo'; + window.setTimeout(function() { + expect(Math.round(map.getCenter().lat)).to.eql(51); + expect(Math.round(map.getCenter().lng)).to.eql(2); + done(); + }, 200); + }); + + it('unbinds events when removed', function() { + location.hash = ''; + var hash = L.hash(map); + map.removeControl(hash); + map.setView([51.505, -0.09], 13); + expect(location.hash).to.be(''); + }); + + it('parses a hash', function() { + var parsed = L.Hash.parseHash('#13/20/40'); + expect(parsed.zoom).to.be(13); + expect(parsed.center).to.be.a(L.LatLng); + expect(parsed.center).to.eql({lat: 20, lng: 40}); + }); + + it('formats a hash', function() { + map.setView([51, 2], 13); + expect(L.Hash.formatHash(map)).to.be('#13/51.0000/2.0000'); + }); +}); diff --git a/08/Researches/Tancredi_Di_Giovanni/leaflet/images/layers-2x.png b/08/Researches/Tancredi_Di_Giovanni/leaflet/images/layers-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..200c333dca9652ac4cba004d609e5af4eee168c1 GIT binary patch literal 1259 zcmVFhCYNy;#0irRPomHqW|G1C*;4?@4#E?jH>?v@U%cy?3dQAc-DchXVErpOh~ z-jbon+tNbnl6hoEb;)TVk+%hTDDi_G%i3*RZ&15!$Fjr^f;Ke&A@|?=`2&+{zr+3a z{D*=t(`AXyS%X7N z%a#RZw6vD^t_rnM`L4E>m=U&R!A-&}nZIi$BOPvkhrCuUe@BN~-lRD)f44;J%TwgE zcze8u!PQ_NR7?o(NylLXVTfDO zxs5=@|GsYEsNo4M#nT%N!UE(?dnS)t2+{ELYAFp*3=iF=|EQnTp`#vlSXuGVraYo? z+RCzXo6h3qA8{KG?S4nE(lM+;Eb4nT3XV;7gcAxUi5m)`k5tv}cPy()8ZR3TLW3I- zAS^}cq-IJvL7a4RgR!yk@~RT%$lA7{L5ES*hyx)M4(yxI$Ub(4f)K|^v1>zvwQY!_ zIrWw8q9GS^!Dp~}+?mbnB6jDF8mVlbQ!jFKDY;w=7;XO{9bq7>LXGK24WA`;rL)_Z z)&j}pbV(;6gY;VMhbxgvn`X;6x}VUEE-7 z%)7j-%t8S=ZL3yc)HbXDAqJZvBTPoiW_A-+a8m3_Z?v{DN7Tnr#O_VUMT0UBt$;p` zDh6JbGHN8JJ*JN%y2%msb97@_S>9!%Egwk;?PEkU9ntz&3uR}%Fj5d$JHQbQb3}a{ zSzFT^#n=VInPpcAS}CNxj?_ zVscANk5Cfz(51EI1pz};AWWb|kgbYNb4wCEGUn3+eMUMV?1-{=I4TlmLJMot@rd07 zZuo2hk1ccu{YmGkcYdWAVdk{Z4Nm?^cTD&}jGm+Q1SYIXMwmG*oO*83&#>l%nbR`G zhh=lZ%xIb7kU3#;TBbfECrnC9P=-XpL|TG2BoZdj61*XiFbW8?1Z_wp%#;>${SUIy V$8qr;L*)Pf002ovPDHLkV1hYLS~36t literal 0 HcmV?d00001 diff --git a/08/Researches/Tancredi_Di_Giovanni/leaflet/images/layers.png b/08/Researches/Tancredi_Di_Giovanni/leaflet/images/layers.png new file mode 100644 index 0000000000000000000000000000000000000000..1a72e5784b2b456eac5d7670738db80697af3377 GIT binary patch literal 696 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 e-I|>x8~*?ZhF3snGbtJX0000cOl4 literal 0 HcmV?d00001 diff --git a/08/Researches/Tancredi_Di_Giovanni/leaflet/images/marker-icon.png b/08/Researches/Tancredi_Di_Giovanni/leaflet/images/marker-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..950edf24677ded147df13b26f91baa2b0fa70513 GIT binary patch literal 1466 zcmV;r1x5OaP)P001cn1^@s6z>|W`000GnNklGNuHDcIX17Zdjl&3`L?0sTjIws<{((Dh&g-s0<@jYQyl?D*X^?%13;ml^gy> ziMrY_^1WI=(g@LMizu=zCoA>C`6|QEq1eV92k*7m>G65*&@&6)aC&e}G zI)pf-Za|N`DT&Cn1J|o`19mumxW~hiKiKyc-P`S@q)rdTo84@QI@;0yXrG%9uhI>A zG5QHb6s4=<6xy{1 z@NMxEkryp{LS44%z$3lP^cX!9+2-;CTt3wM4(k*#C{aiIiLuB>jJj;KPhPzIC00bL zU3a#;aJld94lCW=`4&aAy8M7PY=HQ>O%$YEP4c4UY#CRxfgbE~(|uiI=YS8q;O9y6 zmIkXzR`}p7ti|PrM3a}WMnR=3NVnWdAAR>b9X@)DKL6=YsvmH%?I24wdq?Gh54_;# z$?_LvgjEdspdQlft#4CQ z`2Zyvy?*)N1Ftw|{_hakhG9WjS?Az@I@+IZ8JbWewR!XUK4&6346+d#~gsE0SY(LX8&JfY>Aj)RxGy96nwhs2rv zzW6pTnMpFkDSkT*a*6Dx|u@ds6ISVn0@^RmIsKZ5Y;bazbc;tTSq(kg(=481ODrPyNB6n z-$+U}(w$m6U6H$w17Bw+wDaFIe~GvNMYvnw31MpY0eQKT9l>SU``8k7w4)z!GZKMI z#_cEKq7k~i%nlK@6c-K?+R;B#5$?T#YpKD`t_4bAs^#E+@5QW$@OX3*`;(#{U^d-vY)&xEE>n5lYl&T?Amke9$Lam@{1K@O ze*LXqlKQHiv=gx+V^Cbb2?z@ISBQ*3amF;9UJ3SBg(N|710TLamQmYZ&Qjn2LuO<* zCZlB4n%@pc&7NNnY1}x+NWpHlq`OJEo|`aYN9<`RBUB+79g;>dgb6YlfN#kGL?lO_ z!6~M^7sOnbsUkKk<@Ysie&`G>ruxH&Mgy&8;i=A zB9OO!xR{AyODw>DS-q5YM{0ExFEAzt zm>RdS+ssW(-8|?xr0(?$vBVB*%(xDLtq3Hf0I5yFm<_g=W2`QWAax{1rWVH=I!VrP zs(rTFX@W#t$hXNvbgX`gK&^w_YD;CQ!B@e0QbLIWaKAXQe2-kkloo;{iF#6}z!4=W zi$giRj1{ zt;2w`VSCF#WE&*ev7jpsC=6175@(~nTE2;7M-L((0bH@yG}-TB$R~WXd?tA$s3|%y zA`9$sA(>F%J3ioz<-LJl*^o1|w84l>HBR`>3l9c8$5Xr@xCiIQ7{x$fMCzOk_-M=% z+{a_Q#;42`#KfUte@$NT77uaTz?b-fBe)1s5XE$yA79fm?KqM^VgLXD07*qoM6N<$ Ef<_J(9smFU literal 0 HcmV?d00001 diff --git a/08/Researches/Tancredi_Di_Giovanni/leaflet/leaflet-src.esm.js b/08/Researches/Tancredi_Di_Giovanni/leaflet/leaflet-src.esm.js new file mode 100644 index 0000000..f8b161b --- /dev/null +++ b/08/Researches/Tancredi_Di_Giovanni/leaflet/leaflet-src.esm.js @@ -0,0 +1,13838 @@ +/* @preserve + * Leaflet 1.4.0+Detached: 3337f36d2a2d2b33946779057619b31f674ff5dc.3337f36, a JS library for interactive maps. http://leafletjs.com + * (c) 2010-2018 Vladimir Agafonkin, (c) 2010-2011 CloudMade + */ + +var version = "1.4.0+HEAD.3337f36"; + +/* + * @namespace Util + * + * Various utility functions, used by Leaflet internally. + */ + +var freeze = Object.freeze; +Object.freeze = function (obj) { return obj; }; + +// @function extend(dest: Object, src?: Object): Object +// Merges the properties of the `src` object (or multiple objects) into `dest` object and returns the latter. Has an `L.extend` shortcut. +function extend(dest) { + var i, j, len, src; + + for (j = 1, len = arguments.length; j < len; j++) { + src = arguments[j]; + for (i in src) { + dest[i] = src[i]; + } + } + return dest; +} + +// @function create(proto: Object, properties?: Object): Object +// Compatibility polyfill for [Object.create](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/create) +var create = Object.create || (function () { + function F() {} + return function (proto) { + F.prototype = proto; + return new F(); + }; +})(); + +// @function bind(fn: Function, …): Function +// Returns a new function bound to the arguments passed, like [Function.prototype.bind](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Function/bind). +// Has a `L.bind()` shortcut. +function bind(fn, obj) { + var slice = Array.prototype.slice; + + if (fn.bind) { + return fn.bind.apply(fn, slice.call(arguments, 1)); + } + + var args = slice.call(arguments, 2); + + return function () { + return fn.apply(obj, args.length ? args.concat(slice.call(arguments)) : arguments); + }; +} + +// @property lastId: Number +// Last unique ID used by [`stamp()`](#util-stamp) +var lastId = 0; + +// @function stamp(obj: Object): Number +// Returns the unique ID of an object, assigning it one if it doesn't have it. +function stamp(obj) { + /*eslint-disable */ + obj._leaflet_id = obj._leaflet_id || ++lastId; + return obj._leaflet_id; + /* eslint-enable */ +} + +// @function throttle(fn: Function, time: Number, context: Object): Function +// Returns a function which executes function `fn` with the given scope `context` +// (so that the `this` keyword refers to `context` inside `fn`'s code). The function +// `fn` will be called no more than one time per given amount of `time`. The arguments +// received by the bound function will be any arguments passed when binding the +// function, followed by any arguments passed when invoking the bound function. +// Has an `L.throttle` shortcut. +function throttle(fn, time, context) { + var lock, args, wrapperFn, later; + + later = function () { + // reset lock and call if queued + lock = false; + if (args) { + wrapperFn.apply(context, args); + args = false; + } + }; + + wrapperFn = function () { + if (lock) { + // called too soon, queue to call later + args = arguments; + + } else { + // call and lock until later + fn.apply(context, arguments); + setTimeout(later, time); + lock = true; + } + }; + + return wrapperFn; +} + +// @function wrapNum(num: Number, range: Number[], includeMax?: Boolean): Number +// Returns the number `num` modulo `range` in such a way so it lies within +// `range[0]` and `range[1]`. The returned value will be always smaller than +// `range[1]` unless `includeMax` is set to `true`. +function wrapNum(x, range, includeMax) { + var max = range[1], + min = range[0], + d = max - min; + return x === max && includeMax ? x : ((x - min) % d + d) % d + min; +} + +// @function falseFn(): Function +// Returns a function which always returns `false`. +function falseFn() { return false; } + +// @function formatNum(num: Number, digits?: Number): Number +// Returns the number `num` rounded to `digits` decimals, or to 6 decimals by default. +function formatNum(num, digits) { + var pow = Math.pow(10, (digits === undefined ? 6 : digits)); + return Math.round(num * pow) / pow; +} + +// @function trim(str: String): String +// Compatibility polyfill for [String.prototype.trim](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim) +function trim(str) { + return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, ''); +} + +// @function splitWords(str: String): String[] +// Trims and splits the string on whitespace and returns the array of parts. +function splitWords(str) { + return trim(str).split(/\s+/); +} + +// @function setOptions(obj: Object, options: Object): Object +// Merges the given properties to the `options` of the `obj` object, returning the resulting options. See `Class options`. Has an `L.setOptions` shortcut. +function setOptions(obj, options) { + if (!obj.hasOwnProperty('options')) { + obj.options = obj.options ? create(obj.options) : {}; + } + for (var i in options) { + obj.options[i] = options[i]; + } + return obj.options; +} + +// @function getParamString(obj: Object, existingUrl?: String, uppercase?: Boolean): String +// Converts an object into a parameter URL string, e.g. `{a: "foo", b: "bar"}` +// translates to `'?a=foo&b=bar'`. If `existingUrl` is set, the parameters will +// be appended at the end. If `uppercase` is `true`, the parameter names will +// be uppercased (e.g. `'?A=foo&B=bar'`) +function getParamString(obj, existingUrl, uppercase) { + var params = []; + for (var i in obj) { + params.push(encodeURIComponent(uppercase ? i.toUpperCase() : i) + '=' + encodeURIComponent(obj[i])); + } + return ((!existingUrl || existingUrl.indexOf('?') === -1) ? '?' : '&') + params.join('&'); +} + +var templateRe = /\{ *([\w_-]+) *\}/g; + +// @function template(str: String, data: Object): String +// Simple templating facility, accepts a template string of the form `'Hello {a}, {b}'` +// and a data object like `{a: 'foo', b: 'bar'}`, returns evaluated string +// `('Hello foo, bar')`. You can also specify functions instead of strings for +// data values — they will be evaluated passing `data` as an argument. +function template(str, data) { + return str.replace(templateRe, function (str, key) { + var value = data[key]; + + if (value === undefined) { + throw new Error('No value provided for variable ' + str); + + } else if (typeof value === 'function') { + value = value(data); + } + return value; + }); +} + +// @function isArray(obj): Boolean +// Compatibility polyfill for [Array.isArray](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray) +var isArray = Array.isArray || function (obj) { + return (Object.prototype.toString.call(obj) === '[object Array]'); +}; + +// @function indexOf(array: Array, el: Object): Number +// Compatibility polyfill for [Array.prototype.indexOf](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf) +function indexOf(array, el) { + for (var i = 0; i < array.length; i++) { + if (array[i] === el) { return i; } + } + return -1; +} + +// @property emptyImageUrl: String +// Data URI string containing a base64-encoded empty GIF image. +// Used as a hack to free memory from unused images on WebKit-powered +// mobile devices (by setting image `src` to this string). +var emptyImageUrl = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs='; + +// inspired by http://paulirish.com/2011/requestanimationframe-for-smart-animating/ + +function getPrefixed(name) { + return window['webkit' + name] || window['moz' + name] || window['ms' + name]; +} + +var lastTime = 0; + +// fallback for IE 7-8 +function timeoutDefer(fn) { + var time = +new Date(), + timeToCall = Math.max(0, 16 - (time - lastTime)); + + lastTime = time + timeToCall; + return window.setTimeout(fn, timeToCall); +} + +var requestFn = window.requestAnimationFrame || getPrefixed('RequestAnimationFrame') || timeoutDefer; +var cancelFn = window.cancelAnimationFrame || getPrefixed('CancelAnimationFrame') || + getPrefixed('CancelRequestAnimationFrame') || function (id) { window.clearTimeout(id); }; + +// @function requestAnimFrame(fn: Function, context?: Object, immediate?: Boolean): Number +// Schedules `fn` to be executed when the browser repaints. `fn` is bound to +// `context` if given. When `immediate` is set, `fn` is called immediately if +// the browser doesn't have native support for +// [`window.requestAnimationFrame`](https://developer.mozilla.org/docs/Web/API/window/requestAnimationFrame), +// otherwise it's delayed. Returns a request ID that can be used to cancel the request. +function requestAnimFrame(fn, context, immediate) { + if (immediate && requestFn === timeoutDefer) { + fn.call(context); + } else { + return requestFn.call(window, bind(fn, context)); + } +} + +// @function cancelAnimFrame(id: Number): undefined +// Cancels a previous `requestAnimFrame`. See also [window.cancelAnimationFrame](https://developer.mozilla.org/docs/Web/API/window/cancelAnimationFrame). +function cancelAnimFrame(id) { + if (id) { + cancelFn.call(window, id); + } +} + + +var Util = (Object.freeze || Object)({ + freeze: freeze, + extend: extend, + create: create, + bind: bind, + lastId: lastId, + stamp: stamp, + throttle: throttle, + wrapNum: wrapNum, + falseFn: falseFn, + formatNum: formatNum, + trim: trim, + splitWords: splitWords, + setOptions: setOptions, + getParamString: getParamString, + template: template, + isArray: isArray, + indexOf: indexOf, + emptyImageUrl: emptyImageUrl, + requestFn: requestFn, + cancelFn: cancelFn, + requestAnimFrame: requestAnimFrame, + cancelAnimFrame: cancelAnimFrame +}); + +// @class Class +// @aka L.Class + +// @section +// @uninheritable + +// Thanks to John Resig and Dean Edwards for inspiration! + +function Class() {} + +Class.extend = function (props) { + + // @function extend(props: Object): Function + // [Extends the current class](#class-inheritance) given the properties to be included. + // Returns a Javascript function that is a class constructor (to be called with `new`). + var NewClass = function () { + + // call the constructor + if (this.initialize) { + this.initialize.apply(this, arguments); + } + + // call all constructor hooks + this.callInitHooks(); + }; + + var parentProto = NewClass.__super__ = this.prototype; + + var proto = create(parentProto); + proto.constructor = NewClass; + + NewClass.prototype = proto; + + // inherit parent's statics + for (var i in this) { + if (this.hasOwnProperty(i) && i !== 'prototype' && i !== '__super__') { + NewClass[i] = this[i]; + } + } + + // mix static properties into the class + if (props.statics) { + extend(NewClass, props.statics); + delete props.statics; + } + + // mix includes into the prototype + if (props.includes) { + checkDeprecatedMixinEvents(props.includes); + extend.apply(null, [proto].concat(props.includes)); + delete props.includes; + } + + // merge options + if (proto.options) { + props.options = extend(create(proto.options), props.options); + } + + // mix given properties into the prototype + extend(proto, props); + + proto._initHooks = []; + + // add method for calling all hooks + proto.callInitHooks = function () { + + if (this._initHooksCalled) { return; } + + if (parentProto.callInitHooks) { + parentProto.callInitHooks.call(this); + } + + this._initHooksCalled = true; + + for (var i = 0, len = proto._initHooks.length; i < len; i++) { + proto._initHooks[i].call(this); + } + }; + + return NewClass; +}; + + +// @function include(properties: Object): this +// [Includes a mixin](#class-includes) into the current class. +Class.include = function (props) { + extend(this.prototype, props); + return this; +}; + +// @function mergeOptions(options: Object): this +// [Merges `options`](#class-options) into the defaults of the class. +Class.mergeOptions = function (options) { + extend(this.prototype.options, options); + return this; +}; + +// @function addInitHook(fn: Function): this +// Adds a [constructor hook](#class-constructor-hooks) to the class. +Class.addInitHook = function (fn) { // (Function) || (String, args...) + var args = Array.prototype.slice.call(arguments, 1); + + var init = typeof fn === 'function' ? fn : function () { + this[fn].apply(this, args); + }; + + this.prototype._initHooks = this.prototype._initHooks || []; + this.prototype._initHooks.push(init); + return this; +}; + +function checkDeprecatedMixinEvents(includes) { + if (typeof L === 'undefined' || !L || !L.Mixin) { return; } + + includes = isArray(includes) ? includes : [includes]; + + for (var i = 0; i < includes.length; i++) { + if (includes[i] === L.Mixin.Events) { + console.warn('Deprecated include of L.Mixin.Events: ' + + 'this property will be removed in future releases, ' + + 'please inherit from L.Evented instead.', new Error().stack); + } + } +} + +/* + * @class Evented + * @aka L.Evented + * @inherits Class + * + * A set of methods shared between event-powered classes (like `Map` and `Marker`). Generally, events allow you to execute some function when something happens with an object (e.g. the user clicks on the map, causing the map to fire `'click'` event). + * + * @example + * + * ```js + * map.on('click', function(e) { + * alert(e.latlng); + * } ); + * ``` + * + * Leaflet deals with event listeners by reference, so if you want to add a listener and then remove it, define it as a function: + * + * ```js + * function onClick(e) { ... } + * + * map.on('click', onClick); + * map.off('click', onClick); + * ``` + */ + +var Events = { + /* @method on(type: String, fn: Function, context?: Object): this + * Adds a listener function (`fn`) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. `'click dblclick'`). + * + * @alternative + * @method on(eventMap: Object): this + * Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}` + */ + on: function (types, fn, context) { + + // types can be a map of types/handlers + if (typeof types === 'object') { + for (var type in types) { + // we don't process space-separated events here for performance; + // it's a hot path since Layer uses the on(obj) syntax + this._on(type, types[type], fn); + } + + } else { + // types can be a string of space-separated words + types = splitWords(types); + + for (var i = 0, len = types.length; i < len; i++) { + this._on(types[i], fn, context); + } + } + + return this; + }, + + /* @method off(type: String, fn?: Function, context?: Object): this + * Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to `on`, you must pass the same context to `off` in order to remove the listener. + * + * @alternative + * @method off(eventMap: Object): this + * Removes a set of type/listener pairs. + * + * @alternative + * @method off: this + * Removes all listeners to all events on the object. + */ + off: function (types, fn, context) { + + if (!types) { + // clear all listeners if called without arguments + delete this._events; + + } else if (typeof types === 'object') { + for (var type in types) { + this._off(type, types[type], fn); + } + + } else { + types = splitWords(types); + + for (var i = 0, len = types.length; i < len; i++) { + this._off(types[i], fn, context); + } + } + + return this; + }, + + // attach listener (without syntactic sugar now) + _on: function (type, fn, context) { + this._events = this._events || {}; + + /* get/init listeners for type */ + var typeListeners = this._events[type]; + if (!typeListeners) { + typeListeners = []; + this._events[type] = typeListeners; + } + + if (context === this) { + // Less memory footprint. + context = undefined; + } + var newListener = {fn: fn, ctx: context}, + listeners = typeListeners; + + // check if fn already there + for (var i = 0, len = listeners.length; i < len; i++) { + if (listeners[i].fn === fn && listeners[i].ctx === context) { + return; + } + } + + listeners.push(newListener); + }, + + _off: function (type, fn, context) { + var listeners, + i, + len; + + if (!this._events) { return; } + + listeners = this._events[type]; + + if (!listeners) { + return; + } + + if (!fn) { + // Set all removed listeners to noop so they are not called if remove happens in fire + for (i = 0, len = listeners.length; i < len; i++) { + listeners[i].fn = falseFn; + } + // clear all listeners for a type if function isn't specified + delete this._events[type]; + return; + } + + if (context === this) { + context = undefined; + } + + if (listeners) { + + // find fn and remove it + for (i = 0, len = listeners.length; i < len; i++) { + var l = listeners[i]; + if (l.ctx !== context) { continue; } + if (l.fn === fn) { + + // set the removed listener to noop so that's not called if remove happens in fire + l.fn = falseFn; + + if (this._firingCount) { + /* copy array in case events are being fired */ + this._events[type] = listeners = listeners.slice(); + } + listeners.splice(i, 1); + + return; + } + } + } + }, + + // @method fire(type: String, data?: Object, propagate?: Boolean): this + // Fires an event of the specified type. You can optionally provide an data + // object — the first argument of the listener function will contain its + // properties. The event can optionally be propagated to event parents. + fire: function (type, data, propagate) { + if (!this.listens(type, propagate)) { return this; } + + var event = extend({}, data, { + type: type, + target: this, + sourceTarget: data && data.sourceTarget || this + }); + + if (this._events) { + var listeners = this._events[type]; + + if (listeners) { + this._firingCount = (this._firingCount + 1) || 1; + for (var i = 0, len = listeners.length; i < len; i++) { + var l = listeners[i]; + l.fn.call(l.ctx || this, event); + } + + this._firingCount--; + } + } + + if (propagate) { + // propagate the event to parents (set with addEventParent) + this._propagateEvent(event); + } + + return this; + }, + + // @method listens(type: String): Boolean + // Returns `true` if a particular event type has any listeners attached to it. + listens: function (type, propagate) { + var listeners = this._events && this._events[type]; + if (listeners && listeners.length) { return true; } + + if (propagate) { + // also check parents for listeners if event propagates + for (var id in this._eventParents) { + if (this._eventParents[id].listens(type, propagate)) { return true; } + } + } + return false; + }, + + // @method once(…): this + // Behaves as [`on(…)`](#evented-on), except the listener will only get fired once and then removed. + once: function (types, fn, context) { + + if (typeof types === 'object') { + for (var type in types) { + this.once(type, types[type], fn); + } + return this; + } + + var handler = bind(function () { + this + .off(types, fn, context) + .off(types, handler, context); + }, this); + + // add a listener that's executed once and removed after that + return this + .on(types, fn, context) + .on(types, handler, context); + }, + + // @method addEventParent(obj: Evented): this + // Adds an event parent - an `Evented` that will receive propagated events + addEventParent: function (obj) { + this._eventParents = this._eventParents || {}; + this._eventParents[stamp(obj)] = obj; + return this; + }, + + // @method removeEventParent(obj: Evented): this + // Removes an event parent, so it will stop receiving propagated events + removeEventParent: function (obj) { + if (this._eventParents) { + delete this._eventParents[stamp(obj)]; + } + return this; + }, + + _propagateEvent: function (e) { + for (var id in this._eventParents) { + this._eventParents[id].fire(e.type, extend({ + layer: e.target, + propagatedFrom: e.target + }, e), true); + } + } +}; + +// aliases; we should ditch those eventually + +// @method addEventListener(…): this +// Alias to [`on(…)`](#evented-on) +Events.addEventListener = Events.on; + +// @method removeEventListener(…): this +// Alias to [`off(…)`](#evented-off) + +// @method clearAllEventListeners(…): this +// Alias to [`off()`](#evented-off) +Events.removeEventListener = Events.clearAllEventListeners = Events.off; + +// @method addOneTimeEventListener(…): this +// Alias to [`once(…)`](#evented-once) +Events.addOneTimeEventListener = Events.once; + +// @method fireEvent(…): this +// Alias to [`fire(…)`](#evented-fire) +Events.fireEvent = Events.fire; + +// @method hasEventListeners(…): Boolean +// Alias to [`listens(…)`](#evented-listens) +Events.hasEventListeners = Events.listens; + +var Evented = Class.extend(Events); + +/* + * @class Point + * @aka L.Point + * + * Represents a point with `x` and `y` coordinates in pixels. + * + * @example + * + * ```js + * var point = L.point(200, 300); + * ``` + * + * All Leaflet methods and options that accept `Point` objects also accept them in a simple Array form (unless noted otherwise), so these lines are equivalent: + * + * ```js + * map.panBy([200, 300]); + * map.panBy(L.point(200, 300)); + * ``` + * + * Note that `Point` does not inherit from Leafet's `Class` object, + * which means new classes can't inherit from it, and new methods + * can't be added to it with the `include` function. + */ + +function Point(x, y, round) { + // @property x: Number; The `x` coordinate of the point + this.x = (round ? Math.round(x) : x); + // @property y: Number; The `y` coordinate of the point + this.y = (round ? Math.round(y) : y); +} + +var trunc = Math.trunc || function (v) { + return v > 0 ? Math.floor(v) : Math.ceil(v); +}; + +Point.prototype = { + + // @method clone(): Point + // Returns a copy of the current point. + clone: function () { + return new Point(this.x, this.y); + }, + + // @method add(otherPoint: Point): Point + // Returns the result of addition of the current and the given points. + add: function (point) { + // non-destructive, returns a new point + return this.clone()._add(toPoint(point)); + }, + + _add: function (point) { + // destructive, used directly for performance in situations where it's safe to modify existing point + this.x += point.x; + this.y += point.y; + return this; + }, + + // @method subtract(otherPoint: Point): Point + // Returns the result of subtraction of the given point from the current. + subtract: function (point) { + return this.clone()._subtract(toPoint(point)); + }, + + _subtract: function (point) { + this.x -= point.x; + this.y -= point.y; + return this; + }, + + // @method divideBy(num: Number): Point + // Returns the result of division of the current point by the given number. + divideBy: function (num) { + return this.clone()._divideBy(num); + }, + + _divideBy: function (num) { + this.x /= num; + this.y /= num; + return this; + }, + + // @method multiplyBy(num: Number): Point + // Returns the result of multiplication of the current point by the given number. + multiplyBy: function (num) { + return this.clone()._multiplyBy(num); + }, + + _multiplyBy: function (num) { + this.x *= num; + this.y *= num; + return this; + }, + + // @method scaleBy(scale: Point): Point + // Multiply each coordinate of the current point by each coordinate of + // `scale`. In linear algebra terms, multiply the point by the + // [scaling matrix](https://en.wikipedia.org/wiki/Scaling_%28geometry%29#Matrix_representation) + // defined by `scale`. + scaleBy: function (point) { + return new Point(this.x * point.x, this.y * point.y); + }, + + // @method unscaleBy(scale: Point): Point + // Inverse of `scaleBy`. Divide each coordinate of the current point by + // each coordinate of `scale`. + unscaleBy: function (point) { + return new Point(this.x / point.x, this.y / point.y); + }, + + // @method round(): Point + // Returns a copy of the current point with rounded coordinates. + round: function () { + return this.clone()._round(); + }, + + _round: function () { + this.x = Math.round(this.x); + this.y = Math.round(this.y); + return this; + }, + + // @method floor(): Point + // Returns a copy of the current point with floored coordinates (rounded down). + floor: function () { + return this.clone()._floor(); + }, + + _floor: function () { + this.x = Math.floor(this.x); + this.y = Math.floor(this.y); + return this; + }, + + // @method ceil(): Point + // Returns a copy of the current point with ceiled coordinates (rounded up). + ceil: function () { + return this.clone()._ceil(); + }, + + _ceil: function () { + this.x = Math.ceil(this.x); + this.y = Math.ceil(this.y); + return this; + }, + + // @method trunc(): Point + // Returns a copy of the current point with truncated coordinates (rounded towards zero). + trunc: function () { + return this.clone()._trunc(); + }, + + _trunc: function () { + this.x = trunc(this.x); + this.y = trunc(this.y); + return this; + }, + + // @method distanceTo(otherPoint: Point): Number + // Returns the cartesian distance between the current and the given points. + distanceTo: function (point) { + point = toPoint(point); + + var x = point.x - this.x, + y = point.y - this.y; + + return Math.sqrt(x * x + y * y); + }, + + // @method equals(otherPoint: Point): Boolean + // Returns `true` if the given point has the same coordinates. + equals: function (point) { + point = toPoint(point); + + return point.x === this.x && + point.y === this.y; + }, + + // @method contains(otherPoint: Point): Boolean + // Returns `true` if both coordinates of the given point are less than the corresponding current point coordinates (in absolute values). + contains: function (point) { + point = toPoint(point); + + return Math.abs(point.x) <= Math.abs(this.x) && + Math.abs(point.y) <= Math.abs(this.y); + }, + + // @method toString(): String + // Returns a string representation of the point for debugging purposes. + toString: function () { + return 'Point(' + + formatNum(this.x) + ', ' + + formatNum(this.y) + ')'; + } +}; + +// @factory L.point(x: Number, y: Number, round?: Boolean) +// Creates a Point object with the given `x` and `y` coordinates. If optional `round` is set to true, rounds the `x` and `y` values. + +// @alternative +// @factory L.point(coords: Number[]) +// Expects an array of the form `[x, y]` instead. + +// @alternative +// @factory L.point(coords: Object) +// Expects a plain object of the form `{x: Number, y: Number}` instead. +function toPoint(x, y, round) { + if (x instanceof Point) { + return x; + } + if (isArray(x)) { + return new Point(x[0], x[1]); + } + if (x === undefined || x === null) { + return x; + } + if (typeof x === 'object' && 'x' in x && 'y' in x) { + return new Point(x.x, x.y); + } + return new Point(x, y, round); +} + +/* + * @class Bounds + * @aka L.Bounds + * + * Represents a rectangular area in pixel coordinates. + * + * @example + * + * ```js + * var p1 = L.point(10, 10), + * p2 = L.point(40, 60), + * bounds = L.bounds(p1, p2); + * ``` + * + * All Leaflet methods that accept `Bounds` objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this: + * + * ```js + * otherBounds.intersects([[10, 10], [40, 60]]); + * ``` + * + * Note that `Bounds` does not inherit from Leafet's `Class` object, + * which means new classes can't inherit from it, and new methods + * can't be added to it with the `include` function. + */ + +function Bounds(a, b) { + if (!a) { return; } + + var points = b ? [a, b] : a; + + for (var i = 0, len = points.length; i < len; i++) { + this.extend(points[i]); + } +} + +Bounds.prototype = { + // @method extend(point: Point): this + // Extends the bounds to contain the given point. + extend: function (point) { // (Point) + point = toPoint(point); + + // @property min: Point + // The top left corner of the rectangle. + // @property max: Point + // The bottom right corner of the rectangle. + if (!this.min && !this.max) { + this.min = point.clone(); + this.max = point.clone(); + } else { + this.min.x = Math.min(point.x, this.min.x); + this.max.x = Math.max(point.x, this.max.x); + this.min.y = Math.min(point.y, this.min.y); + this.max.y = Math.max(point.y, this.max.y); + } + return this; + }, + + // @method getCenter(round?: Boolean): Point + // Returns the center point of the bounds. + getCenter: function (round) { + return new Point( + (this.min.x + this.max.x) / 2, + (this.min.y + this.max.y) / 2, round); + }, + + // @method getBottomLeft(): Point + // Returns the bottom-left point of the bounds. + getBottomLeft: function () { + return new Point(this.min.x, this.max.y); + }, + + // @method getTopRight(): Point + // Returns the top-right point of the bounds. + getTopRight: function () { // -> Point + return new Point(this.max.x, this.min.y); + }, + + // @method getTopLeft(): Point + // Returns the top-left point of the bounds (i.e. [`this.min`](#bounds-min)). + getTopLeft: function () { + return this.min; // left, top + }, + + // @method getBottomRight(): Point + // Returns the bottom-right point of the bounds (i.e. [`this.max`](#bounds-max)). + getBottomRight: function () { + return this.max; // right, bottom + }, + + // @method getSize(): Point + // Returns the size of the given bounds + getSize: function () { + return this.max.subtract(this.min); + }, + + // @method contains(otherBounds: Bounds): Boolean + // Returns `true` if the rectangle contains the given one. + // @alternative + // @method contains(point: Point): Boolean + // Returns `true` if the rectangle contains the given point. + contains: function (obj) { + var min, max; + + if (typeof obj[0] === 'number' || obj instanceof Point) { + obj = toPoint(obj); + } else { + obj = toBounds(obj); + } + + if (obj instanceof Bounds) { + min = obj.min; + max = obj.max; + } else { + min = max = obj; + } + + return (min.x >= this.min.x) && + (max.x <= this.max.x) && + (min.y >= this.min.y) && + (max.y <= this.max.y); + }, + + // @method intersects(otherBounds: Bounds): Boolean + // Returns `true` if the rectangle intersects the given bounds. Two bounds + // intersect if they have at least one point in common. + intersects: function (bounds) { // (Bounds) -> Boolean + bounds = toBounds(bounds); + + var min = this.min, + max = this.max, + min2 = bounds.min, + max2 = bounds.max, + xIntersects = (max2.x >= min.x) && (min2.x <= max.x), + yIntersects = (max2.y >= min.y) && (min2.y <= max.y); + + return xIntersects && yIntersects; + }, + + // @method overlaps(otherBounds: Bounds): Boolean + // Returns `true` if the rectangle overlaps the given bounds. Two bounds + // overlap if their intersection is an area. + overlaps: function (bounds) { // (Bounds) -> Boolean + bounds = toBounds(bounds); + + var min = this.min, + max = this.max, + min2 = bounds.min, + max2 = bounds.max, + xOverlaps = (max2.x > min.x) && (min2.x < max.x), + yOverlaps = (max2.y > min.y) && (min2.y < max.y); + + return xOverlaps && yOverlaps; + }, + + isValid: function () { + return !!(this.min && this.max); + } +}; + + +// @factory L.bounds(corner1: Point, corner2: Point) +// Creates a Bounds object from two corners coordinate pairs. +// @alternative +// @factory L.bounds(points: Point[]) +// Creates a Bounds object from the given array of points. +function toBounds(a, b) { + if (!a || a instanceof Bounds) { + return a; + } + return new Bounds(a, b); +} + +/* + * @class LatLngBounds + * @aka L.LatLngBounds + * + * Represents a rectangular geographical area on a map. + * + * @example + * + * ```js + * var corner1 = L.latLng(40.712, -74.227), + * corner2 = L.latLng(40.774, -74.125), + * bounds = L.latLngBounds(corner1, corner2); + * ``` + * + * All Leaflet methods that accept LatLngBounds objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this: + * + * ```js + * map.fitBounds([ + * [40.712, -74.227], + * [40.774, -74.125] + * ]); + * ``` + * + * Caution: if the area crosses the antimeridian (often confused with the International Date Line), you must specify corners _outside_ the [-180, 180] degrees longitude range. + * + * Note that `LatLngBounds` does not inherit from Leafet's `Class` object, + * which means new classes can't inherit from it, and new methods + * can't be added to it with the `include` function. + */ + +function LatLngBounds(corner1, corner2) { // (LatLng, LatLng) or (LatLng[]) + if (!corner1) { return; } + + var latlngs = corner2 ? [corner1, corner2] : corner1; + + for (var i = 0, len = latlngs.length; i < len; i++) { + this.extend(latlngs[i]); + } +} + +LatLngBounds.prototype = { + + // @method extend(latlng: LatLng): this + // Extend the bounds to contain the given point + + // @alternative + // @method extend(otherBounds: LatLngBounds): this + // Extend the bounds to contain the given bounds + extend: function (obj) { + var sw = this._southWest, + ne = this._northEast, + sw2, ne2; + + if (obj instanceof LatLng) { + sw2 = obj; + ne2 = obj; + + } else if (obj instanceof LatLngBounds) { + sw2 = obj._southWest; + ne2 = obj._northEast; + + if (!sw2 || !ne2) { return this; } + + } else { + return obj ? this.extend(toLatLng(obj) || toLatLngBounds(obj)) : this; + } + + if (!sw && !ne) { + this._southWest = new LatLng(sw2.lat, sw2.lng); + this._northEast = new LatLng(ne2.lat, ne2.lng); + } else { + sw.lat = Math.min(sw2.lat, sw.lat); + sw.lng = Math.min(sw2.lng, sw.lng); + ne.lat = Math.max(ne2.lat, ne.lat); + ne.lng = Math.max(ne2.lng, ne.lng); + } + + return this; + }, + + // @method pad(bufferRatio: Number): LatLngBounds + // Returns bounds created by extending or retracting the current bounds by a given ratio in each direction. + // For example, a ratio of 0.5 extends the bounds by 50% in each direction. + // Negative values will retract the bounds. + pad: function (bufferRatio) { + var sw = this._southWest, + ne = this._northEast, + heightBuffer = Math.abs(sw.lat - ne.lat) * bufferRatio, + widthBuffer = Math.abs(sw.lng - ne.lng) * bufferRatio; + + return new LatLngBounds( + new LatLng(sw.lat - heightBuffer, sw.lng - widthBuffer), + new LatLng(ne.lat + heightBuffer, ne.lng + widthBuffer)); + }, + + // @method getCenter(): LatLng + // Returns the center point of the bounds. + getCenter: function () { + return new LatLng( + (this._southWest.lat + this._northEast.lat) / 2, + (this._southWest.lng + this._northEast.lng) / 2); + }, + + // @method getSouthWest(): LatLng + // Returns the south-west point of the bounds. + getSouthWest: function () { + return this._southWest; + }, + + // @method getNorthEast(): LatLng + // Returns the north-east point of the bounds. + getNorthEast: function () { + return this._northEast; + }, + + // @method getNorthWest(): LatLng + // Returns the north-west point of the bounds. + getNorthWest: function () { + return new LatLng(this.getNorth(), this.getWest()); + }, + + // @method getSouthEast(): LatLng + // Returns the south-east point of the bounds. + getSouthEast: function () { + return new LatLng(this.getSouth(), this.getEast()); + }, + + // @method getWest(): Number + // Returns the west longitude of the bounds + getWest: function () { + return this._southWest.lng; + }, + + // @method getSouth(): Number + // Returns the south latitude of the bounds + getSouth: function () { + return this._southWest.lat; + }, + + // @method getEast(): Number + // Returns the east longitude of the bounds + getEast: function () { + return this._northEast.lng; + }, + + // @method getNorth(): Number + // Returns the north latitude of the bounds + getNorth: function () { + return this._northEast.lat; + }, + + // @method contains(otherBounds: LatLngBounds): Boolean + // Returns `true` if the rectangle contains the given one. + + // @alternative + // @method contains (latlng: LatLng): Boolean + // Returns `true` if the rectangle contains the given point. + contains: function (obj) { // (LatLngBounds) or (LatLng) -> Boolean + if (typeof obj[0] === 'number' || obj instanceof LatLng || 'lat' in obj) { + obj = toLatLng(obj); + } else { + obj = toLatLngBounds(obj); + } + + var sw = this._southWest, + ne = this._northEast, + sw2, ne2; + + if (obj instanceof LatLngBounds) { + sw2 = obj.getSouthWest(); + ne2 = obj.getNorthEast(); + } else { + sw2 = ne2 = obj; + } + + return (sw2.lat >= sw.lat) && (ne2.lat <= ne.lat) && + (sw2.lng >= sw.lng) && (ne2.lng <= ne.lng); + }, + + // @method intersects(otherBounds: LatLngBounds): Boolean + // Returns `true` if the rectangle intersects the given bounds. Two bounds intersect if they have at least one point in common. + intersects: function (bounds) { + bounds = toLatLngBounds(bounds); + + var sw = this._southWest, + ne = this._northEast, + sw2 = bounds.getSouthWest(), + ne2 = bounds.getNorthEast(), + + latIntersects = (ne2.lat >= sw.lat) && (sw2.lat <= ne.lat), + lngIntersects = (ne2.lng >= sw.lng) && (sw2.lng <= ne.lng); + + return latIntersects && lngIntersects; + }, + + // @method overlaps(otherBounds: Bounds): Boolean + // Returns `true` if the rectangle overlaps the given bounds. Two bounds overlap if their intersection is an area. + overlaps: function (bounds) { + bounds = toLatLngBounds(bounds); + + var sw = this._southWest, + ne = this._northEast, + sw2 = bounds.getSouthWest(), + ne2 = bounds.getNorthEast(), + + latOverlaps = (ne2.lat > sw.lat) && (sw2.lat < ne.lat), + lngOverlaps = (ne2.lng > sw.lng) && (sw2.lng < ne.lng); + + return latOverlaps && lngOverlaps; + }, + + // @method toBBoxString(): String + // Returns a string with bounding box coordinates in a 'southwest_lng,southwest_lat,northeast_lng,northeast_lat' format. Useful for sending requests to web services that return geo data. + toBBoxString: function () { + return [this.getWest(), this.getSouth(), this.getEast(), this.getNorth()].join(','); + }, + + // @method equals(otherBounds: LatLngBounds, maxMargin?: Number): Boolean + // Returns `true` if the rectangle is equivalent (within a small margin of error) to the given bounds. The margin of error can be overridden by setting `maxMargin` to a small number. + equals: function (bounds, maxMargin) { + if (!bounds) { return false; } + + bounds = toLatLngBounds(bounds); + + return this._southWest.equals(bounds.getSouthWest(), maxMargin) && + this._northEast.equals(bounds.getNorthEast(), maxMargin); + }, + + // @method isValid(): Boolean + // Returns `true` if the bounds are properly initialized. + isValid: function () { + return !!(this._southWest && this._northEast); + } +}; + +// TODO International date line? + +// @factory L.latLngBounds(corner1: LatLng, corner2: LatLng) +// Creates a `LatLngBounds` object by defining two diagonally opposite corners of the rectangle. + +// @alternative +// @factory L.latLngBounds(latlngs: LatLng[]) +// Creates a `LatLngBounds` object defined by the geographical points it contains. Very useful for zooming the map to fit a particular set of locations with [`fitBounds`](#map-fitbounds). +function toLatLngBounds(a, b) { + if (a instanceof LatLngBounds) { + return a; + } + return new LatLngBounds(a, b); +} + +/* @class LatLng + * @aka L.LatLng + * + * Represents a geographical point with a certain latitude and longitude. + * + * @example + * + * ``` + * var latlng = L.latLng(50.5, 30.5); + * ``` + * + * All Leaflet methods that accept LatLng objects also accept them in a simple Array form and simple object form (unless noted otherwise), so these lines are equivalent: + * + * ``` + * map.panTo([50, 30]); + * map.panTo({lon: 30, lat: 50}); + * map.panTo({lat: 50, lng: 30}); + * map.panTo(L.latLng(50, 30)); + * ``` + * + * Note that `LatLng` does not inherit from Leaflet's `Class` object, + * which means new classes can't inherit from it, and new methods + * can't be added to it with the `include` function. + */ + +function LatLng(lat, lng, alt) { + if (isNaN(lat) || isNaN(lng)) { + throw new Error('Invalid LatLng object: (' + lat + ', ' + lng + ')'); + } + + // @property lat: Number + // Latitude in degrees + this.lat = +lat; + + // @property lng: Number + // Longitude in degrees + this.lng = +lng; + + // @property alt: Number + // Altitude in meters (optional) + if (alt !== undefined) { + this.alt = +alt; + } +} + +LatLng.prototype = { + // @method equals(otherLatLng: LatLng, maxMargin?: Number): Boolean + // Returns `true` if the given `LatLng` point is at the same position (within a small margin of error). The margin of error can be overridden by setting `maxMargin` to a small number. + equals: function (obj, maxMargin) { + if (!obj) { return false; } + + obj = toLatLng(obj); + + var margin = Math.max( + Math.abs(this.lat - obj.lat), + Math.abs(this.lng - obj.lng)); + + return margin <= (maxMargin === undefined ? 1.0E-9 : maxMargin); + }, + + // @method toString(): String + // Returns a string representation of the point (for debugging purposes). + toString: function (precision) { + return 'LatLng(' + + formatNum(this.lat, precision) + ', ' + + formatNum(this.lng, precision) + ')'; + }, + + // @method distanceTo(otherLatLng: LatLng): Number + // Returns the distance (in meters) to the given `LatLng` calculated using the [Spherical Law of Cosines](https://en.wikipedia.org/wiki/Spherical_law_of_cosines). + distanceTo: function (other) { + return Earth.distance(this, toLatLng(other)); + }, + + // @method wrap(): LatLng + // Returns a new `LatLng` object with the longitude wrapped so it's always between -180 and +180 degrees. + wrap: function () { + return Earth.wrapLatLng(this); + }, + + // @method toBounds(sizeInMeters: Number): LatLngBounds + // Returns a new `LatLngBounds` object in which each boundary is `sizeInMeters/2` meters apart from the `LatLng`. + toBounds: function (sizeInMeters) { + var latAccuracy = 180 * sizeInMeters / 40075017, + lngAccuracy = latAccuracy / Math.cos((Math.PI / 180) * this.lat); + + return toLatLngBounds( + [this.lat - latAccuracy, this.lng - lngAccuracy], + [this.lat + latAccuracy, this.lng + lngAccuracy]); + }, + + clone: function () { + return new LatLng(this.lat, this.lng, this.alt); + } +}; + + + +// @factory L.latLng(latitude: Number, longitude: Number, altitude?: Number): LatLng +// Creates an object representing a geographical point with the given latitude and longitude (and optionally altitude). + +// @alternative +// @factory L.latLng(coords: Array): LatLng +// Expects an array of the form `[Number, Number]` or `[Number, Number, Number]` instead. + +// @alternative +// @factory L.latLng(coords: Object): LatLng +// Expects an plain object of the form `{lat: Number, lng: Number}` or `{lat: Number, lng: Number, alt: Number}` instead. + +function toLatLng(a, b, c) { + if (a instanceof LatLng) { + return a; + } + if (isArray(a) && typeof a[0] !== 'object') { + if (a.length === 3) { + return new LatLng(a[0], a[1], a[2]); + } + if (a.length === 2) { + return new LatLng(a[0], a[1]); + } + return null; + } + if (a === undefined || a === null) { + return a; + } + if (typeof a === 'object' && 'lat' in a) { + return new LatLng(a.lat, 'lng' in a ? a.lng : a.lon, a.alt); + } + if (b === undefined) { + return null; + } + return new LatLng(a, b, c); +} + +/* + * @namespace CRS + * @crs L.CRS.Base + * Object that defines coordinate reference systems for projecting + * geographical points into pixel (screen) coordinates and back (and to + * coordinates in other units for [WMS](https://en.wikipedia.org/wiki/Web_Map_Service) services). See + * [spatial reference system](http://en.wikipedia.org/wiki/Coordinate_reference_system). + * + * Leaflet defines the most usual CRSs by default. If you want to use a + * CRS not defined by default, take a look at the + * [Proj4Leaflet](https://github.com/kartena/Proj4Leaflet) plugin. + * + * Note that the CRS instances do not inherit from Leafet's `Class` object, + * and can't be instantiated. Also, new classes can't inherit from them, + * and methods can't be added to them with the `include` function. + */ + +var CRS = { + // @method latLngToPoint(latlng: LatLng, zoom: Number): Point + // Projects geographical coordinates into pixel coordinates for a given zoom. + latLngToPoint: function (latlng, zoom) { + var projectedPoint = this.projection.project(latlng), + scale = this.scale(zoom); + + return this.transformation._transform(projectedPoint, scale); + }, + + // @method pointToLatLng(point: Point, zoom: Number): LatLng + // The inverse of `latLngToPoint`. Projects pixel coordinates on a given + // zoom into geographical coordinates. + pointToLatLng: function (point, zoom) { + var scale = this.scale(zoom), + untransformedPoint = this.transformation.untransform(point, scale); + + return this.projection.unproject(untransformedPoint); + }, + + // @method project(latlng: LatLng): Point + // Projects geographical coordinates into coordinates in units accepted for + // this CRS (e.g. meters for EPSG:3857, for passing it to WMS services). + project: function (latlng) { + return this.projection.project(latlng); + }, + + // @method unproject(point: Point): LatLng + // Given a projected coordinate returns the corresponding LatLng. + // The inverse of `project`. + unproject: function (point) { + return this.projection.unproject(point); + }, + + // @method scale(zoom: Number): Number + // Returns the scale used when transforming projected coordinates into + // pixel coordinates for a particular zoom. For example, it returns + // `256 * 2^zoom` for Mercator-based CRS. + scale: function (zoom) { + return 256 * Math.pow(2, zoom); + }, + + // @method zoom(scale: Number): Number + // Inverse of `scale()`, returns the zoom level corresponding to a scale + // factor of `scale`. + zoom: function (scale) { + return Math.log(scale / 256) / Math.LN2; + }, + + // @method getProjectedBounds(zoom: Number): Bounds + // Returns the projection's bounds scaled and transformed for the provided `zoom`. + getProjectedBounds: function (zoom) { + if (this.infinite) { return null; } + + var b = this.projection.bounds, + s = this.scale(zoom), + min = this.transformation.transform(b.min, s), + max = this.transformation.transform(b.max, s); + + return new Bounds(min, max); + }, + + // @method distance(latlng1: LatLng, latlng2: LatLng): Number + // Returns the distance between two geographical coordinates. + + // @property code: String + // Standard code name of the CRS passed into WMS services (e.g. `'EPSG:3857'`) + // + // @property wrapLng: Number[] + // An array of two numbers defining whether the longitude (horizontal) coordinate + // axis wraps around a given range and how. Defaults to `[-180, 180]` in most + // geographical CRSs. If `undefined`, the longitude axis does not wrap around. + // + // @property wrapLat: Number[] + // Like `wrapLng`, but for the latitude (vertical) axis. + + // wrapLng: [min, max], + // wrapLat: [min, max], + + // @property infinite: Boolean + // If true, the coordinate space will be unbounded (infinite in both axes) + infinite: false, + + // @method wrapLatLng(latlng: LatLng): LatLng + // Returns a `LatLng` where lat and lng has been wrapped according to the + // CRS's `wrapLat` and `wrapLng` properties, if they are outside the CRS's bounds. + wrapLatLng: function (latlng) { + var lng = this.wrapLng ? wrapNum(latlng.lng, this.wrapLng, true) : latlng.lng, + lat = this.wrapLat ? wrapNum(latlng.lat, this.wrapLat, true) : latlng.lat, + alt = latlng.alt; + + return new LatLng(lat, lng, alt); + }, + + // @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds + // Returns a `LatLngBounds` with the same size as the given one, ensuring + // that its center is within the CRS's bounds. + // Only accepts actual `L.LatLngBounds` instances, not arrays. + wrapLatLngBounds: function (bounds) { + var center = bounds.getCenter(), + newCenter = this.wrapLatLng(center), + latShift = center.lat - newCenter.lat, + lngShift = center.lng - newCenter.lng; + + if (latShift === 0 && lngShift === 0) { + return bounds; + } + + var sw = bounds.getSouthWest(), + ne = bounds.getNorthEast(), + newSw = new LatLng(sw.lat - latShift, sw.lng - lngShift), + newNe = new LatLng(ne.lat - latShift, ne.lng - lngShift); + + return new LatLngBounds(newSw, newNe); + } +}; + +/* + * @namespace CRS + * @crs L.CRS.Earth + * + * Serves as the base for CRS that are global such that they cover the earth. + * Can only be used as the base for other CRS and cannot be used directly, + * since it does not have a `code`, `projection` or `transformation`. `distance()` returns + * meters. + */ + +var Earth = extend({}, CRS, { + wrapLng: [-180, 180], + + // Mean Earth Radius, as recommended for use by + // the International Union of Geodesy and Geophysics, + // see http://rosettacode.org/wiki/Haversine_formula + R: 6371000, + + // distance between two geographical points using spherical law of cosines approximation + distance: function (latlng1, latlng2) { + var rad = Math.PI / 180, + lat1 = latlng1.lat * rad, + lat2 = latlng2.lat * rad, + sinDLat = Math.sin((latlng2.lat - latlng1.lat) * rad / 2), + sinDLon = Math.sin((latlng2.lng - latlng1.lng) * rad / 2), + a = sinDLat * sinDLat + Math.cos(lat1) * Math.cos(lat2) * sinDLon * sinDLon, + c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); + return this.R * c; + } +}); + +/* + * @namespace Projection + * @projection L.Projection.SphericalMercator + * + * Spherical Mercator projection — the most common projection for online maps, + * used by almost all free and commercial tile providers. Assumes that Earth is + * a sphere. Used by the `EPSG:3857` CRS. + */ + +var SphericalMercator = { + + R: 6378137, + MAX_LATITUDE: 85.0511287798, + + project: function (latlng) { + var d = Math.PI / 180, + max = this.MAX_LATITUDE, + lat = Math.max(Math.min(max, latlng.lat), -max), + sin = Math.sin(lat * d); + + return new Point( + this.R * latlng.lng * d, + this.R * Math.log((1 + sin) / (1 - sin)) / 2); + }, + + unproject: function (point) { + var d = 180 / Math.PI; + + return new LatLng( + (2 * Math.atan(Math.exp(point.y / this.R)) - (Math.PI / 2)) * d, + point.x * d / this.R); + }, + + bounds: (function () { + var d = 6378137 * Math.PI; + return new Bounds([-d, -d], [d, d]); + })() +}; + +/* + * @class Transformation + * @aka L.Transformation + * + * Represents an affine transformation: a set of coefficients `a`, `b`, `c`, `d` + * for transforming a point of a form `(x, y)` into `(a*x + b, c*y + d)` and doing + * the reverse. Used by Leaflet in its projections code. + * + * @example + * + * ```js + * var transformation = L.transformation(2, 5, -1, 10), + * p = L.point(1, 2), + * p2 = transformation.transform(p), // L.point(7, 8) + * p3 = transformation.untransform(p2); // L.point(1, 2) + * ``` + */ + + +// factory new L.Transformation(a: Number, b: Number, c: Number, d: Number) +// Creates a `Transformation` object with the given coefficients. +function Transformation(a, b, c, d) { + if (isArray(a)) { + // use array properties + this._a = a[0]; + this._b = a[1]; + this._c = a[2]; + this._d = a[3]; + return; + } + this._a = a; + this._b = b; + this._c = c; + this._d = d; +} + +Transformation.prototype = { + // @method transform(point: Point, scale?: Number): Point + // Returns a transformed point, optionally multiplied by the given scale. + // Only accepts actual `L.Point` instances, not arrays. + transform: function (point, scale) { // (Point, Number) -> Point + return this._transform(point.clone(), scale); + }, + + // destructive transform (faster) + _transform: function (point, scale) { + scale = scale || 1; + point.x = scale * (this._a * point.x + this._b); + point.y = scale * (this._c * point.y + this._d); + return point; + }, + + // @method untransform(point: Point, scale?: Number): Point + // Returns the reverse transformation of the given point, optionally divided + // by the given scale. Only accepts actual `L.Point` instances, not arrays. + untransform: function (point, scale) { + scale = scale || 1; + return new Point( + (point.x / scale - this._b) / this._a, + (point.y / scale - this._d) / this._c); + } +}; + +// factory L.transformation(a: Number, b: Number, c: Number, d: Number) + +// @factory L.transformation(a: Number, b: Number, c: Number, d: Number) +// Instantiates a Transformation object with the given coefficients. + +// @alternative +// @factory L.transformation(coefficients: Array): Transformation +// Expects an coefficients array of the form +// `[a: Number, b: Number, c: Number, d: Number]`. + +function toTransformation(a, b, c, d) { + return new Transformation(a, b, c, d); +} + +/* + * @namespace CRS + * @crs L.CRS.EPSG3857 + * + * The most common CRS for online maps, used by almost all free and commercial + * tile providers. Uses Spherical Mercator projection. Set in by default in + * Map's `crs` option. + */ + +var EPSG3857 = extend({}, Earth, { + code: 'EPSG:3857', + projection: SphericalMercator, + + transformation: (function () { + var scale = 0.5 / (Math.PI * SphericalMercator.R); + return toTransformation(scale, 0.5, -scale, 0.5); + }()) +}); + +var EPSG900913 = extend({}, EPSG3857, { + code: 'EPSG:900913' +}); + +// @namespace SVG; @section +// There are several static functions which can be called without instantiating L.SVG: + +// @function create(name: String): SVGElement +// Returns a instance of [SVGElement](https://developer.mozilla.org/docs/Web/API/SVGElement), +// corresponding to the class name passed. For example, using 'line' will return +// an instance of [SVGLineElement](https://developer.mozilla.org/docs/Web/API/SVGLineElement). +function svgCreate(name) { + return document.createElementNS('http://www.w3.org/2000/svg', name); +} + +// @function pointsToPath(rings: Point[], closed: Boolean): String +// Generates a SVG path string for multiple rings, with each ring turning +// into "M..L..L.." instructions +function pointsToPath(rings, closed) { + var str = '', + i, j, len, len2, points, p; + + for (i = 0, len = rings.length; i < len; i++) { + points = rings[i]; + + for (j = 0, len2 = points.length; j < len2; j++) { + p = points[j]; + str += (j ? 'L' : 'M') + p.x + ' ' + p.y; + } + + // closes the ring for polygons; "x" is VML syntax + str += closed ? (svg ? 'z' : 'x') : ''; + } + + // SVG complains about empty path strings + return str || 'M0 0'; +} + +/* + * @namespace Browser + * @aka L.Browser + * + * A namespace with static properties for browser/feature detection used by Leaflet internally. + * + * @example + * + * ```js + * if (L.Browser.ielt9) { + * alert('Upgrade your browser, dude!'); + * } + * ``` + */ + +var style$1 = document.documentElement.style; + +// @property ie: Boolean; `true` for all Internet Explorer versions (not Edge). +var ie = 'ActiveXObject' in window; + +// @property ielt9: Boolean; `true` for Internet Explorer versions less than 9. +var ielt9 = ie && !document.addEventListener; + +// @property edge: Boolean; `true` for the Edge web browser. +var edge = 'msLaunchUri' in navigator && !('documentMode' in document); + +// @property webkit: Boolean; +// `true` for webkit-based browsers like Chrome and Safari (including mobile versions). +var webkit = userAgentContains('webkit'); + +// @property android: Boolean +// `true` for any browser running on an Android platform. +var android = userAgentContains('android'); + +// @property android23: Boolean; `true` for browsers running on Android 2 or Android 3. +var android23 = userAgentContains('android 2') || userAgentContains('android 3'); + +/* See https://stackoverflow.com/a/17961266 for details on detecting stock Android */ +var webkitVer = parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.userAgent)[1], 10); // also matches AppleWebKit +// @property androidStock: Boolean; `true` for the Android stock browser (i.e. not Chrome) +var androidStock = android && userAgentContains('Google') && webkitVer < 537 && !('AudioNode' in window); + +// @property opera: Boolean; `true` for the Opera browser +var opera = !!window.opera; + +// @property chrome: Boolean; `true` for the Chrome browser. +var chrome = userAgentContains('chrome'); + +// @property gecko: Boolean; `true` for gecko-based browsers like Firefox. +var gecko = userAgentContains('gecko') && !webkit && !opera && !ie; + +// @property safari: Boolean; `true` for the Safari browser. +var safari = !chrome && userAgentContains('safari'); + +var phantom = userAgentContains('phantom'); + +// @property opera12: Boolean +// `true` for the Opera browser supporting CSS transforms (version 12 or later). +var opera12 = 'OTransition' in style$1; + +// @property win: Boolean; `true` when the browser is running in a Windows platform +var win = navigator.platform.indexOf('Win') === 0; + +// @property ie3d: Boolean; `true` for all Internet Explorer versions supporting CSS transforms. +var ie3d = ie && ('transition' in style$1); + +// @property webkit3d: Boolean; `true` for webkit-based browsers supporting CSS transforms. +var webkit3d = ('WebKitCSSMatrix' in window) && ('m11' in new window.WebKitCSSMatrix()) && !android23; + +// @property gecko3d: Boolean; `true` for gecko-based browsers supporting CSS transforms. +var gecko3d = 'MozPerspective' in style$1; + +// @property any3d: Boolean +// `true` for all browsers supporting CSS transforms. +var any3d = !window.L_DISABLE_3D && (ie3d || webkit3d || gecko3d) && !opera12 && !phantom; + +// @property mobile: Boolean; `true` for all browsers running in a mobile device. +var mobile = typeof orientation !== 'undefined' || userAgentContains('mobile'); + +// @property mobileWebkit: Boolean; `true` for all webkit-based browsers in a mobile device. +var mobileWebkit = mobile && webkit; + +// @property mobileWebkit3d: Boolean +// `true` for all webkit-based browsers in a mobile device supporting CSS transforms. +var mobileWebkit3d = mobile && webkit3d; + +// @property msPointer: Boolean +// `true` for browsers implementing the Microsoft touch events model (notably IE10). +var msPointer = !window.PointerEvent && window.MSPointerEvent; + +// @property pointer: Boolean +// `true` for all browsers supporting [pointer events](https://msdn.microsoft.com/en-us/library/dn433244%28v=vs.85%29.aspx). +var pointer = !!(window.PointerEvent || msPointer); + +// @property touch: Boolean +// `true` for all browsers supporting [touch events](https://developer.mozilla.org/docs/Web/API/Touch_events). +// This does not necessarily mean that the browser is running in a computer with +// a touchscreen, it only means that the browser is capable of understanding +// touch events. +var touch = !window.L_NO_TOUCH && (pointer || 'ontouchstart' in window || + (window.DocumentTouch && document instanceof window.DocumentTouch)); + +// @property mobileOpera: Boolean; `true` for the Opera browser in a mobile device. +var mobileOpera = mobile && opera; + +// @property mobileGecko: Boolean +// `true` for gecko-based browsers running in a mobile device. +var mobileGecko = mobile && gecko; + +// @property retina: Boolean +// `true` for browsers on a high-resolution "retina" screen or on any screen when browser's display zoom is more than 100%. +var retina = (window.devicePixelRatio || (window.screen.deviceXDPI / window.screen.logicalXDPI)) > 1; + + +// @property canvas: Boolean +// `true` when the browser supports [``](https://developer.mozilla.org/docs/Web/API/Canvas_API). +var canvas = (function () { + return !!document.createElement('canvas').getContext; +}()); + +// @property svg: Boolean +// `true` when the browser supports [SVG](https://developer.mozilla.org/docs/Web/SVG). +var svg = !!(document.createElementNS && svgCreate('svg').createSVGRect); + +// @property vml: Boolean +// `true` if the browser supports [VML](https://en.wikipedia.org/wiki/Vector_Markup_Language). +var vml = !svg && (function () { + try { + var div = document.createElement('div'); + div.innerHTML = ''; + + var shape = div.firstChild; + shape.style.behavior = 'url(#default#VML)'; + + return shape && (typeof shape.adj === 'object'); + + } catch (e) { + return false; + } +}()); + + +function userAgentContains(str) { + return navigator.userAgent.toLowerCase().indexOf(str) >= 0; +} + + +var Browser = (Object.freeze || Object)({ + ie: ie, + ielt9: ielt9, + edge: edge, + webkit: webkit, + android: android, + android23: android23, + androidStock: androidStock, + opera: opera, + chrome: chrome, + gecko: gecko, + safari: safari, + phantom: phantom, + opera12: opera12, + win: win, + ie3d: ie3d, + webkit3d: webkit3d, + gecko3d: gecko3d, + any3d: any3d, + mobile: mobile, + mobileWebkit: mobileWebkit, + mobileWebkit3d: mobileWebkit3d, + msPointer: msPointer, + pointer: pointer, + touch: touch, + mobileOpera: mobileOpera, + mobileGecko: mobileGecko, + retina: retina, + canvas: canvas, + svg: svg, + vml: vml +}); + +/* + * Extends L.DomEvent to provide touch support for Internet Explorer and Windows-based devices. + */ + + +var POINTER_DOWN = msPointer ? 'MSPointerDown' : 'pointerdown'; +var POINTER_MOVE = msPointer ? 'MSPointerMove' : 'pointermove'; +var POINTER_UP = msPointer ? 'MSPointerUp' : 'pointerup'; +var POINTER_CANCEL = msPointer ? 'MSPointerCancel' : 'pointercancel'; +var TAG_WHITE_LIST = ['INPUT', 'SELECT', 'OPTION']; + +var _pointers = {}; +var _pointerDocListener = false; + +// DomEvent.DoubleTap needs to know about this +var _pointersCount = 0; + +// Provides a touch events wrapper for (ms)pointer events. +// ref http://www.w3.org/TR/pointerevents/ https://www.w3.org/Bugs/Public/show_bug.cgi?id=22890 + +function addPointerListener(obj, type, handler, id) { + if (type === 'touchstart') { + _addPointerStart(obj, handler, id); + + } else if (type === 'touchmove') { + _addPointerMove(obj, handler, id); + + } else if (type === 'touchend') { + _addPointerEnd(obj, handler, id); + } + + return this; +} + +function removePointerListener(obj, type, id) { + var handler = obj['_leaflet_' + type + id]; + + if (type === 'touchstart') { + obj.removeEventListener(POINTER_DOWN, handler, false); + + } else if (type === 'touchmove') { + obj.removeEventListener(POINTER_MOVE, handler, false); + + } else if (type === 'touchend') { + obj.removeEventListener(POINTER_UP, handler, false); + obj.removeEventListener(POINTER_CANCEL, handler, false); + } + + return this; +} + +function _addPointerStart(obj, handler, id) { + var onDown = bind(function (e) { + if (e.pointerType !== 'mouse' && e.MSPOINTER_TYPE_MOUSE && e.pointerType !== e.MSPOINTER_TYPE_MOUSE) { + // In IE11, some touch events needs to fire for form controls, or + // the controls will stop working. We keep a whitelist of tag names that + // need these events. For other target tags, we prevent default on the event. + if (TAG_WHITE_LIST.indexOf(e.target.tagName) < 0) { + preventDefault(e); + } else { + return; + } + } + + _handlePointer(e, handler); + }); + + obj['_leaflet_touchstart' + id] = onDown; + obj.addEventListener(POINTER_DOWN, onDown, false); + + // need to keep track of what pointers and how many are active to provide e.touches emulation + if (!_pointerDocListener) { + // we listen documentElement as any drags that end by moving the touch off the screen get fired there + document.documentElement.addEventListener(POINTER_DOWN, _globalPointerDown, true); + document.documentElement.addEventListener(POINTER_MOVE, _globalPointerMove, true); + document.documentElement.addEventListener(POINTER_UP, _globalPointerUp, true); + document.documentElement.addEventListener(POINTER_CANCEL, _globalPointerUp, true); + + _pointerDocListener = true; + } +} + +function _globalPointerDown(e) { + _pointers[e.pointerId] = e; + _pointersCount++; +} + +function _globalPointerMove(e) { + if (_pointers[e.pointerId]) { + _pointers[e.pointerId] = e; + } +} + +function _globalPointerUp(e) { + delete _pointers[e.pointerId]; + _pointersCount--; +} + +function _handlePointer(e, handler) { + e.touches = []; + for (var i in _pointers) { + e.touches.push(_pointers[i]); + } + e.changedTouches = [e]; + + handler(e); +} + +function _addPointerMove(obj, handler, id) { + var onMove = function (e) { + // don't fire touch moves when mouse isn't down + if ((e.pointerType === e.MSPOINTER_TYPE_MOUSE || e.pointerType === 'mouse') && e.buttons === 0) { return; } + + _handlePointer(e, handler); + }; + + obj['_leaflet_touchmove' + id] = onMove; + obj.addEventListener(POINTER_MOVE, onMove, false); +} + +function _addPointerEnd(obj, handler, id) { + var onUp = function (e) { + _handlePointer(e, handler); + }; + + obj['_leaflet_touchend' + id] = onUp; + obj.addEventListener(POINTER_UP, onUp, false); + obj.addEventListener(POINTER_CANCEL, onUp, false); +} + +/* + * Extends the event handling code with double tap support for mobile browsers. + */ + +var _touchstart = msPointer ? 'MSPointerDown' : pointer ? 'pointerdown' : 'touchstart'; +var _touchend = msPointer ? 'MSPointerUp' : pointer ? 'pointerup' : 'touchend'; +var _pre = '_leaflet_'; + +// inspired by Zepto touch code by Thomas Fuchs +function addDoubleTapListener(obj, handler, id) { + var last, touch$$1, + doubleTap = false, + delay = 250; + + function onTouchStart(e) { + var count; + + if (pointer) { + if ((!edge) || e.pointerType === 'mouse') { return; } + count = _pointersCount; + } else { + count = e.touches.length; + } + + if (count > 1) { return; } + + var now = Date.now(), + delta = now - (last || now); + + touch$$1 = e.touches ? e.touches[0] : e; + doubleTap = (delta > 0 && delta <= delay); + last = now; + } + + function onTouchEnd(e) { + if (doubleTap && !touch$$1.cancelBubble) { + if (pointer) { + if ((!edge) || e.pointerType === 'mouse') { return; } + // work around .type being readonly with MSPointer* events + var newTouch = {}, + prop, i; + + for (i in touch$$1) { + prop = touch$$1[i]; + newTouch[i] = prop && prop.bind ? prop.bind(touch$$1) : prop; + } + touch$$1 = newTouch; + } + touch$$1.type = 'dblclick'; + handler(touch$$1); + last = null; + } + } + + obj[_pre + _touchstart + id] = onTouchStart; + obj[_pre + _touchend + id] = onTouchEnd; + obj[_pre + 'dblclick' + id] = handler; + + obj.addEventListener(_touchstart, onTouchStart, false); + obj.addEventListener(_touchend, onTouchEnd, false); + + // On some platforms (notably, chrome<55 on win10 + touchscreen + mouse), + // the browser doesn't fire touchend/pointerup events but does fire + // native dblclicks. See #4127. + // Edge 14 also fires native dblclicks, but only for pointerType mouse, see #5180. + obj.addEventListener('dblclick', handler, false); + + return this; +} + +function removeDoubleTapListener(obj, id) { + var touchstart = obj[_pre + _touchstart + id], + touchend = obj[_pre + _touchend + id], + dblclick = obj[_pre + 'dblclick' + id]; + + obj.removeEventListener(_touchstart, touchstart, false); + obj.removeEventListener(_touchend, touchend, false); + if (!edge) { + obj.removeEventListener('dblclick', dblclick, false); + } + + return this; +} + +/* + * @namespace DomUtil + * + * Utility functions to work with the [DOM](https://developer.mozilla.org/docs/Web/API/Document_Object_Model) + * tree, used by Leaflet internally. + * + * Most functions expecting or returning a `HTMLElement` also work for + * SVG elements. The only difference is that classes refer to CSS classes + * in HTML and SVG classes in SVG. + */ + + +// @property TRANSFORM: String +// Vendor-prefixed transform style name (e.g. `'webkitTransform'` for WebKit). +var TRANSFORM = testProp( + ['transform', 'webkitTransform', 'OTransform', 'MozTransform', 'msTransform']); + +// webkitTransition comes first because some browser versions that drop vendor prefix don't do +// the same for the transitionend event, in particular the Android 4.1 stock browser + +// @property TRANSITION: String +// Vendor-prefixed transition style name. +var TRANSITION = testProp( + ['webkitTransition', 'transition', 'OTransition', 'MozTransition', 'msTransition']); + +// @property TRANSITION_END: String +// Vendor-prefixed transitionend event name. +var TRANSITION_END = + TRANSITION === 'webkitTransition' || TRANSITION === 'OTransition' ? TRANSITION + 'End' : 'transitionend'; + + +// @function get(id: String|HTMLElement): HTMLElement +// Returns an element given its DOM id, or returns the element itself +// if it was passed directly. +function get(id) { + return typeof id === 'string' ? document.getElementById(id) : id; +} + +// @function getStyle(el: HTMLElement, styleAttrib: String): String +// Returns the value for a certain style attribute on an element, +// including computed values or values set through CSS. +function getStyle(el, style) { + var value = el.style[style] || (el.currentStyle && el.currentStyle[style]); + + if ((!value || value === 'auto') && document.defaultView) { + var css = document.defaultView.getComputedStyle(el, null); + value = css ? css[style] : null; + } + return value === 'auto' ? null : value; +} + +// @function create(tagName: String, className?: String, container?: HTMLElement): HTMLElement +// Creates an HTML element with `tagName`, sets its class to `className`, and optionally appends it to `container` element. +function create$1(tagName, className, container) { + var el = document.createElement(tagName); + el.className = className || ''; + + if (container) { + container.appendChild(el); + } + return el; +} + +// @function remove(el: HTMLElement) +// Removes `el` from its parent element +function remove(el) { + var parent = el.parentNode; + if (parent) { + parent.removeChild(el); + } +} + +// @function empty(el: HTMLElement) +// Removes all of `el`'s children elements from `el` +function empty(el) { + while (el.firstChild) { + el.removeChild(el.firstChild); + } +} + +// @function toFront(el: HTMLElement) +// Makes `el` the last child of its parent, so it renders in front of the other children. +function toFront(el) { + var parent = el.parentNode; + if (parent && parent.lastChild !== el) { + parent.appendChild(el); + } +} + +// @function toBack(el: HTMLElement) +// Makes `el` the first child of its parent, so it renders behind the other children. +function toBack(el) { + var parent = el.parentNode; + if (parent && parent.firstChild !== el) { + parent.insertBefore(el, parent.firstChild); + } +} + +// @function hasClass(el: HTMLElement, name: String): Boolean +// Returns `true` if the element's class attribute contains `name`. +function hasClass(el, name) { + if (el.classList !== undefined) { + return el.classList.contains(name); + } + var className = getClass(el); + return className.length > 0 && new RegExp('(^|\\s)' + name + '(\\s|$)').test(className); +} + +// @function addClass(el: HTMLElement, name: String) +// Adds `name` to the element's class attribute. +function addClass(el, name) { + if (el.classList !== undefined) { + var classes = splitWords(name); + for (var i = 0, len = classes.length; i < len; i++) { + el.classList.add(classes[i]); + } + } else if (!hasClass(el, name)) { + var className = getClass(el); + setClass(el, (className ? className + ' ' : '') + name); + } +} + +// @function removeClass(el: HTMLElement, name: String) +// Removes `name` from the element's class attribute. +function removeClass(el, name) { + if (el.classList !== undefined) { + el.classList.remove(name); + } else { + setClass(el, trim((' ' + getClass(el) + ' ').replace(' ' + name + ' ', ' '))); + } +} + +// @function setClass(el: HTMLElement, name: String) +// Sets the element's class. +function setClass(el, name) { + if (el.className.baseVal === undefined) { + el.className = name; + } else { + // in case of SVG element + el.className.baseVal = name; + } +} + +// @function getClass(el: HTMLElement): String +// Returns the element's class. +function getClass(el) { + // Check if the element is an SVGElementInstance and use the correspondingElement instead + // (Required for linked SVG elements in IE11.) + if (el.correspondingElement) { + el = el.correspondingElement; + } + return el.className.baseVal === undefined ? el.className : el.className.baseVal; +} + +// @function setOpacity(el: HTMLElement, opacity: Number) +// Set the opacity of an element (including old IE support). +// `opacity` must be a number from `0` to `1`. +function setOpacity(el, value) { + if ('opacity' in el.style) { + el.style.opacity = value; + } else if ('filter' in el.style) { + _setOpacityIE(el, value); + } +} + +function _setOpacityIE(el, value) { + var filter = false, + filterName = 'DXImageTransform.Microsoft.Alpha'; + + // filters collection throws an error if we try to retrieve a filter that doesn't exist + try { + filter = el.filters.item(filterName); + } catch (e) { + // don't set opacity to 1 if we haven't already set an opacity, + // it isn't needed and breaks transparent pngs. + if (value === 1) { return; } + } + + value = Math.round(value * 100); + + if (filter) { + filter.Enabled = (value !== 100); + filter.Opacity = value; + } else { + el.style.filter += ' progid:' + filterName + '(opacity=' + value + ')'; + } +} + +// @function testProp(props: String[]): String|false +// Goes through the array of style names and returns the first name +// that is a valid style name for an element. If no such name is found, +// it returns false. Useful for vendor-prefixed styles like `transform`. +function testProp(props) { + var style = document.documentElement.style; + + for (var i = 0; i < props.length; i++) { + if (props[i] in style) { + return props[i]; + } + } + return false; +} + +// @function setTransform(el: HTMLElement, offset: Point, scale?: Number) +// Resets the 3D CSS transform of `el` so it is translated by `offset` pixels +// and optionally scaled by `scale`. Does not have an effect if the +// browser doesn't support 3D CSS transforms. +function setTransform(el, offset, scale) { + var pos = offset || new Point(0, 0); + + el.style[TRANSFORM] = + (ie3d ? + 'translate(' + pos.x + 'px,' + pos.y + 'px)' : + 'translate3d(' + pos.x + 'px,' + pos.y + 'px,0)') + + (scale ? ' scale(' + scale + ')' : ''); +} + +// @function setPosition(el: HTMLElement, position: Point) +// Sets the position of `el` to coordinates specified by `position`, +// using CSS translate or top/left positioning depending on the browser +// (used by Leaflet internally to position its layers). +function setPosition(el, point) { + + /*eslint-disable */ + el._leaflet_pos = point; + /* eslint-enable */ + + if (any3d) { + setTransform(el, point); + } else { + el.style.left = point.x + 'px'; + el.style.top = point.y + 'px'; + } +} + +// @function getPosition(el: HTMLElement): Point +// Returns the coordinates of an element previously positioned with setPosition. +function getPosition(el) { + // this method is only used for elements previously positioned using setPosition, + // so it's safe to cache the position for performance + + return el._leaflet_pos || new Point(0, 0); +} + +// @function disableTextSelection() +// Prevents the user from generating `selectstart` DOM events, usually generated +// when the user drags the mouse through a page with text. Used internally +// by Leaflet to override the behaviour of any click-and-drag interaction on +// the map. Affects drag interactions on the whole document. + +// @function enableTextSelection() +// Cancels the effects of a previous [`L.DomUtil.disableTextSelection`](#domutil-disabletextselection). +var disableTextSelection; +var enableTextSelection; +var _userSelect; +if ('onselectstart' in document) { + disableTextSelection = function () { + on(window, 'selectstart', preventDefault); + }; + enableTextSelection = function () { + off(window, 'selectstart', preventDefault); + }; +} else { + var userSelectProperty = testProp( + ['userSelect', 'WebkitUserSelect', 'OUserSelect', 'MozUserSelect', 'msUserSelect']); + + disableTextSelection = function () { + if (userSelectProperty) { + var style = document.documentElement.style; + _userSelect = style[userSelectProperty]; + style[userSelectProperty] = 'none'; + } + }; + enableTextSelection = function () { + if (userSelectProperty) { + document.documentElement.style[userSelectProperty] = _userSelect; + _userSelect = undefined; + } + }; +} + +// @function disableImageDrag() +// As [`L.DomUtil.disableTextSelection`](#domutil-disabletextselection), but +// for `dragstart` DOM events, usually generated when the user drags an image. +function disableImageDrag() { + on(window, 'dragstart', preventDefault); +} + +// @function enableImageDrag() +// Cancels the effects of a previous [`L.DomUtil.disableImageDrag`](#domutil-disabletextselection). +function enableImageDrag() { + off(window, 'dragstart', preventDefault); +} + +var _outlineElement; +var _outlineStyle; +// @function preventOutline(el: HTMLElement) +// Makes the [outline](https://developer.mozilla.org/docs/Web/CSS/outline) +// of the element `el` invisible. Used internally by Leaflet to prevent +// focusable elements from displaying an outline when the user performs a +// drag interaction on them. +function preventOutline(element) { + while (element.tabIndex === -1) { + element = element.parentNode; + } + if (!element.style) { return; } + restoreOutline(); + _outlineElement = element; + _outlineStyle = element.style.outline; + element.style.outline = 'none'; + on(window, 'keydown', restoreOutline); +} + +// @function restoreOutline() +// Cancels the effects of a previous [`L.DomUtil.preventOutline`](). +function restoreOutline() { + if (!_outlineElement) { return; } + _outlineElement.style.outline = _outlineStyle; + _outlineElement = undefined; + _outlineStyle = undefined; + off(window, 'keydown', restoreOutline); +} + +// @function getSizedParentNode(el: HTMLElement): HTMLElement +// Finds the closest parent node which size (width and height) is not null. +function getSizedParentNode(element) { + do { + element = element.parentNode; + } while ((!element.offsetWidth || !element.offsetHeight) && element !== document.body); + return element; +} + +// @function getScale(el: HTMLElement): Object +// Computes the CSS scale currently applied on the element. +// Returns an object with `x` and `y` members as horizontal and vertical scales respectively, +// and `boundingClientRect` as the result of [`getBoundingClientRect()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect). +function getScale(element) { + var rect = element.getBoundingClientRect(); // Read-only in old browsers. + + return { + x: rect.width / element.offsetWidth || 1, + y: rect.height / element.offsetHeight || 1, + boundingClientRect: rect + }; +} + + +var DomUtil = (Object.freeze || Object)({ + TRANSFORM: TRANSFORM, + TRANSITION: TRANSITION, + TRANSITION_END: TRANSITION_END, + get: get, + getStyle: getStyle, + create: create$1, + remove: remove, + empty: empty, + toFront: toFront, + toBack: toBack, + hasClass: hasClass, + addClass: addClass, + removeClass: removeClass, + setClass: setClass, + getClass: getClass, + setOpacity: setOpacity, + testProp: testProp, + setTransform: setTransform, + setPosition: setPosition, + getPosition: getPosition, + disableTextSelection: disableTextSelection, + enableTextSelection: enableTextSelection, + disableImageDrag: disableImageDrag, + enableImageDrag: enableImageDrag, + preventOutline: preventOutline, + restoreOutline: restoreOutline, + getSizedParentNode: getSizedParentNode, + getScale: getScale +}); + +/* + * @namespace DomEvent + * Utility functions to work with the [DOM events](https://developer.mozilla.org/docs/Web/API/Event), used by Leaflet internally. + */ + +// Inspired by John Resig, Dean Edwards and YUI addEvent implementations. + +// @function on(el: HTMLElement, types: String, fn: Function, context?: Object): this +// Adds a listener function (`fn`) to a particular DOM event type of the +// element `el`. You can optionally specify the context of the listener +// (object the `this` keyword will point to). You can also pass several +// space-separated types (e.g. `'click dblclick'`). + +// @alternative +// @function on(el: HTMLElement, eventMap: Object, context?: Object): this +// Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}` +function on(obj, types, fn, context) { + + if (typeof types === 'object') { + for (var type in types) { + addOne(obj, type, types[type], fn); + } + } else { + types = splitWords(types); + + for (var i = 0, len = types.length; i < len; i++) { + addOne(obj, types[i], fn, context); + } + } + + return this; +} + +var eventsKey = '_leaflet_events'; + +// @function off(el: HTMLElement, types: String, fn: Function, context?: Object): this +// Removes a previously added listener function. +// Note that if you passed a custom context to on, you must pass the same +// context to `off` in order to remove the listener. + +// @alternative +// @function off(el: HTMLElement, eventMap: Object, context?: Object): this +// Removes a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}` +function off(obj, types, fn, context) { + + if (typeof types === 'object') { + for (var type in types) { + removeOne(obj, type, types[type], fn); + } + } else if (types) { + types = splitWords(types); + + for (var i = 0, len = types.length; i < len; i++) { + removeOne(obj, types[i], fn, context); + } + } else { + for (var j in obj[eventsKey]) { + removeOne(obj, j, obj[eventsKey][j]); + } + delete obj[eventsKey]; + } + + return this; +} + +function addOne(obj, type, fn, context) { + var id = type + stamp(fn) + (context ? '_' + stamp(context) : ''); + + if (obj[eventsKey] && obj[eventsKey][id]) { return this; } + + var handler = function (e) { + return fn.call(context || obj, e || window.event); + }; + + var originalHandler = handler; + + if (pointer && type.indexOf('touch') === 0) { + // Needs DomEvent.Pointer.js + addPointerListener(obj, type, handler, id); + + } else if (touch && (type === 'dblclick') && addDoubleTapListener && + !(pointer && chrome)) { + // Chrome >55 does not need the synthetic dblclicks from addDoubleTapListener + // See #5180 + addDoubleTapListener(obj, handler, id); + + } else if ('addEventListener' in obj) { + + if (type === 'mousewheel') { + obj.addEventListener('onwheel' in obj ? 'wheel' : 'mousewheel', handler, false); + + } else if ((type === 'mouseenter') || (type === 'mouseleave')) { + handler = function (e) { + e = e || window.event; + if (isExternalTarget(obj, e)) { + originalHandler(e); + } + }; + obj.addEventListener(type === 'mouseenter' ? 'mouseover' : 'mouseout', handler, false); + + } else { + if (type === 'click' && android) { + handler = function (e) { + filterClick(e, originalHandler); + }; + } + obj.addEventListener(type, handler, false); + } + + } else if ('attachEvent' in obj) { + obj.attachEvent('on' + type, handler); + } + + obj[eventsKey] = obj[eventsKey] || {}; + obj[eventsKey][id] = handler; +} + +function removeOne(obj, type, fn, context) { + + var id = type + stamp(fn) + (context ? '_' + stamp(context) : ''), + handler = obj[eventsKey] && obj[eventsKey][id]; + + if (!handler) { return this; } + + if (pointer && type.indexOf('touch') === 0) { + removePointerListener(obj, type, id); + + } else if (touch && (type === 'dblclick') && removeDoubleTapListener && + !(pointer && chrome)) { + removeDoubleTapListener(obj, id); + + } else if ('removeEventListener' in obj) { + + if (type === 'mousewheel') { + obj.removeEventListener('onwheel' in obj ? 'wheel' : 'mousewheel', handler, false); + + } else { + obj.removeEventListener( + type === 'mouseenter' ? 'mouseover' : + type === 'mouseleave' ? 'mouseout' : type, handler, false); + } + + } else if ('detachEvent' in obj) { + obj.detachEvent('on' + type, handler); + } + + obj[eventsKey][id] = null; +} + +// @function stopPropagation(ev: DOMEvent): this +// Stop the given event from propagation to parent elements. Used inside the listener functions: +// ```js +// L.DomEvent.on(div, 'click', function (ev) { +// L.DomEvent.stopPropagation(ev); +// }); +// ``` +function stopPropagation(e) { + + if (e.stopPropagation) { + e.stopPropagation(); + } else if (e.originalEvent) { // In case of Leaflet event. + e.originalEvent._stopped = true; + } else { + e.cancelBubble = true; + } + skipped(e); + + return this; +} + +// @function disableScrollPropagation(el: HTMLElement): this +// Adds `stopPropagation` to the element's `'mousewheel'` events (plus browser variants). +function disableScrollPropagation(el) { + addOne(el, 'mousewheel', stopPropagation); + return this; +} + +// @function disableClickPropagation(el: HTMLElement): this +// Adds `stopPropagation` to the element's `'click'`, `'doubleclick'`, +// `'mousedown'` and `'touchstart'` events (plus browser variants). +function disableClickPropagation(el) { + on(el, 'mousedown touchstart dblclick', stopPropagation); + addOne(el, 'click', fakeStop); + return this; +} + +// @function preventDefault(ev: DOMEvent): this +// Prevents the default action of the DOM Event `ev` from happening (such as +// following a link in the href of the a element, or doing a POST request +// with page reload when a `
` is submitted). +// Use it inside listener functions. +function preventDefault(e) { + if (e.preventDefault) { + e.preventDefault(); + } else { + e.returnValue = false; + } + return this; +} + +// @function stop(ev: DOMEvent): this +// Does `stopPropagation` and `preventDefault` at the same time. +function stop(e) { + preventDefault(e); + stopPropagation(e); + return this; +} + +// @function getMousePosition(ev: DOMEvent, container?: HTMLElement): Point +// Gets normalized mouse position from a DOM event relative to the +// `container` (border excluded) or to the whole page if not specified. +function getMousePosition(e, container) { + if (!container) { + return new Point(e.clientX, e.clientY); + } + + var scale = getScale(container), + offset = scale.boundingClientRect; // left and top values are in page scale (like the event clientX/Y) + + return new Point( + // offset.left/top values are in page scale (like clientX/Y), + // whereas clientLeft/Top (border width) values are the original values (before CSS scale applies). + (e.clientX - offset.left) / scale.x - container.clientLeft, + (e.clientY - offset.top) / scale.y - container.clientTop + ); +} + +// Chrome on Win scrolls double the pixels as in other platforms (see #4538), +// and Firefox scrolls device pixels, not CSS pixels +var wheelPxFactor = + (win && chrome) ? 2 * window.devicePixelRatio : + gecko ? window.devicePixelRatio : 1; + +// @function getWheelDelta(ev: DOMEvent): Number +// Gets normalized wheel delta from a mousewheel DOM event, in vertical +// pixels scrolled (negative if scrolling down). +// Events from pointing devices without precise scrolling are mapped to +// a best guess of 60 pixels. +function getWheelDelta(e) { + return (edge) ? e.wheelDeltaY / 2 : // Don't trust window-geometry-based delta + (e.deltaY && e.deltaMode === 0) ? -e.deltaY / wheelPxFactor : // Pixels + (e.deltaY && e.deltaMode === 1) ? -e.deltaY * 20 : // Lines + (e.deltaY && e.deltaMode === 2) ? -e.deltaY * 60 : // Pages + (e.deltaX || e.deltaZ) ? 0 : // Skip horizontal/depth wheel events + e.wheelDelta ? (e.wheelDeltaY || e.wheelDelta) / 2 : // Legacy IE pixels + (e.detail && Math.abs(e.detail) < 32765) ? -e.detail * 20 : // Legacy Moz lines + e.detail ? e.detail / -32765 * 60 : // Legacy Moz pages + 0; +} + +var skipEvents = {}; + +function fakeStop(e) { + // fakes stopPropagation by setting a special event flag, checked/reset with skipped(e) + skipEvents[e.type] = true; +} + +function skipped(e) { + var events = skipEvents[e.type]; + // reset when checking, as it's only used in map container and propagates outside of the map + skipEvents[e.type] = false; + return events; +} + +// check if element really left/entered the event target (for mouseenter/mouseleave) +function isExternalTarget(el, e) { + + var related = e.relatedTarget; + + if (!related) { return true; } + + try { + while (related && (related !== el)) { + related = related.parentNode; + } + } catch (err) { + return false; + } + return (related !== el); +} + +var lastClick; + +// this is a horrible workaround for a bug in Android where a single touch triggers two click events +function filterClick(e, handler) { + var timeStamp = (e.timeStamp || (e.originalEvent && e.originalEvent.timeStamp)), + elapsed = lastClick && (timeStamp - lastClick); + + // are they closer together than 500ms yet more than 100ms? + // Android typically triggers them ~300ms apart while multiple listeners + // on the same event should be triggered far faster; + // or check if click is simulated on the element, and if it is, reject any non-simulated events + + if ((elapsed && elapsed > 100 && elapsed < 500) || (e.target._simulatedClick && !e._simulated)) { + stop(e); + return; + } + lastClick = timeStamp; + + handler(e); +} + + + + +var DomEvent = (Object.freeze || Object)({ + on: on, + off: off, + stopPropagation: stopPropagation, + disableScrollPropagation: disableScrollPropagation, + disableClickPropagation: disableClickPropagation, + preventDefault: preventDefault, + stop: stop, + getMousePosition: getMousePosition, + getWheelDelta: getWheelDelta, + fakeStop: fakeStop, + skipped: skipped, + isExternalTarget: isExternalTarget, + addListener: on, + removeListener: off +}); + +/* + * @class PosAnimation + * @aka L.PosAnimation + * @inherits Evented + * Used internally for panning animations, utilizing CSS3 Transitions for modern browsers and a timer fallback for IE6-9. + * + * @example + * ```js + * var fx = new L.PosAnimation(); + * fx.run(el, [300, 500], 0.5); + * ``` + * + * @constructor L.PosAnimation() + * Creates a `PosAnimation` object. + * + */ + +var PosAnimation = Evented.extend({ + + // @method run(el: HTMLElement, newPos: Point, duration?: Number, easeLinearity?: Number) + // Run an animation of a given element to a new position, optionally setting + // duration in seconds (`0.25` by default) and easing linearity factor (3rd + // argument of the [cubic bezier curve](http://cubic-bezier.com/#0,0,.5,1), + // `0.5` by default). + run: function (el, newPos, duration, easeLinearity) { + this.stop(); + + this._el = el; + this._inProgress = true; + this._duration = duration || 0.25; + this._easeOutPower = 1 / Math.max(easeLinearity || 0.5, 0.2); + + this._startPos = getPosition(el); + this._offset = newPos.subtract(this._startPos); + this._startTime = +new Date(); + + // @event start: Event + // Fired when the animation starts + this.fire('start'); + + this._animate(); + }, + + // @method stop() + // Stops the animation (if currently running). + stop: function () { + if (!this._inProgress) { return; } + + this._step(true); + this._complete(); + }, + + _animate: function () { + // animation loop + this._animId = requestAnimFrame(this._animate, this); + this._step(); + }, + + _step: function (round) { + var elapsed = (+new Date()) - this._startTime, + duration = this._duration * 1000; + + if (elapsed < duration) { + this._runFrame(this._easeOut(elapsed / duration), round); + } else { + this._runFrame(1); + this._complete(); + } + }, + + _runFrame: function (progress, round) { + var pos = this._startPos.add(this._offset.multiplyBy(progress)); + if (round) { + pos._round(); + } + setPosition(this._el, pos); + + // @event step: Event + // Fired continuously during the animation. + this.fire('step'); + }, + + _complete: function () { + cancelAnimFrame(this._animId); + + this._inProgress = false; + // @event end: Event + // Fired when the animation ends. + this.fire('end'); + }, + + _easeOut: function (t) { + return 1 - Math.pow(1 - t, this._easeOutPower); + } +}); + +/* + * @class Map + * @aka L.Map + * @inherits Evented + * + * The central class of the API — it is used to create a map on a page and manipulate it. + * + * @example + * + * ```js + * // initialize the map on the "map" div with a given center and zoom + * var map = L.map('map', { + * center: [51.505, -0.09], + * zoom: 13 + * }); + * ``` + * + */ + +var Map = Evented.extend({ + + options: { + // @section Map State Options + // @option crs: CRS = L.CRS.EPSG3857 + // The [Coordinate Reference System](#crs) to use. Don't change this if you're not + // sure what it means. + crs: EPSG3857, + + // @option center: LatLng = undefined + // Initial geographic center of the map + center: undefined, + + // @option zoom: Number = undefined + // Initial map zoom level + zoom: undefined, + + // @option minZoom: Number = * + // Minimum zoom level of the map. + // If not specified and at least one `GridLayer` or `TileLayer` is in the map, + // the lowest of their `minZoom` options will be used instead. + minZoom: undefined, + + // @option maxZoom: Number = * + // Maximum zoom level of the map. + // If not specified and at least one `GridLayer` or `TileLayer` is in the map, + // the highest of their `maxZoom` options will be used instead. + maxZoom: undefined, + + // @option layers: Layer[] = [] + // Array of layers that will be added to the map initially + layers: [], + + // @option maxBounds: LatLngBounds = null + // When this option is set, the map restricts the view to the given + // geographical bounds, bouncing the user back if the user tries to pan + // outside the view. To set the restriction dynamically, use + // [`setMaxBounds`](#map-setmaxbounds) method. + maxBounds: undefined, + + // @option renderer: Renderer = * + // The default method for drawing vector layers on the map. `L.SVG` + // or `L.Canvas` by default depending on browser support. + renderer: undefined, + + + // @section Animation Options + // @option zoomAnimation: Boolean = true + // Whether the map zoom animation is enabled. By default it's enabled + // in all browsers that support CSS3 Transitions except Android. + zoomAnimation: true, + + // @option zoomAnimationThreshold: Number = 4 + // Won't animate zoom if the zoom difference exceeds this value. + zoomAnimationThreshold: 4, + + // @option fadeAnimation: Boolean = true + // Whether the tile fade animation is enabled. By default it's enabled + // in all browsers that support CSS3 Transitions except Android. + fadeAnimation: true, + + // @option markerZoomAnimation: Boolean = true + // Whether markers animate their zoom with the zoom animation, if disabled + // they will disappear for the length of the animation. By default it's + // enabled in all browsers that support CSS3 Transitions except Android. + markerZoomAnimation: true, + + // @option transform3DLimit: Number = 2^23 + // Defines the maximum size of a CSS translation transform. The default + // value should not be changed unless a web browser positions layers in + // the wrong place after doing a large `panBy`. + transform3DLimit: 8388608, // Precision limit of a 32-bit float + + // @section Interaction Options + // @option zoomSnap: Number = 1 + // Forces the map's zoom level to always be a multiple of this, particularly + // right after a [`fitBounds()`](#map-fitbounds) or a pinch-zoom. + // By default, the zoom level snaps to the nearest integer; lower values + // (e.g. `0.5` or `0.1`) allow for greater granularity. A value of `0` + // means the zoom level will not be snapped after `fitBounds` or a pinch-zoom. + zoomSnap: 1, + + // @option zoomDelta: Number = 1 + // Controls how much the map's zoom level will change after a + // [`zoomIn()`](#map-zoomin), [`zoomOut()`](#map-zoomout), pressing `+` + // or `-` on the keyboard, or using the [zoom controls](#control-zoom). + // Values smaller than `1` (e.g. `0.5`) allow for greater granularity. + zoomDelta: 1, + + // @option trackResize: Boolean = true + // Whether the map automatically handles browser window resize to update itself. + trackResize: true + }, + + initialize: function (id, options) { // (HTMLElement or String, Object) + options = setOptions(this, options); + + // Make sure to assign internal flags at the beginning, + // to avoid inconsistent state in some edge cases. + this._handlers = []; + this._layers = {}; + this._zoomBoundLayers = {}; + this._sizeChanged = true; + + this._initContainer(id); + this._initLayout(); + + // hack for https://github.com/Leaflet/Leaflet/issues/1980 + this._onResize = bind(this._onResize, this); + + this._initEvents(); + + if (options.maxBounds) { + this.setMaxBounds(options.maxBounds); + } + + if (options.zoom !== undefined) { + this._zoom = this._limitZoom(options.zoom); + } + + if (options.center && options.zoom !== undefined) { + this.setView(toLatLng(options.center), options.zoom, {reset: true}); + } + + this.callInitHooks(); + + // don't animate on browsers without hardware-accelerated transitions or old Android/Opera + this._zoomAnimated = TRANSITION && any3d && !mobileOpera && + this.options.zoomAnimation; + + // zoom transitions run with the same duration for all layers, so if one of transitionend events + // happens after starting zoom animation (propagating to the map pane), we know that it ended globally + if (this._zoomAnimated) { + this._createAnimProxy(); + on(this._proxy, TRANSITION_END, this._catchTransitionEnd, this); + } + + this._addLayers(this.options.layers); + }, + + + // @section Methods for modifying map state + + // @method setView(center: LatLng, zoom: Number, options?: Zoom/pan options): this + // Sets the view of the map (geographical center and zoom) with the given + // animation options. + setView: function (center, zoom, options) { + + zoom = zoom === undefined ? this._zoom : this._limitZoom(zoom); + center = this._limitCenter(toLatLng(center), zoom, this.options.maxBounds); + options = options || {}; + + this._stop(); + + if (this._loaded && !options.reset && options !== true) { + + if (options.animate !== undefined) { + options.zoom = extend({animate: options.animate}, options.zoom); + options.pan = extend({animate: options.animate, duration: options.duration}, options.pan); + } + + // try animating pan or zoom + var moved = (this._zoom !== zoom) ? + this._tryAnimatedZoom && this._tryAnimatedZoom(center, zoom, options.zoom) : + this._tryAnimatedPan(center, options.pan); + + if (moved) { + // prevent resize handler call, the view will refresh after animation anyway + clearTimeout(this._sizeTimer); + return this; + } + } + + // animation didn't start, just reset the map view + this._resetView(center, zoom); + + return this; + }, + + // @method setZoom(zoom: Number, options?: Zoom/pan options): this + // Sets the zoom of the map. + setZoom: function (zoom, options) { + if (!this._loaded) { + this._zoom = zoom; + return this; + } + return this.setView(this.getCenter(), zoom, {zoom: options}); + }, + + // @method zoomIn(delta?: Number, options?: Zoom options): this + // Increases the zoom of the map by `delta` ([`zoomDelta`](#map-zoomdelta) by default). + zoomIn: function (delta, options) { + delta = delta || (any3d ? this.options.zoomDelta : 1); + return this.setZoom(this._zoom + delta, options); + }, + + // @method zoomOut(delta?: Number, options?: Zoom options): this + // Decreases the zoom of the map by `delta` ([`zoomDelta`](#map-zoomdelta) by default). + zoomOut: function (delta, options) { + delta = delta || (any3d ? this.options.zoomDelta : 1); + return this.setZoom(this._zoom - delta, options); + }, + + // @method setZoomAround(latlng: LatLng, zoom: Number, options: Zoom options): this + // Zooms the map while keeping a specified geographical point on the map + // stationary (e.g. used internally for scroll zoom and double-click zoom). + // @alternative + // @method setZoomAround(offset: Point, zoom: Number, options: Zoom options): this + // Zooms the map while keeping a specified pixel on the map (relative to the top-left corner) stationary. + setZoomAround: function (latlng, zoom, options) { + var scale = this.getZoomScale(zoom), + viewHalf = this.getSize().divideBy(2), + containerPoint = latlng instanceof Point ? latlng : this.latLngToContainerPoint(latlng), + + centerOffset = containerPoint.subtract(viewHalf).multiplyBy(1 - 1 / scale), + newCenter = this.containerPointToLatLng(viewHalf.add(centerOffset)); + + return this.setView(newCenter, zoom, {zoom: options}); + }, + + _getBoundsCenterZoom: function (bounds, options) { + + options = options || {}; + bounds = bounds.getBounds ? bounds.getBounds() : toLatLngBounds(bounds); + + var paddingTL = toPoint(options.paddingTopLeft || options.padding || [0, 0]), + paddingBR = toPoint(options.paddingBottomRight || options.padding || [0, 0]), + + zoom = this.getBoundsZoom(bounds, false, paddingTL.add(paddingBR)); + + zoom = (typeof options.maxZoom === 'number') ? Math.min(options.maxZoom, zoom) : zoom; + + if (zoom === Infinity) { + return { + center: bounds.getCenter(), + zoom: zoom + }; + } + + var paddingOffset = paddingBR.subtract(paddingTL).divideBy(2), + + swPoint = this.project(bounds.getSouthWest(), zoom), + nePoint = this.project(bounds.getNorthEast(), zoom), + center = this.unproject(swPoint.add(nePoint).divideBy(2).add(paddingOffset), zoom); + + return { + center: center, + zoom: zoom + }; + }, + + // @method fitBounds(bounds: LatLngBounds, options?: fitBounds options): this + // Sets a map view that contains the given geographical bounds with the + // maximum zoom level possible. + fitBounds: function (bounds, options) { + + bounds = toLatLngBounds(bounds); + + if (!bounds.isValid()) { + throw new Error('Bounds are not valid.'); + } + + var target = this._getBoundsCenterZoom(bounds, options); + return this.setView(target.center, target.zoom, options); + }, + + // @method fitWorld(options?: fitBounds options): this + // Sets a map view that mostly contains the whole world with the maximum + // zoom level possible. + fitWorld: function (options) { + return this.fitBounds([[-90, -180], [90, 180]], options); + }, + + // @method panTo(latlng: LatLng, options?: Pan options): this + // Pans the map to a given center. + panTo: function (center, options) { // (LatLng) + return this.setView(center, this._zoom, {pan: options}); + }, + + // @method panBy(offset: Point, options?: Pan options): this + // Pans the map by a given number of pixels (animated). + panBy: function (offset, options) { + offset = toPoint(offset).round(); + options = options || {}; + + if (!offset.x && !offset.y) { + return this.fire('moveend'); + } + // If we pan too far, Chrome gets issues with tiles + // and makes them disappear or appear in the wrong place (slightly offset) #2602 + if (options.animate !== true && !this.getSize().contains(offset)) { + this._resetView(this.unproject(this.project(this.getCenter()).add(offset)), this.getZoom()); + return this; + } + + if (!this._panAnim) { + this._panAnim = new PosAnimation(); + + this._panAnim.on({ + 'step': this._onPanTransitionStep, + 'end': this._onPanTransitionEnd + }, this); + } + + // don't fire movestart if animating inertia + if (!options.noMoveStart) { + this.fire('movestart'); + } + + // animate pan unless animate: false specified + if (options.animate !== false) { + addClass(this._mapPane, 'leaflet-pan-anim'); + + var newPos = this._getMapPanePos().subtract(offset).round(); + this._panAnim.run(this._mapPane, newPos, options.duration || 0.25, options.easeLinearity); + } else { + this._rawPanBy(offset); + this.fire('move').fire('moveend'); + } + + return this; + }, + + // @method flyTo(latlng: LatLng, zoom?: Number, options?: Zoom/pan options): this + // Sets the view of the map (geographical center and zoom) performing a smooth + // pan-zoom animation. + flyTo: function (targetCenter, targetZoom, options) { + + options = options || {}; + if (options.animate === false || !any3d) { + return this.setView(targetCenter, targetZoom, options); + } + + this._stop(); + + var from = this.project(this.getCenter()), + to = this.project(targetCenter), + size = this.getSize(), + startZoom = this._zoom; + + targetCenter = toLatLng(targetCenter); + targetZoom = targetZoom === undefined ? startZoom : targetZoom; + + var w0 = Math.max(size.x, size.y), + w1 = w0 * this.getZoomScale(startZoom, targetZoom), + u1 = (to.distanceTo(from)) || 1, + rho = 1.42, + rho2 = rho * rho; + + function r(i) { + var s1 = i ? -1 : 1, + s2 = i ? w1 : w0, + t1 = w1 * w1 - w0 * w0 + s1 * rho2 * rho2 * u1 * u1, + b1 = 2 * s2 * rho2 * u1, + b = t1 / b1, + sq = Math.sqrt(b * b + 1) - b; + + // workaround for floating point precision bug when sq = 0, log = -Infinite, + // thus triggering an infinite loop in flyTo + var log = sq < 0.000000001 ? -18 : Math.log(sq); + + return log; + } + + function sinh(n) { return (Math.exp(n) - Math.exp(-n)) / 2; } + function cosh(n) { return (Math.exp(n) + Math.exp(-n)) / 2; } + function tanh(n) { return sinh(n) / cosh(n); } + + var r0 = r(0); + + function w(s) { return w0 * (cosh(r0) / cosh(r0 + rho * s)); } + function u(s) { return w0 * (cosh(r0) * tanh(r0 + rho * s) - sinh(r0)) / rho2; } + + function easeOut(t) { return 1 - Math.pow(1 - t, 1.5); } + + var start = Date.now(), + S = (r(1) - r0) / rho, + duration = options.duration ? 1000 * options.duration : 1000 * S * 0.8; + + function frame() { + var t = (Date.now() - start) / duration, + s = easeOut(t) * S; + + if (t <= 1) { + this._flyToFrame = requestAnimFrame(frame, this); + + this._move( + this.unproject(from.add(to.subtract(from).multiplyBy(u(s) / u1)), startZoom), + this.getScaleZoom(w0 / w(s), startZoom), + {flyTo: true}); + + } else { + this + ._move(targetCenter, targetZoom) + ._moveEnd(true); + } + } + + this._moveStart(true, options.noMoveStart); + + frame.call(this); + return this; + }, + + // @method flyToBounds(bounds: LatLngBounds, options?: fitBounds options): this + // Sets the view of the map with a smooth animation like [`flyTo`](#map-flyto), + // but takes a bounds parameter like [`fitBounds`](#map-fitbounds). + flyToBounds: function (bounds, options) { + var target = this._getBoundsCenterZoom(bounds, options); + return this.flyTo(target.center, target.zoom, options); + }, + + // @method setMaxBounds(bounds: Bounds): this + // Restricts the map view to the given bounds (see the [maxBounds](#map-maxbounds) option). + setMaxBounds: function (bounds) { + bounds = toLatLngBounds(bounds); + + if (!bounds.isValid()) { + this.options.maxBounds = null; + return this.off('moveend', this._panInsideMaxBounds); + } else if (this.options.maxBounds) { + this.off('moveend', this._panInsideMaxBounds); + } + + this.options.maxBounds = bounds; + + if (this._loaded) { + this._panInsideMaxBounds(); + } + + return this.on('moveend', this._panInsideMaxBounds); + }, + + // @method setMinZoom(zoom: Number): this + // Sets the lower limit for the available zoom levels (see the [minZoom](#map-minzoom) option). + setMinZoom: function (zoom) { + var oldZoom = this.options.minZoom; + this.options.minZoom = zoom; + + if (this._loaded && oldZoom !== zoom) { + this.fire('zoomlevelschange'); + + if (this.getZoom() < this.options.minZoom) { + return this.setZoom(zoom); + } + } + + return this; + }, + + // @method setMaxZoom(zoom: Number): this + // Sets the upper limit for the available zoom levels (see the [maxZoom](#map-maxzoom) option). + setMaxZoom: function (zoom) { + var oldZoom = this.options.maxZoom; + this.options.maxZoom = zoom; + + if (this._loaded && oldZoom !== zoom) { + this.fire('zoomlevelschange'); + + if (this.getZoom() > this.options.maxZoom) { + return this.setZoom(zoom); + } + } + + return this; + }, + + // @method panInsideBounds(bounds: LatLngBounds, options?: Pan options): this + // Pans the map to the closest view that would lie inside the given bounds (if it's not already), controlling the animation using the options specific, if any. + panInsideBounds: function (bounds, options) { + this._enforcingBounds = true; + var center = this.getCenter(), + newCenter = this._limitCenter(center, this._zoom, toLatLngBounds(bounds)); + + if (!center.equals(newCenter)) { + this.panTo(newCenter, options); + } + + this._enforcingBounds = false; + return this; + }, + + // @method panInside(latlng: LatLng, options?: options): this + // Pans the map the minimum amount to make the `latlng` visible. Use + // `padding`, `paddingTopLeft` and `paddingTopRight` options to fit + // the display to more restricted bounds, like [`fitBounds`](#map-fitbounds). + // If `latlng` is already within the (optionally padded) display bounds, + // the map will not be panned. + panInside: function (latlng, options) { + options = options || {}; + + var paddingTL = toPoint(options.paddingTopLeft || options.padding || [0, 0]), + paddingBR = toPoint(options.paddingBottomRight || options.padding || [0, 0]), + center = this.getCenter(), + pixelCenter = this.project(center), + pixelPoint = this.project(latlng), + pixelBounds = this.getPixelBounds(), + halfPixelBounds = pixelBounds.getSize().divideBy(2), + paddedBounds = toBounds([pixelBounds.min.add(paddingTL), pixelBounds.max.subtract(paddingBR)]); + + if (!paddedBounds.contains(pixelPoint)) { + this._enforcingBounds = true; + var diff = pixelCenter.subtract(pixelPoint), + newCenter = toPoint(pixelPoint.x + diff.x, pixelPoint.y + diff.y); + + if (pixelPoint.x < paddedBounds.min.x || pixelPoint.x > paddedBounds.max.x) { + newCenter.x = pixelCenter.x - diff.x; + if (diff.x > 0) { + newCenter.x += halfPixelBounds.x - paddingTL.x; + } else { + newCenter.x -= halfPixelBounds.x - paddingBR.x; + } + } + if (pixelPoint.y < paddedBounds.min.y || pixelPoint.y > paddedBounds.max.y) { + newCenter.y = pixelCenter.y - diff.y; + if (diff.y > 0) { + newCenter.y += halfPixelBounds.y - paddingTL.y; + } else { + newCenter.y -= halfPixelBounds.y - paddingBR.y; + } + } + this.panTo(this.unproject(newCenter), options); + this._enforcingBounds = false; + } + return this; + }, + + // @method invalidateSize(options: Zoom/pan options): this + // Checks if the map container size changed and updates the map if so — + // call it after you've changed the map size dynamically, also animating + // pan by default. If `options.pan` is `false`, panning will not occur. + // If `options.debounceMoveend` is `true`, it will delay `moveend` event so + // that it doesn't happen often even if the method is called many + // times in a row. + + // @alternative + // @method invalidateSize(animate: Boolean): this + // Checks if the map container size changed and updates the map if so — + // call it after you've changed the map size dynamically, also animating + // pan by default. + invalidateSize: function (options) { + if (!this._loaded) { return this; } + + options = extend({ + animate: false, + pan: true + }, options === true ? {animate: true} : options); + + var oldSize = this.getSize(); + this._sizeChanged = true; + this._lastCenter = null; + + var newSize = this.getSize(), + oldCenter = oldSize.divideBy(2).round(), + newCenter = newSize.divideBy(2).round(), + offset = oldCenter.subtract(newCenter); + + if (!offset.x && !offset.y) { return this; } + + if (options.animate && options.pan) { + this.panBy(offset); + + } else { + if (options.pan) { + this._rawPanBy(offset); + } + + this.fire('move'); + + if (options.debounceMoveend) { + clearTimeout(this._sizeTimer); + this._sizeTimer = setTimeout(bind(this.fire, this, 'moveend'), 200); + } else { + this.fire('moveend'); + } + } + + // @section Map state change events + // @event resize: ResizeEvent + // Fired when the map is resized. + return this.fire('resize', { + oldSize: oldSize, + newSize: newSize + }); + }, + + // @section Methods for modifying map state + // @method stop(): this + // Stops the currently running `panTo` or `flyTo` animation, if any. + stop: function () { + this.setZoom(this._limitZoom(this._zoom)); + if (!this.options.zoomSnap) { + this.fire('viewreset'); + } + return this._stop(); + }, + + // @section Geolocation methods + // @method locate(options?: Locate options): this + // Tries to locate the user using the Geolocation API, firing a [`locationfound`](#map-locationfound) + // event with location data on success or a [`locationerror`](#map-locationerror) event on failure, + // and optionally sets the map view to the user's location with respect to + // detection accuracy (or to the world view if geolocation failed). + // Note that, if your page doesn't use HTTPS, this method will fail in + // modern browsers ([Chrome 50 and newer](https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins)) + // See `Locate options` for more details. + locate: function (options) { + + options = this._locateOptions = extend({ + timeout: 10000, + watch: false + // setView: false + // maxZoom: + // maximumAge: 0 + // enableHighAccuracy: false + }, options); + + if (!('geolocation' in navigator)) { + this._handleGeolocationError({ + code: 0, + message: 'Geolocation not supported.' + }); + return this; + } + + var onResponse = bind(this._handleGeolocationResponse, this), + onError = bind(this._handleGeolocationError, this); + + if (options.watch) { + this._locationWatchId = + navigator.geolocation.watchPosition(onResponse, onError, options); + } else { + navigator.geolocation.getCurrentPosition(onResponse, onError, options); + } + return this; + }, + + // @method stopLocate(): this + // Stops watching location previously initiated by `map.locate({watch: true})` + // and aborts resetting the map view if map.locate was called with + // `{setView: true}`. + stopLocate: function () { + if (navigator.geolocation && navigator.geolocation.clearWatch) { + navigator.geolocation.clearWatch(this._locationWatchId); + } + if (this._locateOptions) { + this._locateOptions.setView = false; + } + return this; + }, + + _handleGeolocationError: function (error) { + var c = error.code, + message = error.message || + (c === 1 ? 'permission denied' : + (c === 2 ? 'position unavailable' : 'timeout')); + + if (this._locateOptions.setView && !this._loaded) { + this.fitWorld(); + } + + // @section Location events + // @event locationerror: ErrorEvent + // Fired when geolocation (using the [`locate`](#map-locate) method) failed. + this.fire('locationerror', { + code: c, + message: 'Geolocation error: ' + message + '.' + }); + }, + + _handleGeolocationResponse: function (pos) { + var lat = pos.coords.latitude, + lng = pos.coords.longitude, + latlng = new LatLng(lat, lng), + bounds = latlng.toBounds(pos.coords.accuracy * 2), + options = this._locateOptions; + + if (options.setView) { + var zoom = this.getBoundsZoom(bounds); + this.setView(latlng, options.maxZoom ? Math.min(zoom, options.maxZoom) : zoom); + } + + var data = { + latlng: latlng, + bounds: bounds, + timestamp: pos.timestamp + }; + + for (var i in pos.coords) { + if (typeof pos.coords[i] === 'number') { + data[i] = pos.coords[i]; + } + } + + // @event locationfound: LocationEvent + // Fired when geolocation (using the [`locate`](#map-locate) method) + // went successfully. + this.fire('locationfound', data); + }, + + // TODO Appropriate docs section? + // @section Other Methods + // @method addHandler(name: String, HandlerClass: Function): this + // Adds a new `Handler` to the map, given its name and constructor function. + addHandler: function (name, HandlerClass) { + if (!HandlerClass) { return this; } + + var handler = this[name] = new HandlerClass(this); + + this._handlers.push(handler); + + if (this.options[name]) { + handler.enable(); + } + + return this; + }, + + // @method remove(): this + // Destroys the map and clears all related event listeners. + remove: function () { + + this._initEvents(true); + + if (this._containerId !== this._container._leaflet_id) { + throw new Error('Map container is being reused by another instance'); + } + + try { + // throws error in IE6-8 + delete this._container._leaflet_id; + delete this._containerId; + } catch (e) { + /*eslint-disable */ + this._container._leaflet_id = undefined; + /* eslint-enable */ + this._containerId = undefined; + } + + if (this._locationWatchId !== undefined) { + this.stopLocate(); + } + + this._stop(); + + remove(this._mapPane); + + if (this._clearControlPos) { + this._clearControlPos(); + } + if (this._resizeRequest) { + cancelAnimFrame(this._resizeRequest); + this._resizeRequest = null; + } + + this._clearHandlers(); + + if (this._loaded) { + // @section Map state change events + // @event unload: Event + // Fired when the map is destroyed with [remove](#map-remove) method. + this.fire('unload'); + } + + var i; + for (i in this._layers) { + this._layers[i].remove(); + } + for (i in this._panes) { + remove(this._panes[i]); + } + + this._layers = []; + this._panes = []; + delete this._mapPane; + delete this._renderer; + + return this; + }, + + // @section Other Methods + // @method createPane(name: String, container?: HTMLElement): HTMLElement + // Creates a new [map pane](#map-pane) with the given name if it doesn't exist already, + // then returns it. The pane is created as a child of `container`, or + // as a child of the main map pane if not set. + createPane: function (name, container) { + var className = 'leaflet-pane' + (name ? ' leaflet-' + name.replace('Pane', '') + '-pane' : ''), + pane = create$1('div', className, container || this._mapPane); + + if (name) { + this._panes[name] = pane; + } + return pane; + }, + + // @section Methods for Getting Map State + + // @method getCenter(): LatLng + // Returns the geographical center of the map view + getCenter: function () { + this._checkIfLoaded(); + + if (this._lastCenter && !this._moved()) { + return this._lastCenter; + } + return this.layerPointToLatLng(this._getCenterLayerPoint()); + }, + + // @method getZoom(): Number + // Returns the current zoom level of the map view + getZoom: function () { + return this._zoom; + }, + + // @method getBounds(): LatLngBounds + // Returns the geographical bounds visible in the current map view + getBounds: function () { + var bounds = this.getPixelBounds(), + sw = this.unproject(bounds.getBottomLeft()), + ne = this.unproject(bounds.getTopRight()); + + return new LatLngBounds(sw, ne); + }, + + // @method getMinZoom(): Number + // Returns the minimum zoom level of the map (if set in the `minZoom` option of the map or of any layers), or `0` by default. + getMinZoom: function () { + return this.options.minZoom === undefined ? this._layersMinZoom || 0 : this.options.minZoom; + }, + + // @method getMaxZoom(): Number + // Returns the maximum zoom level of the map (if set in the `maxZoom` option of the map or of any layers). + getMaxZoom: function () { + return this.options.maxZoom === undefined ? + (this._layersMaxZoom === undefined ? Infinity : this._layersMaxZoom) : + this.options.maxZoom; + }, + + // @method getBoundsZoom(bounds: LatLngBounds, inside?: Boolean, padding?: Point): Number + // Returns the maximum zoom level on which the given bounds fit to the map + // view in its entirety. If `inside` (optional) is set to `true`, the method + // instead returns the minimum zoom level on which the map view fits into + // the given bounds in its entirety. + getBoundsZoom: function (bounds, inside, padding) { // (LatLngBounds[, Boolean, Point]) -> Number + bounds = toLatLngBounds(bounds); + padding = toPoint(padding || [0, 0]); + + var zoom = this.getZoom() || 0, + min = this.getMinZoom(), + max = this.getMaxZoom(), + nw = bounds.getNorthWest(), + se = bounds.getSouthEast(), + size = this.getSize().subtract(padding), + boundsSize = toBounds(this.project(se, zoom), this.project(nw, zoom)).getSize(), + snap = any3d ? this.options.zoomSnap : 1, + scalex = size.x / boundsSize.x, + scaley = size.y / boundsSize.y, + scale = inside ? Math.max(scalex, scaley) : Math.min(scalex, scaley); + + zoom = this.getScaleZoom(scale, zoom); + + if (snap) { + zoom = Math.round(zoom / (snap / 100)) * (snap / 100); // don't jump if within 1% of a snap level + zoom = inside ? Math.ceil(zoom / snap) * snap : Math.floor(zoom / snap) * snap; + } + + return Math.max(min, Math.min(max, zoom)); + }, + + // @method getSize(): Point + // Returns the current size of the map container (in pixels). + getSize: function () { + if (!this._size || this._sizeChanged) { + this._size = new Point( + this._container.clientWidth || 0, + this._container.clientHeight || 0); + + this._sizeChanged = false; + } + return this._size.clone(); + }, + + // @method getPixelBounds(): Bounds + // Returns the bounds of the current map view in projected pixel + // coordinates (sometimes useful in layer and overlay implementations). + getPixelBounds: function (center, zoom) { + var topLeftPoint = this._getTopLeftPoint(center, zoom); + return new Bounds(topLeftPoint, topLeftPoint.add(this.getSize())); + }, + + // TODO: Check semantics - isn't the pixel origin the 0,0 coord relative to + // the map pane? "left point of the map layer" can be confusing, specially + // since there can be negative offsets. + // @method getPixelOrigin(): Point + // Returns the projected pixel coordinates of the top left point of + // the map layer (useful in custom layer and overlay implementations). + getPixelOrigin: function () { + this._checkIfLoaded(); + return this._pixelOrigin; + }, + + // @method getPixelWorldBounds(zoom?: Number): Bounds + // Returns the world's bounds in pixel coordinates for zoom level `zoom`. + // If `zoom` is omitted, the map's current zoom level is used. + getPixelWorldBounds: function (zoom) { + return this.options.crs.getProjectedBounds(zoom === undefined ? this.getZoom() : zoom); + }, + + // @section Other Methods + + // @method getPane(pane: String|HTMLElement): HTMLElement + // Returns a [map pane](#map-pane), given its name or its HTML element (its identity). + getPane: function (pane) { + return typeof pane === 'string' ? this._panes[pane] : pane; + }, + + // @method getPanes(): Object + // Returns a plain object containing the names of all [panes](#map-pane) as keys and + // the panes as values. + getPanes: function () { + return this._panes; + }, + + // @method getContainer: HTMLElement + // Returns the HTML element that contains the map. + getContainer: function () { + return this._container; + }, + + + // @section Conversion Methods + + // @method getZoomScale(toZoom: Number, fromZoom: Number): Number + // Returns the scale factor to be applied to a map transition from zoom level + // `fromZoom` to `toZoom`. Used internally to help with zoom animations. + getZoomScale: function (toZoom, fromZoom) { + // TODO replace with universal implementation after refactoring projections + var crs = this.options.crs; + fromZoom = fromZoom === undefined ? this._zoom : fromZoom; + return crs.scale(toZoom) / crs.scale(fromZoom); + }, + + // @method getScaleZoom(scale: Number, fromZoom: Number): Number + // Returns the zoom level that the map would end up at, if it is at `fromZoom` + // level and everything is scaled by a factor of `scale`. Inverse of + // [`getZoomScale`](#map-getZoomScale). + getScaleZoom: function (scale, fromZoom) { + var crs = this.options.crs; + fromZoom = fromZoom === undefined ? this._zoom : fromZoom; + var zoom = crs.zoom(scale * crs.scale(fromZoom)); + return isNaN(zoom) ? Infinity : zoom; + }, + + // @method project(latlng: LatLng, zoom: Number): Point + // Projects a geographical coordinate `LatLng` according to the projection + // of the map's CRS, then scales it according to `zoom` and the CRS's + // `Transformation`. The result is pixel coordinate relative to + // the CRS origin. + project: function (latlng, zoom) { + zoom = zoom === undefined ? this._zoom : zoom; + return this.options.crs.latLngToPoint(toLatLng(latlng), zoom); + }, + + // @method unproject(point: Point, zoom: Number): LatLng + // Inverse of [`project`](#map-project). + unproject: function (point, zoom) { + zoom = zoom === undefined ? this._zoom : zoom; + return this.options.crs.pointToLatLng(toPoint(point), zoom); + }, + + // @method layerPointToLatLng(point: Point): LatLng + // Given a pixel coordinate relative to the [origin pixel](#map-getpixelorigin), + // returns the corresponding geographical coordinate (for the current zoom level). + layerPointToLatLng: function (point) { + var projectedPoint = toPoint(point).add(this.getPixelOrigin()); + return this.unproject(projectedPoint); + }, + + // @method latLngToLayerPoint(latlng: LatLng): Point + // Given a geographical coordinate, returns the corresponding pixel coordinate + // relative to the [origin pixel](#map-getpixelorigin). + latLngToLayerPoint: function (latlng) { + var projectedPoint = this.project(toLatLng(latlng))._round(); + return projectedPoint._subtract(this.getPixelOrigin()); + }, + + // @method wrapLatLng(latlng: LatLng): LatLng + // Returns a `LatLng` where `lat` and `lng` has been wrapped according to the + // map's CRS's `wrapLat` and `wrapLng` properties, if they are outside the + // CRS's bounds. + // By default this means longitude is wrapped around the dateline so its + // value is between -180 and +180 degrees. + wrapLatLng: function (latlng) { + return this.options.crs.wrapLatLng(toLatLng(latlng)); + }, + + // @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds + // Returns a `LatLngBounds` with the same size as the given one, ensuring that + // its center is within the CRS's bounds. + // By default this means the center longitude is wrapped around the dateline so its + // value is between -180 and +180 degrees, and the majority of the bounds + // overlaps the CRS's bounds. + wrapLatLngBounds: function (latlng) { + return this.options.crs.wrapLatLngBounds(toLatLngBounds(latlng)); + }, + + // @method distance(latlng1: LatLng, latlng2: LatLng): Number + // Returns the distance between two geographical coordinates according to + // the map's CRS. By default this measures distance in meters. + distance: function (latlng1, latlng2) { + return this.options.crs.distance(toLatLng(latlng1), toLatLng(latlng2)); + }, + + // @method containerPointToLayerPoint(point: Point): Point + // Given a pixel coordinate relative to the map container, returns the corresponding + // pixel coordinate relative to the [origin pixel](#map-getpixelorigin). + containerPointToLayerPoint: function (point) { // (Point) + return toPoint(point).subtract(this._getMapPanePos()); + }, + + // @method layerPointToContainerPoint(point: Point): Point + // Given a pixel coordinate relative to the [origin pixel](#map-getpixelorigin), + // returns the corresponding pixel coordinate relative to the map container. + layerPointToContainerPoint: function (point) { // (Point) + return toPoint(point).add(this._getMapPanePos()); + }, + + // @method containerPointToLatLng(point: Point): LatLng + // Given a pixel coordinate relative to the map container, returns + // the corresponding geographical coordinate (for the current zoom level). + containerPointToLatLng: function (point) { + var layerPoint = this.containerPointToLayerPoint(toPoint(point)); + return this.layerPointToLatLng(layerPoint); + }, + + // @method latLngToContainerPoint(latlng: LatLng): Point + // Given a geographical coordinate, returns the corresponding pixel coordinate + // relative to the map container. + latLngToContainerPoint: function (latlng) { + return this.layerPointToContainerPoint(this.latLngToLayerPoint(toLatLng(latlng))); + }, + + // @method mouseEventToContainerPoint(ev: MouseEvent): Point + // Given a MouseEvent object, returns the pixel coordinate relative to the + // map container where the event took place. + mouseEventToContainerPoint: function (e) { + return getMousePosition(e, this._container); + }, + + // @method mouseEventToLayerPoint(ev: MouseEvent): Point + // Given a MouseEvent object, returns the pixel coordinate relative to + // the [origin pixel](#map-getpixelorigin) where the event took place. + mouseEventToLayerPoint: function (e) { + return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(e)); + }, + + // @method mouseEventToLatLng(ev: MouseEvent): LatLng + // Given a MouseEvent object, returns geographical coordinate where the + // event took place. + mouseEventToLatLng: function (e) { // (MouseEvent) + return this.layerPointToLatLng(this.mouseEventToLayerPoint(e)); + }, + + + // map initialization methods + + _initContainer: function (id) { + var container = this._container = get(id); + + if (!container) { + throw new Error('Map container not found.'); + } else if (container._leaflet_id) { + throw new Error('Map container is already initialized.'); + } + + on(container, 'scroll', this._onScroll, this); + this._containerId = stamp(container); + }, + + _initLayout: function () { + var container = this._container; + + this._fadeAnimated = this.options.fadeAnimation && any3d; + + addClass(container, 'leaflet-container' + + (touch ? ' leaflet-touch' : '') + + (retina ? ' leaflet-retina' : '') + + (ielt9 ? ' leaflet-oldie' : '') + + (safari ? ' leaflet-safari' : '') + + (this._fadeAnimated ? ' leaflet-fade-anim' : '')); + + var position = getStyle(container, 'position'); + + if (position !== 'absolute' && position !== 'relative' && position !== 'fixed') { + container.style.position = 'relative'; + } + + this._initPanes(); + + if (this._initControlPos) { + this._initControlPos(); + } + }, + + _initPanes: function () { + var panes = this._panes = {}; + this._paneRenderers = {}; + + // @section + // + // Panes are DOM elements used to control the ordering of layers on the map. You + // can access panes with [`map.getPane`](#map-getpane) or + // [`map.getPanes`](#map-getpanes) methods. New panes can be created with the + // [`map.createPane`](#map-createpane) method. + // + // Every map has the following default panes that differ only in zIndex. + // + // @pane mapPane: HTMLElement = 'auto' + // Pane that contains all other map panes + + this._mapPane = this.createPane('mapPane', this._container); + setPosition(this._mapPane, new Point(0, 0)); + + // @pane tilePane: HTMLElement = 200 + // Pane for `GridLayer`s and `TileLayer`s + this.createPane('tilePane'); + // @pane overlayPane: HTMLElement = 400 + // Pane for vectors (`Path`s, like `Polyline`s and `Polygon`s), `ImageOverlay`s and `VideoOverlay`s + this.createPane('shadowPane'); + // @pane shadowPane: HTMLElement = 500 + // Pane for overlay shadows (e.g. `Marker` shadows) + this.createPane('overlayPane'); + // @pane markerPane: HTMLElement = 600 + // Pane for `Icon`s of `Marker`s + this.createPane('markerPane'); + // @pane tooltipPane: HTMLElement = 650 + // Pane for `Tooltip`s. + this.createPane('tooltipPane'); + // @pane popupPane: HTMLElement = 700 + // Pane for `Popup`s. + this.createPane('popupPane'); + + if (!this.options.markerZoomAnimation) { + addClass(panes.markerPane, 'leaflet-zoom-hide'); + addClass(panes.shadowPane, 'leaflet-zoom-hide'); + } + }, + + + // private methods that modify map state + + // @section Map state change events + _resetView: function (center, zoom) { + setPosition(this._mapPane, new Point(0, 0)); + + var loading = !this._loaded; + this._loaded = true; + zoom = this._limitZoom(zoom); + + this.fire('viewprereset'); + + var zoomChanged = this._zoom !== zoom; + this + ._moveStart(zoomChanged, false) + ._move(center, zoom) + ._moveEnd(zoomChanged); + + // @event viewreset: Event + // Fired when the map needs to redraw its content (this usually happens + // on map zoom or load). Very useful for creating custom overlays. + this.fire('viewreset'); + + // @event load: Event + // Fired when the map is initialized (when its center and zoom are set + // for the first time). + if (loading) { + this.fire('load'); + } + }, + + _moveStart: function (zoomChanged, noMoveStart) { + // @event zoomstart: Event + // Fired when the map zoom is about to change (e.g. before zoom animation). + // @event movestart: Event + // Fired when the view of the map starts changing (e.g. user starts dragging the map). + if (zoomChanged) { + this.fire('zoomstart'); + } + if (!noMoveStart) { + this.fire('movestart'); + } + return this; + }, + + _move: function (center, zoom, data) { + if (zoom === undefined) { + zoom = this._zoom; + } + var zoomChanged = this._zoom !== zoom; + + this._zoom = zoom; + this._lastCenter = center; + this._pixelOrigin = this._getNewPixelOrigin(center); + + // @event zoom: Event + // Fired repeatedly during any change in zoom level, including zoom + // and fly animations. + if (zoomChanged || (data && data.pinch)) { // Always fire 'zoom' if pinching because #3530 + this.fire('zoom', data); + } + + // @event move: Event + // Fired repeatedly during any movement of the map, including pan and + // fly animations. + return this.fire('move', data); + }, + + _moveEnd: function (zoomChanged) { + // @event zoomend: Event + // Fired when the map has changed, after any animations. + if (zoomChanged) { + this.fire('zoomend'); + } + + // @event moveend: Event + // Fired when the center of the map stops changing (e.g. user stopped + // dragging the map). + return this.fire('moveend'); + }, + + _stop: function () { + cancelAnimFrame(this._flyToFrame); + if (this._panAnim) { + this._panAnim.stop(); + } + return this; + }, + + _rawPanBy: function (offset) { + setPosition(this._mapPane, this._getMapPanePos().subtract(offset)); + }, + + _getZoomSpan: function () { + return this.getMaxZoom() - this.getMinZoom(); + }, + + _panInsideMaxBounds: function () { + if (!this._enforcingBounds) { + this.panInsideBounds(this.options.maxBounds); + } + }, + + _checkIfLoaded: function () { + if (!this._loaded) { + throw new Error('Set map center and zoom first.'); + } + }, + + // DOM event handling + + // @section Interaction events + _initEvents: function (remove$$1) { + this._targets = {}; + this._targets[stamp(this._container)] = this; + + var onOff = remove$$1 ? off : on; + + // @event click: MouseEvent + // Fired when the user clicks (or taps) the map. + // @event dblclick: MouseEvent + // Fired when the user double-clicks (or double-taps) the map. + // @event mousedown: MouseEvent + // Fired when the user pushes the mouse button on the map. + // @event mouseup: MouseEvent + // Fired when the user releases the mouse button on the map. + // @event mouseover: MouseEvent + // Fired when the mouse enters the map. + // @event mouseout: MouseEvent + // Fired when the mouse leaves the map. + // @event mousemove: MouseEvent + // Fired while the mouse moves over the map. + // @event contextmenu: MouseEvent + // Fired when the user pushes the right mouse button on the map, prevents + // default browser context menu from showing if there are listeners on + // this event. Also fired on mobile when the user holds a single touch + // for a second (also called long press). + // @event keypress: KeyboardEvent + // Fired when the user presses a key from the keyboard while the map is focused. + onOff(this._container, 'click dblclick mousedown mouseup ' + + 'mouseover mouseout mousemove contextmenu keypress', this._handleDOMEvent, this); + + if (this.options.trackResize) { + onOff(window, 'resize', this._onResize, this); + } + + if (any3d && this.options.transform3DLimit) { + (remove$$1 ? this.off : this.on).call(this, 'moveend', this._onMoveEnd); + } + }, + + _onResize: function () { + cancelAnimFrame(this._resizeRequest); + this._resizeRequest = requestAnimFrame( + function () { this.invalidateSize({debounceMoveend: true}); }, this); + }, + + _onScroll: function () { + this._container.scrollTop = 0; + this._container.scrollLeft = 0; + }, + + _onMoveEnd: function () { + var pos = this._getMapPanePos(); + if (Math.max(Math.abs(pos.x), Math.abs(pos.y)) >= this.options.transform3DLimit) { + // https://bugzilla.mozilla.org/show_bug.cgi?id=1203873 but Webkit also have + // a pixel offset on very high values, see: http://jsfiddle.net/dg6r5hhb/ + this._resetView(this.getCenter(), this.getZoom()); + } + }, + + _findEventTargets: function (e, type) { + var targets = [], + target, + isHover = type === 'mouseout' || type === 'mouseover', + src = e.target || e.srcElement, + dragging = false; + + while (src) { + target = this._targets[stamp(src)]; + if (target && (type === 'click' || type === 'preclick') && !e._simulated && this._draggableMoved(target)) { + // Prevent firing click after you just dragged an object. + dragging = true; + break; + } + if (target && target.listens(type, true)) { + if (isHover && !isExternalTarget(src, e)) { break; } + targets.push(target); + if (isHover) { break; } + } + if (src === this._container) { break; } + src = src.parentNode; + } + if (!targets.length && !dragging && !isHover && isExternalTarget(src, e)) { + targets = [this]; + } + return targets; + }, + + _handleDOMEvent: function (e) { + if (!this._loaded || skipped(e)) { return; } + + var type = e.type; + + if (type === 'mousedown' || type === 'keypress') { + // prevents outline when clicking on keyboard-focusable element + preventOutline(e.target || e.srcElement); + } + + this._fireDOMEvent(e, type); + }, + + _mouseEvents: ['click', 'dblclick', 'mouseover', 'mouseout', 'contextmenu'], + + _fireDOMEvent: function (e, type, targets) { + + if (e.type === 'click') { + // Fire a synthetic 'preclick' event which propagates up (mainly for closing popups). + // @event preclick: MouseEvent + // Fired before mouse click on the map (sometimes useful when you + // want something to happen on click before any existing click + // handlers start running). + var synth = extend({}, e); + synth.type = 'preclick'; + this._fireDOMEvent(synth, synth.type, targets); + } + + if (e._stopped) { return; } + + // Find the layer the event is propagating from and its parents. + targets = (targets || []).concat(this._findEventTargets(e, type)); + + if (!targets.length) { return; } + + var target = targets[0]; + if (type === 'contextmenu' && target.listens(type, true)) { + preventDefault(e); + } + + var data = { + originalEvent: e + }; + + if (e.type !== 'keypress') { + var isMarker = target.getLatLng && (!target._radius || target._radius <= 10); + data.containerPoint = isMarker ? + this.latLngToContainerPoint(target.getLatLng()) : this.mouseEventToContainerPoint(e); + data.layerPoint = this.containerPointToLayerPoint(data.containerPoint); + data.latlng = isMarker ? target.getLatLng() : this.layerPointToLatLng(data.layerPoint); + } + + for (var i = 0; i < targets.length; i++) { + targets[i].fire(type, data, true); + if (data.originalEvent._stopped || + (targets[i].options.bubblingMouseEvents === false && indexOf(this._mouseEvents, type) !== -1)) { return; } + } + }, + + _draggableMoved: function (obj) { + obj = obj.dragging && obj.dragging.enabled() ? obj : this; + return (obj.dragging && obj.dragging.moved()) || (this.boxZoom && this.boxZoom.moved()); + }, + + _clearHandlers: function () { + for (var i = 0, len = this._handlers.length; i < len; i++) { + this._handlers[i].disable(); + } + }, + + // @section Other Methods + + // @method whenReady(fn: Function, context?: Object): this + // Runs the given function `fn` when the map gets initialized with + // a view (center and zoom) and at least one layer, or immediately + // if it's already initialized, optionally passing a function context. + whenReady: function (callback, context) { + if (this._loaded) { + callback.call(context || this, {target: this}); + } else { + this.on('load', callback, context); + } + return this; + }, + + + // private methods for getting map state + + _getMapPanePos: function () { + return getPosition(this._mapPane) || new Point(0, 0); + }, + + _moved: function () { + var pos = this._getMapPanePos(); + return pos && !pos.equals([0, 0]); + }, + + _getTopLeftPoint: function (center, zoom) { + var pixelOrigin = center && zoom !== undefined ? + this._getNewPixelOrigin(center, zoom) : + this.getPixelOrigin(); + return pixelOrigin.subtract(this._getMapPanePos()); + }, + + _getNewPixelOrigin: function (center, zoom) { + var viewHalf = this.getSize()._divideBy(2); + return this.project(center, zoom)._subtract(viewHalf)._add(this._getMapPanePos())._round(); + }, + + _latLngToNewLayerPoint: function (latlng, zoom, center) { + var topLeft = this._getNewPixelOrigin(center, zoom); + return this.project(latlng, zoom)._subtract(topLeft); + }, + + _latLngBoundsToNewLayerBounds: function (latLngBounds, zoom, center) { + var topLeft = this._getNewPixelOrigin(center, zoom); + return toBounds([ + this.project(latLngBounds.getSouthWest(), zoom)._subtract(topLeft), + this.project(latLngBounds.getNorthWest(), zoom)._subtract(topLeft), + this.project(latLngBounds.getSouthEast(), zoom)._subtract(topLeft), + this.project(latLngBounds.getNorthEast(), zoom)._subtract(topLeft) + ]); + }, + + // layer point of the current center + _getCenterLayerPoint: function () { + return this.containerPointToLayerPoint(this.getSize()._divideBy(2)); + }, + + // offset of the specified place to the current center in pixels + _getCenterOffset: function (latlng) { + return this.latLngToLayerPoint(latlng).subtract(this._getCenterLayerPoint()); + }, + + // adjust center for view to get inside bounds + _limitCenter: function (center, zoom, bounds) { + + if (!bounds) { return center; } + + var centerPoint = this.project(center, zoom), + viewHalf = this.getSize().divideBy(2), + viewBounds = new Bounds(centerPoint.subtract(viewHalf), centerPoint.add(viewHalf)), + offset = this._getBoundsOffset(viewBounds, bounds, zoom); + + // If offset is less than a pixel, ignore. + // This prevents unstable projections from getting into + // an infinite loop of tiny offsets. + if (offset.round().equals([0, 0])) { + return center; + } + + return this.unproject(centerPoint.add(offset), zoom); + }, + + // adjust offset for view to get inside bounds + _limitOffset: function (offset, bounds) { + if (!bounds) { return offset; } + + var viewBounds = this.getPixelBounds(), + newBounds = new Bounds(viewBounds.min.add(offset), viewBounds.max.add(offset)); + + return offset.add(this._getBoundsOffset(newBounds, bounds)); + }, + + // returns offset needed for pxBounds to get inside maxBounds at a specified zoom + _getBoundsOffset: function (pxBounds, maxBounds, zoom) { + var projectedMaxBounds = toBounds( + this.project(maxBounds.getNorthEast(), zoom), + this.project(maxBounds.getSouthWest(), zoom) + ), + minOffset = projectedMaxBounds.min.subtract(pxBounds.min), + maxOffset = projectedMaxBounds.max.subtract(pxBounds.max), + + dx = this._rebound(minOffset.x, -maxOffset.x), + dy = this._rebound(minOffset.y, -maxOffset.y); + + return new Point(dx, dy); + }, + + _rebound: function (left, right) { + return left + right > 0 ? + Math.round(left - right) / 2 : + Math.max(0, Math.ceil(left)) - Math.max(0, Math.floor(right)); + }, + + _limitZoom: function (zoom) { + var min = this.getMinZoom(), + max = this.getMaxZoom(), + snap = any3d ? this.options.zoomSnap : 1; + if (snap) { + zoom = Math.round(zoom / snap) * snap; + } + return Math.max(min, Math.min(max, zoom)); + }, + + _onPanTransitionStep: function () { + this.fire('move'); + }, + + _onPanTransitionEnd: function () { + removeClass(this._mapPane, 'leaflet-pan-anim'); + this.fire('moveend'); + }, + + _tryAnimatedPan: function (center, options) { + // difference between the new and current centers in pixels + var offset = this._getCenterOffset(center)._trunc(); + + // don't animate too far unless animate: true specified in options + if ((options && options.animate) !== true && !this.getSize().contains(offset)) { return false; } + + this.panBy(offset, options); + + return true; + }, + + _createAnimProxy: function () { + + var proxy = this._proxy = create$1('div', 'leaflet-proxy leaflet-zoom-animated'); + this._panes.mapPane.appendChild(proxy); + + this.on('zoomanim', function (e) { + var prop = TRANSFORM, + transform = this._proxy.style[prop]; + + setTransform(this._proxy, this.project(e.center, e.zoom), this.getZoomScale(e.zoom, 1)); + + // workaround for case when transform is the same and so transitionend event is not fired + if (transform === this._proxy.style[prop] && this._animatingZoom) { + this._onZoomTransitionEnd(); + } + }, this); + + this.on('load moveend', function () { + var c = this.getCenter(), + z = this.getZoom(); + setTransform(this._proxy, this.project(c, z), this.getZoomScale(z, 1)); + }, this); + + this._on('unload', this._destroyAnimProxy, this); + }, + + _destroyAnimProxy: function () { + remove(this._proxy); + delete this._proxy; + }, + + _catchTransitionEnd: function (e) { + if (this._animatingZoom && e.propertyName.indexOf('transform') >= 0) { + this._onZoomTransitionEnd(); + } + }, + + _nothingToAnimate: function () { + return !this._container.getElementsByClassName('leaflet-zoom-animated').length; + }, + + _tryAnimatedZoom: function (center, zoom, options) { + + if (this._animatingZoom) { return true; } + + options = options || {}; + + // don't animate if disabled, not supported or zoom difference is too large + if (!this._zoomAnimated || options.animate === false || this._nothingToAnimate() || + Math.abs(zoom - this._zoom) > this.options.zoomAnimationThreshold) { return false; } + + // offset is the pixel coords of the zoom origin relative to the current center + var scale = this.getZoomScale(zoom), + offset = this._getCenterOffset(center)._divideBy(1 - 1 / scale); + + // don't animate if the zoom origin isn't within one screen from the current center, unless forced + if (options.animate !== true && !this.getSize().contains(offset)) { return false; } + + requestAnimFrame(function () { + this + ._moveStart(true, false) + ._animateZoom(center, zoom, true); + }, this); + + return true; + }, + + _animateZoom: function (center, zoom, startAnim, noUpdate) { + if (!this._mapPane) { return; } + + if (startAnim) { + this._animatingZoom = true; + + // remember what center/zoom to set after animation + this._animateToCenter = center; + this._animateToZoom = zoom; + + addClass(this._mapPane, 'leaflet-zoom-anim'); + } + + // @event zoomanim: ZoomAnimEvent + // Fired at least once per zoom animation. For continous zoom, like pinch zooming, fired once per frame during zoom. + this.fire('zoomanim', { + center: center, + zoom: zoom, + noUpdate: noUpdate + }); + + // Work around webkit not firing 'transitionend', see https://github.com/Leaflet/Leaflet/issues/3689, 2693 + setTimeout(bind(this._onZoomTransitionEnd, this), 250); + }, + + _onZoomTransitionEnd: function () { + if (!this._animatingZoom) { return; } + + if (this._mapPane) { + removeClass(this._mapPane, 'leaflet-zoom-anim'); + } + + this._animatingZoom = false; + + this._move(this._animateToCenter, this._animateToZoom); + + // This anim frame should prevent an obscure iOS webkit tile loading race condition. + requestAnimFrame(function () { + this._moveEnd(true); + }, this); + } +}); + +// @section + +// @factory L.map(id: String, options?: Map options) +// Instantiates a map object given the DOM ID of a `
` element +// and optionally an object literal with `Map options`. +// +// @alternative +// @factory L.map(el: HTMLElement, options?: Map options) +// Instantiates a map object given an instance of a `
` HTML element +// and optionally an object literal with `Map options`. +function createMap(id, options) { + return new Map(id, options); +} + +/* + * @class Control + * @aka L.Control + * @inherits Class + * + * L.Control is a base class for implementing map controls. Handles positioning. + * All other controls extend from this class. + */ + +var Control = Class.extend({ + // @section + // @aka Control options + options: { + // @option position: String = 'topright' + // The position of the control (one of the map corners). Possible values are `'topleft'`, + // `'topright'`, `'bottomleft'` or `'bottomright'` + position: 'topright' + }, + + initialize: function (options) { + setOptions(this, options); + }, + + /* @section + * Classes extending L.Control will inherit the following methods: + * + * @method getPosition: string + * Returns the position of the control. + */ + getPosition: function () { + return this.options.position; + }, + + // @method setPosition(position: string): this + // Sets the position of the control. + setPosition: function (position) { + var map = this._map; + + if (map) { + map.removeControl(this); + } + + this.options.position = position; + + if (map) { + map.addControl(this); + } + + return this; + }, + + // @method getContainer: HTMLElement + // Returns the HTMLElement that contains the control. + getContainer: function () { + return this._container; + }, + + // @method addTo(map: Map): this + // Adds the control to the given map. + addTo: function (map) { + this.remove(); + this._map = map; + + var container = this._container = this.onAdd(map), + pos = this.getPosition(), + corner = map._controlCorners[pos]; + + addClass(container, 'leaflet-control'); + + if (pos.indexOf('bottom') !== -1) { + corner.insertBefore(container, corner.firstChild); + } else { + corner.appendChild(container); + } + + return this; + }, + + // @method remove: this + // Removes the control from the map it is currently active on. + remove: function () { + if (!this._map) { + return this; + } + + remove(this._container); + + if (this.onRemove) { + this.onRemove(this._map); + } + + this._map = null; + + return this; + }, + + _refocusOnMap: function (e) { + // if map exists and event is not a keyboard event + if (this._map && e && e.screenX > 0 && e.screenY > 0) { + this._map.getContainer().focus(); + } + } +}); + +var control = function (options) { + return new Control(options); +}; + +/* @section Extension methods + * @uninheritable + * + * Every control should extend from `L.Control` and (re-)implement the following methods. + * + * @method onAdd(map: Map): HTMLElement + * Should return the container DOM element for the control and add listeners on relevant map events. Called on [`control.addTo(map)`](#control-addTo). + * + * @method onRemove(map: Map) + * Optional method. Should contain all clean up code that removes the listeners previously added in [`onAdd`](#control-onadd). Called on [`control.remove()`](#control-remove). + */ + +/* @namespace Map + * @section Methods for Layers and Controls + */ +Map.include({ + // @method addControl(control: Control): this + // Adds the given control to the map + addControl: function (control) { + control.addTo(this); + return this; + }, + + // @method removeControl(control: Control): this + // Removes the given control from the map + removeControl: function (control) { + control.remove(); + return this; + }, + + _initControlPos: function () { + var corners = this._controlCorners = {}, + l = 'leaflet-', + container = this._controlContainer = + create$1('div', l + 'control-container', this._container); + + function createCorner(vSide, hSide) { + var className = l + vSide + ' ' + l + hSide; + + corners[vSide + hSide] = create$1('div', className, container); + } + + createCorner('top', 'left'); + createCorner('top', 'right'); + createCorner('bottom', 'left'); + createCorner('bottom', 'right'); + }, + + _clearControlPos: function () { + for (var i in this._controlCorners) { + remove(this._controlCorners[i]); + } + remove(this._controlContainer); + delete this._controlCorners; + delete this._controlContainer; + } +}); + +/* + * @class Control.Layers + * @aka L.Control.Layers + * @inherits Control + * + * The layers control gives users the ability to switch between different base layers and switch overlays on/off (check out the [detailed example](http://leafletjs.com/examples/layers-control/)). Extends `Control`. + * + * @example + * + * ```js + * var baseLayers = { + * "Mapbox": mapbox, + * "OpenStreetMap": osm + * }; + * + * var overlays = { + * "Marker": marker, + * "Roads": roadsLayer + * }; + * + * L.control.layers(baseLayers, overlays).addTo(map); + * ``` + * + * The `baseLayers` and `overlays` parameters are object literals with layer names as keys and `Layer` objects as values: + * + * ```js + * { + * "": layer1, + * "": layer2 + * } + * ``` + * + * The layer names can contain HTML, which allows you to add additional styling to the items: + * + * ```js + * {" My Layer": myLayer} + * ``` + */ + +var Layers = Control.extend({ + // @section + // @aka Control.Layers options + options: { + // @option collapsed: Boolean = true + // If `true`, the control will be collapsed into an icon and expanded on mouse hover or touch. + collapsed: true, + position: 'topright', + + // @option autoZIndex: Boolean = true + // If `true`, the control will assign zIndexes in increasing order to all of its layers so that the order is preserved when switching them on/off. + autoZIndex: true, + + // @option hideSingleBase: Boolean = false + // If `true`, the base layers in the control will be hidden when there is only one. + hideSingleBase: false, + + // @option sortLayers: Boolean = false + // Whether to sort the layers. When `false`, layers will keep the order + // in which they were added to the control. + sortLayers: false, + + // @option sortFunction: Function = * + // A [compare function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) + // that will be used for sorting the layers, when `sortLayers` is `true`. + // The function receives both the `L.Layer` instances and their names, as in + // `sortFunction(layerA, layerB, nameA, nameB)`. + // By default, it sorts layers alphabetically by their name. + sortFunction: function (layerA, layerB, nameA, nameB) { + return nameA < nameB ? -1 : (nameB < nameA ? 1 : 0); + } + }, + + initialize: function (baseLayers, overlays, options) { + setOptions(this, options); + + this._layerControlInputs = []; + this._layers = []; + this._lastZIndex = 0; + this._handlingClick = false; + + for (var i in baseLayers) { + this._addLayer(baseLayers[i], i); + } + + for (i in overlays) { + this._addLayer(overlays[i], i, true); + } + }, + + onAdd: function (map) { + this._initLayout(); + this._update(); + + this._map = map; + map.on('zoomend', this._checkDisabledLayers, this); + + for (var i = 0; i < this._layers.length; i++) { + this._layers[i].layer.on('add remove', this._onLayerChange, this); + } + + return this._container; + }, + + addTo: function (map) { + Control.prototype.addTo.call(this, map); + // Trigger expand after Layers Control has been inserted into DOM so that is now has an actual height. + return this._expandIfNotCollapsed(); + }, + + onRemove: function () { + this._map.off('zoomend', this._checkDisabledLayers, this); + + for (var i = 0; i < this._layers.length; i++) { + this._layers[i].layer.off('add remove', this._onLayerChange, this); + } + }, + + // @method addBaseLayer(layer: Layer, name: String): this + // Adds a base layer (radio button entry) with the given name to the control. + addBaseLayer: function (layer, name) { + this._addLayer(layer, name); + return (this._map) ? this._update() : this; + }, + + // @method addOverlay(layer: Layer, name: String): this + // Adds an overlay (checkbox entry) with the given name to the control. + addOverlay: function (layer, name) { + this._addLayer(layer, name, true); + return (this._map) ? this._update() : this; + }, + + // @method removeLayer(layer: Layer): this + // Remove the given layer from the control. + removeLayer: function (layer) { + layer.off('add remove', this._onLayerChange, this); + + var obj = this._getLayer(stamp(layer)); + if (obj) { + this._layers.splice(this._layers.indexOf(obj), 1); + } + return (this._map) ? this._update() : this; + }, + + // @method expand(): this + // Expand the control container if collapsed. + expand: function () { + addClass(this._container, 'leaflet-control-layers-expanded'); + this._section.style.height = null; + var acceptableHeight = this._map.getSize().y - (this._container.offsetTop + 50); + if (acceptableHeight < this._section.clientHeight) { + addClass(this._section, 'leaflet-control-layers-scrollbar'); + this._section.style.height = acceptableHeight + 'px'; + } else { + removeClass(this._section, 'leaflet-control-layers-scrollbar'); + } + this._checkDisabledLayers(); + return this; + }, + + // @method collapse(): this + // Collapse the control container if expanded. + collapse: function () { + removeClass(this._container, 'leaflet-control-layers-expanded'); + return this; + }, + + _initLayout: function () { + var className = 'leaflet-control-layers', + container = this._container = create$1('div', className), + collapsed = this.options.collapsed; + + // makes this work on IE touch devices by stopping it from firing a mouseout event when the touch is released + container.setAttribute('aria-haspopup', true); + + disableClickPropagation(container); + disableScrollPropagation(container); + + var section = this._section = create$1('section', className + '-list'); + + if (collapsed) { + this._map.on('click', this.collapse, this); + + if (!android) { + on(container, { + mouseenter: this.expand, + mouseleave: this.collapse + }, this); + } + } + + var link = this._layersLink = create$1('a', className + '-toggle', container); + link.href = '#'; + link.title = 'Layers'; + + if (touch) { + on(link, 'click', stop); + on(link, 'click', this.expand, this); + } else { + on(link, 'focus', this.expand, this); + } + + if (!collapsed) { + this.expand(); + } + + this._baseLayersList = create$1('div', className + '-base', section); + this._separator = create$1('div', className + '-separator', section); + this._overlaysList = create$1('div', className + '-overlays', section); + + container.appendChild(section); + }, + + _getLayer: function (id) { + for (var i = 0; i < this._layers.length; i++) { + + if (this._layers[i] && stamp(this._layers[i].layer) === id) { + return this._layers[i]; + } + } + }, + + _addLayer: function (layer, name, overlay) { + if (this._map) { + layer.on('add remove', this._onLayerChange, this); + } + + this._layers.push({ + layer: layer, + name: name, + overlay: overlay + }); + + if (this.options.sortLayers) { + this._layers.sort(bind(function (a, b) { + return this.options.sortFunction(a.layer, b.layer, a.name, b.name); + }, this)); + } + + if (this.options.autoZIndex && layer.setZIndex) { + this._lastZIndex++; + layer.setZIndex(this._lastZIndex); + } + + this._expandIfNotCollapsed(); + }, + + _update: function () { + if (!this._container) { return this; } + + empty(this._baseLayersList); + empty(this._overlaysList); + + this._layerControlInputs = []; + var baseLayersPresent, overlaysPresent, i, obj, baseLayersCount = 0; + + for (i = 0; i < this._layers.length; i++) { + obj = this._layers[i]; + this._addItem(obj); + overlaysPresent = overlaysPresent || obj.overlay; + baseLayersPresent = baseLayersPresent || !obj.overlay; + baseLayersCount += !obj.overlay ? 1 : 0; + } + + // Hide base layers section if there's only one layer. + if (this.options.hideSingleBase) { + baseLayersPresent = baseLayersPresent && baseLayersCount > 1; + this._baseLayersList.style.display = baseLayersPresent ? '' : 'none'; + } + + this._separator.style.display = overlaysPresent && baseLayersPresent ? '' : 'none'; + + return this; + }, + + _onLayerChange: function (e) { + if (!this._handlingClick) { + this._update(); + } + + var obj = this._getLayer(stamp(e.target)); + + // @namespace Map + // @section Layer events + // @event baselayerchange: LayersControlEvent + // Fired when the base layer is changed through the [layer control](#control-layers). + // @event overlayadd: LayersControlEvent + // Fired when an overlay is selected through the [layer control](#control-layers). + // @event overlayremove: LayersControlEvent + // Fired when an overlay is deselected through the [layer control](#control-layers). + // @namespace Control.Layers + var type = obj.overlay ? + (e.type === 'add' ? 'overlayadd' : 'overlayremove') : + (e.type === 'add' ? 'baselayerchange' : null); + + if (type) { + this._map.fire(type, obj); + } + }, + + // IE7 bugs out if you create a radio dynamically, so you have to do it this hacky way (see http://bit.ly/PqYLBe) + _createRadioElement: function (name, checked) { + + var radioHtml = ''; + + var radioFragment = document.createElement('div'); + radioFragment.innerHTML = radioHtml; + + return radioFragment.firstChild; + }, + + _addItem: function (obj) { + var label = document.createElement('label'), + checked = this._map.hasLayer(obj.layer), + input; + + if (obj.overlay) { + input = document.createElement('input'); + input.type = 'checkbox'; + input.className = 'leaflet-control-layers-selector'; + input.defaultChecked = checked; + } else { + input = this._createRadioElement('leaflet-base-layers', checked); + } + + this._layerControlInputs.push(input); + input.layerId = stamp(obj.layer); + + on(input, 'click', this._onInputClick, this); + + var name = document.createElement('span'); + name.innerHTML = ' ' + obj.name; + + // Helps from preventing layer control flicker when checkboxes are disabled + // https://github.com/Leaflet/Leaflet/issues/2771 + var holder = document.createElement('div'); + + label.appendChild(holder); + holder.appendChild(input); + holder.appendChild(name); + + var container = obj.overlay ? this._overlaysList : this._baseLayersList; + container.appendChild(label); + + this._checkDisabledLayers(); + return label; + }, + + _onInputClick: function () { + var inputs = this._layerControlInputs, + input, layer; + var addedLayers = [], + removedLayers = []; + + this._handlingClick = true; + + for (var i = inputs.length - 1; i >= 0; i--) { + input = inputs[i]; + layer = this._getLayer(input.layerId).layer; + + if (input.checked) { + addedLayers.push(layer); + } else if (!input.checked) { + removedLayers.push(layer); + } + } + + // Bugfix issue 2318: Should remove all old layers before readding new ones + for (i = 0; i < removedLayers.length; i++) { + if (this._map.hasLayer(removedLayers[i])) { + this._map.removeLayer(removedLayers[i]); + } + } + for (i = 0; i < addedLayers.length; i++) { + if (!this._map.hasLayer(addedLayers[i])) { + this._map.addLayer(addedLayers[i]); + } + } + + this._handlingClick = false; + + this._refocusOnMap(); + }, + + _checkDisabledLayers: function () { + var inputs = this._layerControlInputs, + input, + layer, + zoom = this._map.getZoom(); + + for (var i = inputs.length - 1; i >= 0; i--) { + input = inputs[i]; + layer = this._getLayer(input.layerId).layer; + input.disabled = (layer.options.minZoom !== undefined && zoom < layer.options.minZoom) || + (layer.options.maxZoom !== undefined && zoom > layer.options.maxZoom); + + } + }, + + _expandIfNotCollapsed: function () { + if (this._map && !this.options.collapsed) { + this.expand(); + } + return this; + }, + + _expand: function () { + // Backward compatibility, remove me in 1.1. + return this.expand(); + }, + + _collapse: function () { + // Backward compatibility, remove me in 1.1. + return this.collapse(); + } + +}); + + +// @factory L.control.layers(baselayers?: Object, overlays?: Object, options?: Control.Layers options) +// Creates an attribution control with the given layers. Base layers will be switched with radio buttons, while overlays will be switched with checkboxes. Note that all base layers should be passed in the base layers object, but only one should be added to the map during map instantiation. +var layers = function (baseLayers, overlays, options) { + return new Layers(baseLayers, overlays, options); +}; + +/* + * @class Control.Zoom + * @aka L.Control.Zoom + * @inherits Control + * + * A basic zoom control with two buttons (zoom in and zoom out). It is put on the map by default unless you set its [`zoomControl` option](#map-zoomcontrol) to `false`. Extends `Control`. + */ + +var Zoom = Control.extend({ + // @section + // @aka Control.Zoom options + options: { + position: 'topleft', + + // @option zoomInText: String = '+' + // The text set on the 'zoom in' button. + zoomInText: '+', + + // @option zoomInTitle: String = 'Zoom in' + // The title set on the 'zoom in' button. + zoomInTitle: 'Zoom in', + + // @option zoomOutText: String = '−' + // The text set on the 'zoom out' button. + zoomOutText: '−', + + // @option zoomOutTitle: String = 'Zoom out' + // The title set on the 'zoom out' button. + zoomOutTitle: 'Zoom out' + }, + + onAdd: function (map) { + var zoomName = 'leaflet-control-zoom', + container = create$1('div', zoomName + ' leaflet-bar'), + options = this.options; + + this._zoomInButton = this._createButton(options.zoomInText, options.zoomInTitle, + zoomName + '-in', container, this._zoomIn); + this._zoomOutButton = this._createButton(options.zoomOutText, options.zoomOutTitle, + zoomName + '-out', container, this._zoomOut); + + this._updateDisabled(); + map.on('zoomend zoomlevelschange', this._updateDisabled, this); + + return container; + }, + + onRemove: function (map) { + map.off('zoomend zoomlevelschange', this._updateDisabled, this); + }, + + disable: function () { + this._disabled = true; + this._updateDisabled(); + return this; + }, + + enable: function () { + this._disabled = false; + this._updateDisabled(); + return this; + }, + + _zoomIn: function (e) { + if (!this._disabled && this._map._zoom < this._map.getMaxZoom()) { + this._map.zoomIn(this._map.options.zoomDelta * (e.shiftKey ? 3 : 1)); + } + }, + + _zoomOut: function (e) { + if (!this._disabled && this._map._zoom > this._map.getMinZoom()) { + this._map.zoomOut(this._map.options.zoomDelta * (e.shiftKey ? 3 : 1)); + } + }, + + _createButton: function (html, title, className, container, fn) { + var link = create$1('a', className, container); + link.innerHTML = html; + link.href = '#'; + link.title = title; + + /* + * Will force screen readers like VoiceOver to read this as "Zoom in - button" + */ + link.setAttribute('role', 'button'); + link.setAttribute('aria-label', title); + + disableClickPropagation(link); + on(link, 'click', stop); + on(link, 'click', fn, this); + on(link, 'click', this._refocusOnMap, this); + + return link; + }, + + _updateDisabled: function () { + var map = this._map, + className = 'leaflet-disabled'; + + removeClass(this._zoomInButton, className); + removeClass(this._zoomOutButton, className); + + if (this._disabled || map._zoom === map.getMinZoom()) { + addClass(this._zoomOutButton, className); + } + if (this._disabled || map._zoom === map.getMaxZoom()) { + addClass(this._zoomInButton, className); + } + } +}); + +// @namespace Map +// @section Control options +// @option zoomControl: Boolean = true +// Whether a [zoom control](#control-zoom) is added to the map by default. +Map.mergeOptions({ + zoomControl: true +}); + +Map.addInitHook(function () { + if (this.options.zoomControl) { + // @section Controls + // @property zoomControl: Control.Zoom + // The default zoom control (only available if the + // [`zoomControl` option](#map-zoomcontrol) was `true` when creating the map). + this.zoomControl = new Zoom(); + this.addControl(this.zoomControl); + } +}); + +// @namespace Control.Zoom +// @factory L.control.zoom(options: Control.Zoom options) +// Creates a zoom control +var zoom = function (options) { + return new Zoom(options); +}; + +/* + * @class Control.Scale + * @aka L.Control.Scale + * @inherits Control + * + * A simple scale control that shows the scale of the current center of screen in metric (m/km) and imperial (mi/ft) systems. Extends `Control`. + * + * @example + * + * ```js + * L.control.scale().addTo(map); + * ``` + */ + +var Scale = Control.extend({ + // @section + // @aka Control.Scale options + options: { + position: 'bottomleft', + + // @option maxWidth: Number = 100 + // Maximum width of the control in pixels. The width is set dynamically to show round values (e.g. 100, 200, 500). + maxWidth: 100, + + // @option metric: Boolean = True + // Whether to show the metric scale line (m/km). + metric: true, + + // @option imperial: Boolean = True + // Whether to show the imperial scale line (mi/ft). + imperial: true + + // @option updateWhenIdle: Boolean = false + // If `true`, the control is updated on [`moveend`](#map-moveend), otherwise it's always up-to-date (updated on [`move`](#map-move)). + }, + + onAdd: function (map) { + var className = 'leaflet-control-scale', + container = create$1('div', className), + options = this.options; + + this._addScales(options, className + '-line', container); + + map.on(options.updateWhenIdle ? 'moveend' : 'move', this._update, this); + map.whenReady(this._update, this); + + return container; + }, + + onRemove: function (map) { + map.off(this.options.updateWhenIdle ? 'moveend' : 'move', this._update, this); + }, + + _addScales: function (options, className, container) { + if (options.metric) { + this._mScale = create$1('div', className, container); + } + if (options.imperial) { + this._iScale = create$1('div', className, container); + } + }, + + _update: function () { + var map = this._map, + y = map.getSize().y / 2; + + var maxMeters = map.distance( + map.containerPointToLatLng([0, y]), + map.containerPointToLatLng([this.options.maxWidth, y])); + + this._updateScales(maxMeters); + }, + + _updateScales: function (maxMeters) { + if (this.options.metric && maxMeters) { + this._updateMetric(maxMeters); + } + if (this.options.imperial && maxMeters) { + this._updateImperial(maxMeters); + } + }, + + _updateMetric: function (maxMeters) { + var meters = this._getRoundNum(maxMeters), + label = meters < 1000 ? meters + ' m' : (meters / 1000) + ' km'; + + this._updateScale(this._mScale, label, meters / maxMeters); + }, + + _updateImperial: function (maxMeters) { + var maxFeet = maxMeters * 3.2808399, + maxMiles, miles, feet; + + if (maxFeet > 5280) { + maxMiles = maxFeet / 5280; + miles = this._getRoundNum(maxMiles); + this._updateScale(this._iScale, miles + ' mi', miles / maxMiles); + + } else { + feet = this._getRoundNum(maxFeet); + this._updateScale(this._iScale, feet + ' ft', feet / maxFeet); + } + }, + + _updateScale: function (scale, text, ratio) { + scale.style.width = Math.round(this.options.maxWidth * ratio) + 'px'; + scale.innerHTML = text; + }, + + _getRoundNum: function (num) { + var pow10 = Math.pow(10, (Math.floor(num) + '').length - 1), + d = num / pow10; + + d = d >= 10 ? 10 : + d >= 5 ? 5 : + d >= 3 ? 3 : + d >= 2 ? 2 : 1; + + return pow10 * d; + } +}); + + +// @factory L.control.scale(options?: Control.Scale options) +// Creates an scale control with the given options. +var scale = function (options) { + return new Scale(options); +}; + +/* + * @class Control.Attribution + * @aka L.Control.Attribution + * @inherits Control + * + * The attribution control allows you to display attribution data in a small text box on a map. It is put on the map by default unless you set its [`attributionControl` option](#map-attributioncontrol) to `false`, and it fetches attribution texts from layers with the [`getAttribution` method](#layer-getattribution) automatically. Extends Control. + */ + +var Attribution = Control.extend({ + // @section + // @aka Control.Attribution options + options: { + position: 'bottomright', + + // @option prefix: String = 'Leaflet' + // The HTML text shown before the attributions. Pass `false` to disable. + prefix: 'Leaflet' + }, + + initialize: function (options) { + setOptions(this, options); + + this._attributions = {}; + }, + + onAdd: function (map) { + map.attributionControl = this; + this._container = create$1('div', 'leaflet-control-attribution'); + disableClickPropagation(this._container); + + // TODO ugly, refactor + for (var i in map._layers) { + if (map._layers[i].getAttribution) { + this.addAttribution(map._layers[i].getAttribution()); + } + } + + this._update(); + + return this._container; + }, + + // @method setPrefix(prefix: String): this + // Sets the text before the attributions. + setPrefix: function (prefix) { + this.options.prefix = prefix; + this._update(); + return this; + }, + + // @method addAttribution(text: String): this + // Adds an attribution text (e.g. `'Vector data © Mapbox'`). + addAttribution: function (text) { + if (!text) { return this; } + + if (!this._attributions[text]) { + this._attributions[text] = 0; + } + this._attributions[text]++; + + this._update(); + + return this; + }, + + // @method removeAttribution(text: String): this + // Removes an attribution text. + removeAttribution: function (text) { + if (!text) { return this; } + + if (this._attributions[text]) { + this._attributions[text]--; + this._update(); + } + + return this; + }, + + _update: function () { + if (!this._map) { return; } + + var attribs = []; + + for (var i in this._attributions) { + if (this._attributions[i]) { + attribs.push(i); + } + } + + var prefixAndAttribs = []; + + if (this.options.prefix) { + prefixAndAttribs.push(this.options.prefix); + } + if (attribs.length) { + prefixAndAttribs.push(attribs.join(', ')); + } + + this._container.innerHTML = prefixAndAttribs.join(' | '); + } +}); + +// @namespace Map +// @section Control options +// @option attributionControl: Boolean = true +// Whether a [attribution control](#control-attribution) is added to the map by default. +Map.mergeOptions({ + attributionControl: true +}); + +Map.addInitHook(function () { + if (this.options.attributionControl) { + new Attribution().addTo(this); + } +}); + +// @namespace Control.Attribution +// @factory L.control.attribution(options: Control.Attribution options) +// Creates an attribution control. +var attribution = function (options) { + return new Attribution(options); +}; + +Control.Layers = Layers; +Control.Zoom = Zoom; +Control.Scale = Scale; +Control.Attribution = Attribution; + +control.layers = layers; +control.zoom = zoom; +control.scale = scale; +control.attribution = attribution; + +/* + L.Handler is a base class for handler classes that are used internally to inject + interaction features like dragging to classes like Map and Marker. +*/ + +// @class Handler +// @aka L.Handler +// Abstract class for map interaction handlers + +var Handler = Class.extend({ + initialize: function (map) { + this._map = map; + }, + + // @method enable(): this + // Enables the handler + enable: function () { + if (this._enabled) { return this; } + + this._enabled = true; + this.addHooks(); + return this; + }, + + // @method disable(): this + // Disables the handler + disable: function () { + if (!this._enabled) { return this; } + + this._enabled = false; + this.removeHooks(); + return this; + }, + + // @method enabled(): Boolean + // Returns `true` if the handler is enabled + enabled: function () { + return !!this._enabled; + } + + // @section Extension methods + // Classes inheriting from `Handler` must implement the two following methods: + // @method addHooks() + // Called when the handler is enabled, should add event hooks. + // @method removeHooks() + // Called when the handler is disabled, should remove the event hooks added previously. +}); + +// @section There is static function which can be called without instantiating L.Handler: +// @function addTo(map: Map, name: String): this +// Adds a new Handler to the given map with the given name. +Handler.addTo = function (map, name) { + map.addHandler(name, this); + return this; +}; + +var Mixin = {Events: Events}; + +/* + * @class Draggable + * @aka L.Draggable + * @inherits Evented + * + * A class for making DOM elements draggable (including touch support). + * Used internally for map and marker dragging. Only works for elements + * that were positioned with [`L.DomUtil.setPosition`](#domutil-setposition). + * + * @example + * ```js + * var draggable = new L.Draggable(elementToDrag); + * draggable.enable(); + * ``` + */ + +var START = touch ? 'touchstart mousedown' : 'mousedown'; +var END = { + mousedown: 'mouseup', + touchstart: 'touchend', + pointerdown: 'touchend', + MSPointerDown: 'touchend' +}; +var MOVE = { + mousedown: 'mousemove', + touchstart: 'touchmove', + pointerdown: 'touchmove', + MSPointerDown: 'touchmove' +}; + + +var Draggable = Evented.extend({ + + options: { + // @section + // @aka Draggable options + // @option clickTolerance: Number = 3 + // The max number of pixels a user can shift the mouse pointer during a click + // for it to be considered a valid click (as opposed to a mouse drag). + clickTolerance: 3 + }, + + // @constructor L.Draggable(el: HTMLElement, dragHandle?: HTMLElement, preventOutline?: Boolean, options?: Draggable options) + // Creates a `Draggable` object for moving `el` when you start dragging the `dragHandle` element (equals `el` itself by default). + initialize: function (element, dragStartTarget, preventOutline$$1, options) { + setOptions(this, options); + + this._element = element; + this._dragStartTarget = dragStartTarget || element; + this._preventOutline = preventOutline$$1; + }, + + // @method enable() + // Enables the dragging ability + enable: function () { + if (this._enabled) { return; } + + on(this._dragStartTarget, START, this._onDown, this); + + this._enabled = true; + }, + + // @method disable() + // Disables the dragging ability + disable: function () { + if (!this._enabled) { return; } + + // If we're currently dragging this draggable, + // disabling it counts as first ending the drag. + if (Draggable._dragging === this) { + this.finishDrag(); + } + + off(this._dragStartTarget, START, this._onDown, this); + + this._enabled = false; + this._moved = false; + }, + + _onDown: function (e) { + // Ignore simulated events, since we handle both touch and + // mouse explicitly; otherwise we risk getting duplicates of + // touch events, see #4315. + // Also ignore the event if disabled; this happens in IE11 + // under some circumstances, see #3666. + if (e._simulated || !this._enabled) { return; } + + this._moved = false; + + if (hasClass(this._element, 'leaflet-zoom-anim')) { return; } + + if (Draggable._dragging || e.shiftKey || ((e.which !== 1) && (e.button !== 1) && !e.touches)) { return; } + Draggable._dragging = this; // Prevent dragging multiple objects at once. + + if (this._preventOutline) { + preventOutline(this._element); + } + + disableImageDrag(); + disableTextSelection(); + + if (this._moving) { return; } + + // @event down: Event + // Fired when a drag is about to start. + this.fire('down'); + + var first = e.touches ? e.touches[0] : e, + sizedParent = getSizedParentNode(this._element); + + this._startPoint = new Point(first.clientX, first.clientY); + + // Cache the scale, so that we can continuously compensate for it during drag (_onMove). + this._parentScale = getScale(sizedParent); + + on(document, MOVE[e.type], this._onMove, this); + on(document, END[e.type], this._onUp, this); + }, + + _onMove: function (e) { + // Ignore simulated events, since we handle both touch and + // mouse explicitly; otherwise we risk getting duplicates of + // touch events, see #4315. + // Also ignore the event if disabled; this happens in IE11 + // under some circumstances, see #3666. + if (e._simulated || !this._enabled) { return; } + + if (e.touches && e.touches.length > 1) { + this._moved = true; + return; + } + + var first = (e.touches && e.touches.length === 1 ? e.touches[0] : e), + offset = new Point(first.clientX, first.clientY)._subtract(this._startPoint); + + if (!offset.x && !offset.y) { return; } + if (Math.abs(offset.x) + Math.abs(offset.y) < this.options.clickTolerance) { return; } + + // We assume that the parent container's position, border and scale do not change for the duration of the drag. + // Therefore there is no need to account for the position and border (they are eliminated by the subtraction) + // and we can use the cached value for the scale. + offset.x /= this._parentScale.x; + offset.y /= this._parentScale.y; + + preventDefault(e); + + if (!this._moved) { + // @event dragstart: Event + // Fired when a drag starts + this.fire('dragstart'); + + this._moved = true; + this._startPos = getPosition(this._element).subtract(offset); + + addClass(document.body, 'leaflet-dragging'); + + this._lastTarget = e.target || e.srcElement; + // IE and Edge do not give the element, so fetch it + // if necessary + if ((window.SVGElementInstance) && (this._lastTarget instanceof SVGElementInstance)) { + this._lastTarget = this._lastTarget.correspondingUseElement; + } + addClass(this._lastTarget, 'leaflet-drag-target'); + } + + this._newPos = this._startPos.add(offset); + this._moving = true; + + cancelAnimFrame(this._animRequest); + this._lastEvent = e; + this._animRequest = requestAnimFrame(this._updatePosition, this, true); + }, + + _updatePosition: function () { + var e = {originalEvent: this._lastEvent}; + + // @event predrag: Event + // Fired continuously during dragging *before* each corresponding + // update of the element's position. + this.fire('predrag', e); + setPosition(this._element, this._newPos); + + // @event drag: Event + // Fired continuously during dragging. + this.fire('drag', e); + }, + + _onUp: function (e) { + // Ignore simulated events, since we handle both touch and + // mouse explicitly; otherwise we risk getting duplicates of + // touch events, see #4315. + // Also ignore the event if disabled; this happens in IE11 + // under some circumstances, see #3666. + if (e._simulated || !this._enabled) { return; } + this.finishDrag(); + }, + + finishDrag: function () { + removeClass(document.body, 'leaflet-dragging'); + + if (this._lastTarget) { + removeClass(this._lastTarget, 'leaflet-drag-target'); + this._lastTarget = null; + } + + for (var i in MOVE) { + off(document, MOVE[i], this._onMove, this); + off(document, END[i], this._onUp, this); + } + + enableImageDrag(); + enableTextSelection(); + + if (this._moved && this._moving) { + // ensure drag is not fired after dragend + cancelAnimFrame(this._animRequest); + + // @event dragend: DragEndEvent + // Fired when the drag ends. + this.fire('dragend', { + distance: this._newPos.distanceTo(this._startPos) + }); + } + + this._moving = false; + Draggable._dragging = false; + } + +}); + +/* + * @namespace LineUtil + * + * Various utility functions for polyline points processing, used by Leaflet internally to make polylines lightning-fast. + */ + +// Simplify polyline with vertex reduction and Douglas-Peucker simplification. +// Improves rendering performance dramatically by lessening the number of points to draw. + +// @function simplify(points: Point[], tolerance: Number): Point[] +// Dramatically reduces the number of points in a polyline while retaining +// its shape and returns a new array of simplified points, using the +// [Douglas-Peucker algorithm](http://en.wikipedia.org/wiki/Douglas-Peucker_algorithm). +// Used for a huge performance boost when processing/displaying Leaflet polylines for +// each zoom level and also reducing visual noise. tolerance affects the amount of +// simplification (lesser value means higher quality but slower and with more points). +// Also released as a separated micro-library [Simplify.js](http://mourner.github.com/simplify-js/). +function simplify(points, tolerance) { + if (!tolerance || !points.length) { + return points.slice(); + } + + var sqTolerance = tolerance * tolerance; + + // stage 1: vertex reduction + points = _reducePoints(points, sqTolerance); + + // stage 2: Douglas-Peucker simplification + points = _simplifyDP(points, sqTolerance); + + return points; +} + +// @function pointToSegmentDistance(p: Point, p1: Point, p2: Point): Number +// Returns the distance between point `p` and segment `p1` to `p2`. +function pointToSegmentDistance(p, p1, p2) { + return Math.sqrt(_sqClosestPointOnSegment(p, p1, p2, true)); +} + +// @function closestPointOnSegment(p: Point, p1: Point, p2: Point): Number +// Returns the closest point from a point `p` on a segment `p1` to `p2`. +function closestPointOnSegment(p, p1, p2) { + return _sqClosestPointOnSegment(p, p1, p2); +} + +// Douglas-Peucker simplification, see http://en.wikipedia.org/wiki/Douglas-Peucker_algorithm +function _simplifyDP(points, sqTolerance) { + + var len = points.length, + ArrayConstructor = typeof Uint8Array !== undefined + '' ? Uint8Array : Array, + markers = new ArrayConstructor(len); + + markers[0] = markers[len - 1] = 1; + + _simplifyDPStep(points, markers, sqTolerance, 0, len - 1); + + var i, + newPoints = []; + + for (i = 0; i < len; i++) { + if (markers[i]) { + newPoints.push(points[i]); + } + } + + return newPoints; +} + +function _simplifyDPStep(points, markers, sqTolerance, first, last) { + + var maxSqDist = 0, + index, i, sqDist; + + for (i = first + 1; i <= last - 1; i++) { + sqDist = _sqClosestPointOnSegment(points[i], points[first], points[last], true); + + if (sqDist > maxSqDist) { + index = i; + maxSqDist = sqDist; + } + } + + if (maxSqDist > sqTolerance) { + markers[index] = 1; + + _simplifyDPStep(points, markers, sqTolerance, first, index); + _simplifyDPStep(points, markers, sqTolerance, index, last); + } +} + +// reduce points that are too close to each other to a single point +function _reducePoints(points, sqTolerance) { + var reducedPoints = [points[0]]; + + for (var i = 1, prev = 0, len = points.length; i < len; i++) { + if (_sqDist(points[i], points[prev]) > sqTolerance) { + reducedPoints.push(points[i]); + prev = i; + } + } + if (prev < len - 1) { + reducedPoints.push(points[len - 1]); + } + return reducedPoints; +} + +var _lastCode; + +// @function clipSegment(a: Point, b: Point, bounds: Bounds, useLastCode?: Boolean, round?: Boolean): Point[]|Boolean +// Clips the segment a to b by rectangular bounds with the +// [Cohen-Sutherland algorithm](https://en.wikipedia.org/wiki/Cohen%E2%80%93Sutherland_algorithm) +// (modifying the segment points directly!). Used by Leaflet to only show polyline +// points that are on the screen or near, increasing performance. +function clipSegment(a, b, bounds, useLastCode, round) { + var codeA = useLastCode ? _lastCode : _getBitCode(a, bounds), + codeB = _getBitCode(b, bounds), + + codeOut, p, newCode; + + // save 2nd code to avoid calculating it on the next segment + _lastCode = codeB; + + while (true) { + // if a,b is inside the clip window (trivial accept) + if (!(codeA | codeB)) { + return [a, b]; + } + + // if a,b is outside the clip window (trivial reject) + if (codeA & codeB) { + return false; + } + + // other cases + codeOut = codeA || codeB; + p = _getEdgeIntersection(a, b, codeOut, bounds, round); + newCode = _getBitCode(p, bounds); + + if (codeOut === codeA) { + a = p; + codeA = newCode; + } else { + b = p; + codeB = newCode; + } + } +} + +function _getEdgeIntersection(a, b, code, bounds, round) { + var dx = b.x - a.x, + dy = b.y - a.y, + min = bounds.min, + max = bounds.max, + x, y; + + if (code & 8) { // top + x = a.x + dx * (max.y - a.y) / dy; + y = max.y; + + } else if (code & 4) { // bottom + x = a.x + dx * (min.y - a.y) / dy; + y = min.y; + + } else if (code & 2) { // right + x = max.x; + y = a.y + dy * (max.x - a.x) / dx; + + } else if (code & 1) { // left + x = min.x; + y = a.y + dy * (min.x - a.x) / dx; + } + + return new Point(x, y, round); +} + +function _getBitCode(p, bounds) { + var code = 0; + + if (p.x < bounds.min.x) { // left + code |= 1; + } else if (p.x > bounds.max.x) { // right + code |= 2; + } + + if (p.y < bounds.min.y) { // bottom + code |= 4; + } else if (p.y > bounds.max.y) { // top + code |= 8; + } + + return code; +} + +// square distance (to avoid unnecessary Math.sqrt calls) +function _sqDist(p1, p2) { + var dx = p2.x - p1.x, + dy = p2.y - p1.y; + return dx * dx + dy * dy; +} + +// return closest point on segment or distance to that point +function _sqClosestPointOnSegment(p, p1, p2, sqDist) { + var x = p1.x, + y = p1.y, + dx = p2.x - x, + dy = p2.y - y, + dot = dx * dx + dy * dy, + t; + + if (dot > 0) { + t = ((p.x - x) * dx + (p.y - y) * dy) / dot; + + if (t > 1) { + x = p2.x; + y = p2.y; + } else if (t > 0) { + x += dx * t; + y += dy * t; + } + } + + dx = p.x - x; + dy = p.y - y; + + return sqDist ? dx * dx + dy * dy : new Point(x, y); +} + + +// @function isFlat(latlngs: LatLng[]): Boolean +// Returns true if `latlngs` is a flat array, false is nested. +function isFlat(latlngs) { + return !isArray(latlngs[0]) || (typeof latlngs[0][0] !== 'object' && typeof latlngs[0][0] !== 'undefined'); +} + +function _flat(latlngs) { + console.warn('Deprecated use of _flat, please use L.LineUtil.isFlat instead.'); + return isFlat(latlngs); +} + + +var LineUtil = (Object.freeze || Object)({ + simplify: simplify, + pointToSegmentDistance: pointToSegmentDistance, + closestPointOnSegment: closestPointOnSegment, + clipSegment: clipSegment, + _getEdgeIntersection: _getEdgeIntersection, + _getBitCode: _getBitCode, + _sqClosestPointOnSegment: _sqClosestPointOnSegment, + isFlat: isFlat, + _flat: _flat +}); + +/* + * @namespace PolyUtil + * Various utility functions for polygon geometries. + */ + +/* @function clipPolygon(points: Point[], bounds: Bounds, round?: Boolean): Point[] + * Clips the polygon geometry defined by the given `points` by the given bounds (using the [Sutherland-Hodgman algorithm](https://en.wikipedia.org/wiki/Sutherland%E2%80%93Hodgman_algorithm)). + * Used by Leaflet to only show polygon points that are on the screen or near, increasing + * performance. Note that polygon points needs different algorithm for clipping + * than polyline, so there's a separate method for it. + */ +function clipPolygon(points, bounds, round) { + var clippedPoints, + edges = [1, 4, 2, 8], + i, j, k, + a, b, + len, edge, p; + + for (i = 0, len = points.length; i < len; i++) { + points[i]._code = _getBitCode(points[i], bounds); + } + + // for each edge (left, bottom, right, top) + for (k = 0; k < 4; k++) { + edge = edges[k]; + clippedPoints = []; + + for (i = 0, len = points.length, j = len - 1; i < len; j = i++) { + a = points[i]; + b = points[j]; + + // if a is inside the clip window + if (!(a._code & edge)) { + // if b is outside the clip window (a->b goes out of screen) + if (b._code & edge) { + p = _getEdgeIntersection(b, a, edge, bounds, round); + p._code = _getBitCode(p, bounds); + clippedPoints.push(p); + } + clippedPoints.push(a); + + // else if b is inside the clip window (a->b enters the screen) + } else if (!(b._code & edge)) { + p = _getEdgeIntersection(b, a, edge, bounds, round); + p._code = _getBitCode(p, bounds); + clippedPoints.push(p); + } + } + points = clippedPoints; + } + + return points; +} + + +var PolyUtil = (Object.freeze || Object)({ + clipPolygon: clipPolygon +}); + +/* + * @namespace Projection + * @section + * Leaflet comes with a set of already defined Projections out of the box: + * + * @projection L.Projection.LonLat + * + * Equirectangular, or Plate Carree projection — the most simple projection, + * mostly used by GIS enthusiasts. Directly maps `x` as longitude, and `y` as + * latitude. Also suitable for flat worlds, e.g. game maps. Used by the + * `EPSG:4326` and `Simple` CRS. + */ + +var LonLat = { + project: function (latlng) { + return new Point(latlng.lng, latlng.lat); + }, + + unproject: function (point) { + return new LatLng(point.y, point.x); + }, + + bounds: new Bounds([-180, -90], [180, 90]) +}; + +/* + * @namespace Projection + * @projection L.Projection.Mercator + * + * Elliptical Mercator projection — more complex than Spherical Mercator. Takes into account that Earth is a geoid, not a perfect sphere. Used by the EPSG:3395 CRS. + */ + +var Mercator = { + R: 6378137, + R_MINOR: 6356752.314245179, + + bounds: new Bounds([-20037508.34279, -15496570.73972], [20037508.34279, 18764656.23138]), + + project: function (latlng) { + var d = Math.PI / 180, + r = this.R, + y = latlng.lat * d, + tmp = this.R_MINOR / r, + e = Math.sqrt(1 - tmp * tmp), + con = e * Math.sin(y); + + var ts = Math.tan(Math.PI / 4 - y / 2) / Math.pow((1 - con) / (1 + con), e / 2); + y = -r * Math.log(Math.max(ts, 1E-10)); + + return new Point(latlng.lng * d * r, y); + }, + + unproject: function (point) { + var d = 180 / Math.PI, + r = this.R, + tmp = this.R_MINOR / r, + e = Math.sqrt(1 - tmp * tmp), + ts = Math.exp(-point.y / r), + phi = Math.PI / 2 - 2 * Math.atan(ts); + + for (var i = 0, dphi = 0.1, con; i < 15 && Math.abs(dphi) > 1e-7; i++) { + con = e * Math.sin(phi); + con = Math.pow((1 - con) / (1 + con), e / 2); + dphi = Math.PI / 2 - 2 * Math.atan(ts * con) - phi; + phi += dphi; + } + + return new LatLng(phi * d, point.x * d / r); + } +}; + +/* + * @class Projection + + * An object with methods for projecting geographical coordinates of the world onto + * a flat surface (and back). See [Map projection](http://en.wikipedia.org/wiki/Map_projection). + + * @property bounds: Bounds + * The bounds (specified in CRS units) where the projection is valid + + * @method project(latlng: LatLng): Point + * Projects geographical coordinates into a 2D point. + * Only accepts actual `L.LatLng` instances, not arrays. + + * @method unproject(point: Point): LatLng + * The inverse of `project`. Projects a 2D point into a geographical location. + * Only accepts actual `L.Point` instances, not arrays. + + * Note that the projection instances do not inherit from Leafet's `Class` object, + * and can't be instantiated. Also, new classes can't inherit from them, + * and methods can't be added to them with the `include` function. + + */ + + + + +var index = (Object.freeze || Object)({ + LonLat: LonLat, + Mercator: Mercator, + SphericalMercator: SphericalMercator +}); + +/* + * @namespace CRS + * @crs L.CRS.EPSG3395 + * + * Rarely used by some commercial tile providers. Uses Elliptical Mercator projection. + */ +var EPSG3395 = extend({}, Earth, { + code: 'EPSG:3395', + projection: Mercator, + + transformation: (function () { + var scale = 0.5 / (Math.PI * Mercator.R); + return toTransformation(scale, 0.5, -scale, 0.5); + }()) +}); + +/* + * @namespace CRS + * @crs L.CRS.EPSG4326 + * + * A common CRS among GIS enthusiasts. Uses simple Equirectangular projection. + * + * Leaflet 1.0.x complies with the [TMS coordinate scheme for EPSG:4326](https://wiki.osgeo.org/wiki/Tile_Map_Service_Specification#global-geodetic), + * which is a breaking change from 0.7.x behaviour. If you are using a `TileLayer` + * with this CRS, ensure that there are two 256x256 pixel tiles covering the + * whole earth at zoom level zero, and that the tile coordinate origin is (-180,+90), + * or (-180,-90) for `TileLayer`s with [the `tms` option](#tilelayer-tms) set. + */ + +var EPSG4326 = extend({}, Earth, { + code: 'EPSG:4326', + projection: LonLat, + transformation: toTransformation(1 / 180, 1, -1 / 180, 0.5) +}); + +/* + * @namespace CRS + * @crs L.CRS.Simple + * + * A simple CRS that maps longitude and latitude into `x` and `y` directly. + * May be used for maps of flat surfaces (e.g. game maps). Note that the `y` + * axis should still be inverted (going from bottom to top). `distance()` returns + * simple euclidean distance. + */ + +var Simple = extend({}, CRS, { + projection: LonLat, + transformation: toTransformation(1, 0, -1, 0), + + scale: function (zoom) { + return Math.pow(2, zoom); + }, + + zoom: function (scale) { + return Math.log(scale) / Math.LN2; + }, + + distance: function (latlng1, latlng2) { + var dx = latlng2.lng - latlng1.lng, + dy = latlng2.lat - latlng1.lat; + + return Math.sqrt(dx * dx + dy * dy); + }, + + infinite: true +}); + +CRS.Earth = Earth; +CRS.EPSG3395 = EPSG3395; +CRS.EPSG3857 = EPSG3857; +CRS.EPSG900913 = EPSG900913; +CRS.EPSG4326 = EPSG4326; +CRS.Simple = Simple; + +/* + * @class Layer + * @inherits Evented + * @aka L.Layer + * @aka ILayer + * + * A set of methods from the Layer base class that all Leaflet layers use. + * Inherits all methods, options and events from `L.Evented`. + * + * @example + * + * ```js + * var layer = L.Marker(latlng).addTo(map); + * layer.addTo(map); + * layer.remove(); + * ``` + * + * @event add: Event + * Fired after the layer is added to a map + * + * @event remove: Event + * Fired after the layer is removed from a map + */ + + +var Layer = Evented.extend({ + + // Classes extending `L.Layer` will inherit the following options: + options: { + // @option pane: String = 'overlayPane' + // By default the layer will be added to the map's [overlay pane](#map-overlaypane). Overriding this option will cause the layer to be placed on another pane by default. + pane: 'overlayPane', + + // @option attribution: String = null + // String to be shown in the attribution control, e.g. "© OpenStreetMap contributors". It describes the layer data and is often a legal obligation towards copyright holders and tile providers. + attribution: null, + + bubblingMouseEvents: true + }, + + /* @section + * Classes extending `L.Layer` will inherit the following methods: + * + * @method addTo(map: Map|LayerGroup): this + * Adds the layer to the given map or layer group. + */ + addTo: function (map) { + map.addLayer(this); + return this; + }, + + // @method remove: this + // Removes the layer from the map it is currently active on. + remove: function () { + return this.removeFrom(this._map || this._mapToAdd); + }, + + // @method removeFrom(map: Map): this + // Removes the layer from the given map + removeFrom: function (obj) { + if (obj) { + obj.removeLayer(this); + } + return this; + }, + + // @method getPane(name? : String): HTMLElement + // Returns the `HTMLElement` representing the named pane on the map. If `name` is omitted, returns the pane for this layer. + getPane: function (name) { + return this._map.getPane(name ? (this.options[name] || name) : this.options.pane); + }, + + addInteractiveTarget: function (targetEl) { + this._map._targets[stamp(targetEl)] = this; + return this; + }, + + removeInteractiveTarget: function (targetEl) { + delete this._map._targets[stamp(targetEl)]; + return this; + }, + + // @method getAttribution: String + // Used by the `attribution control`, returns the [attribution option](#gridlayer-attribution). + getAttribution: function () { + return this.options.attribution; + }, + + _layerAdd: function (e) { + var map = e.target; + + // check in case layer gets added and then removed before the map is ready + if (!map.hasLayer(this)) { return; } + + this._map = map; + this._zoomAnimated = map._zoomAnimated; + + if (this.getEvents) { + var events = this.getEvents(); + map.on(events, this); + this.once('remove', function () { + map.off(events, this); + }, this); + } + + this.onAdd(map); + + if (this.getAttribution && map.attributionControl) { + map.attributionControl.addAttribution(this.getAttribution()); + } + + this.fire('add'); + map.fire('layeradd', {layer: this}); + } +}); + +/* @section Extension methods + * @uninheritable + * + * Every layer should extend from `L.Layer` and (re-)implement the following methods. + * + * @method onAdd(map: Map): this + * Should contain code that creates DOM elements for the layer, adds them to `map panes` where they should belong and puts listeners on relevant map events. Called on [`map.addLayer(layer)`](#map-addlayer). + * + * @method onRemove(map: Map): this + * Should contain all clean up code that removes the layer's elements from the DOM and removes listeners previously added in [`onAdd`](#layer-onadd). Called on [`map.removeLayer(layer)`](#map-removelayer). + * + * @method getEvents(): Object + * This optional method should return an object like `{ viewreset: this._reset }` for [`addEventListener`](#evented-addeventlistener). The event handlers in this object will be automatically added and removed from the map with your layer. + * + * @method getAttribution(): String + * This optional method should return a string containing HTML to be shown on the `Attribution control` whenever the layer is visible. + * + * @method beforeAdd(map: Map): this + * Optional method. Called on [`map.addLayer(layer)`](#map-addlayer), before the layer is added to the map, before events are initialized, without waiting until the map is in a usable state. Use for early initialization only. + */ + + +/* @namespace Map + * @section Layer events + * + * @event layeradd: LayerEvent + * Fired when a new layer is added to the map. + * + * @event layerremove: LayerEvent + * Fired when some layer is removed from the map + * + * @section Methods for Layers and Controls + */ +Map.include({ + // @method addLayer(layer: Layer): this + // Adds the given layer to the map + addLayer: function (layer) { + if (!layer._layerAdd) { + throw new Error('The provided object is not a Layer.'); + } + + var id = stamp(layer); + if (this._layers[id]) { return this; } + this._layers[id] = layer; + + layer._mapToAdd = this; + + if (layer.beforeAdd) { + layer.beforeAdd(this); + } + + this.whenReady(layer._layerAdd, layer); + + return this; + }, + + // @method removeLayer(layer: Layer): this + // Removes the given layer from the map. + removeLayer: function (layer) { + var id = stamp(layer); + + if (!this._layers[id]) { return this; } + + if (this._loaded) { + layer.onRemove(this); + } + + if (layer.getAttribution && this.attributionControl) { + this.attributionControl.removeAttribution(layer.getAttribution()); + } + + delete this._layers[id]; + + if (this._loaded) { + this.fire('layerremove', {layer: layer}); + layer.fire('remove'); + } + + layer._map = layer._mapToAdd = null; + + return this; + }, + + // @method hasLayer(layer: Layer): Boolean + // Returns `true` if the given layer is currently added to the map + hasLayer: function (layer) { + return !!layer && (stamp(layer) in this._layers); + }, + + /* @method eachLayer(fn: Function, context?: Object): this + * Iterates over the layers of the map, optionally specifying context of the iterator function. + * ``` + * map.eachLayer(function(layer){ + * layer.bindPopup('Hello'); + * }); + * ``` + */ + eachLayer: function (method, context) { + for (var i in this._layers) { + method.call(context, this._layers[i]); + } + return this; + }, + + _addLayers: function (layers) { + layers = layers ? (isArray(layers) ? layers : [layers]) : []; + + for (var i = 0, len = layers.length; i < len; i++) { + this.addLayer(layers[i]); + } + }, + + _addZoomLimit: function (layer) { + if (isNaN(layer.options.maxZoom) || !isNaN(layer.options.minZoom)) { + this._zoomBoundLayers[stamp(layer)] = layer; + this._updateZoomLevels(); + } + }, + + _removeZoomLimit: function (layer) { + var id = stamp(layer); + + if (this._zoomBoundLayers[id]) { + delete this._zoomBoundLayers[id]; + this._updateZoomLevels(); + } + }, + + _updateZoomLevels: function () { + var minZoom = Infinity, + maxZoom = -Infinity, + oldZoomSpan = this._getZoomSpan(); + + for (var i in this._zoomBoundLayers) { + var options = this._zoomBoundLayers[i].options; + + minZoom = options.minZoom === undefined ? minZoom : Math.min(minZoom, options.minZoom); + maxZoom = options.maxZoom === undefined ? maxZoom : Math.max(maxZoom, options.maxZoom); + } + + this._layersMaxZoom = maxZoom === -Infinity ? undefined : maxZoom; + this._layersMinZoom = minZoom === Infinity ? undefined : minZoom; + + // @section Map state change events + // @event zoomlevelschange: Event + // Fired when the number of zoomlevels on the map is changed due + // to adding or removing a layer. + if (oldZoomSpan !== this._getZoomSpan()) { + this.fire('zoomlevelschange'); + } + + if (this.options.maxZoom === undefined && this._layersMaxZoom && this.getZoom() > this._layersMaxZoom) { + this.setZoom(this._layersMaxZoom); + } + if (this.options.minZoom === undefined && this._layersMinZoom && this.getZoom() < this._layersMinZoom) { + this.setZoom(this._layersMinZoom); + } + } +}); + +/* + * @class LayerGroup + * @aka L.LayerGroup + * @inherits Layer + * + * Used to group several layers and handle them as one. If you add it to the map, + * any layers added or removed from the group will be added/removed on the map as + * well. Extends `Layer`. + * + * @example + * + * ```js + * L.layerGroup([marker1, marker2]) + * .addLayer(polyline) + * .addTo(map); + * ``` + */ + +var LayerGroup = Layer.extend({ + + initialize: function (layers, options) { + setOptions(this, options); + + this._layers = {}; + + var i, len; + + if (layers) { + for (i = 0, len = layers.length; i < len; i++) { + this.addLayer(layers[i]); + } + } + }, + + // @method addLayer(layer: Layer): this + // Adds the given layer to the group. + addLayer: function (layer) { + var id = this.getLayerId(layer); + + this._layers[id] = layer; + + if (this._map) { + this._map.addLayer(layer); + } + + return this; + }, + + // @method removeLayer(layer: Layer): this + // Removes the given layer from the group. + // @alternative + // @method removeLayer(id: Number): this + // Removes the layer with the given internal ID from the group. + removeLayer: function (layer) { + var id = layer in this._layers ? layer : this.getLayerId(layer); + + if (this._map && this._layers[id]) { + this._map.removeLayer(this._layers[id]); + } + + delete this._layers[id]; + + return this; + }, + + // @method hasLayer(layer: Layer): Boolean + // Returns `true` if the given layer is currently added to the group. + // @alternative + // @method hasLayer(id: Number): Boolean + // Returns `true` if the given internal ID is currently added to the group. + hasLayer: function (layer) { + return !!layer && (layer in this._layers || this.getLayerId(layer) in this._layers); + }, + + // @method clearLayers(): this + // Removes all the layers from the group. + clearLayers: function () { + return this.eachLayer(this.removeLayer, this); + }, + + // @method invoke(methodName: String, …): this + // Calls `methodName` on every layer contained in this group, passing any + // additional parameters. Has no effect if the layers contained do not + // implement `methodName`. + invoke: function (methodName) { + var args = Array.prototype.slice.call(arguments, 1), + i, layer; + + for (i in this._layers) { + layer = this._layers[i]; + + if (layer[methodName]) { + layer[methodName].apply(layer, args); + } + } + + return this; + }, + + onAdd: function (map) { + this.eachLayer(map.addLayer, map); + }, + + onRemove: function (map) { + this.eachLayer(map.removeLayer, map); + }, + + // @method eachLayer(fn: Function, context?: Object): this + // Iterates over the layers of the group, optionally specifying context of the iterator function. + // ```js + // group.eachLayer(function (layer) { + // layer.bindPopup('Hello'); + // }); + // ``` + eachLayer: function (method, context) { + for (var i in this._layers) { + method.call(context, this._layers[i]); + } + return this; + }, + + // @method getLayer(id: Number): Layer + // Returns the layer with the given internal ID. + getLayer: function (id) { + return this._layers[id]; + }, + + // @method getLayers(): Layer[] + // Returns an array of all the layers added to the group. + getLayers: function () { + var layers = []; + this.eachLayer(layers.push, layers); + return layers; + }, + + // @method setZIndex(zIndex: Number): this + // Calls `setZIndex` on every layer contained in this group, passing the z-index. + setZIndex: function (zIndex) { + return this.invoke('setZIndex', zIndex); + }, + + // @method getLayerId(layer: Layer): Number + // Returns the internal ID for a layer + getLayerId: function (layer) { + return stamp(layer); + } +}); + + +// @factory L.layerGroup(layers?: Layer[], options?: Object) +// Create a layer group, optionally given an initial set of layers and an `options` object. +var layerGroup = function (layers, options) { + return new LayerGroup(layers, options); +}; + +/* + * @class FeatureGroup + * @aka L.FeatureGroup + * @inherits LayerGroup + * + * Extended `LayerGroup` that makes it easier to do the same thing to all its member layers: + * * [`bindPopup`](#layer-bindpopup) binds a popup to all of the layers at once (likewise with [`bindTooltip`](#layer-bindtooltip)) + * * Events are propagated to the `FeatureGroup`, so if the group has an event + * handler, it will handle events from any of the layers. This includes mouse events + * and custom events. + * * Has `layeradd` and `layerremove` events + * + * @example + * + * ```js + * L.featureGroup([marker1, marker2, polyline]) + * .bindPopup('Hello world!') + * .on('click', function() { alert('Clicked on a member of the group!'); }) + * .addTo(map); + * ``` + */ + +var FeatureGroup = LayerGroup.extend({ + + addLayer: function (layer) { + if (this.hasLayer(layer)) { + return this; + } + + layer.addEventParent(this); + + LayerGroup.prototype.addLayer.call(this, layer); + + // @event layeradd: LayerEvent + // Fired when a layer is added to this `FeatureGroup` + return this.fire('layeradd', {layer: layer}); + }, + + removeLayer: function (layer) { + if (!this.hasLayer(layer)) { + return this; + } + if (layer in this._layers) { + layer = this._layers[layer]; + } + + layer.removeEventParent(this); + + LayerGroup.prototype.removeLayer.call(this, layer); + + // @event layerremove: LayerEvent + // Fired when a layer is removed from this `FeatureGroup` + return this.fire('layerremove', {layer: layer}); + }, + + // @method setStyle(style: Path options): this + // Sets the given path options to each layer of the group that has a `setStyle` method. + setStyle: function (style) { + return this.invoke('setStyle', style); + }, + + // @method bringToFront(): this + // Brings the layer group to the top of all other layers + bringToFront: function () { + return this.invoke('bringToFront'); + }, + + // @method bringToBack(): this + // Brings the layer group to the back of all other layers + bringToBack: function () { + return this.invoke('bringToBack'); + }, + + // @method getBounds(): LatLngBounds + // Returns the LatLngBounds of the Feature Group (created from bounds and coordinates of its children). + getBounds: function () { + var bounds = new LatLngBounds(); + + for (var id in this._layers) { + var layer = this._layers[id]; + bounds.extend(layer.getBounds ? layer.getBounds() : layer.getLatLng()); + } + return bounds; + } +}); + +// @factory L.featureGroup(layers: Layer[]) +// Create a feature group, optionally given an initial set of layers. +var featureGroup = function (layers) { + return new FeatureGroup(layers); +}; + +/* + * @class Icon + * @aka L.Icon + * + * Represents an icon to provide when creating a marker. + * + * @example + * + * ```js + * var myIcon = L.icon({ + * iconUrl: 'my-icon.png', + * iconRetinaUrl: 'my-icon@2x.png', + * iconSize: [38, 95], + * iconAnchor: [22, 94], + * popupAnchor: [-3, -76], + * shadowUrl: 'my-icon-shadow.png', + * shadowRetinaUrl: 'my-icon-shadow@2x.png', + * shadowSize: [68, 95], + * shadowAnchor: [22, 94] + * }); + * + * L.marker([50.505, 30.57], {icon: myIcon}).addTo(map); + * ``` + * + * `L.Icon.Default` extends `L.Icon` and is the blue icon Leaflet uses for markers by default. + * + */ + +var Icon = Class.extend({ + + /* @section + * @aka Icon options + * + * @option iconUrl: String = null + * **(required)** The URL to the icon image (absolute or relative to your script path). + * + * @option iconRetinaUrl: String = null + * The URL to a retina sized version of the icon image (absolute or relative to your + * script path). Used for Retina screen devices. + * + * @option iconSize: Point = null + * Size of the icon image in pixels. + * + * @option iconAnchor: Point = null + * The coordinates of the "tip" of the icon (relative to its top left corner). The icon + * will be aligned so that this point is at the marker's geographical location. Centered + * by default if size is specified, also can be set in CSS with negative margins. + * + * @option popupAnchor: Point = [0, 0] + * The coordinates of the point from which popups will "open", relative to the icon anchor. + * + * @option tooltipAnchor: Point = [0, 0] + * The coordinates of the point from which tooltips will "open", relative to the icon anchor. + * + * @option shadowUrl: String = null + * The URL to the icon shadow image. If not specified, no shadow image will be created. + * + * @option shadowRetinaUrl: String = null + * + * @option shadowSize: Point = null + * Size of the shadow image in pixels. + * + * @option shadowAnchor: Point = null + * The coordinates of the "tip" of the shadow (relative to its top left corner) (the same + * as iconAnchor if not specified). + * + * @option className: String = '' + * A custom class name to assign to both icon and shadow images. Empty by default. + */ + + options: { + popupAnchor: [0, 0], + tooltipAnchor: [0, 0] + }, + + initialize: function (options) { + setOptions(this, options); + }, + + // @method createIcon(oldIcon?: HTMLElement): HTMLElement + // Called internally when the icon has to be shown, returns a `` HTML element + // styled according to the options. + createIcon: function (oldIcon) { + return this._createIcon('icon', oldIcon); + }, + + // @method createShadow(oldIcon?: HTMLElement): HTMLElement + // As `createIcon`, but for the shadow beneath it. + createShadow: function (oldIcon) { + return this._createIcon('shadow', oldIcon); + }, + + _createIcon: function (name, oldIcon) { + var src = this._getIconUrl(name); + + if (!src) { + if (name === 'icon') { + throw new Error('iconUrl not set in Icon options (see the docs).'); + } + return null; + } + + var img = this._createImg(src, oldIcon && oldIcon.tagName === 'IMG' ? oldIcon : null); + this._setIconStyles(img, name); + + return img; + }, + + _setIconStyles: function (img, name) { + var options = this.options; + var sizeOption = options[name + 'Size']; + + if (typeof sizeOption === 'number') { + sizeOption = [sizeOption, sizeOption]; + } + + var size = toPoint(sizeOption), + anchor = toPoint(name === 'shadow' && options.shadowAnchor || options.iconAnchor || + size && size.divideBy(2, true)); + + img.className = 'leaflet-marker-' + name + ' ' + (options.className || ''); + + if (anchor) { + img.style.marginLeft = (-anchor.x) + 'px'; + img.style.marginTop = (-anchor.y) + 'px'; + } + + if (size) { + img.style.width = size.x + 'px'; + img.style.height = size.y + 'px'; + } + }, + + _createImg: function (src, el) { + el = el || document.createElement('img'); + el.src = src; + return el; + }, + + _getIconUrl: function (name) { + return retina && this.options[name + 'RetinaUrl'] || this.options[name + 'Url']; + } +}); + + +// @factory L.icon(options: Icon options) +// Creates an icon instance with the given options. +function icon(options) { + return new Icon(options); +} + +/* + * @miniclass Icon.Default (Icon) + * @aka L.Icon.Default + * @section + * + * A trivial subclass of `Icon`, represents the icon to use in `Marker`s when + * no icon is specified. Points to the blue marker image distributed with Leaflet + * releases. + * + * In order to customize the default icon, just change the properties of `L.Icon.Default.prototype.options` + * (which is a set of `Icon options`). + * + * If you want to _completely_ replace the default icon, override the + * `L.Marker.prototype.options.icon` with your own icon instead. + */ + +var IconDefault = Icon.extend({ + + options: { + iconUrl: 'marker-icon.png', + iconRetinaUrl: 'marker-icon-2x.png', + shadowUrl: 'marker-shadow.png', + iconSize: [25, 41], + iconAnchor: [12, 41], + popupAnchor: [1, -34], + tooltipAnchor: [16, -28], + shadowSize: [41, 41] + }, + + _getIconUrl: function (name) { + if (!IconDefault.imagePath) { // Deprecated, backwards-compatibility only + IconDefault.imagePath = this._detectIconPath(); + } + + // @option imagePath: String + // `Icon.Default` will try to auto-detect the location of the + // blue icon images. If you are placing these images in a non-standard + // way, set this option to point to the right path. + return (this.options.imagePath || IconDefault.imagePath) + Icon.prototype._getIconUrl.call(this, name); + }, + + _detectIconPath: function () { + var el = create$1('div', 'leaflet-default-icon-path', document.body); + var path = getStyle(el, 'background-image') || + getStyle(el, 'backgroundImage'); // IE8 + + document.body.removeChild(el); + + if (path === null || path.indexOf('url') !== 0) { + path = ''; + } else { + path = path.replace(/^url\(["']?/, '').replace(/marker-icon\.png["']?\)$/, ''); + } + + return path; + } +}); + +/* + * L.Handler.MarkerDrag is used internally by L.Marker to make the markers draggable. + */ + + +/* @namespace Marker + * @section Interaction handlers + * + * Interaction handlers are properties of a marker instance that allow you to control interaction behavior in runtime, enabling or disabling certain features such as dragging (see `Handler` methods). Example: + * + * ```js + * marker.dragging.disable(); + * ``` + * + * @property dragging: Handler + * Marker dragging handler (by both mouse and touch). Only valid when the marker is on the map (Otherwise set [`marker.options.draggable`](#marker-draggable)). + */ + +var MarkerDrag = Handler.extend({ + initialize: function (marker) { + this._marker = marker; + }, + + addHooks: function () { + var icon = this._marker._icon; + + if (!this._draggable) { + this._draggable = new Draggable(icon, icon, true); + } + + this._draggable.on({ + dragstart: this._onDragStart, + predrag: this._onPreDrag, + drag: this._onDrag, + dragend: this._onDragEnd + }, this).enable(); + + addClass(icon, 'leaflet-marker-draggable'); + }, + + removeHooks: function () { + this._draggable.off({ + dragstart: this._onDragStart, + predrag: this._onPreDrag, + drag: this._onDrag, + dragend: this._onDragEnd + }, this).disable(); + + if (this._marker._icon) { + removeClass(this._marker._icon, 'leaflet-marker-draggable'); + } + }, + + moved: function () { + return this._draggable && this._draggable._moved; + }, + + _adjustPan: function (e) { + var marker = this._marker, + map = marker._map, + speed = this._marker.options.autoPanSpeed, + padding = this._marker.options.autoPanPadding, + iconPos = getPosition(marker._icon), + bounds = map.getPixelBounds(), + origin = map.getPixelOrigin(); + + var panBounds = toBounds( + bounds.min._subtract(origin).add(padding), + bounds.max._subtract(origin).subtract(padding) + ); + + if (!panBounds.contains(iconPos)) { + // Compute incremental movement + var movement = toPoint( + (Math.max(panBounds.max.x, iconPos.x) - panBounds.max.x) / (bounds.max.x - panBounds.max.x) - + (Math.min(panBounds.min.x, iconPos.x) - panBounds.min.x) / (bounds.min.x - panBounds.min.x), + + (Math.max(panBounds.max.y, iconPos.y) - panBounds.max.y) / (bounds.max.y - panBounds.max.y) - + (Math.min(panBounds.min.y, iconPos.y) - panBounds.min.y) / (bounds.min.y - panBounds.min.y) + ).multiplyBy(speed); + + map.panBy(movement, {animate: false}); + + this._draggable._newPos._add(movement); + this._draggable._startPos._add(movement); + + setPosition(marker._icon, this._draggable._newPos); + this._onDrag(e); + + this._panRequest = requestAnimFrame(this._adjustPan.bind(this, e)); + } + }, + + _onDragStart: function () { + // @section Dragging events + // @event dragstart: Event + // Fired when the user starts dragging the marker. + + // @event movestart: Event + // Fired when the marker starts moving (because of dragging). + + this._oldLatLng = this._marker.getLatLng(); + this._marker + .closePopup() + .fire('movestart') + .fire('dragstart'); + }, + + _onPreDrag: function (e) { + if (this._marker.options.autoPan) { + cancelAnimFrame(this._panRequest); + this._panRequest = requestAnimFrame(this._adjustPan.bind(this, e)); + } + }, + + _onDrag: function (e) { + var marker = this._marker, + shadow = marker._shadow, + iconPos = getPosition(marker._icon), + latlng = marker._map.layerPointToLatLng(iconPos); + + // update shadow position + if (shadow) { + setPosition(shadow, iconPos); + } + + marker._latlng = latlng; + e.latlng = latlng; + e.oldLatLng = this._oldLatLng; + + // @event drag: Event + // Fired repeatedly while the user drags the marker. + marker + .fire('move', e) + .fire('drag', e); + }, + + _onDragEnd: function (e) { + // @event dragend: DragEndEvent + // Fired when the user stops dragging the marker. + + cancelAnimFrame(this._panRequest); + + // @event moveend: Event + // Fired when the marker stops moving (because of dragging). + delete this._oldLatLng; + this._marker + .fire('moveend') + .fire('dragend', e); + } +}); + +/* + * @class Marker + * @inherits Interactive layer + * @aka L.Marker + * L.Marker is used to display clickable/draggable icons on the map. Extends `Layer`. + * + * @example + * + * ```js + * L.marker([50.5, 30.5]).addTo(map); + * ``` + */ + +var Marker = Layer.extend({ + + // @section + // @aka Marker options + options: { + // @option icon: Icon = * + // Icon instance to use for rendering the marker. + // See [Icon documentation](#L.Icon) for details on how to customize the marker icon. + // If not specified, a common instance of `L.Icon.Default` is used. + icon: new IconDefault(), + + // Option inherited from "Interactive layer" abstract class + interactive: true, + + // @option keyboard: Boolean = true + // Whether the marker can be tabbed to with a keyboard and clicked by pressing enter. + keyboard: true, + + // @option title: String = '' + // Text for the browser tooltip that appear on marker hover (no tooltip by default). + title: '', + + // @option alt: String = '' + // Text for the `alt` attribute of the icon image (useful for accessibility). + alt: '', + + // @option zIndexOffset: Number = 0 + // By default, marker images zIndex is set automatically based on its latitude. Use this option if you want to put the marker on top of all others (or below), specifying a high value like `1000` (or high negative value, respectively). + zIndexOffset: 0, + + // @option opacity: Number = 1.0 + // The opacity of the marker. + opacity: 1, + + // @option riseOnHover: Boolean = false + // If `true`, the marker will get on top of others when you hover the mouse over it. + riseOnHover: false, + + // @option riseOffset: Number = 250 + // The z-index offset used for the `riseOnHover` feature. + riseOffset: 250, + + // @option pane: String = 'markerPane' + // `Map pane` where the markers icon will be added. + pane: 'markerPane', + + // @option bubblingMouseEvents: Boolean = false + // When `true`, a mouse event on this marker will trigger the same event on the map + // (unless [`L.DomEvent.stopPropagation`](#domevent-stoppropagation) is used). + bubblingMouseEvents: false, + + // @section Draggable marker options + // @option draggable: Boolean = false + // Whether the marker is draggable with mouse/touch or not. + draggable: false, + + // @option autoPan: Boolean = false + // Whether to pan the map when dragging this marker near its edge or not. + autoPan: false, + + // @option autoPanPadding: Point = Point(50, 50) + // Distance (in pixels to the left/right and to the top/bottom) of the + // map edge to start panning the map. + autoPanPadding: [50, 50], + + // @option autoPanSpeed: Number = 10 + // Number of pixels the map should pan by. + autoPanSpeed: 10 + }, + + /* @section + * + * In addition to [shared layer methods](#Layer) like `addTo()` and `remove()` and [popup methods](#Popup) like bindPopup() you can also use the following methods: + */ + + initialize: function (latlng, options) { + setOptions(this, options); + this._latlng = toLatLng(latlng); + }, + + onAdd: function (map) { + this._zoomAnimated = this._zoomAnimated && map.options.markerZoomAnimation; + + if (this._zoomAnimated) { + map.on('zoomanim', this._animateZoom, this); + } + + this._initIcon(); + this.update(); + }, + + onRemove: function (map) { + if (this.dragging && this.dragging.enabled()) { + this.options.draggable = true; + this.dragging.removeHooks(); + } + delete this.dragging; + + if (this._zoomAnimated) { + map.off('zoomanim', this._animateZoom, this); + } + + this._removeIcon(); + this._removeShadow(); + }, + + getEvents: function () { + return { + zoom: this.update, + viewreset: this.update + }; + }, + + // @method getLatLng: LatLng + // Returns the current geographical position of the marker. + getLatLng: function () { + return this._latlng; + }, + + // @method setLatLng(latlng: LatLng): this + // Changes the marker position to the given point. + setLatLng: function (latlng) { + var oldLatLng = this._latlng; + this._latlng = toLatLng(latlng); + this.update(); + + // @event move: Event + // Fired when the marker is moved via [`setLatLng`](#marker-setlatlng) or by [dragging](#marker-dragging). Old and new coordinates are included in event arguments as `oldLatLng`, `latlng`. + return this.fire('move', {oldLatLng: oldLatLng, latlng: this._latlng}); + }, + + // @method setZIndexOffset(offset: Number): this + // Changes the [zIndex offset](#marker-zindexoffset) of the marker. + setZIndexOffset: function (offset) { + this.options.zIndexOffset = offset; + return this.update(); + }, + + // @method setIcon(icon: Icon): this + // Changes the marker icon. + setIcon: function (icon) { + + this.options.icon = icon; + + if (this._map) { + this._initIcon(); + this.update(); + } + + if (this._popup) { + this.bindPopup(this._popup, this._popup.options); + } + + return this; + }, + + getElement: function () { + return this._icon; + }, + + update: function () { + + if (this._icon && this._map) { + var pos = this._map.latLngToLayerPoint(this._latlng).round(); + this._setPos(pos); + } + + return this; + }, + + _initIcon: function () { + var options = this.options, + classToAdd = 'leaflet-zoom-' + (this._zoomAnimated ? 'animated' : 'hide'); + + var icon = options.icon.createIcon(this._icon), + addIcon = false; + + // if we're not reusing the icon, remove the old one and init new one + if (icon !== this._icon) { + if (this._icon) { + this._removeIcon(); + } + addIcon = true; + + if (options.title) { + icon.title = options.title; + } + + if (icon.tagName === 'IMG') { + icon.alt = options.alt || ''; + } + } + + addClass(icon, classToAdd); + + if (options.keyboard) { + icon.tabIndex = '0'; + } + + this._icon = icon; + + if (options.riseOnHover) { + this.on({ + mouseover: this._bringToFront, + mouseout: this._resetZIndex + }); + } + + var newShadow = options.icon.createShadow(this._shadow), + addShadow = false; + + if (newShadow !== this._shadow) { + this._removeShadow(); + addShadow = true; + } + + if (newShadow) { + addClass(newShadow, classToAdd); + newShadow.alt = ''; + } + this._shadow = newShadow; + + + if (options.opacity < 1) { + this._updateOpacity(); + } + + + if (addIcon) { + this.getPane().appendChild(this._icon); + } + this._initInteraction(); + if (newShadow && addShadow) { + this.getPane('shadowPane').appendChild(this._shadow); + } + }, + + _removeIcon: function () { + if (this.options.riseOnHover) { + this.off({ + mouseover: this._bringToFront, + mouseout: this._resetZIndex + }); + } + + remove(this._icon); + this.removeInteractiveTarget(this._icon); + + this._icon = null; + }, + + _removeShadow: function () { + if (this._shadow) { + remove(this._shadow); + } + this._shadow = null; + }, + + _setPos: function (pos) { + setPosition(this._icon, pos); + + if (this._shadow) { + setPosition(this._shadow, pos); + } + + this._zIndex = pos.y + this.options.zIndexOffset; + + this._resetZIndex(); + }, + + _updateZIndex: function (offset) { + this._icon.style.zIndex = this._zIndex + offset; + }, + + _animateZoom: function (opt) { + var pos = this._map._latLngToNewLayerPoint(this._latlng, opt.zoom, opt.center).round(); + + this._setPos(pos); + }, + + _initInteraction: function () { + + if (!this.options.interactive) { return; } + + addClass(this._icon, 'leaflet-interactive'); + + this.addInteractiveTarget(this._icon); + + if (MarkerDrag) { + var draggable = this.options.draggable; + if (this.dragging) { + draggable = this.dragging.enabled(); + this.dragging.disable(); + } + + this.dragging = new MarkerDrag(this); + + if (draggable) { + this.dragging.enable(); + } + } + }, + + // @method setOpacity(opacity: Number): this + // Changes the opacity of the marker. + setOpacity: function (opacity) { + this.options.opacity = opacity; + if (this._map) { + this._updateOpacity(); + } + + return this; + }, + + _updateOpacity: function () { + var opacity = this.options.opacity; + + setOpacity(this._icon, opacity); + + if (this._shadow) { + setOpacity(this._shadow, opacity); + } + }, + + _bringToFront: function () { + this._updateZIndex(this.options.riseOffset); + }, + + _resetZIndex: function () { + this._updateZIndex(0); + }, + + _getPopupAnchor: function () { + return this.options.icon.options.popupAnchor; + }, + + _getTooltipAnchor: function () { + return this.options.icon.options.tooltipAnchor; + } +}); + + +// factory L.marker(latlng: LatLng, options? : Marker options) + +// @factory L.marker(latlng: LatLng, options? : Marker options) +// Instantiates a Marker object given a geographical point and optionally an options object. +function marker(latlng, options) { + return new Marker(latlng, options); +} + +/* + * @class Path + * @aka L.Path + * @inherits Interactive layer + * + * An abstract class that contains options and constants shared between vector + * overlays (Polygon, Polyline, Circle). Do not use it directly. Extends `Layer`. + */ + +var Path = Layer.extend({ + + // @section + // @aka Path options + options: { + // @option stroke: Boolean = true + // Whether to draw stroke along the path. Set it to `false` to disable borders on polygons or circles. + stroke: true, + + // @option color: String = '#3388ff' + // Stroke color + color: '#3388ff', + + // @option weight: Number = 3 + // Stroke width in pixels + weight: 3, + + // @option opacity: Number = 1.0 + // Stroke opacity + opacity: 1, + + // @option lineCap: String= 'round' + // A string that defines [shape to be used at the end](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-linecap) of the stroke. + lineCap: 'round', + + // @option lineJoin: String = 'round' + // A string that defines [shape to be used at the corners](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-linejoin) of the stroke. + lineJoin: 'round', + + // @option dashArray: String = null + // A string that defines the stroke [dash pattern](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-dasharray). Doesn't work on `Canvas`-powered layers in [some old browsers](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setLineDash#Browser_compatibility). + dashArray: null, + + // @option dashOffset: String = null + // A string that defines the [distance into the dash pattern to start the dash](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-dashoffset). Doesn't work on `Canvas`-powered layers in [some old browsers](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setLineDash#Browser_compatibility). + dashOffset: null, + + // @option fill: Boolean = depends + // Whether to fill the path with color. Set it to `false` to disable filling on polygons or circles. + fill: false, + + // @option fillColor: String = * + // Fill color. Defaults to the value of the [`color`](#path-color) option + fillColor: null, + + // @option fillOpacity: Number = 0.2 + // Fill opacity. + fillOpacity: 0.2, + + // @option fillRule: String = 'evenodd' + // A string that defines [how the inside of a shape](https://developer.mozilla.org/docs/Web/SVG/Attribute/fill-rule) is determined. + fillRule: 'evenodd', + + // className: '', + + // Option inherited from "Interactive layer" abstract class + interactive: true, + + // @option bubblingMouseEvents: Boolean = true + // When `true`, a mouse event on this path will trigger the same event on the map + // (unless [`L.DomEvent.stopPropagation`](#domevent-stoppropagation) is used). + bubblingMouseEvents: true + }, + + beforeAdd: function (map) { + // Renderer is set here because we need to call renderer.getEvents + // before this.getEvents. + this._renderer = map.getRenderer(this); + }, + + onAdd: function () { + this._renderer._initPath(this); + this._reset(); + this._renderer._addPath(this); + }, + + onRemove: function () { + this._renderer._removePath(this); + }, + + // @method redraw(): this + // Redraws the layer. Sometimes useful after you changed the coordinates that the path uses. + redraw: function () { + if (this._map) { + this._renderer._updatePath(this); + } + return this; + }, + + // @method setStyle(style: Path options): this + // Changes the appearance of a Path based on the options in the `Path options` object. + setStyle: function (style) { + setOptions(this, style); + if (this._renderer) { + this._renderer._updateStyle(this); + } + return this; + }, + + // @method bringToFront(): this + // Brings the layer to the top of all path layers. + bringToFront: function () { + if (this._renderer) { + this._renderer._bringToFront(this); + } + return this; + }, + + // @method bringToBack(): this + // Brings the layer to the bottom of all path layers. + bringToBack: function () { + if (this._renderer) { + this._renderer._bringToBack(this); + } + return this; + }, + + getElement: function () { + return this._path; + }, + + _reset: function () { + // defined in child classes + this._project(); + this._update(); + }, + + _clickTolerance: function () { + // used when doing hit detection for Canvas layers + return (this.options.stroke ? this.options.weight / 2 : 0) + this._renderer.options.tolerance; + } +}); + +/* + * @class CircleMarker + * @aka L.CircleMarker + * @inherits Path + * + * A circle of a fixed size with radius specified in pixels. Extends `Path`. + */ + +var CircleMarker = Path.extend({ + + // @section + // @aka CircleMarker options + options: { + fill: true, + + // @option radius: Number = 10 + // Radius of the circle marker, in pixels + radius: 10 + }, + + initialize: function (latlng, options) { + setOptions(this, options); + this._latlng = toLatLng(latlng); + this._radius = this.options.radius; + }, + + // @method setLatLng(latLng: LatLng): this + // Sets the position of a circle marker to a new location. + setLatLng: function (latlng) { + this._latlng = toLatLng(latlng); + this.redraw(); + return this.fire('move', {latlng: this._latlng}); + }, + + // @method getLatLng(): LatLng + // Returns the current geographical position of the circle marker + getLatLng: function () { + return this._latlng; + }, + + // @method setRadius(radius: Number): this + // Sets the radius of a circle marker. Units are in pixels. + setRadius: function (radius) { + this.options.radius = this._radius = radius; + return this.redraw(); + }, + + // @method getRadius(): Number + // Returns the current radius of the circle + getRadius: function () { + return this._radius; + }, + + setStyle : function (options) { + var radius = options && options.radius || this._radius; + Path.prototype.setStyle.call(this, options); + this.setRadius(radius); + return this; + }, + + _project: function () { + this._point = this._map.latLngToLayerPoint(this._latlng); + this._updateBounds(); + }, + + _updateBounds: function () { + var r = this._radius, + r2 = this._radiusY || r, + w = this._clickTolerance(), + p = [r + w, r2 + w]; + this._pxBounds = new Bounds(this._point.subtract(p), this._point.add(p)); + }, + + _update: function () { + if (this._map) { + this._updatePath(); + } + }, + + _updatePath: function () { + this._renderer._updateCircle(this); + }, + + _empty: function () { + return this._radius && !this._renderer._bounds.intersects(this._pxBounds); + }, + + // Needed by the `Canvas` renderer for interactivity + _containsPoint: function (p) { + return p.distanceTo(this._point) <= this._radius + this._clickTolerance(); + } +}); + + +// @factory L.circleMarker(latlng: LatLng, options?: CircleMarker options) +// Instantiates a circle marker object given a geographical point, and an optional options object. +function circleMarker(latlng, options) { + return new CircleMarker(latlng, options); +} + +/* + * @class Circle + * @aka L.Circle + * @inherits CircleMarker + * + * A class for drawing circle overlays on a map. Extends `CircleMarker`. + * + * It's an approximation and starts to diverge from a real circle closer to poles (due to projection distortion). + * + * @example + * + * ```js + * L.circle([50.5, 30.5], {radius: 200}).addTo(map); + * ``` + */ + +var Circle = CircleMarker.extend({ + + initialize: function (latlng, options, legacyOptions) { + if (typeof options === 'number') { + // Backwards compatibility with 0.7.x factory (latlng, radius, options?) + options = extend({}, legacyOptions, {radius: options}); + } + setOptions(this, options); + this._latlng = toLatLng(latlng); + + if (isNaN(this.options.radius)) { throw new Error('Circle radius cannot be NaN'); } + + // @section + // @aka Circle options + // @option radius: Number; Radius of the circle, in meters. + this._mRadius = this.options.radius; + }, + + // @method setRadius(radius: Number): this + // Sets the radius of a circle. Units are in meters. + setRadius: function (radius) { + this._mRadius = radius; + return this.redraw(); + }, + + // @method getRadius(): Number + // Returns the current radius of a circle. Units are in meters. + getRadius: function () { + return this._mRadius; + }, + + // @method getBounds(): LatLngBounds + // Returns the `LatLngBounds` of the path. + getBounds: function () { + var half = [this._radius, this._radiusY || this._radius]; + + return new LatLngBounds( + this._map.layerPointToLatLng(this._point.subtract(half)), + this._map.layerPointToLatLng(this._point.add(half))); + }, + + setStyle: Path.prototype.setStyle, + + _project: function () { + + var lng = this._latlng.lng, + lat = this._latlng.lat, + map = this._map, + crs = map.options.crs; + + if (crs.distance === Earth.distance) { + var d = Math.PI / 180, + latR = (this._mRadius / Earth.R) / d, + top = map.project([lat + latR, lng]), + bottom = map.project([lat - latR, lng]), + p = top.add(bottom).divideBy(2), + lat2 = map.unproject(p).lat, + lngR = Math.acos((Math.cos(latR * d) - Math.sin(lat * d) * Math.sin(lat2 * d)) / + (Math.cos(lat * d) * Math.cos(lat2 * d))) / d; + + if (isNaN(lngR) || lngR === 0) { + lngR = latR / Math.cos(Math.PI / 180 * lat); // Fallback for edge case, #2425 + } + + this._point = p.subtract(map.getPixelOrigin()); + this._radius = isNaN(lngR) ? 0 : p.x - map.project([lat2, lng - lngR]).x; + this._radiusY = p.y - top.y; + + } else { + var latlng2 = crs.unproject(crs.project(this._latlng).subtract([this._mRadius, 0])); + + this._point = map.latLngToLayerPoint(this._latlng); + this._radius = this._point.x - map.latLngToLayerPoint(latlng2).x; + } + + this._updateBounds(); + } +}); + +// @factory L.circle(latlng: LatLng, options?: Circle options) +// Instantiates a circle object given a geographical point, and an options object +// which contains the circle radius. +// @alternative +// @factory L.circle(latlng: LatLng, radius: Number, options?: Circle options) +// Obsolete way of instantiating a circle, for compatibility with 0.7.x code. +// Do not use in new applications or plugins. +function circle(latlng, options, legacyOptions) { + return new Circle(latlng, options, legacyOptions); +} + +/* + * @class Polyline + * @aka L.Polyline + * @inherits Path + * + * A class for drawing polyline overlays on a map. Extends `Path`. + * + * @example + * + * ```js + * // create a red polyline from an array of LatLng points + * var latlngs = [ + * [45.51, -122.68], + * [37.77, -122.43], + * [34.04, -118.2] + * ]; + * + * var polyline = L.polyline(latlngs, {color: 'red'}).addTo(map); + * + * // zoom the map to the polyline + * map.fitBounds(polyline.getBounds()); + * ``` + * + * You can also pass a multi-dimensional array to represent a `MultiPolyline` shape: + * + * ```js + * // create a red polyline from an array of arrays of LatLng points + * var latlngs = [ + * [[45.51, -122.68], + * [37.77, -122.43], + * [34.04, -118.2]], + * [[40.78, -73.91], + * [41.83, -87.62], + * [32.76, -96.72]] + * ]; + * ``` + */ + + +var Polyline = Path.extend({ + + // @section + // @aka Polyline options + options: { + // @option smoothFactor: Number = 1.0 + // How much to simplify the polyline on each zoom level. More means + // better performance and smoother look, and less means more accurate representation. + smoothFactor: 1.0, + + // @option noClip: Boolean = false + // Disable polyline clipping. + noClip: false + }, + + initialize: function (latlngs, options) { + setOptions(this, options); + this._setLatLngs(latlngs); + }, + + // @method getLatLngs(): LatLng[] + // Returns an array of the points in the path, or nested arrays of points in case of multi-polyline. + getLatLngs: function () { + return this._latlngs; + }, + + // @method setLatLngs(latlngs: LatLng[]): this + // Replaces all the points in the polyline with the given array of geographical points. + setLatLngs: function (latlngs) { + this._setLatLngs(latlngs); + return this.redraw(); + }, + + // @method isEmpty(): Boolean + // Returns `true` if the Polyline has no LatLngs. + isEmpty: function () { + return !this._latlngs.length; + }, + + // @method closestLayerPoint(p: Point): Point + // Returns the point closest to `p` on the Polyline. + closestLayerPoint: function (p) { + var minDistance = Infinity, + minPoint = null, + closest = _sqClosestPointOnSegment, + p1, p2; + + for (var j = 0, jLen = this._parts.length; j < jLen; j++) { + var points = this._parts[j]; + + for (var i = 1, len = points.length; i < len; i++) { + p1 = points[i - 1]; + p2 = points[i]; + + var sqDist = closest(p, p1, p2, true); + + if (sqDist < minDistance) { + minDistance = sqDist; + minPoint = closest(p, p1, p2); + } + } + } + if (minPoint) { + minPoint.distance = Math.sqrt(minDistance); + } + return minPoint; + }, + + // @method getCenter(): LatLng + // Returns the center ([centroid](http://en.wikipedia.org/wiki/Centroid)) of the polyline. + getCenter: function () { + // throws error when not yet added to map as this center calculation requires projected coordinates + if (!this._map) { + throw new Error('Must add layer to map before using getCenter()'); + } + + var i, halfDist, segDist, dist, p1, p2, ratio, + points = this._rings[0], + len = points.length; + + if (!len) { return null; } + + // polyline centroid algorithm; only uses the first ring if there are multiple + + for (i = 0, halfDist = 0; i < len - 1; i++) { + halfDist += points[i].distanceTo(points[i + 1]) / 2; + } + + // The line is so small in the current view that all points are on the same pixel. + if (halfDist === 0) { + return this._map.layerPointToLatLng(points[0]); + } + + for (i = 0, dist = 0; i < len - 1; i++) { + p1 = points[i]; + p2 = points[i + 1]; + segDist = p1.distanceTo(p2); + dist += segDist; + + if (dist > halfDist) { + ratio = (dist - halfDist) / segDist; + return this._map.layerPointToLatLng([ + p2.x - ratio * (p2.x - p1.x), + p2.y - ratio * (p2.y - p1.y) + ]); + } + } + }, + + // @method getBounds(): LatLngBounds + // Returns the `LatLngBounds` of the path. + getBounds: function () { + return this._bounds; + }, + + // @method addLatLng(latlng: LatLng, latlngs? LatLng[]): this + // Adds a given point to the polyline. By default, adds to the first ring of + // the polyline in case of a multi-polyline, but can be overridden by passing + // a specific ring as a LatLng array (that you can earlier access with [`getLatLngs`](#polyline-getlatlngs)). + addLatLng: function (latlng, latlngs) { + latlngs = latlngs || this._defaultShape(); + latlng = toLatLng(latlng); + latlngs.push(latlng); + this._bounds.extend(latlng); + return this.redraw(); + }, + + _setLatLngs: function (latlngs) { + this._bounds = new LatLngBounds(); + this._latlngs = this._convertLatLngs(latlngs); + }, + + _defaultShape: function () { + return isFlat(this._latlngs) ? this._latlngs : this._latlngs[0]; + }, + + // recursively convert latlngs input into actual LatLng instances; calculate bounds along the way + _convertLatLngs: function (latlngs) { + var result = [], + flat = isFlat(latlngs); + + for (var i = 0, len = latlngs.length; i < len; i++) { + if (flat) { + result[i] = toLatLng(latlngs[i]); + this._bounds.extend(result[i]); + } else { + result[i] = this._convertLatLngs(latlngs[i]); + } + } + + return result; + }, + + _project: function () { + var pxBounds = new Bounds(); + this._rings = []; + this._projectLatlngs(this._latlngs, this._rings, pxBounds); + + var w = this._clickTolerance(), + p = new Point(w, w); + + if (this._bounds.isValid() && pxBounds.isValid()) { + pxBounds.min._subtract(p); + pxBounds.max._add(p); + this._pxBounds = pxBounds; + } + }, + + // recursively turns latlngs into a set of rings with projected coordinates + _projectLatlngs: function (latlngs, result, projectedBounds) { + var flat = latlngs[0] instanceof LatLng, + len = latlngs.length, + i, ring; + + if (flat) { + ring = []; + for (i = 0; i < len; i++) { + ring[i] = this._map.latLngToLayerPoint(latlngs[i]); + projectedBounds.extend(ring[i]); + } + result.push(ring); + } else { + for (i = 0; i < len; i++) { + this._projectLatlngs(latlngs[i], result, projectedBounds); + } + } + }, + + // clip polyline by renderer bounds so that we have less to render for performance + _clipPoints: function () { + var bounds = this._renderer._bounds; + + this._parts = []; + if (!this._pxBounds || !this._pxBounds.intersects(bounds)) { + return; + } + + if (this.options.noClip) { + this._parts = this._rings; + return; + } + + var parts = this._parts, + i, j, k, len, len2, segment, points; + + for (i = 0, k = 0, len = this._rings.length; i < len; i++) { + points = this._rings[i]; + + for (j = 0, len2 = points.length; j < len2 - 1; j++) { + segment = clipSegment(points[j], points[j + 1], bounds, j, true); + + if (!segment) { continue; } + + parts[k] = parts[k] || []; + parts[k].push(segment[0]); + + // if segment goes out of screen, or it's the last one, it's the end of the line part + if ((segment[1] !== points[j + 1]) || (j === len2 - 2)) { + parts[k].push(segment[1]); + k++; + } + } + } + }, + + // simplify each clipped part of the polyline for performance + _simplifyPoints: function () { + var parts = this._parts, + tolerance = this.options.smoothFactor; + + for (var i = 0, len = parts.length; i < len; i++) { + parts[i] = simplify(parts[i], tolerance); + } + }, + + _update: function () { + if (!this._map) { return; } + + this._clipPoints(); + this._simplifyPoints(); + this._updatePath(); + }, + + _updatePath: function () { + this._renderer._updatePoly(this); + }, + + // Needed by the `Canvas` renderer for interactivity + _containsPoint: function (p, closed) { + var i, j, k, len, len2, part, + w = this._clickTolerance(); + + if (!this._pxBounds || !this._pxBounds.contains(p)) { return false; } + + // hit detection for polylines + for (i = 0, len = this._parts.length; i < len; i++) { + part = this._parts[i]; + + for (j = 0, len2 = part.length, k = len2 - 1; j < len2; k = j++) { + if (!closed && (j === 0)) { continue; } + + if (pointToSegmentDistance(p, part[k], part[j]) <= w) { + return true; + } + } + } + return false; + } +}); + +// @factory L.polyline(latlngs: LatLng[], options?: Polyline options) +// Instantiates a polyline object given an array of geographical points and +// optionally an options object. You can create a `Polyline` object with +// multiple separate lines (`MultiPolyline`) by passing an array of arrays +// of geographic points. +function polyline(latlngs, options) { + return new Polyline(latlngs, options); +} + +// Retrocompat. Allow plugins to support Leaflet versions before and after 1.1. +Polyline._flat = _flat; + +/* + * @class Polygon + * @aka L.Polygon + * @inherits Polyline + * + * A class for drawing polygon overlays on a map. Extends `Polyline`. + * + * Note that points you pass when creating a polygon shouldn't have an additional last point equal to the first one — it's better to filter out such points. + * + * + * @example + * + * ```js + * // create a red polygon from an array of LatLng points + * var latlngs = [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]]; + * + * var polygon = L.polygon(latlngs, {color: 'red'}).addTo(map); + * + * // zoom the map to the polygon + * map.fitBounds(polygon.getBounds()); + * ``` + * + * You can also pass an array of arrays of latlngs, with the first array representing the outer shape and the other arrays representing holes in the outer shape: + * + * ```js + * var latlngs = [ + * [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]], // outer ring + * [[37.29, -108.58],[40.71, -108.58],[40.71, -102.50],[37.29, -102.50]] // hole + * ]; + * ``` + * + * Additionally, you can pass a multi-dimensional array to represent a MultiPolygon shape. + * + * ```js + * var latlngs = [ + * [ // first polygon + * [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]], // outer ring + * [[37.29, -108.58],[40.71, -108.58],[40.71, -102.50],[37.29, -102.50]] // hole + * ], + * [ // second polygon + * [[41, -111.03],[45, -111.04],[45, -104.05],[41, -104.05]] + * ] + * ]; + * ``` + */ + +var Polygon = Polyline.extend({ + + options: { + fill: true + }, + + isEmpty: function () { + return !this._latlngs.length || !this._latlngs[0].length; + }, + + getCenter: function () { + // throws error when not yet added to map as this center calculation requires projected coordinates + if (!this._map) { + throw new Error('Must add layer to map before using getCenter()'); + } + + var i, j, p1, p2, f, area, x, y, center, + points = this._rings[0], + len = points.length; + + if (!len) { return null; } + + // polygon centroid algorithm; only uses the first ring if there are multiple + + area = x = y = 0; + + for (i = 0, j = len - 1; i < len; j = i++) { + p1 = points[i]; + p2 = points[j]; + + f = p1.y * p2.x - p2.y * p1.x; + x += (p1.x + p2.x) * f; + y += (p1.y + p2.y) * f; + area += f * 3; + } + + if (area === 0) { + // Polygon is so small that all points are on same pixel. + center = points[0]; + } else { + center = [x / area, y / area]; + } + return this._map.layerPointToLatLng(center); + }, + + _convertLatLngs: function (latlngs) { + var result = Polyline.prototype._convertLatLngs.call(this, latlngs), + len = result.length; + + // remove last point if it equals first one + if (len >= 2 && result[0] instanceof LatLng && result[0].equals(result[len - 1])) { + result.pop(); + } + return result; + }, + + _setLatLngs: function (latlngs) { + Polyline.prototype._setLatLngs.call(this, latlngs); + if (isFlat(this._latlngs)) { + this._latlngs = [this._latlngs]; + } + }, + + _defaultShape: function () { + return isFlat(this._latlngs[0]) ? this._latlngs[0] : this._latlngs[0][0]; + }, + + _clipPoints: function () { + // polygons need a different clipping algorithm so we redefine that + + var bounds = this._renderer._bounds, + w = this.options.weight, + p = new Point(w, w); + + // increase clip padding by stroke width to avoid stroke on clip edges + bounds = new Bounds(bounds.min.subtract(p), bounds.max.add(p)); + + this._parts = []; + if (!this._pxBounds || !this._pxBounds.intersects(bounds)) { + return; + } + + if (this.options.noClip) { + this._parts = this._rings; + return; + } + + for (var i = 0, len = this._rings.length, clipped; i < len; i++) { + clipped = clipPolygon(this._rings[i], bounds, true); + if (clipped.length) { + this._parts.push(clipped); + } + } + }, + + _updatePath: function () { + this._renderer._updatePoly(this, true); + }, + + // Needed by the `Canvas` renderer for interactivity + _containsPoint: function (p) { + var inside = false, + part, p1, p2, i, j, k, len, len2; + + if (!this._pxBounds || !this._pxBounds.contains(p)) { return false; } + + // ray casting algorithm for detecting if point is in polygon + for (i = 0, len = this._parts.length; i < len; i++) { + part = this._parts[i]; + + for (j = 0, len2 = part.length, k = len2 - 1; j < len2; k = j++) { + p1 = part[j]; + p2 = part[k]; + + if (((p1.y > p.y) !== (p2.y > p.y)) && (p.x < (p2.x - p1.x) * (p.y - p1.y) / (p2.y - p1.y) + p1.x)) { + inside = !inside; + } + } + } + + // also check if it's on polygon stroke + return inside || Polyline.prototype._containsPoint.call(this, p, true); + } + +}); + + +// @factory L.polygon(latlngs: LatLng[], options?: Polyline options) +function polygon(latlngs, options) { + return new Polygon(latlngs, options); +} + +/* + * @class GeoJSON + * @aka L.GeoJSON + * @inherits FeatureGroup + * + * Represents a GeoJSON object or an array of GeoJSON objects. Allows you to parse + * GeoJSON data and display it on the map. Extends `FeatureGroup`. + * + * @example + * + * ```js + * L.geoJSON(data, { + * style: function (feature) { + * return {color: feature.properties.color}; + * } + * }).bindPopup(function (layer) { + * return layer.feature.properties.description; + * }).addTo(map); + * ``` + */ + +var GeoJSON = FeatureGroup.extend({ + + /* @section + * @aka GeoJSON options + * + * @option pointToLayer: Function = * + * A `Function` defining how GeoJSON points spawn Leaflet layers. It is internally + * called when data is added, passing the GeoJSON point feature and its `LatLng`. + * The default is to spawn a default `Marker`: + * ```js + * function(geoJsonPoint, latlng) { + * return L.marker(latlng); + * } + * ``` + * + * @option style: Function = * + * A `Function` defining the `Path options` for styling GeoJSON lines and polygons, + * called internally when data is added. + * The default value is to not override any defaults: + * ```js + * function (geoJsonFeature) { + * return {} + * } + * ``` + * + * @option onEachFeature: Function = * + * A `Function` that will be called once for each created `Feature`, after it has + * been created and styled. Useful for attaching events and popups to features. + * The default is to do nothing with the newly created layers: + * ```js + * function (feature, layer) {} + * ``` + * + * @option filter: Function = * + * A `Function` that will be used to decide whether to include a feature or not. + * The default is to include all features: + * ```js + * function (geoJsonFeature) { + * return true; + * } + * ``` + * Note: dynamically changing the `filter` option will have effect only on newly + * added data. It will _not_ re-evaluate already included features. + * + * @option coordsToLatLng: Function = * + * A `Function` that will be used for converting GeoJSON coordinates to `LatLng`s. + * The default is the `coordsToLatLng` static method. + */ + + initialize: function (geojson, options) { + setOptions(this, options); + + this._layers = {}; + + if (geojson) { + this.addData(geojson); + } + }, + + // @method addData( data ): this + // Adds a GeoJSON object to the layer. + addData: function (geojson) { + var features = isArray(geojson) ? geojson : geojson.features, + i, len, feature; + + if (features) { + for (i = 0, len = features.length; i < len; i++) { + // only add this if geometry or geometries are set and not null + feature = features[i]; + if (feature.geometries || feature.geometry || feature.features || feature.coordinates) { + this.addData(feature); + } + } + return this; + } + + var options = this.options; + + if (options.filter && !options.filter(geojson)) { return this; } + + var layer = geometryToLayer(geojson, options); + if (!layer) { + return this; + } + layer.feature = asFeature(geojson); + + layer.defaultOptions = layer.options; + this.resetStyle(layer); + + if (options.onEachFeature) { + options.onEachFeature(geojson, layer); + } + + return this.addLayer(layer); + }, + + // @method resetStyle( layer ): this + // Resets the given vector layer's style to the original GeoJSON style, useful for resetting style after hover events. + resetStyle: function (layer) { + // reset any custom styles + layer.options = extend({}, layer.defaultOptions); + this._setLayerStyle(layer, this.options.style); + return this; + }, + + // @method setStyle( style ): this + // Changes styles of GeoJSON vector layers with the given style function. + setStyle: function (style) { + return this.eachLayer(function (layer) { + this._setLayerStyle(layer, style); + }, this); + }, + + _setLayerStyle: function (layer, style) { + if (typeof style === 'function') { + style = style(layer.feature); + } + if (layer.setStyle) { + layer.setStyle(style); + } + } +}); + +// @section +// There are several static functions which can be called without instantiating L.GeoJSON: + +// @function geometryToLayer(featureData: Object, options?: GeoJSON options): Layer +// Creates a `Layer` from a given GeoJSON feature. Can use a custom +// [`pointToLayer`](#geojson-pointtolayer) and/or [`coordsToLatLng`](#geojson-coordstolatlng) +// functions if provided as options. +function geometryToLayer(geojson, options) { + + var geometry = geojson.type === 'Feature' ? geojson.geometry : geojson, + coords = geometry ? geometry.coordinates : null, + layers = [], + pointToLayer = options && options.pointToLayer, + _coordsToLatLng = options && options.coordsToLatLng || coordsToLatLng, + latlng, latlngs, i, len; + + if (!coords && !geometry) { + return null; + } + + switch (geometry.type) { + case 'Point': + latlng = _coordsToLatLng(coords); + return pointToLayer ? pointToLayer(geojson, latlng) : new Marker(latlng); + + case 'MultiPoint': + for (i = 0, len = coords.length; i < len; i++) { + latlng = _coordsToLatLng(coords[i]); + layers.push(pointToLayer ? pointToLayer(geojson, latlng) : new Marker(latlng)); + } + return new FeatureGroup(layers); + + case 'LineString': + case 'MultiLineString': + latlngs = coordsToLatLngs(coords, geometry.type === 'LineString' ? 0 : 1, _coordsToLatLng); + return new Polyline(latlngs, options); + + case 'Polygon': + case 'MultiPolygon': + latlngs = coordsToLatLngs(coords, geometry.type === 'Polygon' ? 1 : 2, _coordsToLatLng); + return new Polygon(latlngs, options); + + case 'GeometryCollection': + for (i = 0, len = geometry.geometries.length; i < len; i++) { + var layer = geometryToLayer({ + geometry: geometry.geometries[i], + type: 'Feature', + properties: geojson.properties + }, options); + + if (layer) { + layers.push(layer); + } + } + return new FeatureGroup(layers); + + default: + throw new Error('Invalid GeoJSON object.'); + } +} + +// @function coordsToLatLng(coords: Array): LatLng +// Creates a `LatLng` object from an array of 2 numbers (longitude, latitude) +// or 3 numbers (longitude, latitude, altitude) used in GeoJSON for points. +function coordsToLatLng(coords) { + return new LatLng(coords[1], coords[0], coords[2]); +} + +// @function coordsToLatLngs(coords: Array, levelsDeep?: Number, coordsToLatLng?: Function): Array +// Creates a multidimensional array of `LatLng`s from a GeoJSON coordinates array. +// `levelsDeep` specifies the nesting level (0 is for an array of points, 1 for an array of arrays of points, etc., 0 by default). +// Can use a custom [`coordsToLatLng`](#geojson-coordstolatlng) function. +function coordsToLatLngs(coords, levelsDeep, _coordsToLatLng) { + var latlngs = []; + + for (var i = 0, len = coords.length, latlng; i < len; i++) { + latlng = levelsDeep ? + coordsToLatLngs(coords[i], levelsDeep - 1, _coordsToLatLng) : + (_coordsToLatLng || coordsToLatLng)(coords[i]); + + latlngs.push(latlng); + } + + return latlngs; +} + +// @function latLngToCoords(latlng: LatLng, precision?: Number): Array +// Reverse of [`coordsToLatLng`](#geojson-coordstolatlng) +function latLngToCoords(latlng, precision) { + precision = typeof precision === 'number' ? precision : 6; + return latlng.alt !== undefined ? + [formatNum(latlng.lng, precision), formatNum(latlng.lat, precision), formatNum(latlng.alt, precision)] : + [formatNum(latlng.lng, precision), formatNum(latlng.lat, precision)]; +} + +// @function latLngsToCoords(latlngs: Array, levelsDeep?: Number, closed?: Boolean): Array +// Reverse of [`coordsToLatLngs`](#geojson-coordstolatlngs) +// `closed` determines whether the first point should be appended to the end of the array to close the feature, only used when `levelsDeep` is 0. False by default. +function latLngsToCoords(latlngs, levelsDeep, closed, precision) { + var coords = []; + + for (var i = 0, len = latlngs.length; i < len; i++) { + coords.push(levelsDeep ? + latLngsToCoords(latlngs[i], levelsDeep - 1, closed, precision) : + latLngToCoords(latlngs[i], precision)); + } + + if (!levelsDeep && closed) { + coords.push(coords[0]); + } + + return coords; +} + +function getFeature(layer, newGeometry) { + return layer.feature ? + extend({}, layer.feature, {geometry: newGeometry}) : + asFeature(newGeometry); +} + +// @function asFeature(geojson: Object): Object +// Normalize GeoJSON geometries/features into GeoJSON features. +function asFeature(geojson) { + if (geojson.type === 'Feature' || geojson.type === 'FeatureCollection') { + return geojson; + } + + return { + type: 'Feature', + properties: {}, + geometry: geojson + }; +} + +var PointToGeoJSON = { + toGeoJSON: function (precision) { + return getFeature(this, { + type: 'Point', + coordinates: latLngToCoords(this.getLatLng(), precision) + }); + } +}; + +// @namespace Marker +// @method toGeoJSON(): Object +// Returns a [`GeoJSON`](http://en.wikipedia.org/wiki/GeoJSON) representation of the marker (as a GeoJSON `Point` Feature). +Marker.include(PointToGeoJSON); + +// @namespace CircleMarker +// @method toGeoJSON(): Object +// Returns a [`GeoJSON`](http://en.wikipedia.org/wiki/GeoJSON) representation of the circle marker (as a GeoJSON `Point` Feature). +Circle.include(PointToGeoJSON); +CircleMarker.include(PointToGeoJSON); + + +// @namespace Polyline +// @method toGeoJSON(): Object +// Returns a [`GeoJSON`](http://en.wikipedia.org/wiki/GeoJSON) representation of the polyline (as a GeoJSON `LineString` or `MultiLineString` Feature). +Polyline.include({ + toGeoJSON: function (precision) { + var multi = !isFlat(this._latlngs); + + var coords = latLngsToCoords(this._latlngs, multi ? 1 : 0, false, precision); + + return getFeature(this, { + type: (multi ? 'Multi' : '') + 'LineString', + coordinates: coords + }); + } +}); + +// @namespace Polygon +// @method toGeoJSON(): Object +// Returns a [`GeoJSON`](http://en.wikipedia.org/wiki/GeoJSON) representation of the polygon (as a GeoJSON `Polygon` or `MultiPolygon` Feature). +Polygon.include({ + toGeoJSON: function (precision) { + var holes = !isFlat(this._latlngs), + multi = holes && !isFlat(this._latlngs[0]); + + var coords = latLngsToCoords(this._latlngs, multi ? 2 : holes ? 1 : 0, true, precision); + + if (!holes) { + coords = [coords]; + } + + return getFeature(this, { + type: (multi ? 'Multi' : '') + 'Polygon', + coordinates: coords + }); + } +}); + + +// @namespace LayerGroup +LayerGroup.include({ + toMultiPoint: function (precision) { + var coords = []; + + this.eachLayer(function (layer) { + coords.push(layer.toGeoJSON(precision).geometry.coordinates); + }); + + return getFeature(this, { + type: 'MultiPoint', + coordinates: coords + }); + }, + + // @method toGeoJSON(): Object + // Returns a [`GeoJSON`](http://en.wikipedia.org/wiki/GeoJSON) representation of the layer group (as a GeoJSON `FeatureCollection`, `GeometryCollection`, or `MultiPoint`). + toGeoJSON: function (precision) { + + var type = this.feature && this.feature.geometry && this.feature.geometry.type; + + if (type === 'MultiPoint') { + return this.toMultiPoint(precision); + } + + var isGeometryCollection = type === 'GeometryCollection', + jsons = []; + + this.eachLayer(function (layer) { + if (layer.toGeoJSON) { + var json = layer.toGeoJSON(precision); + if (isGeometryCollection) { + jsons.push(json.geometry); + } else { + var feature = asFeature(json); + // Squash nested feature collections + if (feature.type === 'FeatureCollection') { + jsons.push.apply(jsons, feature.features); + } else { + jsons.push(feature); + } + } + } + }); + + if (isGeometryCollection) { + return getFeature(this, { + geometries: jsons, + type: 'GeometryCollection' + }); + } + + return { + type: 'FeatureCollection', + features: jsons + }; + } +}); + +// @namespace GeoJSON +// @factory L.geoJSON(geojson?: Object, options?: GeoJSON options) +// Creates a GeoJSON layer. Optionally accepts an object in +// [GeoJSON format](https://tools.ietf.org/html/rfc7946) to display on the map +// (you can alternatively add it later with `addData` method) and an `options` object. +function geoJSON(geojson, options) { + return new GeoJSON(geojson, options); +} + +// Backward compatibility. +var geoJson = geoJSON; + +/* + * @class ImageOverlay + * @aka L.ImageOverlay + * @inherits Interactive layer + * + * Used to load and display a single image over specific bounds of the map. Extends `Layer`. + * + * @example + * + * ```js + * var imageUrl = 'http://www.lib.utexas.edu/maps/historical/newark_nj_1922.jpg', + * imageBounds = [[40.712216, -74.22655], [40.773941, -74.12544]]; + * L.imageOverlay(imageUrl, imageBounds).addTo(map); + * ``` + */ + +var ImageOverlay = Layer.extend({ + + // @section + // @aka ImageOverlay options + options: { + // @option opacity: Number = 1.0 + // The opacity of the image overlay. + opacity: 1, + + // @option alt: String = '' + // Text for the `alt` attribute of the image (useful for accessibility). + alt: '', + + // @option interactive: Boolean = false + // If `true`, the image overlay will emit [mouse events](#interactive-layer) when clicked or hovered. + interactive: false, + + // @option crossOrigin: Boolean|String = false + // Whether the crossOrigin attribute will be added to the image. + // If a String is provided, the image will have its crossOrigin attribute set to the String provided. This is needed if you want to access image pixel data. + // Refer to [CORS Settings](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for valid String values. + crossOrigin: false, + + // @option errorOverlayUrl: String = '' + // URL to the overlay image to show in place of the overlay that failed to load. + errorOverlayUrl: '', + + // @option zIndex: Number = 1 + // The explicit [zIndex](https://developer.mozilla.org/docs/Web/CSS/CSS_Positioning/Understanding_z_index) of the overlay layer. + zIndex: 1, + + // @option className: String = '' + // A custom class name to assign to the image. Empty by default. + className: '' + }, + + initialize: function (url, bounds, options) { // (String, LatLngBounds, Object) + this._url = url; + this._bounds = toLatLngBounds(bounds); + + setOptions(this, options); + }, + + onAdd: function () { + if (!this._image) { + this._initImage(); + + if (this.options.opacity < 1) { + this._updateOpacity(); + } + } + + if (this.options.interactive) { + addClass(this._image, 'leaflet-interactive'); + this.addInteractiveTarget(this._image); + } + + this.getPane().appendChild(this._image); + this._reset(); + }, + + onRemove: function () { + remove(this._image); + if (this.options.interactive) { + this.removeInteractiveTarget(this._image); + } + }, + + // @method setOpacity(opacity: Number): this + // Sets the opacity of the overlay. + setOpacity: function (opacity) { + this.options.opacity = opacity; + + if (this._image) { + this._updateOpacity(); + } + return this; + }, + + setStyle: function (styleOpts) { + if (styleOpts.opacity) { + this.setOpacity(styleOpts.opacity); + } + return this; + }, + + // @method bringToFront(): this + // Brings the layer to the top of all overlays. + bringToFront: function () { + if (this._map) { + toFront(this._image); + } + return this; + }, + + // @method bringToBack(): this + // Brings the layer to the bottom of all overlays. + bringToBack: function () { + if (this._map) { + toBack(this._image); + } + return this; + }, + + // @method setUrl(url: String): this + // Changes the URL of the image. + setUrl: function (url) { + this._url = url; + + if (this._image) { + this._image.src = url; + } + return this; + }, + + // @method setBounds(bounds: LatLngBounds): this + // Update the bounds that this ImageOverlay covers + setBounds: function (bounds) { + this._bounds = toLatLngBounds(bounds); + + if (this._map) { + this._reset(); + } + return this; + }, + + getEvents: function () { + var events = { + zoom: this._reset, + viewreset: this._reset + }; + + if (this._zoomAnimated) { + events.zoomanim = this._animateZoom; + } + + return events; + }, + + // @method setZIndex(value: Number): this + // Changes the [zIndex](#imageoverlay-zindex) of the image overlay. + setZIndex: function (value) { + this.options.zIndex = value; + this._updateZIndex(); + return this; + }, + + // @method getBounds(): LatLngBounds + // Get the bounds that this ImageOverlay covers + getBounds: function () { + return this._bounds; + }, + + // @method getElement(): HTMLElement + // Returns the instance of [`HTMLImageElement`](https://developer.mozilla.org/docs/Web/API/HTMLImageElement) + // used by this overlay. + getElement: function () { + return this._image; + }, + + _initImage: function () { + var wasElementSupplied = this._url.tagName === 'IMG'; + var img = this._image = wasElementSupplied ? this._url : create$1('img'); + + addClass(img, 'leaflet-image-layer'); + if (this._zoomAnimated) { addClass(img, 'leaflet-zoom-animated'); } + if (this.options.className) { addClass(img, this.options.className); } + + img.onselectstart = falseFn; + img.onmousemove = falseFn; + + // @event load: Event + // Fired when the ImageOverlay layer has loaded its image + img.onload = bind(this.fire, this, 'load'); + img.onerror = bind(this._overlayOnError, this, 'error'); + + if (this.options.crossOrigin || this.options.crossOrigin === '') { + img.crossOrigin = this.options.crossOrigin === true ? '' : this.options.crossOrigin; + } + + if (this.options.zIndex) { + this._updateZIndex(); + } + + if (wasElementSupplied) { + this._url = img.src; + return; + } + + img.src = this._url; + img.alt = this.options.alt; + }, + + _animateZoom: function (e) { + var scale = this._map.getZoomScale(e.zoom), + offset = this._map._latLngBoundsToNewLayerBounds(this._bounds, e.zoom, e.center).min; + + setTransform(this._image, offset, scale); + }, + + _reset: function () { + var image = this._image, + bounds = new Bounds( + this._map.latLngToLayerPoint(this._bounds.getNorthWest()), + this._map.latLngToLayerPoint(this._bounds.getSouthEast())), + size = bounds.getSize(); + + setPosition(image, bounds.min); + + image.style.width = size.x + 'px'; + image.style.height = size.y + 'px'; + }, + + _updateOpacity: function () { + setOpacity(this._image, this.options.opacity); + }, + + _updateZIndex: function () { + if (this._image && this.options.zIndex !== undefined && this.options.zIndex !== null) { + this._image.style.zIndex = this.options.zIndex; + } + }, + + _overlayOnError: function () { + // @event error: Event + // Fired when the ImageOverlay layer fails to load its image + this.fire('error'); + + var errorUrl = this.options.errorOverlayUrl; + if (errorUrl && this._url !== errorUrl) { + this._url = errorUrl; + this._image.src = errorUrl; + } + } +}); + +// @factory L.imageOverlay(imageUrl: String, bounds: LatLngBounds, options?: ImageOverlay options) +// Instantiates an image overlay object given the URL of the image and the +// geographical bounds it is tied to. +var imageOverlay = function (url, bounds, options) { + return new ImageOverlay(url, bounds, options); +}; + +/* + * @class VideoOverlay + * @aka L.VideoOverlay + * @inherits ImageOverlay + * + * Used to load and display a video player over specific bounds of the map. Extends `ImageOverlay`. + * + * A video overlay uses the [`

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%0D1)a3~L8 z1@RPoo9a3KrUv-&F)z~5(FDW z)Zv+?D%SUzTnT!ig90n`x$?exL&9*gS;`6*z*@ z8lV=)?~wu;nD!NWKJ-!DPxmG+*K3v`UeOoRkiUmBii5tv^z}xu#v(VnUkaP~JLL4# zs}m^d5hCF2Kq^GF3^dVeTQD{kRBkwOsfbr#*QYL!S(NXn$lu|PIqw>fdxXZt4092;ZX@8Adx2Mx}U5cI!MCaa)u3~$uumky~ijUhUW(k(|O@Gg8YVu zrcXqVa?^UAWDHSE9GpRI0yiOkpq-MGN5-g;es41La(;0*bFzjv7Fk2J`16w^*GRvU z*ib?kC3)#kRi7Q-y;HGTneENCV?*qxdh#FM(H&M#NSNpTp%dO{06b08t$ri#thhW`W4iHCvzKP(bY1-B7= zVLwULlvR%x4TQArvFy=r7lo8q&V!A|^(0%pW)W0Io9V9laEMIDeBFi8MT0YKyaJYv z%%T$O?xOBLZ&86|CG8D(@uer>+cx%q?0Pd1=tuz?x<_`nJ|T94vEp$}J&)C;p7Ev| zq%WM}MXD^&L8RZAj61=crSO>5+|~7W^@6|*Vc^F)5SxV6q!g{(Aw%5Y*KtA`A^OCq z#lgUpOl(;~pC65YpDiMYhC&8kK69V#Bu3du^qizwGU^F#2cv*tQ&)DuC^f*U z2h~8*@4h}aAEiA;d9Kim^h&=vzPfw@bGE@35SpO>Ef-D{eM?3a#-YONt;f6VDamIq zm7e&J(R*Yb8X9FVAjBKa@AU|i*jVpTxPc)1ONHqSy6K>4Az+|t15xqM5q!^5^xSqy zE`?K=5nAhkne4=?gwe+F;cH|fmp7Z=ruE|ae|)`nT*z(v$6dB;Dmx@0*(9SRg^Y+& zgs8|!$cVNPDx{K-L{SY>WdG(ObBuAltP0U}oZ_V444*$3GDTp_f^Q&LO6f@+nf?t|Q&^gn^l2lM@ez zT2dmxAie&LY7Bzb-W@{j&lu2sf9fgpSm$q^PBt``q%{wsDN#>9t#cae8^Z~GOx zDKKK{ILIAR)%=$`RqS}9vQ1I#!^!Cu2%rcOpi#$A%+o}BgEk{(-L378?ZWrZ8n97z z)@1o9{2p`ZU2p@-AD;PO*Rw3BX_`1LU8&Rx>k0VXxKS#a!_k4-kt|Ewm{_KkokBLxuwpajc$-hYzh&Ychut3k)>&o!V zyJMtK%+C?GPXngWbu(nwoDWCuFJ=jldU{0n_WYQ23&u!4dAO%&_mi%pH`2Hbn7XAq z-rHK~%GN77UcS>F-7N-Xy*s#op%=oDBw5wTL-*ml>j=}mzD3TGsE9ivOFHsr} z0qia^xzGfNh%j+-f!s^a$u#@$-!}dCdoig9*#>N4r!0ds9k07oFpAe|ZPmEPPY_o5 zbMJ;7o~!U&TgUt}ue`pYgV^t%Zh-QpWN6P5f|~{7+PoCu?2FNfvr|mNQ=bI~j#(+$ zFLlqfuES0*2;cOy(}(sU>n6ukwr4iJ3C9+Fo zCtG*yxE|8NZOdjKTmmG|^0@oEr|iR_%RZ~t-cG9h?Hd-e-tOz*kKbe0@7kCBrn$m# zz42aSaWx+2-Vmf=3&RKikwli!U-|DeaGPKIo2s_^HdBvEd>wf zHZQjTWX#>}v-ZfoOuarX`(gakUIBFO)a3btjetS(7Wg%gA^TTQ@vJX1iX4eYvcH5F z+ab*1t`OLZ$T0Al8N{qKloM}(BbqYxHC z)8GfouFM%IYJpq2{vUqF(vwiNefWWZX26_GYTy4Q1Vemu;LueB9Clger$RjSzxfF4 z(!(4&12udzTah=3M4qpwroM7k&^fE%8d8Dst@?9+?LI)9Pfzw4S^5A02PZ~JKLjEI zZPsNNikJuTINBf#UJ4u+Ka%+rz3H|Uri6{_Cw*F#=xwjwOUEnd=g@|?kDk#fV4W!F zrO`5*lbK%W2VR;cO|Mtx6aY03N4dWY9P>J*MDv;iz3;rBxz_Jq^>4lj`l#MZze;TxWf4+7p*<2C}m|y!LihRuSzJ zh%h(ce~-wL6u^$OHXn=LFn8DZ;J3p|`fj_YoIYj!S%NQc1iA$}mo(Z**mu1urO}#M zu)ue5hPuzC3hSd~))V{R%-?@=i{I;tBW;!o8TjmUt$g^r%)SlN|9LQm(?ANrIIG0r zZGc~r#G`iT%a3yB%7rJY&O^2}e*W)29%c`qNH+nduJiRxbr6 zS3s>2L^jV$fd@Kk!o1%4+nYWdbF45$C%-_&kCbD5gOU48#sKQ@(Ly>sbqmZgii6m_ zo{cih>GnFbAJilB$4CbjB#vppjPt;`gRLu@92(vjU;L$qHmXA)_{b%sw7c{@k%ro9Ntft6BT6VUT`xmAsz66LD(nhycvFfu^B&wWd5jGo| z8*=GN)f{XK%SvE$uSQ0C|4nVbUPUC__+*WiYdyBsZb(&}xgOIU(SZx8@WrJo?FPO+ z>ijQ-8vID*iY(lkG!xuMy4zaX3mb4M^j>fb>H+A+;nLw@9U!6j~!kr~1_OHyi z)n8B>N@PWyoph+m{LcE=2Ua7fdfG2*-V%a{v!X z4L(wMv?Dq0;D|q(6x{;XYJ+Ca#~OXwy+iKos=aEh4Ml%in<_zJjA)p@t4*;&mGpi+ zhc5{FQ}ZeG4$PQhFardVPh~td3Z(o~4v*=yBlj$H9&H)Z+P2KJh8{CCckS(^ot#Bd7`);L~1)wX!Y6IU7ociTZ!h}P;_Hl_yb)>r7 zUW>jD_)>&gNvuyRBEmz|2uOqj0}k=*udP^N(DQ6t4yjONlq{^Qfknf(D=6`4i5YiLl0aC8T}S@R`|g`g^%`-c|y*Qu-AR} zcMJT2dgO3sN$9G-Hp3SF%X_?*E6-&iUEzuy(WOfkW`7c@+ zjRlVWvpNcWMFB}8jKr6wc&F+TQOqBbgHqs@1#W>=&`(*`H;$H#F}lwtrw%zPlG;d8 zmnUU*XO|_P+tXN$D6eiLW6X7X)MBSz1SX7e16u}klSqh~C*M}@ngJNH>QKRnr{qq|^Yxh`+(D&#duz`OwpL6l$Bzr12-Qp|9$}fVXg(jDxXP6O>pDrN@ZAKo2)g)FygE_c=eR`sZERG}! zq13(&r_^2WY-2D!Tx7HC0dWp!*FR*rDufmNX|R&}a~PAZi-Jzm$B{80Mk?{Iw?`F> zdwe&_clhS7%AfgoO(T;hAijL9&?B>Ye^*bQRNLHH{<@be8S6N$kI@)uMn~~O-)-^L z&^H0^b$f4CI-1mA#aW8tWbx)Dul?=X=Gv7E9j)!q`lr6m)-KjA+9o#j>xgA~i;_F_ zmF%OP95npW`yPttlRFrjT22mBT#z$OaX}9}M<+Xa4sSOoWuv6tG|g!mXRX)eeYW!} z7*_AM>%hGgZ#tyMnS?o1y!uuCs=TIgPGgzhD!{>PJA=mOv_|XB7U=sQ##W4-56}P*7mxL&o0ljb~%!)|xG#@k7 zt}rThdxiI1W%n#1xGhye88;{c)7Ft_xx~wL}~Rx^f>t zsY`_Eb{p~DG+gkzyTMnz)66Bru4trmet{Dr9X;1T3=a~b4`T%j*m04U)&$>va-~&H z6eGZ%B0xyn$8H*rV^Wue-H6|Mz8cqU}QtwAxRs_ zA3y@DB}1&}b$un*wjo_QNFVN4I@4tOv}s*J$HdsKdG&JG)>xmTgXBCGcKO9MPLIM& zrXU93ZY2T|IkeUh1NJA<{L7;^fBP(jW}geHIdx5PWqna~BRiG}LwlZ&IB|btQafs& z@d<55hc!EQ?WZ_t^9$)eS2$xFx|%0_Dz+vahFb{McOM?Otmr&TpsFbsPu=gruvYskP8Vtf2L@LCC^^|=oYi}-S$jfwm zM)*f;{vHsDlFNI0Qmsl4j3-_d=gcpaV2!%>_u>_meADSwh)-Fhk!Oqt3Np~BnAZj3 zB7a5_nI|TIN!YkPb?OBSKn1kQe#02)WA}S?Ny@QQssAzCK*>jIQV~RYWpz{Mq5IAr z9Iw-tTxW`zNUGHl3aLe6g6>e%{OLqqBy-rVi8~nHdvE6+gM<|!bB%?63Syh*IOG~W zyi0iIJ~81r)%0@%!}UUoz*)+pXN->+u^_M$yw8n)mL6$w7}MS}~zz(th+;e7*vxJlBhju!-> z<~gign(M?2122WR+UmwQP3bdabXlrkKMmNDP&Ma+r3%;-JP0#Xz^+#>k8-#LxlN@& zT1(LDv$YE;Z*6R%FJxl70c)dxr#5j*2^^5PZbHuM*MaxfdeN29>gZ{IueBX3Erk5G{GBmp z-T3F!>d;~UoPvVLYk^fJ^IkpjRT~eErfoJ?$BQ~kGss85b!G6htI>fQ!rHQA#|KOY z@$+G#L*}#81(jROFm=iNCfHMb54r>%4TDu><)2>RebHef^hn0N%Ng;NaWoxlBYN%_ zcZT7WT|2ZZybzT01A3nF2gRL%q>1+CVV(-EsDVy1k#v99Gn1(8GQu?A^fxEq*npTB zGKV8d4e!>yU%~ycY5(i|8ICs8x7p_m>OPBzMb;XZ^j^9m#4Z3RUBQqTa2d1inWf59 z%#h@sE|K@_Evphg^(QN%@KQPabdU7EBr>04o$aaSDw{wR!E zaQ!P|VmFhFB9)Q;W8V}G1iPmz|JVk(%w-0e*#>jdD%V9A{YvGqq%OhMId@?YFb3PPX7+8yQs z{HK`eS=L9L-o3+V)xCo>p7N7SCk;rBr}u#wLkyYhh`%#MrQ^v?nLIE{m2n;HXP$LH zR#OFmR!y9dq*|_&cxiAtrvm@nTUse6i#2YMf_ytA&UCzX?G_RK!QMgL(c=gEE3oQI z^)aO{p=76)w~ttu-})-VK(A5NGx9ghUT;O}Bu@5|BY3;ec6^8#6WjZAXp27Uw=S*6 z3r61j{n%jN_pI8qxl7vFR6agcP}%?HYZ6eE0;GXGsS)G2cXgcvm06Z~YfLlqG zNt6bg;)s^dUx{q@U75@gSIf+z`lhCnOZmI)BORI!2yG#5+WH@MLa~ZLee{)srjN_A zfL9F-ecuN#e2Bub<%4#e;azXt+f;)96_|@A_%3O<-(E1{rQur-F`|@<)Z!qn09C}X zB0Wa@?CPS)e(ZaC!65*EHR$CyUt?b^FG@EU)FE$=bPCX zpFVxUp5$UQzO(eVEphz67TfPLrcLYZk(%;g+{Eg&=N>3w0sssxH0mQ59e5;6bDMt1?edukktM5ze9TaJ`1!FP61j zUD*A{#OoA$N)f%={MdwuHj$G|R?9Q1NgQ$B{=%&-StBiD*WGg*eAD65kN7Jsj%|*Y z`Vpk=bJ$aXiRg zgU`QHvtHDEn8yxt{Po&uVi~peBEwv`!7RSMM+6LTA5pW zLHBkM46X&e7mA28WUR0tWs07kHoL9s|AP3z{b%O39vrcFIeN7{CSzt?$z||E*`ouO z8Nvfs@C;(<5VE&JAk&8sxG`Ik{(%z@^{BW}O0fTb?Pk)TnW&NxZnQM+^ZiZpp}kKJ zx+zwyzo~lh_lPNf4z4>HNMB5~w;`+q{{9(^$NTrs0W#8{?x1kQK*`OZIn*LRUBO{t zL>XHrb?h&prWyIsL+6z_5GgpkSsmJC+VdO$Cm?9Oox_c5D6mDy;v~k`{h2K&zR{O=i(G5( zv>QPi&$ge;>%Z)WA{Jhc2?Su7Dt@Q$-J5{AEJ)MScfM0ww94<+H4FY-#`<-VjatzR zu`_sV*tm4K#iZvKhkGf23N@WmtwVye(!|7r%CpO`Ce2y?{QqAn?i*fh@g3}vTX-N= zN70+aEsv-}8|6KjJuIP?{`BkaaswwnmS)b6=9jMZ8UgP1Gp8=r*48feW_SQ-6-PYO z1Z~}(4NGq4ApBJK(IU~8d8tvEF*n&G+2`H@6N0sFoyIK$k`Zon$He^#-%0iuJwDD{ zhzzTQ#w}u-j)}O^M4=r)Fbam;R4zT0jmKLN$34b2xs4?;xS*kvP%Hukx!tKcOsydd zDszZ##3#98+LoawdD+A|BSwBQ(vjI*NOj#OIyI)#+b=pbu3Hq3j^Hk8gY8jnW~Tw0 z2mTUsq_g&R&qoD?Pwp$8>q4>+zQ>eY=@*!gTC@q%1M(>sq3?a#bN15a4N+^0`2(w8 z?pm^BNx+>ypcqHtXKxj>jdstP60=UX%S$*NH3F8tAQm2M()8h-5J^jlXcv*V0z`lb z?i`=ihs}G@zh>Mc>$ElyN0HzQ{U;3YUY4YY@#J zijgrUcH`lFwcD0aJ*s>A-5l+$qkVP$FKrnq7iq~ZjUV6n*{e^q^!@hY7_Jp6%7#y% zHyK-)jnFOs&7()N*cQ+tPi`mFKeF7l>vmL>!NIEbxR<>tbNob%j>huGUyKX>$|CGi z$l7bQ^yW&0vwIxxeA4BMP!CwX$s(65B!#}NT9;uy`<-t?#OlUJ}B<-Sdu-PQ`MHd|-T5_MW{|zewy+XZs>oR?pRm@C|o!TfF>u z0~Vgg1UVW#-2K%#uTF>&K{plp-aJ3iAD63Ek&NU?kv}dj(^-mgqS5Gn>4Qp6~}I4LNYj$BmG>2Ng3(JzctM==3qNY4|c z^{<gx=#uI!=dg~@cVfeWV-A$V1J=Fh>0hV$xjRTgs53Gx*fuOqn8x9`M-<9Z3 z-Lp!`hia9xMHqfIgpn#g_FhYI_gYdH+z@QJb5;o_b3$uv7@*p*(jEfJ!WAdx$v=%w zs1+l>JQr!1ze>+Ia;@ZH6H|$nWZ!=PqgKj27TKH>Ab(*(X zT1qD!1%SmJP%jgeWDqmjfQHE`+WoQSPJ`7>GHc@s1ISMsf8e$piu zwd92aU%E`!N)r_gWUI84i({pOf(|NVG4O1ARQnJ4&pE5$c)(?H2}p zftaSL!T?iH)9FEaU|+0^H&XQWyzB1RA+EE&^Ut=q_4Q-komzG8P~wNovY%FRE5qKc z%&=P-*14@sefrb*0MEMNS-mbVxWxbr{;9gS;C7Cy`>HP^rx$onT|vDLa7Zo2_GKjB zZdKB!6_6^>=5OEr_x<3wwaT)3&y>Excmzyt+psoJ!CNSKF> z^)AcNs5nhET;h27UwJHN9W!zhttzz8Oa(Qp9jq0CUw5%Z~pmr9)VM1fuuB1$Ub1kCJHw!azEiav2n z$R!~u`(#x@y0|2F1gJWt9OZXz?x^Okv5y{!{2OuV+_BlW@8pi(0E@4G{P#Rzf~-3> zWa@nQAdP9AIKTJp->+w46811GNNqLACTG3Ho0|fRkrID`;tF4vTWz;4ONJi0@~v8P%0-rgtKIn(V-(^l{Bk&TK-(NJkHlQ=X0l^1JNb{G~N_#^Si^G+(Yz! z)xrsIk27K|BT_FeHC0=qEDO_~l@s^w$3C||@b1OdYqEWBo&T`$wZ+is?M*~^JHHB+ zK9UI^Ru8`(&)hlC_l1QBYNxSXd-p)}Me669EBkD?+O~sUfHe>LJh_D^;&3DBRtmg} zyo?mnyxU*2}ys*O`;< z@O5_=N%cXe3Ho-4-X-t(n1o?OWf~(bcHCMymeY!wl`#5U#Rj|bFOvi>l$wZLc!~=r2}DawtVateeO|VSypnIMqQY~lbT<)%)TIBX5#(m-p{j2VuWk%G zIlt#jt%KSB8ov1VervnQ3}jXq%AHgK+z8ZYlskF=jGe(nB5O&2djgQ6hs=b;`0Ib= zqw!eJMa*?M%jGgw3{0O)se(F?I^E%K2eBwcripNGV%76EQhpYscU?HAWKt*1968kX zSl+^64(H%gc4&Cqk0&KbES3{bm5m>q67dM&(_)7(0tK#mQ%z~MKpph;CApfj&mCZ< zm;6B`;R6(nUVa19NmgvU!75kaQKs!2GmT%=r7;D>EB4LVR9ks24a||^^?`G z-;TssAO$<7whW5-{VP^jcFpS6#E7}-HJ96091wG*0V0R@?tR$r6Y|8oaI+Ieov9=J zGHxxZ3GrVz(=YKr-t+pi;xZqmzOIj!Kt6?tg5x_cZ|vJ;6*H#?WD2j#&Yd!{YE{-} zefNhODF9hmx*SQm`f*&v)PTcbQVpVv80H1z<+d~b!5%=lo~5IM0;{$OeNgsRK*Sc6 z+NS^Hjf*%55cC1t@C(lreoy*le3RSdQRY!=o8q6hC{MO{HALhPeVKcD5Xi26-3&xZ z?-ia0+5xQ4@oHYvK;q}BrFpU&)fJms+`6knM}g$xV%@s6)H|g=V$u8x`RW-Lmr4!W zqT>Z~!gJ|4=l5gv>fFztU$OJ&)- zguV-Q6;#`QwoL?!LNEyA)L>V+9(d?`0vLM(BS&8$3uQ#o$AydSACU#tkha`0@L=ZG z-RznJW!_=gTL;WOaHn@USl)Z}!my7Q^t}`~&3b>M5oS^4)a3=kKYA_-MR@<7U*LiRsm!jmL!D zw3!rJZ~rP_u8F?6gn$N7Xfkt}^g7hs*~)k)+$%I%KY>?J8p56&O}cu&;>XUf*QFYw zM*a_HTbziL>R88avcJ(}>-T9~t=Fiq>h5Z&0*A$m*hXAMT|NekqUz1vZgBTp<4G~J zPef64u(gsXwq7lew3cOeFAR78g~gDHk3Y%Q!}^K*o5e2waGc$Hi^x1lyUR7QO4KL| zuIrt&WnF1r8-DBz|FUhi(mL~ce^P}SW~_XHNoixoNq70aVv^BO56D5M_Td0yyPZN1r7V#61Ot= z_jkWtQz%x1=kLs{pJP%=5G#n$^rhho^58)P`UctX#W3-&45LiAwXKMDdqvu)=X6Jb z0~Vd0Q3a;9Cu?5k$#`-^;yr~xI=c8whOqRKow(s8dr9*BgPns#1teVCfD};|94jVA zt_(gYw+g{AS)XiDWTqae*L#OP{d)iRE|>>mWjR-bZVxu2!%91gg!DD_JozV2)#N<9 zGqz~gHG)+N96W|Tl#^Y4#VSL?+xIvBa9E#TVC$XAav`BodpMjB`0O-h$I1AAp;#ErpLy{ zqGc$p{p&bh(i~sPzh+pIs-bt6thaA(JrAnE?*?PQoI*+$b#u?3kt=g=MYN%D#;76~ zRzZzYM2Ib_Btx~tun5xZZ>~hJ<_)ylnrT}N1wy1;CW)Cd1s6dz+!mVOj24NaHOlmF zY-rEY@w%&(WO#`blAwJVTdsqbf&nS7H{U}yL|Q1X2ouU_T!+1xh(_BNgYiyeS$Zny z)QA!B@_UUG8Eytz@jWvjlPB=-U0XHj9>s!dWx~dfkrMMg&I-lurAqsf*>06B0tn@Midj{_lI;ro89yyDb)NbD|3`INX^l@C2mJms!&8SSJx0^LN@ipUjo#4wm=SzWR=0CfY?``}j>z;x))-;yR z5f0R4|Cu3IkI3zDy6POYlv)uyYsy7wR}<@%`YL{#DU3{;$w)z2(jo1egomXuqs2r< z109TcVvg6;iXA1(S`)3G{-t81j!S+-NpC*oV&-Y*uv>uw4YTi{|7SyS4t<5F+dqC( zwhH;CxXeo-xG?^O+z*FvM!yRtLc6%%VdZ=24?5%ejm%q0(TU};wB9zOtX9gSi36Dt zMTzYaa(UWdD_{RLwtC7Jkkd0gT*r8T>iebZqh5M|Ic zP)v)$gkF8wU7S@6;~{N#(tvMQkM?Y5dqjeP1fYG)o+EEbIAonEG^7H=obw3w6~>{_ zTFZUYQ?N*6@N-$PzA3Xl#QH-}y82*zeJUu?8Z0X60Uqeb_mY)88MWz%N$umf+#M2Z zQ0FQge|Oh76|Z=Ynvb!FW_*cYp{p1AU2v^bIXe<;1Z>#wHabC@^;U6UD)w**F@}Ry zBj@(=&LYL*&bk;cq@u1HZ)I;)AR8FyG+3YUEMt=?T$ZU0xy7-o+&^ZUCBXL9X^bP1 zk-tCW>UNYcV4nX_Qnx#HYm|K*J{E7e3!Ka;PR$_PPbQ5o3;~DbBZu|ASSH|al&O`G z${^+@5y*fy*i}q-toADq$YaW$4YIE|MZ3tqxiXBCN+e@Ye;{mIWd5?f{1{B*$&-dp zDc%vix$&c7XO(YuGw_m7gBLMZ?>siS6CzWQAj6ra>fJj%Rrf#fv#jg~s-N@fAWf(r zSmuW{u4cxpv{EmxZ_*xi7{a!S>5f{{!jU4NME4NW0HzHBzLh^nHwgI4aA^1a3Yj){ zr=LfxR$kEb+P*&0`H~a^$^)zVG(H?OHaMs`8ciLYDjJa+&o#UzsuXvdBF=E*#~j;D z+jOaO_5Z#md}@reDG05mgqKUp+HYklYwmmdNy2@StRqwOz4{P9PVdPSF?^yL3D3Fj zu#_Ij zcG&%WBXtx4i~6XT60LZ;G*(8@mPe?`Xj)@jzr z8Qgx*chH1uMZR16N8M*J$tDBwA_B;sycbct3?(tmy@TZ$O40WT-!hSNZB-oSga@Ut zzG>hT^OIe^|E#rztA*+CPD@5r`4o+>)bNM`J3}`F>l)@cj1Xl8&g16BYB8^a#kJ+h zv91z<1%hJL2ypC(6hgje{Vl4QofxnAuqnHUl;U^_C_oQ_AjcnR!>y5qXEm1hx-fM1 zfi8!g5Pwo+%{PDHBn|Wd5OsI;k{vrj-&_30D94AvDOS-%wYL0a`2lFh8rl`sDvK5B42Yc71*+aJ%yp);~(LK(VFqc(Tgff=yFBft6MfBbkS zPstsTdB+yXyUzpTqwaoJHp*Yuy%MxTyb~avvf9Gks>fV(cYRZ~hkOQNo&(AxEV)2~ z!i$ZQpmuKLdUL+ZW{Gk6}=B!9Jc7gWF~5~(uL%8J+4 z*I;{l8*9bg<0Dk_XPd2Q&E#S%A)i;aatAZZ3@WM{xwu5~gGOf5fm!}s&YXjU7-=T^ z3@)3nA?^Y=9+GgOn%P?OVHktWDBwk|01Jl1pwPl<)QoGVdHb}b+axxvKQr_DfUBc7 zvgT2%01yzLLM{pT8Rc>V6m|-`Z-AQZw6b?$B@`c<$im}KiLCnvy9%gC;+~4SSA3)q zSJR)@jgQh9hM4vJ1f+O;LYyU_?_cK^1Qf5lwxV}N>JF#Sd-rskJD29kiHAu6q1x;D zn*1%1Yo_@R<R#u9GPS@r2zg7~b)Hww+gdmM%%6?Ot30YtNr__YJoJj+u4_`UlS7C1Dug)RP zVgF9pv+0wIwQqpqBB5ugd5#Up z*n*77ZQ}uuTiS-vK8vX^Wj?>`d1C(MsbytlNDACu7HP@PQ}X#a@)7T3Pkd0|%5*Lg zk&FAM(Oyit6kcY#cz>!p(P)d}7T><`E>L|mEXw=MlNotN^$4fkZ`z)4q&=dlwC0+2 zwcHz%w1X=YXl{&jYsul`bgg5LZyq<;ne+RKOSk@R2{J9%VmrsRPWQ{;^5D8TwmUEX z#f{aEvDG+qctvW-AB2SM)ta1Wh}Zy6!sZO=+3)m%v@MZRu|9YZCKIa2kS&s+1dc@z z#Es=CNxwuOcm}dYtrdZ5?~1Qw?3~7H3m>y1(9!;rUtZzc4mbM7;kgO54nf1_zaiIkRnXF;GLc^1+ybJJm~g`TtPlfd)p)bRqZP--|sAVX;GJ$wEQ#-^l-ME zs~}Xp5s)u}ND<~~sEL_Gu1P-pam%j(r^YM5^cU=={D2!#XtdBh)JOCnFOQ1 z&%8MG1SM9ti7ks1URw;T>_PYbKbk>W3T={B&IjrTn5%#m6AnI!fi)d;g{ENgx?uf> zL{g;G(>ZqekNBP7&t^3qKM((J^@{UB=%-pwLKUdg*g6D!-=L(_GQ#5P^MN5OOAyc- zEc4f>K2O7c6Mc?S>DkGs&yVNuHmt{+!di9;Aha0(gjM5 zSSuUHeX@W5e!Iktbw^CYpR@X;E7Jl;Jr)Q9gx3!G6q4n}cdiq%x`uNoM?p}iw5uaQP_zF zkZMtkTEJ^Ty+XWL=mjwg`Ux-jBEurZyw4c+keKZ&U`CcAUJjaP58c~lbQ;j9o`2ea z3SE_3&^}-6w|q{Y6Hk-)dX`S`HKVYZ1H>c*1g4LykG^++rUZe+sjbm?XQ*bGxVCjNqX19@bAMmu~wY2*E0y8xO|r{6|%gR{{D< zvk10KQAv3YdYx8MeQ?edN5A)P7lDprVj=@FQixrG=O(d!o!?PG}%#$gUAz~n?X+$Y_V z5^mnqHgfBp%v4~Ir1B3@?j&tQpz;US=Y=EJ71#f~&O?)N{676;8(m^ObHtsWgdkk2 z(j(s}T;5Jdhuk(kJyhZ^;5WbxzFN;4@@OGCN+T{qNO1KZ9hbzG<#(aQzh0X-dx-QB)CYxs9&Y`xEnN6-q$ZQ+!5{etKwiDy0;4lnV(~MEcsIOg_GQKe0*VwK4*?s!({{@H9d%%yxU{kU#MQnv z{2NCG=QvlxmLPEY*Pc&g|?EbAMbJ*A`GwH3ny zGTSo!Jc8|Q1)JX^*1U3sK=+o*BV8ptBE6V&F~~}7q$h;?q5x2q9SJJ;{{12pQN5dO zPNbPLi>6!t381J&2TRkZO`BGeCg&oT&6Lg1H4Oo)AmdX>DH!qUT08}fcws|!KbDjb zFdE%hg~9PwmZ&ILic&o+a42xk*UjIYkiH=gu7wZ=xLzh`D2W~&S<#5Zrcaf}RP#9J zIrGG*Cd}(Q6HV`5&h4SLY+v!IwO~-`#VhS$|5pZ|+j?ncZ=q*5Z6K0Kzxyz54crU@ zV8O17cCRc_nLKnPIY9H&9Vk}2{KPsWzla&q#|9|3d2qy56Tv#Tbe!W0`QX$dz?9wC z!$it92TO9)1LaQXrZ*6XqchLmiU=_9+P0W=if~Tv$|n0|aBj0V(Y3NC_kP;{ZVx!# z*bdE~eL6;oQ!c|V6)6a3gb*v^V4b@Er@olItF73o0dsK0_UBjuUvuB2F!JKi7fero ze}+Qz3_;jjunoD>n(TP^wHj;}}2jbi|R%M?3XE#q5W0 zwyxVnU^{T#49lG=gKw_X*>swDU<7euo)e^XA0y5wKC|`;oefqb;fojICb6tyiqGJ% zLESr1i@0qFvw*Kcv?S_H$<9L_bB@fnv6-q5%8yg2yazq4X2L)P>q+?Uews!H$*kZ<} zYNou}0@DEf#7cC*@#?Vo+fO&d;d`0cRE@PlLM^a)v+w$6KvDGc`HhJW>J4=JATo+6zIydnaH!=?*ATv6kWNC4ZRz;nBfjtf*I!vx$ zL3JswX5<{xRbevfn>ac|(OyeQPnlU>AHCfn&F|7BT(6qae!`BG8^)1njxt;fW=8p@ zMH9&NAkc(Lhe|t^$2N~b2WoZCMI@GT*gh$kb#bZN&vUe%@H^;aqw_Q1JPZV%kilH1iR^V&p-lCN z869_V6rP`-)o%<%732$x(&)Uz#Kh()f|t&U?3I?k2{H4?*1Dd`x$5o3L@v6cJ@heq zh{&1h@OPh>`o+fgU1#0ZOJNTINFwj@UR>1+NnZ=69PdVK2i+cnIW>Hrk(fr+yAT~k zLUVfulb+I_V8ArTkXq%or>ZgT`MR*Eiy@;fF0Bi{Ls7vE%+_L0@C)iHP%Yp=H>G~? z{GY6DhlVckY;h7tO!)yZ+Km?C&IMf+zoENlBRdw`2Y_$y-s+Nj!FT^(0H(Xh2_|jR z=JDXUocis!l@LLqr2!-g7?-Kx<8k6c_n?Dw5{8v%p$OSr0NyBOq$MTzH zQtR1{BTM`Awsqeh4@#}M4h1v{8EO<*Y`gz-^%`ru(~BFP4r_f(R9%v9Ld_`Dp!XWq z$+Enr5lvl;|IM(AZ5wo|Od9(uX0Bz&qdYtR&TeXrtA5q5-CgA~aLpjI+NM62(|#TJw?vq0w!AJe?#|!H z_Fm)lBmnyoCj$=Z1)DK>*UIV^;ACRK#3`|oV!SFwe*_JIo63Q^#cg|Zp63doy}MAr z6*@*5Ia|N(owQeIg}p-!g{)2UssqgA-=Xfp(DXwjsXd4MA9+_2!$a%r=nBA!q{&3gHesP*%b%e zhu=~zw3srGHjIv3>$)B+`__j)!I|$bQXJ9~l2S%eKPIAm@3PNU(cMC6@16?@u7v}d zB+h`PiY_*76nmmpr;E}Y{gc%K&Y$yyF3SqJ7zqG>D0k0mK#6E9ioys;FNjB?S=Cj6%Q}J9W)H%fv#>pk9)m!8YkoQ z-Za)#u8IMfIiEhACeU%kouHvJ0y66d!X{(TmzK+b!ajcdxTMoKo_=~U;*u3c)eyPP zY9DHY?Ei{BIkBZ;*TuO`j>C4`j86itCUr-kf`aK}8QH|1&XsS{vxr>NXWf)Rr^#LN zsGWl~6^u^syc2xaFg1rzTXR}3IxPW>y+RZ!In{2iGP+(C*;2h8)uh?|+dbWzkl+hk zf`|$;0tH`y6Cw7}BG=&5-w$OQ8~0bVt{)?f^s8{dirK9K5kcZ4N|w&eEfaLSp07TBWpTU4gDc8<1uRvh@<39|-3ZcZ25l!H2HOPYDb-Ayd4BM*7x;~+ zL2*P+@IAy<5y34>d?#!Mwz1nhdkU13P`N2CzjEs7*HW7yd5QLPl1s15xdA_hIl4Ez)ouYp$z2@~mFm^^UZ6V=4rQ!t};y{uiJg8Br2*Y;8MDw*h;?i$k7 zSztjzYzy1GieSmoQVe1}SCsd!ia1+gWbRbEHa+sQL$AMOM^~hO-g>qwqO5X;ongCj zcY~K2Ij^=vQiqG{Zs&vZFjb&=tJ0v@wO72LuiPx60I>r$c_&H1T^bG@_Fik7yLR=MI!dtOYhG;BJw{!_;MpS5d4 z4lVy#`=zbm_LhhBQ(w!izHgg)Q#7ZOcV}z&-$S~{6zgx#ThzuWDaGEbJEAMI!Jy9P z!xR)sTIbJ+R(G@~teAR$1&Tzw{~9Dn-f1~wNMn4=ru4@M0>+zUR-vACOf;FcrhNPx zBK~ualuv~j6@>P`xugWk3b*J-hx$);<3HEGx`%zMnF6{9P^$#l-H(x<(=+BU-kJQ= ze$WasTe%~Z11Br#K0sxloR8Aw*x7oKiSL0&)n{3l)!UWoBYJCZ#?4j zFqm%5;XO}0HC>aoEVQ`g)y7HPjV8nK19+5wjPZuTu(UM47PDFl+6<`e49J^=T2oAU z#V0>(FUTgt!#%+`>l)Y9CHubfE_a=1;gX)7f%0(hP>oIR*6tY9p^KA^hI#$2_xI=N z%lxRdO{lp!agRW(SpG+MtG+}P_^`Puy{RGnU6n}e7kM(UUM%pY_p@ZAI)Zy5P~epmR4P~3rELvpv1v^n;YOnO01SuK0PUOnJ> z`2p1-f!mauOH>nR-Z>{b$DVcw)UukVDN01s$pUD~B(ozx_2kDy+%x_+^=b*NLC?>#d-Uj$ zbPk*zvK;7D`7_gji=Hem_~#Jexd!fPUt^gbC1V9*aGM2cxIMpSEqhnHoED0 z;&+Fvks9cN95I%feLiXMW-@bR@1axZv|ESZ-JFCCy37hR`x<$6>W8XgZpFpk|^$OLVY4EEel zyt8@Dh3NbWG1;Tb4=;sqv(%n_x(hCB$3c!D8Y|B`KI9bC;?&c7e-2t6FisT7=sf!5 zco56&bqrTULc#|7)Gd)vImaFv@90XCp5o-a^GHOVGT-Kk=G$u}O%f93qBL29Jd#2d zS&Ei*qfI6@YhksP;F^CTywUhJw1olx{8AOaVzkX7iu9i-4=j2i)dtflckUbo)v#NY zUla>>H+m95e>HPYZ>cNKL*NOqP5s9&Hg(jG)&2J6mgOF7M8cm%u6*`ZL6!{Z>29_g z2B`OAa8a5-%8L!c6{W z?w~dc@A>WO;df=9%w$&Y!UJ+amva~wxbAJLCYD1_VKlOWiK5^Ik42Rz(_#!agp--0 z6h|ZGy7yhv9?Xpmofi7Z0$VZ`or3M0`pWI}0Li|iUX%MhLooJ1BDz?`ugNGSui`+v z!_KM)@J0)n4dcH|C%+Qu3pC{Pd2VLwRQv>MxHEd~T_BIF)Mq8tk4q|t37a7 zl;i`Oz49_XYI??tyQ{TpT^K)E;46*0gqNyrr~v%w%M>X{au+F}Sovd#uvQE=L|u$iG!lv*Aifed?9UiaE1moexd^ud-xF&)CSR)io9e z!kQAoLRXODePeh0>tCrLia^qkc{Hcrjj9d`Z1*F>BdPzye8<+>kSVl-_;rQJ#8HWRff4b9U0D4J`DC=8fqk^ zi-Hu-;}d}Jqp(dIiL+9Ln<6s(iNgWgN_P#^jTI-gLzis_=FK!-Fu%N3SII-I# zYoP@qt}`ZiRuzFb7oAPUNGoVxB^b;-r5zE5VegFVV$~#Gv_n2bA>B9s`aP1D2x4P9 zf?4sOxHY`q-8UVSZ!*>5RWdxm5g<(oA&&+hlM^#X=!5ud3<_@NKhUz>LnCFmy_&7z zkv9P_tEU1ziP-Uf#MhHCCHLk1GQ<=(-P_g9PHEqEKMJg#*!aoi7ry3KUyl%>gr*AN z1I(?~%hH~BZ@`p5^FT8DdM)nLL6VtqJYQAVW`%$-r0WC%yjDxsS|FEYbC6x^jFGAf zM*>k8vzZIPSgSELwR5AK1b^&WC&XG+_4ihW%Sm+o@5EE{8{7{2_fKbB3!N?ee(V#Vk6XK1|*RqUy(5<|9fx09$|s}-A?2w!|Jqu2zT%3_2mIlh^l8> zgs@tn(}4-r+-c|z(x#)qSafn?4+G}Mtq9G1(?hQ3iBbMvrCg58I=o}Y4sZdRtTI4y zYKOdp`wmar*&aS~@8G=NzmZa*IcaF$^&QiI@9d2=QVyj1MAKCM2<qpWTi)n=}{p zmvAO*OS9_3rAvb%RLwQZ#7qO4tyyg>%ErpbZEh>wZ?4>v%dNw)-+%)BB!yQWK}mJY znF5#8SupKl;wMlf+~9L3{zC!3(12oW}WQkP3{q@dmY>ing+p^$V#-3Wn4 ze3H~8;^~~1qsctuaGcu$`aEH4pgN>0leLx%+t9P*HnI~1Qvtt>SjVW>r+IU?M_rnw zGL+N>=kjh;DA-lSdIwuykS)S_#>vsdbIbMKLCOI*qp zlT|iy7PC6zZEKIphI8gcdv^s#+Hnq)BYei|pgNZnY z_CP@c6mJd_3*W~bnkq&=apsF9(g2IybE|`vo`^M?_(Ojfgf~^I)R)w&87pUXzV)nV z52~GrmvZ0zOql6}!(Mt!`Gf!LR8b-!WD~$_i-g-sXAJ|mQ#p6wQB}<4$_)beE9^7^%Cz~4C2UwK^3v~h!@7jp67#{=E0r6 zJ0o%megD3Mh)jk8wa3ZF_&@#)n?zELoSLl$WDHYSN}jYH$zDPka&FsW<;#!!N&(u= zc`!|fY)V|>U#(;K#kG~eV|p?0K;CEZ2w8WZ&C(KAFCTVulj7~r#=B;H_9^YPZylxq zDclC6x45l-`QdhC2AJ*jy&*N1Hm2SfH#<}u5eMNEN|^w@8zkK(W~l$BLqoU}xG|a> zTC*kk|DHLdXUTBA_3L{$cUyb;sR%DEx-#Tdo6GAn!zA7_3haMtd8Qa!xc_Hx?snI# zH$%(!M(X!A{gj7H%qn^?_p8@Hk^D1l#n%fceB;1J^5f}&g62%Gx<%y%15WJEWOo{M~w;(f-HK48t84v7ye#-9!I}n(!!NE>H_O53BU! z{5(9oO9KYI*mYX~GR1yoe)GSp2#Y$|34aJ^cx}fX5&}2=Q)iKy&&Hxt=?Z$vH$7|F zCcv6mw~dmv5#!`#FL8C`LlwV_Csxs7;23U0?o$l8<~zxX3)=0sNC8a)S10ZSg}@dk z(}E|-+u)E&##bj$-o8DK9)*X}x4u^=iVdnWY%O-rk1q@r81wL;dYE zKZLF75YsTCTQ3{o1-hzZ-oT?XP_A=z(R;!!P~}(dt4%$HC5;fli5fW4{JJoijH^6u zPbxRukNO@v^c=$!yB;v;Gl^RmSu6jfL1XP~NVMbKCSX6DR)M)gKP~N}vqJjA+xPF6 z3rc;}_eozaZXvOYRoZJy#_%Z7K0!HRoz#0v{I5QOw3ck&aaR2j%ATsc@4=7bm7254 z`ZpzDOj5aP%-j9h+UJc-Qm`4BowP(%o{BB+vqDuKODKNabbDJKKU}@WR1wD`lCH!y z3_6*)$3h(6ZxAAS;c54g=vrT$WAKW|6G}uU#L}e*XhFRQt@P={OvMW&PY(VNwrwK6 z1VBWlna$udwgLwGrSr`T4cXstcM513RDp9lx}*1SW22fG!GC% z`vN0r6mdtAa!@%L^9$|ss*X9|y-f!v?AR7ncPDsG*t4I6$8hE!sLOP4pUU+9%x}b< zKHoP!n2qwCL}RfQ+|r!w+B!iPT}mJQ;*iu~pE!U=0JZ-ZN48_NrTIGdz@L)ZrTv%D z6wK7)*t5Dow}D+ZYNXdD9|l3B6}qOiWS}{qQt=4b9byh`Vnzm3ONku)@T6?O}Hj2cV~Gw2s*?Gd#d%EWDxXYBCikm#outFc#O}I3<=lKW zMc!Vtl1iEM+-r0GvNIInZ)Y2tTHv>lZ{eLq;*ODeAHR14JVTFgO$ic7!njZ7vN@V( z!ghG=Y-|&bSRljPW%wd1?@5>w7W$}N#uLW5o+gEe#=$~7wv~N%0y>7lYWI6vs3pDv z9JXOe$eYvSefIdpeE*6FaPSSgxYLDgh@7Mi2D~2Wmp+zmMC>X2RfitaAH6JGbd%g? zA}2$Xa?aN$HWfO&FgZeJD3ouAJa4ffKKpwT=)5}^_TOIAwPm7h)>%*V14pH{OqF~3 z^6=&zOqtaX<6WAuDeoZspMn&68}*>2v^iJKz8B-BgRKAFM=|FMDQDDg6Zwos&$=IE zB^_xTkWAF2o<=<&F}y~u!Y_`SXSn3crs%bQMkGI|Yz#ZO`a`+HgN(ZTl3F;Y{`APV z)tR#r3%j%X(xC$nj*J}03jLA8F#rd3V^+S8@yOK|i&W*ef^%81AUSh$&QJaQ)m=Dq zU^og{l8gRyYD#GRgrD8n$6e@1Xov200bc!3h9e1_bbBX@4aAxy;0%zAqopLJ#iyv5Sa%AIe_`f1wrW9|Wp6+n(Kc^68+@ZDGx=iJ+3 zvC<*ONNg_m=qyEdUkmP3!UKBLd&$b=)TRZM*$oyn8V?=}fI_Gt7hAr1Zh2*ltV8D- ztTe`RxgUnn87O=LkRdP7cg4x&*2Xt#>6--e9lB}V)G_^J<~+Rjs@x$kZHb%|(ihKD zqXIM1Gd|MH-!NaxwKQxFNA4a&ll<5LcoS%|mY?tCeSIquRazyHfVTJH>viXdFU9P5 z_Um=4ORir$x6@#k>@8hlXP>FKB1`eWsy-~^S38%V;p;LORe0-fTR?pZAq3cL&uEM* zK*9hbhwW<=FAMum8Q(XH_jZPlf+x-zT_udo%nngn0P@kLwnu33h{Q=)ZKlf_s{0yL z5L(p_>%{*?s>Fqa1Vyn;SQ@`f^8C+zHvMHPPu<#4#NdCSTo#B0Zg78T`&%V!A5*0&Ann2xr*Bz{_RkUeMXd2byAraZqOWVBGo`h3Z};shUBs1MR|VQB?1VbzWn@QEoP%v-6>08J|IT$i(<(&2yqgK>C(!A94bt z#=(Q5j8&Uwx}?vX!WkAtl9t?q`L!LOl3G`l{JtQ=W@cu>{XoQJt>k;V5)tvIf9~(E zth+z1ZkSs+{Q+hrb~4HC@bVj%f4yc&u))%Ac-S7ZRVLc|lT}7)KfW1=*ExVyM1=1dZW)p&cm$@h!w8(GhrcRfcnrU_UP1&k)gb@!itc!9 z=kG0Y;>;aK)VE8_SkyifQ=>1O%!~U?3%@Q_OEnt7uct6Y(Wix!+4q6p%6Bw-QUaU&U~u*eXjI~z8t8fhcdB|!yD+-t(XrvkBt^bOGwD{s zhAN8s0ngdqB_8Y!85pR=Ru-0uLcK@7-x45Mmc%E9e{*N4cJe*DIvlx@*;D{TROL8V zeF9&}H~mt|_sjAsKX>-|%_>|c96*VVG=237C~7OY(X$S$BC1MAHhyeeXLXHGJNiy1 zr?_EBWSyK}sy;`09j--KhoXv3DKedl&gkWh&si)eyNRw!LR)&D`imtOjE{#*ane`$ z5@Wwt0urwMp?=jLV|xMB1irf`F(}t)`gC{eh^W_HL%Lk0mD(Mo~kRqLYXf(4>T zPQcxQZ&Hz8ka|%&sqRkhYHxhtg2#8{D5-jJGQkdgoosRUH@{XjekKHXJBCdMS4dKk zz*(i_xDTlg!ylomD4q``I^Nkb2h+Rhz!5-O+$eF)14BGp$>plKLFfn&9sg~_NqX&} zm~Yfdd{s4!Dk(Hu6MM}wms^>++BjD?rib>6Py-vA;XnY^aXVrac;6W8cr}1HaO1<^ z%R=JosYl)L#pt}Ye&+Qg>ImX#&d!G7)QxvcRkw=9M*70<|I-3^dWftj4k|;#<(&hj zII4>swh}Nv$rsy3F-&!3h;3b?B-L8z)^;bAO5N%7;OU1&*}uB@n{gyQphXG}+PgG6 zwv$X($`kZo zS=vh(DMwAQ_n2a+_$MgeXRB+=@hXE(Ae=bBjj-r^QPkb;ZD+15j)+!XL5+F)wj-)_ zzx2hno)?W(>o;_JVsAYeWhmM7bNz2*1~cpA=&A_g#h z=svqbp566791C%6oh-U9X7Cc^fnUd;^s9Po8uh?fmA!C&I{eY6%Skc*`Z;&Ic>C3A z6+aO@k1{~3=wPo0I*MU^3=Cq|JL4ZaUEYXz;K<55{J|{wGKJJna>^F{Erfll*z1FR z-CID{u@x)Y(7Sg7?(Tr?5c&aNtI>Ji0o^(uP;PXd(8t?k+?5HL;RWRmrqj~}Si1F- z!SYD70Uab%W`vuLsLYS+%M{BN+Yl@8bnfk-Q?#r=SiJYX2RaSy>8aeuJIAU0pwlL( zNQuI@duZncbjR8=h2G#b`;$G}8gh-Y4V~SSMOa+Bggm>^Q?gcFFjl2uU<}x>2W|!s zlYxcEQFwOKd6tW$?egrbj8y!RxnkeQNd#GQ(TF?_+ZfTbq+9Q1H3dQL5ma0O9g6hW zA;7F=GHOdnhk41uSR{##|6z934|e^Efh*Z8?j4j8<(eV)~YbJcf0;(#6BX@ zSc4aE1y2os<-fBq=(#Omwdb+B$U7Y-w;NP!O`025py}0*;gNfH4N90fkcpmZnk;Oq zlP3SqoCh21C#X}lVenHd%uuab)<|UdSg!hwbj%J=FXo z?7U`2=92$6D}c6s{p9P$kI6^Y`WK_%W%o?mn!tgXd(y5gRX6?T{^KGy7Hrb}{$ho5 zLL}jQCx-usG+AFZkps{mFi@tu{5X6j5Q`{PuknI^; zxpKrP$4>1e9~{5Cb>GCIl>Q+(WxI zHSDHON)>DeHNIB0b2O2moBN^9{aRyDQubjz3Gv;euE?)+i5OR zzMDAzwFP6LaYne@d=lBp{(4B6?$8#<;*Ns z4_;usw-Tz&w9_=W1V|N}a!)BbL@_l61O!BvC1T7m?ES8DE^8WlL1VNV z$8l5d<6YXkR46kx9h9wJ@V{S#sx3?LLZ3dn4&NX z9Jj65P*^_6N$o$daoJ2KDjuOf@SEw@YISqgwH6|+@J(BGZx>I4kgnB{Y5(EXsuF|J zE@5njv{S|6UBWl7rs_nc1InLRQ@Ye((-5QURDb^R12Tfrp&G@#jo0_~=^pGXHD8J(DJb7k4 z9%H6{T3eL|buv#1fLx5rXHt+bHkX?d{_1v>`itNyCELiy;CT0u4@RL2#C5i`g_aqv&xpal}EG>VKnj4V48(V!%l#?WN&@t z>^1u`WzWY;e?r|6sg>evQjO>{p~A z6A+_biJPHH)`gjJQv8e;BO;_Z9n>F${s(JJPsPvPb(d$xy88a0v#0Vi@Ck{NuNJ%L zewNLmSc7jV=Zp``IMKUP&DwQa=))0W8YZn%Yz%9+?W*$G>@qQB|9Dr(v-JE85Og1+ zN7CWQxm9~2cOCYuHJE9#iF<{9T8uAZ9g&mwK+b6reV&$|84B9>H=SaOBd??l1HCB2ljwAE8V4v#_zPvkeHQN zmqPf148r)Hyl~$1D!}YMv3UpMd#MCp5MdoCtVs5KMhLR(jl`f1AfcXgKZ+EA%QoYi zCfuEWeLZ$$v%X@#$Qv=HhO_#jkvsaSng@U$E)`uqXR3I_D@mX`GF|cjsgA1GJIs7g zP$FClNT#t&{x>ARzJvrjeXvT;xX2nk3!&Dps{ za{eV#_vZep2&6~RgLaOGPfAXkf7 z-s3Z;udsPL$zbM{@O0}ToBXF;xV3P_$c`(*sWBXs>7xTn*uWFHu8A%!SNxn^&z0Jp zu2hJ;cI`1PI+79yNA{Ck&Hodd{mXLo?=Z=@$~Kl97yM|(nL+ZaoXzRo#AR#$NM(E2 z*J&Z}Isw0+0sM`Bnn~mSPKw7J3MX_8fD@z70-QMWe1@Z%#M655bI=e$bq?{4Vxi}l zO2?b`i={<#bNsp!?~ls-Aj1ZR0EpDtujHVOLF?do4i#3C@)x;jtib)m0tsh&o{C0&HxT6QVv#_MIQn zF{Y2{wKo7W+-p>BZoI|D{J@}D+JZt?l<9o+>95ABDA;;tme z?P%;cDC!7sG?yRb<9VzO;?GfDGop;gT&9W)1l2jD`tko?|}m{x@13*?)(fQHtfv zg<{D93|pizzKyi7P&v;fFQlGa;=&Z@kn48Yg}iZGLM=PAgZX)QRfR}-XG4G<8>2WT z&sx3Y&t8^xS3R#Rtlcd;_D) z5n>Bot_6k{76dnD>L{|sIlAlRQHMNB;co+V>~SPT!Xz=M;Rb3cc52`lMIxlcGwBhT zFAw3*&HDrKbqi*HrAy;y3_z&s?Pd|95RZTSqtDwf+_~fb$o35!=FhK#V?FHO-I4_8 z6Y>$xg`4c$lh`rMiPl5T|A^(+X@#sdNpG{!oIKBPi@iM!^?CbxtEkSDRpOc0BIxpT zH7|R<6C@+NC~gD{xxt=KB1C;S_N54>2QsQXj*+bygY2Wh>Lb=`!@9vl{TjmLJy~O z*9!Q^`_*Kvfiv_qD3=?P-Djy=+40n6;Sw)4`3g8D zAsZt3~6&QV*^*$}Ia^nww>Wu>7SY=Rs>`udsxGVBKYcXr9H?=a-bi zr;9-)R$jaqRB=X~VG2R;RiA8m{DI4q#MM}YNx2}L>aiP4;4hZO zNE@E(@8u=78D<<)>?ScR3+1oi3&h0A54}LENJ?1m4bzF<6cZo6%4$jKw4L#*$M7-i zTsHOzYH{9Hv^ zcni#Kh)0w(?%v4AUp%IDgI<4uu7N`dfDMyY{y4EAW25**cz40d ze|3U}Af2LE_r*Bpq=!|UtN9LMD1*P}+U54DU$&tZFzo{P1%^>Tu>=^XfAZhiu*A&l zLUeRb{I0djPJgm6F&UiqmSKgn!}ZNL(a;1D!m!0V1Y5v#0WrT%InA%KH7x%6Q}`+Fabis*W@RR8p?JT`Q3cZ+FZ8~>la9R|l=;lPw>+1R+LCcBE1uo^?J9ati@ZzI z%Zy*b&dv?Uw%a~O?3a?rD*=`SdrS}hk7B?1i>g9H-=EsP|(gVD8`V~pgD z1cJi+%9-M#a&D>@?HFom{)q^Zcjh2u;9nV#Pyn#gAsqYVA9a<$#d$Ig8b?H^jpCV! zn*_DZT942vY0jwZCwcxVv5^OOQl9r*=>}Md1O#JA3|l}qLChFp+wp>zEo z;lHU)yDJckvMwLeV09J$!iK2VQ$e+JKkMljV+h&JG zKEY6CWgj%XTB;Yqg?Z&tM1)s@{gy5I2RDh!v~AMTz$mztxuRbqL&Vp(us;GC+9{;! zho(&pJ~eZEsA@6Pdfx>)wT8Si!db(ehGis*}$ zs+)f)eBN$TTy)Nw)+#C~VneBTiX|F(!L0n$Q#|I8;>4%GG50tyZA#a0Y)GZ5#Pli% zGq7AC{A0NbIgaU(sszK_EX5kYF2+Z=@nQeo6d7Vz7WN)DXVh-GZr!X0!KY{5r_ZvQ z$$fe#J=*Cp#sD+(e+cOcCjjtH7U7hL+9bf{F_Ma?UDc~41|5>RTXntURPtqXqV0Ch z+k)7IMdm;q=A2v_0ob361yv-(vG7)#j(^OHrvf-K@C?Yh%inGUC~S-h-0we zoZhU zWeC%TT<1)w?WSt0Io>+3aKo+fwDva<%B)MRf!pD{-Gn<1GZ7gVX1jTf*zLV#r)&uQ+E^nwC>)Y=MPB6q%Q|Bw0$0Q z2s^vBHuZuDVwXyoYW!^Zo*yS-x?eR^2I;*2Z?bOwS7D@!9mnroC{yImo$ID_5cthY z3N@o5n56HExtu!a@E&8StKjSK$U2JIJ;o?d!ZXk54rJdc@z0yc8qU3cOY3qIll?dX zvfFHl&)6!*w(UN4Qd5=n?Io<;FPdM&+U9}G^{T8yOnkXvPUNq~MRbcx-9WJlc@B3# zr5_y-uZV|JzRP>J&gjPc1BW&RNc)IO44PNW@q4TI7s~Minfo2IrPipt#OpU8UpKCV)L2CmZM%IaQ21RKN#VV}A$&mUtlaTu~k4n2K$v_kH}KfH1o zJa3-Y28{s^kvRD7bRt#f%Bi7VLzp&+I${hdpG>Ky73_IICop4nEb&^ z@SxW5>#0-g-s%{nX$X#wocIRoip6^s_RB`0Q+Tvq!?d5qNOMX31s%qoSPc-0#28Bk zFAKh;uWce2rC&Q#^mGKwY77;;EMQvJk|$>k8&+nxA?KP#*@cnNJ|C(^XKb^awy!+F zro(19XK=)fcX7MMIJZXC;kmySJ*rp{ti_&c4NC+0Hyz8K)JcU3+ypxp?yKu2 zp)lc)wfzM#!RQY~fIL?49>803AAS%x&n)zQhZ7crzv9kn7M{00OCcS=KMBP?{kv>? zEPyC+hlFJD@Sf>hJEnm=ND$1NJ1ainRhnl(OvJ}6zV-sW#?tAx0?xLnz)kfW*h9i5 zKslK8M4Jo21|Dut)s47WgfpBt5I^hCl*y7qbg4Q7y9P9$lO?nbr_)BvQ-ND2Cid`F zt(9;0WTyNUqJFUvE|wJ0$%~stxKDa!1>Xz5J>kr{r0WzDv#{4=_-EZ zKUx@ddN=c|d#mG2cZk$dAT|gCdO&V?;QBQ}z^L!a>Z?4>Iq{4Kpr&5z6|o~&dNK=+ z#HwCO5Q6U3v0)9$cfZrWh;%B;4>whNr`U||ujtymjXEau`UYtevwiNclrXlRA-p^c zDNW7lND3|9{qCw>{|CeE1LXet=2~Adg=6K>jXiE7WF$K;u*0Y(6ZK2Cyf`JW_I-2%GYr~cDGb#$L<6(Z7pJ|cEsWuM5OL2tso*Sl%s7CQGS zmT_=6HBhD_{nDR#pcBkJfW%+9zxX^5g4y)B)zDEpWw&|hucnsQCQ6;9o;~>9pTQeC zg1kxf!~)%ye=;sgfX&X+$yX6{?BdcLx$(>9oDnFK4!tioEHb# z$e0O+&(WBeyV9M<)#RoReH&`+i#fwI6+e@$4&`OF#Kdo54& z$uGD6)#oFmcT<3CF)32`A1*ZG>LJ+|Id?Ff(V97)^2wG`rsfPTv@_4KFoh@%+_OfB zOq!`8pp~Cd3;ZdH==t%r1+0xwkm-q+qE+r&eN2+pW98`Fg|ep?UtLU}+_OmmD~lf0 zk-&FsuTS|IlvUgk($>7LIlHa7yPIsz$u77w_Ms$r8ivlhr7kaB`X;-e4t5MHjl;PW zso0Vs(-_OOpA{8^-|$7;;p@1Emmsg-rbZFYV>o0$K(BmLnKY)DJ6hv!zdufvnk;2!Nm00YcY9uEWz1C{1N&M{|Ve#>Uh@Bhnocg^5B{eTS3rj#c z7mTlD&WKnTqQ`uSyh*IWkPx44-ISTORx(*#1J}^N`LRIg&%y-ZomTSNUkOXRKN~GF z*1Q@*E>VA=jTli0NsA^b-ttba7H! zL%fEF`2l4NJ1iwsuH)~fNep_Fg9FGRp)&+=qugZos4mZ* zJa*}>-^oFtYlqnInX`#si?^h|i}|8OLwi(jc~Gt*7F#4-eom@hX~@t7Sc7bYU9NUW z@YL>@ugQ3BJ^pKc+$6D2B_<)K`pRUXnUCAGMGTpf@*R4?n<3yGmj5#>U<7!#*c>Zg zzAp407Xo)sVS+OP8ivOn$I^-#nucpmqww6kDT{NS+J{MWwD5&fS-hiB9Cc=Az=UnF zi#6)^#{Xu!Z&>vXR-dPanNGc6Y)OXu{Zik#HHfA!A`=?6@!Fe>-;6;9iUdFKXLPt{5jm({9D*qv*$%Zg2ii3m|Y+*v}5Q3qZ56 zK1GFVVt_L>P;<)W^F97fRzhsXA+s%aq7S1}K)R1H>T$OMx@$m70CO?q?!ueJ8v`nn zT*o0Njyu$XEz*&~Qb`}QIk`LrRq^{R5a_0_%^<>D3!&*y^MTllNiw?=^EOlWo#jWF zg83Ugu7R>a(ZePyS92|OcLOR59kAutB-&Q`pccrY(|_QhPfNFS&w!b@S5` z&P`Y+J7B#lI;F#BPSzkYFOQ@8`))34F8TRox1a4!d_CUe2;Iv z^!_vOj(`(ID;L+>8!&Yn)ONA3;5^VWu5*Qz{?f^^^R{w>-RGhjes?kkV?(0znUr<| zna@7bwWGWBhFATWM**!syFfzDXgALlfm%>Lp5R(|Mogu*z_7~zC&&WVHfN!2%+_sC z5MC3Y@Nl2N*!@vJpfGJWs9o#PNd>BT=U!Gp)j~f~gT%g_XY9X9F25x?DPYXQPxy98 z&N{MGrF(*bflgWp~TZJ7$X;x z_qmx{0nWofg+zZx(xFc;(~sY@jFpm@mBMaA%S-3CdzN4N>ExGg_yM`5v5AQ!zDwD^ zWTe``II>lCyBXG7(3p_^AIdbN9=c&rA8F&)r?T1dl_H1%e`BO(`tM}qA6q|czE?z^ zWmkrnMpBpa%eEiubKi})6Iwxdnb|e6`?vu$9#!^3K8cF=w|#tK_a&5dk???6q&thR z`82wXtk1?u5hIWqjT~d+dg?Dw|gw*%+xG+BM0h z&$Ly&hck3~;hQgyM1(Pl&B}crp`@9wtHfg7t;$~jMN%(vdbhDzX&`STqo5_np3V%Q zBREqZGP|s>??URz-+V7(XBCeQIx~d4>3a|kB!a^N zl2w!}&}*~uX7EV5p4LPR)T~GT-A`t<(?eyU z+|$!x&(Wx2`4`(Vo%NJ%FJ}gUf1<1LeUyu0ip_~g=hcZ4U(YVN_J&V{?|@%BdE;|K zQ-(BZib0&a?UgiqtGOx;Rz_{yw5cIxiI41m2d=FHgUHj|qk?00;Nt=lI%-v&AJ-rk ziA`mZf&$WA`i;<>uRVr-YTBnK%ng5I?Em&g&2kO}rCwI(psVldKUs4wH@MEOU*_7l z38AX2!U7Z?H(&<|DcUTJhvak&D~>0fxndw7H-d{|6r|xH-~`giEEmhGynj;m6Tlu$kB`0@TW0nv*~9g;(^E`kZH!5u)fSQpFpXN-=M zLB4m=!65K(f#W)pA1Dt#MO?cX>b&Sdu=+s<4uAmL#Tbgf<9x>G3R)}XRyN+|C~_c% zIR@z6V<_a%1yoMzll1`Qq+P+o{x}k)uyqB@+zA{Uv%9s>s$!A6OJwDJ@6gWhZ@?l% z5h#AgU~dq07kv~mglXtem~y~SF~=%ZK%^ojX!yusZ*@5M!z#{> zT5(tTuX=u}oD>|nyLS1qHCJzcO(_6=x5DP8ABtQF<0SQ(wSz?!uK0!S6MTKqVFSK2 zM~ZPPuT#_l2gigKv7~}P!t>9cKhDcb9BqukUX?$4@Cnw3Sqn3Y(v?=liGLM3;(E@H z1VX5EY;tM8V#>l%kjqrFXZ~NkvKo8Yxkl{({iIa?DDO`G+gUfC#P-@DfngL~ls_v+ zcVbKgo}se-+EikiF>h?s0Du`C1%Ugsl!JjUZ;8r8u#3icD?| zpUL_S8xKLuc2@20X{Rv%UZZi<&OIj*q8{w**3banl0@@uMLzUCV|CK=ZV`y;x9Dv?K;i z)9adgvWM2(ClmX4r50g5TF)eg4(gQ|UDX&XI%yZ+Eu9GIWuu8f1 zx(W)7oJ_~zF10XOH%F=Hv3B;}k!Jv3Ue-Col!*d`9$(}z7eG5_&(M0~t;`Yc}qG zMD^j8X!G|+|5AY3VXc?J!aTOl7g)|GtEi>o3i~?cEbsQ?YL|v7=)_mqm2@U3( zva|kN<_<_S<9nm(`m%H`E)W&J3!bO4>J`-g-9vR076M~=wtP3=zOCbv0Ds_RCNXw& zTodp=UMmO0+R%ZuO3pt`kb&v|0E-kLu4(~#2wbRV*WUFmxI89f=qACMFH?*Q7QS;| zZn$B7Z5-!RT)h(7b~_MpDa#$NtVSjsZ>NiSfSAI@ojK4fHUtK&OTLW0l6xJ|J?IB> z3KxWsTe8nti!1V)RIlD(UiXRRd7xuYN5hJQ#;R=?F0Vy|yt_Os@CBQJM?yRM&oR;* z$(I6er%S!`@hFXsUr%OoG)vlr{jYC2Cqj#syNt+u@+?-rk^VqB97FnS-V#+4Zn+$-3@6$7q+z>kn0qJ>Tcm);I3s3ZZM} z)xjzgKImsFrbMReg}jINO1;nAWiPZ|Y`Ym%hhq)`*O$38KYr>VEt&TBs(1KaX9Neh zfQAIAMy!uu4jamnCOZlt2eQr$8wQ(j3(Yp1 zT7RrDfL37q8vUN0vkae-P$q;I$MTzk$cBfqw^L-s-0p3qEfLxkl=gRNdfrtD6LhmG%c+Fv>V1Uv^;~Dy%!UNV=Q1g!rL$5VL~a`W z_4~Jodl3Z@-&=LF>zouJn6~4ADOp1b$^N0obbN*T7cAR%7=9+HiQGvGkvt+zd_9)8_vym`cgrAe-A1y8Kl6}vLpV;Th>Id;ckDYeVV zxJ^^oAv4yv%iu2rG+jakknm3*@7dl#Onms`+i7Ne5k~9dwTRjj$Sm)LI?Z>&&&FL^ z3Lr3(!@=+5dgNJ-eflJ0Y|S1lyEbgx=qu^o+Ul|)5{o85$L879uif+6yQH<@+%dx; zK?lzi1x)NG^RuC$eS1%jmX?;FXYXNHVt!w%?(rtRvuF;;!@HtuKl7&)=jTeq9B1eF z+r=9(dr~}x*CZalTxV=N&^>bhZ`xF$I5JJR1R`dx(zV~^I=vw&Hzy~jQHm9??+JI}ccP2UPJ5FZWA(+U&(#uY&E-x25=A}r+23Um+=Aeqzkx%rrcSpags60U| zV$5CgbAi67B);jTw~m@0GI$tXna{L%b+OPse!{R0gc<$;KZ>uhfsnOt&BFldZbrX0 z@mmmqk6o8_cFmzhxa@;2g(bF9EyWEe7Nx`sbnjjup5i#;h!6&h>in%P-&%@S8X~3< zhFPp^V5ZG6&Lp*j>^X3f^i98^7XA9yA3#DrTe^rBk()f-T3GJ;4!OMkNX7P84QCmw z$i(a|n`65?OQq*&PUeHXb{<+sZI{G;F41&pzjNz_hgC-XH1_?Phuv)3pdpJuwUN?CdOpF-4SY(#*Hh zNL&JH&3jQVf<&QDw##ltjES8!&Rbrzc+$T& z&P|zS$TUQan|u#OoGS6YCotjZ;O`AhS8v?#f2$i2;X5bH+Gy&|9V@(3qi3Gr7JGU) z(Y^g_cW!LHTcA{;e%XNpNnWqjr9lG@k*JQUA=mhYSH>TP5)(Kq5gH}HD6k`^=n_g9&c?N-fTaTr?< z%KfXiVX@g~`rUEhgU2$p2mPC8_vL3{-)z~1p#4$ z2+ksSLB^9aR?AL2@2ZsNgK?*4-xiz2OLWa)9SkZK(9Bg%|mXH0)31{xt^Zu zb*gy*uuCgO&vBxx}ti;EONgi3XLxNqKUnnQVMlnQ8bMdv}2DN;#dfny$tcnMM!M4YeK z&-eRh;aj_1bOL`fT`dw<{|W3$1&D}{-LRO}jS(9icI=?R$GuA|)ciFnf^c>v4nWCm zzj_O*RuO*1=?2`wDbvD2i6)J12arYnb~PRO0{s>TJIyolttGYhS1vF!V@@LGUYSLm zdmp+;wZm@>H007K?_1kURy)=uN~tF2q2kAydw6tA$H>3R(Qno;meO-~ ze_Yb3p3n4ljGDYOJ_t0SbgaTl7;8o`w`@4_IcF=7)`*W&f)_krcRktCk_FxEZAKH@ z?fbch=yTg zIdQ%Aok=0{aqA9V*lWm#x;D~9W&x91MKS+eQWlzZ(k#YQ$#k56oJa6wP=`O(I6vH} zcSffEu*d$!GZ~*Rb$al)sNayJ)))W;fmp3cZDMI622NhrHcNV-FQ&|vNw402-dl`~NZ7#pM~t{+D-ANAg{EjgQ@}<^3$$Q+c*6(< zUsvixzY^xAdR>nPd3)-9$^AJHimKA!AYVjMCG);DDZneymWnt@NYMb{6f-?&vzphV zz6muQpdrKdp!a~O%3XhM!hoY9S)T9vy7{#)3AeYE%pmC4;OJ9z^*smm_l23RfvCX1 zeD=^6;jbuj8}Cz(weW$zFQP{YyB%gh`y=wygke@tENXiB(nCtI5fL0sPM6I6&Rs9> z(_6S>M~sd>m(e_xiB^>-M=ZMJ*1aY$vH1`m(?v?bk9_IPQ&F zdh&E7%`??KXFabmKD+Y?LGucIs_gM@M(j$ygPUuBhebvNUL|=U1}5@I8o4NbD9D`K z!3(=jPv0)}3ZANcY@cDs80s;nlX%JYe8 zK}z0xO1EkuW8B`q$I^ih6GcV99a+rp@3vJ7yUu|Ij9`sz-}b0q_lijC*ICM1E<8w> zhfNs#sY3Dh-;yf_$~^d(&X3M*Ero6IkshHJFJ7!moY8F1i&?~3qo+7@uDY=+?UzPX zhfF=Pf~6=Szri^hE70Hta|f@-9#`l%NO_6L%cMUOq&FvHits6Ns9jxF9jYq)HsK3+ z`;Ka~-Qz|V>(#(J6H4z;M$q{tF8Sb%?=~$pA$5Q9F%xE?nB4vRVdSzlwwOv6$vs`0)_p0T@*$@5PcD zktLlv#^nSsLx#%DY0APKpz&jwUMHE4#KXQf(o#@4J#S8O6F#lFG*2SLCg_)!q7q<# z(UihQSz(tFneZnyb6wg4GhC}7fwp;xPL zFqzn(y~cIuZ`Oom)_3?}dUaUS*dqr|&}WG7cQN_%0`P&e5Hn&o4;)yFPwvO5i5ePD z+Yq5_*zY$dOpK0Vsrh$?MXOl*y}boh+7p869ODFc!BaI*R<5on9s{s>EjZbExZ#dG z{v_v5sj)ZDox$cVD`u;fj@{1rP*o~hmkjzScUQ~3{fjqsbAGmG{ED6y`ez5uvfcKy zS=J`d1p$$5#i+h}e+$hs{<#fXMVwwk6K?+Wrt_;Mx9J|)GyJ9*Plbp-yCG+14J&nV zH6M`ot^fZ{C3j0|xx=?1L^o!+BwI@A%XMCFCvHgxz2`^l(p@_M$1pO;8^Oz3X$%PK z9uum{2f)7P)gEh@9sh>e<~#V&FE%gg98v?2grY9pdi#-`o^sExn^)X=u651C%%6nF z#d{Ad*^x2op7?&Nf3-C3TWz}l7)1D%!ydiL=N9Ddaj9$6 z0Vjx-e`;jgD&82#qNiM{_lvzoise%(+$VTN(RQrmEfG0QFCSQQ#|bmEpsF!TZ@HlX znW;FipWMhpZt*Oij`-w#t^=i$kHFI4NFoZN$=|MAw01A}Hcs09eo;qJyccMf4+AX$ zpu&=BJM-cCh!ZFU>8xzY4W&b5LLT9yUH;`=Id@9pR|&xCi2*1 zu-*qd%g|%@efgqA(_>c#6y#HYZN-|;4f8xXv(D~3dtxkD=Deh=meTx9e?$v%YSnr07&Rj;?MgBkx$tz9%z2 zf32<#JUX520VXbCh>i~LjG%96FVLUSPx9P}%aA{M=#2^fLC+6%Kn6Mz6)UbyzRSz}eyFE`-_xGl#tl$z(Q4DqUfU=vc_F#f+9Ov!z%|0r#kEt!D{xju z2l{ohUZcDo*YsfnAG(M^h#p1sD#ErV`q>4pHx%xWGN36C=JU-0_y$V)P95CC?MiDV z_zKubW8{^23|GY|hHga!JimV*(ItT@fAp76s45i6{Axf{_fS=c z^7#hXjdq{>gs(`!%&qW0*DP9vA@hT){!a_=`&z`a`IGWfNHf0Ai_Qd;b2gB>I(J0S zORp!--hAk(srRUEwIxA$d*gX8W5>kD#|N$MY8CtC%a=7(2kMvnH~WpqE*LUmZtWsAh`B>3O($(?Yh@ z>9@Iatuo{$xph`gNs6DSdLzqz^S?ppR~MJ+$lV=nB}<^Lc>CD(8FEG{FvAA(0~}_LukBO3gHL+@c|f$h#mh|O zS-#LSzjKluZ`zBFozcqv4LgqL5{=>tmdkCW>&}k*fX@>XEqYn^TD&fU@raO%86I-W zM36GDGDTYEEgY>%Ng3r{djr%$G}k3kKB3%&~sa^}~pq3F5kE^Lfuh zLkSb9Zk;-B;6aq|BDRX4`yWP>zv`>5_S#eb-a zyl8s$>ET0d>ijm^a!g02;WmV4#Z=pctwbq*hLQKLCd*Z9KetuXR_t?RP60t@4zG+i zZpkey95d43pqr)w6qocy0>B&V%DVS>r${o`;9}=rO;VvlXGEmH~^xp?XF$Ba8tZ=TwQHAMu;;WBCR9sZq@s=#SJ!E zv=9?Zdg=X+hNjuSKKr*$Ac;|>zxH|rD?PHG^*e7#TYs63n7PgmGd*#-miUjC3-y`0 zS-{~M>)pOs2PG!2CXKD%8@+c!x^|2hVkmL(@6OJpqyD)S;vEv9dv{tGnz~P(eGdEd?P}QIpJkT!_MCH-wZ+{iqVRrKP#`S zykxBUR1qR(Kgt8D6O;_YQz(n_ku@ zT96ift*E%TRDEOg3q~z-)I=iVdgVfV;)r?Y+a<_3EH_bW=A%go#;P)143Z3No$hq= zr*p4ztRDA!==HrRdyU-llN~1%zeig6uBv{`KqEq$I2c3~1eIMYbD)pR{5NtnzHygu zc@g`FF?lrzrY@TBA#wYH=n@_y^1@EDKhoA1(l)|_2wh8JQ=D z0hDQ42|MSr2V0!=V5f{rh0;US4^?GaLOA@nx%d1BqxyK;U-<8ubVbG=9v<$2!=340 z$Vl%EOyn%d#PINSO2~9XSTON{wa2ImG)NQnX%)YsnT=d( z+?8&*wCoivGxK4(Sa^C>UJ6M76tgEw;@s}yE`+4qK1KY9Y0^R!zX65Y*96}tZGs|r zU3z>!8Bj)<4FMbPec-3T{_R=Wf5C<~#D&Swy zH=9;o?URf6O4tXKmf)0ACuXDH`uW|1TY3#H*aG7qR&f`UrTr*U^uh6sHY)RtAWepj zhY1!1Vscw=qYEr)u>K0ae`)<{rc08;xP4w*>$1YkY31Xhynv7x%XeVN!>vqyHFS{X znfZUVH2nI-yBl`ofrtj1Tq-9vXDtm5Dk9Q=5P7+PF?Carv#c!(L?U9;R0{FGsqx1< zn*wj!_gL2Qrt|)vurQua3N8~POmnB=ZtRH`1zF^DZ5dzI5z}PIpV$>SCb^Jd6(MA=Z@3H+#Tib|Z z!~J9G`ypo87r#wbu1~eo+>~Mkh)$1?ED2slifTx9hKq!i?2%vH`UD9=*yZO%rS#3V zlWy|elmm?vW>#HI^*AdQ=^uOpf@%K3FcBC z_~T1meke{|25XmSev@PZy`KYf5(|gMg|Eiht!8`hF(Re&ehT-X2I-89mMl3;kQCeZ+p- zjT@VfR4t&711K+s06U(|T!>Bkx3&+1a`MIyAtS(k-_y^(xT+0B8Np5Rb9!GvpN)54 zA>8uUKYX#q;OU*^H)u=52izS+vM?QfUn+*$=eEpmh^0-{`-J&pn{;xBg{U#N`xGbE zn069uIwQs;(lc4eHT1!-H3t`Zrrx&$Lqjnk-&Cn%nWQ)KciEDm^{ExVLL<~*A@Qp0 z^%u_=zng6Gcfj@-d7n6DK=H3S}_Z!O}nmao7Al~gp%U|*PA?XOq5DtS9LIH~It^Yx} zWQ;Wr7FH7$znlh<5kI$f z#bPa}??vi;2*Kphd>=Ou_98>NeeLQK@hn$_gsfPt72PujE>t;T%b4xlh*dav%_c-Yh) z0!?3k*Jk`_Q9x&G1;f%hQn?jVB@Sh4^|Z0Q4ty#U-MUOiWKh%9*U|W0+Jizd7MQ=Z z-aT2FK^GL8-oX4CVN@v0NYcaO8*qvfHRA2BhK3B8)qFi<4k8r@?ePkK+765!D5A!y z8ipzS=l&iF+mAenxEutSFv_0&SiV(SZ{P>C6NtyS!!rWMlwsg;GNW7HX1UcLroF4I zs`4LFA);YG?Aj&N7;jm>{&-#mS1$=m@Pu@e&D7S`t{k)DGIXm zM0U!XV7D-{L@b>?OaLGC{h;1)z(CP>tC)T?t@@c=N#gYpFNJr%^<9^z6s zCF<2ag2Bs<4D~rrx2fOOm@Se`FhY{-cPno)t7@3Z_C2iN$BC|G=VcoLb3qJKXpXPh zyu$Eq!#SZN5a#6*dn?gNeiFkqyyB#q6X#nHLkQbs3E>|xH+wgb>}Ds?A3pZ`7cY0i6Ljb!>lLqr#87_Y6BD%{Xnu~ zLVJp*FmcbV7<6}|c)rKd&~d;(PhJR%i&_#PM6NT$3>!~K8kt`>O1$*+MwtYHTB4bMqW0N>w0AMP%BrX_IBI4U5$7K)Ph(?*y%n#H+P%Ns6Jg6gfB7= zJYrzJbCG3E9o{DCjX*odAL&Lm#IgrbdS{H?11Uhi>NH z+wB(mBL!`At$jSLZ>U4-DqPIR$C%Dsw@@%4ujws0;CxNKSrIXkZq1UOG11DLKe}(K zKMglOUtE3`>h#h-Toh?=eup)t+|IMZ0xUqdI`qod4{j0uvOoe@RMzhP$_&#jaM9J1 zPtJu6DC%-ELJfFIdYyY}E(R;<_MLtMYmPQD$vJLn{ZV?`{N1~^u(=qQf3y4_dW-(F z5)9~j53v@8u8q&lc74~WOMag~tV(IHbNmxm*y6*_v|-hRk9y`qqjTr0^b%8r_4p_n zS+F(+rk8Q6ItRF)$ul21zEV>7a`990Y_2d&rWti~WC4fWHODx(4dIF^8l;#6BqwK? z;k&xgtL{jW?DVwd;QoygCcPPSli7H)nc<);N6;4T8A8c8nT7ql+Z%e(+6$WD<`OBj z(P#$w<8iWC$BnDbwLZ}PK5eLXvgIch#RAI8p>_Q=Exba7<^am3+ zCI*7v8h-I&do#1o3DV;pXeSM6H$ug4!?F1ey^V@)#(ghdr{8p1r@;MceMnzNo#J@+ zYoU0*04<`lxtH*3)XjuH8#km)*d53HCH-0PSlQYR$tidLopJH@e6Lh1uC~d?cq`aD zW-B(WBuC1z#YG<_1DK)7U%ycTh38zu`p1YoIlHWpUzTerC_3s`-R$hG&||k)Zz&%- zCLzWt9vm@mNR7I3i5()-4Bx#Mv9bor=evwuJhbvCgZYB+9kV{o zxgNfEMVRS^G3$zA+(&=<+f)qI+)|JU()b*R$41jzs7t~4;@ycmaI2R3=Esb!oX+r9v$;s=!Glo)=)bpz@4c{!A-y0cGPZ=Q>!vm)K3 zr%Xqv&Hn%o4i2Oaw<|O=uzve1p;I^GAZ2E@;V1|aY6uam`ARC8XV1ts!$h9j8Zbn_ zG=c>_cTQ0x!3roncjy6`M`KnQ51J=D#NgjYYo0j@Di7{y`C5Y$#{WC&E+=&Qiq2BSCqyb20W4EG(vSYT2pTdsJ zal*Mmq*MIR(E(^Xi{wCD$T%=qfxpG9yuhi`aHYPSD<}O{TelL9O z=(m&J-3|YkQC8B?LtsFPQX2Bh^_~Z?+Vz(i**M_wS!vp@)7Wg4R53 zb;P!Jg(3ZuzDLHUIf8T+x!jHmxM*|{ZYul2i7FlenXubbIAXlZ%L|gFXik~%8 zsCl;jHI!{!FZ&tfYo>-}qll2$(@$@wPT>*dr?Aa94>3i**hG`GIH|T^!^9j(Rh7wxIrN`(_#ARE56et3|5Mv z{kd1W?8zyLMWcP(prQ1ft&NS?%qe&PXND#(fZsB=?#S4|kCJgMEN46zu6ruNy}V@z zLeh4J4un%*2H;1@CSI_XUL65mqIdtYKe;)S`DG1qc%f`Xw37_S&OM_H31 z#4PrYnzu9ZAu99Y8eusjI!i>wjGNpvUD@=z2I!KazivSn!llCKO1)hJ#W2F3_iWC5 zDVUb~0gUk024Rxn8W}qPr8d>+-PTBTf---3KqCyvl zGd7F0h#)&W2wo&scc!pr;5j%6gyyZ=w>KC0^t}ljeLpx{*BN{1b;KI6dI3R{fGere zIT<=)9`EGBf^O#8|l3(~S-r__;!nVHgEdu}YGow*} z5zB2)LZd1%EDhTy{JR&QjDUz_X%+zhqJR?b~^a{FHkUmoMni!=xd5;kv2=S3kj*$Mp5QCngBa&)vFh+tdx-`2C4bYH=0i ztb11Xwl)B^*iG@fC)y;p)q)`E5TLT2ij*x;XHoJxpB_1vD z_6nzl4qE(JST_;*1n9t$TA>GwuRT*$&3w+5%$cJ$Givq&AxK9wFu({;5r(7&8*bq- z1ZHm;qp=QsJS>#7nv!wKqJNNz+1eq$>guLEI0S;RPfZ*_kitxvg>u)#q2>t<2zI1FaTIA|? zQG1RGhjjW!gku8nqJ~~*wab%`{_H+W`PRHPxdAL=`=v9~YG}(JO@JBIkz?q-oMMvQ zl$=>R?FhjuExq?B(x5H;&nd?Xd5)|Y`$TjD5l0b>~Y0B{D%O! zlLxn#w)(vhob$e$|D#3#a?ZOjGemQdIoYMvQO+T7Qlc7DJgJ2Xvd|8{6R#Q^0O z#|chzI5KF2m_~bSqhGYuD3`lN`-Lh{h^_-p%jsH-Q=Kmrx~)#$SqQjXo&vv%ANI3e z?_cciC%dk&v3XBnOy-PfC7HfBS7Ic~y`8!Jiob%q_l139y{^P;opfOZcLvOid4PT& z7xwQgEa%8kRXq$HBUGx|6lmhFjkxOc%L|af6O^>Wo_}HGDT=nJXe>Lgu-KImqOz*0 zf{Kz&V>FIiecO#0g+g??Apv|uKx1R$NmS^xpTNBkPlED!hb;sUik-J@^rDMVVrOv( zA_hIRBgJ$ObEl}xoHD6X-lBm|m`yofeV?Kjk7+ZR1uC8_hKk{YKrjhjq|36c%A$f0 zJwA#7aBY9{Yp_`p8Pam;3kQoeNfvW6L+~mJtMw;#whuS)D#xH zUA}C0qFyDS1Sy-qQ?XOt$@1R_*i8YGt;=g?J!{e72yEQk@Qccduph;MjK|(dVS#pE zrD_OEr!X~3U=__~qcg0m9P2-waTCrV_Qp(w=^lShkbQocU|>$bhuvuSjqGeiPs0lh zwG$44rlrkr0&!?;23?}H`l;5`fu#riJJY$bn*-nhtQld(f;-+Jos&L(6#{*Fh_7_l zt3Wb#KaAvCAn?qVLgyowc;2j(Z36Q_hDSh2X89bSWO9@%5cK@g<;!VrqZCe5`3Qt+ zw~LGG`1F4;v|#Wu{zNMEjw#yjr8_8V_^EBi9pJ5*wnH@xg;!B@$se3-9uRRs)p1qT z-S`loM$)O;-S^DaLn>z_Vk@+8bN{pG(YW%a;Z(_7XOjIX!`1rgG*=+BRDA%$b1N?^ zn75mA^?fJjS#ZhQo^BB;{gy7rx>CErUXzxfJ}^&oiT$>HGysoysp@-qZvq@S{SpNU z)dSxPc!K(fo)@LO5TuOUct~oP$;cJ+RXq9FRMq50(v|0)$X-2c=(chTYVK!ae|_N9 zmk?vW;Fd9hi7ZXwdBq@)oVuT>%Y#=_v6|MqY-`p8)-p9A zOxZGbmM9`L!;_|}nrE;rDo@?qIUZXb!NBt|g*I2N8)kEp0bvPCmMWzjo@(uPAU%MF z?C-H%O>CLJ`r%@qqtk4!`b8bdV?7b(B4ndbFj$ z`Q%+#vK&*NfelPSZrpfH-uPQi^n_Oxcw!I)@jb)Q18JL$KJIq@X{*KBU?Cq0-u$F1 zrZte2+9i8Nz;|Keb$>gAAY?IEH}J}rl5n{d-fk?cPARS-e9lo3c2*d8srphA0gpy3 zElHhvgPSzr@`9fW{}AZX69|mF(MeZGdt3D0t%;#fJ%)aq5#8DT6(0X|UM^J&CZgYI)boEWu9gY`&(74U~8z+6}Q?5+k4dHt=^ zw!hY*m(kpvgkC{D8x6wZ-r8gCj`QECD82aEJL2s6fjej?QL8YJ%b*fGNWpg8W@FwK z*BFR=Rb2Db&N*Y2ctVf_F+u!mj{KYc7;1?!1!xuhfg6$NB!sw-+x*GLjc%&)yg4fU zezI+>YmTs25rYSOFhG{boJcSw6dn=uRhU56utfVf&FSQr0w@aE?X`a%j*%7F9y{!% z4vDQ3*rPu2!VQBy5{l>j7fzMjNLDCjK&VyV&wfQGf|06Gh4*trI4kyxIMNb`5e0T$ zVceoEwj}wg4id&V6zxzFEb?56&uN0&j@=6vcDa1{2V%Y-Oof5^1$09rkA}@|Wcvg_ z7I6L`ch}oJ2RiMQ1AI@VoY4ApE%tI46Q*Ev8#jJAvC9AKqer2k$OD|qrY{dae}2-d zwl$ludGX?Rn;NU$8Rec>&^yJ@e&fb9NPp<^_kiTNUfn3gsNUl1k?-5xWI2^?J2GFq z^LKt+hJNZ;k!m}A^OLDzi{1~G9PX9F<1Td-eeYXO*S}TN5OBQYi0ffq$wb^HacbS zndUBh8l3xX1;1sn)F~n@6|?a8)0WW2?wDfSGK)a|AM`{65k?Gy2r#t|6^~8pEsiSg zcQ1vC+-~~7$l6>C)NVi`3kMk3CHfs?vn_=UHs`3PGl%=jno< zb#+f&Xr$)e7{FGAgk-UtdFPlJr$^58UpLFA6$JZr?6z0NiM2z~vwZ>e8Ssc$hK#T4P`%MUTO$Ta|<7rSuaVa0xO;oL386CSlRSKTL8i}C~vYOePl z3U?aGAeT|#ZemhCm!VyBLWeWtrE@=-di-UX3H&K7Y0XsR=# z2S5HW*+lUuBwEWG-)BcmIshh#R{skK)t?*}b+K|lOc-RZ0cjMelIHR6{=2;|k5HM^ zRr`tbsToc|BL-g|2XmD7?Lt)4EaM@k9wjBzcL_*c^Yz}M(`TnwxGt?~ zKYPIxBeDP!X18cSs;#|!mi`uM9FcXQZ%A8BA>ZI}B`>Hjpf0KXZr`52Cwqa)qy<4B zAJ1G4Ow@M%^`PJj^THWP7ca+Vhn>sW zBv{qS)F3y*t!G*Np}A(dRDc+mY&~P1Kx{Jm8GEK#s(ImIfj1h9E{f89Y~w6gp?PUc zdL^L6Y$Lz=Vm=-rq9o*_JNZspdU^SzV<&aHMZGfJXlK{7Xj~=m&{3|>AL$;l6E(4Z zYu!BdtnRbG3mc6ZM-jz8i^~BaqxrXbKkya=pzr0&0w)#D<)^-2d7U>Sk8WvI}V2MVbhQ2Vpp(e1Ic#^W9w#vgb zpAc1|cmfQSHCd}&#i_?FOMdY$>Qdy{u!c+viA5H6BVRs@QdON)4fc6#$Z|6Fp$^*^ zhP1nGxo}}*+L7xtZ3GV~fsdbe{mWFw{mPrq@9`i0_CsX2VoHupA;ApcYT!YHT#<(l z=I+acfeO$jo8%Ii0FSu1oF%Jt7WuKAQG>RAu8GXy%_EIM+VNpxV6^c>ddbvY9TE0m zZVYpSD0weclf#p)>qPsWiMRxX#J|xM!;)Zj&J{ss9cs1t{M=7sXc70e2OnPHEBKuG zR57u|M9^;ezoPRN>jPoX{unL-_q5*M;|W&XjBW_a>f%X5{5Jv{W)0VSoqY|75f0~v z5y6TSoW!a7d8ZL>@c~0OxH20^XHG~S{1HtIuJuY{iAJ*{s3M>@gZg;>5%ye)gV7< z73TUIuG??7zim0<Cx(0=Buf4M_$yve-2%YU@A`A!@H3ACY}I~CsmsYQp!zmtz!{fm zc*o6ADJvKl(y8k)z3P3-^nF!w*Cfqaw5}!9{_YmI!n9Oeg5Rx{NjCAaXS_@=uo=0u zn^a;g9bdA>*fZOtTw8F*6t-a1rRM^EJnl40*nPb+ZnP7IT})H`{LM1LgjZ)q3#OCi zA{-ez9Y2#xDFWT#6PK3%5Q*F)aYuY@578piOAFhwD+{g_VO@A(>0tP;-(N>PN*kKm zJsD`k>&1l4irt!=Z%+az6|+w*wM0K5QDlx2gJa6p{zugvXI-`E&*ui=MLl-lWca5m z24?#LPTt58=8iOzbbGl+-mTEn!?A*vN{ms*#R0atVV>@%)?RvXQ+w5cYL3CshAf0R za&#!{I!L}CMHszLVo>^-5CkrK)G+^M?$uj~QzJ9UWH1(F*|`tJWGouxtnN#K{D$0o z!~_rJCf6O-i~uIo<^&0bz@EVU@nX8Ot$s$Z0rn}cK*jcl>k2O~H_ES8$DgNwk$t|m z+^MX$l}r76;xykc#`;*Px&Heg2G?Z&X~bVf|E3cf^lKAEqL8ax*OYzS2=F?;;R|zT zr@`ZdIpFj3G#>jgJjR|oE(u@w#^IMSRF{zbUcTJK-#^bSguL@%A&~@Dyt?jNUyuK>r-|y<=CV=<=CCIZ&TZD1lPHniqOIzSTN$ZDK-r+M zGrbJuy?-PnO@7EmGHNWV5P8^=FnRtV1ZSxuFLgGtrC^_1B`oR~T9B-O;DAzLqsU zf&!bUt=uc%HSA*8izpN9@-vrMZsz3w&vl#- z3kckyG4}Fh-r+#i=YjX(O-m%w+s_DfJUHiP(K8=gVjrYB5Vv7nATwgfq%O;-II?!0 zmR8q_2j`;tMlu#(0^UYt47>+bEZga_a;tObm=W^mFMb1+r}LrT0qrY`$WgCY%!D<< z;VR`u^a~@VN-;~y6A_B<*E6X~iN182E<+|eOFnfFV=T4THo36(EfKqoXCh)V$k3_J zjKEb&p;GU1Q?ST9+{duu=JUaaOU4|X#>Yy(t3PVgVe`ngvikry5u};Unx)7QpyIk= zo7o3zhgpb`(VaQxKmRgpTth~{qI(W!RpwX4Rty##hXBJwH-JOOw)nd9L!e@Xn+Jsp zB3`CM`;Lng!RclEa{4mCxR9xoB3UHfH9v z(b(z6Ajc`bb^gL-y+grLCdjO?z9Lr*3U)-eyAp@?Fk|jWL{=~y#VmSm)||;bFb?`e zVcPxXHP>FFm&~8f@HVBe0KYD9+XPSIx5;@Q0#-%C1^a%TfAmNb_xF^Qh@=@Z7iI!8 zmv{z-Ac|jHqNg`*_{oD$j*r8G6Dt-Q8?p7xJo0?AkcyGVbPu=#sxp{{!sS2EX;{Uw zrSlM|03jbj!P}9+7>pmEVgr2c{wA79FwQ&E8F1}1Bc~HXG9jIUYL+*ywt2bqy`9$M~<-c5Xc! zB!k0b9i%nF6l^5wQbP)*E%%OG!A5H}>4UAGNVjR#MtXm%PJ7c5R0?%h^w;b3+qLq{ zj-4v+8d4wS#XKm>wUBEoV`@65tk+hhN$)%Na}QsrqB46=>7@H}Cq^v&^xj0Ko6}Kk zcU|qdtp{!$?=;1-bk_K#jJ|kXuc($I9UgUUxPh?zE z0Z^TCX!?#TJBk+~qI5l8&r*pbJ$W?Ftj|SfJpn^JZ?-*QI|MM*QBH-p_Czhq3^>j}YoURMVlJvxaJWb(LTycT#crXRa> z?K;)+md$uc;H_Kw@2z-$=ZYt(dRb4QYHtf>H{~ftgmTGxpEtQSc3T$8^E8jFjlDZb zj#anvXRAP{>l&e>xBkI1yVQ}D2RCotG|dV@B!u9`E)|v;BryTRtVVK631s zwzhVw+}vEyqgy$)H|{pn&jrcH5PcO&0RcSsHER0h_BPLH*(|dtxLFQ|9@fl(**O(k zBhAkkJcqcF(*h$A#ui_?{lAw{CpC1% znuk7=eW$OJqDj*lQOtpCtgLsMU^gPCY7-FH+jeHXI-Y&_Fj&KP>EM!y+xDZ6XUjnm z3c|-QRMCtPiZ*!>Ghc#Bi(1TJ&8LYj>CDy4i=ZnqMVMe{*p(SD*an`Hm9KEoT>5aQ z@{as%UBslq!{(oP!mbcVBOrvedXIfNmA<{y$!gb^&SF_bCzo-~za1cZ@DG_f1yuws4g7OXUm5r4v@j_p996JK*_d@w`FBzYWg-xLf^A8{ReRT z3gllBHx@K%_wCz;Jv`?}4yUGZyx-(?=N)EYr(PR*s0TaxwE;usq86NZzVC2y{C}?_A;eRcMzCYYj?63CCVnoI`}OT4MsXvzIf8y)DHBodw@@j_zccg?fxF>F>%a6;w(R&%vSLIH^Wh9HBS)&%rnKS3n zgV}Yv6Un)4UFCB4+JXVM z2LQ=>2L$XVA+28Bi@TO|J?hi2xtk)TC1P0(s~GW0?|J-r^tyBnD7#`W|Dcke?2&A} zlli=|+Pb=}OR=SzHP-g$BZ$ug@K{ZOk?0N@)LKi1Ps!4X_EDAx1wW2vUa6hu+kFpr z|N1W0J)9b`A*-~ZtJiouFn1 z6^7QZVI4h`pl6IOoeT<+LT21|R1bwVr$%mkX4nOpFL)Xrh9C$^rn8qV>i{`JaXMaC z#qrfk6ccB)Ka<#P5_3vRZQw=t=7uvj4&SVNJYdO`BTDWE56TOQ{{H>@gp1%bFC-|h zH}unz>3_8UMB%ojgW%DPM~HF)V+e2#z9zuR97mH5pX zIr426S6_uL=2zqwUNqQwXzb42ezs?_ofMbo$3~~?Kk+-bd|zriR;>_%f`Wp!9%?0_ z*q~5mA07%(#@$ML3Af+5bLUc};aojsZw_>WhS+Js4neVBYt+Y`(x5sXN<2o&8lJiT zvann`*<`(7(_0bo3Z4|khoz|=FuH&HYuxWeY+%53#@2c<#`169TIk8|L(ep&*P+0X zZz}4E@WCz_Wm}ofkl~kBV>#{czIXTfyv6ci5)+AJUdyNt$(nTYyl8nbUn3&1 zrI*d(*YHBy4LI3qsMmgW#5VOaDXha{BGYqii(Qq-^@@iMX!H%Iq(aC zcyES{%hpN&JaSi3{Jjp`;D-S{kjljJRpF$k^vccMVuT>iG7)x$?GwLDhfu{CAdv?M;) zz*DCV0C>wAxunFM`kxj+tRzvyMV8@ovHM1$yMdd#dn@W@aTJNGW^32>5z%_<_YYl9 zo;)cQ1<@30hJ}T>6>p2*RIFF- z+4v&<`n&aIf4WHqokH-kM9K8^{VnUd8*P<~oE3T@qp`!-H)P=HDZAMmU@8aVL`i_> z%-MJAu}#M)s~Wdc9dgmop+m*S8p<>-r3Z@WVzyJKqISRsLy6B5-BD|Pe?-y`{@qZ! z96if1jjYXx@Laz)cA%G_9C-^8w-nzl6TlZyi;ViP@Oq!MZQ7ST8sVMA63gNmhpZGm zd7c4@cA19#)dc_E`zqetsNm{u9jNqB0b>|;N);ntOaZBF5A$HsQ(`Ko=Jm;L|FS0` zqj`X=m*Wui9j+*84#^!V+ju6%C9CRJX3?ue?$hJPk1=#jV9`QJtrl^Rfh*uPcGBS1 z?&ITQ@i6N8bu$)PYzDsTIbuX-;)xLD@<@0=&z?WG)ygdlzfHpA)RFZla6>Y4j8vvh zoeFWgLQR&q7V%M5O9ln6xmT-}Gp}(DMUXnl(o#Kg7BQB#gz$Sx=VRzNR}D)2N&GH0 z$@H0MX6E=R`qS^_ZF9crRPPd3PJG#`6XjUvT(GBc(7Hdb&rXO&-6_sxymMDk)*uI= zye3`SM4T=VYXeJEY8sYLj>?`lUG2_nYiH-C5rcf}cW|%J`tfaH@74#MJUMk!6X|-Z zQGV3-Hi>hZNW-k#m_*Vjo!RGfZ+gYR;NTZi6|*bqwZ7#ox;1u5gn#GuaB3@8tpe&& z>e1t+k5LDJ?BQZf8`rQkHiu%B9NK~JEiY!4h92Eg@`}ZJ3KmUxpBn7?(F^^Q|B{F6 z#`t}z{Zow&bQRT!Fm@ID5}6g~*(<5ZNy{Vb-aWN83f&X-O1E(+eXT{T{`}?3SzcQX zXuR0Vgg~v}vyN@>>7e^xe>I}AxOB0Z8b=t1*VPO9AS&*sx|`8ZXPmV49fd7|@ai<$ zUa8hGpIXx}=-ZbsUno$>n$Y+*A0Hat9=kfRd+saz#sI(5$DjBvTVB&|XL#?my`9~_ z@7U5q9kk`Fa2`~Dw0480*nGe;H8r)EWOi%OrMz!u=ztC#K75H~wp8~rRBk=Qk|;9K z_&$e)pZ{+(xl^xM9`N;zhBJ+bj9f*k%z5NG&Mh{<8@}gF>2AqAERBcmY1%31A&DES zZ9A8who+)AF8liuzb>q^`VU@u&yB&^4L_BU`FneNoAr&(z4+ZLWwGlZ1p0{rmFGfr zGg+qf_Vee}95M0_b+1I?XSOb8kXx*GCA~Y~FQZ!Fl(<^i3-3JL=un*uf~$w7h5}T7 zwX3#{ju^wmNA2jAjeR|4XISZ~gx|V#y9+8wcjVAG@Kk>pM$2G_4o>n0~d)+F4K2yo4xF+-jYgEM*i@2Y)m zDYIs?EBEQsDW^`#xcyv~HOx2Pl|sh%hiv;A)_|&}Ah%+U%!I(4zYcRxmVWXsjiln4 z;1>@~xCaYpIa6MO@5RQQYF=&A{6GDF7jdV(60JNFNOKey9OH$l3g0(BtM;tO@b)%Y zxl)@e#@lf-+Vtk$J%fwy%9lhp-t9q3p%`EYe(~bPPoF+@n|8ioS&CRP0~)^qRp%n+ zxy8&f*ZI$dO_LFS>*xrbYjkvU@Wm0_suL&F%9pr~z45n>5Cv>&mbGxRh*M35MS-F@g zhUSI7zfAH+3??lwm5@a3IeWnZFVdzM++y1bq!b+U1E0xTTpH_^pbN5i*v5^U?Pyhi zYnq>leddJ@gRLHVlMj228>boS{G;uUA3u~jclJ!&*Jc%e_3e_;I~^$@`Jf^qB1~{D zKR-9adv#2%JWC2B7GbMe*8>MZJvA(0owfeWaXFg`>_+Ms8*6Odycq`Y>9c3yrUeYR zUuTVnwWK_L9f=xgg3dP<%I;S%aQ>}FQ>&>>P}?qy z&TR7T42p00yE``c+jM*fO6F+9pAS?}ruX|B;y=qC|t}K~6uq ze7PN2@U2GR##LOf^K;u`J;+NOZi7&;tm^2QI-VW9CY^Qn8Vw2c=tWO|7|4A4$dkh> z4f<(oyRThpe#WS?;7ab;=TB?A&Yz|hpM^UOlLhlKy*Z%ea<%gBF?`+CN=Zqvc@vQ~ zqWR;$G`WzZui;!h9&Y$(OcQj^S>^TIJc@Cy5-t<0YZpx!(zEOePfWE3+dUO^gCSox9;VjkicT_YM}4%prf8Cis%jBPj;^k*iC7X66O(a$ z+2~sv^He$Czp2PJe|^yvl|R^pyog4cey-gp+Q13Lf~8otdi>k*ZU4!t#-kYKKZXB5 zEbja8VJSn@3bR)Wb!+)spH3sXRSvfwcCz&GrSuZ4jKhD8_w@8E&AQgj3aU?Rz6>tj zxbuVG?R`8|N+1YkWy(Yj4_YYdd+-tmz|Xr%o{ZI|-Qc_YpUFK;DOi(QdjtaeHPYZ+`Vk`a(DmBXjP#C^YO zQZ=PK0^%PrRwc~11VJgOhS@Ge2F=XU5YwN#8P8yFxA%bq2d*zRh>yOwIn4YanOsZz zd(?SWs2c2PGPt%O*{ndiaK;Ue{NvQrWc$0xRlkzIZI`~-DInKrWMa11ty^Bco_Nc9 zGC7yg6Y%$HKs?r@42k2ZyUC;TN19Gw=Fx{om~2@^FAeHO%Z7|ZJwf~UbHii$9!f@u zfk%$WV8sTYTG1*xb>8gRZs_vPUc4w5xBJ%@NM22Eiz5Na%&Za1sw z^TZ0q0|(kQj^;6X`}o+t)n;#EPil6%**=LY+z?yxm2-94_8%A>tfT@H@A~KWd|$4e z=Zu>tU#?Y8(;UO%DYc7FLysN%c|0JYq_wk#hDJ!DTM;fATs=H03=FDmj9_$~VzCzCg7ll53yguF{l+u{e>y`h?&G9Q!s%eB#}`(uDPxgv);a9;1;&-$;{5j(E!V7p=H-fnhFLF zyaXSSe<9b-jFZK%__C};L*Ew~W49|7I8ebb$D-tu-$hR#s87)1XzR=H3NYzAVbfAIL7+ zbRYda%;OuV4qTWQDt0~5w;DLr>DG6xV$+V8erI3umOd8lI)!XkJo8Z1XCiN1mLgA< z1JQhIvF~XH(0;!^x?$=@8*3Y#<7n@90Fh8eO6J5i|Lbz$TkJ> zV}Di^h-GeoVA_N%Got{FvFgILFSKn)p^nE2kYZs^Ks6;c$Z+5`UzetD9lvLfF&Sf` z&KG8B3D^cdcL7z3Lv#D+NxmPhs2Z2T{nyt4etR$SX5dqK}OjC2cC_xMfQXctjY;6?uWRNKZl2woeCh!+yfz?b^G`@m*}h zt#JaC9v?OT5FsgA2F)D;JCFVO#g~?&Ml|&}dgRCo*l3FObx-3lmS)^kg(~~}#%Eax z=+$`~!B=IxthsH{OoldB9-X#k%AAimIg6Z{v)A9|QJqW2k_Hz!FM$e>orFI2o8r}@ znt(0^i_rX?>(l|3$@~CCNCNwaJ~{LpJox*m!~6W=pe1Z)D@cqsD+gcWGV+hZ=cme| zU&H<)fe_Y~Oi2HJf9b1}10h97&)t{1WVOmDsU6?{=#N&$LkerTMoq$0vI#>yK*I!z z_ig{jDtPr9Fkk}Z+ND`*34WJK3?y}xxt(w~moDk!6StSNyF$(Dz{RVnm)OI&XyD&W z)%9`8IdV5E`W<^_DmR`xGTCHp%P*FEynK1ybZn!mnVH$5#QjQ1ALTb6TYlfMHS^IX z+qaLT4s@9}_e*Y_{Q?U)e+6liO;7f18Us}Yv}9Pc-#l{PwDUzX27&_5OMiRuqApQ{ zMtuc67JHLLw?w&MSTtwVjg*3R?c2|>uz36jEoIr~HhFiz{j^%=sb3$mbRwj2XVDN* zQV9f(17(d^3biNv&DuDz@H6uwN$pE z#*@Q+1GnOZ3-xdB~{^JVG^K_NbReO2Ac6E>E;YiT6!o|=G|2U48aDkv$$45 zz-cjss5@K~5@0wh*!e3a{S-9DOlco-hi9_!{jEg6R1kdp<^##&lpAlVKGRhvlXR;Y zJZU9i&}uKa;EmlBFKdUgH@(TC^G3%D9FhEOYHj^#eqX=E84o_)F0j!jM-*MiEkQRp zM3|0Gn?9ZWBQ|keL59Y@PFXoL(rY{zD>D;-Pf!H5Yc;#|V&5%bPU)~P^BX%Js>+stvlD@8l4Uy-P@TnedVzFamqi(dMEjqS;4$YicD}5YSrT}% zgC3U~RA4aXQEk1f1xP!F8HBpgF_zcBgDK2_N7yU(HZ|nhsJChWDpae~RnR*SiFD|l0R`q-}8`Q@6sQmaSS|sc%Q&9NEl!Q zoNa09ZkKcrLz|(7$Gpm(Cz{G>^}3q!YTxOl=1NsjOe$fA>7m!~rBwwut=>20OlY7aNLRym+zPCHQI~&wYY#x0{RG zcql!7^5jjooWiO&>mVQrR(OhdaIz2w-zn3l7t4K-PX@XYle;PGEAVFUt7qT7`|ku0 zX(?Ds<}6)$5Y&Jo-Sa@L-B(j{a|J(%eDrBnqFxso*W*JQ?bA~?8Wq7m7 zbUgI|{Q$bLrqDFw`}u+}s>Y5WqojlH+#l8YpMTwmxv!Da>iV#g1Fw2FZ{RZ%ph@J& zRPxdd62O&ytJJXK;U{m!%`a-hpDUucZ9CpVj|mF` zG6j^KNNls#Qwt0XWVM<1!-r!igxlg~{Axtr6gB_>?yc3kv0&mTU$#jQ9mKrDt>rOE zMx%q0Reb_{e9k6~9`GJY)Liu(1@p?uZ}kF1lI(0*p)ap1DR1~FAXJQ_ z)>kEC&2wY@yZ$uRS`nJV-cI1r$s zqTUph{)Vi9dh!!u`Vb=MLa}0|HMQMNX~BYMWA<}F1W%bd^;2tSH?EiH#l+WjgwF?F zyqMvPL#-8`-_TvuFaXHcb@B7LESaimVQx zHP8T}TO{I`naNVo;0T?+JWFGrU&2kxYju5&b}r9t>s@$9Qm)+yFuPGSU^7qY?}hCk z=Tb#k-nI7&4(`q|4MWKx3S0CV*GD%d|Hr+pzYVHuDKj|dl=oQw6$N>PZ3h4eVJ{)N zJ+iu>AYPh%`m@Twp-@6?GokSy)61JT*K9gGaS zhBBdeU>-0j?WXgxP|CquJqHcA*T&ahKDiLmQCv*Hh*278fwqWwwUsMZii!GQgUzi- zUy2X*EKpi~Z4O9xU+sIOG&CaPckTK!B4%xp-%vTNTe`cb#EOcF0*@cxZ@A?veT6bj zIB)LDqA=;e&PuC*B!R86P}mSI1qub`jutKRc2C2^R?fRUXOf%9!5MkF8(? zAH-Zpk1el()Fe^)W?Y^>K$397I{6=ejYLRNKBn%jef|Ml>D;Z=^yH=EtkR=n5i3#E z?Zk4vhW;%)BErL|Y?SQoIRAqOANF$@sODuI7!u;o`PCjZste#g)H%TF@gd92mM-lc z_lgdVYXhW183R$G)xZCNRVC-%t*0?%!bXZMm%b^jAUVN8M5pP$;?eFa@7nE8mf|y_ zw8*UT8MO1cF*Lyw%99#8WUubYh%vQQRy7up}49MU4LkKH$gjX#I%`9FwTs3KC2%>xdnO=SRn394{wL;I> z`42ho|G$~XIg!?slTXvrCsUb-3)1ku%W~(v#1Ds$<5&|Zoz~Nho3Y}ZJEa9 zxV5Q3qj&G#5(ztZ*p?+PsvYG5zg;nH+RF^I^T4~^ZNU{BInTC=pb~|nZ2bXg7+^2} zizkF6S<<{$B6PT8c}Jh-80K%v}8al z$@0h*xQdiSY``!Dy=8vJ_Ux#vygSyTVN=YrT4~Af%5(<|NJca;n|7J$mQOgQ(f^Jo z1JW?i){7&{oX9A3TiLhulO@4_Bj2sZW}|FF<@H zS7kQ=$)TaIXH@E_n#w_vP24zr(fCYeS(Kx!qo?_%xN|O7!nKLq1Bu?~~fyag}MKsPUL(_nSe9*QX?{E$-d7FVk^2mNRhiCZ6BNkEF4nt}ETl zMFdUR@}#w$pH|kfpxfKqUUz|_vR%+-z{8kM1|9x@at-B30+PJ?K?+_;rz#2%$qF9A z34_hr!t8?&tTPcJzP#!U%XWm40?%7|v1;_Q?Zp=EmmgML^IVkpkv*AUGyRVeODuaG zAFGiyD&$*n<;@k-dykwO(qX}h;rjbFbhyE>;u^hD3#yOk($3Rj={n!?Rv*%Q);vG< zPZ|J86lT%i@QyoBIw&_V&(?=)^wr_TN_Qk=X(B>&rxgpWNqDqN)>dGZV@7obbfa@9 zW~}6{)53rGvD<=0gMjtGhz+9rXvUH07Y;n|ic|isFt+3O53thDTL$Bss z>l3jx5Ak?GFp!{JCAESzSv%RlE`}Dusr)Q%{d9^8t_N9yk-N6w`7YiDK?A)Cka<+L zFQ{92`%v&DI#N<5G)4KN^p8r>DLK%kWVyl1*j(pQiCw^Lw%+RuK$!%8VHvX6N>1mNm`Uy(jyBT7Y*II12@-4)xJ`$!MP%v6|C_Jj5W@KRRb zc*?76Be8VresMtmQ%8ehidsw$V$%UYVCre}`qC5%n!U4|SWgME!gSnUY7s7U3gDk8bWW&`Y7m0h}ath73_0 z*V44*+{XIdKLlM%nJoEBr?=qBS&RM@i$Q^bCg);q|5Gb;{)TMUcBB;?m-kM^x2?5l zNzbvcWQw`D7kQBD-Z>!GW*77ygcOaCL3e*M>B+)%mPq4S7eGyR%PzMgFIrl{rtofJ za+8I)ug^_ZoH%LHS>(GSR^hVVhSzxZ)-4smtWd27q2v&PnSgPB4FHyFTw8v*D)~$V zAiU+;dP7{|9bY?Hg@g_sZ9@!JAyK9cypXD18JT`((>))f?Hw6Hitb6rYCcUS?}Mb} zW#Q`K?NA*ZU^mUFzvdubJsR0x9dZ8r_$%+Q*~8V7k(@W*Xl9t$?)iDlkK?@!&g*=T z{-jg7@7$*pNkqM3S2sC{qokcAND?lYDD5q!)TXDDTRW4EZYmO6$*ER0vOPPQw3l3y z+>(7QYqDFiqgAO~SbMiIlChFH+1Hv0CX#&;c`3c_338Hil7muu3JKa?)^b8@6Y9tP z4x(WTLjHcJx@0Jr?6~$!|JMr?#i@iC9op|{`y#D47mX?JZw8`s9p0nC1FpSMMsTjo}YK5 zBs&>FeX;*&gGb36>HPBiqCWr>i<166+0@!8&iHfi)^kt_LqDt2+Rqx{GTMgiZ)Ex2FG{!ZbGN>_?e2*5YT`uCg{O@?NJjG14v=&v( zVTzZA9@NK&kcbFWssJqAFuRF|#{DYWVZl5u`DqGG4wOmzsWWEu0y&W1{ozp?9;WE1 zdU0Gh5}pX-`Ml9QQ1TZ!7!a@1Ct^9z!+e~+nmqQV8C9p6HSluJ8G4XE{kIH6 zeeTkwGagNdvzmp-0;kl8QQ6D4wRH8;B5(9U`k2`lsA?BFDuXJ1Z+EdLB<_1-Cyz6W7({zjHY_W-etUh=IG&4G^O2#w_0cit z7}19z%kAlb;_3A*+mT5F(VHE1=VXP=y=1UmCb3^uVvBUk?L{l%YWB9ME?J{fg-Z2h zZj@KWisLDdA1C}nyA_~H)Qp`C`W_C`s*LtXMrJ_Qr5cn^PlG0^tYOQRE#!ru(9i(r zcG|Av7u-i3JhUpVW#8Q^lymB_=_M0Lig3$&{{C4<8Lf#x@;8YkgITaZm-Zz=-GdL< z$K+CHP6#&yuM%uSW5>Zo!w8aB-}#`;l6a=Jg<7rQNZvOu zMEuQOO07T>fqiL^kuRGs$FQ3s4Ve|sULXKI6N8H$j{1@J2Py4q>;wX93YfK??yJ}) z`MpfpRwK(H;WVXN?UcrR?O@;j&g>zlkLI2zak&)zsuHyfZ|Z?-pw(V&bDAbWgxfoPMsi|NcD_0$k>9n)KAHq;`^B zV*CH}108AU9~Bgo79JG<@b>e7wSoZ?#4)`FI_C0y?ca8IlXrW=W)hIjNO4wT3!OfpL%K3<4C zJK`V>u%qL!|HQ;l7${|0$K*QC@79&44+7i&ZA<`xvgh#Oo&JwaC5^$w=}{oQsu>w9 z0~Al~u5+YpYi!^zTYYsghP}@RgJ18UFII}=u>?h*>j$*;>E`6@V4zFzv)8+T&QpRMkX~tvt))`b<;@r zLl0KF`WSC|f2$v{qNTc4K7F|&EeIkWPty#W4u=a)|Dz1lhK=8;bL7Yo(III4G@*}A z;ixm`A&zQbX}yzC?uXe&6jj@9GwN~MUb=i@Vxe|8f)dlSdUkQ$P37odZku2#2H<4z zqILOIH}xxLk&VCwlo_6>PhSqLCt4CwD+_se$#9GhQkf`BTD<*twe|YN(r-H_h2Y-9 zh1COg6=W_Aj(l<$6({hW`+_TzqO9TsO#o8DvJz`bd$nCYF!2| zH37@!QlV^fM+s@o6b=Z*IjbT#-zP%RFUnlW!U$PYX)O>6xX{gvn3XU73*KGqJ0xCi z^q-m~Vj-;PyX3o#l&8Hlqc(j_SsXZ2?oyN=iWNXE1)z-2ggkw98Ufp8bw9ICcO?C1 zFU-T{9)j^rv{K`qxtmh5Z)|5Fk~p@-uP$D^ct!PAUynj$34%C*f&MPDd%(h^C@9=9G>T5T)tjnL0ju1BL}Tcv z%30^~qpj9Mw#BwGCI$ZcO81+Cl8j6u#2+6^>0#++eQxM@gfSFCveUdCYm5xKx$)Qj zK@BPXYc_pd6wrAIuEpdR%D>N!yS#5qlM`MTdh9TRnP|DZ5ok|;LzX;MPHNcreSv4r z^tf|l@v5MzcAoCVn_e79WBrxW6L!Egk8NVPwK={l1HWt4~miWr77vEEKNuo&p4E6 z_~UI9ZO3DZpKktsQsQmF|T+EJT-?RQ)L# zv;;~pEV}~OiqtvYGwezH=_ki98nQH5H2CTYtq^K$ z(P=d-Wilx|yy(;~h zxv|&GGe%~edTU>Q3iP$}qoZ0+Zh{u&Y%!ZMdwj?s_W>P!_SBAOS-*HiKRuAYf1gAQ7 z_fJ6n*A->t!5eswiTMqa{B1W#b)-2j%WF?48E!B79w6RSM_l zrYY~})~=3Lfst3Qz3C;z-thy0K?np4oIneZ*Z#w_VdVB@*hCcF!?DZ-*UAI321_e; zbdr-{(gTteD6_Tbt!ml3+Y5BKjmRvLZ9$cQ(M(XvO7uU|m_wZGT{MuPhR9+CG8SVs zp5A{F_jb4QFj`W95!tD%kG8t++sq2|eEwD5K9#v8G4==Wu~pkW-wc3xP{eclB|VkI z_)yO64PAufk8Y65O9nF zLo4(>|Gq*_KVw|@Aj42w!jF)bD8V>#lv9G~Li;KxX6lG!dM` zcO_5xmeNu7?MIsJ75^5{3j9ZPEXWcY~eBO1-N& z2!gLKz3(0#t}WR%=Opy#K-F_lOk@BxqpiBQY4{-#ql5R18!x}3Wu=~)lCpB5kJs>% zGc2~Qi;>TrM5N6^<5P@;ES2tTAGL;heU~w3 zH;>4 zKc!a^3fEmVAte{i&DKSAXd|P4X-FT9!Izo4^o!p((DaWJ{Pe#8CcbgYt83uJ6M#p= z&SEA?4_mbq7ZsJ>_U-(6Z>;u-#O%vnt?o}dAG=<*i!V+y^aiu%%#n(-QiR8VBuc-H zpCgaYChKZf5>@F$hvY3At8WMSRX0@c}dtqiVllYfDGs zVC#wOaRs2W0rFJg9V&(tfxjS#RIIPKqHA!0#p!Ep8zB!bVLU{l)mr zn^BLI?q$kM`l4^FCg%uJ+LOd9=*CqW2ENZSCd|=#bPClFeTb8QBgDQAKwuNZhqkZZxjFZ3*O>*zXPgr-og<2Ol3`*Vz27 z@IRrt{T5bygzWxq_`&5@zF<`B|C8x0?L6|#1A5{)SKPpW2o0;(u6@(Z3XbdOfQ2iW z$O-oTaV6vCn(2Z9P#jyQ^qxW21uxdA$wC^C49!xa=PXDB2D+F3-E7cv#5wW5i`oOJ zwgO6sz23~y2>=CCiX=9kie^WQyy^}fte~7EG-?zuS2MPG*6PG%Jl#YRplS!li9Hyn zJahW=a~W&U=bHsZAMTn+xemgIn_7Dy;Rsh>Utck~36aVlfFu{=(QQH|wXs;4JoTuT zMt$Ya-W}Vna}<$OfY9)n2Fi;oHAX|l1D!#UH%i8R6p3LU5UqesnBF%bj;8?2i~V(QLZOW~jo143HF_CtaS1}A3%o5o_k zg-WyGWk?g(IvKW;+p7G-lJ;0o;G)mfIyrA(V)nkmr(doxD=H)m4dPnBFKx2X9y?$_ zdr=O;gbYQMNQ1EDP6gH9o%z6`!lhSO{{?S*h~`wksK>>a_*Iiug?)dB!t~O;G|MZ| z**Ta62>q`Zl@ZaCtaFyR2Kc~Kc(aVyZ5y_hy=jePTmZ7ONBM-JL*mxXwQi=8n@Aps z()E|>^>MnMxtC;;^(?$MotV=x*j5a2{5J%G7KWW8CgTx`T7AGP#^UAqkFCX~B%^Syd?V1p2b2-02jE?Z_W7AuCgVK28PcxNWxj<)Py8w@{}R{3z^KKD5`(*@8+CI>IzGsU+rIV0 z?cI9z8BL@aaLMPl)Kjie_ca*J{&o6Y*;Y!3#^;j@YyTC#=^OnQTuA{U&_e40I9TAa zA{|qY+9jAOwFv~{V7kfps=@P*W0XvjRG(hHb}a?it{Ob>~_={g(Z_-|>CN;eFoyJe%D2|9@R;IM;ceYwM616l#m7FsQFacP6d$0~^i zaMs}NKF9R+YHCBc(QWr#e~v?}@r0Y|hjtm(KXpjyYT@$}nQVYyeW6CHR%=M>6Mh+< zxmchZ<#qW?Y_)qom?Scw5K3?mlRwX$=Qu#91g!R{?f3;e4dkE`@(UT?{hw=EIz4Xp z9JQbN#QNIzRoAv0ARIiwb2tha^yzKA17knaFu2c{;j40!wFBZudfMlB(C_is>B68^ zypMahG$-zK>*omexvjC*}Gox%;-) zT((TZ(Q?pfjaE-pTUoacbkx|PWUVw*W6PekMG7}G)_TmXmb^H8{_w|78%w5~&#!;G zZ+7XpPgNy$;}>*4J$LM*0pA9cUMOANZf-g`&+Hcy%VPHRioV$gygR1)Uk#y+Ut9Y# zCB;~%@AyCd*jV_q1NT#wmiWlBPar9;C0OTUw-(BzP<@4JT5GP)Ya?0gNJ@VOB4O&|<7OD0nJngAEypBG=lVF>P@Dw-Ls_Ab6AASkyd!-Kd(b zE+a8t9lYNu`R$UQ?Js(OfWQFyZ2lr~bbZhAc;J{~xc{a>pS4Neb(wu44$hHpARR`2 ze*R{|WdaV-u)leW+xj)itsSuga@!VFfJqkbo}aDsd3yLd&pr*PqE1d|4DDf57rn@~ z$`icxSTG!$S-n92(0~>jGxKtD713E4?>n%|4v1L);=L)uI=giHC)B#!7F*Yho6ecleuQA&ED%N-+C@miXw>pjZ|X3l<@BU>z1;GVmqjK#6N=~i1Hvx zo9)=w>E8Bu*1L+VN+a`}>CB9qHGaf8I2DdGGmfYhs%4EBF|zPzfM7Mum|{*MBk=J7PVD!t)UiHy?Cz0mCkwzC3V(VN1`LFPFs}aTir;{L!OF2gi&xv!obU zYpu(#sJFfLKB&Lx=zNE~{QRrB?cWW&;;IfwXp5;c1|1x(Tr9933Wq6W7sS>)IC6yk4W47mK~ja4``NKs14Y5Y0fd{dWo8@{uo zchr#wG>9INKeHUmvljm8o?D#u&8o$JRZJ(1L??+x%D{0&`Nl^f z&34=B<>uywVpL!f`Np&fGku6lQCH`cudjD{&?Rb4pcAeWRRVs=!txPQm(Aa-Z)`k+ zz9o6iqaLRgW03zV)8^2Oo8Jw9u(8A4cki8(R?48dp!djZXI;#6sO#9G0F z3);bu7aE)!<2sxjY^F@{lJD<>H<;S4g|l1?)yczTaG$o< z#pg~0hK`7f9RCAyFljqq2ci|Z|Oe%$e#vp&&B)|H?8-^l-E08O2 z6pmag!4rwiya;xVtrt`o9;An{8Ha?L{S4X|B?XPZRpDbjnjEO)+1=+iw3A|3`x*3r z8wf!X3&imHd=3!yyJ(>Pr$`?F4TFdVN(vd|%9&x3x937opsAJwjS5)I!iPdo2V?K( z2(Ze|17@Go`u3EsM9tNpZS2{W|5l-K_f;pK?yKavORf8%kz#=rH@;lt8B2^$4_ zzjiZY7HAUrR`4tXo|r7W92_fjb#1jG(};fG5}Us!p_+bsI)6v^I%%r0822{BxYuN2 zX~22;0rcFb&)^I!XcnDy$v z(QE=V#OtT_xx~P1q$`WkJ+=AH!KfWfSdh>dFYDR-yRkbr94w`c@kkDh$a-opBQU9QMZSXGVe-KVzbuY?e9P-xgZAuTi?aCI+}O~A23NBjtsz;j zRF{Hr>XNT53j+usf_jaPXh- zWx6&@g1M(_I)`N+O-iB|a!=`*zGJvj{pIOj#wr=Dse5-f_tw_ILGW-(OC`Wm(J@k<(zqpUnyH9a^q(;9IW5jklht+m}vi_r`u&va@h>U@z$O@86DO zcGNZz@jc&wl^?(W+<%AQ3vxV#njrh%6t4NRSOuIr`($g3qloQ=mwMN~z&pU=P7)#k zSP08tvW{?ffP%#34pEHs7s6|y`w`2S|NQ>Q@vEg(FQrVN0x+6! ztA$t$AR~rHC}jc47J2oGbVe@gaZpqffju3Q_$h@YA$!bCo#~)u>Jw_?=fI2+VR8ln zuRrlMc^WczWQ-;%B?Gfx)+;^*=)`jge;%CTL<6sYC8vq zOuqBg5`Ps-SCMl3_31+7mczXcRcC~dD5Iml1er&Dg2RkCCIDOO zUa=RJ`e{s3;Gw7^l`sJ_wVL(gnqPoS!Aq6!O@zROyOfp~-%zP?Vof8W-MgwPE1@Z; zi@G-ZWE^%LUz4xB#J3QMIlLhDp$(oKtSmOAPIfwlrikB1L8I%EzwUYVvBr`QawBAhwN8oVud5Nw_7e;7^8*_=wy2*|B|pki-IhJi zB{e>#cOLp`4aEWj)3}vS4ie=+C$fGJZ=St8X{Hsid4Axjh|=I!0q4VT#0xkd12VID zdamRJd@!3^sym&cEiYL*XZXGOv9n|NJzAL>78#wujueyvIxG1UYoUmI{ra_pa4!FsfaNEV!3i_wW8cPj$Cv6RoIK8ickLBdZMtB$ z7kR}$YkxPXNv^HvLRrCQj;b0zcC6hgDtq~}-8(m{9}vD$y^@5y36iF5$WmjoOrZ9z zKQ7Mj@Q51K<;(oO!&h$@sk2U(Kb+x_8tH2EJzDGDr*F|droW=Ky0xLlbO&|S>)yRQ z?M89$+HQFLji0=rrAx9~T`}k7xm}yJ(a}67nn6}1*?ENoagdzSgwmaOQuGV@?0U-= zvbJGCL_}Ta40@8vgp;wT)%v)bA9j%e)K^@wAeP^{6u-2E$m8DuTg%oT@fC#dBO2%u zXmvX9ESPHVrkbr>Gw9c{@P^Xb%g$jnouuL^l@%1(*5Yx*6S@hi{`mYyI(a=zOPd$Y zC2N5Ut@P0fJa_tM8Y+EK-n8jwwAJ|1$)Cyt7Tp?rAMHo-)f9lsp=*D$dn=vRWbrcGq+!?$Od$8aDs*iA8U)m(gX+3lgr4zbF1 zU%9&jlMWry){i#0eq%8_?t*_g)f9ygX`A)mIVH8QT%Y5CYw(9o&^E5VJOOj$d|gXf zlZ(l9axoqV&G{EhPF-kh|EXAbG3pXrtq-m1)~#DYC(*gQx0M?GQlKqO$d1WFFd?DY zUSBfBMpwfRnqgKgs)eY)=>LdEi0@b~*ndFZ(4kLEi{5$f{`|mOt73-t?urDHCc$3q z4w|0}pWY$wM!%+Wi}%)?^3C7xt+n8^N%pxz;n%X~6sM&Yn$Dfyt~4g^#tZ`?tP>Y)##L4GFw^iJlr`-6fwN~_jQ90# z?q4!V)}EQR^jx%L;GUJEK6yqxY@^d-oi6LSqRJ@uGT!+&<3{WMp&TWT9N4{L;EEP} zyb*p(!sho_Wu;@x>=XCu2q~Lg5=WB>rd;C;Dq$ZwIVVWFuz_8y1_a)mAge z95#i+C8RK!tsI?n*7)^q9H$zh1X)>+kFtv`1KZ!iZnF>7Vw6Q;v@} z?y+UtwrCKcNX8G9{LK=y!&1M4)O3=5Z)yJT{oncNH*wABR2CKH5nF1Qlv#YHb+%N;~3QN^P^ytuqa zD2UV&slP{@8qdq%1KjCFW7Wwd0IT1}yI=Y^SDr_mXkgN^g-R$>m<9)NzvZq_04S1Xm^F-Z?CFo0VH` zIb$|dxyWtXGSl7_4!;7vbRfP-+WQmv%Ux+KS$=f#4?9Axu(wI4Uk-z4F@@Y3@+>zu zechQ(d*W%@ZHy1}wrhL1-!5CdqJZ;xN5=QmzYT+inHKXeW~RumMyHiJ)JsU}a_rta z>xB!?S@#^Mxqjc7GtPdO&AJ8H&sYsW&j3rbZo(--0q|96OQPNI;e(l6AN*O3#FE}0 zfR{#*e?UhGADFPuS|oKF4Tct34d8oF-7YIWvspQ1xwb3Foyb>Y0>ttOz5PwuJE7+^ zB<&*c7Q4d_v7Ju$b?L$6F}W=6WF61hOV|?)hCy8-ADAuTB)f4z{ai+mAJUCKn#-5+ z(W%yK|ha~j;8C!B{f>}>n{Vo^{6RRBIq^+C?M^A zrwOI|DX1|*-h;;nwX+nhw5cP5N2D2@(^f;3>}5DSffmz08y0NBe0Krmr&*fUW4wUaTP6D9yO08>=1vUT*@YrkpWilVFZVSD6DrZbl0B$sxe zJkbU5#dP{>dcm1NTU|_2&fx3{25vC=fRNY?R?S=5fcx+dQxEBS3(O*lISbnjW0Bc_ zhICnnYTiCsgW&?%ld6_(@5-gBAB%&?eV^g_#$CG9L5MW`HND(#s*4RBq^@Q)Yc=in zmm0SXZ#GK@p{ZjFm&qL%%m615N@KsYNh$E+`?{GN2mOGRgzp|*6q2K-YnUI23UR+t zDhmHA^ekJ=FZ+e7D!A^@&X*NuF-FU5+H2n3$2S9-VG_-fTd zd>TF^T6d4^dq4nW7rQ976fc}exGXEKD3}ZhD8d-<3{In+zU>^=+v$8Z6hv@IaA z=itx91Eqh$#RfFxVs{#gyi+^+-U$|Ux!fE#6?aRj+=oH8ZWDecp@Mu+$8 zo@C*}D>sN}MNJegxX_UJ5A8$rpJqBFt@^XH@q}MdPa3aOAJ_zehU{6lFO%y+rm}m)>U>Z>;r|N&mb+<`VoSoO=UQ;aEUt$IE^aQ(m z$+-VOt*@&PJ}Fb_8@!2niXfq0F-ns>toRF}1Eq)=uyn-O-qjO$T=s?Fw$&EBi>??4 zhk7Egkn)*Q?tplA#WkKfaW!at3(CNCIUzE0c6tGc0^X3{rNv)o56ySDBke zO#e3I_@foYrdjhX)o?LdQQ+l~6Y=8H%&$#>RIqaF6rnMDv{KSnKTaR~q&8s=?JFTC zM0p#KFpiyl)7GxN9#hXSEOA>B76-%AQA&FkWth?BKENTQ7vQO zL`|!e1(G!O5c2^rloaUnoG0R-%l|jKFy$|w4{n^H=6d_0)W#s+e-nH!k^HcE4I0eS zj|T)NQ&rR1-e*=bS#mGrJ0#g78c}le&L~_FFs=+>sg4i`&j8oW>SxB?z;A! z&!@fZ`fSZ9(UW+Y1O`2Y`UC#M0IF9eGDfZvu~I)e%*G<`W_8Ic|MJee$k3P(;2(LN zsh!xXNl_G{siMTp+$O#Igfunj8hJ9y$s@(Al)et>?QuzC+l!B=)tI7N<3^yZuE_oA zMLtjNvczK8huoUU;VM6^s93C|K`dQ*5o|@#FZ7Q z51-%b8Hm#B-;ou&2J1$;)-^VG8Pqk`@buKwYdwD~`OXM_ACK)rf7qb=23TZW&kl+M z8G{l0lKp8`OP16c6#C@Zw3>$3_0b$y5(~xGhyLX|Y)LT!q3_+Q^o2Mu9p;U?iW26W zlFNA#tAUP5=bz0t!jAsy8A@}gq~M;f&hr$JVub*=oO7b8_(ox?L_3K)_g}dl>n<{g z78}t+)%osg2>N#(XN=FNEbAyt<~`p)O^$zpu+PrGdT}^@FGpdX(~(pKua3G3?u2>H z;1)L66ryW~*lJsirh(YTY0RayrX6J7B(~JyXJH7x5$Zrw3w0HF zjiV3PUuijhl1_3@h^)(H6BhsshlKddaP;WZ`Z^MTs62QScaDXd*$`xQbhob)Yh$Gr=-&hqF+7d9ijnpDDDVEAmlfJ& z9sCqbn0qYX9vpC`5~py}Gb`L&<~>fL^m{krPpf?%%&Z%GNKU7|~$=%{`PSbj$&?5D!;cCn*)7_1L%=v}gdx zE!1Z&-do&~j-7koRYVe8%fH5y@U&jZ9`MY6`Ue<7(`LSxZTpcuhY)#EHqYDpz%CbS zr+Zsl4*UJ#uRu{qhp9ud{8J0={7kE@p!QwQggXxUtauA7`u%p^@~9t#N}I}im(~x7 zhpV$SZCf*^tdWTkPr9wsr8tH0NFWAY6?!X0gV+;oOGy4Rr5Ecvn7{vVy$y5V28Pf} zZ)j%0=&!qEkbblJpo03zd2K@OI)0}vLB~#kj*6RTnDwHcRuj$IhKhw3V=wONzy8kg z!-uV?q6$*9)&7>p$X#C&);oLOrt+0X1jxbO0VQYbcjsRGIu1IjlI&8#EGSI85_Zlx zCY~_#x~Ti{X2mz({HfpV?%UaEr}#_k;n1#RBMqWo4EKbfcyVIvYC2-KkCh^i zQdoM((^$8Sx6>=A9aqIqL{_-VOcD?qnSdx1W!ipcph%8}L}-PHh;r)E+J6BYwx|9% zxEu=>xZy=Ure=E4gZHTu@`169mwBZ2v&mkgzFZ`+WYlXctXTm`W5bM)e9z$7^(xGp zf^o&p`MC%`gF7Sl=d7{X=Ni?|f61a*F}8Zk(d$yxYzluy;->>)BDyid1qU-E=+%JC3FuA9;P*M?4-VW3G`&;B|h6 z)F|d<---7|vC=te-pk zGHvslwcIvpa^fe2mf^0G9s3=uEF=O}>qV z4bcUOvX^b{`EnDfZQ*Rg*J5l(Rie=xRC|Q&vWJU`tA6M;cN(TW)5C*ZyOATJqW^t? z=s?AiPH5|iOW#WX2SLvKecC965HbLE-6nLk%@oFrp$^Q)1luI$vvzv!T9D(vwH-d^Xsx zhE<^lVryzc1oraADrfNEI^?Q*xuvE}$n%CNk+10R#Nw%Dl9Q7%EfwC~qq@MwA{k&2 zp;s~}{MNyOdKP6>(YyU}s>~UmJytPo7KTyb2@{&OfIBkoj~d=XJWMeCm}OH|J5Ff5 zui$dcxQ%}C(2*m<6VGZ7zA>*Q@9p9WO4I(Ei#B8yvkEe*SMj6eCAJHP4II6^=Z*xN z=I&f+l6ET|D64m;tEXAXeukx{75H`yw;g4rHV|R4Fch10|K`p#jv=9|I548mIFj6p z4IB`5rvXcoYg+f6t3^T3frrj0`5Wl;L6*$3~7V zq>G4&xts8@3!Nf8)q1l}U2aDX-1VhRyh$$8`ju?wX%0m%`ldmEDg+hB_#rR3t2ZzO zG4d<9*(CFH^~y_K*2$sJ>@jIA`|#{iyy=P=#;rzf?#jH8iy=`%3MH7jwx?<-ZF;eP z0R_Rf2UBeW)bh(3(2Zplvw*kRV)9u;^D%2K&xUv!&d z{6^1)TA43FS=0YB2|cvud_Owx?=fQBAWAc?3xsFAyl?3ne{ShBpdY4r{rm44u`;Uj zh!~0~qpT=wB*Y)X-fY$T)Y3O^QmhWnY-VYzW=YY#e)e%zD)ZLWo2)@=m=jl?*dm;K z%fugjA%Q*mWS(aqs@|0VW7zAjy9S}pimfb(W8e~=cw0j=X4LrS=#%qNQl5EtVAm*m zLh}ECNi%2e`~;4~$W-C17Yttyn~^qGG{UzeP5ytm07FJ=btvz=aJlwg+IbT7b!tlX z>nO0~a;M?b zO2->q74(>s*WSVsjKJn57cautY-wwmFDO=gx{ z17J4(lSC%OI5wAvu27JOTLa1u1=OiUjp))i43J23%NrzP>#yrYzjDvCshQ51UV0tZ zg;7pU%fT~t8#k^!y%u@Wum*G5HBx2$W^HEW1O^suEnm!Bt_=V)pp)_Axu*l2>%7?( zQL;R?Jiau#{;!f8&^00`L7*r&)-I5$Mr0X$2xI7Wca0B3?Jx6e@qKdOGoh@E%h%*9 zgGm_Dxcsx^i-tlh@Wi_X4u#RId_BP`L`1^qe7(%(DG$C=YN+iUJFXN9)eNycI~cpL zfl$zS3fEp*;8`yd6`7&ObrCl}F*bt7l#x9Z&`_{DA)&D2ay7sm!se*MTk@*(}>rHnJpJSi^LQ1Ilao_`L!?I7>{#t~(vVO@FOFAWouYWs6ep z!u4iaQQqm0)uwfSTVDKS&Wyz!uomZzp%0$}05;AMy5EI9*VC zpexPz)=jHPYRKMN|HHj@Ub+qQV#<*tM+P&c52;cKnZ2MVlP=J<_0-ij#6Eo9r5~z< zo$611PCW*%-mvE%O#2XM9CELWZp4A0eHk-$tPVcnbZ)fUAj;}C$=8-oDYp!pR+M>l z+?br0CucUV9n?}|q-Dpi;3Bl%YC81fR(l365$+cLw~yhhNG>9b z4yCDdbaK+Q+c9$P(n|MDX5{M?B^_ALO_>kOXwkxk=ueSC)sV9GTuALtng~2soUDrO z>CR6p>Ym$Hsa{&MubU^KGBY?=v03HY!i#WGUcDuWFZ_a5#BoHoOF_>=MO3#%$uDeCHaNXZVD{F799Cy*U zphFh(ve>1+f4rES{7`USTm`x#GhltsMEy@Qe$Az#c)YzirlY3|0Z)<8-Mw)aOFZO8+aStLUwN5stUx!*@T2vN4!Ic z6OE5NxD_$k(Qz5Od|oopz9K+7_S7m0alPYg3LX!Xv%P;{53=;$JkL$g=QyG5#4Ef* z$oFZqvBcbn@Lk;JtNd=~`#%v&i4(R^-l)eSZF%V8ukx4)yU3&%9ySvuurOmU|9ah1 z)+b>rar4GU640xue|~OTsTGU&F5QMfWN!bKa(}?E(9kWPb!<+bwr_q(+3-B5xH0+? zKBCxKI%9?*tya5v7c@9)r=JD1J9e>p!njQ>JQsKzopQ0QxRZi9bZXLKLh23AKEt#e zNIJ{4jp_x}EHv#iam2xU4;=gXak=GRHOY&mvZjye!PE^`NK2l5ZmBKmI)eO&q9NpD zGuN4otZv%<$@NuP;@9Uw+t5?x4)rXWYBvs53e~VsRWw)h4z*VlV5U-{)I~8$Wp8VX zzKUl`o0Z=--rF-&NugS&bpuzG&{U-jsz$2m&Wcvb+f|C1DYhw{QBHrLIH0t>iK}Ml zP-{oMzkz7tvM%dNKwUdAC(<*|`SbK{B&EtHQT6H$-)cDRc9S(7XS9Q50#)`lD2KKB z$|k4F$!W`Mjz2{s?=>K&Dr4^HXgsj}K0NNl+&24AIgS@Hh4(SFXDYzdUav(14faj4 z?kSP!J#f7Dywn1dMpsja zISNySp$A6B3=>mbSyJGZTA=r+;CE`5b$T5(Hs?oV7H6=P74(xOj>Cm}!=#=e?&-o2 zFrw1#zVta!oEI>1yU{W+m+)$b-kSn8bYnF@`9}ln_IK}UuwQ;r#Q}~&Y zyC2Ox-8{Aw{*P<r4QUhjBq8UdXl>m1Y68#7`{vp7;C__5-AQm`P{ zyn_=wAXW$_EXm4Idp79D^X68hziH)o!5ocAD<>=HwQiIWVot}!+BH3R(V$<%q!h?`X2=M^cklGXXLCD~z8U}ie#8?@Ag~(i=OwRIk8%styF4#?5GE(` z$yAmxnt&1UI1pNbkRuwb(ktbErPY{Rd8rKw<^u2%4Vy?t!5b$ne79dvN=q?q(_N<< zOx(<3(PI{}nSzSg#g%q^5=*2dS-6Kf&|=v_8G}&aUbvg6D(gqRfIy;2B3U(i)UANk ztXK|j$*^Q?o~PcT>JLzzAW(^OF|S!i7}@>&O0alY@bvyWe|NZC2S3cWRKLm2oZ;a2 zS+YI;#us3UZ6Kgx*&=9!H?{HTH%ZI2H(}BjO;Zrb&YWmq=BriaF4!owAhyq81%C4t0zFw{PF!$Bysc|9bO&55lSN!8_sSMCP2<(QMei_HhCKQJFFT;I3{-Z&j>?* zX}(LsKcC~@3{XHdIES$&gj2(HPtiiNntCw1C}h>83_#is%U8GJr1%offFY&O7X1=3 z1v<^>&a7pA`{MGT=u2$?Fkm>0PH5qo(avsN*M@7Z9WCk}u8Oi4)W>l4h{Q1mZl3o~ zD0HalHDEwYj4bLF!!N;C0>b<3^a5e>dJ(ZsBj59DNp-$w|9s6v7LnmzA;Xmhzw(#d z_2>=S2$<1G^_ty`g%r2^*KVOt_YZFs5R1)dkx)xbyq~NT1X|%7U_CT*nAm6F$i^(8 zR`ahee*66B74=Mnx1mKWn>p{*Lw&a?Lf@Co7*#^Jtvu zE4^^raIeLC$xCZCT3l@@#4BHAEU>lPLR9&JcK$xz$$4K!usU#C&8nA z>6@6-QyPJepRhVrzH#vWcjBjbbi&C7w4UrMvOoex5vPuxVcd}&7aDIVusih+Cj=x6 zQG{+}C=^*}2qO8Fz$P6NLkO<5uI;H>xjZ zu@VYgUf4B^=+sr1X^CRRckb-jv>uMPRBq!QEyN`>h*z~v94zwzli(6W`Bz)(E<;b9 zdjAa?d`7l==~`Yau4>HI=?!p0m`Gb3d64pI4uMLJaF4Sk&Hm>|8tqx*^w~UTty0m@ zHT52N?=Pc>5#{98tv61UuU&iW$dT#Mp6`pOAEI`uDYg&6pua5wCK*r@REqF<^T=#V z1hICs<{(Whtq9UnG0&;uY^4e)m3QyL!XarhHv| zG1|0R{%2mtw&7rW48Kzs42gGqb;4f%sKKGst*Z4Do9_49r{`J|cbdLZMjLZ*5a8OP zFud{5F={*#HQzW+{L-KI_UL`mR+s`%R-m7ljupU$Nra}p$1YS3JJnN1MV6F`NJn-I zu;7cDUV0LdEXc!Tx{<*x7uLRL}OQk2YPH@S)@0 z(JicGG)%M;J`pk7l!`)JemD_)r&pk&H`tD#SN%|iB^dS8rw*AGv6d$&<<1%4%fDW| zn8!0kDG%V!q*POFvOx0jV{skI8gQZP*m>y)7K6ZUXe4(ZEP!InxgF?1bl*7YFF0zOb1$40*nZF|AlXFY=m^}a4- zke6`tJ>XXhwoj`tV%5sL!szYzqvFFyj$P$JV$GS`VWm0+-5b+eckbZq`EJxH4bLra ze*laAjg)M5g%?rgbG}+Oq6*_-(t-zL-#$9NC*hLHD&!kv$a@z)snG(6lu>59^uh9b zj;^+x={>MzT;8FC*k)T68v-$6{!x7l)boGDUcWrY`}_Y=d{0*l`cpNCIrLI?lxoZT z|8l~n)}8vV0K@Ho>Es6goZGjD=Y3L5Z?MMceEG5SAFuMk>MQ=LIpmKH`f>8Jc~i$0 z#9UA(xXWyUxUL^aJM!+t>9jOik_bQ6=4JFL-2-W!ZDKa8w$h=}7O&Or-5Z0=0y*o3!VcpK(EQb~-Eav!Lm&`9f6_?{mgBNvISTZ0WY9-iL zIt+Q(Ty_$NLyL&#k})MSMN~p}!q7ulh62V)N!jB}k+KLcS?)j`(1S+*@ylLI%f(kz zSWsJQpsf%K_iqxO*jufc#sh2n5`Sfn1cP+Ff0ty^iX+|T7cx&`FD%9;sfC2wYx0xPmzku&^i2IwwTkC^j2SYyTZ(6&75OrRS6rQ(&9=3 zb3|G39a1rtR*lSme=n9N68doM0>*qXI#y~J7o^4<`nYK5srt2Ksv{1~*I(ZrW0%@C zI`f5(=>{gy#Mxf;TIi_Ax*(2Kn;*l~u29;rYI2gvn{{z(X)|GRj(%U%+$#6!(>uxo zJdKu%~I<>A+$FH*R~-?m_~@znoGy5y(SGChj51|6k;lszAQA@@rPQ+ zF2&kx#TD0drklxL1u0GDe9Sv~8Es06O8>*X?md0F;jc0rMXUrT(9Y>74_h-bho=+4 zO%`V)Ny2-3*pSm1`MG~}0Wu>$79C?+)i z)3C=Gg+;d=I5j@)J$nuzhiuVb^*ViArkd=cl7A1xEcnTN|NPfT6&bry`#}Fj(=W_e z=mL#Yp$!Scp){C(Hkq|Q;i$Hn*Tk-UqXF2MSi`r7j#@uv_Kos@)Ua+RpBcRKBEq`3 z)Mxo8os?bNE;GMMG8y2N$-B4|LrB8?bPnC?gduy&HH}r2qc+cEri4IJuWsnLt7n;l z+BF}=*cEhtva!a19eRz01trG^Wx%l-D7l#ckM(c>WY!Q6UjD6@F_3Vmw_xJFQK6+jHZO|SI%$`emqFv7nilxPff5A6A|}a_cf{S|0&~Ntn?EBy zj-}Y7W?&7TfOk~L!+v)OvyOi)OL>5{Br+L9|Au+yDjXmieCJ!v)GPinC!LrVLEV!) z14r}&2M#pp{QK_>f9cbDx%RI;xBZ=5c0+*Kd-A)7Uq*LXi}q>YIvfQyY}jzm?;!(v zF!viR+TOJfb8I^z>A~!R$MH^ydd0(mN~v@h4ZtFxjqavupL!(pVXq2$^K0V$M|>Dr zcpo54E)|T^ohxsO0iC221`)C}QYd3G^N{w7l2SH-&OQ5D^UY(DCD4T|jbQmiQ0!1r zsjOd~4n(a8<*V%5yH~-wKigsb=?srShhp08_4Ewu3)*O}ERyZz|5N9_dHfucdCGNR z))18upiUFZa9|6iwCvGnEkufXEUeg63my!tf#uK-TpD4i2U!(K^^kbOYvB>eeQLsQ zl>*#x_(;QV_F}oZoLtF}?C;=dm!2nm?A7uB3UPYcxI>55_G`c+xj*}4MzBr&A0;#I zVweK}-*w9{-DiU>_xrtVT^N~kuLHF+B6gX2HEQN~(G9*iB zFc%YfgjizEj15-BDs)E8%4^fOM_F1chP84mZQ9rjZhZ9r|KiWRP%#A7)~~8Pf9&%v zZh@w>;g71sRcWghELh+b^OtBOxVx#As*bf)5o$vU74DO8a_p)ps{T?ZAd#u$nw>37 zo7G(Atf&W5;zp!zj4YbD9A$7@{b)O@4@&9q8Rnz5LcD4%_SZ(}H-%UGqP%n=>@tTnRa$UD$=`v6TXIik({2be3 z_9Cy-(DHXn9Mg5jhlty+qdv3?A3_-;O@nQ9wbKxi56AoHlsY)&ZF_rNIVpPnxv5CQ zLG3>S#>?ziCNUG2vPq3Gw$77SMk{y;x+LpLMVZe~_BU%pX> zHjyj@{J=H)wJXg21=wBopg)VNcRhgLM_~YzvGmPW*h*z8Nfnh#D+19Ff+KEWGDp{aftvJ?^$;FLdvM(-alrry{wQ71&J}G%TG~+K z0A9b|YU-WmnSHt<2kABQ90dlgm70za8>uSDN#_sJXVa!|=yWHJraLA{hs{qscB}~( zF{iaL-nzCYTXoFXcdZWSK3{Q z%zEFN_ta&!j(PJct&e-95npY*imMcLO%GynN7`hT0(eaozSKseUZ;@b|3qJ}D$6iUh}zx;$>FGPO^(0g3>ceDr% z{ZoJY>_k*jr^DP1UvxHnnAo<<4tq3M_lA_6D?29kIu7-#8EeZb962C$!%hDES8V2c zY>RF=jGPdxHw#1)b{l9&(CnUU?TRR70TaN2paN2T$a+d~Y(#p))y41QLUBsbxKj~F zX~FmbcD^}do*IUpyy&;S*!1}%A|kDu(~CMUCYB`Jo8?rMTs1A}X?fPWr^izZ3<3Wj zA61%!5SStD4zk@HSlu>t&9saLp9lO%8h0ctZJt9&Z(Y5>Yg>nh^uB)izwDm(mwf-^obeZM#}Hy{a8*pZ@3(H;-n>>f^3dpwKO@%F7bD{l zXD9WLeK7N9j2r&p`OUGxy}QLf?U&P75pe#QkQ8rh{HG~}3<)6r>%DjWLZy-hf>G~2 z2t{uTPxs6z?b{0a0nx$J+q-V2FLV~x)tMhJeOgudW3dDg7-}HwzE9hCzibVr@CxW*O+w#qPMo1NZ z1%tv8mqhHg`GI7@6wSQZCpVWx*O=323xh^nt=^k>%GL@|ok>r1(Lq1@iWDEhSHS35 z=RE5Q+NSK>HE@ZUyKWu2*0#iO-zdn z>3x(ixnYBEd(j@y&nzGLX}#DP!BxtX?HNyI9aQq{7RpR&F9V_285{2K35XD@t#zpw zb$4~#o3#G$$&)R)bAD%c8>$WH&=h(-Bwfl+EX-y+K^1yyIBs(ZCuXV)EYqIB{G4AG ze4YUz95|qlLaEAH{{mF5E|aJ1&{OFDUS%gp2VJ5XI58Gro7^12O!bYrq{8SKSU-oH@8+qm_W=Xx&t zl%$|a#9E4v7L}!!wC71HO&&*w;1Ug~1||86m*&nY=ztF&jw8%Q-|TeSwxjb~3+>N! z)zq~uLghk!_GNhBCbGZRTPFq`544^TsB-Ez9YEg>OMm&w>?|#GDZ{4<@h~Jn0BBy> zGJZ-JqXt*WD!6G%y9R}=xfmvhDfjWIgC_Z2Z`tD4>#84Oj1)Qb*tM7G!c~Dd*^)^v zJIk*Ldvtc%;fn$%n&-QAk6J{MXbdpgg?S_#v^pxl1%xpJhNJ47(Mr`uyy7Y)xb#&yxdlW-Csl$O* zc-qC`pPaLnQhEc&q@6ldnH|1hs?mdmH9mbkCT}`__QK26?Tox08%^1^5@Tv;0iW?_ zWNN{p$19~(`xs~++&Vp`!P$O|V_J6e^PU%K5_KJmU)&BaoSN70lWpFOH)(jUz_}R= zq|MUk=FoIjnp6pK8W9*{s&HOKy$(SNOa?qVYjG%d|ujE&5 z%^7!Sq)1zGYLFD-$Q1B9SX2BSg9`E0klhjo|5oN(+5ADrc<&n&@DaP)l z7LmGN_*7O_COXEhBkSz-869bRKXKzivlv-a@)@A>ud;~(&xbE0LOyGHdry0diAoCq z8Nc7#^LwRGh7m2Kc_>-r9AFRm&z}o92UC*&psdB%-n`dJOrW}Md8P4*!Kv5m?Ok^* zuuJhN#A$P4Y0FlvI&#ZOs~ku5QV{DaA2|?3{ks_}WBADRzR^_aiC=4no+du{UH z^`Ti18xOICWLz2ZJiZZtwCuM5JoL@#w5{Z|r_tDuK5cDKkn1#Uej@EtzPbNfb)bvY zqD2E9m1^5#uTO1 z8=diwd5}6txq$Qls744Qg(@aHm1To5K3+^q_Hr0WQS&ZTsLK2VnrBmtkEDK-<-3ck z3ucNL@QDRw<97SrX!Dpw74k|^f-Gi9WDut@8S`LzaiM};T=?}Wga#ZKm*Li^5DymA z9(KWf7Q7$haDOeo4GgXCIYI# z^KbiV!2vXQK)BTCboSJMvwR@igZKDF8G9l5+@v0~?K>w{A7?itsE@hdzS^%PrcF>5 z2{R6==GxIC`_;vkm|wtXnWUI-!o8qnq%BLXJQWw9cm%gw4JyBkrG@Jj-mY)JvXz=`VVbvyQ*zsH-AeC*_-yFPAH(TuvyQ5rRA5_B;o z=m#o&y2b9i>jC!k65caE*j?@i7&5vCNccBrkHq}E_Y>B$d#3)}NrI-f;VZ;$dr&9M zMRO!n7lPLfMhNfP1c|bUJIeDC&tTH<2=UayNI!#9Eo9!OzM1WDor+tKF@58J)f4BQ zUA1<0z)_r_`0MljonCqs=5H_8bcGP;NF)|mSH)p+OS6q!` z?-PDx%NXfk&`5a?Aqa!VS>5%~6>wYJ-QuDmo>;ymYX7A_i283LI`Tm#NpBf1UBzekhiH-;Cbve&!$ zM7kyd#;e;sFI)4Xp%0E6_=~Rd3X;-XbWS{7SEHK^&F?<5KQ*4yszdWgi4u4y*3D#a zmU}a;%mr^7HduW8vD=@oKNjQvmG%w`OsJb!V=+pt$B6m58z?ZJ+~a=P*QkFM*Yr}nDEvaXm%F_nn26wC{$xwwr4NDgTb8x|Q4L%TeDQq9 zmRevOW|tWvWfuyUOqpu$@SJ3AWOUpB&Gn2pBUf3nFuQUid!oO!=w8pcm6S)KXBIJhh+EW@DxxA6Qk$LX0zu7ap z8Rh(-X{iOQtho6mJZUgdCbDve{py3}bD7Y>#AlW}rmLtWeG0u#zvNmK-)&m6_zy6H z5dtT#=NHai^94GpgKXz^>O)yNBzk%`@Ut@%s-GFh6``ORN}4|rT;(xoQTa*P&=v-~ zbcMa!F(adEZ9kfBAE6#PvgMCPq%?7=2TfK1Z{cX-3%1=nZzg+S2%~PC!L;X4ePNtk zSlo&j2`1_A%a1O_=ahX_R>Ul23QqBstTivFdw&nY4oC5m=s|}}o2Enaz<-ru zd3VUqcboH~X{c7g@&c8f6swa@-sA;)Pj^9s9uUczP?f#Zo?e-y*?Hpnd@DFnHp>o?g?? zwn(?zfTLXz#qEvmr=Kpz*1K{{AJQD2MB7_@R|vC0grkJ$qR1VMWCaMsHD5kp9R-ia zmp2?W3@ntv)Nb6~xN<=ZG<&hJTq<~spEJcB&vJ$8G}?7%SttDMV`GK5{AHV!8G60A z)LwK~0D0mFNzbED2>DJJCxTrm(!8AzhA}-4GxAurz^l$?GSy$FNOn%|Y^8r&f(Ijh zbVMxHoNeb(dVEwD=F|#WV1hjd76`|D>JQ=zT(0NLon3yMsGfJAdd{a$&v(pQ!h7Jw z(m9e#X;LFEGu?P{r!e|!`IZ;u6L0k1(WvhIQ!n;z-Ll1!Eu3ZLOTUpgP1#x<6mnFQ zX;Xh!wn{O@6{*GN8(s@BisBGyG*UHC*%QBC6|m>S)MtE25!3b9RaHSuedstqR8xqe*C$?+T* z^ls2!loe81P=-Xu%(=oiu(1p)pm+wE5PD{ z8OCjXJWZYHj{NGbN5@X5AhoZ0@#hvo&gO#Qd5Y%L~bbF-lOg{9B)_FhE?g@@sQ@!*fbGvfK& zo3#JlEG;vCHQWxz=!ssyEQVgf+9&nfj5)1YfQ>wsD#~7e1sDfrVgtYNQ|Z779Agrw zl?WZ~zBfNs5edsW+_b@5w0DmA3gnO-)z$t&I;2;L#?NzRq`F|Z2G4Lxm!rro*#CiQ zqGvS3WL`(r)vX)rwvYVn<*l>r_N?yXsHU03h%3tGX&Gj%{n)1|zB$tYLIv|2HGce~ zcZ<-t_5XOL4rpgwu$x=MaUWdiW=Vbk+9h^U*KccMEQs=G~`2|3F8p z1;ERu#T$CREyFqsJm{5(yv0bHLWDy)>U@Q8o#{%ZgSgUZ{jCiewXyPkV6p352w$MJ zvAde=@5JqhQHL6-e_zpA0bn^Q`c9MM^ESOl91+iqo_7Klo8s*To+b!skpoy+CdTOO zuopfEO2X34U{PGwy8De+4Q#i9tUG5;w*n0+2C^UK*Rkcpxz@q)sl}(L3-~Y>ij(iA zkfM2?S?;<`rv`YjO^4MubK2BPADx?8G#Ej6>O0)f(spFGKaLk(&7SPsq=|iZF52sT zExUm#1wXb9;En}fPK>LlZZ`>wO#%vB54P9$7e2dOO$Mb*7?CE3cvSEx@wFn!ivgt^ zcSc(f!bpye@>+yfVAE>yO1RNa7N-=Mc`S;q>B$%flJXl_L9{sKW3*@siGf484`z!2c2IEL%kDA< zGOwJHIL7VU$7jmHJ&U%dpF8Z9{P_68f$vL|Z~M@7p7X^$cd-Tqdc2r2hk^&5-F1(=Y0%&o}NIRdRWx$Q`Hd z*8U$neIAZYN=kBn?XL@Mfy~3VB74!2*M%Y-*D8F-3TW@a4o91ZKI=?bbRE|LUmA27 z!qczoFSG2CQeYUnq}oM*Y;>LbUa+gtRzI3B@Ffr;mm}>SyjBteFdsKUE}3ATBCLb% zBKxPK?I5l=B*tP53Gv5F00`|w_*E>UFHG8 zycA<=`~kOpyGU~7s!>{PI_J%mmnR_5zib^6<0Sdege*5W%HsB10SRFm%d=&<1_I}m zd@|XdDk;bpyix3y(B4?!en3wSav)X`@ITdsf=B{&gsMU(^X5llVR--*-ID~2wwM~m z-n#9Pie(W(#ej4Dj=`OTHuAh8I!g~2D=~(kjTZmVlzI|J zbMg2eSsw1!oq|&Zv?6Qan!7{6htLpjR4qsz7gGI`4Wpu$VyM1)wW?fT>wpvEe3@i? zT?k=V=Y8TqH^xk|%S;iX^c!7JD@uT6 zOx;dgs{ocO#-ilvh`!Gq?JxN&M}WllrYEE%jzdbM-9*Jc|2mOa6d zfY~SuO8oj2#7Utk_S8~kD!i|66!R+-9TIdyPyPEG;vOevMAeqN9?A1w41}HU7-&zU zM&k*!!lmfM+1u{M<~hGm5|#D7IAx=Swnf0QI{}%cRnRTuLK@~%hLvHIVCci=O?@r&23O@3oXfx;cU@Kw8A^VHNGq!7*l2z$kaZyv7e0>|B- zvyluVx-M}yYc+Lo-pe2m!cZ{Ys;go1`#0olzb`A3Lf*^dcJumokrgrCxlRt}{%^pF z87j;U`+)pzpX(}5{fq1ie3-t`jUX!-OT^^Q%Lt=lOq%{MTUf(;S%J`g?m(soEU{h7 z#3<4Y`)>NxSJZUEQWDFqpFhBWULoHA+p&UU0c<8d=n!=_ITd0Bai@2VHQo}OmDMCj zr`F)9qD`}e`N15je(2?3vI!XHh45Z;!gD%#6#Rky1yQy1M_kGtaxf+-X=m>Y=#e{4 zi^vKB{w6pxU`SD>TQ8^wv8Cp@2O42n8hk4u`)0}0#uMm>fb*ufx=;hqB{+^6WwEPp zy3QXecLMj1^Z0R5Do`Jq4c+f#XJUVL_Ni{i&L|^f?wB$#W+d!PahAWqwiVO?YnRki zzZAYWtsn3b!I{^@(L1@cDT-v$aV92&Vc-~XJnKP+S|dD57|Exh7v!@-!AXeNM$NYH zVoCRZ8mVf84aIj&77G zTuynlnK4mK-RCGd5jaz7AaySa`ZpRO#=(Vu4tjnX|Ix=3gBN_P;TdK%*%*0VpgUkq z+kM9@3VWw8s=_);+BZf{pDFJ0d|gT>eEjK30U_syY5k*@XJ~kgfPBTz{(>$;xg&p< ziJxI|B6dI1xs#iB`I)*`UfoHpPZJ&~YB;tUS;u7BvMuh#*AjJ%)p5f>77 zgNz1NP*mrhj;Bn7t2^#UORY?T>8R4y%_E2rg51ofr%u)&k)!3Cl8Wh`N2dSy>H4GA`LGln|n1g-8@3 zNhQ(zJ&*3|`+xkukG}VCyUxz@bH2xMypGpk)@SQiiC7hb#o1Xq*m%<+6^_de!;Q0b z%2Wy45VIzMC+U=Vd-a%6EX=Ohvoh`M--mP0Qw>l-TSTpW>76)a)xP+3uM4USYsw#e zZt&&GfSnSl?!};D8IC_C_g-aGR=+aiE|#q%WLG>iA6DLERwOb^c+wdcXGEog{6d`r zZvn}E*rAxb)UB9oy8>N6P2rN|*C_>b*ZlJzysw~m%bjvYB-SLXrCXG06s;*-chMnl z&4%QeRQWXbYS{~l!u>QBI%oF?Rr&6@*B<=4D|5d#>e#A1 zoW(c-&F*P^;(VgjhPT@jq5YK}!@-rQFMJhTE59!X0_TvmXqz5dk#X6t+s+4=G$egk zn%8_LFUrNWt-wp;)H{nX+b0W8CCYMHc(J;u=k0;v2K%wYtoJ)rGuH3U!R%y|E4d^y#qMeyqa9i6^U*s?-#tubPj&)W)#c@`h=P`lbYfLO4jDEsKSV#dw8P*x}5Kx=c8~ zzp2yX$(3rH5;Ml=C%D)@7|&qSaK!D2bd+q7Ejm4v#E6C3!}D!^*3+j-fIwY;T=q+Y z^Yh`<`Lx^8iGm&~%sX$Y3tPM9_vKqNp}_U_eEj$^Z%$fR54Yb&Qg)nf!6m_icBKbLb{b2Wf)YEU zqCGvW`41`HpvfO0Dw@Hh)Oez?sqpQ&&)Q7ahJU3C?y@`3TK_?5Dz+HUz2CffqejyW zagw_5T=2}Gs^7C~&IX>Iwmj362Z)GwP_1~Gys!S@$tKgkK8(2Hf<067=Ki`coI>CJ z=;0xVjPOLLCuE`Q6$cNIJu90B=Kt^_^$ROspZ%eBBx7&*%HB}sBye3Eq*Eg_Reb{f zSN~3z8C4B-k4Nx&(m_6$K2VoJ_@DvEfE;IFf}*K*x!(2XjeO5FQzB|xaCf3*x8cJW zY2T)`c>*)M!j}>Vjx6JtQA+B2Hj}PGn)B7E-Y-$FtPd>T8>C)(gw1E6ztO$L-jC*< z4zKDPdFFn@eJrzJzH8bx$kVjE88n~pE|@>U$_K~RFLG|ZnhOr7iVMm83D+3~E^Owe z?-#l5Juu)&#yt}q4aYw^3)f&G1DS&ojPDwb5X2>$BR#rD|4zAI0a^t2>$7ux0!{$h z@|-{Gs{gGOV_slfnNg#IjCW0GOi?dd7iN4zglUZcIH{=o2u$;qKeBuuM_vCgcTf^5 znhFG9xbLPg+q}JtmY9Dt7JbT)LpkpEp-4c0=16%we@#hL=da`9v|ralhwyXJdeWHM zNScPWZ|ZaZk)2g9G#v=hW5LEv_Ls97txNK!MW^6p`>8E@Sx}ajJRPSI-d$@nezzH* ztbCi7I64Fliez;BDkJ0NRh-fUe}C6utSqRmPR5_-Y*fuz_d53A7q_YhN^?_Q-c;4* z9vN+}=^bYeeB_Y`E0T3oSA#>q7R^S4 zWx<=&X)Vt(X!NbRs&bZ_k{sKuHbV;(H_%<2d$Q2oec1f@UzZI$vf{z-w<}efbpc~z z6V9vG0{^h0z1cw52(J=Oi_wiSWvH^c0IWK9Ddm6QNX1TG$3C-h*IY` z0Sw_p0ez!r$cx*)JRL8rs_4}NCUx62;(osGEh-GiVTh!)`-;seojt@0`b*w$iM87| zixvk{EId}!n|{=BzKiM+E;P0_J+lAg&t22CD~-QTpi9WbaNfMcf#q-4(FtiTxY$ZYWOzq-i~Ebf288X3 zRB5VTbr~15cTl~)wS2p`y%#QA$fz6ya3jBgLN?&cqJ#w(D;f;w?PRrN@t^MJhoU`2 zwTkUtg1-yc)^*P}OP1fA)q`dlF1bp}au`#U)y5zRmBP$a?2 zt9JPtC96f&_j&RzVT{cf*`91tDYktOeMN=}&q z&Js!+o3yLr!4l>oD8sKCuEUs!vNXI_xm#tGzQqaoz+)NRI#C##-1z0VdQhXb7CI95 zAWape3-+%Z1rIHhtls$>k7+TlnW1U=noGxA2gg&AB&FdXIvW3JHa8FcI()aED{oO5k4pP&p)`+Ght^_3RKyYh7BpVC_GX+ z>=Z6a&aJx=?n@C>*5HBD+;$&5%>8~kan1GBrEFhyJwnyJzKzc1NjrNSZ8;?YbEG%l zTWQn>4L=tLz|Eww@aR$EIx!-;?T*$(%aD`B(p8F1LGje0N} zYj3;tW?5fMpI+o*0wBK7-tF`!4dX@K!bd`TldSbBJY9Qw97=W|I5aD|BG1(G3Fjdi{r zD4?28))A;MZu};?S%qkQg{%uyMI0$`I505dU&;~?OrV17R~{` zE>g?FH0fq^ROO&%-m0!W)VnGA#5?pzDzC8|${rF*kJzkGOY@D(Qg-$iyH2JDGS&K0 z11BKq+?-VD>J;1;d-*?$2`^jE#+KDwX!?@YxU*+c%9Ftgn9kGN3^ zV)e{nz*gJeu8JM9_q}WVWMUpy+w)x4vzJZdEfIH)kgW(8Q08XPm6 zPa9d%(azvYjLCp0DXOIp-ms+(%MBoT%}ASv!XYfI2XHP3L1Fh>4?@Db8X34m3i&+fFxta=NeE;s(l&ayPO$Lja77m zV~!sVL8{$PT>z_^4Nl*rbhYNERaUE)i~2T;d++i{a^-vO1L5gB<$gh#Ce)ApoYqw@&rCM2r$sKXAeeeceD;d7Z)aP`?lqWXUs}@o4kExbZpNtKN8O^$40W+&XZ4mtjET>}Vb#g$7HE z^OBdr;9K}$++W%CH#ryShWhy}4xWhK*hu@ZYmMevCoW3hCC269sp3HI5Q_lSdc~~1 z2f*A2HTJ=*4 zW1Zy#n&>#U*=i%YuK|}}Ua*I@UhYu)_4k3X6q$@x9FMv6{DhR9r zmM6V=y6;=xNq>vVE5$FDo7eFvo?kSRP5-7>d1ZO7j9(l)yC=~q0jy=1+}9@3@j%Cc zT;@^KODnSZ1gE4ETz(#r^cl~6#Mq2o$A|s6iGrC4A3gz_c>(6B2MW^e+wL2=C-Yk5 zgV_|2XT?$gWkM46XAebn6sk+&r8Gb{*_Zpj6 zE|^UHb>7n)l(x0uEEBrZ>nI9x>cwES63Amo6mZ_(D%s|uJDTl$$NcK@%?*lx+vs{(hZsmUdWZ6jvBUef2KA{=T{~pnE+9Y|6GQ^4X^H=yEo)%2r!< zT-=P`9|=LT)|BKusKe`F5IZiwjAH&39)VD(>5_pOE+em%;}CHa^B};dt%BFMcYbdz=0H@?GPU8h zg~I06m6Q(e^6+!Mnd~Nx4X|>ReLa^?M%SgO`qMU-aZZ=E zJ0I*CKCh?li2KpJ6G$|O@(==|+eE3r(}qbwK*(^ z)l|tU*FXFIdthXzMgJL)icYEZGoh$k;u&IX9_9UcpXlQ#BxKaf?cBEXFHu2UEFhK7 z{s55hL+5Cfo(}XOCIyn=`({A$bngoG%UIcTON(a=tq zo^joHdK%&Hc2^P;ga1iZ9>&oPtr0x(p=j zDBjv%P~t!5toQHyI-u{<-xLM3!fomwQ*;ly1KogkNKfXdcvi*oyu!>{nL@P=o_b+Y zj;HpXm;dnG(KU%3CuJ3XFYvOPRZ|i{rOcWMm%zfx-6WA;C z^>6AqhR6xUpSzSnXN1Ch-yC2y!zX`ray|DGeh}WN?v>_UzxArea&>EN!pyitH9aD) z8x+M+m0Rg;AO5me)`7Px*i1q;Hqf%z?PSq5-~IlCF3o{4AN&aR{&xQMcJ3UNmQ#U3 zhAvpWEmvepa+Pj#B@*c33Sx}m(BwF3mr>ei~k}h zZv&$PIa3|qfnig+X{=>OR-wbdvhgnADa<^2@CDYs)={py#5^%X+qLb>TPr!9+x9Tb zxkLRaRFJ*B+#35Asi?!l?=7e%gayY;rYe)0%}0@Sc{dC+5tEx$(ZpaGAoIdo8uKkrt3UkH1I$>&}Yq z&VGl$1!&XlQZjyT1u>mhEcwm@Y z0DD`OkD()5s`Xz0a=j-uiRbpbc-!L5?-{MtE-iJl&tabH`a`Q?wDzAAHJeMVG&bZq z{>ba{aX`IsGcUjQFDuMyX_aO32*EL-A|IAoQLL1`hO0coezO{SVtq zTWwg|`3JKa-u`^)#EDIPJ&cX_zRr(#E$}c`8(X0I{q2eewE%v|q}Ae6I~MHAA2<}1 zMEax_Ub-aMM!Q{Y!U*+1JMkRGlX`vf%mwvi1z~8(Ci)Ut#Bn6!O7N91Tk93yO8?sS zfSNX1O@9|!iquczW9CO~W$!SB<%SiKp$|iRv78jRO33HpHxkdBSkzR~how=I*EWpX z_js<%&%5X-NzBkjOOntn|E^L0E+ZEz`p7Y4+7C35b`|53&W0_12<|fXdb6003 zofM3|tyhks!u!o4dPN#<)nW-paI38ww2R;bEcc}}5z{Ca!;s0R@6mC^&wikl-K!Em z9pMF8TN3aYRip+p+*K^xVspjf!Q@RDh0(1Q&l-{T-G!K5rq3g z=%;AtIFxbZYh#tQLei}1s?u;fB6UcUb~bX(BlU>K?Ven^IcwVTElzuAR*kg9 z<-7Py#2W*<;y^q1(Sd$VFlLjOPkWV96f;EyOU=gc?r=F6cm2GQ(v$%}Uz~(pzThJ7 zGRYa}g%8ICaoQ8lS&kD%sZ=Jc*YuBJ12-}|V6{8OjgO4)P)B&u<^B>MJAK^_Rr^%u zFa{OKa-|-Pr}(yKPTQAtx>e(ibTw@6c~c3&>o;*v4@V~_5VFC){V1V1F>uwg;?7}U z#jkq&7^|-MHRX#R`p*C~k?1n{Zwl@PH)(sIQ#l#eJa&q1_&*Km!Py`maOeI2EBW{h^MQUk6cVpwKjN-XH|4~brqq0Y4 z^X~^<53S!=SDZqa7+y0RP;y+xdNk^@l+=@4^V9B;l%Y(^4o|0~+Yi-|huUHP?GQWP z#rcY9$}*tjFK;e(eQa3Za9>5e!1aJDjTUj4VIL!3cVq1{PYSy>>f{TcXZ`716NA-! zT0DA0gDE^sJWN39fmdl7G_n7m6fB06!X_2VG_g_>yqm%X8b@PzvXx0|a;$SCYZU) znyqVpKm>qP*DT~Ze{HJwr`^Kdy3w-3HGb1#NpmgNc!PAw}yTt`O}+ zr^M1q=ImcSGGY_BC;p0VMUyyIn2J2jq>L4T1q2FEiqQ)5I-Eubyjd8H;>g%xUf%;^ zY_t3-6)>|JyP4^M^SiZB2L_M(!bvv2Tk`s*jL#^v5DQ(1obk6Y{|?Q8N=6_L5mJcR zop<_xm&IIF_?_VF)A=)I5}|u>3wW-WnD{agWZ?NU{KiGGLwA#DfXd*ggm( zxv=P59b(T9O&!*^$yJx%Y~t_g1HLUTR2BDLWCZgxzE9;1aUubU+l^29jIY3$e6506 z_k%#KSB~eR{50&-8&&(Gj=*6|m!us&1D97kIOW-0{?S-jiRqVtib>bq_B58P_V-)f zWrk!mY$yUz|LMwjSIDiSRtj?*skXKpbS5|d%o4>C(^=yIoEtn_$nA7OkahU`OI+{2 zi3&||9n>-+=vAaq{Nta++Re>}GPpy#0du(H7`z%{Eze}k!|x>SO2*jD=ck$sr!ZQ( ztzChed53R^tk0-J1w4dUKj!{|GbeU{>|K9n5jw#pm}k$Gz+RK>mb>hYQ|I0G92}0( z=S`GtPI)3$7}mGX)ft0tU3D#hLoJcMDfRuKqkp)V>9UUd`tcNtw%|SsT{5tN6IG{g zxc9@)Z}j3`d}};mHcY*Q${yj$0<9Zq)4BJ~24cYZ=JU#lrmzv@YDxI zx0oLG&W5yc1kDF4cR097r=0;4PabWw8e2c{BdIs9z~_FOBfwXXRN?*sGKm=rV!<5z zN6;hQgQOiw;@S~lLE$_LcY6jyVh$;pS_*`VIWvYyA1`GsF8H;&rk@B8gj+d1eAliV zE)dK1eo?5z)SdF}`D_MS{f`}Ns;IQBrC7)Fn1l$px*M1^gnW_wDO?yRQ*?kMJ3G2; z(a2NRp@^krqaz>J<1H>|^u{^O2UD)3uk&NAIoFF?Bfx=f~6@UH~>=%ln77a0-o zN^*h_JkHO3d^@V-qm>1XvSpK;b6*qR9pEY1_n* zhH_u0n9BeY=IFd>w?CVDw)s|G zDbm-*8#}*3>iR*%4G?C<19B=OCGSl{3!xIQnznLLw_^wf*l$Qch(uwuqE?M~r;Y-r zMeWBAs1q9nx?vZ4)7BO_Ym}neOgWRebIx`W&snID7Ss1^h?r8@XLRpYg-hKVUO2ro zFi8(AfKt2f;pVc)!^VKWfI2yDEgEltb z@87q0Gwo^5eFjPCoROPE|9Zq`tA08;5}{x`O=>GLZ*dXYKKeQ3?4V}abR9fZg9TND}JmtQEiQ zW84nt(W9o6R90*Ibgi3#AP7xTH=O%n1$u&xL3&RvHQjP|R?PNUm%1-Xcw}#wdBifa z!muS!F900jw7({^Dd5gMFuzA3z1zOn*yEMuR-5Djo^!*K;4jWkj%e+5!2T$_X>V6( zF0+H0Y1CKz*)3#mnapO>)=yP$4^^K@9|+;KzLt6AO?*b@ocA78$C3W!nF-_4@#uq3 z%fXhmAKlJG7Yz;@PW;}X)_#DMdiVI)BTJzLxr)`NAmHW51b9+y*ZvwSWDB9C0#?)| zpTds%@~h_W=(E1ntKa(7R{y$)K#Up4PPayMvZEWd(0V+miI8W7hO#tsnrHE*p#pgU zG&xLM1H5P+N26ktzG3CavyZgrw!b~T8iK1eR#t8L?Y94PIzl`o6G-q($Q0`#v19$! zCuLb(A`6p0QXF(ZebieRTQNLX_ONqoj*tW4IM|ipz!5h_OtgSOF~k10{MaD3mwsG9 zqPSsjwuu9!POnq<-l=EhC{Y;G^1!>rv1b7?(AquQzuEgn_?|r_FIRl;zh_Mil&$Z& z{kL&OTEpWx>sRXwxp(XRH4_z<%%49P-W^MH=7y;z`Ey#5Q!MBmX}XLI0fTf?ipQ5< zZL=FD$?`^fO*afI;2JoyCh}c}k)}!4{;+`X7)@=qa;a|0_3TGGZ+3u6`prNj#}(y8 zO#sX}wcG3;IW_U$llawAPkI;i^16|2QMPu?utDQ;>$#V&A~wLe%_n-)r#`(To;Aw1 zqVwxY1^2<_;z#$9_gDScsj#71o$~2_<_6vf-|!ht1hTWc%iu|76--l^vc+^9w<*H5 z>baUv^y#2}ZA0__ZfV=ZY+J6%Vx^S66I)nkHVsMdyQdGaub zfB-1qPtO0I@vZ!~bgm2^;(jYs%`;T#(9FLm>sr92My92Yc|Kxzq#u^Eb@Rpee635f z&hG8|_|f$6*I(j)Y~Z$#EL<)Ol$FtI;;YNPfQOY2ga#g1$4CxD6*LFTo$Y=JfBRKyf6JGu=Txd$&;%4|v=|t^o1e zm-MvgOlZW46t%QBkuEz^Kh>pE3)37%orq-O!GWdFa>9_0!M8}&L_SB&a(KIA9VgbN zjS}cC4V-S{W?@;FQwSeuuh}wvIjaL|)3bM{3?G|aeazv%hinTe+XEA zAXs~F(t$UtH@gpf6F7Ov^DfO7cF^y#@vwG4m%v~ny$ecLRfpfddSKwW@;(E4-LfoM zGu`uC!|<1C5&5MLHhz!y_ME$FRsPzjqSCdIBTSN{ChfEEWi&G(S-bT$bQGdpYoxeF z5~lEFOyo`zn+-FuuvCGP1>dPq>BWLRSbuU)0LI1LZ8G*pyMe23WRp3LJFIFP{+pan-SkPtQ zMhF7%fm>_|kBHa`ih1C%&G~&=gFi3IDa{n{6OneyKO`kQZZTLOY4)s86&E-XoKjf-!qclYqVG2K?P$VT5fSaX@8 zD;NN%Ox2R24XRD`(}s!_8*k*;0+4p=mX-zysWVK+6fFxH5*A|~ZhzFyzM|K#{Ih9y z)|E|#kC~I<@S$oh&N{9zrVN3;gVY?{U_6q(~b>piTAM; zv&4=?iiesE>YqZhJL4ZK0Pmf9WhOX1i4^&ox^1 z;eG7rc5E6Q;X=S7DVD}n@GjOF@r$7nU4^hz=$T%TEq(5NPK($qbAD>bWSRGZbSSim z`oNikx2Wtig=AAPl%_Gge#0hB8y+i5t+{pqo=Qe>`a|yc)icm->c6*R$B)DB(o+S( zcHH+ShQemajUaK4M%AhGvwEuGvc=G)#ES9!YYn6W*Wa0Fj*`$1%4w4Mn!IZfnleA7 z_1K$+v#1?qETxjw!q~~5`^vEJGAn z8?{1r_>EjxDDB6jO^4wk26;>Qe=Gx=DfnYXDZa}0DEc>}I8*wv*Aw2?;8kJVG?022 zwdQZyUcnXJB5jQ-2j}w;yuHIl#!DNDZewDyipabvU~(+`wxR9B{1T3Po zU6k>9W9ii9C2oP%yIZB6dv3D9=$-EZ%?US|Wzn4F4>^*N_|-!#@ImmB>kN4|Bcf6# z+?X#NVbj`)A!?ES%9@@Nto4#kX(T7+7C#BnE)MLN=c(@y-Z{~9WO!sbgD}kW0=Ly8 ziO<7aB@1AG>Cc?O6;AqL(UZ=&>`FAO{D%4k2K~j!Dry(*q)clM?NR*@NXc6F2Olq% z?#=sieO&(?x(d-py86E=1ekvEqxr}1(b_Am8U#$AGNr565}5~*nX%ggY9#y%Ty$&* z#^aulqn8!~2UBXhaO<~y9pdrF!(< zUstO7SD0Y6epejU@Uz>$IQ`RC=2IXwM)U6aW2^UVZB-CmuBr{tTTBtCE5> zi-$7kl5A~p{_$v?Y${cx@}1e!rbSql9aPo&VXqdCnA85K7Lx0>;47n|a0cJLW5Nn@8UErq!&l^cLvhihmlxFz9j_Qdh#s2(O!(|2^+e&vr^&=9-qKZS*bBvu{HJNJ4Kq%}>= zR2;BxdMZqE?RkKJ8weJ)bFnc21h?i+{9a#L)7 znkiyjnL_)^bT6}7RmF}mA~>o(K5C#fucjZaGR*JUHuRaMbBV>d_`U}odjyR5eZI7& zQ;Xi_mt%Lj8oFGw9%!50ZqFQ*+>SK^f8KcS2lI%2n6FbfB75dY(%M0@WlDTt@%RC~ zg)&OTIdpd|xk88X=Ru7XC$VhbN_V^*hv$Tybc|yYN$9L((+QAavqeV~h&WNTh3_zw zegM2mCZh5M2z4Kx@6S-bs(Sd`!FC+@sq$4D{Hud$4>D39^7e^DinpTGi1oqkT66AD zlK|gQmh2d#Z+);Ux16bOl@~TLJ1Amk|>bXwqg#ykUz`Y;elxj@59wxv>;H{@jDmO96?~I*rrjW*ioM z4{X)ShX?>cWH5wr${bekjzz5i|9LzA3tdqMSh;nE{Z2sS{C;5oV#EGgSL)7Mv&;5= zGsqwOFdw6s;zgrISJk@rZ9T04EIYP6?iv|CHduGOnf&3)(@yD&`X0emd9uo!*|QVp zp3f+)@1dLx7qrdB#%+|Iw0GJEpY(=rcaLD@o9s2~snJYr>zo5FXALWHVWYXNr-^IX zPI98ejVF3taArXnw*X+I1aT0>aQlO)&W6FhzJuOmW#J`%y{v4|6a$BQ4fj=y8^WC! zH@;KY$=c3f`zL-)Jo#eYk|nWfh1TbsOu{|wd<`R4P;x#u8LgD1)$*}b%Ey197R4H9 zAXvc`)#`6|{C^S?ti?T9$gQ0sNOHLy>8jnH@3R_Ik3Y~WHMW^Ob zUT_Nkc4cw;MwAPLmf(I9Gym_hF!P(8JJoYhP5GgPVG&;*^&s|Z+NJ{z7 zx91;E<$e@Upi$dK7)jK)opn;SUNh+o*79{J%)+D9E~~7*^8H+DJjObMjZEsyET{e3 zl~zfP0?r4GR=rg@0WMUg&+eJ@)#Ir{uftn7(4P;eLBf7VWXcdeT^S6}sfcgg7M!AI z^3Qr4pn1i<1zw;-Y`tVtN+NEr8P0pMTiPAkKf6)4Y1g#RB$TKDaf@HcWLt8dB;^su zKB!UnJadDw-1)iqrF~EWI}PURw^H)u8KF?LH40B1HZVJ&aoBoj<#Xm7jn)~ms}i)C zc|I!^l9fm6ruVixK+_%1WE70qKG<^u4ia49npKPay~>{%X;s7>#xxZ;2!DiQk4rYq6egUdhd~pnF4)N1teM=p#q4yw`RVcN!-Za6yf4g)xxb2+X6LAiu!T%S;1LBYGWlxQ#I)N{;6lyiYLD)D4U_v$*$VriSybh)yRCn+_)WGseg8?zU6uE zt11o-n=$cJZ&9e55-`V^Tfbw_w@zBqdhQz;T~Xhv`I6WHms@SMiND2ZHp6*hblx?r zhS|@eR$>69s@5*AY^zO&fwv+;Ep;^1Ttc@KO4(feU*>T)>Blv{S?Wa)xn10WEBT|j!iLe;OEm(at;wBhs4AJ<;ZP>H|Tmc$m;UfMx-{y*owAl$ z5OBT32P%QLvn!#2d5br*qa-B}>y3{Qp4myXC|$jx#7GA98)>CE$j4mb7{%vw?IN5}uUH)j4AUbloQXP*P%l_huCJFJ9nltgyX`c+fGm));CDSENEBH zD|%p?(yw1j#$@;Ff=VRPnjV3Rj^ROE8-uZd@}WK~rMVC@*S3CCsH|uvQH{=xx=;an z_G_))%quCO?eGpf_Hq}91Ye7S4EpmljlZ;seb_>DjX< ze1mx|%{%+(;Ko2KFv#(z+4!-yA>C=pqRb&pwZ0RGKtds=r(l0vr zU3p#3{1l{I+}J>>M8Q7VD=EyIQV2jS^}C|;;9X))!zW?2?I_3Ks{Xn|BbHz2T9)}0 z(Hhe15$)0s_Ak{9{gPjANEh7Jk(4ng;}~dFzte7el{>%Uth95i*Y2`?*(_?6p7USd zE+w_&*_{XzV#^ZnmSBRuD>2_Y(&TBg2~#c7NxeH*c99_?p=z7xjbL5Yx7ygxhfxz- zkZ1$__(tZ>RyfF)$gb+^$rC5Un}*(u`}+eumUtVP zfB^j$EH7U?2(ijb8>``CKjDaXIj8FLr%y9+pkW@QRJ5k&VhZhx<7POwkhv$t&F~O4 zM}JODX;4H*ESo|qJpXOCH)R$aov4oJk^2uaexUvvyq|}Q>k!Xd+|`x>G)4TjsF%pM zw(Qxcei$YN+>g7CTgN)-uX>MvK(7>xdbBl>Apsh7ft-;zh+TMmMJz?}>@8V4aDwN$5S$ zul={JsUn?QdOsWl3bv@79=Q5fBK4~&jv4}PQ!CyPUp<6x9bYR>K0T4|aR1%IV~iwt zU7o*~dKJHN4MpEDOZXE^oTbN?TG^_>2cMEWyTOA8bnUAC-nX)woK#S+=Jno$VG-or zeXA>qNNF4trLB!*kBKDP1zsw{;=(SE$qF7dYHRcgleVGj<~Z9|?bMqX?b~|MNSn^3NF1m5mo_JERdxUXi*GrL6a-c`rD57>O4cr3 z#2RgwdHj>+zJ-EWLtAP7=bf9ITQVFKfvFVN{$pG}o->l)nAQ)@;7ppXwTu z!XXYDL7!cIdVRPZk73!+I9nM^fxG5sSn~@I zgCi*g^i&wL5aAAv%?LEUBJP5WW;bplW)%v*&`{w{igZy>4o(j?0X9cKS9yBA?IOCh_q~)p@W9!$yrQ%gv0W!_ zGV8zO~h0j!oW4l^{*g5FtXrI|C6_K zw1f*#Q+z=F8U*E@vAZcE_Po42VYpDGas3H{yW3QtbSX0FA!+Z#cZsPGg&O)VAkl`f zW4Gm!;G+Ta^~_2~2+At%5DflmE@b8f zDg9q%C_)!W9K1=MJ3aa!yJZxNs!f#*wwFSyPDakI=yT@BB`4$YaXXLys@WHC;s1OA z+OOAd_`^W2X1ALdG!3;2XsjP_{JyWf!HGT1LN5fGAQ<3$?yU|sOV5}#Iu?+ zD%kPkq@vQlI~FYoZZnFTf7+kz{x9#WwKs5kaC7*P43p%=6T0k9JQ871J950g%b7_z zhl-dxh1ni|G0HQtJYsOZ zJCl}?akFR6&Ta4J^;Y|_Ibt_?f60q4!@7!K+lw^{rAZf<4ol6XfMPm|=v5g`C=K5H z@S0x{OdtTJHXv^l;Xbc^L4oo@5G;7otUJ-{1B?ic%)D~`_9gknVhjuc8BTqDK>+Lg zbSUV!@+rHq&Eep$3(7>NF2tw{mHx)}(4R<`1`!ISaid*1`DTq}K59?{)&J{ZANHe6 z`CxK9T^zbHCozC8-Xlw_j2Q_=mgt6P7P~?T4V<~Ropm6Sqc?v&Zt53ThE`?2=-bp% zBQLW0>4@$hm?0b~|0gp4EELA7AD*`=&m3Hc7rRGPhc=xUJJx@?4UmRv`B#5Q)RvtD z2q~T+n8MxfTs|Fimnj%t0k6)xHSwjB6v~ybeeUQ1--gCT5`ySmJJ9rITY^;3ZCKZv&{3-)5FYdQ#@M`1ulm?h{$ZNFIJKx; zv-_V)ObY#3KAbX-w~x?1MF}@J`Q-3H2Wo5^T`htY6br*9XQm>%as}Z3xU|W+xehYcU5g@Wql;a0=*k$+2q5vU7fM*qfxt!Ehy z#cfKAUNBt}^D}N3Y!NtcV6bg+660}dg{R(mL5&}L?Q&l0L#*S|$G4uYPYJPnYSMPZ zfa>fQp~fHHr`<|z);6`-CC{4n>0eWpy)C-aI*f|4Cj6|&S4TXOX5QV@e3q*8at zvceaqQwJW;m1i6Jj!Jx9Z$M7U;hz?xTaL3s01R$EcU5N*1j#} zKI%!Qm^y+MQ_&c=_8>n$X!jox@{*dd+;RuISnBIsOfJ3jZ9@ z|4Ng^<{3&GCo7KrM*a3%^JHnEZe6?93jI4iXi0F@!*=dm_df&c_Li1WCw_-4hhdk) z=G~>ql#|v4{%mm0LGDF)N%6HL&Pb$`{0YOhbu)ENO}X5dcO=0EeKM!6o0Gan(pY|p z>E5*U&8Ao34FjAqGG|GxL{|~0;8pWCA0ur~kvZeQ=Jg?{CFg|XM&jP(w6w}1-Sx|p zLjo~=y>xX&{zp2+AHNT>Z=(oUs>!%te!hK@-{SP<#kq`1p6aiHdZ2wID=RCETqh2n ziW@iGv-(zjn{?|o&F$zZU#gdo*O@~caT3RU=BHX3D$xjw1vjOA;NioEpQW{gunxAf zNwhI$*w_QS3K}bSzOdf)wW4$PzXLN8xK(_58AmDjLnW>+ASQuMm;|bEDQ0IkUY8_> z)2uef!@itP5?{8AE|w}-{lD~CWc({9e^5#`i>5^DCxTi$5+gga5r@Jz_9p z^=@*OY=Fq{afx4L>&G|SzZ``7P#p!HfP~})7sYb`lR1)9X+FXFX|^bHi@m1mb1^45yjKOY8Erx`BF9Z;Q9d%44hW%+(dQ5&LLHuRD9 z?@v30)N{ZYRta>1L#!wLm!YIC;lmm8ejU8N%Jx2aYXftKePfKSqO8~OQFR<@)kISb zu1jcs8PrPGYz?}!gGxj*Kd<-xyrOIXk&i59}V}vEoKW@zT1_FGhvYWDG^6C1?rh$Rr(d#&zjB4%1 z9K=5rOio#8{O;Ysw8k{r4O=XCv#;6d%1y+Ek&Oi?AUf@Du@wl2Kf->bG#cO@w%_PI zR6&&m6^OKE&z>#!Cl%`W3Dfa6qrQ2B;~Dfqtyg*yF7l^viQi^yZ^j(HdG6efZPSoX zapHsj{VK=|-BCsu6v;PBE=ROk?<9#hVxI`Pc+=w6FwMn>Ry+|D%r|KPJ$9_~c85Z8 z1zyP46|QG>0BjT$@b2v=$PKrv%p8nUI|Zftf*neYeDP)bX&pn}hI5_TCq z+v;{o=H^LYXuIq`)s8fR3ikY-LD-~TIvTXHUYJnHaCC4|iKL0)(j|k%s(!2fo;o}K zS*N$Ym4&epo8w+A;0ZK=Ksbauh4;_C&n)yDm~8q7$+%qDK70lO(UK&E2=8Z>`_sx- z;>#%)FXhbh<%Li?@3DqAAa8oA>C8QkOhu}3xlEafAAbV*9>^sJ#p@7wh7503Ozs-Z zhFcKsYO1qiQJHkfRd(OCeyzSC$jXQjBlfq}n&5XhVl0$>a7cy%fV#)K4AgBru4~(9 z*X-EwUB15Gv2;oxG}#+P4I7U3`4q4%{S@0Cd#$}aT!oG&#}cUQ_$@n(Y*=9eVE#9K z0AqczAgR=X*R#E^V{RzkB$T!P+kb4j^}(gB?_9rJsua^zd^$vK1tq~Nt*;qF zW&r-}`}eQ5u?8b&ws^#44?3U8!Bx*mXH>X3>BZ&Cmq{ym8tgMcVsW{&@8Lz4os98= zV0po*q3>ROfZ;gQMf;DM3`_^7dQZyzpH9>8;_qg)6MD8yHU-n^J)^OL)XfS6=LuD}Q!Hg$nJEx}{&XSBG!kzKI2i=u9+{nSCZ= za)V3i%1Jy6ob&lAUS4(AS_#}1cQI_*)Ws|1o#FD+5I4jOm3)lb3Av7eU3S~uECY;!we?0BaUVo*Qw_1E8#=L3{h?2<_CD}9aLt|}hh#J( z&Iv*=?`>q(V)KU&8{5@?lHt1;W2x| z_Qb&e;Ig?4#UYH!aklyHPYCY^pOz0QHj`ckhC<@yi#$_YT~-a1zLFY8!RR%tB@w`a z5Yf3w7^Dz?;c_28I_BfywMYqN_2CLDkv$@RL{P$KqKz<4{U|IaqJhyZ1rT$*VO3v+ zHt!Xgh7)O?#Ge=c7vSIpO=<@!FPASOH!$_(=}2m@;{?vURc8H&HC-5=NMeoCzNe$0S{aSu*~; z5`OL7;%n3K?+Y~1p=1q`%rxnw!6yN~SRz0^V&*lV5L6UFAe`hOBpLgh*lRfRhQSK| zT(i|_*B(v;cOo6PxvHbtwj-r$w&niBsx=39i{z3|sXf+KcqrWdcnD92cY8yMcJmVN zn@4PJ(z1)SO5Gs6Dim&jkmP0TLqSmUKD!N@w#pjzQvC_XNESyxfNhUmwl4s_Bxvz* zey^Jzu6Z3K2=<^=gAg}U9oVZ$=Zv|Mnb}}u9JX(tU3CZsuE5C^?Yi~VD$p6CW3c+w znmWD3H}%E6TXo(CrlY(^pO;vEb*h!x^>>TyCpHUxYi;THan$?W)6(Le|I90kaEMJj zw&B&$?Ln@du1&jMg!A-t7_ozcU0shP?%bt2>Eq#@`QF!N4BT1$;;YB=tmX<6mUdj# zW4qqDJLNGa3wHd8)M{Rhm`wq~8VC;_bQrG)IqEj(vxHrUGd)baLEY?bpEKs7mh^Na zXWME(3_38AVw@m|AgDP*?1g7;Y@myLcI!Qpv>JL-?%A7~-xt#A-f=;G`0T54vZ>O! zbbxM(Xpg2pR$WIDbNq0dFY$HC8VQRFh)CpK$$0X_pP{K-lvwU4q?hKHIgGIucm279 zpu9La$(5)+A>`tRB5aw}ivL`0*62qC?LT~Wd(+vguQZQjxLCVC5(})( z+6%qWPNcyideC0!ZPVodta=c^%ugHyB(n@aiW?=bk(8C z7jNEd;uLF-X)j}9VcLB0VqgmVJEP#)>&&P{9bOJ`jQbThDQENlxG!v3Ou~`yqhXRv zmYpZ^Xdth|!vUFgN~=$wvC18HtXHO4WtvQOQ4-FfrR%1@|FnEC?)R7)4fCcnqBMsC zY12|oK~m*dhudljQJnOc|1_puLX!|+4+7UuoD1H#*0bY=y zkWkn*lw;K(u7-1W$1aD6&GKfskm`sSEgGTRH0v+gSM_Uvtcij5y*)!2}FM4~W$Naa5SgHCElODlTOsJrzPajo0%SOIJ zT`Z~r;b$@4chFzKkWPSl4E#dl$j}L&y1XHy@p&h`KUS)EcpPRdg$ujEb@8|exVGEq z6>ds&9+b;VKkc3*3}lbu8;tx#Va|j>4hk2Swix3axNvKIf*;3=c;~NfEAD!~etC!; zr9h#g+mVVE#?5H8%nt7qtXJAvcr<$uOP8t=mB~}$=}L>O=DVb(N=D@nZi{b9I^4NcIt7r8ZJ!iZ z@7=#&jfJe91+AZ-|B?1lmcMa7*p-a~+D<%qPTRJd?`k&Q$U*KES(`B)Z~F3EV<%4B zz@vUvYQaq+NnyACK3?LxEA!82xEYgA8U8j>a9C5@N%S`Wz+p0LH!7?oaH?=$6M(`- z3rB0ufHNVFOu}I&{yQ~hBTxOQ(f>&0D!HDLSzy=JJPNXn{uk^6|mTLLxO6 z->P0Ec=?f_F^&f91FmPxyO5fxXcZOvVu5&vBmPmE{@;}Hb`l|8n{XGCzW(r5xKu3_ zydq<}6hVEq%%oPMo?{BY_)!QfH--8W-#OYfV*+3aFdqzxnw+)j=%3u(n>&?jDp_VU zyMZNu*ruib10cefrl4I_g~8J8+NOZhgy?Ez*uB{dX*on}Hh>Rs9EX&8#26!GtQ?2@ix@&{wN3D<<%_r%<~C(+A)b*8 zbYeuwZ7y{NU11B&(GWe4{a#Y*b0WKJ5Dorp`I%#E&aOJVC1Fv`1q_X z4Q55`3Z^X)sN9Xyvt@MQ`!F$9)hO-#f_}EF4hNp_v5VfuK`_E~q#tD1s)E&AN>AXn>+o_fMPCO+9 zf&bwESV!@~;u~TTp34|(*Q0@SA&t(RhK+i6mLepu2eY}Hz=Sx!!L%;u+~B!Zm4x5A zgE@^58Zs&)u>Ql~d0H#oltVPJEiT|650@AmJ7)#9cnwe78;v#H5SDVe-&=RUDh*15*hhDl<0oEOt+d(3@rqtS(>-&FMPExUTH=7BgmoxP zRI{f8IW;GkvW;`T^blkHu45TCdo7(#aQ;7Q1vit%w9I zW2`aQB>Y+5WwUNPy}I_mOdTYOkG}y6o!I=dlNjk6{%%(%p^`D4Cq? z=N%c?nsUZ|)_LO*&3$6^yV559kFBJss*FBBX?uabLT#8C5t^UO*K%G_ox?zk1Z$<2NqX}Q4|*%Av&#f!_}pqf9fGCekQIQZpvAC7q__v>V;55CmnUD`5T86}G21---l z^z;;@%|pvO0%S;73*a2q^sNTZ+&@!CfD6!)z}rmvlCh#>h%S#9l>SMjY5P6ik;7qV z-KgJxo4AU@0av-?O*KKW8(^i^IpIZav48&G7=1eD=?cUFK2hY}82Gm^#wowV&T@JH)eaD3GWE^;{2F$+i z)``+lN2Am0d{d2~!{{0hriI|MLDTtVzs%^RB2LNmqUws99RP=k zeM-jD|I``(ZQkCzL6{s=+Sck3wU(X#|J%2h(%7Th$8^=ZTDULY8@_1ZrCU3H|4LhN znATCM^tPe7*#G_+TkQjLenR(-TIbi_v1C?;&eQ60cl591FyC{&QNK8&+joD6aVR*9TyigBq#SPp6NrST9w_-S^ut)98>x3#U9Y*R!ww zsmw53yaqp`WdP#O_WZWa3Wr)|Z@u#Oa?9o%c=!q^8>}UIg#uQN$A{%IzJv<&a>?Gh zWS7H~zGChJkh-ku&oYYPXCnhZ{-ZI_XJ{haN3k)g3nMo&GW+z3-p1xg*jzOzgq*JS zj>45N8m%#B>VvTp-RvN|0h6nJlDz8Rj=nfSBquVN!bN!T!=J~WW+*}^8j!GyuEJXB1ovjvQkfp zV=vwTB5W6)EnEH`lD&Chk8uPK)JX!NK>{lw^a_bW{h^N9U*iYHhy;C&OW1yx%iU~; zt2Nv(Xu8?PTI~S8Ys-LaI9kyFK(=K8HtGS%oOT6bN8p+%T-_ZJ^I4v(?v%UpuQ0s{ zqKy7Bauaji9X~7^`dhXAu zowSH(Y2DhAmFQL}CAZL^655NFveM8{+TCST8cLl;ypYINHZ}k!g++B;Em6#tj?(m z1u4jb@M*0z9=9W3MSh6JIsy?N_>BC1%M^W?nW} z!1?djwx4oTc=~VOuZs(QH!cgr{L{IbV@v$rlKU-H5z>U%d`JFrp05=ve`DDX2d{rp z5S&x;_q=(%TWLujo#`W}WAd?ACof2DS()$pZUdqPsL^DJXk=k!NvO+t(~AFWe?0;h zw(YnJX^WDV)7Igzhhdv5lZ$xSWsv)=_=h&kMZ)y!(alOu85jD+E2@bKgC6plXqr(b zF4$G4n0>mQ*lhJ<_szFPg^69&hOV7T0I;%3z$pvkwk`5sSed$mRrTo=W|O|hiq(`w`++uod_ZsQ2>)&^R;Q)q#dmy~Rxuf` z1>duHw}3X0~`6y|2_ZVIm_Rf&85!(S?9RTvSf_ZK&jj_*u{@twY( zZP+II%XL5jF*)A4Gp*0(Od8?ka{`fp5Ncb0riN`DmVo zuDNfm{yUSTdi9i}L!SMLaR>|<>gv8w*;`}8`c*c1@4haxZ{`AB1c4pUbM*JB1_@o0 zhWK`d%!NrC@3!tq_+9gHF?JEdY6|da={juESfCUbkYvf$pA0Q1ipN$HCWU#MwOL!R zZS3iom;*!42FG@-iwHSMjd*kAv~3H)L)H>R&}oRa<*Rzy-76$h2^r3Tyvb|l~?tm>7Un?6!E&Hb40V668u&%1xFDh>F#s5lSFsvbm4=;*juyt7ezIjph`HkDM ztQ|ME8PLy1uC<0PTUntoifTk#ytdSF3_InWQ)Ffb%XH20F;s zei!hTXL*iu1sz??Q(B5Xcv|}Y!QZE(EYzCf|I0`CX!ec1z1s1xy`s=fEHq3lqlPW| zb!UKwXY%mw5nLplsRnJYPaUrH*U1pY2T@TiMRUl z7D1zwM(}B)^+SKay2|I-`15G36Y)V?x3-~v8_3~+yK%#nrVO=$?U@#wzVuG*6^S