From e6bced103880428ce2b88abdbe1d6c07d558dbb1 Mon Sep 17 00:00:00 2001 From: Piotr Mitros Date: Thu, 29 Dec 2011 15:35:52 -0500 Subject: [PATCH] Initial commit --- .../07172609b59c136393705e4067de95d0.png | Bin 0 -> 704 bytes .../08d7bd7060be987d4da37b7fc263a740.png | Bin 0 -> 630 bytes .../17bbbd9b6e69b94dab881bacae540191.png | Bin 0 -> 630 bytes .../200px-Kirchhoff_voltage_law.svg.png | Bin 0 -> 7745 bytes .../229253cd444bad52ccf237f182f18267.png | Bin 0 -> 1007 bytes .../912713fc906c190d03a73f02b2f738ab.png | Bin 0 -> 646 bytes .../98720898396d325be0abb463b68caf90.png | Bin 0 -> 645 bytes Kirchhoff_files/KCL.png | Bin 0 -> 5359 bytes .../c449f0cd2e060f03076e28ae5f8f0a75.png | Bin 0 -> 543 bytes .../ec93733267512bc18567c04e5a728e24.png | Bin 0 -> 228 bytes Kirchhoff_files/magnify-clip.png | Bin 0 -> 204 bytes book | 1 + circuits | 1 + css/images/css/.xcf | Bin 0 -> 132751 bytes css/images/css/bottomWrapper-bg.jpg | Bin 0 -> 679 bytes css/images/css/footerWrapper-bg.jpg | Bin 0 -> 931 bytes css/images/css/hat.jpg | Bin 0 -> 8227 bytes css/images/css/hmenu-sel.jpg | Bin 0 -> 653 bytes css/images/css/hmenu.jpg | Bin 0 -> 655 bytes css/images/css/page-bg.jpg | Bin 0 -> 827 bytes css/images/css/page-vbg.jpg | Bin 0 -> 931 bytes css/images/css/topBanner-old.xcf | Bin 0 -> 51420 bytes css/images/css/topBanner.jpg | Bin 0 -> 15065 bytes css/images/css/topBanner.png | Bin 0 -> 180498 bytes css/images/css/topBanner.xcf | Bin 0 -> 53331 bytes css/images/css/topWrapper-bg.jpg | Bin 0 -> 707 bytes css/images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes css/images/ui-bg_flat_0_eeeeee_40x100.png | Bin 0 -> 180 bytes css/images/ui-bg_flat_55_ffffff_40x100.png | Bin 0 -> 178 bytes css/images/ui-bg_flat_75_ffffff_40x100.png | Bin 0 -> 178 bytes css/images/ui-bg_glass_65_023063_1x400.png | Bin 0 -> 191 bytes css/images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../ui-bg_highlight-soft_100_7fbcdf_1x100.png | Bin 0 -> 129 bytes .../ui-bg_highlight-soft_100_bddeff_1x100.png | Bin 0 -> 115 bytes .../ui-bg_highlight-soft_100_f6f6f6_1x100.png | Bin 0 -> 90 bytes .../ui-bg_highlight-soft_25_7fbcdf_1x100.png | Bin 0 -> 123 bytes .../ui-bg_highlight-soft_25_bddeff_1x100.png | Bin 0 -> 122 bytes .../ui-bg_highlight-soft_50_7fbcfd_1x100.png | Bin 0 -> 159 bytes css/images/ui-icons_031634_256x240.png | Bin 0 -> 5355 bytes css/images/ui-icons_454545_256x240.png | Bin 0 -> 4369 bytes css/images/ui-icons_adcc80_256x240.png | Bin 0 -> 5355 bytes css/images/ui-icons_fa720a_256x240.png | Bin 0 -> 4369 bytes css/images/ui-icons_ffffff_256x240.png | Bin 0 -> 4369 bytes css/jquery-ui-1.8.16.custom.css | 568 ++++ css/local.css | 58 + css/theme.css | 363 +++ js/schematic.js | 2016 ++++++++++++++ js/schematic.js-old | 1587 +++++++++++ js/video_player.js | 317 +++ lib | 1 + pixel.jpg | Bin 0 -> 306 bytes staff/agarwal-mit-news-small.jpg | Bin 0 -> 11325 bytes staff/cjt-small.jpg | Bin 0 -> 10196 bytes staff/gjs-small.jpg | Bin 0 -> 57412 bytes staff/pmitros-small.jpg | Bin 0 -> 56491 bytes subs/2SwT6JnfCq8.srt.sjson | 1934 +++++++++++++ subs/2vHGYdepKLw.srt.sjson | 1943 +++++++++++++ subs/3GdMaDzIUeQ.srt.sjson | 2477 +++++++++++++++++ subs/4TCnYYpZxEc.srt.sjson | 1967 +++++++++++++ subs/9RqFFlZgf60.srt.sjson | 1607 +++++++++++ subs/AfQxyVuLeCs.srt.sjson | 2003 +++++++++++++ subs/COdQmA9g9S8.srt.sjson | 1961 +++++++++++++ subs/JB2HgohNHYQ.srt.sjson | 1583 +++++++++++ subs/JqvKtMNz3RQ.srt.sjson | 1982 +++++++++++++ subs/Km9YIdkc2Oo.srt.sjson | 1838 ++++++++++++ subs/Nijya-QJ45Y.srt.sjson | 1934 +++++++++++++ subs/OGtElTMJidE.srt.sjson | 1841 ++++++++++++ subs/R4KxlqsuZ0A.srt.sjson | 1901 +++++++++++++ subs/RsJ1eg7XNVs.srt.sjson | 1991 +++++++++++++ subs/TXJIhDHtHSI.srt.sjson | 2141 ++++++++++++++ subs/V0z_f7qxLcY.srt.sjson | 2222 +++++++++++++++ subs/WT-qzgaKeGI.srt.sjson | 1892 +++++++++++++ subs/bEJ0-8pANA4.srt.sjson | 1352 +++++++++ subs/bX8i2yECWaU.srt.sjson | 1538 ++++++++++ subs/dyxcCoUgETU.srt.sjson | 2063 ++++++++++++++ subs/fDtrSZ69xII.srt.sjson | 533 ++++ subs/ke3SL_R92ys.srt.sjson | 2063 ++++++++++++++ subs/v6vqWasIHaw.srt.sjson | 2057 ++++++++++++++ subs/wNuBD4PYWvs.srt.sjson | 2168 +++++++++++++++ subs/ypX20WnHNQw.srt.sjson | 2141 ++++++++++++++ subs/zpzcLzD2dV4.srt.sjson | 572 ++++ 81 files changed, 52616 insertions(+) create mode 100644 Kirchhoff_files/07172609b59c136393705e4067de95d0.png create mode 100644 Kirchhoff_files/08d7bd7060be987d4da37b7fc263a740.png create mode 100644 Kirchhoff_files/17bbbd9b6e69b94dab881bacae540191.png create mode 100644 Kirchhoff_files/200px-Kirchhoff_voltage_law.svg.png create mode 100644 Kirchhoff_files/229253cd444bad52ccf237f182f18267.png create mode 100644 Kirchhoff_files/912713fc906c190d03a73f02b2f738ab.png create mode 100644 Kirchhoff_files/98720898396d325be0abb463b68caf90.png create mode 100644 Kirchhoff_files/KCL.png create mode 100644 Kirchhoff_files/c449f0cd2e060f03076e28ae5f8f0a75.png create mode 100644 Kirchhoff_files/ec93733267512bc18567c04e5a728e24.png create mode 100644 Kirchhoff_files/magnify-clip.png create mode 120000 book create mode 120000 circuits create mode 100644 css/images/css/.xcf create mode 100644 css/images/css/bottomWrapper-bg.jpg create mode 100644 css/images/css/footerWrapper-bg.jpg create mode 100644 css/images/css/hat.jpg create mode 100644 css/images/css/hmenu-sel.jpg create mode 100644 css/images/css/hmenu.jpg create mode 100644 css/images/css/page-bg.jpg create mode 100644 css/images/css/page-vbg.jpg create mode 100644 css/images/css/topBanner-old.xcf create mode 100644 css/images/css/topBanner.jpg create mode 100644 css/images/css/topBanner.png create mode 100644 css/images/css/topBanner.xcf create mode 100644 css/images/css/topWrapper-bg.jpg create mode 100644 css/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 css/images/ui-bg_flat_0_eeeeee_40x100.png create mode 100644 css/images/ui-bg_flat_55_ffffff_40x100.png create mode 100644 css/images/ui-bg_flat_75_ffffff_40x100.png create mode 100644 css/images/ui-bg_glass_65_023063_1x400.png create mode 100644 css/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 css/images/ui-bg_highlight-soft_100_7fbcdf_1x100.png create mode 100644 css/images/ui-bg_highlight-soft_100_bddeff_1x100.png create mode 100644 css/images/ui-bg_highlight-soft_100_f6f6f6_1x100.png create mode 100644 css/images/ui-bg_highlight-soft_25_7fbcdf_1x100.png create mode 100644 css/images/ui-bg_highlight-soft_25_bddeff_1x100.png create mode 100644 css/images/ui-bg_highlight-soft_50_7fbcfd_1x100.png create mode 100644 css/images/ui-icons_031634_256x240.png create mode 100644 css/images/ui-icons_454545_256x240.png create mode 100644 css/images/ui-icons_adcc80_256x240.png create mode 100644 css/images/ui-icons_fa720a_256x240.png create mode 100644 css/images/ui-icons_ffffff_256x240.png create mode 100644 css/jquery-ui-1.8.16.custom.css create mode 100644 css/local.css create mode 100644 css/theme.css create mode 100644 js/schematic.js create mode 100644 js/schematic.js-old create mode 100644 js/video_player.js create mode 120000 lib create mode 100644 pixel.jpg create mode 100644 staff/agarwal-mit-news-small.jpg create mode 100644 staff/cjt-small.jpg create mode 100644 staff/gjs-small.jpg create mode 100644 staff/pmitros-small.jpg create mode 100644 subs/2SwT6JnfCq8.srt.sjson create mode 100644 subs/2vHGYdepKLw.srt.sjson create mode 100644 subs/3GdMaDzIUeQ.srt.sjson create mode 100644 subs/4TCnYYpZxEc.srt.sjson create mode 100644 subs/9RqFFlZgf60.srt.sjson create mode 100644 subs/AfQxyVuLeCs.srt.sjson create mode 100644 subs/COdQmA9g9S8.srt.sjson create mode 100644 subs/JB2HgohNHYQ.srt.sjson create mode 100644 subs/JqvKtMNz3RQ.srt.sjson create mode 100644 subs/Km9YIdkc2Oo.srt.sjson create mode 100644 subs/Nijya-QJ45Y.srt.sjson create mode 100644 subs/OGtElTMJidE.srt.sjson create mode 100644 subs/R4KxlqsuZ0A.srt.sjson create mode 100644 subs/RsJ1eg7XNVs.srt.sjson create mode 100644 subs/TXJIhDHtHSI.srt.sjson create mode 100644 subs/V0z_f7qxLcY.srt.sjson create mode 100644 subs/WT-qzgaKeGI.srt.sjson create mode 100644 subs/bEJ0-8pANA4.srt.sjson create mode 100644 subs/bX8i2yECWaU.srt.sjson create mode 100644 subs/dyxcCoUgETU.srt.sjson create mode 100644 subs/fDtrSZ69xII.srt.sjson create mode 100644 subs/ke3SL_R92ys.srt.sjson create mode 100644 subs/v6vqWasIHaw.srt.sjson create mode 100644 subs/wNuBD4PYWvs.srt.sjson create mode 100644 subs/ypX20WnHNQw.srt.sjson create mode 100644 subs/zpzcLzD2dV4.srt.sjson diff --git a/Kirchhoff_files/07172609b59c136393705e4067de95d0.png b/Kirchhoff_files/07172609b59c136393705e4067de95d0.png new file mode 100644 index 0000000000000000000000000000000000000000..ff21373411f6f53c0e07e94a9f59c0dccb0e8979 GIT binary patch literal 704 zcmV;x0zdtUP) z&%D{0H;)BW+y9XnnnQE%k0z1Hm*V$k;O4-L!y`iu_Y6Vy*AQ$R8G_4WL$Kx>f=OTq zu6l;xWycVFrMS{AU*FyMIk!lC<1LTp=47&m{h7o5m6?pEU>|0FGQOi7&(DEq&>ZHT zX8tq;h}tOk)3{auzXJDjLH%E5NwD6_{WMMs;7j0LCV0}GWI+flxs^Ec(_oDYAZ6!8 zC1~um4qqsfz`CnU(OaFqzX*!7exM}hkc=Z`GQQ4TWs3efl2n29o1)zz-yC=eAN__W z?80|J+a*u;ro+p~uxBt1{<7~5osm)#2K8W%wv z&JM>1cdV3z5~LlfMS#S?n!WgqpzF9L#rVcJ%FZ!Z4wN6sz@AnL5swof`aHo^rKPRH z?s^%xPflpho#*>u#1{$~>rj#>+d@;Fe95Gz zALOoT2Bj(%FHTW>r% mm=G1+h}I1essHqvX2Ab!LZs4Lm6k#P0000JP)AmX z5flr8OUzUdX|YqaMa)zv6bywf7RALv2SLF_vGm(aHd7SQq1X3v_uYN@61Z<|-*E4} z|NG@~_wIcFnRBsw#y*7g#g7L=V2n7ID27BagVV6+7G70CvfnY54vGGUm}n%)93@!WxeQ+eKR8P9Aw7FZzx86{Z-B>~%{PpOB=Fpq$}mRg zI}W2_QYySo06Kfi9Zw$64LlUvd~Ibpx7+n%?F|~gHPxN!S2!CQl7T_{#k#JI<|+Q9 zQx#APo7V!STwR<0SpW`Ys?Q2))}yB8tZ5R1M--QKhm69JdIF#;Zwm1;(EngRV-${R zh33Noypd;#Dlo9>da3fU_wwuST@Mrz!wW%H5uXDjdT><T zDDk{Qu|?9In)}nDcSyQEd?WiZy&(b(YG)^eXX*B0tHOIqYt{el%s25*Y&X#p|6<98 zs);AeikgYHp*->RO)}TIt8e0MyZR>HhVsPMv)SxZ`vJ_vkKE;L-3nX(3$!kWz9p@% Q<^TWy07*qoM6N<$f-*}TOaK4? literal 0 HcmV?d00001 diff --git a/Kirchhoff_files/17bbbd9b6e69b94dab881bacae540191.png b/Kirchhoff_files/17bbbd9b6e69b94dab881bacae540191.png new file mode 100644 index 0000000000000000000000000000000000000000..7a56c0274aa700f5123104480aed3b86b4fa9df7 GIT binary patch literal 630 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 literal 0 HcmV?d00001 diff --git a/Kirchhoff_files/229253cd444bad52ccf237f182f18267.png b/Kirchhoff_files/229253cd444bad52ccf237f182f18267.png new file mode 100644 index 0000000000000000000000000000000000000000..7e3ee15206296c2c15b9d459c7b01bdd3f3120e5 GIT binary patch literal 1007 zcmVzB05nra||mW;Cj)bPE_p%B~_i z+RxS`8%Q)*)mRt-_Q+mH{9}s}Ekx?9YAhTBZcwkRUE``^H6+J5aZCA0>IIv>i9quE zmi7#UPkgy~pwnx#5J-q*eE-B<(Q9CU1B~+4IV4|qd$G4^u7=xXL>uX<(WVS^s)*Qn zr`I6YD}EU`Ucq@pTFf>^>Bm59wR>F!rX*b!y^5&~q&b2q>`ku&k?~G1yV9$>Werxin!YwpHqfkEXE?$r|F-tB4f*Z;`GhUV9s4@8u>|8)yLv763hA}Pjz{e2djwb~ zHF3@<4sg7Y2?@qRM%f{!$7pipuQbtOT) zb{ulnQ6*2KRY_Hp@da7b^5xxx7(-GS7k^#Ozh7n0n}}63|QL z>22vAH}#V>_kgY}&VmqQxFf;)6?yXYnwoXiqMwv_@F68@o^2Mz!0K);K2&1ozmA4vwv_7Umj3hG9%Q}{vc&?yhOtg-H zex+l{iD$GU)zx=3GSK>2kP{CbX?IKZOa{8^CW0|?;>}X9YMvznoh!uol8zH!#&(;L zfzDKNnqK6@=ds8$MhY3|X!WCpCMSM48}<%rwvZAT=(<1-?002ovPDHLkV1i9e%*X%$ literal 0 HcmV?d00001 diff --git a/Kirchhoff_files/912713fc906c190d03a73f02b2f738ab.png b/Kirchhoff_files/912713fc906c190d03a73f02b2f738ab.png new file mode 100644 index 0000000000000000000000000000000000000000..d38487b03412472881d030681a6446e90f32f42a GIT binary patch literal 646 zcmV;10(t$3P)J(E=0$`-p+T{Q*P-NOFB+VBi6J3gJ!$U?@p~Rq%Dg6*4dvFfg#c zUWgC?v7jN(z`zJL10u<8z`(Fk`!TA@7YX3lWMDXp5Px~TGlAj8JcIz4#Wo9)%Q+{Y zNgUeFhb98$u0aLi-F}&IE!73T{?1O!jP#$d4Vz#?G4MoI8>(JmJff+@1j-0s_b_dMKfQe=vq znSZ|9w>vurkojNs&)7RyQ|hF}0b|7fhA~GJBRF+M*D$-`$d>Uq=ZOA$Y`C0p{D@cB zDLbNfVWN^HYo8XPbQi|8i$9VW@9eRmX;G9&a*F)tNai)C|zv_OZt(99w# z%@Yes&V=O&JfUOMv9Y2O&+8OxB;BcrzcqTDq+#^~+3vGt5o^$GwoinXyIrhRcu#4y z`v09pCjO!ACVJvWU)fMK@q}4XGx0W*C;sXkSzz5YGV!)uBNJ~!dE&3~`TQgM0nEfd fxGvbb00000NkvXXu0mjf(+nxk literal 0 HcmV?d00001 diff --git a/Kirchhoff_files/KCL.png b/Kirchhoff_files/KCL.png new file mode 100644 index 0000000000000000000000000000000000000000..48def07d58a0941be2fb4abbac5eff0ad5994923 GIT binary patch literal 5359 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 aVsgoXUqt2@zXnH>ke;@&R=MV_xc>sD>psr_ literal 0 HcmV?d00001 diff --git a/Kirchhoff_files/c449f0cd2e060f03076e28ae5f8f0a75.png b/Kirchhoff_files/c449f0cd2e060f03076e28ae5f8f0a75.png new file mode 100644 index 0000000000000000000000000000000000000000..d54e373764c769e6c106555b32a32557a033104c GIT binary patch literal 543 zcmV+)0^t3LP)1Ox;kA|g;wPyhe`pweW|00001 zbW%=J06^y0W&i*Iok>JNR5%fZ)ICVUKoke?e{-o#t4%81ONEMqLyJ=vA){M5Id>J8 zfRj};4&qR#!9fs(W^+|KDGDymb{8?l!7kcT3-t^25}ULZ@A8J^?%pq#cgJx6JH~IE zT!{_bOv8B|2cVRbHv&+{$>;b;Xw!Ve;vu0{Nr>BKOg~cDY#y2|$pwOS_FT~}lyoL! z6UZiWrg$A$=$cxB#57P0&~0j9hKDp0sR&YZ2lm)AX?mnXkVGzGu+f+)_YP2owZJxr z)^?r^ko<$?qNmSuHujblePTg|dP0=|a=5MKaA#ncG;+a+BWg$+8)tSNluB2uJ?850E;#o9~(tlclG zPEDlv54srslA^Hv50Vqu_lH@l3)#*={|&lNl}E2L{8rNRlm|r?aPI?-o6R?b%a1dT z07zZ@f|TGIR8{(~xXnj*pmz@~og1&9+f>!LMtnoa*0;b_Vh@|?+-<;}xrElLnH2a% h9p*Qhn4Y6G{QwK1X_oXS%Ao)N002ovPDHLkV1m_d?m7Sf literal 0 HcmV?d00001 diff --git a/Kirchhoff_files/ec93733267512bc18567c04e5a728e24.png b/Kirchhoff_files/ec93733267512bc18567c04e5a728e24.png new file mode 100644 index 0000000000000000000000000000000000000000..3efd5c7c789b034d3f8d0782ab6c5a61fad69d37 GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp@KrF<<3?z$OJsE+NR)9~4>;M1%9UL6Q#Kh*!n->re zz{0|^ZQC{j1A{YX&XkmtBqb$vb#*;^_6(@}LBa3IK#H*>$S;_|;n|HeASc7q#W93K zHaUTz>9PV7$2SL!Hr9YDrj}DlVprqArjw168&w-0I^-YD zWYb%~q|PR7u=bEaqoU-A>nSr1Y-aG#Pq}e{b%}&UdS%m@L8bg=d#Wzp$P!qRZQXl literal 0 HcmV?d00001 diff --git a/Kirchhoff_files/magnify-clip.png b/Kirchhoff_files/magnify-clip.png new file mode 100644 index 0000000000000000000000000000000000000000..00a9cee11bf3679ab57db06705c0cc0603fbbedd GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngj0VEh&bvhb=6jMo%UogY}=!r^OLA)eycNd2L z?fqx=19_YU9+AZi3|t>Tn9*sC$qb+%dx@v7EBjRzCLuw=@2R%kKp}rm7sn8e>&ZX< z|Np;pZ^4Hi#uMxFW-_tftUmZB`~SiP?FRpE-rIZC`}@1Ue2?FsWs?;7DtGQZqv53M vO^$|h?Ae*#EnM~g|NMtH!wi1#J!NKC>C|F-zkgXj&}arvS3j3^P6 z5e<8k?!9-K?!9+%|L;$dG91tE@%#Ed-{<>%{!M$6n{z*(Gd}x#&dI&6`>x;Qw0)(I zlaKE@Z^oF=32&=#&`XSirYN3rb{mZb;X~cwp@4m>k~rVzGahqrSFEW5a6`INh zZ{6VQ=j6L# z69_oGsL1%@(!r4(j15`C*o;>gn*+MPGm^2RQy4py$+&r=S|IW1hhsbr!ndC*-{R-J z%4wE-hxg__ZYW{qIEZCD4olNHfm)f)@xiR0Ik$P{yv;M`w$GfCq)=V-Ng`x{gW90i zvm#qBb7suuq=o6QX+1a4;y;ZJ-N08G)4$`> zpR+VdnH!|caG)ox=b*uV8XX{AhB5s+K3k>iKTVqc%3Az8q>E@v?LLt*9=$UhxYBwK z8vLix0o*o>>EH2bkTMo&h{d{{6#k1o{kgB1jSoeB?OH$oln(wZoB0zT5Uq4`10Vh+ zpHKMUX5vHZr%@iC(4mzN20eX3kAIh(JmCX8UN;{4@Gto^=!3zhVw|m?puz9yKzzW9 zQWH*eg4ZS-n{oUxHQ`E^|132@<^LV2iGe)NH=(XSOHELU!}MzBY&vP_DpC{e#vt?Z z+Vkb@7BSZ2SH}9xWo*Dtbj{y^oy6g0IJjJJ(DekLjgKPN|bgm>ttO z%W$rjvYxC_s#MCwAV`xl&eWW`NyGCRd;(VLOyy#^QpvjFQ>l{Ud!t05)~J6!mtCec8M(wQDh!wojSt&&)n#FPza)I?ywbTHN z!8kJk%aN%VQ)(D@CsntL%F@h_A zsw7mUSb>ycjRbv{YE;y9j-{(*GF(<^Bnpj$DWz&9Q>mymv63osW*VfQB4sKu%7`G& zXrCy>RC2Y(S*cbkB}ye|?Ch*jt0gjwk;!;4qfV}5C{ilWMui$Q2RV5ROo1xxSiM}W z)}S6{%j!UXiJ@u%t5Ng3TC9|6oFzabehQRL3Z+tk&l(xHA(o<3Qr3oPK`=SUNesfU zr813FslW-isvzhlxl}60C#T?)4Inv_tC9pB1Xa&U6J*!jt%b0Sb(` zKWo5Phyb9PQl`>4GqkK=FR}(H7^hZ27VFd?nOudg4PXtB8V%&djFnR}3KDHGs#7>a z33Sd_lKtMXs!5Slm zXaJJr0nM310ZD3vtX{2Jl{20v?G-3>=pv*?BQ^{eW<(BY=2*4TSxl`#4#;|-o76H)ghmXu$Y2{_ zLS!11Mxz#}1sc5!-|L;B;tJ>wBpEy>J*|}zG{l3bTrGz7C^Rrj&{rY)rj|+Z4YmUq zxhk<3lvG1dZ)2Q)T>dd5|xr)dGR28HI>@hUgsMKKe7+8e{6oC4Z zq`?Mg1ey}q8>LvT(J06)p{I}vP+JaJFlYJDE)YPhg32k-L75sYtANOnoOXQCoqguA(hG$Kr50-r3$rNDuFdu!73^l=^z?}D1&{~ zVzpcWaE$^clH)lQr$B>HUxiu?1IL(5rE*rF>*zaKM93O-77A^~3KePsR%l>kp=dH7 zX+R84*{A}t8YkuG5|hHZDCANZcw*{rDdn z4v<$~BS*81;D(VPGMFpi`A7&f%aY`FjDTCQ$P*2{# zdwW(1TMd~5!%Rftl-6)|7&|B~qq^WJ?4?yIP|Dd*nQ2&nQi2As(h^9h2}%Jub%x=f z$_#_IGKeWg&p-km-btmjS2jbQA@~g-gORvoP%K$FEELQ%4j4eZ!y7d#VM76_)Ie{k zMjdJbq?*YwD8MLrXepT?7+(5L_6JC$iJY=Y_7us2l}Qv5Qb-sVnFgLk378sZNPt>Q zgM*c*QbJ=HS)-@jvVhTWhNwe^IaUU(1vMcA8n8hHOV4TaYFt2*n`Nqp0g^rAH~hb0&n2Ft^0 z$W(A6B-BD!aH51c%)SI63iToqh)^3q$kB>iq7XwwWMnRtYG;`-A&U@) zXrwY33_7QbKrz%3+77BfXd$qWToMG>26{7KD_|waMUn6cS*RE?4}E2bg+M7@rG^9$ z7a-?gGJ*ygJ`Ym`Z8J(ap*2Iy@DZ+*06{8cAQUQ8L+T)+2r*Q0Tu~}yDsrTVKp=@s zAtAjIvPKLZT^F!iSRiMB@Ju2BMdA9?0GIK+4CAVjXuwh!NsLCp{M#VFH2>O7@9yR= zTH^NXDfc77OEwtPBzr#yzKlYy{;ZB{EliFx;!jRluc5FA&Guz_XVA*P2`678>*)EbV~Uzz|^|-oXIK zJ0tu6*(jW@hUjV3GSCaxpdN5(H1zgRIk-iRZ;;>;dSk&jRTCt{8BuiuJgWpfr8xny z5z2x3oFPE%SR))JEVvP)RMsFD`s{^Y?T~Jc;w4A(20S=JptH3%XuGUFlyOqQO5#kPNqEU_x(4`V* z1gaYHxrW;0u z^cry6cv0;vk>g@DEHiv4m=2qPYYI$^$agi9#l~d}9bLwJ1qyA3z)nGWj*fx%xQw|M z><+>u^xha`(EQMFsUAZHsg(%iDflq;6w?<}2YA>COG8hZ3?r~(wNwnRj0+Gh^uOf- z2bwghVX4Hpppz5hn+#?VIH(Kb#n|W)dAV@HAWge?PE0zAgD;eq(P>Y%}h=@_GHx6u7$4>t z=pLLT8&+6sO|M-Uwen-k0EM!r-iw@BpS6 z1L6p13H2C00$%G`co_(0n3>2Gu=5CM42*1nC(Tr<)b{E+5(7|xgvdAxss<%AR6w&J z8a70N0?|gyhY?@cBkZ8Q06@U9jngg({02!g*+RG#1qnXcJe^vuY^$sXALQgr$ut}1 zcR~bZn2(@Kh`yb{5Q&(Yf}29!Vq_l>R!9-IAh%+gMiM6}D1gOQ%AI)_DXNc?BjG~^ z8A%;dUkcN5V83aSgeVN-r%uTc%|QMn2q!no-n(CX_Ic)9C66m~@^Da3y8C zKzoLMDCLkZ^pJ!Hvjv17=By6aaK+HqS_HF*9ccQ2m|3husHRXNfrC&7;V^{@dJ5WW zoe3H8FNG~^Fy%Hl7z$o4M$^XR22&s{rjclnk&=;RC+sTFT%mvoP?58@M9M@3BLy)w z#LO~-rgO?N1+-l$14l5+Ba;msD_0_NhK`VSBQ#M0xmIRO$RPIQSezVl9mMhocHo@R zV@xs;V-u^u9QX!kH5I63D)JKYM#!Q;+DeE$us0w(X1W?oJt+&v$#t0ZahQ%E*QKEO zvOozzp$JBR(^vl*rdZ0;GB}V0zNz8bjENA%mVatiYfE7_1bUgSoqy z=GkcV4{0mAr-?C`4}#$hX`km4W0W9!k{E-3eKrXvgo}eLIP+>bg!p$kI33KP0JBPs zoZM<5-jR$!4-wTt6EG2E7$L$J@)l~+w5q3xLx>kLN*Y5(larXUN+}5k0s_o!Abo9r zmzQjk(_BTs@@TS4(_~N@Ly;gKg9d3f-wqOr4jNLQ^@wfN;5(YgRZGP@%i*&=eia8G}gQ2y(5w9`ME(RO++Ar8L>y^~;?qLa#DLZJA_ zo5T9~3m!3ltK}zgxY1Ds>jxtPTa7sv1_=9YG_g;@vl@g33LZfSh>Ij51$LMK!4ex| zJ9|U!R>OnmGDC!hY&7@>Lr2~duEic9uSARlG~`@Kp#?lX+z!Ismgv$jXEyjR9V{zM zIQcsGBBWfNM5qRs1`;?JQ#b%3dD-`GvrSzeNFeXnR z5a${oD8k0PK#l19NrYWP>PgXtA=_sN(Gl%nBu_*1ECNBWglrHpKjdjJp+tJd8sqiNHeaktjI7&L(D{pNFpUFqDh(|(^+Kj5)w=g!F>wQ3=_MK zEFUJoFd4)g6?1ObW7A}?6F5gk9hq7s+CU#n)5lJ%08tOcwG>0rs9WZoo#93yo-#Ql zFe(0o9s!T0skH!8VDf0N7xiR`$#8e2go+Bm2HB-&=fNeIJjy851s9L5(qJ)ZE|tRM z!7f7zTISb1k<8LaAvw>?!^@o|uzt@?*L8>vDKM;mI;n4_nclPW{+7f5Bm^qc2jc%s z*5GM6q5qQU+kzt#o6)&)N~R?J%${8|_MS{M9U7yMcm{Qhq)_+iZ7$qx((GRd>U^<<>$TKZ}2+06B3H3hn!=7Ds$?+y*F;%~4Rdd~-;@!`P-?uP(ZY?#e9$%_pzvMgx7uk$%bl=HrK`PtUtjI# zGiL4qV1>_v2?DVjLkCo zV}yASrTQaub__e(byf*NmbwWByhJP7PvYK0<*7Eb3&UPR=S?2i8n53=m?u%H zKSO8!_(hsd7)YlxAsc#6oauth@QXBE-x^>w=Cx;?iwV7^A9mR5eQ~|{61z?aYuON{ z|Ao%364tLAzU#Ua^H#jBv@3IAdM}*n7cy6-KZ|`7`fr$`jz&EThu7 zM9_Bmbh;9B*1tjk#hvK~1?Q>oDzW5yI=f74nopO@x)S%=7gFgWVrrWlI$Z%?8}ak) zAp&|O72YPX_?6C%Gba$;^N8S$_jJZtBVW&BmX^ z;buCRzYsr{5aRc^#sjxV2tA3z&2*4#_Q%nWPVjmi2kl%S!)5#IUDNRWUuwfTp?)P64)&$f;yJWC+#~Z}<(P50Tq+W+(&y z4OhK=I3K;YkH`o6>Aabbw~yhU^Tt&()@b}L@G*Rc7~s3P5B7`tczgQ@d>ReVs9xvI zyg6^7kI)-JK{ayT0-t7Fh3FWnrxF~D^ENk@V*@8zLv==ILu(=cHBpPe65<>O)kdc% z_NLx9Qx^rON?`0DUHg4Y#tyVL^*=_y7OD8#yaL1jSvDC&7=rsxi-Y|?TQjzn|Myoa zWL78tj__i5C!nkUw0fAIY&dc9BxC<{&!JH#xf3}4`8ISXPn;C~{dUYx)*HJYI6-ntKJaJ;yytw(A6bL|(&Su)>{$=? zS50&<__ilb>yH(7XszZi_2J)3n?|Ey?zLr}^zabDRG-i~d)R z^BWMQf~enlU=f0;v8oI_nBJ zeOD~eV_kFxujkEq{bIm1VEL5CSKQ)2&+}mf{yx57!Ct^OH}IXQ_Rf3*zSZG6esJE3 z`kz9k|DrUs$lBkMBHU&4??}%7DsVGqDfpX8^Edks&FuVN(#%eLU9+h9Z+5O#qgxGM ztC9Z`hxV+`{AZou^IrL%Br7&^aO95vxkhkTpjN=Y4n+QcLY@Xg_+^UkFy`L}bx%V@ z-0JsFfS=qT9< zm?pz+I?e~5NPcp(cZN3E0YTtXPrKri0xm<2v{bj?H#fngUR<&X8=6z@Ob2G0DL?!-w06%Dl+ zrg2!5Z%eE222jH`NwEn^L{#;mReJ}SZyMzq?of0YewwPQxR`ESsIRzv-N-EFnnF~oxZJEFN( zJJxE)40DjyxYsbF_*>59zhuXrEMFiw;xzz`>Ry^VtJACoua1oIpW(Yci|@iW&cnC& z@vSM$xB!7Q2mGo~kHw05JwM|=>*8~xeugGG(8RFTV_NXR)Esj^q?Oy#Aew%c4rm|-VNvVRy)^fg;4o1cLzeop@!aNcBCpsgV)$}s` z^cfRDlbxAFKO=R+(Vb54`UZzR4*HR7&zGlrIZ4;aw`}p=GRSGdh8>F4-kZG#IZfHP z*=fSMb%22W8DI2MeEeLMVU-ilv@o7i75^R2^*xGuCgAw9pU+a8bPIq*`24F|0E{u+ z0^lEyrsaMBe|~=eiR;r}(bHW7{s-?5(DJi>r$3zhz54@5hW+kN0HzxRNIaen?H}DB z;Ju}wF}+$u1hju|J7Y(O;GkPD(93k~y$=~XvVyS>yHKIO@Gk%4V3|yxkEh7#_{B)$ zH!Oz4;1L-j-i*~x32G?)65kwIbFsQDM6jXV?LxW?15eMWshf~9-JBSiDmj|t+$ z)W&BZba!R6Hb9SE$Vsl-hO}!|V~Fvs(=QE4xW$2?01qMH+x+$-8+g;k(7dUBT@Bqr zz=++hZwX_ygGA28w~I^6r$?Cz2)oPZE9}b1F3(}tS^>KVMJtOc@&3y#FEis?6+H&4 z*;GQ-;Q*pH_IyAVa??v{8L%)E2M_*UH=7n%&;30K0#@?-HVif2Y0H!pL% zsDqT%^}{3lM7T0o^g_My?fY}>&76$|0v+Q=qpHTyPjSsz(vq0Q((jnE%4SV@Lo#E* z&BcDkx3=F@GzJe^Yo5(};X%WoAI>lSblG^02VmRP zI8_ikqe3d1;>NJVzHC4YOYg=y<#Mch8sjsYqVY5V6N7FP>XJ<7maK7E0Q-r4K^4W@ ziPlB4!`qnuPNrJUR_I5ul_weBS+ovpF>!})E9_)C2da8Ed+jbz@z@V$)yzgbX7Rn5 z>_>L>tB={W*$^Ts1wpZU1D^&Vqc8eqx|u;Y9Znl{-RJ_xit&~;?lEIFrM;>;X7nhr zG88wW4g+^EWb7KjsWq$FS^&Fu%g>0|0ElBT8&E~fw_(@Vr@`lp<<%%Rv4&9VjOXAG zf|Ka40NzN$qNb^a2|7FghSf~s7qKCDwuGUaYA|ugP=oOtjB3Z4t-P<{-VDSqe921c zOJBgY@pyd0DE`U8K4ML{hetj{!i;w?at}LYP%k~K1VaKcaq+n_A*=3sui z>Wmy|=^-k){HDd5KNvwOo{%1jfPaHl1El+d#`^|Fwh*_5hzp6wzu|fH47WKkco#BO zFX9l=3A_p>;kXNj(HVA;`fgsi)z@!}lYGM}r^)MZQ=SR zN6GzRI`Eh7Zs3sb99H z7jBqh{Ip=@qd!loZz{aEw3BryP%!L|ml< zmh3410dB%VUqpOk0PdWk#obu+_x}hO$&WJua(uamjaiQ&%qofhZKS2O$GAU2SMhD1 zK#N$@YW@NC6#l+#9lXD>ZR%9>O@0=n{dfJVhK+g#rigFs!oct?z4T)_Ll&9R@;CgLvj0Zk+S$NNe*KrlYWCDc`WJBWKeO`vvic zR}4UZ5yiRzF~sTRuHmY&`}#4!t1)}!N={Q#;X|d%6AU~jy8H3e z`kI)J08lI15>ee;k?`YgLo5E~qTk8p9@ccPh~=?S=mX-0KmF7*+@uG;h;uog*IXHX z6mfsu@z9c{n)vrRV&t{EFUMCj)yM9zg!QiJ@{#objH6>!kw3H8+ZaNy`OP@>ax zMn`Z9q`O%CX1Woj7!Ngzm@kz7z{#ww)RP{SH&fyuw4JHpX(5;6>ju~f+R1BpUyQNR zA(#Jcgq7{Y3)BSgu>aDEJlJ?X!vKsYvHJ0M0NJ#Se_&?djIn_x4ga1cW<<>*zNrPW zKVJyQ=7-3nU}4|XlX_pCFZq1B8JJxw-W5>VTpDCz66&@BGB8T{c26+CqJ{B@B6Rud zAvwC^?maM_`{X(AigW%L$u#)3}q#Z|GBehz*NRoFLg8% z_E7S%)RkMHsWlUId9Ev!mI-{)g0`G>e-t-kb8AyLV==_Ura3^;4Xb`;px9;aoQ&_K zY{ui7hWLYw?F=Z>HD;dkAb$4$BE3OZo_yz|f$%g^GgfQ8IiOruoqBB-^M_k~VlK&S zatraC%>vvB%gP|_J(%w2JnZ>x`Nr|MB@9nSq6dyYJBK`pR@^FW(0(@pBznden)75T z2^B#?ryv@QZY_GHduj%sf(Ti@;4yz^n!Tv+;pS!+1d`9$KYLS$5VgO`UlxGCwVRQ; zV^3_~Q-J2%d_Q!g&Vf&4ti|lLbR4>0hRjt1BA^y)_specx};|a*o;Q*>80ip*hVYX zY&30834y(fcMwA2ipiMOLzHYy!`8##vZghBk^>m?#E5Bm7ZXHj5x=h;=Jrv1%Ces3 zqR!H#fPc<()n7EpkQK9rfH$3lx&TJkJ(NoWyCZ(PLo+P`cJsYg^-=*Mf{Bxc(PkYc!Lkc z^P3IEjT8&0MFtas9qDA;X#57NWr8OOGiOh19F+p42~dDTL|{OniimV3^98H+#KIXz z(QGtR&7DkbJcB^eXvJzwb`B3=riyR14B^+`*H0p9!|DuX&IsJ(!^c?@g>2&Z6~6;F z3akyQCtGI(uQHG3LnqtVOb+9tKrq92T6&-N)a5>7@CXlg7VKr@d@lnfTLu8m8-%wB zQ)IGr4X||tj|b1%>OIyo65pSYvE_z`mzSlW3VarDN4+!4K6V7^4I;{Lmgr6R;mkH%wGPcxQ{$MzK+ zVyqIzu6YXM%=kF5Ey8hd(d-sFF6SesTxmo}<3!vS2K6Uqz9z(`^ zzxnZ(U!A*n>C)9(4}-#D)3tdy*;=%wC$%iI7%*zsu$MQ#ee`41muD`i!&11E+N|81 z+`Rmp%v7!&I&BFGW!buqcJ=Vw_SType)@^(m$2x7J9h#ibBZg=3v;v5IS23yL?m7% zfleIJx1GmG*J1NF@7a6s$OorxhyHTz+{GWRKTOf)msV72vpGAA7H~A$L;;0jKk84#3eP{Axf1b>B+CY z|0N_PH8D6g2IC+ak>oW((YlOq;aoJ5sk1#7EMKwb>@L6Udk?<-?)x8o^4YgnBVvJ~1#jAu%rV@xzG7;CuIC%>>W=nTfzs&dfr<4fb&H7~$gPHhS{x zWh)M@n=^IgIrYgm_FhlP(Wb^n#{Y2c+>Z|f)Q>Q(-~GWJ3(cA3Fn3os50|0Cr+UeK z6bF_p|M=FYi>EKx_gheKVtzu_gD*e(=$+5*etUtl=OQ5%W-vk>hPz87?n5QxUVe4s z-nS3D`OBp>((_08Dhaq~Gtz8{o2%PU*P-qcJlE~|D(tsy zvu8}3I(ddnzU{=t-yUo7ljE|=9`0Sfd=*4PAc%%y3(QBjy3qoT$He*GM??TJ8_EskT+-a#Joa2#C*QPW-mJ+} zrc9c%^2nozz{knSAz{H0k3$0uL)RY% z1qMathlPiQg$P2pV11|oMN7@}b{{%)i2IN+Z~KmtPM!7YwCR(kO_{gt!s9?eU~Nox zXn1%;cxY${7oran*b5+2Lg=|OSUJdjknfvgMopPMcgggblc&#+e;ODW7#I|koE{Qk zzzG%vI|$=MZt&R*(&D=a7~G%PYZCL}y8R2a&I=|hEWh1swq zJ)wVtM{HOyapueO=FMLs^OP-EzW+vKNCX$r7^jU03l9;7G=+snhC>A-uoVDyn(N}> z;yPHm`sJzf7J7OvSh8g4{6)+5|AqlahNonPg@=cP1P6zN0m;nPEEY@=nZrJ|$6dJx zPxPHJcfRM6C0?(|m%OrQ)!Pq&5)qo29uW?XgoJXTT(~|0M5dO^K{PWDSC_$4d}esg zU$kV=E6e4tEPc)U@U5uu*zizoYGia+7!f)wBq|)nj^i{yvH+cjc(_Q$$i3z)TJqYf zuP$GX!+ZBPfl*;xSVeYPR76NE|L*bSH1S?vX!g6y;rT0 zuk`lap}HLv8K0971ENPnM@2?Qa*_5z9h90gixml(?Jzgj;iH$lzH;R%pVwda@maOf zd-WR!PTvfUO$mCW{^ed^cvMtmR8)+aof*YF6+$y8s*9V%W9)4C+BLqMZ}uAB)!0Y0 zdc&6eCr;hI|JkQUk9>0BMo3gtbTrvYoyg1(FjWZ!J>4Yky19>eG8YPmc#NJnXE_|vwrxAMZ&z>%!S>RfyDxqD z#*Q6|Z9Ddz{52*iCKl9dHa8o&h9>VVBc>4gCAduO-@P%C>Y6= z!VOunJ|jlWT>Sdx-Fx@%+qa+FFW8r~|IHuH?m76@oBsO_p1hTinvyO8S%3crIt$8# z<{~preBtl~uG*Z_Q>a`8!(`w(pcvN+Od&Ud3pgrq2!t?phBuV;q_A5cw1F+F1|U%2 z_01q-f(A$pE&)c57~D`p9ct!KXeMwZe6E>f3ugj7l~Hz&_^-DVIty!141B<&K3uI8 z+Su9I+gXV0gpR1oT4?BZxu{Lo0mH{jCry@4eR-aItFWgqlcd!gJp_`uxmEk2ljq77 zE?KnX)ul_9uRHkdZ8Jx+42TPaQv|8z%-Rl|yufS0;#J$;JpRqapRQehkfg~FIf@!B zIWv*aoHNfe6FEp`d(B(;y1(iNbwF5jT#80pSYBRe?r5H2W(_kTun^d~zdTpwwf4PB zzuXTB35Au5h}V{smXugHT4Y$7n+dJ0Z2EgH@LIU}*o7On?>>0+I4CGEJT|SMth6YP zU<4NCmLmHRix$aN9scU_wX4_FH`R9^hegJuWEU0{Iu$Dgadi+gbpT{**V#z zRW&(QwpI-Qvjm#Jy4K1@WC`RK=P%$EWP2+Qz5BuO56(s3`1<=FuU@-;EE4WqWtM_0HRGe;$5Wb?(~>Km7RfZ#Qp0 zh)T#T(8lH2h;2A)&L+N%t&OFXy=A9qo^w1GtlznJ|ABXo+`atC*>hiicj5AtE7z{y ziPR+J#stUOw6y^N&;mMWW%trz&$)A6+p^Pt?}0r(-uUqNsn5SU`_1`_m#*CmNXX63 zh)PPdv9r;)vEc}*jg761t(Dc#h4bfodamBIZTsGxAN_Xhy^lWm{0mG=&R@EIKP4lp zBr`*+X=B$W!WK=?Ky2--ZMu2^!)wXv&6^b46qio#Ir`zT<0n4<@~f{eKS<2UEh@~^ zq-kyKY!Ok}=-SxYadwH;_BIped3kwyF7sZqW9Rmx7q=fi{QieWj;T(4b@g^!es*47 zcBUq;z|PjL!QR2XO&dFVfqkNl!wa6Wd0z8mOIL5+ci`P0k8j_1`0aN-IDX>P`TGgk z8j9(QOG=A@B(T@nwy_h~C5RpD$IV|bZ=P)7ijDg|`uOzE2X^du^PRU2zkmEncv?n& zVO4c$VZJs)V{d1ViI5#<9|uje>-)<5xw2(`yAK`zPW>R}{@J7cyY}uqbm-l0V~R`5 z5Z34CXwp)RI3oLmcH;3e&-rUM`>a^`#-S5G2LJT)^`E~xy5IkVI#!#Pm8q@B&q+(n z$V_q&J4A~e9PI7eI?tayf91+~GOt&B_bSg_Ia)~5oAJvBc%GC3_S zG$d8r_PIZ?gSZ{n?onF@`;OBVdcCrAo~PHVKI^t`|NPLJReSHmUO9N=uC}x=J3UFG zzIyFWOl)xEbLgmyYs-ma+B%5sdwF_!E?n&8wRrW`-Tv==y2Zt&AASDGr=j=XT)lq7o+H7@ zN$E)`6}bUFo>qPG?H8vFIB3iP{}bkW$~+f(En2(z(8nMB5S@5#^@{a)_{qVG4}-&Q zN91ZNGQ+<;@Ycb1+S#?MZQr(SJBM~{+t2dkJX7Y)pSNh$*25qCkP>-p^M)rF}hvB&eDJjLxu}2j<_OuhXi|!z9->w@ZcD~GW?t+zD_I#86=){|fO|ScI*tpUE z^GAt^X$2XH$te*TnHLW4Z|~4Ps%`uB9ozL?=;`GpL)5rjemeTXXUctwO}=Y4Z1Q{W zK~h4TrZg!&F)ltJswm>S4t5=?+jj&`hxRTDAmf~8+WdKQK6$J>@QMG9O{>>oFmHYv zmlPA7og1GJpAwf67hg~Sq~>-V+jihO#I+l?V8Q(PUh_O>z4_bjb^h=9ZP~DX!=^3! zPCZDBiAyNWh>MSpi%UpKh)U~d+fm=CBiAvZQ^yYNM=f07xxmwF_U7OAEMKGW-?(Y> z8*gm(|1vB&AvQL#B0erQ4hI*ji;L|j?ik&vW5*6JEm#PS&VB9Dk(KK=Z8?ai+U)Y% zdGt;~VtjmTdJ)1TYAH4r2=*NlI(O`ZR>m(}xIngO_Iuy0Mh;^80YAm|-HJn(5>jF@ zrOe5Wib24`#c}amoI|I`E}c4e?$~kM!Uf=`_xUY8JN>r#`|sMZd&l16ff#dqVtipn zG`fY3B_zZrbhhuD)U|V`E}c5QggDzvru=xN-;SNT_8s=$<-hx_Q!y#ADG7;*#VPSg ziDrphf7*_ntj(zP-oa|INdvBQijugtVgM#AHMy zTyj%VVnR}9yUr0^I(O~Xxoaoa1zz*#t@&`{+Fb|t?K`C0cVPdach5zoCu8*41&N8t zNlD46Dak$mLPuYCKh_YUtneCWeV$;oL+NeKn{ z35iL`$tkH^YI90*VpqGa5k0zg>C&lFk3RF~&y%frXZ_9thu=Q@_L2ABe&@aS&c|dX zrKKhpXX8C3IW0Lo6>nW_yM}k`-mOcQ&YimVoC99U5AReQe((MF-#zl-`|p47!KpjR zX^Cm6C0YzAH7yNorKF{rkh*p4(zQposq;M-EZg_?uD3rp`r!vhKln>-LdSrfTsy_ej z#`WmE}mbDVgaR>1mGkj!iv#071~BdYspSIQ7M;FHe8L zeNp=PCqcm{zx?X6FTegdK07@_lhM<*r@&F)(}{E9dK5W2OYJ%%lO)o1JetyRB=!G%$F6!mft4E(cb6#ET zclg8^RD9{u#fz5&m$-{%-^GM{eE~REuKfH+lbxMs!qK6BT(2@mr=G4$UthET*y-;t zU;YvQWZyCBy?Xa>cAECus_pNpzPIWg+{D_5@m_|vu9$@%$td1&CdKdv`M*t-wcrwrvzz56d%x#_^MGnan4 zcJ-S1werg;@jv|Z)6a;Z9%zg53yK^u@1P_BLV0`|QsYhtvyp`55N;#J7ov=E>4>tC zKBiz_hwK?(LYNORBB;iX$hzzOKXbH?Avwe>D+(VOXJ3m8sO9mFr2mCLd1#m7M7f4 zfrVuoap&%iecdN7S+fnvPUYLmHxC^JR3lol5Ls{*c~&--)@^&Z%-VYV+w(tMI(O!q zZ@&Bf(yzfOR*qH~Xvx}2WZlN0U8g=HmmWNQ{_2efk?|SDWi_>xb-cdTriV?QRU462 zn>O}s?ArC7y6gPaA20tBm|0qlE$i4TQq#t{FK3d*ResH>~4 zti%kVpscQ@y2ieTeV(nogM+x6)8HklOFvzGl!p4NE6OX%N{hMThVq&^d;wItt%XBJ z$9`iJ-(COtVR~L+5f%e-GPQ-pB}Ju`)zy{d6%IWd((T&Vb|13n*e_~zSaxYqcAhph zy`YwFu5D;QEtORjB@T8DTw5Uy#AHR)V-~x6U0pb|1L<{Ed6}f^(7+6VhVR__D+{*gey4uo;idy)h_%5Bg zI6C%#v+Um8NpehmKOpFFctk{eRA5?tSV~NMN^(Y4dQxU)X=4>v)mTwdUR%@Mu6twG z?mc@scIUb$^aRgLHin8Xas*=LWsDMwpWT-=mjSg)(f&#vli*IVEm-Md%MUPE90 zRQ)hG`0o8jAz`7>VTCd3Yxo^l*~9zVM!vDEAipLhF)hEbuBg=6&N-sDbDzF_`}A>H zdHLSspvU*`JdB8riAu>;|60V?hTOg#TUMM`t}koOi%(6A%Hj+1fYaQ^xonZHUT|bgQVQlwJRfl7QAl)rb8}T?K_TBJ1 z7Y0r^d;f88Ku|zna71D(P{Qtp#>6968WEnBn^)MZFUhOtYlChDMF5BE8}-7Aefkfb zdo>_93_}VE4SSHm*F}d$#YM-)MubNuRWwys^VKD#x@VfMYwgbao>_6befdht&-0*8q zP)JBn;LVGLeAMHNgv6-OsOZqp@XUtFg6z`D!picRvda7do*!s8Fk-;qfrAITj@^DE zC>Sl>y`0QPKZwqXi9@fDTTLpjDJaaZFDfc8FRQ31F3^?_u^l296g6b1WY~l~Hy#Is zggpK^f{(fvk(eGC84(d16_rufSc!!$KCi5_u&}(MqO7Q3hN3Q|ee|ULKL-Rp2>vyn ze;k~^Vagp79}^dwkjFP*UR>1FTu@$K0drmowRW+0iNr$U@X-_Z-+1)+{>>mhJTMcp zos{H+xX6U`#-_@$;?iQiwy=yaD$B|$E8Xnffa2;ga=ibq0Ra!L=U3c~Nl8sk%1B8_ zh)&Wr)|A&46_@elg&;J15ROte2e&ARoBQYqJJlhoZ4yhjP%%FqbsTJGjLYP{c_h>%;4@}fdv`#7wg=Hw*D#%5I2RF;$#)ijn? zR99736y_I|RaLv&xkq@oc?^?`9J~Hbc*vcAyr_iagiK9RcD^Q^hF?=&Qdv@8U0hLB zQ&U-7P*hr7H_UEWxrf`Z;U2@rF2VZMgOL0vM5`K2Mus*!BO^H>pXZB8Ypa{e3V~Ez zU0zjIR#Oe6{Nclf;eXV;i@_m*LHTJ38pM#9S_*XwQZj4!s>0f;=CZ=limFQdRg_m% zjC2?&7|xB1pYhehM}dJ^1qm5ithH;iv$ficWNiaFSKd@sjE#F(627OZ_JZL#cT?!O#G&ibj^vFqD zuH6p`3(YFjYP7)Nu+W~Dqe;!G;+u4Qt*)U?S6^RO1$tMHwjC`PQ})uB(W6IBeC_P* z;E>3~Y~=g69DQy+m!FSQO}e%yy`~9km|BDaHFXu0wY6jH#&9ojV`G3eexCAHP*7A{ zdVXF(0TA->o|l`YNsnmcBa*b4sVP}?O_fy*Mx3Z|W5qK&c|Im9SDTfV-NaW^G&GE}8<+jkxC!INj2S1LyztE3(8wf24FyFd_(N1u zC@3t=N#yy&+=8N^l$XK@l%mDL;?lx2p3g)A ztE{}ZutHZ?QwJn1kfu$OPMAD(+T_VEZ~ZAeMq5w@mY0=Ql$D_cXhR0Dpx9-os)nzx zqoxRJ#tgJ2ojiTwEZLCArp%l< zZPLVvlc!IcI&;Mj!EqV6MX(l-Vl)O*1Dvdq@)}ZBzM-O_kuv#)J7*20fL?$bu5x&+ zDeWKO1Uh=-h9T?E1R{YOZKOeBU5G6&6z&h<>X^B$4Hg!W;eV#karmq$FWMUlIe{yy zJD|Gw<+e#ZEZHzt8}RsH;GMG@hSJo)FvDm>P3XZ3tR_12(Y-r?zrHivl6C^pMhWc5 zKyUhS#oDZt_~82w?|w0FkPTKC(JQPO6MjFImtT~v(ZoHte&NW+yT-IJ?7u>9f!>cR zNYBp8(Q1<)-F|TA=7n`bv3rkJCU8@ol3XYjlp{GMDdZXC%Ya;|L zg;+&#6-4`9jA8k^=Ppo?gGKvZ^QZtZ`KvM`sqhXM5UVrD6ZVcNVz;GOnoJL!guR-d9 zdJ`QJ9T^_-_?JWTCyu78^pCwyTy1+z;s-LceuH;(s-UE(29C105W9%7v$9fd z9$P!2zxz;k{FH|iVSN&v%E-&lEi22*PD@FMj);s7x_4 z#D&HE`q?MnpFg~MiEQeWag#=QxDFYzcK=BH$VVi=>QY8rY<$GU8<%z{wr^OzXzuiB zlO~TD{o=r(LtWo^tvB{lGH=dwn3S<2M+|%sI{;qZG!{_U zWAl&y!a}}3vTpCijb5IznbW6Ccxlv_k*6@~ z%I3_RI&s{n5yOT{h7NIYb(1W5*$Go`B3$M>O5Y`m7JYPZ_RF)TPn|e+0qcwe}*N>jK|?2(YZNcm$%G&dB)_)vt~@6 zI%WJw>hutRyoi-YM?ps5yKwpZU{g&YC%U)~xB$mqxhJ*Z~70=_t&51eoy1 z)S_EEmM@q+XSQta+}YD6jB+0$;UtYi-Cr;OWrQNc4GoFR%(}cC60^W_o^0-{Nn@}t z0Ss|>HjXPMJS-?MEH*ke^LyXLSQD7<BF(HK^ux$2r5kccBkJ)-({~Xm_2^1hh&J`uo2i9 zN(2fE4Gjy6zy^WXh|suSzW#2%&$7j{Cy&KXnB7JUvm*itA_d`QQH7zgImwTYZd|@Z zHe>AYp%NDlS8SR?R|L@-^d%xPHX<@9DyAe*xpBoSp3^3d#GW4aL9}j5d81feG;NZ| zjf{@Pe@sH$2kTZXT`*(va7g>GuAEWjuyX)Vkui}m*zpqi<8L>1$d@mfHDLrK+QSl= zD2%C@EE^Y{9Ye-6?9Qp9dvAQcPX6kwF~dQd7cgvC=N>|ROcWQz#c*-C(cz)jK0dT} zi}Kcil}l!hb(ais!%aG|=nJUyn8?T&tPdo_gkCweXB&QHc>40%MKedZ4;ku){m-<| z1O_D*Eyl+uB}L!+^570Xzb$@y)bDyu8s#$B!wCiqHIYF{$V70Tl$;cQ@8ten+qWrp zto!D|f{7ztTwLv7SCJhz?8xVZH+v&80ivz}&| zsmOGvW~3*_hF^HcfA`+q+qSK~uw&#fHy0ZQdny8mE+aFYOXo6k(-Oiiyt8lb{$1PN zSatY=VIxL%fwjQs%|RtD3(i2BrO8MOI{Ws%z590hty#4F$gtr9gh=3#qX*1gZI(7C zM~jU2-BWKL*t=)fCZCz_?vada1EYa|E81uF5C6!~l5yh9nH|@Q)zK;8!tC24w<$c0n|hd(;MZ3MOlkQ8vj2I>tq zyu2XHi;u)qG~&U>6WdyX83N=Ug#t?vGdJsJmY0{SNsA5&3;AxTM>~NP+`Bp2#%2;x zKT%#uX?|XQTG+j7pPqVaQafCM;Wx9e6q)xk&&$k(<15leJ`R2S@X8jCcIH-A=9a*> z=x33albeq%lSo8mVpGxW6SF&FivV(wmUJz*2w`?^c7B#NJvJmb^!n<-ZQ58P3u@WV zQeT$G<>g_vpwS|YlN|ae^x>gN-P&N;-O3W!y)CnI@-sELm<42IVhJEAG9V=Iy!Vif z_E^HERH)9%(%R9w4%>`1S%`fyxlAstI3+GTFfjbL|Bt=*fRC!$+QxIr%%qo@R6=G_ zrl(g(APf-FdvB0J?+G2GgCI>n6cn-EE9zBIuMI_|_aZ3LAqfd7kV<-)O#aV4lOWiy z@9+Ko-~D}Na%Rri?d)^r%zoB-*4k??@DrJt7=aFj2_A(?%WmT|KzLX=Zo{y0<=iQ# zQ45?+LC4~B#wMUfOPZ@ID~TcoxdZl^>({@(bn4=XC8p*^#$ZFSnHW16S2j0Ql|wu$ zFD<=&>&6XO#Ne>?T9G>;ZW&@R7n_t+x7Jlw-n&;`3Lj6%Q!tdB*;70=!BSviZf0a+ zj*?C$rC?k^N0#IH1`7xo=gP&m7UX26jR5Ov0Rug0sJX17si7Jad3jmMt?RI#HJ;tO zbZkaia+=aoU}kJ&WyL#@ur{@$u zv*-Pfmd3}$I#`*RS(%^=j6M~WjWuPruUx)y`@#pCm&~6zA#3dN_g~9S@H4hCvv9W1 zm6TKEP?s*BIeG2Q*|*otpF4BLr2M$3oabL17dOb<#?stEY*BjaPU)Q=OHRD|&cVZP zu3J(xW!m^DIcZ6837cL|^%R>-umq5`bEo^&M%%Zd2)Vkb{>3AQsbs=$+i($z(oH0ugjOd zeRt!Yqw9<2!!A61%J{r-ImE=8nv}j~iWj)y->+>YJaugMmenghd!cCFoLSSSPAbgH z%}RqcJS91C@vIRRu(1oBgr%?S*|2=+qW4}YDlVQieaeLVaoOpx7^6_af*H|vB1@rI zSh{BU%4JW@du8vOq9QajzF=Gy%+Op@^T#K+Sy_q1qWWjHJiTH`@pJDiD4IQM+SKud zc{%A+I+fOznvz?bo9=F5BNRD_%0B$$!|HrCzZ!aqF`EPA7*D|Bep56t-E>q{H`spuP7=m znpHG&*5pZrx#ZSNC`?aH*9dJKC@xtGf%HtG@}r|&XkPw;kF>`9ZF#*zI79?TQ^GTkG;HW z=Z-DUtX(!6Cxe4WnxBK?An_nAAP_1Qb-VgT$?aSBzx(FY+uOHnSh--zSU7Z~CaG+l zP>8y77sc+B;HP=(YFW#J(vNp-dv@*OspDWkPfL*4lQO(J_e#skuHP)XQPO$iA3LAl zzHZ^n{498eL=74Y)3K8yb(^|Fl~iK90qmBRl;3-I$F3LFFPfbXPlTMI4o;3R;8v59 zK+7wGGFV!A_wa=uUfr>C(~{{0aAE4rmVr^1Krzvk0+Qi{Q&v`9efz)%d#)bdy<_v@ zDTP@XnXyhzj>JeS)|HacxD=(z%c`y%`0%aW@0Y*7ZT+HYdD$r$!7%+gl2TgtZw3nvx8Zm)8ZI7uXuZcsqw6&O^i?p{6k!P|S^e*4XL%07Im z2sbDz)X~WqXG1ym9+;K#%Bx?!ODw1Fy>#Zn(wP(SxOzCbP%gbr5@#o8sqK1S;=US6%q*!;e3F@7*`I?fWb{H#gYXMeOD#afMm79Cpe2 z`ukN?_2p;wfAZNUAH4I*`Zqtx%8rKZ6$M|KYDZ5k}uv& z&GK+|f$8*)v%=Z+36rSHFOE8hv_kBcuuVeOr7a93bQ=pehg<>a0*G%+Y@p;w%rrvT zM?vCyO~G>#!h#XJa8Zns5Vu;=3QNQwz5qfX>%}(n3_Oa-u_(uQ4VSzv5r$m6oB8*2gbwYUG3Cblw19 zvc0wHUVUxNGe!q0sAbVRY%8IdMgc8e2ZA)u=Gn#L2Zfkv5S$_Za?i7W+4P2Eh;T@&5 z6bcEFwRbhvKWqd~*3$g2xuLr3e)$(gp;8Bo`?fY#=2n&%+DkDh1ccf{u%j(4n0r)H zdGGG|4Wk`JFcVu_3ay2t3>fRSR${xv8BwUA;%?3Tif5FTLOVNa5iD`mV(YeUkjCxp z91G4g*FOaAcQ(E1IvAPwx3Ragak8oCZf_z?8t6X|eqi*PYn!?&KFjx%*oZ{dl(n-> zS#x&>=(?s_P=j?1u*9}>cicSn)vJ*bk)5r`#?D4!Q`XSg)7l8zK|StTef@)mHtoGL z-yZ&QqqnW2lf5k&kEw>XZrJgfaq}NG!srVU@Y=C24xKpiQI>MBWUvD~XY8Hq!M%X( zZtu|PdbK^BSnufJ^%L*xJ8}H$7a~>oWji`MiXBVZ&_!GgDC(N32QAI@&3%1s*ZzIr z(3gt>;R1nyWU$lVQt*iloew+PTOPvH)_nWe!J{`D`ucwOVE?;u?h+^0!D6wv6wLiY zZFhH1OH)f%+ue(2FPuL7$rnHNbspb0$J2cfh7z%)gxuopzK69By8BvgpFMN&?CDd- z4}5X7t^40E#K|Rt2a&-<*V0TimpAm*{&=OS`R18(7tdcf36s(3Z$7VXduNufqw`=g znv{aSY`)R(@DvP|5PiSH)Q&S3j-NdK?bi>lJRJhtnTyz^q@`Kgaj~lB%<)T?E?k6f z{r8v7UO0LD^s$3i8{duaRk%rAom|U0+G}ndyQVvP@-ohZSp}FbaQgW1Q>RXxsM+lMVk6bQwl49(-{{6)>%{AwL z{2ukE}lPoiaOPL^3>T= z$L@Ud^4LJ7LaZn`3wQoYCrUanZ{ZT$=Apu$BF4E>C(hpb=G|FCyi^J&MM*`?gFD}y zyx#i#1*o}%$2xcRG%0lW%H?lAc}nAm8w$OLVYWcAWq2!IiU6@UKE={vLF|>9eQ4zj*5SH#;xznfNntc59iK8!tL$7x7Dyc7T()G1g)m%Fd{Tn`AC`6`Q;C`Mx zdGzH-KT@c)vAMRfudk))`lVZC*CAJ2zxu;>-(e2O@uO!?AKeq}?=AK&fvK&ostZw5 zV7n^01D~=RSH8z=iqpqVo;!JTcMJ#>C!ZP&J`Zc}H~01Ycm)U!Kd@WZaqG|FhIXAh zd2m-$fWO$kw4n||P)&`tuld@g>o-f_yLIa-zG&RhGbg`!E`lr5+1%9F)Y{z8($|0~ zeZWkjS)-*hXU?8FuqBKugQ2Rm6=Na#UVHqz+hs(Rx&A%wI?8;xVRT@CIG`7!8QoUZ z*Z?BF@4>k%w_!CYxk+q@XV0D7zidp9B#3%=7h_0ULqkhPV^d#KjjkR_%B^dc&Yi{e z@0&epXplIlxuK~UBVR)!O!bZ32u9J^Q~?$1`gi9qUOIE|ANeCgg2lm9V>v8XFc@^V zwRJZ&_jTO5jWR#}@Esn(13Oa2gh)cDM!Kc)VMAkUXY<3h*3Q0?%cXbWG6*jB%-4&< zN1;S1u>!(8*VF_hr?aoTqwmJGyCqkD{2nIF{rRI{+7S<cr z>%LiX_u8fJ&z?H|&*TxqhD(N1ZFI*y*c_T$``V$v!5Vx2YU#}%&YwGSU_$~}yW!&D zR7+V~7yMFM+Pd1R@7}AqccriI${kQxXO4U@J$BUa&`^z&rnI%CqXT0;hTytN_^Uv# z?Q6Jp{ksz<4{uD47_Awu5o@TnyB+9sb4zzyO+{^eU47$?zP=xSIDh=ur!&DwMvNLQ z9^KN`(b0y1ytS+6VKp~8KCHaiS8^5>(H$AFV>Gb2ggJ$kws&-*6kKYwEmhU9(lypy z>TCS=#KCuF#ezu$4JZyTK^csoFu!Pk`u4+|R|5fd5i6yAew z_jJ)+)!NRc+D5o9+^@L&u z=MvWCfAT^%`nyFsgig{cVUWCDSl1-mOj*-V6{(UOwk8?G+N2|y^BKL%xf~Vml zMS#r^o3X}7V~iXVjj6^A$L829utB3;^+y`#|8_pQA;c!qSmWIWowU{1;oV;2fcHTf zN6lc36LQ4ZBpPRp3sRjA|585v&r-;f-14_t^Xg9OX|VKJM24D`WGB2!kk$(f^UG!I?k6 zWatx*B)3*(S;khK8M(w5l4aqpy+>&VQGOG=2xW+;%CCpnD2?w9FamwX<@Gc z$zqIo-7x%E!K!nQSanc{BV{=E0{sk8;=%#TP&bVbIt&+D1AZHLF&$_R9U)!eEIkzF zgpw9akpP5t!&`Gt|grjiF&O?V5mB+EJy(>5g#RbMb;vfh_dRkMlDO?uFkXW z5n00xU1d#+dW6=tB5T^3vgO<8tZm$E$c`5DlnsMj4{YYxC_BoQwo`DQjGfNLme1`{ zb~n&E+Q=_pgh%My@)kEBEF?_Rt9_**e{%3b~8SP0EvY%B4~e%WhI@sn*TK zRZ2^{!DU1d@$X@gvbG&gu;E3hYZagj?IDJAb! zs1=mLSl+F4Rl6wVmhuKEoUh$vN~KJxP^e@$6Y^;ptf`$$q5+n=i;`WCG8IeLkfk7(nGa$$$ND|BoF$$)J=z@az z!GR&V;1G4lh)2qXZq(=z&^L5r!h^%LW1wiegi{f{;bX#u;nWyycqEq)*@Z|e;ZYIc zl5jI*MuhXisVF)^8wKYaX@nMjn-LT_ii!~YM>@+grWeqH0T6B}3@y|npAoBrBO2R- zF&Jn_*Aw&rrjW=C00D;J1&Jck4j&Al8*%EQ5J3qgh`$1$s*czjP?A)Gk-&gL;4?j3 z5&ykT%!WcCAStC|DMJboE=U<5UCSe+BUosTNC=24hM){^d?amg4i*5LpWsdaM+ydE zGFn;S3CnW*A#Q!v&*J|!!94EaJ3 z*#XcN{D^FrL^ADYIc}(y$2US08Wr0kuz+19gze@T0b{YF$3YK#Gt5sg#~sS> zdXRI`IJcaY1KH$l3Kxm9+)XY+MTe_Qu5wp+s1y+NWxZ;-!muA^bt(X< z9$`BONUIbwnS!V2lB=X@xx0#1v5H=mTxrOa(Wx;hiD0g!yUxR%cBj;|vRCfuF6I&k zxg+1gUFYc~(8I6Fi}5f5@~ZJE0OqQ^886D)Z~$%ne3U*t@U`^=oD#5QeO3NCUw`3a zaI5eKwweH9^<9-E1A4;&tMmZSD!AQtpltZ)D8x&H zZ?G;ZhKkWfM@B`vM*o&JDyGChltExHzokZi`3|6Yz&~Hggs3~y=oL&a0QHgDY4{`- z(`*m0Pp?}7V}X#wVeq#g`Mw?kiB+EiVBj2qQndg3nB2wZ{0%u2rlErZwFu!iqfFkb`MX zMnDKol>7r6Z`b2E={2JL;KZCJ`xur(O(pWplYrh$0x9W}e+$%|$u~sQTY~Hgat%bW z{Udl6GjQWyZ1#AzA&Bb~G z>;-H$V`^YtPzfc2z_7QNm~1QsNi zi@E^)B6~BD(XUGo5F;ok(0VzcM`&YZ2{#LqKawHZ^fCldv8|1MUyz_|bhezBp_eAQ zAWhgHj0+Jwep8}wCh9j)&mV~u5?igEy`3%dq;vsC4hR!=%%2c4#P&`QG9(VY2st7g z5HwuL4yTI$q@D})3VHA#+EF*yafl;5=y9u(dO+eZclH>NI80qUIf=vAxz|;-wl z$hlkPC3SUmwsmG)+>lHZZWiB2r>mIOPma4{jGiQ#X^Cwy0SKzHxZ>+XL} zP^r)hDnu&znLhvL1eMx;L8V{IS3scQM3!F2MSmozbP-9#MGpCckvINKrjZktK;Eq9 z1YD(%K^_xb+9A4lxF}SRO$5It+~^caO3737^b0N>5Rzn=Hmy`Je_q1rgoLAX2fv^f zh5m$?L%H{QdAb|_im>DC1>!-_FY&k_5-acLQjf%k@~3>+-fBX_(i5fW!~)i5vqC!usce5-+@KOk8p#WGG&EF9akL2ulOpgmZX55z!JE z9*OBkzm%YyBiQKPsE8=SUHpa|CH_r0Y80d=Vh#$RM^Pi`k<=)}T+z_OfZ`g=LI7nU zU^^k{a4$1Gg~3AP&?m6KNbu$yS5e1FH-K`0IYS&DA+FG%p$(w<5@woWnm{(_r5eCB z7d4UY9w03mSt5=hPBA_hLTI3BC!)BMz}zU@f^4uSWNIW@Ch`Ic5da50C`~>)kk2iu zg}EoqXadvXkP5dLE(t`IU zDP;_)i>8}Nm`AioE)M78Q#CjpSP!nNi2sNzq!Y6Qk1|9JmhK>d9}N(D7IGTH+yy&= zGvb7ZN<*Y3oR8cEv_;qw&MeSxA>h&xq7;%9#EFNbGX@BH33(HD9Vw5<6e4>O0|ID$ z?i1gIfRzsdsnLsTf^>z3Ia`7e?lVMOBIWiF=?pWnNFK2%7;}4&rrgjM3v6?<0hkxwP=odn$7+WC+KDk7K|5-Nf6?yTQ z<|idDK2w3_g!qogjpt?{^%vEb`#muXKNYx<=uC`5A%m?l2{1J_2{JP@9bzsp)0l@? zu;vbzr2d`IHF;Ef`oE>N)p@k)+s9tMxp)n-IMwmT> zLbPRVWn+zKIo2>?R3o+?cq4>XvJt`>K{ysWoEd4xB0P$s7E3D|D>P&!vV~EF0hd!F zva+ow#U`kfZ73Z zh3@MGHO>&yZxf+xDC;ibD+?)%XY&v;oXE-%u>y%ZuPrE`CwU+ury;3^F8?QNRvsS?!&@K+d>|zE9j&|;GafUQ!=S+b-(o1uQ|MfH3jWemZIlIWcVBBz}UF+Rk zTz*!>&DpJ8>gFo-kwQ3hqufCIfW|TX15pk?p?;4iZ%}KdHUaj=c7eDudx8Cs!2-vj zVx7}qc5sM<6^A&pl3^|kJfApu&J5I$g)3ib$n|=FEUI;rsz5i9a5u2Zpda9unf8n(r(v&;j4z@iwLiz;wU5q?gIoo(n6^k)!e{Q z!EyuYNTE`z(T1y=jLRow1kx*Vg;I_*xtl`jszyPQ41$V;#E~h{C5UbAa*$5wA0_LR zJL`!lR?bKph?xiCmfBtEp;Wn`gTz=Pt5K@uDg^{8g+i`&h1{l;tH5qa6(-1}741r? z40V+5#I&Q65iw0xt$>W@28)ow4Wge4j2HR@=~AI$RFLoVQkhnbwkTz*%H7LLC08rl z)oLY8Xep0+mD&x$n}=Mfg6ODL;*@As3!x51p$-^_P!!S~tpaJqcYjE%MQWLs0%`8< zN_Xl>F3Z%N_O!y*?e3w72z9q|*P@gcZ@`iy@S;2!k1j7yPcJV|FXw)nk|9_wi5Clw z%LtpZH*bLB^7VO)?h^a(ezGbV^>bb$IJ(P~5M6YDUgQ(|Qvv)ZnJ=dRAhxf)s5i3&!6|Rd2w+in!H`zd> zgEh(+AFagd6d3_&52Bu3IP-+1$(WOAD4A$>)=ExP9dT^S z2K?azLD4QiB6m(s(J&%>s%dLR1C`2-c4Hmk7qNv1GQPzA!}fbLP>@{?4@eT6)bKNT zgMb6A43w8WG=msEB9N3qTIC<_&NlJ~n(?9>;tb!m?rxAS8Aa z`Qvnlt1Zv2_X(7*DHEj0-YO^GWuUDHT!7wlgg9Kzy zbqNtcZFV0f3UMDU8m1Yp!r(ewG+d*RjiyHFMrv#{Zefn2oiK1p!Uka+_2N`wpKx|y zob2jXgy{%%I6s<-(nUrD{73eA-0i96^35Bb06dkioDPkdqs z`hUfzSQC+NkWb|sNGJ(5A^^RCwOsPCAqATTOyl8xLQzjE{>nS3n%{kC`kT`*`Gn47 zB&-H5uM(DQ8VGh0;_Awl{hCPjc$x$=tMci5QjsU&YXllYjj_Z?Vw`UxF_nPf(SX@G z+|TGd@qPX$X&T5-5^If3zOBSA-(KR7KS<&z!5n`L1QQ9IKJuN*er+szJWYaoh7058 z8=`mU8|fEmG~Y&IC$Z<66HCyT#zo?)kxJwmg#;3V#tSwPpL~BwfClb!nh*)lSEG@P zmW1VpOCst9WZTC-87xLb7(vQv=IbW>$4vbE1$JxNm-C@ z29#?^RLc0`#mm<|vmVQbY}~SW@8>(7*|=rPrf0Ul{X^-U5|ph4Ps@O#qiOlb*t7}r z7Oi@E!^X|jX6o6dR}Sq#*=ILz-1^#C#8-y>mIo&H8Y+NE#AYBH6_b%)yaY>=Y~HdN z>mZ)|*Ve5lzh(1_UtYaAP`(G{K?k!XU<(ao;gOkzMdTc4cCugAzT*gGD7fxTWZ0$x;;*+Bm3u?(*z-y#mrG%`3w_ zu*oQ);;DE8B5KXxRMkHj7pE7Il>J__=@80tK*5{tz{KiKw zJ6=SuO`b;XBV)vN3-B-yPQMyEEF-Y@2pJU~m6){P#n-mZ%TG2TU}Y%8#ln4|cn{Dp!WD?6-u}Zh(TJxJ57&<2C};xux`)vhBDbZMMJOY5 zlr^!33ldCPQi-jQZ_YPC@T6|UMk3eBuR+8Ez99(#FEHW3N{_xH)H~u-VdW&a&Z8K` z!^%nI8$tMY0Yk#E^AT+Uy#cW=1_7@nxfH(!Uj`y9psoRqSr)52Sz4NcbCzJCF4Up< zRj7r~N_cE|thK#^giHf>l_{joPBxp>Zi#l$jTcVuNf8`#FOAbAj>a-tu_)l$<&b4y|K3IxU`WY zhlM34j}94u?-;A6;fn6jtf6p_t6b^f?dv~mXh=frPy`?y5jrL=ayV&+TsP0uMgkL` zCmeo;1`Zt)8yY$svt@%r!lEMZ?BNlBiJ=AGp9SLD%M|WjzW$VdQ_zs8;X%Peg9G8? zGjvomqUBROEYv2ja&QvE*GlDy1^gNj^><{DufM;qk1rf?M?~-)_zmQy;(i-i+B!H% zNJ$UcqtVkVaHua>AoA}U5Hb=4b>vRA(1w;^VI3vTt~fQVXjH2FJlqK*rBbRq{ot~z zZ&6@qVrgw_>)?pMBoc`W<MXB2>P@c&zv&V;>_ke^Ii)}oY2Zm>k2xNl3tU!f>w3)A2)sR z##i3?@YB!t@BiY9FZX};`M#^SKH2}}{?9*0qr;ymKi zB1So*;LC5w@Kk|l1@{^`y?FKZ*Wdr_>%&Kn9XoWT;`q^HM~@yu6y_^c^=O0YHA zjo%@ZD%jf4f}-V{_q_e_{sZ40J$$C&^wHx-j~+RG^3;WjI)xAxazjNa$X>V*4o#lE zXw9>@<)44`?bl^@zCC*U#F3*Xj(m6L63Vf1zM_=0hksR6UeVHLcIaKmaP3j2j; zO`N%K$%DOCrE1EmVH0MwNFAuReHp1u*udHItj&6tBF z54Ce<6soP&aP>#g9)-SGl?q&~nsh`BXGfpV2(nx#SjdsX-EG_%4+@1r>!L-FzLZA| z;eSCQyQ68iMkaZMDMoFa!ISc= z_VGj~JpG49#Kom#r{zqTH6=eM6N}?;Wy&$u`gq|K0U@KK6Vvk$OLf}n&1*MpSUer^ z!#pLPln3Q?4<~o`8-cZx(=&3g66efkR?e6)wRrjRnG>dXiM>j_y*v@~!qa!y=(wbm z^sL;x$%PXZ&MTNPb=uS^MGJ~2dAoX3UX=l%k#SftYwXyZ@dbsm=1rO~apIIo<0nj? zHN(q}aNh9TEc5m8@(zZ-V|-#-W^V4-aRqrr6UOD`=jY|+=Z%{<)7#0r#s|Z1z_750 z$XIf+%&e@;?A*y?Gqb3y-ps6QD!Vs-vaf@0y&s~Z`eMKiMagKimz;tXt{PKPvvO0h zpMt}*jNCkw)cIi&MzeQd=;*Mph?wZOxPO#;SJ(L$rg=lew z!Mxxev>Y}N%Ji^At#Kfo1egEvOvKqwWK@4|9CPJ_v5?%X2eKR7u*L8Nb zb@xP@qXrw@7#STE8=H`rvFw`*H_B?;TCvE6wyB{RAC33=`YP`ux=%}EEus>2_rzGn z(6MyPgV?Cp_@tDCyq6Arf2R?VGTK@nHa53WZH)*XUyES#?L7$4(~fhX0vmf3W`nrc z_~hiQDZ39}DR1h;A~9`L0RQE|5u zlTtDYb{+ZgZq-9XD``g%jLz=nzPj>0TY;Gqs{#8-ktJw;-B*M|VeKb9Zl|c_I~0CGwJWiFl0fBql-3Ow3#T`MH}|sPbV; zOLIpX`H5w*SPVFG?yf_Z%c>f&(oAbJ76EwB zf|yesZFOyZ?aAiJR3eqkreaGh#Sb+-Eh%-}vmc(iT1sMqwAS|YHCMN^w71lBBB+0w zSz32WQW9b%lHh=XlrqF4OhZ7vjN+~TI(DrRVVGJT^!3%;EvqWk_I1|Rr(kbimE0}=G1EMg$)Gdo3@Ytb2F8xDxmfrw zGb=L#CqhKQ+}WFVzV+TmAAEA)$k~e*&K~8k zE5s;_HI(zmjh#4k=IohMCtz1Hj>@CPQ7Bq7Hm|TSzhL~t3G)^%S-o-7vsHY4T?6f0yJo|d$qtimPMJJ;(&Q=AXD@^vzV_+0YuBt^v0~Y>5NmkxB9v@H zlT)S_EnNK6LM(dRx^Th5`3vXIUodapiUrhyo<&O*FTy9aP&a?d;3@6XX3krQJb7?vmo-IrA1Qm^UA9^XE=?oZdNOR?(a}h)zk((G?X_#nfDC{=<1#R=H@_ z?AZw0IcMJ7dDOhRnbUvyGMwH%WA>b)*|V^$;%sVm-7J)zJEyp4!MxcsX3ZiCMiLg7gu~=Bl%x>o{2JMqV z^en;bo|&^}&z#N9*3ClCsae%!VcxqmH{FqQ*2Ll76f%JLBGbZMyCPa61bp&+G1MZY{nOGDn71?K@ewWemgD?j&RV&K{EK^ zLYf6Ul)|Zb0yNC`<~I(uvoyq&fJy;7#Rmm}8wPSi!Zvy+6|RG=O>uv5OjfX?L2vK` z5?&KR?5mYh*TGg`Lm24ZgmA)!tj3{%0e;>dYPri`Yh%zTgx4T>Sgj73p$O0K>*WER z%f(TMAk(ZdhyXF$IC4bjut0xbPn8?ufZACIa90?Dm`IhL0OQ{l!J*!F;^5MfG0E7sIS7-%8Z zf;PelUHFD%LLu~e3(BI?+``n%5?4qWqLwRPz|FF>FlWs>kzs)_)yQ!ZRMwHDTA=%u zp8b0N=lef>=cT7Md_O-a1T2V~)U6V0xHQ!@)|Xv8{N)!Pf3WwJt#6)tDM^Fyr6jk# z`TGYarqDGY92J+yLjTzfluH6#|tZG7iLF7hjeq3(K5Jo%Ea>O`up___pV(ycJRxO z_r9=Z?$mLSDp#c%&Q6R>M-*ceX{>9kzI^)lH=n)#&z-9ges?q+#^nmkR+r0bD(>Au z>tBBS_MT@~&Yh7NDpSByN`WbGa_U^&se_+?`1Y&Y)-Ie~7#{$?cA{cqVms7%;*u^= zG#=dl@dt11*}fhz;B&x9tKnFLsdqRr@pY1m74`pm`;C{jKD})I^t?zP)Q3tB=7>^a z&O5x3l+Mb==eMq3zGT7FtVn;*SqjW(XJIF&6>iG*1@np~=O&Htkio49)Af{?3y=AL zDoV}ZvlnWtSXG;q5)AmnpO8e%~h$L)g3-6D5l6Db=^CO0!uP5 zjffcDQ9$Pf#;cZSh#np)D7x4~ajpvY%wiWY6WctY6%)l4hnUnyJfb|^dyqh$>|Pa7 zg?q>xdk-&) zdWyXor%aqsh&t)Xad0gfg(VI6UJM-TCEnDO>d6xd#v&Ygazf0QQJPRcZ%^pVSfIk& zOX@{Ut)DWHbRsP!F)k`>BIWSyy^VN-( zbW~>qmfQ#l^7o_tc>WT?hrT#t8C&MG?h@SAU z(Hf|cR0uVsE0mlfz+dK1jbcaFhK<5%PNAC6VZ%d0hK7s?Mos{@Q6}*2FLleuQ%3Sf zYBeKALZ@scRfhzJ4kcCT04h)tU>MpxLIa%=YGWtn1`Hh*{M+36ca-ot0hP(44eASmUj=<6%w3@zZ^mKVFxe0N*amek|?n=;^@JNA1rNqU?#>YbY zjExb;lyvrVVvWO&hmBD4y1U!zuN>aLcWhEZB3C8?1!J6Is=7K64pQ4thse1&-K`5p zKif4WDJ}&qK@E)7CL|@qImMN9xA*9}5goD>df9`!*DoD>c}ikjLQ;A{EWT)v6{JvA zpSDleR8Q8PYpE-{df}Vxh1nTN$+6JCm}Dwdl33Bxr)|Xoby(f5`qp>HKiDuKJ25#4 z@#vFNlao{FR9$kSQ{sbGM3}@nc})+>ub%s2S8-NGavTa!sU3){4owa#+K7|OvD_sB z^WLwxb@A{A>kCrSlcDA%Low2qp;N`l^<-RrP*HOE$i8Q16^t8~o|ckEr%_3CS`VkR zNz#Y}cIC>Yqx*KuADfW{jVCQFGc!FcAt4275R)QFd-&sb$3K62=gR5ha_~f_K+WsS z7&|sY-&rb4o0^=S;gs>=JAOB5xw#oo^PDovrWWLL zzgq-Jhu%YalbxLbwF!kXa>r$7N;2EBGO}`VkjimAwK>_D>FGJ3v-0w?GSf51=7C+x z5@)qTy~@glI+c|}<WnlQeAD(EPL<^`&3Y@Rx=_KnwGesSk> zo7XOyH8C&05IRpDUUY#XPxs0mYER3{yLUdfY0aV;6Y>iu6bK6Bc|9+^xO3+YYDfFF zt=l%OSv+H6ej%?=SIYXcIn)y6UXz$D+=i?51!ou1KoyoPeV~z zxpexZ36n5}O&Bj9Pi?H-v~lAz>(;JbwPp>%$77+9i6m1wfnNP!)oSP~D_5>ry>i*& z`B;o#>XgZoCQX)4rWVsn>YiHq)Y2tOmn~f~Zw{pQnbU|ygsl16g^QOgrIzZ5zS6RA z0n`kvLojVB>dGhUh|bZ50*j#7%%8t-F}=8F!JL`XrYNWM%$+x9PBC3f&*`2wf8nBq zi|9pNb7xGMGIi>7>GZaF^XGE<0<;CHSXTt4hML_qk5rvHT`;}$mpaVjDRbu*v&D5# zEI7qsE|x5qv!HkeRGFF7OlH>IUn((=rxf#xdx$Cn{h}Qj%go~WMKfm4;>}VPQBYfE z&4yYs8x7AbCJF~TO9I`7n%z@03knZCyAwH_a>AP}DSqVN2wC+ny)+DoiX>v5VnsGR5o~A%ks2Q)B zfc?puDVpi43|2q>CH|HD$G^wFw7;TA^Y_>G_t*CKukFwL`u@@{>~R8#{MvNH72+zV z&;O}0lFyJ(0NhJIJR0(Je4aDmLTSWDKN=ZKkz zh$sL`0u^v#6a}5a=h37pTsgEnsJ~b;0%;7x^n$riplimY6^2#w;QRnb57vyFEtu3} zctiL)H1X#KWP^=zcqBW^bu#%NL@6Vo>TxW@q!Hqk>_ozhITHPhL>t4tslo~Rmt2ks z#sZ~)q|l1NP{a^nOaZrL7K$9PUFy`Bj-pm;v0*NW89bWR!D^kmno$oShQjdw^&vlq zOr?l;H0m2B>XH(j6LkrRgA#io6N|~QFj1Y{i{*lxl65J`j>*~->|0_#O_@feYttZK zny2Z~)A;0#CT|XDS_pjUbh;o-myyOGDMJYb$T&lnnZabJGqqsWGw2MnOkGB1aHcLR zlgS*CrOV9X{TCoixBmI%GmVc=oy4QbGCpvyF~dX+rh`15WQr^1O=yh_8Mr>R!8i+EbRI+kxj9IfzZ;)&*)fc4=aqn0rS|Ao1uXq$z94$ESdGd#xkP?CX%5RYdJ zZp;wzy6__s7#o6t)KMTUtkw=|8_bjiIP;}(q zn0J#8HzKUC#uH$YGxiBZi7fO9q#ohn5ETT6;5~WmENCsR8cX7XQDj~SB8}lU#G0^# z`@>aplp?MVvueR-(&V>?sBa_>#d#nmxqU>PK?)+#@F>h|q4@T^F48-s7~`lLJ%nEp zZWp|t5Jaq>P_*U>qyL7W>nNU<^pXo|hBxxVrg$RKBO7!Lzi`q8j3zA47S(V-dc&Oy z{y^L@H}sG*UqukEE2VF;h;C$z(XV zrvUNfjyHt|rlP^SKt>2BEMI}SX>x0M4+_fUM)GdLP7$u@J_sYc5b*%55f=~4mjnGI z=aV6em3NYHiToSOZ-P9+R63kbipo+Y=qi$h_7zevL<+f-^a6w!gZPSY*FYXdI3uu4 zm}n3LhBgz-z(X?nhj$*BDny6^-9(dNPpBUhQJe%@;08!q(SyPyZUZSpDeVy& z3jIZjF^;^&cCOQI;mO6miGk-g-cJkqA^h9Gx}&e|_jR!34I4PfTEojrNU( zYe6hHosO93nCRHZ*ytGF7;R!gG~z(DN5w?NMa4uX#Km~TP_Yd$ammqOG-6RM2K(`` zab9t?u_>`wFf|FpQ9>MeC2$1E32}Iz;gb?=5_=L7 z6B81R61$Ow1S;`949|EaCnaEI)kJ(IC*w0Ikx$@&P3%lc!~y<|6K^KPCnu(0H#r`a z2NpJ7Mf$rh$vireTc8lQIk z$A$#9U{fZrMd{yqKu~07(OEsj_?xBvFTgS$WF`Q~uVI-J#&Wa&A)avpoat|Xnk@!w zf?I|Fli!6m5rH*=Zhs!%;DZap6Fe8WI|C!nnr(1r}+9t)RM zf+qkh4#Y(GG{V+BkjF`&df*~LsukMp&xh#-_%#4qutA9cHAcKH(ivcwDZ~Nb6M`+^ zjvI6M1pOk2Wb#F z(6Am-;aiI|OX59D3fl6u=mMYryO?J2YnUc>W2I()4%Zx|tlZ?+u}wmd$MiPyw$ z;MecMoQS}iOis%ES)A)2kOJHzb$STUAwnU+raE{^0vMGFpxqM?*9wRO5W(dTkZ42@ zYXHndsA$B26PE{^g3qNMz2G0IG*ol|{D`TCVAue3=~N1Ry)M!wnl@3edc@L_1X^hf z7~{Z=1*RcO4Ua~E6gFGnnW4%8`z!}o99RL)Sb}LrdW54@JYutfbp|sb-PI_}AsuF~ zyBlL8XlJNqk!I=MtvAoux@(D}V#NPCv|0QLw27nH7_&bIZ;ml+oXM|4oFq;cA7}a- zIA8>Ka4?uJ7CuUtcg(32wV3+9;ZR+p{y6HZdw5w4U;W>{oW87v229C!iVSb}jz ze+t@g##k8Ry}B zAw`%HsX{IwFht8iz);E_4A&~TiM$KrHnbYp-fNU9FIdQlW`rEM4Erk7mB|?ZlsojQ zE(LMtCN}k6q#DV~pd?B4~4`;zSLDZ$9Zn2k96z zI4N3&u14Gn2vQB8Qok10LfUpi@1!JlFYyrQl@oTUONs7cKKxMZLF3}~I+3OXmMJ_H zCdwWTY!Jc$G3+R%L?Kiff_M5qXGV|?jPkuuVyGC4Xjx1pR2XO}QL%}z)Z!HrpFnn? ztHj5+V5Dz}iG!bO4E%l5pwKWeZSg1wvv&-%8fjc*46LOwP-aqz^DSNpNpW#8@BxU4 zj}s6;pyN2-*B%(l6XQ(cx}fO9#U;j5@ihsFY0x=fMUO*HTrAN)hBtC?C95vl1QQ;u>&nYtxAbc zWQg(vg$Ol&0*8LJs)e*2ht{DK>CdQ3#CYEY%PX8$lZRpt=f$2MQGrsav`%=nro(p@ zBYkgba+*8g)d>bpkfD|BZ(|*gO6s1DnQ8 zCwB{V(@1qHX(--cWz+rtU}@7t>*AtAqct(Q#F$XL#f9Pt#@pZKo4?IB|HsTXf7`hK zD{b6me>8+jxGDZ{Gr)v@%#FwVeF@pvd_)b`kkOJafuq42c-LSc#4%>YYm^d|Mva;A z9$1K*%#O#F?Uo6$ zwX@BDdg+7#_4+LX>YY>r>f=2I)Pbc2)FEs~qYbDNb_UeRZw;vHfdo;bsWM=wUPN_;8#ygOCOq8{ZVUls z5w*1o-r$IIVBlrYi0Sx9!gqsDywQ}HvLdl;ao9t_nVgbPtO4SVVTCsmLzW9$izxlX zogCI7k|ag}tZGMU!26u?L#0l{IxxT|iWzYyL_x8E3C%ZXHnDeu`>Bsl;D|A)(~;PX zmQj>6fVuRvK?7x{4)h-aN5jyO5ea!qUj7_Cf~5&rxBvt#sAX(CLNH-2EN#O44bSa) z^X)G#T)&2fI&t^076Puu;65V>4ham7nXqQp-cP@6&IOpSkd3Nkw(#y$YO7$44`b z0(D4GQ2gAD&+UBq^?&U9`ob;hR(p9>WmR=eW!Y^?gid2c1A}t2fMI@tsSBT8yZyyo zFYmwb!^uO3PF||4Yi@c_RbE0C|I>#Irl=dZPxzt?3`Bv!enIJTm#@PMXQ#*aP(g7H*epGIECaza*4;Y*t)En2vI)tYsio_+p}FV5d7t-Oa7*~|3z3Qs*Qoi^|s;^X1t zr-_Kk$uC^7d;F~Fb1*+?&4#Ue|9$T6-O5T#O1W2wQ*_}Pz&4;`*AU^tYM7s=hp%sF zRO-YTi(Xq@Flq9%c~320z467*E|lIWt81)#Q2U^!|9kAOL>VZC26=k;3>lp?e#z?X zduJEq6yWPwu=3TzKU}MP(9+iMpz7|eJ7ft+{03=*88u`JbO0|8(2J z{Or6*#d8+zI#E#r|5iNBcW&Oeg($~Z`;nrrq5VK_pNNE!!$aezt$g*X*WY;c#m$Rm z&RYMklh?6)d};l?(re#ezj2u{$It(J@{QnWG#%#cGh&pFhetp}e)0C*OQubpv-ypE zUtGEJ?U!e+-MWX{_2Zd~m#;F!Ho+&srdJt!Kth!aLg#`%y?Z}Ce)8)RxUQeQ5MLX?x($N@Fi+UWdq`wj;p9bYatd~S z`(k!<#;OBn&R(y%R(|aDJv%n-IsDH1lm&GOj|E5;1DhcMzP?&Vwt5cEOo(9)3zR^#cN1(+0k9C-?UA4j7d>bLpEG4lKlcpvdr; z&lxq9XDv5V(lm^%Y!p_pnI-YEl%U>{#!FK@rVu*ePHys%>G*wmOY)R?-c zl)3*tcmC{+>dTkDKX>-?L)Q+z$XGBPJbVR|fqjrSg;4f)0{jD)@0(dzoRbn49uYAn zal+OU7f+wMdGp+bvlmaDKY8j-3F_QLP#6rOPPl#_%*g)#*n1D?Ca$e**rVcJCHJD@ z-U}{ZQv?PZ2!zmkFeQW@2))*dVd92aQX>(@g?0ufS&$HbZUz+pLjQI$XGcxp}abY{}Cd4JDlw~GR3GML- ziAhN@*`x~?`58Q~oMukpXe=9bQ7T20tmXwl`nv#^1NF^$gX$CYr zQzRa%J#MADpZk(MgMvawkDp0c0zR7eZCqMhTzq_iFfmn?CxMn=NY4g*h)Nv&J+Z7m zc;DE7(WAyqo%{(F225Q22n8o3C6?wUrKYB&B%x)Bc+zDIGWe?5V{w|N#O<@ygNBa= zVlV?(!noNxUMI(=CncwqWhSO1C()CrWJMC_rpqvraPj_m4ESPd@R*O`f;|)d10B>)P;3Xen9r4VWljqEvIcxf72cwWB zHAyT?O~D;WOrnyg6h$gJnbf3?PGk7@^Y#e+{G&-zrq7%{Ywo;Rv*#?_|2jP-D4H zl8#(S>B$%(s_?QBhZZ$8XMZoB0n_J=2bID6dGo3Hb)U}r{ENen(Zv}Rg&A3R2-49h z-6?6QxU6(2B=CO$X}z_dx6go)pUuI-*v}R&{Oq%N3l=WfbnZ=hT26UxCOSPeBRwr6 zjY=~hacrSdWHIS#dRU;*f8fkT3$V;}(W1{khllp!FLz&hm5@~!AN}&_ySS9}^tAN! zOj!Jg-qQfgnWBN>z<b8@#R`-EgZU6SAV&B^_q37u3cRIX#M(48#iKoEp4N0^VT~*e7R}UhV`3vo_(H~pP7Z;>jn^wo~R;Vwwh(& zfWe>4Uc74U#*JIHY~H+S(`IV3Z0pW@m)C8>{?=V5@22Nu=EE6@1|BciNEu#%f{{}{ zTe%L4e>Jwqw(q(3)8?Jqwr<_=)u}saxw(Z%Nr#IU;u#nX7&>G^*ot*qu^xCkbGvNU zS9h;$#Zu#~JNBM_lvR*lfTXyQlni1>Q_XHb(3lyER&U+DYv;~g)Gpf2{9SwQUfH(y zt35k*?mhcDx2RA^i~xW9pq~+qfw)OA`wbdCVeS{3x9{Gyo4K3X({S(lj<0s_-Lw1P z#pwLP;!+M#sE8^~;xD74)p{^8FrYbuLKqR4aSTH^r68(u69y*LT}LW4ijSK@#0XAc zYs3cHF{o(dAC7T}+D)S)zJeNpOyex%G5pnNTv`X78k|BJ@DU^a753UtGK?q~$2lZF zLTREf>=A}x1_DTeD$WOB*D|D7l`gYw6m5 zC{`>DANldbdF$w0x|lqzptpi1g_lvw*ehiGglRLUV~zamxy$!ndqY^j@VMaNgmD6~ zBUo-BSW`0Nv-NvU{e1huqbHI1B_dcNIyJE(6b@tRQU=q|XWZn8(-!SGclTvXaz=Jx ziKM!|z8ch6B3M}PzH89*{5~E(Ve+ygcb-PXCnjN(OU;qg$?EDfI2t0j?$Nc<<3ePy)RSk4;X?EG(<8 zsgjm!ax_K6@MAT6>ZD1_zP@t(#-023UnUevE5OxITT@#jEfs3A5oSz7Q>3M-ZaZ%3 zxCtwdUp)8I&1*Mf3QMw+6H{_)o7$S|s>;OL`r34@Ol=))Ep1Ignnb=`Cd`;P@yp}i zpSy7RhdW7y@lViz@WfJSjl8j`qC(q1yIo6D3t6a##y4}0ovGbWFlvi!iwlc&$0 zyPh3;=kEPyFJFeo7nhZn$(mZqwe++)kW3TVXxgn>I!r?2M$(HIE=^!qNPL8e~Ok4(` zf4Y9_-u?TJp1e&f$*;&v$kJiypaW0?8mOf|cm@{U%~`W~$M)UZetGuIsSD?Syz=vn z+jkzlipi}g6Q$?p>FDbybag0_NmoZtM^8)33#*AHOg%TJp$c*#divTrmXitB#LUI3S7G7HolDz}e{=HGcjtfj@uz!{ zdF2%~)#8$3iJrb5G%B4QT|IqDKTq30CwL<4xs$>cF5R?wn|fSBd#3Zv1R-Aefthy%dC~j zq1IQHmlPNE=3yG-vWD7EGJ~Hoxr$uHHGiYuC}A9*4(BByn$3i%P0%B$A@6+(MzD zp5ZGrj07szH_-Ei3s)Gd;WOsUU%mbEciT2Bn|~xplqD`rOD`4{Rc53W6lW(T78(7< zNk;aJ3<;T7G|SMybkwxTvu1i>RK)yp>D-xX z7cZ&upuL9p8#ZMUD3T^mU$%PR=@WM|@~$qPzhe2?)q8J8B_zK|t&lW`Q?Bj)YVRQu z36@0rFhqoru~_$4IC09v>7T9Jf9!5y+DREfvNkJXM*{!g)CFs{{Va_BZqJ5Qiv?*8W|_hQ{fL zU}DO4m<9&~uqI8JJMU7)t?v))+^}lNvM*MxJrbFpn_VKy&&kWqiAk?Xy>6m!(rj!> zqMjIgPsKA%O)AE!z%#K2cAwd?Y1QK8xR^cHvhy=D$|`bla|*KyvvaDdkg1zZVvd+( zvjgCThjo9G#_oBsb@`4XYu8|%)~Yo-FGS{LX6MR8**Q7c*}3_->BXjcghQP&%{2qz zdeF3~lcr9ZJZ|-iZF84y*a4CY@MrA!A-NzoD=V)dCp#+}8ldnt_-lCWEJ9 zVeYi?bM72nuwvDky4I8&^*mozlFbh-4^0M?yC_Gd)l|yA4nx$EonVXxM3cx5cX~M!AYd+t+ zcKwbWpbgoy{Zt&TIVUftT9koip<%hXIl1Nr=J}T9W)^0qgP~_no^aswg0-7AZ`rwj z#}?32UdSxWD$LExt1ZmQ&tv3Kxr#hJ9q9ouygmW zeTT263kz`dWmS231^M{}MTG^(WT9t~Wocz$X=Q3@?g0zvge6B;tl7Tnz`?JM?BBV6 z-#2#(3X1ddbE_(I^YRM{3X7w|}m9J!Gx&Mz)1s4c_)!h+%gVG;gW>RF~(S%bC!6!+Xua4+ZW-@IY}k*~i#eDs^I zK_YtLZ9#EfaZ#NFmjt3z)Kyqq)R)N$5&mqfMoyVDHEid>EeDSs{|3t_PkeLy`01O; zCBj0HtR!C~6c!5$iiE|*MOJ!NbZg40-rB}$;FQVJ=6!kW(2;LWoIFK8ReAE%$qUbN zE5s6+s7NR-5tj;!MZhMk4Xh~}$_f+;)^1oyI`8xSr%#eu-XKK#<9G+KP zR+W>Ll9FF6MtW3bqi;iT(!nTU!?EFwpE@IK*_LDHzd!r!x8Hqt_ACf+&Yi#h>`6w> zFL!UDx@#T)}p7uNLJLFaL1y;)RPBezUAatMmR?&YQ5ynp}UFApBQDX6TJ zN>Rb@J_rYmPQlUu1Qp`*Y@MerShX9Bjt?F^e5C%U{$63u-3JdILx+l#)Kpg0a4_#6 zAOTc)e5;^w9@K0SQ6B0xbbLezfzq#lpAG}?G11?9fSw@@vx)#1s$>Y7rcDBTVE(27 ztRC|QkhUUrEVwwaU<%U&=;*XMhB{%Cg>?bMBEWNq?+}N$0jU%HUPh+DKo{X~N+?+X z!hj~VQ$tG&?nMaS24`7HU9R#;($X=|hYT<^)YgTL+op>`;nAdtR5hB~L_afNgM8IF z0HlRMt~@@{P}*>jh5xDs2t%qgGUAv2e*2iSSw;DJ5+jw4kkYSLiB2}%mL zCvBFE_trA4F+-@5x3x647}yv{^$b9SYQ^)IdG5}Ghtb6-zqz5lK`yJMYCGy% z+VBIZgnAl=rX0sX8?HZj93_-i*T5K1E|yf+*44-wo0}W!8w_m>h5EXB)}GT(K7IKz zxlC45CY2Nkt6G)atsNaGrLn1@4x!8tlolIwHI~8Imc|l%oab~eno+m7oR#aA$m)Ev{aId|+ z17XsNjakN4R%VEDX2i0wvf#MRxc%xas9Ll03bHeW%CbzMNJ2>{X-h?^q)y)4-B{89 zRUy^b#KHo!v@EuXr8UoX+_~`BsCOxunb~>y$sIMBBC)8nyrMz^((9Ubc}GQYsfmF} znptlaV>4?T{($|jV-q6*=4WOVq{!>ja*GSaVo8}qBoa&Hoo$U}@)|RJvs4o^RojeB z%{aE+%kGEA#lFkT%1Y15ko2Ty5b;nVk(3mRBw$(Ssc-CPCGyqO9Lzl6&b6?%besJ1 ztLT`Rxb*z=^n@fuO*H2E#U)~KQC>j>*!S96!2r<;S(Ia8W&z$_2uo{gp3ljb5i#+x zDXFPB>2byF$%UCYg$1HgVZK-_>jcqZXG2|mYm2qMb*H5@m(Q`LtaG{OwujNtG0_om z$;nx1S&jKAxj9*RLb0%*P}bOJ|#UmJiDEc@wGNIH`LYEG+;y}GK^Fif zM7@rafN-O=LEhceR96kkM!p`O#$(v!IJi!J6d9MD9v&4L9-W?1R+%0fl~7dM*{M{P z<(JDFI=h-%8>(fEEqp_MnH?kw-=+VWhf&d~QIXM!F_Fm`HR6F#c7tg2RaR~Kid zrk5AygRnQn-p-DA{W%4lcpDoR8y^#smR4MnUanNuy?mXRn30rK)7DUvSKiU2Y_7?S zO3Ti3(sxRAAQ9A@+=g9=h)sxzkBLi2&C5cTTX4yv|ZU6|2jSu zc_@c;Cl@}vRw285t&h%nT=KfTg|U;sj9AQuc@i82k~WXm89NN&y(h!?&;+dFl^hi z*qFq`*vF~L^mnOw!nCy1)U5P$QCnvt3|&g8TvlBTvJ`num8X$shqv#55j&s8P%(wc zZ{8{^US}5Ml>@oW$;!xU>>#u&jfzTHeN7FX=mwe0%fL(K?Fqu!5xXA8#6>1NuT;h+ z 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ⅅRL4q!P^X#Fz|^mvnLL3Tr_X`)M;aEY^;cpmZK1n(O863rQ(Y07k7U;d#m);v3(ns z%$YH9Y9LI%h}~zy5lc!+N>L8R_tdA?u3Wu*Ha6$PuJsG&!fx+k!?i&)(oR4?r4kG( z6(u=uZvTAs=bwMPCce9QB|2#OU@IFQYC}3k8IYCI@|@?_iRJX>ck#(vmVbuF)!l|q z@q28zJR2TWE+(r#$|M!SsC&1rU%z?t$4f;A7SEY6L%_AS;~)j!hA)OB1DaG`T2_|) z==SYfx2|71mUi*eSu-ZNTJddpd>)r40&a{20_A1WisVOkf4O_}`j5x%Jeo0URv?cL zR(`H6%(A7hOV-s@RaDfK#y@@V=)vu4=lA{iVET;Fu)QJypH~jZ2I~wetLh3PpFMu` z@ZOJSHa+=q(sXwoAEwh{o)gdZcP3H(zx-+=+6u8>!ZwMyF3muVOKSml0&&uZb^(d6 zO>Cg#7l$s#WFHBM?==O_Nhk|i@WMqhic8#TNhu7X27w9z^EXdMBSK!1i8d^qT3`c$ z^1@K}P?u{PnX)yJKubplRC`G7sV?sqGVPOoX4(*ckZVLNdup~_xcBD%fvFy5x^!Ji zTOZa-u4ZE;Q~=StgCos!HDE=hX?CDw4Mad-s!mJgH4ySOMK>mMjPy}BeA+Z2;g~vF z3@u8Bt0jfuP%f2JS0(M3=*nWlDNolxM^guanWkl@BL#lj)LxGj7~xS@XE_+^vxvOb zgWRTR+v!T{nqZo2ZLTP*tEtR9HpY&{hJ-QD(bc2r*%?TIDG?iDOM9ohP9}V`z|mCY zilwhQTipn|Ca~Ks1bC83r8VhW23ne%BJKm-kj~;7mUlNbw>F~qRs_~+C@-xlIy=$H z+yt&lhVYK+He|7gBx~(J=q@>MvZls{MwwJxRr+M*V0#OU`=%yF`bLHr+C^9t0zj<+ z=qQ3v)mK-Rmz5+P2)05*NK<1&mNAQ@0bto%xHn!Fr4o3v!zM;Fb zv#Y7TsiUPNH6b}J{K1nfWqZ_}FFo8WF_dt)Lej;Z%7&WiPGwV3LVRjMTx`^fClM{3 z_fL&=y2NHvzqdTO$=>l+K=6H}9tV_-6hd-Yh_a&3i=70;TCCL-XMjrp>M zSQsp!`leuMM|^TrOw{X_4cT7>!FI;y@P$o{-EFBAUGY(AY00VZtxr!&NREk$i+qzK zzaHvCqRHCWirZQ%3nOzC2{Dynij@v$*6@XURiA93s> zKf=`7la>T$u*NuPV=^$cjLfvuq=Z;1wmBv?AvUu3)w$XJ&Q2UBVFKLw)1rlKShtV{ zw|PwAV~KGtHaem3)%6wq5&Ff(NhqnTE>4NbYfewbG?(C5i3xEeQFwOd>j#?!U}dy% z7AjlYn~Eb-TCx&SQZuqsvD6|7U5<9;B)@rfU<4vz*tiK5uv)eyrBr7pV1l26IdeMT zfVhO%^wij>S0{!cz#B8d9{tFu&%UT zp=_?G%uT}l8$Mk~M3!8jKNDgi&W-Fx5{cxEHFBl0sXi~QP@D(7A}=Q+B?W6hq9PLF zBEBE(>&5XB!qiq<(VcO?d&hMKBIWmi@< zBsl!Q3iHtQiRjRd#F#f{M)~=2d_}Ta3_+EZ-O9$?w7dc#e76d7aHG+q@iDKChpN)F zH`dGRn;T_KN*R{)L1vPfHA;$)Pl$bSWVk8~hN|XfjD=`>O;k#em`r8z($VWk^Xx#d zzaPi12csFSr9v(P5U;FG%r1h}L|8ygAnEN-3|GV2YKOl9ZYj|K@Vo(4at0ASEw_ z1q%j)&X$(W`bK42VG+_~Wu)K{d~ssph#+ndC8sr&H^}78?TrmBh$11(6qUeb5Lj;f z%Z(w!kU~VPfH2S1*JF~?t}Ja+=I53ObF$K5(tH{=45l5GHy<>kuUVu) zXe13G19}OUXaanbt@q4M{Kh#(_}@c8|9n<}KH5q8i1Z1m0&xs*gv2b+#HKCK5@_R$ zjzCwShu`|x46tEFyYruBoc~{+M>AO1*aBnxH$fv!1!nkfF0jCVOM#WZT3~}S9BfsDt5!O{@L0 z2Np|o;RfD&hS;0IBS8o#`krH0T409xQ*DFznb2ui?}^kZAcdsrhP?(Li#FDE!|-DS zt4L8H{lu@}C^sW#kE*!87b<)7HLswC2z!3x=dK=0^Lr7CpmL3XgLP-g_H~^aw z7$qnWzYwejsa0<6s>Tv~6Ak5{T4RzAt2*J>j%rCO(F8&);e>o$XbKkc;Y03is~RhA)FvhQJJcoRXeadQ8dloV-%=*$;loyFo2>scWj2>XNG0U z9@UwW(g)Lf;P*a=j&{)f;22La{SoICSMf3VXF&{M+B7cgks!jPY0&K$x=7>#xxXE1 z*-qL}`c`u92BN(VFj?9%>fcMC-@ZZr%wXjF_WQ5*2<;~^jkUi|@}G(^8jESvg?E%? zq-n%t)&BN6{F2*!=7t7d`ZA>$!Ow~;k#wKK^@)WY1}yhpWf zXx?LGWc;5&elVIRbz+phVlpU6ntI~kH&Z8(Sh_*{N@iKR~ny*^YGiI__-e* z|BHQFK2aFxwk`bMVBG&)#nrM^*xRc9@yQ+m`wmB22U|NZz}nN06fq#|9USa6?Ask2dA2-T2YVxXnWF=a*})^*348W@zN0&ka_G;~Dt4JQXX2WMxHfIES<6%@0G&FX*vt8Sp_)&;vaxW7#h zt+my`-Wlf|kP5Wih-%U8=I-ibK&ZhDoe*>aT;CmT2y==Mtccy}3U+bVZg9jp+d7jU zbk`ntH)n+WaqA&rP~Eyb-0`i`_lxGibfY|(?g}qYM|@FU3U@>xRd;v7j~-WVcso0K zX?SXSb;GU1i|(c9=k4I#)4S{At?u3J>*MRg@Nx9*!8grE(GSkPJpuiE{d_h2sebmp zOoZI@)%0Zsbitv>-_OpE8KCg@)AVZ_5P-0o0|xXDa0uv7?e`DRB8dY016)+!egQfG z+(2fKRv^`15fG>z=pUpA3~~(`^6O+nF)Vlp<{OF;A%P*?BQVkChftwCAtORqA=HTO zkddkbBRjyf5`x&I+z>sS3=Lt1P@`y}-J{@~V;|ZLzs*pJ{2CRi@jsfgY^5UvHPP|m zmO`f?ybO_iAnk`E8lwwiFr*=^jz|y46vE5^AwVbcLJx;p;e!F`Mx44RFeo7f@mGMT zswMUYq$Js3Bv7M3*w!nqi2q(YRzo2XBq^m}P?{7NE=U?kx~5+x9g&6lU_t<|7)Tl5 z_(;l9Iaom0{3h-+;7CCSO-3{PCeaL4dq}ZNN>5cgWQvAL){(_ts8NGz$4W0;KyQKM zCL~YPMXmi(V>X*qXiZk7e<$c0qiP4 zj82eRLrn?llY!(R>V&Om0BC5{+C-QQO zA!Vds88IOS>8fzo5K_I8QHvaB7ULC87CODw-47JeG?P^@MXBLhQILj>?fsdQF11Sm@#nQQ+j z4k4SdsJtCj!1&Tz1&!TFl?Zzf1$Z2k(i4!{5 z>`Z!$O;x|>CR!>fNi%cBw~lIGB|KfQOHQeTCXuf+Q_WsMX<_Ds9fg^>cAtnO;?l`n zVPVetKvp`L8$(t)Tj&zONQ1z1Av-$13QTjd7idYhQdn9A{tn}D)|`_2KC8H4}7vjaC?|WoNVnK zA*vy+?d`#fPIv5tKy%IPL4D9749;R&{KEQ7Lha3^)qP`4w) z5t7ZZ#fi`5Agev9Q zMufBrh}E5#h#ci&@9OA=08k7B;&XJ?RHZ>YCq0#vH6&rjX(alSbC08k8%K4}lEiy5 za8r1AYV?X<7f-so79_7LzBM3oT@VGF^3r@SZTopUdw0RtwjabP5w;8;7hi>sFY5zw z>*NdBssj<*D{LM8^a6g9v(5pE0T8LZBGw&00s{l-M5J!&!|y&5D24z7bPT2mdV)s= zvx1$6Q$xE!)Hd93xNAt~=;6U5MuhPGPQ*HgP$SzyAc;qYhJ-+@(%uVNC)I8%q-;p= zDDb7hH&`(Wr0m_J5jxx!asU2&Hp-zmkSLZwFke$cfPVX_g46g=I%K-DgtndD1A+SM zv=h+?K9t1>?*`e|JGX?4g@hyygMTHGt9nHsvFfV?FytH&r6~XJWpanQ%HL2Wg=v_B zLTV9_``4mbMnp3ynj};;P?fj2SAruunLMf{q@Xh*E(j22`m_$nX)MJcb5Z2_b=KM| z#`RPaR-B`0s>HNPM*syUQvQP+Z|#-iq}5>iLB*<>><6+O(^S%@zZdA8gh;9P@Lvga z9=StgdP^j`6S)R5vHd6U&Y{D>m&s*VlMD`|2>c@xb<)5A*ak6z`z#7e$O$$LeyF`d zUZ3vqMV`A+Tb6sjp+8&^K6Ou-&i+Qu@~kF_|*|K@*@Ewe`wz zNMB4h`)0mazx~%LL1(W@KxfJSI1Pr1@ON54eXmwP>cgZM!kS2Dni2i46@w0yV!&e4 z$)wq+?)TaQWIZXOsdwH?6c!xNXLmsKv(5F`T7RxVK#iazPghH$gc`6nHs zrB{a_Q*2|czgHwE6NRZt&FIx8I-pIMfX0O=9)GD(@W}L=OwWH+E4ZfJX69z5^xtb2 zaO8k8VMhNqlnjo!4U`P7MGq)PSnm}LTe72?ivKn}XZ23V11)J*3TvzWRy4~GtxB%% zH4c5A`+JQ;m+zs{IJ9{^wp^Yk^bIXur;De(tu4=#N9Wt&Fqv@EaN>`ONb#Sl9=}sZ z>=<_4AF~@`kW7&7O31)-MhL}Tz8f@ijtzkpA_TlJo6&z56 z2lBS_b%<)B`4{?$x-H}V+`X-L?*8v7Dw1ABg=i&zn9u)vib_qNqS80ZM|hWBm8A!I z(LZS_9Yj;%li-weNBJLg8b^W>I5zfT0th$b@}cU|3f0A(@8kmAMB~qt8wH7C$wWNM zUd5#iN)p12A$kk_-`8;3q2V~Y0bl4|z3E)AaPvhZ(iIw?B zt%vJP`BFZNzt(-Yy&!|G3UT22D*OT%1Y^+sRS)9$wFmS;3?C{){63h$pid{V51@LX zhJe6s;1WR;QI7ft(E`xGSoVE6Y5lJ0QN_X?7FNY}^_z#xqOs3p zs1B%ys;S_A#3>vnW(g*xi5v`C8zFvF1NSWSG&;Qm=m=^=ghORIE}s{A9Z@;?=>%Vx&+0saF0mG zt5zWOCGAc3cWM}36}XWobhHOU2ivLRr>m_Kpr@(ZUtdE{pdVzw&=(jCG^85{4Alwn zqG8ky9Z2=jBfsgrD2>Wy!7!o>dwvC5WQIn@Shqkx8M6EVUo~L(Mp*&Bmk1ZZb47F+xE`Y*QFj=)iI+*+zz@1^{N*2GHXG z@F2CJ34Su!+Qtm<1GTYH7R!QdV$6UIq!cy~mMOS`jLmU%CV+MTT%q~Bikiw0(q|K) zOeo_H;wuX+jA_yU9gb~e1+GBi&T9$?==V4f(bGWiXR2k=Wo{DS0-UHDsZ>T1C~(A# zq5++ZSXSt!ohBgYGc&bT9iYsJF-5a)A2t>{?5ZFll0mh@F=h1PMCN81y*n0W95ZGg zR`ele1f$BYrWN?*T4?+`kddFICV`Cneg_%3y;tD$cpmQ+I6Z!kJ)hSL8|m}95uFY{ zXnYG|cF}_dN8@$zdC=y}coe{+UTqHiUw_cuR3;TW9^cUu#tmDVZJix3o8N!zc)t(L z3fKoQj_yCGa(IRMJf6G&t?8QhnQNQ*${9ATBQwY3Aj1VT<_S3Z4Vap~cR@))AH$ zgxUi@)MM*lPq**1?Nh!gRd^A>m0VO1k`wv?3LYsz{l;94ZkQ5Fzsrm(R)3)fRdiiG+?;AWSPArl3}5dk5rkb|a=8g#%I3 z9HdUr@$6s`LR>yTP(ZxUCTN#VBnr7xpH|lGin1u@W*0Y4PZvj5CpTAD#CnB2$i2?R z)eg#=J3{qAbwnUR)J=ElhEfNkP#cUxNDA$a<^s@4-K~LGi(DN%op20s;7OSB53wv= zH=2hLwoW&9r_jM}MsD3m<;i?+Nz(A7Jm~Hno*o{ao*tgOKAVyzP%f?~0~nVUHl7#r zJ;vqZ{Q=y?@n-&JRnqFiyoRXYE?WY0(foQLDe%0q5sa(q^*L(WW8|M$KytPgu)SMa1`h|bODTwW+8B`{C6?gVWt|b z{g?XPP-t_&(E8kcRDPpG-}~R-Au1ql6auJ?H0YoMpu#{6=}**-Ui`?Lu8to>nbf4& z(czK7==ULVWQ&vPP*{3_BRZW!(}mKqL+zAG+q8fm1C}x~Ofbel1!3YJgU!$)1^B`T zf}-&uiQH6rih$0>w=2zJ3P-zW+&^P|5 zfBf0+f7UJj*Se?*SPC|4FiXHzHy*%dn)E;*2N*NoV<6rp>ZVK;@}UXKiarD(v7?@jU_&X-k|dv@=v8n*lQ(`IgfdhfKE8wdjf zD?oz`s{9}}rp;~x*+FiD*aHQFTrju}Vh<7s9D=D~ilG7%f!%PcU>gja+~JlOM?Ff`*E_PZz4>sP zbpGqH{~rs}|EHejFtso$OpQx%v5|Xr39($lu;B74#hPVn1q>f&BDyN7GaiLD=yaf3!s>A;q(#46aSO8!9}0p z!qmew(K@t^w2KrPX2Lb&nyZTAa8a0m&$SiUa}hq33yncQ!lrtM`EvaPaGw(daUp#L z0&XyOcvuKGwD!Gj`{6eo!H5VVNEr+r4++!2<`6 zUwD&SOck5ab75u2ZDLyVA2@FIimf|#?cJwJ@b#fP_Ydsdclgkuug^Tn0#`o6ltI!0 zd{d)rgGNo9ziQ*QJ^S||e8|Bghp#?9vH#$aBZu~X^K*u%SctSWz-j5g=x8*@p<^a5 zShHd0R|gIrrVdkI*Pnm;J<@)C_~6lt3E)?T{gw$NHy0UzBw|x@81~WBuvME7n&j}2 z!-#_zbK~eyq(5@_+h;ii@6&f7J>X!55NM&AL&(T!^H!2NQ1H=X@1CAG2Dbli4xhLl zn_J2>XXcX?`=l0{8h^y7Df5=D+q&l>4~4VMx|&+P(kq zvB&q1pP|mQAN%I?nQJfZAdv_dFd_=kD87H_xasp3t=PD0`T2Rq`@q~^^$N_6wSyfVCdLS zrp=kR`0Vqu$Im_dam$L&mymv>YcV=C@GuZeUy25&$*4UwV1i-mrnnAIp4{*D}bFW-TJ(cshg7_J?IkWdHkbr-!i5$Tp12B?hC zP=<~Xl$TP}d|B@ESTySn1JrP`!hv3XzlGI*()& z6Ooh19RdBj2A$BctAlL;tpTvl0RZ1k&Qj`?xEWwrKwdTcW-t)t$EV$WEh)UaLF=oTL&k5o((FaX_OKkc?LQH{ibJZZENq^&%IuW zByci@1aabpI6fON><5o1RVBIS_lX6l-7 zVdC?E!_NT!0VBo?9y|!EWdnnTj|#=JherS=h9=xU1Mu2AIJtTH_)@<00sTh}3J4q! z=no&C0mDXvEuUf{P@9I4g$)P3RxTb0;3o&`@6Z4rUtb?@A2{L;301dHmyu3Ie`^|= zTG((&N_U#O+{4pfuw3B^{hG)y&G@KkAnQv<2Mpik3d>QlPis9B$>-(z5i3XSZ#Z2>1z_PGwWfK_dM zKV7=<;Q4EJA3lEi^vRQFPai$LlT-NM>9ePgAA_kL#JtsZCU!Y+t#beZ>M&@*vTa8$ z-hJ@s`HL6NUp#;M^j>Ds)925hJ$>@*ZDx68WwpI2DVUhCx%Q(Mtl56@^6dxDU%q_t z0)LN^#c!U!dhz1b^S4RmwUt#!TcdKDbAhKS;gv}*Bi_Dy8y*>x zU0ESTdJTszV6jesM}_u4OUJBOvkxICp1gef?p;L0>(ZPzQQ;Bck&)3!;Hd>iIo(O! zG2a1C6@XS?uOpYP+V#y3w;sI=kBE$Xn=Ofoh>VDc1PgO^MI8#Kkh;g&5rr2MNEK-9 z;JGWe9sd63U!J~r9T6Tci;IYgh>WswwLZ*MVeEp{FTQ9tc zd~o&v0y1rM)pw=4X}MA^Z2%6OU9bwkm2z!>Mc>`SCv?J`u!RekeTk5V-Cr)7=W6T< zSAQh!a_UW1;R3AIl{CZ^&W_%LLrJ($ppZicxtX}p-6`cm$d1pfty?1rM@ z8tLqe6$Y*Vm*LJxbMHZkK!!<5nrpqAs~33Kkr8VWTwFceZQW@eH1|pX%WkS+#0BdQ zT%5gq{riKi)5D$TPC#NgitzBn2{%s<#ODYdGnzKKbL_Y=BS&~}kQ+64P##im4>ZEV zcTniqu@h%Zp1EMfqOh6M5FAI9rW9kXw{hGPU7B5-6Xyv+93%zW;D9>`g!6U~aV%F^0Gw08pw_?r01)qJkXyNo3<2NDBU+! zL5d2i5B;1>O@3-79Y4SaJ-tT>%w=Lo31q)N*?`ResE{~_6u-IEuTIek*@_LKBh3hI8 z&R*DYGp66R)@=t zn*Hb#$%4}|mMveoiiQ0T*041!D`?0uWN}$TWN|jza_ot-5(kn~QkSM@WMr<)T*a*# zT$#CYWoDKMCv4Tw%2lgZXPYgiq?t+mfRWTCOHgy!@)c}_WO?5*{i>`L%QG`E7`g{r zJqwiSW7)C{J=3?Z$Xu}^Gdbn+4{1s}a-^p%2Ba-X zgX;LTNBS~-I+s42f$=R{wwx`GPL`!0T!f_#FHTK^-ujY=CH;^ohqn3BCF$uIdQJ}$ zRtmetzX;g47)~A%#F(%p!L+4I(}c9)B?PZaQ>LUyZW&I2Ed1is#cXjX4gGP8g;bUn z#4Ah{QUmBYZOOPL*JU%qyV-Er$jUMp%(?YH`Q3+Y9nj-}hC7srAQnXG+MPXDpy=N1 z^9}d|*%Q%%&+c85on zWCLg944uX-quFY=c#pmK$B%lUlrhkMx%bKd8|a02d>6##2Lll38N@x%fH%HxFlL*K zW}D4j{@_dRoxbEll9&PLEe-klhevxZ3=R#C4Ey?qpx9%YXktcY;w(Xv*=S;>zlm16 zv-rr%fBNM7WvG=5LIlI-zcSi=`to34czEzq-)PW(wT;B`XVGXfTP#-5np5<^D{r-R zT<*hthK78B-qF4@mj(hp-{6%?fsvp%LG;r{P_!`{C;ru9wOK{cB#N%R&;Q|UH}skM z(QW`@=RJK;vmf#g^8U z)&wuxce!_D)HcE97tOc{z8{=TDz+Js4A@nF}}8^bU={LS$pWmum1TQWSIIoM@Kt8X*+)^IO^-^aZGeDJ99`-nX_{af3Cynayppf zqTQO;(0cN<|9&O(=st(#e&lp}@-VqkqDOnKr)b0W z)~BEU%^PpMer9wu*xmN=C#V19n&^@^ITz<-jt`xfI|@8V{O5AJoVXDb1wGYww?6jd ze?0Y{zk2z1@4WrHSAXf6in{#{6ua{BFvGYon)Bg#2RoO?>nSd8L^`+K`}Ww=Wp(BHQXDD@ znU@tZRP8A6mXs6~uU%K#(7a{WzWoOefd?Jhf2TLb%N6?zJO%k4FY|VmAd~RcmOV%^ zdHC4(pMLVOM;?0Udyjgfym52Ofd`I1a{So6C!T)p@I&6& zURK;zR9u27*;}-}Y1e_)qsLAhKXLrgXP<0sz4!Q&Pd$9}d&M!ur%H;8F^uKil7V;O>J5_TIJku44!G?B9Q2|J?`n z?>qEBX-p}*wSC>jrk!`(iNZa5?reehZp*>lJ6c+Hw}71oTlO9(n^E>bd0E-5W#tvs z&EVm?@7TS&W!H`!+qd7=a_8;ackJA`V+ZmIZ@(QCL*-?xjIHmh-Mnr4)@?hHM0oqw zE!>t%TX)}v?0`t&w*^|mn>V560JMEpFtY+2SRj6HGS6kE6 zP`$CLiV{ZG*0cJq28d{W?jfxjs6;#51ox8mO*= zE+~>v*4EU@Yp+y8k(0(nL#wN~zDB5G)k7FRuAmlIEvxZYLHx6-hO6;W*SJ_arB+fs z7=AJ6pDJ-xvg$x(b#-MmUmdE#$XQi;+vzjs&!73|&#ymu|Nh;(ZfmTx7X3IU@y2lo zjr%R=+m}4feA3==_WZ|hJ@d#t`&za(RIc0lcw@p`INPZu?QLf}&YwB+msfuF)Q=u} z^n1sTJb0`;QH#}59%{sAyE{&w|M1n5-+%bQ2ktw(cgNZ_$lFd1RHRhgfs6%joqXh; zyLL9$l{wbv)6_C#T9bg5&gI*o)cet!&prOYzT28Ai*0K%muldo2f~L@-o$sD{_umh zfBu8kySCS^FBDhn7srf)O#`G~3IS&Dgx)oWd*O#Q;?xF_f*f-^u> zVR7qy?9mg4@3^ggLxDYOd8%geI38vULB;ppz5BLJwd=jP=9TFQGscaJxOTmvcH=rv zjwLH2Ng*dsMc4;oCB4N34vQg6fAgI2aMZ&haro*bi)oEMIqnA33mX>rg?w-FLiG)B z?}I8bgpZ}LAS@6rB7-~LBSFT4sUzzgJP;*_3sk@b4W=zgADqpkvM|NRtCB#(d5&}t zFAt7z;NvhdB;ti!kqM}UTMIIDEL|w=oi%;39IphX6j-OEFhSrAgK(Al9nk5MWO!F3QiZ@)wP!Aa zG=5^dRyB9ljA>I53yIf*KQ}KZ1-7OK>RM^&FisPzKwh-yDBO$}R8nq5=Q4d7MBa58 z)tuQg;JyU~X^dT}ma^0fX{pc?U#J7~Q=kl4Zzn|J4MLeD`2uwFF}j=PC}L*bFnuaY z&<r<*gQ(+yLs{r+9GY4;+iR_%w z(nH;TdlFGtSmXjv( z6MZO{1et1-#LCWfQ>qql-&4PP{@G`q{n?L>ZQc9FMr#_ZAhF8WbI9Rxsk^tQ?VXpN z`^Cwp9)IZ2_uo8b)kD6NN(b9Jkrn1*$NTRy_7Dd-=uZPd;|n2B!rcN#vgtF7NE_=a zPkz|C3-Y@w;4rS%AX;6m?l^PyBlP~<$tO-6+*!ZTm9EmjQ%ZvnI5m5-`}G%|dHRX( z9p2qsU1Cm#UprB31h#|DlS{fn)BD1+C!c!k#65eU0iO?>v<{9%2))CN$=698qv`qa z6OSG{bjS9_3h$bm(H@i@mLsM`%saf1v~#q*_aEAG+m@#F?lnm;XK4`8&SRaN)5K~A zn;L4$Jl2eO72KK-uBSyTJmLZ4m`;M{5zyF}xGuNdkiGz6^7H1wdkc(F2QMfcuM2?Y z#_8thhHj1nF+~Bjo#!J0O9cocqJ?)<2rYoctBV+7e0&^;E{;$=+$8*&#UbPn2j+tn z6S2i9g8IlKYW}$jGc z6y>`eqRDJnxiopfJk*E8?EIJoz2)mlOVB3QW`b+ca-=knE|9>nUa^psx0jU`7eEf( zW-+W>u1`-~I3JuD2`UyYP%dEWd&<|*ARKnll$E(G1HI0_nZH@JkSpr(7J6Ke?-tG3 zt5;-XAk9ev5_@P8m{a2FL9%6&$%w=l`m{94G61@&P7v%}c##IUIjzA2vt&_nQeqOZ zPCikQ&~G9#U_l!cb6LLCNV$=AOHv}2C?qKo{a}@d3}o2>41ZN7%M7i6-}-Pk-$rth zGARH)xoS1HI2!H72~OViR8r)8v~BpJ3* zNy;am=a!$ovP`-xs9&}WoU)&qE=o;bOij6DmZC_Or~5PX;FO?^KEwtrUUExP3WLHy z3Wq`&a&Lht@~J+QAXmvPD3aWwNMXKn!+tQQU;sJZ`iCxeoO$hy(RWYYnP*vJFd+Kz z)W}dEfDE9+SGu}-FJ6FL|HaX>KWX(?4OE_uEhc+p$meH%Hp+%Z{2`Eqp3unXX#3Om zdF>{n(QE|!G#X+IANvA6R*Px2>0|$3AmoQSWIuRW=O=&p!wbjDMU%yvYcb*v z4PymWIzJj54PEM?+;e^1ZSTMR>w8M_oK~9={7YhEISTPiU^Li|1a-)6*Z$$}UwdkA zX`X1aLXX~-W3%OOIU$=kTkPzI!X)zKUFtmj{+quzQtNiwOsK$ehM=qtCWnkRF}Bl4 zcL`zM3uiuj=cT9i6x(xcpm{bBqp><%PK>RG=H<>aAHVzZPY+fV7Z&C^><-Sstehhd zCT$7_{Q`UMy+6G2)B73=oNh24hr{K{byzHR&>)Fj;kf*#-@o?E6RkTd3iI)awu9#R zoCO8WvB5HTFvphbobBv<`iDn$Rd_*#a0}>`gXI(!5|bLl_r~GzI6?DfyV}+l7lpsK z5J?B`q0!{!IYFCH$>}M~b17T{Zl^mxA6LV+p04~nS8i@T%voNq+m-7o@WQ&}j&Toy zUb*u?r`-80pL6%Y+Jz)MROZev;0hG^fxPd=sW&k>%IG1Hf<~|Dk&|N6|230V@F$C?_>839zJwxxQ* z5^eFt`|iExoypsB8ML%Fs*P~T8jSIgCMb^eCN=1t9;xJ|?L8_Ubrudh&63^X*> zhxr270;>(xfYh++;Rb5DzCu=U>hm1t(^u;2Yx&x45Q{Kzs7K0zx~AHVpfZ)LQd0HF z=Sj?`uhdFw14L!OF9yL_Dr*~SHda>&RoWT`+EP^wT2hUU>uZT{@Kp+M8&(~tsRH5Q zs(mO4lM|s@QTuoQM*LR&Mi0G&lsvK4F3@^Awy~I82yyCZ!C6TnkG|;#jMX!(NAtq$T6gZoZxbCb8i-L7#}LNiTkScK$}kJCgM&=n3w#w;QmT zu!-1g*c^H%_Ab3!pRf1m3vpMkzF1$PU#l<0ahbkcUvc}mU7!9Vev{)*{~f>4@s1k( zcYn6;{%qfU+rG}X?;Cx?K5amvZ(E35A>I%3`L8ucN+l!(5PpnJk8&X-73PpllkKnGOD>RwKYzrj^kZPBRNc3<_f!xGnP_a1zMSX?yaD5ttE1wkpV{$1EJuRV|mqwAJ6+W8yL`$P!^$}3eC5eRn z3$dff6&m+qjKE`KJQvwemL5PHHOb)#+e2HX{a#-M`!c@}PLRkddfMBtLu}-)k zB`Y2ZsayJ5kfn}3>h!ti1s|E{=zpZ}ffQ~;$gn2J5af(wGEt%kV}enS>~K&8!71#X z!XOW`R=61?+(={waUoC|!*_^};>q@hR~T}rH)Yh z$vQ>0rVB6_;Q_HG^hPcoh?j%;NiC%*i&y(-UZVez>JMN%LMR>Xr$l3=7Un7{LjM{i zEJPZ$l12f8m<0NYaMwT?X1EAgn-FNH)=Y)WBBr(|MBw2v#)rKCOBEENU~b}Q+M6;q zDWW=wErcgXP7^?7(rutROnU>Qp)g)tiNu+ItRJ#x(Om-QlH?e0tFaE{5Tb&hq!u$K zBKfqmqq&pmqUr4VIF2S!^5BS}gK0YQ(4Y+(dU&3G^;}M~EJtQ3a>oeo0x)?|)LtNL z&Z_vAPrXqHV7vU805)TGLN;6rjIikp8L|!8#x=%lLxLeFTC$-7HJD|{GG!UEEha;} zff+9vOtx%TG>oWcz_HnAT43rj+KotHUgW)q%oZ{W7!(s4Q8_)rVFdZ zM#c`&jv3x6UM~hLqG%B#L_dmffr%He@QjDeYC&dI5zjUoo~@#k;D8r>RuL!oA1Qud zHQPix4sB*MHrvcNL=hIdt!69&!w_bp&Y49b4qA|w4rM@(2peZ-wvg2}6&4VHN|bGo zKn1tKUa(<37}uGdBfyz51~{m0x5>tiIa?r?U_zJmsP?O09F{pqVXJo&3~;d{0nppxaddfb?EnMIhJmKU)Nv@Yf#aEnh0T-1_KNm zkDmj;Cx|WJ9ghs-7cd97j#q~pPQ-O`1*Z2!&QHQIKnzF~{(%b|;|a_n#-I($asm(( zkQpvVF98UwaN4RW6Lws<^{=7arM6(+9rJgw8doeh6!H}-ewwj zQ`8qjoWc|`o5ueGoSSB1B4-I%O%Y!TcvA`JEMm?-fp|j%cR)aD69CLvZE~PgCjin4 ze6!fBz`f6aT|dCiM*p!G1h@lsU4yk~G>pLJzg8AzP-9Rwf~=d@0UPDEAu`%Ka*<#& z5-2u?WZ+WK0I>+iFd-UXEy}^1903>)oRj26f_8id4WNX4TG@Ai@lRGE5n3E3! zSQxwjZ#-dK1nn4no&;BbpbN(+N98c`k#kcdHbOtSi^sLeZa+C;y4=&;L13L*`YnJu z>wa@2uGn?@OY6DVufIO^xFQ8gID=tAN37a3=lwq9YQ|gI*dSq7!`qEOan&~0eVIf zkjJrO02&Y}Mu6xNLN&;o0wjZ#1=KVKnu~Dr_*xck9c zgHxhsa5Zu(Af&p6N>^E2AN3uJ(J4v0mplYU)MQ;6)?&DbhhK~%Fs|^C57)H7GR=HV zlr|6s8%Q`n!;Wbcnkia2>`wo_Wd!B5S$+g0h8ZShs|@ErVZc(dj3QQQ@i3SzbO5em zHq6CL-)Atv&(#2bUk3<{#4un+MJ#(8z-pAHa|W!I8bD@p$oUozi`8T@zz4u!HpvJO zI8)g7HGsu((G+DG2GKE@L^CsYSVRXn2UgKdC@~p{e-J$Z#{p2-;K(~{#=MQG9UiWh zNU;s91-wNhCXx$ELfnOBc;JQ2LF|Qz7ss&UDlf9qMVUB+9zd(?W>G@q34{nO{}&vt z(yBh{+l1ahipK635;5NoW91djtG2~B!hLa+NE9fCIehSH&4uqQX8MsFn`0i?)yT#s z$xQ_i2%ssFZ_(n6MDhyek8k{tBEO5C56SrSt2+TlSnv3!7TEN$A$4qetX>(4Q>J5w zRkqOo!%CYzJ7mgE&(<44q9GkSQ#wAu*nPKr^WE~zzis*EyEX1_oF1H98vLlts+jZLu7nB5^+;>Jhq|)MWR0G z)K|I_WF#w6^q9-^CcUV)=^YBE-lcFW@)aIMVUbr+tSC{eRg@N$DasWUFMidh`zseF kGinsIP&d72+_-Ux*y!II*x(Hv{``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vTivwh= zDOELf4NWZ*Q!{f5ODks=S2uSLPp{yR(6I1`$f)F$)U@=B%&g*)(z5c3%Btp;*0%PJ z&aO$5r%atTea6gLixw|gx@`H1m8&*w-m-Pu_8mKS9XfpE=&|D`PM*4S`O4L6*Kgds z_3+W-Cr_U}fAR9w$4{TXeEs(Q$Io9Ne=#yJL%ap|8JfQYf&OA*VPR%r2lxYE z#}NLy#lXYN2#h>tK?Zw#(t3twW$lHkox-#Iy_5W`I0Nm-* A)c^nh literal 0 HcmV?d00001 diff --git a/css/images/css/footerWrapper-bg.jpg b/css/images/css/footerWrapper-bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..93eba982bf370329fc1c9b89bf564c2336d23c15 GIT binary patch literal 931 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vTivD9GqO-Km}U`7?>ED znVDFaL9Pa>t_8|7un4jWDH=Mm2?r*!D;0_uHBMZ}q3pErplHy=4=Tnkx|JhscGpMnOVgprDf$6l~v6xt!?cc zon4bAPnkMx`iz;g7A;<~blLJ1D_3pWyk+aQ?K^hvI&}ER(PPI?oIG{u@|COCuHU$M z>*1rvPo6$|{^I4UkDoq&`TFhqkDtFl{$gZchIk9^Gc3M&~ka)>xhT)6Qdr?PR-2hpUWi(FzVCJ$9Vg1iRy8F3zKBFkrR ik0JbZi-Cuk5g2*Qf(-Tye}flwX)ugpqQijs|4jfW1}E?U literal 0 HcmV?d00001 diff --git a/css/images/css/hat.jpg b/css/images/css/hat.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d2b008fcfba069a5a722be24216ad263faaf6992 GIT binary patch literal 8227 zcmex=Jq?U}9uuW@2GxWo2Ojs;&jfGq4D< z3Mm>ovIz$!vMUve7&T5@$f4}C@t|nX#SbdRNkvVZTw>x9l2WQ_>Kd9_CZ=ZQ7M51d zF0O9w9-dyoA)#U65s^{JDXD4c8JStdC8cHM6_r)ZEv;?s9i3g1CQq3GGAU*RJ2VdF$b$$4{OP zfBE|D`;VW$K>lK6V1@@7#A9gw5(N5-iG_ukg&pKCMy7HgW)@^&RWxK1atvfoEEHBU zYUB`cnz(S|K~81kpbw%+MHjimR7@VKegt_9>@(s#)lOnKGb1qam<1W^ z8UFp#Sk%QZibum>G!2ZVfzdQDng&MGz-Ss6O#`E8U^ESkrh(BkFq#HN)4*sN7)=AC oX<#%BjHZFnG%%V5M$^D(8W>FjqiJ9?4UDFN(KJB+H1Pi>08TKOaR2}S literal 0 HcmV?d00001 diff --git a/css/images/css/hmenu-sel.jpg b/css/images/css/hmenu-sel.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d4a0d40ed19a4801fce7091e72473dde5ef8c94d GIT binary patch literal 653 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vTivwh= zDOELf4NWZ*Q!{f5ODks=S2uSLPp{yR(6I1`$f)F$)U@=B%&g*)(z5c3%Btp;*0%PJ z&aO$5r%atTea6gLixw|gx@`H1m8&*w-m-Pu_8mKS9XfpE=&|D`PM*4S`O4L6*Kgds z_3+W-Cr_U}fAR9w$4{TXeEs(Q$Io9Ne=#yJL%ap|8JfQYf&OA*VPR%r2lxYE z#}NLy#lXYN2#h>tK?Zw<-`9Uf{r*>^G!}Jjl>dJd0PYIW AbpQYW literal 0 HcmV?d00001 diff --git a/css/images/css/hmenu.jpg b/css/images/css/hmenu.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d0ae8683fce0967f5a92cf5c2b81e5e75535a902 GIT binary patch literal 655 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vTivwh= zDOELf4NWZ*Q!{f5ODks=S2uSLPp{yR(6I1`$f)F$)U@=B%&g*)(z5c3%Btp;*0%PJ z&aO$5r%atTea6gLixw|gx@`H1m8&*w-m-Pu_8mKS9XfpE=&|D`PM*4S`O4L6*Kgds z_3+W-Cr_U}fAR9w$4{TXeEs(Q$Io9Ne=#yJL%ap|8JfQYf&OA*VPR%r2lxYE z#}NLy#lXYN2#h>tK?Zw%kxU@K!VDr=Sy-4^*jU-vz?hwr zgN>b&osEryn}d@J1b{3aZY~}W2V@9DD-$a-Gb`H|qMvW5}awt1(JSZA;@q>zSQc)8pmzcPOq?D?fx`w8fiK&^ng{76V zi>sTvho@I?NN8AiL}XNQN@`kqMrKxVNoiSmMP*fUOKV$uM`zch$y26In?7UatVN5L zEM2yI#mZHiHgDOwZTpU$yAB;ba`f2o6DLnyx_ss8wd*%--g@}x@sp>|p1*kc>f@)+ zU%r0({^RE_kiQrim?7Q*k`Rxf`AZP!FD6hNu!H=?$W#u*%z`YeiiT`Lj)Clng~Cck zjT|CQ6Blkg$f;}`^g%SK=pvVxipfLOk07sseMX$en#l4Q++zrT-D2QjW&}navmk># R!{0xPx-=Mu0cQSx695u_0p9=s literal 0 HcmV?d00001 diff --git a/css/images/css/page-vbg.jpg b/css/images/css/page-vbg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..93eba982bf370329fc1c9b89bf564c2336d23c15 GIT binary patch literal 931 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vTivD9GqO-Km}U`7?>ED znVDFaL9Pa>t_8|7un4jWDH=Mm2?r*!D;0_uHBMZ}q3pErplHy=4=Tnkx|JhscGpMnOVgprDf$6l~v6xt!?cc zon4bAPnkMx`iz;g7A;<~blLJ1D_3pWyk+aQ?K^hvI&}ER(PPI?oIG{u@|COCuHU$M z>*1rvPo6$|{^I4UkDoq&`TFhqkDtFl{$gZchIk9^Gc3M&~ka)>xhT)6Qdr?PR-2hpUWi(FzVCJ$9Vg1iRy8F3zKBFkrR ik0JbZi-Cuk5g2*Qf(-Tye}flwX)ugpqQijs|4jfW1}E?U literal 0 HcmV?d00001 diff --git a/css/images/css/topBanner-old.xcf b/css/images/css/topBanner-old.xcf new file mode 100644 index 0000000000000000000000000000000000000000..32e747241137d5c6fac92b06c5058de8b1819adc GIT binary patch literal 51420 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 SctcD7X5!g<=$z_hbpBuMc7MeH literal 0 HcmV?d00001 diff --git a/css/images/css/topBanner.jpg b/css/images/css/topBanner.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b6aa4058723cccac408cea3243f181a69ec85c0f GIT binary patch literal 15065 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 IWmT*G1xZd5x&QzG literal 0 HcmV?d00001 diff --git a/css/images/css/topBanner.xcf b/css/images/css/topBanner.xcf new file mode 100644 index 0000000000000000000000000000000000000000..e107747de72c8cdd7d462edacb086945f7355330 GIT binary patch literal 53331 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 Q{x=)Xfy3uiub}h)3qQA?VE_OC literal 0 HcmV?d00001 diff --git a/css/images/css/topWrapper-bg.jpg b/css/images/css/topWrapper-bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7a86a1c1c4faa87e307bf6bd9407c21ca1068631 GIT binary patch literal 707 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vTivwh= zDOELf4NWZ*Q!{f5ODks=S2uSLPp{yR(6I1`$f)F$)U@=B%&g*)(z5c3%Btp;*0%PJ z&aO$5r%atTea6gLixw|gx@`H1m8&*w-m-Pu_8mKS9XfpE=&|D`PM*4S`O4L6*Kgds z_3+W-Cr_U}fAR9w$4{TXeEs(Q$Io9Ne=#yJL%ap|8JfQYf&OA*VPR%r2lxYE z#}NLy#lXYN2#h>tK?ZwD0CLX}_~;mE4&}&vbv5g!XH7eX-=TOS*SHOY8d7x2{z(?edn%xgvqF?w0>= F0sxnp>%#y5 literal 0 HcmV?d00001 diff --git a/css/images/ui-bg_flat_0_aaaaaa_40x100.png b/css/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FscKIb$B>N1x91EQ4=4yQ7#`R^ z$vje}bP0l+XkK DSH>_4 literal 0 HcmV?d00001 diff --git a/css/images/ui-bg_flat_0_eeeeee_40x100.png b/css/images/ui-bg_flat_0_eeeeee_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..e44f861be1ccdfec4275eb20d9b056f14992f649 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FscKIb$B>N1x91EQ4=4yQ7#`Sv zZF_)9$%zYm;;c7~Kd+Iuj%U9o62cnl7#bi-T}u4XA(n|-?{<9$I)lN})z4*}Q$iB} D#5ytf literal 0 HcmV?d00001 diff --git a/css/images/ui-bg_flat_55_ffffff_40x100.png b/css/images/ui-bg_flat_55_ffffff_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..ac8b229af950c29356abf64a6c4aa894575445f0 GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FsY*{5$B>N1x91EQ4=4yQYz+E8 zPo9&<{J;c_6SHRil>2s{Zw^OT)6@jj2u|u!(plXsM>LJD`vD!n;OXk;vd$@?2>^GI BH@yG= literal 0 HcmV?d00001 diff --git a/css/images/ui-bg_flat_75_ffffff_40x100.png b/css/images/ui-bg_flat_75_ffffff_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..ac8b229af950c29356abf64a6c4aa894575445f0 GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FsY*{5$B>N1x91EQ4=4yQYz+E8 zPo9&<{J;c_6SHRil>2s{Zw^OT)6@jj2u|u!(plXsM>LJD`vD!n;OXk;vd$@?2>^GI BH@yG= literal 0 HcmV?d00001 diff --git a/css/images/ui-bg_glass_65_023063_1x400.png b/css/images/ui-bg_glass_65_023063_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..644a1f78e3f832c7fa64423dd63305d796f34ded GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAGVZ#9R3S1=>7a978O6lMDRb{yTr z3@pr(9Y58pdE2J4srjmURz=%QuuI=n^<9&B^5T_h%);jCw>v)lY!EuGcP}v^Xo3)s zm?W5*FiGU0JkPpC%!W;mYn}+PpTC!q@aSPmdV{+tN>ySr~=F{k$>;_x^_y?afmf9pRKH0)6?eSP?3s5hEr>mdKI;Vst E0O;M1& literal 0 HcmV?d00001 diff --git a/css/images/ui-bg_highlight-soft_100_7fbcdf_1x100.png b/css/images/ui-bg_highlight-soft_100_7fbcdf_1x100.png new file mode 100644 index 0000000000000000000000000000000000000000..6c372415beee3da1e3a7546fed6ce3af5d4fe841 GIT binary patch literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^j6j^i!3HGVb)pi0l!vE_V~E7mtNo5#4FLj9^7sCy z$u5@O^0t55%w^mx7v1JHb>#dOWc=fy<>(jibKBDePq)PKMVY3wHTmt{?H_hIcaiy| d_5b(ji2DdQKTyk!>Ia(1;OXk;vd$@?2>^e*EI$AM literal 0 HcmV?d00001 diff --git a/css/images/ui-bg_highlight-soft_100_bddeff_1x100.png b/css/images/ui-bg_highlight-soft_100_bddeff_1x100.png new file mode 100644 index 0000000000000000000000000000000000000000..2f6196c9b3e190ad8731fdeb74c8c64461c482a0 GIT binary patch literal 115 zcmeAS@N?(olHy`uVBq!ia0vp^j6j^i!3HGVb)pi0l$EE8V~E7m3f3H_#V`FPu o==SIT|M?Z1Nk>0;^9VCB@IMn?A*z)j3{=eE>FVdQ&MBb@0KuRb)c^nh literal 0 HcmV?d00001 diff --git a/css/images/ui-bg_highlight-soft_25_7fbcdf_1x100.png b/css/images/ui-bg_highlight-soft_25_7fbcdf_1x100.png new file mode 100644 index 0000000000000000000000000000000000000000..994b7557c4b32b210f0ca53388e3bad1bcdfd8d3 GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^j6j^i!3HGVb)pi0l#{26V~E7mtNjOg8w>;v*WCPn zG{EPOOsV~aLkyuu)xFke1X-Lr&G5$~gTe~DWM4fg%c@c literal 0 HcmV?d00001 diff --git a/css/images/ui-bg_highlight-soft_25_bddeff_1x100.png b/css/images/ui-bg_highlight-soft_25_bddeff_1x100.png new file mode 100644 index 0000000000000000000000000000000000000000..77f2cf7bc214c79f29cfca00458791a520d0fae4 GIT binary patch literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^j6j^i!3HGVb)pi0l%uDMV~E7mtNjN#4;b(;pTAYV zo^O)ly7^Z=GPGXmx8T%KUbmF-$HW!6-5tIHTRMIFqB%l0yDFM)3jX!yN8Oj|BIe`$ WG6`Q_^=1GKWAJqKb6Mw<&;$TvzA9({ literal 0 HcmV?d00001 diff --git a/css/images/ui-bg_highlight-soft_50_7fbcfd_1x100.png b/css/images/ui-bg_highlight-soft_50_7fbcfd_1x100.png new file mode 100644 index 0000000000000000000000000000000000000000..6f70ca4003f3de9ae47181dcef98b5885013e466 GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^j6j^i!3Ja)XlH!`a?(6q9780gZtZjAYH{FU>HhcM z{7=7s;nxReW_jAMI=V+p+$*BE#QLbgHh}|@R~_av&C)*cxQfYPy#mvgkP9IWN99uT z6X%6pby(fFkL}i$A4J(AaxeG_rUVQ#9r*JhxN44$rj JF6*2UngIVeI`04g literal 0 HcmV?d00001 diff --git a/css/images/ui-icons_031634_256x240.png b/css/images/ui-icons_031634_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..09c70d6470b38c25363eaeed70aca5b369556ef1 GIT binary patch literal 5355 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 XNDhD%Z$j4p@0a;V!$7@S)iL&eH{f0) literal 0 HcmV?d00001 diff --git a/css/images/ui-icons_fa720a_256x240.png b/css/images/ui-icons_fa720a_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..b70cbd1ab7d3655f99f38dab72271da742c90b0f GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/css/images/ui-icons_ffffff_256x240.png b/css/images/ui-icons_ffffff_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..42f8f992c727ddaa617da224a522e463df690387 GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/css/jquery-ui-1.8.16.custom.css b/css/jquery-ui-1.8.16.custom.css new file mode 100644 index 0000000000..d03e1ca7a2 --- /dev/null +++ b/css/jquery-ui-1.8.16.custom.css @@ -0,0 +1,568 @@ +/* + * jQuery UI CSS Framework 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { display: none; } +.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } +.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } +.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } +.ui-helper-clearfix { display: inline-block; } +/* required comment for clearfix to work in Opera \*/ +* html .ui-helper-clearfix { height:1%; } +.ui-helper-clearfix { display:block; } +/* end clearfix */ +.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { cursor: default !important; } + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } + + +/* + * jQuery UI CSS Framework 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Helvetica,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=2px&bgColorHeader=7fbcfd&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=50&borderColorHeader=dae5c9&fcHeader=031634&iconColorHeader=031634&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=dae5c9&fcContent=031634&iconColorContent=adcc80&bgColorDefault=7fbcdf&bgTextureDefault=03_highlight_soft.png&bgImgOpacityDefault=100&borderColorDefault=dae5c9&fcDefault=7a994c&iconColorDefault=adcc80&bgColorHover=bddeff&bgTextureHover=03_highlight_soft.png&bgImgOpacityHover=25&borderColorHover=7fbcdf&fcHover=7a994c&iconColorHover=adcc80&bgColorActive=023063&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=dae5c9&fcActive=dae5c9&iconColorActive=454545&bgColorHighlight=ffffff&bgTextureHighlight=01_flat.png&bgImgOpacityHighlight=55&borderColorHighlight=cccccc&fcHighlight=444444&iconColorHighlight=adcc80&bgColorError=ffffff&bgTextureError=01_flat.png&bgImgOpacityError=55&borderColorError=fa720a&fcError=222222&iconColorError=fa720a&bgColorOverlay=eeeeee&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=80&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=60&thicknessShadow=4px&offsetTopShadow=-4px&offsetLeftShadow=-4px&cornerRadiusShadow=0px + */ + + +/* Component containers +----------------------------------*/ +.ui-widget { font-family: Helvetica, Arial, sans-serif; font-size: 1.1em; } +.ui-widget .ui-widget { font-size: 1em; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Helvetica, Arial, sans-serif; font-size: 1em; } +.ui-widget-content { border: 1px solid #dae5c9; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #031634; } +.ui-widget-content a { color: #031634; } +.ui-widget-header { border: 1px solid #dae5c9; background: #7fbcfd url(images/ui-bg_highlight-soft_50_7fbcfd_1x100.png) 50% 50% repeat-x; color: #031634; font-weight: bold; } +.ui-widget-header a { color: #031634; } + +/* Interaction states +----------------------------------*/ +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #dae5c9; background: #7fbcdf url(images/ui-bg_highlight-soft_100_7fbcdf_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #7a994c; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #7a994c; text-decoration: none; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #7fbcdf; background: #bddeff url(images/ui-bg_highlight-soft_25_bddeff_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #7a994c; } +.ui-state-hover a, .ui-state-hover a:hover { color: #7a994c; text-decoration: none; } +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #dae5c9; background: #023063 url(images/ui-bg_glass_65_023063_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #dae5c9; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #dae5c9; text-decoration: none; } +.ui-widget :active { outline: none; } + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #cccccc; background: #ffffff url(images/ui-bg_flat_55_ffffff_40x100.png) 50% 50% repeat-x; color: #444444; } +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #444444; } +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #fa720a; background: #ffffff url(images/ui-bg_flat_55_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; } +.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #222222; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #222222; } +.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } +.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_adcc80_256x240.png); } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_adcc80_256x240.png); } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_031634_256x240.png); } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_adcc80_256x240.png); } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_adcc80_256x240.png); } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_adcc80_256x240.png); } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_fa720a_256x240.png); } + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-off { background-position: -96px -144px; } +.ui-icon-radio-on { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 2px; -webkit-border-top-left-radius: 2px; -khtml-border-top-left-radius: 2px; border-top-left-radius: 2px; } +.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 2px; -webkit-border-top-right-radius: 2px; -khtml-border-top-right-radius: 2px; border-top-right-radius: 2px; } +.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 2px; -webkit-border-bottom-left-radius: 2px; -khtml-border-bottom-left-radius: 2px; border-bottom-left-radius: 2px; } +.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 2px; -webkit-border-bottom-right-radius: 2px; -khtml-border-bottom-right-radius: 2px; border-bottom-right-radius: 2px; } + +/* Overlays */ +.ui-widget-overlay { background: #eeeeee url(images/ui-bg_flat_0_eeeeee_40x100.png) 50% 50% repeat-x; opacity: .80;filter:Alpha(Opacity=80); } +.ui-widget-shadow { margin: -4px 0 0 -4px; padding: 4px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .60;filter:Alpha(Opacity=60); -moz-border-radius: 0px; -khtml-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; }/* + * jQuery UI Resizable 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Resizable#theming + */ +.ui-resizable { position: relative;} +.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; } +.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } +.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } +.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } +.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } +.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } +.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } +.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } +.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } +.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* + * jQuery UI Selectable 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Selectable#theming + */ +.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } +/* + * jQuery UI Accordion 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Accordion#theming + */ +/* IE/Win - Fix animation bug - #4615 */ +.ui-accordion { width: 100%; } +.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } +.ui-accordion .ui-accordion-li-fix { display: inline; } +.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } +.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; } +.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } +.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } +.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } +.ui-accordion .ui-accordion-content-active { display: block; } +/* + * jQuery UI Autocomplete 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Autocomplete#theming + */ +.ui-autocomplete { position: absolute; cursor: default; } + +/* workarounds */ +* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ + +/* + * jQuery UI Menu 1.8.16 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Menu#theming + */ +.ui-menu { + list-style:none; + padding: 2px; + margin: 0; + display:block; + float: left; +} +.ui-menu .ui-menu { + margin-top: -3px; +} +.ui-menu .ui-menu-item { + margin:0; + padding: 0; + zoom: 1; + float: left; + clear: left; + width: 100%; +} +.ui-menu .ui-menu-item a { + text-decoration:none; + display:block; + padding:.2em .4em; + line-height:1.5; + zoom:1; +} +.ui-menu .ui-menu-item a.ui-state-hover, +.ui-menu .ui-menu-item a.ui-state-active { + font-weight: normal; + margin: -1px; +} +/* + * jQuery UI Button 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Button#theming + */ +.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ +.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ +button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ +.ui-button-icons-only { width: 3.4em; } +button.ui-button-icons-only { width: 3.7em; } + +/*button text element */ +.ui-button .ui-button-text { display: block; line-height: 1.4; } +.ui-button-text-only .ui-button-text { padding: .4em 1em; } +.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } +.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } +.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } +.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } +/* no icon support for input elements, provide padding by default */ +input.ui-button { padding: .4em 1em; } + +/*button icon element(s) */ +.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } +.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } +.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } +.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } +.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } + +/*button sets*/ +.ui-buttonset { margin-right: 7px; } +.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } + +/* workarounds */ +button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ +/* + * jQuery UI Dialog 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog#theming + */ +.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } +.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } +.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } +.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } +.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } +.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } +.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } +.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } +.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } +.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } +.ui-draggable .ui-dialog-titlebar { cursor: move; } +/* + * jQuery UI Slider 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Slider#theming + */ +.ui-slider { position: relative; text-align: left; } +.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } +.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } + +.ui-slider-horizontal { height: .8em; } +.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } +.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } +.ui-slider-horizontal .ui-slider-range-min { left: 0; } +.ui-slider-horizontal .ui-slider-range-max { right: 0; } + +.ui-slider-vertical { width: .8em; height: 100px; } +.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } +.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } +.ui-slider-vertical .ui-slider-range-min { bottom: 0; } +.ui-slider-vertical .ui-slider-range-max { top: 0; }/* + * jQuery UI Tabs 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Tabs#theming + */ +.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ +.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } +.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; } +.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } +.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ +.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } +.ui-tabs .ui-tabs-hide { display: none !important; } +/* + * jQuery UI Datepicker 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Datepicker#theming + */ +.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } +.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } +.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } +.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } +.ui-datepicker .ui-datepicker-prev { left:2px; } +.ui-datepicker .ui-datepicker-next { right:2px; } +.ui-datepicker .ui-datepicker-prev-hover { left:1px; } +.ui-datepicker .ui-datepicker-next-hover { right:1px; } +.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } +.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } +.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } +.ui-datepicker select.ui-datepicker-month-year {width: 100%;} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { width: 49%;} +.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } +.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } +.ui-datepicker td { border: 0; padding: 1px; } +.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } +.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } +.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { width:auto; } +.ui-datepicker-multi .ui-datepicker-group { float:left; } +.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } +.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } +.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } +.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } +.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; } + +/* RTL support */ +.ui-datepicker-rtl { direction: rtl; } +.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } +.ui-datepicker-rtl .ui-datepicker-group { float:right; } +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } + +/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ +.ui-datepicker-cover { + display: none; /*sorry for IE5*/ + display/**/: block; /*sorry for IE5*/ + position: absolute; /*must have*/ + z-index: -1; /*must have*/ + filter: mask(); /*must have*/ + top: -4px; /*must have*/ + left: -4px; /*must have*/ + width: 200px; /*must have*/ + height: 200px; /*must have*/ +}/* + * jQuery UI Progressbar 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Progressbar#theming + */ +.ui-progressbar { height:2em; text-align: left; } +.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; } \ No newline at end of file diff --git a/css/local.css b/css/local.css new file mode 100644 index 0000000000..288d92cacb --- /dev/null +++ b/css/local.css @@ -0,0 +1,58 @@ +#coursenav { + background-color:#031634; + padding: 4px 8px 8px 0px; + margin: 4px 8px 8px 0px; + width: 100%; + text-align: right; +} + +#left_nav { + border: 0; + padding: 0; + margin: 0; + float: left; + width: 276; +} + +#hide_acc { + min-height:600; +} + +#mainblock { + border: 0; + padding: 0; + margin: 0; + width: 200; + min-height:600px; + margin-left: 276px; + margin-right: 0px; +} + + +#bodyContent { + width: 100%; +} + +.bordered { border: 1px solid #AAAAAA; border-style : dotted; } + +.seq_problem_visited { background-color: #ccccaa;} +.seq_video_visited { background-color: #ccaacc;} +.seq_video_visited { background-color: #cccaac;} +.seq_html_visited { background-color: #caaccc;} +.seq_tab_visited { background-color: #aacccc;} +.seq_vertical_visited { background-color: #acaccc;} +.seq_sequential_visited { background-color: #cacacc;} +.seq_problem_visited { background-color: #ccacac;} +.seq_schematic_visited { background-color: #cccaca;} + +.seq_problem_inactive { background-color: #aaaa99;} +.seq_video_inactive { background-color: #aa99aa;} +.seq_video_inactive { background-color: #aaa99a;} +.seq_html_inactive { background-color: #a99aaa;} +.seq_tab_inactive { background-color: #99aaaa;} +.seq_vertical_inactive { background-color: #9a9aab;} +.seq_sequential_inactive { background-color: #a9a9aa;} +.seq_problem_inactive { background-color: #aa9a9a;} +.seq_schematic_inactive { background-color: #aaa9a9;} + +.seq_active { background-color: red;} \ No newline at end of file diff --git a/css/theme.css b/css/theme.css new file mode 100644 index 0000000000..48d12f3e1c --- /dev/null +++ b/css/theme.css @@ -0,0 +1,363 @@ + +/* +---------------------------------------------------------------------------------------- + +Copyright 2010 - Thierry Ruiz - www.dotemplate.com - All rights reserved. + +THIS TEMPLATE IS FREE AS LONG AS YOU KEEP THE LINK TO WWW.DOTEMPLATE.COM IN THE FOOTER +TO REMOVE THE LINK, PLEASE MAKE A 10 DOLLARS DONATION at www.dotemplate.com/#donate + +pmitros donated $10 + +Colors: +Light blue: bddeff + Blue: 7fbcfd +Very dark blue: #031634 + +Dark blue: #023063; +Dark Greenish: #7a994c; +Greenish: #adcc80; +Very light greenish: #dae5c9; +Bright orange: #fa720a; + + +---------------------------------------------------------------------------------------- +*/ + + +html { + background: $bottomWrapper.bg.color; + margin:0 0 0 -1px; + padding:0; + overflow-Y: scroll; +} + + +body { + padding:0; + margin :0; + display:table; + width:100%; +} + + +body { + color:#023063; + font-family: Helvetica, Arial, sans-serif; + font-size: 0.8em; + font-style: normal; + font-weight: normal; + text-transform: normal; +} + +p { + letter-spacing: normal; + line-height: 20px; +} + +h1 { + color:#adcc80; + font-size:1.6em; + margin:25px 0 10px 0; + clear:both; +} + + +h2 { + color:#adcc80; + font-size:1.1em; + margin:20px 0 10px 0; + clear:both; +} + + +h3 { + color:#adcc80; + font-size:1em; + margin:20px 0 5px 0; + clear:both; +} + + + +a:link, a:visited { + color:#adcc80; + text-decoration:none; +} + + +a:hover { + color:#fa720a; + text-decoration:underline; +} + +#sectiondesc { + font-size:8px; +} + +#wrapper { + background: transparent url( images/css/page-vbg.jpg ) repeat-y scroll 50% 0px; + margin:0 auto ; + width:100%; +} + + body { + background-color:#FFFFFF; +} + +#wrapper { + border-top: 1px solid #ffffff; +} + + + +#topWrapper { + width:100%; + height:100px; + background-color:${topWrapper.bg.color}; + background-image:url(images/css/topWrapper-bg.jpg); + background-position:center top ; + background-repeat:repeat-x; +} + + + +#topBanner { + width:800px; + margin:0 auto; + height:100px; + background-image:url(images/css/topBanner.jpg); + background-repeat:no-repeat; +} + + + +#topnav { + background:transparent url('images/css/hmenu.jpg') repeat-x top left; +} + + + + +#topnav { + height:20px; + margin:0 auto ; + text-align:center; +} + +#topnav ul { + display:table; + margin:0 auto; + padding:0; + list-style-type:none; + position:relative; + height:20px; + text-transform:uppercase; + font-size:0.9em; + font-family:Arial,sans-serif; +} + + +#topnav ul li { + display:block; + float:left; + margin:0; + padding:0; + background:transparent url('images/css/hmenu.jpg') repeat-x top left; + +} + + +#topnav ul li a { + display:block; + float:left; + color:#031634; + text-decoration:none; + padding:0px 50px ; + line-height:20px; + font-weight:bold; +} + + +#topnav ul li a:hover, #topnav li#current a { + color:#7a994c; + background:transparent url('images/css/hmenu-sel.jpg') repeat-x top left; +} + + + +#topnav ul { + width:800px; +} + + + + +body { + background-position : center 120px; +} + + + +#bg { + margin:0 auto; + padding:0; + background:transparent ; + background-image:url(images/css/hat.jpg); + background-repeat:no-repeat; + background-position: center top ; +} + + + + #header { + margin: 0 auto; + min-height:0px; + height: 0px; + width: 800px; +} + + +#page { + background: transparent url( images/css/page-bg.jpg ) no-repeat center top; +} + + + + + +#container { + margin:0 auto; + width:800px; +} + + +#content { + width:780px; + margin:0 auto ; + text-align:left; + min-height:800px; +} + + +#content p { + text-align:justify; +} + + + + + +#footerWrapper { + margin:0 auto; + height:10px; + padding:0; + background:transparent url( images/css/footerWrapper-bg.jpg ) no-repeat scroll center top; +} + + +#footer { + margin:0 auto; + padding:0; + width:800px; + height:10px; +} + + + + + +#right { + width:200px; + padding:10px 20px 20px 20px; + float:left; +} + + +#center { + width:500px; + padding:10px 20px 20px 20px; + float:left; +} + + +#content p { + margin-top:10px; + text-align:justify; +} + + + +#sidebar ul.vmenu { + list-style: none; + text-align: left; + margin: 7px 0px 8px 0px; + padding: 0; + text-decoration: none; + border-top: 1px solid #eeeeee; +} + + +#sidebar ul.vmenu li { + list-style: none; + padding: 4px 0 4px 0px; + margin: 0 2px; + border-bottom: 1px solid #eeeeee; +} + + + +#sidebar ul.vmenu li a { + text-decoration: none; + color:#023063; +} + + +#sidebar ul.vmenu li a:hover { + color:#adcc80; +} + + +#sidebar ul.vmenu ul { margin: 0 0 0 5px; padding: 0; } +#sidebar ul.vmenu ul li { border: none; } + + + + + +#bottomWrapper { + height:140px; + background-color:#031634; + background-image:url(images/css/bottomWrapper-bg.jpg); + background-position:center top ; + background-repeat:repeat-x; + text-align:center; + color:#adcc80; + text-align:center; +} + +#bottomWrapper a:link, #footer a:visited { + color:#dae5c9; +} + + +#bottomWrapper a:hover{ + color:#adcc80; + text-decoration:none; +} + + + +a img { + border:none; +} + + +.clear { + clear: both; + display: block; + overflow: hidden; + visibility: hidden; + width: 0; + height: 0; +} diff --git a/js/schematic.js b/js/schematic.js new file mode 100644 index 0000000000..0e6aca9547 --- /dev/null +++ b/js/schematic.js @@ -0,0 +1,2016 @@ +////////////////////////////////////////////////////////////////////////////// +// +// Simple schematic capture +// +//////////////////////////////////////////////////////////////////////////////// + +// Chris Terman, Nov. 2011 + +// add schematics to a document with +// +// +// +// other attributes you can add to the input tag: +// width -- width in pixels of diagram +// height -- height in pixels of diagram +// parts -- comma-separated list of parts for parts bin (see parts_map) + +// JSON schematic representation: +// sch := [part, part, ...] +// part := [type, coords, properties, connections] +// type := string (see parts_map) +// coords := [number, ...] // (x,y,rot) or (x1,y1,x2,y2) +// properties := {name: value, ...} +// connections := [node, ...] // one per connection point in canoncial order +// node := string + +// TO DO: + +// - draggable overlay window base class (dialogs, scope, ...) +// - wire labels? +// - devices: diode, nfet, pfet, opamp, scope probe +// - icons for test equipment? (scope, sig gen, counter, ...) + +// - zoom/scroll canvas +// - freeze_diagram, freeze_properties attributes (freeze certain components/properties?) +// - rotate multiple objects around their center of mass +// - rubber band wires when moving components + +// - simulation: operating points, trans, ac analysis, sweeps? + +// set up each schematic entry widget +function update_schematics() { + // set up each schematic on the page + var schematics = document.getElementsByClassName('schematic'); + for (var i = schematics.length - 1; i >= 0; i--) + if (schematics[i].getAttribute("loaded") != "true") { + new Schematic(schematics[i]); + schematics[i].setAttribute("loaded","true"); + } +} + +// add ourselves to the tasks that get performed when window is loaded +function add_schematic_handler(other_onload) { + return function() { + // execute othe onload functions first + if (other_onload) other_onload(); + + update_schematics(); + } +} +window.onload = add_schematic_handler(window.onload); + +background_style = 'rgb(220,220,220)'; +element_style = 'rgb(255,255,255)'; +thumb_style = 'rgb(128,128,128)'; +normal_style = 'rgb(0,0,0)'; // color for unselected components +selected_style = 'rgb(64,255,64)'; // highlight color for selected components +grid_style = "rgb(128,128,128)"; + +// list of all the defined parts +parts_map = { + 'g': [Ground, 'Ground connection'], + 'v': [VSource, 'Voltage source'], + 'i': [ISource, 'Current source'], + 'r': [Resistor, 'Resistor'], + 'c': [Capacitor, 'Capacitor'], + 'l': [Inductor, 'Inductor'], +}; + +// fix cursor bug in Chrome (default behavior: change to text cursor +// whenever a drag is initiated). +document.onselectstart = function() { return false; }; + +/////////////////////////////////////////////////////////////////////////////// +// +// Schematic = diagram + parts bin + status area +// +//////////////////////////////////////////////////////////////////////////////// + +// setup a schematic by populating the
with the appropriate children +function Schematic(input) { + this.div = document.createElement('div'); + // set up div so we can position elements inside of it + this.div.style.position = 'relative'; + this.div.style.cursor = 'default'; + + this.grid = 8; + this.scale = 2; + this.origin_x = 0; + this.origin_y = 0; + this.clipboard = null; + + // start with a background element with normal positioning + this.background = document.createElement('canvas'); + this.background.style.backgroundColor = background_style; + this.background.style.borderStyle = 'solid'; + this.background.style.borderWidth = '2px'; + + this.status_div = document.createElement('div'); + //this.status_div.style.borderStyle = 'solid'; + //this.status_div.style.borderWidth = '1px'; + this.status_div.style.position = 'absolute'; + this.status_div.style.padding = '2px'; + //this.status_div.style.backgroundColor = element_style; + this.status = document.createTextNode(''); + this.status_div.appendChild(this.status); + + this.connection_points = new Array(); // location string => list of cp's + this.components = []; + + // this is where schematic is rendered + this.canvas = document.createElement('canvas'); + this.canvas.tabIndex = 1; // so we get keystrokes + this.canvas.style.borderStyle = 'solid'; + this.canvas.style.borderWidth = '1px'; + this.canvas.style.borderColor = grid_style; + this.canvas.style.position = 'absolute'; + this.canvas.style.outline = 'none'; + + this.canvas.schematic = this; + this.canvas.addEventListener('mousemove',schematic_mouse_move,false); + this.canvas.addEventListener('mouseover',schematic_mouse_enter,false); + this.canvas.addEventListener('mouseout',schematic_mouse_leave,false); + this.canvas.addEventListener('mousedown',schematic_mouse_down,false); + this.canvas.addEventListener('mouseup',schematic_mouse_up,false); + this.canvas.addEventListener('dblclick',schematic_double_click,false); + this.canvas.addEventListener('keydown',schematic_key_down,false); + this.canvas.addEventListener('keypress',schematic_key_press,false); + + // toolbar + this.tools = new Array(); + this.toolbar = []; + this.tools['cut'] = this.add_tool(cut_icon,'Cut: move selected components from diagram to the clipboard',this.cut); + this.tools['copy'] = this.add_tool(copy_icon,'Copy: copy selected components into the clipboard',this.copy); + this.tools['paste'] = this.add_tool(paste_icon,'Paste: copy clipboard into the diagram',this.paste); + + // make the canvas "clickable" by registering a dummy click handler + // this should make things work on the iPad + this.canvas.addEventListener('click',function(){},false); + + this.dragging = false; + this.drawCursor = false; + this.cursor_x = 0; + this.cursor_y = 0; + this.draw_cursor = null; + this.select_rect = null; + this.wire = null; + + // repaint simply draws this buffer and then adds selected elements on top + this.bg_image = document.createElement('canvas'); + + // use user-supplied list of parts if supplied + // else just populate parts bin with all the parts + var parts = input.getAttribute('parts'); + if (parts) parts = parts.split(','); + else { + parts = new Array(); + for (var p in parts_map) parts.push(p); + } + + // now add the parts to the parts bin + var parts_left = this.width + 3 + background_margin; + var parts_top = background_margin; + this.parts_bin = []; + for (var i = 0; i < parts.length; i++) { + var part = new Part(this); + var pm = parts_map[parts[i]]; + part.set_component(new pm[0](part,0,0,0),pm[1]); + this.parts_bin.push(part); + } + + // add all elements to the DOM + this.div.appendChild(this.background); + for (var i = 0; i < this.toolbar.length; i++) + this.div.appendChild(this.toolbar[i]); + this.div.appendChild(this.canvas); + this.div.appendChild(this.status_div); + for (var i = 0; i < this.parts_bin.length; i++) + this.div.appendChild(this.parts_bin[i].canvas); + input.parentNode.insertBefore(this.div,input.nextSibling); + + // make sure other code can find us! + input.schematic = this; + this.input = input; + + // set locations of all the elements in the editor + var w = parseInt(input.getAttribute('width')); + var h = parseInt(input.getAttribute('height')); + this.set_locations(w,h); + + // process initial contents of diagram + this.load_schematic(this.input.value); +} + + +Schematic.prototype.load_schematic = function(value) { + if (value) { + // convert string value into data structure + var json = JSON.parse(value); + + // top level is a list of components + for (var i = json.length - 1; i >= 0; --i) { + var c = json[i]; + if (c[0] == 'view') { + // special hack: view component lets us recreate view + this.origin_x = c[1]; + this.origin_y = c[2]; + this.scale = c[3]; + } else if (c[0] == 'w') { + // wire + this.add_wire(c[1][0],c[1][1],c[1][2],c[1][3]); + } else { + // ordinary component + // c := [type, coords, properties, connections] + var type = c[0]; + var coords = c[1]; + var properties = c[2]; + + // make the part + var part = new parts_map[type][0](this,coords[0],coords[1],coords[2]); + + // give it its properties + for (var name in properties) + part.properties[name] = properties[name]; + + // add component to the diagram + this.add_component(part); + } + } + + // see what we've got! + this.redraw_background(); + } +} + +background_margin = 5; +part_w = 42; // size of a parts bin compartment +part_h = 42; +status_height = 18; + +// w,h are the dimensions of the canvas, everyone else is positioned accordingly +Schematic.prototype.set_locations = function(w,h) { + // limit the shrinkage factor + w = Math.max(w,120); + h = Math.max(h,120); + + this.width = w; + this.height = h; + this.bg_image.width = w; + this.bg_image.height = h; + + this.min_x = 0; + this.min_y = 0; + this.max_x = w/this.scale; + this.max_y = h/this.scale; + + var left = 2*background_margin; // space to the left + + // start with tool bar + var top = background_margin; + if (this.toolbar.length > 0) { + tool_left = left; + for (var i = 0; i < this.toolbar.length; i++) { + var img = this.toolbar[i]; + img.style.left = tool_left + 'px'; + img.style.top = top + 'px'; + tool_left += 24; // width + 2*padding + 2*border + gap + } + top += 27; // height + 2*padding + 2*border + gap; + } + + // configure canvas + this.canvas.style.left = left + 'px'; + this.canvas.style.top = top + 'px'; + this.canvas.width = w; + this.canvas.height = h; + this.redraw_background(); // redraw diagram + + // configure status bar + this.status_div.style.left = left + 'px'; + this.status_div.style.top = this.canvas.offsetTop + this.canvas.offsetHeight + 3 + 'px'; + this.status_div.style.width = (w - 4) + 'px'; // subtract interior padding + this.status_div.style.height = status_height + 'px'; + + // configure parts bin + var total_w = this.canvas.offsetLeft + this.canvas.offsetWidth; + var parts_left = total_w + 5; + var parts_top = top; + var parts_h_limit = this.canvas.offsetTop + this.canvas.offsetHeight; + for (var i = 0; i < this.parts_bin.length; i++) { + var part = this.parts_bin[i]; + part.set_location(parts_left,parts_top); + + total_w = part.right(); + parts_top = part.bottom() + 2; + if (parts_top + part_h > parts_h_limit) { + parts_left = total_w - 1; + parts_top = top; + } + } + + // configure background + var total_h = this.status_div.offsetTop + this.status_div.offsetHeight + background_margin; + total_w += background_margin; + this.background.height = total_h; + this.background.width = total_w; + + /* enable when there's support for resizing schematic + // redraw thumb + var c = this.background.getContext('2d'); + c.clearRect(0,0,w,h); + c.strokeStyle = thumb_style; + c.lineWidth = 1; + c.beginPath(); + w = total_w - 1; + h = total_h - 1; + c.moveTo(w,h-4); c.lineTo(w-4,h); + c.moveTo(w,h-8); c.lineTo(w-8,h); + c.moveTo(w,h-12); c.lineTo(w-12,h); + c.stroke(); + */ +} + +// label all the nodes in the circuit +Schematic.prototype.label_connection_points = function() { + // start by clearing all the connection point labels + for (var i = this.components.length - 1; i >=0; --i) + this.components[i].clear_labels(); + + // components are in charge of labeling their unlabeled connections. + // labels given to connection points will propagate to coincident connection + // points and across Wires. + + // let special components like GND label their connection(s) + for (var i = this.components.length - 1; i >=0; --i) + this.components[i].add_default_labels(); + + // now have components generate labels for unlabeled connections + this.next_label = 0; + for (var i = this.components.length - 1; i >=0; --i) + this.components[i].label_connections(); +} + +// generate a new label +Schematic.prototype.get_next_label = function() { + // generate next label in sequence + this.next_label += 1; + return this.next_label.toString(); +} + +// propagate label to coincident connection points +Schematic.prototype.propagate_label = function(label,location) { + var cplist = this.connection_points[location]; + for (var i = cplist.length - 1; i >= 0; --i) + cplist[i].propagate_label(label); +} + +// update the value field of our corresponding input field with JSON +// representation of schematic +Schematic.prototype.update_value = function() { + // label connection points + this.label_connection_points(); + + // build JSON data structure, convert to string value for + // input field + this.input.value = JSON.stringify(this.json()); +} + +// produce a JSON representation of the diagram +Schematic.prototype.json = function() { + var json = []; + + // output all the components/wires in the diagram + for (var i = this.components.length - 1; i >=0; --i) + json.push(this.components[i].json()); + + // capture the current view parameters + json.push(['view',this.origin_x,this.origin_y,this.scale]); + + return json; +} + +Schematic.prototype.add_component = function(new_c) { + this.components.push(new_c); + + // create undoable edit record here +} + +Schematic.prototype.remove_component = function(c) { + var index = this.components.indexOf(c); + if (index != -1) this.components.splice(index,1); +} + +// add connection point to list of connection points at that location +Schematic.prototype.add_connection_point = function(cp) { + var cplist = this.connection_points[cp.location]; + if (cplist) cplist.push(cp); + else { + cplist = [cp]; + this.connection_points[cp.location] = cplist; + } + + // return list of conincident connection points + return cplist; +} + +// remove connection point from the list points at the old location +Schematic.prototype.remove_connection_point = function(cp,old_location) { + // remove cp from list at old location + var cplist = this.connection_points[old_location]; + if (cplist) { + var index = cplist.indexOf(cp); + if (index != -1) { + cplist.splice(index,1); + // if no more connections at this location, remove + // entry from array to keep our search time short + if (cplist.length == 0) + delete this.connection_points[old_location]; + } + } +} + +// connection point has changed location: remove, then add +Schematic.prototype.update_connection_point = function(cp,old_location) { + this.remove_connection_point(cp,old_location); + return this.add_connection_point(cp); +} + +// add a wire to the schematic +Schematic.prototype.add_wire = function(x1,y1,x2,y2) { + var new_wire = new Wire(this,x1,y1,x2,y2); + this.add_component(new_wire); + new_wire.move_end(); + return new_wire; +} + +// see if connection points of component c split any wires +Schematic.prototype.check_wires = function(c) { + for (var i = this.components.length - 1; i >=0; --i) { + var cc = this.components[i]; + if (cc != c) { // don't check a component against itself + // only wires will do return non-null from a bisect call + var cp = cc.bisect(c); + if (cp) { + // cc is a wire bisected by connection point cp + + // remove biscted wire + cc.delete(); + + // add two new wires with cp in the middle + this.add_wire(cc.x,cc.y,cp.x,cp.y); + this.add_wire(cc.x+cc.dx,cc.y+cc.dy,cp.x,cp.y); + this.redraw_background(); + break; + } + } + } +} + +Schematic.prototype.unselect_all = function(which) { + for (var i = this.components.length - 1; i >= 0; --i) + if (i != which) this.components[i].set_select(false); +} + +Schematic.prototype.drag_begin = function() { + // let components know they're about to move + for (var i = this.components.length - 1; i >= 0; --i) { + var component = this.components[i]; + if (component.selected) component.move_begin(); + } + + // remember where drag started + this.drag_x = this.cursor_x; + this.drag_y = this.cursor_y; + this.dragging = true; +} + +Schematic.prototype.drag_end = function() { + // let components know they're done moving + for (var i = this.components.length - 1; i >= 0; --i) { + var component = this.components[i]; + if (component.selected) component.move_end(); + } + this.dragging = false; +} + +Schematic.prototype.cut = function() { + // clear previous contents + this.clipboard = []; + + // look for selected components, move them to clipboard. + for (var i = this.components.length - 1; i >=0; --i) { + var c = this.components[i]; + if (c.selected) { + c.delete(); + this.clipboard.push(c); + } + } + + // update diagram view + this.redraw(); +} + +Schematic.prototype.copy = function() { + // clear previous contents + this.clipboard = []; + + // look for selected components, copy them to clipboard. + for (var i = this.components.length - 1; i >=0; --i) { + var c = this.components[i]; + if (c.selected) + this.clipboard.push(c.clone(this,c.x,c.y)); + } +} + +Schematic.prototype.paste = function() { + // compute left,top of bounding box for origins of + // components in the clipboard + var left = null; + var top = null; + for (var i = this.clipboard.length - 1; i >= 0; --i) { + var c = this.clipboard[i]; + left = left ? Math.min(left,c.x) : left; + top = top ? Math.min(top,c.y) : top; + } + + // clear current selections + this.unselect_all(-1); + this.redraw_background(); // so we see any components that got unselected + + // make clones of components on the clipboard, positioning + // them relative to the cursor + for (var i = this.clipboard.length - 1; i >= 0; --i) { + var c = this.clipboard[i]; + var new_c = c.clone(this,this.cursor_x + (c.x - left),this.cursor_y + (c.y - top)); + this.add_component(new_c); + new_c.set_select(true); + } + + // see what we've wrought + this.redraw(); +} + +/////////////////////////////////////////////////////////////////////////////// +// +// Drawing support -- deals with scaling and scrolling of diagrama +// +//////////////////////////////////////////////////////////////////////////////// + +// here to redraw background image containing static portions of the schematic. +// Also redraws dynamic portion. +Schematic.prototype.redraw_background = function() { + var c = this.bg_image.getContext('2d'); + var w = this.bg_image.width; + var h = this.bg_imageheight; + + // paint background color + c.fillStyle = element_style; + c.fillRect(0,0,this.width,this.height); + + // border + //c.strokeStyle = "rgb(0,0,0)"; + //c.strokeRect(0,0,this.width,this.height); + + // grid + c.strokeStyle = grid_style; + var first_x = this.min_x; + var last_x = this.max_x; + var first_y = this.min_y; + var last_y = this.max_y; + for (var i = first_x; i < last_x; i += this.grid) + this.draw_line(c,i,first_y,i,last_y,0.1); + for (var i = first_y; i < last_y; i += this.grid) + this.draw_line(c,first_x,i,last_x,i,0.1); + + // unselected components + for (var i = this.components.length - 1; i >= 0; --i) { + var component = this.components[i]; + if (!component.selected) component.draw(c); + } + + this.redraw(); // background changed, redraw on screen +} + +// redraw what user sees = static image + dynamic parts +Schematic.prototype.redraw = function() { + var c = this.canvas.getContext('2d'); + + // put static image in the background + c.drawImage(this.bg_image, 0, 0); + + // selected components + var selections = false; + for (var i = this.components.length - 1; i >= 0; --i) { + var component = this.components[i]; + if (component.selected) { + component.draw(c); + selections = true; + } + } + this.enable_tool('cut',selections); + this.enable_tool('copy',selections); + this.enable_tool('paste',this.clipboard); + + // connection points: draw one at each location + for (var location in this.connection_points) { + var cplist = this.connection_points[location]; + cplist[0].draw(c,cplist.length); + } + + // draw new wire + if (this.wire) { + var r = this.wire; + c.strokeStyle = selected_style; + this.draw_line(c,r[0],r[1],r[2],r[3],1); + } + + // draw selection rectangle + if (this.select_rect) { + var r = this.select_rect; + c.lineWidth = 1; + c.strokeStyle = selected_style; + c.beginPath(); + c.moveTo(r[0],r[1]); + c.lineTo(r[0],r[3]); + c.lineTo(r[2],r[3]); + c.lineTo(r[2],r[1]); + c.lineTo(r[0],r[1]); + c.stroke(); + } + + // finally overlay cursor + if (this.drawCursor && this.draw_cursor) { + //var x = this.cursor_x; + //var y = this.cursor_y; + //this.draw_text(c,'('+x+','+y+')',x+this.grid,y-this.grid,10); + this.draw_cursor(c,this.cursor_x,this.cursor_y); + } +} + +// draws a cross cursor +Schematic.prototype.cross_cursor = function(c,x,y) { + this.draw_line(c,x-this.grid,y,x+this.grid,y,1); + this.draw_line(c,x,y-this.grid,x,y+this.grid,1); +} + +Schematic.prototype.draw_line = function(c,x1,y1,x2,y2,width) { + c.lineWidth = width*this.scale; + c.beginPath(); + c.moveTo((x1 - this.origin_x) * this.scale,(y1 - this.origin_y) * this.scale); + c.lineTo((x2 - this.origin_x) * this.scale,(y2 - this.origin_y) * this.scale); + c.stroke(); +} + +Schematic.prototype.draw_arc = function(c,x,y,radius,start_radians,end_radians,anticlockwise,width,filled) { + c.lineWidth = width*this.scale; + c.beginPath(); + c.arc((x - this.origin_x)*this.scale,(y - this.origin_y)*this.scale,radius*this.scale, + start_radians,end_radians,anticlockwise); + if (filled) c.fill(); + else c.stroke(); +} + +Schematic.prototype.draw_text = function(c,text,x,y,size) { + c.font = size*this.scale+'pt sans-serif' + c.fillText(text,(x - this.origin_x) * this.scale,(y - this.origin_y) * this.scale); +} + +// add method to canvas to compute relative coords for event +HTMLCanvasElement.prototype.relMouseCoords = function(event){ + // run up the DOM tree to figure out coords for top,left of canvas + var totalOffsetX = 0; + var totalOffsetY = 0; + var canvasY = 0; + var currentElement = this; + do { + totalOffsetX += currentElement.offsetLeft; + totalOffsetY += currentElement.offsetTop; + } + while(currentElement = currentElement.offsetParent); + + // now compute relative position of click within the canvas + this.mouse_x = event.pageX - totalOffsetX; + this.mouse_y = event.pageY - totalOffsetY; +} + +/////////////////////////////////////////////////////////////////////////////// +// +// Event handling +// +//////////////////////////////////////////////////////////////////////////////// + +// process special keys here since they don't get delivered correctly on keypress +function schematic_key_down(event) { + if (!event) event = window.event; + var sch = (window.event) ? event.srcElement.schematic : event.target.schematic; + var code = event.keyCode; + + if (code == 8 || code == 46) { + // delete selected components + for (var i = sch.components.length - 1; i >= 0; --i) { + var component = sch.components[i]; + if (component.selected) component.delete(1); + } + sch.redraw(); + event.preventDefault(); + return false; + } + return true; +} + +// process normal characters +function schematic_key_press(event) { + if (!event) event = window.event; + var sch = (window.event) ? event.srcElement.schematic : event.target.schematic; + var code = window.event ? event.keyCode : event.charCode; + var char = String.fromCharCode(code); + + // rotate + if (!event.control && !event.altKey && (char == 'r' || char == 'R')) { + // rotate + for (var i = sch.components.length - 1; i >= 0; --i) { + var component = sch.components[i]; + if (component.selected) component.rotate(1); + } + sch.redraw(); + event.preventDefault(); + return false; + } + + // cut + if ((event.ctrlKey || event.altKey) && char == 'x') { + sch.cut(); + event.preventDefault(); + return false; + } + + // copy + if ((event.ctrlKey || event.altKey) && char == 'c') { + sch.copy(); + event.preventDefault(); + return false; + } + + // paste + if ((event.ctrlKey || event.altKey) && char == 'v') { + sch.paste(); + event.preventDefault(); + return false; + } + + + return true; +} + +function schematic_mouse_enter(event) { + if (!event) event = window.event; + var sch = (window.event) ? event.srcElement.schematic : event.target.schematic; + + // see if user has selected a new part + if (sch.new_part) { + // grab incoming part, turn off selection of parts bin + var part = sch.new_part; + sch.new_part = null; + part.select(false); + + // make a clone of the component in the parts bin + part = part.component.clone(sch,sch.cursor_x,sch.cursor_y); + + // unselect everything else in the schematic, add part and select it + sch.unselect_all(-1); + sch.redraw_background(); // so we see any components that got unselected + sch.add_component(part); + part.set_select(true); + + // and start dragging it + sch.drag_begin(); + } + + sch.drawCursor = true; + sch.redraw(); + sch.canvas.focus(); // capture key strokes + return false; +} + +function schematic_mouse_leave(event) { + if (!event) event = window.event; + var sch = (window.event) ? event.srcElement.schematic : event.target.schematic; + sch.drawCursor = false; + sch.redraw(); + return false; +} + +function schematic_mouse_down(event) { + if (!event) event = window.event; + else event.preventDefault(); + var sch = (window.event) ? event.srcElement.schematic : event.target.schematic; + + // determine where event happened in schematic coordinates + sch.canvas.relMouseCoords(event); + var x = sch.canvas.mouse_x/sch.scale + sch.origin_x; + var y = sch.canvas.mouse_y/sch.scale + sch.origin_y; + sch.cursor_x = Math.round(x/sch.grid) * sch.grid; + sch.cursor_y = Math.round(y/sch.grid) * sch.grid; + + /* + // for debugging... triggered by clicks in upper left corner + if (sch.cursor_x < 10 && sch.cursor_y < 10) { + sch.label_connection_points(); + sch.append_message(JSON.stringify(sch.json())); + } + */ + + // is mouse over a connection point? If so, start dragging a wire + var cplist = sch.connection_points[sch.cursor_x + ',' + sch.cursor_y]; + if (cplist && !event.shiftKey) { + sch.unselect_all(-1); + sch.wire = [sch.cursor_x,sch.cursor_y,sch.cursor_x,sch.cursor_y]; + } else { + // give all components a shot at processing the selection event + var which = -1; + for (var i = sch.components.length - 1; i >= 0; --i) + if (sch.components[i].select(x,y,event.shiftKey)) { + if (sch.components[i].selected) { + sch.drag_begin(); + which = i; // keep track of component we found + } + break; + } + // did we just click on a previously selected component? + var reselect = which!=-1 && sch.components[which].was_previously_selected; + + if (!event.shiftKey) { + // if shift key isn't pressed and we didn't click on component + // that was already selected, unselect everyone except component + // we just clicked on + if (!reselect) sch.unselect_all(which); + + // if there's nothing to drag, set up a selection rectangle + if (!sch.dragging) sch.select_rect = [sch.canvas.mouse_x,sch.canvas.mouse_y, + sch.canvas.mouse_x,sch.canvas.mouse_y]; + } + } + + sch.redraw_background(); + return false; +} + +function schematic_mouse_move(event) { + if (!event) event = window.event; + var sch = (window.event) ? event.srcElement.schematic : event.target.schematic; + + sch.canvas.relMouseCoords(event); + var x = sch.canvas.mouse_x/sch.scale + sch.origin_x; + var y = sch.canvas.mouse_y/sch.scale + sch.origin_y; + sch.cursor_x = Math.round(x/sch.grid) * sch.grid; + sch.cursor_y = Math.round(y/sch.grid) * sch.grid; + + if (sch.wire) { + // update new wire end point + sch.wire[2] = sch.cursor_x; + sch.wire[3] = sch.cursor_y; + } else if (sch.dragging) { + // see how far we moved + var dx = sch.cursor_x - sch.drag_x; + var dy = sch.cursor_y - sch.drag_y; + if (dx != 0 || dy != 0) { + // update position for next time + sch.drag_x = sch.cursor_x; + sch.drag_y = sch.cursor_y; + + // give all components a shot at processing the event + for (var i = sch.components.length - 1; i >= 0; --i) { + var component = sch.components[i]; + if (component.selected) component.move(dx,dy); + } + } + } else if (sch.select_rect) { + // update moving corner of selection rectangle + sch.select_rect[2] = sch.canvas.mouse_x; + sch.select_rect[3] = sch.canvas.mouse_y; + //sch.message(sch.select_rect.toString()); + } + + // just redraw dynamic components + sch.redraw(); + + return false; +} + +function schematic_mouse_up(event) { + if (!event) event = window.event; + else event.preventDefault(); + var sch = (window.event) ? event.srcElement.schematic : event.target.schematic; + + // drawing a new wire + if (sch.wire) { + var r = sch.wire; + sch.wire = null; + + if (r[0]!=r[2] || r[1]!=r[3]) { + // insert wire component + sch.add_wire(r[0],r[1],r[2],r[3]); + sch.redraw_background(); + } else sch.redraw(); + } + + // dragging + if (sch.dragging) sch.drag_end(); + + // selection rectangle + if (sch.select_rect) { + var r = sch.select_rect; + + // if select_rect is a point, we've already dealt with selection + // in mouse_down handler + if (r[0]!=r[2] || r[1]!=r[3]) { + // convert to schematic coordinates + var s = [r[0]/sch.scale + sch.origin_x, r[1]/sch.scale + sch.origin_y, + r[2]/sch.scale + sch.origin_x, r[3]/sch.scale + sch.origin_y]; + canonicalize(s); + + if (!event.shiftKey) sch.unselect_all(); + + // select components that intersect selection rectangle + for (var i = sch.components.length - 1; i >= 0; --i) + sch.components[i].select_rect(s,event.shiftKey); + } + + sch.select_rect = null; + sch.redraw_background(); + } + return false; +} + +function schematic_double_click(event) { + if (!event) event = window.event; + else event.preventDefault(); + var sch = (window.event) ? event.srcElement.schematic : event.target.schematic; + + // determine where event happened in schematic coordinates + sch.canvas.relMouseCoords(event); + var x = sch.canvas.mouse_x/sch.scale + sch.origin_x; + var y = sch.canvas.mouse_y/sch.scale + sch.origin_y; + sch.cursor_x = Math.round(x/sch.grid) * sch.grid; + sch.cursor_y = Math.round(y/sch.grid) * sch.grid; + + // see if we double-clicked a component. If so, edit it's properties + for (var i = sch.components.length - 1; i >= 0; --i) + if (sch.components[i].edit_properties(x,y)) break; + + return false; +} + +/////////////////////////////////////////////////////////////////////////////// +// +// Status message and dialogs +// +//////////////////////////////////////////////////////////////////////////////// + +Schematic.prototype.message = function(message) { + this.status.nodeValue = message; +} + +Schematic.prototype.append_message = function(message) { + this.status.nodeValue += ' / '+message; +} + +// set up a dialog with specified title, content and two buttons at +// the bottom: OK and Cancel. If Cancel is clicked, dialog goes away +// and we're done. If OK is clicked, dialog goes away and the +// callback function is called with the content as an argument (so +// that the values of any fields can be captured). +Schematic.prototype.dialog = function(title,content,callback) { + // create the div for the top level of the dialog, add to DOM + var dialog = document.createElement('div'); + dialog.sch = this; + dialog.content = content; + + // div to hold the title + var head = document.createElement('div'); + head.style.backgroundColor = 'black'; + head.style.color = 'white'; + head.style.textAlign = 'center'; + head.style.padding = '5px'; + head.appendChild(document.createTextNode(title)); + dialog.appendChild(head); + + // div to hold the content + var body = document.createElement('div'); + body.appendChild(content); + body.style.padding = '5px'; + dialog.appendChild(body); + + // OK button + var ok_button = document.createElement('span'); + ok_button.appendChild(document.createTextNode('OK')); + ok_button.dialog = dialog; // for the handler to use + ok_button.addEventListener('click',dialog_okay,false); + ok_button.style.border = '1px solid'; + ok_button.style.padding = '5px'; + ok_button.style.margin = '10px'; + + // cancel button + var cancel_button = document.createElement('span'); + cancel_button.appendChild(document.createTextNode('Cancel')); + cancel_button.dialog = dialog; // for the handler to use + cancel_button.addEventListener('click',dialog_cancel,false); + cancel_button.style.border = '1px solid'; + cancel_button.style.padding = '5px'; + cancel_button.style.margin = '10px'; + + // div to hold the two buttons + var buttons = document.createElement('div'); + buttons.appendChild(ok_button); + buttons.appendChild(cancel_button); + buttons.style.padding = '5px'; + buttons.style.margin = '10px'; + dialog.appendChild(buttons); + + // add to DOM + dialog.style.background = 'white'; + dialog.style.zindex = '1000'; + dialog.style.position = 'absolute'; + dialog.style.left = this.canvas.mouse_x+'px'; + dialog.style.top = this.canvas.mouse_y+'px'; + dialog.style.border = '2px solid'; + dialog.callback = callback; + this.div.appendChild(dialog); +} + +// callback when user click "Cancel" in a dialog +function dialog_cancel(event) { + if (!event) event = window.event; + var dialog = (window.event) ? event.srcElement.dialog : event.target.dialog; + + // remove the dialog from the top-level div of the schematic + dialog.parentNode.removeChild(dialog); +} + +// callback when user click "OK" in a dialog +function dialog_okay(event) { + if (!event) event = window.event; + var dialog = (window.event) ? event.srcElement.dialog : event.target.dialog; + + // remove the dialog from the top-level div of the schematic + dialog.parentNode.removeChild(dialog); + + // invoke the callback with the dialog contents as the argument + if (dialog.callback) dialog.callback(dialog.content); +} + +/////////////////////////////////////////////////////////////////////////////// +// +// Toolbar +// +//////////////////////////////////////////////////////////////////////////////// + +Schematic.prototype.add_tool = function(icon,tip,callback) { + var img = document.createElement('img'); + img.src = icon; + img.style.borderWidth = '1px'; + img.style.borderStyle = 'solid'; + img.style.borderColor = background_style; + img.style.position = 'absolute'; + img.style.padding = '2px'; + + img.addEventListener('mouseover',tool_enter,false); + img.addEventListener('mouseout',tool_leave,false); + img.addEventListener('click',tool_click,false); + + img.sch = this; + img.tip = tip; + img.callback = callback; + this.toolbar.push(img); + + img.enabled = false; + img.style.opacity = 0.2; + + return img; +} + +Schematic.prototype.enable_tool = function(tname,which) { + var img = this.tools[tname]; + img.style.opacity = which ? 1.0 : 0.2; + img.enabled = which; + + // if disabling tool, remove border and tip + if (!which) { + img.style.borderColor = background_style; + img.sch.message(''); + } +} + +// highlight tool button by turning on border, changing background +function tool_enter(event) { + if (!event) event = window.event; + var img = (window.event) ? event.srcElement : event.target; + + if (img.enabled) { + img.style.borderColor = normal_style; + img.sch.message(img.tip); + img.opacity = 1.0; + } +} + +// unhighlight tool button by turning off border, reverting to normal background +function tool_leave(event) { + if (!event) event = window.event; + var img = (window.event) ? event.srcElement : event.target; + + if (img.enabled) { + img.style.borderColor = background_style; + img.sch.message(''); + } +} + +// handle click on a tool +function tool_click(event) { + if (!event) event = window.event; + var img = (window.event) ? event.srcElement : event.target; + + if (img.enabled) img.callback.call(img.sch); +} + +cut_icon = 'data:image/gif;base64,R0lGODlhEAAQALMAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAEAAAcALAAAAAAQABAAAAQu8MhJqz1g5qs7lxv2gRkQfuWomarXEgDRHjJhf3YtyRav0xcfcFgR0nhB5OwTAQA7'; + +copy_icon = 'data:image/gif;base64,R0lGODlhEAAQALMAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAEAAAcALAAAAAAQABAAAAQ+8MhJ6wE4Wwqef9gmdV8HiKZJrCz3ecS7TikWfzExvk+M9a0a4MbTkXCgTMeoHPJgG5+yF31SLazsTMTtViIAOw=='; + +paste_icon = 'data:image/gif;base64,R0lGODlhEAAQALMAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAEAAAcALAAAAAAQABAAAARL8MhJqwUYWJnxWp3GDcgAgCdQIqLKXmVLhhnyHiqpr7rME8AgocVDEB5IJHD0SyofBFzxGIQGAbvB0ZkcTq1CKK6z5YorwnR0w44AADs='; + +/////////////////////////////////////////////////////////////////////////////// +// +// Parts bin +// +//////////////////////////////////////////////////////////////////////////////// + +// one instance will be created for each part in the parts bin +function Part(sch) { + this.sch = sch; + this.component = null; + this.selected = false; + + // set up canvas + this.canvas = document.createElement('canvas'); + this.canvas.style.borderStyle = 'solid'; + this.canvas.style.borderWidth = '1px'; + this.canvas.style.borderColor = background_style; + this.canvas.style.position = 'absolute'; + this.canvas.style.cursor = 'default'; + this.canvas.height = part_w; + this.canvas.width = part_h; + this.canvas.part = this; + + this.canvas.addEventListener('mouseover',part_enter,false); + this.canvas.addEventListener('mouseout',part_leave,false); + this.canvas.addEventListener('mousedown',part_mouse_down,false); + this.canvas.addEventListener('mouseup',part_mouse_up,false); + + // make the part "clickable" by registering a dummy click handler + // this should make things work on the iPad + this.canvas.addEventListener('click',function(){},false); +} + +Part.prototype.set_location = function(left,top) { + this.canvas.style.left = left + 'px'; + this.canvas.style.top = top + 'px'; +} + +Part.prototype.right = function() { + return this.canvas.offsetLeft + this.canvas.offsetWidth; +} + +Part.prototype.bottom = function() { + return this.canvas.offsetTop + this.canvas.offsetHeight; +} + +Part.prototype.set_component = function(component,tip) { + this.component = component; + this.tip = tip; + + // figure out scaling and centering of parts icon + var b = component.bounding_box; + var dx = b[2] - b[0]; + var dy = b[3] - b[1]; + this.scale = 0.8; //Math.min(part_w/(1.2*dx),part_h/(1.2*dy)); + this.origin_x = b[0] + dx/2.0 - part_w/(2.0*this.scale); + this.origin_y = b[1] + dy/2.0 - part_h/(2.0*this.scale); + + this.redraw(); +} + +Part.prototype.redraw = function(part) { + var c = this.canvas.getContext('2d'); + + // paint background color + c.fillStyle = this.selected ? selected_style : background_style; + c.fillRect(0,0,part_w,part_h); + + if (this.component) this.component.draw(c); +} + +Part.prototype.select = function(which) { + this.selected = which; + this.redraw(); +} + +Part.prototype.update_connection_point = function(cp,old_location) { + // no connection points in the parts bin +} + +Part.prototype.draw_line = function(c,x1,y1,x2,y2,width) { + c.lineWidth = width*this.scale; + c.beginPath(); + c.moveTo((x1 - this.origin_x) * this.scale,(y1 - this.origin_y) * this.scale); + c.lineTo((x2 - this.origin_x) * this.scale,(y2 - this.origin_y) * this.scale); + c.stroke(); +} + +Part.prototype.draw_arc = function(c,x,y,radius,start_radians,end_radians,anticlockwise,width,filled) { + c.lineWidth = width*this.scale; + c.beginPath(); + c.arc((x - this.origin_x)*this.scale,(y - this.origin_y)*this.scale,radius*this.scale, + start_radians,end_radians,anticlockwise); + if (filled) c.fill(); + else c.stroke(); +} + +Part.prototype.draw_text = function(c,text,x,y,size) { + // no text displayed for the parts icon +} + +function part_enter(event) { + if (!event) event = window.event; + var canvas = (window.event) ? event.srcElement : event.target; + var part = canvas.part; + + canvas.style.borderColor = normal_style; + part.sch.message(part.tip+': drag onto diagram to insert'); + return false; +} + +function part_leave(event) { + if (!event) event = window.event; + var canvas = (window.event) ? event.srcElement : event.target; + var part = canvas.part; + + canvas.style.borderColor = background_style; + part.sch.message(''); + return false; +} + +function part_mouse_down(event) { + if (!event) event = window.event; + var part = (window.event) ? event.srcElement.part : event.target.part; + + part.select(true); + part.sch.new_part = part; + return false; +} + +function part_mouse_up(event) { + if (!event) event = window.event; + var part = (window.event) ? event.srcElement.part : event.target.part; + + part.select(false); + part.sch.new_part = null; + return false; +} + +//////////////////////////////////////////////////////////////////////////////// +// +// Rectangle helper functions +// +//////////////////////////////////////////////////////////////////////////////// + +// rect is an array of the form [left,top,right,bottom] + +// ensure left < right, top < bottom +function canonicalize(r) { + var temp; + + // canonicalize bounding box + if (r[0] > r[2]) { + temp = r[0]; + r[0] = r[2]; + r[2] = temp; + } + if (r[1] > r[3]) { + temp = r[1]; + r[1] = r[3]; + r[3] = temp; + } +} + +function between(x,x1,x2) { + return x1 <= x && x <= x2; +} + +function inside(rect,x,y) { + return between(x,rect[0],rect[2]) && between(y,rect[1],rect[3]); +} + +// only works for manhattan rectangles +function intersect(r1,r2) { + // look for non-intersection, negate result + var result = !(r2[0] > r1[2] || + r2[2] < r1[0] || + r2[1] > r1[3] || + r2[3] < r1[1]); + + // if I try to return the above expression, javascript returns undefined!!! + return result; +} + +//////////////////////////////////////////////////////////////////////////////// +// +// Component base class +// +//////////////////////////////////////////////////////////////////////////////// + +property_size = 5; // point size for Component property text + +function Component(sch,x,y,rotation) { + this.sch = sch; + this.x = x; + this.y = y; + this.rotation = rotation; + this.selected = false; + this.properties = new Array(); + this.bounding_box = [0,0,0,0]; // in device coords [left,top,right,bottom] + this.bbox = this.bounding_box; // in absolute coords + this.connections = []; +} + +Component.prototype.json = function() { + var props = {}; + for (var p in this.properties) props[p] = this.properties[p]; + + var conns = []; + for (var i = 0; i < this.connections.length; i++) + conns.push(this.connections[i].json()); + + var json = [this.type,[this.x, this.y, this.rotation],props,conns]; + return json; +} + +Component.prototype.add_connection = function(offset_x,offset_y) { + this.connections.push(new ConnectionPoint(this,offset_x,offset_y)); +} + +Component.prototype.update_coords = function() { + var x = this.x; + var y = this.y; + + // update bbox + var b = this.bounding_box; + this.bbox[0] = this.transform_x(b[0],b[1]) + x; + this.bbox[1] = this.transform_y(b[0],b[1]) + y; + this.bbox[2] = this.transform_x(b[2],b[3]) + x; + this.bbox[3] = this.transform_y(b[2],b[3]) + y; + canonicalize(this.bbox); + + // update connections + for (var i = this.connections.length - 1; i >= 0; --i) + this.connections[i].update_location(); +} + +Component.prototype.rotate = function(amount) { + var old_rotation = this.rotation; + this.rotation = (this.rotation + amount) % 8; + this.update_coords(); + + // create an undoable edit record here + // using old_rotation +} + +Component.prototype.move_begin = function() { + // remember where we started this move + this.move_x = this.x; + this.move_y = this.y; +} + +Component.prototype.move = function(dx,dy) { + // update coordinates + this.x += dx; + this.y += dy; + this.update_coords(); +} + +Component.prototype.move_end = function() { + var dx = this.x - this.move_x; + var dy = this.y - this.move_y; + + if (dx != 0 || dy != 0) { + // create an undoable edit record here + + this.sch.check_wires(this); + } +} + +Component.prototype.delete = function() { + // remove connection points from schematic + for (var i = this.connections.length - 1; i >= 0; --i) { + var cp = this.connections[i]; + this.sch.remove_connection_point(cp,cp.location); + } + + // remove component from schematic + this.sch.remove_component(this); + + // create an undoable edit record here +} + +Component.prototype.transform_x = function(x,y) { + var rot = this.rotation; + if (rot == 0 || rot == 6) return x; + else if (rot == 1 || rot == 5) return -y; + else if (rot == 2 || rot == 4) return -x; + else return y; +} + +Component.prototype.transform_y = function(x,y) { + var rot = this.rotation; + if (rot == 1 || rot == 7) return x; + else if (rot == 2 || rot == 6) return -y; + else if (rot == 3 || rot == 5) return -x; + else return y; +} + +Component.prototype.draw_line = function(c,x1,y1,x2,y2) { + c.strokeStyle = this.selected ? selected_style : normal_style; + var nx1 = this.transform_x(x1,y1) + this.x; + var ny1 = this.transform_y(x1,y1) + this.y; + var nx2 = this.transform_x(x2,y2) + this.x; + var ny2 = this.transform_y(x2,y2) + this.y; + this.sch.draw_line(c,nx1,ny1,nx2,ny2,1); +} + +Component.prototype.draw_circle = function(c,x,y,radius,filled) { + if (filled) c.fillStyle = this.selected ? selected_style : normal_style; + else c.strokeStyle = this.selected ? selected_style : normal_style; + var nx = this.transform_x(x,y) + this.x; + var ny = this.transform_y(x,y) + this.y; + + this.sch.draw_arc(c,nx,ny,radius,0,2*Math.PI,false,1,filled); +} + +rot_angle = [ + 0.0, // NORTH (identity) + Math.PI/2, // EAST (rot270) + Math.PI, // SOUTH (rot180) + 3*Math.PI/2, // WEST (rot90) + 0.0, // RNORTH (negy) + Math.PI/2, // REAST (int-neg) + Math.PI, // RSOUTH (negx) + 3*Math.PI/2, // RWEST (int-pos) +]; + +Component.prototype.draw_arc = function(c,x,y,radius,start_radians,end_radians) { + c.strokeStyle = this.selected ? selected_style : normal_style; + var nx = this.transform_x(x,y) + this.x; + var ny = this.transform_y(x,y) + this.y; + this.sch.draw_arc(c,nx,ny,radius, + start_radians+rot_angle[this.rotation],end_radians+rot_angle[this.rotation], + false,1,false); +} + +Component.prototype.draw = function(c) { +} + +// result of rotating an alignment [rot*9 + align] +aOrient = [ + 0, 1, 2, 3, 4, 5, 6, 7, 8, // NORTH (identity) + 2, 5, 8, 1, 4, 7, 0, 3, 6, // EAST (rot270) + 8, 7, 6, 5, 4, 3, 2, 1, 0, // SOUTH (rot180) + 6, 3, 0, 7, 4, 1, 8, 5, 3, // WEST (rot90) + 2, 1, 0, 5, 4, 3, 8, 7, 6, // RNORTH (negy) + 8, 5, 2, 7, 4, 1, 6, 3, 0, // REAST (int-neg) + 6, 7, 8, 3, 4, 5, 0, 1, 2, // RSOUTH (negx) + 0, 3, 6, 1, 4, 7, 2, 5, 8 // RWEST (int-pos) +]; + +textAlign = [ + 'left', 'center', 'right', + 'left', 'center', 'right', + 'left', 'center', 'right' +]; + +textBaseline = [ + 'top', 'top', 'top', + 'middle', 'middle', 'middle', + 'bottom', 'bottom', 'bottom' +]; + +Component.prototype.draw_text = function(c,text,x,y,alignment,size) { + var a = aOrient[this.rotation*9 + alignment]; + c.textAlign = textAlign[a]; + c.textBaseline = textBaseline[a]; + c.fillStyle = this.selected ? selected_style : normal_style; + this.sch.draw_text(c,text, + this.transform_x(x,y) + this.x, + this.transform_y(x,y) + this.y, + size); +} + +Component.prototype.set_select = function(which) { + if (which != this.selected) { + this.selected = which; + // create an undoable edit record here + } +} + +Component.prototype.select = function(x,y,shiftKey) { + this.was_previously_selected = this.selected; + if (inside(this.bbox,x,y)) { + this.set_select(shiftKey ? !this.selected : true); + return true; + } else return false; +} + +Component.prototype.select_rect = function(s) { + this.was_previously_selected = this.selected; + if (intersect(this.bbox,s)) + this.set_select(true); +} + +// if connection point of component c bisects the +// wire represented by this compononent, return that +// connection point. Otherwise return null. +Component.prototype.bisect = function(c) { + return null; +} + +Component.prototype.edit_properties = function(x,y) { + if (inside(this.bbox,x,y)) { + var content = document.createElement('table'); + content.style.marginBotton = '5px'; + content.fields = []; + + // add an field for each property + for (var i in this.properties) { + var label = document.createTextNode(i + ': '); + var field = document.createElement('input'); + field.type = 'text'; + field.value = this.properties[i]; + field.size = 10; + content.fields.push([i,field]); + + var col1 = document.createElement('td'); + col1.appendChild(label); + var col2 = document.createElement('td'); + col2.appendChild(field); + var row = document.createElement('tr'); + row.appendChild(col1); + row.appendChild(col2); + row.style.verticalAlign = 'center'; + + content.appendChild(row); + } + + var component = this; // capture in closure below + this.sch.dialog('Edit Properties',content,function(content) { + var fields = content.fields; + for (var i = fields.length - 1; i >= 0; i--) + component.properties[fields[i][0]] = fields[i][1].value; + component.sch.redraw(); // component is selected, so this will redraw it + }); + return true; + } else return false; +} + +// clear the labels on all connections +Component.prototype.clear_labels = function() { + for (var i = this.connections.length - 1; i >=0; --i) { + this.connections[i].clear_label(); + } +} + +// default action: don't propagate label +Component.prototype.propagate_label = function(label) { +} + +// give components a chance to generate default labels for their connection(s) +// default action: do nothing +Component.prototype.add_default_labels = function() { +} + +// component should generate labels for all unlabeled connections +Component.prototype.label_connections = function() { + for (var i = this.connections.length - 1; i >=0; --i) { + var cp = this.connections[i]; + if (!cp.label) + cp.propagate_label(this.sch.get_next_label()); + } +} + +//////////////////////////////////////////////////////////////////////////////// +// +// Connection point +// +//////////////////////////////////////////////////////////////////////////////// + +connection_point_radius = 2; + +function ConnectionPoint(parent,x,y) { + this.parent = parent; + this.offset_x = x; + this.offset_y = y; + this.location = ''; + this.update_location(); + this.label = null; +} + +ConnectionPoint.prototype.toString = function() { + return ''; +} + +ConnectionPoint.prototype.json = function() { + return this.label; +} + +ConnectionPoint.prototype.clear_label = function() { + this.label = null; +} + +ConnectionPoint.prototype.propagate_label = function(label) { + // should we check if existing label is the same? it should be... + + if (this.label == null) { + // label this connection point + this.label = label; + + // propagate label to coincident connection points + this.parent.sch.propagate_label(label,this.location); + + // possibly label other cp's for this device? + this.parent.propagate_label(label); + } +} + +ConnectionPoint.prototype.update_location = function() { + // update location string which we use as a key to find coincident connection points + var old_location = this.location; + var parent = this.parent; + var nx = parent.transform_x(this.offset_x,this.offset_y) + parent.x; + var ny = parent.transform_y(this.offset_x,this.offset_y) + parent.y; + this.x = nx; + this.y = ny; + this.location = nx + ',' + ny; + + // add ourselves to the connection list for the new location + parent.sch.update_connection_point(this,old_location); +} + +ConnectionPoint.prototype.coincident = function(x,y) { + return this.x==x && this.y==y; +} + +ConnectionPoint.prototype.draw = function(c,n) { + if (n != 2) + this.parent.draw_circle(c,this.offset_x,this.offset_y,connection_point_radius,n > 2); +} + +//////////////////////////////////////////////////////////////////////////////// +// +// Wire +// +//////////////////////////////////////////////////////////////////////////////// + +near_distance = 2; // how close to wire counts as "near by" + +function Wire(sch,x1,y1,x2,y2) { + // arbitrarily call x1,y1 the origin + Component.call(this,sch,x1,y1,0); + this.dx = x2 - x1; + this.dy = y2 - y1; + this.add_connection(0,0); + this.add_connection(this.dx,this.dy); + + // compute bounding box (expanded slightly) + var r = [0,0,this.dx,this.dy]; + canonicalize(r); + r[0] -= near_distance; + r[1] -= near_distance; + r[2] += near_distance; + r[3] += near_distance; + this.bounding_box = r; + this.update_coords(); // update bbox + + // used in selection calculations + this.len = Math.sqrt(this.dx*this.dx + this.dy*this.dy); +} +Wire.prototype = new Component(); +Wire.prototype.constructor = Wire; + +Wire.prototype.toString = function() { + return ''; +} + +Wire.prototype.json = function() { + var json = ['w',[this.x, this.y, this.x+this.dx, this.y+this.dy]]; + return json; +} + +Wire.prototype.draw = function(c) { + this.draw_line(c,0,0,this.dx,this.dy); +} + +Wire.prototype.clone = function(sch,x,y) { + return new Wire(sch,x,y,x+this.dx,y+this.dy); +} + +Wire.prototype.near = function(x,y) { + // crude check: (x,y) within expanded bounding box of wire + if (inside(this.bbox,x,y)) { + // compute distance between x,y and nearst point on line + // http://www.allegro.cc/forums/thread/589720 + var D = Math.abs((x - this.x)*this.dy - (y - this.y)*this.dx)/this.len; + if (D <= near_distance) return true; + } + return false; +} + +Wire.prototype.select = function(x,y,shiftKey) { + this.was_previously_selected = this.selected; + if (this.near(x,y)) { + this.set_select(shiftKey ? !this.selected : true); + return true; + } else return false; +} + +// selection rectangle selects wire only if it includes +// one of the end points +Wire.prototype.select_rect = function(s) { + this.was_previously_selected = this.selected; + if (inside(s,this.x,this.y) || inside(s,this.x+this.dx,this.y+this.dy)) + this.set_select(true); +} + +// if connection point of component c bisects the +// wire represented by this compononent, return that +// connection point. Otherwise return null. +Wire.prototype.bisect = function(c) { + for (var i = c.connections.length - 1; i >= 0; --i) { + var cp = c.connections[i]; + var x = cp.x; + var y = cp.y; + + // crude check: (x,y) within expanded bounding box of wire + if (inside(this.bbox,x,y)) { + // compute distance between x,y and nearst point on line + // http://www.allegro.cc/forums/thread/589720 + var D = Math.abs((x - this.x)*this.dy - (y - this.y)*this.dx)/this.len; + // final check: ensure point isn't an end point of the wire + if (D < 1 && !this.connections[0].coincident(x,y) && !this.connections[1].coincident(x,y)) + return cp; + } + } + return null; +} + +Wire.prototype.move_end = function() { + this.sch.check_wires(this); +} + +// wires "conduct" their label to the other end +Wire.prototype.propagate_label = function(label) { + // don't worry about relabeling a cp, it won't recurse! + this.connections[0].propagate_label(label); + this.connections[1].propagate_label(label); +} + +// some actual component will start the labeling of electrical nodes, +// so do nothing here +Wire.prototype.label_connections = function() { +} + +//////////////////////////////////////////////////////////////////////////////// +// +// Ground +// +//////////////////////////////////////////////////////////////////////////////// + +function Ground(sch,x,y,rotation) { + Component.call(this,sch,x,y,rotation); + this.add_connection(0,0); + this.bounding_box = [-6,0,6,8]; + this.update_coords(); + this.type = 'g'; +} +Ground.prototype = new Component(); +Ground.prototype.constructor = Ground; + +Ground.prototype.toString = function() { + return ''; +} + +Ground.prototype.draw = function(c) { + this.draw_line(c,0,0,0,8); + this.draw_line(c,-6,8,6,8); +} + +Ground.prototype.clone = function(sch,x,y) { + return new Ground(sch,x,y,this.rotation); +} + +// give components a chance to generate a label for their connection(s) +// default action: do nothing +Ground.prototype.add_default_labels = function() { + this.connections[0].propagate_label('0'); // canonical label for GND node +} + +//////////////////////////////////////////////////////////////////////////////// +// +// Resistor +// +//////////////////////////////////////////////////////////////////////////////// + +function Resistor(sch,x,y,rotation,name,r) { + Component.call(this,sch,x,y,rotation); + this.properties['name'] = name; + this.properties['r'] = r ? r : '1'; + this.add_connection(0,0); + this.add_connection(0,48); + this.bounding_box = [-4,0,4,48]; + this.update_coords(); + this.type = 'r'; +} +Resistor.prototype = new Component(); +Resistor.prototype.constructor = Resistor; + +Resistor.prototype.toString = function() { + return ''; +} + +Resistor.prototype.draw = function(c) { + this.draw_line(c,0,0,0,12); + this.draw_line(c,0,12,4,14); + this.draw_line(c,4,14,-4,18); + this.draw_line(c,-4,18,4,22); + this.draw_line(c,4,22,-4,26); + this.draw_line(c,-4,26,4,30); + this.draw_line(c,4,30,-4,34); + this.draw_line(c,-4,34,0,36); + this.draw_line(c,0,36,0,48); + if (this.properties['r']) + this.draw_text(c,this.properties['r']+'\u03A9',5,24,3,property_size); + if (this.properties['name']) + this.draw_text(c,this.properties['name'],-5,24,5,property_size); +} + +Resistor.prototype.clone = function(sch,x,y) { + return new Resistor(sch,x,y,this.rotation,'',this.properties['r']); +} + +//////////////////////////////////////////////////////////////////////////////// +// +// Capacitor +// +//////////////////////////////////////////////////////////////////////////////// + +function Capacitor(sch,x,y,rotation,name,c) { + Component.call(this,sch,x,y,rotation); + this.properties['name'] = name; + this.properties['c'] = c ? c : '1p'; + this.add_connection(0,0); + this.add_connection(0,48); + this.bounding_box = [-8,0,8,48]; + this.update_coords(); + this.type = 'c'; +} +Capacitor.prototype = new Component(); +Capacitor.prototype.constructor = Capacitor; + +Capacitor.prototype.toString = function() { + return ''; +} + +Capacitor.prototype.draw = function(c) { + this.draw_line(c,0,0,0,22); + this.draw_line(c,-8,22,8,22); + this.draw_line(c,-8,26,8,26); + this.draw_line(c,0,26,0,48); + if (this.properties['c']) + this.draw_text(c,this.properties['c']+'F',9,24,3,property_size); + if (this.properties['name']) + this.draw_text(c,this.properties['name'],-9,24,5,property_size); +} + +Capacitor.prototype.clone = function(sch,x,y) { + return new Capacitor(sch,x,y,this.rotation,'',this.properties['c']); +} + +//////////////////////////////////////////////////////////////////////////////// +// +// Inductor +// +//////////////////////////////////////////////////////////////////////////////// + +function Inductor(sch,x,y,rotation,name,l) { + Component.call(this,sch,x,y,rotation); + this.properties['name'] = name; + this.properties['l'] = l ? l : '1n'; + this.add_connection(0,0); + this.add_connection(0,48); + this.bounding_box = [-4,0,5,48]; + this.update_coords(); + this.type = 'l'; +} +Inductor.prototype = new Component(); +Inductor.prototype.constructor = Inductor; + +Inductor.prototype.toString = function() { + return ''; +} + +Inductor.prototype.draw = function(c) { + this.draw_line(c,0,0,0,14); + this.draw_arc(c,0,18,4,6*Math.PI/4,3*Math.PI/4); + this.draw_arc(c,0,24,4,5*Math.PI/4,3*Math.PI/4); + this.draw_arc(c,0,30,4,5*Math.PI/4,2*Math.PI/4); + this.draw_line(c,0,34,0,48); + + if (this.properties['l']) + this.draw_text(c,this.properties['l']+'H',6,24,3,property_size); + if (this.properties['name']) + this.draw_text(c,this.properties['name'],-3,24,5,property_size); +} + +Inductor.prototype.clone = function(sch,x,y) { + return new Inductor(sch,x,y,this.rotation,'',this.properties['l']); +} + +//////////////////////////////////////////////////////////////////////////////// +// +// Source +// +//////////////////////////////////////////////////////////////////////////////// + +function Source(sch,x,y,rotation,name,type,value) { + Component.call(this,sch,x,y,rotation); + this.type = type; + this.properties['name'] = name; + this.properties['value'] = value ? value : '1'; + this.add_connection(0,0); + this.add_connection(0,48); + this.bounding_box = [-12,0,12,48]; + this.update_coords(); +} +Source.prototype = new Component(); +Source.prototype.constructor = Source; + +Source.prototype.toString = function() { + return '<'+this.type+'source '+this.properties['params']+' ('+this.x+','+this.y+')>'; +} + +Source.prototype.draw = function(c) { + this.draw_line(c,0,0,0,12); + this.draw_circle(c,0,24,12,false); + this.draw_line(c,0,36,0,48); + + if (this.type == 'v') { // voltage source + // draw + and - + this.draw_line(c,8,5,8,11); + this.draw_line(c,5,8,11,8); + this.draw_line(c,5,40,11,40); + // draw V + this.draw_line(c,-3,20,0,28); + this.draw_line(c,3,20,0,28); + } else if (this.type == 'i') { // current source + // draw arrow: pos to neg + this.draw_line(c,0,16,0,32); + this.draw_line(c,-3,24,0,32); + this.draw_line(c,3,24,0,32); + } + + if (this.properties['name']) + this.draw_text(c,this.properties['name'],-13,24,5,property_size); + if (this.properties['value']) + this.draw_text(c,this.properties['value']+(this.type=='v'?'V':'A'),13,24,3,property_size); +} + +Source.prototype.clone = function(sch,x,y) { + return new Source(sch,x,y,this.rotation,'',this.type,this.properties['value']); +} + +function VSource(sch,x,y,rotation,name,value) { + Source.call(this,sch,x,y,rotation,name,'v',value); + this.type = 'v'; +} +VSource.prototype = new Component(); +VSource.prototype.constructor = VSource; +VSource.prototype.toString = Source.prototype.toString; +VSource.prototype.draw = Source.prototype.draw; +VSource.prototype.clone = Source.prototype.clone; + +function ISource(sch,x,y,rotation,name,value) { + Source.call(this,sch,x,y,rotation,name,'i',value); + this.type = 'i'; +} +ISource.prototype = new Component(); +ISource.prototype.constructor = ISource; +ISource.prototype.toString = Source.prototype.toString; +ISource.prototype.draw = Source.prototype.draw; +ISource.prototype.clone = Source.prototype.clone; diff --git a/js/schematic.js-old b/js/schematic.js-old new file mode 100644 index 0000000000..903a678973 --- /dev/null +++ b/js/schematic.js-old @@ -0,0 +1,1587 @@ +////////////////////////////////////////////////////////////////////////////// +// +// Simple schematic capture +// +//////////////////////////////////////////////////////////////////////////////// + +// Chris Terman, Nov. 2011 + +// add schematics to a document with +// +// +// +// other attributes you can add to the input tag: +// width -- width in pixels of diagram +// height -- height in pixels of diagram +// parts -- comma-separated list of parts for parts bin (see parts_map) + +// TO DO: + +// - read initial diagram from value of hidden input field +// - write diagram state into value of hidden input field +// - wire labels? +// - devices: diode, nfet, pfet, opamp, scope probe +// - icons for test equipment? (scope, sig gen, counter, ...) + +// - rotate multiple objects around their center of mass +// - rubber band wires when moving components +// - add help messages/tooltips +// - tool bar (zoom in/zoom out, rotate, mode: wire/select, save/restore, simulate, help) +// - scroll canvas +// - freeze_diagram, freeze_properties attributes (freeze certain components/properties?) +// - add thumb to resize work area + +// - label nodes, extract component netlist +// - simulation: operating points, trans, ac analysis, sweeps? +// - how to integrate plot display? + +// add ourselves to the tasks that get performed when window is loaded +window.onload = add_schematic_handler(window.onload); + +function update_schematics() { + // set up each schematic on the page + var schematics = document.getElementsByClassName('schematic'); + for (var i = schematics.length - 1; i >= 0; i--) + if (schematics[i].getAttribute("loaded") != "true") { + new Schematic(schematics[i]); + schematics[i].setAttribute("loaded","true"); + } +} + +function add_schematic_handler(other_onload) { + return function() { + // execute othe onload functions first + if (other_onload) other_onload(); + + update_schematics(); + } +} + +background_style = 'rgb(200,255,200)'; +element_style = 'rgb(255,255,255)'; + +// list of all the defined parts +parts_map = { + 'g': Ground, + 'v': VSource, + 'i': ISource, + 'r': Resistor, + 'c': Capacitor, + 'l': Inductor, +}; + +/////////////////////////////////////////////////////////////////////////////// +// +// Schematic = diagram + parts bin + status area +// +//////////////////////////////////////////////////////////////////////////////// + +// setup a schematic by populating the
with the appropriate children +function Schematic(input) { + var div = document.createElement('div'); + // set up div so we can position elements inside of it + div.style.position = 'relative'; + + // grab attributes from the
that created us + this.div = div; + this.grid = 8; + + this.scale = 2; + this.origin_x = 0; + this.origin_y = 0; + + // start with a background element with normal positioning + this.background = document.createElement('canvas'); + this.background.style.backgroundColor = background_style; + + this.status_div = document.createElement('div'); + this.status_div.style.borderStyle = 'solid'; + this.status_div.style.borderWidth = '1px'; + this.status_div.style.position = 'absolute'; + this.status_div.style.padding = '2px'; + this.status_div.style.backgroundColor = element_style; + this.status = document.createTextNode('Ready.'); + this.status_div.appendChild(this.status); + + this.connection_points = new Array(); // location string => list of cp's + this.components = []; + + // this is where schematic is rendered + this.canvas = document.createElement('canvas'); + this.canvas.tabIndex = 1; // so we get keystrokes + this.canvas.style.borderStyle = 'solid'; + this.canvas.style.borderWidth = '1px'; + this.canvas.style.position = 'absolute'; + + this.canvas.schematic = this; + this.canvas.addEventListener('mousemove',this.mouse_move,false); + this.canvas.addEventListener('mouseover',this.mouse_enter,false); + this.canvas.addEventListener('mouseout',this.mouse_leave,false); + this.canvas.addEventListener('mousedown',this.mouse_down,false); + this.canvas.addEventListener('mouseup',this.mouse_up,false); + this.canvas.addEventListener('dblclick',this.double_click,false); + this.canvas.addEventListener('keydown',this.key_down,false); + this.canvas.addEventListener('keypress',this.key_press,false); + + // make the canvas "clickable" by registering a dummy click handler + // this should make things work on the iPad + this.canvas.addEventListener('click',function(){},false); + + this.dragging = false; + this.drawCursor = false; + this.cursor_x = 0; + this.cursor_y = 0; + this.draw_cursor = null; + this.select_rect = null; + this.wire = null; + + // repaint simply draws this buffer and then adds selected elements on top + this.bg_image = document.createElement('canvas'); + + // use user-supplied list of parts if supplied + // else just populate parts bin with all the parts + var parts = input.getAttribute('parts'); + if (parts) parts = parts.split(','); + else { + parts = new Array(); + for (var p in parts_map) parts.push(p); + } + + // now add the parts to the parts bin + var parts_left = this.width + 3 + background_margin; + var parts_top = background_margin; + this.parts_bin = []; + for (var i = 0; i < parts.length; i++) { + var part = new Part(this); + part.set_component(new parts_map[parts[i]](part,0,0,0)); + this.parts_bin.push(part); + } + + // add all elements to the DOM + div.appendChild(this.background); + div.appendChild(this.canvas); + div.appendChild(this.status_div); + for (var i = 0; i < this.parts_bin.length; i++) + div.appendChild(this.parts_bin[i].canvas); + input.parentNode.insertBefore(div,input.nextSibling); + + // make sure other code can find us! + input.schematic = this; + this.input = input; + + // set locations of all the elements in the editor + var w = parseInt(input.getAttribute('width')); + var h = parseInt(input.getAttribute('height')); + this.set_locations(w,h); +} + +background_margin = 5; +part_w = 56; // size of a parts bin compartment +part_h = 56; +status_height = 18; +thumb_style = 'rgb(128,128,128)'; + +// w,h are the dimensions of the canvas, everyone else is positioned accordingly +Schematic.prototype.set_locations = function(w,h) { + // limit the shrinkage factor + w = Math.max(w,120); + h = Math.max(h,120); + + this.width = w; + this.height = h; + this.bg_image.width = w; + this.bg_image.height = h; + + this.min_x = 0; + this.min_y = 0; + this.max_x = w/this.scale; + this.max_y = h/this.scale; + + // configure canvas + this.canvas.style.left = background_margin + 'px'; + this.canvas.style.top = background_margin + 'px'; + this.canvas.width = w; + this.canvas.height = h; + this.redraw_background(); // redraw diagram + + // configure status bar + this.status_div.style.left = background_margin + 'px'; + this.status_div.style.top = this.canvas.offsetTop + this.canvas.offsetHeight + 3 + 'px'; + this.status_div.style.width = (w - 4) + 'px'; // subtract interior padding + this.status_div.style.height = status_height + 'px'; + + // configure parts bin + var total_w = this.canvas.offsetLeft + this.canvas.offsetWidth; + var parts_left = total_w + 3; + var parts_top = background_margin; + var parts_h_limit = this.canvas.offsetTop + this.canvas.offsetHeight; + for (var i = 0; i < this.parts_bin.length; i++) { + var part = this.parts_bin[i]; + part.set_location(parts_left,parts_top); + + total_w = part.right(); + parts_top = part.bottom()-1; + if (parts_top + part_h > parts_h_limit) { + parts_left = total_w - 1; + parts_top = background_margin; + } + } + + // configure background + var total_h = this.status_div.offsetTop + this.status_div.offsetHeight + background_margin; + total_w += background_margin; + this.background.height = total_h; + this.background.width = total_w; + + /* enable when there's support for resizing schematic + // redraw thumb + var c = this.background.getContext('2d'); + c.clearRect(0,0,w,h); + c.strokeStyle = thumb_style; + c.lineWidth = 1; + c.beginPath(); + w = total_w - 1; + h = total_h - 1; + c.moveTo(w,h-4); c.lineTo(w-4,h); + c.moveTo(w,h-8); c.lineTo(w-8,h); + c.moveTo(w,h-12); c.lineTo(w-12,h); + c.stroke(); + */ +} + +// update the value field of our corresponding input field with JSON +// representation of schematic +Schematic.prototype.update_value = function() { + // to do: fill in this.input.value +} + +Schematic.prototype.add_component = function(new_c) { + this.components.push(new_c); + + // create undoable edit record here +} + +Schematic.prototype.remove_component = function(c) { + var index = this.components.indexOf(c); + if (index != -1) this.components.splice(index,1); +} + +// add connection point to list of connection points at that location +Schematic.prototype.add_connection_point = function(cp) { + cplist = this.connection_points[cp.location] + if (cplist) cplist.push(cp); + else { + cplist = [cp]; + this.connection_points[cp.location] = cplist; + } + + // return list of conincident connection points + return cplist; +} + +// remove connection point from the list points at the old location +Schematic.prototype.remove_connection_point = function(cp,old_location) { + // remove cp from list at old location + var cplist = this.connection_points[old_location]; + if (cplist) { + var index = cplist.indexOf(cp); + if (index != -1) { + cplist.splice(index,1); + // if no more connections at this location, remove + // entry from array to keep our search time short + if (cplist.length == 0) + delete this.connection_points[old_location]; + } + } +} + +// connection point has changed location: remove, then add +Schematic.prototype.update_connection_point = function(cp,old_location) { + this.remove_connection_point(cp,old_location); + return this.add_connection_point(cp); +} + +// add a wire to the schematic +Schematic.prototype.add_wire = function(x1,y1,x2,y2) { + var new_wire = new Wire(this,x1,y1,x2,y2); + this.add_component(new_wire); + new_wire.move_end(); + return new_wire; +} + +// see if connection points of component c split any wires +Schematic.prototype.check_wires = function(c) { + for (var i = this.components.length - 1; i >=0; --i) { + var cc = this.components[i]; + if (cc != c) { // don't check a component against itself + // only wires will do return non-null from a bisect call + var cp = cc.bisect(c); + if (cp) { + // cc is a wire bisected by connection point cp + + // remove biscted wire + cc.delete(); + + // add two new wires with cp in the middle + this.add_wire(cc.x,cc.y,cp.x,cp.y); + this.add_wire(cc.x+cc.dx,cc.y+cc.dy,cp.x,cp.y); + this.redraw_background(); + break; + } + } + } +} + +/////////////////////////////////////////////////////////////////////////////// +// +// Drawing support -- deals with scaling and scrolling of diagrama +// +//////////////////////////////////////////////////////////////////////////////// + +// here to redraw background image containing static portions of the schematic. +// Also redraws dynamic portion. +Schematic.prototype.redraw_background = function() { + var c = this.bg_image.getContext('2d'); + var w = this.bg_image.width; + var h = this.bg_imageheight; + + // paint background color + c.fillStyle = element_style; + c.fillRect(0,0,this.width,this.height); + + // border + //c.strokeStyle = "rgb(0,0,0)"; + //c.strokeRect(0,0,this.width,this.height); + + // grid + c.strokeStyle = "rgb(128,128,128)"; + var first_x = this.min_x; + var last_x = this.max_x; + var first_y = this.min_y; + var last_y = this.max_y; + for (var i = first_x; i < last_x; i += this.grid) + this.draw_line(c,i,first_y,i,last_y,0.1); + for (var i = first_y; i < last_y; i += this.grid) + this.draw_line(c,first_x,i,last_x,i,0.1); + + // unselected components + for (var i = this.components.length - 1; i >= 0; --i) { + var component = this.components[i]; + if (!component.selected) component.draw(c); + } + + this.redraw(); // background changed, redraw on screen +} + +// redraw what user sees = static image + dynamic parts +Schematic.prototype.redraw = function() { + var c = this.canvas.getContext('2d'); + + // put static image in the background + c.drawImage(this.bg_image, 0, 0); + + // selected components + for (var i = this.components.length - 1; i >= 0; --i) { + var component = this.components[i]; + if (component.selected) component.draw(c); + } + + // connection points: draw one at each location + for (var location in this.connection_points) { + var cplist = this.connection_points[location]; + cplist[0].draw(c,cplist.length); + } + + // draw new wire + if (this.wire) { + var r = this.wire; + c.strokeStyle = selected_style; + this.draw_line(c,r[0],r[1],r[2],r[3],1); + } + + // draw selection rectangle + if (this.select_rect) { + var r = this.select_rect; + c.lineWidth = 1; + c.strokeStyle = selected_style; + c.beginPath(); + c.moveTo(r[0],r[1]); + c.lineTo(r[0],r[3]); + c.lineTo(r[2],r[3]); + c.lineTo(r[2],r[1]); + c.lineTo(r[0],r[1]); + c.stroke(); + } + + // finally overlay cursor + if (this.drawCursor && this.draw_cursor) { + //var x = this.cursor_x; + //var y = this.cursor_y; + //this.draw_text(c,'('+x+','+y+')',x+this.grid,y-this.grid,10); + this.draw_cursor(c,this.cursor_x,this.cursor_y); + } +} + +// draws a cross cursor +Schematic.prototype.cross_cursor = function(c,x,y) { + this.draw_line(c,x-this.grid,y,x+this.grid,y,1); + this.draw_line(c,x,y-this.grid,x,y+this.grid,1); +} + +Schematic.prototype.draw_line = function(c,x1,y1,x2,y2,width) { + c.lineWidth = width*this.scale; + c.beginPath(); + c.moveTo((x1 - this.origin_x) * this.scale,(y1 - this.origin_y) * this.scale); + c.lineTo((x2 - this.origin_x) * this.scale,(y2 - this.origin_y) * this.scale); + c.stroke(); +} + +Schematic.prototype.draw_arc = function(c,x,y,radius,start_radians,end_radians,anticlockwise,width,filled) { + c.lineWidth = width*this.scale; + c.beginPath(); + c.arc((x - this.origin_x)*this.scale,(y - this.origin_y)*this.scale,radius*this.scale, + start_radians,end_radians,anticlockwise); + if (filled) c.fill(); + else c.stroke(); +} + +Schematic.prototype.draw_text = function(c,text,x,y,size) { + c.font = size*this.scale+'pt sans-serif' + c.fillText(text,(x - this.origin_x) * this.scale,(y - this.origin_y) * this.scale); +} + +// add method to canvas to compute relative coords for event +HTMLCanvasElement.prototype.relMouseCoords = function(event){ + // run up the DOM tree to figure out coords for top,left of canvas + var totalOffsetX = 0; + var totalOffsetY = 0; + var canvasY = 0; + var currentElement = this; + do { + totalOffsetX += currentElement.offsetLeft; + totalOffsetY += currentElement.offsetTop; + } + while(currentElement = currentElement.offsetParent); + + // now compute relative position of click within the canvas + this.mouse_x = event.pageX - totalOffsetX; + this.mouse_y = event.pageY - totalOffsetY; +} + +/////////////////////////////////////////////////////////////////////////////// +// +// Event handling +// +//////////////////////////////////////////////////////////////////////////////// + +// process special keys here since they don't get delivered correctly on keypress +Schematic.prototype.key_down = function(event) { + if (!event) event = window.event; + var sch = (window.event) ? event.srcElement.schematic : event.target.schematic; + var code = event.keyCode; + + if (code == 8 || code == 46) { + // delete selected components + for (var i = sch.components.length - 1; i >= 0; --i) { + var component = sch.components[i]; + if (component.selected) component.delete(1); + } + sch.redraw(); + event.preventDefault(); + return false; + } + return true; +} + +// process normal characters +Schematic.prototype.key_press = function(event) { + if (!event) event = window.event; + var sch = (window.event) ? event.srcElement.schematic : event.target.schematic; + var code = window.event ? event.keyCode : event.charCode; + var char = String.fromCharCode(code); + + if (char == 'r' || char == 'R') { + // rotate + for (var i = sch.components.length - 1; i >= 0; --i) { + var component = sch.components[i]; + if (component.selected) component.rotate(1); + } + sch.redraw(); + event.preventDefault(); + return false; + } + return true; +} + +Schematic.prototype.mouse_enter = function(event) { + if (!event) event = window.event; + var sch = (window.event) ? event.srcElement.schematic : event.target.schematic; + + // see if user has selected a new part + if (sch.new_part) { + // grab incoming part, turn off selection of parts bin + var part = sch.new_part; + sch.new_part = null; + part.select(false); + + // make a clone of the component in the parts bin + part = part.component.clone(sch,sch.cursor_x,sch.cursor_y); + + // unselect everything else in the schematic, add part and select it + sch.unselect_all(-1); + sch.redraw_background(); // so we see any components that got unselected + sch.add_component(part); + part.set_select(true); + + // and start dragging it + sch.drag_begin(); + } + + sch.drawCursor = true; + sch.redraw(); + sch.canvas.focus(); // capture key strokes +} + +Schematic.prototype.mouse_leave = function(event) { + if (!event) event = window.event; + var sch = (window.event) ? event.srcElement.schematic : event.target.schematic; + sch.drawCursor = false; + sch.redraw(); +} + +Schematic.prototype.unselect_all = function(which) { + for (var i = this.components.length - 1; i >= 0; --i) + if (i != which) this.components[i].set_select(false); +} + +Schematic.prototype.mouse_down = function(event) { + if (!event) event = window.event; + else event.preventDefault(); + var sch = (window.event) ? event.srcElement.schematic : event.target.schematic; + + // determine where event happened in schematic coordinates + sch.canvas.relMouseCoords(event); + var x = sch.canvas.mouse_x/sch.scale + sch.origin_x; + var y = sch.canvas.mouse_y/sch.scale + sch.origin_y; + sch.cursor_x = Math.round(x/sch.grid) * sch.grid; + sch.cursor_y = Math.round(y/sch.grid) * sch.grid; + + // is mouse over a connection point? If so, start dragging a wire + var cplist = sch.connection_points[sch.cursor_x + ',' + sch.cursor_y]; + if (cplist && !event.shiftKey) { + sch.unselect_all(-1); + sch.wire = [sch.cursor_x,sch.cursor_y,sch.cursor_x,sch.cursor_y]; + } else { + // give all components a shot at processing the selection event + var which = -1; + for (var i = sch.components.length - 1; i >= 0; --i) + if (sch.components[i].select(x,y,event.shiftKey)) { + if (sch.components[i].selected) { + sch.drag_begin(); + which = i; // keep track of component we found + } + break; + } + // did we just click on a previously selected component? + var reselect = which!=-1 && sch.components[which].was_previously_selected; + + if (!event.shiftKey) { + // if shift key isn't pressed and we didn't click on component + // that was already selected, unselect everyone except component + // we just clicked on + if (!reselect) sch.unselect_all(which); + + // if there's nothing to drag, set up a selection rectangle + if (!sch.dragging) sch.select_rect = [sch.canvas.mouse_x,sch.canvas.mouse_y, + sch.canvas.mouse_x,sch.canvas.mouse_y]; + } + } + + sch.redraw_background(); +} + +Schematic.prototype.mouse_up = function(event) { + if (!event) event = window.event; + else event.preventDefault(); + var sch = (window.event) ? event.srcElement.schematic : event.target.schematic; + + // drawing a new wire + if (sch.wire) { + var r = sch.wire; + sch.wire = null; + + if (r[0]!=r[2] || r[1]!=r[3]) { + // insert wire component + sch.add_wire(r[0],r[1],r[2],r[3]); + sch.redraw_background(); + } else sch.redraw(); + } + + // dragging + if (sch.dragging) sch.drag_end(); + + // selection rectangle + if (sch.select_rect) { + var r = sch.select_rect; + + // if select_rect is a point, we've already dealt with selection + // in mouse_down handler + if (r[0]!=r[2] || r[1]!=r[3]) { + // convert to schematic coordinates + var s = [r[0]/sch.scale + sch.origin_x, r[1]/sch.scale + sch.origin_y, + r[2]/sch.scale + sch.origin_x, r[3]/sch.scale + sch.origin_y]; + canonicalize(s); + + if (!event.shiftKey) sch.unselect_all(); + + // select components that intersect selection rectangle + for (var i = sch.components.length - 1; i >= 0; --i) + sch.components[i].select_rect(s,event.shiftKey); + } + + sch.select_rect = null; + sch.redraw_background(); + } +} + +Schematic.prototype.double_click = function(event) { + if (!event) event = window.event; + else event.preventDefault(); + var sch = (window.event) ? event.srcElement.schematic : event.target.schematic; + + // determine where event happened in schematic coordinates + sch.canvas.relMouseCoords(event); + var x = sch.canvas.mouse_x/sch.scale + sch.origin_x; + var y = sch.canvas.mouse_y/sch.scale + sch.origin_y; + sch.cursor_x = Math.round(x/sch.grid) * sch.grid; + sch.cursor_y = Math.round(y/sch.grid) * sch.grid; + + // see if we double-clicked a component. If so, edit it's properties + for (var i = sch.components.length - 1; i >= 0; --i) + if (sch.components[i].edit_properties(x,y)) break; +} + +Schematic.prototype.drag_begin = function() { + // let components know they're about to move + for (var i = this.components.length - 1; i >= 0; --i) { + var component = this.components[i]; + if (component.selected) component.move_begin(); + } + + // remember where drag started + this.drag_x = this.cursor_x; + this.drag_y = this.cursor_y; + this.dragging = true; +} + +Schematic.prototype.drag_end = function() { + // let components know they're done moving + for (var i = this.components.length - 1; i >= 0; --i) { + var component = this.components[i]; + if (component.selected) component.move_end(); + } + this.dragging = false; +} + +Schematic.prototype.mouse_move = function(event) { + if (!event) event = window.event; + var sch = (window.event) ? event.srcElement.schematic : event.target.schematic; + + sch.canvas.relMouseCoords(event); + var x = sch.canvas.mouse_x/sch.scale + sch.origin_x; + var y = sch.canvas.mouse_y/sch.scale + sch.origin_y; + sch.cursor_x = Math.round(x/sch.grid) * sch.grid; + sch.cursor_y = Math.round(y/sch.grid) * sch.grid; + + if (sch.wire) { + // update new wire end point + sch.wire[2] = sch.cursor_x; + sch.wire[3] = sch.cursor_y; + } else if (sch.dragging) { + // see how far we moved + var dx = sch.cursor_x - sch.drag_x; + var dy = sch.cursor_y - sch.drag_y; + if (dx != 0 || dy != 0) { + // update position for next time + sch.drag_x = sch.cursor_x; + sch.drag_y = sch.cursor_y; + + // give all components a shot at processing the event + for (var i = sch.components.length - 1; i >= 0; --i) { + var component = sch.components[i]; + if (component.selected) component.move(dx,dy); + } + } + } else if (sch.select_rect) { + // update moving corner of selection rectangle + sch.select_rect[2] = sch.canvas.mouse_x; + sch.select_rect[3] = sch.canvas.mouse_y; + //sch.message(sch.select_rect.toString()); + } + + // just redraw dynamic components + sch.redraw(); +} + +/////////////////////////////////////////////////////////////////////////////// +// +// Status message and dialogs +// +//////////////////////////////////////////////////////////////////////////////// + +Schematic.prototype.message = function(message) { + this.status.nodeValue = message; + this.recompute_height(); +} + +Schematic.prototype.append_message = function(message) { + this.status.nodeValue += ' / '+message; + this.recompute_height(); +} + +// set up a dialog with specified title, content and two buttons at +// the bottom: OK and Cancel. If Cancel is clicked, dialog goes away +// and we're done. If OK is clicked, dialog goes away and the +// callback function is called with the content as an argument (so +// that the values of any fields can be captured). +Schematic.prototype.dialog = function(title,content,callback) { + // create the div for the top level of the dialog, add to DOM + var dialog = document.createElement('div'); + dialog.sch = this; + dialog.content = content; + + // div to hold the title + var head = document.createElement('div'); + head.style.backgroundColor = 'black'; + head.style.color = 'white'; + head.style.textAlign = 'center'; + head.style.padding = '5px'; + head.appendChild(document.createTextNode(title)); + dialog.appendChild(head); + + // div to hold the content + var body = document.createElement('div'); + body.appendChild(content); + body.style.padding = '5px'; + dialog.appendChild(body); + + // OK button + var ok_button = document.createElement('span'); + ok_button.appendChild(document.createTextNode('OK')); + ok_button.dialog = dialog; // for the handler to use + ok_button.addEventListener('click',dialog_okay,false); + ok_button.style.border = '1px solid'; + ok_button.style.padding = '5px'; + ok_button.style.margin = '10px'; + + // cancel button + var cancel_button = document.createElement('span'); + cancel_button.appendChild(document.createTextNode('Cancel')); + cancel_button.dialog = dialog; // for the handler to use + cancel_button.addEventListener('click',dialog_cancel,false); + cancel_button.style.border = '1px solid'; + cancel_button.style.padding = '5px'; + cancel_button.style.margin = '10px'; + + // div to hold the two buttons + var buttons = document.createElement('div'); + buttons.appendChild(ok_button); + buttons.appendChild(cancel_button); + buttons.style.padding = '5px'; + buttons.style.margin = '10px'; + dialog.appendChild(buttons); + + // add to DOM + dialog.style.background = 'white'; + dialog.style.zindex = '1000'; + dialog.style.position = 'absolute'; + dialog.style.left = this.canvas.mouse_x+'px'; + dialog.style.top = this.canvas.mouse_y+'px'; + dialog.style.border = '2px solid'; + dialog.callback = callback; + this.div.appendChild(dialog); +} + +// callback when user click "Cancel" in a dialog +function dialog_cancel(event) { + if (!event) event = window.event; + var dialog = (window.event) ? event.srcElement.dialog : event.target.dialog; + + // remove the dialog from the top-level div of the schematic + dialog.parentNode.removeChild(dialog); +} + +// callback when user click "OK" in a dialog +function dialog_okay(event) { + if (!event) event = window.event; + var dialog = (window.event) ? event.srcElement.dialog : event.target.dialog; + + // remove the dialog from the top-level div of the schematic + dialog.parentNode.removeChild(dialog); + + // invoke the callback with the dialog contents as the argument + if (dialog.callback) dialog.callback(dialog.content); +} + +/////////////////////////////////////////////////////////////////////////////// +// +// Parts bin +// +//////////////////////////////////////////////////////////////////////////////// + +// one instance will be created for each part in the parts bin +function Part(sch) { + this.sch = sch; + this.component = null; + this.selected = false; + + // set up canvas + this.canvas = document.createElement('canvas'); + this.canvas.style.borderStyle = 'solid'; + this.canvas.style.borderWidth = '1px'; + this.canvas.style.position = 'absolute'; + this.canvas.height = part_w; + this.canvas.width = part_h; + this.canvas.part = this; + + this.canvas.addEventListener('mousedown',this.mouse_down,false); + this.canvas.addEventListener('mouseup',this.mouse_up,false); + + // make the part "clickable" by registering a dummy click handler + // this should make things work on the iPad + this.canvas.addEventListener('click',function(){},false); +} + +Part.prototype.set_location = function(left,top) { + this.canvas.style.left = left + 'px'; + this.canvas.style.top = top + 'px'; +} + +Part.prototype.right = function() { + return this.canvas.offsetLeft + this.canvas.offsetWidth; +} + +Part.prototype.bottom = function() { + return this.canvas.offsetTop + this.canvas.offsetHeight; +} + +Part.prototype.set_component = function(component) { + this.component = component; + + // figure out scaling and centering of parts icon + var b = component.bounding_box; + var dx = b[2] - b[0]; + var dy = b[3] - b[1]; + this.scale = 1; //Math.min(part_w/(1.2*dx),part_h/(1.2*dy)); + this.origin_x = this.scale*(b[0] + dx/2.0) - part_w/2.0; + this.origin_y = this.scale*(b[1] + dy/2.0) - part_h/2.0; + + this.redraw(); +} + +Part.prototype.redraw = function(part) { + var c = this.canvas.getContext('2d'); + + // paint background color + c.fillStyle = this.selected ? selected_style : element_style; + c.fillRect(0,0,part_w,part_h); + + if (this.component) this.component.draw(c); +} + +Part.prototype.select = function(which) { + this.selected = which; + this.redraw(); +} + +Part.prototype.update_connection_point = function(cp,old_location) { + // no connection points in the parts bin +} + +Part.prototype.draw_line = function(c,x1,y1,x2,y2,width) { + c.lineWidth = width*this.scale; + c.beginPath(); + c.moveTo((x1 - this.origin_x) * this.scale,(y1 - this.origin_y) * this.scale); + c.lineTo((x2 - this.origin_x) * this.scale,(y2 - this.origin_y) * this.scale); + c.stroke(); +} + +Part.prototype.draw_arc = function(c,x,y,radius,start_radians,end_radians,anticlockwise,width,filled) { + c.lineWidth = width*this.scale; + c.beginPath(); + c.arc((x - this.origin_x)*this.scale,(y - this.origin_y)*this.scale,radius*this.scale, + start_radians,end_radians,anticlockwise); + if (filled) c.fill(); + else c.stroke(); +} + +Part.prototype.draw_text = function(c,text,x,y,size) { + // no text displayed for the parts icon +} + +Part.prototype.mouse_down = function(event) { + if (!event) event = window.event; + var part = (window.event) ? event.srcElement.part : event.target.part; + + part.select(true); + part.sch.new_part = part; +} + +Part.prototype.mouse_up = function(event) { + if (!event) event = window.event; + var part = (window.event) ? event.srcElement.part : event.target.part; + + part.select(false); + part.sch.new_part = null; +} + +//////////////////////////////////////////////////////////////////////////////// +// +// Rectangle helper functions +// +//////////////////////////////////////////////////////////////////////////////// + +// rect is an array of the form [left,top,right,bottom] + +// ensure left < right, top < bottom +function canonicalize(r) { + var temp; + + // canonicalize bounding box + if (r[0] > r[2]) { + temp = r[0]; + r[0] = r[2]; + r[2] = temp; + } + if (r[1] > r[3]) { + temp = r[1]; + r[1] = r[3]; + r[3] = temp; + } +} + +function between(x,x1,x2) { + return x1 <= x && x <= x2; +} + +function inside(rect,x,y) { + return between(x,rect[0],rect[2]) && between(y,rect[1],rect[3]); +} + +// only works for manhattan rectangles +function intersect(r1,r2) { + // look for non-intersection, negate result + var result = !(r2[0] > r1[2] || + r2[2] < r1[0] || + r2[1] > r1[3] || + r2[3] < r1[1]); + + // if I try to return the above expression, javascript returns undefined!!! + return result; +} + +//////////////////////////////////////////////////////////////////////////////// +// +// Component base class +// +//////////////////////////////////////////////////////////////////////////////// + +property_size = 5; // point size for Component property text +normal_style = 'rgb(0,0,0)'; // color for unselected components +selected_style = 'rgb(64,255,64)'; // highlight color for selected components + +function Component(sch,x,y,rotation) { + this.sch = sch; + this.x = x; + this.y = y; + this.rotation = rotation; + this.selected = false; + this.properties = new Array(); + this.bounding_box = [0,0,0,0]; // in device coords [left,top,right,bottom] + this.bbox = this.bounding_box; // in absolute coords + this.connections = []; +} + +Component.prototype.add_connection = function(offset_x,offset_y) { + this.connections.push(new ConnectionPoint(this,offset_x,offset_y)); +} + +Component.prototype.update_coords = function() { + var x = this.x; + var y = this.y; + + // update bbox + var b = this.bounding_box; + this.bbox[0] = this.transform_x(b[0],b[1]) + x; + this.bbox[1] = this.transform_y(b[0],b[1]) + y; + this.bbox[2] = this.transform_x(b[2],b[3]) + x; + this.bbox[3] = this.transform_y(b[2],b[3]) + y; + canonicalize(this.bbox); + + // update connections + for (var i = this.connections.length - 1; i >= 0; --i) + this.connections[i].update_location(); +} + +Component.prototype.rotate = function(amount) { + var old_rotation = this.rotation; + this.rotation = (this.rotation + amount) % 8; + this.update_coords(); + + // create an undoable edit record here + // using old_rotation +} + +Component.prototype.move_begin = function() { + // remember where we started this move + this.move_x = this.x; + this.move_y = this.y; +} + +Component.prototype.move = function(dx,dy) { + // update coordinates + this.x += dx; + this.y += dy; + this.update_coords(); +} + +Component.prototype.move_end = function() { + var dx = this.x - this.move_x; + var dy = this.y - this.move_y; + + if (dx != 0 || dy != 0) { + // create an undoable edit record here + + this.sch.check_wires(this); + } +} + +Component.prototype.delete = function() { + // remove connection points from schematic + for (var i = this.connections.length - 1; i >= 0; --i) { + var cp = this.connections[i]; + this.sch.remove_connection_point(cp,cp.location); + } + + // remove component from schematic + this.sch.remove_component(this); + + // create an undoable edit record here +} + +Component.prototype.transform_x = function(x,y) { + var rot = this.rotation; + if (rot == 0 || rot == 6) return x; + else if (rot == 1 || rot == 5) return -y; + else if (rot == 2 || rot == 4) return -x; + else return y; +} + +Component.prototype.transform_y = function(x,y) { + var rot = this.rotation; + if (rot == 1 || rot == 7) return x; + else if (rot == 2 || rot == 6) return -y; + else if (rot == 3 || rot == 5) return -x; + else return y; +} + +Component.prototype.draw_line = function(c,x1,y1,x2,y2) { + c.strokeStyle = this.selected ? selected_style : normal_style; + var nx1 = this.transform_x(x1,y1) + this.x; + var ny1 = this.transform_y(x1,y1) + this.y; + var nx2 = this.transform_x(x2,y2) + this.x; + var ny2 = this.transform_y(x2,y2) + this.y; + this.sch.draw_line(c,nx1,ny1,nx2,ny2,1); +} + +Component.prototype.draw_circle = function(c,x,y,radius,filled) { + if (filled) c.fillStyle = this.selected ? selected_style : normal_style; + else c.strokeStyle = this.selected ? selected_style : normal_style; + var nx = this.transform_x(x,y) + this.x; + var ny = this.transform_y(x,y) + this.y; + + this.sch.draw_arc(c,nx,ny,radius,0,2*Math.PI,false,1,filled); +} + +rot_angle = [ + 0.0, // NORTH (identity) + Math.PI/2, // EAST (rot270) + Math.PI, // SOUTH (rot180) + 3*Math.PI/2, // WEST (rot90) + 0.0, // RNORTH (negy) + Math.PI/2, // REAST (int-neg) + Math.PI, // RSOUTH (negx) + 3*Math.PI/2, // RWEST (int-pos) +]; + +Component.prototype.draw_arc = function(c,x,y,radius,start_radians,end_radians) { + c.strokeStyle = this.selected ? selected_style : normal_style; + var nx = this.transform_x(x,y) + this.x; + var ny = this.transform_y(x,y) + this.y; + this.sch.draw_arc(c,nx,ny,radius, + start_radians+rot_angle[this.rotation],end_radians+rot_angle[this.rotation], + false,1,false); +} + +Component.prototype.draw = function(c) { +} + +// result of rotating an alignment [rot*9 + align] +aOrient = [ + 0, 1, 2, 3, 4, 5, 6, 7, 8, // NORTH (identity) + 2, 5, 8, 1, 4, 7, 0, 3, 6, // EAST (rot270) + 8, 7, 6, 5, 4, 3, 2, 1, 0, // SOUTH (rot180) + 6, 3, 0, 7, 4, 1, 8, 5, 3, // WEST (rot90) + 2, 1, 0, 5, 4, 3, 8, 7, 6, // RNORTH (negy) + 8, 5, 2, 7, 4, 1, 6, 3, 0, // REAST (int-neg) + 6, 7, 8, 3, 4, 5, 0, 1, 2, // RSOUTH (negx) + 0, 3, 6, 1, 4, 7, 2, 5, 8 // RWEST (int-pos) +]; + +textAlign = [ + 'left', 'center', 'right', + 'left', 'center', 'right', + 'left', 'center', 'right' +]; + +textBaseline = [ + 'top', 'top', 'top', + 'middle', 'middle', 'middle', + 'bottom', 'bottom', 'bottom' +]; + +Component.prototype.draw_text = function(c,text,x,y,alignment,size) { + var a = aOrient[this.rotation*9 + alignment]; + c.textAlign = textAlign[a]; + c.textBaseline = textBaseline[a]; + c.fillStyle = this.selected ? selected_style : normal_style; + this.sch.draw_text(c,text, + this.transform_x(x,y) + this.x, + this.transform_y(x,y) + this.y, + size); +} + +Component.prototype.set_select = function(which) { + if (which != this.selected) { + this.selected = which; + // create an undoable edit record here + } +} + +Component.prototype.select = function(x,y,shiftKey) { + this.was_previously_selected = this.selected; + if (inside(this.bbox,x,y)) { + this.set_select(shiftKey ? !this.selected : true); + return true; + } else return false; +} + +Component.prototype.select_rect = function(s) { + this.was_previously_selected = this.selected; + if (intersect(this.bbox,s)) + this.set_select(true); +} + +// if connection point of component c bisects the +// wire represented by this compononent, return that +// connection point. Otherwise return null. +Component.prototype.bisect = function(c) { + return null; +} + +Component.prototype.edit_properties = function(x,y) { + if (inside(this.bbox,x,y)) { + var content = document.createElement('table'); + content.style.marginBotton = '5px'; + content.fields = []; + + // add an field for each property + for (var i in this.properties) { + var label = document.createTextNode(i + ': '); + var field = document.createElement('input'); + field.type = 'text'; + field.value = this.properties[i]; + field.size = 10; + content.fields.push([i,field]); + + var col1 = document.createElement('td'); + col1.appendChild(label); + var col2 = document.createElement('td'); + col2.appendChild(field); + var row = document.createElement('tr'); + row.appendChild(col1); + row.appendChild(col2); + row.style.verticalAlign = 'center'; + + content.appendChild(row); + } + + var component = this; // capture in closure below + this.sch.dialog('Edit Properties',content,function(content) { + var fields = content.fields; + for (var i = fields.length - 1; i >= 0; i--) + component.properties[fields[i][0]] = fields[i][1].value; + component.sch.redraw(); // component is selected, so this will redraw it + }); + return true; + } else return false; +} + +//////////////////////////////////////////////////////////////////////////////// +// +// Connection point +// +//////////////////////////////////////////////////////////////////////////////// + +connection_point_radius = 2; + +function ConnectionPoint(parent,x,y) { + this.parent = parent; + this.offset_x = x; + this.offset_y = y; + this.location = ''; + this.update_location(); +} + +ConnectionPoint.prototype.toString = function() { + return ''; +} + +ConnectionPoint.prototype.update_location = function() { + // update location string which we use as a key to find coincident connection points + var old_location = this.location; + var parent = this.parent; + var nx = parent.transform_x(this.offset_x,this.offset_y) + parent.x; + var ny = parent.transform_y(this.offset_x,this.offset_y) + parent.y; + this.x = nx; + this.y = ny; + this.location = nx + ',' + ny; + + // add ourselves to the connection list for the new location + parent.sch.update_connection_point(this,old_location); +} + +ConnectionPoint.prototype.coincident = function(x,y) { + return this.x==x && this.y==y; +} + +ConnectionPoint.prototype.draw = function(c,n) { + if (n != 2) + this.parent.draw_circle(c,this.offset_x,this.offset_y,connection_point_radius,n > 2); +} + +//////////////////////////////////////////////////////////////////////////////// +// +// Wire +// +//////////////////////////////////////////////////////////////////////////////// + +near_distance = 2; // how close to wire counts as "near by" + +function Wire(sch,x1,y1,x2,y2) { + // arbitrarily call x1,y1 the origin + Component.call(this,sch,x1,y1,0); + this.dx = x2 - x1; + this.dy = y2 - y1; + this.add_connection(0,0); + this.add_connection(this.dx,this.dy); + + // compute bounding box (expanded slightly) + var r = [0,0,this.dx,this.dy]; + canonicalize(r); + r[0] -= near_distance; + r[1] -= near_distance; + r[2] += near_distance; + r[3] += near_distance; + this.bounding_box = r; + this.update_coords(); // update bbox + + // used in selection calculations + this.len = Math.sqrt(this.dx*this.dx + this.dy*this.dy); +} +Wire.prototype = new Component(); +Wire.prototype.constructor = Wire; + +Wire.prototype.toString = function() { + return ''; +} + +Wire.prototype.draw = function(c) { + this.draw_line(c,0,0,this.dx,this.dy); +} + +Wire.prototype.clone = function(sch,x,y) { + return new Wire(sch,x,y,x+this.dx,y+this.dy); +} + +Wire.prototype.near = function(x,y) { + // crude check: (x,y) within expanded bounding box of wire + if (inside(this.bbox,x,y)) { + // compute distance between x,y and nearst point on line + // http://www.allegro.cc/forums/thread/589720 + var D = Math.abs((x - this.x)*this.dy - (y - this.y)*this.dx)/this.len; + if (D <= near_distance) return true; + } + return false; +} + +Wire.prototype.select = function(x,y,shiftKey) { + this.was_previously_selected = this.selected; + if (this.near(x,y)) { + this.set_select(shiftKey ? !this.selected : true); + return true; + } else return false; +} + +// selection rectangle selects wire only if it includes +// one of the end points +Wire.prototype.select_rect = function(s) { + this.was_previously_selected = this.selected; + if (inside(s,this.x,this.y) || inside(s,this.x+this.dx,this.y+this.dy)) + this.set_select(true); +} + +// if connection point of component c bisects the +// wire represented by this compononent, return that +// connection point. Otherwise return null. +Wire.prototype.bisect = function(c) { + for (var i = c.connections.length - 1; i >= 0; --i) { + var cp = c.connections[i]; + var x = cp.x; + var y = cp.y; + + // crude check: (x,y) within expanded bounding box of wire + if (inside(this.bbox,x,y)) { + // compute distance between x,y and nearst point on line + // http://www.allegro.cc/forums/thread/589720 + var D = Math.abs((x - this.x)*this.dy - (y - this.y)*this.dx)/this.len; + // final check: ensure point isn't an end point of the wire + if (D < 1 && !this.connections[0].coincident(x,y) && !this.connections[1].coincident(x,y)) + return cp; + } + } + return null; +} + +Wire.prototype.move_end = function() { + this.sch.check_wires(this); +} + +//////////////////////////////////////////////////////////////////////////////// +// +// Ground +// +//////////////////////////////////////////////////////////////////////////////// + +function Ground(sch,x,y,rotation) { + Component.call(this,sch,x,y,rotation); + this.add_connection(0,0); + this.bounding_box = [-6,0,6,8]; + this.update_coords(); +} +Ground.prototype = new Component(); +Ground.prototype.constructor = Ground; + +Ground.prototype.toString = function() { + return ''; +} + +Ground.prototype.draw = function(c) { + this.draw_line(c,0,0,0,8); + this.draw_line(c,-6,8,6,8); +} + +Ground.prototype.clone = function(sch,x,y) { + return new Ground(sch,x,y,this.rotation); +} + +//////////////////////////////////////////////////////////////////////////////// +// +// Resistor +// +//////////////////////////////////////////////////////////////////////////////// + +function Resistor(sch,x,y,rotation,name,r) { + Component.call(this,sch,x,y,rotation); + this.properties['name'] = name; + this.properties['r'] = r ? r : '1'; + this.add_connection(0,0); + this.add_connection(0,48); + this.bounding_box = [-4,0,4,48]; + this.update_coords(); +} +Resistor.prototype = new Component(); +Resistor.prototype.constructor = Resistor; + +Resistor.prototype.toString = function() { + return ''; +} + +Resistor.prototype.draw = function(c) { + this.draw_line(c,0,0,0,12); + this.draw_line(c,0,12,4,14); + this.draw_line(c,4,14,-4,18); + this.draw_line(c,-4,18,4,22); + this.draw_line(c,4,22,-4,26); + this.draw_line(c,-4,26,4,30); + this.draw_line(c,4,30,-4,34); + this.draw_line(c,-4,34,0,36); + this.draw_line(c,0,36,0,48); + if (this.properties['r']) + this.draw_text(c,this.properties['r']+'\u03A9',5,24,3,property_size); + if (this.properties['name']) + this.draw_text(c,this.properties['name'],-5,24,5,property_size); +} + +Resistor.prototype.clone = function(sch,x,y) { + return new Resistor(sch,x,y,this.rotation,'',this.properties['r']); +} + +//////////////////////////////////////////////////////////////////////////////// +// +// Capacitor +// +//////////////////////////////////////////////////////////////////////////////// + +function Capacitor(sch,x,y,rotation,name,c) { + Component.call(this,sch,x,y,rotation); + this.properties['name'] = name; + this.properties['c'] = c ? c : '1p'; + this.add_connection(0,0); + this.add_connection(0,48); + this.bounding_box = [-8,0,8,48]; + this.update_coords(); +} +Capacitor.prototype = new Component(); +Capacitor.prototype.constructor = Capacitor; + +Capacitor.prototype.toString = function() { + return ''; +} + +Capacitor.prototype.draw = function(c) { + this.draw_line(c,0,0,0,22); + this.draw_line(c,-8,22,8,22); + this.draw_line(c,-8,26,8,26); + this.draw_line(c,0,26,0,48); + if (this.properties['c']) + this.draw_text(c,this.properties['c']+'F',9,24,3,property_size); + if (this.properties['name']) + this.draw_text(c,this.properties['name'],-9,24,5,property_size); +} + +Capacitor.prototype.clone = function(sch,x,y) { + return new Capacitor(sch,x,y,this.rotation,'',this.properties['c']); +} + +//////////////////////////////////////////////////////////////////////////////// +// +// Inductor +// +//////////////////////////////////////////////////////////////////////////////// + +function Inductor(sch,x,y,rotation,name,l) { + Component.call(this,sch,x,y,rotation); + this.properties['name'] = name; + this.properties['l'] = l ? l : '1n'; + this.add_connection(0,0); + this.add_connection(0,48); + this.bounding_box = [-4,0,5,48]; + this.update_coords(); +} +Inductor.prototype = new Component(); +Inductor.prototype.constructor = Inductor; + +Inductor.prototype.toString = function() { + return ''; +} + +Inductor.prototype.draw = function(c) { + this.draw_line(c,0,0,0,14); + this.draw_arc(c,0,18,4,6*Math.PI/4,3*Math.PI/4); + this.draw_arc(c,0,24,4,5*Math.PI/4,3*Math.PI/4); + this.draw_arc(c,0,30,4,5*Math.PI/4,2*Math.PI/4); + this.draw_line(c,0,34,0,48); + + if (this.properties['l']) + this.draw_text(c,this.properties['l']+'H',6,24,3,property_size); + if (this.properties['name']) + this.draw_text(c,this.properties['name'],-3,24,5,property_size); +} + +Inductor.prototype.clone = function(sch,x,y) { + return new Inductor(sch,x,y,this.rotation,'',this.properties['l']); +} + +//////////////////////////////////////////////////////////////////////////////// +// +// Source +// +//////////////////////////////////////////////////////////////////////////////// + +function Source(sch,x,y,rotation,name,type,value) { + Component.call(this,sch,x,y,rotation); + this.type = type; + this.properties['name'] = name; + this.properties['value'] = value ? value : '1'; + this.add_connection(0,0); + this.add_connection(0,48); + this.bounding_box = [-12,0,12,48]; + this.update_coords(); +} +Source.prototype = new Component(); +Source.prototype.constructor = Source; + +Source.prototype.toString = function() { + return '<'+this.type+'source '+this.properties['params']+' ('+this.x+','+this.y+')>'; +} + +Source.prototype.draw = function(c) { + this.draw_line(c,0,0,0,12); + this.draw_circle(c,0,24,12,false); + this.draw_line(c,0,36,0,48); + + if (this.type == 'v') { // voltage source + // draw + and - + this.draw_line(c,8,5,8,11); + this.draw_line(c,5,8,11,8); + this.draw_line(c,5,40,11,40); + // draw V + this.draw_line(c,-3,20,0,28); + this.draw_line(c,3,20,0,28); + } else if (this.type == 'i') { // current source + // draw arrow: pos to neg + this.draw_line(c,0,16,0,32); + this.draw_line(c,-3,24,0,32); + this.draw_line(c,3,24,0,32); + } + + if (this.properties['name']) + this.draw_text(c,this.properties['name'],-13,24,5,property_size); + if (this.properties['value']) + this.draw_text(c,this.properties['value']+(this.type=='v'?'V':'A'),13,24,3,property_size); +} + +Source.prototype.clone = function(sch,x,y) { + return new Source(sch,x,y,this.rotation,'',this.type,this.properties['value']); +} + +function VSource(sch,x,y,rotation,name,value) { + Source.call(this,sch,x,y,rotation,name,'v',value); + +} +VSource.prototype = new Component(); +VSource.prototype.constructor = VSource; +VSource.prototype.toString = Source.prototype.toString; +VSource.prototype.draw = Source.prototype.draw; +VSource.prototype.clone = Source.prototype.clone; + +function ISource(sch,x,y,rotation,name,value) { + Source.call(this,sch,x,y,rotation,name,'i',value); + +} +ISource.prototype = new Component(); +ISource.prototype.constructor = ISource; +ISource.prototype.toString = Source.prototype.toString; +ISource.prototype.draw = Source.prototype.draw; +ISource.prototype.clone = Source.prototype.clone; diff --git a/js/video_player.js b/js/video_player.js new file mode 100644 index 0000000000..811f69eca4 --- /dev/null +++ b/js/video_player.js @@ -0,0 +1,317 @@ +// Things to abstract out to another file + +function postJSON(url, data, callback, csrf) { + $.ajax({ + url: url, + dataType: 'json', + data: data, + success: callback + }); +} + +var global=5; + +// Video player + +var load_id = 0; + +var video_speed = 1.0; + +function change_video_speed(speed, youtube_id) { + new_position = ytplayer.getCurrentTime() * video_speed / speed; + video_speed = speed; + ytplayer.loadVideoById(youtube_id, new_position); +} + +function caption_at(index) { + if (captions==0) + return " "; + + text_array=captions.text + + if ((index>=text_array.length) || (index < 0)) + return " "; + return text_array[index]; +} + +function caption_time_at(index) { + if (captions==0) + return 0; + + time_array=captions.start; + + if (index < 0) + return 0; + if (index>=time_array.length) + return ytplayer.getDuration(); + + return time_array[index] / 1000.0 / video_speed; +} + +function caption_index(now) { + // Returns the index of the current caption, given a time + now = now * video_speed; + + if (captions==0) + return 0; + + time_array=captions.start + + // TODO: Bisection would be better, or something incremental + var i; + for(i=0;i(now*1000)) { + return i-1; + } + } + return i-1; +} + +function update_captions(t) { + var i=caption_index(t); + $("#std_n5").html(caption_at(i-5)); + $("#std_n4").html(caption_at(i-4)); + $("#std_n3").html(caption_at(i-3)); + $("#std_n2").html(caption_at(i-2)); + $("#std_n1").html(caption_at(i-1)); + $("#std_0").html(caption_at(i)); + $("#std_p1").html(caption_at(i+1)); + $("#std_p2").html(caption_at(i+2)); + $("#std_p3").html(caption_at(i+3)); + $("#std_p4").html(caption_at(i+4)); + $("#std_p5").html(caption_at(i+5)); + $("#std_p6").html(caption_at(i+6)); +} + +function title_seek(i) { + // Seek video forwards or backwards by i subtitles + current=caption_index(getCurrentTime()); + new_time=caption_time_at(current+i); + + ytplayer.seekTo(new_time, true); +} + +function updateHTML(elmId, value) { + document.getElementById(elmId).innerHTML = value; +} + +function setytplayerState(newState) { + // updateHTML("playerstate", newState); +} + +// Updates server with location in video so we can resume from the same place +// IMPORTANT TODO: Load test +// POSSIBLE FIX: Move to unload() event and similar +var ajax_video=function(){}; + +function onYouTubePlayerReady(playerId) { + ytplayer = document.getElementById("myytplayer"); + setInterval(updateytplayerInfo, 1000); + setInterval(ajax_video,1000); + ytplayer.addEventListener("onStateChange", "onytplayerStateChange"); + ytplayer.addEventListener("onError", "onPlayerError"); + if((typeof load_id != "undefined") && (load_id != 0)) { + var id=load_id; + loadNewVideo(id, 0); + } + +} + +function videoDestroy() { + load_id = 0; + // TODO/BUG: Figure out why removeEventListener doesn't work + ytplayer.removeEventListener("onStateChange", "onytplayerStateChange"); + ytplayer.removeEventListener("onError", "onPlayerError"); + ytplayer = false; +} + +function log_event(e, d) { + // CRITICAL TODO: Change to AJAX + //$("#eventlog").append("
"); + //$("#eventlog").append(JSON.stringify(e)); + + // TODO: Figure out + // XMLHttpRequest cannot load http://localhost:7000/userlog. Origin http://localhost:8000 is not allowed by Access-Control-Allow-Origin. + + /*window['console'].log(JSON.stringify(e)); + $.get("http://localhost:7000/userlog", + {'user':'pmitros', + 'key':'key', + 'event_type':'unknown', + 'data':'e'}, + function(data) { + });*/ +} + +function seek_slide(type,oe,value) { + //log_event('video', [type, value]); + if(type=='slide') { + // HACK/TODO: Youtube recommends this be false for slide and true for stop. + // Works better on my system with true/true. + // We should test both configurations on low/high bandwidth + // connections, and different browsers + // One issue is that we query the Youtube window every 250ms for position/state + // With false, it returns the old one (ignoring the new seek), and moves the + // scroll bar to the wrong spot. + ytplayer.seekTo(value, true); + } else if (type=='stop') { + ytplayer.seekTo(value, true); + log_event('video', [type, value]); + } + + update_captions(value); +} + +function get_state() { + if (ytplayer) + return [ytplayer.getPlayerState(), + ytplayer.getVideoUrl(), + ytplayer.getDuration(), ytplayer.getCurrentTime(), + ytplayer.getVideoBytesLoaded(), ytplayer.getVideoBytesTotal(), + ytplayer.getVideoStartBytes(), + ytplayer.getVolume(),ytplayer.isMuted(), + ytplayer.getPlaybackQuality(), + ytplayer.getAvailableQualityLevels()]; + return []; +} + +function onytplayerStateChange(newState) { + setytplayerState(newState); + log_event('video', ['State Change',newState, get_state()]); +} + +function onPlayerError(errorCode) { + alert("An error occured: " + errorCode); +} + +function updateytplayerInfo() { + if(ytplayer.getPlayerState()!=3) { + $("#slider").slider("option","max",ytplayer.getDuration()); + $("#slider").slider("option","value",ytplayer.getCurrentTime()); + } + if (getPlayerState() == 1){ + update_captions(getCurrentTime()); + } + + // updateHTML("videoduration", getDuration()); + // updateHTML("videotime", getCurrentTime()); + // updateHTML("startbytes", getStartBytes()); + // updateHTML("volume", getVolume()); +} + +// functions for the api calls +function loadNewVideo(id, startSeconds) { + captions={"start":[0],"end":[0],"text":["Attempting to load captions..."]}; + $.getJSON("/static/subs/"+id+".srt.sjson", function(data) { + captions=data; + }); + load_id = id; + //if ((typeof ytplayer != "undefined") && (ytplayer.type=="application/x-shockwave-flash")) { + // Try it every time. If we fail, we want the error message for now. + // TODO: Add try/catch + try { + ytplayer.loadVideoById(id, parseInt(startSeconds)); + load_id=0; + } + catch(e) { + window['console'].log(JSON.stringify(e)); + } +} + +function cueNewVideo(id, startSeconds) { + if (ytplayer) { + ytplayer.cueVideoById(id, startSeconds); + } +} + +function play() { + if (ytplayer) { + ytplayer.playVideo(); + } +} + +function pause() { + if (ytplayer) { + ytplayer.pauseVideo(); + } +} + +function stop() { + if (ytplayer) { + ytplayer.stopVideo(); + } +} + +function getPlayerState() { + if (ytplayer) { + return ytplayer.getPlayerState(); + } +} + +function seekTo(seconds) { + if (ytplayer) { + ytplayer.seekTo(seconds, true); + } +} + +function getBytesTotal() { + if (ytplayer) { + return ytplayer.getVideoBytesTotal(); + } +} + +function getCurrentTime() { + if (ytplayer) { + return ytplayer.getCurrentTime(); + } +} + +function getDuration() { + if (ytplayer) { + return ytplayer.getDuration(); + } +} + +function getStartBytes() { + if (ytplayer) { + return ytplayer.getVideoStartBytes(); + } +} + +function mute() { + if (ytplayer) { + ytplayer.mute(); + } +} + +function unMute() { + if (ytplayer) { + ytplayer.unMute(); + } +} + +function getEmbedCode() { + alert(ytplayer.getVideoEmbedCode()); +} + +function getVideoUrl() { + alert(ytplayer.getVideoUrl()); +} + +function setVolume(newVolume) { + if (ytplayer) { + ytplayer.setVolume(newVolume); + } +} + +function getVolume() { + if (ytplayer) { + return ytplayer.getVolume(); + } +} + +function clearVideo() { + if (ytplayer) { + ytplayer.clearVideo(); + } +} \ No newline at end of file diff --git a/lib b/lib new file mode 120000 index 0000000000..79deb8f3f6 --- /dev/null +++ b/lib @@ -0,0 +1 @@ +../3rdParty/static/js/ \ No newline at end of file diff --git a/pixel.jpg b/pixel.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8fbe381c7a10554725740e293b400d2901426637 GIT binary patch literal 306 zcmex=LJ%Z3btM5{dxG z5Q+={Y5sqJL6C!ik%5t!QHg;`kdaxC@&6G9QJ~`(PyrWESVRC_lmR4)p%yGEh^h7# V0}nGJ&=zJv278A64UGS90sx~CAwvKF literal 0 HcmV?d00001 diff --git a/staff/agarwal-mit-news-small.jpg b/staff/agarwal-mit-news-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..900038d394837dfeeb95d6584e7d530e58edebcc GIT binary patch literal 11325 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 literal 0 HcmV?d00001 diff --git a/staff/cjt-small.jpg b/staff/cjt-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4e8537de0bd5edb455451265442169f543c696ee GIT binary patch literal 10196 zcmbuF^-~*8(C`BkDN>5N1}81<65OT5o#I+3P~1y#f&`~H#WfUniiF@&q&Ng=ad&z9 zo%ebEf@klio4x(q%+1a2-tIjwJg);@t0*Wd08mg+080M`;CTrk``_&UB>zGFPk{f7 zpL+lVSO6D*3mOU|0F?j*jR57jA3zHLprWGvrw9Cxpufb#dVztBhKhpoPcQQNpB@zj z4Gj$y9Tgo79RNT-+|B?h~5z6aE$|RFiz{kHqCg;&R_0N84CV0WX13g9t?ZJa(Y0&vm(K?%?Z0AN64L`;*)IWaokQWw@-!U{O)NvJ!I)=Qz2I3iBv zp!ZdeX+UTrEf^DVdKN5p;$1kcJG&$o_6+E($LR1OObmGP`YiomPt;8tBmZ94NWoH^ zhu+m_hK}lK>6R7@c%YyPdIkhP{HQ|;qg@@WUGP2w!gimAgU|N|?c1dltjz(?ap22N zhnx&Y0ic-yK=bjDaLk%*y}WT`M!*NnOUT;+wzk{I7v1zP>5jcR|i{@ z6ha=PjS7=rp{aBwy|+PaKtYDD#1u~O=gla1zH47A6Un?;VBZ_v0^krVW5m{kY2o3y zsvoOvDo7IFI+J3pDu6H@p+X!SgY!pkYc5ZjD2w??ycy8bnQ1P^v$&(;AAvNF!&LGO#_(z}3Oj~x*>ItDbY5r}QQBey4547g>TT`KM^t<)pm52N{{+8;W~EelMu5UY{_yODjs zn(%ge2AKCqcG6*b@g0c7jQN-dIVYh%l{8E%sM4O0LticX&O6Zi6<9r}?~QsL<$lhQ zH7`L(r>neE&PV@iJii*-+KnbjV=MbdD%nD#=*c;t#PVhFZEC9jzA2vG{Thypu>(ye zV{Sw0l(mkwMcPXWrsG4;T8?NN-RU01}RKgIUlB5%K5w@px=!o-@Lx&7ljM&YH09M`}HmB#O{3Fi!FoP{L|s= zNKD7Zm?k~C7RUMl;V&aH1r?(}9)42)?n-_>DQk^wufuDSh^4n81zJp|u4hs}zmt5n z`Rm_v9s3h`^5pK?jQmg*TqwP#=R)}z7VFp-ASfM=U)9CUl-Ww}QaUg@iNG)q^9;Ypn2N z6I)6eNznG&dr-`;aT{cK=42`5T%M#&+_u z^d#7gTT*E*KH?d$5FBiH^4^ymh0d}3o#6;a9VIQM6UNcPi8xg1@O-@?H6%A^(rd0N zv^MXtKOP*67Q8F<6lhbdhh4R@t5$;%YRZnOzJ6VfQ)0IEOOW4l-;Ezf_iEqlF4VmG z5l*3pb&YA%b~pd`u%?6U8BhZ*LkNSpD|`Nq@v;ChjgxF`Yj7F_js`p{hR&*Dj8v0! za(}<7JeYa;`q91et~OZHeS(w**zcjS5P) z^ln2w$lR)>c9lMrIQDA|JfM%GMSWpM!{V%Q3jK7;Heg0EtEFtXI$F&LKlu5PnCaS^ zh)y;0AVtsZDl{{W^q^<5r}0-?FP#y z=Gy|$CGwB`LdzBrGZAPT>8!oOX%wtcuagwKC_6$;2&vx7#t{ zF6RMX$L_BOUlc4nV#PVZZc!dbQF}qzj?;yK5)NvYsD}fE{H_EOa`4r@g{y)W;YR&z znAWand9<5~>*BFXKg4Jv9?i>@04Uuu*}~mqpadR}YT7j^mQc;SZs%cB+Pp`!ahiKs zJRzI8ymzDEP)x65XvK6y*1bL^5xSn}=s_AaM>r2t5_vSx`8ypGKBT58NN9I1HRvl( zLnvp&r_q(zP3a~k^fxW@b+pq3ian=$`if9FJ)aG&-A9f^OBA5o)4DH!>lRIMa({u( zBJLDD5JJMljyX8~aQlF=etdOv$;Cyjy!hU!0p~7B_PSvDrr_+zaY~bQv)FAJgxY_s z=#hU96}ny|Mp(>FhU+Az9N{qDY8O(n=*tqx^~Q{>1IuT8=31@p_Wpj1PraN;we)Fj zj#W$DyM1Y2^hU|X#SQ{{=sJxdU*r@x^FZzv%E(Mf^f^LS_nKG__QMh_%}OLTbyKZB z4KRl_h<{v^In3Z~&T+uv(7%#wJ$~Zysp29Q4l3Aj<4TX@>?w2mop<;ZhEW==?b4DVrM`L`9y-fiHY2#E5#KSE1xP11N!V_1f%b^>-vE?eEVR5ds6CEwKKW-Z5==3ESvoG4A zl^a!I2cy~Q>5H(o*S#dVhL&tqXi6lZ?>YDTfRnz2lDIeZg!-gXliq|Xz(3libC>5e z_pgZJYvB++h7>k@#%4Fvh!pU-JM8)Cnr$B=3>HG?V3&df`T#4z;ws8@TyT0;L%!x2%QVE z=SYlKPBZb@(Pccosxy!iOf3mIO4@1vXRg*Nq10)ke(Zx$Y$rm+4f z81S)6#C2_$i<+%#q<`>6KWhgLtsMobN=n4C(fgC4-S5MHqAbtlKLa41i{WTp>9X#^ z$n=|ZnQV{!{k^xTm1+F}-x4nPlHkM@XO7_Q3~{#vGT@I2e4yxRY^4P6U0msF zH8Z>L_-uDht>5vYiS8Oy$)oPH{9o90_;=>1wnSf2=2@6RxMfDU6Ju4|7Dv%+WjP)dY{_N#JN7HCEK`?%JpOP; zVTs?TVwhOpQs+gPwA1lN-Jv??^G3wj&ha=mliJzbF{x4{i?IFFd)K~zJ74=g)_i=-!<|j@#P{nQv$4)kRE${&#NN;+P`z{ z@BH2isH8@x{^+iu@PtasEcG)$C|6BR@WZTbR%)ftv9a6lS7KyFZDd2M&5kOQI^{T- zC47UUjNwcTu(v{c?VJc-Vu2)KbIlXNc|)GLR@15E(Z!5~Mm?!ihcjGVMMA@>zpslV z6|!N`FjsXd$c5$&t!cW9g%k>zPFZp-m9%es6#NP^YdzRBDY zl~lGO{oFe}5l|!5>32NlloEFVUc$K;y)rHn-O@K?dt|yk!RB{X!#5N1J$qFYZ6q@k zBcHsr$$qk1gDeZiEk5>++I^Ycq5x;;)mlmlsd8E7+-~=;^1IA5k;#T8i1T&3=iAW0 zKhT7jiaQm|NMF}5yKf;Tdd9YA`sLshqmD&Sy7>d?AB-Yao%Z1*bHYbfrKoduNgKwu z*SG;p^(9m^fqxJ&eIxOH^QTqynzpc_*j7@FRnc#nY%%uUxWjRMHAkt|Z`^}0;k>Ps zT2}6YJi?haMK%_>TQVz@SMN;YtL7ML#-W)75$wA@`v`z<&Qi`m_{G%@Dda$3xy6Ojg(9;v&q3%dDXp9b*^eJqr>R;-5L~Z6yY5&?=B>~tT}`@$ z!8XItFtnd;Eg)CYkxvJ%G+c1@4}4w~YY3#%`n}t}!k}L2$SkjuR+|F-ko3p!3^i9F zn*`rLN>Si9`5SnjHjl%G%-5-?ddImD-474nA@UIWPgwgd5xeA%60F*H_P#-a?pEpq z--qFRLv{UuysEtIbw~7*?WeVkSr+Dx01S!mUU@CG_Z_1ux`0+^lxGoas|qrwSDU4r#_ZX@XnUAfc!Ccl}>#n?Jysa1n)#b6jE;o1zpT+*5rdy-O!OazU0_kcU(f#Cp*7}W{`OpCM4CZ zPTm&cgPXg23>sr@{@!xLhp+hQ@y(V2){)&aVDl*T!|fcq$7rp9zwePM;^gA584TBp zBQWRlfUMrAZiRw1WEYY(o98~#po#o8?Q>u$nd^6|h5q&QVVCo-9evO&&Q*3Sg;Tbh z@<;Wh!$RHB4H0o3(jy(x$GTn{f=1pyiY%L^zJHE2?(Fgqv%Qzbg+d+~xuE7dhC+ zmJTBBKQ!Is9af20+M#?c)CSuQ``cv~f?az%J*UR^Y9N1mZM9%cn8!z|&Wfive2jzB^-fOuITIt!_}+ zSEAzDD8-QcWX#C^bhfx69b78T2id%-4l+#{WqIjP?ExLyah)#V=p*s2>2)zqLo@R_ z(x;tL^hvVJrE5{;iGjGJ2~`FgJu;3ry*jg~`;92s6aiK16~9?r7?v43D4c1SY!zbl zBbbTz*{EwMNCt|(R!&k2bPH%LV6>dP*v;|D0exXP&OJ*|@Cnx!P*Pmb}4 zCy($GM%aR4>dEKibx@?xsl&=K!X5EnvF-~-l9Z?3d9)(dw@GjG`3iFXet!laDEsRz zTL+D4WV(sADFiD`N3CKv!JB)N*eNSu;pVq4@sKRzF9 z`o5)u-ctzM|8jNtw&AMZ91(*(w`uU=2h-F3y^KgMuNmR(Egi{E_a`pJ1b0gqW1p%} z6k@Y#;H@@F4t()V)E2pNQOsm4Fg7J>l++195_2}Dx2deBAHC1@cH)vNY9WDO=uQM7 zqM*!VPsB45-IA00X5_SzwGl(5iwk5{kQm)dh0pfQUxiyS$_N#`-dPAv{GOn^?sa$3z8g^`36}9wOpn_CeEX@vn*|w5H4|%;7dZmp7G+Awk>eaI5}73TCY-XC~h3{Hr;V zcz!~!pGBQv9wKRiaz4`&NkFmjN@ku44rkiM;su{Vu8+ds!jmyiA57Fh%qHTb_PGY% z+EVCg!h0D)F%}G~@t^{6cgFsCiZrQkw_y=80!<*|W|wWOdb%}NEVq-wK9ZVTdw4qhR<<#clS!EEAFy)$`l*&a}8nf~MVM;OP=wMvNbQWhr_U_cUGbO`k zKy_9MBuWbprFKS2nDD`7rxJp=U3()p7|whC={*_UFFpII83x>foYd_jt$|-`7uQs< zNVE9yC`o}j6jpd>9oY4H;d0~ZflYj9qIaZa{RV4BN{@7%p{ zFda(sV;4X8AQ0audRfU9P0q=m{)^C7^6g{y&4u42I-1Qp@L6!{hWcEHSO|*bmcs>d zn$md-!waqT+vV#3D8D$@zuF1F-j9Xn54n)94dA2f+llQEQ94#Xy4wpC?3`X{O{N>B zfQKBPr)R(o9TlxAvjmA)AU?CstC?Fm;5pJN80uN8B|Og7JpT-k2ku8sE9(1H8wtMM zZ8>_|t$mYYPpodcM*sK61Y(}Z2y4!;G+ivRGX3ZGcY{WX9Z9VQX0rPUxv6%4kRnfn zs-&fnB(Ch(Dw9KhCS>|2E4ci)4GH;Cgcd3(|K#Hpc0L2_h!*|Rh9%Z*6WS7C+KNAkpTSu!xun62IYU!GhMo?;Xc<948v(ZgJ6jYe^u zwC)T+nVBwm9d)lRttQ%8pF)y#C1AW?V~GWY4C-K~%pRO?Qv?^Ee!!aVaIn4uOeU^Z z_n~rVb{e@d@GnE*3}PGAbJl8UWUkri=kXE>N3nH@dj=5F^7WKf!awz;pHrX4G*D0r zY-E&sys<&4uXPtS30NH2vJR)BO+8Q)6hvc-L7|RQ%+Hm?6pYbMicLTpM8kMvx`&Qa z`**gAP+q|CB`IR}@~w-`f{(Dzckd`dASDUzP8I6XEZS4q$-R$|t|)9a_nW1M_>byG z)jQ|T!D_gx0NgJ)c4N-B$sOl2=SW-_Fnxzy(#ae>@(so0Ps<{N`45i#T+}KwvJLTe zJj9(9Cf%<18c){HW5@j7x$zuSQaY+mqTpRalB{yoLc*PvCey-2ZIHJQ>lcnq9!fIg zWAK*5yNRjMlbUari_F`^ZYj{J6{>9>EJ;{YuIdO; zrcPRE{q0NhRT&+R$(O=EmTgw*kO}Q9wCT=ipk71wmxzz>=yDBP@fW$_2kSz%vn0Y; z0+y%T16gR5I&Y#=L?B$WcBIADimq2=>u*vKq9iLFeUAlC;z?i_G!?d*NA_`cD}e6J zmj)t)_e)2TN-tvQ9OX(GeOJrFxOR5C0QKRU2JQJq&E?dKil;q!*7{=V!%>aWkNILT z;g+w8G~Ud(6k8MwxUJTEtUiFQAcG&W&mo$~w_O7JK z08igtFF8v25z`fvvj?LGqv5<@Gk}X6az+WV$?|t73AKV)qiLK{0?PKw93T2Ii`$Uy zf8Uz3f1R)^+n5FiOAHv5IWXC$L4OU+W*LL>LqSQg=!NvR{@7g-O?GJz+p5Z!+J_4K zkqx(0OnG!n(7v9j6VKbrq6@lcYmZwE#q`1m$863h{nm6%q6Gq5_gQxFhA6FRS(HkF z$Tww=8P-ATFc?vIoEw3oRM~b0_Y2;LBcS~-!207yfjb=s=|jMsl_cfa!pU7AZ=ALD zw#v{MHy{H@8X7R^Pbx(@*+uv-GA{3!j8_Di6BSu(_C?YgOpM)Rx^)HX_u3<|Vfq(D zpY7c!e;3x6X_G;*08U0?4^HN5_fHZ4zp|R1K^@ng8M>n&;)IFgXFz}E8w{;pL8PMf zABc01!1>K%m-nvJmqrbp`M)o`eb1|jI)j2Gs!x%<|2j%UR@ct}*%0_Go!>J+?)2QK zj*|l0yMzhQO$GQ@_6Fnuj*%yUl$BZn>afH*%0te(&t8flp1U8Cp2YotDo~JHqB0}@ z*hDh@Um-3J6i@(fI{D}**5g7y;}n>;Zp_as`# z(BB;tD?9^~*8WUVfgz#w;N}BK&0>@Xo1n=0XTbYTvcAi2B@4c1o!WooL5A-|+#pjHSxbM5c(7gE;je*rl#rmWl4_yVSxXw(XhOgk?zrjUjAoLion#81d#b z+Ruu;O!#sKi|`FLgOTksgNL_o6QTZwpq#dwMUpwTEIq#E)@J}K?o<^+;`pYNRg493 zBE4km1DsIO0>Z-oonr|9qoZ63Dr~WA{+{}Cs~vZG%C6O})q*|cZ|9Kf00AZ?=r z+TGiS&#u`U?m5C^pJx)~>TO_x+RXhm2tsv6g=F+*Y^I{Stg=B%1XI)`Hx^ET{LtX~ zS%6~pug+-XiS?pq#JJ#r<+f9!b&SQ5D_Lq4!jfZ-`CVYxDyiG@I;vD#@PJh*Smi-> zPaA(MC`Tlo1-573nY$xgBbfAxBy3O2x>S|ul=DlYd zOe-v(rI(VH>sackxHYg{_=qHR(*t>~%k8$c$KncvUe{=9eO#)hiGo%HZiN#1CEriO zl$p_~!x;uH;I}K;Hfmc79Kzoy^pvMKDVXe21}ip4lanodN5ArRbO{vp>??$RPRJff z*ffY&RwNqK+u%kXuEaFGwJWkDvW#tz{%g>#@-mmj*M#)Zb!kI?<~1_M3^|27txg_$ z9}rbZnZd|Y=|5aeQiinQu;x)I4jlZ#yN9Eo;vA2=y)8xF5ZGB9@+Rry=Z9HR-&U`NgjUOuv3kUQS+l*N+!$*tAGj;c~XEasRCc48*Al zbQ`p(4Q3s%*~|YT2i=-dk({9gdILrn4@0wo7##hiYY?wIBX6afEA#5#NTcwGu&&<{iSek*Bl-@_%`{YWyM3ki%& z+Nhim``I8HEK&{8I7c%q6#=_*^uYS~ra2dg>-9f;Po(QR4(ZiLpFL`Z$5h9a&%gCm zI?;`nL~Q+e2B_At_ui0XHgy(uIbHno& zC}H?i=S8)tqG$Le+9fDwno&7ugm+9s<(#f+AXKMNm z3~FT?xJrUIH>Yrh7Y6jod&~)G;Z&B&T6~l3omN8vpn)Q|MSAhsCBHZ=TN#+Y=*G*X+DI;W zE7Bjhl^o5yeo3n|pOyKmyL4GCuGNJvF%n;EtY6uU)FRjDojSjsorC>C&1SzF4WQ9l zAzCb>DkP+<{VVUG=dqE`zYO%?R0G7N#dRcHmg1D)C`g~fWF0P1YPRUKJKnu?|F2_N zIHJQx&jHqp=*Yv>v{;R1Zd@Rd7DJDCNHCzFF4ho&bGcJJ13uetoNjJ^FQVpKf|93N zSw~Ru>D2-|!Wx)<42B9YSgx}cSI&XUp9OSH*@w!>DVk3LnhGi#j#jI7cnjMPLR8l?oII%nYAemNjKP0sbKp_Qs zS>lu89UGovd#)9ES|U~5{Cg~3zHC%u`mvveq2dAHxOcHF#m*Y9Qwlhhmub~H%Rt*M zZTHE`_SyQT=`{g@hOjgnAwp%`nd^ofL&|~54-&DY*@p*8N5jtmH|vGQRg;eKVjVqN zmO}{Ai)%D!-O|cA-)wd%*laNa@PVYqFOFnQ5tfo8*z=8+ilO=TThIy{4W}{KqvRP- z<(1M(Q>r?%j~t>iy(wHXncW%r-Tw~8pXR6-*2VnqPlxZKsTFqE~m;scA&(+OTy|w^zE=cAcVg`W&xqQf*Z9#m7Uk`ud7jpeP-TwHmOeu~DA$hp zqg9d?<@U)+n33(I~(7vJbKM1+xnUd3E7u7-*vc9kx=)M8y)Z&S9+b*Q+67*qj%K z7yAfNNXnqe9+>{>1OnodRk0?4y&8QHYnDsv;AA%P8%rws%xsqYfG@D8X;7(C1a!BE2_|F$&uKbG*s=&XKsJiR)wTuCW}EmBt)?3 zUL190_yME-z_Bn`$`iN6v!&CvDcUZfRbIzSR-)SQpNxj=8$2=Pnl$fM4IiUA@3ki! z?L2d)1JZ&Db{UoL6<(plJ6Ii)Fy&Obg%+^uyyU>FTZ;+|oH%LYOsq2aqba%r>o93; zrzrZ$o1o`w5@G&M(UvEeGsNZ3sip7}6%m}fWt5aMJiv@90acj?2NXCxG2qzT6cZ`-$QMgvM}-@OAN&3FB9g%nu;aW6OwIbN7D2&o`O2iOzip$B4QvpMf5_!^`+m<%8E|KO7#R2G9eCtp52kZ)B2 zEzW2c#fCXGPB|EC9e{DeZSP(^11|0rE}shhLnRyheYtkB73tW`enT&HviQ1gwv0$g zpi;^Vvndg42@s$8>X~GDuVWfS$yz~i@Z^{vC1@OAS_ zerGoW*Gak5t#xxmcxwK>c-LSpZFWJ0$E2VKo_f&{r}piLAetY5+Fb*3B5z;kb@jmdJ&M4gWI5}U;#lusX>t@N>QXk z01GMt3es}qR_Q$yNx9AK{J*n%M-C5s&F}yI>c`z|c5Zg|+3!5h%rnnCGqX!C(BFtx zr*<9N5su?X2keCYzFXUN#^{#_>DaL*aV3O!lB%4FL?ZMlj%o-y;rt^GFNEE2{uzf4 zrzRZE>ZaCBP9iBu$;oNSDQQV5k@(-RL0bI=By;lU2~#_EB}w&@k_d6ey#d%&G7U9p0BQue z#6OmKa3vT2-MkS>Af!q)<@^B>u;1IkQg-G-m2);S%6`Ai?!@`HS~*_}QO;3h#j6T8 z194@wH5`d>^gM-A2$BSAcrC)@Jr|8;_x2sCu_Kz-Mh}k%6;U;8fMJrK2hi(NK|%V zwKdGrI9bE21UuWMakUG(*@fNh!i+AXVa5Rg5_cT-B_~}jbl>L5Mnh}m5Uc`lvW_Sv&2C^{No6?eyNEXgSxCe5|DI9ag9U4xNV9H0x zsWl$asGmw27WU(CFA}FAjlVU165<08AC7a{M*NFZIE)bC5WcX@g=CZVL={;bGM^e#V#DRU3pflFG{;L%x;OX3&+}p z6R`UZVkx-UHd28}C zWQ%$B>`ZcPyEkde3RUi78cVKFTdak;lJOkkts5mDvk-@}vYPZ(ujRf{sWUXTtK0q! z8*-9FeA0>j%}i%2VM<6j4nk@YwTkj6O}QkIEOo9zRBkBz3prOWN{)d6L*A|KjT{f? zLdY3s=gVX&?yE(5k;x$0h|H!Fh(ygapT-bha*9qP7iFq8^wx8R{co1HJtTqj#;zj2 z5jBI>{|$R+N^%Cv4jO78gZ9=7pv^?t=!(+P0+mZmLP!@H4ybeK7TT8hlW*x|T3AVF zzoYa3TH5RO&=juKBA)hK^LY`pb~4ur$sp2`j01nNK{A89Nhgx;>8DgpS|LMAsW;hM zNobcz3WF9o*AZGc(b%9RK%gE9v_%eFgG?aMaIQDGN^{5=+5se+lKJ!)*+L&vR@17I z)zp&|RTA12)I>mYdCd`80*SXlV`a@vfi}+pS}PgaLU1gJY$TLsfMgQcO5Y-1(;M^z zZAH9^AALX-S=g5?gpsd`?b)(+6}1u2isv{&^Ce#P(5k)&8mNP7OUOua0nloZE+E;K zOrV+MXZkA@Xm@CxvGgXw6(F95aC61>EVOITTYz>W*AZHE6ntwnU;=ejpuOS1HBbk% ztz;;PBtMb!GzBCR$tH;M5Be?D6CG(tu1Ytkssckr2sc-3&qBLSsxfFk@s7|uiHi*y z6DX`4Rzs&dKx-jGJ4z;^%AY3psSil{k5wx$#bXW(@Trw>Kf6R0PO$WfwXcsaD_5jH>Q%fZU zdJ`5splzCM2hFN-{YV#kXfNcNQVj$Mv@48>x2PXT29nXJ4z6Sajf6n`$vKOLoUJ6Z zTi`aJy*ul9&}!R5b5R8P+6x5w85sdvC`lHsC zSsqf>Eppg0>|>sVc1Nk9!*cAQDH71d`FD6>SEk zai3Nvb4hcu%Hj!=ovz}pg^k+ z{WTc^-2~-P3}a|8szC%fMqR+ONOIBQ4^BR3`wOlWA%lRXndS)1n*`ZIb5^Q>;ROP{ z39aT$hHzOBXb8;c*Jwkuq~Fo&v?oa;#So~^bC8k0fc5|i9?Kxk843bLfqJGw{B(#T04Lv!f0-8)AS1}{4 zZ773gtp+n4pk>I)V;s5+Qvq!Xlt(nc4WP-S3RwrsqXVgf)<6xI&%uV9E4F8q$0Jh8 z%G$ok70|pG*K*NKBysj!qe@wGgr=0WR{?D@N$2K6wU$Dk&4u#tAx{wM15=*l`pE8{ z3K-ToWq4BE<<{{#(pB$1<>o#kOspuOk7HKlnUPiCUyRfXF?{Xy~q4TSPg zlUei#ZHlrtjE2B^vxi{~XV}L*3+)f0VP$RZBu8j*}@6)J6f3767V#V_4F~JU+wKZrBH;7#|u-4ES4qQul;|REh`)Zs+6@fvI?rT zDY(`QBwN6g+=@E76?)B`8-Y6NN%mEeYi1M#aLsRwBeWQJP^?^w12k`iYahJ;8V`Xs zM?*dvfZC$eH2}1Zu?hnlqd+*D49kqHs-k$q`xziM2ti0cep5wD}Iu zl(NQg3!rotpmQ<}B)gGJKrzwvw1A$5c~MN=EA8`;;AsNaPL8O6W|KZEXHRSB)6U); z2WW~w7r@XSN)Eyp@&rkD(i4t^D{w5Vq~8LXh72H|R+4KRd4~yf|L_WEHdC@5NwRT` z>9uHuYmU$quBDPiQhK{_2}Yy)|h4gkrXqz0St%JiB>f%d)wG^HAJAWKLMxMPmf+92rA;*;b0}&KY)L z@~mES0zE*}4|assfXuXq=A>}V(Z8k$l;loFmVP2P(HHQC={=D)fKjxW4uydkgAy15 zq1wZ+hW`SZGcpKhLvYNMTAv-)yhb>Nx}+GI3TCs0CLfn+0Mpz(lK zPWzGN5a?NWKq_m1yMfz)R%@Umw5DW@Jv6H?*U`;vgEkWe&<=1e9VBazc_>{!(Wz*t zI-pnjH4P?nD#jLZRAgth{jP35*G^KH;r4ds+-;0O&R83y>PsEOrtHcEFLkSwQJ z^gH?$oLDu{?AL|M{v-6QtVQ4cgqth2XKQE`j6?yNN0uYB&Sa!LG^;>YIS5qg?7f4A zDhA5q3+Vr3@TmpL*VSiZAy;e@AF-NVW|ctD)Au zf#X1sBG4Rk_I$|}^g&ZWvXpk9M=>gQ4qQtDAFt8?a-))5^CWu4wcqVp&{cC=qF?j81O!de>O-CAmdMWz7l zWM4;U5hTn8jaj+Y;j@hn0_`M28$(_}L*5q}Z2(BZ)k)VvoIA1C1UG-ClL55?#M4m5 z(+~pBLaTn^s1Is9ppEV62rZV>wLxP7wK}mrb>LbX8QOeQ zgDh}u3mpQIK_r$g0ko}jI@(l!BEZ@ORL2eZs@R?ts4p5lKx{rX?BGVCC494#5 zs)5x2cZ8;J?I9plCGF5P9s`nl$z2IPj@(1A+0rqte4S22+h7mF8vYAt{^SD&EwQ^J zvNz!JOW_Nb|9l+3@rx9F~lsb0kl0d8v^x$DR~*rt;#_QAfp&G zpKgxOYQS4&$F(2@nqxzyKzkVjK_kdK^h1Y(WCkgfjDWThc5YKBl~Q#5eyJq1>KG^o zw1-_PpvifIUSqJV&{%6=9ea25N-AyWJ#a09e1vMy7bFu&TQpQ8_loS51bw=ST&N_p zKxK^Ta_0(YHp?TGOtf*$u5aK7O|fz(qj~>~+=4$c9wgNmH@-u^qF|vF6=N5$IBfvZg@$JCklISJntr5ujbzQ2~u`XsFOZ@Ft}; z4|ocoRa2mCae#(O29!S->_LfZ#74xnw@W(Uoh+O8Tfu34+Wv78`6i(K_B?@R*u#C6Yx%HWAkeO#J`dVG zTMbPH*Q}0(90#r`(9Xjs3Lyq=JGw1F;1|iQ0t@5_xHb}lwQrSQ!4QW%3~Tr=pdCgv z0<;#J?Vwr9S{QlN2CXijS^EZWIzUsrl0Ty!)*@56Q#1`E6Y=B_v;t4iPz@*D$vTuZ zOhj?qGVG(C<=PQY0ko7&j?hxb5PN9uipq6_rf}^ttlUU4miq=%=@Ky_x(tSQDg78j zwe88PfL26*swCHrDvpJyjgHV-kooq|td0f8&R%0#6X3%_^fX>Qq z7(M8TW`BKoDMsO+vt`)FJ|3(eeLyuR{MZhfwT8x#wKix> z>X6O$(5$B9i=get81izsy*|LmUWN>ftvZ>F@z6N5sB6j#;0mmqKz~%+F^kqXLaRrn z*+a9sV;rF={ZJ!jVok@Aok$e=UT6nMZY`*gJLpN(fIz>5@~G^@o#QB@;M%O!cF?TV zpb=?hgT@*v>rAY-9R#X$_I3eM25HWD!32tgSMm^ix$nbTGtzNrs2-sjyjn@F{R9;R zXaiR{LaRmU*r3%0G*6|W`pf~EQbQNOvQ398Vl(;%4bhq&2bV5TW*RL)KeUFW0O86B z^aQ8?TKkob(CSyrW@dAWtZnF54$zbuT87pD9ODjQAgC66Lp$J{{{{1MgHQ%_n3wjrBvV6L%cjP(^u!aBN~g8KyXKAXyE1tu0LWpJ)Uc zumDsFGp4FnPM|+46B0EaIzo$hR-o2u;HYvHqbQym2v^lZ4E~3JWH_c#Oh8Ze4cZP} zJq9fnW@Y7|{i5`!o-A{OR-J^{bIodbya?KMIGM+jEAUE&gJdw_F~!;glR2-@nX=6r z2(Xodb{bhiS-ZN_5n4D&wLz-|fm#P09cTS10yUy@5=kClWkDcFRwIjGLO#H-#sm1< zuof@3n0{YLXlF1#70`ZI;s`DJ+3D%lvgSCoPJzbyp&ya+7%O%GNoS1XO+=a7NSmWO z!{&f{!A0|&EyF%81OBOswJpD*s|aY@-?xLtQs+M7#A4OJI!3kIL3w1zmd773ig=8N zI$?^AGde8G(UyKir(s2uLGCc$r;97ewX;gMW!YjoXisZslue*^%Hu`QRNQnZk24sm z#iUKxwcldY#Toyb!dOBNG}n_DD+%qKGO6FN$Pt=v#av0&8dwFo=>=RXLRni$PGSC9 zJV<(ykLl}};M9XQM%#+n-&mIQaV4RhM-hNPUwY3GS};-BbIl4Z&jFg!8f=A8^a067 z`IC2M>Yl)apQ32v%0|&Z3|=s6tr7VVKHcBZAJ~NEUISM>M=CpfRsfX^frh{9 z2rZFZut8%r)Hc4c$I(l5zMA7Qj4%CnrP z2%g)*Wtcl+3!9(DJJS-TGv&=0Pj|Bm%l87cGkv1mi?9p*gM}F-Y$a^Ys~n=#O5YmK z5Gvar%CoHTu1X}XmJ)Y4%#Z^Q*B4>(|RljB*q zlz7N--~saPh896m_(7Zyrg9h^=%?W-2(fqxJOkHp4=0DgZ|k#Ec&-obW7yR6Cg@mX zI%-)~j1QLQ8(mgD{&V_=1OIT~9}fJ(fqyvg4+s9?z&{-LhXem`;2#eB!-4-L9PlH1 zI&owMI*2pyZp0ZX6*ohp=H^z>a1A`1xT#*woS(M~=jY?fHK^;x9j@!n9j@oBKAhyD z{x#WE{cDPwx?g&N(-C4LKxOsd!^As#*ul(ZRD*O*`x*}b{ z@r7pn6rrh5c-w4fk!}+3E;IC?v$u?SJRw_@sIfW?p%JB8D)EN%MqNMAZ0?qBrg{HSE{&#G*^@Um4T3xoli+Y-4F5=C90E?dMLfIK88Q9g^wg3e2z4flBPXSfQlD|2=hWUsMGnGe^nqKj08R-a&2@*@ zN^{dG!-JiP(?Iz*an{J^QO;9w_Hb@o1+SiTn&(V3AG&WsxWCg3H=_B*S-#6D3E@eu zu}GQZJOfwfInBUpAy>Ko44Q{Ek%(F4)CDmaZl5@Tg3V_I#Q*oV|Mr&$=3+ol-e3H_ zzzl+S_+i6>!xe-n& z95Iw6|3=Z29d7KmyEV+tOi|kCVtfkDdF48*5-gt8ktR4=;$Ra~SbFAUW$EyWRt)r3 z#IrEN$F6zeU^v(_m~)h2Vf5Kyi?jV^>DhhkH%rH^vuCk5yt-13W3<>|yWgG$dlq{J zi(~n-<&nj+INO==z?RNNi#?CUvAo#mu-`UJ?D;Ir;%xl2=P3)r;rsNt_Izg7*l#8y zmWIiM#n}!P&#tqLg{>l&uiJjx;^aj5XLDY&>+JaR_UH6}zW&ee|2rH=K~@YnUc>Pi z$B}~%Xz(hD-k(P)3r|BFJKn{?wn572ng6d`QcBTq#Il2Jwy^E2#Qy#N57x0!31xFA zkGaZAUrFwZU;1jh_doN@aQzuul&ozNJB)l|J?RDof&AwliTW+(&A64(O+vlGqa$}l zRgX=I4~vVAoEYg9u8OH2+b8};oLg*<*v;X+qHDyy8WRvDL}{W|hI_{jiJKKWCwh5k zpNN&=-J`SPK8Pue+8MMb{QdA(!n?;lh&~uLAuKRFFkH^1rg1>y;0>``6Lw*pEna}e zHaTugECzUMvA7-)zp7nT2e|F3(_9iR>+l|l!Sez$Ff%?km)sTQdsuP6#*oVaQd5KF z&rm*JAhXr6o*ou-GwOhqB93i_^P_deP^=x%hbs1u(A%*>} zP<;B|6{(-@gZ;}Rh=x50R6WjBk*A2@6$%{Fz&NYB61B2TQ8pWy`1p9`>4c<8I^L)g z4OA!cR5&k*(gi&%C2eq4j>&Z2Y$)OPi!k*h9i^o_U2}m-=cR(Cx@@y_$-+xC|4HH4 z9Gyscla|6F6@{|f0&LX$gAy+Yr$k;jm_@V1Y1GVT*V^BdiY57Gs>?4BOL&WDlC=2( z)g988@chijVs;5F$fr3*F-JQ?x>Yo&K%^l8ZBcxOQbQ3C-Qa0XQJ!>B5Jj!gU=by$ zfX@*hi9%S3Sv0ih`Pi&2NY5&gs8A$zN7Ig>GCnKcU^ex+X*QcL3Wvmkg8Z$#Q8JcN zp}A015_8V4)Kih_bW%0J($hFi;OgQbIlAcH_fUFd|>T~-I2222A}Z^N_hYfN=vjQ%}iNfnx&W*sYFd?Di!ET3JM~qPH&u^ZkBRH zizJvV(j6)sFV3R;1W_l>KG#&D`kO}n;`N`(CYXfd2A`bedT<~|MA``c=Y8N>w%(BQ z{iT(nP@g|>hzf_y27wxj%sKRNPIza7^mqbYBhgF31*2|8Nsd%fP)PMTgM^%Z<$9_& z5(S-jpfucQ(ds79oIQ;!mU^^At8aQ;TgvC>u)WDUTOTkaWcDX<(zy2r^=pG@A<4 zR9+YVsrb00kV>X*k`b~Kp6n`=A|SyvdHvVSE=v1`{=`(4ILb(Fjp8 z=uI?V*FzMf^OWk1vw3|^XS}`ZJ~f6*1tPD@o~=J66;Qs^RKBpEmN(4gjiz8J`(pMW zQ#z#v=@pBfmvn3J*aAum#MAV;Fes-4*m#u063J}lb>fs9v$#gj8}wiDolj@Y##B{a?)ooN`m(j7y>eF${IBwjs7Szb) z;(h7tK)PIPTyCxwLC`sex4LAI!&nr#T}r}o1r1rHT7{N@6O{fgOZDt#L91-R)EgDN z6wK}vDI3J+FdFGEu_@x$ zh-OX?!f!?_iI}T#MS2Tn9c{2?1GqDctUG%rX~Il#3Y&+w0Xg}%LjJ62llFHv={|OH5Su*Yl1>D?oY*B zAV#ka;-e6kg1r{vTVihrw7ua|>5P@eHP9f(f*wQTiQNPA{Lr>m1EvUs0-x?-pwJqr z*_CKKsV>4UzFJ9anp6&O7)9C*X`1&E&Lm}tJz|P)TS`D%Y0?$IhqZ){@r^mh!;)nP~K#_{4HvzZUo9)^F zUr$i#hTIOslJp@scLe`JfUhy~(iHq*Q}r6+&YFl-_{ZeU=+yv?4oDM$9M!f)ZZC?lCD z)BTa-LBQD;w%BOIbi@-F^#PDkd*q@6IFty^hsyLAwE&>4hrJV?nt*yzN2cBu2z$!B z8;JPc$nOYHYlBoQ|9z0I3F3#6!NA`ioC=qvq0o!K6Kcx!A{BQu#;>N3MMog)4VoQ* zZlH{@DQKi27wwQ1Yac*`)x|-00(<3tAW$mw*iy2(xW5xpu(e3Fz~lCy)>fw04)>-Y zlnS}G#Pw8gw*k_Jfio-*nMj$6Jcc}_7X#`wa2KQ10srgbdRuU^Gt#qr196?L98LuK zRGE5Lgp#o1O_R8zEuO^mfDIqh9Fd?{2eeutOR4z!!1d<24G80sxc6NUTY!Q&XD z>WoyiWofs-{{(AUR`MH({6>QwD+|p*rw;J2avuN$jX)y~VZ43=7~`;qVUIz{3c|So zo}3K+RL9P02cuUVlwz>QgBp8FBdcZ2k){Dquo965`XTsT6Zk^$+!&y#0qS*;r`q5_ z4D#S@M=wB*jl~^|7CTtoW3?q6b)*x1u@c0d8IF`J=S&ku0$nI}R-641_J4{m08dT< z?k2dig>`QOWEtRLXV7P|tPM=8m(&uW0OX!&Q>Izji;#VQFA9e(zX5o563{f2X{7^I z21;KCV9Z30)37%H!WzI7i~m@{1Zr?mLi@Qut0sUl)0&}n^x}}dA?{JGj`09uJMXZ%6I4YXW9(Os5RfGj1ZNfr4r*(O7hOs^>PGQc-qaDkPXBwVY9 zJTv*TR>2qeoUuFMa0OCtGr+QIZeG!Q4s6m1Aw%UD?XYJeKu04Q0G>wxo28VntCC2N3%wNQ+I zN`4iTQL_B;)}^O;ZV4=PL5Cr3j2zd+Q}OB}{I3dhjGnSHJ>`qLS?#s$esbAjuW@6V zkChrGmuAReEm;yZk=sb{zKYzkv79RC)bM&ST^|7M+0(-!0F+hC=EcEy$jUS;i3ygoC4O=V2K7pa^&E$NtoYupWg0Kf$ z_YnLJ1tQj#uth9P*DI|rqsC?oyCOA969G((Wv!`{WA^4VRx=p7=j|RcI!4W&A_qBn zgBs&PJmg#p{AcBaEfZ%o&0D6$@@d;yzS+*KBFt~M(qkAI-OhMD?R>O}?1cuC@xICV zWG6mm@eA33{T8`T9^uSdc2)=3lj=fJti}Z5nGNu)S_re(d@)`(N9}5Zbu;tP4#eP{ z*{_pt$bO8O%mw|~z3zl9oG{6L`n#)03_8M6WN(T6-&XJ>db?1IefgX-_sUavPq8x;SKYsYtROWa` zxo$E|*8jG3jDQ^H;Mt=Q$MTDp`ht_GkXKi{yW(9e$?Sx)4yEP;o6! z&^rT!=YUT@o<)4e?la_KB_y)~CG&OU=S`rP4J)iRN+z?qnKj7vY;a~NUT&8Ko{fQ> zw-lqLUt?AJ*W?oF$4St9L@dbf9F&9ANb>>86I*JuA1{pBgJ+KeJ!ZqFf>vY5JQIjN zM5@WS_68XS*=)j+=tIcu3Di9kxlV2($J5AIV4sF%zw?lb)+piIP_ni`c6zj6EoAO7 zdQBmR0VpF&ka7e5k3>GcA_wp)p_61c%5*N!oWd~(haTuB$aW^PK<7bri}8OXaJ2zF zMy)aA-UJfK#saftz`q_CUIorIz;_s&nvGOlAi<8{y8-;~k7F*c2YtY!p(rbpAZhmT zF4h{R%J^C%Ra;zN1IeucAIC#8rK6rVLCJmtxywSB^++1Z>6lJoT8ZUsAoc;sTWug> zWtru-3FvnKcXcQ$8zG0y*jFPbui@8r{AOPrYKdoz2F9kSL2ac_`0&k?)s5aRjXBE|6`1+}{f5(t)5Ev<w`XP`4xFIL0NwbGFpl9w-x&~pxO7xif+@~Z{c2Z19qA=##AEviFTvOan! zxLO-B7=Y5magM)bUNA!RYPA&fcmr8)bD7xG@FSCqR;`P`73Q2eV;Vo6dT^ zqh&478$4BNF8kjN2=%yk9c1wZc(fb$9f5S_0pBdhMGtBdt%OA2~~6- z(|`3*cUuB=3*7gqEZ?s{^J8Eh4dhwK=_K5tSS`$A@dxh|i_#UiQhrqxd@M|#Dm$}bm^IEU{N5-P z8|6B@8D(!61^NwMCUvPa=QW*;VFXEc?aElx=QEoS$1gdE4CzAQjFUJnVg zno&!>n^B5Ip4lER=R5%|8SC@2ma>9gGH5kHKG?T?;-QhUPrPK3O({%ixtig_ubK`{X`W4?n{kl{qgnE762 zL+-s0(*mhjADi_leNhJEKq&~eo8rH+d5D4`myRgqtS3+fVWvNGz`=K9YhgCd$QwD3u?8elz5PX+J;U zV|_l>@2LfjGI~CUwe^tVP#QXeVgfMefG!JMn>pJbI==rwCpXL?SN!9xn1TMGZ?uxGyY~sj}vK8z`58&OFdv5A3XsWPI$05UbN&fS@j@ z#aZbwzDD2~DM&RK+#U|3%~3KZf^W=jnGe3rL7v|S2PZ;iti)%59{VIvFWEkQN!CsY z;GNBbz)D?hJdwR7Wh`=(2HK-g&Zk3H%|>l`3+DyMe>!SG6Z~hMqa;Y7G4!Sm)UwdR z$Dusidg#ofk^*Wy@%)z{jb;cVa}ANRQc) zp{OM`deNYlh^tL;_e;n@OQf9y84p1IVnHJs&u@h1$KXEJ?}$eVwuZG1VwuilUWH)D zM4?w5znHz>7&OL$S|2>MChlP+wi~#Rf%Gig061AcCJJFzZ<$Ai^}d+*n|b3E{~z;Y zwE;g8fqE)(n1h}5{aQnYV zLLJ;O4YX#Vt>qzuv7q-7!c&m%4&WE_?xdg$GzT?CGeNF-(ZI}l;mp%qfsfg`+0Y>~ zWoo&yE|>snlOdgKNVfxcu2{44`XIAddN{BT-YCABK4Wd*XLAC@_y0!&V(snZLOeay1MRm<4IfMg4yb zcXvkqSbge+1FxY0#-5-Wfjb!gm^aK7cQKz}J(;UYZDabs2{_8WeK`_5WE^BU9t0ZQ zQJb?tr4!0%0?HKgKe4vL1s*5nvvUFO<8gl-`6)Jf5#V(^q@MteO_y`b5ROI7U|uoi z18D~Y%+tdBEi9j|vPTS4HBsx?hlv?Yg&NcNto>#F-AFutiY${kz{o6l=Ed)eqlKJ0 z5Ikb_RM`V%ZY4n;tQ}+2Y^?{gTf^mAnFx8#geIL0lsu%H30ZWM%M0_|Gfk`blUX~& z!fDVDto^i6QqIiUWWKN%JS!FDcp7N3nl}VeYKw#E17-9|k)I6-vk{oSVLmptGY!pl zwltmjK$-o-bP%gAL!k?%0vYpr`lEE%cE&;5?k%@!_MSC`UjK`|$j7}`k)yL#k<$(P zk*l*g;`7qmnr!#G?w39K8r*nL87`c3Vu6obSQ?6?~&bYSeyxz%t#E-0aD}ei? zq(F5t_PlD}z1!TcdS{Yl>OdrZ7YX*;Lna&>P1=0Nk?q-IN&Jo4oMC@$?xd@UoLhnq zjXviYMO2zza@=}}%@{D%Qb96`7Bjy`Pw7n~eY8+2)nQ;<6bo*P zc~sO={T>km)?+AtFrWV=e|ibk<+HgUv$Q5-9yR7?N)j!zTrIm%A_+O&EC(dRwj7$x z@1IJ`B)lnDNPm+anjxMqG0)HobT*G!75lQXMM|Z7L2oG1nla)&K}Z+G+rk}*O1xR% zzc5Qwo3raQCJU4p_T`H@Q8JnF6lwO`IX~zzWkSmfod;17a{^YD=bOus0|PGev|#Vb z7Sj!;`+QmNi#d`()R}nxF})!Cj~`2CBg+4on{6I>BsWQQn9JqXS?7^=@Gqk0{qE5# zzQyuUfgx8J*e94lj(Oxid-n{iTlG}chM36ukd|N`c}u+Zc?*3R@9tyw>{Ao+rHa6x z$iBv>%p*_4`6lAoH8w`q4|SYPomViC zVX9j7?ED2>f6n{`#1iO|b9nz!2Iemm(M-%=D8&4Qk5pO?^A`x4ztF*7PWH^d|Nr?5 z&yf3{_=9~fQ;oyRykxqVrGs|ijdvtnQMOo~Jw_*K%jj*L#9Q=&POF_Z zP2ivKW7GFbqONHF{(k%{opd*xW=RGrbfYCELEk@HFy!b@ie}yn4Vfh^T&1&Qn*@ut zzh$3b;>Fd*?lXCQmKGX_ihZe0I5&|OY2m5qLSaEC{r;xsvoOafo7ZWl8!TfYw&|%s zpVb2TDN8cxB)ueJ_FncKeMz7n`#PgVqGG`XO4IKM z`(|&GXd!*&woaI}kLF}Er9bwGNVD`gcSOEGh{*bMf$p++MMo)Lkat!PZt1nsFIr0P z9xKB2{h|popVE$|3zAtUKB9VxiEq597Ys!rJ!pD-h%cIwUL+LcnD!g-ShJ2=knX&2 zU6k@~7@in~G(Lx7CfMv2`}1xX$BTT6eS97@p=GEpO*3OMm>?DB=}cNL5ko;UA{Fo=7Lsi>#s>DfH(`x~7l zlnQy-6DLY~P>PTWX%25bHU5kiv$v?E&DQg@ml5!FMcquIUdk82P&z=Q`8+=;`-bsB zzmok_)bfLQx|gXWzH(c*MfYV_mzqoY=37F!wnVh>`Fdf2P;8b= zdR@SI>HK8gM0*kK`_zEftW0UH<+CBCnPsLHI^GoW zFq@Un(&xbV%P_N4L$olTStS4ROx00g?S}_2u7nhMvcitEEGREG2B| z8CxnwV4*29p-b>;BsL~K4KFwTjUJ=RVLe5W>v&=Bv#%LsD=$c<{Qqy^icHk}t#to7 z5ndYEsuPwxv9%Ngb}^ZV)e?ADBDP2`?)5it#&B*!HmyxX?pA6e`fOe=mGL<`6u(=# zobJWO<66VOa6u>&CCd%HDUYHmpC~QJD=R4}&7peTll2!TIzT5Lg! z1nI-`CcKTGW}TOekiSkcO_a{i<07T!3wSE%21>keUZgtSNRJDKEWJ>aV@9Q-T1-XC8T0oM@)_*A(m;cl3 z&yu;Q>0anFpiN&hPCm1+vK{8|iR-(REhzc(_DmcUGyeYO<~zUoXN>RI+O%ocp+kpu z?b>zdlGz2JF8xRK$2oIU?x;-bFY7gHO5%n&?pY9O39@t4m1LBwNX7*<$^FWS!Uwyv zVOqRb3lr#ZEWsLzM963iY_GF~QRRd6velULT!1VlIBM3>4B%}cMjYV1^8CgMk zHA=-t5Zw=05A_m`*0}E~t_{U=o8VdXkex4K{;fco-+-r45+R3U38~HQ0bAb$&WE^u zvPOB-(x}=|2~k6$cSr87;TAn0${cwvVPn285i#QP;8$BjUjC~wEI%-$M$*{T6A4KIweH2+cDnGtyxKGsmh-MKzBSWIb z2jzuEg|!K<7O4sw7t$+eROsZepTa^y(?h@X86Dg@bXb^YXpNxapbNhKVc&=5g*FXs z5$Y72LQb2Wb;L;z)Qg9U!ojhLt!Ni(;6~G!8Tu9!p8og3}9;m1Mh`f zBF9BX5>kfZ*A2yR9nK`Om}wwvscETc9_|}FQ$d~WOc`k#1)@lyBi@K;GD*#pc9|I$ z{9;W_xvJj>z-2+mk3)vbXBM_?vRb-@&$=m_?d;CAM0H{#1a5z&jTB|&`xete8n{Pp z!XdSmWRM6aH`Vv*4H!=U+V&u_mODxk)J_iMDy_J38@Z6&u23!)JP7$6N0NqQv;!wo zpcMK!6S4-1!id^83hdYnh4L1DPr-l z*M~BjR|PNr#P9E*@Q&j85jEKX?zYFV0SeVhuW`*E#~3J_E>U1fZ73!vqRybv1Wnd1D7?;~c@>IB zfC5^Cdne1 zz-mgAq6?$OMY%;4MioSlN}Lxn1Cs-X)iB5Z7~@f+bKGlD3DIeFGwKv4T#9)+a!FME zn8S&O6Z2y3hyNCqA6X~nT6l8Aqo|>gSHhhm|A6!Rbi|V=r`YB(jU)V{UXQ2}IWcNh z5Fc7MtTgPyh$|7<)yslTha3s}C2T>+J0Twj+z2TSSryhHYD@T^y0(|3;uscu@4K(f6w9eT+U=yh4M5eeZeI@E#qakFfaG4(J)8 z4J!+)?w{+^%v)D&zRzOsa?cK)2<@sG*ArK z;rg?Nu8D?+94!yV84;*FBFD z?xjvA)Hl?b>aLox!Ph({dB#;g65t<@7Bwe&yk|Yv*VLk_T=lNHnRJ{o8>U7Oc)%xn=y(6nQg}fiUBk)0-6dGRb6AvHPZB9;3T{Laf z4g8k-bZ{RLIx+ZG^>;%}{*ydUx~^4MRhv}{Rg1anUb}n-y7dok9;o&G((ePG@7#?p zebk?DZ{nRRX{rTPU-D^O#li`k7gvaHtwv)$-&JlYJpMWK3o-o z9nzaKa8p%L+#BQ@Qk84Xb>ZqE?MRF#9K-C)Y>XKk(y-}<@o_7at5l_Y3kP!S@h!Lh1_{#ECe9$43l+c$j zi_eI8EuX0_sg7b6NjzSI{xj*%neox2>DpR8b^Yi3pUwd%a&g#y`a_<10BxI*K{Sb)$jC^Iq zcq7=B-Lp%lEZJE@GPAP4t<@V2U??EZ_x7# zc>!EFM2m6+D&mh9^d{5TL5A5aip0EZY8oqzyGpgV0q)f^QlU<7fHw{cwe!t7p+Fp{ zrKMC7EQ=}6Ybj4Hf~h;bPfLVBR4e9LCL1h$&**O#mR}dr%}?}M#@P}zoX9Q{?u-%M zuWRAEmfkrdO47YMA4qgIH5+syPajc%nrZfIp`__VQTi0F*#erMWfnxU?#?N!|JNCH zqJgrM&s+bm-!F=0$lY=M|7>2et^XHzlU7;(f9vnB|Ify-te~v_*AMs)um9hV_5TIW zU;mFa$CqZasUS$k=dAyK z^vwGI4|=|2JfwTk`hUnnpjdT{*9}x={eQvJ_5Y<<|KIIJ>;Dh^o%R1Bm44Kfmg9I>G*!@r8uNqzBq z($n9AOW$41#w7=D!a4J4v>e!p|M0}h8`Dc{tAeBM8CF7`-PjzQf3|-Q2QI2I@d1$5 z>L_&zd=^pa?HQUg+}2KH8+89QN7ny)9{RtI%GUJ4ef##U%)Y$mtB3zC@JZNSCKs=f zx(Ul4cl-BH-Ca0jYrj8{Dl8h8kUk(1STRC>;$HK?taQzGbNt!o6R_8 z@tQ5nlBj69+4_8@Mne(L<~p-9u?XYa+A__)_>B+r$l>}3FJ-$mN z$M;5jHEVnu#QPu?wgTyba2Uc>5blj|IG$v$zT*(jeq(@2KL2(^naP-A{mrZ&c0E5! ziEoH7)55lRHlKoB--XdIrhPG%CSPyxs`56%e(ihJX^fGul%(Y3H2kH2fGbgR3JQ$I zVLqD@W;#BYQ@HXSkcL>pClRh;O~bg&sWkEv&mmrA4bQFu9}7gnkl0jH2bLCx?MyGw z--uVIb{*Tnlw_Cij~Yp9;_B?|;_T$=;^N}w=IZX@=jl z*t!Xk(Y0ejLu)ijteuqHph1I(geJ`!r!=cuzd;Hk!nwJ*c~tQT^z;l&i3*KMsq{t< z6K_|nMw_7KqKV3zQ+spt8w{5d&PlO)krR32RBDZrvx}>ndle-33Ll~7)M}MR?c}6E zx#VW!I?;GL`9vkRboT8r#3lM=zmz$PK5~s|wd06?&tD$I)*m|gRX6v5>VZMQaq$T? z5^FYSnA)guleE@t+O})op<}0Bz5Dd-*MC6Pu;C+K8aZn8m?=|VnKpgK%$(QezW&CW z^X9*``28hImwoWz@)aMi`(*uwjhi-q`o)(!zuL8X&)$7Uzy9Xi?~Z-{!;h!W{Cf7> z`3n~de!qO>>b2`PZr-~6@X_Nxo)njqmYG?;@EI^ATloLne0d{ZDvd_1abfx5RMT;& zy){lz$<974d$) za`rT175OS49%|?WZ?!k3&|hxU^Zw-zhfTT=TkX3!A<2hFl;1hEW7@E{PtRO+`tzOd zyu8$Zv-A6&2U=Zz)U9dar|*RBs^S;jF|Ki&ms%X%`t7>gKE%}XQ%ZIn?!9A7`0zvB z@*)!6*|eqWCqk#`ohScRk~y}m>#@m8Q-9ppVRhPpgjl} zYSr)O4A%Ea>oLe<#i%zu?{z!!#Q!BBw=R(zj}w%+u^r&Ncm@dKbYc` z_-&2C!mi_wZwNJ9+hu7tdh@Vp>zo@*oRxVc;@XhW)01Cc{d=Gocuee4Gye3%{z9*4uf`sHR0Uu;+q+dmYZ~XgQj;-k%$#0nL&h#Yv~hTkw~803Cassd; zma`34h4h)M`sC`Gvp+8$88fY^^REr-pLr{9ej z$d?VKWd4@SN5db_TybaEhVRm^oONk(^{lbOy&L=9ihXCqhgH9NH++j#(`(~`EEZ+Un5c+w}cHo2;W^+RuOztVI5!zF#&TE=!N8aMHvHuRMz zpZ4=9+x1(@qyDM0x2(}N7+-CE{ay1S;#>wN4h-!*?VYTGlc4;b%Ms%i*YA00(3?YBe{|}j6FutRYjP@fScBMci#%?A>lXb*y~uuZeqG=i zy)!=ljmUrjS9C+iyz}_$=-nSg?`W~~<1RnG6u&evu>IA|N49Q{)vD+ASUBeLxa$Qa zb@^v_}AH~k8!Qm zAo0=q<>q@g{ErvEYYwwqdeq)&XV3Uab3WYGxN%X>{3UhQ`lNopef@&^bGn?#O8Dja z!IV$NUa#ISrs*8D|CW#E6z}f2@mfa5AtmolNqpS)(w)`*-A1?B|MI5TNpr@uUgf!` z*|2ka^1Q|d{IctZ`*F+KHLex@a^C0D_PxGoV5dF(PniyXroFmg#G{LTn{KAg>A&%% zvBOrJ_R8*>a`g1!pCcy+Jzi9FE34#u@=E9A`T=dO{&DO|-v-BL);@P_X^gJH_#{lvQpfgM{oQ!ejYhE@CpJ5|T-Uh#_^-b2+$h*PS~z*OWo&r&n1iq6960V| z`ng5#fxE*mY;71}_++k!s+&{Xj(4Oeuge+LhISn=xAtcP_MIIvr>^$bvny-Q4;=PY zj~X|}I~RBVynS>;%5T%QoXZ?PLNj$t$F88U7cM+l(re72;I|4=0*!-K zf8X7yedG9p{(b6S|4cuitl5<8A-`4G+n})L_0wHGYc$vCkE&^grMDjb_(ihoe!EK9C+`9K6cSA!#JO6ownb)wxM13U(dR(P5tSI-LH<#NFBfT zp0;_Ad&hNeKdhD3?VY)=9`n3kOLa2zw)f)3&ig%w9+?=_aoqSZ>qe~qq+jgFgrK0U zo4$Rt?$qYElT#*qIIVa}znwRKShPn9{y8nW?47JG*XD28wQpSJj`80tPVV#lPi2d? zcykyeo)&WI^!i_ZU+}o+sP!j*-h24-l}3Hjz8Q7Y!(WO2AhSuIaX$aAv$KqfI_%p0 z&{EPN9fQ;W0s=~hw4}6jcRO?oQZoZXgM@U$&?z7>bO=Zb64D?;_u+ZgS?^kBt@G*q zfBJvf*Vp@Z-S@usmg%7j=WhSEH0+&+@+?;9VNcq>`NbhT82nLbT(QVUZ_zHL;A6Q0 zW~eKN#5L=_;hgalqUeR^sC^puq2c1^Z_?H;Jl%1s44umvTIf5uK8LABIbbWwnELIQ z?o=;+>g{RU*GvV9UxPR789&U-NqN}V(Lu4!7beWoPfcQ_ZQqN3#vATLG!Q6ZrTg&c zQw5AV*jN+^vC0i%hugP*XnvsZ zT6aP2z{hK|s^fD~V!w2gS5Fzxb3iNG7rRsVCuiVK6X9yXczxFORAlr)KwxqE76rNA z*Rl4Du|J*i(7@WfQ@F#(pY}%aA;xW!tq$33HC?X+{VHuy3k-B={zDzs=zk|m)d?YO zP6*-`u$!m#(vcsh1361}KUU8LUIN`w-e&o8GR|R#L*|0<9{pa%Gd~)qQ@|tQj))^X zoU)f~p6xamSMnd);)9Y0q?h8)Hg#@-kc&JcqNoz5fW+TPKA1A4hDdkMLPZX`mYr2I zqb;|?)Snt>EqD2Tgm>&GhgWm91t8tl?qnVG`|zcE7A9fK}Dh)_h!uu*l8ce&JFKf53zGX}tx zmtcd#`m3lp{)Z;c8@so6qMDmG#Q7Q14ma^6ONDMs%H-xz>jkMNISMRW6kgqxmJ6U! zGzw7}TH)oONzPmSda8QG$A$lb_Wuyy|MKU*p#8tB{hzY`KWIPo&Y`3K2TA`gWj~n| zTx=XnEIbVK|8Tg-6J|dx!ok46e1cN!Cu8y-8pXsS!NwtF29WVTBWID(qOf2U@Cd`D z1U@k-m7tt9;^e82?uiHgOS=D~`ybV37-&zET>Aj8o+$S}s!t#0e+=b+WuGATzoOVI zGUQtS(WDRz`$j4IB>4FM0H(4OxT03QYvuu&yU}xfeR8@#^IN@l)5mQ)SUiLQ=fL-2 z`~KeHz)~RPAgD2B_uZ1~_U&hDn$tQ(nAEqfM8uu{b=8+H@Vi+2mcMpj`QxUTI!SK> z7~{Yr0LCC;dm10ycQ;?tQiJhNGFS>)O^JJVQFujH_Myit!VC#@J01A-K7m=i`)bK; z)9>`=O6(DEy*(E?0@%YK4S`|O2OeBao^);WEU?aXsuN{)N-as0zZ#^iMH6^$7&D1K zzv;Yl5iVnu_k1GXE9PF(1Iqk4F6)zqAdOB!^VywCsR{@R6-Lb}w{N|ZD7cf}!N+Fu zWhhy*&k&6-enTRyDCBE6gY4sAZRpPu;m|o&+*A?~KJ<%rvAV=rB7g%?8;8DN-^ zLQYF5F>v%S-$~$34&_tm3aluV>U|!UV)eldxZ-> ztg|Z`0;J*sVJ1|{XBY3Y2)Li(#gv9=iSNo+X7z8b*FJHDsBFpOdc*C60zvO*lmLep z3wQY9tKwuymO1K$W2Reg9o6W9#^^(>Tykmf));Jhbc0d*}4Xtw)7pA^Hb@` zKb+n{?#T8Nrh`PGICme-nDAdJz#+O}z33VftXccv^5x_;mD3r=Ted5kei-HeqFRyD z?YyQ=utV_~oXKs_8@T=Uy z08g>RnF#s(hI>e}Wz^jM_9Gy;(O^8~T(ZFh^NIjli>wcvMeo@Gd+K#!BdJA+XFI!H zo^(y`-jJ6yF{)s?zEV#jL-_sNRdscAwywjLRD;;~R7v-Q&|CJF3UelrLuD(i- zQ|rA^&WHa?J$0I5i!o{Q)VD7?Jr`snnA39)d&*NGORH*1avGFfDu1mn^D*i+X}Nmg zJ$s7eN_;ajzq@9neRwGQx-C|3S`|&C&o5xd(#Rm;Zty|qbNEc(vp{CFLp z-KK+8Q4JRTw&O-AqO*#vbg2Lk^nGYBvq~DeV3*j;y=hkchoLRLVW-J(PA;o`ft^K? zW<*nriog%@)&p6wV*VQQi$XkPaH_v_Hp`AU4#r-2YVlXxs74N$JAMCuv-|V;e@i zQ2adgReWnwA_b8)X=9x7{XD%eMf(8~h^ z`;e{S@0^pkM%DS=nFNJMR&*hQNq$ymbCLslcsbfB3M`>?Bh+uP-U<9;4DR40_q}6~ zBy`Z^b0&$jpgtr3h-z(yo!*=a3|mo(R`(sY<0cScefp=~qqVUa{Lbwod$*qT7;Ea+ zR$F+k2g~>x%@@o=Eoq)f)Z6V6S4`sSL0Ok~!HZ0op{!!gar1_Qb$u9v3^+2n4>=w; zs3nThe#4c1U*$_6+Q3i%t!2oYc@Ud834&<>Q!8+_M2Mzikc(SErQ%1qW-x2-0FfWg zK)du3r`SEZt8IlWN`11wIk_@^OT#(1n>kk+Qj19+l4b538aQoSu2R>%sbrXMY0w~z zqZVoBy7CI6hiAiV`KIc4@F%C16kU5A#;t%yY2>ar<4Tz zy=tQhVlyjaEI#6!;GdSWMD%SlLpFPDt<;w&c-XzTMyV83T-SiHOI*VH`2~}2r_`Nh zpQoLw8V7LdeL25#>J9fugSI+FM+|}s}AP6Kp}o)2*Zw8 z4li}*t#KxXkIcg4$xZBTqAvymr2&*p7`gz#r54cKAT%|LFYnWjgg zfLAb;!A=rAFS}tvFf^_?AwFj{snGr6T$+I8&TQwxlszjKj)1V|_5Ux}?| z-}xIPcyI3=zc%Fh_u%vvV|a)Yl1x@Jf})|Nc?k4<2(nQ;TRo3SWP1c`-mQc0;$H9$ zEX<)E0f?uiV#tc<23^O60w*|zuJ2&PdiTA^BLHI?xlyW7rXU3dv;0~m9X?+RgiA>s zK;tq^KszsK1U{4)P|Gx4zEnOG44Db1et$4Jdg?=Xi2$j09M4WnkFsNJ8IM3t4ird} zmWTd&ByVs!F2@#s)KU;rPLOZZ9u0%tm&i@p#Oxn4jutB95+S&hm$<6ZU;!4jhDz)$ zFnCA^qF~Qrny8${cf9mO#odEU*63?HmRc1)x={6HHCsp<{xdxo{j3n z+OL^K!K!-k2?4$bSOLDnnz+J=ixq~5hVk?KDy#8iPFRQi^J8W^)2n^OS*T#T!A2Tk z{IL6|LGbum^mPVkB@wKw(eCi>6nZ?gPAW*;jV@T4YZEyrsTU<24ibNk9s##iDSG>Fh>ea)b6qi@a6#3Qvdq^*(bWRiv~Tm}=H5nCAEov@3u zQRFscgXwRw=Vs*k4SJ}cWMjTmUd3@#jg?9D5Qs6A8V;C!eGvWYVuCb0h7Q1l}BCM z>bmYAT9e2(l(0zt?qS)H2OUL>EwiwbfBL*t=Z)5pZ;;n7DD8;^~;q zh0+LKp_v+p#rbU#Rp=-g01K$Fuf-H`3h~-7O?K{|L9>w!#g)_##T7s4rWC)s+M0^5 z`mICjOxB_|;)Go~ne&vKOOmys!>y+lvkBMeYcix0*x0aomA*Ie)s$NaWa} zD8&=UPNW|JIcP7B<4&dq#Gh%Y4pF#ht3)y@=gDj4(d@fnw_t|)N1>L3+R5!Q?PV1r zlNzGf(%$)G2ZnnGh9n0D-jMpk`W;p`TH^x|7f3Hg|H9vkp}H=!aLIF-f(Fm$?J}$= z24$9q&3mKubYM7)WotQvG9W0qA{YfaVEyoo6C`a_mCNdKb;Ul*KHRELHagRB1=^xZ zu0tM`_j1^8O3Pu8k<~8?%g}f4gevA&f{c@24L$;DMHBS18+0%>ed!*sroQ`={z`o* z$RgTezY|9;O&9x}kmg!sjbu`Fl3?>Bnm&gJJxdYw82kxUES*C$ z)F&E7%~$y2O)DDOq*(BN4z?t(gZ6Zd$3{5reNUa!zB!x&??H0-9|1$+&9sEh*~3+` zIgST!mW1{NZw32FM+z@3E}l{)>Y+@#$SV9@9#)uxZf5|{Y*=>bF=IvgcJe|flR zVtBF!c&>N;Jbf|BGGEH!kFD%SpH?5VO^me&ec7Q?yXu}=BoZQ^|yPMffzY^+j6XikofBd2x*P^k*(kP*0h~K^c#>1-k-dKUk7Bt_BbG_An zOXkJICfM{XUL=|wV;2N=c3xBFmhyG>s?Io0{1n7--{hIL{NVig70=sydisz&$v9X| z49wf#suJTP1Vc7gUI7lI zlSSe0nD0DE{!|_1g4_8MZSMb~vG62ARnFcCB*6>dWsc?f(5)P*OV)IZwOhs0UylGj z)C0222e&Uoy>Gf7$r^yTaFkYB48`YQtU4Y)f5`dHG4K4+D&2aREfJ=~6I5THm+@^m zoDwcTuX`(t(5A+y^_JkU=K7?kXU^iF8A}K0T_jA9*iw{Ylwcev+&u|zFEp?QDPu2a z)-#STSvoIl51}6X!-lU$~2i)m|mqPogz)~-5lSbhcSH2tV=u&KXc;^=f6)Tut4}6bSw?> zJbp3&pIpXp2uov{-j^|RYiB}X=_M`9YP&08WX_-xMVmxM7^9}Fdmrl#Zb*>3inOBP zx+Lw_htw!n+Aof_#d}zdW;Y!6jn=t-txLb)w~cG~V`=ODe9O%oeI(BC%$OnVoHq_u zXswzZ-Ba{FW6Fq1=^OIvdpM6gf6m*0K}3D2A|wv#xWCnDHn9HY-k{CJF%|5<-?EEH z)Ttvh@c8xfgFd&f-0EwgK21Rd_`4)=NPa1ro3h;A?Vd>JA7^2aj8mxDaQ%X66#koF zMoPUvZ;@@!GShK&&VAi5$JPUR$_%(HZsfq(Zd+H6(~Qtt$~U?LYt?(8Q#lomU$1t? z)Oh7cSu?@(nPQ}3Tna&jL51KpJ?ec{#a7+(R%ohn6{Bagx9nqdzo+c?1wH@hy0kN@PKCw2fOViq?5V)VH z#KHBM=u3ZgACgABvjamptx^?1cfI91r(d?tlWWsJ zU#KoB3f;>T)_o`~S zPE3X_4!^;@57O8QByL=^pEDEG8W5d)x~$*R3$zO^G#nu! z&TTD1a%Zmp{-;~{t;c3gj^CWIwg1#`~k>zQqB*V)yJ0GZcv2p4dnyAWTFN1)$RQ{Ryl3>zIa=QiAE5=^#~xX>;p&$<(7`CLDxGLIAu(-=#eLa zn*tVjmkb{%5n5K9JuT@z`cO=8t*#sr6ghM2(4{;=k?5SOS9_|6`Dra@Y_%y8@GNI7 zrQ2*3vOjUMJsu5-S~_9zF)E3aewz0%-?C;{_YJK&5c}izaG_)Zvpbo6 z9}BbkIjN|V|7m9!N^1G0y1?LrAh4;Ij8ajEG|~m|`{YO1BrfLcKXA%PJVr0o59D2`>OHo_TZ z@E|aNdx>|sA0XKp_6YbaqFH}Wvd^b|wFj}KjUNq-?{Ay9Mn?jdipniL znhbH5c7xrb_$cMYdMWUniMXX;%Ry(HrX@Qi|A{d|kDZ`%atP*A;wrGjMBYqLj&|1$ zR78~oC!3aaKV;Q7I-)6^E0`#}a?sQBcs9t-1JDC~VUY`b9jg-FeRgwpQT?e#+27J+ zh;`@H_qYUkMC9ZV^5zS0dds4pBvgx*IfbH}pT><>VnI4zDTA-iJVBgf{xi2P$p~io z$jfPe2(qdB@QW+5Ts7C*E8MDdzN2Bk$KTvGmzBhx0b#CTt@~3q#zLl6kL`d#A^KO0 z=q}NcY+X2z#yeH8?lY4K&f#5DFJCActN*V~Jc*EzEdjx~jW;3*#%-hp^O`FOl`F&6 zuB-i@9ah=1Q*9)JGz&nE&PSfId`E141;}uXlRLki3PP*F6dKtIa{HeuhT7ShFb~8U z0DF3EwnCpJ4Sn#W{ocMJEKAsfjuDG~G|DS^2@(%>o6=1c*L{)YE_0Z7c_8A`qVjAq zBx}lNBDkbYar}xcbD65N#Z;AwG1J&p<$YkjZ+ku;Ez&t#$qv@QjQ&b2j@*Sl^O*j} z)h3coh?X02Yr}*AQsEO0FJ&v@~3ghOJj^lBPWu| z6W7n3a9oNNhwwy>H~zxOtC&QiI6>W3o`qqwipx{nzD%zcayR)aVv&udrpw)6EWblF zQ6I)ZdNtOAJGX&e#@`Jb&O~JOJ%={@F))&uR{P4xz=8X5@OCZZNC4AaD*cjVO^b_A z4lw8uFt%=)@OeGsZ@Jn#qidy z5i<$dWiw?M5XOp}m>6$9-I&%;o32xbgt0Qw@49EdHI?f*ti@$r*7@LznYAx;lO>6< zM^{(n7^TIG5xV<|NP5b`5gDcy$e5FQq{x8yJ(#RLM#Vb*P7@~4lLA&b@qkau`_QrL`4dWk zM0n~^$o<)=Zc*-mmX-F@IaZ+<_R_}aPiPcDgM~msM&N*y++~;E$<9J)s3?oER@BRP zue-DI3QxSzHctNe)6nEdFe!lk3>jThP;Y%1Ll4ZooYDx(?4Sa1#F8wUv;JcsG6%qD zF^K@j_m}&<$tIsy64Q~*)pD1A!U9whRAQrOf6|3Io#++Kb4xJHRhyJ4R~dM8x-A!&vJo~!h{FE zmP!cnAbK&FvXBTy=;{%=-GsX9;z9B!T29A^m0Gc~E#&bnqyB>ANh|(Q#9(*h6j`b7 zMEPxnYhj*m8ve=Yy7KA=c~&5SAD9hU;UbzRbpmy-2%dK{@7|N!_+j2tl%$V|Eg=`T zT2G)+<++osEFdyQAe|kbmAY4{GGT;kQkQ>(C6O6`JQ61F+|QrD<>olHz{g^anxPIq zw(r{sH3-Fy3k=-xr@QGKWG~%FY&Bi)rwgBXw@M2>h4Pg z18PkD^L`n`aSSNX%Ox)CkyITq*J>oMT+tS?T+cGZ@T2w@telpQ{)GU=@zS`CD#hw@ z5r%*dPiVk9=TQyE;hKk+(TDg&DDiFi6}kvtu3`Id&Xg|=ZYdvvWVRMC z-)Q49vKujcRS=0C8uAz*$O-nZO$O-+Maz(@hkdOG`91n^D+Y+RQm~`9_eG`6fg+|- zhOh&2Q^QIN7WhC~Ep=OAL`58Br#^#mCc|zG)2DI%`69fILskZhicV=1oWjE#Q)rHh znfmfNpL$i#eb3O~s-NFe@3rO&r1gPxV+*E2q=*EGH9vcj`B{TU5ObC3f%f|KoR(3g z9>HW)$MW_HM8n(iQ#~1|*QprreCtS0RP5YSF}>&mL=h6MeZg99Zfq-YFhNtMF!_75 z&mQyFd}2++en1vNp*C5e@|R=(a<~J|QlVl8r6=xkC=si*J=y6#eqOytj_&Lyszut_ zH#WxC+&G=r@T7BfVL(L268e<;7N zUOQ=)I$LPZjZ?U&tj7;4rh1dT-cSuUfqDVv1U>&59!mTimd&V%C-L@gpjicV2M$}e zQO~9yw!rYlzA3s$Msf-eqYJQqJ?H));l0rP<`Ka9fROmw#E+OiuDebD2Jdv&sk`KD zCoYHhPD&~?t`Vuo?Ju6d_ImTth^48p(vQ8-401h*aSs8MXsV>**9^*%4Yt9#uo8Y2ZGu4y&yv11W zp~S)TZah<)%km29>D4aK-plg%h;V%!J?9pKPapbp@pr5kTyK9*el8ll z-BMYk9>bilA8>Mimn)eo^}Ks-o1VRYa%kd`V!IoOr%oT4KBA!OE%RJ9v4-a4?(U{= z^;?rg47W^1)wAlLyfMQck#+eoN7c71{ETS&#lV7X6L%GrH{F ziC9d1ExoA}h4sMt@Z=_}03~hLe)`#-HgR&unUB?BaKVvY!Xx1PmEoK52?&xKmOJ+l zEM;`IVYxx-`IeZSHdolvh4l#>gqb5+LNX4NDlpN)CjEf&V*kLO_I~cb?j&y*C)qk@ zhIul#SCrdzzkNya+>RnJB{r(n^PkUQlpcw9w>i>+ce(Z#M>HCBg=|t2;r0I-^oY}| zdnLn`66V;DQegB=w?`LB5ko=A@K=v(X9xWv8ro6G2=vKqXg|zR045iGSHek^bWt`F zCo@i?H3+lP)78ld>R~k!Q>xZUkcZI)dK3IpkFzS{;guV$_4Zf}s&4`D7)Z3;)Wb)t zSt`&P%n9_8L3=OYvNhs~3dZQ*@ycoPQ_Ua5AsU~777Ed^{com!$Cv)(_xsE*z#CuQ zKS}y!R&M;?`2;}{4oHabSsBt=T=zasr?|#K&5&F4Ev1kZq9|4`TxhO~%6W*IOg+(y z?Ju34(}IdvBc$Dq5H7ivY}g)IK_88xD0F{e>g9@S&{mi@LW^8s!Lt1#UX|eVi5R1l zQuy;$4|X?57WJY^jTrCzC;2>PC66-K^2rf^S?lkYwxej)gBfOei``O>V)IDF16~?C)<6?NurHUU9C-OTjv1n1^*E*;*x3%bR{mj*xtz`AAtg_Vlbo zQ3K~3__JLb^Lu5N&YnTUbf-2&T#vv}Sd%eMO*yhf?ye@?wT1PX)-E1~6C<@=XtPNuMc zJpbjo?F=jPAK~dTTiJ?Y-;w`~jd1xXIQYqjhn{oC<6~o8#WR*Sf8qMxl_N#I2Lm*m z`i(NOy)88dq0dOJ^);_0_60SwIPr#<@g}?3lMu?bHkq=ekvj0o+j$0!T!pR~w`q!_ zDAUcr+@jVFPxDvl_7hyaV(oRSqk3q^V=C-KGkhY zwKiF3Y6*?5^<_XPXs}Np<)e9V<>X4wZU#}g`4Ey1dQ8mmesK6At{&X2BXA8sZOkNGOt%2NS2kxB(%*JZvUU zevkKU`g!zs61G8W!Bmr0JFfB7!-vkqEzgSyJ5EPU;h?JkD8HqY8-&@*H;>diO%zWyDKIyEA_Dkh=DaQ!l2nSOi}!WcOr##*c)R_f+ZU;HX_7 zB>1R({fJD+v&MuRzUqdFmR<2##F1WDUxjQCC|Ef5#OWW`d$t5*5 z|8X8gGauVfohAiEZFnKP?3}ks(pIH3rO#tzSr-WTg99Q=LW;k|fp@PwuaM07R8vXM z61lapd~r8#SScsRsK{+^>*29sSwqxFp6qF>7a8w5;Kw~g2mNDxi8g;;vro^UI~VNt z!#_JYmrDH-V_@DX(b8e)!cWQ5nWc(`uTxOB5m-JTM6k05Pvy=d@S-Kqv+e8^oGMy= z4_qt(sYKl%Iq!g}y@fJ%dP%4#OqG6x6d9DYu^0*8i!>@aL+)?_81raja!f?R*T7y? zhH^&4$0kGgAH`)S&J<~LIfe|;C~H|Z~|EuAjra)Q+tSsuQi9IQe!t!%`O+n@ZyW2|J09v%VtCo!+)JDPFrqBdYl+j z^^5E34qR#9(|qkt-0&*kzfvO(Qf$T1=GjCwS0X3e=Q})Vf24ehv=*IO^(vbtxtS(L zdumvbS&36HRlvmn}#llGpti|m^nHTq@R6h;omF9AWICsaFcdbaQ2!NE5MJjyf~6nu5^2` liMv!|x0FMbpfYVusk55`T-u}%6T^N~>5G}PQS-R)e*oiC^REB^ literal 0 HcmV?d00001 diff --git a/staff/pmitros-small.jpg b/staff/pmitros-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ff63f6f9fd2e54b35596b2eb3e91d65df8e5119e GIT binary patch literal 56491 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 sLf70