ࡱ> *'()za9C_iyuU( wwza%oOyy@( ww`!wh2.GW!` v xڥK@]ؤ"E(EMQ[pX#[]upq"8A NGzBb5{.A`h_8#AF(ÐGsh4ui{,r0AȊ'P7蜨& a?qZ[\آcUm8.q^/:$=[QK_p tg1+`!h]/!BSt   pxMhANd66uhK-A*xт)]iM[AxՀ   "J/QP(my΋B5a_fޛK1fZ`]).Dtq^pIq!^mDu417n5Y63'IKtX\OՅ*{#6v:߉fČ#װ×:8sGK?,צJIw=ɥd1CBrw̾xfhf[Tȩ>ªCi4S}S} ί*b{]W]MR4l2yɁDmǼ R S>.l~5~p̹2+'fIdxys1WW2WINcğK(>%'Zœ_Ov>% @c112BYL%bpu A:nqm{*1g/1 P6bq7WWBů﷉}_N͏s5g9.rR+fsv13:7;rϯfҷ8?ԉNOaRL|~0[G^({g-_{Vk|w$+XXF,jm"M{R9W$ UUj`!' e%B@`0sxcdd``^ @c112BYL%bpu`|2?΍ʿWP[@ 8GGFNFxxYLeQOeDL@(\PXeO\x60zpІ#sAS8E4 0y{iI)$5bPd(B N'È, #3(   zT`AEquation Equation.30,Microsoft Equation 3.00UaDEquation Equation.30,Microsoft Equation 3.00VbEEquation Equation.30,Microsoft Equation 3.00XcFEquation Equation.30,Microsoft Equation 3.00YdGEquation Equation.30,Microsoft Equation 3.00p\HEquation Equation.30,Microsoft Equation 3.0/ 0DTimes New Roman860Wo 0DArialNew Roman860Wo 0" DWingdingsRoman860Wo 00DSymbolgsRoman860Wo 0@DCourier Newman860Wo 01PDTimesr Newman860Wo 0 c(.2  @n?" dd@  @@`` tDlD(7!#                   $ ,                         , 3'        )  ,h/                +   O               %     4Y  ! "% !"+ ( *, -./ 0 3651( "r$9C_iyuUir$%oOyy@ii$$$$$$$$$$$$$$$$$$$$$$$$$$$2$wh2.GW!$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$2$h]/!BS$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$2$"PHXP` 2*2$Y0jz&uvV`A2$-„cX& 2$' e% c $0e0e     A@ AjJ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||@d g4MdMd0ppp@ <4BdBd 0L$7g4VdVd0zpu pp<4!d!d 0L$7U ʚ;Vo8ʚ;<4ddddЁ 0r0___PPT10 2___PPT9/ 0?D$ 0Essential Math for GamesO =B*Collision Detection< + Collisions   Up to this point, objects just pass through each other Two parts to handling collisions Collision detection  uses computational geometry techniques (useful in other ways, too) Collision response  modifying physical simulation&XX   ,Computational Geometry   ]Algorithms for solving geometric problems Object intersections Object proximity Path planning ^  -Distance TestingUseful for computing intersection between simple objects E.g. sphere intersection boils down to point-point distance test Just cover a few examples.Point-Point Distance9Compute length of vector between two points P0 and P1, or^:,   /Line-Point Distance   Line defined by point P and vector v Break vector w = Q  P into w^ and w|| w|| = (w v) v ||w^||2 = ||w||2  ||w||||2 8y    y  0Line-Point Distance   'Final formula: If v isn't normalized:0( (  [hLine-Line Distance   jFrom http://www.geometryalgorithms.com Vector wc perpendicular to u and v or Two equations Two unknowns|k! "T          ;  1Line-Line Distance   Final equations:    2Segment-Segment Distance   Determine closest point between lines If lies on both segments, done Otherwise clamp against nearest endpoint and recompute See references for details$ r&r       3Bounding Objects   Detecting intersections with complex objects expensive Provide simple object that surrounds them to cheaply cull out obvious cases Use for collision, rendering, picking Cover in increasing order of complexity   4Bounding Sphere   fTightest sphere that surrounds model For each point, compute distance from center, save max for radius g   50Bounding Sphere (Cont d)   What to use for center? Local origin of model Centroid (average of all points) Center of bounding box Want a good fit to cull as much as possible Linear programming gives smallest fit6NRNR&.      !6Sphere-Sphere Collision   yCompute distance d between centers If d < r1 + r2, colliding Note: d2 is not necessarily < r12 + r22 want d2 < (r1 + r2)2e            z  #8 Bounding Box   tTightest box that surrounds model Compare points to min/max vertices If element less/greater, set element in min/max u  $9Axis-Aligned Bounding Box   jBox edges aligned to world axes Recalc when object changes orientation Collision checks are cheaper though&     E  %:Axis-Aligned Box-Box Collision   Compare x values in min,max vertices If min2 > max1 or min1 > max2, no collision (separating plane) Otherwise check y and z directions Z+I   (=Object-Oriented Bounding Box   ^Box edges aligned with local object coordinate system Much tighter, but collision calcs costly$_C&R      )> OBB Collision   Idea: determine if separating plane between boxes exists Project box extent onto plane vector, test against projection btwn centers&w       *? OBB Collision   To ensure maximum extents, take dot product using only absolute values Check against axes for both boxes, plus cross products of all axes See Gottschalk for more details&       ,ACapsule   }Cylinder with hemispheres on ends One way to compute Calc bounding box Use long axis for length Next largest width for radius&5I5I ~  -BCapsule   nCompact Only store radius, endpoints of line segment Oriented shape w/faster test than OBB Test path collision6-:-: o  .CCapsule-Capsule Collision   Key: swept sphere axis is line segment with surrounding radius Compute distance between line segments If less than r1 + r2, collideTs     tCaveatMath assumes infinite precision Floating point is not to be trusted Precision worse farther from 0 Use epsilons Careful of operation order Re-use computed results More on floating point on website$20E Which To Use?   kAs many as necessary Start with cheap tests, move up the list Sphere Swept Sphere Box May not need them all6>> l  MbRecap   Sphere -- cheap, not a good fit AABB -- still cheap, but must recalc and not a tight fit Swept Sphere -- oriented, cheaper than OBB but generally not as good a fit OBB -- somewhat costly, but a better fit&>      ]iCollision DetectionNave: n2 checks! Two part process Broad phase Cull out non-colliding pairs Narrow phase Determine penetration and contact points between pairs#  7   7   ~^j Broad PhaseObvious steps Only check each pair once Flag object if collisions already checked Only check moving objects Check against other moving and static Check rough bounding object first AABB or sphere*&"*&" _kHierarchical Systems   Can break model into hierarchy and build bounds for each level of hierarchy Finer level of detection Test top level, cull out lots of lower levels   `lHierarchical Systems   }Can use scene graph to maintain bounding information Propagate transforms down to children Propagate bound changes up to root ~  amSpatial SubdivisionfBreak world into separate areas Only check your area and neighbors Simplest: uniform Slabs Grid Voxels&UU`6KSweep and PruneStore sorted x extents of objects Sweep from min x to max x As object min value comes up, make active, test against active objects Can extend to more dimensionsN #ebnSpatial SubdivisionOther methods: Quadtrees, octrees BSP trees, kd-trees Room-portal Choice depends on your game type, rendering engine, memory available, etc.H3KK>  ^coTemporal Coherence[Objects nearby generally stay nearby Check those first Can take memory to store informationdp Narrow PhaseQHave culled object pairs Need to find Contact point Normal Penetration (if any)&'+'+gtContact RegionuTwo objects interpenetrate, have one (or more) regions A bit messy to deal with Many try to avoid interpenetration67<7<eqContact FeaturesFaceted objects collide at pair of contact features Only consider E-E and F-V pairs Infinite possibilities for normals for others Can generally convert to E-E and F-V Ex: V-V, pick neighboring face for oneoXmyContact FeaturesFor E-E: Point is intersection of edges Normal is cross product of edge vectors For F-V: Point is vertex location Normal is face normalL G / G /fsContact PointsCan have multiple contact points Ex: two concave objects Store as part of collision detection Collate as part of collision resolution6!N!NnzExample: Spheres   wDifference between centers gives normal n (after you normalize) Penetration distance p is p = (r1+r2) - ||c2-c1||x(/     x  o{Example: Spheres   uCollision point: average of penetration distance along extended normal If touching, where normal crosses spherevv v  p| Lin-CannyFor convex objects Easy to understand, hard to implement Closest features generally same from frame to frame Track between frames Modify by walking along object q} Lin-CannyFrame 0 Frame 1r~GJKFor Convex Objects Hard to understand, easy to implement Finds point in Configuration Space Obstacle closest to origin. Corresponds to contact point Iteratively finds points by successive refinement of simplices wGJKCSO Simplex Refinement 3HMissing Collision   |If time step is too large for object speed, two objects may pass right through each other without being detected (tunneling) }  sMissing Collision   bOne solution: slice time interval Simulate between slices Same problem, just reduced frequency c  4IMissing Collision   Another solution: use swept volumes If volumes collide, may collide in frame With more work can determine time-of-impact (TOI), if any*<L   uRecap  xCollision detection complex Combo of math and computing Break into two phases: broad and narrow Be careful of tunneling Od References   NPreparata, Franco P. and Michael Ian Shamos, Computational Geometry: An Introduction, Springer-Verlag, New York, 1985. O Rourke, Joseph, Computational Geometry in C, Cambridge University Press, New York, 1994. Eberly, David H., 3D Game Engine Design, Morgan Kaufmann, San Francisco, 2001. Gottschalk, Stephan, Ming Lin and Dinesh Manocha,  OBB-Tree: A Hierarchical Structure for Rapid Interference Detection, SIGGRAPH  96.b-'5@       4    m    )                  W  v References   Van den Bergen, Gino, Collision Detection in Interactive 3D Environments, Morgan Kaufmann, San Francisco, 2003. Eberly, David H., Game Physics, Morgan Kaufmann, San Francisco, 2003. Ericson, Christer, Real-Time Collision Detection, Morgan Kaufmann, San Francisco, 2004. V2: ;)P                       '       /X  ` f33` 3f3` ___` 3>?" dd@,?" dd@  " @ `"  n?" dd@   @@``@n?" dd@  @@``PR    @ ` ` p>>D$ 0Essential Math for Games j(    NT}gֳgֳ ?P  X Click to edit Master title style!!  2  Hgֳgֳ ?  RClick to edit Master text styles Second level Third level Fourth level Fifth level!    S    Zh1 ?``  ^* 2    ZȊ1 ?`   V*(2     Z1 ?`   X*(2   N  6޽h? ? 3  Lecture Template 0  ( ~@K@   Bh 1?P%   X* 2     BL 1? %  Z*(2   p  0 ?*P  ,  Bg 1? @2  RClick to edit Master text styles Second level Third level Fourth level Fifth level!    S    H4 1?P   X* 2     H 1?   Z*(2   H  0h0 ? ̙3380___PPT10.QA9 PH0( \@d@   B$ 1?P%   V* 2      B, 1? %  X*(2      H 1?P   V* 2      H| 1?   X*(2    H  0h0 ? ̙3380___PPT10.Qp {G &0 (   ~  s *6>  H  0޽h ? 3380___PPT10.#\z  @ 0(   x  c $HP   x  c $  H  0޽h ? 33  P 0(   x  c $HP   x  c $dː  H  0޽h ? 33  ` 0(   x  c $ѐP   x  c $dҐ  H  0޽h ? 33j  p (   x  c $֐P   x  c $֐  r   6A  T?? w  TH  0޽h ? 33  um (   x  c $P   x  c $     TP jJ? G^* 2b B   T0K jJ?^g G^* 2b B   T jJ?r{ G^* 2b B   Hp 8c?+Q & Uv$ 2   vB  NDjJ?o y }B  ZDjJ? o vB  ND8c? o v2  N1?Y  v2  N1?N |B  TD8c?   T 8c?  IQ 2     H 8c?   WP& 2      Hl 8c?   Iw 2   B  ZDjJ? p pB  @ HDjJ? S pB  HDjJ?    HD 8c? 9   cw||0 2      H 8c?^ !X  \w^( 2     TL jJ?O  G^* 2bBH  0޽h ? 33   $(   x  c $ P   x  c $(ϐ   r   6A  U??T Ur   6A  V?? ^  VH  0޽h ? 33l  (  x  c $p8P   x  c $9  |B  TDԔ? |B  TD8c? `P B  ZD8c? p  B   `D8c?t  2   TG1?? :  F(2     Zx 8c? F B  bP00 2       Z|ΐ 8c?y|@`  Wu& 2   B    `D8c?  2   T@1??P `  F(2    Z? 8c?)  bQ00 2      Z8E 8c?P 7  Wv& 2     ZJ 8c?S  P(sc)X 2    !  TP jJ?y 1`  Q(tc)F 2 .      2  TW1?? .  F(2  2  TZ1??p   F(2    Z] 8c?] %D  twc4 2     r  6A  p??)'1  pH  0޽h ? 33B      (   x  c $xP   x  c $y  |B  TDԔ? |B  TD1? `P r   6Ao  X??` XB  ZD8c? p  B   `D8c?t  2  T}1?? :  F(2    Z 8c? F B  fP04 2      Zh 8c?y|@`  Wu& 2   B   `D8c?  2  Tl1??P `  F(2    Z 8c?)  fQ04 2      Z 8c?P 7  Wv& 2     Z@ 8c?S  uP(sc)@ 2       Tx jJ?y 1`  Q(tc)2 2 .      2  T1?? .  F(2  2  T1??p   F(2  H  0޽h ? 33|  ,$ (   x  c $P   x  c $   |B  TDԔ? 0|B  TDԔ?` |B  TD1? 0@ H  0޽h ? 33   0(   x  c $oP   x  c $o  H  0޽h ? 33  ~v (   x  c $>P   x  c $t1  v2  N 1?0  XF        ~B   ND8c?p p p     0e0e    B CDEF   8c 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||0   @  x2   HjJ?  H  0޽h ? 33   0(   x  c $ P   x  c $ȹ  H  0޽h ? 33I   (   x  c $1P   x  c $,  j2  B 8c? `P v2  N 8c??  0B   `D1? @p   TD+ 1?+ ` $ %  Ud$ 2   B   `D1? p f   TD 1? F ,  `r1. 2      TT 1?z t  `r2. 2    B  @  `D1? @ H  0޽h ? 33   6.  (   v  N 1?  x  c $P   x  c $    N Ԕ?Pb V(min x, min y) 2     N! Ԕ? .  V(max x, max y) 2   XF        ~B   ND8c?p p p     0e0e    B CDEF   8c 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||0   @  x2   HjJ?  H  0޽h ? f33y___PPT10Y+D=' = @B +;   b Z 0  (   x  c $P   x  c $8  v  N 1?@ 0 XF      @ 0 ~B   ND8c?p p p     0e0e    B CDEF   8c 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||0   @  x2   HjJ?  ^L     # o6 ~B   ND8c?p p p     0e0e    B CDEF   8c 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||0   @  x2   HjJ?  v  N 1? W IH  0޽h ? 33y___PPT10Y+D=' = @B +   @ @(   x  c $\P   x  c $    Z Ԕ??9  v  N Ԕ?& >   T Ԕ?,   fmin12 2      H5 Ԕ?7    fmax12 2      T Ԕ?? I &  fmin22 2      Hh Ԕ?J J1  fmax22 2    pB  HDjJ?? ? pB  HDjJ? ? pB  HDjJ?   2 pB  HDjJ? A pB  HDjJ? BB5 H  0޽h ? 33y___PPT10Y+D=' = @B +A   h ` P  (   x  c $P   x  c $  v  N 1?@ 0 XF      @ 0 ~B   ND8c?p p p     0e0e    B CDEF   8c 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||0   @  x2   HjJ?  |  TA5 1?H ^L     # A5H ~B   ND8c?p p p     0e0e    B CDEF   8c 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||0   @  x2   HjJ?  H  0޽h ? 33y___PPT10Y+D=' = @B +   E = `  (   x  c $3P   x  c $  v  N 1?  I |  T,h  1? D vB  NDjJ?77vB  NDjJ?7 R I vB  @ NDjJ? pB  HDjJ?7 IIpB  HDjJ?2 2pB  HDjJ? w w -pB  HDjJ? vB  NDjJ? P <   Tp8 jJ? b  Ncv, 2  T= jJ?9 3 Nbv, 2  T jJ?U N O Nav, 2  T@ jJ?-  '  3a 2  TxC jJ?5 /  3b 2  TF jJ?!   3c 2H  0޽h ? 33y___PPT10Y+D=' = @B +  p (   x  c $T%P   x  c $W  r   6A  Y??QP  YH  0޽h ? 33y___PPT10Y+D=' = @B +   D <   (   x  c $*P   x  c $|+  TL @   #  x2   H Ԕ? @  ~2   NZ Ԕ? ~2   N Ԕ? /~2   NV Ԕ?8@  B  B ZDԔ?@ @ B  B ZDԔ?0 B   ZDԔ? 2   T 1?@@ 02   T 1?` @ P B    fDjJ? @    Z\L Ԕ?  Ur$ 2   B   # lZDjJ?      Z^ Ԕ?^ 8 ,  Ur$ 2   H  0޽h ?O@     33y___PPT10Y+D=' = @B +      (  x  c $mP   x  c $m  XF      P ~B  ND8c?p p p    0e0e    B CDEF   8c 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||0   @  x2  HjJ?  lF P   P r2   B Ԕ? px2   HZ Ԕ?P pPx2   H Ԕ?Px2   HV Ԕ?HB  B TDԔ?` B B TDԔ?PP P~2  N 1?P~2  N 1? PH  0޽h ?O@     33y___PPT10Y+D=' = @B +     " (  x  c $qP   x  c $r  v2  N6G Ԕ?A & v2  N Ԕ? A& v2  N0 Ԕ?Umqv2  NW Ԕ? B @  `AɸDԔ? 0 B  @  `AɸDԔ?LB    `6GDԔ?g jg 2   Z6G 1?x \2   Z6G 1?k JO .F @ a     x2  H Ԕ?I a ~2  NZ Ԕ?e a~2  N Ԕ?@ t ~2  NV Ԕ?O K B B ZDԔ?Y I B B ZDԔ?u e B  ZDԔ?= e 2  T 1? u 2  T 1? H  0޽h ? 33y___PPT10Y+D=' = @B +m  $(  r  S ~P   r  S `  H  0޽h ? 33y___PPT10Y+D=' = @B +y   0(   x   c $P   x   c $p  H   0޽h ? 33y___PPT10Y+D=' = @B +y  0(  x  c $"P   x  c $S  H  0޽h ? 33y___PPT10Y+D=' = @B +m  $(  r  S <P   r  S   H  0޽h ? 33y___PPT10Y+D=' = @B +m  $(  r  S PP   r  S 0  H  0޽h ? 33y___PPT10Y+D=' = @B +   |(  x  c $PP   x  c $`  XF      `~B  ND8c?p p p    0e0e    B CDEF   8c 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||0   @  x2  HjJ?  p  H 8c?  p   H 8c?0 ` 0 p   H 8c? `|   T 8c?? wH  0޽h ? 33y___PPT10Y+D=' = @B +   |(  x  c $`P   x  c $  XF      `~B  ND8c?p p p    0e0e    B CDEF   8c 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||0   @  x2  HjJ?  p  H 8c?  p   H 8c?0 ` 0 p   H 8c? `|   T 8c?? wH  0޽h ? 33y___PPT10Y+D=' = @B +m   $(  r  S `P   r  S   H  0޽h ? 33y___PPT10Y+D=' = @B +  @$h(  $x $ c $ P   x $ c $  XF    $   ~B $ ND8c?p p p  $  0e0e    B CDEF   8c 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||0   @  x2 $ HjJ?  XF    $  g ~B  $ ND8c?p p p   $  0e0e    B CDEF   8c 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||0   @  x2  $ HjJ?  XF     $  gR5~B  $ ND8c?p p p  $  0e0e    B CDEF   8c 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||0   @  x2 $ HjJ?  |B $ TD8c? |B $ TD8c?  " 8|B $ TD8c? ~5|B $ TD8c? M|B $ TD8c? hq |B $ TD8c? LUH $ 0޽h ? 33y___PPT10Y+D=' = @B +y  P0(  x  c $ "P  " x  c $" " H  0޽h ? 33y___PPT10Y+D=' = @B +m  `$(  r  S "P  " r  S x " H  0޽h ? 33y___PPT10Y+D=' = @B +m  p$(  r  S "P  " r  S |" " H  0޽h ? 33y___PPT10Y+D=' = @B +   ~(  x  c $<'"P  " x  c $" " |  T 8c?bD Y   Zi  8c? wR 8   # 0e0e    BCDEF A, jJ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||  @`Light upward diagonalS ; H  0޽h ? 33y___PPT10Y+D=' = @B +y  0(  x  c $P   x  c $4  H  0޽h ? 33y___PPT10Y+D=' = @B +y  0(  x  c $3"P  " x  c $p6" " H  0޽h ? 33y___PPT10Y+D=' = @B +     v (  x  c $8;"P  " x  c $;" " p  # H0e0e    BCDE<F. A, 8c 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||{oQ:g  Eo)@   `Light upward diagonal= L  # $0e0e    BCDEF& A0 8c 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||p]gXp]@`Light downward diagonal 6$ v2  NjJ? N " v2  NjJ? K  v2  NjJ?: H  0޽h ? 33y___PPT10Y+D=' = @B +  t(  x  c $C"P  " x  c $D" " p2  H 8c? @ p2  H 8c?P  |B  TDf8c? `   NF" 8c?  W  bc10 2      NL" 8c? f 0  bc20 2    H  0޽h ? 33y___PPT10Y+D=' = @B +Y   x (  x  c $I"P  " x  c $Z" "   Z[" jJ?y)  v = (c1 + r1n + c2 - r2n)                    Td" jJ?} 2  7^ 2   T\h" jJ?` 7^ 2p2   H 8c?d  & p2   H 8c?$ 9 |B   TDf8c??     Nx{ 8c? 8   bc10 2      N@g" 8c?Z   bc20 2    v2  NjJ?< M H  0޽h ? 33y___PPT10Y+D=' = @B +m  $(  r  S "P  " r  S " " H  0޽h ? 33y___PPT10Y+D=' = @B +   6(  x  c $#"P  " x  c $," " v  N 8c?Lv  N 8c?& HMv  N 8c? U |  T 8c? Q; |B  TDjJ?  |B   TDjJ?u uH  0޽h ? 33y___PPT10Y+D=' = @B +y   0(  x  c $("P  " x  c $" " H  0޽h ? 33y___PPT10Y+D=' = @B +  &'(  r  S Е"P  " r  S `" " g8 U< * <U *  Z4" jJ?U<^  8A  2R  Z%" jJ?/ * ; B(2xB  HD?F )F A .N   .A N~B   NDjJ?A 1A     0e0e    BCDEF jJ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||@L.N~B   NDjJ?D /N/~B  NDjJ?B  ~B B NDjJ?K~B  NDjJ?   Z" jJ?w c # 9A-B 2~B  NDjJ?ffV~B  NDjJ?6&,B  TD1?f&  C 0e0e    B`CDEXF* A@  jJ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||#E W"b2I`;a/F-####@       ` g(pB  HDjJ?x  *pB  HDjJ? (vB  ND1?8 ^pB ! HDjJ?4pB " HDjJ?^XdDF X g( &     S 0e0e    B`CDEXF* @  jJ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||#E W"b2I`;a/F-####@       ` g(~B  NDjJ?  (~B  NDjJ?T ~B # NDjJ?0~B $ NDjJ?XZ`pB ' HD1? : T LH  0޽h ? 33y___PPT10Y+D=' = @B +m    $(  x  c $"P  " x  c $" " p2  H 8c? @  p2  H 8c? @ P p2  H 8c?  p2  H 8c? pB @ ZD8c?P B   ZD8c?P  H  0޽h ? 33y___PPT10Y+D=' = @B +]  |0 (  x  c $"P  " x  c $D" " p2  H 8c? p2  H 8c? p  B @ ZD8c?T B   ZD8c?T P p2   H 8c?St p2   H 8c?]  p2   H 8c? I p2   H 8c?   H  0޽h ? 33y___PPT10Y+D=' = @B +e  p (  x  c $Ȭ"P  " x  c $" " p2  H 8c?B p2  H 8c?  p2  H 8c?B p2  H 8c? ` " B @ ZD8c? @ b B   ZD8c?` B vB  @ ND8c?` 2 vB  @ ND8c?2 vB   ND8c?B vB   ND8c?0  H  0޽h ? 33y___PPT10Y+D=' = @B +m  `$(  r  S