
    9Cgn                        U d dl Z d dlmZ d dlmZmZmZmZmZm	Z	m
Z
 d dlmZ d dlmZ d dlmZmZ ddlmZmZmZ eZeed	<    G d
 de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z  G d d          Z! G d de!          Z"dS )     N)Enum)AnyCallableDictListOptionalSequenceUnion)Example)	FieldInfo)	Annotated
deprecated   )PYDANTIC_V2PYDANTIC_VERSION	Undefined_Unsetc                       e Zd ZdZdZdZdZdS )
ParamTypesqueryheaderpathcookieN)__name__
__module____qualname__r   r   r   r        @/var/www/api/venv/lib/python3.11/site-packages/fastapi/params.pyr   r      s"        EFDFFFr   r   c            ?           e Zd ZU eed<   efeddedddddddddddddeeeeededdddddedee	g ef         df         de
e         de
e         d	eedf         d
eedf         deedf         de
e         de
e         de
e         de
e         de
e         de
e         de
e         de
e         de
e         dee
e          ed          f         deedf         deedf         deedf         deedf         deedf         deedf         de
ee                  dee
e          ed          f         d e
eeef                  d!eeeedf         d"ed#eeeef         df         d$ef< fd%Zd&efd'Z xZS )(Paramin_NTdefault_factory
annotationaliasalias_priorityvalidation_aliasserialization_aliastitledescriptiongtgeltle
min_length
max_lengthpatternregexdiscriminatorstrictmultiple_ofallow_inf_nan
max_digitsdecimal_placesexamplesexampleopenapi_examplesr   include_in_schemajson_schema_extradefaultr$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   EDeprecated in FastAPI 0.100.0 and Pydantic v2, use `pattern` instead.r4   r5   r6   r7   r8   r9   r:   r;   nDeprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, although still supported. Use examples instead.r<   r   r=   r>   extrac          	      b   |t           urt          j        dt          d           || _        || _        || _        t          di d|d|d|d|d|	d	|
d
|d|d|d|d|d|d|d|d|d||}|||d<   |t          j        dt          d           |p|} t          dk     r|| _	        n||d<   t          r$|                    |||||| d           |p||d<   n|p||d<    |j        di |  d |                                D             }! t                      j        di |! d S )N<`example` has been deprecated, please use `examples` instead   category
stacklevelr?   r$   r&   r*   r+   r,   r-   r.   r/   r0   r1   r4   r6   r7   r8   r9   r:   9`regex` has been deprecated, please use `pattern` instead2.7.0r   r%   r'   r(   r)   r5   r>   r2   r3   c                 ,    i | ]\  }}|t           u||S r   r   .0kvs      r   
<dictcomp>z"Param.__init__.<locals>.<dictcomp>   #    IIItq!&ar   r   )r   warningswarnDeprecationWarningr;   r=   r<   dictr   r   r   updateitemssuper__init__)#selfr?   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r   r=   r>   rB   kwargscurrent_json_schema_extra
use_kwargs	__class__s#                                     r   r[   zParam.__init__   s<   ^ &  MN+   
 !2 0 
 
 
G
+O
 %
 %	

 $
 r
 r
 r
 r
 "z
 "z
 (-
 $
 (-
 "z
  *>#
 
& !)F:MK+   
 %6$>!g%%(DOO#-F<  	7MM",&4(8+>$)B 	 	 	 !( 05F9%.F7OFM665666IIv||~~III
&&:&&&&&r   returnc                 0    | j         j         d| j         dS N()r`   r   r?   r\   s    r   __repr__zParam.__repr__        .);;DL;;;;r   )r   r   r   r   __annotations__r   r   r   r
   r   r   strintfloatr   r   boolr   r   r   r[   rh   __classcell__r`   s   @r   r!   r!      sG        	OOO !i' ;A$(#+1 .204#%)""""$($(!% *.$**0+1'-+1(, 9=9="&9=Yi' i' i'i' xC0$67	i'
 SMi' }i' c4i(i'  T	*i' #39-i' }i' c]i' UOi' UOi'  UO!i'" UO#i'$ SM%i'& SM'i'( #)i'* SMJW 
+i'6 S$Y'7i'8 dDj!9i': 5$;';i'< T4Z(=i'> #t)$?i'@ c4i(Ai'B 49%Ci'D SMJB 
Ei'R #4W#56Si'T *c456Ui'V  Wi'X !c3h!56Yi'Z [i' i' i' i' i' i'V<# < < < < < < < <r   r!   c            ?           e Zd Zej        Z	 d&eddedddddddddddddeeeeededdddddedee	g ef         df         de
e         de
e         d	eedf         d
eedf         deedf         de
e         de
e         de
e         de
e         de
e         de
e         de
e         de
e         de
e         dee
e          ed          f         deedf         deedf         deedf         deedf         deedf         deedf         de
ee                  dee
e          ed          f         d e
eeef                  d!eeeedf         d"ed#eeeef         df         d$ef< fd%Z xZS )'Path.NTr#   r?   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r@   r4   r5   r6   r7   r8   r9   r:   r;   rA   r<   r   r=   r>   rB   c                   |du s
J d            | j         | _          t                      j        d i d|d|d|d|d|d|d	|d
|d|	d|
d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|| d S )!N.z+Path parameters cannot have a default valuer?   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r   r;   r:   r<   r=   r>   r   )r"   rZ   r[    r\   r?   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r   r=   r>   rB   r`   s                                   r   r[   zPath.__init__   s   ^ #~~~L~~~8 	
 	
 	
G	
+O	
 "z	
 %		

 *>	
 .-	
 !4 3	
 %	
 $	
 r	
 r	
 r	
 r	
 "z	
 "z	
  G!	
" %#	
$ (-%	
& 6'	
( $)	
* (-+	
, "z-	
. *>/	
0 "z1	
2 G3	
4 X5	
6 .-7	
8 0/9	
: 0/=	
 	
 	
 	
 	
r   ).)r   r   r   r   r   r"   r   r   r
   r   r   rk   rl   rm   r   r   rn   r   r   r   r[   ro   rp   s   @r   rr   rr      s+       
/C P
 ;A$(#+1 .204#%)""""$($(!% *.$**0+1'-+1(, 9=9="&9=YP
 P
 P
P
 xC0$67	P

 SMP
 }P
 c4i(P
  T	*P
 #39-P
 }P
 c]P
 UOP
 UOP
  UO!P
" UO#P
$ SM%P
& SM'P
( #)P
* SMJW 
+P
6 S$Y'7P
8 dDj!9P
: 5$;';P
< T4Z(=P
> #t)$?P
@ c4i(AP
B 49%CP
D SMJB 
EP
R #4W#56SP
T *c456UP
V  WP
X !c3h!56YP
Z [P
 P
 P
 P
 P
 P
 P
 P
 P
 P
r   rr   c            ?           e Zd Zej        Zefeddedddddddddddddeeeeededdddddede	e
g ef         df         dee         dee         de	edf         d	e	edf         d
e	edf         dee         dee         dee         dee         dee         dee         dee         dee         dee         deee          ed          f         de	edf         de	edf         de	edf         de	edf         de	edf         de	edf         deee                  deee          ed          f         deeeef                  d e	eeedf         d!ed"e	eeef         df         d#ef< fd$Z xZS )%QueryNTr#   r?   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r@   r4   r5   r6   r7   r8   r9   r:   r;   rA   r<   r   r=   r>   rB   c                     t                      j        di d|d|d|d|d|d|d|d|d	|	d
|
d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|| d S Nr?   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r   r;   r:   r<   r=   r>   r   rZ   r[   rt   s                                   r   r[   zQuery.__init__      ^ 	 	
 	
 	
G	
+O	
 "z	
 %		

 *>	
 .-	
 !4 3	
 %	
 $	
 r	
 r	
 r	
 r	
 "z	
 "z	
  G!	
" %#	
$ (-%	
& 6'	
( $)	
* (-+	
, "z-	
. *>/	
0 "z1	
2 G3	
4 X5	
6 .-7	
8 0/9	
: 0/=	
 	
 	
 	
 	
r   )r   r   r   r   r   r"   r   r   r   r
   r   r   rk   rl   rm   r   r   rn   r   r   r   r[   ro   rp   s   @r   rv   rv      s,       

C !N
 ;A$(#+1 .204#%)""""$($(!% *.$**0+1'-+1(, 9=9="&9=YN
 N
 N
N
 xC0$67	N

 SMN
 }N
 c4i(N
  T	*N
 #39-N
 }N
 c]N
 UON
 UON
  UO!N
" UO#N
$ SM%N
& SM'N
( #)N
* SMJW 
+N
6 S$Y'7N
8 dDj!9N
: 5$;';N
< T4Z(=N
> #t)$?N
@ c4i(AN
B 49%CN
D SMJB 
EN
R #4W#56SN
T *c456UN
V  WN
X !c3h!56YN
Z [N
 N
 N
 N
 N
 N
 N
 N
 N
 N
r   rv   c            A           e Zd Zej        Zefeddeddddddddddddddeeeeededdddddede	e
g ef         df         dee         dee         de	edf         d	e	edf         d
e	edf         dedee         dee         dee         dee         dee         dee         dee         dee         dee         deee          ed          f         de	edf         de	edf         de	edf         de	edf         de	edf         de	edf         deee                  deee          ed          f         d eeeef                  d!e	eeedf         d"ed#e	eeef         df         d$ef> fd%Z xZS )&HeaderNT)r$   r%   r&   r'   r(   r)   convert_underscoresr*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r   r=   r>   r?   r$   r%   r&   r'   r(   r)   r}   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r@   r4   r5   r6   r7   r8   r9   r:   r;   rA   r<   r   r=   r>   rB   c                    || _          t                      j        di d|d|d|d|d|d|d|d|	d	|
d
|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|| d S rx   )r}   rZ   r[   )!r\   r?   r$   r%   r&   r'   r(   r)   r}   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r   r=   r>   rB   r`   s!                                   r   r[   zHeader.__init__4  s   ` $7  	
 	
 	
G	
+O	
 "z	
 %		

 *>	
 .-	
 !4 3	
 %	
 $	
 r	
 r	
 r	
 r	
 "z	
 "z	
  G!	
" %#	
$ (-%	
& 6'	
( $)	
* (-+	
, "z-	
. *>/	
0 "z1	
2 G3	
4 X5	
6 .-7	
8 0/9	
: 0/=	
 	
 	
 	
 	
r   )r   r   r   r   r   r"   r   r   r   r
   r   r   rk   rl   rn   rm   r   r   r   r   r   r[   ro   rp   s   @r   r|   r|   1  s<       

C !P
 ;A$(#+1 .204$(#%)""""$($(!% *.$**0+1'-+1(, 9=9="&9=[P
 P
 P
P
 xC0$67	P

 SMP
 }P
 c4i(P
  T	*P
 #39-P
 "P
 }P
 c]P
 UOP
  UO!P
" UO#P
$ UO%P
& SM'P
( SM)P
* #+P
, SMJW 
-P
8 S$Y'9P
: dDj!;P
< 5$;'=P
> T4Z(?P
@ #t)$AP
B c4i(CP
D 49%EP
F SMJB 
GP
T #4W#56UP
V *c456WP
X  YP
Z !c3h!56[P
\ ]P
 P
 P
 P
 P
 P
 P
 P
 P
 P
r   r|   c            ?           e Zd Zej        Zefeddedddddddddddddeeeeededdddddede	e
g ef         df         dee         dee         de	edf         d	e	edf         d
e	edf         dee         dee         dee         dee         dee         dee         dee         dee         dee         deee          ed          f         de	edf         de	edf         de	edf         de	edf         de	edf         de	edf         deee                  deee          ed          f         deeeef                  d e	eeedf         d!ed"e	eeef         df         d#ef< fd$Z xZS )%CookieNTr#   r?   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r@   r4   r5   r6   r7   r8   r9   r:   r;   rA   r<   r   r=   r>   rB   c                     t                      j        di d|d|d|d|d|d|d|d|d	|	d
|
d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|| d S rx   ry   rt   s                                   r   r[   zCookie.__init__  rz   r   )r   r   r   r   r   r"   r   r   r   r
   r   r   rk   rl   rm   r   r   rn   r   r   r   r[   ro   rp   s   @r   r   r     s,       

C !N
 ;A$(#+1 .204#%)""""$($(!% *.$**0+1'-+1(, 9=9="&9=YN
 N
 N
N
 xC0$67	N

 SMN
 }N
 c4i(N
  T	*N
 #39-N
 }N
 c]N
 UON
 UON
  UO!N
" UO#N
$ SM%N
& SM'N
( #)N
* SMJW 
+N
6 S$Y'7N
8 dDj!9N
: 5$;';N
< T4Z(=N
> #t)$?N
@ c4i(AN
B 49%CN
D SMJB 
EN
R #4W#56SN
T *c456UN
V  WN
X !c3h!56YN
Z [N
 N
 N
 N
 N
 N
 N
 N
 N
 N
r   r   c            C           e Zd Zefeddddedddddddddddddeeeeededdddddedeeg ef         df         dee         dee	df         d	e
d
ee
         deedf         dee
df         dee
df         dee
         dee
         dee         dee         dee         dee         dee         dee         dee
         deee
          ed          f         dee
df         dee	df         deedf         dee	df         deedf         deedf         deee                  d eee          ed!          f         d"eee
ef                  d#eee
e	df         d$e	d%eee
ef         df         d&ef@ fd'Zd(e
fd)Z xZS )*BodyNzapplication/jsonT)r$   r%   embed
media_typer&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r   r=   r>   r?   r$   r%   r   r   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r@   r4   r5   r6   r7   r8   r9   r:   r;   rA   r<   r   r=   r>   rB   c          	      ~   || _         || _        |t          urt          j        dt
          d           || _        || _        || _        t          di d|d|d|d|
d|d	|d
|d|d|d|d|d|d|d|d|d|| }!|||!d<   |t          j        dt
          d           |p| }"t          dk     r|| _        n||!d<   t          r$|!                    ||||	||"d           |p||!d<   n|p||!d<    |!j        di |" d |!                                D             }# t                      j        di |# d S )NrD   rE   rF   r?   r$   r&   r*   r+   r,   r-   r.   r/   r0   r1   r4   r6   r7   r8   r9   r:   rI   rJ   r   rK   r2   r3   c                 ,    i | ]\  }}|t           u||S r   rM   rN   s      r   rR   z!Body.__init__.<locals>.<dictcomp>H  rS   r   r   )r   r   r   rT   rU   rV   r;   r=   r<   rW   r   r   r   rX   rY   rZ   r[   )%r\   r?   r$   r%   r   r   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r   r=   r>   rB   r]   r^   r_   r`   s%                                       r   r[   zBody.__init__  sJ   b 
$&  MN+   
 !2 0 
 
 
G
+O
 %
 %	

 $
 r
 r
 r
 r
 "z
 "z
 (-
 $
 (-
 "z
  *>#
 
& !)F:MK+   
 %6$>!g%%(DOO#-F<  	7MM",&4(8+>$)B 	 	 	 !( 05F9%.F7OFM665666IIv||~~III
&&:&&&&&r   ra   c                 0    | j         j         d| j         dS rc   rf   rg   s    r   rh   zBody.__repr__L  ri   r   )r   r   r   r   r   r   r
   r   r   rn   rk   rl   rm   r   r   r   r   r   r[   rh   ro   rp   s   @r   r   r     se        !n' ;A$(#',#+1 .204#%)""""$($(!% *.$**0+1'-+1(, 9=9="&9=]n' n' n'n' xC0$67	n'
 SMn' T4Z n' n' }n' c4i(n'  T	*n' #39-n' }n' c]n'  UO!n'" UO#n'$ UO%n'& UO'n'( SM)n'* SM+n', #-n'. SMJW 
/n': S$Y';n'< dDj!=n'> 5$;'?n'@ T4Z(An'B #t)$Cn'D c4i(En'F 49%Gn'H SMJB 
In'V #4W#56Wn'X *c456Yn'Z  [n'\ !c3h!56]n'^ _n' n' n' n' n' n'`<# < < < < < < < <r   r   c            A           e Zd Zefedddedddddddddddddeeeeededdddddedeeg ef         df         dee         de	d	ee	         d
ee
df         dee	df         dee	df         dee	         dee	         dee         dee         dee         dee         dee
         dee
         dee	         deee	          ed          f         dee	df         deedf         deedf         deedf         dee
df         dee
df         deee                  deee          ed           f         d!eee	ef                  d"eee	edf         d#ed$eee	ef         df         d%ef> fd&Z xZS )'FormNz!application/x-www-form-urlencodedTr$   r%   r   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r   r=   r>   r?   r$   r%   r   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r@   r4   r5   r6   r7   r8   r9   r:   r;   rA   r<   r   r=   r>   rB   c                     t                      j        di d|d|d|d|d|d|d|d|d	|	d
|
d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|| d S  Nr?   r$   r%   r   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r   r;   r:   r<   r=   r>   r   ry   !r\   r?   r$   r%   r   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r   r=   r>   rB   r`   s!                                   r   r[   zForm.__init__Q     ` 	  	
  	
  	
G 	
+O 	
 "z 	
 "z	 	

 % 	
 *> 	
 .- 	
 !4 3 	
 % 	
 $ 	
 r 	
 r 	
 r 	
 r 	
 "z 	
  "z! 	
" G# 	
$ %% 	
& (-' 	
( 6) 	
* $+ 	
, (-- 	
. "z/ 	
0 *>1 	
2 "z3 	
4 G5 	
6 X7 	
8 .-9 	
: 0/; 	
< 0/? 	
  	
  	
  	
  	
r   r   r   r   r   r   r   r
   r   r   rk   rl   rm   r   r   rn   r   r   r   r[   ro   rp   s   @r   r   r   P  s4        !P
 ;A$(=#+1 .204#%)""""$($(!% *.$**0+1'-+1(, 9=9="&9=[P
 P
 P
P
 xC0$67	P

 SMP
 P
 }P
 c4i(P
  T	*P
 #39-P
 }P
 c]P
 UOP
  UO!P
" UO#P
$ UO%P
& SM'P
( SM)P
* #+P
, SMJW 
-P
8 S$Y'9P
: dDj!;P
< 5$;'=P
> T4Z(?P
@ #t)$AP
B c4i(CP
D 49%EP
F SMJB 
GP
T #4W#56UP
V *c456WP
X  YP
Z !c3h!56[P
\ ]P
 P
 P
 P
 P
 P
 P
 P
 P
 P
r   r   c            A           e Zd Zefedddedddddddddddddeeeeededdddddedeeg ef         df         dee         de	d	ee	         d
ee
df         dee	df         dee	df         dee	         dee	         dee         dee         dee         dee         dee
         dee
         dee	         deee	          ed          f         dee	df         deedf         deedf         deedf         dee
df         dee
df         deee                  deee          ed           f         d!eee	ef                  d"eee	edf         d#ed$eee	ef         df         d%ef> fd&Z xZS )'FileNzmultipart/form-dataTr   r?   r$   r%   r   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r@   r4   r5   r6   r7   r8   r9   r:   r;   rA   r<   r   r=   r>   rB   c                     t                      j        di d|d|d|d|d|d|d|d|d	|	d
|
d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|| d S r   ry   r   s!                                   r   r[   zFile.__init__  r   r   r   rp   s   @r   r   r     s4        !P
 ;A$(/#+1 .204#%)""""$($(!% *.$**0+1'-+1(, 9=9="&9=[P
 P
 P
P
 xC0$67	P

 SMP
 P
 }P
 c4i(P
  T	*P
 #39-P
 }P
 c]P
 UOP
  UO!P
" UO#P
$ UO%P
& SM'P
( SM)P
* #+P
, SMJW 
-P
8 S$Y'9P
: dDj!;P
< 5$;'=P
> T4Z(?P
@ #t)$AP
B c4i(CP
D 49%EP
F SMJB 
GP
T #4W#56UP
V *c456WP
X  YP
Z !c3h!56[P
\ ]P
 P
 P
 P
 P
 P
 P
 P
 P
 P
r   r   c                   P    e Zd Z	 d
dddeedef                  defdZdefd	Z	dS )DependsNT)	use_cache
dependency.r   c                "    || _         || _        d S Nr   r   )r\   r   r   s      r   r[   zDepends.__init__  s     %"r   ra   c                     t          | j        dt          | j                  j                  }| j        rdnd}| j        j         d| | dS )Nr    z, use_cache=Falserd   re   )getattrr   typer   r   r`   )r\   attrcaches      r   rh   zDepends.__repr__  sT    t
D4I4I4RSSn=*=.)::D:%::::r   r   )
r   r   r   r   r   r   rn   r[   rk   rh   r   r   r   r   r     sv        9=#TX# # #"8CH#56#MQ# # # #;# ; ; ; ; ; ;r   r   c                   l     e Zd Z	 d	ddddeedef                  deee                  def fdZ	 xZ
S )
SecurityNT)scopesr   r   .r   r   c                `    t                                          ||           |pg | _        d S )Nr   )rZ   r[   r   )r\   r   r   r   r`   s       r   r[   zSecurity.__init__  s1     	J)DDDlr   r   )r   r   r   r   r   r   r	   rk   rn   r[   ro   rp   s   @r   r   r     s         48# +/# # #Xc3h/0# #'	#
 # # # # # # # # # #r   r   )#rT   enumr   typingr   r   r   r   r   r	   r
   fastapi.openapi.modelsr   pydantic.fieldsr   typing_extensionsr   r   _compatr   r   r   r   rj   r   r!   rr   rv   r|   r   r   r   r   r   r   r   r   r   <module>r      s          G G G G G G G G G G G G G G G G G G * * * * * * % % % % % % 3 3 3 3 3 3 3 3 = = = = = = = = = =          o< o< o< o< o<I o< o< o<dS
 S
 S
 S
 S
5 S
 S
 S
lQ
 Q
 Q
 Q
 Q
E Q
 Q
 Q
hS
 S
 S
 S
 S
U S
 S
 S
lQ
 Q
 Q
 Q
 Q
U Q
 Q
 Q
hr< r< r< r< r<9 r< r< r<jQ
 Q
 Q
 Q
 Q
4 Q
 Q
 Q
hQ
 Q
 Q
 Q
 Q
4 Q
 Q
 Q
h
; 
; 
; 
; 
; 
; 
; 
;	# 	# 	# 	# 	#w 	# 	# 	# 	# 	#r   